summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbitbake/bin/bitbake2
-rwxr-xr-xbitbake/bin/bitbake-selftest7
-rwxr-xr-xbitbake/bin/toaster9
-rw-r--r--bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml32
-rw-r--r--bitbake/doc/bitbake-user-manual/bitbake-user-manual.xml2
-rw-r--r--bitbake/lib/bb/COW.py2
-rw-r--r--bitbake/lib/bb/__init__.py18
-rw-r--r--bitbake/lib/bb/build.py8
-rw-r--r--bitbake/lib/bb/cache.py2
-rw-r--r--bitbake/lib/bb/checksum.py2
-rw-r--r--bitbake/lib/bb/codeparser.py4
-rw-r--r--bitbake/lib/bb/cooker.py41
-rw-r--r--bitbake/lib/bb/daemonize.py25
-rw-r--r--bitbake/lib/bb/event.py5
-rw-r--r--bitbake/lib/bb/fetch2/__init__.py6
-rw-r--r--bitbake/lib/bb/fetch2/bzr.py5
-rw-r--r--bitbake/lib/bb/fetch2/clearcase.py3
-rw-r--r--bitbake/lib/bb/fetch2/cvs.py5
-rw-r--r--bitbake/lib/bb/fetch2/git.py21
-rw-r--r--bitbake/lib/bb/fetch2/gitsm.py242
-rw-r--r--bitbake/lib/bb/fetch2/hg.py2
-rw-r--r--bitbake/lib/bb/fetch2/npm.py1
-rw-r--r--bitbake/lib/bb/fetch2/osc.py5
-rw-r--r--bitbake/lib/bb/fetch2/perforce.py8
-rw-r--r--bitbake/lib/bb/fetch2/repo.py12
-rw-r--r--bitbake/lib/bb/fetch2/svn.py5
-rw-r--r--bitbake/lib/bb/msg.py3
-rw-r--r--bitbake/lib/bb/parse/ast.py37
-rw-r--r--bitbake/lib/bb/runqueue.py98
-rw-r--r--bitbake/lib/bb/server/process.py25
-rw-r--r--bitbake/lib/bb/siggen.py17
-rw-r--r--bitbake/lib/bb/taskdata.py18
-rw-r--r--bitbake/lib/bb/tests/cooker.py83
-rw-r--r--bitbake/lib/bb/tests/fetch.py15
-rw-r--r--bitbake/lib/bb/tests/parse.py4
-rw-r--r--bitbake/lib/bb/utils.py51
-rw-r--r--bitbake/lib/bblayers/action.py2
-rw-r--r--bitbake/lib/bblayers/layerindex.py323
-rw-r--r--bitbake/lib/layerindexlib/README28
-rw-r--r--bitbake/lib/layerindexlib/__init__.py1364
-rw-r--r--bitbake/lib/layerindexlib/cooker.py341
-rw-r--r--bitbake/lib/layerindexlib/plugin.py60
-rw-r--r--bitbake/lib/layerindexlib/restapi.py398
-rw-r--r--bitbake/lib/layerindexlib/tests/__init__.py0
-rw-r--r--bitbake/lib/layerindexlib/tests/common.py43
-rw-r--r--bitbake/lib/layerindexlib/tests/cooker.py123
-rw-r--r--bitbake/lib/layerindexlib/tests/layerindexobj.py226
-rw-r--r--bitbake/lib/layerindexlib/tests/restapi.py184
-rw-r--r--bitbake/lib/layerindexlib/tests/testdata/README11
-rw-r--r--bitbake/lib/layerindexlib/tests/testdata/build/conf/bblayers.conf15
-rw-r--r--bitbake/lib/layerindexlib/tests/testdata/layer1/conf/layer.conf17
-rw-r--r--bitbake/lib/layerindexlib/tests/testdata/layer2/conf/layer.conf20
-rw-r--r--bitbake/lib/layerindexlib/tests/testdata/layer3/conf/layer.conf19
-rw-r--r--bitbake/lib/layerindexlib/tests/testdata/layer4/conf/layer.conf22
-rw-r--r--bitbake/lib/toaster/bldcontrol/localhostbecontroller.py203
-rw-r--r--bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py3
-rw-r--r--bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py2
-rw-r--r--bitbake/lib/toaster/orm/fixtures/oe-core.xml26
-rw-r--r--bitbake/lib/toaster/orm/fixtures/poky.xml76
-rw-r--r--bitbake/lib/toaster/orm/management/commands/lsupdates.py228
-rw-r--r--bitbake/lib/toaster/orm/migrations/0018_project_specific.py28
-rw-r--r--bitbake/lib/toaster/orm/models.py68
-rw-r--r--bitbake/lib/toaster/toastergui/api.py168
-rw-r--r--bitbake/lib/toaster/toastergui/static/js/layerBtn.js12
-rw-r--r--bitbake/lib/toaster/toastergui/static/js/layerdetails.js3
-rw-r--r--bitbake/lib/toaster/toastergui/static/js/libtoaster.js105
-rw-r--r--bitbake/lib/toaster/toastergui/static/js/mrbsection.js4
-rw-r--r--bitbake/lib/toaster/toastergui/static/js/projecttopbar.js22
-rw-r--r--bitbake/lib/toaster/toastergui/tables.py4
-rw-r--r--bitbake/lib/toaster/toastergui/templates/base_specific.html128
-rw-r--r--bitbake/lib/toaster/toastergui/templates/baseprojectspecificpage.html48
-rw-r--r--bitbake/lib/toaster/toastergui/templates/generic-toastertable-page.html2
-rw-r--r--bitbake/lib/toaster/toastergui/templates/importlayer.html4
-rw-r--r--bitbake/lib/toaster/toastergui/templates/landing_specific.html50
-rw-r--r--bitbake/lib/toaster/toastergui/templates/layerdetails.html3
-rw-r--r--bitbake/lib/toaster/toastergui/templates/mrb_section.html2
-rw-r--r--bitbake/lib/toaster/toastergui/templates/newcustomimage.html4
-rw-r--r--bitbake/lib/toaster/toastergui/templates/newproject.html57
-rw-r--r--bitbake/lib/toaster/toastergui/templates/newproject_specific.html95
-rw-r--r--bitbake/lib/toaster/toastergui/templates/project.html7
-rw-r--r--bitbake/lib/toaster/toastergui/templates/project_specific.html162
-rw-r--r--bitbake/lib/toaster/toastergui/templates/project_specific_topbar.html80
-rw-r--r--bitbake/lib/toaster/toastergui/templates/projectconf.html7
-rw-r--r--bitbake/lib/toaster/toastergui/templates/recipe.html2
-rw-r--r--bitbake/lib/toaster/toastergui/templates/recipe_add_btn.html23
-rw-r--r--bitbake/lib/toaster/toastergui/urls.py13
-rw-r--r--[-rwxr-xr-x]bitbake/lib/toaster/toastergui/views.py165
-rw-r--r--bitbake/lib/toaster/toastergui/widgets.py23
-rw-r--r--bitbake/lib/toaster/toastermain/management/commands/builddelete.py6
-rw-r--r--bitbake/lib/toaster/toastermain/management/commands/buildimport.py583
-rw-r--r--documentation/Makefile64
-rw-r--r--documentation/brief-yoctoprojectqs/brief-yoctoprojectqs-eclipse-customization.xsl (renamed from documentation/yocto-project-qs/yocto-project-qs-eclipse-customization.xsl)5
-rw-r--r--documentation/brief-yoctoprojectqs/brief-yoctoprojectqs-style.css2
-rw-r--r--documentation/brief-yoctoprojectqs/brief-yoctoprojectqs.xml216
-rw-r--r--documentation/brief-yoctoprojectqs/figures/bypqs-title.pngbin0 -> 14312 bytes
-rw-r--r--documentation/brief-yoctoprojectqs/figures/ypqs-title.pngbin11700 -> 0 bytes
-rw-r--r--documentation/bsp-guide/bsp-guide.xml47
-rw-r--r--documentation/bsp-guide/bsp.xml575
-rw-r--r--documentation/concepts-manual/concepts-manual-customization.xsl27
-rw-r--r--documentation/concepts-manual/concepts-manual-eclipse-customization.xsl35
-rw-r--r--documentation/concepts-manual/concepts-manual-intro.xml87
-rw-r--r--documentation/concepts-manual/concepts-manual.xml92
-rw-r--r--documentation/concepts-manual/figures/analysis-for-package-splitting.pngbin63291 -> 0 bytes
-rw-r--r--documentation/concepts-manual/figures/concepts-manual-title.pngbin11920 -> 0 bytes
-rw-r--r--documentation/concepts-manual/figures/configuration-compile-autoreconf.pngbin46080 -> 0 bytes
-rw-r--r--documentation/concepts-manual/figures/image-generation.pngbin112991 -> 0 bytes
-rw-r--r--documentation/concepts-manual/figures/images.pngbin22926 -> 0 bytes
-rw-r--r--documentation/concepts-manual/figures/layer-input.pngbin45856 -> 0 bytes
-rw-r--r--documentation/concepts-manual/figures/package-feeds.pngbin30112 -> 0 bytes
-rw-r--r--documentation/concepts-manual/figures/patching.pngbin42523 -> 0 bytes
-rwxr-xr-xdocumentation/concepts-manual/figures/sdk-generation.pngbin115643 -> 0 bytes
-rw-r--r--documentation/concepts-manual/figures/sdk.pngbin67478 -> 0 bytes
-rw-r--r--documentation/concepts-manual/figures/source-fetching.pngbin38860 -> 0 bytes
-rw-r--r--documentation/concepts-manual/figures/source-input.pngbin39872 -> 0 bytes
-rw-r--r--documentation/concepts-manual/figures/user-configuration.pngbin74109 -> 0 bytes
-rw-r--r--documentation/concepts-manual/figures/yocto-environment-ref.pngbin83206 -> 0 bytes
-rw-r--r--documentation/dev-manual/dev-manual-common-tasks.xml4236
-rw-r--r--documentation/dev-manual/dev-manual-intro.xml46
-rw-r--r--documentation/dev-manual/dev-manual-newbie.xml990
-rw-r--r--documentation/dev-manual/dev-manual-qemu.xml34
-rw-r--r--documentation/dev-manual/dev-manual-start.xml984
-rw-r--r--documentation/dev-manual/dev-manual.xml47
-rw-r--r--documentation/dev-manual/figures/multiconfig_files.pngbin0 -> 18611 bytes
-rw-r--r--documentation/getting-started/figures/getting-started-title.pngbin13472 -> 0 bytes
-rw-r--r--documentation/getting-started/getting-started-style.css988
-rw-r--r--documentation/kernel-dev/kernel-dev-advanced.xml29
-rw-r--r--documentation/kernel-dev/kernel-dev-common.xml18
-rw-r--r--documentation/kernel-dev/kernel-dev-concepts-appx.xml8
-rw-r--r--documentation/kernel-dev/kernel-dev-intro.xml19
-rw-r--r--documentation/kernel-dev/kernel-dev-maint-appx.xml8
-rw-r--r--documentation/kernel-dev/kernel-dev.xml45
-rw-r--r--documentation/mega-manual/figures/analysis-for-package-splitting.pngbin63291 -> 68434 bytes
-rw-r--r--documentation/mega-manual/figures/bypqs-title.pngbin0 -> 14312 bytes
-rw-r--r--documentation/mega-manual/figures/configuration-compile-autoreconf.pngbin46080 -> 70877 bytes
-rw-r--r--documentation/mega-manual/figures/getting-started-title.pngbin13472 -> 0 bytes
-rw-r--r--documentation/mega-manual/figures/image-generation.pngbin112991 -> 123348 bytes
-rw-r--r--documentation/mega-manual/figures/images.pngbin22926 -> 32674 bytes
-rw-r--r--documentation/mega-manual/figures/layer-input.pngbin45856 -> 62330 bytes
-rw-r--r--documentation/mega-manual/figures/multiconfig_files.pngbin0 -> 18611 bytes
-rw-r--r--documentation/mega-manual/figures/overview-manual-title.pngbin0 -> 17387 bytes
-rw-r--r--documentation/mega-manual/figures/package-feeds.pngbin30112 -> 40900 bytes
-rw-r--r--documentation/mega-manual/figures/patching.pngbin42523 -> 57414 bytes
-rw-r--r--documentation/mega-manual/figures/sdk-autotools-flow.pngbin0 -> 50443 bytes
-rw-r--r--documentation/mega-manual/figures/sdk-devtool-add-flow.pngbin179361 -> 181699 bytes
-rw-r--r--documentation/mega-manual/figures/sdk-devtool-modify-flow.pngbin146467 -> 171676 bytes
-rw-r--r--documentation/mega-manual/figures/sdk-devtool-upgrade-flow.pngbin139827 -> 138917 bytes
-rw-r--r--[-rwxr-xr-x]documentation/mega-manual/figures/sdk-generation.pngbin115643 -> 60574 bytes
-rw-r--r--documentation/mega-manual/figures/sdk-installed-extensible-sdk-directory.pngbin42892 -> 66753 bytes
-rw-r--r--documentation/mega-manual/figures/sdk-installed-standard-sdk-directory.pngbin56096 -> 39099 bytes
-rw-r--r--documentation/mega-manual/figures/sdk-makefile-flow.pngbin0 -> 47197 bytes
-rw-r--r--documentation/mega-manual/figures/sdk.pngbin67478 -> 49804 bytes
-rw-r--r--documentation/mega-manual/figures/source-fetching.pngbin38860 -> 46896 bytes
-rw-r--r--documentation/mega-manual/figures/source-input.pngbin39872 -> 51170 bytes
-rw-r--r--[-rwxr-xr-x]documentation/mega-manual/figures/user-configuration.pngbin74109 -> 51171 bytes
-rw-r--r--documentation/mega-manual/figures/yocto-environment-ref.pngbin83206 -> 0 bytes
-rw-r--r--documentation/mega-manual/figures/ypqs-title.pngbin12900 -> 0 bytes
-rw-r--r--documentation/mega-manual/mega-manual.xml76
-rw-r--r--documentation/overview-manual/figures/YP-flow-diagram.png (renamed from documentation/getting-started/figures/YP-flow-diagram.png)bin190715 -> 190715 bytes
-rw-r--r--documentation/overview-manual/figures/analysis-for-package-splitting.pngbin0 -> 68434 bytes
-rw-r--r--documentation/overview-manual/figures/configuration-compile-autoreconf.pngbin0 -> 70877 bytes
-rw-r--r--documentation/overview-manual/figures/cross-development-toolchains.png (renamed from documentation/concepts-manual/figures/cross-development-toolchains.png)bin82633 -> 82633 bytes
-rw-r--r--documentation/overview-manual/figures/git-workflow.png (renamed from documentation/getting-started/figures/git-workflow.png)bin26586 -> 26586 bytes
-rw-r--r--documentation/overview-manual/figures/image-generation.pngbin0 -> 123348 bytes
-rw-r--r--documentation/overview-manual/figures/images.pngbin0 -> 32674 bytes
-rw-r--r--documentation/overview-manual/figures/index-downloads.png (renamed from documentation/getting-started/figures/index-downloads.png)bin36362 -> 36362 bytes
-rw-r--r--documentation/overview-manual/figures/key-dev-elements.png (renamed from documentation/getting-started/figures/key-dev-elements.png)bin20424 -> 20424 bytes
-rw-r--r--documentation/overview-manual/figures/layer-input.pngbin0 -> 62330 bytes
-rw-r--r--documentation/overview-manual/figures/overview-manual-title.pngbin0 -> 17387 bytes
-rw-r--r--documentation/overview-manual/figures/package-feeds.pngbin0 -> 40900 bytes
-rw-r--r--documentation/overview-manual/figures/patching.pngbin0 -> 57414 bytes
-rw-r--r--documentation/overview-manual/figures/poky-reference-distribution.png (renamed from documentation/getting-started/figures/poky-reference-distribution.png)bin23784 -> 23784 bytes
-rw-r--r--documentation/overview-manual/figures/sdk-generation.pngbin0 -> 60574 bytes
-rw-r--r--documentation/overview-manual/figures/sdk.pngbin0 -> 49804 bytes
-rw-r--r--documentation/overview-manual/figures/source-fetching.pngbin0 -> 46896 bytes
-rw-r--r--documentation/overview-manual/figures/source-input.pngbin0 -> 51170 bytes
-rw-r--r--documentation/overview-manual/figures/source-repos.png (renamed from documentation/getting-started/figures/source-repos.png)bin298757 -> 298757 bytes
-rw-r--r--documentation/overview-manual/figures/user-configuration.pngbin0 -> 51171 bytes
-rw-r--r--documentation/overview-manual/figures/yp-download.png (renamed from documentation/getting-started/figures/yp-download.png)bin82939 -> 82939 bytes
-rw-r--r--documentation/overview-manual/overview-manual-concepts.xml (renamed from documentation/concepts-manual/concepts-manual-concepts.xml)1624
-rw-r--r--documentation/overview-manual/overview-manual-customization.xsl (renamed from documentation/getting-started/getting-started-customization.xsl)2
-rw-r--r--documentation/overview-manual/overview-manual-development-environment.xml (renamed from documentation/getting-started/getting-started-development-environment.xml)62
-rw-r--r--documentation/overview-manual/overview-manual-eclipse-customization.xsl (renamed from documentation/getting-started/getting-started-eclipse-customization.xsl)2
-rw-r--r--documentation/overview-manual/overview-manual-intro.xml (renamed from documentation/getting-started/getting-started-intro.xml)36
-rw-r--r--documentation/overview-manual/overview-manual-style.css (renamed from documentation/concepts-manual/concepts-manual-style.css)2
-rw-r--r--documentation/overview-manual/overview-manual-yp-intro.xml (renamed from documentation/getting-started/getting-started-yp-intro.xml)179
-rw-r--r--documentation/overview-manual/overview-manual.xml (renamed from documentation/getting-started/getting-started.xml)61
-rw-r--r--documentation/poky.ent30
-rw-r--r--documentation/profile-manual/profile-manual.xml45
-rw-r--r--documentation/ref-manual/faq.xml6
-rw-r--r--documentation/ref-manual/migration.xml512
-rw-r--r--documentation/ref-manual/ref-bitbake.xml479
-rw-r--r--documentation/ref-manual/ref-classes.xml52
-rw-r--r--documentation/ref-manual/ref-devtool-reference.xml4
-rw-r--r--documentation/ref-manual/ref-features.xml6
-rw-r--r--documentation/ref-manual/ref-images.xml20
-rw-r--r--documentation/ref-manual/ref-kickstart.xml13
-rw-r--r--documentation/ref-manual/ref-manual.xml45
-rw-r--r--documentation/ref-manual/ref-release-process.xml6
-rw-r--r--documentation/ref-manual/ref-structure.xml27
-rw-r--r--documentation/ref-manual/ref-system-requirements.xml19
-rw-r--r--documentation/ref-manual/ref-tasks.xml156
-rw-r--r--documentation/ref-manual/ref-terms.xml27
-rw-r--r--documentation/ref-manual/ref-variables.xml840
-rw-r--r--documentation/ref-manual/resources.xml39
-rw-r--r--documentation/sdk-manual/figures/sdk-autotools-flow.pngbin0 -> 50443 bytes
-rw-r--r--documentation/sdk-manual/figures/sdk-devtool-add-flow.pngbin177945 -> 181699 bytes
-rw-r--r--documentation/sdk-manual/figures/sdk-devtool-modify-flow.pngbin164192 -> 171676 bytes
-rw-r--r--documentation/sdk-manual/figures/sdk-devtool-upgrade-flow.pngbin139827 -> 138917 bytes
-rw-r--r--documentation/sdk-manual/figures/sdk-installed-extensible-sdk-directory.pngbin42892 -> 66753 bytes
-rw-r--r--documentation/sdk-manual/figures/sdk-installed-standard-sdk-directory.pngbin56096 -> 39099 bytes
-rw-r--r--documentation/sdk-manual/figures/sdk-makefile-flow.pngbin0 -> 47197 bytes
-rw-r--r--documentation/sdk-manual/sdk-appendix-customizing.xml275
-rw-r--r--documentation/sdk-manual/sdk-appendix-neon.xml (renamed from documentation/sdk-manual/sdk-appendix-mars.xml)424
-rw-r--r--documentation/sdk-manual/sdk-appendix-obtain.xml140
-rw-r--r--documentation/sdk-manual/sdk-eclipse-project.xml405
-rw-r--r--documentation/sdk-manual/sdk-extensible.xml1010
-rw-r--r--documentation/sdk-manual/sdk-intro.xml79
-rw-r--r--documentation/sdk-manual/sdk-manual.xml48
-rw-r--r--documentation/sdk-manual/sdk-using.xml82
-rw-r--r--documentation/sdk-manual/sdk-working-projects.xml653
-rw-r--r--documentation/toaster-manual/toaster-manual-intro.xml2
-rw-r--r--documentation/toaster-manual/toaster-manual-reference.xml47
-rw-r--r--documentation/toaster-manual/toaster-manual-setup-and-use.xml187
-rw-r--r--documentation/toaster-manual/toaster-manual-start.xml7
-rw-r--r--documentation/toaster-manual/toaster-manual.xml45
-rw-r--r--documentation/tools/eclipse-help.sed10
-rw-r--r--documentation/tools/mega-manual.sed50
-rwxr-xr-xdocumentation/yocto-project-qs/figures/yocto-project-transp.pngbin8626 -> 0 bytes
-rw-r--r--documentation/yocto-project-qs/figures/ypqs-title.pngbin12900 -> 0 bytes
-rw-r--r--documentation/yocto-project-qs/qs-style.css989
-rw-r--r--documentation/yocto-project-qs/qs.xml1113
-rw-r--r--documentation/yocto-project-qs/yocto-project-qs-customization.xsl37
-rw-r--r--documentation/yocto-project-qs/yocto-project-qs-titlepage.xsl3820
-rw-r--r--documentation/yocto-project-qs/yocto-project-qs.xml180
-rw-r--r--meta-poky/conf/distro/poky-lsb.conf1
-rw-r--r--meta-poky/conf/distro/poky-tiny.conf2
-rw-r--r--meta-poky/conf/distro/poky.conf9
-rw-r--r--meta-poky/conf/layer.conf2
-rw-r--r--meta-poky/conf/local.conf.sample6
-rw-r--r--meta-poky/conf/local.conf.sample.extended2
-rw-r--r--meta-poky/conf/site.conf.sample4
-rw-r--r--meta-selftest/conf/layer.conf2
-rw-r--r--meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py5
-rw-r--r--meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb5
-rw-r--r--meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink.bb30
-rwxr-xr-xmeta-selftest/recipes-test/selftest-hardlink/selftest-hardlink/gdb.sh8
-rw-r--r--meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink/hello.c5
-rw-r--r--meta-skeleton/conf/layer.conf2
-rw-r--r--meta-yocto-bsp/conf/layer.conf2
-rw-r--r--meta-yocto-bsp/conf/machine/beaglebone-yocto.conf6
-rw-r--r--meta-yocto-bsp/conf/machine/edgerouter.conf4
-rw-r--r--meta-yocto-bsp/conf/machine/include/genericx86-common.inc2
-rw-r--r--meta-yocto-bsp/conf/machine/mpc8315e-rdb.conf10
-rw-r--r--meta-yocto-bsp/lib/oeqa/selftest/cases/systemd_boot.py63
-rw-r--r--meta-yocto-bsp/recipes-kernel/linux/linux-yocto-dev.bbappend15
-rw-r--r--meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.12.bbappend28
-rw-r--r--meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.14.bbappend20
-rw-r--r--meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.15.bbappend27
-rw-r--r--meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.18.bbappend27
-rw-r--r--meta-yocto-bsp/wic/beaglebone-yocto.wks4
-rw-r--r--meta/classes/allarch.bbclass14
-rw-r--r--meta/classes/archiver.bbclass39
-rw-r--r--meta/classes/autotools.bbclass4
-rw-r--r--meta/classes/base.bbclass33
-rw-r--r--meta/classes/buildhistory.bbclass5
-rw-r--r--meta/classes/clutter.bbclass7
-rw-r--r--meta/classes/cmake.bbclass2
-rw-r--r--meta/classes/compress_doc.bbclass7
-rw-r--r--meta/classes/cpan.bbclass13
-rw-r--r--meta/classes/cpan_build.bbclass2
-rw-r--r--meta/classes/cross-canadian.bbclass2
-rw-r--r--meta/classes/cross.bbclass1
-rw-r--r--meta/classes/cve-check.bbclass12
-rw-r--r--meta/classes/devicetree.bbclass143
-rw-r--r--meta/classes/devtool-source.bbclass12
-rw-r--r--meta/classes/distutils-common-base.bbclass12
-rw-r--r--meta/classes/distutils.bbclass26
-rw-r--r--meta/classes/distutils3.bbclass26
-rw-r--r--meta/classes/dos2unix.bbclass14
-rw-r--r--meta/classes/externalsrc.bbclass3
-rw-r--r--meta/classes/fontcache.bbclass2
-rw-r--r--meta/classes/go.bbclass10
-rw-r--r--meta/classes/goarch.bbclass8
-rw-r--r--meta/classes/gtk-immodules-cache.bbclass70
-rw-r--r--meta/classes/icecc.bbclass2
-rw-r--r--meta/classes/image-live.bbclass18
-rw-r--r--meta/classes/image-mklibs.bbclass2
-rw-r--r--meta/classes/image-postinst-intercepts.bbclass23
-rw-r--r--meta/classes/image-prelink.bbclass2
-rw-r--r--meta/classes/image.bbclass57
-rw-r--r--meta/classes/image_types_wic.bbclass1
-rw-r--r--meta/classes/insane.bbclass159
-rw-r--r--meta/classes/kernel-arch.bbclass1
-rw-r--r--meta/classes/kernel-artifact-names.bbclass18
-rw-r--r--meta/classes/kernel-devicetree.bbclass89
-rw-r--r--meta/classes/kernel-fitimage.bbclass90
-rw-r--r--meta/classes/kernel-uimage.bbclass2
-rw-r--r--meta/classes/kernel-yocto.bbclass51
-rw-r--r--meta/classes/kernel.bbclass122
-rw-r--r--meta/classes/libc-common.bbclass4
-rw-r--r--meta/classes/libc-package.bbclass2
-rw-r--r--meta/classes/license.bbclass291
-rw-r--r--meta/classes/license_image.bbclass238
-rw-r--r--meta/classes/linuxloader.bbclass125
-rw-r--r--meta/classes/manpages.bbclass32
-rw-r--r--meta/classes/meson.bbclass101
-rw-r--r--meta/classes/mime.bbclass2
-rw-r--r--meta/classes/mirrors.bbclass3
-rw-r--r--meta/classes/multilib.bbclass35
-rw-r--r--meta/classes/multilib_global.bbclass5
-rw-r--r--meta/classes/multilib_script.bbclass32
-rw-r--r--meta/classes/native.bbclass5
-rw-r--r--meta/classes/nativesdk.bbclass6
-rw-r--r--meta/classes/package.bbclass343
-rw-r--r--meta/classes/package_deb.bbclass51
-rw-r--r--meta/classes/package_ipk.bbclass51
-rw-r--r--meta/classes/patch.bbclass2
-rw-r--r--meta/classes/pixbufcache.bbclass2
-rw-r--r--meta/classes/populate_sdk_base.bbclass15
-rw-r--r--meta/classes/populate_sdk_ext.bbclass15
-rw-r--r--meta/classes/python3native.bbclass6
-rw-r--r--meta/classes/pythonnative.bbclass6
-rw-r--r--meta/classes/reproducible_build.bbclass177
-rw-r--r--meta/classes/rm_work.bbclass83
-rw-r--r--meta/classes/rootfs-postcommands.bbclass50
-rw-r--r--meta/classes/sanity.bbclass67
-rw-r--r--meta/classes/setuptools.bbclass7
-rw-r--r--meta/classes/setuptools3.bbclass4
-rw-r--r--meta/classes/siteinfo.bbclass20
-rw-r--r--meta/classes/spdx.bbclass16
-rw-r--r--meta/classes/sstate.bbclass86
-rw-r--r--meta/classes/staging.bbclass41
-rw-r--r--meta/classes/systemd.bbclass14
-rw-r--r--meta/classes/terminal.bbclass3
-rw-r--r--meta/classes/testimage-auto.bbclass23
-rw-r--r--meta/classes/testimage.bbclass58
-rw-r--r--meta/classes/testsdk.bbclass45
-rw-r--r--meta/classes/toolchain-scripts.bbclass37
-rw-r--r--meta/classes/uboot-extlinux-config.bbclass2
-rw-r--r--meta/classes/uninative.bbclass5
-rw-r--r--meta/classes/utils.bbclass32
-rw-r--r--meta/conf/bitbake.conf48
-rw-r--r--meta/conf/distro/include/as-needed.inc13
-rw-r--r--meta/conf/distro/include/default-distrovars.inc3
-rw-r--r--meta/conf/distro/include/default-providers.inc2
-rw-r--r--meta/conf/distro/include/default-versions.inc3
-rw-r--r--meta/conf/distro/include/distro_alias.inc38
-rw-r--r--meta/conf/distro/include/maintainers.inc792
-rw-r--r--meta/conf/distro/include/no-static-libs.inc3
-rw-r--r--meta/conf/distro/include/security_flags.inc28
-rw-r--r--meta/conf/distro/include/tclibc-baremetal.inc13
-rw-r--r--meta/conf/distro/include/tclibc-glibc.inc2
-rw-r--r--meta/conf/distro/include/tclibc-musl.inc3
-rw-r--r--meta/conf/distro/include/tclibc-newlib.inc48
-rw-r--r--meta/conf/distro/include/tcmode-default.inc15
-rw-r--r--meta/conf/distro/include/yocto-uninative.inc8
-rw-r--r--meta/conf/documentation.conf4
-rw-r--r--meta/conf/layer.conf20
-rw-r--r--meta/conf/licenses.conf2
-rw-r--r--meta/conf/machine-sdk/aarch64.conf2
-rw-r--r--meta/conf/machine/include/arm/arch-armv7a.inc1
-rw-r--r--meta/conf/machine/include/mips/tune-mips-74k.inc37
-rw-r--r--meta/conf/machine/include/qemu.inc2
-rw-r--r--meta/conf/machine/include/tune-core2.inc2
-rw-r--r--meta/conf/machine/include/tune-corei7.inc11
-rw-r--r--meta/conf/machine/include/x86-base.inc9
-rw-r--r--meta/conf/machine/qemuarm.conf2
-rw-r--r--meta/conf/machine/qemumips.conf2
-rw-r--r--meta/conf/machine/qemumips64.conf2
-rw-r--r--meta/conf/machine/qemux86-64.conf4
-rw-r--r--meta/conf/machine/qemux86.conf4
-rw-r--r--meta/conf/multilib.conf4
-rw-r--r--meta/conf/sanity.conf2
-rw-r--r--meta/files/common-licenses/EPL-2.0277
-rw-r--r--meta/files/toolchain-shar-extract.sh1
-rw-r--r--meta/lib/bblayers/create.py13
-rw-r--r--meta/lib/bblayers/templates/README12
-rw-r--r--meta/lib/bblayers/templates/layer.conf15
-rw-r--r--meta/lib/oe/buildhistory_analysis.py42
-rw-r--r--meta/lib/oe/copy_buildsystem.py26
-rw-r--r--meta/lib/oe/elf.py128
-rw-r--r--meta/lib/oe/gpg_sign.py15
-rw-r--r--meta/lib/oe/maketype.py9
-rw-r--r--meta/lib/oe/package.py126
-rw-r--r--meta/lib/oe/package_manager.py180
-rw-r--r--meta/lib/oe/patch.py3
-rw-r--r--meta/lib/oe/path.py38
-rw-r--r--meta/lib/oe/qa.py3
-rw-r--r--meta/lib/oe/rootfs.py17
-rw-r--r--meta/lib/oe/sdk.py83
-rw-r--r--meta/lib/oe/sstatesig.py17
-rw-r--r--meta/lib/oe/terminal.py6
-rw-r--r--meta/lib/oe/types.py7
-rw-r--r--meta/lib/oe/utils.py124
-rw-r--r--meta/lib/oeqa/core/context.py12
-rw-r--r--meta/lib/oeqa/core/decorator/__init__.py10
-rw-r--r--meta/lib/oeqa/core/decorator/data.py18
-rw-r--r--meta/lib/oeqa/core/decorator/depends.py23
-rw-r--r--meta/lib/oeqa/core/decorator/oetimeout.py40
-rw-r--r--meta/lib/oeqa/core/loader.py19
-rw-r--r--meta/lib/oeqa/core/runner.py247
-rw-r--r--meta/lib/oeqa/core/target/ssh.py2
-rw-r--r--meta/lib/oeqa/core/tests/cases/loader/threaded/threaded.py12
-rw-r--r--meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_alone.py8
-rw-r--r--meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_depends.py10
-rw-r--r--meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_module.py12
-rw-r--r--meta/lib/oeqa/core/tests/common.py10
-rwxr-xr-xmeta/lib/oeqa/core/tests/test_data.py4
-rwxr-xr-xmeta/lib/oeqa/core/tests/test_decorators.py12
-rwxr-xr-xmeta/lib/oeqa/core/tests/test_loader.py30
-rw-r--r--meta/lib/oeqa/core/threaded.py275
-rw-r--r--meta/lib/oeqa/core/utils/concurrencytest.py256
-rw-r--r--meta/lib/oeqa/files/test.pl2
-rw-r--r--meta/lib/oeqa/files/test.py6
-rw-r--r--meta/lib/oeqa/runtime/cases/dnf.py46
-rw-r--r--meta/lib/oeqa/runtime/cases/ksample.py221
-rw-r--r--meta/lib/oeqa/runtime/cases/ldd.py15
-rw-r--r--meta/lib/oeqa/runtime/cases/logrotate.py4
-rw-r--r--meta/lib/oeqa/runtime/cases/multilib.py4
-rw-r--r--meta/lib/oeqa/runtime/cases/oe_syslog.py12
-rw-r--r--meta/lib/oeqa/runtime/cases/parselogs.py22
-rw-r--r--meta/lib/oeqa/runtime/cases/perl.py32
-rw-r--r--meta/lib/oeqa/runtime/cases/python.py38
-rw-r--r--meta/lib/oeqa/runtime/cases/rpm.py29
-rw-r--r--meta/lib/oeqa/runtime/cases/scanelf.py26
-rw-r--r--meta/lib/oeqa/runtime/cases/stap.py2
-rw-r--r--meta/lib/oeqa/runtime/cases/systemd.py6
-rw-r--r--meta/lib/oeqa/runtime/context.py14
-rw-r--r--meta/lib/oeqa/sdk/cases/assimp.py63
-rw-r--r--meta/lib/oeqa/sdk/cases/buildgalculator.py6
-rw-r--r--meta/lib/oeqa/sdk/cases/buildlzip.py4
-rw-r--r--meta/lib/oeqa/sdk/cases/gcc.py4
-rw-r--r--meta/lib/oeqa/sdk/cases/perl.py25
-rw-r--r--meta/lib/oeqa/sdk/cases/python.py35
-rw-r--r--meta/lib/oeqa/sdk/context.py36
-rw-r--r--meta/lib/oeqa/sdk/utils/sdkbuildproject.py10
-rw-r--r--meta/lib/oeqa/sdkext/cases/devtool.py8
-rw-r--r--meta/lib/oeqa/selftest/case.py10
-rw-r--r--meta/lib/oeqa/selftest/cases/bblayers.py27
-rw-r--r--meta/lib/oeqa/selftest/cases/bbtests.py12
-rw-r--r--meta/lib/oeqa/selftest/cases/devtool.py179
-rw-r--r--meta/lib/oeqa/selftest/cases/distrodata.py4
-rw-r--r--meta/lib/oeqa/selftest/cases/efibootpartition.py1
-rw-r--r--meta/lib/oeqa/selftest/cases/fetch.py49
-rw-r--r--meta/lib/oeqa/selftest/cases/image_typedep.py3
-rw-r--r--meta/lib/oeqa/selftest/cases/imagefeatures.py6
-rw-r--r--meta/lib/oeqa/selftest/cases/lic_checksum.py3
-rw-r--r--meta/lib/oeqa/selftest/cases/oelib/elf.py1
-rw-r--r--meta/lib/oeqa/selftest/cases/oelib/utils.py46
-rw-r--r--meta/lib/oeqa/selftest/cases/oescripts.py17
-rw-r--r--meta/lib/oeqa/selftest/cases/package.py67
-rw-r--r--meta/lib/oeqa/selftest/cases/recipetool.py4
-rw-r--r--meta/lib/oeqa/selftest/cases/runqemu.py2
-rw-r--r--meta/lib/oeqa/selftest/cases/runtime_test.py13
-rw-r--r--meta/lib/oeqa/selftest/cases/signing.py2
-rw-r--r--meta/lib/oeqa/selftest/cases/sstatetests.py11
-rw-r--r--meta/lib/oeqa/selftest/cases/wic.py245
-rw-r--r--meta/lib/oeqa/selftest/context.py30
-rw-r--r--meta/lib/oeqa/utils/package_manager.py6
-rw-r--r--meta/lib/oeqa/utils/qemurunner.py6
-rw-r--r--meta/recipes-bsp/acpid/acpid_2.0.30.bb (renamed from meta/recipes-bsp/acpid/acpid_2.0.28.bb)4
-rw-r--r--meta/recipes-bsp/apmd/apmd/legacy.patch2
-rw-r--r--meta/recipes-bsp/eee-acpi-scripts/eee-acpi-scripts_git.bb39
-rw-r--r--meta/recipes-bsp/eee-acpi-scripts/files/policy-funcs8
-rw-r--r--meta/recipes-bsp/eee-acpi-scripts/files/powerbtn.patch22
-rw-r--r--meta/recipes-bsp/eee-acpi-scripts/files/remove-doc-check.patch60
-rw-r--r--meta/recipes-bsp/gnu-efi/gnu-efi/lib-Makefile-fix-parallel-issue.patch14
-rw-r--r--meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch16
-rw-r--r--meta/recipes-bsp/gnu-efi/gnu-efi_3.0.8.bb (renamed from meta/recipes-bsp/gnu-efi/gnu-efi_3.0.6.bb)4
-rw-r--r--meta/recipes-bsp/grub/files/0001-x86-64-Treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch76
-rw-r--r--meta/recipes-bsp/grub/files/gcc8.patch74
-rw-r--r--meta/recipes-bsp/grub/grub-efi_2.02.bb6
-rw-r--r--meta/recipes-bsp/grub/grub2.inc6
-rw-r--r--meta/recipes-bsp/lrzsz/lrzsz-0.12.20/cve-2018-10195.patch28
-rw-r--r--meta/recipes-bsp/lrzsz/lrzsz_0.12.20.bb1
-rw-r--r--meta/recipes-bsp/pciutils/pciutils_3.6.2.bb (renamed from meta/recipes-bsp/pciutils/pciutils_3.5.6.bb)6
-rw-r--r--meta/recipes-bsp/pcmciautils/pcmciautils-018/lex_sys_types.patch21
-rw-r--r--meta/recipes-bsp/pcmciautils/pcmciautils-018/makefile_fix.patch101
-rw-r--r--meta/recipes-bsp/pcmciautils/pcmciautils-018/makefile_race.patch29
-rw-r--r--meta/recipes-bsp/pcmciautils/pcmciautils.inc34
-rw-r--r--meta/recipes-bsp/pcmciautils/pcmciautils_018.bb11
-rw-r--r--meta/recipes-bsp/u-boot/files/CVE-2018-1000205-1.patch59
-rw-r--r--meta/recipes-bsp/u-boot/files/CVE-2018-1000205-2.patch143
-rw-r--r--meta/recipes-bsp/u-boot/files/MPC8315ERDB-enable-DHCP.patch19
-rw-r--r--meta/recipes-bsp/u-boot/u-boot-common_2018.07.inc (renamed from meta/recipes-bsp/u-boot/u-boot-common_2018.01.inc)8
-rw-r--r--meta/recipes-bsp/u-boot/u-boot-fw-utils_2018.07.bb (renamed from meta/recipes-bsp/u-boot/u-boot-fw-utils_2018.01.bb)2
-rw-r--r--meta/recipes-bsp/u-boot/u-boot-mkimage_2018.07.bb (renamed from meta/recipes-bsp/u-boot/u-boot-mkimage_2018.01.bb)2
-rw-r--r--meta/recipes-bsp/u-boot/u-boot.inc57
-rw-r--r--meta/recipes-bsp/u-boot/u-boot_2018.07.bb (renamed from meta/recipes-bsp/u-boot/u-boot_2018.01.bb)0
-rw-r--r--meta/recipes-bsp/usbutils/usbutils/usb-devices-avoid-dependency-on-bash.patch32
-rw-r--r--meta/recipes-bsp/usbutils/usbutils_010.bb (renamed from meta/recipes-bsp/usbutils/usbutils_009.bb)22
-rw-r--r--meta/recipes-connectivity/avahi/avahi-ui_0.7.bb16
-rw-r--r--meta/recipes-connectivity/avahi/avahi.inc84
-rw-r--r--meta/recipes-connectivity/avahi/avahi_0.7.bb84
-rw-r--r--meta/recipes-connectivity/avahi/files/0001-Fix-opening-etc-resolv.conf-error.patch40
-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-gen.c-extend-DIRNAMESIZE-from-256-to-512.patch13
-rw-r--r--meta/recipes-connectivity/bind/bind/0001-lib-dns-gen.c-fix-too-long-error.patch13
-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/CVE-2018-5740.patch72
-rw-r--r--meta/recipes-connectivity/bind/bind/bind-confgen-build-unix.o-once.patch48
-rw-r--r--meta/recipes-connectivity/bind/bind/bind-ensure-searching-for-json-headers-searches-sysr.patch13
-rw-r--r--meta/recipes-connectivity/bind/bind/dont-test-on-host.patch17
-rw-r--r--meta/recipes-connectivity/bind/bind/use-python3-and-fix-install-lib-path.patch36
-rw-r--r--meta/recipes-connectivity/bind/bind_9.11.4.bb (renamed from meta/recipes-connectivity/bind/bind_9.10.6.bb)89
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5.inc2
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch45
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5/0001-test-gatt-Fix-hung-issue.patch43
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5_5.50.bb (renamed from meta/recipes-connectivity/bluez5/bluez5_5.48.bb)5
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp.inc15
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0001-define-macro-_PATH_DHCPD_CONF-and-_PATH_DHCLIENT_CON.patch13
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0003-link-with-lcrypto.patch13
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0004-Fix-out-of-tree-builds.patch109
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0006-site.h-enable-gentle-shutdown.patch13
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0007-Add-configure-argument-to-make-the-libxml2-dependenc.patch40
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0010-build-shared-libs.patch208
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0011-Moved-the-call-to-isc_app_ctxstart-to-not-get-signal.patch81
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0012-dhcp-correct-the-intention-for-xml2-lib-search.patch13
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/0013-fixup_use_libbind.patch64
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp/CVE-2017-3144.patch74
-rw-r--r--meta/recipes-connectivity/dhcp/dhcp_4.4.1.bb (renamed from meta/recipes-connectivity/dhcp/dhcp_4.3.6.bb)13
-rw-r--r--meta/recipes-connectivity/iproute2/iproute2.inc2
-rw-r--r--meta/recipes-connectivity/iproute2/iproute2/0001-iproute2-de-bash-scripts.patch63
-rw-r--r--meta/recipes-connectivity/iproute2/iproute2_4.18.0.bb (renamed from meta/recipes-connectivity/iproute2/iproute2_4.14.1.bb)5
-rw-r--r--meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb17
-rw-r--r--meta/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info/multilibfix.patch18
-rw-r--r--meta/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info_git.bb4
-rw-r--r--meta/recipes-connectivity/nfs-utils/libnfsidmap/0001-include-sys-types.h-for-getting-u_-typedefs.patch27
-rw-r--r--meta/recipes-connectivity/nfs-utils/libnfsidmap/Set_nobody_user_group.patch18
-rw-r--r--meta/recipes-connectivity/nfs-utils/libnfsidmap/fix-ac-prereq.patch13
-rw-r--r--meta/recipes-connectivity/nfs-utils/libnfsidmap_0.25.bb27
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/0001-configure-Allow-to-explicitly-disable-nfsidmap.patch40
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/0001-include-stdint.h-for-UINT16_MAX-definition.patch27
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/bugfix-adjust-statd-service-name.patch (renamed from meta/recipes-connectivity/nfs-utils/files/bugfix-adjust-statd-service-name.patch)0
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-utils-1.2.3-sm-notify-res_init.patch37
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-utils-debianize-start-statd.patch (renamed from meta/recipes-connectivity/nfs-utils/files/nfs-utils-debianize-start-statd.patch)0
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-utils-musl-limits.patch133
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-utils-musl-res_querydomain.patch22
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils_2.3.1.bb (renamed from meta/recipes-connectivity/nfs-utils/nfs-utils_2.1.1.bb)15
-rw-r--r--meta/recipes-connectivity/ofono/ofono_1.22.bb9
-rw-r--r--meta/recipes-connectivity/ofono/ofono_1.24.bb9
-rw-r--r--meta/recipes-connectivity/openssh/openssh/disable-ciphers-not-supported-by-OpenSSL-DES.patch39
-rw-r--r--meta/recipes-connectivity/openssh/openssh/init12
-rw-r--r--meta/recipes-connectivity/openssh/openssh/ssh_config12
-rw-r--r--meta/recipes-connectivity/openssh/openssh/sshd_check_keys50
-rw-r--r--meta/recipes-connectivity/openssh/openssh/sshd_config30
-rw-r--r--meta/recipes-connectivity/openssh/openssh_7.8p1+git.bb (renamed from meta/recipes-connectivity/openssh/openssh_7.6p1.bb)25
-rw-r--r--meta/recipes-connectivity/openssl/files/environment.d-openssl.sh1
-rw-r--r--meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/ca.patch22
-rw-r--r--meta/recipes-connectivity/openssl/openssl-1.0.2o/find.pl54
-rw-r--r--meta/recipes-connectivity/openssl/openssl-1.0.2o/openssl-util-perlpath.pl-cwd.patch34
-rw-r--r--meta/recipes-connectivity/openssl/openssl/0001-Take-linking-flags-from-LDFLAGS-env-var.patch43
-rw-r--r--meta/recipes-connectivity/openssl/openssl10.inc285
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/0001-Fix-build-with-clang-using-external-assembler.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/0001-Fix-build-with-clang-using-external-assembler.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/0001-allow-manpages-to-be-disabled.patch31
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/0001-openssl-force-soft-link-to-avoid-rare-race.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/0001-openssl-force-soft-link-to-avoid-rare-race.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/Makefiles-ptest.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/Makefiles-ptest.patch)18
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/Use-SHA256-not-MD5-as-default-digest.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/Use-SHA256-not-MD5-as-default-digest.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/configure-musl-target.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/configure-musl-target.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/configure-targets.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/configure-targets.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/debian/c_rehash-compat.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/c_rehash-compat.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/debian/debian-targets.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/debian-targets.patch)4
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/debian/man-dir.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/man-dir.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/debian/man-section.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/man-section.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/debian/no-rpath.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/no-rpath.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/debian/no-symbolic.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/no-symbolic.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/debian/pic.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/pic.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/debian1.0.2/block_digicert_malaysia.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/debian1.0.2/block_digicert_malaysia.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/debian1.0.2/block_diginotar.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/debian1.0.2/block_diginotar.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/debian1.0.2/soname.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/debian1.0.2/soname.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/debian1.0.2/version-script.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/debian1.0.2/version-script.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/engines-install-in-libdir-ssl.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/engines-install-in-libdir-ssl.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/oe-ldflags.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/oe-ldflags.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/openssl-c_rehash.sh (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/openssl-c_rehash.sh)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/openssl-fix-des.pod-error.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/openssl-fix-des.pod-error.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/openssl_fix_for_x32.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/openssl_fix_for_x32.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/parallel.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/parallel.patch)40
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/ptest-deps.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/ptest-deps.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/ptest_makefile_deps.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/ptest_makefile_deps.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/reproducible-cflags.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/reproducible-cflags.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/reproducible-mkbuildinf.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/reproducible-mkbuildinf.patch)0
-rwxr-xr-xmeta/recipes-connectivity/openssl/openssl10/run-ptest (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/run-ptest)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10/shared-libs.patch (renamed from meta/recipes-connectivity/openssl/openssl-1.0.2o/shared-libs.patch)0
-rw-r--r--meta/recipes-connectivity/openssl/openssl10_1.0.2p.bb360
-rw-r--r--meta/recipes-connectivity/openssl/openssl_1.0.2o.bb64
-rw-r--r--meta/recipes-connectivity/openssl/openssl_1.1.0h.bb161
-rw-r--r--meta/recipes-connectivity/openssl/openssl_1.1.1.bb182
-rw-r--r--meta/recipes-connectivity/ppp/ppp/ppp-2.4.7-DES-openssl.patch84
-rw-r--r--meta/recipes-connectivity/ppp/ppp_2.4.7.bb9
-rw-r--r--meta/recipes-connectivity/socat/socat_1.7.3.2.bb17
-rw-r--r--meta/recipes-connectivity/wireless-tools/wireless-tools/avoid_strip.patch21
-rw-r--r--meta/recipes-connectivity/wireless-tools/wireless-tools/ldflags.patch22
-rw-r--r--meta/recipes-connectivity/wireless-tools/wireless-tools/man.patch15
-rw-r--r--meta/recipes-connectivity/wireless-tools/wireless-tools/remove.ldconfig.call.patch19
-rw-r--r--meta/recipes-connectivity/wireless-tools/wireless-tools_30.pre9.bb50
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple.patch1025
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple1.patch191
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple2.patch267
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple3.patch201
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple4.patch96
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple5.patch81
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple6.patch149
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple7.patch60
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple8.patch99
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/wpa_supplicant-CVE-2018-14526.patch44
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.6.bb10
-rw-r--r--meta/recipes-core/base-files/base-files/profile14
-rw-r--r--meta/recipes-core/base-files/base-files_3.0.14.bb1
-rw-r--r--meta/recipes-core/busybox/busybox-inittab_1.29.2.bb (renamed from meta/recipes-core/busybox/busybox-inittab_1.27.2.bb)0
-rw-r--r--meta/recipes-core/busybox/busybox.inc28
-rwxr-xr-xmeta/recipes-core/busybox/busybox/CVE-2011-5325.patch481
-rw-r--r--meta/recipes-core/busybox/busybox/CVE-2017-15873.patch95
-rw-r--r--meta/recipes-core/busybox/busybox/busybox-CVE-2017-16544.patch43
-rw-r--r--meta/recipes-core/busybox/busybox/busybox-udhcpc-no_deconfig.patch48
-rw-r--r--meta/recipes-core/busybox/busybox/defconfig58
-rw-r--r--meta/recipes-core/busybox/busybox/init.cfg7
-rw-r--r--meta/recipes-core/busybox/busybox_1.29.2.bb (renamed from meta/recipes-core/busybox/busybox_1.27.2.bb)7
-rw-r--r--meta/recipes-core/busybox/files/mdev-mount.sh4
-rw-r--r--meta/recipes-core/console-tools/console-tools_0.3.2.bb11
-rw-r--r--meta/recipes-core/coreutils/coreutils_8.30.bb (renamed from meta/recipes-core/coreutils/coreutils_8.29.bb)30
-rw-r--r--meta/recipes-core/dbus/dbus-glib_0.108.bb4
-rw-r--r--meta/recipes-core/dbus/dbus-glib_0.110.bb (renamed from meta/recipes-core/dbus/dbus-glib.inc)6
-rw-r--r--meta/recipes-core/dbus/dbus-test_1.12.10.bb (renamed from meta/recipes-core/dbus/dbus-test_1.12.2.bb)5
-rwxr-xr-xmeta/recipes-core/dbus/dbus/run-ptest2
-rw-r--r--meta/recipes-core/dbus/dbus_1.12.10.bb (renamed from meta/recipes-core/dbus/dbus_1.12.2.bb)17
-rw-r--r--meta/recipes-core/dropbear/dropbear.inc14
-rw-r--r--meta/recipes-core/dropbear/dropbear/0001-urandom-xauth-changes-to-options.h.patch16
-rw-r--r--meta/recipes-core/dropbear/dropbear/0003-configure.patch43
-rw-r--r--meta/recipes-core/dropbear/dropbear/0004-fix-2kb-keys.patch19
-rw-r--r--meta/recipes-core/dropbear/dropbear/0005-dropbear-enable-pam.patch40
-rw-r--r--meta/recipes-core/dropbear/dropbear/0006-dropbear-configuration-file.patch23
-rw-r--r--meta/recipes-core/dropbear/dropbear/0007-dropbear-fix-for-x32-abi.patch140
-rw-r--r--meta/recipes-core/dropbear/dropbear/CVE-2018-15599.patch236
-rw-r--r--meta/recipes-core/dropbear/dropbear/dropbear.default2
-rw-r--r--meta/recipes-core/dropbear/dropbear/fix-libtomcrypt-libtommath-ordering.patch49
-rwxr-xr-xmeta/recipes-core/dropbear/dropbear/init26
-rw-r--r--meta/recipes-core/dropbear/dropbear_2017.75.bb5
-rw-r--r--meta/recipes-core/dropbear/dropbear_2018.76.bb5
-rw-r--r--meta/recipes-core/expat/expat_2.2.6.bb (renamed from meta/recipes-core/expat/expat_2.2.5.bb)4
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/0001-Do-not-ignore-return-value-of-write.patch17
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/0001-Install-gio-querymodules-as-libexec_PROGRAM.patch14
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/0001-Test-for-pthread_getname_np-before-using-it.patch70
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/Enable-more-tests-while-cross-compiling.patch29
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/allow-run-media-sdX-drive-mount-if-username-root.patch39
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/ptest-paths.patch30
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch13
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0_2.58.0.bb (renamed from meta/recipes-core/glib-2.0/glib-2.0_2.54.3.bb)7
-rw-r--r--meta/recipes-core/glib-2.0/glib.inc9
-rw-r--r--meta/recipes-core/glib-networking/glib-networking_2.54.1.bb2
-rw-r--r--meta/recipes-core/glibc/cross-localedef-native_2.28.bb (renamed from meta/recipes-core/glibc/cross-localedef-native_2.27.bb)21
-rw-r--r--meta/recipes-core/glibc/glibc-initial.inc6
-rw-r--r--meta/recipes-core/glibc/glibc-initial_2.28.bb (renamed from meta/recipes-core/glibc/glibc-initial_2.27.bb)0
-rw-r--r--meta/recipes-core/glibc/glibc-ld.inc42
-rw-r--r--meta/recipes-core/glibc/glibc-locale.inc17
-rw-r--r--meta/recipes-core/glibc/glibc-locale_2.28.bb (renamed from meta/recipes-core/glibc/glibc-locale_2.27.bb)0
-rw-r--r--meta/recipes-core/glibc/glibc-mtrace_2.28.bb (renamed from meta/recipes-core/glibc/glibc-mtrace_2.27.bb)0
-rw-r--r--meta/recipes-core/glibc/glibc-package.inc23
-rw-r--r--meta/recipes-core/glibc/glibc-scripts_2.28.bb (renamed from meta/recipes-core/glibc/glibc-scripts_2.27.bb)0
-rw-r--r--meta/recipes-core/glibc/glibc.inc20
-rw-r--r--meta/recipes-core/glibc/glibc/0001-Linux-gethostid-Check-for-NULL-value-from-gethostbyn.patch38
-rw-r--r--meta/recipes-core/glibc/glibc/0001-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch12
-rw-r--r--meta/recipes-core/glibc/glibc/0002-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch10
-rw-r--r--meta/recipes-core/glibc/glibc/0003-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch18
-rw-r--r--meta/recipes-core/glibc/glibc/0004-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch6
-rw-r--r--meta/recipes-core/glibc/glibc/0005-nativesdk-glibc-Make-relocatable-install-for-locales.patch (renamed from meta/recipes-core/glibc/glibc/relocate-locales.patch)45
-rw-r--r--meta/recipes-core/glibc/glibc/0006-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch (renamed from meta/recipes-core/glibc/glibc/0005-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch)44
-rw-r--r--meta/recipes-core/glibc/glibc/0007-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch (renamed from meta/recipes-core/glibc/glibc/0006-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch)6
-rw-r--r--meta/recipes-core/glibc/glibc/0008-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch (renamed from meta/recipes-core/glibc/glibc/0007-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch)6
-rw-r--r--meta/recipes-core/glibc/glibc/0009-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch (renamed from meta/recipes-core/glibc/glibc/0008-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch)6
-rw-r--r--meta/recipes-core/glibc/glibc/0010-Quote-from-bug-1443-which-explains-what-the-patch-do.patch (renamed from meta/recipes-core/glibc/glibc/0009-Quote-from-bug-1443-which-explains-what-the-patch-do.patch)8
-rw-r--r--meta/recipes-core/glibc/glibc/0011-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch (renamed from meta/recipes-core/glibc/glibc/0010-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch)6
-rw-r--r--meta/recipes-core/glibc/glibc/0012-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch (renamed from meta/recipes-core/glibc/glibc/0011-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch)6
-rw-r--r--meta/recipes-core/glibc/glibc/0013-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch (renamed from meta/recipes-core/glibc/glibc/0012-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch)6
-rw-r--r--meta/recipes-core/glibc/glibc/0014-Add-unused-attribute.patch (renamed from meta/recipes-core/glibc/glibc/0013-Add-unused-attribute.patch)6
-rw-r--r--meta/recipes-core/glibc/glibc/0015-yes-within-the-path-sets-wrong-config-variables.patch (renamed from meta/recipes-core/glibc/glibc/0014-yes-within-the-path-sets-wrong-config-variables.patch)6
-rw-r--r--meta/recipes-core/glibc/glibc/0016-timezone-re-written-tzselect-as-posix-sh.patch (renamed from meta/recipes-core/glibc/glibc/0015-timezone-re-written-tzselect-as-posix-sh.patch)6
-rw-r--r--meta/recipes-core/glibc/glibc/0017-Remove-bash-dependency-for-nscd-init-script.patch (renamed from meta/recipes-core/glibc/glibc/0016-Remove-bash-dependency-for-nscd-init-script.patch)6
-rw-r--r--meta/recipes-core/glibc/glibc/0018-eglibc-Cross-building-and-testing-instructions.patch (renamed from meta/recipes-core/glibc/glibc/0017-eglibc-Cross-building-and-testing-instructions.patch)10
-rw-r--r--meta/recipes-core/glibc/glibc/0019-eglibc-Help-bootstrap-cross-toolchain.patch (renamed from meta/recipes-core/glibc/glibc/0018-eglibc-Help-bootstrap-cross-toolchain.patch)12
-rw-r--r--meta/recipes-core/glibc/glibc/0020-eglibc-Clear-cache-lines-on-ppc8xx.patch (renamed from meta/recipes-core/glibc/glibc/0019-eglibc-Clear-cache-lines-on-ppc8xx.patch)6
-rw-r--r--meta/recipes-core/glibc/glibc/0021-eglibc-Install-PIC-archives.patch123
-rw-r--r--meta/recipes-core/glibc/glibc/0021-eglibc-Resolve-__fpscr_values-on-SH4.patch (renamed from meta/recipes-core/glibc/glibc/0020-eglibc-Resolve-__fpscr_values-on-SH4.patch)6
-rw-r--r--meta/recipes-core/glibc/glibc/0022-eglibc-Forward-port-cross-locale-generation-support.patch28
-rw-r--r--meta/recipes-core/glibc/glibc/0023-Define-DUMMY_LOCALE_T-if-not-defined.patch6
-rw-r--r--meta/recipes-core/glibc/glibc/0024-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch10
-rw-r--r--meta/recipes-core/glibc/glibc/0025-locale-fix-hard-coded-reference-to-gcc-E.patch6
-rw-r--r--meta/recipes-core/glibc/glibc/0026-reset-dl_load_write_lock-after-forking.patch14
-rw-r--r--meta/recipes-core/glibc/glibc/0027-Acquire-ld.so-lock-before-switching-to-malloc_atfork.patch30
-rw-r--r--meta/recipes-core/glibc/glibc/0028-bits-siginfo-consts.h-enum-definition-for-TRAP_HWBKP.patch14
-rw-r--r--meta/recipes-core/glibc/glibc/0029-Replace-strncpy-with-memccpy-to-fix-Wstringop-trunca.patch40
-rw-r--r--meta/recipes-core/glibc/glibc/0029-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch90
-rw-r--r--meta/recipes-core/glibc/glibc/0030-intl-Emit-no-lines-in-bison-generated-files.patch (renamed from meta/recipes-core/glibc/glibc/0030-plural_c_no_preprocessor_lines.patch)17
-rw-r--r--meta/recipes-core/glibc/glibc/0031-nativesdk-deprecate-libcrypt.patch419
-rw-r--r--meta/recipes-core/glibc/glibc/0031-sysdeps-ieee754-prevent-maybe-uninitialized-errors.patch95
-rw-r--r--meta/recipes-core/glibc/glibc/0032-soft-fp-ignore-maybe-uninitialized.patch72
-rw-r--r--meta/recipes-core/glibc/glibc/archive-path.patch39
-rw-r--r--meta/recipes-core/glibc/glibc/etc/ld.so.conf1
-rwxr-xr-xmeta/recipes-core/glibc/glibc/makedbs.sh177
-rw-r--r--meta/recipes-core/glibc/glibc_2.28.bb (renamed from meta/recipes-core/glibc/glibc_2.27.bb)68
-rw-r--r--meta/recipes-core/ifupdown/ifupdown_0.8.16.bb2
-rw-r--r--meta/recipes-core/images/build-appliance-image_15.0.0.bb10
-rw-r--r--meta/recipes-core/images/core-image-minimal-initramfs.bb2
-rw-r--r--meta/recipes-core/images/core-image-tiny-initramfs.bb4
-rw-r--r--meta/recipes-core/initrdscripts/files/init-install.sh2
-rw-r--r--meta/recipes-core/initrdscripts/files/init-live.sh7
-rwxr-xr-xmeta/recipes-core/initrdscripts/initramfs-framework/init2
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-framework/nfsrootfs48
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-framework/udev1
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb8
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-live-install-efi_1.0.bb1
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb1
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-module-install-efi_1.0.bb1
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-module-install_1.0.bb1
-rwxr-xr-xmeta/recipes-core/initscripts/initscripts-1.0/mountnfs.sh9
-rw-r--r--meta/recipes-core/libcgroup/libcgroup/CVE-2018-14348.patch37
-rw-r--r--meta/recipes-core/libcgroup/libcgroup_0.41.bb3
-rw-r--r--meta/recipes-core/libxcrypt/libxcrypt_4.1.1.bb (renamed from meta/recipes-core/libxcrypt/libxcrypt_4.0.0.bb)14
-rw-r--r--meta/recipes-core/libxml/libxml2/0001-Fix-infinite-loop-in-LZMA-decompression.patch55
-rw-r--r--meta/recipes-core/libxml/libxml2/ansidecl.patch25
-rw-r--r--meta/recipes-core/libxml/libxml2/fix-CVE-2017-8872.patch38
-rw-r--r--meta/recipes-core/libxml/libxml2/fix-CVE-2018-14404.patch45
-rw-r--r--meta/recipes-core/libxml/libxml2/runtest.patch151
-rw-r--r--meta/recipes-core/libxml/libxml2_2.9.8.bb (renamed from meta/recipes-core/libxml/libxml2_2.9.7.bb)15
-rw-r--r--meta/recipes-core/meta/buildtools-tarball.bb3
-rw-r--r--meta/recipes-core/meta/dummy-sdk-package.inc2
-rw-r--r--meta/recipes-core/meta/meta-environment.bb2
-rw-r--r--meta/recipes-core/meta/uninative-tarball.bb3
-rw-r--r--meta/recipes-core/musl/libssp-nonshared.bb39
-rw-r--r--meta/recipes-core/musl/libssp-nonshared/ssp-local.c45
-rw-r--r--meta/recipes-core/musl/musl-utils.bb2
-rw-r--r--meta/recipes-core/musl/musl.inc2
-rw-r--r--meta/recipes-core/musl/musl_git.bb23
-rw-r--r--meta/recipes-core/ncurses/files/0001-tic-hang.patch24
-rw-r--r--meta/recipes-core/ncurses/files/0002-configure-reproducible.patch8
-rw-r--r--meta/recipes-core/ncurses/ncurses.inc1
-rw-r--r--meta/recipes-core/ncurses/ncurses_6.1+20180630.bb (renamed from meta/recipes-core/ncurses/ncurses_6.0+20171125.bb)2
-rw-r--r--meta/recipes-core/newlib/libgloss/fix-rs6000-crt0.patch41
-rw-r--r--meta/recipes-core/newlib/libgloss/fix_makefile_include_arm_h.patch30
-rw-r--r--meta/recipes-core/newlib/libgloss_3.0.0.bb33
-rw-r--r--meta/recipes-core/newlib/newlib.inc58
-rw-r--r--meta/recipes-core/newlib/newlib_3.0.0.bb19
-rw-r--r--meta/recipes-core/os-release/os-release.bb9
-rw-r--r--meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch71
-rw-r--r--meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch102
-rw-r--r--meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch53
-rw-r--r--meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch66
-rw-r--r--meta/recipes-core/ovmf/ovmf_git.bb8
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-base.bb2
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-core-boot.bb1
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bb2
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb4
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb7
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-go-sdk-target.bb2
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-self-hosted.bb14
-rw-r--r--meta/recipes-core/psplash/psplash_git.bb5
-rw-r--r--meta/recipes-core/systemd/systemd-boot_239.bb (renamed from meta/recipes-core/systemd/systemd-boot_237.bb)5
-rw-r--r--meta/recipes-core/systemd/systemd-serialgetty.bb2
-rw-r--r--meta/recipes-core/systemd/systemd.inc2
-rw-r--r--meta/recipes-core/systemd/systemd/0001-Also-check-i386-i586-and-i686-for-ia32.patch28
-rw-r--r--meta/recipes-core/systemd/systemd/0001-Remove-fstack-protector-flags-to-workaround-musl-bui.patch28
-rw-r--r--meta/recipes-core/systemd/systemd/0001-Use-getenv-when-secure-versions-are-not-available.patch10
-rw-r--r--meta/recipes-core/systemd/systemd/0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch (renamed from meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch)22
-rw-r--r--meta/recipes-core/systemd/systemd/0001-core-device.c-Change-the-default-device-timeout-to-2.patch18
-rw-r--r--meta/recipes-core/systemd/systemd/0001-login-use-parse_uid-when-unmounting-user-runtime-dir.patch110
-rw-r--r--meta/recipes-core/systemd/systemd/0001-sd-bus-make-BUS_DEFAULT_TIMEOUT-configurable.patch175
-rw-r--r--meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch (renamed from meta/recipes-core/systemd/systemd/0022-don-t-use-glibc-specific-qsort_r.patch)108
-rw-r--r--meta/recipes-core/systemd/systemd/0002-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch (renamed from meta/recipes-core/systemd/systemd/0003-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch)16
-rw-r--r--meta/recipes-core/systemd/systemd/0003-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch40
-rw-r--r--meta/recipes-core/systemd/systemd/0003-implment-systemd-sysv-install-for-OE.patch (renamed from meta/recipes-core/systemd/systemd/0004-implment-systemd-sysv-install-for-OE.patch)10
-rw-r--r--meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch (renamed from meta/recipes-core/systemd/systemd/0013-add-fallback-parse_printf_format-implementation.patch)49
-rw-r--r--meta/recipes-core/systemd/systemd/0004-rules-whitelist-hd-devices.patch (renamed from meta/recipes-core/systemd/systemd/0005-rules-whitelist-hd-devices.patch)8
-rw-r--r--meta/recipes-core/systemd/systemd/0005-Make-root-s-home-directory-configurable.patch (renamed from meta/recipes-core/systemd/systemd/0006-Make-root-s-home-directory-configurable.patch)34
-rw-r--r--meta/recipes-core/systemd/systemd/0005-include-gshadow-only-if-ENABLE_GSHADOW-is-1.patch29
-rw-r--r--meta/recipes-core/systemd/systemd/0006-remove-nobody-user-group-checking.patch63
-rw-r--r--meta/recipes-core/systemd/systemd/0006-src-basic-missing.h-check-for-missing-strndupa.patch (renamed from meta/recipes-core/systemd/systemd/0014-src-basic-missing.h-check-for-missing-strndupa.patch)66
-rw-r--r--meta/recipes-core/systemd/systemd/0007-Include-netinet-if_ether.h.patch (renamed from meta/recipes-core/systemd/systemd/0017-Include-netinet-if_ether.h.patch)51
-rw-r--r--meta/recipes-core/systemd/systemd/0007-Revert-rules-remove-firmware-loading-rules.patch28
-rw-r--r--meta/recipes-core/systemd/systemd/0007-rules-watch-metadata-changes-in-ide-devices.patch (renamed from meta/recipes-core/systemd/systemd/0012-rules-watch-metadata-changes-in-ide-devices.patch)6
-rw-r--r--meta/recipes-core/systemd/systemd/0008-Do-not-enable-nss-tests-if-nss-systemd-is-not-enable.patch (renamed from meta/recipes-core/systemd/systemd/0019-Do-not-enable-nss-tests-if-nss-systemd-is-not-enable.patch)16
-rw-r--r--meta/recipes-core/systemd/systemd/0008-Revert-udev-remove-userspace-firmware-loading-suppor.patch377
-rw-r--r--meta/recipes-core/systemd/systemd/0008-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch (renamed from meta/recipes-core/systemd/systemd/0015-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch)86
-rw-r--r--meta/recipes-core/systemd/systemd/0009-add-missing-FTW_-macros-for-musl.patch (renamed from meta/recipes-core/systemd/systemd/0028-add-missing-FTW_-macros-for-musl.patch)12
-rw-r--r--meta/recipes-core/systemd/systemd/0009-nss-mymachines-Build-conditionally-when-ENABLE_MYHOS.patch (renamed from meta/recipes-core/systemd/systemd/0029-nss-mymachines-Build-conditionally-when-ENABLE_MYHOS.patch)10
-rw-r--r--meta/recipes-core/systemd/systemd/0009-remove-duplicate-include-uchar.h.patch41
-rw-r--r--meta/recipes-core/systemd/systemd/0010-check-for-uchar.h-in-meson.build.patch45
-rw-r--r--meta/recipes-core/systemd/systemd/0010-socket-util-don-t-fail-if-libc-doesn-t-support-IDN.patch (renamed from meta/recipes-core/systemd/systemd/0011-socket-util-don-t-fail-if-libc-doesn-t-support-IDN.patch)17
-rw-r--r--meta/recipes-core/systemd/systemd/0011-src-basic-missing.h-check-for-missing-__compar_fn_t-.patch (renamed from meta/recipes-core/systemd/systemd/0016-src-basic-missing.h-check-for-missing-__compar_fn_t-.patch)23
-rw-r--r--meta/recipes-core/systemd/systemd/0012-fix-missing-of-__register_atfork-for-non-glibc-build.patch (renamed from meta/recipes-core/systemd/systemd/0030-fix-missing-of-__register_atfork-for-non-glibc-build.patch)18
-rw-r--r--meta/recipes-core/systemd/systemd/0013-Use-uintmax_t-for-handling-rlim_t.patch (renamed from meta/recipes-core/systemd/systemd/0026-Use-uintmax_t-for-handling-rlim_t.patch)33
-rw-r--r--meta/recipes-core/systemd/systemd/0014-fix-missing-ULONG_LONG_MAX-definition-in-case-of-mus.patch (renamed from meta/recipes-core/systemd/systemd/0031-fix-missing-ULONG_LONG_MAX-definition-in-case-of-mus.patch)12
-rw-r--r--meta/recipes-core/systemd/systemd/0015-test-hexdecoct.c-Include-missing.h-for-strndupa.patch (renamed from meta/recipes-core/systemd/systemd/0020-test-hexdecoct.c-Include-missing.h-for-strndupa.patch)12
-rw-r--r--meta/recipes-core/systemd/systemd/0016-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch (renamed from meta/recipes-core/systemd/systemd/0021-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch)14
-rw-r--r--meta/recipes-core/systemd/systemd/0017-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch (renamed from meta/recipes-core/systemd/systemd/0023-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch)20
-rw-r--r--meta/recipes-core/systemd/systemd/0018-Define-glibc-compatible-basename-for-non-glibc-syste.patch34
-rw-r--r--meta/recipes-core/systemd/systemd/0018-check-for-missing-canonicalize_file_name.patch47
-rw-r--r--meta/recipes-core/systemd/systemd/0019-Do-not-disable-buffering-when-writing-to-oom_score_a.patch39
-rw-r--r--meta/recipes-core/systemd/systemd/0020-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch62
-rw-r--r--meta/recipes-core/systemd/systemd/0021-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch (renamed from meta/recipes-core/systemd/systemd/0001-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch)2
-rw-r--r--meta/recipes-core/systemd/systemd/0022-build-sys-Detect-whether-struct-statx-is-defined-in-.patch109
-rw-r--r--meta/recipes-core/systemd/systemd/0023-resolvconf-fixes-for-the-compatibility-interface.patch58
-rw-r--r--meta/recipes-core/systemd/systemd/0024-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch31
-rw-r--r--meta/recipes-core/systemd/systemd/0025-Define-_PATH_WTMPX-and-_PATH_UTMPX-if-not-defined.patch43
-rw-r--r--meta/recipes-core/systemd/systemd/0027-remove-nobody-user-group-checking.patch63
-rw-r--r--meta/recipes-core/systemd/systemd/0032-memfd.patch272
-rw-r--r--meta/recipes-core/systemd/systemd_239.bb (renamed from meta/recipes-core/systemd/systemd_237.bb)143
-rw-r--r--meta/recipes-core/sysvinit/sysvinit-2.88dsf/0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch71
-rw-r--r--meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb15
-rw-r--r--meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb3
-rw-r--r--meta/recipes-core/udev/eudev_3.2.5.bb11
-rw-r--r--meta/recipes-core/udev/udev-extraconf/mount.sh83
-rw-r--r--meta/recipes-core/udev/udev-extraconf_1.1.bb3
-rw-r--r--meta/recipes-core/update-rc.d/update-rc.d/add-verbose.patch49
-rw-r--r--meta/recipes-core/update-rc.d/update-rc.d/check-if-symlinks-are-valid.patch59
-rw-r--r--meta/recipes-core/update-rc.d/update-rc.d/fix-to-handle-priority-numbers-correctly.patch28
-rw-r--r--meta/recipes-core/update-rc.d/update-rc.d_0.8.bb (renamed from meta/recipes-core/update-rc.d/update-rc.d_0.7.bb)13
-rw-r--r--meta/recipes-core/util-linux/util-linux.inc21
-rw-r--r--meta/recipes-core/util-linux/util-linux/avoid_parallel_tests.patch15
-rw-r--r--meta/recipes-core/util-linux/util-linux_2.32.1.bb (renamed from meta/recipes-core/util-linux/util-linux_2.31.bb)8
-rw-r--r--meta/recipes-devtools/autoconf-archive/autoconf-archive_2018.03.13.bb (renamed from meta/recipes-devtools/autoconf-archive/autoconf-archive_2016.09.16.bb)6
-rw-r--r--meta/recipes-devtools/autoconf/autoconf.inc31
-rw-r--r--meta/recipes-devtools/automake/automake/0001-automake-Add-default-libtool_tag-to-cppasm.patch18
-rw-r--r--meta/recipes-devtools/automake/automake/0001-build-fix-race-in-parallel-builds.patch65
-rw-r--r--meta/recipes-devtools/automake/automake/automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch68
-rw-r--r--meta/recipes-devtools/automake/automake/buildtest.patch20
-rw-r--r--meta/recipes-devtools/automake/automake/new_rt_path_for_test-driver.patch22
-rw-r--r--meta/recipes-devtools/automake/automake/performance.patch19
-rw-r--r--meta/recipes-devtools/automake/automake/python-libdir.patch19
-rw-r--r--meta/recipes-devtools/automake/automake_1.16.1.bb (renamed from meta/recipes-devtools/automake/automake_1.15.1.bb)5
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.31.inc (renamed from meta/recipes-devtools/binutils/binutils-2.30.inc)8
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross-canadian_2.31.bb (renamed from meta/recipes-devtools/binutils/binutils-cross-canadian_2.30.bb)0
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross_2.31.bb (renamed from meta/recipes-devtools/binutils/binutils-cross_2.30.bb)0
-rw-r--r--meta/recipes-devtools/binutils/binutils-crosssdk_2.31.bb (renamed from meta/recipes-devtools/binutils/binutils-crosssdk_2.30.bb)0
-rw-r--r--meta/recipes-devtools/binutils/binutils.inc5
-rw-r--r--meta/recipes-devtools/binutils/binutils/0001-binutils-crosssdk-Generate-relocatable-SDKs.patch12
-rw-r--r--meta/recipes-devtools/binutils/binutils/0002-binutils-cross-Do-not-generate-linker-script-directo.patch22
-rw-r--r--meta/recipes-devtools/binutils/binutils/0003-configure-widen-the-regexp-for-SH-architectures.patch12
-rw-r--r--meta/recipes-devtools/binutils/binutils/0004-Point-scripts-location-to-libdir.patch10
-rw-r--r--meta/recipes-devtools/binutils/binutils/0005-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch10
-rw-r--r--meta/recipes-devtools/binutils/binutils/0006-Use-libtool-2.4.patch2278
-rw-r--r--meta/recipes-devtools/binutils/binutils/0007-Add-the-armv5e-architecture-to-binutils.patch8
-rw-r--r--meta/recipes-devtools/binutils/binutils/0008-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch4
-rw-r--r--meta/recipes-devtools/binutils/binutils/0009-warn-for-uses-of-system-directories-when-cross-linki.patch50
-rw-r--r--meta/recipes-devtools/binutils/binutils/0010-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch4
-rw-r--r--meta/recipes-devtools/binutils/binutils/0011-Change-default-emulation-for-mips64-linux.patch12
-rw-r--r--meta/recipes-devtools/binutils/binutils/0012-Add-support-for-Netlogic-XLP.patch80
-rw-r--r--meta/recipes-devtools/binutils/binutils/0013-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch10
-rw-r--r--meta/recipes-devtools/binutils/binutils/0014-Detect-64-bit-MIPS-targets.patch4
-rw-r--r--meta/recipes-devtools/binutils/binutils/0015-sync-with-OE-libtool-changes.patch4
-rw-r--r--meta/recipes-devtools/binutils/binutils/0016-add-i386pep-emulation-for-x86_64.patch41
-rw-r--r--meta/recipes-devtools/binutils/binutils/0017-improve-check-for-input-file-matching-output-file.patch59
-rw-r--r--meta/recipes-devtools/binutils/binutils/0018-Refactored-location-where-GOT-information-is-collect.patch201
-rw-r--r--meta/recipes-devtools/binutils/binutils/0019-Improved-robustness.-Return-FALSE-in-case-of-NULL-po.patch38
-rw-r--r--meta/recipes-devtools/binutils/binutils/0020-Make-sure-global-symbol-is-not-an-indirect-or-warnin.patch46
-rw-r--r--meta/recipes-devtools/binutils/binutils/0021-PLT-information-was-still-being-generated-when-symbo.patch40
-rw-r--r--meta/recipes-devtools/binutils/binutils_2.31.bb (renamed from meta/recipes-devtools/binutils/binutils_2.30.bb)0
-rw-r--r--meta/recipes-devtools/bison/bison/gnulib.patch21
-rw-r--r--meta/recipes-devtools/bison/bison_3.0.4.bb1
-rw-r--r--meta/recipes-devtools/bootchart2/bootchart2/0001-Fixed-Missing-default-value-for-BOOTLOG_DEST.patch30
-rw-r--r--meta/recipes-devtools/bootchart2/bootchart2_0.14.8.bb4
-rw-r--r--meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-Add-LDFLAGS-when-building-libbtrfsutil.so.patch35
-rw-r--r--meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-Add-a-possibility-to-specify-where-python-modules-ar.patch25
-rw-r--r--meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-Fix-build-with-musl-missing-header-include-for-dev_t.patch26
-rw-r--r--meta/recipes-devtools/btrfs-tools/btrfs-tools_4.17.1.bb (renamed from meta/recipes-devtools/btrfs-tools/btrfs-tools_4.13.3.bb)15
-rw-r--r--meta/recipes-devtools/ccache/ccache_3.3.5.bb12
-rw-r--r--meta/recipes-devtools/ccache/ccache_3.4.2.bb11
-rw-r--r--meta/recipes-devtools/ccache/files/0002-dev.mk.in-fix-file-name-too-long.patch15
-rw-r--r--meta/recipes-devtools/ccache/files/Revert-Create-man-page-in-the-make-install-from-git-.patch33
-rw-r--r--meta/recipes-devtools/chrpath/chrpath_0.16.bb4
-rw-r--r--meta/recipes-devtools/cmake/cmake-native_3.12.2.bb (renamed from meta/recipes-devtools/cmake/cmake-native_3.10.3.bb)18
-rw-r--r--meta/recipes-devtools/cmake/cmake.inc14
-rw-r--r--meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch47
-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.patch (renamed from meta/recipes-devtools/cmake/cmake/support-oe-qt4-tools-names.patch)15
-rw-r--r--meta/recipes-devtools/cmake/cmake/0004-Fail-silently-if-system-Qt-installation-is-broken.patch (renamed from meta/recipes-devtools/cmake/cmake/qt4-fail-silent.patch)13
-rw-r--r--meta/recipes-devtools/cmake/cmake/0005-Disable-use-of-ext2fs-ext2_fs.h-by-cmake-s-internal-.patch (renamed from meta/recipes-devtools/cmake/cmake/cmlibarchive-disable-ext2fs.patch)18
-rw-r--r--meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake3
-rw-r--r--meta/recipes-devtools/cmake/cmake/cmake-Prevent-the-detection-of-Qt5.patch215
-rw-r--r--meta/recipes-devtools/cmake/cmake/environment.d-cmake.sh3
-rw-r--r--meta/recipes-devtools/cmake/cmake_3.12.2.bb (renamed from meta/recipes-devtools/cmake/cmake_3.10.3.bb)7
-rw-r--r--meta/recipes-devtools/createrepo-c/createrepo-c_git.bb11
-rw-r--r--meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.23.bb (renamed from meta/recipes-devtools/desktop-file-utils/desktop-file-utils-native_0.23.bb)15
-rw-r--r--meta/recipes-devtools/diffstat/diffstat/avoid-check-user-break-cc.patch32
-rw-r--r--meta/recipes-devtools/diffstat/diffstat_1.62.bb (renamed from meta/recipes-devtools/diffstat/diffstat_1.61.bb)5
-rw-r--r--meta/recipes-devtools/distcc/distcc_3.3.2.bb (renamed from meta/recipes-devtools/distcc/distcc_3.2.bb)14
-rw-r--r--meta/recipes-devtools/distcc/files/0001-zeroconf-Include-fcntl.h.patch29
-rw-r--r--meta/recipes-devtools/distcc/files/default4
-rw-r--r--meta/recipes-devtools/dmidecode/dmidecode_3.1.bb4
-rw-r--r--meta/recipes-devtools/dnf/dnf_2.7.5.bb1
-rw-r--r--meta/recipes-devtools/dwarfsrcfiles/dwarfsrcfiles.bb2
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs.inc2
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-libext2fs-fix-build-failure-in-swapfs.c-on-big-endia.patch40
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs/Revert-mke2fs-enable-the-metadata_csum-and-64bit-fea.patch12
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs/ptest.patch49
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs_1.44.3.bb (renamed from meta/recipes-devtools/e2fsprogs/e2fsprogs_1.43.8.bb)20
-rw-r--r--meta/recipes-devtools/elfutils/elfutils_0.173.bb (renamed from meta/recipes-devtools/elfutils/elfutils_0.170.bb)23
-rw-r--r--meta/recipes-devtools/elfutils/files/0001-Ensure-that-packed-structs-follow-the-gcc-memory-lay.patch34
-rw-r--r--meta/recipes-devtools/elfutils/files/0001-Use-fallthrough-attribute.patch791
-rw-r--r--meta/recipes-devtools/elfutils/files/0001-dso-link-change.patch8
-rw-r--r--meta/recipes-devtools/elfutils/files/0001-libasm-may-link-with-libbz2-if-found.patch13
-rw-r--r--meta/recipes-devtools/elfutils/files/0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch46
-rw-r--r--meta/recipes-devtools/elfutils/files/0002-Fix-elf_cvt_gunhash-if-dest-and-src-are-same.patch4
-rw-r--r--meta/recipes-devtools/elfutils/files/0003-fixheadercheck.patch6
-rw-r--r--meta/recipes-devtools/elfutils/files/0004-Disable-the-test-to-convert-euc-jp.patch4
-rw-r--r--meta/recipes-devtools/elfutils/files/0005-fix-a-stack-usage-warning.patch8
-rw-r--r--meta/recipes-devtools/elfutils/files/0006-Fix-build-on-aarch64-musl.patch4
-rw-r--r--meta/recipes-devtools/elfutils/files/0007-Fix-control-path-where-we-have-str-as-uninitialized-.patch12
-rw-r--r--meta/recipes-devtools/elfutils/files/0008-build-Provide-alternatives-for-glibc-assumptions-hel.patch201
-rw-r--r--meta/recipes-devtools/elfutils/files/CVE-2018-16062.patch79
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/0001-Ignore-differences-between-mips-machine-identifiers.patch7
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/0001-arm_backend.patch (renamed from meta/recipes-devtools/elfutils/files/debian/arm_backend.diff)322
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/0001-disable_werror.patch35
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/0001-fix-gcc7-ftbfs.patch57
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/0001-hppa_backend.patch (renamed from meta/recipes-devtools/elfutils/files/debian/hppa_backend.diff)170
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/0001-mips_backend.patch (renamed from meta/recipes-devtools/elfutils/files/debian/mips_backend.patch)31
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/0001-mips_readelf_w.patch39
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/0001-testsuite-ignore-elflint.patch57
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/0002-Add-support-for-mips64-abis-in-mips_retval.c.patch6
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/0003-Add-mips-n64-relocation-format-hack.patch8
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/ignore_strmerge.diff14
-rw-r--r--meta/recipes-devtools/elfutils/files/debian/mips_readelf_w.patch25
-rw-r--r--meta/recipes-devtools/fdisk/gptfdisk_1.0.4.bb (renamed from meta/recipes-devtools/fdisk/gptfdisk_1.0.3.bb)4
-rw-r--r--meta/recipes-devtools/file/file/0001-Add-P-prompt-into-Usage-info.patch39
-rw-r--r--meta/recipes-devtools/file/file_5.34.bb (renamed from meta/recipes-devtools/file/file_5.32.bb)3
-rw-r--r--meta/recipes-devtools/gcc/gcc-7.3.inc11
-rw-r--r--meta/recipes-devtools/gcc/gcc-7.3/0001-Fix-ppc64le-build-Partial-backport-r256656.patch37
-rw-r--r--meta/recipes-devtools/gcc/gcc-7.3/0001-PR-c-80290-memory-hog-with-std-pair.patch58
-rw-r--r--meta/recipes-devtools/gcc/gcc-7.3/0008-c99-snprintf.patch28
-rw-r--r--meta/recipes-devtools/gcc/gcc-7.3/0049-gcc-override-TARGET_LIBC_PROVIDES_SSP.patch204
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2.inc127
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch42
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0003-gcc-poison-system-directories.patch194
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0005-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch73
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0006-64-bit-multilib-hack.patch85
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0007-optional-libstdc.patch125
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0008-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch59
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0009-COLLECT_GCC_OPTIONS.patch38
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0010-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch96
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0011-fortran-cross-compile-hack.patch46
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0012-cpp-honor-sysroot.patch54
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0013-MIPS64-Default-to-N64-ABI.patch57
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0014-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch248
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0015-gcc-Fix-argument-list-too-long-error.patch40
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0016-Disable-sdt.patch113
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0017-libtool.patch42
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0018-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch43
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0019-Use-the-multilib-config-files-from-B-instead-of-usin.patch102
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0020-Avoid-using-libdir-from-.la-which-usually-points-to-.patch31
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0021-export-CPP.patch53
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0022-Disable-the-MULTILIB_OSDIRNAMES-and-other-multilib-o.patch42
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0023-Ensure-target-gcc-headers-can-be-included.patch98
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0024-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch54
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0025-Don-t-search-host-directory-during-relink-if-inst_pr.patch38
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0026-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch29
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0027-aarch64-Add-support-for-musl-ldso.patch28
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0028-libcc1-fix-libcc1-s-install-path-and-rpath.patch54
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0029-handle-sysroot-support-for-nativesdk-gcc.patch213
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0030-Search-target-sysroot-gcc-version-specific-dirs-with.patch102
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0031-Fix-various-_FOR_BUILD-and-related-variables.patch137
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0032-nios2-Define-MUSL_DYNAMIC_LINKER.patch28
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0033-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch87
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0034-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch125
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0035-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch29
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0036-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch86
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0037-sync-gcc-stddef.h-with-musl.patch91
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0038-fix-segmentation-fault-in-precompiled-header-generat.patch60
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0039-Fix-for-testsuite-failure.patch258
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0040-Re-introduce-spe-commandline-options.patch41
-rw-r--r--meta/recipes-devtools/gcc/gcc-8.2/0041-ARC-fix-spec-gen.patch44
-rw-r--r--meta/recipes-devtools/gcc/gcc-common.inc2
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-canadian_8.2.bb5
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-initial_8.2.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross.inc1
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross_8.2.bb3
-rw-r--r--meta/recipes-devtools/gcc/gcc-crosssdk-initial_8.2.bb3
-rw-r--r--meta/recipes-devtools/gcc/gcc-crosssdk_8.2.bb2
-rw-r--r--meta/recipes-devtools/gcc/gcc-runtime.inc5
-rw-r--r--meta/recipes-devtools/gcc/gcc-runtime_8.2.bb10
-rw-r--r--meta/recipes-devtools/gcc/gcc-sanitizers.inc1
-rw-r--r--meta/recipes-devtools/gcc/gcc-sanitizers_8.2.bb7
-rw-r--r--meta/recipes-devtools/gcc/gcc-source_8.2.bb4
-rw-r--r--meta/recipes-devtools/gcc/gcc-target.inc18
-rw-r--r--meta/recipes-devtools/gcc/gcc_8.2.bb14
-rw-r--r--meta/recipes-devtools/gcc/libgcc-common.inc5
-rw-r--r--meta/recipes-devtools/gcc/libgcc-initial_8.2.bb2
-rw-r--r--meta/recipes-devtools/gcc/libgcc_8.2.bb2
-rw-r--r--meta/recipes-devtools/gcc/libgfortran_8.2.bb3
-rw-r--r--meta/recipes-devtools/gdb/gdb-8.2.inc (renamed from meta/recipes-devtools/gdb/gdb-8.0.1.inc)9
-rw-r--r--meta/recipes-devtools/gdb/gdb-common.inc6
-rw-r--r--meta/recipes-devtools/gdb/gdb-cross-canadian_8.2.bb (renamed from meta/recipes-devtools/gdb/gdb-cross-canadian_8.0.1.bb)0
-rw-r--r--meta/recipes-devtools/gdb/gdb-cross_8.2.bb (renamed from meta/recipes-devtools/gdb/gdb-cross_8.0.1.bb)0
-rw-r--r--meta/recipes-devtools/gdb/gdb/0001-include-sys-types.h-for-mode_t.patch15
-rw-r--r--meta/recipes-devtools/gdb/gdb/0002-make-man-install-relative-to-DESTDIR.patch8
-rw-r--r--meta/recipes-devtools/gdb/gdb/0003-mips-linux-nat-Define-_ABIO32-if-not-defined.patch26
-rw-r--r--meta/recipes-devtools/gdb/gdb/0004-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch14
-rw-r--r--meta/recipes-devtools/gdb/gdb/0005-Add-support-for-Renesas-SH-sh4-architecture.patch64
-rw-r--r--meta/recipes-devtools/gdb/gdb/0006-Dont-disable-libreadline.a-when-using-disable-static.patch10
-rw-r--r--meta/recipes-devtools/gdb/gdb/0007-use-asm-sgidefs.h.patch8
-rw-r--r--meta/recipes-devtools/gdb/gdb/0008-Use-exorted-definitions-of-SIGRTMIN.patch12
-rw-r--r--meta/recipes-devtools/gdb/gdb/0009-Change-order-of-CFLAGS.patch10
-rw-r--r--meta/recipes-devtools/gdb/gdb/0010-resolve-restrict-keyword-conflict.patch8
-rw-r--r--meta/recipes-devtools/gdb/gdb/0011-Fix-invalid-sigprocmask-call.patch (renamed from meta/recipes-devtools/gdb/gdb/package_devel_gdb_patches_120-sigprocmask-invalid-call.patch)20
-rw-r--r--meta/recipes-devtools/gdb/gdb/0012-Unbreak-GDBserver-build-for-x32.patch101
-rw-r--r--meta/recipes-devtools/gdb/gdb/gdb-Fix-ia64-defining-TRAP_HWBKPT-before-including-g.patch56
-rw-r--r--meta/recipes-devtools/gdb/gdb/gdbserver-ctrl-c-handling.patch26
-rw-r--r--meta/recipes-devtools/gdb/gdb_8.2.bb (renamed from meta/recipes-devtools/gdb/gdb_8.0.1.bb)4
-rw-r--r--meta/recipes-devtools/git/git.inc12
-rw-r--r--meta/recipes-devtools/git/git_2.16.1.bb11
-rw-r--r--meta/recipes-devtools/git/git_2.18.0.bb11
-rw-r--r--meta/recipes-devtools/glide/glide_0.13.1.bb20
-rw-r--r--meta/recipes-devtools/gnu-config/gnu-config/musl-support.patch25
-rw-r--r--meta/recipes-devtools/gnu-config/gnu-config_20120814.bb40
-rw-r--r--meta/recipes-devtools/gnu-config/gnu-config_git.bb6
-rw-r--r--meta/recipes-devtools/go/go-1.10.inc7
-rw-r--r--meta/recipes-devtools/go/go-1.9.inc6
-rw-r--r--meta/recipes-devtools/go/go-dep_0.4.1.bb20
-rw-r--r--meta/recipes-devtools/go/go-dep_0.5.0.bb30
-rw-r--r--meta/recipes-devtools/go/go-native.inc6
-rw-r--r--meta/recipes-devtools/go/go_1.9.bb7
-rw-r--r--meta/recipes-devtools/help2man/help2man-native_1.47.6.bb (renamed from meta/recipes-devtools/help2man/help2man-native_1.47.5.bb)4
-rw-r--r--meta/recipes-devtools/i2c-tools/i2c-tools_4.0.bb9
-rw-r--r--meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-setup.sh5
-rw-r--r--meta/recipes-devtools/icon-naming-utils/icon-naming-utils_0.8.90.bb30
-rw-r--r--meta/recipes-devtools/json-c/json-c_0.13.1.bb (renamed from meta/recipes-devtools/json-c/json-c_0.13.bb)13
-rw-r--r--meta/recipes-devtools/libtool/libtool-cross_2.4.6.bb8
-rw-r--r--meta/recipes-devtools/libtool/libtool/multilib.patch23
-rw-r--r--meta/recipes-devtools/libtool/libtool_2.4.6.bb6
-rw-r--r--meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch47
-rw-r--r--meta/recipes-devtools/llvm/llvm_git.bb23
-rw-r--r--meta/recipes-devtools/m4/m4-1.4.18.inc1
-rw-r--r--meta/recipes-devtools/m4/m4/m4-1.4.18-glibc-change-work-around.patch129
-rw-r--r--meta/recipes-devtools/meson/meson.inc (renamed from meta/recipes-devtools/meson/meson_0.44.1.bb)15
-rw-r--r--meta/recipes-devtools/meson/meson/0001-Support-building-allarch-recipes-again.patch28
-rw-r--r--meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch56
-rw-r--r--meta/recipes-devtools/meson/meson/0002-Make-CPU-family-warnings-fatal.patch36
-rw-r--r--meta/recipes-devtools/meson/meson/0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch17
-rw-r--r--meta/recipes-devtools/meson/meson/0003-native_bindir.patch69
-rw-r--r--meta/recipes-devtools/meson/meson/gi-flags.patch35
-rw-r--r--meta/recipes-devtools/meson/meson/gtkdoc-flags.patch44
-rwxr-xr-xmeta/recipes-devtools/meson/meson/meson-setup.py62
-rwxr-xr-xmeta/recipes-devtools/meson/meson/meson-wrapper14
-rw-r--r--meta/recipes-devtools/meson/meson_0.47.2.bb3
-rw-r--r--meta/recipes-devtools/meson/nativesdk-meson_0.47.2.bb74
-rw-r--r--meta/recipes-devtools/mtd/mtd-utils/0001-Revert-Return-correct-error-number-in-ubi_get_vol_in.patch92
-rw-r--r--meta/recipes-devtools/mtd/mtd-utils_git.bb34
-rw-r--r--meta/recipes-devtools/mtools/mtools/0001-remove-LOCK_NB-to-use-blocking-request.patch44
-rw-r--r--meta/recipes-devtools/mtools/mtools/clang_UNUSED.patch17
-rw-r--r--meta/recipes-devtools/mtools/mtools_4.0.18.bb2
-rw-r--r--meta/recipes-devtools/nasm/nasm/0001-Verify-that-we-are-not-reading-past-end-of-a-buffer.patch65
-rw-r--r--meta/recipes-devtools/nasm/nasm/0001-assemble-Check-global-line-limit.patch50
-rw-r--r--meta/recipes-devtools/nasm/nasm/0001-fix-CVE-2018-8882.patch30
-rw-r--r--meta/recipes-devtools/nasm/nasm_2.13.03.bb3
-rw-r--r--meta/recipes-devtools/opkg/opkg-keyrings_1.0.bb12
-rw-r--r--meta/recipes-devtools/opkg/opkg/0001-remove_maintainer_scripts-use-strict-matching.patch56
-rw-r--r--meta/recipes-devtools/opkg/opkg/opkg-configure.service17
-rw-r--r--meta/recipes-devtools/opkg/opkg_0.3.6.bb15
-rw-r--r--meta/recipes-devtools/ossp-uuid/ossp-uuid/0001-Change-library-name.patch119
-rw-r--r--meta/recipes-devtools/ossp-uuid/ossp-uuid/0002-uuid-preserve-m-option-status-in-v-option-handling.patch62
-rw-r--r--meta/recipes-devtools/ossp-uuid/ossp-uuid/0003-Fix-whatis-entries.patch58
-rw-r--r--meta/recipes-devtools/ossp-uuid/ossp-uuid/0004-fix-data-uuid-from-string.patch43
-rw-r--r--meta/recipes-devtools/ossp-uuid/ossp-uuid/install-pc.patch19
-rw-r--r--meta/recipes-devtools/ossp-uuid/ossp-uuid/ldflags.patch26
-rw-r--r--meta/recipes-devtools/ossp-uuid/ossp-uuid/libtool-tag.patch21
-rw-r--r--meta/recipes-devtools/ossp-uuid/ossp-uuid/uuid-libtool.patch27
-rw-r--r--meta/recipes-devtools/ossp-uuid/ossp-uuid/uuid-nostrip.patch19
-rw-r--r--meta/recipes-devtools/ossp-uuid/ossp-uuid_1.6.2.bb66
-rw-r--r--meta/recipes-devtools/patch/patch/0001-Fix-swapping-fake-lines-in-pch_swap.patch36
-rw-r--r--meta/recipes-devtools/patch/patch_2.7.6.bb1
-rw-r--r--meta/recipes-devtools/pax-utils/pax-utils_1.2.2.bb36
-rw-r--r--meta/recipes-devtools/perl/liberror-perl_0.17026.bb (renamed from meta/recipes-devtools/perl/liberror-perl_0.17025.bb)4
-rw-r--r--meta/recipes-devtools/perl/liburi-perl_1.74.bb (renamed from meta/recipes-devtools/perl/liburi-perl_1.73.bb)4
-rw-r--r--meta/recipes-devtools/perl/libxml-parser-perl_2.44.bb9
-rw-r--r--meta/recipes-devtools/perl/libxml-simple-perl_2.25.bb (renamed from meta/recipes-devtools/perl/libxml-simple-perl_2.24.bb)17
-rw-r--r--meta/recipes-devtools/perl/perl-native_5.24.4.bb (renamed from meta/recipes-devtools/perl/perl-native_5.24.1.bb)7
-rw-r--r--meta/recipes-devtools/perl/perl-ptest.inc2
-rw-r--r--meta/recipes-devtools/perl/perl-rdepends_5.24.4.inc (renamed from meta/recipes-devtools/perl/perl-rdepends_5.24.1.inc)0
-rw-r--r--meta/recipes-devtools/perl/perl/0001-ExtUtils-MM_Unix.pm-fix-race-issues.patch52
-rw-r--r--meta/recipes-devtools/perl/perl/CVE-2017-12883.patch44
-rw-r--r--meta/recipes-devtools/perl/perl/CVE-2018-12015.patch48
-rw-r--r--meta/recipes-devtools/perl/perl/Makefile.SH.patch12
-rw-r--r--meta/recipes-devtools/perl/perl/config.sh60
-rw-r--r--meta/recipes-devtools/perl/perl_5.24.4.bb (renamed from meta/recipes-devtools/perl/perl_5.24.1.bb)13
-rw-r--r--meta/recipes-devtools/pkgconf/pkgconf_1.5.3.bb (renamed from meta/recipes-devtools/pkgconf/pkgconf_1.4.2.bb)8
-rw-r--r--meta/recipes-devtools/prelink/prelink_git.bb7
-rw-r--r--meta/recipes-devtools/pseudo/pseudo_git.bb2
-rw-r--r--meta/recipes-devtools/python-numpy/python-numpy.inc6
-rw-r--r--meta/recipes-devtools/python-numpy/python-numpy_1.14.5.bb (renamed from meta/recipes-devtools/python-numpy/python-numpy_1.14.2.bb)0
-rw-r--r--meta/recipes-devtools/python-numpy/python3-numpy_1.14.5.bb (renamed from meta/recipes-devtools/python-numpy/python3-numpy_1.14.2.bb)0
-rw-r--r--meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch34
-rw-r--r--meta/recipes-devtools/python/python-extras.inc12
-rw-r--r--meta/recipes-devtools/python/python-git.inc4
-rw-r--r--meta/recipes-devtools/python/python-gitdb.inc4
-rw-r--r--meta/recipes-devtools/python/python-native_2.7.15.bb (renamed from meta/recipes-devtools/python/python-native_2.7.14.bb)0
-rw-r--r--meta/recipes-devtools/python/python-pbr.inc15
-rw-r--r--meta/recipes-devtools/python/python-scons-native_3.0.1.bb2
-rw-r--r--meta/recipes-devtools/python/python-setuptools.inc17
-rw-r--r--meta/recipes-devtools/python/python-setuptools_40.0.0.bb (renamed from meta/recipes-devtools/python/python-setuptools_39.0.0.bb)0
-rw-r--r--meta/recipes-devtools/python/python-subunit.inc14
-rw-r--r--meta/recipes-devtools/python/python-testtools.inc27
-rw-r--r--meta/recipes-devtools/python/python.inc12
-rw-r--r--meta/recipes-devtools/python/python/create_manifest2.py18
-rw-r--r--meta/recipes-devtools/python/python/multilib.patch2
-rw-r--r--meta/recipes-devtools/python/python/python2-manifest.json1669
-rw-r--r--meta/recipes-devtools/python/python3-dbus_1.2.8.bb (renamed from meta/recipes-devtools/python/python3-dbus_1.2.6.bb)11
-rw-r--r--meta/recipes-devtools/python/python3-extras_1.0.0.bb2
-rw-r--r--meta/recipes-devtools/python/python3-git_2.1.11.bb (renamed from meta/recipes-devtools/python/python3-git_2.1.8.bb)0
-rw-r--r--meta/recipes-devtools/python/python3-gitdb_2.0.4.bb (renamed from meta/recipes-devtools/python/python3-gitdb_2.0.3.bb)0
-rw-r--r--meta/recipes-devtools/python/python3-native_3.5.6.bb (renamed from meta/recipes-devtools/python/python3-native_3.5.5.bb)29
-rw-r--r--meta/recipes-devtools/python/python3-pbr_4.2.0.bb2
-rw-r--r--meta/recipes-devtools/python/python3-pip_18.0.bb30
-rw-r--r--meta/recipes-devtools/python/python3-pip_9.0.2.bb48
-rw-r--r--meta/recipes-devtools/python/python3-pygobject_3.28.3.bb (renamed from meta/recipes-devtools/python/python3-pygobject_3.28.1.bb)4
-rw-r--r--meta/recipes-devtools/python/python3-setuptools_40.0.0.bb (renamed from meta/recipes-devtools/python/python3-setuptools_39.0.0.bb)0
-rw-r--r--meta/recipes-devtools/python/python3-subunit_1.3.0.bb2
-rw-r--r--meta/recipes-devtools/python/python3-testtools_2.3.0.bb2
-rw-r--r--meta/recipes-devtools/python/python3.inc43
-rw-r--r--meta/recipes-devtools/python/python3/0001-Issue-28043-SSLContext-has-improved-default-settings.patch272
-rw-r--r--meta/recipes-devtools/python/python3/0001-cross-compile-support.patch96
-rw-r--r--meta/recipes-devtools/python/python3/0002-Makefile-add-target-to-split-profile-generation.patch40
-rw-r--r--meta/recipes-devtools/python/python3/0002-bpo-29136-Add-TLS-1.3-cipher-suites-and-OP_NO_TLSv1_.patch227
-rw-r--r--meta/recipes-devtools/python/python3/0003-bpo-32947-Fixes-for-TLS-1.3-and-OpenSSL-1.1.1-GH-876.patch173
-rw-r--r--meta/recipes-devtools/python/python3/0004-bpo-33570-TLS-1.3-ciphers-for-OpenSSL-1.1.1-GH-6976.patch110
-rw-r--r--meta/recipes-devtools/python/python3/0005-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-2305.patch68
-rw-r--r--meta/recipes-devtools/python/python3/Use-correct-CFLAGS-for-extensions-when-cross-compili.patch56
-rw-r--r--meta/recipes-devtools/python/python3/create_manifest3.py469
-rw-r--r--meta/recipes-devtools/python/python3/float-endian.patch212
-rw-r--r--meta/recipes-devtools/python/python3/ftplib.patch57
-rw-r--r--meta/recipes-devtools/python/python3/python3-manifest.json1325
-rw-r--r--meta/recipes-devtools/python/python3/regen-all.patch25
-rw-r--r--meta/recipes-devtools/python/python3/shutil-follow-symlink-fix.patch17
-rw-r--r--meta/recipes-devtools/python/python3/signal.patch56
-rw-r--r--meta/recipes-devtools/python/python3_3.5.6.bb (renamed from meta/recipes-devtools/python/python3_3.5.5.bb)149
-rw-r--r--meta/recipes-devtools/python/python_2.7.15.bb (renamed from meta/recipes-devtools/python/python_2.7.14.bb)11
-rw-r--r--meta/recipes-devtools/qemu/qemu-targets.inc2
-rw-r--r--meta/recipes-devtools/qemu/qemu.inc31
-rw-r--r--meta/recipes-devtools/qemu/qemu/0001-arm-translate-a64-treat-DISAS_UPDATE-as-variant-of-D.patch67
-rw-r--r--meta/recipes-devtools/qemu/qemu/0001-sdl.c-allow-user-to-disable-pointer-grabs.patch (renamed from meta/recipes-devtools/qemu/qemu/disable-grabs.patch)42
-rw-r--r--meta/recipes-devtools/qemu/qemu/0002-qemu-Add-missing-wacom-HID-descriptor.patch (renamed from meta/recipes-devtools/qemu/qemu/wacom.patch)24
-rw-r--r--meta/recipes-devtools/qemu/qemu/0003-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch (renamed from meta/recipes-devtools/qemu/qemu/add-ptest-in-makefile-v10.patch)12
-rw-r--r--meta/recipes-devtools/qemu/qemu/0004-qemu-Add-addition-environment-space-to-boot-loader-q.patch (renamed from meta/recipes-devtools/qemu/qemu/qemu-enlarge-env-entry-size.patch)17
-rw-r--r--meta/recipes-devtools/qemu/qemu/0005-qemu-disable-Valgrind.patch33
-rw-r--r--meta/recipes-devtools/qemu/qemu/0006-qemu-Limit-paths-searched-during-user-mode-emulation.patch (renamed from meta/recipes-devtools/qemu/qemu/pathlimit.patch)34
-rw-r--r--meta/recipes-devtools/qemu/qemu/0007-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch25
-rw-r--r--meta/recipes-devtools/qemu/qemu/0008-chardev-connect-socket-to-a-spawned-command.patch (renamed from meta/recipes-devtools/qemu/qemu/chardev-connect-socket-to-a-spawned-command.patch)51
-rw-r--r--meta/recipes-devtools/qemu/qemu/0009-apic-fixup-fallthrough-to-PIC.patch (renamed from meta/recipes-devtools/qemu/qemu/apic-fixup-fallthrough-to-PIC.patch)14
-rw-r--r--meta/recipes-devtools/qemu/qemu/0010-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch (renamed from meta/recipes-devtools/qemu/qemu/linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch)9
-rw-r--r--meta/recipes-devtools/qemu/qemu/0011-Revert-linux-user-fix-mmap-munmap-mprotect-mremap-sh.patch141
-rw-r--r--meta/recipes-devtools/qemu/qemu/0012-fix-libcap-header-issue-on-some-distro.patch (renamed from meta/recipes-devtools/qemu/qemu/fix-libcap-header-issue-on-some-distro.patch)15
-rw-r--r--meta/recipes-devtools/qemu/qemu/0013-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch (renamed from meta/recipes-devtools/qemu/qemu/cpus.c-qemu_cpu_kick_thread_debugging.patch)13
-rw-r--r--meta/recipes-devtools/qemu/qemu/CVE-2018-15746.patch64
-rw-r--r--meta/recipes-devtools/qemu/qemu/memfd.patch57
-rw-r--r--meta/recipes-devtools/qemu/qemu/no-valgrind.patch19
-rw-r--r--meta/recipes-devtools/qemu/qemu/qemu-2.5.0-cflags.patch15
-rw-r--r--meta/recipes-devtools/qemu/qemu_2.11.1.bb58
-rw-r--r--meta/recipes-devtools/qemu/qemu_3.0.0.bb57
-rw-r--r--meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb40
-rw-r--r--meta/recipes-devtools/quilt/quilt.inc29
-rw-r--r--meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch19
-rw-r--r--meta/recipes-devtools/rpm/files/0001-Do-not-reset-the-PATH-environment-variable-before-ru.patch12
-rw-r--r--meta/recipes-devtools/rpm/files/0001-Revert-Set-FD_CLOEXEC-on-opened-files-before-exec-fr.patch49
-rw-r--r--meta/recipes-devtools/rpm/files/0001-When-cross-installing-execute-package-scriptlets-wit.patch35
-rw-r--r--meta/recipes-devtools/rpm/files/0001-configure.ac-add-option-for-dbus.patch42
-rw-r--r--meta/recipes-devtools/rpm/files/0004-build-pack.c-remove-static-local-variables-from-buil.patch17
-rw-r--r--meta/recipes-devtools/rpm/rpm_4.14.2.bb (renamed from meta/recipes-devtools/rpm/rpm_4.14.1.bb)50
-rw-r--r--meta/recipes-devtools/rsync/rsync.inc20
-rw-r--r--meta/recipes-devtools/rsync/rsync_3.1.3.bb28
-rw-r--r--meta/recipes-devtools/ruby/ruby.inc2
-rw-r--r--meta/recipes-devtools/ruby/ruby/CVE-2018-1000073.patch34
-rw-r--r--meta/recipes-devtools/ruby/ruby_2.5.1.bb (renamed from meta/recipes-devtools/ruby/ruby_2.5.0.bb)25
-rwxr-xr-xmeta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts21
-rw-r--r--meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts.service1
-rw-r--r--meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-squashfs-tools-patch-for-CVE-2015-4645-6.patch47
-rw-r--r--meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb5
-rw-r--r--meta/recipes-devtools/strace/strace/disable-git-version-gen.patch12
-rw-r--r--meta/recipes-devtools/strace/strace/more-robust-test-for-m32-mx32-compile-support.patch22
-rw-r--r--meta/recipes-devtools/strace/strace_4.24.bb (renamed from meta/recipes-devtools/strace/strace_4.20.bb)15
-rw-r--r--meta/recipes-devtools/subversion/subversion_1.10.0.bb (renamed from meta/recipes-devtools/subversion/subversion_1.9.7.bb)45
-rw-r--r--meta/recipes-devtools/swig/swig.inc2
-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/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch36
-rw-r--r--meta/recipes-devtools/swig/swig_3.0.12.bb2
-rw-r--r--meta/recipes-devtools/tcf-agent/tcf-agent/0001-canonicalize_file_name-is-specific-to-glibc.patch46
-rw-r--r--meta/recipes-devtools/tcf-agent/tcf-agent/fix_ranlib.patch23
-rw-r--r--meta/recipes-devtools/tcf-agent/tcf-agent_git.bb8
-rw-r--r--meta/recipes-devtools/vala/vala/disable-graphviz.patch35
-rw-r--r--meta/recipes-devtools/vala/vala_0.42.0.bb (renamed from meta/recipes-devtools/vala/vala_0.38.8.bb)4
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0001-fix-opcode-not-supported-on-mips32-linux.patch82
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0002-fix-broken-inline-asm-in-tests-on-mips32-linux.patch47
-rw-r--r--meta/recipes-devtools/valgrind/valgrind_3.13.0.bb3
-rw-r--r--meta/recipes-devtools/yasm/yasm_1.3.0.bb16
-rw-r--r--meta/recipes-extended/acpica/acpica_20180508.bb (renamed from meta/recipes-extended/acpica/acpica_20170303.bb)13
-rw-r--r--meta/recipes-extended/acpica/files/0001-Linux-add-support-for-X32-ABI-compilation.patch31
-rw-r--r--meta/recipes-extended/acpica/files/manipulate-fds-instead-of-FILE.patch29
-rw-r--r--meta/recipes-extended/at/at_3.1.20.bb6
-rw-r--r--meta/recipes-extended/bash/bash.inc2
-rw-r--r--meta/recipes-extended/bash/bash/bash-memleak-bug-fix-for-builtin-command-read.patch35
-rw-r--r--meta/recipes-extended/bash/bash_4.4.12.bb24
-rw-r--r--meta/recipes-extended/bash/bash_4.4.18.bb41
-rw-r--r--meta/recipes-extended/bc/bc/libmath.h46
-rw-r--r--meta/recipes-extended/bc/bc/no-gen-libmath.patch24
-rw-r--r--meta/recipes-extended/bc/bc_1.06.bb26
-rw-r--r--meta/recipes-extended/bc/bc_1.07.1.bb33
-rw-r--r--meta/recipes-extended/bc/files/fix-segment-fault.patch28
-rw-r--r--meta/recipes-extended/blktool/blktool/0001-fix-typos-in-manpage.patch2
-rw-r--r--meta/recipes-extended/blktool/blktool/0002-fix-string-error.patch2
-rw-r--r--meta/recipes-extended/blktool/blktool/0003-Fix-3-d-argument-for-BLKROSET-it-must-be-const-int.patch2
-rw-r--r--meta/recipes-extended/blktool/blktool/blktool-gnulib-makedev.patch23
-rw-r--r--meta/recipes-extended/blktool/blktool_4-7.bb1
-rw-r--r--meta/recipes-extended/bzip2/bzip2_1.0.6.bb7
-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.bb39
-rw-r--r--meta/recipes-extended/cpio/cpio_v2.inc43
-rw-r--r--meta/recipes-extended/cronie/cronie_1.5.2.bb (renamed from meta/recipes-extended/cronie/cronie_1.5.1.bb)4
-rw-r--r--meta/recipes-extended/cups/cups.inc2
-rw-r--r--meta/recipes-extended/cups/cups_2.2.6.bb6
-rw-r--r--meta/recipes-extended/cups/cups_2.2.8.bb6
-rw-r--r--meta/recipes-extended/diffutils/diffutils_3.6.bb2
-rw-r--r--meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch21
-rw-r--r--meta/recipes-extended/ethtool/ethtool_4.17.bb (renamed from meta/recipes-extended/ethtool/ethtool_4.13.bb)4
-rw-r--r--meta/recipes-extended/findutils/findutils/0001-Unset-need_charset_alias-when-building-for-musl.patch15
-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_4.6.0.bb6
-rw-r--r--meta/recipes-extended/gawk/gawk_4.2.1.bb (renamed from meta/recipes-extended/gawk/gawk_4.2.0.bb)6
-rw-r--r--meta/recipes-extended/ghostscript/files/do-not-check-local-libpng-source.patch10
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/CVE-2017-11714.patch61
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/CVE-2017-5951.patch44
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/CVE-2017-7207.patch39
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/CVE-2017-7975.patch37
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9216.patch36
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9611.patch34
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9612.patch35
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9726.patch33
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9727.patch35
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9739.patch37
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9835.patch125
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/avoid-host-contamination.patch18
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/base-genht.c-add-a-preprocessor-define-to-allow-fope.patch14
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/cups-no-gcrypt.patch14
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-genarch.patch33
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.15-parallel-make.patch28
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.16-Werror-return-type.patch10
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.21-native-fix-disable-system-libtiff.patch32
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.21-prevent_recompiling.patch80
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/mkdir-p.patch16
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript_9.25.bb (renamed from meta/recipes-extended/ghostscript/ghostscript_9.21.bb)23
-rw-r--r--meta/recipes-extended/groff/groff_1.22.3.bb4
-rw-r--r--meta/recipes-extended/gzip/gzip-1.9/gnulib.patch189
-rw-r--r--meta/recipes-extended/gzip/gzip_1.9.bb4
-rw-r--r--meta/recipes-extended/hdparm/hdparm_9.56.bb (renamed from meta/recipes-extended/hdparm/hdparm_9.53.bb)4
-rw-r--r--meta/recipes-extended/iptables/iptables_1.6.2.bb43
-rw-r--r--meta/recipes-extended/iputils/files/0001-Fix-build-on-MUSL.patch95
-rw-r--r--meta/recipes-extended/iputils/iputils/ai_canonidn.patch58
-rw-r--r--meta/recipes-extended/iputils/iputils/install.patch26
-rw-r--r--meta/recipes-extended/iputils/iputils_s20161105.bb62
-rw-r--r--meta/recipes-extended/iputils/iputils_s20180629.bb61
-rw-r--r--meta/recipes-extended/less/less_530.bb (renamed from meta/recipes-extended/less/less_529.bb)4
-rw-r--r--meta/recipes-extended/libaio/libaio/00_arches.patch194
-rw-r--r--meta/recipes-extended/libaio/libaio/generic-arch-dectection-for-padding-defines.patch65
-rw-r--r--meta/recipes-extended/libaio/libaio/libaio_fix_for_x32.patch61
-rw-r--r--meta/recipes-extended/libaio/libaio_0.3.111.bb (renamed from meta/recipes-extended/libaio/libaio_0.3.110.bb)11
-rw-r--r--meta/recipes-extended/libarchive/libarchive/CVE-2017-14166.patch37
-rw-r--r--meta/recipes-extended/libarchive/libarchive/CVE-2017-14502.patch37
-rw-r--r--meta/recipes-extended/libarchive/libarchive/bug929.patch38
-rw-r--r--meta/recipes-extended/libarchive/libarchive_3.3.3.bb (renamed from meta/recipes-extended/libarchive/libarchive_3.3.2.bb)9
-rw-r--r--meta/recipes-extended/libidn/libidn/0001-idn-fix-printf-format-security-warnings.patch694
-rw-r--r--meta/recipes-extended/libidn/libidn/avoid_AM_PROG_MKDIR_P_warning_error_with_automake_1.12.patch25
-rw-r--r--meta/recipes-extended/libidn/libidn/gcc7-compatibility.patch334
-rw-r--r--meta/recipes-extended/libidn/libidn/libidn_fix_for_automake-1.12.patch21
-rw-r--r--meta/recipes-extended/libidn/libidn2/Unset-need_charset_alias-when-building-for-musl.patch (renamed from meta/recipes-core/coreutils/coreutils/0001-Unset-need_charset_alias-when-building-for-musl.patch)22
-rw-r--r--meta/recipes-extended/libidn/libidn2_2.0.5.bb29
-rw-r--r--meta/recipes-extended/libidn/libidn_1.35.bb (renamed from meta/recipes-extended/libidn/libidn_1.33.bb)10
-rw-r--r--meta/recipes-extended/libnsl/libnsl2/0001-include-sys-cdefs.h-explicitly.patch68
-rw-r--r--meta/recipes-extended/libnsl/libnsl2/0001-nis_call.c-Include-stdint.h-for-uintptr_t-definition.patch27
-rw-r--r--meta/recipes-extended/libnsl/libnsl2/0002-Define-glibc-specific-macros.patch57
-rw-r--r--meta/recipes-extended/libnsl/libnsl2_git.bb19
-rw-r--r--meta/recipes-extended/libnss-nis/libnss-nis.bb31
-rw-r--r--meta/recipes-extended/libsolv/libsolv_0.6.35.bb (renamed from meta/recipes-extended/libsolv/libsolv_0.6.33.bb)12
-rw-r--r--meta/recipes-extended/libtirpc/libtirpc/0001-include-stdint.h-for-uintptr_t.patch29
-rw-r--r--meta/recipes-extended/libtirpc/libtirpc/0001-replace-__bzero-with-memset-API.patch64
-rw-r--r--meta/recipes-extended/libtirpc/libtirpc/Use-netbsd-queue.h.patch878
-rw-r--r--meta/recipes-extended/libtirpc/libtirpc/export_key_secretkey_is_set.patch31
-rw-r--r--meta/recipes-extended/libtirpc/libtirpc/libtirpc-1.0.4-rc1.patch103
-rw-r--r--meta/recipes-extended/libtirpc/libtirpc/musl.patch18
-rw-r--r--meta/recipes-extended/libtirpc/libtirpc_1.0.3.bb (renamed from meta/recipes-extended/libtirpc/libtirpc_1.0.2.bb)13
-rw-r--r--meta/recipes-extended/libuser/libuser/0001-Check-for-issetugid.patch62
-rw-r--r--meta/recipes-extended/libuser/libuser/0001-modules-files.c-parse_field-fix-string-formating-in-.patch34
-rw-r--r--meta/recipes-extended/libuser/libuser/0002-remove-unused-execinfo.h.patch27
-rw-r--r--meta/recipes-extended/libuser/libuser_0.62.bb35
-rw-r--r--meta/recipes-extended/lighttpd/lighttpd_1.4.50.bb (renamed from meta/recipes-extended/lighttpd/lighttpd_1.4.48.bb)4
-rw-r--r--meta/recipes-extended/logrotate/logrotate_3.14.0.bb (renamed from meta/recipes-extended/logrotate/logrotate_3.13.0.bb)24
-rw-r--r--meta/recipes-extended/lsb/lsb_5.0.bb6
-rw-r--r--meta/recipes-extended/lsb/lsbinitscripts_9.79.bb1
-rw-r--r--meta/recipes-extended/lsof/lsof_4.91.bb (renamed from meta/recipes-extended/lsof/lsof_4.89.bb)4
-rw-r--r--meta/recipes-extended/ltp/ltp/0001-configure-Fix-default-value-of-without-numa-switch-i.patch31
-rw-r--r--meta/recipes-extended/ltp/ltp/0001-configure-add-knob-to-control-numa-support.patch50
-rw-r--r--meta/recipes-extended/ltp/ltp/0001-mmap15-mips64-return-EINVAL.patch41
-rw-r--r--meta/recipes-extended/ltp/ltp/0001-syscalls-fcntl-make-OFD-command-use-fcntl64-syscall-.patch184
-rw-r--r--meta/recipes-extended/ltp/ltp/0003-Add-knob-to-control-tirpc-support.patch46
-rw-r--r--meta/recipes-extended/ltp/ltp/0004-build-Add-option-to-select-libc-implementation.patch71
-rw-r--r--meta/recipes-extended/ltp/ltp/0008-Check-if-__GLIBC_PREREQ-is-defined-before-using-it.patch26
-rw-r--r--meta/recipes-extended/ltp/ltp/0010-replace-__BEGIN_DECLS-and-__END_DECLS.patch75
-rw-r--r--meta/recipes-extended/ltp/ltp/0021-Define-_GNU_SOURCE-for-MREMAP_MAYMOVE-definition.patch27
-rw-r--r--meta/recipes-extended/ltp/ltp/0028-rt_sigaction.h-Use-sighandler_t-instead-of-__sighand.patch20
-rw-r--r--meta/recipes-extended/ltp/ltp/0036-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch2
-rw-r--r--meta/recipes-extended/ltp/ltp/0040-read_all-Define-FNM_EXTMATCH-if-not-already-like-und.patch44
-rw-r--r--meta/recipes-extended/ltp/ltp/0040-safe_macros-make-is_fuse-return-zero-if-fs_type-is-N.patch40
-rw-r--r--meta/recipes-extended/ltp/ltp/0041-cve-2017-5669-shmat-for-0-or-PAGESIZE-with-RND-flag-.patch97
-rw-r--r--meta/recipes-extended/ltp/ltp/0042-fs-ftest-ftest06.c-Fix-too-small-name-string-and-rel.patch34
-rw-r--r--meta/recipes-extended/ltp/ltp/0043-open-creat-skip-S_ISGID-check-on-files-created-by-no.patch81
-rw-r--r--meta/recipes-extended/ltp/ltp_20180515.bb (renamed from meta/recipes-extended/ltp/ltp_20180118.bb)22
-rw-r--r--meta/recipes-extended/lzip/lzip_1.20.bb (renamed from meta/recipes-extended/lzip/lzip_1.19.bb)4
-rw-r--r--meta/recipes-extended/man-db/files/99_mandb1
-rw-r--r--meta/recipes-extended/man-db/man-db_2.8.3.bb (renamed from meta/recipes-extended/man-db/man-db_2.8.1.bb)21
-rw-r--r--meta/recipes-extended/man-pages/man-pages_4.16.bb (renamed from meta/recipes-extended/man-pages/man-pages_4.14.bb)11
-rw-r--r--meta/recipes-extended/mc/mc_4.8.21.bb (renamed from meta/recipes-extended/mc/mc_4.8.20.bb)4
-rw-r--r--meta/recipes-extended/mdadm/files/0001-Disable-gcc8-warnings.patch152
-rw-r--r--meta/recipes-extended/mdadm/files/0001-use-memmove-instead-of-memcpy-on-overlapping-region.patch31
-rw-r--r--meta/recipes-extended/mdadm/mdadm_4.0.bb4
-rw-r--r--meta/recipes-extended/mingetty/mingetty_1.08.bb1
-rw-r--r--meta/recipes-extended/minicom/minicom_2.7.1.bb4
-rw-r--r--meta/recipes-extended/mktemp/files/disable-strip.patch15
-rw-r--r--meta/recipes-extended/mktemp/files/fix-parallel-make.patch24
-rw-r--r--meta/recipes-extended/mktemp/mktemp_1.7.bb36
-rw-r--r--meta/recipes-extended/net-tools/net-tools_1.60-26.bb11
-rw-r--r--meta/recipes-extended/newt/libnewt-python_0.52.20.bb2
-rw-r--r--meta/recipes-extended/newt/libnewt_0.52.20.bb2
-rw-r--r--meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb11
-rw-r--r--meta/recipes-extended/packagegroups/packagegroup-core-lsb.bb3
-rw-r--r--meta/recipes-extended/pam/libpam_1.3.0.bb2
-rw-r--r--meta/recipes-extended/pbzip2/pbzip2/0001-pbzip2-Fix-invalid-suffix-on-literal-C-11-warning.patch73
-rw-r--r--meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb7
-rw-r--r--meta/recipes-extended/perl/libxml-sax-perl_1.00.bb (renamed from meta/recipes-extended/perl/libxml-sax-perl_0.99.bb)5
-rw-r--r--meta/recipes-extended/pixz/pixz/0001-configure-Detect-headers-before-using-them.patch51
-rw-r--r--meta/recipes-extended/pixz/pixz/0002-endian-Use-macro-bswap_64-instead-of-__bswap_64.patch47
-rw-r--r--meta/recipes-extended/pixz/pixz/936d8068ae19d95260d3058f41dd6cf718101cd6.patch68
-rw-r--r--meta/recipes-extended/pixz/pixz_1.0.6.bb25
-rw-r--r--meta/recipes-extended/procps/procps/0001-Fix-out-of-tree-builds.patch24
-rw-r--r--meta/recipes-extended/procps/procps_3.3.15.bb (renamed from meta/recipes-extended/procps/procps_3.3.12.bb)9
-rw-r--r--meta/recipes-extended/psmisc/psmisc_23.1.bb (renamed from meta/recipes-extended/psmisc/psmisc_23.0.bb)2
-rw-r--r--meta/recipes-extended/rpcbind/rpcbind/rpcbind_add_option_to_fix_port_number.patch130
-rw-r--r--meta/recipes-extended/rpcbind/rpcbind_0.2.4.bb1
-rw-r--r--meta/recipes-extended/rpcsvc-proto/rpcsvc-proto.bb37
-rw-r--r--meta/recipes-extended/rpcsvc-proto/rpcsvc-proto/0001-Use-cross-compiled-rpcgen.patch23
-rw-r--r--meta/recipes-extended/screen/screen_4.6.2.bb2
-rw-r--r--meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch21
-rw-r--r--meta/recipes-extended/shadow/files/0001-Do-not-read-login.defs-before-doing-chroot.patch46
-rw-r--r--meta/recipes-extended/shadow/files/0001-shadow-CVE-2017-1242446
-rw-r--r--meta/recipes-extended/shadow/files/0001-useradd-copy-extended-attributes-of-home.patch28
-rw-r--r--meta/recipes-extended/shadow/files/0001-useradd.c-create-parent-directories-when-necessary.patch83
-rw-r--r--meta/recipes-extended/shadow/files/allow-for-setting-password-in-clear-text.patch181
-rw-r--r--meta/recipes-extended/shadow/files/check_size_of_uid_t_and_gid_t_using_AC_CHECK_SIZEOF.patch41
-rw-r--r--meta/recipes-extended/shadow/files/fix-installation-failure-with-subids-disabled.patch28
-rw-r--r--meta/recipes-extended/shadow/files/pam.d/chpasswd2
-rw-r--r--meta/recipes-extended/shadow/files/pam.d/newusers2
-rw-r--r--meta/recipes-extended/shadow/files/usermod-fix-compilation-failure-with-subids-disabled.patch33
-rw-r--r--meta/recipes-extended/shadow/shadow-securetty_4.6.bb (renamed from meta/recipes-extended/shadow/shadow-securetty_4.2.1.bb)0
-rw-r--r--meta/recipes-extended/shadow/shadow-sysroot_4.6.bb (renamed from meta/recipes-extended/shadow/shadow-sysroot_4.2.1.bb)0
-rw-r--r--meta/recipes-extended/shadow/shadow.inc15
-rw-r--r--meta/recipes-extended/shadow/shadow_4.6.bb (renamed from meta/recipes-extended/shadow/shadow_4.2.1.bb)0
-rw-r--r--meta/recipes-extended/slang/slang_2.3.2.bb2
-rw-r--r--meta/recipes-extended/sudo/sudo.inc6
-rw-r--r--meta/recipes-extended/sudo/sudo_1.8.23.bb (renamed from meta/recipes-extended/sudo/sudo_1.8.22.bb)14
-rw-r--r--meta/recipes-extended/sysklogd/sysklogd.inc9
-rw-r--r--meta/recipes-extended/sysstat/sysstat_11.7.4.bb (renamed from meta/recipes-extended/sysstat/sysstat_11.7.1.bb)4
-rw-r--r--meta/recipes-extended/tar/tar.inc52
-rw-r--r--meta/recipes-extended/tar/tar_1.30.bb72
-rw-r--r--meta/recipes-extended/tcp-wrappers/tcp-wrappers_7.6.bb2
-rw-r--r--meta/recipes-extended/time/time_1.9.bb (renamed from meta/recipes-extended/time/time_1.8.bb)4
-rw-r--r--meta/recipes-extended/tzcode/tzcode-native_2018e.bb (renamed from meta/recipes-extended/tzcode/tzcode-native_2018d.bb)8
-rw-r--r--meta/recipes-extended/tzdata/tzdata_2018e.bb (renamed from meta/recipes-extended/tzdata/tzdata_2018d.bb)6
-rw-r--r--meta/recipes-extended/unzip/unzip/0001-unzip-fix-CVE-2018-1000035.patch48
-rw-r--r--meta/recipes-extended/unzip/unzip/symlink.patch26
-rw-r--r--meta/recipes-extended/unzip/unzip_6.0.bb4
-rw-r--r--meta/recipes-extended/watchdog/watchdog/watchdog-conf.patch16
-rw-r--r--meta/recipes-extended/watchdog/watchdog/watchdog-init.patch56
-rw-r--r--meta/recipes-extended/watchdog/watchdog/watchdog.init110
-rw-r--r--meta/recipes-extended/watchdog/watchdog_5.15.bb25
-rw-r--r--meta/recipes-extended/wget/wget_1.19.5.bb (renamed from meta/recipes-extended/wget/wget_1.19.4.bb)4
-rw-r--r--meta/recipes-extended/xdg-utils/xdg-utils_1.1.3.bb (renamed from meta/recipes-extended/xdg-utils/xdg-utils_1.1.2.bb)4
-rw-r--r--meta/recipes-extended/xinetd/xinetd/xinetd.service5
-rw-r--r--meta/recipes-extended/xinetd/xinetd_2.3.15.bb7
-rw-r--r--meta/recipes-extended/xz/xz_5.2.4.bb (renamed from meta/recipes-extended/xz/xz_5.2.3.bb)15
-rw-r--r--meta/recipes-gnome/epiphany/epiphany_3.28.3.1.bb (renamed from meta/recipes-gnome/epiphany/epiphany_3.26.6.bb)10
-rw-r--r--meta/recipes-gnome/epiphany/files/0002-help-meson.build-disable-the-use-of-yelp.patch20
-rw-r--r--meta/recipes-gnome/gcr/files/gcr-add-missing-dependencies-for-vapi.patch51
-rw-r--r--meta/recipes-gnome/gcr/gcr_3.28.0.bb (renamed from meta/recipes-gnome/gcr/gcr_3.20.0.bb)16
-rw-r--r--meta/recipes-gnome/gnome-desktop/gnome-desktop/0001-Disable-libseccomp-sycall-filtering-mechanism.patch38
-rw-r--r--meta/recipes-gnome/gnome-desktop/gnome-desktop/0001-configure.ac-Remove-gnome-common-macro-calls.patch33
-rw-r--r--meta/recipes-gnome/gnome-desktop/gnome-desktop/gnome-desktop-thumbnail-don-t-assume-time_t-is-long.patch61
-rw-r--r--meta/recipes-gnome/gnome-desktop/gnome-desktop3_3.26.2.bb29
-rw-r--r--meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Don-t-use-AC_CANONICAL_HOST.patch14
-rw-r--r--meta/recipes-gnome/gnome/adwaita-icon-theme_3.28.0.bb (renamed from meta/recipes-gnome/gnome/adwaita-icon-theme_3.26.1.bb)4
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Relocate-the-repository-directory-for-native-builds.patch62
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Revert-an-incomplete-upstream-attempt-at-cross-compi.patch12
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-a-lib-dirs-envvar-option.patch21
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch27
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0002-configure.ac-add-host-gi-gi-cross-wrapper-gi-ldd-wra.patch43
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0003-giscanner-add-use-binary-wrapper-option.patch14
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0004-giscanner-add-a-use-ldd-wrapper-option.patch16
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0005-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch18
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection_1.58.0.bb (renamed from meta/recipes-gnome/gobject-introspection/gobject-introspection_1.54.1.bb)111
-rw-r--r--meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.28.0.bb (renamed from meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.24.1.bb)4
-rw-r--r--meta/recipes-gnome/gtk+/gtk+.inc4
-rw-r--r--meta/recipes-gnome/gtk+/gtk+/0001-Do-not-look-into-HOME-when-looking-for-gtk-modules.patch29
-rw-r--r--meta/recipes-gnome/gtk+/gtk+3.inc4
-rw-r--r--meta/recipes-gnome/gtk+/gtk+3_3.22.30.bb (renamed from meta/recipes-gnome/gtk+/gtk+3_3.22.28.bb)4
-rw-r--r--meta/recipes-gnome/gtk+/gtk+_2.24.32.bb3
-rw-r--r--meta/recipes-gnome/gtk+/gtk-icon-utils-native_3.22.30.bb (renamed from meta/recipes-gnome/gtk+/gtk-icon-utils-native_3.22.28.bb)4
-rw-r--r--meta/recipes-gnome/gtk-doc/files/0001-Do-not-hardocode-paths-to-perl-python-in-scripts.patch25
-rw-r--r--meta/recipes-gnome/gtk-doc/files/no-clobber.patch23
-rw-r--r--meta/recipes-gnome/gtk-doc/files/pkg-config-native.patch12
-rw-r--r--meta/recipes-gnome/gtk-doc/gtk-doc_1.29.bb (renamed from meta/recipes-gnome/gtk-doc/gtk-doc_1.27.bb)4
-rw-r--r--meta/recipes-gnome/libsecret/libsecret_0.18.6.bb (renamed from meta/recipes-gnome/libsecret/libsecret_0.18.5.bb)8
-rw-r--r--meta/recipes-graphics/cairo/cairo-fpu.inc6
-rw-r--r--meta/recipes-graphics/cairo/cairo.inc48
-rw-r--r--meta/recipes-graphics/cairo/cairo_1.14.12.bb79
-rw-r--r--meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb8
-rw-r--r--meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.26.bb (renamed from meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.24.bb)4
-rw-r--r--meta/recipes-graphics/drm/libdrm/0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch53
-rw-r--r--meta/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch24
-rw-r--r--meta/recipes-graphics/drm/libdrm/installtests.patch25
-rw-r--r--meta/recipes-graphics/drm/libdrm/musl-ioctl.patch35
-rw-r--r--meta/recipes-graphics/drm/libdrm_2.4.94.bb (renamed from meta/recipes-graphics/drm/libdrm_2.4.91.bb)43
-rw-r--r--meta/recipes-graphics/eglinfo/eglinfo.inc9
-rw-r--r--meta/recipes-graphics/eglinfo/files/0001-Check-for-libegl-using-pkg-config.patch31
-rwxr-xr-xmeta/recipes-graphics/eglinfo/files/waf169
-rw-r--r--meta/recipes-graphics/fontconfig/fontconfig_2.12.6.bb8
-rw-r--r--meta/recipes-graphics/freetype/freetype_2.9.1.bb (renamed from meta/recipes-graphics/freetype/freetype_2.9.bb)12
-rw-r--r--meta/recipes-graphics/fstests/fstests_git.bb19
-rw-r--r--meta/recipes-graphics/harfbuzz/harfbuzz_1.8.8.bb (renamed from meta/recipes-graphics/harfbuzz/harfbuzz_1.7.5.bb)13
-rw-r--r--meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch32
-rw-r--r--meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-wrongly-defined-define-HAVE_STDLIB.patch119
-rw-r--r--meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.0.bb (renamed from meta/recipes-graphics/jpeg/libjpeg-turbo_1.5.3.bb)31
-rw-r--r--meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch10
-rw-r--r--meta/recipes-graphics/kmscube/kmscube_git.bb2
-rw-r--r--meta/recipes-graphics/libepoxy/libepoxy/no-tests.patch33
-rw-r--r--meta/recipes-graphics/libepoxy/libepoxy_1.5.2.bb (renamed from meta/recipes-graphics/libepoxy/libepoxy_1.5.0.bb)5
-rw-r--r--meta/recipes-graphics/libsdl2/libsdl2/0001-GLES2-Get-sin-cos-out-of-vertex-shader.patch141
-rw-r--r--meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch47
-rw-r--r--meta/recipes-graphics/libsdl2/libsdl2_2.0.8.bb12
-rw-r--r--meta/recipes-graphics/libva/libva-utils_2.2.0.bb (renamed from meta/recipes-graphics/libva/libva-utils_2.1.0.bb)4
-rw-r--r--meta/recipes-graphics/libva/libva_2.2.0.bb (renamed from meta/recipes-graphics/libva/libva_2.1.0.bb)4
-rw-r--r--meta/recipes-graphics/mesa/files/0001-Makefile.vulkan.am-explictly-add-lib-expat-to-intel-.patch42
-rw-r--r--meta/recipes-graphics/mesa/files/0001-Simplify-wayland-scanner-lookup.patch39
-rw-r--r--meta/recipes-graphics/mesa/files/0001-Use-wayland-scanner-in-the-path.patch34
-rw-r--r--meta/recipes-graphics/mesa/files/0001-st-dri-Initialise-modifier-to-INVALID-for-DRI2.patch43
-rw-r--r--meta/recipes-graphics/mesa/files/0002-hardware-gloat.patch51
-rw-r--r--meta/recipes-graphics/mesa/files/0002-winsys-svga-drm-Include-sys-types.h.patch (renamed from meta/recipes-graphics/mesa/files/0001-winsys-svga-drm-Include-sys-types.h.patch)14
-rw-r--r--meta/recipes-graphics/mesa/files/0003-Properly-get-LLVM-version-when-using-LLVM-Git-releas.patch (renamed from meta/recipes-graphics/mesa/files/llvm-config-version.patch)13
-rw-r--r--meta/recipes-graphics/mesa/files/0004-Use-Python-3-to-execute-the-scripts.patch (renamed from meta/recipes-graphics/mesa/files/Use-Python-3-to-execute-the-scripts.patch)12
-rw-r--r--meta/recipes-graphics/mesa/files/0005-dri-i965-Add-missing-time.h-include.patch36
-rw-r--r--meta/recipes-graphics/mesa/files/0006-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch37
-rw-r--r--meta/recipes-graphics/mesa/files/disable-asm-on-non-gcc.patch29
-rw-r--r--meta/recipes-graphics/mesa/mesa-gl_18.1.9.bb (renamed from meta/recipes-graphics/mesa/mesa-gl_17.3.8.bb)0
-rw-r--r--meta/recipes-graphics/mesa/mesa.inc25
-rw-r--r--meta/recipes-graphics/mesa/mesa_17.3.8.bb23
-rw-r--r--meta/recipes-graphics/mesa/mesa_18.1.9.bb21
-rw-r--r--meta/recipes-graphics/pango/pango/0001-Drop-introspection-macros-from-acinclude.m4.patch120
-rw-r--r--meta/recipes-graphics/pango/pango_1.42.4.bb (renamed from meta/recipes-graphics/pango/pango_1.40.14.bb)11
-rw-r--r--meta/recipes-graphics/piglit/piglit_git.bb4
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch51
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-demos/0001-Fix-build-on-x86.patch41
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-demos/0001-Support-installing-demos-support-out-of-tree-builds.patch85
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-demos_git.bb11
-rw-r--r--meta/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch110
-rw-r--r--meta/recipes-graphics/vulkan/vulkan_1.1.73.0.bb (renamed from meta/recipes-graphics/vulkan/vulkan_1.0.65.2.bb)7
-rw-r--r--meta/recipes-graphics/wayland/libinput_1.11.3.bb (renamed from meta/recipes-graphics/wayland/libinput_1.9.4.bb)6
-rw-r--r--meta/recipes-graphics/wayland/wayland-protocols_1.16.bb (renamed from meta/recipes-graphics/wayland/wayland-protocols_1.13.bb)6
-rw-r--r--meta/recipes-graphics/wayland/wayland_1.16.0.bb (renamed from meta/recipes-graphics/wayland/wayland_1.14.0.bb)6
-rw-r--r--meta/recipes-graphics/wayland/weston-init/weston.service1
-rw-r--r--meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch44
-rw-r--r--meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch49
-rw-r--r--meta/recipes-graphics/wayland/weston/fix-missing-header.patch30
-rw-r--r--meta/recipes-graphics/wayland/weston/weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch55
-rw-r--r--meta/recipes-graphics/wayland/weston_5.0.0.bb (renamed from meta/recipes-graphics/wayland/weston_3.0.0.bb)26
-rw-r--r--meta/recipes-graphics/xorg-app/mkfontscale_1.1.3.bb (renamed from meta/recipes-graphics/xorg-app/mkfontscale_1.1.2.bb)6
-rw-r--r--meta/recipes-graphics/xorg-app/rgb_1.0.6.bb2
-rw-r--r--meta/recipes-graphics/xorg-app/xev_1.2.2.bb2
-rw-r--r--meta/recipes-graphics/xorg-app/xeyes_1.1.2.bb (renamed from meta/recipes-graphics/xorg-app/xeyes_1.1.1.bb)4
-rw-r--r--meta/recipes-graphics/xorg-app/xinit_1.4.0.bb (renamed from meta/recipes-graphics/xorg-app/xinit_1.3.4.bb)4
-rw-r--r--meta/recipes-graphics/xorg-app/xkbcomp_1.4.2.bb (renamed from meta/recipes-graphics/xorg-app/xkbcomp_1.4.0.bb)6
-rw-r--r--meta/recipes-graphics/xorg-app/xprop_1.2.3.bb (renamed from meta/recipes-graphics/xorg-app/xprop_1.2.2.bb)4
-rw-r--r--meta/recipes-graphics/xorg-app/xset_1.2.4.bb (renamed from meta/recipes-graphics/xorg-app/xset_1.2.3.bb)4
-rw-r--r--meta/recipes-graphics/xorg-app/xwininfo_1.1.4.bb (renamed from meta/recipes-graphics/xorg-app/xwininfo_1.1.3.bb)4
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.10.6.bb (renamed from meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.10.5.bb)5
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.28.0.bb (renamed from meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.26.0.bb)4
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.9.3.bb (renamed from meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.9.2.bb)4
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.1.bb (renamed from meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.0.bb)4
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-fbdev_0.5.0.bb (renamed from meta/recipes-graphics/xorg-driver/xf86-video-fbdev_0.4.4.bb)4
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-intel/always_include_xorg_server.h.patch24
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-intel/disable-x11-dri3.patch17
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-intel/glibc.patch25
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb15
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-omap_0.4.5.bb41
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-Prevents-omapfb-from-from-crashing-when-pixelclock-o.patch37
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-Revert-Set-a-large-CRTC-upper-limit-to-not-prune-lar.patch41
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch32
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0003-force-plain-mode.patch31
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0004-blacklist-tv-out.patch33
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0005-Attempt-to-fix-VRFB.patch325
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0006-omapfb-port-to-new-xserver-video-API.patch272
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0007-always_include_xorg_server.h.patch48
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb37
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.4.0.bb (renamed from meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.3.4.bb)8
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-vmware_13.3.0.bb (renamed from meta/recipes-graphics/xorg-driver/xf86-video-vmware_13.2.1.bb)6
-rw-r--r--meta/recipes-graphics/xorg-driver/xorg-driver-common.inc2
-rw-r--r--meta/recipes-graphics/xorg-driver/xorg-driver-input.inc2
-rw-r--r--meta/recipes-graphics/xorg-driver/xorg-driver-video.inc2
-rw-r--r--meta/recipes-graphics/xorg-lib/libdmx_1.1.4.bb (renamed from meta/recipes-graphics/xorg-lib/libdmx_1.1.3.bb)6
-rw-r--r--meta/recipes-graphics/xorg-lib/libfontenc_1.1.3.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libice/CVE-2017-2626.patch149
-rw-r--r--meta/recipes-graphics/xorg-lib/libice_1.0.9.bb4
-rw-r--r--meta/recipes-graphics/xorg-lib/libpciaccess_0.14.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libsm_1.2.2.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11-diet_1.6.6.bb (renamed from meta/recipes-graphics/xorg-lib/libx11-diet_1.6.5.bb)8
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11.inc6
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11/X18NCMSstubs.patch (renamed from meta/recipes-graphics/xorg-lib/libx11/X18NCMSstubs.diff)159
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.diff17
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.patch32
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11/fix-utf8-wrong-define.patch29
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11_1.6.6.bb (renamed from meta/recipes-graphics/xorg-lib/libx11_1.6.5.bb)4
-rw-r--r--meta/recipes-graphics/xorg-lib/libxau_1.0.8.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxcalibrate/fix-xcb.patch29
-rw-r--r--meta/recipes-graphics/xorg-lib/libxcalibrate_git.bb23
-rw-r--r--meta/recipes-graphics/xorg-lib/libxcb/Fix-inconsistent-use-of-tabs-vs.-space.patch62
-rw-r--r--meta/recipes-graphics/xorg-lib/libxcb_1.13.bb (renamed from meta/recipes-graphics/xorg-lib/libxcb_1.12.bb)8
-rw-r--r--meta/recipes-graphics/xorg-lib/libxcomposite_0.4.4.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxdamage_1.1.4.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxdmcp_1.1.2.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxfixes_5.0.3.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxfont2_2.0.3.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxi_1.7.9.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxinerama_1.1.4.bb (renamed from meta/recipes-graphics/xorg-lib/libxinerama_1.1.3.bb)6
-rw-r--r--meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.2.bb (renamed from meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.0.bb)4
-rw-r--r--meta/recipes-graphics/xorg-lib/libxkbfile_1.0.9.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxrandr_1.5.1.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.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.3.bb (renamed from meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.2.bb)6
-rw-r--r--meta/recipes-graphics/xorg-lib/libxshmfence/extensions.patch17
-rw-r--r--meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb (renamed from meta/recipes-graphics/xorg-lib/libxshmfence_1.2.bb)6
-rw-r--r--meta/recipes-graphics/xorg-lib/libxt_1.1.5.bb2
-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/libxvmc_1.0.10.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.4.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.4.bb (renamed from meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.3.bb)7
-rw-r--r--meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.4.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/xkeyboard-config_2.24.bb (renamed from meta/recipes-graphics/xorg-lib/xkeyboard-config_2.22.bb)4
-rw-r--r--meta/recipes-graphics/xorg-lib/xtrans/multilibfix.patch18
-rw-r--r--meta/recipes-graphics/xorg-lib/xtrans_1.3.5.bb2
-rw-r--r--meta/recipes-graphics/xorg-proto/bigreqsproto_1.1.2.bb16
-rw-r--r--meta/recipes-graphics/xorg-proto/calibrateproto/fix.patch42
-rw-r--r--meta/recipes-graphics/xorg-proto/calibrateproto_git.bb21
-rw-r--r--meta/recipes-graphics/xorg-proto/compositeproto_0.4.2.bb21
-rw-r--r--meta/recipes-graphics/xorg-proto/damageproto_1.2.1.bb20
-rw-r--r--meta/recipes-graphics/xorg-proto/dmxproto_2.3.1.bb18
-rw-r--r--meta/recipes-graphics/xorg-proto/dri2proto_2.8.bb15
-rw-r--r--meta/recipes-graphics/xorg-proto/dri3proto_1.0.bb14
-rw-r--r--meta/recipes-graphics/xorg-proto/fixesproto_5.0.bb22
-rw-r--r--meta/recipes-graphics/xorg-proto/fontsproto_2.1.3.bb18
-rw-r--r--meta/recipes-graphics/xorg-proto/glproto_1.4.17.bb18
-rw-r--r--meta/recipes-graphics/xorg-proto/inputproto_2.3.2.bb22
-rw-r--r--meta/recipes-graphics/xorg-proto/kbproto_1.0.7.bb18
-rw-r--r--meta/recipes-graphics/xorg-proto/presentproto_git.bb22
-rw-r--r--meta/recipes-graphics/xorg-proto/randrproto_1.5.0.bb19
-rw-r--r--meta/recipes-graphics/xorg-proto/recordproto_1.14.2.bb18
-rw-r--r--meta/recipes-graphics/xorg-proto/renderproto_0.11.1.bb21
-rw-r--r--meta/recipes-graphics/xorg-proto/resourceproto_1.2.0.bb19
-rw-r--r--meta/recipes-graphics/xorg-proto/scrnsaverproto_1.2.2.bb19
-rw-r--r--meta/recipes-graphics/xorg-proto/videoproto_2.3.3.bb14
-rw-r--r--meta/recipes-graphics/xorg-proto/xcb-proto/0001-Make-whitespace-use-consistent.patch215
-rw-r--r--meta/recipes-graphics/xorg-proto/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch75
-rw-r--r--meta/recipes-graphics/xorg-proto/xcb-proto_1.13.bb (renamed from meta/recipes-graphics/xorg-proto/xcb-proto_1.12.bb)10
-rw-r--r--meta/recipes-graphics/xorg-proto/xcmiscproto_1.2.2.bb17
-rw-r--r--meta/recipes-graphics/xorg-proto/xextproto_7.3.0.bb24
-rw-r--r--meta/recipes-graphics/xorg-proto/xf86dgaproto_2.1.bb18
-rw-r--r--meta/recipes-graphics/xorg-proto/xf86driproto_2.1.1.bb17
-rw-r--r--meta/recipes-graphics/xorg-proto/xf86miscproto_0.9.3.bb17
-rw-r--r--meta/recipes-graphics/xorg-proto/xf86vidmodeproto_2.3.1.bb18
-rw-r--r--meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb19
-rw-r--r--meta/recipes-graphics/xorg-proto/xorgproto/0001-Remove-libdir-specification.patch468
-rw-r--r--meta/recipes-graphics/xorg-proto/xorgproto_2018.4.bb16
-rw-r--r--meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch24
-rw-r--r--meta/recipes-graphics/xorg-proto/xproto_7.0.31.bb19
-rw-r--r--meta/recipes-graphics/xorg-util/gccmakedep_1.0.3.bb21
-rw-r--r--meta/recipes-graphics/xorg-util/makedepend_1.0.5.bb2
-rw-r--r--meta/recipes-graphics/xorg-util/util-macros_1.19.2.bb (renamed from meta/recipes-graphics/xorg-util/util-macros_1.19.1.bb)4
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf1
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg.inc15
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch61
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-Remove-check-for-useSIGIO-option.patch47
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-modesetting-Fix-16-bit-depth-bpp-mode.patch46
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg/macro_tweak.patch25
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg/pkgconfig.patch34
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.1.bb (renamed from meta/recipes-graphics/xorg-xserver/xserver-xorg_1.19.6.bb)8
-rw-r--r--meta/recipes-kernel/blktrace/blktrace/CVE-2018-10689.patch150
-rw-r--r--meta/recipes-kernel/blktrace/blktrace_git.bb1
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev-module_1.9.bb4
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev-tests_1.9.bb3
-rw-r--r--meta/recipes-kernel/cryptodev/files/0001-Port-tests-to-openssl-1.1.patch103
-rw-r--r--meta/recipes-kernel/cryptodev/files/0001-ioctl.c-Fix-build-with-linux-4.17.patch43
-rw-r--r--meta/recipes-kernel/cryptodev/files/0001-refactoring-split-big-function-to-simplify-maintaina.patch250
-rw-r--r--meta/recipes-kernel/cryptodev/files/0002-refactoring-relocate-code-to-simplify-later-patches.patch64
-rw-r--r--meta/recipes-kernel/cryptodev/files/0003-convert-to-new-AEAD-interface-in-kernels-v4.2.patch102
-rw-r--r--meta/recipes-kernel/dtc/dtc.inc1
-rw-r--r--meta/recipes-kernel/dtc/dtc/0001-checks-Use-proper-format-modifier-for-size_t.patch43
-rw-r--r--meta/recipes-kernel/dtc/dtc/make_install.patch23
-rw-r--r--meta/recipes-kernel/dtc/dtc_1.4.7.bb (renamed from meta/recipes-kernel/dtc/dtc_1.4.5.bb)2
-rw-r--r--meta/recipes-kernel/kern-tools/kern-tools-native_git.bb2
-rw-r--r--meta/recipes-kernel/kexec/kexec-tools/0001-kexec-fix-for-Unhandled-rela-relocation-R_X86_64_PLT.patch41
-rw-r--r--meta/recipes-kernel/kexec/kexec-tools/kdump.service2
-rw-r--r--meta/recipes-kernel/kexec/kexec-tools_2.0.17.bb (renamed from meta/recipes-kernel/kexec/kexec-tools_2.0.16.bb)12
-rw-r--r--meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb1
-rw-r--r--meta/recipes-kernel/kmod/kmod_git.bb4
-rw-r--r--meta/recipes-kernel/linux-firmware/linux-firmware_git.bb218
-rw-r--r--meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc17
-rw-r--r--meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-include-linux-stddef.h-in-swab.h-uapi-header.patch44
-rw-r--r--meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.18.bb (renamed from meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.15.7.bb)6
-rw-r--r--meta/recipes-kernel/linux/kernel-devsrc.bb245
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-dev.bb6
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-rt_4.12.bb38
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-rt_4.14.bb8
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-rt_4.18.bb (renamed from meta/recipes-kernel/linux/linux-yocto-rt_4.15.bb)16
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-tiny_4.12.bb25
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-tiny_4.14.bb6
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-tiny_4.18.bb (renamed from meta/recipes-kernel/linux/linux-yocto-tiny_4.15.bb)14
-rw-r--r--meta/recipes-kernel/linux/linux-yocto.inc7
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_4.12.bb46
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_4.14.bb20
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_4.15.bb47
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_4.18.bb48
-rw-r--r--meta/recipes-kernel/lttng/babeltrace_1.5.6.bb (renamed from meta/recipes-kernel/lttng/babeltrace_1.5.4.bb)13
-rw-r--r--meta/recipes-kernel/lttng/lttng-modules/0001-Fix-btrfs-Remove-unnecessary-fs_info-parameter.patch116
-rw-r--r--meta/recipes-kernel/lttng/lttng-modules_2.10.7.bb (renamed from meta/recipes-kernel/lttng/lttng-modules_2.10.5.bb)5
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/0001-Allow-multiple-attempts-to-connect-to-relayd.patch43
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/lttng-sessiond.service9
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools_2.9.5.bb13
-rw-r--r--meta/recipes-kernel/perf/perf-perl.inc7
-rw-r--r--meta/recipes-kernel/perf/perf.bb55
-rw-r--r--meta/recipes-kernel/sysprof/files/0001-Do-not-build-anything-in-help-as-it-requires-itstool.patch13
-rw-r--r--meta/recipes-kernel/sysprof/files/0001-fix-non-literal-format-string-issues.patch34
-rw-r--r--meta/recipes-kernel/sysprof/files/wordsize.patch38
-rw-r--r--meta/recipes-kernel/sysprof/sysprof_3.30.0.bb (renamed from meta/recipes-kernel/sysprof/sysprof_3.26.1.bb)11
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-Added-a-couple-of-small-sysroot-fixes.patch42
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-Delay-adding-sysroot-path-to-module-name-in-case-of-.patch61
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-Fix-PR22551-by-updating-the-use-of-timers-for-the-4..patch277
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-Fixes-for-gcc-8.patch215
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-Install-python-modules-to-correct-library-dir.patch36
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-Make-sure-sysroot-paths-don-t-end-with-a-slash.patch128
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-Use-sysroot-when-looking-for-the-System.map-file.patch29
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-_stp_umodule_relocate-needs-target-file-path-not-hos.patch39
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-buildrun-remove-quotes-around-I-include-line.patch38
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-debuginfo-lookup-with-sysroot-case-do-not-remove-sys.patch42
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-dwflpp-function_entrypc-avoid-usage-of-uninitialized.patch46
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-improve-reproducibility-for-c-compiling.patch31
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-sysroot-fix-short-release-r-option-handling-follow-u.patch40
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-sysroot-fix-short-release-r-option-handling.patch53
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-sysroot-handle-symbolic-links-with-absolute-name-rel.patch117
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/monitor-option.patch15
-rw-r--r--meta/recipes-kernel/systemtap/systemtap_git.bb8
-rw-r--r--meta/recipes-kernel/systemtap/systemtap_git.inc17
-rw-r--r--meta/recipes-kernel/trace-cmd/kernelshark_git.bb33
-rw-r--r--meta/recipes-kernel/trace-cmd/trace-cmd.inc13
-rw-r--r--meta/recipes-kernel/trace-cmd/trace-cmd/0001-Include-limits.h-so-that-PATH_MAX-is-defined-an-issu.patch27
-rw-r--r--meta/recipes-kernel/trace-cmd/trace-cmd/blktrace-api-compatibility.patch29
-rw-r--r--meta/recipes-kernel/trace-cmd/trace-cmd_git.bb34
-rw-r--r--meta/recipes-multimedia/alsa/alsa-fpu.inc4
-rw-r--r--meta/recipes-multimedia/alsa/alsa-lib_1.1.5.bb40
-rw-r--r--meta/recipes-multimedia/alsa/alsa-lib_1.1.6.bb41
-rw-r--r--meta/recipes-multimedia/alsa/alsa-plugins_1.1.6.bb (renamed from meta/recipes-multimedia/alsa/alsa-plugins_1.1.5.bb)8
-rw-r--r--meta/recipes-multimedia/alsa/alsa-tools/0002-Fix-clang-Wreserved-user-defined-literal-warnings.patch34
-rw-r--r--meta/recipes-multimedia/alsa/alsa-tools/autotools.patch32
-rwxr-xr-xmeta/recipes-multimedia/alsa/alsa-tools/gitcompile_hdajacksensetest13
-rw-r--r--meta/recipes-multimedia/alsa/alsa-tools/makefile_no_gtk.patch29
-rw-r--r--meta/recipes-multimedia/alsa/alsa-tools/musl.patch47
-rw-r--r--meta/recipes-multimedia/alsa/alsa-tools_1.1.5.bb40
-rw-r--r--meta/recipes-multimedia/alsa/alsa-tools_1.1.6.bb87
-rw-r--r--meta/recipes-multimedia/alsa/alsa-utils-scripts_1.1.6.bb (renamed from meta/recipes-multimedia/alsa/alsa-utils-scripts_1.1.5.bb)0
-rw-r--r--meta/recipes-multimedia/alsa/alsa-utils/0001-alsactl-don-t-let-systemd-unit-restore-the-volume-wh.patch56
-rw-r--r--meta/recipes-multimedia/alsa/alsa-utils_1.1.6.bb (renamed from meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb)18
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2018-15822.patch37
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg_4.0.2.bb (renamed from meta/recipes-multimedia/ffmpeg/ffmpeg_3.4.2.bb)11
-rw-r--r--meta/recipes-multimedia/flac/flac/CVE-2017-6888.patch37
-rw-r--r--meta/recipes-multimedia/flac/flac_1.3.2.bb4
-rw-r--r--meta/recipes-multimedia/gstreamer/files/0001-connect-has-a-different-signature-on-musl.patch38
-rw-r--r--meta/recipes-multimedia/gstreamer/files/0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch12
-rw-r--r--meta/recipes-multimedia/gstreamer/files/add-a-target-to-compile-tests.patch69
-rw-r--r--meta/recipes-multimedia/gstreamer/files/run-ptest3
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-validate_1.14.2.bb (renamed from meta/recipes-multimedia/gstreamer/gst-validate_1.12.4.bb)10
-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/0001-hevcpred_msa.c-Fix-build-by-Including-libavcodec-hev.patch33
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.12.4.bb21
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.14.2.bb (renamed from meta/recipes-multimedia/gstreamer/gstreamer1.0-libav.inc)21
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.12.4.bb11
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.14.2.bb (renamed from meta/recipes-multimedia/gstreamer/gstreamer1.0-omx.inc)10
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch51
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-vkdisplay-Use-ifdef-for-platform-specific-defines.patch37
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-vulkan-Use-the-generated-version-of-vkconfig.h.patch64
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.12.4.bb24
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.2.bb (renamed from meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc)79
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc50
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch73
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch (renamed from meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch)8
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch159
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-riff-add-missing-include-directories-when-calling-in.patch12
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-ssaparse-enhance-SSA-text-lines-parsing.patch24
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch12
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch69
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-glimagesink-Downrank-to-marginal.patch (renamed from meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0009-glimagesink-Downrank-to-marginal.patch)0
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0010-gl-Add-switch-for-explicitely-enabling-disabling-GBM.patch70
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0011-gl-Add-switches-for-explicitely-enabling-disabling-P.patch109
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch12
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/link-with-libvchostif.patch (renamed from meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/link-with-libvchostif.patch)26
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/make-gio_unix_2_0-dependency-configurable.patch12
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.12.4.bb18
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.2.bb76
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.12.4.bb20
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.2.bb (renamed from meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc)37
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.12.4.bb13
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.14.2.bb (renamed from meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly.inc)17
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.12.4.bb7
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.14.2.bb (renamed from meta/recipes-multimedia/gstreamer/gstreamer1.0-python.inc)6
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.12.4.bb6
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.14.2.bb (renamed from meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server.inc)8
-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_1.12.4.bb5
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.14.2.bb (renamed from meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi.inc)8
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0_1.12.4.bb14
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0_1.14.2.bb (renamed from meta/recipes-multimedia/gstreamer/gstreamer1.0.inc)39
-rw-r--r--meta/recipes-multimedia/lame/lame_3.100.bb6
-rw-r--r--meta/recipes-multimedia/libid3tag/libid3tag/10_utf16.dpatch33
-rw-r--r--meta/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb1
-rw-r--r--meta/recipes-multimedia/libpng/libpng_1.6.35.bb (renamed from meta/recipes-multimedia/libpng/libpng_1.6.34.bb)9
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-14245-14246.patch121
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-14634.patch42
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1_1.0.28.bb2
-rw-r--r--meta/recipes-multimedia/libtiff/files/CVE-2018-10963.patch39
-rw-r--r--meta/recipes-multimedia/libtiff/files/CVE-2018-7456.patch178
-rw-r--r--meta/recipes-multimedia/libtiff/files/CVE-2018-8905.patch61
-rw-r--r--meta/recipes-multimedia/libtiff/tiff_4.0.9.bb3
-rw-r--r--meta/recipes-multimedia/libvorbis/libvorbis/0001-configure-Check-for-clang.patch20
-rw-r--r--meta/recipes-multimedia/libvorbis/libvorbis/CVE-2017-14160.patch34
-rw-r--r--meta/recipes-multimedia/libvorbis/libvorbis/CVE-2017-14632.patch62
-rw-r--r--meta/recipes-multimedia/libvorbis/libvorbis/CVE-2017-14633.patch42
-rw-r--r--meta/recipes-multimedia/libvorbis/libvorbis/CVE-2018-10392.patch34
-rw-r--r--meta/recipes-multimedia/libvorbis/libvorbis/CVE-2018-5146.patch100
-rw-r--r--meta/recipes-multimedia/libvorbis/libvorbis_1.3.6.bb (renamed from meta/recipes-multimedia/libvorbis/libvorbis_1.3.5.bb)11
-rw-r--r--meta/recipes-multimedia/mpg123/mpg123_1.25.10.bb1
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio.inc15
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio/0001-memfd-wrappers-only-define-memfd_create-if-not-alrea.patch66
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio/0001-padsp-Make-it-compile-on-musl.patch70
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio_12.2.bb (renamed from meta/recipes-multimedia/pulseaudio/pulseaudio_11.1.bb)6
-rw-r--r--meta/recipes-multimedia/webp/libwebp_1.0.0.bb (renamed from meta/recipes-multimedia/webp/libwebp_0.6.1.bb)5
-rw-r--r--meta/recipes-rt/rt-tests/rt-tests.inc2
-rw-r--r--meta/recipes-sato/matchbox-sato/matchbox-session-sato/session5
-rw-r--r--meta/recipes-sato/matchbox-sato/matchbox-session-sato_0.1.bb2
-rw-r--r--meta/recipes-sato/matchbox-terminal/matchbox-terminal_0.2.bb (renamed from meta/recipes-sato/matchbox-terminal/matchbox-terminal_0.1.bb)4
-rw-r--r--meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb6
-rw-r--r--meta/recipes-sato/pcmanfm/pcmanfm_1.3.0.bb (renamed from meta/recipes-sato/pcmanfm/pcmanfm_1.2.5.bb)4
-rw-r--r--meta/recipes-sato/puzzles/puzzles_git.bb37
-rw-r--r--meta/recipes-sato/settings-daemon/settings-daemon_0.0.2.bb2
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-Fix-PaintingData-has-no-member-named-lightVector-on-.patch37
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-musl.patch28
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-Fix-gles3-header-when-gles2-is-enabled.patch38
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-Fix-racy-parallel-build-of-WebKit2-4.0.gir.patch63
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-OptionsGTK.cmake-drop-the-hardcoded-introspection-gt.patch15
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-WebKitMacros-Append-to-I-and-not-to-isystem.patch60
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch47
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-webkitgtk-fix-CVE-2017-17821.patch44
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0012-soup-Forward-declare-URL-class.patch31
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/detect-atomics-during-configure.patch46
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/detect-gstreamer-gl.patch20
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/fix-configure-failure-aarch64.patch29
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/x32_support.patch27
-rw-r--r--meta/recipes-sato/webkit/webkitgtk_2.20.5.bb (renamed from meta/recipes-sato/webkit/webkitgtk_2.18.6.bb)14
-rw-r--r--meta/recipes-support/apr/apr-util/0001-Fix-error-handling-in-gdbm.patch135
-rw-r--r--meta/recipes-support/apr/apr-util_1.6.1.bb1
-rw-r--r--meta/recipes-support/apr/apr/0008-apr-fix-ptest-hang-in-teststr.patch32
-rw-r--r--meta/recipes-support/apr/apr_1.6.3.bb1
-rw-r--r--meta/recipes-support/aspell/aspell_0.60.6.1.bb5
-rw-r--r--meta/recipes-support/atk/at-spi2-atk_2.26.2.bb (renamed from meta/recipes-support/atk/at-spi2-atk_2.26.1.bb)12
-rw-r--r--meta/recipes-support/atk/at-spi2-core/0001-build-Add-with-systemduserunitdir.patch52
-rw-r--r--meta/recipes-support/atk/at-spi2-core_2.26.2.bb29
-rw-r--r--meta/recipes-support/atk/at-spi2-core_2.28.0.bb39
-rw-r--r--meta/recipes-support/atk/atk/0001-Switch-from-filename-to-basename.patch38
-rw-r--r--meta/recipes-support/atk/atk/0001-meson.build-enable-introspection-for-cross-compile.patch28
-rw-r--r--meta/recipes-support/atk/atk_2.26.1.bb19
-rw-r--r--meta/recipes-support/atk/atk_2.28.1.bb37
-rw-r--r--meta/recipes-support/attr/attr.inc6
-rw-r--r--meta/recipes-support/attr/ea-acl.inc3
-rw-r--r--meta/recipes-support/bash-completion/bash-completion_2.8.bb (renamed from meta/recipes-support/bash-completion/bash-completion_2.7.bb)6
-rw-r--r--meta/recipes-support/beecrypt/beecrypt/add-option-dev-dsp.patch34
-rw-r--r--meta/recipes-support/beecrypt/beecrypt/beecrypt-enable-ptest-support.patch37
-rw-r--r--meta/recipes-support/beecrypt/beecrypt/disable-icu-check.patch43
-rw-r--r--meta/recipes-support/beecrypt/beecrypt/fix-for-gcc-4.7.patch39
-rw-r--r--meta/recipes-support/beecrypt/beecrypt/fix-security.patch47
-rw-r--r--meta/recipes-support/beecrypt/beecrypt/run-ptest5
-rw-r--r--meta/recipes-support/beecrypt/beecrypt_4.2.1.bb48
-rw-r--r--meta/recipes-support/bmap-tools/bmap-tools_3.4.bb2
-rw-r--r--meta/recipes-support/boost/bjam-native_1.68.0.bb (renamed from meta/recipes-support/boost/bjam-native_1.66.0.bb)2
-rw-r--r--meta/recipes-support/boost/boost-1.68.0.inc (renamed from meta/recipes-support/boost/boost-1.66.0.inc)4
-rw-r--r--meta/recipes-support/boost/boost.inc10
-rw-r--r--meta/recipes-support/boost/boost/0001-make_x86_64_sysv_elf_gas.S-set-.file-section.patch48
-rw-r--r--meta/recipes-support/boost/boost/0002-Don-t-set-up-m32-m64-we-do-that-ourselves.patch65
-rw-r--r--meta/recipes-support/boost/boost_1.66.0.bb11
-rw-r--r--meta/recipes-support/boost/boost_1.68.0.bb11
-rw-r--r--meta/recipes-support/boost/files/0001-Fix-a-strange-assert-typo-how-was-this-released-with.patch37
-rw-r--r--meta/recipes-support/ca-certificates/ca-certificates_20180409.bb (renamed from meta/recipes-support/ca-certificates/ca-certificates_20170717.bb)5
-rw-r--r--meta/recipes-support/curl/curl/0001-replace-krb5-config-with-pkg-config.patch17
-rw-r--r--meta/recipes-support/curl/curl/CVE-2018-14618.patch37
-rw-r--r--meta/recipes-support/curl/curl/configure_ac.patch13
-rw-r--r--meta/recipes-support/curl/curl_7.61.0.bb (renamed from meta/recipes-support/curl/curl_7.58.0.bb)31
-rw-r--r--meta/recipes-support/db/db/arm-thumb-mutex_db5.patch50
-rw-r--r--meta/recipes-support/db/db_5.3.28.bb18
-rw-r--r--meta/recipes-support/debianutils/debianutils_4.8.6.bb (renamed from meta/recipes-support/debianutils/debianutils_4.8.4.bb)8
-rw-r--r--meta/recipes-support/dos2unix/dos2unix_7.4.0.bb35
-rw-r--r--meta/recipes-support/fribidi/fribidi/meson.patch44
-rw-r--r--meta/recipes-support/fribidi/fribidi_1.0.5.bb17
-rw-r--r--meta/recipes-support/gdbm/files/ptest.patch22
-rw-r--r--meta/recipes-support/gdbm/gdbm_1.18.bb (renamed from meta/recipes-support/gdbm/gdbm_1.14.1.bb)4
-rw-r--r--meta/recipes-support/gmp/gmp.inc2
-rw-r--r--meta/recipes-support/gmp/gmp_6.1.2.bb4
-rw-r--r--meta/recipes-support/gnome-desktop-testing/gnome-desktop-testing/update-output-syntax.patch2
-rw-r--r--meta/recipes-support/gnupg/gnupg/0001-configure.ac-use-a-custom-value-for-the-location-of-.patch10
-rw-r--r--meta/recipes-support/gnupg/gnupg/relocate.patch81
-rw-r--r--meta/recipes-support/gnupg/gnupg_2.2.9.bb (renamed from meta/recipes-support/gnupg/gnupg_2.2.4.bb)11
-rw-r--r--meta/recipes-support/gnutls/gnutls/0001-configure.ac-fix-sed-command.patch29
-rw-r--r--meta/recipes-support/gnutls/gnutls_3.6.1.bb9
-rw-r--r--meta/recipes-support/gnutls/gnutls_3.6.3.bb (renamed from meta/recipes-support/gnutls/gnutls.inc)13
-rw-r--r--meta/recipes-support/gpgme/gpgme/0001-pkgconfig.patch18
-rw-r--r--meta/recipes-support/gpgme/gpgme/0002-gpgme-lang-python-gpg-error-config-should-not-be-use.patch10
-rw-r--r--meta/recipes-support/gpgme/gpgme/0003-Correctly-install-python-modules.patch6
-rw-r--r--meta/recipes-support/gpgme/gpgme/0004-python-import.patch6
-rw-r--r--meta/recipes-support/gpgme/gpgme/0005-gpgme-config-skip-all-lib-or-usr-lib-directories-in-.patch6
-rw-r--r--meta/recipes-support/gpgme/gpgme/0006-fix-build-path-issue.patch6
-rw-r--r--meta/recipes-support/gpgme/gpgme/0007-qt-python-Add-variables-to-tests.patch12
-rw-r--r--meta/recipes-support/gpgme/gpgme_1.11.1.bb (renamed from meta/recipes-support/gpgme/gpgme_1.10.0.bb)8
-rw-r--r--meta/recipes-support/icu/icu.inc6
-rw-r--r--meta/recipes-support/icu/icu/0001-i18n-Drop-include-xlocale.h.patch34
-rw-r--r--meta/recipes-support/icu/icu/0002-Add-ARC-support.patch27
-rw-r--r--meta/recipes-support/icu/icu_62.1.bb (renamed from meta/recipes-support/icu/icu_60.2.bb)8
-rw-r--r--meta/recipes-support/iso-codes/iso-codes_4.1.bb (renamed from meta/recipes-support/iso-codes/iso-codes_3.77.bb)10
-rw-r--r--meta/recipes-support/libatomic-ops/libatomic-ops_7.6.6.bb (renamed from meta/recipes-support/libatomic-ops/libatomic-ops_7.6.2.bb)6
-rw-r--r--meta/recipes-support/libbsd/libbsd/0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch376
-rw-r--r--meta/recipes-support/libbsd/libbsd/0001-flopen-Add-missing-fcntl.h-include.patch46
-rw-r--r--meta/recipes-support/libbsd/libbsd/0001-src-libbsd-overlay.pc.in-Set-Cflags-to-use-I-instead.patch33
-rw-r--r--meta/recipes-support/libbsd/libbsd/0002-Remove-funopen.patch52
-rw-r--r--meta/recipes-support/libbsd/libbsd_0.9.1.bb (renamed from meta/recipes-support/libbsd/libbsd_0.8.7.bb)20
-rw-r--r--meta/recipes-support/libcap-ng/libcap-ng/python.patch28
-rw-r--r--meta/recipes-support/libcap-ng/libcap-ng_0.7.9.bb (renamed from meta/recipes-support/libcap-ng/libcap-ng_0.7.8.bb)4
-rw-r--r--meta/recipes-support/libcap/libcap_2.25.bb2
-rw-r--r--meta/recipes-support/libcroco/libcroco/CVE-2017-7960.patch56
-rw-r--r--meta/recipes-support/libcroco/libcroco_0.6.12.bb2
-rw-r--r--meta/recipes-support/libevdev/libevdev_1.5.9.bb (renamed from meta/recipes-support/libevdev/libevdev_1.5.8.bb)4
-rw-r--r--meta/recipes-support/libevent/libevent_2.1.8.bb6
-rw-r--r--meta/recipes-support/libexif/libexif/CVE-2017-7544.patch40
-rw-r--r--meta/recipes-support/libexif/libexif_0.6.21.bb3
-rw-r--r--meta/recipes-support/libfm/libfm-extra_1.3.0.2.bb (renamed from meta/recipes-support/libfm/libfm-extra_1.2.5.bb)4
-rw-r--r--meta/recipes-support/libfm/libfm/0001-Do-not-add-library-path-to-avoid-host-contamination.patch23
-rw-r--r--meta/recipes-support/libfm/libfm/0001-Enclose-text-in-programlisting-into-CDATA.patch76
-rw-r--r--meta/recipes-support/libfm/libfm_1.3.0.2.bb (renamed from meta/recipes-support/libfm/libfm_1.2.5.bb)6
-rw-r--r--meta/recipes-support/libgcrypt/libgcrypt_1.8.3.bb (renamed from meta/recipes-support/libgcrypt/libgcrypt_1.8.2.bb)4
-rw-r--r--meta/recipes-support/libgpg-error/libgpg-error/pkgconfig.patch67
-rw-r--r--meta/recipes-support/libgpg-error/libgpg-error_1.32.bb (renamed from meta/recipes-support/libgpg-error/libgpg-error_1.27.bb)14
-rw-r--r--meta/recipes-support/libical/libical_2.0.0.bb7
-rw-r--r--meta/recipes-support/libpcre/libpcre2_10.31.bb (renamed from meta/recipes-support/libpcre/libpcre2_10.30.bb)6
-rw-r--r--meta/recipes-support/libpcre/libpcre_8.42.bb (renamed from meta/recipes-support/libpcre/libpcre_8.41.bb)6
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2018-12910.patch32
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4_2.62.2.bb (renamed from meta/recipes-support/libsoup/libsoup-2.4_2.60.3.bb)8
-rw-r--r--meta/recipes-support/libunistring/libunistring_0.9.10.bb (renamed from meta/recipes-support/libunistring/libunistring_0.9.9.bb)6
-rw-r--r--meta/recipes-support/libunwind/libunwind.inc2
-rw-r--r--meta/recipes-support/libunwind/libunwind_1.2.1.bb2
-rw-r--r--meta/recipes-support/liburcu/files/Add-support-for-the-RISC-V-architecture.patch157
-rw-r--r--meta/recipes-support/liburcu/liburcu_0.10.1.bb7
-rw-r--r--meta/recipes-support/libusb/libusb-compat/0001-usb.h-Include-sys-types.h.patch30
-rw-r--r--meta/recipes-support/libusb/libusb-compat_0.1.5.bb42
-rwxr-xr-xmeta/recipes-support/libusb/libusb1/run-ptest15
-rw-r--r--meta/recipes-support/libusb/libusb1_1.0.22.bb (renamed from meta/recipes-support/libusb/libusb1_1.0.21.bb)15
-rw-r--r--meta/recipes-support/libxslt/libxslt/fix-rvts-handling.patch80
-rw-r--r--meta/recipes-support/libxslt/libxslt_1.1.32.bb5
-rw-r--r--meta/recipes-support/libyaml/libyaml_0.2.1.bb (renamed from meta/recipes-support/libyaml/libyaml_0.1.7.bb)10
-rw-r--r--meta/recipes-support/lz4/files/0001-tests-Makefile-don-t-use-LIBDIR-as-variable.patch82
-rw-r--r--meta/recipes-support/lz4/lz4_1.8.2.bb (renamed from meta/recipes-support/lz4/lz4_1.7.4.bb)10
-rw-r--r--meta/recipes-support/mpfr/mpfr/long-long-thumb.patch39
-rw-r--r--meta/recipes-support/mpfr/mpfr_4.0.1.bb (renamed from meta/recipes-support/mpfr/mpfr_3.1.5.bb)10
-rw-r--r--meta/recipes-support/nettle/nettle_3.4.bb6
-rw-r--r--meta/recipes-support/npth/npth_1.6.bb (renamed from meta/recipes-support/npth/npth_1.5.bb)10
-rw-r--r--meta/recipes-support/nspr/nspr/0003-Add-type-definitions-for-the-RISC-V-architecture.patch150
-rw-r--r--meta/recipes-support/nspr/nspr/0004-Add-ARC-support.patch88
-rw-r--r--meta/recipes-support/nspr/nspr_4.19.bb6
-rw-r--r--meta/recipes-support/nss/nss/0001-Bug-1437734-Use-snprintf-in-sign.c-r-ttaubert.patch119
-rw-r--r--meta/recipes-support/nss/nss/Fix-compilation-for-X32.patch33
-rw-r--r--meta/recipes-support/nss/nss/disable-Wvarargs-with-clang.patch8
-rw-r--r--meta/recipes-support/nss/nss/nss-build-hacl-poly1305-aarch64.patch30
-rw-r--r--meta/recipes-support/nss/nss/pqg.c-ULL_addend.patch8
-rw-r--r--meta/recipes-support/nss/nss_3.38.bb (renamed from meta/recipes-support/nss/nss_3.35.bb)16
-rw-r--r--meta/recipes-support/p11-kit/p11-kit/0001-LINGUAS-drop-the-languages-for-which-upstream-does-n.patch13
-rw-r--r--meta/recipes-support/p11-kit/p11-kit_0.23.14.bb (renamed from meta/recipes-support/p11-kit/p11-kit_0.22.1.bb)8
-rw-r--r--meta/recipes-support/pinentry/pinentry_1.1.0.bb11
-rw-r--r--meta/recipes-support/popt/popt_1.16.bb2
-rw-r--r--meta/recipes-support/ptest-runner/ptest-runner_2.2.bb (renamed from meta/recipes-support/ptest-runner/ptest-runner_2.1.1.bb)4
-rw-r--r--meta/recipes-support/re2c/re2c/mkdir.patch36
-rw-r--r--meta/recipes-support/re2c/re2c_1.0.1.bb (renamed from meta/recipes-support/re2c/re2c_0.16.bb)7
-rw-r--r--meta/recipes-support/rng-tools/rng-tools/rngd.service3
-rw-r--r--meta/recipes-support/rng-tools/rng-tools_5.bb9
-rw-r--r--meta/recipes-support/serf/serf/0001-Fix-syntax-of-a-print-in-the-scons-file-to-unbreak-b.patch29
-rw-r--r--meta/recipes-support/serf/serf/0002-SConstruct-Fix-path-quoting-for-.def-generator.patch27
-rw-r--r--meta/recipes-support/serf/serf/0003-gen_def.patch27
-rw-r--r--meta/recipes-support/serf/serf/0004-Follow-up-to-r1811083-fix-building-with-scons-3.0.0-.patch29
-rw-r--r--meta/recipes-support/serf/serf_1.3.9.bb7
-rw-r--r--meta/recipes-support/shared-mime-info/shared-mime-info.inc2
-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_1.9.bb7
-rw-r--r--meta/recipes-support/sqlite/sqlite3.inc6
-rw-r--r--meta/recipes-support/sqlite/sqlite3_3.23.1.bb (renamed from meta/recipes-support/sqlite/sqlite3_3.22.0.bb)4
-rw-r--r--meta/recipes-support/taglib/taglib/CVE-2018-11439.patch51
-rw-r--r--meta/recipes-support/taglib/taglib_1.11.1.bb1
-rw-r--r--meta/recipes-support/vte/vte_0.52.2.bb (renamed from meta/recipes-support/vte/vte_0.50.2.bb)6
-rw-r--r--meta/site/arc-common11
-rw-r--r--meta/site/powerpc64-linux2
-rwxr-xr-xscripts/autobuilder-worker-prereq-tests64
-rwxr-xr-xscripts/combo-layer2
-rwxr-xr-xscripts/contrib/mkefidisk.sh464
-rwxr-xr-xscripts/contrib/patchreview.py4
-rwxr-xr-xscripts/contrib/verify-homepage.py2
-rwxr-xr-xscripts/devtool2
-rw-r--r--scripts/lib/build_perf/html/report.html7
-rw-r--r--scripts/lib/checklayer/__init__.py4
-rw-r--r--scripts/lib/devtool/build.py7
-rw-r--r--scripts/lib/devtool/export.py2
-rw-r--r--scripts/lib/devtool/import.py8
-rw-r--r--scripts/lib/devtool/sdk.py3
-rw-r--r--scripts/lib/devtool/standard.py16
-rw-r--r--scripts/lib/devtool/upgrade.py11
-rw-r--r--scripts/lib/recipetool/append.py14
-rw-r--r--scripts/lib/recipetool/create.py4
-rw-r--r--scripts/lib/recipetool/create_kmod.py2
-rw-r--r--scripts/lib/recipetool/create_npm.py7
-rw-r--r--scripts/lib/recipetool/edit.py54
-rw-r--r--scripts/lib/recipetool/newappend.py4
-rw-r--r--scripts/lib/scriptutils.py24
-rw-r--r--scripts/lib/wic/canned-wks/mkhybridiso.wks2
-rw-r--r--scripts/lib/wic/canned-wks/qemux86-directdisk.wks2
-rw-r--r--scripts/lib/wic/engine.py35
-rw-r--r--scripts/lib/wic/help.py18
-rw-r--r--scripts/lib/wic/ksparser.py16
-rw-r--r--scripts/lib/wic/partition.py4
-rw-r--r--scripts/lib/wic/plugins/imager/direct.py6
-rw-r--r--scripts/lib/wic/plugins/source/bootimg-efi.py20
-rw-r--r--scripts/lib/wic/plugins/source/bootimg-partition.py121
-rw-r--r--scripts/lib/wic/plugins/source/isoimage-isohybrid.py46
-rw-r--r--scripts/multilib_header_wrapper.h4
-rwxr-xr-xscripts/oe-build-perf-report4
-rwxr-xr-xscripts/oe-depends-dot46
-rwxr-xr-xscripts/oe-find-native-sysroot2
-rwxr-xr-xscripts/oe-pkgdata-util73
-rwxr-xr-xscripts/oe-run-native4
-rw-r--r--scripts/postinst-intercepts/update_font_cache3
-rw-r--r--scripts/postinst-intercepts/update_gio_module_cache3
-rw-r--r--scripts/postinst-intercepts/update_gtk_immodules_cache16
-rw-r--r--scripts/postinst-intercepts/update_pixbuf_cache3
-rwxr-xr-xscripts/runqemu63
-rwxr-xr-xscripts/runqemu-extract-sdk23
-rwxr-xr-xscripts/runqemu-ifdown10
-rwxr-xr-xscripts/send-error-report6
1969 files changed, 50883 insertions, 46787 deletions
diff --git a/bitbake/bin/bitbake b/bitbake/bin/bitbake
index 95e41096859..21e021aa753 100755
--- a/bitbake/bin/bitbake
+++ b/bitbake/bin/bitbake
@@ -38,7 +38,7 @@ from bb.main import bitbake_main, BitBakeConfigParameters, BBMainException
if sys.getfilesystemencoding() != "utf-8":
sys.exit("Please use a locale setting which supports UTF-8 (such as LANG=en_US.UTF-8).\nPython can't change the filesystem locale after loading so we need a UTF-8 when Python starts or things won't work.")
-__version__ = "1.37.0"
+__version__ = "1.39.1"
if __name__ == "__main__":
if __version__ != bb.__version__:
diff --git a/bitbake/bin/bitbake-selftest b/bitbake/bin/bitbake-selftest
index afe1603d042..cfa7ac5391b 100755
--- a/bitbake/bin/bitbake-selftest
+++ b/bitbake/bin/bitbake-selftest
@@ -22,16 +22,21 @@ sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)), 'lib
import unittest
try:
import bb
+ import layerindexlib
except RuntimeError as exc:
sys.exit(str(exc))
tests = ["bb.tests.codeparser",
+ "bb.tests.cooker",
"bb.tests.cow",
"bb.tests.data",
"bb.tests.event",
"bb.tests.fetch",
"bb.tests.parse",
- "bb.tests.utils"]
+ "bb.tests.utils",
+ "layerindexlib.tests.layerindexobj",
+ "layerindexlib.tests.restapi",
+ "layerindexlib.tests.cooker"]
for t in tests:
t = '.'.join(t.split('.')[:3])
diff --git a/bitbake/bin/toaster b/bitbake/bin/toaster
index ed365ee82ef..9fffbc6ae25 100755
--- a/bitbake/bin/toaster
+++ b/bitbake/bin/toaster
@@ -18,11 +18,12 @@
# along with this program. If not, see http://www.gnu.org/licenses/.
HELP="
-Usage: source toaster start|stop [webport=<address:port>] [noweb] [nobuild]
+Usage: source toaster start|stop [webport=<address:port>] [noweb] [nobuild] [toasterdir]
Optional arguments:
[nobuild] Setup the environment for capturing builds with toaster but disable managed builds
[noweb] Setup the environment for capturing builds with toaster but don't start the web server
[webport] Set the development server (default: localhost:8000)
+ [toasterdir] Set absolute path to be used as TOASTER_DIR (default: BUILDDIR/../)
"
custom_extention()
@@ -186,6 +187,7 @@ unset OE_ROOT
WEBSERVER=1
export TOASTER_BUILDSERVER=1
ADDR_PORT="localhost:8000"
+TOASTERDIR=`dirname $BUILDDIR`
unset CMD
for param in $*; do
case $param in
@@ -211,6 +213,9 @@ for param in $*; do
ADDR_PORT="localhost:$PORT"
fi
;;
+ toasterdir=*)
+ TOASTERDIR="${param#*=}"
+ ;;
--help)
echo "$HELP"
return 0
@@ -241,7 +246,7 @@ fi
# 2) the build dir (in build)
# 3) the sqlite db if that is being used.
# 4) pid's we need to clean up on exit/shutdown
-export TOASTER_DIR=`dirname $BUILDDIR`
+export TOASTER_DIR=$TOASTERDIR
export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE TOASTER_DIR"
# Determine the action. If specified by arguments, fine, if not, toggle it
diff --git a/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml b/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml
index b4fc64e7535..bc08c814d1f 100644
--- a/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml
+++ b/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.xml
@@ -1929,6 +1929,38 @@
not careful.
</note>
</para></listitem>
+ <listitem><para><emphasis><filename>[number_threads]</filename>:</emphasis>
+ Limits tasks to a specific number of simultaneous threads
+ during execution.
+ This varflag is useful when your build host has a large number
+ of cores but certain tasks need to be rate-limited due to various
+ kinds of resource constraints (e.g. to avoid network throttling).
+ <filename>number_threads</filename> works similarly to the
+ <link linkend='var-BB_NUMBER_THREADS'><filename>BB_NUMBER_THREADS</filename></link>
+ variable but is task-specific.</para>
+
+ <para>Set the value globally.
+ For example, the following makes sure the
+ <filename>do_fetch</filename> task uses no more than two
+ simultaneous execution threads:
+ <literallayout class='monospaced'>
+ do_fetch[number_threads] = "2"
+ </literallayout>
+ <note><title>Warnings</title>
+ <itemizedlist>
+ <listitem><para>
+ Setting the varflag in individual recipes rather
+ than globally can result in unpredictable behavior.
+ </para></listitem>
+ <listitem><para>
+ Setting the varflag to a value greater than the
+ value used in the <filename>BB_NUMBER_THREADS</filename>
+ variable causes <filename>number_threads</filename>
+ to have no effect.
+ </para></listitem>
+ </itemizedlist>
+ </note>
+ </para></listitem>
<listitem><para><emphasis><filename>[postfuncs]</filename>:</emphasis>
List of functions to call after the completion of the task.
</para></listitem>
diff --git a/bitbake/doc/bitbake-user-manual/bitbake-user-manual.xml b/bitbake/doc/bitbake-user-manual/bitbake-user-manual.xml
index d23e3efeb39..d793265c9af 100644
--- a/bitbake/doc/bitbake-user-manual/bitbake-user-manual.xml
+++ b/bitbake/doc/bitbake-user-manual/bitbake-user-manual.xml
@@ -56,7 +56,7 @@
-->
<copyright>
- <year>2004-2017</year>
+ <year>2004-2018</year>
<holder>Richard Purdie</holder>
<holder>Chris Larson</holder>
<holder>and Phil Blundell</holder>
diff --git a/bitbake/lib/bb/COW.py b/bitbake/lib/bb/COW.py
index bec62080967..7817473ab80 100644
--- a/bitbake/lib/bb/COW.py
+++ b/bitbake/lib/bb/COW.py
@@ -150,7 +150,7 @@ class COWDictMeta(COWMeta):
yield value
if type == "items":
yield (key, value)
- raise StopIteration()
+ return
def iterkeys(cls):
return cls.iter("keys")
diff --git a/bitbake/lib/bb/__init__.py b/bitbake/lib/bb/__init__.py
index cd2f157dc56..170c592acf1 100644
--- a/bitbake/lib/bb/__init__.py
+++ b/bitbake/lib/bb/__init__.py
@@ -21,7 +21,7 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-__version__ = "1.37.0"
+__version__ = "1.39.1"
import sys
if sys.version_info < (3, 4, 0):
@@ -63,6 +63,10 @@ class BBLogger(Logger):
def verbose(self, msg, *args, **kwargs):
return self.log(logging.INFO - 1, msg, *args, **kwargs)
+ def verbnote(self, msg, *args, **kwargs):
+ return self.log(logging.INFO + 2, msg, *args, **kwargs)
+
+
logging.raiseExceptions = False
logging.setLoggerClass(BBLogger)
@@ -93,6 +97,18 @@ def debug(lvl, *args):
def note(*args):
mainlogger.info(''.join(args))
+#
+# A higher prioity note which will show on the console but isn't a warning
+#
+# Something is happening the user should be aware of but they probably did
+# something to make it happen
+#
+def verbnote(*args):
+ mainlogger.verbnote(''.join(args))
+
+#
+# Warnings - things the user likely needs to pay attention to and fix
+#
def warn(*args):
mainlogger.warning(''.join(args))
diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py
index 4631abdde57..3e2a94edb11 100644
--- a/bitbake/lib/bb/build.py
+++ b/bitbake/lib/bb/build.py
@@ -41,8 +41,6 @@ from bb import data, event, utils
bblogger = logging.getLogger('BitBake')
logger = logging.getLogger('BitBake.Build')
-NULL = open(os.devnull, 'r+')
-
__mtime_cache = {}
def cached_mtime_noerror(f):
@@ -533,7 +531,6 @@ def _exec_task(fn, task, d, quieterr):
self.triggered = True
# Handle logfiles
- si = open('/dev/null', 'r')
try:
bb.utils.mkdirhier(os.path.dirname(logfn))
logfile = open(logfn, 'w')
@@ -547,7 +544,8 @@ def _exec_task(fn, task, d, quieterr):
ose = [os.dup(sys.stderr.fileno()), sys.stderr.fileno()]
# Replace those fds with our own
- os.dup2(si.fileno(), osi[1])
+ with open('/dev/null', 'r') as si:
+ os.dup2(si.fileno(), osi[1])
os.dup2(logfile.fileno(), oso[1])
os.dup2(logfile.fileno(), ose[1])
@@ -608,7 +606,6 @@ def _exec_task(fn, task, d, quieterr):
os.close(osi[0])
os.close(oso[0])
os.close(ose[0])
- si.close()
logfile.close()
if os.path.exists(logfn) and os.path.getsize(logfn) == 0:
@@ -803,6 +800,7 @@ def add_tasks(tasklist, d):
if name in flags:
deptask = d.expand(flags[name])
task_deps[name][task] = deptask
+ getTask('mcdepends')
getTask('depends')
getTask('rdepends')
getTask('deptask')
diff --git a/bitbake/lib/bb/cache.py b/bitbake/lib/bb/cache.py
index 168a77ac0c9..258d679dc18 100644
--- a/bitbake/lib/bb/cache.py
+++ b/bitbake/lib/bb/cache.py
@@ -37,7 +37,7 @@ import bb.utils
logger = logging.getLogger("BitBake.Cache")
-__cache_version__ = "151"
+__cache_version__ = "152"
def getCacheFile(path, filename, data_hash):
return os.path.join(path, filename + "." + data_hash)
diff --git a/bitbake/lib/bb/checksum.py b/bitbake/lib/bb/checksum.py
index 84289208f44..4e1598fe835 100644
--- a/bitbake/lib/bb/checksum.py
+++ b/bitbake/lib/bb/checksum.py
@@ -97,6 +97,8 @@ class FileChecksumCache(MultiProcessCache):
def checksum_dir(pth):
# Handle directories recursively
+ if pth == "/":
+ bb.fatal("Refusing to checksum /")
dirchecksums = []
for root, dirs, files in os.walk(pth):
for name in files:
diff --git a/bitbake/lib/bb/codeparser.py b/bitbake/lib/bb/codeparser.py
index 530f44e5780..ddd1b97dcb1 100644
--- a/bitbake/lib/bb/codeparser.py
+++ b/bitbake/lib/bb/codeparser.py
@@ -140,7 +140,7 @@ class CodeParserCache(MultiProcessCache):
# so that an existing cache gets invalidated. Additionally you'll need
# to increment __cache_version__ in cache.py in order to ensure that old
# recipe caches don't trigger "Taskhash mismatch" errors.
- CACHE_VERSION = 9
+ CACHE_VERSION = 10
def __init__(self):
MultiProcessCache.__init__(self)
@@ -214,7 +214,7 @@ class BufferedLogger(Logger):
self.buffer = []
class PythonParser():
- getvars = (".getVar", ".appendVar", ".prependVar")
+ getvars = (".getVar", ".appendVar", ".prependVar", "oe.utils.conditional")
getvarflags = (".getVarFlag", ".appendVarFlag", ".prependVarFlag")
containsfuncs = ("bb.utils.contains", "base_contains")
containsanyfuncs = ("bb.utils.contains_any", "bb.utils.filter")
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 1fda40dd417..71a0eba8e4d 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -609,7 +609,14 @@ class BBCooker:
k2 = k.split(":do_")
k = k2[0]
ktask = k2[1]
- taskdata[mc].add_provider(localdata[mc], self.recipecaches[mc], k)
+ if mc:
+ # Provider might be from another mc
+ for mcavailable in self.multiconfigs:
+ # The first element is empty
+ if mcavailable:
+ taskdata[mcavailable].add_provider(localdata[mcavailable], self.recipecaches[mcavailable], k)
+ else:
+ taskdata[mc].add_provider(localdata[mc], self.recipecaches[mc], k)
current += 1
if not ktask.startswith("do_"):
ktask = "do_%s" % ktask
@@ -620,6 +627,27 @@ class BBCooker:
runlist.append([mc, k, ktask, fn])
bb.event.fire(bb.event.TreeDataPreparationProgress(current, len(fulltargetlist)), self.data)
+ mcdeps = taskdata[mc].get_mcdepends()
+ # No need to do check providers if there are no mcdeps or not an mc build
+ if mcdeps and mc:
+ # Make sure we can provide the multiconfig dependency
+ seen = set()
+ new = True
+ while new:
+ new = False
+ for mc in self.multiconfigs:
+ for k in mcdeps:
+ if k in seen:
+ continue
+ l = k.split(':')
+ depmc = l[2]
+ if depmc not in self.multiconfigs:
+ bb.fatal("Multiconfig dependency %s depends on nonexistent mc configuration %s" % (k,depmc))
+ else:
+ logger.debug(1, "Adding providers for multiconfig dependency %s" % l[3])
+ taskdata[depmc].add_provider(localdata[depmc], self.recipecaches[depmc], l[3])
+ seen.add(k)
+ new = True
for mc in self.multiconfigs:
taskdata[mc].add_unresolved(localdata[mc], self.recipecaches[mc])
@@ -706,8 +734,8 @@ class BBCooker:
if not dotname in depend_tree["tdepends"]:
depend_tree["tdepends"][dotname] = []
for dep in rq.rqdata.runtaskentries[tid].depends:
- (depmc, depfn, deptaskname, deptaskfn) = bb.runqueue.split_tid_mcfn(dep)
- deppn = self.recipecaches[mc].pkg_fn[deptaskfn]
+ (depmc, depfn, _, deptaskfn) = bb.runqueue.split_tid_mcfn(dep)
+ deppn = self.recipecaches[depmc].pkg_fn[deptaskfn]
depend_tree["tdepends"][dotname].append("%s.%s" % (deppn, bb.runqueue.taskname_from_tid(dep)))
if taskfn not in seen_fns:
seen_fns.append(taskfn)
@@ -1566,7 +1594,7 @@ class BBCooker:
pkgs_to_build.append(t)
if 'universe' in pkgs_to_build:
- parselog.warning("The \"universe\" target is only intended for testing and may produce errors.")
+ parselog.verbnote("The \"universe\" target is only intended for testing and may produce errors.")
parselog.debug(1, "collating packages for \"universe\"")
pkgs_to_build.remove('universe')
for mc in self.multiconfigs:
@@ -1633,7 +1661,10 @@ class CookerExit(bb.event.Event):
class CookerCollectFiles(object):
def __init__(self, priorities):
self.bbappends = []
- self.bbfile_config_priorities = priorities
+ # Priorities is a list of tupples, with the second element as the pattern.
+ # We need to sort the list with the longest pattern first, and so on to
+ # the shortest. This allows nested layers to be properly evaluated.
+ self.bbfile_config_priorities = sorted(priorities, key=lambda tup: tup[1], reverse=True)
def calc_bbfile_priority( self, filename, matched = None ):
for _, _, regex, pri in self.bbfile_config_priorities:
diff --git a/bitbake/lib/bb/daemonize.py b/bitbake/lib/bb/daemonize.py
index 8300d1d0f0f..c937675eb61 100644
--- a/bitbake/lib/bb/daemonize.py
+++ b/bitbake/lib/bb/daemonize.py
@@ -16,6 +16,10 @@ def createDaemon(function, logfile):
background as a daemon, returning control to the caller.
"""
+ # Ensure stdout/stderror are flushed before forking to avoid duplicate output
+ sys.stdout.flush()
+ sys.stderr.flush()
+
try:
# Fork a child process so the parent can exit. This returns control to
# the command-line or shell. It also guarantees that the child will not
@@ -49,8 +53,8 @@ def createDaemon(function, logfile):
# exit() or _exit()?
# _exit is like exit(), but it doesn't call any functions registered
# with atexit (and on_exit) or any registered signal handlers. It also
- # closes any open file descriptors. Using exit() may cause all stdio
- # streams to be flushed twice and any temporary files may be unexpectedly
+ # closes any open file descriptors, but doesn't flush any buffered output.
+ # Using exit() may cause all any temporary files to be unexpectedly
# removed. It's therefore recommended that child branches of a fork()
# and the parent branch(es) of a daemon use _exit().
os._exit(0)
@@ -61,17 +65,19 @@ def createDaemon(function, logfile):
# The second child.
# Replace standard fds with our own
- si = open('/dev/null', 'r')
- os.dup2(si.fileno(), sys.stdin.fileno())
+ with open('/dev/null', 'r') as si:
+ os.dup2(si.fileno(), sys.stdin.fileno())
try:
so = open(logfile, 'a+')
- se = so
os.dup2(so.fileno(), sys.stdout.fileno())
- os.dup2(se.fileno(), sys.stderr.fileno())
+ os.dup2(so.fileno(), sys.stderr.fileno())
except io.UnsupportedOperation:
sys.stdout = open(logfile, 'a+')
- sys.stderr = sys.stdout
+
+ # Have stdout and stderr be the same so log output matches chronologically
+ # and there aren't two seperate buffers
+ sys.stderr = sys.stdout
try:
function()
@@ -79,4 +85,9 @@ def createDaemon(function, logfile):
traceback.print_exc()
finally:
bb.event.print_ui_queue()
+ # os._exit() doesn't flush open files like os.exit() does. Manually flush
+ # stdout and stderr so that any logging output will be seen, particularly
+ # exception tracebacks.
+ sys.stdout.flush()
+ sys.stderr.flush()
os._exit(0)
diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py
index 5d0049626d5..5b1b094a806 100644
--- a/bitbake/lib/bb/event.py
+++ b/bitbake/lib/bb/event.py
@@ -141,6 +141,9 @@ def print_ui_queue():
logger = logging.getLogger("BitBake")
if not _uiready:
from bb.msg import BBLogFormatter
+ # Flush any existing buffered content
+ sys.stdout.flush()
+ sys.stderr.flush()
stdout = logging.StreamHandler(sys.stdout)
stderr = logging.StreamHandler(sys.stderr)
formatter = BBLogFormatter("%(levelname)s: %(message)s")
@@ -395,7 +398,7 @@ class RecipeEvent(Event):
Event.__init__(self)
class RecipePreFinalise(RecipeEvent):
- """ Recipe Parsing Complete but not yet finialised"""
+ """ Recipe Parsing Complete but not yet finalised"""
class RecipeTaskPreProcess(RecipeEvent):
"""
diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py
index 72d6092deb3..a83526a5d04 100644
--- a/bitbake/lib/bb/fetch2/__init__.py
+++ b/bitbake/lib/bb/fetch2/__init__.py
@@ -383,7 +383,7 @@ def decodeurl(url):
path = location
else:
host = location
- path = ""
+ path = "/"
if user:
m = re.compile('(?P<user>[^:]+)(:?(?P<pswd>.*))').match(user)
if m:
@@ -452,8 +452,8 @@ def uri_replace(ud, uri_find, uri_replace, replacements, d, mirrortarball=None):
# Handle URL parameters
if i:
# Any specified URL parameters must match
- for k in uri_replace_decoded[loc]:
- if uri_decoded[loc][k] != uri_replace_decoded[loc][k]:
+ for k in uri_find_decoded[loc]:
+ if uri_decoded[loc][k] != uri_find_decoded[loc][k]:
return None
# Overwrite any specified replacement parameters
for k in uri_replace_decoded[loc]:
diff --git a/bitbake/lib/bb/fetch2/bzr.py b/bitbake/lib/bb/fetch2/bzr.py
index 16123f8af98..658502f9a64 100644
--- a/bitbake/lib/bb/fetch2/bzr.py
+++ b/bitbake/lib/bb/fetch2/bzr.py
@@ -41,8 +41,9 @@ class Bzr(FetchMethod):
init bzr specific variable within url data
"""
# Create paths to bzr checkouts
+ bzrdir = d.getVar("BZRDIR") or (d.getVar("DL_DIR") + "/bzr")
relpath = self._strip_leading_slashes(ud.path)
- ud.pkgdir = os.path.join(d.expand('${BZRDIR}'), ud.host, relpath)
+ ud.pkgdir = os.path.join(bzrdir, ud.host, relpath)
ud.setup_revisions(d)
@@ -57,7 +58,7 @@ class Bzr(FetchMethod):
command is "fetch", "update", "revno"
"""
- basecmd = d.expand('${FETCHCMD_bzr}')
+ basecmd = d.getVar("FETCHCMD_bzr") or "/usr/bin/env bzr"
proto = ud.parm.get('protocol', 'http')
diff --git a/bitbake/lib/bb/fetch2/clearcase.py b/bitbake/lib/bb/fetch2/clearcase.py
index 36beab6a5bc..3a6573d0b23 100644
--- a/bitbake/lib/bb/fetch2/clearcase.py
+++ b/bitbake/lib/bb/fetch2/clearcase.py
@@ -69,7 +69,6 @@ from bb.fetch2 import FetchMethod
from bb.fetch2 import FetchError
from bb.fetch2 import runfetchcmd
from bb.fetch2 import logger
-from distutils import spawn
class ClearCase(FetchMethod):
"""Class to fetch urls via 'clearcase'"""
@@ -107,7 +106,7 @@ class ClearCase(FetchMethod):
else:
ud.module = ""
- ud.basecmd = d.getVar("FETCHCMD_ccrc") or spawn.find_executable("cleartool") or spawn.find_executable("rcleartool")
+ ud.basecmd = d.getVar("FETCHCMD_ccrc") or "/usr/bin/env cleartool || rcleartool"
if d.getVar("SRCREV") == "INVALID":
raise FetchError("Set a valid SRCREV for the clearcase fetcher in your recipe, e.g. SRCREV = \"/main/LATEST\" or any other label of your choice.")
diff --git a/bitbake/lib/bb/fetch2/cvs.py b/bitbake/lib/bb/fetch2/cvs.py
index 490c9547187..0e0a3196f86 100644
--- a/bitbake/lib/bb/fetch2/cvs.py
+++ b/bitbake/lib/bb/fetch2/cvs.py
@@ -110,7 +110,7 @@ class Cvs(FetchMethod):
if ud.tag:
options.append("-r %s" % ud.tag)
- cvsbasecmd = d.getVar("FETCHCMD_cvs")
+ cvsbasecmd = d.getVar("FETCHCMD_cvs") or "/usr/bin/env cvs"
cvscmd = cvsbasecmd + " '-d" + cvsroot + "' co " + " ".join(options) + " " + ud.module
cvsupdatecmd = cvsbasecmd + " '-d" + cvsroot + "' update -d -P " + " ".join(options)
@@ -121,7 +121,8 @@ class Cvs(FetchMethod):
# create module directory
logger.debug(2, "Fetch: checking for module directory")
pkg = d.getVar('PN')
- pkgdir = os.path.join(d.getVar('CVSDIR'), pkg)
+ cvsdir = d.getVar("CVSDIR") or (d.getVar("DL_DIR") + "/cvs")
+ pkgdir = os.path.join(cvsdir, pkg)
moddir = os.path.join(pkgdir, localdir)
workdir = None
if os.access(os.path.join(moddir, 'CVS'), os.R_OK):
diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py
index 3de83bed173..35da14d71b2 100644
--- a/bitbake/lib/bb/fetch2/git.py
+++ b/bitbake/lib/bb/fetch2/git.py
@@ -261,7 +261,7 @@ class Git(FetchMethod):
gitsrcname = gitsrcname + '_' + ud.revisions[name]
dl_dir = d.getVar("DL_DIR")
- gitdir = d.getVar("GITDIR") or (dl_dir + "/git2/")
+ gitdir = d.getVar("GITDIR") or (dl_dir + "/git2")
ud.clonedir = os.path.join(gitdir, gitsrcname)
ud.localfile = ud.clonedir
@@ -322,16 +322,13 @@ class Git(FetchMethod):
def download(self, ud, d):
"""Fetch url"""
- no_clone = not os.path.exists(ud.clonedir)
- need_update = no_clone or self.need_update(ud, d)
-
# A current clone is preferred to either tarball, a shallow tarball is
# preferred to an out of date clone, and a missing clone will use
# either tarball.
- if ud.shallow and os.path.exists(ud.fullshallow) and need_update:
+ if ud.shallow and os.path.exists(ud.fullshallow) and self.need_update(ud, d):
ud.localpath = ud.fullshallow
return
- elif os.path.exists(ud.fullmirror) and no_clone:
+ elif os.path.exists(ud.fullmirror) and not os.path.exists(ud.clonedir):
bb.utils.mkdirhier(ud.clonedir)
runfetchcmd("tar -xzf %s" % ud.fullmirror, d, workdir=ud.clonedir)
@@ -353,11 +350,12 @@ class Git(FetchMethod):
for name in ud.names:
if not self._contains_ref(ud, d, name, ud.clonedir):
needupdate = True
+ break
+
if needupdate:
- try:
- runfetchcmd("%s remote rm origin" % ud.basecmd, d, workdir=ud.clonedir)
- except bb.fetch2.FetchError:
- logger.debug(1, "No Origin")
+ output = runfetchcmd("%s remote" % ud.basecmd, d, quiet=True, workdir=ud.clonedir)
+ if "origin" in output:
+ runfetchcmd("%s remote rm origin" % ud.basecmd, d, workdir=ud.clonedir)
runfetchcmd("%s remote add --mirror=fetch origin %s" % (ud.basecmd, repourl), d, workdir=ud.clonedir)
fetch_cmd = "LANG=C %s fetch -f --prune --progress %s refs/*:refs/*" % (ud.basecmd, repourl)
@@ -373,6 +371,7 @@ class Git(FetchMethod):
except OSError as exc:
if exc.errno != errno.ENOENT:
raise
+
for name in ud.names:
if not self._contains_ref(ud, d, name, ud.clonedir):
raise bb.fetch2.FetchError("Unable to find revision %s in branch %s even from upstream" % (ud.revisions[name], ud.branches[name]))
@@ -472,7 +471,7 @@ class Git(FetchMethod):
if os.path.exists(destdir):
bb.utils.prunedir(destdir)
- if ud.shallow and (not os.path.exists(ud.clonedir) or self.need_update(ud, d)):
+ if ud.shallow and self.need_update(ud, d):
bb.utils.mkdirhier(destdir)
runfetchcmd("tar -xzf %s" % ud.fullshallow, d, workdir=destdir)
else:
diff --git a/bitbake/lib/bb/fetch2/gitsm.py b/bitbake/lib/bb/fetch2/gitsm.py
index 0aff1008e58..51f8d0e68ce 100644
--- a/bitbake/lib/bb/fetch2/gitsm.py
+++ b/bitbake/lib/bb/fetch2/gitsm.py
@@ -34,6 +34,8 @@ import bb
from bb.fetch2.git import Git
from bb.fetch2 import runfetchcmd
from bb.fetch2 import logger
+from bb.fetch2 import Fetch
+from bb.fetch2 import BBFetchException
class GitSM(Git):
def supports(self, ud, d):
@@ -42,94 +44,192 @@ class GitSM(Git):
"""
return ud.type in ['gitsm']
- def uses_submodules(self, ud, d, wd):
+ def update_submodules(self, ud, d):
+ submodules = []
+ paths = {}
+ uris = {}
+ local_paths = {}
+
for name in ud.names:
try:
- runfetchcmd("%s show %s:.gitmodules" % (ud.basecmd, ud.revisions[name]), d, quiet=True, workdir=wd)
- return True
- except bb.fetch.FetchError:
- pass
- return False
+ gitmodules = runfetchcmd("%s show %s:.gitmodules" % (ud.basecmd, ud.revisions[name]), d, quiet=True, workdir=ud.clonedir)
+ except:
+ # No submodules to update
+ continue
- def _set_relative_paths(self, repopath):
- """
- Fix submodule paths to be relative instead of absolute,
- so that when we move the repo it doesn't break
- (In Git 1.7.10+ this is done automatically)
- """
- submodules = []
- with open(os.path.join(repopath, '.gitmodules'), 'r') as f:
- for line in f.readlines():
+ module = ""
+ for line in gitmodules.splitlines():
if line.startswith('[submodule'):
- submodules.append(line.split('"')[1])
+ module = line.split('"')[1]
+ submodules.append(module)
+ elif module and line.strip().startswith('path'):
+ path = line.split('=')[1].strip()
+ paths[module] = path
+ elif module and line.strip().startswith('url'):
+ url = line.split('=')[1].strip()
+ uris[module] = url
for module in submodules:
- repo_conf = os.path.join(repopath, module, '.git')
- if os.path.exists(repo_conf):
- with open(repo_conf, 'r') as f:
- lines = f.readlines()
- newpath = ''
- for i, line in enumerate(lines):
- if line.startswith('gitdir:'):
- oldpath = line.split(': ')[-1].rstrip()
- if oldpath.startswith('/'):
- newpath = '../' * (module.count('/') + 1) + '.git/modules/' + module
- lines[i] = 'gitdir: %s\n' % newpath
- break
- if newpath:
- with open(repo_conf, 'w') as f:
- for line in lines:
- f.write(line)
-
- repo_conf2 = os.path.join(repopath, '.git', 'modules', module, 'config')
- if os.path.exists(repo_conf2):
- with open(repo_conf2, 'r') as f:
- lines = f.readlines()
- newpath = ''
- for i, line in enumerate(lines):
- if line.lstrip().startswith('worktree = '):
- oldpath = line.split(' = ')[-1].rstrip()
- if oldpath.startswith('/'):
- newpath = '../' * (module.count('/') + 3) + module
- lines[i] = '\tworktree = %s\n' % newpath
- break
- if newpath:
- with open(repo_conf2, 'w') as f:
- for line in lines:
- f.write(line)
+ module_hash = runfetchcmd("%s ls-tree -z -d %s %s" % (ud.basecmd, ud.revisions[name], paths[module]), d, quiet=True, workdir=ud.clonedir)
+ module_hash = module_hash.split()[2]
+
+ # Build new SRC_URI
+ proto = uris[module].split(':', 1)[0]
+ url = uris[module].replace('%s:' % proto, 'gitsm:', 1)
+ url += ';protocol=%s' % proto
+ url += ";name=%s" % module
+ url += ";qbareclone=1;nocheckout=1"
+
+ ld = d.createCopy()
+ # Not necessary to set SRC_URI, since we're passing the URI to
+ # Fetch.
+ #ld.setVar('SRC_URI', url)
+ ld.setVar('SRCREV_%s' % module, module_hash)
+
+ # Workaround for issues with SRCPV/SRCREV_FORMAT errors
+ # error refer to 'multiple' repositories. Only the repository
+ # in the original SRC_URI actually matters...
+ ld.setVar('SRCPV', d.getVar('SRCPV'))
+ ld.setVar('SRCREV_FORMAT', module)
+
+ newfetch = Fetch([url], ld, cache=False)
+ newfetch.download()
+ local_paths[module] = newfetch.localpath(url)
+
+ # Correct the submodule references to the local download version...
+ runfetchcmd("%(basecmd)s config submodule.%(module)s.url %(url)s" % {'basecmd': ud.basecmd, 'module': module, 'url' : local_paths[module]}, d, workdir=ud.clonedir)
+ try:
+ os.mkdir(os.path.join(ud.clonedir, 'modules'))
+ except OSError:
+ pass
+ if not os.path.exists(os.path.join(ud.clonedir, 'modules', paths[module])):
+ os.symlink(local_paths[module], os.path.join(ud.clonedir, 'modules', paths[module]))
- def update_submodules(self, ud, d):
- # We have to convert bare -> full repo, do the submodule bit, then convert back
- tmpclonedir = ud.clonedir + ".tmp"
- gitdir = tmpclonedir + os.sep + ".git"
- bb.utils.remove(tmpclonedir, True)
- os.mkdir(tmpclonedir)
- os.rename(ud.clonedir, gitdir)
- runfetchcmd("sed " + gitdir + "/config -i -e 's/bare.*=.*true/bare = false/'", d)
- runfetchcmd(ud.basecmd + " reset --hard", d, workdir=tmpclonedir)
- runfetchcmd(ud.basecmd + " checkout -f " + ud.revisions[ud.names[0]], d, workdir=tmpclonedir)
- runfetchcmd(ud.basecmd + " submodule update --init --recursive", d, workdir=tmpclonedir)
- self._set_relative_paths(tmpclonedir)
- runfetchcmd("sed " + gitdir + "/config -i -e 's/bare.*=.*false/bare = true/'", d, workdir=tmpclonedir)
- os.rename(gitdir, ud.clonedir,)
- bb.utils.remove(tmpclonedir, True)
+ return True
+
+ def need_update(self, ud, d):
+ main_repo_needs_update = Git.need_update(self, ud, d)
+
+ # First check that the main repository has enough history fetched. If it doesn't, then we don't
+ # even have the .gitmodules and gitlinks for the submodules to attempt asking whether the
+ # submodules' histories are recent enough.
+ if main_repo_needs_update:
+ return True
+
+ # Now check that the submodule histories are new enough. The git-submodule command doesn't have
+ # any clean interface for doing this aside from just attempting the checkout (with network
+ # fetched disabled).
+ return not self.update_submodules(ud, d)
def download(self, ud, d):
Git.download(self, ud, d)
if not ud.shallow or ud.localpath != ud.fullshallow:
- submodules = self.uses_submodules(ud, d, ud.clonedir)
- if submodules:
- self.update_submodules(ud, d)
+ self.update_submodules(ud, d)
+
+ def copy_submodules(self, submodules, ud, destdir, d):
+ if ud.bareclone:
+ repo_conf = destdir
+ else:
+ repo_conf = os.path.join(destdir, '.git')
+
+ if submodules and not os.path.exists(os.path.join(repo_conf, 'modules')):
+ os.mkdir(os.path.join(repo_conf, 'modules'))
+
+ for module in submodules:
+ srcpath = os.path.join(ud.clonedir, 'modules', module)
+ modpath = os.path.join(repo_conf, 'modules', module)
+
+ if os.path.exists(srcpath):
+ if os.path.exists(os.path.join(srcpath, '.git')):
+ srcpath = os.path.join(srcpath, '.git')
+
+ target = modpath
+ if os.path.exists(modpath):
+ target = os.path.dirname(modpath)
+
+ runfetchcmd("cp -fpLR %s %s" % (srcpath, target), d)
+ elif os.path.exists(modpath):
+ # Module already exists, likely unpacked from a shallow mirror clone
+ pass
+ else:
+ # This is fatal, as we do NOT want git-submodule to hit the network
+ raise bb.fetch2.FetchError('Submodule %s does not exist in %s or %s.' % (module, srcpath, modpath))
def clone_shallow_local(self, ud, dest, d):
super(GitSM, self).clone_shallow_local(ud, dest, d)
- runfetchcmd('cp -fpPRH "%s/modules" "%s/"' % (ud.clonedir, os.path.join(dest, '.git')), d)
+ # Copy over the submodules' fetched histories too.
+ repo_conf = os.path.join(dest, '.git')
+
+ submodules = []
+ for name in ud.names:
+ try:
+ gitmodules = runfetchcmd("%s show %s:.gitmodules" % (ud.basecmd, ud.revision), d, quiet=True, workdir=dest)
+ except:
+ # No submodules to update
+ continue
+
+ for line in gitmodules.splitlines():
+ if line.startswith('[submodule'):
+ module = line.split('"')[1]
+ submodules.append(module)
+
+ self.copy_submodules(submodules, ud, dest, d)
def unpack(self, ud, destdir, d):
Git.unpack(self, ud, destdir, d)
- if self.uses_submodules(ud, d, ud.destdir):
- runfetchcmd(ud.basecmd + " checkout " + ud.revisions[ud.names[0]], d, workdir=ud.destdir)
- runfetchcmd(ud.basecmd + " submodule update --init --recursive", d, workdir=ud.destdir)
+ # Copy over the submodules' fetched histories too.
+ if ud.bareclone:
+ repo_conf = ud.destdir
+ else:
+ repo_conf = os.path.join(ud.destdir, '.git')
+
+ submodules = []
+ paths = {}
+ uris = {}
+ local_paths = {}
+ for name in ud.names:
+ try:
+ gitmodules = runfetchcmd("%s show HEAD:.gitmodules" % (ud.basecmd), d, quiet=True, workdir=ud.destdir)
+ except:
+ # No submodules to update
+ continue
+
+ module = ""
+ for line in gitmodules.splitlines():
+ if line.startswith('[submodule'):
+ module = line.split('"')[1]
+ submodules.append(module)
+ elif module and line.strip().startswith('path'):
+ path = line.split('=')[1].strip()
+ paths[module] = path
+ elif module and line.strip().startswith('url'):
+ url = line.split('=')[1].strip()
+ uris[module] = url
+
+ self.copy_submodules(submodules, ud, ud.destdir, d)
+
+ for module in submodules:
+ srcpath = os.path.join(ud.clonedir, 'modules', module)
+ modpath = os.path.join(repo_conf, 'modules', module)
+
+ # Determine (from the submodule) the correct url to reference
+ try:
+ output = runfetchcmd("%(basecmd)s config remote.origin.url" % {'basecmd': ud.basecmd}, d, workdir=modpath)
+ except bb.fetch2.FetchError as e:
+ # No remote url defined in this submodule
+ continue
+
+ local_paths[module] = output
+
+ # Setup the local URL properly (like git submodule init or sync would do...)
+ runfetchcmd("%(basecmd)s config submodule.%(module)s.url %(url)s" % {'basecmd': ud.basecmd, 'module': module, 'url' : local_paths[module]}, d, workdir=ud.destdir)
+
+ # Ensure the submodule repository is NOT set to bare, since we're checking it out...
+ runfetchcmd("%s config core.bare false" % (ud.basecmd), d, quiet=True, workdir=modpath)
+
+ if submodules:
+ # Run submodule update, this sets up the directories -- without touching the config
+ runfetchcmd("%s submodule update --no-fetch" % (ud.basecmd), d, quiet=True, workdir=ud.destdir)
diff --git a/bitbake/lib/bb/fetch2/hg.py b/bitbake/lib/bb/fetch2/hg.py
index d0857e63f73..936d0431125 100644
--- a/bitbake/lib/bb/fetch2/hg.py
+++ b/bitbake/lib/bb/fetch2/hg.py
@@ -80,7 +80,7 @@ class Hg(FetchMethod):
ud.fullmirror = os.path.join(d.getVar("DL_DIR"), mirrortarball)
ud.mirrortarballs = [mirrortarball]
- hgdir = d.getVar("HGDIR") or (d.getVar("DL_DIR") + "/hg/")
+ hgdir = d.getVar("HGDIR") or (d.getVar("DL_DIR") + "/hg")
ud.pkgdir = os.path.join(hgdir, hgsrcname)
ud.moddir = os.path.join(ud.pkgdir, ud.module)
ud.localfile = ud.moddir
diff --git a/bitbake/lib/bb/fetch2/npm.py b/bitbake/lib/bb/fetch2/npm.py
index 730c346a936..408dfc3d030 100644
--- a/bitbake/lib/bb/fetch2/npm.py
+++ b/bitbake/lib/bb/fetch2/npm.py
@@ -32,7 +32,6 @@ from bb.fetch2 import runfetchcmd
from bb.fetch2 import logger
from bb.fetch2 import UnpackError
from bb.fetch2 import ParameterError
-from distutils import spawn
def subprocess_setup():
# Python installs a SIGPIPE handler by default. This is usually not what
diff --git a/bitbake/lib/bb/fetch2/osc.py b/bitbake/lib/bb/fetch2/osc.py
index 2b4f7d9c136..6c60456b53c 100644
--- a/bitbake/lib/bb/fetch2/osc.py
+++ b/bitbake/lib/bb/fetch2/osc.py
@@ -32,8 +32,9 @@ class Osc(FetchMethod):
ud.module = ud.parm["module"]
# Create paths to osc checkouts
+ oscdir = d.getVar("OSCDIR") or (d.getVar("DL_DIR") + "/osc")
relpath = self._strip_leading_slashes(ud.path)
- ud.pkgdir = os.path.join(d.getVar('OSCDIR'), ud.host)
+ ud.pkgdir = os.path.join(oscdir, ud.host)
ud.moddir = os.path.join(ud.pkgdir, relpath, ud.module)
if 'rev' in ud.parm:
@@ -54,7 +55,7 @@ class Osc(FetchMethod):
command is "fetch", "update", "info"
"""
- basecmd = d.expand('${FETCHCMD_osc}')
+ basecmd = d.getVar("FETCHCMD_osc") or "/usr/bin/env osc"
proto = ud.parm.get('protocol', 'ocs')
diff --git a/bitbake/lib/bb/fetch2/perforce.py b/bitbake/lib/bb/fetch2/perforce.py
index 3debad59f48..903a8e61aec 100644
--- a/bitbake/lib/bb/fetch2/perforce.py
+++ b/bitbake/lib/bb/fetch2/perforce.py
@@ -43,13 +43,9 @@ class Perforce(FetchMethod):
provided by the env, use it. If P4PORT is specified by the recipe, use
its values, which may override the settings in P4CONFIG.
"""
- ud.basecmd = d.getVar('FETCHCMD_p4')
- if not ud.basecmd:
- ud.basecmd = "/usr/bin/env p4"
+ ud.basecmd = d.getVar("FETCHCMD_p4") or "/usr/bin/env p4"
- ud.dldir = d.getVar('P4DIR')
- if not ud.dldir:
- ud.dldir = '%s/%s' % (d.getVar('DL_DIR'), 'p4')
+ ud.dldir = d.getVar("P4DIR") or (d.getVar("DL_DIR") + "/p4")
path = ud.url.split('://')[1]
path = path.split(';')[0]
diff --git a/bitbake/lib/bb/fetch2/repo.py b/bitbake/lib/bb/fetch2/repo.py
index c22d9b5578e..8c7e81853a6 100644
--- a/bitbake/lib/bb/fetch2/repo.py
+++ b/bitbake/lib/bb/fetch2/repo.py
@@ -45,6 +45,8 @@ class Repo(FetchMethod):
"master".
"""
+ ud.basecmd = d.getVar("FETCHCMD_repo") or "/usr/bin/env repo"
+
ud.proto = ud.parm.get('protocol', 'git')
ud.branch = ud.parm.get('branch', 'master')
ud.manifest = ud.parm.get('manifest', 'default.xml')
@@ -60,8 +62,8 @@ class Repo(FetchMethod):
logger.debug(1, "%s already exists (or was stashed). Skipping repo init / sync.", ud.localpath)
return
+ repodir = d.getVar("REPODIR") or (d.getVar("DL_DIR") + "/repo")
gitsrcname = "%s%s" % (ud.host, ud.path.replace("/", "."))
- repodir = d.getVar("REPODIR") or os.path.join(d.getVar("DL_DIR"), "repo")
codir = os.path.join(repodir, gitsrcname, ud.manifest)
if ud.user:
@@ -72,11 +74,11 @@ class Repo(FetchMethod):
repodir = os.path.join(codir, "repo")
bb.utils.mkdirhier(repodir)
if not os.path.exists(os.path.join(repodir, ".repo")):
- bb.fetch2.check_network_access(d, "repo init -m %s -b %s -u %s://%s%s%s" % (ud.manifest, ud.branch, ud.proto, username, ud.host, ud.path), ud.url)
- runfetchcmd("repo init -m %s -b %s -u %s://%s%s%s" % (ud.manifest, ud.branch, ud.proto, username, ud.host, ud.path), d, workdir=repodir)
+ bb.fetch2.check_network_access(d, "%s init -m %s -b %s -u %s://%s%s%s" % (ud.basecmd, ud.manifest, ud.branch, ud.proto, username, ud.host, ud.path), ud.url)
+ runfetchcmd("%s init -m %s -b %s -u %s://%s%s%s" % (ud.basecmd, ud.manifest, ud.branch, ud.proto, username, ud.host, ud.path), d, workdir=repodir)
- bb.fetch2.check_network_access(d, "repo sync %s" % ud.url, ud.url)
- runfetchcmd("repo sync", d, workdir=repodir)
+ bb.fetch2.check_network_access(d, "%s sync %s" % (ud.basecmd, ud.url), ud.url)
+ runfetchcmd("%s sync" % ud.basecmd, d, workdir=repodir)
scmdata = ud.parm.get("scmdata", "")
if scmdata == "keep":
diff --git a/bitbake/lib/bb/fetch2/svn.py b/bitbake/lib/bb/fetch2/svn.py
index 3f172eec9b9..ed70bcf8fbb 100644
--- a/bitbake/lib/bb/fetch2/svn.py
+++ b/bitbake/lib/bb/fetch2/svn.py
@@ -49,7 +49,7 @@ class Svn(FetchMethod):
if not "module" in ud.parm:
raise MissingParameterError('module', ud.url)
- ud.basecmd = d.getVar('FETCHCMD_svn')
+ ud.basecmd = d.getVar("FETCHCMD_svn") or "/usr/bin/env svn --non-interactive --trust-server-cert"
ud.module = ud.parm["module"]
@@ -59,8 +59,9 @@ class Svn(FetchMethod):
ud.path_spec = ud.parm["path_spec"]
# Create paths to svn checkouts
+ svndir = d.getVar("SVNDIR") or (d.getVar("DL_DIR") + "/svn")
relpath = self._strip_leading_slashes(ud.path)
- ud.pkgdir = os.path.join(d.expand('${SVNDIR}'), ud.host, relpath)
+ ud.pkgdir = os.path.join(svndir, ud.host, relpath)
ud.moddir = os.path.join(ud.pkgdir, ud.module)
ud.setup_revisions(d)
diff --git a/bitbake/lib/bb/msg.py b/bitbake/lib/bb/msg.py
index f1723be7971..96f077ec49d 100644
--- a/bitbake/lib/bb/msg.py
+++ b/bitbake/lib/bb/msg.py
@@ -40,6 +40,7 @@ class BBLogFormatter(logging.Formatter):
VERBOSE = logging.INFO - 1
NOTE = logging.INFO
PLAIN = logging.INFO + 1
+ VERBNOTE = logging.INFO + 2
ERROR = logging.ERROR
WARNING = logging.WARNING
CRITICAL = logging.CRITICAL
@@ -51,6 +52,7 @@ class BBLogFormatter(logging.Formatter):
VERBOSE: 'NOTE',
NOTE : 'NOTE',
PLAIN : '',
+ VERBNOTE: 'NOTE',
WARNING : 'WARNING',
ERROR : 'ERROR',
CRITICAL: 'ERROR',
@@ -66,6 +68,7 @@ class BBLogFormatter(logging.Formatter):
VERBOSE : BASECOLOR,
NOTE : BASECOLOR,
PLAIN : BASECOLOR,
+ VERBNOTE: BASECOLOR,
WARNING : YELLOW,
ERROR : RED,
CRITICAL: RED,
diff --git a/bitbake/lib/bb/parse/ast.py b/bitbake/lib/bb/parse/ast.py
index 6690dc51c21..9d20c323fee 100644
--- a/bitbake/lib/bb/parse/ast.py
+++ b/bitbake/lib/bb/parse/ast.py
@@ -343,30 +343,31 @@ def runAnonFuncs(d):
def finalize(fn, d, variant = None):
saved_handlers = bb.event.get_handlers().copy()
+ try:
+ for var in d.getVar('__BBHANDLERS', False) or []:
+ # try to add the handler
+ handlerfn = d.getVarFlag(var, "filename", False)
+ if not handlerfn:
+ bb.fatal("Undefined event handler function '%s'" % var)
+ handlerln = int(d.getVarFlag(var, "lineno", False))
+ bb.event.register(var, d.getVar(var, False), (d.getVarFlag(var, "eventmask") or "").split(), handlerfn, handlerln)
- for var in d.getVar('__BBHANDLERS', False) or []:
- # try to add the handler
- handlerfn = d.getVarFlag(var, "filename", False)
- if not handlerfn:
- bb.fatal("Undefined event handler function '%s'" % var)
- handlerln = int(d.getVarFlag(var, "lineno", False))
- bb.event.register(var, d.getVar(var, False), (d.getVarFlag(var, "eventmask") or "").split(), handlerfn, handlerln)
-
- bb.event.fire(bb.event.RecipePreFinalise(fn), d)
+ bb.event.fire(bb.event.RecipePreFinalise(fn), d)
- bb.data.expandKeys(d)
- runAnonFuncs(d)
+ bb.data.expandKeys(d)
+ runAnonFuncs(d)
- tasklist = d.getVar('__BBTASKS', False) or []
- bb.event.fire(bb.event.RecipeTaskPreProcess(fn, list(tasklist)), d)
- bb.build.add_tasks(tasklist, d)
+ tasklist = d.getVar('__BBTASKS', False) or []
+ bb.event.fire(bb.event.RecipeTaskPreProcess(fn, list(tasklist)), d)
+ bb.build.add_tasks(tasklist, d)
- bb.parse.siggen.finalise(fn, d, variant)
+ bb.parse.siggen.finalise(fn, d, variant)
- d.setVar('BBINCLUDED', bb.parse.get_file_depends(d))
+ d.setVar('BBINCLUDED', bb.parse.get_file_depends(d))
- bb.event.fire(bb.event.RecipeParsed(fn), d)
- bb.event.set_handlers(saved_handlers)
+ bb.event.fire(bb.event.RecipeParsed(fn), d)
+ finally:
+ bb.event.set_handlers(saved_handlers)
def _create_variants(datastores, names, function, onlyfinalise):
def create_variant(name, orig_d, arg = None):
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index f2e52cf758c..9ce06c40850 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -94,13 +94,13 @@ class RunQueueStats:
self.active = self.active - 1
self.failed = self.failed + 1
- def taskCompleted(self, number = 1):
- self.active = self.active - number
- self.completed = self.completed + number
+ def taskCompleted(self):
+ self.active = self.active - 1
+ self.completed = self.completed + 1
- def taskSkipped(self, number = 1):
- self.active = self.active + number
- self.skipped = self.skipped + number
+ def taskSkipped(self):
+ self.active = self.active + 1
+ self.skipped = self.skipped + 1
def taskActive(self):
self.active = self.active + 1
@@ -134,6 +134,7 @@ class RunQueueScheduler(object):
self.prio_map = [self.rqdata.runtaskentries.keys()]
self.buildable = []
+ self.skip_maxthread = {}
self.stamps = {}
for tid in self.rqdata.runtaskentries:
(mc, fn, taskname, taskfn) = split_tid_mcfn(tid)
@@ -150,8 +151,25 @@ class RunQueueScheduler(object):
self.buildable = [x for x in self.buildable if x not in self.rq.runq_running]
if not self.buildable:
return None
+
+ # Filter out tasks that have a max number of threads that have been exceeded
+ skip_buildable = {}
+ for running in self.rq.runq_running.difference(self.rq.runq_complete):
+ rtaskname = taskname_from_tid(running)
+ if rtaskname not in self.skip_maxthread:
+ self.skip_maxthread[rtaskname] = self.rq.cfgData.getVarFlag(rtaskname, "number_threads")
+ if not self.skip_maxthread[rtaskname]:
+ continue
+ if rtaskname in skip_buildable:
+ skip_buildable[rtaskname] += 1
+ else:
+ skip_buildable[rtaskname] = 1
+
if len(self.buildable) == 1:
tid = self.buildable[0]
+ taskname = taskname_from_tid(tid)
+ if taskname in skip_buildable and skip_buildable[taskname] >= int(self.skip_maxthread[taskname]):
+ return None
stamp = self.stamps[tid]
if stamp not in self.rq.build_stamps.values():
return tid
@@ -164,6 +182,9 @@ class RunQueueScheduler(object):
best = None
bestprio = None
for tid in self.buildable:
+ taskname = taskname_from_tid(tid)
+ if taskname in skip_buildable and skip_buildable[taskname] >= int(self.skip_maxthread[taskname]):
+ continue
prio = self.rev_prio_map[tid]
if bestprio is None or bestprio > prio:
stamp = self.stamps[tid]
@@ -178,7 +199,7 @@ class RunQueueScheduler(object):
"""
Return the id of the task we should build next
"""
- if self.rq.stats.active < self.rq.number_tasks:
+ if self.rq.can_start_task():
return self.next_buildable_task()
def newbuildable(self, task):
@@ -581,6 +602,19 @@ class RunQueueData:
if t in taskData[mc].taskentries:
depends.add(t)
+ def add_mc_dependencies(mc, tid):
+ mcdeps = taskData[mc].get_mcdepends()
+ for dep in mcdeps:
+ mcdependency = dep.split(':')
+ pn = mcdependency[3]
+ frommc = mcdependency[1]
+ mcdep = mcdependency[2]
+ deptask = mcdependency[4]
+ if mc == frommc:
+ fn = taskData[mcdep].build_targets[pn][0]
+ newdep = '%s:%s' % (fn,deptask)
+ taskData[mc].taskentries[tid].tdepends.append(newdep)
+
for mc in taskData:
for tid in taskData[mc].taskentries:
@@ -597,12 +631,16 @@ class RunQueueData:
if fn in taskData[mc].failed_fns:
continue
+ # We add multiconfig dependencies before processing internal task deps (tdepends)
+ if 'mcdepends' in task_deps and taskname in task_deps['mcdepends']:
+ add_mc_dependencies(mc, tid)
+
# Resolve task internal dependencies
#
# e.g. addtask before X after Y
for t in taskData[mc].taskentries[tid].tdepends:
- (_, depfn, deptaskname, _) = split_tid_mcfn(t)
- depends.add(build_tid(mc, depfn, deptaskname))
+ (depmc, depfn, deptaskname, _) = split_tid_mcfn(t)
+ depends.add(build_tid(depmc, depfn, deptaskname))
# Resolve 'deptask' dependencies
#
@@ -1032,7 +1070,7 @@ class RunQueueData:
msg += "\n%s has unique rprovides:\n %s" % (provfn, "\n ".join(rprovide_results[provfn] - commonrprovs))
if self.warn_multi_bb:
- logger.warning(msg)
+ logger.verbnote(msg)
else:
logger.error(msg)
@@ -1040,7 +1078,7 @@ class RunQueueData:
# Create a whitelist usable by the stamp checks
self.stampfnwhitelist = {}
- for mc in self.taskData:
+ for mc in self.taskData:
self.stampfnwhitelist[mc] = []
for entry in self.stampwhitelist.split():
if entry not in self.taskData[mc].build_targets:
@@ -1072,7 +1110,7 @@ class RunQueueData:
bb.debug(1, "Task %s is marked nostamp, cannot invalidate this task" % taskname)
else:
logger.verbose("Invalidate task %s, %s", taskname, fn)
- bb.parse.siggen.invalidate_task(taskname, self.dataCaches[mc], fn)
+ bb.parse.siggen.invalidate_task(taskname, self.dataCaches[mc], taskfn)
self.init_progress_reporter.next_stage()
@@ -1716,6 +1754,10 @@ class RunQueueExecute:
valid = bb.utils.better_eval(call, locs)
return valid
+ def can_start_task(self):
+ can_start = self.stats.active < self.number_tasks
+ return can_start
+
class RunQueueExecuteDummy(RunQueueExecute):
def __init__(self, rq):
self.rq = rq
@@ -1789,13 +1831,14 @@ class RunQueueExecuteTasks(RunQueueExecute):
bb.build.del_stamp(taskname, self.rqdata.dataCaches[mc], taskfn)
self.rq.scenequeue_covered.remove(tid)
- toremove = covered_remove
+ toremove = covered_remove | self.rq.scenequeue_notcovered
for task in toremove:
logger.debug(1, 'Not skipping task %s due to setsceneverify', task)
while toremove:
covered_remove = []
for task in toremove:
- removecoveredtask(task)
+ if task in self.rq.scenequeue_covered:
+ removecoveredtask(task)
for deptask in self.rqdata.runtaskentries[task].depends:
if deptask not in self.rq.scenequeue_covered:
continue
@@ -1865,14 +1908,13 @@ class RunQueueExecuteTasks(RunQueueExecute):
continue
if revdep in self.runq_buildable:
continue
- alldeps = 1
+ alldeps = True
for dep in self.rqdata.runtaskentries[revdep].depends:
if dep not in self.runq_complete:
- alldeps = 0
- if alldeps == 1:
+ alldeps = False
+ break
+ if alldeps:
self.setbuildable(revdep)
- fn = fn_from_tid(revdep)
- taskname = taskname_from_tid(revdep)
logger.debug(1, "Marking task %s as buildable", revdep)
def task_complete(self, task):
@@ -1896,8 +1938,8 @@ class RunQueueExecuteTasks(RunQueueExecute):
self.setbuildable(task)
bb.event.fire(runQueueTaskSkipped(task, self.stats, self.rq, reason), self.cfgData)
self.task_completeoutright(task)
- self.stats.taskCompleted()
self.stats.taskSkipped()
+ self.stats.taskCompleted()
def execute(self):
"""
@@ -2007,7 +2049,7 @@ class RunQueueExecuteTasks(RunQueueExecute):
self.build_stamps2.append(self.build_stamps[task])
self.runq_running.add(task)
self.stats.taskActive()
- if self.stats.active < self.number_tasks:
+ if self.can_start_task():
return True
if self.stats.active > 0:
@@ -2062,6 +2104,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
# If we don't have any setscene functions, skip this step
if len(self.rqdata.runq_setscene_tids) == 0:
rq.scenequeue_covered = set()
+ rq.scenequeue_notcovered = set()
rq.state = runQueueRunInit
return
@@ -2277,10 +2320,15 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
sq_hash.append(self.rqdata.runtaskentries[tid].hash)
sq_taskname.append(taskname)
sq_task.append(tid)
+
+ self.cooker.data.setVar("BB_SETSCENE_STAMPCURRENT_COUNT", len(stamppresent))
+
call = self.rq.hashvalidate + "(sq_fn, sq_task, sq_hash, sq_hashfn, d)"
locs = { "sq_fn" : sq_fn, "sq_task" : sq_taskname, "sq_hash" : sq_hash, "sq_hashfn" : sq_hashfn, "d" : self.cooker.data }
valid = bb.utils.better_eval(call, locs)
+ self.cooker.data.delVar("BB_SETSCENE_STAMPCURRENT_COUNT")
+
valid_new = stamppresent
for v in valid:
valid_new.append(sq_task[v])
@@ -2342,8 +2390,8 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
def task_failoutright(self, task):
self.runq_running.add(task)
self.runq_buildable.add(task)
- self.stats.taskCompleted()
self.stats.taskSkipped()
+ self.stats.taskCompleted()
self.scenequeue_notcovered.add(task)
self.scenequeue_updatecounters(task, True)
@@ -2351,8 +2399,8 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
self.runq_running.add(task)
self.runq_buildable.add(task)
self.task_completeoutright(task)
- self.stats.taskCompleted()
self.stats.taskSkipped()
+ self.stats.taskCompleted()
def execute(self):
"""
@@ -2362,7 +2410,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
self.rq.read_workers()
task = None
- if self.stats.active < self.number_tasks:
+ if self.can_start_task():
# Find the next setscene to run
for nexttask in self.rqdata.runq_setscene_tids:
if nexttask in self.runq_buildable and nexttask not in self.runq_running and self.stamps[nexttask] not in self.build_stamps.values():
@@ -2421,7 +2469,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
self.build_stamps2.append(self.build_stamps[task])
self.runq_running.add(task)
self.stats.taskActive()
- if self.stats.active < self.number_tasks:
+ if self.can_start_task():
return True
if self.stats.active > 0:
diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py
index 828159ed756..38b923fe2dc 100644
--- a/bitbake/lib/bb/server/process.py
+++ b/bitbake/lib/bb/server/process.py
@@ -377,11 +377,12 @@ class BitBakeServer(object):
if os.path.exists(sockname):
os.unlink(sockname)
+ # Place the log in the builddirectory alongside the lock file
+ logfile = os.path.join(os.path.dirname(self.bitbake_lock.name), "bitbake-cookerdaemon.log")
+
self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
# AF_UNIX has path length issues so chdir here to workaround
cwd = os.getcwd()
- logfile = os.path.join(cwd, "bitbake-cookerdaemon.log")
-
try:
os.chdir(os.path.dirname(sockname))
self.sock.bind(os.path.basename(sockname))
@@ -394,11 +395,16 @@ class BitBakeServer(object):
bb.daemonize.createDaemon(self._startServer, logfile)
self.sock.close()
self.bitbake_lock.close()
+ os.close(self.readypipein)
ready = ConnectionReader(self.readypipe)
r = ready.poll(30)
if r:
- r = ready.get()
+ try:
+ r = ready.get()
+ except EOFError:
+ # Trap the child exitting/closing the pipe and error out
+ r = None
if not r or r != "ready":
ready.close()
bb.error("Unable to start bitbake server")
@@ -424,21 +430,16 @@ class BitBakeServer(object):
bb.error("Server log for this session (%s):\n%s" % (logfile, "".join(lines)))
raise SystemExit(1)
ready.close()
- os.close(self.readypipein)
def _startServer(self):
print(self.start_log_format % (os.getpid(), datetime.datetime.now().strftime(self.start_log_datetime_format)))
server = ProcessServer(self.bitbake_lock, self.sock, self.sockname)
self.configuration.setServerRegIdleCallback(server.register_idle_function)
+ os.close(self.readypipe)
writer = ConnectionWriter(self.readypipein)
- try:
- self.cooker = bb.cooker.BBCooker(self.configuration, self.featureset)
- writer.send("ready")
- except:
- writer.send("fail")
- raise
- finally:
- os.close(self.readypipein)
+ self.cooker = bb.cooker.BBCooker(self.configuration, self.featureset)
+ writer.send("ready")
+ writer.close()
server.cooker = self.cooker
server.server_timeout = self.configuration.server_timeout
server.xmlrpcinterface = self.configuration.xmlrpcinterface
diff --git a/bitbake/lib/bb/siggen.py b/bitbake/lib/bb/siggen.py
index 5ef82d7be0e..e9bb51d736f 100644
--- a/bitbake/lib/bb/siggen.py
+++ b/bitbake/lib/bb/siggen.py
@@ -193,15 +193,24 @@ class SignatureGeneratorBasic(SignatureGenerator):
return taint
def get_taskhash(self, fn, task, deps, dataCache):
+
+ mc = ''
+ if fn.startswith('multiconfig:'):
+ mc = fn.split(':')[1]
k = fn + "." + task
+
data = dataCache.basetaskhash[k]
self.basehash[k] = data
self.runtaskdeps[k] = []
self.file_checksum_values[k] = []
recipename = dataCache.pkg_fn[fn]
-
for dep in sorted(deps, key=clean_basepath):
- depname = dataCache.pkg_fn[self.pkgnameextract.search(dep).group('fn')]
+ pkgname = self.pkgnameextract.search(dep).group('fn')
+ if mc:
+ depmc = pkgname.split(':')[1]
+ if mc != depmc:
+ continue
+ depname = dataCache.pkg_fn[pkgname]
if not self.rundep_check(fn, recipename, task, dep, depname, dataCache):
continue
if dep not in self.taskhash:
@@ -347,7 +356,7 @@ class SignatureGeneratorBasicHash(SignatureGeneratorBasic):
def stampcleanmask(self, stampbase, fn, taskname, extrainfo):
return self.stampfile(stampbase, fn, taskname, extrainfo, clean=True)
-
+
def invalidate_task(self, task, d, fn):
bb.note("Tainting hash to force rebuild of task %s, %s" % (fn, task))
bb.build.write_taint(task, d, fn)
@@ -636,7 +645,7 @@ def compare_sigfiles(a, b, recursecb=None, color=False, collapsed=False):
if collapsed:
output.extend(recout)
else:
- # If a dependent hash changed, might as well print the line above and then defer to the changes in
+ # If a dependent hash changed, might as well print the line above and then defer to the changes in
# that hash since in all likelyhood, they're the same changes this task also saw.
output = [output[-1]] + recout
diff --git a/bitbake/lib/bb/taskdata.py b/bitbake/lib/bb/taskdata.py
index 0ea6c0bfd6c..94e822c485f 100644
--- a/bitbake/lib/bb/taskdata.py
+++ b/bitbake/lib/bb/taskdata.py
@@ -70,6 +70,8 @@ class TaskData:
self.skiplist = skiplist
+ self.mcdepends = []
+
def add_tasks(self, fn, dataCache):
"""
Add tasks for a given fn to the database
@@ -88,6 +90,13 @@ class TaskData:
self.add_extra_deps(fn, dataCache)
+ def add_mcdepends(task):
+ for dep in task_deps['mcdepends'][task].split():
+ if len(dep.split(':')) != 5:
+ bb.msg.fatal("TaskData", "Error for %s:%s[%s], multiconfig dependency %s does not contain exactly four ':' characters.\n Task '%s' should be specified in the form 'multiconfig:fromMC:toMC:packagename:task'" % (fn, task, 'mcdepends', dep, 'mcdepends'))
+ if dep not in self.mcdepends:
+ self.mcdepends.append(dep)
+
# Common code for dep_name/depends = 'depends'/idepends and 'rdepends'/irdepends
def handle_deps(task, dep_name, depends, seen):
if dep_name in task_deps and task in task_deps[dep_name]:
@@ -110,16 +119,20 @@ class TaskData:
parentids = []
for dep in task_deps['parents'][task]:
if dep not in task_deps['tasks']:
- bb.debug(2, "Not adding dependeny of %s on %s since %s does not exist" % (task, dep, dep))
+ bb.debug(2, "Not adding dependency of %s on %s since %s does not exist" % (task, dep, dep))
continue
parentid = "%s:%s" % (fn, dep)
parentids.append(parentid)
self.taskentries[tid].tdepends.extend(parentids)
+
# Touch all intertask dependencies
handle_deps(task, 'depends', self.taskentries[tid].idepends, self.seen_build_target)
handle_deps(task, 'rdepends', self.taskentries[tid].irdepends, self.seen_run_target)
+ if 'mcdepends' in task_deps and task in task_deps['mcdepends']:
+ add_mcdepends(task)
+
# Work out build dependencies
if not fn in self.depids:
dependids = set()
@@ -537,6 +550,9 @@ class TaskData:
provmap[name] = provider[0]
return provmap
+ def get_mcdepends(self):
+ return self.mcdepends
+
def dump_data(self):
"""
Dump some debug information on the internal data structures
diff --git a/bitbake/lib/bb/tests/cooker.py b/bitbake/lib/bb/tests/cooker.py
new file mode 100644
index 00000000000..2b442365060
--- /dev/null
+++ b/bitbake/lib/bb/tests/cooker.py
@@ -0,0 +1,83 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Tests for cooker.py
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+
+import unittest
+import tempfile
+import os
+import bb, bb.cooker
+import re
+import logging
+
+# Cooker tests
+class CookerTest(unittest.TestCase):
+ def setUp(self):
+ # At least one variable needs to be set
+ self.d = bb.data.init()
+ topdir = os.path.join(os.path.dirname(os.path.realpath(__file__)), "testdata/cooker")
+ self.d.setVar('TOPDIR', topdir)
+
+ def test_CookerCollectFiles_sublayers(self):
+ '''Test that a sublayer of an existing layer does not trigger
+ No bb files matched ...'''
+
+ def append_collection(topdir, path, d):
+ collection = path.split('/')[-1]
+ pattern = "^" + topdir + "/" + path + "/"
+ regex = re.compile(pattern)
+ priority = 5
+
+ d.setVar('BBFILE_COLLECTIONS', (d.getVar('BBFILE_COLLECTIONS') or "") + " " + collection)
+ d.setVar('BBFILE_PATTERN_%s' % (collection), pattern)
+ d.setVar('BBFILE_PRIORITY_%s' % (collection), priority)
+
+ return (collection, pattern, regex, priority)
+
+ topdir = self.d.getVar("TOPDIR")
+
+ # Priorities: list of (collection, pattern, regex, priority)
+ bbfile_config_priorities = []
+ # Order is important for this test, shortest to longest is typical failure case
+ bbfile_config_priorities.append( append_collection(topdir, 'first', self.d) )
+ bbfile_config_priorities.append( append_collection(topdir, 'second', self.d) )
+ bbfile_config_priorities.append( append_collection(topdir, 'second/third', self.d) )
+
+ pkgfns = [ topdir + '/first/recipes/sample1_1.0.bb',
+ topdir + '/second/recipes/sample2_1.0.bb',
+ topdir + '/second/third/recipes/sample3_1.0.bb' ]
+
+ class LogHandler(logging.Handler):
+ def __init__(self):
+ logging.Handler.__init__(self)
+ self.logdata = []
+
+ def emit(self, record):
+ self.logdata.append(record.getMessage())
+
+ # Move cooker to use my special logging
+ logger = bb.cooker.logger
+ log_handler = LogHandler()
+ logger.addHandler(log_handler)
+ collection = bb.cooker.CookerCollectFiles(bbfile_config_priorities)
+ collection.collection_priorities(pkgfns, self.d)
+ logger.removeHandler(log_handler)
+
+ # Should be empty (no generated messages)
+ expected = []
+
+ self.assertEqual(log_handler.logdata, expected)
diff --git a/bitbake/lib/bb/tests/fetch.py b/bitbake/lib/bb/tests/fetch.py
index 74859f9d302..9c5601aa4d9 100644
--- a/bitbake/lib/bb/tests/fetch.py
+++ b/bitbake/lib/bb/tests/fetch.py
@@ -402,6 +402,12 @@ class MirrorUriTest(FetcherTest):
: "git://somewhere.org/somedir/mtd-utils.git;tag=1234567890123456789012345678901234567890;protocol=http",
("git://git.invalid.infradead.org/foo/mtd-utils.git;tag=1234567890123456789012345678901234567890", "git://.*/.*", "git://somewhere.org/somedir/MIRRORNAME;protocol=http")
: "git://somewhere.org/somedir/git.invalid.infradead.org.foo.mtd-utils.git;tag=1234567890123456789012345678901234567890;protocol=http",
+ ("http://somewhere.org/somedir1/somedir2/somefile_1.2.3.tar.gz", "http://.*/.*", "http://somewhere2.org")
+ : "http://somewhere2.org/somefile_1.2.3.tar.gz",
+ ("http://somewhere.org/somedir1/somedir2/somefile_1.2.3.tar.gz", "http://.*/.*", "http://somewhere2.org/")
+ : "http://somewhere2.org/somefile_1.2.3.tar.gz",
+ ("git://someserver.org/bitbake;tag=1234567890123456789012345678901234567890;branch=master", "git://someserver.org/bitbake;branch=master", "git://git.openembedded.org/bitbake;protocol=http")
+ : "git://git.openembedded.org/bitbake;tag=1234567890123456789012345678901234567890;branch=master;protocol=http",
#Renaming files doesn't work
#("http://somewhere.org/somedir1/somefile_1.2.3.tar.gz", "http://somewhere.org/somedir1/somefile_1.2.3.tar.gz", "http://somewhere2.org/somedir3/somefile_2.3.4.tar.gz") : "http://somewhere2.org/somedir3/somefile_2.3.4.tar.gz"
@@ -832,7 +838,7 @@ class URLHandle(unittest.TestCase):
# decodeurl and we need to handle them
decodedata = datatable.copy()
decodedata.update({
- "http://somesite.net;someparam=1": ('http', 'somesite.net', '', '', '', {'someparam': '1'}),
+ "http://somesite.net;someparam=1": ('http', 'somesite.net', '/', '', '', {'someparam': '1'}),
})
def test_decodeurl(self):
@@ -861,12 +867,12 @@ class FetchLatestVersionTest(FetcherTest):
("dtc", "git://git.qemu.org/dtc.git", "65cc4d2748a2c2e6f27f1cf39e07a5dbabd80ebf", "")
: "1.4.0",
# combination version pattern
- ("sysprof", "git://git.gnome.org/sysprof", "cd44ee6644c3641507fb53b8a2a69137f2971219", "")
+ ("sysprof", "git://gitlab.gnome.org/GNOME/sysprof;protocol=https", "cd44ee6644c3641507fb53b8a2a69137f2971219", "")
: "1.2.0",
("u-boot-mkimage", "git://git.denx.de/u-boot.git;branch=master;protocol=git", "62c175fbb8a0f9a926c88294ea9f7e88eb898f6c", "")
: "2014.01",
# version pattern "yyyymmdd"
- ("mobile-broadband-provider-info", "git://git.gnome.org/mobile-broadband-provider-info", "4ed19e11c2975105b71b956440acdb25d46a347d", "")
+ ("mobile-broadband-provider-info", "git://gitlab.gnome.org/GNOME/mobile-broadband-provider-info;protocol=https", "4ed19e11c2975105b71b956440acdb25d46a347d", "")
: "20120614",
# packages with a valid UPSTREAM_CHECK_GITTAGREGEX
("xf86-video-omap", "git://anongit.freedesktop.org/xorg/driver/xf86-video-omap", "ae0394e687f1a77e966cf72f895da91840dffb8f", "(?P<pver>(\d+\.(\d\.?)*))")
@@ -1338,6 +1344,9 @@ class GitShallowTest(FetcherTest):
smdir = os.path.join(self.tempdir, 'gitsubmodule')
bb.utils.mkdirhier(smdir)
self.git('init', cwd=smdir)
+ # Make this look like it was cloned from a remote...
+ self.git('config --add remote.origin.url "%s"' % smdir, cwd=smdir)
+ self.git('config --add remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"', cwd=smdir)
self.add_empty_file('asub', cwd=smdir)
self.git('submodule init', cwd=self.srcdir)
diff --git a/bitbake/lib/bb/tests/parse.py b/bitbake/lib/bb/tests/parse.py
index 8f16ba4f4c5..1bc47405d98 100644
--- a/bitbake/lib/bb/tests/parse.py
+++ b/bitbake/lib/bb/tests/parse.py
@@ -44,9 +44,13 @@ C = "3"
"""
def setUp(self):
+ self.origdir = os.getcwd()
self.d = bb.data.init()
bb.parse.siggen = bb.siggen.init(self.d)
+ def tearDown(self):
+ os.chdir(self.origdir)
+
def parsehelper(self, content, suffix = ".bb"):
f = tempfile.NamedTemporaryFile(suffix = suffix)
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py
index 378e699e0c8..73b6cb423b5 100644
--- a/bitbake/lib/bb/utils.py
+++ b/bitbake/lib/bb/utils.py
@@ -497,7 +497,11 @@ def lockfile(name, shared=False, retry=True, block=False):
if statinfo.st_ino == statinfo2.st_ino:
return lf
lf.close()
- except Exception:
+ except OSError as e:
+ if e.errno == errno.EACCES:
+ logger.error("Unable to acquire lock '%s', %s",
+ e.strerror, name)
+ sys.exit(1)
try:
lf.close()
except Exception:
@@ -524,12 +528,17 @@ def md5_file(filename):
"""
Return the hex string representation of the MD5 checksum of filename.
"""
- import hashlib
- m = hashlib.md5()
+ import hashlib, mmap
with open(filename, "rb") as f:
- for line in f:
- m.update(line)
+ m = hashlib.md5()
+ try:
+ with mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) as mm:
+ for chunk in iter(lambda: mm.read(8192), b''):
+ m.update(chunk)
+ except ValueError:
+ # You can't mmap() an empty file so silence this exception
+ pass
return m.hexdigest()
def sha256_file(filename):
@@ -901,6 +910,23 @@ def copyfile(src, dest, newmtime = None, sstat = None):
newmtime = sstat[stat.ST_MTIME]
return newmtime
+def break_hardlinks(src, sstat = None):
+ """
+ Ensures src is the only hardlink to this file. Other hardlinks,
+ if any, are not affected (other than in their st_nlink value, of
+ course). Returns true on success and false on failure.
+
+ """
+ try:
+ if not sstat:
+ sstat = os.lstat(src)
+ except Exception as e:
+ logger.warning("break_hardlinks: stat of %s failed (%s)" % (src, e))
+ return False
+ if sstat[stat.ST_NLINK] == 1:
+ return True
+ return copyfile(src, src, sstat=sstat)
+
def which(path, item, direction = 0, history = False, executable=False):
"""
Locate `item` in the list of paths `path` (colon separated string like $PATH).
@@ -1285,7 +1311,7 @@ def edit_metadata_file(meta_file, variables, varfunc):
return updated
-def edit_bblayers_conf(bblayers_conf, add, remove):
+def edit_bblayers_conf(bblayers_conf, add, remove, edit_cb=None):
"""Edit bblayers.conf, adding and/or removing layers
Parameters:
bblayers_conf: path to bblayers.conf file to edit
@@ -1293,6 +1319,8 @@ def edit_bblayers_conf(bblayers_conf, add, remove):
list to add nothing
remove: layer path (or list of layer paths) to remove; None or
empty list to remove nothing
+ edit_cb: optional callback function that will be called after
+ processing adds/removes once per existing entry.
Returns a tuple:
notadded: list of layers specified to be added but weren't
(because they were already in the list)
@@ -1356,6 +1384,17 @@ def edit_bblayers_conf(bblayers_conf, add, remove):
bblayers.append(addlayer)
del addlayers[:]
+ if edit_cb:
+ newlist = []
+ for layer in bblayers:
+ res = edit_cb(layer, canonicalise_path(layer))
+ if res != layer:
+ newlist.append(res)
+ updated = True
+ else:
+ newlist.append(layer)
+ bblayers = newlist
+
if updated:
if op == '+=' and not bblayers:
bblayers = None
diff --git a/bitbake/lib/bblayers/action.py b/bitbake/lib/bblayers/action.py
index aa575d1c094..a3f658f9312 100644
--- a/bitbake/lib/bblayers/action.py
+++ b/bitbake/lib/bblayers/action.py
@@ -45,7 +45,7 @@ class ActionPlugin(LayerPlugin):
notadded, _ = bb.utils.edit_bblayers_conf(bblayers_conf, layerdirs, None)
if not (args.force or notadded):
try:
- self.tinfoil.parseRecipes()
+ self.tinfoil.run_command('parseConfiguration')
except bb.tinfoil.TinfoilUIException:
# Restore the back up copy of bblayers.conf
shutil.copy2(backup, bblayers_conf)
diff --git a/bitbake/lib/bblayers/layerindex.py b/bitbake/lib/bblayers/layerindex.py
index 9af385db598..9f02a9da2ef 100644
--- a/bitbake/lib/bblayers/layerindex.py
+++ b/bitbake/lib/bblayers/layerindex.py
@@ -1,10 +1,9 @@
+import layerindexlib
+
import argparse
-import http.client
-import json
import logging
import os
import subprocess
-import urllib.parse
from bblayers.action import ActionPlugin
@@ -21,110 +20,6 @@ class LayerIndexPlugin(ActionPlugin):
This class inherits ActionPlugin to get do_add_layer.
"""
- def get_json_data(self, apiurl):
- proxy_settings = os.environ.get("http_proxy", None)
- conn = None
- _parsedurl = urllib.parse.urlparse(apiurl)
- path = _parsedurl.path
- query = _parsedurl.query
-
- def parse_url(url):
- parsedurl = urllib.parse.urlparse(url)
- if parsedurl.netloc[0] == '[':
- host, port = parsedurl.netloc[1:].split(']', 1)
- if ':' in port:
- port = port.rsplit(':', 1)[1]
- else:
- port = None
- else:
- if parsedurl.netloc.count(':') == 1:
- (host, port) = parsedurl.netloc.split(":")
- else:
- host = parsedurl.netloc
- port = None
- return (host, 80 if port is None else int(port))
-
- if proxy_settings is None:
- host, port = parse_url(apiurl)
- conn = http.client.HTTPConnection(host, port)
- conn.request("GET", path + "?" + query)
- else:
- host, port = parse_url(proxy_settings)
- conn = http.client.HTTPConnection(host, port)
- conn.request("GET", apiurl)
-
- r = conn.getresponse()
- if r.status != 200:
- raise Exception("Failed to read " + path + ": %d %s" % (r.status, r.reason))
- return json.loads(r.read().decode())
-
- def get_layer_deps(self, layername, layeritems, layerbranches, layerdependencies, branchnum, selfname=False):
- def layeritems_info_id(items_name, layeritems):
- litems_id = None
- for li in layeritems:
- if li['name'] == items_name:
- litems_id = li['id']
- break
- return litems_id
-
- def layerbranches_info(items_id, layerbranches):
- lbranch = {}
- for lb in layerbranches:
- if lb['layer'] == items_id and lb['branch'] == branchnum:
- lbranch['id'] = lb['id']
- lbranch['vcs_subdir'] = lb['vcs_subdir']
- break
- return lbranch
-
- def layerdependencies_info(lb_id, layerdependencies):
- ld_deps = []
- for ld in layerdependencies:
- if ld['layerbranch'] == lb_id and not ld['dependency'] in ld_deps:
- ld_deps.append(ld['dependency'])
- if not ld_deps:
- logger.error("The dependency of layerDependencies is not found.")
- return ld_deps
-
- def layeritems_info_name_subdir(items_id, layeritems):
- litems = {}
- for li in layeritems:
- if li['id'] == items_id:
- litems['vcs_url'] = li['vcs_url']
- litems['name'] = li['name']
- break
- return litems
-
- if selfname:
- selfid = layeritems_info_id(layername, layeritems)
- lbinfo = layerbranches_info(selfid, layerbranches)
- if lbinfo:
- selfsubdir = lbinfo['vcs_subdir']
- else:
- logger.error("%s is not found in the specified branch" % layername)
- return
- selfurl = layeritems_info_name_subdir(selfid, layeritems)['vcs_url']
- if selfurl:
- return selfurl, selfsubdir
- else:
- logger.error("Cannot get layer %s git repo and subdir" % layername)
- return
- ldict = {}
- itemsid = layeritems_info_id(layername, layeritems)
- if not itemsid:
- return layername, None
- lbid = layerbranches_info(itemsid, layerbranches)
- if lbid:
- lbid = layerbranches_info(itemsid, layerbranches)['id']
- else:
- logger.error("%s is not found in the specified branch" % layername)
- return None, None
- for dependency in layerdependencies_info(lbid, layerdependencies):
- lname = layeritems_info_name_subdir(dependency, layeritems)['name']
- lurl = layeritems_info_name_subdir(dependency, layeritems)['vcs_url']
- lsubdir = layerbranches_info(dependency, layerbranches)['vcs_subdir']
- ldict[lname] = lurl, lsubdir
- return None, ldict
-
def get_fetch_layer(self, fetchdir, url, subdir, fetch_layer):
layername = self.get_layer_name(url)
if os.path.splitext(layername)[1] == '.git':
@@ -136,95 +31,124 @@ class LayerIndexPlugin(ActionPlugin):
result = subprocess.call('git clone %s %s' % (url, repodir), shell = True)
if result:
logger.error("Failed to download %s" % url)
- return None, None
+ return None, None, None
else:
- return layername, layerdir
+ return subdir, layername, layerdir
else:
logger.plain("Repository %s needs to be fetched" % url)
- return layername, layerdir
+ return subdir, layername, layerdir
elif os.path.exists(layerdir):
- return layername, layerdir
+ return subdir, layername, layerdir
else:
logger.error("%s is not in %s" % (url, subdir))
- return None, None
+ return None, None, None
def do_layerindex_fetch(self, args):
"""Fetches a layer from a layer index along with its dependent layers, and adds them to conf/bblayers.conf.
"""
- apiurl = self.tinfoil.config_data.getVar('BBLAYERS_LAYERINDEX_URL')
- if not apiurl:
- logger.error("Cannot get BBLAYERS_LAYERINDEX_URL")
- return 1
+
+ def _construct_url(baseurls, branches):
+ urls = []
+ for baseurl in baseurls:
+ if baseurl[-1] != '/':
+ baseurl += '/'
+
+ if not baseurl.startswith('cooker'):
+ baseurl += "api/"
+
+ if branches:
+ baseurl += ";branch=%s" % ','.join(branches)
+
+ urls.append(baseurl)
+
+ return urls
+
+
+ # Set the default...
+ if args.branch:
+ branches = [args.branch]
else:
- if apiurl[-1] != '/':
- apiurl += '/'
- apiurl += "api/"
- apilinks = self.get_json_data(apiurl)
- branches = self.get_json_data(apilinks['branches'])
-
- branchnum = 0
- for branch in branches:
- if branch['name'] == args.branch:
- branchnum = branch['id']
- break
- if branchnum == 0:
- validbranches = ', '.join([branch['name'] for branch in branches])
- logger.error('Invalid layer branch name "%s". Valid branches: %s' % (args.branch, validbranches))
- return 1
+ branches = (self.tinfoil.config_data.getVar('LAYERSERIES_CORENAMES') or 'master').split()
+ logger.debug(1, 'Trying branches: %s' % branches)
ignore_layers = []
- for collection in self.tinfoil.config_data.getVar('BBFILE_COLLECTIONS').split():
- lname = self.tinfoil.config_data.getVar('BBLAYERS_LAYERINDEX_NAME_%s' % collection)
- if lname:
- ignore_layers.append(lname)
-
if args.ignore:
ignore_layers.extend(args.ignore.split(','))
- layeritems = self.get_json_data(apilinks['layerItems'])
- layerbranches = self.get_json_data(apilinks['layerBranches'])
- layerdependencies = self.get_json_data(apilinks['layerDependencies'])
- invaluenames = []
- repourls = {}
- printlayers = []
-
- def query_dependencies(layers, layeritems, layerbranches, layerdependencies, branchnum):
- depslayer = []
- for layername in layers:
- invaluename, layerdict = self.get_layer_deps(layername, layeritems, layerbranches, layerdependencies, branchnum)
- if layerdict:
- repourls[layername] = self.get_layer_deps(layername, layeritems, layerbranches, layerdependencies, branchnum, selfname=True)
- for layer in layerdict:
- if not layer in ignore_layers:
- depslayer.append(layer)
- printlayers.append((layername, layer, layerdict[layer][0], layerdict[layer][1]))
- if not layer in ignore_layers and not layer in repourls:
- repourls[layer] = (layerdict[layer][0], layerdict[layer][1])
- if invaluename and not invaluename in invaluenames:
- invaluenames.append(invaluename)
- return depslayer
-
- depslayers = query_dependencies(args.layername, layeritems, layerbranches, layerdependencies, branchnum)
- while depslayers:
- depslayer = query_dependencies(depslayers, layeritems, layerbranches, layerdependencies, branchnum)
- depslayers = depslayer
- if invaluenames:
- for invaluename in invaluenames:
- logger.error('Layer "%s" not found in layer index' % invaluename)
- return 1
- logger.plain("%s %s %s %s" % ("Layer".ljust(19), "Required by".ljust(19), "Git repository".ljust(54), "Subdirectory"))
- logger.plain('=' * 115)
- for layername in args.layername:
- layerurl = repourls[layername]
- logger.plain("%s %s %s %s" % (layername.ljust(20), '-'.ljust(20), layerurl[0].ljust(55), layerurl[1]))
- printedlayers = []
- for layer, dependency, gitrepo, subdirectory in printlayers:
- if dependency in printedlayers:
- continue
- logger.plain("%s %s %s %s" % (dependency.ljust(20), layer.ljust(20), gitrepo.ljust(55), subdirectory))
- printedlayers.append(dependency)
-
- if repourls:
+ # Load the cooker DB
+ cookerIndex = layerindexlib.LayerIndex(self.tinfoil.config_data)
+ cookerIndex.load_layerindex('cooker://', load='layerDependencies')
+
+ # Fast path, check if we already have what has been requested!
+ (dependencies, invalidnames) = cookerIndex.find_dependencies(names=args.layername, ignores=ignore_layers)
+ if not args.show_only and not invalidnames:
+ logger.plain("You already have the requested layer(s): %s" % args.layername)
+ return 0
+
+ # The information to show is already in the cookerIndex
+ if invalidnames:
+ # General URL to use to access the layer index
+ # While there is ONE right now, we're expect users could enter several
+ apiurl = self.tinfoil.config_data.getVar('BBLAYERS_LAYERINDEX_URL').split()
+ if not apiurl:
+ logger.error("Cannot get BBLAYERS_LAYERINDEX_URL")
+ return 1
+
+ remoteIndex = layerindexlib.LayerIndex(self.tinfoil.config_data)
+
+ for remoteurl in _construct_url(apiurl, branches):
+ logger.plain("Loading %s..." % remoteurl)
+ remoteIndex.load_layerindex(remoteurl)
+
+ if remoteIndex.is_empty():
+ logger.error("Remote layer index %s is empty for branches %s" % (apiurl, branches))
+ return 1
+
+ lIndex = cookerIndex + remoteIndex
+
+ (dependencies, invalidnames) = lIndex.find_dependencies(names=args.layername, ignores=ignore_layers)
+
+ if invalidnames:
+ for invaluename in invalidnames:
+ logger.error('Layer "%s" not found in layer index' % invaluename)
+ return 1
+
+ logger.plain("%s %s %s" % ("Layer".ljust(49), "Git repository (branch)".ljust(54), "Subdirectory"))
+ logger.plain('=' * 125)
+
+ for deplayerbranch in dependencies:
+ layerBranch = dependencies[deplayerbranch][0]
+
+ # TODO: Determine display behavior
+ # This is the local content, uncomment to hide local
+ # layers from the display.
+ #if layerBranch.index.config['TYPE'] == 'cooker':
+ # continue
+
+ layerDeps = dependencies[deplayerbranch][1:]
+
+ requiredby = []
+ recommendedby = []
+ for dep in layerDeps:
+ if dep.required:
+ requiredby.append(dep.layer.name)
+ else:
+ recommendedby.append(dep.layer.name)
+
+ logger.plain('%s %s %s' % (("%s:%s:%s" %
+ (layerBranch.index.config['DESCRIPTION'],
+ layerBranch.branch.name,
+ layerBranch.layer.name)).ljust(50),
+ ("%s (%s)" % (layerBranch.layer.vcs_url,
+ layerBranch.actual_branch)).ljust(55),
+ layerBranch.vcs_subdir
+ ))
+ if requiredby:
+ logger.plain(' required by: %s' % ' '.join(requiredby))
+ if recommendedby:
+ logger.plain(' recommended by: %s' % ' '.join(recommendedby))
+
+ if dependencies:
fetchdir = self.tinfoil.config_data.getVar('BBLAYERS_FETCH_DIR')
if not fetchdir:
logger.error("Cannot get BBLAYERS_FETCH_DIR")
@@ -232,26 +156,39 @@ class LayerIndexPlugin(ActionPlugin):
if not os.path.exists(fetchdir):
os.makedirs(fetchdir)
addlayers = []
- for repourl, subdir in repourls.values():
- name, layerdir = self.get_fetch_layer(fetchdir, repourl, subdir, not args.show_only)
+
+ for deplayerbranch in dependencies:
+ layerBranch = dependencies[deplayerbranch][0]
+
+ if layerBranch.index.config['TYPE'] == 'cooker':
+ # Anything loaded via cooker is already local, skip it
+ continue
+
+ subdir, name, layerdir = self.get_fetch_layer(fetchdir,
+ layerBranch.layer.vcs_url,
+ layerBranch.vcs_subdir,
+ not args.show_only)
if not name:
# Error already shown
return 1
addlayers.append((subdir, name, layerdir))
if not args.show_only:
- for subdir, name, layerdir in set(addlayers):
+ localargs = argparse.Namespace()
+ localargs.layerdir = []
+ localargs.force = args.force
+ for subdir, name, layerdir in addlayers:
if os.path.exists(layerdir):
if subdir:
- logger.plain("Adding layer \"%s\" to conf/bblayers.conf" % subdir)
+ logger.plain("Adding layer \"%s\" (%s) to conf/bblayers.conf" % (subdir, layerdir))
else:
- logger.plain("Adding layer \"%s\" to conf/bblayers.conf" % name)
- localargs = argparse.Namespace()
- localargs.layerdir = layerdir
- localargs.force = args.force
- self.do_add_layer(localargs)
+ logger.plain("Adding layer \"%s\" (%s) to conf/bblayers.conf" % (name, layerdir))
+ localargs.layerdir.append(layerdir)
else:
break
+ if localargs.layerdir:
+ self.do_add_layer(localargs)
+
def do_layerindex_show_depends(self, args):
"""Find layer dependencies from layer index.
"""
@@ -260,12 +197,12 @@ class LayerIndexPlugin(ActionPlugin):
self.do_layerindex_fetch(args)
def register_commands(self, sp):
- parser_layerindex_fetch = self.add_command(sp, 'layerindex-fetch', self.do_layerindex_fetch)
+ parser_layerindex_fetch = self.add_command(sp, 'layerindex-fetch', self.do_layerindex_fetch, parserecipes=False)
parser_layerindex_fetch.add_argument('-n', '--show-only', help='show dependencies and do nothing else', action='store_true')
- parser_layerindex_fetch.add_argument('-b', '--branch', help='branch name to fetch (default %(default)s)', default='master')
+ parser_layerindex_fetch.add_argument('-b', '--branch', help='branch name to fetch')
parser_layerindex_fetch.add_argument('-i', '--ignore', help='assume the specified layers do not need to be fetched/added (separate multiple layers with commas, no spaces)', metavar='LAYER')
parser_layerindex_fetch.add_argument('layername', nargs='+', help='layer to fetch')
- parser_layerindex_show_depends = self.add_command(sp, 'layerindex-show-depends', self.do_layerindex_show_depends)
- parser_layerindex_show_depends.add_argument('-b', '--branch', help='branch name to fetch (default %(default)s)', default='master')
+ parser_layerindex_show_depends = self.add_command(sp, 'layerindex-show-depends', self.do_layerindex_show_depends, parserecipes=False)
+ parser_layerindex_show_depends.add_argument('-b', '--branch', help='branch name to fetch')
parser_layerindex_show_depends.add_argument('layername', nargs='+', help='layer to query')
diff --git a/bitbake/lib/layerindexlib/README b/bitbake/lib/layerindexlib/README
new file mode 100644
index 00000000000..5d927afdf76
--- /dev/null
+++ b/bitbake/lib/layerindexlib/README
@@ -0,0 +1,28 @@
+The layerindexlib module is designed to permit programs to work directly
+with layer index information. (See layers.openembedded.org...)
+
+The layerindexlib module includes a plugin interface that is used to extend
+the basic functionality. There are two primary plugins available: restapi
+and cooker.
+
+The restapi plugin works with a web based REST Api compatible with the
+layerindex-web project, as well as the ability to store and retried a
+the information for one or more files on the disk.
+
+The cooker plugin works by reading the information from the current build
+project and processing it as if it were a layer index.
+
+
+TODO:
+
+__init__.py:
+Implement local on-disk caching (using the rest api store/load)
+Implement layer index style query operations on a combined index
+
+common.py:
+Stop network access if BB_NO_NETWORK or allowed hosts is restricted
+
+cooker.py:
+Cooker - Implement recipe parsing
+
+
diff --git a/bitbake/lib/layerindexlib/__init__.py b/bitbake/lib/layerindexlib/__init__.py
new file mode 100644
index 00000000000..74f3e2e93e4
--- /dev/null
+++ b/bitbake/lib/layerindexlib/__init__.py
@@ -0,0 +1,1364 @@
+# Copyright (C) 2016-2018 Wind River Systems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+import datetime
+
+import logging
+import imp
+
+from collections import OrderedDict
+from layerindexlib.plugin import LayerIndexPluginUrlError
+
+logger = logging.getLogger('BitBake.layerindexlib')
+
+# Exceptions
+
+class LayerIndexException(Exception):
+ '''LayerIndex Generic Exception'''
+ def __init__(self, message):
+ self.msg = message
+ Exception.__init__(self, message)
+
+ def __str__(self):
+ return self.msg
+
+class LayerIndexUrlError(LayerIndexException):
+ '''Exception raised when unable to access a URL for some reason'''
+ def __init__(self, url, message=""):
+ if message:
+ msg = "Unable to access layerindex url %s: %s" % (url, message)
+ else:
+ msg = "Unable to access layerindex url %s" % url
+ self.url = url
+ LayerIndexException.__init__(self, msg)
+
+class LayerIndexFetchError(LayerIndexException):
+ '''General layerindex fetcher exception when something fails'''
+ def __init__(self, url, message=""):
+ if message:
+ msg = "Unable to fetch layerindex url %s: %s" % (url, message)
+ else:
+ msg = "Unable to fetch layerindex url %s" % url
+ self.url = url
+ LayerIndexException.__init__(self, msg)
+
+
+# Interface to the overall layerindex system
+# the layer may contain one or more individual indexes
+class LayerIndex():
+ def __init__(self, d):
+ if not d:
+ raise LayerIndexException("Must be initialized with bb.data.")
+
+ self.data = d
+
+ # List of LayerIndexObj
+ self.indexes = []
+
+ self.plugins = []
+
+ import bb.utils
+ bb.utils.load_plugins(logger, self.plugins, os.path.dirname(__file__))
+ for plugin in self.plugins:
+ if hasattr(plugin, 'init'):
+ plugin.init(self)
+
+ def __add__(self, other):
+ newIndex = LayerIndex(self.data)
+
+ if self.__class__ != newIndex.__class__ or \
+ other.__class__ != newIndex.__class__:
+ raise TypeException("Can not add different types.")
+
+ for indexEnt in self.indexes:
+ newIndex.indexes.append(indexEnt)
+
+ for indexEnt in other.indexes:
+ newIndex.indexes.append(indexEnt)
+
+ return newIndex
+
+ def _parse_params(self, params):
+ '''Take a parameter list, return a dictionary of parameters.
+
+ Expected to be called from the data of urllib.parse.urlparse(url).params
+
+ If there are two conflicting parameters, last in wins...
+ '''
+
+ param_dict = {}
+ for param in params.split(';'):
+ if not param:
+ continue
+ item = param.split('=', 1)
+ logger.debug(1, item)
+ param_dict[item[0]] = item[1]
+
+ return param_dict
+
+ def _fetch_url(self, url, username=None, password=None, debuglevel=0):
+ '''Fetch data from a specific URL.
+
+ Fetch something from a specific URL. This is specifically designed to
+ fetch data from a layerindex-web instance, but may be useful for other
+ raw fetch actions.
+
+ It is not designed to be used to fetch recipe sources or similar. the
+ regular fetcher class should used for that.
+
+ It is the responsibility of the caller to check BB_NO_NETWORK and related
+ BB_ALLOWED_NETWORKS.
+ '''
+
+ if not url:
+ raise LayerIndexUrlError(url, "empty url")
+
+ import urllib
+ from urllib.request import urlopen, Request
+ from urllib.parse import urlparse
+
+ up = urlparse(url)
+
+ if username:
+ logger.debug(1, "Configuring authentication for %s..." % url)
+ password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()
+ password_mgr.add_password(None, "%s://%s" % (up.scheme, up.netloc), username, password)
+ handler = urllib.request.HTTPBasicAuthHandler(password_mgr)
+ opener = urllib.request.build_opener(handler, urllib.request.HTTPSHandler(debuglevel=debuglevel))
+ else:
+ opener = urllib.request.build_opener(urllib.request.HTTPSHandler(debuglevel=debuglevel))
+
+ urllib.request.install_opener(opener)
+
+ logger.debug(1, "Fetching %s (%s)..." % (url, ["without authentication", "with authentication"][bool(username)]))
+
+ try:
+ res = urlopen(Request(url, headers={'User-Agent': 'Mozilla/5.0 (bitbake/lib/layerindex)'}, unverifiable=True))
+ except urllib.error.HTTPError as e:
+ logger.debug(1, "HTTP Error: %s: %s" % (e.code, e.reason))
+ logger.debug(1, " Requested: %s" % (url))
+ logger.debug(1, " Actual: %s" % (e.geturl()))
+
+ if e.code == 404:
+ logger.debug(1, "Request not found.")
+ raise LayerIndexFetchError(url, e)
+ else:
+ logger.debug(1, "Headers:\n%s" % (e.headers))
+ raise LayerIndexFetchError(url, e)
+ except OSError as e:
+ error = 0
+ reason = ""
+
+ # Process base OSError first...
+ if hasattr(e, 'errno'):
+ error = e.errno
+ reason = e.strerror
+
+ # Process gaierror (socket error) subclass if available.
+ if hasattr(e, 'reason') and hasattr(e.reason, 'errno') and hasattr(e.reason, 'strerror'):
+ error = e.reason.errno
+ reason = e.reason.strerror
+ if error == -2:
+ raise LayerIndexFetchError(url, "%s: %s" % (e, reason))
+
+ if error and error != 0:
+ raise LayerIndexFetchError(url, "Unexpected exception: [Error %s] %s" % (error, reason))
+ else:
+ raise LayerIndexFetchError(url, "Unable to fetch OSError exception: %s" % e)
+
+ finally:
+ logger.debug(1, "...fetching %s (%s), done." % (url, ["without authentication", "with authentication"][bool(username)]))
+
+ return res
+
+
+ def load_layerindex(self, indexURI, load=['layerDependencies', 'recipes', 'machines', 'distros'], reload=False):
+ '''Load the layerindex.
+
+ indexURI - An index to load. (Use multiple calls to load multiple indexes)
+
+ reload - If reload is True, then any previously loaded indexes will be forgotten.
+
+ load - List of elements to load. Default loads all items.
+ Note: plugs may ignore this.
+
+The format of the indexURI:
+
+ <url>;branch=<branch>;cache=<cache>;desc=<description>
+
+ Note: the 'branch' parameter if set can select multiple branches by using
+ comma, such as 'branch=master,morty,pyro'. However, many operations only look
+ at the -first- branch specified!
+
+ The cache value may be undefined, in this case a network failure will
+ result in an error, otherwise the system will look for a file of the cache
+ name and load that instead.
+
+ For example:
+
+ http://layers.openembedded.org/layerindex/api/;branch=master;desc=OpenEmbedded%20Layer%20Index
+ cooker://
+'''
+ if reload:
+ self.indexes = []
+
+ logger.debug(1, 'Loading: %s' % indexURI)
+
+ if not self.plugins:
+ raise LayerIndexException("No LayerIndex Plugins available")
+
+ for plugin in self.plugins:
+ # Check if the plugin was initialized
+ logger.debug(1, 'Trying %s' % plugin.__class__)
+ if not hasattr(plugin, 'type') or not plugin.type:
+ continue
+ try:
+ # TODO: Implement 'cache', for when the network is not available
+ indexEnt = plugin.load_index(indexURI, load)
+ break
+ except LayerIndexPluginUrlError as e:
+ logger.debug(1, "%s doesn't support %s" % (plugin.type, e.url))
+ except NotImplementedError:
+ pass
+ else:
+ logger.debug(1, "No plugins support %s" % indexURI)
+ raise LayerIndexException("No plugins support %s" % indexURI)
+
+ # Mark CONFIG data as something we've added...
+ indexEnt.config['local'] = []
+ indexEnt.config['local'].append('config')
+
+ # No longer permit changes..
+ indexEnt.lockData()
+
+ self.indexes.append(indexEnt)
+
+ def store_layerindex(self, indexURI, index=None):
+ '''Store one layerindex
+
+Typically this will be used to create a local cache file of a remote index.
+
+ file://<path>;branch=<branch>
+
+We can write out in either the restapi or django formats. The split option
+will write out the individual elements split by layer and related components.
+'''
+ if not index:
+ logger.warning('No index to write, nothing to do.')
+ return
+
+ if not self.plugins:
+ raise LayerIndexException("No LayerIndex Plugins available")
+
+ for plugin in self.plugins:
+ # Check if the plugin was initialized
+ logger.debug(1, 'Trying %s' % plugin.__class__)
+ if not hasattr(plugin, 'type') or not plugin.type:
+ continue
+ try:
+ plugin.store_index(indexURI, index)
+ break
+ except LayerIndexPluginUrlError as e:
+ logger.debug(1, "%s doesn't support %s" % (plugin.type, e.url))
+ except NotImplementedError:
+ logger.debug(1, "Store not implemented in %s" % plugin.type)
+ pass
+ else:
+ logger.debug(1, "No plugins support %s" % url)
+ raise LayerIndexException("No plugins support %s" % url)
+
+
+ def is_empty(self):
+ '''Return True or False if the index has any usable data.
+
+We check the indexes entries to see if they have a branch set, as well as
+layerBranches set. If not, they are effectively blank.'''
+
+ found = False
+ for index in self.indexes:
+ if index.__bool__():
+ found = True
+ break
+ return not found
+
+
+ def find_vcs_url(self, vcs_url, branch=None):
+ '''Return the first layerBranch with the given vcs_url
+
+ If a branch has not been specified, we will iterate over the branches in
+ the default configuration until the first vcs_url/branch match.'''
+
+ for index in self.indexes:
+ logger.debug(1, ' searching %s' % index.config['DESCRIPTION'])
+ layerBranch = index.find_vcs_url(vcs_url, [branch])
+ if layerBranch:
+ return layerBranch
+ return None
+
+ def find_collection(self, collection, version=None, branch=None):
+ '''Return the first layerBranch with the given collection name
+
+ If a branch has not been specified, we will iterate over the branches in
+ the default configuration until the first collection/branch match.'''
+
+ logger.debug(1, 'find_collection: %s (%s) %s' % (collection, version, branch))
+
+ if branch:
+ branches = [branch]
+ else:
+ branches = None
+
+ for index in self.indexes:
+ logger.debug(1, ' searching %s' % index.config['DESCRIPTION'])
+ layerBranch = index.find_collection(collection, version, branches)
+ if layerBranch:
+ return layerBranch
+ else:
+ logger.debug(1, 'Collection %s (%s) not found for branch (%s)' % (collection, version, branch))
+ return None
+
+ def find_layerbranch(self, name, branch=None):
+ '''Return the layerBranch item for a given name and branch
+
+ If a branch has not been specified, we will iterate over the branches in
+ the default configuration until the first name/branch match.'''
+
+ if branch:
+ branches = [branch]
+ else:
+ branches = None
+
+ for index in self.indexes:
+ layerBranch = index.find_layerbranch(name, branches)
+ if layerBranch:
+ return layerBranch
+ return None
+
+ def find_dependencies(self, names=None, layerbranches=None, ignores=None):
+ '''Return a tuple of all dependencies and valid items for the list of (layer) names
+
+ The dependency scanning happens depth-first. The returned
+ dependencies should be in the best order to define bblayers.
+
+ names - list of layer names (searching layerItems)
+ branches - when specified (with names) only this list of branches are evaluated
+
+ layerbranches - list of layerbranches to resolve dependencies
+
+ ignores - list of layer names to ignore
+
+ return: (dependencies, invalid)
+
+ dependencies[LayerItem.name] = [ LayerBranch, LayerDependency1, LayerDependency2, ... ]
+ invalid = [ LayerItem.name1, LayerItem.name2, ... ]
+ '''
+
+ invalid = []
+
+ # Convert name/branch to layerbranches
+ if layerbranches is None:
+ layerbranches = []
+
+ for name in names:
+ if ignores and name in ignores:
+ continue
+
+ for index in self.indexes:
+ layerbranch = index.find_layerbranch(name)
+ if not layerbranch:
+ # Not in this index, hopefully it's in another...
+ continue
+ layerbranches.append(layerbranch)
+ break
+ else:
+ invalid.append(name)
+
+
+ def _resolve_dependencies(layerbranches, ignores, dependencies, invalid):
+ for layerbranch in layerbranches:
+ if ignores and layerbranch.layer.name in ignores:
+ continue
+
+ # Get a list of dependencies and then recursively process them
+ for layerdependency in layerbranch.index.layerDependencies_layerBranchId[layerbranch.id]:
+ deplayerbranch = layerdependency.dependency_layerBranch
+
+ if ignores and deplayerbranch.layer.name in ignores:
+ continue
+
+ # This little block is why we can't re-use the LayerIndexObj version,
+ # we must be able to satisfy each dependencies across layer indexes and
+ # use the layer index order for priority. (r stands for replacement below)
+
+ # If this is the primary index, we can fast path and skip this
+ if deplayerbranch.index != self.indexes[0]:
+ # Is there an entry in a prior index for this collection/version?
+ rdeplayerbranch = self.find_collection(
+ collection=deplayerbranch.collection,
+ version=deplayerbranch.version
+ )
+ if rdeplayerbranch != deplayerbranch:
+ logger.debug(1, 'Replaced %s:%s:%s with %s:%s:%s' % \
+ (deplayerbranch.index.config['DESCRIPTION'],
+ deplayerbranch.branch.name,
+ deplayerbranch.layer.name,
+ rdeplayerbranch.index.config['DESCRIPTION'],
+ rdeplayerbranch.branch.name,
+ rdeplayerbranch.layer.name))
+ deplayerbranch = rdeplayerbranch
+
+ # New dependency, we need to resolve it now... depth-first
+ if deplayerbranch.layer.name not in dependencies:
+ (dependencies, invalid) = _resolve_dependencies([deplayerbranch], ignores, dependencies, invalid)
+
+ if deplayerbranch.layer.name not in dependencies:
+ dependencies[deplayerbranch.layer.name] = [deplayerbranch, layerdependency]
+ else:
+ if layerdependency not in dependencies[deplayerbranch.layer.name]:
+ dependencies[deplayerbranch.layer.name].append(layerdependency)
+
+ return (dependencies, invalid)
+
+ # OK, resolve this one...
+ dependencies = OrderedDict()
+ (dependencies, invalid) = _resolve_dependencies(layerbranches, ignores, dependencies, invalid)
+
+ for layerbranch in layerbranches:
+ if layerbranch.layer.name not in dependencies:
+ dependencies[layerbranch.layer.name] = [layerbranch]
+
+ return (dependencies, invalid)
+
+
+ def list_obj(self, object):
+ '''Print via the plain logger object information
+
+This function is used to implement debugging and provide the user info.
+'''
+ for lix in self.indexes:
+ if object not in lix:
+ continue
+
+ logger.plain ('')
+ logger.plain ('Index: %s' % lix.config['DESCRIPTION'])
+
+ output = []
+
+ if object == 'branches':
+ logger.plain ('%s %s %s' % ('{:26}'.format('branch'), '{:34}'.format('description'), '{:22}'.format('bitbake branch')))
+ logger.plain ('{:-^80}'.format(""))
+ for branchid in lix.branches:
+ output.append('%s %s %s' % (
+ '{:26}'.format(lix.branches[branchid].name),
+ '{:34}'.format(lix.branches[branchid].short_description),
+ '{:22}'.format(lix.branches[branchid].bitbake_branch)
+ ))
+ for line in sorted(output):
+ logger.plain (line)
+
+ continue
+
+ if object == 'layerItems':
+ logger.plain ('%s %s' % ('{:26}'.format('layer'), '{:34}'.format('description')))
+ logger.plain ('{:-^80}'.format(""))
+ for layerid in lix.layerItems:
+ output.append('%s %s' % (
+ '{:26}'.format(lix.layerItems[layerid].name),
+ '{:34}'.format(lix.layerItems[layerid].summary)
+ ))
+ for line in sorted(output):
+ logger.plain (line)
+
+ continue
+
+ if object == 'layerBranches':
+ logger.plain ('%s %s %s' % ('{:26}'.format('layer'), '{:34}'.format('description'), '{:19}'.format('collection:version')))
+ logger.plain ('{:-^80}'.format(""))
+ for layerbranchid in lix.layerBranches:
+ output.append('%s %s %s' % (
+ '{:26}'.format(lix.layerBranches[layerbranchid].layer.name),
+ '{:34}'.format(lix.layerBranches[layerbranchid].layer.summary),
+ '{:19}'.format("%s:%s" %
+ (lix.layerBranches[layerbranchid].collection,
+ lix.layerBranches[layerbranchid].version)
+ )
+ ))
+ for line in sorted(output):
+ logger.plain (line)
+
+ continue
+
+ if object == 'layerDependencies':
+ logger.plain ('%s %s %s %s' % ('{:19}'.format('branch'), '{:26}'.format('layer'), '{:11}'.format('dependency'), '{:26}'.format('layer')))
+ logger.plain ('{:-^80}'.format(""))
+ for layerDependency in lix.layerDependencies:
+ if not lix.layerDependencies[layerDependency].dependency_layerBranch:
+ continue
+
+ output.append('%s %s %s %s' % (
+ '{:19}'.format(lix.layerDependencies[layerDependency].layerbranch.branch.name),
+ '{:26}'.format(lix.layerDependencies[layerDependency].layerbranch.layer.name),
+ '{:11}'.format('requires' if lix.layerDependencies[layerDependency].required else 'recommends'),
+ '{:26}'.format(lix.layerDependencies[layerDependency].dependency_layerBranch.layer.name)
+ ))
+ for line in sorted(output):
+ logger.plain (line)
+
+ continue
+
+ if object == 'recipes':
+ logger.plain ('%s %s %s' % ('{:20}'.format('recipe'), '{:10}'.format('version'), 'layer'))
+ logger.plain ('{:-^80}'.format(""))
+ output = []
+ for recipe in lix.recipes:
+ output.append('%s %s %s' % (
+ '{:30}'.format(lix.recipes[recipe].pn),
+ '{:30}'.format(lix.recipes[recipe].pv),
+ lix.recipes[recipe].layer.name
+ ))
+ for line in sorted(output):
+ logger.plain (line)
+
+ continue
+
+ if object == 'machines':
+ logger.plain ('%s %s %s' % ('{:24}'.format('machine'), '{:34}'.format('description'), '{:19}'.format('layer')))
+ logger.plain ('{:-^80}'.format(""))
+ for machine in lix.machines:
+ output.append('%s %s %s' % (
+ '{:24}'.format(lix.machines[machine].name),
+ '{:34}'.format(lix.machines[machine].description)[:34],
+ '{:19}'.format(lix.machines[machine].layerbranch.layer.name)
+ ))
+ for line in sorted(output):
+ logger.plain (line)
+
+ continue
+
+ if object == 'distros':
+ logger.plain ('%s %s %s' % ('{:24}'.format('distro'), '{:34}'.format('description'), '{:19}'.format('layer')))
+ logger.plain ('{:-^80}'.format(""))
+ for distro in lix.distros:
+ output.append('%s %s %s' % (
+ '{:24}'.format(lix.distros[distro].name),
+ '{:34}'.format(lix.distros[distro].description)[:34],
+ '{:19}'.format(lix.distros[distro].layerbranch.layer.name)
+ ))
+ for line in sorted(output):
+ logger.plain (line)
+
+ continue
+
+ logger.plain ('')
+
+
+# This class holds a single layer index instance
+# The LayerIndexObj is made up of dictionary of elements, such as:
+# index['config'] - configuration data for this index
+# index['branches'] - dictionary of Branch objects, by id number
+# index['layerItems'] - dictionary of layerItem objects, by id number
+# ...etc... (See: http://layers.openembedded.org/layerindex/api/)
+#
+# The class needs to manage the 'index' entries and allow easily adding
+# of new items, as well as simply loading of the items.
+class LayerIndexObj():
+ def __init__(self):
+ super().__setattr__('_index', {})
+ super().__setattr__('_lock', False)
+
+ def __bool__(self):
+ '''False if the index is effectively empty
+
+ We check the index to see if it has a branch set, as well as
+ layerbranches set. If not, it is effectively blank.'''
+
+ if not bool(self._index):
+ return False
+
+ try:
+ if self.branches and self.layerBranches:
+ return True
+ except AttributeError:
+ pass
+
+ return False
+
+ def __getattr__(self, name):
+ if name.startswith('_'):
+ return super().__getattribute__(name)
+
+ if name not in self._index:
+ raise AttributeError('%s not in index datastore' % name)
+
+ return self._index[name]
+
+ def __setattr__(self, name, value):
+ if self.isLocked():
+ raise TypeError("Can not set attribute '%s': index is locked" % name)
+
+ if name.startswith('_'):
+ super().__setattr__(name, value)
+ return
+
+ self._index[name] = value
+
+ def __delattr__(self, name):
+ if self.isLocked():
+ raise TypeError("Can not delete attribute '%s': index is locked" % name)
+
+ if name.startswith('_'):
+ super().__delattr__(name)
+
+ self._index.pop(name)
+
+ def lockData(self):
+ '''Lock data object (make it readonly)'''
+ super().__setattr__("_lock", True)
+
+ def unlockData(self):
+ '''unlock data object (make it readonly)'''
+ super().__setattr__("_lock", False)
+
+ # When the data is unlocked, we have to clear the caches, as
+ # modification is allowed!
+ del(self._layerBranches_layerId_branchId)
+ del(self._layerDependencies_layerBranchId)
+ del(self._layerBranches_vcsUrl)
+
+ def isLocked(self):
+ '''Is this object locked (readonly)?'''
+ return self._lock
+
+ def add_element(self, indexname, objs):
+ '''Add a layer index object to index.<indexname>'''
+ if indexname not in self._index:
+ self._index[indexname] = {}
+
+ for obj in objs:
+ if obj.id in self._index[indexname]:
+ if self._index[indexname][obj.id] == obj:
+ continue
+ raise LayerIndexError('Conflict adding object %s(%s) to index' % (indexname, obj.id))
+ self._index[indexname][obj.id] = obj
+
+ def add_raw_element(self, indexname, objtype, rawobjs):
+ '''Convert a raw layer index data item to a layer index item object and add to the index'''
+ objs = []
+ for entry in rawobjs:
+ objs.append(objtype(self, entry))
+ self.add_element(indexname, objs)
+
+ # Quick lookup table for searching layerId and branchID combos
+ @property
+ def layerBranches_layerId_branchId(self):
+ def createCache(self):
+ cache = {}
+ for layerbranchid in self.layerBranches:
+ layerbranch = self.layerBranches[layerbranchid]
+ cache["%s:%s" % (layerbranch.layer_id, layerbranch.branch_id)] = layerbranch
+ return cache
+
+ if self.isLocked():
+ cache = getattr(self, '_layerBranches_layerId_branchId', None)
+ else:
+ cache = None
+
+ if not cache:
+ cache = createCache(self)
+
+ if self.isLocked():
+ super().__setattr__('_layerBranches_layerId_branchId', cache)
+
+ return cache
+
+ # Quick lookup table for finding all dependencies of a layerBranch
+ @property
+ def layerDependencies_layerBranchId(self):
+ def createCache(self):
+ cache = {}
+ # This ensures empty lists for all branchids
+ for layerbranchid in self.layerBranches:
+ cache[layerbranchid] = []
+
+ for layerdependencyid in self.layerDependencies:
+ layerdependency = self.layerDependencies[layerdependencyid]
+ cache[layerdependency.layerbranch_id].append(layerdependency)
+ return cache
+
+ if self.isLocked():
+ cache = getattr(self, '_layerDependencies_layerBranchId', None)
+ else:
+ cache = None
+
+ if not cache:
+ cache = createCache(self)
+
+ if self.isLocked():
+ super().__setattr__('_layerDependencies_layerBranchId', cache)
+
+ return cache
+
+ # Quick lookup table for finding all instances of a vcs_url
+ @property
+ def layerBranches_vcsUrl(self):
+ def createCache(self):
+ cache = {}
+ for layerbranchid in self.layerBranches:
+ layerbranch = self.layerBranches[layerbranchid]
+ if layerbranch.layer.vcs_url not in cache:
+ cache[layerbranch.layer.vcs_url] = [layerbranch]
+ else:
+ cache[layerbranch.layer.vcs_url].append(layerbranch)
+ return cache
+
+ if self.isLocked():
+ cache = getattr(self, '_layerBranches_vcsUrl', None)
+ else:
+ cache = None
+
+ if not cache:
+ cache = createCache(self)
+
+ if self.isLocked():
+ super().__setattr__('_layerBranches_vcsUrl', cache)
+
+ return cache
+
+
+ def find_vcs_url(self, vcs_url, branches=None):
+ ''''Return the first layerBranch with the given vcs_url
+
+ If a list of branches has not been specified, we will iterate on
+ all branches until the first vcs_url is found.'''
+
+ if not self.__bool__():
+ return None
+
+ for layerbranch in self.layerBranches_vcsUrl:
+ if branches and layerbranch.branch.name not in branches:
+ continue
+
+ return layerbranch
+
+ return None
+
+
+ def find_collection(self, collection, version=None, branches=None):
+ '''Return the first layerBranch with the given collection name
+
+ If a list of branches has not been specified, we will iterate on
+ all branches until the first collection is found.'''
+
+ if not self.__bool__():
+ return None
+
+ for layerbranchid in self.layerBranches:
+ layerbranch = self.layerBranches[layerbranchid]
+ if branches and layerbranch.branch.name not in branches:
+ continue
+
+ if layerbranch.collection == collection and \
+ (version is None or version == layerbranch.version):
+ return layerbranch
+
+ return None
+
+
+ def find_layerbranch(self, name, branches=None):
+ '''Return the first layerbranch whose layer name matches
+
+ If a list of branches has not been specified, we will iterate on
+ all branches until the first layer with that name is found.'''
+
+ if not self.__bool__():
+ return None
+
+ for layerbranchid in self.layerBranches:
+ layerbranch = self.layerBranches[layerbranchid]
+ if branches and layerbranch.branch.name not in branches:
+ continue
+
+ if layerbranch.layer.name == name:
+ return layerbranch
+
+ return None
+
+ def find_dependencies(self, names=None, branches=None, layerBranches=None, ignores=None):
+ '''Return a tuple of all dependencies and valid items for the list of (layer) names
+
+ The dependency scanning happens depth-first. The returned
+ dependencies should be in the best order to define bblayers.
+
+ names - list of layer names (searching layerItems)
+ branches - when specified (with names) only this list of branches are evaluated
+
+ layerBranches - list of layerBranches to resolve dependencies
+
+ ignores - list of layer names to ignore
+
+ return: (dependencies, invalid)
+
+ dependencies[LayerItem.name] = [ LayerBranch, LayerDependency1, LayerDependency2, ... ]
+ invalid = [ LayerItem.name1, LayerItem.name2, ... ]'''
+
+ invalid = []
+
+ # Convert name/branch to layerBranches
+ if layerbranches is None:
+ layerbranches = []
+
+ for name in names:
+ if ignores and name in ignores:
+ continue
+
+ layerbranch = self.find_layerbranch(name, branches)
+ if not layerbranch:
+ invalid.append(name)
+ else:
+ layerbranches.append(layerbranch)
+
+ for layerbranch in layerbranches:
+ if layerbranch.index != self:
+ raise LayerIndexException("Can not resolve dependencies across indexes with this class function!")
+
+ def _resolve_dependencies(layerbranches, ignores, dependencies, invalid):
+ for layerbranch in layerbranches:
+ if ignores and layerBranch.layer.name in ignores:
+ continue
+
+ for layerdependency in layerbranch.index.layerDependencies_layerBranchId[layerBranch.id]:
+ deplayerbranch = layerDependency.dependency_layerBranch
+
+ if ignores and deplayerbranch.layer.name in ignores:
+ continue
+
+ # New dependency, we need to resolve it now... depth-first
+ if deplayerbranch.layer.name not in dependencies:
+ (dependencies, invalid) = _resolve_dependencies([deplayerbranch], ignores, dependencies, invalid)
+
+ if deplayerbranch.layer.name not in dependencies:
+ dependencies[deplayerbranch.layer.name] = [deplayerbranch, layerdependency]
+ else:
+ if layerdependency not in dependencies[deplayerbranch.layer.name]:
+ dependencies[deplayerbranch.layer.name].append(layerdependency)
+
+ return (dependencies, invalid)
+
+ # OK, resolve this one...
+ dependencies = OrderedDict()
+ (dependencies, invalid) = _resolve_dependencies(layerbranches, ignores, dependencies, invalid)
+
+ # Is this item already in the list, if not add it
+ for layerbranch in layerbranches:
+ if layerbranch.layer.name not in dependencies:
+ dependencies[layerbranch.layer.name] = [layerbranch]
+
+ return (dependencies, invalid)
+
+
+# Define a basic LayerIndexItemObj. This object forms the basis for all other
+# objects. The raw Layer Index data is stored in the _data element, but we
+# do not want users to access data directly. So wrap this and protect it
+# from direct manipulation.
+#
+# It is up to the insantiators of the objects to fill them out, and once done
+# lock the objects to prevent further accidently manipulation.
+#
+# Using the getattr, setattr and properties we can access and manipulate
+# the data within the data element.
+class LayerIndexItemObj():
+ def __init__(self, index, data=None, lock=False):
+ if data is None:
+ data = {}
+
+ if type(data) != type(dict()):
+ raise TypeError('data (%s) is not a dict' % type(data))
+
+ super().__setattr__('_lock', lock)
+ super().__setattr__('index', index)
+ super().__setattr__('_data', data)
+
+ def __eq__(self, other):
+ if self.__class__ != other.__class__:
+ return False
+ res=(self._data == other._data)
+ return res
+
+ def __bool__(self):
+ return bool(self._data)
+
+ def __getattr__(self, name):
+ # These are internal to THIS class, and not part of data
+ if name == "index" or name.startswith('_'):
+ return super().__getattribute__(name)
+
+ if name not in self._data:
+ raise AttributeError('%s not in datastore' % name)
+
+ return self._data[name]
+
+ def _setattr(self, name, value, prop=True):
+ '''__setattr__ like function, but with control over property object behavior'''
+ if self.isLocked():
+ raise TypeError("Can not set attribute '%s': Object data is locked" % name)
+
+ if name.startswith('_'):
+ super().__setattr__(name, value)
+ return
+
+ # Since __setattr__ runs before properties, we need to check if
+ # there is a setter property and then execute it
+ # ... or return self._data[name]
+ propertyobj = getattr(self.__class__, name, None)
+ if prop and isinstance(propertyobj, property):
+ if propertyobj.fset:
+ propertyobj.fset(self, value)
+ else:
+ raise AttributeError('Attribute %s is readonly, and may not be set' % name)
+ else:
+ self._data[name] = value
+
+ def __setattr__(self, name, value):
+ self._setattr(name, value, prop=True)
+
+ def _delattr(self, name, prop=True):
+ # Since __delattr__ runs before properties, we need to check if
+ # there is a deleter property and then execute it
+ # ... or we pop it ourselves..
+ propertyobj = getattr(self.__class__, name, None)
+ if prop and isinstance(propertyobj, property):
+ if propertyobj.fdel:
+ propertyobj.fdel(self)
+ else:
+ raise AttributeError('Attribute %s is readonly, and may not be deleted' % name)
+ else:
+ self._data.pop(name)
+
+ def __delattr__(self, name):
+ self._delattr(name, prop=True)
+
+ def lockData(self):
+ '''Lock data object (make it readonly)'''
+ super().__setattr__("_lock", True)
+
+ def unlockData(self):
+ '''unlock data object (make it readonly)'''
+ super().__setattr__("_lock", False)
+
+ def isLocked(self):
+ '''Is this object locked (readonly)?'''
+ return self._lock
+
+# Branch object
+class Branch(LayerIndexItemObj):
+ def define_data(self, id, name, bitbake_branch,
+ short_description=None, sort_priority=1,
+ updates_enabled=True, updated=None,
+ update_environment=None):
+ self.id = id
+ self.name = name
+ self.bitbake_branch = bitbake_branch
+ self.short_description = short_description or name
+ self.sort_priority = sort_priority
+ self.updates_enabled = updates_enabled
+ self.updated = updated or datetime.datetime.today().isoformat()
+ self.update_environment = update_environment
+
+ @property
+ def name(self):
+ return self.__getattr__('name')
+
+ @name.setter
+ def name(self, value):
+ self._data['name'] = value
+
+ if self.bitbake_branch == value:
+ self.bitbake_branch = ""
+
+ @name.deleter
+ def name(self):
+ self._delattr('name', prop=False)
+
+ @property
+ def bitbake_branch(self):
+ try:
+ return self.__getattr__('bitbake_branch')
+ except AttributeError:
+ return self.name
+
+ @bitbake_branch.setter
+ def bitbake_branch(self, value):
+ if self.name == value:
+ self._data['bitbake_branch'] = ""
+ else:
+ self._data['bitbake_branch'] = value
+
+ @bitbake_branch.deleter
+ def bitbake_branch(self):
+ self._delattr('bitbake_branch', prop=False)
+
+
+class LayerItem(LayerIndexItemObj):
+ def define_data(self, id, name, status='P',
+ layer_type='A', summary=None,
+ description=None,
+ vcs_url=None, vcs_web_url=None,
+ vcs_web_tree_base_url=None,
+ vcs_web_file_base_url=None,
+ usage_url=None,
+ mailing_list_url=None,
+ index_preference=1,
+ classic=False,
+ updated=None):
+ self.id = id
+ self.name = name
+ self.status = status
+ self.layer_type = layer_type
+ self.summary = summary or name
+ self.description = description or summary or name
+ self.vcs_url = vcs_url
+ self.vcs_web_url = vcs_web_url
+ self.vcs_web_tree_base_url = vcs_web_tree_base_url
+ self.vcs_web_file_base_url = vcs_web_file_base_url
+ self.index_preference = index_preference
+ self.classic = classic
+ self.updated = updated or datetime.datetime.today().isoformat()
+
+
+class LayerBranch(LayerIndexItemObj):
+ def define_data(self, id, collection, version, layer, branch,
+ vcs_subdir="", vcs_last_fetch=None,
+ vcs_last_rev=None, vcs_last_commit=None,
+ actual_branch="",
+ updated=None):
+ self.id = id
+ self.collection = collection
+ self.version = version
+ if type(layer) != type(LayerItem):
+ self.layer_id = layer
+ else:
+ self.layer = layer
+
+ if type(branch) != type(Branch):
+ self.branch_id = branch
+ else:
+ self.branch = branch
+
+ self.vcs_subdir = vcs_subdir
+ self.vcs_last_fetch = vcs_last_fetch
+ self.vcs_last_rev = vcs_last_rev
+ self.vcs_last_commit = vcs_last_commit
+ self.actual_branch = actual_branch
+ self.updated = updated or datetime.datetime.today().isoformat()
+
+ # This is a little odd, the _data attribute is 'layer', but it's really
+ # referring to the layer id.. so lets adjust this to make it useful
+ @property
+ def layer_id(self):
+ return self.__getattr__('layer')
+
+ @layer_id.setter
+ def layer_id(self, value):
+ self._setattr('layer', value, prop=False)
+
+ @layer_id.deleter
+ def layer_id(self):
+ self._delattr('layer', prop=False)
+
+ @property
+ def layer(self):
+ try:
+ return self.index.layerItems[self.layer_id]
+ except KeyError:
+ raise AttributeError('Unable to find layerItems in index to map layer_id %s' % self.layer_id)
+ except IndexError:
+ raise AttributeError('Unable to find layer_id %s in index layerItems' % self.layer_id)
+
+ @layer.setter
+ def layer(self, value):
+ if type(value) != type(LayerItem):
+ raise TypeError('value is not a LayerItem')
+ if self.index != value.index:
+ raise AttributeError('Object and value do not share the same index and thus key set.')
+ self.layer_id = value.id
+
+ @layer.deleter
+ def layer(self):
+ del self.layer_id
+
+ @property
+ def branch_id(self):
+ return self.__getattr__('branch')
+
+ @branch_id.setter
+ def branch_id(self, value):
+ self._setattr('branch', value, prop=False)
+
+ @branch_id.deleter
+ def branch_id(self):
+ self._delattr('branch', prop=False)
+
+ @property
+ def branch(self):
+ try:
+ logger.debug(1, "Get branch object from branches[%s]" % (self.branch_id))
+ return self.index.branches[self.branch_id]
+ except KeyError:
+ raise AttributeError('Unable to find branches in index to map branch_id %s' % self.branch_id)
+ except IndexError:
+ raise AttributeError('Unable to find branch_id %s in index branches' % self.branch_id)
+
+ @branch.setter
+ def branch(self, value):
+ if type(value) != type(LayerItem):
+ raise TypeError('value is not a LayerItem')
+ if self.index != value.index:
+ raise AttributeError('Object and value do not share the same index and thus key set.')
+ self.branch_id = value.id
+
+ @branch.deleter
+ def branch(self):
+ del self.branch_id
+
+ @property
+ def actual_branch(self):
+ if self.__getattr__('actual_branch'):
+ return self.__getattr__('actual_branch')
+ else:
+ return self.branch.name
+
+ @actual_branch.setter
+ def actual_branch(self, value):
+ logger.debug(1, "Set actual_branch to %s .. name is %s" % (value, self.branch.name))
+ if value != self.branch.name:
+ self._setattr('actual_branch', value, prop=False)
+ else:
+ self._setattr('actual_branch', '', prop=False)
+
+ @actual_branch.deleter
+ def actual_branch(self):
+ self._delattr('actual_branch', prop=False)
+
+# Extend LayerIndexItemObj with common LayerBranch manipulations
+# All of the remaining LayerIndex objects refer to layerbranch, and it is
+# up to the user to follow that back through the LayerBranch object into
+# the layer object to get various attributes. So add an intermediate set
+# of attributes that can easily get us the layerbranch as well as layer.
+
+class LayerIndexItemObj_LayerBranch(LayerIndexItemObj):
+ @property
+ def layerbranch_id(self):
+ return self.__getattr__('layerbranch')
+
+ @layerbranch_id.setter
+ def layerbranch_id(self, value):
+ self._setattr('layerbranch', value, prop=False)
+
+ @layerbranch_id.deleter
+ def layerbranch_id(self):
+ self._delattr('layerbranch', prop=False)
+
+ @property
+ def layerbranch(self):
+ try:
+ return self.index.layerBranches[self.layerbranch_id]
+ except KeyError:
+ raise AttributeError('Unable to find layerBranches in index to map layerbranch_id %s' % self.layerbranch_id)
+ except IndexError:
+ raise AttributeError('Unable to find layerbranch_id %s in index branches' % self.layerbranch_id)
+
+ @layerbranch.setter
+ def layerbranch(self, value):
+ if type(value) != type(LayerBranch):
+ raise TypeError('value (%s) is not a layerBranch' % type(value))
+ if self.index != value.index:
+ raise AttributeError('Object and value do not share the same index and thus key set.')
+ self.layerbranch_id = value.id
+
+ @layerbranch.deleter
+ def layerbranch(self):
+ del self.layerbranch_id
+
+ @property
+ def layer_id(self):
+ return self.layerbranch.layer_id
+
+ # Doesn't make sense to set or delete layer_id
+
+ @property
+ def layer(self):
+ return self.layerbranch.layer
+
+ # Doesn't make sense to set or delete layer
+
+
+class LayerDependency(LayerIndexItemObj_LayerBranch):
+ def define_data(self, id, layerbranch, dependency, required=True):
+ self.id = id
+ if type(layerbranch) != type(LayerBranch):
+ self.layerbranch_id = layerbranch
+ else:
+ self.layerbranch = layerbranch
+ if type(dependency) != type(LayerDependency):
+ self.dependency_id = dependency
+ else:
+ self.dependency = dependency
+ self.required = required
+
+ @property
+ def dependency_id(self):
+ return self.__getattr__('dependency')
+
+ @dependency_id.setter
+ def dependency_id(self, value):
+ self._setattr('dependency', value, prop=False)
+
+ @dependency_id.deleter
+ def dependency_id(self):
+ self._delattr('dependency', prop=False)
+
+ @property
+ def dependency(self):
+ try:
+ return self.index.layerItems[self.dependency_id]
+ except KeyError:
+ raise AttributeError('Unable to find layerItems in index to map layerbranch_id %s' % self.dependency_id)
+ except IndexError:
+ raise AttributeError('Unable to find dependency_id %s in index layerItems' % self.dependency_id)
+
+ @dependency.setter
+ def dependency(self, value):
+ if type(value) != type(LayerDependency):
+ raise TypeError('value (%s) is not a dependency' % type(value))
+ if self.index != value.index:
+ raise AttributeError('Object and value do not share the same index and thus key set.')
+ self.dependency_id = value.id
+
+ @dependency.deleter
+ def dependency(self):
+ self._delattr('dependency', prop=False)
+
+ @property
+ def dependency_layerBranch(self):
+ layerid = self.dependency_id
+ branchid = self.layerbranch.branch_id
+
+ try:
+ return self.index.layerBranches_layerId_branchId["%s:%s" % (layerid, branchid)]
+ except IndexError:
+ # layerBranches_layerId_branchId -- but not layerId:branchId
+ raise AttributeError('Unable to find layerId:branchId %s:%s in index layerBranches_layerId_branchId' % (layerid, branchid))
+ except KeyError:
+ raise AttributeError('Unable to find layerId:branchId %s:%s in layerItems and layerBranches' % (layerid, branchid))
+
+ # dependency_layerBranch doesn't make sense to set or del
+
+
+class Recipe(LayerIndexItemObj_LayerBranch):
+ def define_data(self, id,
+ filename, filepath, pn, pv, layerbranch,
+ summary="", description="", section="", license="",
+ homepage="", bugtracker="", provides="", bbclassextend="",
+ inherits="", blacklisted="", updated=None):
+ self.id = id
+ self.filename = filename
+ self.filepath = filepath
+ self.pn = pn
+ self.pv = pv
+ self.summary = summary
+ self.description = description
+ self.section = section
+ self.license = license
+ self.homepage = homepage
+ self.bugtracker = bugtracker
+ self.provides = provides
+ self.bbclassextend = bbclassextend
+ self.inherits = inherits
+ self.updated = updated or datetime.datetime.today().isoformat()
+ self.blacklisted = blacklisted
+ if type(layerbranch) != type(LayerBranch):
+ self.layerbranch_id = layerbranch
+ else:
+ self.layerbranch = layerbranch
+
+ @property
+ def fullpath(self):
+ return os.path.join(self.filepath, self.filename)
+
+ # Set would need to understand how to split it
+ # del would we del both parts?
+
+ @property
+ def inherits(self):
+ if 'inherits' not in self._data:
+ # Older indexes may not have this, so emulate it
+ if '-image-' in self.pn:
+ return 'image'
+ return self.__getattr__('inherits')
+
+ @inherits.setter
+ def inherits(self, value):
+ return self._setattr('inherits', value, prop=False)
+
+ @inherits.deleter
+ def inherits(self):
+ return self._delattr('inherits', prop=False)
+
+
+class Machine(LayerIndexItemObj_LayerBranch):
+ def define_data(self, id,
+ name, description, layerbranch,
+ updated=None):
+ self.id = id
+ self.name = name
+ self.description = description
+ if type(layerbranch) != type(LayerBranch):
+ self.layerbranch_id = layerbranch
+ else:
+ self.layerbranch = layerbranch
+ self.updated = updated or datetime.datetime.today().isoformat()
+
+class Distro(LayerIndexItemObj_LayerBranch):
+ def define_data(self, id,
+ name, description, layerbranch,
+ updated=None):
+ self.id = id
+ self.name = name
+ self.description = description
+ if type(layerbranch) != type(LayerBranch):
+ self.layerbranch_id = layerbranch
+ else:
+ self.layerbranch = layerbranch
+ self.updated = updated or datetime.datetime.today().isoformat()
+
+
+# When performing certain actions, we may need to sort the data.
+# This will allow us to keep it consistent from run to run.
+def sort_entry(item):
+ newitem = item
+ try:
+ if type(newitem) == type(dict()):
+ newitem = OrderedDict(sorted(newitem.items(), key=lambda t: t[0]))
+ for index in newitem:
+ newitem[index] = sort_entry(newitem[index])
+ elif type(newitem) == type(list()):
+ newitem.sort(key=lambda obj: obj['id'])
+ for index, _ in enumerate(newitem):
+ newitem[index] = sort_entry(newitem[index])
+ except:
+ logger.error('Sort failed for item %s' % type(item))
+ pass
+
+ return newitem
diff --git a/bitbake/lib/layerindexlib/cooker.py b/bitbake/lib/layerindexlib/cooker.py
new file mode 100644
index 00000000000..248a5977544
--- /dev/null
+++ b/bitbake/lib/layerindexlib/cooker.py
@@ -0,0 +1,341 @@
+# Copyright (C) 2016-2018 Wind River Systems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+import logging
+import json
+
+from collections import OrderedDict, defaultdict
+
+from urllib.parse import unquote, urlparse
+
+import layerindexlib
+
+import layerindexlib.plugin
+
+logger = logging.getLogger('BitBake.layerindexlib.cooker')
+
+import bb.utils
+
+def plugin_init(plugins):
+ return CookerPlugin()
+
+class CookerPlugin(layerindexlib.plugin.IndexPlugin):
+ def __init__(self):
+ self.type = "cooker"
+
+ self.server_connection = None
+ self.ui_module = None
+ self.server = None
+
+ def _run_command(self, command, path, default=None):
+ try:
+ result, _ = bb.process.run(command, cwd=path)
+ result = result.strip()
+ except bb.process.ExecutionError:
+ result = default
+ return result
+
+ def _handle_git_remote(self, remote):
+ if "://" not in remote:
+ if ':' in remote:
+ # This is assumed to be ssh
+ remote = "ssh://" + remote
+ else:
+ # This is assumed to be a file path
+ remote = "file://" + remote
+ return remote
+
+ def _get_bitbake_info(self):
+ """Return a tuple of bitbake information"""
+
+ # Our path SHOULD be .../bitbake/lib/layerindex/cooker.py
+ bb_path = os.path.dirname(__file__) # .../bitbake/lib/layerindex/cooker.py
+ bb_path = os.path.dirname(bb_path) # .../bitbake/lib/layerindex
+ bb_path = os.path.dirname(bb_path) # .../bitbake/lib
+ bb_path = os.path.dirname(bb_path) # .../bitbake
+ bb_path = self._run_command('git rev-parse --show-toplevel', os.path.dirname(__file__), default=bb_path)
+ bb_branch = self._run_command('git rev-parse --abbrev-ref HEAD', bb_path, default="<unknown>")
+ bb_rev = self._run_command('git rev-parse HEAD', bb_path, default="<unknown>")
+ for remotes in self._run_command('git remote -v', bb_path, default="").split("\n"):
+ remote = remotes.split("\t")[1].split(" ")[0]
+ if "(fetch)" == remotes.split("\t")[1].split(" ")[1]:
+ bb_remote = self._handle_git_remote(remote)
+ break
+ else:
+ bb_remote = self._handle_git_remote(bb_path)
+
+ return (bb_remote, bb_branch, bb_rev, bb_path)
+
+ def _load_bblayers(self, branches=None):
+ """Load the BBLAYERS and related collection information"""
+
+ d = self.layerindex.data
+
+ if not branches:
+ raise LayerIndexFetchError("No branches specified for _load_bblayers!")
+
+ index = layerindexlib.LayerIndexObj()
+
+ branchId = 0
+ index.branches = {}
+
+ layerItemId = 0
+ index.layerItems = {}
+
+ layerBranchId = 0
+ index.layerBranches = {}
+
+ bblayers = d.getVar('BBLAYERS').split()
+
+ if not bblayers:
+ # It's blank! Nothing to process...
+ return index
+
+ collections = d.getVar('BBFILE_COLLECTIONS')
+ layerconfs = d.varhistory.get_variable_items_files('BBFILE_COLLECTIONS', d)
+ bbfile_collections = {layer: os.path.dirname(os.path.dirname(path)) for layer, path in layerconfs.items()}
+
+ (_, bb_branch, _, _) = self._get_bitbake_info()
+
+ for branch in branches:
+ branchId += 1
+ index.branches[branchId] = layerindexlib.Branch(index, None)
+ index.branches[branchId].define_data(branchId, branch, bb_branch)
+
+ for entry in collections.split():
+ layerpath = entry
+ if entry in bbfile_collections:
+ layerpath = bbfile_collections[entry]
+
+ layername = d.getVar('BBLAYERS_LAYERINDEX_NAME_%s' % entry) or os.path.basename(layerpath)
+ layerversion = d.getVar('LAYERVERSION_%s' % entry) or ""
+ layerurl = self._handle_git_remote(layerpath)
+
+ layersubdir = ""
+ layerrev = "<unknown>"
+ layerbranch = "<unknown>"
+
+ if os.path.isdir(layerpath):
+ layerbasepath = self._run_command('git rev-parse --show-toplevel', layerpath, default=layerpath)
+ if os.path.abspath(layerpath) != os.path.abspath(layerbasepath):
+ layersubdir = os.path.abspath(layerpath)[len(layerbasepath) + 1:]
+
+ layerbranch = self._run_command('git rev-parse --abbrev-ref HEAD', layerpath, default="<unknown>")
+ layerrev = self._run_command('git rev-parse HEAD', layerpath, default="<unknown>")
+
+ for remotes in self._run_command('git remote -v', layerpath, default="").split("\n"):
+ remote = remotes.split("\t")[1].split(" ")[0]
+ if "(fetch)" == remotes.split("\t")[1].split(" ")[1]:
+ layerurl = self._handle_git_remote(remote)
+ break
+
+ layerItemId += 1
+ index.layerItems[layerItemId] = layerindexlib.LayerItem(index, None)
+ index.layerItems[layerItemId].define_data(layerItemId, layername, description=layerpath, vcs_url=layerurl)
+
+ for branchId in index.branches:
+ layerBranchId += 1
+ index.layerBranches[layerBranchId] = layerindexlib.LayerBranch(index, None)
+ index.layerBranches[layerBranchId].define_data(layerBranchId, entry, layerversion, layerItemId, branchId,
+ vcs_subdir=layersubdir, vcs_last_rev=layerrev, actual_branch=layerbranch)
+
+ return index
+
+
+ def load_index(self, url, load):
+ """
+ Fetches layer information from a build configuration.
+
+ The return value is a dictionary containing API,
+ layer, branch, dependency, recipe, machine, distro, information.
+
+ url type should be 'cooker'.
+ url path is ignored
+ """
+
+ up = urlparse(url)
+
+ if up.scheme != 'cooker':
+ raise layerindexlib.plugin.LayerIndexPluginUrlError(self.type, url)
+
+ d = self.layerindex.data
+
+ params = self.layerindex._parse_params(up.params)
+
+ # Only reason to pass a branch is to emulate them...
+ if 'branch' in params:
+ branches = params['branch'].split(',')
+ else:
+ branches = ['HEAD']
+
+ logger.debug(1, "Loading cooker data branches %s" % branches)
+
+ index = self._load_bblayers(branches=branches)
+
+ index.config = {}
+ index.config['TYPE'] = self.type
+ index.config['URL'] = url
+
+ if 'desc' in params:
+ index.config['DESCRIPTION'] = unquote(params['desc'])
+ else:
+ index.config['DESCRIPTION'] = 'local'
+
+ if 'cache' in params:
+ index.config['CACHE'] = params['cache']
+
+ index.config['BRANCH'] = branches
+
+ # ("layerDependencies", layerindexlib.LayerDependency)
+ layerDependencyId = 0
+ if "layerDependencies" in load:
+ index.layerDependencies = {}
+ for layerBranchId in index.layerBranches:
+ branchName = index.layerBranches[layerBranchId].branch.name
+ collection = index.layerBranches[layerBranchId].collection
+
+ def add_dependency(layerDependencyId, index, deps, required):
+ try:
+ depDict = bb.utils.explode_dep_versions2(deps)
+ except bb.utils.VersionStringException as vse:
+ bb.fatal('Error parsing LAYERDEPENDS_%s: %s' % (c, str(vse)))
+
+ for dep, oplist in list(depDict.items()):
+ # We need to search ourselves, so use the _ version...
+ depLayerBranch = index.find_collection(dep, branches=[branchName])
+ if not depLayerBranch:
+ # Missing dependency?!
+ logger.error('Missing dependency %s (%s)' % (dep, branchName))
+ continue
+
+ # We assume that the oplist matches...
+ layerDependencyId += 1
+ layerDependency = layerindexlib.LayerDependency(index, None)
+ layerDependency.define_data(id=layerDependencyId,
+ required=required, layerbranch=layerBranchId,
+ dependency=depLayerBranch.layer_id)
+
+ logger.debug(1, '%s requires %s' % (layerDependency.layer.name, layerDependency.dependency.name))
+ index.add_element("layerDependencies", [layerDependency])
+
+ return layerDependencyId
+
+ deps = d.getVar("LAYERDEPENDS_%s" % collection)
+ if deps:
+ layerDependencyId = add_dependency(layerDependencyId, index, deps, True)
+
+ deps = d.getVar("LAYERRECOMMENDS_%s" % collection)
+ if deps:
+ layerDependencyId = add_dependency(layerDependencyId, index, deps, False)
+
+ # Need to load recipes here (requires cooker access)
+ recipeId = 0
+ ## TODO: NOT IMPLEMENTED
+ # The code following this is an example of what needs to be
+ # implemented. However, it does not work as-is.
+ if False and 'recipes' in load:
+ index.recipes = {}
+
+ ret = self.ui_module.main(self.server_connection.connection, self.server_connection.events, config_params)
+
+ all_versions = self._run_command('allProviders')
+
+ all_versions_list = defaultdict(list, all_versions)
+ for pn in all_versions_list:
+ for ((pe, pv, pr), fpath) in all_versions_list[pn]:
+ realfn = bb.cache.virtualfn2realfn(fpath)
+
+ filepath = os.path.dirname(realfn[0])
+ filename = os.path.basename(realfn[0])
+
+ # This is all HORRIBLY slow, and likely unnecessary
+ #dscon = self._run_command('parseRecipeFile', fpath, False, [])
+ #connector = myDataStoreConnector(self, dscon.dsindex)
+ #recipe_data = bb.data.init()
+ #recipe_data.setVar('_remote_data', connector)
+
+ #summary = recipe_data.getVar('SUMMARY')
+ #description = recipe_data.getVar('DESCRIPTION')
+ #section = recipe_data.getVar('SECTION')
+ #license = recipe_data.getVar('LICENSE')
+ #homepage = recipe_data.getVar('HOMEPAGE')
+ #bugtracker = recipe_data.getVar('BUGTRACKER')
+ #provides = recipe_data.getVar('PROVIDES')
+
+ layer = bb.utils.get_file_layer(realfn[0], self.config_data)
+
+ depBranchId = collection_layerbranch[layer]
+
+ recipeId += 1
+ recipe = layerindexlib.Recipe(index, None)
+ recipe.define_data(id=recipeId,
+ filename=filename, filepath=filepath,
+ pn=pn, pv=pv,
+ summary=pn, description=pn, section='?',
+ license='?', homepage='?', bugtracker='?',
+ provides='?', bbclassextend='?', inherits='?',
+ blacklisted='?', layerbranch=depBranchId)
+
+ index = addElement("recipes", [recipe], index)
+
+ # ("machines", layerindexlib.Machine)
+ machineId = 0
+ if 'machines' in load:
+ index.machines = {}
+
+ for layerBranchId in index.layerBranches:
+ # load_bblayers uses the description to cache the actual path...
+ machine_path = index.layerBranches[layerBranchId].getDescription()
+ machine_path = os.path.join(machine_path, 'conf/machine')
+ if os.path.isdir(machine_path):
+ for (dirpath, _, filenames) in os.walk(machine_path):
+ # Ignore subdirs...
+ if not dirpath.endswith('conf/machine'):
+ continue
+ for fname in filenames:
+ if fname.endswith('.conf'):
+ machineId += 1
+ machine = layerindexlib.Machine(index, None)
+ machine.define_data(id=machineId, name=fname[:-5],
+ description=fname[:-5],
+ layerbranch=collection_layerbranch[entry])
+
+ index.add_element("machines", [machine])
+
+ # ("distros", layerindexlib.Distro)
+ distroId = 0
+ if 'distros' in load:
+ index.distros = {}
+
+ for layerBranchId in index.layerBranches:
+ # load_bblayers uses the description to cache the actual path...
+ distro_path = index.layerBranches[layerBranchId].getDescription()
+ distro_path = os.path.join(distro_path, 'conf/distro')
+ if os.path.isdir(distro_path):
+ for (dirpath, _, filenames) in os.walk(distro_path):
+ # Ignore subdirs...
+ if not dirpath.endswith('conf/distro'):
+ continue
+ for fname in filenames:
+ if fname.endswith('.conf'):
+ distroId += 1
+ distro = layerindexlib.Distro(index, None)
+ distro.define_data(id=distroId, name=fname[:-5],
+ description=fname[:-5],
+ layerbranch=collection_layerbranch[entry])
+
+ index.add_element("distros", [distro])
+
+ return index
diff --git a/bitbake/lib/layerindexlib/plugin.py b/bitbake/lib/layerindexlib/plugin.py
new file mode 100644
index 00000000000..92a2e978ba6
--- /dev/null
+++ b/bitbake/lib/layerindexlib/plugin.py
@@ -0,0 +1,60 @@
+# Copyright (C) 2016-2018 Wind River Systems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+# The file contains:
+# LayerIndex exceptions
+# Plugin base class
+# Utility Functions for working on layerindex data
+
+import argparse
+import logging
+import os
+import bb.msg
+
+logger = logging.getLogger('BitBake.layerindexlib.plugin')
+
+class LayerIndexPluginException(Exception):
+ """LayerIndex Generic Exception"""
+ def __init__(self, message):
+ self.msg = message
+ Exception.__init__(self, message)
+
+ def __str__(self):
+ return self.msg
+
+class LayerIndexPluginUrlError(LayerIndexPluginException):
+ """Exception raised when a plugin does not support a given URL type"""
+ def __init__(self, plugin, url):
+ msg = "%s does not support %s:" % (plugin, url)
+ self.plugin = plugin
+ self.url = url
+ LayerIndexPluginException.__init__(self, msg)
+
+class IndexPlugin():
+ def __init__(self):
+ self.type = None
+
+ def init(self, layerindex):
+ self.layerindex = layerindex
+
+ def plugin_type(self):
+ return self.type
+
+ def load_index(self, uri):
+ raise NotImplementedError('load_index is not implemented')
+
+ def store_index(self, uri, index):
+ raise NotImplementedError('store_index is not implemented')
+
diff --git a/bitbake/lib/layerindexlib/restapi.py b/bitbake/lib/layerindexlib/restapi.py
new file mode 100644
index 00000000000..d08eb20555c
--- /dev/null
+++ b/bitbake/lib/layerindexlib/restapi.py
@@ -0,0 +1,398 @@
+# Copyright (C) 2016-2018 Wind River Systems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+import logging
+import json
+from urllib.parse import unquote
+from urllib.parse import urlparse
+
+import layerindexlib
+import layerindexlib.plugin
+
+logger = logging.getLogger('BitBake.layerindexlib.restapi')
+
+def plugin_init(plugins):
+ return RestApiPlugin()
+
+class RestApiPlugin(layerindexlib.plugin.IndexPlugin):
+ def __init__(self):
+ self.type = "restapi"
+
+ def load_index(self, url, load):
+ """
+ Fetches layer information from a local or remote layer index.
+
+ The return value is a LayerIndexObj.
+
+ url is the url to the rest api of the layer index, such as:
+ http://layers.openembedded.org/layerindex/api/
+
+ Or a local file...
+ """
+
+ up = urlparse(url)
+
+ if up.scheme == 'file':
+ return self.load_index_file(up, url, load)
+
+ if up.scheme == 'http' or up.scheme == 'https':
+ return self.load_index_web(up, url, load)
+
+ raise layerindexlib.plugin.LayerIndexPluginUrlError(self.type, url)
+
+
+ def load_index_file(self, up, url, load):
+ """
+ Fetches layer information from a local file or directory.
+
+ The return value is a LayerIndexObj.
+
+ ud is the parsed url to the local file or directory.
+ """
+ if not os.path.exists(up.path):
+ raise FileNotFoundError(up.path)
+
+ index = layerindexlib.LayerIndexObj()
+
+ index.config = {}
+ index.config['TYPE'] = self.type
+ index.config['URL'] = url
+
+ params = self.layerindex._parse_params(up.params)
+
+ if 'desc' in params:
+ index.config['DESCRIPTION'] = unquote(params['desc'])
+ else:
+ index.config['DESCRIPTION'] = up.path
+
+ if 'cache' in params:
+ index.config['CACHE'] = params['cache']
+
+ if 'branch' in params:
+ branches = params['branch'].split(',')
+ index.config['BRANCH'] = branches
+ else:
+ branches = ['*']
+
+
+ def load_cache(path, index, branches=[]):
+ logger.debug(1, 'Loading json file %s' % path)
+ with open(path, 'rt', encoding='utf-8') as f:
+ pindex = json.load(f)
+
+ # Filter the branches on loaded files...
+ newpBranch = []
+ for branch in branches:
+ if branch != '*':
+ if 'branches' in pindex:
+ for br in pindex['branches']:
+ if br['name'] == branch:
+ newpBranch.append(br)
+ else:
+ if 'branches' in pindex:
+ for br in pindex['branches']:
+ newpBranch.append(br)
+
+ if newpBranch:
+ index.add_raw_element('branches', layerindexlib.Branch, newpBranch)
+ else:
+ logger.debug(1, 'No matching branches (%s) in index file(s)' % branches)
+ # No matching branches.. return nothing...
+ return
+
+ for (lName, lType) in [("layerItems", layerindexlib.LayerItem),
+ ("layerBranches", layerindexlib.LayerBranch),
+ ("layerDependencies", layerindexlib.LayerDependency),
+ ("recipes", layerindexlib.Recipe),
+ ("machines", layerindexlib.Machine),
+ ("distros", layerindexlib.Distro)]:
+ if lName in pindex:
+ index.add_raw_element(lName, lType, pindex[lName])
+
+
+ if not os.path.isdir(up.path):
+ load_cache(up.path, index, branches)
+ return index
+
+ logger.debug(1, 'Loading from dir %s...' % (up.path))
+ for (dirpath, _, filenames) in os.walk(up.path):
+ for filename in filenames:
+ if not filename.endswith('.json'):
+ continue
+ fpath = os.path.join(dirpath, filename)
+ load_cache(fpath, index, branches)
+
+ return index
+
+
+ def load_index_web(self, up, url, load):
+ """
+ Fetches layer information from a remote layer index.
+
+ The return value is a LayerIndexObj.
+
+ ud is the parsed url to the rest api of the layer index, such as:
+ http://layers.openembedded.org/layerindex/api/
+ """
+
+ def _get_json_response(apiurl=None, username=None, password=None, retry=True):
+ assert apiurl is not None
+
+ logger.debug(1, "fetching %s" % apiurl)
+
+ up = urlparse(apiurl)
+
+ username=up.username
+ password=up.password
+
+ # Strip username/password and params
+ if up.port:
+ up_stripped = up._replace(params="", netloc="%s:%s" % (up.hostname, up.port))
+ else:
+ up_stripped = up._replace(params="", netloc=up.hostname)
+
+ res = self.layerindex._fetch_url(up_stripped.geturl(), username=username, password=password)
+
+ try:
+ parsed = json.loads(res.read().decode('utf-8'))
+ except ConnectionResetError:
+ if retry:
+ logger.debug(1, "%s: Connection reset by peer. Retrying..." % url)
+ parsed = _get_json_response(apiurl=up_stripped.geturl(), username=username, password=password, retry=False)
+ logger.debug(1, "%s: retry successful.")
+ else:
+ raise LayerIndexFetchError('%s: Connection reset by peer. Is there a firewall blocking your connection?' % apiurl)
+
+ return parsed
+
+ index = layerindexlib.LayerIndexObj()
+
+ index.config = {}
+ index.config['TYPE'] = self.type
+ index.config['URL'] = url
+
+ params = self.layerindex._parse_params(up.params)
+
+ if 'desc' in params:
+ index.config['DESCRIPTION'] = unquote(params['desc'])
+ else:
+ index.config['DESCRIPTION'] = up.hostname
+
+ if 'cache' in params:
+ index.config['CACHE'] = params['cache']
+
+ if 'branch' in params:
+ branches = params['branch'].split(',')
+ index.config['BRANCH'] = branches
+ else:
+ branches = ['*']
+
+ try:
+ index.apilinks = _get_json_response(apiurl=url, username=up.username, password=up.password)
+ except Exception as e:
+ raise layerindexlib.LayerIndexFetchError(url, e)
+
+ # Local raw index set...
+ pindex = {}
+
+ # Load all the requested branches at the same time time,
+ # a special branch of '*' means load all branches
+ filter = ""
+ if "*" not in branches:
+ filter = "?filter=name:%s" % "OR".join(branches)
+
+ logger.debug(1, "Loading %s from %s" % (branches, index.apilinks['branches']))
+
+ # The link won't include username/password, so pull it from the original url
+ pindex['branches'] = _get_json_response(index.apilinks['branches'] + filter,
+ username=up.username, password=up.password)
+ if not pindex['branches']:
+ logger.debug(1, "No valid branches (%s) found at url %s." % (branch, url))
+ return index
+ index.add_raw_element("branches", layerindexlib.Branch, pindex['branches'])
+
+ # Load all of the layerItems (these can not be easily filtered)
+ logger.debug(1, "Loading %s from %s" % ('layerItems', index.apilinks['layerItems']))
+
+
+ # The link won't include username/password, so pull it from the original url
+ pindex['layerItems'] = _get_json_response(index.apilinks['layerItems'],
+ username=up.username, password=up.password)
+ if not pindex['layerItems']:
+ logger.debug(1, "No layers were found at url %s." % (url))
+ return index
+ index.add_raw_element("layerItems", layerindexlib.LayerItem, pindex['layerItems'])
+
+
+ # From this point on load the contents for each branch. Otherwise we
+ # could run into a timeout.
+ for branch in index.branches:
+ filter = "?filter=branch__name:%s" % index.branches[branch].name
+
+ logger.debug(1, "Loading %s from %s" % ('layerBranches', index.apilinks['layerBranches']))
+
+ # The link won't include username/password, so pull it from the original url
+ pindex['layerBranches'] = _get_json_response(index.apilinks['layerBranches'] + filter,
+ username=up.username, password=up.password)
+ if not pindex['layerBranches']:
+ logger.debug(1, "No valid layer branches (%s) found at url %s." % (branches or "*", url))
+ return index
+ index.add_raw_element("layerBranches", layerindexlib.LayerBranch, pindex['layerBranches'])
+
+
+ # Load the rest, they all have a similar format
+ # Note: the layer index has a few more items, we can add them if necessary
+ # in the future.
+ filter = "?filter=layerbranch__branch__name:%s" % index.branches[branch].name
+ for (lName, lType) in [("layerDependencies", layerindexlib.LayerDependency),
+ ("recipes", layerindexlib.Recipe),
+ ("machines", layerindexlib.Machine),
+ ("distros", layerindexlib.Distro)]:
+ if lName not in load:
+ continue
+ logger.debug(1, "Loading %s from %s" % (lName, index.apilinks[lName]))
+
+ # The link won't include username/password, so pull it from the original url
+ pindex[lName] = _get_json_response(index.apilinks[lName] + filter,
+ username=up.username, password=up.password)
+ index.add_raw_element(lName, lType, pindex[lName])
+
+ return index
+
+ def store_index(self, url, index):
+ """
+ Store layer information into a local file/dir.
+
+ The return value is a dictionary containing API,
+ layer, branch, dependency, recipe, machine, distro, information.
+
+ ud is a parsed url to a directory or file. If the path is a
+ directory, we will split the files into one file per layer.
+ If the path is to a file (exists or not) the entire DB will be
+ dumped into that one file.
+ """
+
+ up = urlparse(url)
+
+ if up.scheme != 'file':
+ raise layerindexlib.plugin.LayerIndexPluginUrlError(self.type, url)
+
+ logger.debug(1, "Storing to %s..." % up.path)
+
+ try:
+ layerbranches = index.layerBranches
+ except KeyError:
+ logger.error('No layerBranches to write.')
+ return
+
+
+ def filter_item(layerbranchid, objects):
+ filtered = []
+ for obj in getattr(index, objects, None):
+ try:
+ if getattr(index, objects)[obj].layerbranch_id == layerbranchid:
+ filtered.append(getattr(index, objects)[obj]._data)
+ except AttributeError:
+ logger.debug(1, 'No obj.layerbranch_id: %s' % objects)
+ # No simple filter method, just include it...
+ try:
+ filtered.append(getattr(index, objects)[obj]._data)
+ except AttributeError:
+ logger.debug(1, 'No obj._data: %s %s' % (objects, type(obj)))
+ filtered.append(obj)
+ return filtered
+
+
+ # Write out to a single file.
+ # Filter out unnecessary items, then sort as we write for determinism
+ if not os.path.isdir(up.path):
+ pindex = {}
+
+ pindex['branches'] = []
+ pindex['layerItems'] = []
+ pindex['layerBranches'] = []
+
+ for layerbranchid in layerbranches:
+ if layerbranches[layerbranchid].branch._data not in pindex['branches']:
+ pindex['branches'].append(layerbranches[layerbranchid].branch._data)
+
+ if layerbranches[layerbranchid].layer._data not in pindex['layerItems']:
+ pindex['layerItems'].append(layerbranches[layerbranchid].layer._data)
+
+ if layerbranches[layerbranchid]._data not in pindex['layerBranches']:
+ pindex['layerBranches'].append(layerbranches[layerbranchid]._data)
+
+ for entry in index._index:
+ # Skip local items, apilinks and items already processed
+ if entry in index.config['local'] or \
+ entry == 'apilinks' or \
+ entry == 'branches' or \
+ entry == 'layerBranches' or \
+ entry == 'layerItems':
+ continue
+ if entry not in pindex:
+ pindex[entry] = []
+ pindex[entry].extend(filter_item(layerbranchid, entry))
+
+ bb.debug(1, 'Writing index to %s' % up.path)
+ with open(up.path, 'wt') as f:
+ json.dump(layerindexlib.sort_entry(pindex), f, indent=4)
+ return
+
+
+ # Write out to a directory one file per layerBranch
+ # Prepare all layer related items, to create a minimal file.
+ # We have to sort the entries as we write so they are deterministic
+ for layerbranchid in layerbranches:
+ pindex = {}
+
+ for entry in index._index:
+ # Skip local items, apilinks and items already processed
+ if entry in index.config['local'] or \
+ entry == 'apilinks' or \
+ entry == 'branches' or \
+ entry == 'layerBranches' or \
+ entry == 'layerItems':
+ continue
+ pindex[entry] = filter_item(layerbranchid, entry)
+
+ # Add the layer we're processing as the first one...
+ pindex['branches'] = [layerbranches[layerbranchid].branch._data]
+ pindex['layerItems'] = [layerbranches[layerbranchid].layer._data]
+ pindex['layerBranches'] = [layerbranches[layerbranchid]._data]
+
+ # We also need to include the layerbranch for any dependencies...
+ for layerdep in pindex['layerDependencies']:
+ layerdependency = layerindexlib.LayerDependency(index, layerdep)
+
+ layeritem = layerdependency.dependency
+ layerbranch = layerdependency.dependency_layerBranch
+
+ # We need to avoid duplicates...
+ if layeritem._data not in pindex['layerItems']:
+ pindex['layerItems'].append(layeritem._data)
+
+ if layerbranch._data not in pindex['layerBranches']:
+ pindex['layerBranches'].append(layerbranch._data)
+
+ # apply mirroring adjustments here....
+
+ fname = index.config['DESCRIPTION'] + '__' + pindex['branches'][0]['name'] + '__' + pindex['layerItems'][0]['name']
+ fname = fname.translate(str.maketrans('/ ', '__'))
+ fpath = os.path.join(up.path, fname)
+
+ bb.debug(1, 'Writing index to %s' % fpath + '.json')
+ with open(fpath + '.json', 'wt') as f:
+ json.dump(layerindexlib.sort_entry(pindex), f, indent=4)
diff --git a/bitbake/lib/layerindexlib/tests/__init__.py b/bitbake/lib/layerindexlib/tests/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/bitbake/lib/layerindexlib/tests/__init__.py
diff --git a/bitbake/lib/layerindexlib/tests/common.py b/bitbake/lib/layerindexlib/tests/common.py
new file mode 100644
index 00000000000..22a54585c83
--- /dev/null
+++ b/bitbake/lib/layerindexlib/tests/common.py
@@ -0,0 +1,43 @@
+# Copyright (C) 2017-2018 Wind River Systems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+import unittest
+import tempfile
+import os
+import bb
+
+import logging
+
+class LayersTest(unittest.TestCase):
+
+ def setUp(self):
+ self.origdir = os.getcwd()
+ self.d = bb.data.init()
+ # At least one variable needs to be set
+ self.d.setVar('DL_DIR', os.getcwd())
+
+ if os.environ.get("BB_SKIP_NETTESTS") == "yes":
+ self.d.setVar('BB_NO_NETWORK', '1')
+
+ self.tempdir = tempfile.mkdtemp()
+ self.logger = logging.getLogger("BitBake")
+
+ def tearDown(self):
+ os.chdir(self.origdir)
+ if os.environ.get("BB_TMPDIR_NOCLEAN") == "yes":
+ print("Not cleaning up %s. Please remove manually." % self.tempdir)
+ else:
+ bb.utils.prunedir(self.tempdir)
+
diff --git a/bitbake/lib/layerindexlib/tests/cooker.py b/bitbake/lib/layerindexlib/tests/cooker.py
new file mode 100644
index 00000000000..fdbf0911030
--- /dev/null
+++ b/bitbake/lib/layerindexlib/tests/cooker.py
@@ -0,0 +1,123 @@
+# Copyright (C) 2018 Wind River Systems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+import unittest
+import tempfile
+import os
+import bb
+
+import layerindexlib
+from layerindexlib.tests.common import LayersTest
+
+import logging
+
+class LayerIndexCookerTest(LayersTest):
+
+ def setUp(self):
+ LayersTest.setUp(self)
+
+ # Note this is NOT a comprehensive test of cooker, as we can't easily
+ # configure the test data. But we can emulate the basics of the layer.conf
+ # files, so that is what we will do.
+
+ new_topdir = os.path.join(os.path.dirname(os.path.realpath(__file__)), "testdata")
+ new_bbpath = os.path.join(new_topdir, "build")
+
+ self.d.setVar('TOPDIR', new_topdir)
+ self.d.setVar('BBPATH', new_bbpath)
+
+ self.d = bb.parse.handle("%s/conf/bblayers.conf" % new_bbpath, self.d, True)
+ for layer in self.d.getVar('BBLAYERS').split():
+ self.d = bb.parse.handle("%s/conf/layer.conf" % layer, self.d, True)
+
+ self.layerindex = layerindexlib.LayerIndex(self.d)
+ self.layerindex.load_layerindex('cooker://', load=['layerDependencies'])
+
+ def test_layerindex_is_empty(self):
+ self.assertFalse(self.layerindex.is_empty(), msg="Layerindex is not empty!")
+
+ def test_dependency_resolution(self):
+ # Verify depth first searching...
+ (dependencies, invalidnames) = self.layerindex.find_dependencies(names=['meta-python'])
+
+ first = True
+ for deplayerbranch in dependencies:
+ layerBranch = dependencies[deplayerbranch][0]
+ layerDeps = dependencies[deplayerbranch][1:]
+
+ if not first:
+ continue
+
+ first = False
+
+ # Top of the deps should be openembedded-core, since everything depends on it.
+ self.assertEqual(layerBranch.layer.name, "openembedded-core", msg='Top dependency not openembedded-core')
+
+ # meta-python should cause an openembedded-core dependency, if not assert!
+ for dep in layerDeps:
+ if dep.layer.name == 'meta-python':
+ break
+ else:
+ self.assertTrue(False, msg='meta-python was not found')
+
+ # Only check the first element...
+ break
+ else:
+ if first:
+ # Empty list, this is bad.
+ self.assertTrue(False, msg='Empty list of dependencies')
+
+ # Last dep should be the requested item
+ layerBranch = dependencies[deplayerbranch][0]
+ self.assertEqual(layerBranch.layer.name, "meta-python", msg='Last dependency not meta-python')
+
+ def test_find_collection(self):
+ def _check(collection, expected):
+ self.logger.debug(1, "Looking for collection %s..." % collection)
+ result = self.layerindex.find_collection(collection)
+ if expected:
+ self.assertIsNotNone(result, msg="Did not find %s when it shouldn't be there" % collection)
+ else:
+ self.assertIsNone(result, msg="Found %s when it should be there" % collection)
+
+ tests = [ ('core', True),
+ ('openembedded-core', False),
+ ('networking-layer', True),
+ ('meta-python', True),
+ ('openembedded-layer', True),
+ ('notpresent', False) ]
+
+ for collection,result in tests:
+ _check(collection, result)
+
+ def test_find_layerbranch(self):
+ def _check(name, expected):
+ self.logger.debug(1, "Looking for layerbranch %s..." % name)
+ result = self.layerindex.find_layerbranch(name)
+ if expected:
+ self.assertIsNotNone(result, msg="Did not find %s when it shouldn't be there" % collection)
+ else:
+ self.assertIsNone(result, msg="Found %s when it should be there" % collection)
+
+ tests = [ ('openembedded-core', True),
+ ('core', False),
+ ('networking-layer', True),
+ ('meta-python', True),
+ ('openembedded-layer', True),
+ ('notpresent', False) ]
+
+ for collection,result in tests:
+ _check(collection, result)
+
diff --git a/bitbake/lib/layerindexlib/tests/layerindexobj.py b/bitbake/lib/layerindexlib/tests/layerindexobj.py
new file mode 100644
index 00000000000..e2fbb950b0b
--- /dev/null
+++ b/bitbake/lib/layerindexlib/tests/layerindexobj.py
@@ -0,0 +1,226 @@
+# Copyright (C) 2017-2018 Wind River Systems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+import unittest
+import tempfile
+import os
+import bb
+
+from layerindexlib.tests.common import LayersTest
+
+import logging
+
+class LayerIndexObjectsTest(LayersTest):
+ def setUp(self):
+ from layerindexlib import LayerIndexObj, Branch, LayerItem, LayerBranch, LayerDependency, Recipe, Machine, Distro
+
+ LayersTest.setUp(self)
+
+ self.index = LayerIndexObj()
+
+ branchId = 0
+ layerItemId = 0
+ layerBranchId = 0
+ layerDependencyId = 0
+ recipeId = 0
+ machineId = 0
+ distroId = 0
+
+ self.index.branches = {}
+ self.index.layerItems = {}
+ self.index.layerBranches = {}
+ self.index.layerDependencies = {}
+ self.index.recipes = {}
+ self.index.machines = {}
+ self.index.distros = {}
+
+ branchId += 1
+ self.index.branches[branchId] = Branch(self.index)
+ self.index.branches[branchId].define_data(branchId,
+ 'test_branch', 'bb_test_branch')
+ self.index.branches[branchId].lockData()
+
+ layerItemId +=1
+ self.index.layerItems[layerItemId] = LayerItem(self.index)
+ self.index.layerItems[layerItemId].define_data(layerItemId,
+ 'test_layerItem', vcs_url='git://git_test_url/test_layerItem')
+ self.index.layerItems[layerItemId].lockData()
+
+ layerBranchId +=1
+ self.index.layerBranches[layerBranchId] = LayerBranch(self.index)
+ self.index.layerBranches[layerBranchId].define_data(layerBranchId,
+ 'test_collection', '99', layerItemId,
+ branchId)
+
+ recipeId += 1
+ self.index.recipes[recipeId] = Recipe(self.index)
+ self.index.recipes[recipeId].define_data(recipeId, 'test_git.bb',
+ 'recipes-test', 'test', 'git',
+ layerBranchId)
+
+ machineId += 1
+ self.index.machines[machineId] = Machine(self.index)
+ self.index.machines[machineId].define_data(machineId,
+ 'test_machine', 'test_machine',
+ layerBranchId)
+
+ distroId += 1
+ self.index.distros[distroId] = Distro(self.index)
+ self.index.distros[distroId].define_data(distroId,
+ 'test_distro', 'test_distro',
+ layerBranchId)
+
+ layerItemId +=1
+ self.index.layerItems[layerItemId] = LayerItem(self.index)
+ self.index.layerItems[layerItemId].define_data(layerItemId, 'test_layerItem 2',
+ vcs_url='git://git_test_url/test_layerItem')
+
+ layerBranchId +=1
+ self.index.layerBranches[layerBranchId] = LayerBranch(self.index)
+ self.index.layerBranches[layerBranchId].define_data(layerBranchId,
+ 'test_collection_2', '72', layerItemId,
+ branchId, actual_branch='some_other_branch')
+
+ layerDependencyId += 1
+ self.index.layerDependencies[layerDependencyId] = LayerDependency(self.index)
+ self.index.layerDependencies[layerDependencyId].define_data(layerDependencyId,
+ layerBranchId, 1)
+
+ layerDependencyId += 1
+ self.index.layerDependencies[layerDependencyId] = LayerDependency(self.index)
+ self.index.layerDependencies[layerDependencyId].define_data(layerDependencyId,
+ layerBranchId, 1, required=False)
+
+ def test_branch(self):
+ branch = self.index.branches[1]
+ self.assertEqual(branch.id, 1)
+ self.assertEqual(branch.name, 'test_branch')
+ self.assertEqual(branch.short_description, 'test_branch')
+ self.assertEqual(branch.bitbake_branch, 'bb_test_branch')
+
+ def test_layerItem(self):
+ layerItem = self.index.layerItems[1]
+ self.assertEqual(layerItem.id, 1)
+ self.assertEqual(layerItem.name, 'test_layerItem')
+ self.assertEqual(layerItem.summary, 'test_layerItem')
+ self.assertEqual(layerItem.description, 'test_layerItem')
+ self.assertEqual(layerItem.vcs_url, 'git://git_test_url/test_layerItem')
+ self.assertEqual(layerItem.vcs_web_url, None)
+ self.assertIsNone(layerItem.vcs_web_tree_base_url)
+ self.assertIsNone(layerItem.vcs_web_file_base_url)
+ self.assertIsNotNone(layerItem.updated)
+
+ layerItem = self.index.layerItems[2]
+ self.assertEqual(layerItem.id, 2)
+ self.assertEqual(layerItem.name, 'test_layerItem 2')
+ self.assertEqual(layerItem.summary, 'test_layerItem 2')
+ self.assertEqual(layerItem.description, 'test_layerItem 2')
+ self.assertEqual(layerItem.vcs_url, 'git://git_test_url/test_layerItem')
+ self.assertIsNone(layerItem.vcs_web_url)
+ self.assertIsNone(layerItem.vcs_web_tree_base_url)
+ self.assertIsNone(layerItem.vcs_web_file_base_url)
+ self.assertIsNotNone(layerItem.updated)
+
+ def test_layerBranch(self):
+ layerBranch = self.index.layerBranches[1]
+ self.assertEqual(layerBranch.id, 1)
+ self.assertEqual(layerBranch.collection, 'test_collection')
+ self.assertEqual(layerBranch.version, '99')
+ self.assertEqual(layerBranch.vcs_subdir, '')
+ self.assertEqual(layerBranch.actual_branch, 'test_branch')
+ self.assertIsNotNone(layerBranch.updated)
+ self.assertEqual(layerBranch.layer_id, 1)
+ self.assertEqual(layerBranch.branch_id, 1)
+ self.assertEqual(layerBranch.layer, self.index.layerItems[1])
+ self.assertEqual(layerBranch.branch, self.index.branches[1])
+
+ layerBranch = self.index.layerBranches[2]
+ self.assertEqual(layerBranch.id, 2)
+ self.assertEqual(layerBranch.collection, 'test_collection_2')
+ self.assertEqual(layerBranch.version, '72')
+ self.assertEqual(layerBranch.vcs_subdir, '')
+ self.assertEqual(layerBranch.actual_branch, 'some_other_branch')
+ self.assertIsNotNone(layerBranch.updated)
+ self.assertEqual(layerBranch.layer_id, 2)
+ self.assertEqual(layerBranch.branch_id, 1)
+ self.assertEqual(layerBranch.layer, self.index.layerItems[2])
+ self.assertEqual(layerBranch.branch, self.index.branches[1])
+
+ def test_layerDependency(self):
+ layerDependency = self.index.layerDependencies[1]
+ self.assertEqual(layerDependency.id, 1)
+ self.assertEqual(layerDependency.layerbranch_id, 2)
+ self.assertEqual(layerDependency.layerbranch, self.index.layerBranches[2])
+ self.assertEqual(layerDependency.layer_id, 2)
+ self.assertEqual(layerDependency.layer, self.index.layerItems[2])
+ self.assertTrue(layerDependency.required)
+ self.assertEqual(layerDependency.dependency_id, 1)
+ self.assertEqual(layerDependency.dependency, self.index.layerItems[1])
+ self.assertEqual(layerDependency.dependency_layerBranch, self.index.layerBranches[1])
+
+ layerDependency = self.index.layerDependencies[2]
+ self.assertEqual(layerDependency.id, 2)
+ self.assertEqual(layerDependency.layerbranch_id, 2)
+ self.assertEqual(layerDependency.layerbranch, self.index.layerBranches[2])
+ self.assertEqual(layerDependency.layer_id, 2)
+ self.assertEqual(layerDependency.layer, self.index.layerItems[2])
+ self.assertFalse(layerDependency.required)
+ self.assertEqual(layerDependency.dependency_id, 1)
+ self.assertEqual(layerDependency.dependency, self.index.layerItems[1])
+ self.assertEqual(layerDependency.dependency_layerBranch, self.index.layerBranches[1])
+
+ def test_recipe(self):
+ recipe = self.index.recipes[1]
+ self.assertEqual(recipe.id, 1)
+ self.assertEqual(recipe.layerbranch_id, 1)
+ self.assertEqual(recipe.layerbranch, self.index.layerBranches[1])
+ self.assertEqual(recipe.layer_id, 1)
+ self.assertEqual(recipe.layer, self.index.layerItems[1])
+ self.assertEqual(recipe.filename, 'test_git.bb')
+ self.assertEqual(recipe.filepath, 'recipes-test')
+ self.assertEqual(recipe.fullpath, 'recipes-test/test_git.bb')
+ self.assertEqual(recipe.summary, "")
+ self.assertEqual(recipe.description, "")
+ self.assertEqual(recipe.section, "")
+ self.assertEqual(recipe.pn, 'test')
+ self.assertEqual(recipe.pv, 'git')
+ self.assertEqual(recipe.license, "")
+ self.assertEqual(recipe.homepage, "")
+ self.assertEqual(recipe.bugtracker, "")
+ self.assertEqual(recipe.provides, "")
+ self.assertIsNotNone(recipe.updated)
+ self.assertEqual(recipe.inherits, "")
+
+ def test_machine(self):
+ machine = self.index.machines[1]
+ self.assertEqual(machine.id, 1)
+ self.assertEqual(machine.layerbranch_id, 1)
+ self.assertEqual(machine.layerbranch, self.index.layerBranches[1])
+ self.assertEqual(machine.layer_id, 1)
+ self.assertEqual(machine.layer, self.index.layerItems[1])
+ self.assertEqual(machine.name, 'test_machine')
+ self.assertEqual(machine.description, 'test_machine')
+ self.assertIsNotNone(machine.updated)
+
+ def test_distro(self):
+ distro = self.index.distros[1]
+ self.assertEqual(distro.id, 1)
+ self.assertEqual(distro.layerbranch_id, 1)
+ self.assertEqual(distro.layerbranch, self.index.layerBranches[1])
+ self.assertEqual(distro.layer_id, 1)
+ self.assertEqual(distro.layer, self.index.layerItems[1])
+ self.assertEqual(distro.name, 'test_distro')
+ self.assertEqual(distro.description, 'test_distro')
+ self.assertIsNotNone(distro.updated)
diff --git a/bitbake/lib/layerindexlib/tests/restapi.py b/bitbake/lib/layerindexlib/tests/restapi.py
new file mode 100644
index 00000000000..58766950ce0
--- /dev/null
+++ b/bitbake/lib/layerindexlib/tests/restapi.py
@@ -0,0 +1,184 @@
+# Copyright (C) 2017-2018 Wind River Systems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+import unittest
+import tempfile
+import os
+import bb
+
+import layerindexlib
+from layerindexlib.tests.common import LayersTest
+
+import logging
+
+def skipIfNoNetwork():
+ if os.environ.get("BB_SKIP_NETTESTS") == "yes":
+ return unittest.skip("Network tests being skipped")
+ return lambda f: f
+
+class LayerIndexWebRestApiTest(LayersTest):
+
+ @skipIfNoNetwork()
+ def setUp(self):
+ self.assertFalse(os.environ.get("BB_SKIP_NETTESTS") == "yes", msg="BB_SKIP_NETTESTS set, but we tried to test anyway")
+ LayersTest.setUp(self)
+ self.layerindex = layerindexlib.LayerIndex(self.d)
+ self.layerindex.load_layerindex('http://layers.openembedded.org/layerindex/api/;branch=sumo', load=['layerDependencies'])
+
+ @skipIfNoNetwork()
+ def test_layerindex_is_empty(self):
+ self.assertFalse(self.layerindex.is_empty(), msg="Layerindex is empty")
+
+ @skipIfNoNetwork()
+ def test_layerindex_store_file(self):
+ self.layerindex.store_layerindex('file://%s/file.json' % self.tempdir, self.layerindex.indexes[0])
+
+ self.assertTrue(os.path.isfile('%s/file.json' % self.tempdir), msg="Temporary file was not created by store_layerindex")
+
+ reload = layerindexlib.LayerIndex(self.d)
+ reload.load_layerindex('file://%s/file.json' % self.tempdir)
+
+ self.assertFalse(reload.is_empty(), msg="Layerindex is empty")
+
+ # Calculate layerItems in original index that should NOT be in reload
+ layerItemNames = []
+ for itemId in self.layerindex.indexes[0].layerItems:
+ layerItemNames.append(self.layerindex.indexes[0].layerItems[itemId].name)
+
+ for layerBranchId in self.layerindex.indexes[0].layerBranches:
+ layerItemNames.remove(self.layerindex.indexes[0].layerBranches[layerBranchId].layer.name)
+
+ for itemId in reload.indexes[0].layerItems:
+ self.assertFalse(reload.indexes[0].layerItems[itemId].name in layerItemNames, msg="Item reloaded when it shouldn't have been")
+
+ # Compare the original to what we wrote...
+ for type in self.layerindex.indexes[0]._index:
+ if type == 'apilinks' or \
+ type == 'layerItems' or \
+ type in self.layerindex.indexes[0].config['local']:
+ continue
+ for id in getattr(self.layerindex.indexes[0], type):
+ self.logger.debug(1, "type %s" % (type))
+
+ self.assertTrue(id in getattr(reload.indexes[0], type), msg="Id number not in reloaded index")
+
+ self.logger.debug(1, "%s ? %s" % (getattr(self.layerindex.indexes[0], type)[id], getattr(reload.indexes[0], type)[id]))
+
+ self.assertEqual(getattr(self.layerindex.indexes[0], type)[id], getattr(reload.indexes[0], type)[id], msg="Reloaded contents different")
+
+ @skipIfNoNetwork()
+ def test_layerindex_store_split(self):
+ self.layerindex.store_layerindex('file://%s' % self.tempdir, self.layerindex.indexes[0])
+
+ reload = layerindexlib.LayerIndex(self.d)
+ reload.load_layerindex('file://%s' % self.tempdir)
+
+ self.assertFalse(reload.is_empty(), msg="Layer index is empty")
+
+ for type in self.layerindex.indexes[0]._index:
+ if type == 'apilinks' or \
+ type == 'layerItems' or \
+ type in self.layerindex.indexes[0].config['local']:
+ continue
+ for id in getattr(self.layerindex.indexes[0] ,type):
+ self.logger.debug(1, "type %s" % (type))
+
+ self.assertTrue(id in getattr(reload.indexes[0], type), msg="Id number missing from reloaded data")
+
+ self.logger.debug(1, "%s ? %s" % (getattr(self.layerindex.indexes[0] ,type)[id], getattr(reload.indexes[0], type)[id]))
+
+ self.assertEqual(getattr(self.layerindex.indexes[0] ,type)[id], getattr(reload.indexes[0], type)[id], msg="reloaded data does not match original")
+
+ @skipIfNoNetwork()
+ def test_dependency_resolution(self):
+ # Verify depth first searching...
+ (dependencies, invalidnames) = self.layerindex.find_dependencies(names=['meta-python'])
+
+ first = True
+ for deplayerbranch in dependencies:
+ layerBranch = dependencies[deplayerbranch][0]
+ layerDeps = dependencies[deplayerbranch][1:]
+
+ if not first:
+ continue
+
+ first = False
+
+ # Top of the deps should be openembedded-core, since everything depends on it.
+ self.assertEqual(layerBranch.layer.name, "openembedded-core", msg='OpenEmbedded-Core is no the first dependency')
+
+ # meta-python should cause an openembedded-core dependency, if not assert!
+ for dep in layerDeps:
+ if dep.layer.name == 'meta-python':
+ break
+ else:
+ self.logger.debug(1, "meta-python was not found")
+ self.assetTrue(False)
+
+ # Only check the first element...
+ break
+ else:
+ # Empty list, this is bad.
+ self.logger.debug(1, "Empty list of dependencies")
+ self.assertIsNotNone(first, msg="Empty list of dependencies")
+
+ # Last dep should be the requested item
+ layerBranch = dependencies[deplayerbranch][0]
+ self.assertEqual(layerBranch.layer.name, "meta-python", msg="Last dependency not meta-python")
+
+ @skipIfNoNetwork()
+ def test_find_collection(self):
+ def _check(collection, expected):
+ self.logger.debug(1, "Looking for collection %s..." % collection)
+ result = self.layerindex.find_collection(collection)
+ if expected:
+ self.assertIsNotNone(result, msg="Did not find %s when it should be there" % collection)
+ else:
+ self.assertIsNone(result, msg="Found %s when it shouldn't be there" % collection)
+
+ tests = [ ('core', True),
+ ('openembedded-core', False),
+ ('networking-layer', True),
+ ('meta-python', True),
+ ('openembedded-layer', True),
+ ('notpresent', False) ]
+
+ for collection,result in tests:
+ _check(collection, result)
+
+ @skipIfNoNetwork()
+ def test_find_layerbranch(self):
+ def _check(name, expected):
+ self.logger.debug(1, "Looking for layerbranch %s..." % name)
+
+ for index in self.layerindex.indexes:
+ for layerbranchid in index.layerBranches:
+ self.logger.debug(1, "Present: %s" % index.layerBranches[layerbranchid].layer.name)
+ result = self.layerindex.find_layerbranch(name)
+ if expected:
+ self.assertIsNotNone(result, msg="Did not find %s when it should be there" % collection)
+ else:
+ self.assertIsNone(result, msg="Found %s when it shouldn't be there" % collection)
+
+ tests = [ ('openembedded-core', True),
+ ('core', False),
+ ('meta-networking', True),
+ ('meta-python', True),
+ ('meta-oe', True),
+ ('notpresent', False) ]
+
+ for collection,result in tests:
+ _check(collection, result)
+
diff --git a/bitbake/lib/layerindexlib/tests/testdata/README b/bitbake/lib/layerindexlib/tests/testdata/README
new file mode 100644
index 00000000000..36ab40bebe6
--- /dev/null
+++ b/bitbake/lib/layerindexlib/tests/testdata/README
@@ -0,0 +1,11 @@
+This test data is used to verify the 'cooker' module of the layerindex.
+
+The module consists of a faux project bblayers.conf with four layers defined.
+
+layer1 - openembedded-core
+layer2 - networking-layer
+layer3 - meta-python
+layer4 - openembedded-layer (meta-oe)
+
+Since we do not have a fully populated cooker, we use this to test the
+basic index generation, and not any deep recipe based contents.
diff --git a/bitbake/lib/layerindexlib/tests/testdata/build/conf/bblayers.conf b/bitbake/lib/layerindexlib/tests/testdata/build/conf/bblayers.conf
new file mode 100644
index 00000000000..40429b2f667
--- /dev/null
+++ b/bitbake/lib/layerindexlib/tests/testdata/build/conf/bblayers.conf
@@ -0,0 +1,15 @@
+LAYERSERIES_CORENAMES = "sumo"
+
+# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
+# changes incompatibly
+LCONF_VERSION = "7"
+
+BBPATH = "${TOPDIR}"
+BBFILES ?= ""
+
+BBLAYERS ?= " \
+ ${TOPDIR}/layer1 \
+ ${TOPDIR}/layer2 \
+ ${TOPDIR}/layer3 \
+ ${TOPDIR}/layer4 \
+ "
diff --git a/bitbake/lib/layerindexlib/tests/testdata/layer1/conf/layer.conf b/bitbake/lib/layerindexlib/tests/testdata/layer1/conf/layer.conf
new file mode 100644
index 00000000000..966d5319596
--- /dev/null
+++ b/bitbake/lib/layerindexlib/tests/testdata/layer1/conf/layer.conf
@@ -0,0 +1,17 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+# We have recipes-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb"
+
+BBFILE_COLLECTIONS += "core"
+BBFILE_PATTERN_core = "^${LAYERDIR}/"
+BBFILE_PRIORITY_core = "5"
+
+LAYERSERIES_CORENAMES = "sumo"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_core = "11"
+LAYERSERIES_COMPAT_core = "sumo"
+
+BBLAYERS_LAYERINDEX_NAME_core = "openembedded-core"
diff --git a/bitbake/lib/layerindexlib/tests/testdata/layer2/conf/layer.conf b/bitbake/lib/layerindexlib/tests/testdata/layer2/conf/layer.conf
new file mode 100644
index 00000000000..7569d1c2172
--- /dev/null
+++ b/bitbake/lib/layerindexlib/tests/testdata/layer2/conf/layer.conf
@@ -0,0 +1,20 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have a packages directory, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+ ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "networking-layer"
+BBFILE_PATTERN_networking-layer := "^${LAYERDIR}/"
+BBFILE_PRIORITY_networking-layer = "5"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_networking-layer = "1"
+
+LAYERDEPENDS_networking-layer = "core"
+LAYERDEPENDS_networking-layer += "openembedded-layer"
+LAYERDEPENDS_networking-layer += "meta-python"
+
+LAYERSERIES_COMPAT_networking-layer = "sumo"
diff --git a/bitbake/lib/layerindexlib/tests/testdata/layer3/conf/layer.conf b/bitbake/lib/layerindexlib/tests/testdata/layer3/conf/layer.conf
new file mode 100644
index 00000000000..7089071faf6
--- /dev/null
+++ b/bitbake/lib/layerindexlib/tests/testdata/layer3/conf/layer.conf
@@ -0,0 +1,19 @@
+# We might have a conf and classes directory, append to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have recipes directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes*/*/*.bb ${LAYERDIR}/recipes*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "meta-python"
+BBFILE_PATTERN_meta-python := "^${LAYERDIR}/"
+BBFILE_PRIORITY_meta-python = "7"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_meta-python = "1"
+
+LAYERDEPENDS_meta-python = "core openembedded-layer"
+
+LAYERSERIES_COMPAT_meta-python = "sumo"
+
+LICENSE_PATH += "${LAYERDIR}/licenses"
diff --git a/bitbake/lib/layerindexlib/tests/testdata/layer4/conf/layer.conf b/bitbake/lib/layerindexlib/tests/testdata/layer4/conf/layer.conf
new file mode 100644
index 00000000000..6649ee02081
--- /dev/null
+++ b/bitbake/lib/layerindexlib/tests/testdata/layer4/conf/layer.conf
@@ -0,0 +1,22 @@
+# We have a conf and classes directory, append to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have a recipes directory, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "openembedded-layer"
+BBFILE_PATTERN_openembedded-layer := "^${LAYERDIR}/"
+
+# Define the priority for recipes (.bb files) from this layer,
+# choosing carefully how this layer interacts with all of the
+# other layers.
+
+BBFILE_PRIORITY_openembedded-layer = "6"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_openembedded-layer = "1"
+
+LAYERDEPENDS_openembedded-layer = "core"
+
+LAYERSERIES_COMPAT_openembedded-layer = "sumo"
diff --git a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
index 16c7c80441c..67bfbf63944 100644
--- a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
+++ b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
@@ -27,8 +27,9 @@ import shutil
import time
from django.db import transaction
from django.db.models import Q
-from bldcontrol.models import BuildEnvironment, BRLayer, BRVariable, BRTarget, BRBitbake
-from orm.models import CustomImageRecipe, Layer, Layer_Version, ProjectLayer, ToasterSetting
+from bldcontrol.models import BuildEnvironment, BuildRequest, BRLayer, BRVariable, BRTarget, BRBitbake, Build
+from orm.models import CustomImageRecipe, Layer, Layer_Version, Project, ProjectLayer, ToasterSetting
+from orm.models import signal_runbuilds
import subprocess
from toastermain import settings
@@ -38,6 +39,8 @@ from bldcontrol.bbcontroller import BuildEnvironmentController, ShellCmdExceptio
import logging
logger = logging.getLogger("toaster")
+install_dir = os.environ.get('TOASTER_DIR')
+
from pprint import pprint, pformat
class LocalhostBEController(BuildEnvironmentController):
@@ -87,10 +90,10 @@ class LocalhostBEController(BuildEnvironmentController):
#logger.debug("localhostbecontroller: using HEAD checkout in %s" % local_checkout_path)
return local_checkout_path
-
- def setCloneStatus(self,bitbake,status,total,current):
+ def setCloneStatus(self,bitbake,status,total,current,repo_name):
bitbake.req.build.repos_cloned=current
bitbake.req.build.repos_to_clone=total
+ bitbake.req.build.progress_item=repo_name
bitbake.req.build.save()
def setLayers(self, bitbake, layers, targets):
@@ -100,6 +103,7 @@ class LocalhostBEController(BuildEnvironmentController):
layerlist = []
nongitlayerlist = []
+ layer_index = 0
git_env = os.environ.copy()
# (note: add custom environment settings here)
@@ -113,7 +117,7 @@ class LocalhostBEController(BuildEnvironmentController):
if bitbake.giturl and bitbake.commit:
gitrepos[(bitbake.giturl, bitbake.commit)] = []
gitrepos[(bitbake.giturl, bitbake.commit)].append(
- ("bitbake", bitbake.dirpath))
+ ("bitbake", bitbake.dirpath, 0))
for layer in layers:
# We don't need to git clone the layer for the CustomImageRecipe
@@ -124,12 +128,13 @@ class LocalhostBEController(BuildEnvironmentController):
# If we have local layers then we don't need clone them
# For local layers giturl will be empty
if not layer.giturl:
- nongitlayerlist.append(layer.layer_version.layer.local_source_dir)
+ nongitlayerlist.append( "%03d:%s" % (layer_index,layer.local_source_dir) )
continue
if not (layer.giturl, layer.commit) in gitrepos:
gitrepos[(layer.giturl, layer.commit)] = []
- gitrepos[(layer.giturl, layer.commit)].append( (layer.name, layer.dirpath) )
+ gitrepos[(layer.giturl, layer.commit)].append( (layer.name,layer.dirpath,layer_index) )
+ layer_index += 1
logger.debug("localhostbecontroller, our git repos are %s" % pformat(gitrepos))
@@ -159,9 +164,9 @@ class LocalhostBEController(BuildEnvironmentController):
# 3. checkout the repositories
clone_count=0
clone_total=len(gitrepos.keys())
- self.setCloneStatus(bitbake,'Started',clone_total,clone_count)
+ self.setCloneStatus(bitbake,'Started',clone_total,clone_count,'')
for giturl, commit in gitrepos.keys():
- self.setCloneStatus(bitbake,'progress',clone_total,clone_count)
+ self.setCloneStatus(bitbake,'progress',clone_total,clone_count,gitrepos[(giturl, commit)][0][0])
clone_count += 1
localdirname = os.path.join(self.be.sourcedir, self.getGitCloneDirectory(giturl, commit))
@@ -205,21 +210,33 @@ class LocalhostBEController(BuildEnvironmentController):
self._shellcmd("git clone -b \"%s\" \"%s\" \"%s\" " % (bitbake.commit, bitbake.giturl, os.path.join(self.pokydirname, 'bitbake')),env=git_env)
# verify our repositories
- for name, dirpath in gitrepos[(giturl, commit)]:
+ for name, dirpath, index in gitrepos[(giturl, commit)]:
localdirpath = os.path.join(localdirname, dirpath)
- logger.debug("localhostbecontroller: localdirpath expected '%s'" % localdirpath)
+ logger.debug("localhostbecontroller: localdirpath expects '%s'" % localdirpath)
if not os.path.exists(localdirpath):
raise BuildSetupException("Cannot find layer git path '%s' in checked out repository '%s:%s'. Aborting." % (localdirpath, giturl, commit))
if name != "bitbake":
- layerlist.append(localdirpath.rstrip("/"))
+ layerlist.append("%03d:%s" % (index,localdirpath.rstrip("/")))
- self.setCloneStatus(bitbake,'complete',clone_total,clone_count)
+ self.setCloneStatus(bitbake,'complete',clone_total,clone_count,'')
logger.debug("localhostbecontroller: current layer list %s " % pformat(layerlist))
- if self.pokydirname is None and os.path.exists(os.path.join(self.be.sourcedir, "oe-init-build-env")):
- logger.debug("localhostbecontroller: selected poky dir name %s" % self.be.sourcedir)
- self.pokydirname = self.be.sourcedir
+ # Resolve self.pokydirname if not resolved yet, consider the scenario
+ # where all layers are local, that's the else clause
+ if self.pokydirname is None:
+ if os.path.exists(os.path.join(self.be.sourcedir, "oe-init-build-env")):
+ logger.debug("localhostbecontroller: selected poky dir name %s" % self.be.sourcedir)
+ self.pokydirname = self.be.sourcedir
+ else:
+ # Alternatively, scan local layers for relative "oe-init-build-env" location
+ for layer in layers:
+ if os.path.exists(os.path.join(layer.layer_version.layer.local_source_dir,"..","oe-init-build-env")):
+ logger.debug("localhostbecontroller, setting pokydirname to %s" % (layer.layer_version.layer.local_source_dir))
+ self.pokydirname = os.path.join(layer.layer_version.layer.local_source_dir,"..")
+ break
+ else:
+ logger.error("pokydirname is not set, you will run into trouble!")
# 5. create custom layer and add custom recipes to it
for target in targets:
@@ -232,7 +249,7 @@ class LocalhostBEController(BuildEnvironmentController):
customrecipe, layers)
if os.path.isdir(custom_layer_path):
- layerlist.append(custom_layer_path)
+ layerlist.append("%03d:%s" % (layer_index,custom_layer_path))
except CustomImageRecipe.DoesNotExist:
continue # not a custom recipe, skip
@@ -240,7 +257,11 @@ class LocalhostBEController(BuildEnvironmentController):
layerlist.extend(nongitlayerlist)
logger.debug("\n\nset layers gives this list %s" % pformat(layerlist))
self.islayerset = True
- return layerlist
+
+ # restore the order of layer list for bblayers.conf
+ layerlist.sort()
+ sorted_layerlist = [l[4:] for l in layerlist]
+ return sorted_layerlist
def setup_custom_image_recipe(self, customrecipe, layers):
""" Set up toaster-custom-images layer and recipe files """
@@ -310,41 +331,141 @@ class LocalhostBEController(BuildEnvironmentController):
def triggerBuild(self, bitbake, layers, variables, targets, brbe):
layers = self.setLayers(bitbake, layers, targets)
+ is_merged_attr = bitbake.req.project.merged_attr
+
+ git_env = os.environ.copy()
+ # (note: add custom environment settings here)
+ try:
+ # insure that the project init/build uses the selected bitbake, and not Toaster's
+ del git_env['TEMPLATECONF']
+ del git_env['BBBASEDIR']
+ del git_env['BUILDDIR']
+ except KeyError:
+ pass
# init build environment from the clone
- builddir = '%s-toaster-%d' % (self.be.builddir, bitbake.req.project.id)
+ if bitbake.req.project.builddir:
+ builddir = bitbake.req.project.builddir
+ else:
+ builddir = '%s-toaster-%d' % (self.be.builddir, bitbake.req.project.id)
oe_init = os.path.join(self.pokydirname, 'oe-init-build-env')
# init build environment
try:
custom_script = ToasterSetting.objects.get(name="CUSTOM_BUILD_INIT_SCRIPT").value
custom_script = custom_script.replace("%BUILDDIR%" ,builddir)
- self._shellcmd("bash -c 'source %s'" % (custom_script))
+ self._shellcmd("bash -c 'source %s'" % (custom_script),env=git_env)
except ToasterSetting.DoesNotExist:
self._shellcmd("bash -c 'source %s %s'" % (oe_init, builddir),
- self.be.sourcedir)
+ self.be.sourcedir,env=git_env)
# update bblayers.conf
- bblconfpath = os.path.join(builddir, "conf/toaster-bblayers.conf")
- with open(bblconfpath, 'w') as bblayers:
- bblayers.write('# line added by toaster build control\n'
- 'BBLAYERS = "%s"' % ' '.join(layers))
-
- # write configuration file
- confpath = os.path.join(builddir, 'conf/toaster.conf')
- with open(confpath, 'w') as conf:
- for var in variables:
- conf.write('%s="%s"\n' % (var.name, var.value))
- conf.write('INHERIT+="toaster buildhistory"')
+ if not is_merged_attr:
+ bblconfpath = os.path.join(builddir, "conf/toaster-bblayers.conf")
+ with open(bblconfpath, 'w') as bblayers:
+ bblayers.write('# line added by toaster build control\n'
+ 'BBLAYERS = "%s"' % ' '.join(layers))
+
+ # write configuration file
+ confpath = os.path.join(builddir, 'conf/toaster.conf')
+ with open(confpath, 'w') as conf:
+ for var in variables:
+ conf.write('%s="%s"\n' % (var.name, var.value))
+ conf.write('INHERIT+="toaster buildhistory"')
+ else:
+ # Append the Toaster-specific values directly to the bblayers.conf
+ bblconfpath = os.path.join(builddir, "conf/bblayers.conf")
+ bblconfpath_save = os.path.join(builddir, "conf/bblayers.conf.save")
+ shutil.copyfile(bblconfpath, bblconfpath_save)
+ with open(bblconfpath) as bblayers:
+ content = bblayers.readlines()
+ do_write = True
+ was_toaster = False
+ with open(bblconfpath,'w') as bblayers:
+ for line in content:
+ #line = line.strip('\n')
+ if 'TOASTER_CONFIG_PROLOG' in line:
+ do_write = False
+ was_toaster = True
+ elif 'TOASTER_CONFIG_EPILOG' in line:
+ do_write = True
+ elif do_write:
+ bblayers.write(line)
+ if not was_toaster:
+ bblayers.write('\n')
+ bblayers.write('#=== TOASTER_CONFIG_PROLOG ===\n')
+ bblayers.write('BBLAYERS = "\\\n')
+ for layer in layers:
+ bblayers.write(' %s \\\n' % layer)
+ bblayers.write(' "\n')
+ bblayers.write('#=== TOASTER_CONFIG_EPILOG ===\n')
+ # Append the Toaster-specific values directly to the local.conf
+ bbconfpath = os.path.join(builddir, "conf/local.conf")
+ bbconfpath_save = os.path.join(builddir, "conf/local.conf.save")
+ shutil.copyfile(bbconfpath, bbconfpath_save)
+ with open(bbconfpath) as f:
+ content = f.readlines()
+ do_write = True
+ was_toaster = False
+ with open(bbconfpath,'w') as conf:
+ for line in content:
+ #line = line.strip('\n')
+ if 'TOASTER_CONFIG_PROLOG' in line:
+ do_write = False
+ was_toaster = True
+ elif 'TOASTER_CONFIG_EPILOG' in line:
+ do_write = True
+ elif do_write:
+ conf.write(line)
+ if not was_toaster:
+ conf.write('\n')
+ conf.write('#=== TOASTER_CONFIG_PROLOG ===\n')
+ for var in variables:
+ if (not var.name.startswith("INTERNAL_")) and (not var.name == "BBLAYERS"):
+ conf.write('%s="%s"\n' % (var.name, var.value))
+ conf.write('#=== TOASTER_CONFIG_EPILOG ===\n')
+
+ # If 'target' is just the project preparation target, then we are done
+ for target in targets:
+ if "_PROJECT_PREPARE_" == target.target:
+ logger.debug('localhostbecontroller: Project has been prepared. Done.')
+ # Update the Build Request and release the build environment
+ bitbake.req.state = BuildRequest.REQ_COMPLETED
+ bitbake.req.save()
+ self.be.lock = BuildEnvironment.LOCK_FREE
+ self.be.save()
+ # Close the project build and progress bar
+ bitbake.req.build.outcome = Build.SUCCEEDED
+ bitbake.req.build.save()
+ # Update the project status
+ bitbake.req.project.set_variable(Project.PROJECT_SPECIFIC_STATUS,Project.PROJECT_SPECIFIC_CLONING_SUCCESS)
+ signal_runbuilds()
+ return
# clean the Toaster to build environment
env_clean = 'unset BBPATH;' # clean BBPATH for <= YP-2.4.0
- # run bitbake server from the clone
+ # run bitbake server from the clone if available
+ # otherwise pick it from the PATH
bitbake = os.path.join(self.pokydirname, 'bitbake', 'bin', 'bitbake')
+ if not os.path.exists(bitbake):
+ logger.info("Bitbake not available under %s, will try to use it from PATH" %
+ self.pokydirname)
+ for path in os.environ["PATH"].split(os.pathsep):
+ if os.path.exists(os.path.join(path, 'bitbake')):
+ bitbake = os.path.join(path, 'bitbake')
+ break
+ else:
+ logger.error("Looks like Bitbake is not available, please fix your environment")
+
toasterlayers = os.path.join(builddir,"conf/toaster-bblayers.conf")
- self._shellcmd('%s bash -c \"source %s %s; BITBAKE_UI="knotty" %s --read %s --read %s '
- '--server-only -B 0.0.0.0:0\"' % (env_clean, oe_init,
- builddir, bitbake, confpath, toasterlayers), self.be.sourcedir)
+ if not is_merged_attr:
+ self._shellcmd('%s bash -c \"source %s %s; BITBAKE_UI="knotty" %s --read %s --read %s '
+ '--server-only -B 0.0.0.0:0\"' % (env_clean, oe_init,
+ builddir, bitbake, confpath, toasterlayers), self.be.sourcedir)
+ else:
+ self._shellcmd('%s bash -c \"source %s %s; BITBAKE_UI="knotty" %s '
+ '--server-only -B 0.0.0.0:0\"' % (env_clean, oe_init,
+ builddir, bitbake), self.be.sourcedir)
# read port number from bitbake.lock
self.be.bbport = -1
@@ -390,12 +511,20 @@ class LocalhostBEController(BuildEnvironmentController):
log = os.path.join(builddir, 'toaster_ui.log')
local_bitbake = os.path.join(os.path.dirname(os.getenv('BBBASEDIR')),
'bitbake')
- self._shellcmd(['%s bash -c \"(TOASTER_BRBE="%s" BBSERVER="0.0.0.0:%s" '
+ if not is_merged_attr:
+ self._shellcmd(['%s bash -c \"(TOASTER_BRBE="%s" BBSERVER="0.0.0.0:%s" '
'%s %s -u toasterui --read %s --read %s --token="" >>%s 2>&1;'
'BITBAKE_UI="knotty" BBSERVER=0.0.0.0:%s %s -m)&\"' \
% (env_clean, brbe, self.be.bbport, local_bitbake, bbtargets, confpath, toasterlayers, log,
self.be.bbport, bitbake,)],
builddir, nowait=True)
+ else:
+ self._shellcmd(['%s bash -c \"(TOASTER_BRBE="%s" BBSERVER="0.0.0.0:%s" '
+ '%s %s -u toasterui --token="" >>%s 2>&1;'
+ 'BITBAKE_UI="knotty" BBSERVER=0.0.0.0:%s %s -m)&\"' \
+ % (env_clean, brbe, self.be.bbport, local_bitbake, bbtargets, log,
+ self.be.bbport, bitbake,)],
+ builddir, nowait=True)
logger.debug('localhostbecontroller: Build launched, exiting. '
'Follow build logs at %s' % log)
diff --git a/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py b/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py
index 823c6f154ad..14298d9dafc 100644
--- a/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py
+++ b/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py
@@ -74,8 +74,9 @@ class Command(BaseCommand):
print("Loading default settings")
call_command("loaddata", "settings")
template_conf = os.environ.get("TEMPLATECONF", "")
+ custom_xml_only = os.environ.get("CUSTOM_XML_ONLY")
- if ToasterSetting.objects.filter(name='CUSTOM_XML_ONLY').count() > 0:
+ if ToasterSetting.objects.filter(name='CUSTOM_XML_ONLY').count() > 0 or (not custom_xml_only == None):
# only use the custom settings
pass
elif "poky" in template_conf:
diff --git a/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py b/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py
index 791e53eabf6..6a55dd46c8b 100644
--- a/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py
+++ b/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py
@@ -49,7 +49,7 @@ class Command(BaseCommand):
# we could not find a BEC; postpone the BR
br.state = BuildRequest.REQ_QUEUED
br.save()
- logger.debug("runbuilds: No build env")
+ logger.debug("runbuilds: No build env (%s)" % e)
return
logger.info("runbuilds: starting build %s, environment %s" %
diff --git a/bitbake/lib/toaster/orm/fixtures/oe-core.xml b/bitbake/lib/toaster/orm/fixtures/oe-core.xml
index 00720c3da9a..d7ea78dc294 100644
--- a/bitbake/lib/toaster/orm/fixtures/oe-core.xml
+++ b/bitbake/lib/toaster/orm/fixtures/oe-core.xml
@@ -8,9 +8,9 @@
<!-- Bitbake versions which correspond to the metadata release -->
<object model="orm.bitbakeversion" pk="1">
- <field type="CharField" name="name">rocko</field>
+ <field type="CharField" name="name">sumo</field>
<field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
- <field type="CharField" name="branch">1.36</field>
+ <field type="CharField" name="branch">1.38</field>
</object>
<object model="orm.bitbakeversion" pk="2">
<field type="CharField" name="name">HEAD</field>
@@ -22,14 +22,19 @@
<field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
<field type="CharField" name="branch">master</field>
</object>
+ <object model="orm.bitbakeversion" pk="4">
+ <field type="CharField" name="name">rocko</field>
+ <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
+ <field type="CharField" name="branch">1.36</field>
+ </object>
<!-- Releases available -->
<object model="orm.release" pk="1">
<field type="CharField" name="name">rocko</field>
- <field type="CharField" name="description">Openembedded Rocko</field>
+ <field type="CharField" name="description">Openembedded Sumo</field>
<field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">1</field>
- <field type="CharField" name="branch_name">rocko</field>
- <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"http://cgit.openembedded.org/openembedded-core/log/?h=rocko\"&gt;OpenEmbedded Rocko&lt;/a&gt; branch.</field>
+ <field type="CharField" name="branch_name">sumo</field>
+ <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"http://cgit.openembedded.org/openembedded-core/log/?h=sumo\"&gt;OpenEmbedded Sumo&lt;/a&gt; branch.</field>
</object>
<object model="orm.release" pk="2">
<field type="CharField" name="name">local</field>
@@ -45,6 +50,13 @@
<field type="CharField" name="branch_name">master</field>
<field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"http://cgit.openembedded.org/openembedded-core/log/\"&gt;OpenEmbedded master&lt;/a&gt; branch.</field>
</object>
+ <object model="orm.release" pk="4">
+ <field type="CharField" name="name">rocko</field>
+ <field type="CharField" name="description">Openembedded Rocko</field>
+ <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">1</field>
+ <field type="CharField" name="branch_name">rocko</field>
+ <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"http://cgit.openembedded.org/openembedded-core/log/?h=rocko\"&gt;OpenEmbedded Rocko&lt;/a&gt; branch.</field>
+ </object>
<!-- Default layers for each release -->
<object model="orm.releasedefaultlayer" pk="1">
@@ -59,6 +71,10 @@
<field rel="ManyToOneRel" to="orm.release" name="release">3</field>
<field type="CharField" name="layer_name">openembedded-core</field>
</object>
+ <object model="orm.releasedefaultlayer" pk="4">
+ <field rel="ManyToOneRel" to="orm.release" name="release">4</field>
+ <field type="CharField" name="layer_name">openembedded-core</field>
+ </object>
<!-- Layer for the Local release -->
diff --git a/bitbake/lib/toaster/orm/fixtures/poky.xml b/bitbake/lib/toaster/orm/fixtures/poky.xml
index 2f39d7776dd..6c966da4a92 100644
--- a/bitbake/lib/toaster/orm/fixtures/poky.xml
+++ b/bitbake/lib/toaster/orm/fixtures/poky.xml
@@ -8,9 +8,9 @@
<!-- Bitbake versions which correspond to the metadata release -->
<object model="orm.bitbakeversion" pk="1">
- <field type="CharField" name="name">rocko</field>
+ <field type="CharField" name="name">sumo</field>
<field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
- <field type="CharField" name="branch">rocko</field>
+ <field type="CharField" name="branch">sumo</field>
<field type="CharField" name="dirpath">bitbake</field>
</object>
<object model="orm.bitbakeversion" pk="2">
@@ -25,15 +25,21 @@
<field type="CharField" name="branch">master</field>
<field type="CharField" name="dirpath">bitbake</field>
</object>
+ <object model="orm.bitbakeversion" pk="4">
+ <field type="CharField" name="name">rocko</field>
+ <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
+ <field type="CharField" name="branch">rocko</field>
+ <field type="CharField" name="dirpath">bitbake</field>
+ </object>
<!-- Releases available -->
<object model="orm.release" pk="1">
- <field type="CharField" name="name">rocko</field>
- <field type="CharField" name="description">Yocto Project 2.4 "Rocko"</field>
+ <field type="CharField" name="name">sumo</field>
+ <field type="CharField" name="description">Yocto Project 2.5 "Sumo"</field>
<field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">1</field>
- <field type="CharField" name="branch_name">rocko</field>
- <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=rocko"&gt;Yocto Project Rocko branch&lt;/a&gt;.</field>
+ <field type="CharField" name="branch_name">sumo</field>
+ <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=sumo"&gt;Yocto Project Sumo branch&lt;/a&gt;.</field>
</object>
<object model="orm.release" pk="2">
<field type="CharField" name="name">local</field>
@@ -49,6 +55,13 @@
<field type="CharField" name="branch_name">master</field>
<field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/"&gt;Yocto Project Master branch&lt;/a&gt;.</field>
</object>
+ <object model="orm.release" pk="4">
+ <field type="CharField" name="name">rocko</field>
+ <field type="CharField" name="description">Yocto Project 2.4 "Rocko"</field>
+ <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">1</field>
+ <field type="CharField" name="branch_name">rocko</field>
+ <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=rocko"&gt;Yocto Project Rocko branch&lt;/a&gt;.</field>
+ </object>
<!-- Default project layers for each release -->
<object model="orm.releasedefaultlayer" pk="1">
@@ -87,6 +100,18 @@
<field rel="ManyToOneRel" to="orm.release" name="release">3</field>
<field type="CharField" name="layer_name">meta-yocto-bsp</field>
</object>
+ <object model="orm.releasedefaultlayer" pk="10">
+ <field rel="ManyToOneRel" to="orm.release" name="release">4</field>
+ <field type="CharField" name="layer_name">openembedded-core</field>
+ </object>
+ <object model="orm.releasedefaultlayer" pk="11">
+ <field rel="ManyToOneRel" to="orm.release" name="release">4</field>
+ <field type="CharField" name="layer_name">meta-poky</field>
+ </object>
+ <object model="orm.releasedefaultlayer" pk="12">
+ <field rel="ManyToOneRel" to="orm.release" name="release">4</field>
+ <field type="CharField" name="layer_name">meta-yocto-bsp</field>
+ </object>
<!-- Default layers provided by poky
openembedded-core
@@ -105,7 +130,7 @@
<field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
<field type="IntegerField" name="layer_source">0</field>
<field rel="ManyToOneRel" to="orm.release" name="release">1</field>
- <field type="CharField" name="branch">rocko</field>
+ <field type="CharField" name="branch">sumo</field>
<field type="CharField" name="dirpath">meta</field>
</object>
<object model="orm.layer_version" pk="2">
@@ -123,6 +148,13 @@
<field type="CharField" name="branch">master</field>
<field type="CharField" name="dirpath">meta</field>
</object>
+ <object model="orm.layer_version" pk="4">
+ <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
+ <field type="IntegerField" name="layer_source">0</field>
+ <field rel="ManyToOneRel" to="orm.release" name="release">4</field>
+ <field type="CharField" name="branch">rocko</field>
+ <field type="CharField" name="dirpath">meta</field>
+ </object>
<object model="orm.layer" pk="2">
<field type="CharField" name="name">meta-poky</field>
@@ -132,14 +164,14 @@
<field type="CharField" name="vcs_web_tree_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
<field type="CharField" name="vcs_web_file_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
</object>
- <object model="orm.layer_version" pk="4">
+ <object model="orm.layer_version" pk="5">
<field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
<field type="IntegerField" name="layer_source">0</field>
<field rel="ManyToOneRel" to="orm.release" name="release">1</field>
- <field type="CharField" name="branch">rocko</field>
+ <field type="CharField" name="branch">sumo</field>
<field type="CharField" name="dirpath">meta-poky</field>
</object>
- <object model="orm.layer_version" pk="5">
+ <object model="orm.layer_version" pk="6">
<field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
<field type="IntegerField" name="layer_source">0</field>
<field rel="ManyToOneRel" to="orm.release" name="release">2</field>
@@ -147,13 +179,20 @@
<field type="CharField" name="commit">HEAD</field>
<field type="CharField" name="dirpath">meta-poky</field>
</object>
- <object model="orm.layer_version" pk="6">
+ <object model="orm.layer_version" pk="7">
<field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
<field type="IntegerField" name="layer_source">0</field>
<field rel="ManyToOneRel" to="orm.release" name="release">3</field>
<field type="CharField" name="branch">master</field>
<field type="CharField" name="dirpath">meta-poky</field>
</object>
+ <object model="orm.layer_version" pk="8">
+ <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
+ <field type="IntegerField" name="layer_source">0</field>
+ <field rel="ManyToOneRel" to="orm.release" name="release">4</field>
+ <field type="CharField" name="branch">rocko</field>
+ <field type="CharField" name="dirpath">meta-poky</field>
+ </object>
<object model="orm.layer" pk="3">
<field type="CharField" name="name">meta-yocto-bsp</field>
@@ -163,14 +202,14 @@
<field type="CharField" name="vcs_web_tree_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
<field type="CharField" name="vcs_web_file_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
</object>
- <object model="orm.layer_version" pk="7">
+ <object model="orm.layer_version" pk="9">
<field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
<field type="IntegerField" name="layer_source">0</field>
<field rel="ManyToOneRel" to="orm.release" name="release">1</field>
- <field type="CharField" name="branch">rocko</field>
+ <field type="CharField" name="branch">sumo</field>
<field type="CharField" name="dirpath">meta-yocto-bsp</field>
</object>
- <object model="orm.layer_version" pk="8">
+ <object model="orm.layer_version" pk="10">
<field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
<field type="IntegerField" name="layer_source">0</field>
<field rel="ManyToOneRel" to="orm.release" name="release">2</field>
@@ -178,11 +217,18 @@
<field type="CharField" name="commit">HEAD</field>
<field type="CharField" name="dirpath">meta-yocto-bsp</field>
</object>
- <object model="orm.layer_version" pk="9">
+ <object model="orm.layer_version" pk="11">
<field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
<field type="IntegerField" name="layer_source">0</field>
<field rel="ManyToOneRel" to="orm.release" name="release">3</field>
<field type="CharField" name="branch">master</field>
<field type="CharField" name="dirpath">meta-yocto-bsp</field>
</object>
+ <object model="orm.layer_version" pk="12">
+ <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
+ <field type="IntegerField" name="layer_source">0</field>
+ <field rel="ManyToOneRel" to="orm.release" name="release">4</field>
+ <field type="CharField" name="branch">rocko</field>
+ <field type="CharField" name="dirpath">meta-yocto-bsp</field>
+ </object>
</django-objects>
diff --git a/bitbake/lib/toaster/orm/management/commands/lsupdates.py b/bitbake/lib/toaster/orm/management/commands/lsupdates.py
index efc6b3a9463..66114ff89e6 100644
--- a/bitbake/lib/toaster/orm/management/commands/lsupdates.py
+++ b/bitbake/lib/toaster/orm/management/commands/lsupdates.py
@@ -29,7 +29,6 @@ from orm.models import ToasterSetting
import os
import sys
-import json
import logging
import threading
import time
@@ -37,6 +36,18 @@ logger = logging.getLogger("toaster")
DEFAULT_LAYERINDEX_SERVER = "http://layers.openembedded.org/layerindex/api/"
+# Add path to bitbake modules for layerindexlib
+# lib/toaster/orm/management/commands/lsupdates.py (abspath)
+# lib/toaster/orm/management/commands (dirname)
+# lib/toaster/orm/management (dirname)
+# lib/toaster/orm (dirname)
+# lib/toaster/ (dirname)
+# lib/ (dirname)
+path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))))
+sys.path.insert(0, path)
+
+import layerindexlib
+
class Spinner(threading.Thread):
""" A simple progress spinner to indicate download/parsing is happening"""
@@ -86,45 +97,6 @@ class Command(BaseCommand):
self.apiurl = ToasterSetting.objects.get(name = 'CUSTOM_LAYERINDEX_SERVER').value
assert self.apiurl is not None
- try:
- from urllib.request import urlopen, URLError
- from urllib.parse import urlparse
- except ImportError:
- from urllib2 import urlopen, URLError
- from urlparse import urlparse
-
- proxy_settings = os.environ.get("http_proxy", None)
-
- def _get_json_response(apiurl=None):
- if None == apiurl:
- apiurl=self.apiurl
- http_progress = Spinner()
- http_progress.start()
-
- _parsedurl = urlparse(apiurl)
- path = _parsedurl.path
-
- # logger.debug("Fetching %s", apiurl)
- try:
- res = urlopen(apiurl)
- except URLError as e:
- raise Exception("Failed to read %s: %s" % (path, e.reason))
-
- parsed = json.loads(res.read().decode('utf-8'))
-
- http_progress.stop()
- return parsed
-
- # verify we can get the basic api
- try:
- apilinks = _get_json_response()
- except Exception as e:
- import traceback
- if proxy_settings is not None:
- logger.info("EE: Using proxy %s" % proxy_settings)
- logger.warning("EE: could not connect to %s, skipping update:"
- "%s\n%s" % (self.apiurl, e, traceback.format_exc()))
- return
# update branches; only those that we already have names listed in the
# Releases table
@@ -133,112 +105,118 @@ class Command(BaseCommand):
if len(whitelist_branch_names) == 0:
raise Exception("Failed to make list of branches to fetch")
- logger.info("Fetching metadata releases for %s",
+ logger.info("Fetching metadata for %s",
" ".join(whitelist_branch_names))
- branches_info = _get_json_response(apilinks['branches'] +
- "?filter=name:%s"
- % "OR".join(whitelist_branch_names))
+ # We require a non-empty bb.data, but we can fake it with a dictionary
+ layerindex = layerindexlib.LayerIndex({"DUMMY" : "VALUE"})
+
+ http_progress = Spinner()
+ http_progress.start()
+
+ if whitelist_branch_names:
+ url_branches = ";branch=%s" % ','.join(whitelist_branch_names)
+ else:
+ url_branches = ""
+ layerindex.load_layerindex("%s%s" % (self.apiurl, url_branches))
+
+ http_progress.stop()
+
+ # We know we're only processing one entry, so we reference it here
+ # (this is cheating...)
+ index = layerindex.indexes[0]
# Map the layer index branches to toaster releases
li_branch_id_to_toaster_release = {}
- total = len(branches_info)
- for i, branch in enumerate(branches_info):
- li_branch_id_to_toaster_release[branch['id']] = \
- Release.objects.get(name=branch['name'])
+ logger.info("Processing releases")
+
+ total = len(index.branches)
+ for i, id in enumerate(index.branches):
+ li_branch_id_to_toaster_release[id] = \
+ Release.objects.get(name=index.branches[id].name)
self.mini_progress("Releases", i, total)
# keep a track of the layerindex (li) id mappings so that
# layer_versions can be created for these layers later on
li_layer_id_to_toaster_layer_id = {}
- logger.info("Fetching layers")
-
- layers_info = _get_json_response(apilinks['layerItems'])
+ logger.info("Processing layers")
- total = len(layers_info)
- for i, li in enumerate(layers_info):
+ total = len(index.layerItems)
+ for i, id in enumerate(index.layerItems):
try:
- l, created = Layer.objects.get_or_create(name=li['name'])
- l.up_date = li['updated']
- l.summary = li['summary']
- l.description = li['description']
+ l, created = Layer.objects.get_or_create(name=index.layerItems[id].name)
+ l.up_date = index.layerItems[id].updated
+ l.summary = index.layerItems[id].summary
+ l.description = index.layerItems[id].description
if created:
# predefined layers in the fixtures (for example poky.xml)
# always preempt the Layer Index for these values
- l.vcs_url = li['vcs_url']
- l.vcs_web_url = li['vcs_web_url']
- l.vcs_web_tree_base_url = li['vcs_web_tree_base_url']
- l.vcs_web_file_base_url = li['vcs_web_file_base_url']
+ l.vcs_url = index.layerItems[id].vcs_url
+ l.vcs_web_url = index.layerItems[id].vcs_web_url
+ l.vcs_web_tree_base_url = index.layerItems[id].vcs_web_tree_base_url
+ l.vcs_web_file_base_url = index.layerItems[id].vcs_web_file_base_url
l.save()
except Layer.MultipleObjectsReturned:
logger.info("Skipped %s as we found multiple layers and "
"don't know which to update" %
- li['name'])
+ index.layerItems[id].name)
- li_layer_id_to_toaster_layer_id[li['id']] = l.pk
+ li_layer_id_to_toaster_layer_id[id] = l.pk
self.mini_progress("layers", i, total)
# update layer_versions
- logger.info("Fetching layer versions")
- layerbranches_info = _get_json_response(
- apilinks['layerBranches'] + "?filter=branch__name:%s" %
- "OR".join(whitelist_branch_names))
+ logger.info("Processing layer versions")
# Map Layer index layer_branch object id to
# layer_version toaster object id
li_layer_branch_id_to_toaster_lv_id = {}
- total = len(layerbranches_info)
- for i, lbi in enumerate(layerbranches_info):
+ total = len(index.layerBranches)
+ for i, id in enumerate(index.layerBranches):
# release as defined by toaster map to layerindex branch
- release = li_branch_id_to_toaster_release[lbi['branch']]
+ release = li_branch_id_to_toaster_release[index.layerBranches[id].branch_id]
try:
lv, created = Layer_Version.objects.get_or_create(
layer=Layer.objects.get(
- pk=li_layer_id_to_toaster_layer_id[lbi['layer']]),
+ pk=li_layer_id_to_toaster_layer_id[index.layerBranches[id].layer_id]),
release=release
)
except KeyError:
logger.warning(
"No such layerindex layer referenced by layerbranch %d" %
- lbi['layer'])
+ index.layerBranches[id].layer_id)
continue
if created:
- lv.release = li_branch_id_to_toaster_release[lbi['branch']]
- lv.up_date = lbi['updated']
- lv.commit = lbi['actual_branch']
- lv.dirpath = lbi['vcs_subdir']
+ lv.release = li_branch_id_to_toaster_release[index.layerBranches[id].branch_id]
+ lv.up_date = index.layerBranches[id].updated
+ lv.commit = index.layerBranches[id].actual_branch
+ lv.dirpath = index.layerBranches[id].vcs_subdir
lv.save()
- li_layer_branch_id_to_toaster_lv_id[lbi['id']] =\
+ li_layer_branch_id_to_toaster_lv_id[index.layerBranches[id].id] =\
lv.pk
self.mini_progress("layer versions", i, total)
- logger.info("Fetching layer version dependencies")
- # update layer dependencies
- layerdependencies_info = _get_json_response(
- apilinks['layerDependencies'] +
- "?filter=layerbranch__branch__name:%s" %
- "OR".join(whitelist_branch_names))
+ logger.info("Processing layer version dependencies")
dependlist = {}
- for ldi in layerdependencies_info:
+ for id in index.layerDependencies:
try:
lv = Layer_Version.objects.get(
- pk=li_layer_branch_id_to_toaster_lv_id[ldi['layerbranch']])
+ pk=li_layer_branch_id_to_toaster_lv_id[index.layerDependencies[id].layerbranch_id])
except Layer_Version.DoesNotExist as e:
continue
if lv not in dependlist:
dependlist[lv] = []
try:
- layer_id = li_layer_id_to_toaster_layer_id[ldi['dependency']]
+ layer_id = li_layer_id_to_toaster_layer_id[index.layerDependencies[id].dependency_id]
dependlist[lv].append(
Layer_Version.objects.get(layer__pk=layer_id,
@@ -247,7 +225,7 @@ class Command(BaseCommand):
except Layer_Version.DoesNotExist:
logger.warning("Cannot find layer version (ls:%s),"
"up_id:%s lv:%s" %
- (self, ldi['dependency'], lv))
+ (self, index.layerDependencies[id].dependency_id, lv))
total = len(dependlist)
for i, lv in enumerate(dependlist):
@@ -258,73 +236,61 @@ class Command(BaseCommand):
self.mini_progress("Layer version dependencies", i, total)
# update Distros
- logger.info("Fetching distro information")
- distros_info = _get_json_response(
- apilinks['distros'] + "?filter=layerbranch__branch__name:%s" %
- "OR".join(whitelist_branch_names))
+ logger.info("Processing distro information")
- total = len(distros_info)
- for i, di in enumerate(distros_info):
+ total = len(index.distros)
+ for i, id in enumerate(index.distros):
distro, created = Distro.objects.get_or_create(
- name=di['name'],
+ name=index.distros[id].name,
layer_version=Layer_Version.objects.get(
- pk=li_layer_branch_id_to_toaster_lv_id[di['layerbranch']]))
- distro.up_date = di['updated']
- distro.name = di['name']
- distro.description = di['description']
+ pk=li_layer_branch_id_to_toaster_lv_id[index.distros[id].layerbranch_id]))
+ distro.up_date = index.distros[id].updated
+ distro.name = index.distros[id].name
+ distro.description = index.distros[id].description
distro.save()
self.mini_progress("distros", i, total)
# update machines
- logger.info("Fetching machine information")
- machines_info = _get_json_response(
- apilinks['machines'] + "?filter=layerbranch__branch__name:%s" %
- "OR".join(whitelist_branch_names))
+ logger.info("Processing machine information")
- total = len(machines_info)
- for i, mi in enumerate(machines_info):
+ total = len(index.machines)
+ for i, id in enumerate(index.machines):
mo, created = Machine.objects.get_or_create(
- name=mi['name'],
+ name=index.machines[id].name,
layer_version=Layer_Version.objects.get(
- pk=li_layer_branch_id_to_toaster_lv_id[mi['layerbranch']]))
- mo.up_date = mi['updated']
- mo.name = mi['name']
- mo.description = mi['description']
+ pk=li_layer_branch_id_to_toaster_lv_id[index.machines[id].layerbranch_id]))
+ mo.up_date = index.machines[id].updated
+ mo.name = index.machines[id].name
+ mo.description = index.machines[id].description
mo.save()
self.mini_progress("machines", i, total)
# update recipes; paginate by layer version / layer branch
- logger.info("Fetching recipe information")
- recipes_info = _get_json_response(
- apilinks['recipes'] + "?filter=layerbranch__branch__name:%s" %
- "OR".join(whitelist_branch_names))
+ logger.info("Processing recipe information")
- total = len(recipes_info)
- for i, ri in enumerate(recipes_info):
+ total = len(index.recipes)
+ for i, id in enumerate(index.recipes):
try:
- lv_id = li_layer_branch_id_to_toaster_lv_id[ri['layerbranch']]
+ lv_id = li_layer_branch_id_to_toaster_lv_id[index.recipes[id].layerbranch_id]
lv = Layer_Version.objects.get(pk=lv_id)
ro, created = Recipe.objects.get_or_create(
layer_version=lv,
- name=ri['pn']
+ name=index.recipes[id].pn
)
ro.layer_version = lv
- ro.up_date = ri['updated']
- ro.name = ri['pn']
- ro.version = ri['pv']
- ro.summary = ri['summary']
- ro.description = ri['description']
- ro.section = ri['section']
- ro.license = ri['license']
- ro.homepage = ri['homepage']
- ro.bugtracker = ri['bugtracker']
- ro.file_path = ri['filepath'] + "/" + ri['filename']
- if 'inherits' in ri:
- ro.is_image = 'image' in ri['inherits'].split()
- else: # workaround for old style layer index
- ro.is_image = "-image-" in ri['pn']
+ ro.up_date = index.recipes[id].updated
+ ro.name = index.recipes[id].pn
+ ro.version = index.recipes[id].pv
+ ro.summary = index.recipes[id].summary
+ ro.description = index.recipes[id].description
+ ro.section = index.recipes[id].section
+ ro.license = index.recipes[id].license
+ ro.homepage = index.recipes[id].homepage
+ ro.bugtracker = index.recipes[id].bugtracker
+ ro.file_path = index.recipes[id].fullpath
+ ro.is_image = 'image' in index.recipes[id].inherits.split()
ro.save()
except Exception as e:
logger.warning("Failed saving recipe %s", e)
diff --git a/bitbake/lib/toaster/orm/migrations/0018_project_specific.py b/bitbake/lib/toaster/orm/migrations/0018_project_specific.py
new file mode 100644
index 00000000000..084ecad7ba8
--- /dev/null
+++ b/bitbake/lib/toaster/orm/migrations/0018_project_specific.py
@@ -0,0 +1,28 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('orm', '0017_distro_clone'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='Project',
+ name='builddir',
+ field=models.TextField(),
+ ),
+ migrations.AddField(
+ model_name='Project',
+ name='merged_attr',
+ field=models.BooleanField(default=False)
+ ),
+ migrations.AddField(
+ model_name='Build',
+ name='progress_item',
+ field=models.CharField(max_length=40)
+ ),
+ ]
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py
index 3a7dff8ca64..be0bda5b153 100644
--- a/bitbake/lib/toaster/orm/models.py
+++ b/bitbake/lib/toaster/orm/models.py
@@ -121,8 +121,15 @@ class ToasterSetting(models.Model):
class ProjectManager(models.Manager):
- def create_project(self, name, release):
- if release is not None:
+ def create_project(self, name, release, existing_project=None):
+ if existing_project and (release is not None):
+ prj = existing_project
+ prj.bitbake_version = release.bitbake_version
+ prj.release = release
+ # Delete the previous ProjectLayer mappings
+ for pl in ProjectLayer.objects.filter(project=prj):
+ pl.delete()
+ elif release is not None:
prj = self.model(name=name,
bitbake_version=release.bitbake_version,
release=release)
@@ -130,15 +137,14 @@ class ProjectManager(models.Manager):
prj = self.model(name=name,
bitbake_version=None,
release=None)
-
prj.save()
for defaultconf in ToasterSetting.objects.filter(
name__startswith="DEFCONF_"):
name = defaultconf.name[8:]
- ProjectVariable.objects.create(project=prj,
- name=name,
- value=defaultconf.value)
+ pv,create = ProjectVariable.objects.get_or_create(project=prj,name=name)
+ pv.value = defaultconf.value
+ pv.save()
if release is None:
return prj
@@ -197,6 +203,11 @@ class Project(models.Model):
user_id = models.IntegerField(null=True)
objects = ProjectManager()
+ # build directory override (e.g. imported)
+ builddir = models.TextField()
+ # merge the Toaster configure attributes directly into the standard conf files
+ merged_attr = models.BooleanField(default=False)
+
# set to True for the project which is the default container
# for builds initiated by the command line etc.
is_default= models.BooleanField(default=False)
@@ -305,6 +316,15 @@ class Project(models.Model):
return layer_versions
+ def get_default_image_recipe(self):
+ try:
+ return self.projectvariable_set.get(name="DEFAULT_IMAGE").value
+ except (ProjectVariable.DoesNotExist,IndexError):
+ return None;
+
+ def get_is_new(self):
+ return self.get_variable(Project.PROJECT_SPECIFIC_ISNEW)
+
def get_available_machines(self):
""" Returns QuerySet of all Machines which are provided by the
Layers currently added to the Project """
@@ -353,6 +373,32 @@ class Project(models.Model):
return queryset
+ # Project Specific status management
+ PROJECT_SPECIFIC_STATUS = 'INTERNAL_PROJECT_SPECIFIC_STATUS'
+ PROJECT_SPECIFIC_CALLBACK = 'INTERNAL_PROJECT_SPECIFIC_CALLBACK'
+ PROJECT_SPECIFIC_ISNEW = 'INTERNAL_PROJECT_SPECIFIC_ISNEW'
+ PROJECT_SPECIFIC_DEFAULTIMAGE = 'PROJECT_SPECIFIC_DEFAULTIMAGE'
+ PROJECT_SPECIFIC_NONE = ''
+ PROJECT_SPECIFIC_NEW = '1'
+ PROJECT_SPECIFIC_EDIT = '2'
+ PROJECT_SPECIFIC_CLONING = '3'
+ PROJECT_SPECIFIC_CLONING_SUCCESS = '4'
+ PROJECT_SPECIFIC_CLONING_FAIL = '5'
+
+ def get_variable(self,variable,default_value = ''):
+ try:
+ return self.projectvariable_set.get(name=variable).value
+ except (ProjectVariable.DoesNotExist,IndexError):
+ return default_value
+
+ def set_variable(self,variable,value):
+ pv,create = ProjectVariable.objects.get_or_create(project = self, name = variable)
+ pv.value = value
+ pv.save()
+
+ def get_default_image(self):
+ return self.get_variable(Project.PROJECT_SPECIFIC_DEFAULTIMAGE)
+
def schedule_build(self):
from bldcontrol.models import BuildRequest, BRTarget, BRLayer
@@ -459,6 +505,9 @@ class Build(models.Model):
# number of repos cloned so far for this build (default off)
repos_cloned = models.IntegerField(default=1)
+ # Hint on current progress item
+ progress_item = models.CharField(max_length=40)
+
@staticmethod
def get_recent(project=None):
"""
@@ -1663,6 +1712,9 @@ class CustomImageRecipe(Recipe):
path_schema_two = self.base_recipe.file_path
+ path_schema_three = "%s/%s" % (self.base_recipe.layer_version.layer.local_source_dir,
+ self.base_recipe.file_path)
+
if os.path.exists(path_schema_one):
return path_schema_one
@@ -1670,6 +1722,10 @@ class CustomImageRecipe(Recipe):
if os.path.exists(path_schema_two):
return path_schema_two
+ # Or a local path if all layers are local
+ if os.path.exists(path_schema_three):
+ return path_schema_three
+
return None
def generate_recipe_file_contents(self):
diff --git a/bitbake/lib/toaster/toastergui/api.py b/bitbake/lib/toaster/toastergui/api.py
index ab6ba69e0e1..1bec56d468a 100644
--- a/bitbake/lib/toaster/toastergui/api.py
+++ b/bitbake/lib/toaster/toastergui/api.py
@@ -22,7 +22,9 @@ import os
import re
import logging
import json
+import subprocess
from collections import Counter
+from shutil import copyfile
from orm.models import Project, ProjectTarget, Build, Layer_Version
from orm.models import LayerVersionDependency, LayerSource, ProjectLayer
@@ -38,6 +40,18 @@ from django.core.urlresolvers import reverse
from django.db.models import Q, F
from django.db import Error
from toastergui.templatetags.projecttags import filtered_filesizeformat
+from django.utils import timezone
+import pytz
+
+# development/debugging support
+verbose = 2
+def _log(msg):
+ if 1 == verbose:
+ print(msg)
+ elif 2 == verbose:
+ f1=open('/tmp/toaster.log', 'a')
+ f1.write("|" + msg + "|\n" )
+ f1.close()
logger = logging.getLogger("toaster")
@@ -137,6 +151,130 @@ class XhrBuildRequest(View):
return response
+class XhrProjectUpdate(View):
+
+ def get(self, request, *args, **kwargs):
+ return HttpResponse()
+
+ def post(self, request, *args, **kwargs):
+ """
+ Project Update
+
+ Entry point: /xhr_projectupdate/<project_id>
+ Method: POST
+
+ Args:
+ pid: pid of project to update
+
+ Returns:
+ {"error": "ok"}
+ or
+ {"error": <error message>}
+ """
+
+ project = Project.objects.get(pk=kwargs['pid'])
+ logger.debug("ProjectUpdateCallback:project.pk=%d,project.builddir=%s" % (project.pk,project.builddir))
+
+ if 'do_update' in request.POST:
+
+ # Extract any default image recipe
+ if 'default_image' in request.POST:
+ project.set_variable(Project.PROJECT_SPECIFIC_DEFAULTIMAGE,str(request.POST['default_image']))
+ else:
+ project.set_variable(Project.PROJECT_SPECIFIC_DEFAULTIMAGE,'')
+
+ logger.debug("ProjectUpdateCallback:Chain to the build request")
+
+ # Chain to the build request
+ xhrBuildRequest = XhrBuildRequest()
+ return xhrBuildRequest.post(request, *args, **kwargs)
+
+ logger.warning("ERROR:XhrProjectUpdate")
+ response = HttpResponse()
+ response.status_code = 500
+ return response
+
+class XhrSetDefaultImageUrl(View):
+
+ def get(self, request, *args, **kwargs):
+ return HttpResponse()
+
+ def post(self, request, *args, **kwargs):
+ """
+ Project Update
+
+ Entry point: /xhr_setdefaultimage/<project_id>
+ Method: POST
+
+ Args:
+ pid: pid of project to update default image
+
+ Returns:
+ {"error": "ok"}
+ or
+ {"error": <error message>}
+ """
+
+ project = Project.objects.get(pk=kwargs['pid'])
+ logger.debug("XhrSetDefaultImageUrl:project.pk=%d" % (project.pk))
+
+ # set any default image recipe
+ if 'targets' in request.POST:
+ default_target = str(request.POST['targets'])
+ project.set_variable(Project.PROJECT_SPECIFIC_DEFAULTIMAGE,default_target)
+ logger.debug("XhrSetDefaultImageUrl,project.pk=%d,project.builddir=%s" % (project.pk,project.builddir))
+ return error_response('ok')
+
+ logger.warning("ERROR:XhrSetDefaultImageUrl")
+ response = HttpResponse()
+ response.status_code = 500
+ return response
+
+
+#
+# Layer Management
+#
+# Rules for 'local_source_dir' layers
+# * Layers must have a unique name in the Layers table
+# * A 'local_source_dir' layer is supposed to be shared
+# by all projects that use it, so that it can have the
+# same logical name
+# * Each project that uses a layer will have its own
+# LayerVersion and Project Layer for it
+# * During the Paroject delete process, when the last
+# LayerVersion for a 'local_source_dir' layer is deleted
+# then the Layer record is deleted to remove orphans
+#
+
+def scan_layer_content(layer,layer_version):
+ # if this is a local layer directory, we can immediately scan its content
+ if layer.local_source_dir:
+ try:
+ # recipes-*/*/*.bb
+ cmd = '%s %s' % ('ls', os.path.join(layer.local_source_dir,'recipes-*/*/*.bb'))
+ recipes_list = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE,stderr=subprocess.STDOUT).stdout.read()
+ recipes_list = recipes_list.decode("utf-8").strip()
+ if recipes_list and 'No such' not in recipes_list:
+ for recipe in recipes_list.split('\n'):
+ recipe_path = recipe[recipe.rfind('recipes-'):]
+ recipe_name = recipe[recipe.rfind('/')+1:].replace('.bb','')
+ recipe_ver = recipe_name.rfind('_')
+ if recipe_ver > 0:
+ recipe_name = recipe_name[0:recipe_ver]
+ if recipe_name:
+ ro, created = Recipe.objects.get_or_create(
+ layer_version=layer_version,
+ name=recipe_name
+ )
+ if created:
+ ro.file_path = recipe_path
+ ro.summary = 'Recipe %s from layer %s' % (recipe_name,layer.name)
+ ro.description = ro.summary
+ ro.save()
+
+ except Exception as e:
+ logger.warning("ERROR:scan_layer_content: %s" % e)
+
class XhrLayer(View):
""" Delete, Get, Add and Update Layer information
@@ -265,6 +403,7 @@ class XhrLayer(View):
(csv)]
"""
+
try:
project = Project.objects.get(pk=kwargs['pid'])
@@ -285,7 +424,13 @@ class XhrLayer(View):
if layer_data['name'] in existing_layers:
return JsonResponse({"error": "layer-name-exists"})
- layer = Layer.objects.create(name=layer_data['name'])
+ if ('local_source_dir' in layer_data):
+ # Local layer can be shared across projects. They have no 'release'
+ # and are not included in get_all_compatible_layer_versions() above
+ layer,created = Layer.objects.get_or_create(name=layer_data['name'])
+ _log("Local Layer created=%s" % created)
+ else:
+ layer = Layer.objects.create(name=layer_data['name'])
layer_version = Layer_Version.objects.create(
layer=layer,
@@ -293,7 +438,7 @@ class XhrLayer(View):
layer_source=LayerSource.TYPE_IMPORTED)
# Local layer
- if ('local_source_dir' in layer_data) and layer.local_source_dir:
+ if ('local_source_dir' in layer_data): ### and layer.local_source_dir:
layer.local_source_dir = layer_data['local_source_dir']
# git layer
elif 'vcs_url' in layer_data:
@@ -325,6 +470,9 @@ class XhrLayer(View):
'layerdetailurl':
layer_dep.get_detailspage_url(project.pk)})
+ # Scan the layer's content and update components
+ scan_layer_content(layer,layer_version)
+
except Layer_Version.DoesNotExist:
return error_response("layer-dep-not-found")
except Project.DoesNotExist:
@@ -1014,8 +1162,24 @@ class XhrProject(View):
state=BuildRequest.REQ_INPROGRESS):
XhrBuildRequest.cancel_build(br)
+ # gather potential orphaned local layers attached to this project
+ project_local_layer_list = []
+ for pl in ProjectLayer.objects.filter(project=project):
+ if pl.layercommit.layer_source == LayerSource.TYPE_IMPORTED:
+ project_local_layer_list.append(pl.layercommit.layer)
+
+ # deep delete the project and its dependencies
project.delete()
+ # delete any local layers now orphaned
+ _log("LAYER_ORPHAN_CHECK:Check for orphaned layers")
+ for layer in project_local_layer_list:
+ layer_refs = Layer_Version.objects.filter(layer=layer)
+ _log("LAYER_ORPHAN_CHECK:Ref Count for '%s' = %d" % (layer.name,len(layer_refs)))
+ if 0 == len(layer_refs):
+ _log("LAYER_ORPHAN_CHECK:DELETE orpahned '%s'" % (layer.name))
+ Layer.objects.filter(pk=layer.id).delete()
+
except Project.DoesNotExist:
return error_response("Project %s does not exist" %
kwargs['project_id'])
diff --git a/bitbake/lib/toaster/toastergui/static/js/layerBtn.js b/bitbake/lib/toaster/toastergui/static/js/layerBtn.js
index 9f9eda1e1e7..a5a6563d1ad 100644
--- a/bitbake/lib/toaster/toastergui/static/js/layerBtn.js
+++ b/bitbake/lib/toaster/toastergui/static/js/layerBtn.js
@@ -67,6 +67,18 @@ function layerBtnsInit() {
});
});
+ $("td .set-default-recipe-btn").unbind('click');
+ $("td .set-default-recipe-btn").click(function(e){
+ e.preventDefault();
+ var recipe = $(this).data('recipe-name');
+
+ libtoaster.setDefaultImage(null, recipe,
+ function(){
+ /* Success */
+ window.location.replace(libtoaster.ctx.projectSpecificPageUrl);
+ });
+ });
+
$(".customise-btn").unbind('click');
$(".customise-btn").click(function(e){
diff --git a/bitbake/lib/toaster/toastergui/static/js/layerdetails.js b/bitbake/lib/toaster/toastergui/static/js/layerdetails.js
index 9ead393cbf0..933b65b4ca3 100644
--- a/bitbake/lib/toaster/toastergui/static/js/layerdetails.js
+++ b/bitbake/lib/toaster/toastergui/static/js/layerdetails.js
@@ -359,7 +359,8 @@ function layerDetailsPageInit (ctx) {
if ($(this).is("dt")) {
var dd = $(this).next("dd");
if (!dd.children("form:visible")|| !dd.find(".current-value").html()){
- if (ctx.layerVersion.layer_source == ctx.layerSourceTypes.TYPE_IMPORTED){
+ if (ctx.layerVersion.layer_source == ctx.layerSourceTypes.TYPE_IMPORTED ||
+ ctx.layerVersion.layer_source == ctx.layerSourceTypes.TYPE_LOCAL) {
/* There's no current value and the layer is editable
* so show the "Not set" and hide the delete icon
*/
diff --git a/bitbake/lib/toaster/toastergui/static/js/libtoaster.js b/bitbake/lib/toaster/toastergui/static/js/libtoaster.js
index 6f9b5d0f003..2e8863af26c 100644
--- a/bitbake/lib/toaster/toastergui/static/js/libtoaster.js
+++ b/bitbake/lib/toaster/toastergui/static/js/libtoaster.js
@@ -465,6 +465,108 @@ var libtoaster = (function () {
$.cookie('toaster-notification', JSON.stringify(data), { path: '/'});
}
+ /* _updateProject:
+ * url: xhrProjectUpdateUrl or null for current project
+ * onsuccess: callback for successful execution
+ * onfail: callback for failed execution
+ */
+ function _updateProject (url, targets, default_image, onsuccess, onfail) {
+
+ if (!url)
+ url = libtoaster.ctx.xhrProjectUpdateUrl;
+
+ /* Flatten the array of targets into a space spearated list */
+ if (targets instanceof Array){
+ targets = targets.reduce(function(prevV, nextV){
+ return prev + ' ' + next;
+ });
+ }
+
+ $.ajax( {
+ type: "POST",
+ url: url,
+ data: { 'do_update' : 'True' , 'targets' : targets , 'default_image' : default_image , },
+ headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
+ success: function (_data) {
+ if (_data.error !== "ok") {
+ console.warn(_data.error);
+ } else {
+ if (onsuccess !== undefined) onsuccess(_data);
+ }
+ },
+ error: function (_data) {
+ console.warn("Call failed");
+ console.warn(_data);
+ if (onfail) onfail(data);
+ } });
+ }
+
+ /* _cancelProject:
+ * url: xhrProjectUpdateUrl or null for current project
+ * onsuccess: callback for successful execution
+ * onfail: callback for failed execution
+ */
+ function _cancelProject (url, onsuccess, onfail) {
+
+ if (!url)
+ url = libtoaster.ctx.xhrProjectCancelUrl;
+
+ $.ajax( {
+ type: "POST",
+ url: url,
+ data: { 'do_cancel' : 'True' },
+ headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
+ success: function (_data) {
+ if (_data.error !== "ok") {
+ console.warn(_data.error);
+ } else {
+ if (onsuccess !== undefined) onsuccess(_data);
+ }
+ },
+ error: function (_data) {
+ console.warn("Call failed");
+ console.warn(_data);
+ if (onfail) onfail(data);
+ } });
+ }
+
+ /* _setDefaultImage:
+ * url: xhrSetDefaultImageUrl or null for current project
+ * targets: an array or space separated list of targets to set as default
+ * onsuccess: callback for successful execution
+ * onfail: callback for failed execution
+ */
+ function _setDefaultImage (url, targets, onsuccess, onfail) {
+
+ if (!url)
+ url = libtoaster.ctx.xhrSetDefaultImageUrl;
+
+ /* Flatten the array of targets into a space spearated list */
+ if (targets instanceof Array){
+ targets = targets.reduce(function(prevV, nextV){
+ return prev + ' ' + next;
+ });
+ }
+
+ $.ajax( {
+ type: "POST",
+ url: url,
+ data: { 'targets' : targets },
+ headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
+ success: function (_data) {
+ if (_data.error !== "ok") {
+ console.warn(_data.error);
+ } else {
+ if (onsuccess !== undefined) onsuccess(_data);
+ }
+ },
+ error: function (_data) {
+ console.warn("Call failed");
+ console.warn(_data);
+ if (onfail) onfail(data);
+ } });
+ }
+
return {
enableAjaxLoadingTimer: _enableAjaxLoadingTimer,
disableAjaxLoadingTimer: _disableAjaxLoadingTimer,
@@ -485,6 +587,9 @@ var libtoaster = (function () {
createCustomRecipe: _createCustomRecipe,
makeProjectNameValidation: _makeProjectNameValidation,
setNotification: _setNotification,
+ updateProject : _updateProject,
+ cancelProject : _cancelProject,
+ setDefaultImage : _setDefaultImage,
};
})();
diff --git a/bitbake/lib/toaster/toastergui/static/js/mrbsection.js b/bitbake/lib/toaster/toastergui/static/js/mrbsection.js
index c0c5fa95898..f07ccf8181c 100644
--- a/bitbake/lib/toaster/toastergui/static/js/mrbsection.js
+++ b/bitbake/lib/toaster/toastergui/static/js/mrbsection.js
@@ -86,7 +86,7 @@ function mrbSectionInit(ctx){
if (buildFinished(build)) {
// a build finished: reload the whole page so that the build
// shows up in the builds table
- window.location.reload();
+ window.location.reload(true);
}
else if (stateChanged(build)) {
// update the whole template
@@ -110,6 +110,8 @@ function mrbSectionInit(ctx){
// update the clone progress text
selector = '#repos-cloned-percentage-' + build.id;
$(selector).html(build.repos_cloned_percentage);
+ selector = '#repos-cloned-progressitem-' + build.id;
+ $(selector).html('('+build.progress_item+')');
// update the recipe progress bar
selector = '#repos-cloned-percentage-bar-' + build.id;
diff --git a/bitbake/lib/toaster/toastergui/static/js/projecttopbar.js b/bitbake/lib/toaster/toastergui/static/js/projecttopbar.js
index 69220aaf572..3f9e1867084 100644
--- a/bitbake/lib/toaster/toastergui/static/js/projecttopbar.js
+++ b/bitbake/lib/toaster/toastergui/static/js/projecttopbar.js
@@ -14,6 +14,9 @@ function projectTopBarInit(ctx) {
var newBuildTargetBuildBtn = $("#build-button");
var selectedTarget;
+ var updateProjectBtn = $("#update-project-button");
+ var cancelProjectBtn = $("#cancel-project-button");
+
/* Project name change functionality */
projectNameFormToggle.click(function(e){
e.preventDefault();
@@ -89,6 +92,25 @@ function projectTopBarInit(ctx) {
}, null);
});
+ updateProjectBtn.click(function (e) {
+ e.preventDefault();
+
+ selectedTarget = { name: "_PROJECT_PREPARE_" };
+
+ /* Save current default build image, fire off the build */
+ libtoaster.updateProject(null, selectedTarget.name, newBuildTargetInput.val().trim(),
+ function(){
+ window.location.replace(libtoaster.ctx.projectSpecificPageUrl);
+ }, null);
+ });
+
+ cancelProjectBtn.click(function (e) {
+ e.preventDefault();
+
+ /* redirect to 'done/canceled' landing page */
+ window.location.replace(libtoaster.ctx.landingSpecificCancelURL);
+ });
+
/* Call makeProjectNameValidation function */
libtoaster.makeProjectNameValidation($("#project-name-change-input"),
$("#hint-error-project-name"), $("#validate-project-name"),
diff --git a/bitbake/lib/toaster/toastergui/tables.py b/bitbake/lib/toaster/toastergui/tables.py
index dca2fa29130..03bd2ae9c6e 100644
--- a/bitbake/lib/toaster/toastergui/tables.py
+++ b/bitbake/lib/toaster/toastergui/tables.py
@@ -35,6 +35,8 @@ from toastergui.tablefilter import TableFilterActionToggle
from toastergui.tablefilter import TableFilterActionDateRange
from toastergui.tablefilter import TableFilterActionDay
+import os
+
class ProjectFilters(object):
@staticmethod
def in_project(project_layers):
@@ -339,6 +341,8 @@ class RecipesTable(ToasterTable):
'filter_name' : "in_current_project",
'static_data_name' : "add-del-layers",
'static_data_template' : '{% include "recipe_btn.html" %}'}
+ if '1' == os.environ.get('TOASTER_PROJECTSPECIFIC'):
+ build_col['static_data_template'] = '{% include "recipe_add_btn.html" %}'
def get_context_data(self, **kwargs):
project = Project.objects.get(pk=kwargs['pid'])
diff --git a/bitbake/lib/toaster/toastergui/templates/base_specific.html b/bitbake/lib/toaster/toastergui/templates/base_specific.html
new file mode 100644
index 00000000000..e377cadd730
--- /dev/null
+++ b/bitbake/lib/toaster/toastergui/templates/base_specific.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html>
+{% load static %}
+{% load projecttags %}
+{% load project_url_tag %}
+<html lang="en">
+ <head>
+ <title>
+ {% block title %} Toaster {% endblock %}
+ </title>
+ <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}" type="text/css"/>
+ <!--link rel="stylesheet" href="{% static 'css/bootstrap-theme.css' %}" type="text/css"/-->
+ <link rel="stylesheet" href="{% static 'css/font-awesome.min.css' %}" type='text/css'/>
+ <link rel="stylesheet" href="{% static 'css/default.css' %}" type='text/css'/>
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
+ <script src="{% static 'js/jquery-2.0.3.min.js' %}">
+ </script>
+ <script src="{% static 'js/jquery.cookie.js' %}">
+ </script>
+ <script src="{% static 'js/bootstrap.min.js' %}">
+ </script>
+ <script src="{% static 'js/typeahead.jquery.js' %}">
+ </script>
+ <script src="{% static 'js/jsrender.min.js' %}">
+ </script>
+ <script src="{% static 'js/highlight.pack.js' %}">
+ </script>
+ <script src="{% static 'js/libtoaster.js' %}">
+ </script>
+ {% if DEBUG %}
+ <script>
+ libtoaster.debug = true;
+ </script>
+ {% endif %}
+ <script>
+ /* Set JsRender delimiters (mrb_section.html) different than Django's */
+ $.views.settings.delimiters("<%", "%>");
+
+ /* This table allows Django substitutions to be passed to libtoaster.js */
+ libtoaster.ctx = {
+ jsUrl : "{% static 'js/' %}",
+ htmlUrl : "{% static 'html/' %}",
+ projectsUrl : "{% url 'all-projects' %}",
+ projectsTypeAheadUrl: {% url 'xhr_projectstypeahead' as prjurl%}{{prjurl|json}},
+ {% if project.id %}
+ landingSpecificURL : "{% url 'landing_specific' project.id %}",
+ landingSpecificCancelURL : "{% url 'landing_specific_cancel' project.id %}",
+ projectId : {{project.id}},
+ projectPageUrl : {% url 'project' project.id as purl %}{{purl|json}},
+ projectSpecificPageUrl : {% url 'project_specific' project.id as purl %}{{purl|json}},
+ xhrProjectUrl : {% url 'xhr_project' project.id as pxurl %}{{pxurl|json}},
+ projectName : {{project.name|json}},
+ recipesTypeAheadUrl: {% url 'xhr_recipestypeahead' project.id as paturl%}{{paturl|json}},
+ layersTypeAheadUrl: {% url 'xhr_layerstypeahead' project.id as paturl%}{{paturl|json}},
+ machinesTypeAheadUrl: {% url 'xhr_machinestypeahead' project.id as paturl%}{{paturl|json}},
+ distrosTypeAheadUrl: {% url 'xhr_distrostypeahead' project.id as paturl%}{{paturl|json}},
+ projectBuildsUrl: {% url 'projectbuilds' project.id as pburl %}{{pburl|json}},
+ xhrCustomRecipeUrl : "{% url 'xhr_customrecipe' %}",
+ projectId : {{project.id}},
+ xhrBuildRequestUrl: "{% url 'xhr_buildrequest' project.id %}",
+ mostRecentBuildsUrl: "{% url 'most_recent_builds' %}?project_id={{project.id}}",
+ xhrProjectUpdateUrl: "{% url 'xhr_projectupdate' project.id %}",
+ xhrProjectCancelUrl: "{% url 'landing_specific_cancel' project.id %}",
+ xhrSetDefaultImageUrl: "{% url 'xhr_setdefaultimage' project.id %}",
+ {% else %}
+ mostRecentBuildsUrl: "{% url 'most_recent_builds' %}",
+ projectId : undefined,
+ projectPageUrl : undefined,
+ projectName : undefined,
+ {% endif %}
+ };
+ </script>
+ {% block extraheadcontent %}
+ {% endblock %}
+ </head>
+
+ <body>
+
+ {% csrf_token %}
+ <div id="loading-notification" class="alert alert-warning lead text-center" style="display:none">
+ Loading <i class="fa-pulse icon-spinner"></i>
+ </div>
+
+ <div id="change-notification" class="alert alert-info alert-dismissible change-notification" style="display:none">
+ <button type="button" class="close" id="hide-alert" data-toggle="alert">&times;</button>
+ <span id="change-notification-msg"></span>
+ </div>
+
+ <nav class="navbar navbar-default navbar-fixed-top">
+ <div class="container-fluid">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#global-nav" aria-expanded="false">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <div class="toaster-navbar-brand">
+ {% if project_specific %}
+ <img class="logo" src="{% static 'img/logo.png' %}" class="" alt="Yocto Project logo"/>
+ Toaster
+ {% else %}
+ <a href="/">
+ </a>
+ <a href="/">
+ <img class="logo" src="{% static 'img/logo.png' %}" class="" alt="Yocto Project logo"/>
+ </a>
+ <a class="brand" href="/">Toaster</a>
+ {% endif %}
+ {% if DEBUG %}
+ <span class="glyphicon glyphicon-info-sign" title="<strong>Toaster version information</strong>" data-content="<dl><dt>Git branch</dt><dd>{{TOASTER_BRANCH}}</dd><dt>Git revision</dt><dd>{{TOASTER_REVISION}}</dd></dl>"></i>
+ {% endif %}
+ </div>
+ </div>
+ <div class="collapse navbar-collapse" id="global-nav">
+ <ul class="nav navbar-nav">
+ <h3> Project Configuration Page </h3>
+ </div>
+ </div>
+ </nav>
+
+ <div class="container-fluid">
+ {% block pagecontent %}
+ {% endblock %}
+ </div>
+ </body>
+</html>
diff --git a/bitbake/lib/toaster/toastergui/templates/baseprojectspecificpage.html b/bitbake/lib/toaster/toastergui/templates/baseprojectspecificpage.html
new file mode 100644
index 00000000000..d0b588de984
--- /dev/null
+++ b/bitbake/lib/toaster/toastergui/templates/baseprojectspecificpage.html
@@ -0,0 +1,48 @@
+{% extends "base_specific.html" %}
+
+{% load projecttags %}
+{% load humanize %}
+
+{% block title %} {{title}} - {{project.name}} - Toaster {% endblock %}
+
+{% block pagecontent %}
+
+<div class="row">
+ {% include "project_specific_topbar.html" %}
+ <script type="text/javascript">
+$(document).ready(function(){
+ $("#config-nav .nav li a").each(function(){
+ if (window.location.pathname === $(this).attr('href'))
+ $(this).parent().addClass('active');
+ else
+ $(this).parent().removeClass('active');
+ });
+
+ $("#topbar-configuration-tab").addClass("active")
+ });
+ </script>
+
+ <!-- only on config pages -->
+ <div id="config-nav" class="col-md-2">
+ <ul class="nav nav-pills nav-stacked">
+ <li><a class="nav-parent" href="{% url 'project' project.id %}">Configuration</a></li>
+ <li class="nav-header">Compatible metadata</li>
+ <li><a href="{% url 'projectcustomimages' project.id %}">Custom images</a></li>
+ <li><a href="{% url 'projectimagerecipes' project.id %}">Image recipes</a></li>
+ <li><a href="{% url 'projectsoftwarerecipes' project.id %}">Software recipes</a></li>
+ <li><a href="{% url 'projectmachines' project.id %}">Machines</a></li>
+ <li><a href="{% url 'projectlayers' project.id %}">Layers</a></li>
+ <li><a href="{% url 'projectdistros' project.id %}">Distros</a></li>
+ <li class="nav-header">Extra configuration</li>
+ <li><a href="{% url 'projectconf' project.id %}">BitBake variables</a></li>
+
+ <li class="nav-header">Actions</li>
+ </ul>
+ </div>
+ <div class="col-md-10">
+ {% block projectinfomain %}{% endblock %}
+ </div>
+
+</div>
+{% endblock %}
+
diff --git a/bitbake/lib/toaster/toastergui/templates/generic-toastertable-page.html b/bitbake/lib/toaster/toastergui/templates/generic-toastertable-page.html
index b3eabe1a26b..99fbb38970a 100644
--- a/bitbake/lib/toaster/toastergui/templates/generic-toastertable-page.html
+++ b/bitbake/lib/toaster/toastergui/templates/generic-toastertable-page.html
@@ -1,4 +1,4 @@
-{% extends "baseprojectpage.html" %}
+{% extends project_specific|yesno:"baseprojectspecificpage.html,baseprojectpage.html" %}
{% load projecttags %}
{% load humanize %}
{% load static %}
diff --git a/bitbake/lib/toaster/toastergui/templates/importlayer.html b/bitbake/lib/toaster/toastergui/templates/importlayer.html
index 97d52c76c1e..e0c987eef13 100644
--- a/bitbake/lib/toaster/toastergui/templates/importlayer.html
+++ b/bitbake/lib/toaster/toastergui/templates/importlayer.html
@@ -1,4 +1,4 @@
-{% extends "base.html" %}
+{% extends project_specific|yesno:"baseprojectspecificpage.html,base.html" %}
{% load projecttags %}
{% load humanize %}
{% load static %}
@@ -6,7 +6,7 @@
{% block pagecontent %}
<div class="row">
- {% include "projecttopbar.html" %}
+ {% include project_specific|yesno:"project_specific_topbar.html,projecttopbar.html" %}
{% if project and project.release %}
<script src="{% static 'js/layerDepsModal.js' %}"></script>
<script src="{% static 'js/importlayer.js' %}"></script>
diff --git a/bitbake/lib/toaster/toastergui/templates/landing_specific.html b/bitbake/lib/toaster/toastergui/templates/landing_specific.html
new file mode 100644
index 00000000000..e289c7d4a55
--- /dev/null
+++ b/bitbake/lib/toaster/toastergui/templates/landing_specific.html
@@ -0,0 +1,50 @@
+{% extends "base_specific.html" %}
+
+{% load static %}
+{% load projecttags %}
+{% load humanize %}
+
+{% block title %} Welcome to Toaster {% endblock %}
+
+{% block pagecontent %}
+
+ <div class="container">
+ <div class="row">
+ <!-- Empty - no build module -->
+ <div class="page-header top-air">
+ <h1>
+ Configuration {% if status == "cancel" %}Canceled{% else %}Completed{% endif %}! You can now close this window.
+ </h1>
+ </div>
+ <div class="alert alert-info lead">
+ <p>
+ Your project configuration {% if status == "cancel" %}changes have been canceled{% else %}has completed!{% endif %}
+ <br>
+ <br>
+ <ul>
+ <li>
+ The Toaster instance for project configuration has been shut down
+ </li>
+ <li>
+ You can start Toaster independently for advanced project management and analysis:
+ <pre><code>
+ Set up bitbake environment:
+ $ cd {{install_dir}}
+ $ . oe-init-build-env [toaster_server]
+
+ Option 1: Start a local Toaster server, open local browser to "localhost:8000"
+ $ . toaster start webport=8000
+
+ Option 2: Start a shared Toaster server, open any browser to "[host_ip]:8000"
+ $ . toaster start webport=0.0.0.0:8000
+
+ To stop the Toaster server:
+ $ . toaster stop
+ </code></pre>
+ </li>
+ </ul>
+ </p>
+ </div>
+ </div>
+
+{% endblock %}
diff --git a/bitbake/lib/toaster/toastergui/templates/layerdetails.html b/bitbake/lib/toaster/toastergui/templates/layerdetails.html
index e0069db80c5..1e26e31c8b8 100644
--- a/bitbake/lib/toaster/toastergui/templates/layerdetails.html
+++ b/bitbake/lib/toaster/toastergui/templates/layerdetails.html
@@ -1,4 +1,4 @@
-{% extends "base.html" %}
+{% extends project_specific|yesno:"baseprojectspecificpage.html,base.html" %}
{% load projecttags %}
{% load humanize %}
{% load static %}
@@ -310,6 +310,7 @@
{% endwith %}
{% endwith %}
</div>
+
</div> <!-- end tab content -->
</div> <!-- end tabable -->
diff --git a/bitbake/lib/toaster/toastergui/templates/mrb_section.html b/bitbake/lib/toaster/toastergui/templates/mrb_section.html
index c5b9fe90d35..98d9fac8220 100644
--- a/bitbake/lib/toaster/toastergui/templates/mrb_section.html
+++ b/bitbake/lib/toaster/toastergui/templates/mrb_section.html
@@ -119,7 +119,7 @@
title="Toaster is cloning the repos required for your build">
</span>
- Cloning <span id="repos-cloned-percentage-<%:id%>"><%:repos_cloned_percentage%></span>% complete
+ Cloning <span id="repos-cloned-percentage-<%:id%>"><%:repos_cloned_percentage%></span>% complete <span id="repos-cloned-progressitem-<%:id%>">(<%:progress_item%>)</span>
<%include tmpl='#cancel-template'/%>
</div>
diff --git a/bitbake/lib/toaster/toastergui/templates/newcustomimage.html b/bitbake/lib/toaster/toastergui/templates/newcustomimage.html
index 980179a4060..0766e5e4cfc 100644
--- a/bitbake/lib/toaster/toastergui/templates/newcustomimage.html
+++ b/bitbake/lib/toaster/toastergui/templates/newcustomimage.html
@@ -1,4 +1,4 @@
-{% extends "base.html" %}
+{% extends project_specific|yesno:"baseprojectspecificpage.html,base.html" %}
{% load projecttags %}
{% load humanize %}
{% load static %}
@@ -8,7 +8,7 @@
<div class="row">
- {% include "projecttopbar.html" %}
+ {% include project_specific|yesno:"project_specific_topbar.html,projecttopbar.html" %}
<div class="col-md-12">
{% url table_name project.id as xhr_table_url %}
diff --git a/bitbake/lib/toaster/toastergui/templates/newproject.html b/bitbake/lib/toaster/toastergui/templates/newproject.html
index acb614e9d37..7e1ebb382ab 100644
--- a/bitbake/lib/toaster/toastergui/templates/newproject.html
+++ b/bitbake/lib/toaster/toastergui/templates/newproject.html
@@ -20,23 +20,19 @@
<input type="text" class="form-control" required id="new-project-name" name="projectname">
</div>
<p class="help-block text-danger" style="display: none;" id="hint-error-project-name">A project with this name exists. Project names must be unique.</p>
-<!--
- <fieldset>
- <label class="project-form">Project type</label>
- <label class="project-form radio"><input type="radio" name="ptype" value="analysis" checked/> Analysis Project</label>
+ <label class="project-form">Project type:</label>
{% if releases.count > 0 %}
- <label class="project-form radio"><input type="radio" name="ptype" value="build" checked /> Build Project</label>
+ <label class="project-form radio" style="padding-left: 35px;"><input id='type-new' type="radio" name="ptype" value="new"/> New project</label>
{% endif %}
- </fieldset> -->
- <input type="hidden" name="ptype" value="build" />
+ <label class="project-form radio" style="padding-left: 35px;"><input id='type-import' type="radio" name="ptype" value="import"/> Import command line project</label>
{% if releases.count > 0 %}
- <div class="release form-group">
+ <div class="release form-group">
{% if releases.count > 1 %}
<label class="control-label">
Release
- <span class="glyphicon glyphicon-question-sign get-help" title="The version of the build system you want to use"></span>
+ <span class="glyphicon glyphicon-question-sign get-help" title="The version of the build system you want to use for this project"></span>
</label>
<select name="projectversion" id="projectversion" class="form-control">
{% for release in releases %}
@@ -54,33 +50,31 @@
<span class="help-block">{{release.helptext|safe}}</span>
</div>
{% endfor %}
+ </div>
+ </div>
{% else %}
<input type="hidden" name="projectversion" value="{{releases.0.id}}"/>
{% endif %}
- </div>
- </div>
- </fieldset>
+
+ <input type="checkbox" class="checkbox-mergeattr" name="mergeattr" value="mergeattr"> Merged Toaster settings (Command line user compatibility)
+ <span class="glyphicon glyphicon-question-sign get-help" title="Place the Toaster settings into the standard 'local.conf' and 'bblayers.conf' instead of 'toaster_bblayers.conf' and 'toaster.conf'"></span>
+
+ </div>
{% endif %}
+
+ <div class="build-import form-group" id="import-project">
+ <label class="control-label">Import existing project directory
+ <span class="glyphicon glyphicon-question-sign get-help" title="Enter a path to an existing build directory, import the existing settings, and create a Toaster Project for it."></span>
+ </label>
+ <input style="width: 33%;"type="text" class="form-control" required id="import-project-dir" name="importdir">
+ </div>
+
<div class="top-air">
<input type="submit" id="create-project-button" class="btn btn-primary btn-lg" value="Create project"/>
<span class="help-inline" style="vertical-align:middle;">To create a project, you need to enter a project name</span>
</div>
</form>
- <!--
- <div class="col-md-5 well">
- <span class="help-block">
- <h4>Toaster project types</h4>
- <p>With a <strong>build project</strong> you configure and run your builds from Toaster.</p>
- <p>With an <strong>analysis project</strong>, the builds are configured and run by another tool
- (something like Buildbot or Jenkins), and the project only collects the information about the
- builds (packages, recipes, dependencies, logs, etc). </p>
- <p>You can read more on <a href="#">how to set up an analysis project</a>
- in the Toaster manual.</p>
- <h4>Release</h4>
- <p>If you create a <strong>build project</strong>, you will need to select a <strong>release</strong>,
- which is the version of the build system you want to use to run your builds.</p>
- </div> -->
</div>
</div>
@@ -89,6 +83,7 @@
// hide the new project button
$("#new-project-button").hide();
$('.btn-primary').attr('disabled', 'disabled');
+ $('#type-new').attr('checked', 'checked');
// enable submit button when all required fields are populated
$("input#new-project-name").on('input', function() {
@@ -118,20 +113,24 @@
$(".btn-primary"));
-/* // Hide the project release when you select an analysis project
+ // Hide the project release when you select an analysis project
function projectType() {
- if ($("input[type='radio']:checked").val() == 'build') {
+ if ($("input[type='radio']:checked").val() == 'new') {
+ $('.build-import').fadeOut();
$('.release').fadeIn();
+ $('#import-project-dir').removeAttr('required');
}
else {
$('.release').fadeOut();
+ $('.build-import').fadeIn();
+ $('#import-project-dir').attr('required', 'required');
}
}
projectType();
$('input:radio').change(function(){
projectType();
- }); */
+ });
});
</script>
diff --git a/bitbake/lib/toaster/toastergui/templates/newproject_specific.html b/bitbake/lib/toaster/toastergui/templates/newproject_specific.html
new file mode 100644
index 00000000000..cfa77f2e405
--- /dev/null
+++ b/bitbake/lib/toaster/toastergui/templates/newproject_specific.html
@@ -0,0 +1,95 @@
+{% extends "base.html" %}
+{% load projecttags %}
+{% load humanize %}
+
+{% block title %} Create a new project - Toaster {% endblock %}
+
+{% block pagecontent %}
+<div class="row">
+ <div class="col-md-12">
+ <div class="page-header">
+ <h1>Create a new project</h1>
+ </div>
+ {% if alert %}
+ <div class="alert alert-danger" role="alert">{{alert}}</div>
+ {% endif %}
+
+ <form method="POST" action="{%url "newproject_specific" project_pk %}">{% csrf_token %}
+ <div class="form-group" id="validate-project-name">
+ <label class="control-label">Project name <span class="text-muted">(required)</span></label>
+ <input type="text" class="form-control" required id="new-project-name" name="display_projectname" value="{{projectname}}" disabled>
+ </div>
+ <p class="help-block text-danger" style="display: none;" id="hint-error-project-name">A project with this name exists. Project names must be unique.</p>
+ <input type="hidden" name="ptype" value="build" />
+ <input type="hidden" name="projectname" value="{{projectname}}" />
+
+ {% if releases.count > 0 %}
+ <div class="release form-group">
+ {% if releases.count > 1 %}
+ <label class="control-label">
+ Release
+ <span class="glyphicon glyphicon-question-sign get-help" title="The version of the build system you want to use"></span>
+ </label>
+ <select name="projectversion" id="projectversion" class="form-control">
+ {% for release in releases %}
+ <option value="{{release.id}}"
+ {%if defaultbranch == release.name %}
+ selected
+ {%endif%}
+ >{{release.description}}</option>
+ {% endfor %}
+ </select>
+ <div class="row">
+ <div class="col-md-4">
+ {% for release in releases %}
+ <div class="helptext" id="description-{{release.id}}" style="display: none">
+ <span class="help-block">{{release.helptext|safe}}</span>
+ </div>
+ {% endfor %}
+ {% else %}
+ <input type="hidden" name="projectversion" value="{{releases.0.id}}"/>
+ {% endif %}
+ </div>
+ </div>
+ </fieldset>
+ {% endif %}
+ <div class="top-air">
+ <input type="submit" id="create-project-button" class="btn btn-primary btn-lg" value="Create project"/>
+ <span class="help-inline" style="vertical-align:middle;">To create a project, you need to specify the release</span>
+ </div>
+
+ </form>
+ </div>
+ </div>
+
+ <script type="text/javascript">
+ $(document).ready(function () {
+ // hide the new project button, name is preset
+ $("#new-project-button").hide();
+
+ // enable submit button when all required fields are populated
+ $("input#new-project-name").on('input', function() {
+ if ($("input#new-project-name").val().length > 0 ){
+ $('.btn-primary').removeAttr('disabled');
+ $(".help-inline").css('visibility','hidden');
+ }
+ else {
+ $('.btn-primary').attr('disabled', 'disabled');
+ $(".help-inline").css('visibility','visible');
+ }
+ });
+
+ // show relevant help text for the selected release
+ var selected_release = $('select').val();
+ $("#description-" + selected_release).show();
+
+ $('select').change(function(){
+ var new_release = $('select').val();
+ $(".helptext").hide();
+ $('#description-' + new_release).fadeIn();
+ });
+
+ });
+ </script>
+
+{% endblock %}
diff --git a/bitbake/lib/toaster/toastergui/templates/project.html b/bitbake/lib/toaster/toastergui/templates/project.html
index 11603d1e12b..fa41e3c909f 100644
--- a/bitbake/lib/toaster/toastergui/templates/project.html
+++ b/bitbake/lib/toaster/toastergui/templates/project.html
@@ -1,4 +1,4 @@
-{% extends "baseprojectpage.html" %}
+{% extends project_specific|yesno:"baseprojectspecificpage.html,baseprojectpage.html" %}
{% load projecttags %}
{% load humanize %}
@@ -18,7 +18,7 @@
try {
projectPageInit(ctx);
} catch (e) {
- document.write("Sorry, An error has occurred loading this page");
+ document.write("Sorry, An error has occurred loading this page (project):"+e);
console.warn(e);
}
});
@@ -93,6 +93,7 @@
</form>
</div>
+ {% if not project_specific %}
<div class="well well-transparent">
<h3>Most built recipes</h3>
@@ -105,6 +106,7 @@
</ul>
<button class="btn btn-primary" id="freq-build-btn" disabled="disabled">Build selected recipes</button>
</div>
+ {% endif %}
<div class="well well-transparent">
<h3>Project release</h3>
@@ -157,5 +159,6 @@
<ul class="list-unstyled lead" id="layers-in-project-list">
</ul>
</div>
+
</div>
{% endblock %}
diff --git a/bitbake/lib/toaster/toastergui/templates/project_specific.html b/bitbake/lib/toaster/toastergui/templates/project_specific.html
new file mode 100644
index 00000000000..f625d18bafc
--- /dev/null
+++ b/bitbake/lib/toaster/toastergui/templates/project_specific.html
@@ -0,0 +1,162 @@
+{% extends "baseprojectspecificpage.html" %}
+
+{% load projecttags %}
+{% load humanize %}
+{% load static %}
+
+{% block title %} Configuration - {{project.name}} - Toaster {% endblock %}
+{% block projectinfomain %}
+
+<script src="{% static 'js/layerDepsModal.js' %}"></script>
+<script src="{% static 'js/projectpage.js' %}"></script>
+<script>
+ $(document).ready(function (){
+ var ctx = {
+ testReleaseChangeUrl: "{% url 'xhr_testreleasechange' project.id %}",
+ };
+
+ try {
+ projectPageInit(ctx);
+ } catch (e) {
+ document.write("Sorry, An error has occurred loading this page");
+ console.warn(e);
+ }
+ });
+</script>
+
+<div id="delete-project-modal" class="modal fade" tabindex="-1" role="dialog" data-backdrop="static" data-keyboard="false">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h4>Are you sure you want to delete this project?</h4>
+ </div>
+ <div class="modal-body">
+ <p>Deleting the <strong class="project-name"></strong> project
+ will:</p>
+ <ul>
+ <li>Cancel its builds currently in progress</li>
+ <li>Remove its configuration information</li>
+ <li>Remove its imported layers</li>
+ <li>Remove its custom images</li>
+ <li>Remove all its build information</li>
+ </ul>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-primary" id="delete-project-confirmed">
+ <span data-role="submit-state">Delete project</span>
+ <span data-role="loading-state" style="display:none">
+ <span class="fa-pulse">
+ <i class="fa-pulse icon-spinner"></i>
+ </span>
+ &nbsp;Deleting project...
+ </span>
+ </button>
+ <button type="button" class="btn btn-link" data-dismiss="modal">Cancel</button>
+ </div>
+ </div><!-- /.modal-content -->
+ </div><!-- /.modal-dialog -->
+</div>
+
+
+<div class="row" id="project-page" style="display:none">
+ <div class="col-md-6">
+ <div class="well well-transparent" id="machine-section">
+ <h3>Machine</h3>
+
+ <p class="lead"><span id="project-machine-name"></span> <span class="glyphicon glyphicon-edit" id="change-machine-toggle"></span></p>
+
+ <form id="select-machine-form" style="display:none;" class="form-inline">
+ <span class="help-block">Machine suggestions come from the list of layers added to your project. If you don't see the machine you are looking for, <a href="{% url 'projectmachines' project.id %}">check the full list of machines</a></span>
+ <div class="form-group" id="machine-input-form">
+ <input class="form-control" id="machine-change-input" autocomplete="off" value="" data-provide="typeahead" data-minlength="1" data-autocomplete="off" type="text">
+ </div>
+ <button id="machine-change-btn" class="btn btn-default" type="button">Save</button>
+ <a href="#" id="cancel-machine-change" class="btn btn-link">Cancel</a>
+ <span class="help-block text-danger" id="invalid-machine-name-help" style="display:none">A valid machine name cannot include spaces.</span>
+ <p class="form-link"><a href="{% url 'projectmachines' project.id %}">View compatible machines</a></p>
+ </form>
+ </div>
+
+ <div class="well well-transparent" id="distro-section">
+ <h3>Distro</h3>
+
+ <p class="lead"><span id="project-distro-name"></span> <span class="glyphicon glyphicon-edit" id="change-distro-toggle"></span></p>
+
+ <form id="select-distro-form" style="display:none;" class="form-inline">
+ <span class="help-block">Distro suggestions come from the Layer Index</a></span>
+ <div class="form-group">
+ <input class="form-control" id="distro-change-input" autocomplete="off" value="" data-provide="typeahead" data-minlength="1" data-autocomplete="off" type="text">
+ </div>
+ <button id="distro-change-btn" class="btn btn-default" type="button">Save</button>
+ <a href="#" id="cancel-distro-change" class="btn btn-link">Cancel</a>
+ <p class="form-link"><a href="{% url 'projectdistros' project.id %}">View compatible distros</a></p>
+ </form>
+ </div>
+
+ <div class="well well-transparent">
+ <h3>Most built recipes</h3>
+
+ <div class="alert alert-info" style="display:none" id="no-most-built">
+ <h4>You haven't built any recipes yet</h4>
+ <p class="form-link"><a href="{% url 'projectimagerecipes' project.id %}">Choose a recipe to build</a></p>
+ </div>
+
+ <ul class="list-unstyled lead" id="freq-build-list">
+ </ul>
+ <button class="btn btn-primary" id="freq-build-btn" disabled="disabled">Build selected recipes</button>
+ </div>
+
+ <div class="well well-transparent">
+ <h3>Project release</h3>
+
+ <p class="lead"><span id="project-release-title"></span>
+
+ <!-- Comment out the ability to change the project release, until we decide what to do with this functionality -->
+
+ <!--i title="" data-original-title="" id="release-change-toggle" class="icon-pencil"></i-->
+ </p>
+
+ <!-- Comment out the ability to change the project release, until we decide what to do with this functionality -->
+
+ <!--form class="form-inline" id="change-release-form" style="display:none;">
+ <select></select>
+ <button class="btn" style="margin-left:5px;" id="change-release-btn">Change</button> <a href="#" id="cancel-release-change" class="btn btn-link">Cancel</a>
+ </form-->
+ </div>
+ </div>
+
+ <div class="col-md-6">
+ <div class="well well-transparent" id="layer-container">
+ <h3>Layers <span class="counter">(<span id="project-layers-count"></span>)</span>
+ <span title="OpenEmbedded organises recipes and machines into thematic groups called <strong>layers</strong>. Click on a layer name to see the recipes and machines it includes." class="glyphicon glyphicon-question-sign get-help"></span>
+ </h3>
+
+ <div class="alert alert-warning" id="no-layers-in-project" style="display:none">
+ <h4>This project has no layers</h4>
+ In order to build this project you need to add some layers first. For that you can:
+ <ul>
+ <li><a href="{% url 'projectlayers' project.id %}">Choose from the layers compatible with this project</a></li>
+ <li><a href="{% url 'importlayer' project.id %}">Import a layer</a></li>
+ <li><a href="http://www.yoctoproject.org/docs/current/dev-manual/dev-manual.html#understanding-and-creating-layers" target="_blank">Read about layers in the documentation</a></li>
+ <li>Or type a layer name below</li>
+ </ul>
+ </div>
+
+ <form class="form-inline">
+ <div class="form-group">
+ <input id="layer-add-input" class="form-control" autocomplete="off" placeholder="Type a layer name" data-minlength="1" data-autocomplete="off" data-provide="typeahead" data-source="" type="text">
+ </div>
+ <button id="add-layer-btn" class="btn btn-default" disabled>Add layer</button>
+ <p class="form-link">
+ <a href="{% url 'projectlayers' project.id %}" id="view-compatible-layers">View compatible layers</a>
+ <span class="text-muted">|</span>
+ <a href="{% url 'importlayer' project.id %}">Import layer</a>
+ </p>
+ </form>
+
+ <ul class="list-unstyled lead" id="layers-in-project-list">
+ </ul>
+ </div>
+
+</div>
+{% endblock %}
diff --git a/bitbake/lib/toaster/toastergui/templates/project_specific_topbar.html b/bitbake/lib/toaster/toastergui/templates/project_specific_topbar.html
new file mode 100644
index 00000000000..622787c4bcc
--- /dev/null
+++ b/bitbake/lib/toaster/toastergui/templates/project_specific_topbar.html
@@ -0,0 +1,80 @@
+{% load static %}
+<script src="{% static 'js/projecttopbar.js' %}"></script>
+<script>
+ $(document).ready(function () {
+ var ctx = {
+ numProjectLayers : {{project.get_project_layer_versions.count}},
+ machine : "{{project.get_current_machine_name|default_if_none:""}}",
+ }
+
+ try {
+ projectTopBarInit(ctx);
+ } catch (e) {
+ document.write("Sorry, An error has occurred loading this page (pstb):"+e);
+ console.warn(e);
+ }
+ });
+</script>
+
+<div class="col-md-12">
+ <div class="alert alert-success alert-dismissible change-notification" id="project-created-notification" style="display:none">
+ <button type="button" class="close" data-dismiss="alert">&times;</button>
+ <p>Your project <strong>{{project.name}}</strong> has been created. You can now <a class="alert-link" href="{% url 'projectmachines' project.id %}">select your target machine</a> and <a class="alert-link" href="{% url 'projectimagerecipes' project.id %}">choose image recipes</a> to build.</p>
+ </div>
+ <!-- project name -->
+ <div class="page-header">
+ <h1 id="project-name-container">
+ <span class="project-name">{{project.name}}</span>
+ {% if project.is_default %}
+ <span class="glyphicon glyphicon-question-sign get-help" title="This project shows information about the builds you start from the command line while Toaster is running"></span>
+ {% endif %}
+ </h1>
+ <form id="project-name-change-form" class="form-inline" style="display: none;">
+ <div class="form-group">
+ <input class="form-control input-lg" type="text" id="project-name-change-input" autocomplete="off" value="{{project.name}}">
+ </div>
+ <button id="project-name-change-btn" class="btn btn-default btn-lg" type="button">Save</button>
+ <a href="#" id="project-name-change-cancel" class="btn btn-lg btn-link">Cancel</a>
+ </form>
+ </div>
+
+ {% with mrb_type='project' %}
+ {% include "mrb_section.html" %}
+ {% endwith %}
+
+ {% if not project.is_default %}
+ <div id="project-topbar">
+ <ul class="nav nav-tabs">
+ <li id="topbar-configuration-tab">
+ <a href="{% url 'project_specific' project.id %}">
+ Configuration
+ </a>
+ </li>
+ <li>
+ <a href="{% url 'importlayer' project.id %}">
+ Import layer
+ </a>
+ </li>
+ <li>
+ <a href="{% url 'newcustomimage' project.id %}">
+ New custom image
+ </a>
+ </li>
+ <li class="pull-right">
+ <form class="form-inline">
+ <div class="form-group">
+ <span class="glyphicon glyphicon-question-sign get-help" data-placement="left" title="Type the name of one or more recipes you want to build, separated by a space. You can also specify a task by appending a colon and a task name to the recipe name, like so: <code>busybox:clean</code>"></span>
+ <input id="build-input" type="text" class="form-control input-lg" placeholder="Select the default image recipe" autocomplete="off" disabled value="{{project.get_default_image}}">
+ </div>
+ {% if project.get_is_new %}
+ <button id="update-project-button" class="btn btn-primary btn-lg" data-project-id="{{project.id}}">Prepare Project</button>
+ {% else %}
+ <button id="cancel-project-button" class="btn info btn-lg" data-project-id="{{project.id}}">Cancel</button>
+ <button id="update-project-button" class="btn btn-primary btn-lg" data-project-id="{{project.id}}">Update</button>
+ {% endif %}
+ </form>
+ </li>
+ </ul>
+ </div>
+ {% endif %}
+</div>
diff --git a/bitbake/lib/toaster/toastergui/templates/projectconf.html b/bitbake/lib/toaster/toastergui/templates/projectconf.html
index 933c588f34e..fb20b26f22e 100644
--- a/bitbake/lib/toaster/toastergui/templates/projectconf.html
+++ b/bitbake/lib/toaster/toastergui/templates/projectconf.html
@@ -1,4 +1,4 @@
-{% extends "baseprojectpage.html" %}
+{% extends project_specific|yesno:"baseprojectspecificpage.html,baseprojectpage.html" %}
{% load projecttags %}
{% load humanize %}
@@ -438,8 +438,11 @@ function onEditPageUpdate(data) {
var_context='m';
}
}
+ if (configvars_sorted[i][0].startsWith("INTERNAL_")) {
+ var_context='m';
+ }
if (var_context == undefined) {
- orightml += '<dt><span id="config_var_entry_'+configvars_sorted[i][2]+'" class="js-config-var-name"></span><span class="glyphicon glyphicon-trash js-icon-trash-config_var" id="config_var_trash_'+configvars_sorted[i][2]+'" x-data="'+configvars_sorted[i][2]+'"></span> </dt>'
+ orightml += '<dt><span id="config_var_entry_'+configvars_sorted[i][2]+'" class="js-config-var-name"></span><span class="glyphicon glyphicon-trash js-icon-trash-config_var" id="config_var_trash_'+configvars_sorted[i][2]+'" x-data="'+configvars_sorted[i][2]+'"></span> </dt>'
orightml += '<dd class="variable-list">'
orightml += ' <span class="lead" id="config_var_value_'+configvars_sorted[i][2]+'"></span>'
orightml += ' <span class="glyphicon glyphicon-edit js-icon-pencil-config_var" x-data="'+configvars_sorted[i][2]+'"></span>'
diff --git a/bitbake/lib/toaster/toastergui/templates/recipe.html b/bitbake/lib/toaster/toastergui/templates/recipe.html
index bf2cd7169ac..3f76e656fe2 100644
--- a/bitbake/lib/toaster/toastergui/templates/recipe.html
+++ b/bitbake/lib/toaster/toastergui/templates/recipe.html
@@ -176,7 +176,7 @@
<td>{{task.get_executed_display}}</td>
<td>{{task.get_outcome_display}}
- {% if task.outcome = task.OUTCOME_FAILED %}
+ {% if task.outcome == task.OUTCOME_FAILED %}
<a href="{% url 'build_artifact' build.pk "tasklogfile" task.pk %}">
<span class="glyphicon glyphicon-download-alt
get-help" title="Download task log
diff --git a/bitbake/lib/toaster/toastergui/templates/recipe_add_btn.html b/bitbake/lib/toaster/toastergui/templates/recipe_add_btn.html
new file mode 100644
index 00000000000..06c464561e6
--- /dev/null
+++ b/bitbake/lib/toaster/toastergui/templates/recipe_add_btn.html
@@ -0,0 +1,23 @@
+<a data-recipe-name="{{data.name}}" class="btn btn-default btn-block layer-exists-{{data.layer_version.pk}} set-default-recipe-btn" style="margin-top: 5px;
+ {% if data.layer_version.pk not in extra.current_layers %}
+ display:none;
+ {% endif %}"
+ >
+ Set recipe
+</a>
+<a class="btn btn-default btn-block layerbtn layer-add-{{data.layer_version.pk}}"
+ data-layer='{
+ "id": {{data.layer_version.pk}},
+ "name": "{{data.layer_version.layer.name}}",
+ "layerdetailurl": "{%url "layerdetails" extra.pid data.layer_version.pk%}",
+ "xhrLayerUrl": "{% url "xhr_layer" extra.pid data.layer_version.pk %}"
+ }' data-directive="add"
+ {% if data.layer_version.pk in extra.current_layers %}
+ style="display:none;"
+ {% endif %}
+>
+ <span class="glyphicon glyphicon-plus"></span>
+ Add layer
+ <span class="glyphicon glyphicon-question-sign get-help" title="To set this
+ recipe you must first add the {{data.layer_version.layer.name}} layer to your project"></i>
+</a>
diff --git a/bitbake/lib/toaster/toastergui/urls.py b/bitbake/lib/toaster/toastergui/urls.py
index e07b0efc1f8..dc03e303560 100644
--- a/bitbake/lib/toaster/toastergui/urls.py
+++ b/bitbake/lib/toaster/toastergui/urls.py
@@ -116,6 +116,11 @@ urlpatterns = [
tables.ProjectBuildsTable.as_view(template_name="projectbuilds-toastertable.html"),
name='projectbuilds'),
+ url(r'^newproject_specific/(?P<pid>\d+)/$', views.newproject_specific, name='newproject_specific'),
+ url(r'^project_specific/(?P<pid>\d+)/$', views.project_specific, name='project_specific'),
+ url(r'^landing_specific/(?P<pid>\d+)/$', views.landing_specific, name='landing_specific'),
+ url(r'^landing_specific_cancel/(?P<pid>\d+)/$', views.landing_specific_cancel, name='landing_specific_cancel'),
+
# the import layer is a project-specific functionality;
url(r'^project/(?P<pid>\d+)/importlayer$', views.importlayer, name='importlayer'),
@@ -233,6 +238,14 @@ urlpatterns = [
api.XhrBuildRequest.as_view(),
name='xhr_buildrequest'),
+ url(r'^xhr_projectupdate/project/(?P<pid>\d+)$',
+ api.XhrProjectUpdate.as_view(),
+ name='xhr_projectupdate'),
+
+ url(r'^xhr_setdefaultimage/project/(?P<pid>\d+)$',
+ api.XhrSetDefaultImageUrl.as_view(),
+ name='xhr_setdefaultimage'),
+
url(r'xhr_project/(?P<project_id>\d+)$',
api.XhrProject.as_view(),
name='xhr_project'),
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
index 34ed2b2e3c4..c712b06a6e8 100755..100644
--- a/bitbake/lib/toaster/toastergui/views.py
+++ b/bitbake/lib/toaster/toastergui/views.py
@@ -25,6 +25,7 @@ import re
from django.db.models import F, Q, Sum
from django.db import IntegrityError
from django.shortcuts import render, redirect, get_object_or_404
+from django.utils.http import urlencode
from orm.models import Build, Target, Task, Layer, Layer_Version, Recipe
from orm.models import LogMessage, Variable, Package_Dependency, Package
from orm.models import Task_Dependency, Package_File
@@ -51,6 +52,7 @@ logger = logging.getLogger("toaster")
# Project creation and managed build enable
project_enable = ('1' == os.environ.get('TOASTER_BUILDSERVER'))
+is_project_specific = ('1' == os.environ.get('TOASTER_PROJECTSPECIFIC'))
class MimeTypeFinder(object):
# setting this to False enables additional non-standard mimetypes
@@ -70,6 +72,7 @@ class MimeTypeFinder(object):
# single point to add global values into the context before rendering
def toaster_render(request, page, context):
context['project_enable'] = project_enable
+ context['project_specific'] = is_project_specific
return render(request, page, context)
@@ -1395,6 +1398,86 @@ if True:
mandatory_fields = ['projectname', 'ptype']
try:
ptype = request.POST.get('ptype')
+ if ptype == "import":
+ mandatory_fields.append('importdir')
+ else:
+ mandatory_fields.append('projectversion')
+ # make sure we have values for all mandatory_fields
+ missing = [field for field in mandatory_fields if len(request.POST.get(field, '')) == 0]
+ if missing:
+ # set alert for missing fields
+ raise BadParameterException("Fields missing: %s" % ", ".join(missing))
+
+ if not request.user.is_authenticated():
+ user = authenticate(username = request.POST.get('username', '_anonuser'), password = 'nopass')
+ if user is None:
+ user = User.objects.create_user(username = request.POST.get('username', '_anonuser'), email = request.POST.get('email', ''), password = "nopass")
+
+ user = authenticate(username = user.username, password = 'nopass')
+ login(request, user)
+
+ # save the project
+ if ptype == "import":
+ if not os.path.isdir('%s/conf' % request.POST['importdir']):
+ raise BadParameterException("Bad path or missing 'conf' directory (%s)" % request.POST['importdir'])
+ from django.core import management
+ management.call_command('buildimport', '--command=import', '--name=%s' % request.POST['projectname'], '--path=%s' % request.POST['importdir'], interactive=False)
+ prj = Project.objects.get(name = request.POST['projectname'])
+ prj.merged_attr = True
+ prj.save()
+ else:
+ release = Release.objects.get(pk = request.POST.get('projectversion', None ))
+ prj = Project.objects.create_project(name = request.POST['projectname'], release = release)
+ prj.user_id = request.user.pk
+ if 'mergeattr' == request.POST.get('mergeattr', ''):
+ prj.merged_attr = True
+ prj.save()
+
+ return redirect(reverse(project, args=(prj.pk,)) + "?notify=new-project")
+
+ except (IntegrityError, BadParameterException) as e:
+ # fill in page with previously submitted values
+ for field in mandatory_fields:
+ context.__setitem__(field, request.POST.get(field, "-- missing"))
+ if isinstance(e, IntegrityError) and "username" in str(e):
+ context['alert'] = "Your chosen username is already used"
+ else:
+ context['alert'] = str(e)
+ return toaster_render(request, template, context)
+
+ raise Exception("Invalid HTTP method for this page")
+
+ # new project
+ def newproject_specific(request, pid):
+ if not project_enable:
+ return redirect( landing )
+
+ project = Project.objects.get(pk=pid)
+ template = "newproject_specific.html"
+ context = {
+ 'email': request.user.email if request.user.is_authenticated() else '',
+ 'username': request.user.username if request.user.is_authenticated() else '',
+ 'releases': Release.objects.order_by("description"),
+ 'projectname': project.name,
+ 'project_pk': project.pk,
+ }
+
+ # WORKAROUND: if we already know release, redirect 'newproject_specific' to 'project_specific'
+ if '1' == project.get_variable('INTERNAL_PROJECT_SPECIFIC_SKIPRELEASE'):
+ return redirect(reverse(project_specific, args=(project.pk,)))
+
+ try:
+ context['defaultbranch'] = ToasterSetting.objects.get(name = "DEFAULT_RELEASE").value
+ except ToasterSetting.DoesNotExist:
+ pass
+
+ if request.method == "GET":
+ # render new project page
+ return toaster_render(request, template, context)
+ elif request.method == "POST":
+ mandatory_fields = ['projectname', 'ptype']
+ try:
+ ptype = request.POST.get('ptype')
if ptype == "build":
mandatory_fields.append('projectversion')
# make sure we have values for all mandatory_fields
@@ -1417,10 +1500,10 @@ if True:
else:
release = Release.objects.get(pk = request.POST.get('projectversion', None ))
- prj = Project.objects.create_project(name = request.POST['projectname'], release = release)
+ prj = Project.objects.create_project(name = request.POST['projectname'], release = release, existing_project = project)
prj.user_id = request.user.pk
prj.save()
- return redirect(reverse(project, args=(prj.pk,)) + "?notify=new-project")
+ return redirect(reverse(project_specific, args=(prj.pk,)) + "?notify=new-project")
except (IntegrityError, BadParameterException) as e:
# fill in page with previously submitted values
@@ -1437,9 +1520,87 @@ if True:
# Shows the edit project page
def project(request, pid):
project = Project.objects.get(pk=pid)
+
+ if '1' == os.environ.get('TOASTER_PROJECTSPECIFIC'):
+ if request.GET:
+ #Example:request.GET=<QueryDict: {'setMachine': ['qemuarm']}>
+ params = urlencode(request.GET).replace('%5B%27','').replace('%27%5D','')
+ return redirect("%s?%s" % (reverse(project_specific, args=(project.pk,)),params))
+ else:
+ return redirect(reverse(project_specific, args=(project.pk,)))
context = {"project": project}
return toaster_render(request, "project.html", context)
+ # Shows the edit project-specific page
+ def project_specific(request, pid):
+ project = Project.objects.get(pk=pid)
+
+ # Are we refreshing from a successful project specific update clone?
+ if Project.PROJECT_SPECIFIC_CLONING_SUCCESS == project.get_variable(Project.PROJECT_SPECIFIC_STATUS):
+ return redirect(reverse(landing_specific,args=(project.pk,)))
+
+ context = {
+ "project": project,
+ "is_new" : project.get_variable(Project.PROJECT_SPECIFIC_ISNEW),
+ "default_image_recipe" : project.get_variable(Project.PROJECT_SPECIFIC_DEFAULTIMAGE),
+ "mru" : Build.objects.all().filter(project=project,outcome=Build.IN_PROGRESS),
+ }
+ if project.build_set.filter(outcome=Build.IN_PROGRESS).count() > 0:
+ context['build_in_progress_none_completed'] = True
+ else:
+ context['build_in_progress_none_completed'] = False
+ return toaster_render(request, "project.html", context)
+
+ # perform the final actions for the project specific page
+ def project_specific_finalize(cmnd, pid):
+ project = Project.objects.get(pk=pid)
+ callback = project.get_variable(Project.PROJECT_SPECIFIC_CALLBACK)
+ if "update" == cmnd:
+ # Delete all '_PROJECT_PREPARE_' builds
+ for b in Build.objects.all().filter(project=project):
+ delete_build = False
+ for t in b.target_set.all():
+ if '_PROJECT_PREPARE_' == t.target:
+ delete_build = True
+ if delete_build:
+ from django.core import management
+ management.call_command('builddelete', str(b.id), interactive=False)
+ # perform callback at this last moment if defined, in case Toaster gets shutdown next
+ default_target = project.get_variable(Project.PROJECT_SPECIFIC_DEFAULTIMAGE)
+ if callback:
+ callback = callback.replace("<IMAGE>",default_target)
+ if "cancel" == cmnd:
+ if callback:
+ callback = callback.replace("<IMAGE>","none")
+ callback = callback.replace("--update","--cancel")
+ # perform callback at this last moment if defined, in case this Toaster gets shutdown next
+ ret = ''
+ if callback:
+ ret = os.system('bash -c "%s"' % callback)
+ project.set_variable(Project.PROJECT_SPECIFIC_CALLBACK,'')
+ # Delete the temp project specific variables
+ project.set_variable(Project.PROJECT_SPECIFIC_ISNEW,'')
+ project.set_variable(Project.PROJECT_SPECIFIC_STATUS,Project.PROJECT_SPECIFIC_NONE)
+ # WORKAROUND: Release this workaround flag
+ project.set_variable('INTERNAL_PROJECT_SPECIFIC_SKIPRELEASE','')
+
+ # Shows the final landing page for project specific update
+ def landing_specific(request, pid):
+ project_specific_finalize("update", pid)
+ context = {
+ "install_dir": os.environ['TOASTER_DIR'],
+ }
+ return toaster_render(request, "landing_specific.html", context)
+
+ # Shows the related landing-specific page
+ def landing_specific_cancel(request, pid):
+ project_specific_finalize("cancel", pid)
+ context = {
+ "install_dir": os.environ['TOASTER_DIR'],
+ "status": "cancel",
+ }
+ return toaster_render(request, "landing_specific.html", context)
+
def jsunittests(request):
""" Provides a page for the js unit tests """
bbv = BitbakeVersion.objects.filter(branch="master").first()
diff --git a/bitbake/lib/toaster/toastergui/widgets.py b/bitbake/lib/toaster/toastergui/widgets.py
index a1792d997fe..db5c3aa00b7 100644
--- a/bitbake/lib/toaster/toastergui/widgets.py
+++ b/bitbake/lib/toaster/toastergui/widgets.py
@@ -89,6 +89,10 @@ class ToasterTable(TemplateView):
# global variables
context['project_enable'] = ('1' == os.environ.get('TOASTER_BUILDSERVER'))
+ try:
+ context['project_specific'] = ('1' == os.environ.get('TOASTER_PROJECTSPECIFIC'))
+ except:
+ context['project_specific'] = ''
return context
@@ -511,13 +515,20 @@ class MostRecentBuildsView(View):
buildrequest_id = build_obj.buildrequest.pk
build['buildrequest_id'] = buildrequest_id
- build['recipes_parsed_percentage'] = \
- int((build_obj.recipes_parsed /
- build_obj.recipes_to_parse) * 100)
+ if build_obj.recipes_to_parse > 0:
+ build['recipes_parsed_percentage'] = \
+ int((build_obj.recipes_parsed /
+ build_obj.recipes_to_parse) * 100)
+ else:
+ build['recipes_parsed_percentage'] = 0
+ if build_obj.repos_to_clone > 0:
+ build['repos_cloned_percentage'] = \
+ int((build_obj.repos_cloned /
+ build_obj.repos_to_clone) * 100)
+ else:
+ build['repos_cloned_percentage'] = 0
- build['repos_cloned_percentage'] = \
- int((build_obj.repos_cloned /
- build_obj.repos_to_clone) * 100)
+ build['progress_item'] = build_obj.progress_item
tasks_complete_percentage = 0
if build_obj.outcome in (Build.SUCCEEDED, Build.FAILED):
diff --git a/bitbake/lib/toaster/toastermain/management/commands/builddelete.py b/bitbake/lib/toaster/toastermain/management/commands/builddelete.py
index 0bef8d41038..bf69a8fb80b 100644
--- a/bitbake/lib/toaster/toastermain/management/commands/builddelete.py
+++ b/bitbake/lib/toaster/toastermain/management/commands/builddelete.py
@@ -10,8 +10,12 @@ class Command(BaseCommand):
args = '<buildID1 buildID2 .....>'
help = "Deletes selected build(s)"
+ def add_arguments(self, parser):
+ parser.add_argument('buildids', metavar='N', type=int, nargs='+',
+ help="Build ID's to delete")
+
def handle(self, *args, **options):
- for bid in args:
+ for bid in options['buildids']:
try:
b = Build.objects.get(pk = bid)
except ObjectDoesNotExist:
diff --git a/bitbake/lib/toaster/toastermain/management/commands/buildimport.py b/bitbake/lib/toaster/toastermain/management/commands/buildimport.py
new file mode 100644
index 00000000000..9e1cd6d479f
--- /dev/null
+++ b/bitbake/lib/toaster/toastermain/management/commands/buildimport.py
@@ -0,0 +1,583 @@
+#
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Toaster Implementation
+#
+# Copyright (C) 2018 Wind River Systems
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+# buildimport: import a project for project specific configuration
+#
+# Usage:
+# (a) Set up Toaster environent
+#
+# (b) Call buildimport
+# $ /path/to/bitbake/lib/toaster/manage.py buildimport \
+# --name=$PROJECTNAME \
+# --path=$BUILD_DIRECTORY \
+# --callback="$CALLBACK_SCRIPT" \
+# --command="configure|reconfigure|import"
+#
+# (c) Return is "|Default_image=%s|Project_id=%d"
+#
+# (d) Open Toaster to this project using for example:
+# $ xdg-open http://localhost:$toaster_port/toastergui/project_specific/$project_id
+#
+# (e) To delete a project:
+# $ /path/to/bitbake/lib/toaster/manage.py buildimport \
+# --name=$PROJECTNAME --delete-project
+#
+
+
+# ../bitbake/lib/toaster/manage.py buildimport --name=test --path=`pwd` --callback="" --command=import
+
+from django.core.management.base import BaseCommand, CommandError
+from django.core.exceptions import ObjectDoesNotExist
+from orm.models import ProjectManager, Project, Release, ProjectVariable
+from orm.models import Layer, Layer_Version, LayerSource, ProjectLayer
+from toastergui.api import scan_layer_content
+from django.db import OperationalError
+
+import os
+import re
+import os.path
+import subprocess
+
+# Toaster variable section delimiters
+TOASTER_PROLOG = '#=== TOASTER_CONFIG_PROLOG ==='
+TOASTER_EPILOG = '#=== TOASTER_CONFIG_EPILOG ==='
+
+# quick development/debugging support
+verbose = 2
+def _log(msg):
+ if 1 == verbose:
+ print(msg)
+ elif 2 == verbose:
+ f1=open('/tmp/toaster.log', 'a')
+ f1.write("|" + msg + "|\n" )
+ f1.close()
+
+
+__config_regexp__ = re.compile( r"""
+ ^
+ (?P<exp>export\s+)?
+ (?P<var>[a-zA-Z0-9\-_+.${}/~]+?)
+ (\[(?P<flag>[a-zA-Z0-9\-_+.]+)\])?
+
+ \s* (
+ (?P<colon>:=) |
+ (?P<lazyques>\?\?=) |
+ (?P<ques>\?=) |
+ (?P<append>\+=) |
+ (?P<prepend>=\+) |
+ (?P<predot>=\.) |
+ (?P<postdot>\.=) |
+ =
+ ) \s*
+
+ (?!'[^']*'[^']*'$)
+ (?!\"[^\"]*\"[^\"]*\"$)
+ (?P<apo>['\"])
+ (?P<value>.*)
+ (?P=apo)
+ $
+ """, re.X)
+
+class Command(BaseCommand):
+ args = "<name> <path> <release>"
+ help = "Import a command line build directory"
+ vars = {}
+ toaster_vars = {}
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ '--name', dest='name', required=True,
+ help='name of the project',
+ )
+ parser.add_argument(
+ '--path', dest='path', required=True,
+ help='path to the project',
+ )
+ parser.add_argument(
+ '--release', dest='release', required=False,
+ help='release for the project',
+ )
+ parser.add_argument(
+ '--callback', dest='callback', required=False,
+ help='callback for project config update',
+ )
+ parser.add_argument(
+ '--delete-project', dest='delete_project', required=False,
+ help='delete this project from the database',
+ )
+ parser.add_argument(
+ '--command', dest='command', required=False,
+ help='command (configure,reconfigure,import)',
+ )
+
+ # Extract the bb variables from a conf file
+ def scan_conf(self,fn):
+ vars = self.vars
+ toaster_vars = self.toaster_vars
+
+ #_log("scan_conf:%s" % fn)
+ if not os.path.isfile(fn):
+ return
+ f = open(fn, 'r')
+
+ #statements = ast.StatementGroup()
+ lineno = 0
+ is_toaster_section = False
+ while True:
+ lineno = lineno + 1
+ s = f.readline()
+ if not s:
+ break
+ w = s.strip()
+ # skip empty lines
+ if not w:
+ continue
+ # evaluate Toaster sections
+ if w.startswith(TOASTER_PROLOG):
+ is_toaster_section = True
+ continue
+ if w.startswith(TOASTER_EPILOG):
+ is_toaster_section = False
+ continue
+ s = s.rstrip()
+ while s[-1] == '\\':
+ s2 = f.readline().strip()
+ lineno = lineno + 1
+ if (not s2 or s2 and s2[0] != "#") and s[0] == "#" :
+ echo("There is a confusing multiline, partially commented expression on line %s of file %s (%s).\nPlease clarify whether this is all a comment or should be parsed." % (lineno, fn, s))
+ s = s[:-1] + s2
+ # skip comments
+ if s[0] == '#':
+ continue
+ # process the line for just assignments
+ m = __config_regexp__.match(s)
+ if m:
+ groupd = m.groupdict()
+ var = groupd['var']
+ value = groupd['value']
+
+ if groupd['lazyques']:
+ if not var in vars:
+ vars[var] = value
+ continue
+ if groupd['ques']:
+ if not var in vars:
+ vars[var] = value
+ continue
+ # preset empty blank for remaining operators
+ if not var in vars:
+ vars[var] = ''
+ if groupd['append']:
+ vars[var] += value
+ elif groupd['prepend']:
+ vars[var] = "%s%s" % (value,vars[var])
+ elif groupd['predot']:
+ vars[var] = "%s %s" % (value,vars[var])
+ elif groupd['postdot']:
+ vars[var] = "%s %s" % (vars[var],value)
+ else:
+ vars[var] = "%s" % (value)
+ # capture vars in a Toaster section
+ if is_toaster_section:
+ toaster_vars[var] = vars[var]
+
+ # DONE WITH PARSING
+ f.close()
+ self.vars = vars
+ self.toaster_vars = toaster_vars
+
+ # Update the scanned project variables
+ def update_project_vars(self,project,name):
+ pv, create = ProjectVariable.objects.get_or_create(project = project, name = name)
+ if (not name in self.vars.keys()) or (not self.vars[name]):
+ self.vars[name] = pv.value
+ else:
+ if pv.value != self.vars[name]:
+ pv.value = self.vars[name]
+ pv.save()
+
+ # Find the git version of the installation
+ def find_layer_dir_version(self,path):
+ # * rocko ...
+
+ install_version = ''
+ cwd = os.getcwd()
+ os.chdir(path)
+ p = subprocess.Popen(['git', 'branch', '-av'], stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ out, err = p.communicate()
+ out = out.decode("utf-8")
+ for branch in out.split('\n'):
+ if ('*' == branch[0:1]) and ('no branch' not in branch):
+ install_version = re.sub(' .*','',branch[2:])
+ break
+ if 'remotes/m/master' in branch:
+ install_version = re.sub('.*base/','',branch)
+ break
+ os.chdir(cwd)
+ return install_version
+
+ # Compute table of the installation's registered layer versions (branch or commit)
+ def find_layer_dir_versions(self,INSTALL_URL_PREFIX):
+ lv_dict = {}
+ layer_versions = Layer_Version.objects.all()
+ for lv in layer_versions:
+ layer = Layer.objects.filter(pk=lv.layer.pk)[0]
+ if layer.vcs_url:
+ url_short = layer.vcs_url.replace(INSTALL_URL_PREFIX,'')
+ else:
+ url_short = ''
+ # register the core, branch, and the version variations
+ lv_dict["%s,%s,%s" % (url_short,lv.dirpath,'')] = (lv.id,layer.name)
+ lv_dict["%s,%s,%s" % (url_short,lv.dirpath,lv.branch)] = (lv.id,layer.name)
+ lv_dict["%s,%s,%s" % (url_short,lv.dirpath,lv.commit)] = (lv.id,layer.name)
+ #_log(" (%s,%s,%s|%s) = (%s,%s)" % (url_short,lv.dirpath,lv.branch,lv.commit,lv.id,layer.name))
+ return lv_dict
+
+ # Apply table of all layer versions
+ def extract_bblayers(self):
+ # set up the constants
+ bblayer_str = self.vars['BBLAYERS']
+ TOASTER_DIR = os.environ.get('TOASTER_DIR')
+ INSTALL_CLONE_PREFIX = os.path.dirname(TOASTER_DIR) + "/"
+ TOASTER_CLONE_PREFIX = TOASTER_DIR + "/_toaster_clones/"
+ INSTALL_URL_PREFIX = ''
+ layers = Layer.objects.filter(name='openembedded-core')
+ for layer in layers:
+ if layer.vcs_url:
+ INSTALL_URL_PREFIX = layer.vcs_url
+ break
+ INSTALL_URL_PREFIX = INSTALL_URL_PREFIX.replace("/poky","/")
+ INSTALL_VERSION_DIR = TOASTER_DIR
+ INSTALL_URL_POSTFIX = INSTALL_URL_PREFIX.replace(':','_')
+ INSTALL_URL_POSTFIX = INSTALL_URL_POSTFIX.replace('/','_')
+ INSTALL_URL_POSTFIX = "%s_%s" % (TOASTER_CLONE_PREFIX,INSTALL_URL_POSTFIX)
+
+ # get the set of available layer:layer_versions
+ lv_dict = self.find_layer_dir_versions(INSTALL_URL_PREFIX)
+
+ # compute the layer matches
+ layers_list = []
+ for line in bblayer_str.split(' '):
+ if not line:
+ continue
+ if line.endswith('/local'):
+ continue
+
+ # isolate the repo
+ layer_path = line
+ line = line.replace(INSTALL_URL_POSTFIX,'').replace(INSTALL_CLONE_PREFIX,'').replace('/layers/','/').replace('/poky/','/')
+
+ # isolate the sub-path
+ path_index = line.rfind('/')
+ if path_index > 0:
+ sub_path = line[path_index+1:]
+ line = line[0:path_index]
+ else:
+ sub_path = ''
+
+ # isolate the version
+ if TOASTER_CLONE_PREFIX in layer_path:
+ is_toaster_clone = True
+ # extract version from name syntax
+ version_index = line.find('_')
+ if version_index > 0:
+ version = line[version_index+1:]
+ line = line[0:version_index]
+ else:
+ version = ''
+ _log("TOASTER_CLONE(%s/%s), version=%s" % (line,sub_path,version))
+ else:
+ is_toaster_clone = False
+ # version is from the installation
+ version = self.find_layer_dir_version(layer_path)
+ _log("LOCAL_CLONE(%s/%s), version=%s" % (line,sub_path,version))
+
+ # capture the layer information into layers_list
+ layers_list.append( (line,sub_path,version,layer_path,is_toaster_clone) )
+ return layers_list,lv_dict
+
+ #
+ def find_import_release(self,layers_list,lv_dict,default_release):
+ # poky,meta,rocko => 4;openembedded-core
+ release = default_release
+ for line,path,version,layer_path,is_toaster_clone in layers_list:
+ key = "%s,%s,%s" % (line,path,version)
+ if key in lv_dict:
+ lv_id = lv_dict[key]
+ if 'openembedded-core' == lv_id[1]:
+ _log("Find_import_release(%s):version=%s,Toaster=%s" % (lv_id[1],version,is_toaster_clone))
+ # only versions in Toaster managed layers are accepted
+ if not is_toaster_clone:
+ break
+ try:
+ release = Release.objects.get(name=version)
+ except:
+ pass
+ break
+ _log("Find_import_release:RELEASE=%s" % release.name)
+ return release
+
+ # Apply the found conf layers
+ def apply_conf_bblayers(self,layers_list,lv_dict,project,release=None):
+ for line,path,version,layer_path,is_toaster_clone in layers_list:
+ # Assert release promote if present
+ if release:
+ version = release
+ # try to match the key to a layer_version
+ key = "%s,%s,%s" % (line,path,version)
+ key_short = "%s,%s,%s" % (line,path,'')
+ lv_id = ''
+ if key in lv_dict:
+ lv_id = lv_dict[key]
+ lv = Layer_Version.objects.get(pk=int(lv_id[0]))
+ pl,created = ProjectLayer.objects.get_or_create(project=project,
+ layercommit=lv)
+ pl.optional=False
+ pl.save()
+ _log(" %s => %s;%s" % (key,lv_id[0],lv_id[1]))
+ elif key_short in lv_dict:
+ lv_id = lv_dict[key_short]
+ lv = Layer_Version.objects.get(pk=int(lv_id[0]))
+ pl,created = ProjectLayer.objects.get_or_create(project=project,
+ layercommit=lv)
+ pl.optional=False
+ pl.save()
+ _log(" %s ?> %s" % (key,lv_dict[key_short]))
+ else:
+ _log("%s <= %s" % (key,layer_path))
+ found = False
+ # does local layer already exist in this project?
+ try:
+ for pl in ProjectLayer.objects.filter(project=project):
+ if pl.layercommit.layer.local_source_dir == layer_path:
+ found = True
+ _log(" Project Local Layer found!")
+ except Exception as e:
+ _log("ERROR: Local Layer '%s'" % e)
+ pass
+
+ if not found:
+ # Does Layer name+path already exist?
+ try:
+ layer_name_base = os.path.basename(layer_path)
+ _log("Layer_lookup: try '%s','%s'" % (layer_name_base,layer_path))
+ layer = Layer.objects.get(name=layer_name_base,local_source_dir = layer_path)
+ # Found! Attach layer_version and ProjectLayer
+ layer_version = Layer_Version.objects.create(
+ layer=layer,
+ project=project,
+ layer_source=LayerSource.TYPE_IMPORTED)
+ layer_version.save()
+ pl,created = ProjectLayer.objects.get_or_create(project=project,
+ layercommit=layer_version)
+ pl.optional=False
+ pl.save()
+ found = True
+ # add layer contents to this layer version
+ scan_layer_content(layer,layer_version)
+ _log(" Parent Local Layer found in db!")
+ except Exception as e:
+ _log("Layer_exists_test_failed: Local Layer '%s'" % e)
+ pass
+
+ if not found:
+ # Insure that layer path exists, in case of user typo
+ if not os.path.isdir(layer_path):
+ _log("ERROR:Layer path '%s' not found" % layer_path)
+ continue
+ # Add layer to db and attach project to it
+ layer_name_base = os.path.basename(layer_path)
+ # generate a unique layer name
+ layer_name_matches = {}
+ for layer in Layer.objects.filter(name__contains=layer_name_base):
+ layer_name_matches[layer.name] = '1'
+ layer_name_idx = 0
+ layer_name_test = layer_name_base
+ while layer_name_test in layer_name_matches.keys():
+ layer_name_idx += 1
+ layer_name_test = "%s_%d" % (layer_name_base,layer_name_idx)
+ # create the layer and layer_verion objects
+ layer = Layer.objects.create(name=layer_name_test)
+ layer.local_source_dir = layer_path
+ layer_version = Layer_Version.objects.create(
+ layer=layer,
+ project=project,
+ layer_source=LayerSource.TYPE_IMPORTED)
+ layer.save()
+ layer_version.save()
+ pl,created = ProjectLayer.objects.get_or_create(project=project,
+ layercommit=layer_version)
+ pl.optional=False
+ pl.save()
+ # register the layer's content
+ _log(" Local Layer Add content")
+ scan_layer_content(layer,layer_version)
+ _log(" Local Layer Added '%s'!" % layer_name_test)
+
+ # Scan the project's conf files (if any)
+ def scan_conf_variables(self,project_path):
+ # scan the project's settings, add any new layers or variables
+ if os.path.isfile("%s/conf/local.conf" % project_path):
+ self.scan_conf("%s/conf/local.conf" % project_path)
+ self.scan_conf("%s/conf/bblayers.conf" % project_path)
+ # Import then disable old style Toaster conf files (before 'merged_attr')
+ old_toaster_local = "%s/conf/toaster.conf" % project_path
+ if os.path.isfile(old_toaster_local):
+ self.scan_conf(old_toaster_local)
+ shutil.move(old_toaster_local, old_toaster_local+"_old")
+ old_toaster_layer = "%s/conf/toaster-bblayers.conf" % project_path
+ if os.path.isfile(old_toaster_layer):
+ self.scan_conf(old_toaster_layer)
+ shutil.move(old_toaster_layer, old_toaster_layer+"_old")
+
+ # Scan the found conf variables (if any)
+ def apply_conf_variables(self,project,layers_list,lv_dict,release=None):
+ if self.vars:
+ # Catch vars relevant to Toaster (in case no Toaster section)
+ self.update_project_vars(project,'DISTRO')
+ self.update_project_vars(project,'MACHINE')
+ self.update_project_vars(project,'IMAGE_INSTALL_append')
+ self.update_project_vars(project,'IMAGE_FSTYPES')
+ self.update_project_vars(project,'PACKAGE_CLASSES')
+ # These vars are typically only assigned by Toaster
+ #self.update_project_vars(project,'DL_DIR')
+ #self.update_project_vars(project,'SSTATE_DIR')
+
+ # Assert found Toaster vars
+ for var in self.toaster_vars.keys():
+ pv, create = ProjectVariable.objects.get_or_create(project = project, name = var)
+ pv.value = self.toaster_vars[var]
+ _log("* Add/update Toaster var '%s' = '%s'" % (pv.name,pv.value))
+ pv.save()
+
+ # Assert found BBLAYERS
+ if 0 < verbose:
+ for pl in ProjectLayer.objects.filter(project=project):
+ release_name = 'None' if not pl.layercommit.release else pl.layercommit.release.name
+ print(" BEFORE:ProjectLayer=%s,%s,%s,%s" % (pl.layercommit.layer.name,release_name,pl.layercommit.branch,pl.layercommit.commit))
+ self.apply_conf_bblayers(layers_list,lv_dict,project,release)
+ if 0 < verbose:
+ for pl in ProjectLayer.objects.filter(project=project):
+ release_name = 'None' if not pl.layercommit.release else pl.layercommit.release.name
+ print(" AFTER :ProjectLayer=%s,%s,%s,%s" % (pl.layercommit.layer.name,release_name,pl.layercommit.branch,pl.layercommit.commit))
+
+
+ def handle(self, *args, **options):
+ project_name = options['name']
+ project_path = options['path']
+ project_callback = options['callback'] if options['callback'] else ''
+ release_name = options['release'] if options['release'] else ''
+
+ #
+ # Delete project
+ #
+
+ if options['delete_project']:
+ try:
+ print("Project '%s' delete from Toaster database" % (project_name))
+ project = Project.objects.get(name=project_name)
+ # TODO: deep project delete
+ project.delete()
+ print("Project '%s' Deleted" % (project_name))
+ return
+ except Exception as e:
+ print("Project '%s' not found, not deleted (%s)" % (project_name,e))
+ return
+
+ #
+ # Create/Update/Import project
+ #
+
+ # See if project (by name) exists
+ project = None
+ try:
+ # Project already exists
+ project = Project.objects.get(name=project_name)
+ except Exception as e:
+ pass
+
+ # Find the installation's default release
+ default_release = Release.objects.get(id=1)
+
+ # SANITY: if 'reconfig' but project does not exist (deleted externally), switch to 'import'
+ if ("reconfigure" == options['command']) and (None == project):
+ options['command'] = 'import'
+
+ # 'Configure':
+ if "configure" == options['command']:
+ # Note: ignore any existing conf files
+ # create project, SANITY: reuse any project of same name
+ project = Project.objects.create_project(project_name,default_release,project)
+
+ # 'Re-configure':
+ if "reconfigure" == options['command']:
+ # Scan the directory's conf files
+ self.scan_conf_variables(project_path)
+ # Scan the layer list
+ layers_list,lv_dict = self.extract_bblayers()
+ # Apply any new layers or variables
+ self.apply_conf_variables(project,layers_list,lv_dict)
+
+ # 'Import':
+ if "import" == options['command']:
+ # Scan the directory's conf files
+ self.scan_conf_variables(project_path)
+ # Remove these Toaster controlled variables
+ for var in ('DL_DIR','SSTATE_DIR'):
+ self.vars.pop(var, None)
+ self.toaster_vars.pop(var, None)
+ # Scan the layer list
+ layers_list,lv_dict = self.extract_bblayers()
+ # Find the directory's release, and promote to default_release if local paths
+ release = self.find_import_release(layers_list,lv_dict,default_release)
+ # create project, SANITY: reuse any project of same name
+ project = Project.objects.create_project(project_name,release,project)
+ # Apply any new layers or variables
+ self.apply_conf_variables(project,layers_list,lv_dict,release)
+ # WORKAROUND: since we now derive the release, redirect 'newproject_specific' to 'project_specific'
+ project.set_variable('INTERNAL_PROJECT_SPECIFIC_SKIPRELEASE','1')
+
+ # Set up the project's meta data
+ project.builddir = project_path
+ project.merged_attr = True
+ project.set_variable(Project.PROJECT_SPECIFIC_CALLBACK,project_callback)
+ project.set_variable(Project.PROJECT_SPECIFIC_STATUS,Project.PROJECT_SPECIFIC_EDIT)
+ if ("configure" == options['command']) or ("import" == options['command']):
+ # preset the mode and default image recipe
+ project.set_variable(Project.PROJECT_SPECIFIC_ISNEW,Project.PROJECT_SPECIFIC_NEW)
+ project.set_variable(Project.PROJECT_SPECIFIC_DEFAULTIMAGE,"core-image-minimal")
+ # Assert any extended/custom actions or variables for new non-Toaster projects
+ if not len(self.toaster_vars):
+ pass
+ else:
+ project.set_variable(Project.PROJECT_SPECIFIC_ISNEW,Project.PROJECT_SPECIFIC_NONE)
+
+ # Save the updated Project
+ project.save()
+
+ _log("Buildimport:project='%s' at '%d'" % (project_name,project.id))
+
+ if ('DEFAULT_IMAGE' in self.vars) and (self.vars['DEFAULT_IMAGE']):
+ print("|Default_image=%s|Project_id=%d" % (self.vars['DEFAULT_IMAGE'],project.id))
+ else:
+ print("|Project_id=%d" % (project.id))
+
diff --git a/documentation/Makefile b/documentation/Makefile
index 6e2308ff298..093422f69f0 100644
--- a/documentation/Makefile
+++ b/documentation/Makefile
@@ -48,7 +48,7 @@
# Examples:
#
# make DOC=bsp-guide
-# make html DOC=yocto-project-qs
+# make html DOC=brief-yoctoprojectqs
# make pdf DOC=ref-manual
# make DOC=dev-manual BRANCH=edison
# make DOC=mega-manual BRANCH=denzil
@@ -56,7 +56,7 @@
# The first example generates the HTML and Eclipse help versions of the BSP Guide.
# The second example generates the HTML version only of the Quick Start. Note
# that the Quick Start only has an HTML version available. So, the
-# 'make DOC=yocto-project-qs' command would be equivalent. The third example
+# 'make DOC=brief-yoctoprojectqs' command would be equivalent. The third example
# generates just the PDF version of the Yocto Project Reference Manual.
# The fourth example generates the HTML 'edison' version and (if available)
# the Eclipse help version of the YP Development Tasks Manual. The last example
@@ -90,8 +90,8 @@ XSLTOPTS = --stringparam html.stylesheet brief-yoctoprojectqs-style.css \
--stringparam section.autolabel 0 \
--stringparam section.label.includes.component.label 0 \
--xinclude
-ALLPREQ = html tarball
-TARFILES = brief-yoctoprojectqs-style.css brief-yoctoprojectqs.html figures/ypqs-title.png \
+ALLPREQ = html eclipse tarball
+TARFILES = brief-yoctoprojectqs-style.css brief-yoctoprojectqs.html figures/bypqs-title.png \
figures/yocto-project-transp.png
MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse
FIGURES = figures
@@ -99,25 +99,13 @@ STYLESHEET = $(DOC)/*.css
endif
-ifeq ($(DOC),getting-started)
+ifeq ($(DOC),overview-manual)
XSLTOPTS = --xinclude
ALLPREQ = html eclipse tarball
-TARFILES = getting-started-style.css getting-started.html figures/getting-started-title.png \
+TARFILES = overview-manual-style.css overview-manual.html figures/overview-manual-title.png \
figures/git-workflow.png figures/source-repos.png figures/index-downloads.png \
figures/yp-download.png figures/YP-flow-diagram.png figures/key-dev-elements.png \
- figures/poky-reference-distribution.png \
- eclipse
-MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse
-FIGURES = figures
-STYLESHEET = $(DOC)/*.css
-
-endif
-
-ifeq ($(DOC),concepts-manual)
-XSLTOPTS = --xinclude
-ALLPREQ = html eclipse tarball
-TARFILES = concepts-manual-style.css concepts-manual.html figures/concepts-manual-title.png \
- figures/cross-development-toolchains.png figures/yocto-environment-ref.png \
+ figures/poky-reference-distribution.png figures/cross-development-toolchains.png \
figures/user-configuration.png figures/layer-input.png figures/source-input.png \
figures/package-feeds.png figures/patching.png figures/source-fetching.png \
figures/configuration-compile-autoreconf.png figures/analysis-for-package-splitting.png \
@@ -177,6 +165,7 @@ TARFILES = dev-style.css dev-manual.html \
TARFILES = dev-style.css dev-manual.html figures/buildhistory-web.png \
figures/dev-title.png figures/buildhistory.png \
figures/recipe-workflow.png figures/bitbake-build-flow.png \
+ figures/multiconfig_files.png \
eclipse
endif
@@ -186,22 +175,6 @@ STYLESHEET = $(DOC)/*.css
endif
-ifeq ($(DOC),yocto-project-qs)
-XSLTOPTS = --stringparam html.stylesheet qs-style.css \
- --stringparam chapter.autolabel 1 \
- --stringparam section.autolabel 1 \
- --stringparam section.label.includes.component.label 1 \
- --xinclude
-ALLPREQ = html eclipse tarball
-
-TARFILES = yocto-project-qs.html qs-style.css \
- figures/yocto-project-transp.png figures/ypqs-title.png \
- eclipse
-MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse
-FIGURES = figures
-STYLESHEET = $(DOC)/*.css
-endif
-
ifeq ($(DOC),mega-manual)
XSLTOPTS = --stringparam html.stylesheet mega-style.css \
--stringparam chapter.autolabel 1 \
@@ -280,7 +253,7 @@ TARFILES = mega-manual.html mega-style.css \
figures/sched-wakeup-profile.png figures/sysprof-callers.png \
figures/sysprof-copy-from-user.png figures/sysprof-copy-to-user.png \
figures/cross-development-toolchains.png \
- figures/yocto-environment-ref.png figures/user-configuration.png \
+ figures/user-configuration.png \
figures/source-input.png figures/package-feeds.png \
figures/layer-input.png figures/images.png figures/sdk.png \
figures/source-fetching.png figures/patching.png \
@@ -289,14 +262,14 @@ TARFILES = mega-manual.html mega-style.css \
figures/image-generation.png figures/key-dev-elements.png\
figures/sdk-generation.png figures/recipe-workflow.png \
figures/build-workspace-directory.png figures/mega-title.png \
- figures/toaster-title.png figures/hosted-service.png \
+ figures/toaster-title.png figures/hosted-service.png figures/multiconfig_files.png \
figures/simple-configuration.png figures/poky-reference-distribution.png \
figures/compatible-layers.png figures/import-layer.png figures/new-project.png \
figures/sdk-environment.png figures/sdk-installed-standard-sdk-directory.png \
figures/sdk-devtool-add-flow.png figures/sdk-installed-extensible-sdk-directory.png \
figures/sdk-devtool-modify-flow.png figures/sdk-eclipse-dev-flow.png \
- figures/sdk-devtool-upgrade-flow.png figures/bitbake-build-flow.png figures/ypqs-title.png \
- figures/getting-started-title.png figures/concepts-manual-title.png
+ figures/sdk-devtool-upgrade-flow.png figures/bitbake-build-flow.png figures/bypqs-title.png \
+ figures/overview-manual-title.png figures/sdk-autotools-flow.png figures/sdk-makefile-flow.png
endif
MANUALS = $(DOC)/$(DOC).html
@@ -323,7 +296,7 @@ TARFILES = sdk-manual.html sdk-style.css figures/sdk-title.png \
figures/sdk-environment.png figures/sdk-installed-standard-sdk-directory.png \
figures/sdk-installed-extensible-sdk-directory.png figures/sdk-devtool-add-flow.png \
figures/sdk-devtool-modify-flow.png figures/sdk-eclipse-dev-flow.png \
- figures/sdk-devtool-upgrade-flow.png \
+ figures/sdk-devtool-upgrade-flow.png figures/sdk-autotools-flow.png figures/sdk-makefile-flow.png \
eclipse
MANUALS = $(DOC)/$(DOC).html $(DOC)/eclipse
FIGURES = figures
@@ -399,9 +372,9 @@ XSL_XHTML_URI = $(XSL_BASE_URI)/xhtml/docbook.xsl
all: $(ALLPREQ)
pdf:
-ifeq ($(DOC),yocto-project-qs brief-yoctoprojectqs)
+ifeq ($(DOC),brief-yoctoprojectqs)
@echo " "
- @echo "ERROR: You cannot generate yocto-project-qs or brief-yoctoprojectqs PDF files."
+ @echo "ERROR: You cannot generate a PDF file for brief-yoctoprojectqs."
@echo " "
else ifeq ($(DOC),mega-manual)
@@ -445,19 +418,18 @@ eclipse: eclipse-generate eclipse-resolve-links
.PHONY : eclipse-generate eclipse-resolve-links
eclipse-generate:
-ifeq ($(filter $(DOC), concepts-manual getting-started sdk-manual bsp-guide dev-manual kernel-dev profile-manual ref-manual yocto-project-qs),)
+ifeq ($(filter $(DOC), overview-manual sdk-manual bsp-guide dev-manual kernel-dev profile-manual ref-manual brief-yoctoprojectqs),)
@echo " "
@echo "ERROR: You can only create eclipse documentation"
@echo " of the following documentation parts:"
- @echo " - concepts-manual"
- @echo " - getting-started"
+ @echo " - overview-manual"
@echo " - sdk-manual"
@echo " - bsp-guide"
@echo " - dev-manual"
@echo " - kernel-dev"
@echo " - profile-manual"
@echo " - ref-manual"
- @echo " - yocto-project-qs"
+ @echo " - brief-yoctoprojectqs"
@echo " "
else
@echo " "
diff --git a/documentation/yocto-project-qs/yocto-project-qs-eclipse-customization.xsl b/documentation/brief-yoctoprojectqs/brief-yoctoprojectqs-eclipse-customization.xsl
index 50e6830dde6..fbb3b578e1a 100644
--- a/documentation/yocto-project-qs/yocto-project-qs-eclipse-customization.xsl
+++ b/documentation/brief-yoctoprojectqs/brief-yoctoprojectqs-eclipse-customization.xsl
@@ -16,13 +16,13 @@
-->
- <xsl:import href="yocto-project-qs-titlepage.xsl"/>
+ <xsl:import href="brief-yoctoprojectqs-titlepage.xsl"/>
<xsl:param name="chunker.output.indent" select="'yes'"/>
<xsl:param name="chunk.quietly" select="1"/>
<xsl:param name="use.id.as.filename" select="1"/>
<xsl:param name="ulink.target" select="'_self'" />
- <xsl:param name="base.dir" select="'html/yocto-project-qs/'"/>
+ <xsl:param name="base.dir" select="'html/brief-yoctoprojectqs/'"/>
<xsl:param name="chunk.section.depth" select="0"/>
<xsl:param name="html.stylesheet" select="'../book.css'"/>
<xsl:param name="eclipse.manifest" select="0"/>
@@ -32,3 +32,4 @@
<xsl:param name="generate.toc" select="'article nop'"></xsl:param>
<xsl:param name="html.stylesheet" select="'style.css'" />
</xsl:stylesheet>
+
diff --git a/documentation/brief-yoctoprojectqs/brief-yoctoprojectqs-style.css b/documentation/brief-yoctoprojectqs/brief-yoctoprojectqs-style.css
index 5085b9d0bec..386841debe3 100644
--- a/documentation/brief-yoctoprojectqs/brief-yoctoprojectqs-style.css
+++ b/documentation/brief-yoctoprojectqs/brief-yoctoprojectqs-style.css
@@ -118,7 +118,7 @@ h6 {
background-color: transparent;
background-repeat: no-repeat;
padding-top: 256px;
- background-image: url("figures/ypqs-title.png");
+ background-image: url("figures/bypqs-title.png");
background-position: left top;
margin-top: -256px;
padding-right: 50px;
diff --git a/documentation/brief-yoctoprojectqs/brief-yoctoprojectqs.xml b/documentation/brief-yoctoprojectqs/brief-yoctoprojectqs.xml
index 356bd521fd1..42dbf9c5636 100644
--- a/documentation/brief-yoctoprojectqs/brief-yoctoprojectqs.xml
+++ b/documentation/brief-yoctoprojectqs/brief-yoctoprojectqs.xml
@@ -4,7 +4,7 @@
<article id='brief-yocto-project-qs-intro'>
<articleinfo>
- <title>My First Yocto Project Build</title>
+ <title>Yocto Project Quick Build</title>
<copyright>
<year>&COPYRIGHT_YEAR;</year>
@@ -16,28 +16,6 @@
Permission is granted to copy, distribute and/or modify this document under
the terms of the <ulink type="http" url="http://creativecommons.org/licenses/by-sa/2.0/uk/">Creative Commons Attribution-Share Alike 2.0 UK: England &amp; Wales</ulink> as published by Creative Commons.
</para>
-<!--
- <note><title>Manual Notes</title>
- <itemizedlist>
- <listitem><para>
- For the latest version of this document associated with
- this Yocto Project release
- (version &YOCTO_DOC_VERSION;), see the "My First
- Yocto Project Build" from the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>.
- </para></listitem>
- <listitem><para>
- This paper is written for the &YOCTO_DOC_VERSION;.
- For later releases of the Yocto Project (if they exist),
- go to the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
- and use the drop-down "Active Releases" button
- and choose the Yocto Project version for which you want
- the manual.
- </para></listitem>
- </itemizedlist>
- </note>
--->
</legalnotice>
@@ -55,6 +33,8 @@
Welcome!
This short document steps you through the process for a typical
image build using the Yocto Project.
+ The document also introduces how to configure a build for specific
+ hardware.
You will use Yocto Project to build a reference embedded OS
called Poky.
<note>
@@ -74,7 +54,7 @@
<para>
If you want more conceptual or background information on the
Yocto Project, see the
- <ulink url='&YOCTO_DOCS_GS_URL;'>Getting Started With Yocto Project Manual</ulink>.
+ <ulink url='&YOCTO_DOCS_OM_URL;'>Yocto Project Overview and Concepts Manual</ulink>.
</para>
</section>
@@ -82,7 +62,9 @@
<title>Compatible Linux Distribution</title>
<para>
- Make sure your build system meets the following requirements:
+ Make sure your
+ <ulink url='&YOCTO_DOCS_REF_URL;#hardware-build-system-term'>build host</ulink>
+ meets the following requirements:
<itemizedlist>
<listitem><para>
50 Gbytes of free disk space
@@ -118,17 +100,17 @@
</section>
<section id='brief-build-system-packages'>
- <title>Build System Packages</title>
+ <title>Build Host Packages</title>
<para>
You must install essential host packages on your
- development host.
+ build host.
The following command installs the host packages based on an
Ubuntu distribution:
<note>
For host package requirements on all supported Linux
distributions, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#required-packages-for-the-host-development-system'>Required Packages for the Host Development System</ulink>"
+ "<ulink url='&YOCTO_DOCS_REF_URL;#required-packages-for-the-build-host'>Required Packages for the Build Host</ulink>"
section in the Yocto Project Reference Manual.
</note>
<literallayout class='monospaced'>
@@ -143,7 +125,7 @@
<para>
Once you complete the setup instructions for your machine,
you need to get a copy of the Poky repository on your build
- system.
+ host.
Use the following commands to clone the Poky
repository and then checkout the &DISTRO_REL_TAG; release:
<literallayout class='monospaced'>
@@ -167,7 +149,7 @@
<para>
For more options and information about accessing Yocto
Project related repositories, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#working-with-yocto-project-source-files'>Working With Yocto Project Source Files</ulink>"
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#locating-yocto-project-source-files'>Locating Yocto Project Source Files</ulink>"
section in the Yocto Project Development Tasks Manual.
</para>
</section>
@@ -177,8 +159,8 @@
<para>
Use the following steps to build your image.
- The OpenEmbedded build system creates an entire Linux
- distribution, including the toolchain, from source.
+ The build process creates an entire Linux distribution, including
+ the toolchain, from source.
<note>
<itemizedlist>
<listitem><para>
@@ -207,7 +189,7 @@
<emphasis>Initialize the Build Environment:</emphasis>
Run the
<ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>
- environment setup script to define the OpenEmbedded
+ environment setup script to define Yocto Project's
build environment on your build host.
<literallayout class='monospaced'>
$ source &OE_INIT_FILE;
@@ -222,7 +204,7 @@
Later, when the build completes, the Build Directory
contains all the files created during the build.
</para></listitem>
- <listitem><para>
+ <listitem><para id='conf-file-step'>
<emphasis>Examine Your Local Configuration File:</emphasis>
When you set up the build environment, a local
configuration file named
@@ -243,13 +225,13 @@
<literallayout class='monospaced'>
SSTATE_MIRRORS = "\
file://.* http://sstate.yoctoproject.org/dev/PATH;downloadfilename=PATH \n \
- file://.* http://sstate.yoctoproject.org/2.3/PATH;downloadfilename=PATH \n \
- file://.* http://sstate.yoctoproject.org/2.4/PATH;downloadfilename=PATH \n \
+ file://.* http://sstate.yoctoproject.org/&YOCTO_DOC_VERSION_MINUS_ONE;/PATH;downloadfilename=PATH \n \
+ file://.* http://sstate.yoctoproject.org/&YOCTO_DOC_VERSION;/PATH;downloadfilename=PATH \n \
"
</literallayout>
The previous examples showed how to add sstate
- paths for Yocto Project 2.3, 2.4, and a development
- area.
+ paths for Yocto Project &YOCTO_DOC_VERSION_MINUS_ONE;,
+ &YOCTO_DOC_VERSION;, and a development area.
For a complete index of sstate locations, see
<ulink url='http://sstate.yoctoproject.org/'></ulink>.
</tip>
@@ -264,9 +246,9 @@
</literallayout>
For information on using the
<filename>bitbake</filename> command, see the
- "<ulink url='&YOCTO_DOCS_OVERVIEW_URL;#usingpoky-components-bitbake'>BitBake</ulink>"
- section in the Yocto Project Overview Manual, or
- see the
+ "<ulink url='&YOCTO_DOCS_OM_URL;#usingpoky-components-bitbake'>BitBake</ulink>"
+ section in the Yocto Project Overview and Concepts Manual,
+ or see the
"<ulink url='&YOCTO_DOCS_BB_URL;#bitbake-user-manual-command'>BitBake Command</ulink>"
section in the BitBake User Manual.
</para></listitem>
@@ -292,6 +274,147 @@
</para>
</section>
+ <section id='customizing-your-build-for-specific-hardware'>
+ <title>Customizing Your Build for Specific Hardware</title>
+
+ <para>
+ So far, all you have done is quickly built an image suitable
+ for emulation only.
+ This section shows you how to customize your build for specific
+ hardware by adding a hardware layer into the Yocto Project
+ development environment.
+ </para>
+
+ <para>
+ In general, layers are repositories that contain related sets of
+ instructions and configurations that tell the Yocto Project what
+ to do.
+ Isolating related metadata into functionally specific layers
+ facilitates modular development and makes it easier to reuse the
+ layer metadata.
+ <note>
+ By convention, layer names start with the string "meta-".
+ </note>
+ </para>
+
+ <para>
+ Follow these steps to add a hardware layer:
+ <orderedlist>
+ <listitem><para>
+ <emphasis>Find a Layer:</emphasis>
+ Lots of hardware layers exist.
+ The Yocto Project
+ <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink>
+ has many hardware layers.
+ This example adds the
+ <ulink url='https://github.com/kraj/meta-altera'>meta-altera</ulink>
+ hardware layer.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Clone the Layer</emphasis>
+ Use Git to make a local copy of the layer on your machine.
+ You can put the copy in the top level of the copy of the
+ Poky repository created earlier:
+ <literallayout class='monospaced'>
+ $ cd ~/poky
+ $ git clone https://github.com/kraj/meta-altera.git
+ Cloning into 'meta-altera'...
+ remote: Counting objects: 25170, done.
+ remote: Compressing objects: 100% (350/350), done.
+ remote: Total 25170 (delta 645), reused 719 (delta 538), pack-reused 24219
+ Receiving objects: 100% (25170/25170), 41.02 MiB | 1.64 MiB/s, done.
+ Resolving deltas: 100% (13385/13385), done.
+ Checking connectivity... done.
+ </literallayout>
+ The hardware layer now exists with other layers inside
+ the Poky reference repository on your build host as
+ <filename>meta-altera</filename> and contains all the
+ metadata needed to support hardware from Altera, which
+ is owned by Intel.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Change the Configuration to Build for a Specific Machine:</emphasis>
+ The
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
+ variable in the <filename>local.conf</filename> file
+ specifies the machine for the build.
+ For this example, set the <filename>MACHINE</filename>
+ variable to "cyclone5".
+ These configurations are used:
+ <ulink url='https://github.com/kraj/meta-altera/blob/master/conf/machine/cyclone5.conf'></ulink>.
+ <note>
+ See the
+ "<link linkend='conf-file-step'>Examine Your Local Configuration File</link>"
+ step earlier for more information on configuring the
+ build.
+ </note>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Add Your Layer to the Layer Configuration File:</emphasis>
+ Before you can use a layer during a build, you must add it
+ to your <filename>bblayers.conf</filename> file, which
+ is found in the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory's</ulink>
+ <filename>conf</filename> directory.</para>
+
+ <para>Use the <filename>bitbake-layers add-layer</filename>
+ command to add the layer to the configuration file:
+ <literallayout class='monospaced'>
+ $ cd ~/poky/build
+ $ bitbake-layers add-layer ../meta-altera
+ NOTE: Starting bitbake server...
+ Parsing recipes: 100% |##################################################################| Time: 0:00:32
+ Parsing of 918 .bb files complete (0 cached, 918 parsed). 1401 targets, 123 skipped, 0 masked, 0 errors.
+ </literallayout>
+ You can find more information on adding layers in the
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#adding-a-layer-using-the-bitbake-layers-script'>Adding a Layer Using the <filename>bitbake-layers</filename> Script</ulink>"
+ section.
+ </para></listitem>
+ </orderedlist>
+ Completing these steps has added the
+ <filename>meta-altera</filename> layer to your Yocto Project
+ development environment and configured it to build for the
+ "cyclone5" machine.
+ <note>
+ The previous steps are for demonstration purposes only.
+ If you were to attempt to build an image for the
+ "cyclone5" build, you should read the Altera
+ <filename>README</filename>.
+ </note>
+ </para>
+ </section>
+
+ <section id='creating-your-own-general-layer'>
+ <title>Creating Your Own General Layer</title>
+
+ <para>
+ Maybe you have an application or specific set of behaviors you
+ need to isolate.
+ You can create your own general layer using the
+ <filename>bitbake-layers create-layer</filename> command.
+ The tool automates layer creation by setting up a
+ subdirectory with a <filename>layer.conf</filename>
+ configuration file, a <filename>recipes-example</filename>
+ subdirectory that contains an <filename>example.bb</filename>
+ recipe, a licensing file, and a <filename>README</filename>.
+ </para>
+
+ <para>
+ The following commands run the tool to create a layer named
+ <filename>meta-mylayer</filename> in the
+ <filename>poky</filename> directory:
+ <literallayout class='monospaced'>
+ $ cd ~/poky
+ $ bitbake-layers create-layer meta-mylayer
+ NOTE: Starting bitbake server...
+ Add your new layer with 'bitbake-layers add-layer meta-mylayer'
+ </literallayout>
+ For more information on layers and how to create them, see the
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-a-general-layer-using-the-bitbake-layers-script'>Creating a General Layer Using the <filename>bitbake-layers</filename> Script</ulink>"
+ section in the Yocto Project Development Tasks Manual.
+ </para>
+ </section>
+
<section id='brief-where-to-go-next'>
<title>Where To Go Next</title>
@@ -322,6 +445,17 @@
the beginner.
</para></listitem>
<listitem><para>
+ <emphasis>Yocto Project Overview and Concepts Manual:</emphasis>
+ The
+ <ulink url='&YOCTO_DOCS_OM_URL;'>Yocto Project Overview and Concepts Manual</ulink>
+ is a great place to start to learn about the
+ Yocto Project.
+ This manual introduces you to the Yocto Project and its
+ development environment.
+ The manual also provides conceptual information for
+ various aspects of the Yocto Project.
+ </para></listitem>
+ <listitem><para>
<emphasis>Yocto Project Wiki:</emphasis>
The
<ulink url='&YOCTO_WIKI_URL;'>Yocto Project Wiki</ulink>
diff --git a/documentation/brief-yoctoprojectqs/figures/bypqs-title.png b/documentation/brief-yoctoprojectqs/figures/bypqs-title.png
new file mode 100644
index 00000000000..9e0a5ce52ed
--- /dev/null
+++ b/documentation/brief-yoctoprojectqs/figures/bypqs-title.png
Binary files differ
diff --git a/documentation/brief-yoctoprojectqs/figures/ypqs-title.png b/documentation/brief-yoctoprojectqs/figures/ypqs-title.png
deleted file mode 100644
index 0156e261b1e..00000000000
--- a/documentation/brief-yoctoprojectqs/figures/ypqs-title.png
+++ /dev/null
Binary files differ
diff --git a/documentation/bsp-guide/bsp-guide.xml b/documentation/bsp-guide/bsp-guide.xml
index 5df7e887f4a..5833e42c7d4 100644
--- a/documentation/bsp-guide/bsp-guide.xml
+++ b/documentation/bsp-guide/bsp-guide.xml
@@ -118,9 +118,14 @@
</revision>
<revision>
<revnumber>2.5</revnumber>
- <date>April 2018</date>
+ <date>May 2018</date>
<revremark>Released with the Yocto Project 2.5 Release.</revremark>
</revision>
+ <revision>
+ <revnumber>2.6</revnumber>
+ <date>&REL_MONTH_YEAR;</date>
+ <revremark>Released with the Yocto Project 2.6 Release.</revremark>
+ </revision>
</revhistory>
<copyright>
@@ -137,28 +142,40 @@
<itemizedlist>
<listitem><para>
This version of the
- <emphasis>Yocto Project Board Support Package Developer's Guide</emphasis>
+ <emphasis>Yocto Project Board Support Package (BSP) Developer's Guide</emphasis>
is for the &YOCTO_DOC_VERSION; release of the
Yocto Project.
To be sure you have the latest version of the manual
- for this release, use the manual from the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>.
+ for this release, go to the
+ <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
+ and select the manual from that site.
+ Manuals from the site are more up-to-date than manuals
+ derived from the Yocto Project released TAR files.
</para></listitem>
<listitem><para>
- For manuals associated with other releases of the Yocto
- Project, go to the
+ If you located this manual through a web search, the
+ version of the manual might not be the one you want
+ (e.g. the search might have returned a manual much
+ older than the Yocto Project version with which you
+ are working).
+ You can see all Yocto Project major releases by
+ visiting the
+ <ulink url='&YOCTO_WIKI_URL;/wiki/Releases'>Releases</ulink>
+ page.
+ If you need a version of this manual for a different
+ Yocto Project release, visit the
<ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
- and use the drop-down "Active Releases" button
- and choose the manual associated with the desired
- Yocto Project.
+ and select the manual set by using the
+ "ACTIVE RELEASES DOCUMENTATION" or "DOCUMENTS ARCHIVE"
+ pull-down menus.
</para></listitem>
<listitem><para>
- To report any inaccuracies or problems with this
- manual, send an email to the Yocto Project
- discussion group at
- <filename>yocto@yoctoproject.com</filename> or log into
- the freenode <filename>#yocto</filename> channel.
- </para></listitem>
+ To report any inaccuracies or problems with this
+ manual, send an email to the Yocto Project
+ discussion group at
+ <filename>yocto@yoctoproject.com</filename> or log into
+ the freenode <filename>#yocto</filename> channel.
+ </para></listitem>
</itemizedlist>
</note>
</legalnotice>
diff --git a/documentation/bsp-guide/bsp.xml b/documentation/bsp-guide/bsp.xml
index f9455ed8618..0bb0b68ab22 100644
--- a/documentation/bsp-guide/bsp.xml
+++ b/documentation/bsp-guide/bsp.xml
@@ -56,9 +56,9 @@
To help understand the BSP layer concept, consider the BSPs that the
Yocto Project supports and provides with each release.
You can see the layers in the
- <ulink url='&YOCTO_DOCS_GS_URL;#yocto-project-repositories'>Yocto Project Source Repositories</ulink>
+ <ulink url='&YOCTO_DOCS_OM_URL;#yocto-project-repositories'>Yocto Project Source Repositories</ulink>
through a web interface at
- <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi'></ulink>.
+ <ulink url='&YOCTO_GIT_URL;'></ulink>.
If you go to that interface, you will find a list of repositories
under "Yocto Metadata Layers".
<note>
@@ -93,8 +93,8 @@
section.
For more information on how to set up a local copy of source files
from a Git repository, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#working-with-yocto-project-source-files'>Working With Yocto Project Source Files</ulink>"
- section also in the Yocto Project Development Tasks Manual.
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#locating-yocto-project-source-files'>Locating Yocto Project Source Files</ulink>"
+ section in the Yocto Project Development Tasks Manual.
</para>
<para>
@@ -187,7 +187,7 @@
<emphasis>Set Up the Build Environment:</emphasis>
Be sure you are set up to use BitBake in a shell.
See the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#setting-up-the-development-host-to-use-the-yocto-project'>Setting Up the Development Host to Use the Yocto Project</ulink>"
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-preparing-the-build-host'>Preparing the Build Host</ulink>"
section in the Yocto Project Development Tasks Manual for information
on how to get a build host ready that is either a native
Linux machine or a machine that uses CROPS.
@@ -340,7 +340,7 @@
It is also intended that it will be be simple to extract
information and convert it to other formats if required.
The OpenEmbedded build system, through its standard
- <ulink url='&YOCTO_DOCS_GS_URL;#the-yocto-project-layer-model'>layers mechanism</ulink>,
+ <ulink url='&YOCTO_DOCS_OM_URL;#the-yocto-project-layer-model'>layers mechanism</ulink>,
can directly accept the format described as a layer.
The BSP layer captures all the hardware-specific details
in one place using a standard format, which is useful
@@ -953,7 +953,7 @@
<para>
You can find more information on what your append file
should contain in the
- "<ulink url='&YOCTO_DOCS_KERNEL_URL;#creating-the-append-file'>Creating the Append File</ulink>"
+ "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#creating-the-append-file'>Creating the Append File</ulink>"
section in the Yocto Project Linux Kernel Development
Manual.
</para>
@@ -1012,7 +1012,7 @@
to Support Development Using the Yocto
Project</emphasis>:
See the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#setting-up-the-development-host-to-use-the-yocto-project'>Setting Up the Development Host to Use the Yocto Project</ulink>"
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-preparing-the-build-host'>Preparing the Build Host</ulink>"
section in the Yocto Project Development Tasks
Manual for options on how to get a system ready
to use the Yocto Project.
@@ -1056,8 +1056,8 @@
information for the project that the
OpenEmbedded build system knows about.
For more information on layers, see the
- "<ulink url='&YOCTO_DOCS_GS_URL;#the-yocto-project-layer-model'>The Yocto Project Layer Model</ulink>"
- section in the Getting Started With Yocto Project
+ "<ulink url='&YOCTO_DOCS_OM_URL;#the-yocto-project-layer-model'>The Yocto Project Layer Model</ulink>"
+ section in the Yocto Project Overview and Concepts
Manual.
You can also reference the
"<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>"
@@ -1283,7 +1283,7 @@
is found in <filename>poky/meta</filename>
directory of the
<ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
- or in the OpenEmbedded Core Layer
+ or in the OpenEmbedded-Core Layer
(<filename>openembedded-core</filename>) at
<ulink url='http://git.openembedded.org/openembedded-core/tree/meta'></ulink>.
</para>
@@ -1303,7 +1303,7 @@
<para>Within any particular
<filename>recipes-*</filename> category, the
layout should match what is found in the
- OpenEmbedded Core Git repository
+ OpenEmbedded-Core Git repository
(<filename>openembedded-core</filename>)
or the Source Directory (<filename>poky</filename>).
In other words, make sure you place related
@@ -1338,7 +1338,7 @@
<filename>meta-</filename><replaceable>bsp_root_name</replaceable>
directory.
See the
- <ulink url='&YOCTO_GIT_URL;/cgit.cgi/meta-raspberrypi/tree/README'><filename>README</filename></ulink>
+ <ulink url='&YOCTO_GIT_URL;/cgit.cgi/meta-raspberrypi/tree/README.md'><filename>README.md</filename></ulink>
file for the Raspberry Pi BSP in the
<filename>meta-raspberrypi</filename> BSP layer
as an example.</para>
@@ -1507,7 +1507,7 @@
its scalability.
See the <filename>Yocto Linux Kernel</filename>
category in the
- <ulink url='&YOCTO_GIT_URL;/cgit.cgi'>Source Repositories</ulink>
+ <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink>
for these kernels.
</para></listitem>
</itemizedlist>
@@ -1687,9 +1687,10 @@
Thus, the build system can build the corresponding
recipe and include the component in the image.
See the
- "<ulink url='&YOCTO_DOCS_CM_URL;#enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</ulink>"
- section in the Yocto Project Concepts Manual for
- details on how to use these variables.</para>
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</ulink>"
+ section in the Yocto Project Development Tasks
+ Manual for details on how to use these variables.
+ </para>
<para>If you build as you normally would, without
specifying any recipes in the
@@ -1746,25 +1747,20 @@
<title>Creating a new BSP Layer Using the <filename>bitbake-layers</filename> Script</title>
<para>
- [INTRODUCE THE PROCEDURE AND LINK BACK TO <link linkend='bsp-layers'>BSP layer</link>.
- IF THERE IS A LAUNDRY LIST OF ITEMS THAT NEED DEFINITION OR GET SET
- UP AS A RESULT OF THIS PROCEDURE, LIST THEM HERE.]
- <itemizedlist>
- <listitem><para>[PARAMETER 1]</para></listitem>
- <listitem><para>[PARAMETER 2]</para></listitem>
- <listitem><para>[PARAMETER 3]</para></listitem>
- <listitem><para>[PARAMETER 4]</para></listitem>
- <listitem><para>[PARAMETER 5]</para></listitem>
- <listitem><para>[PARAMETER 6]</para></listitem>
- <listitem><para>[PARAMETER 7]</para></listitem>
- </itemizedlist>
+ The <filename>bitbake-layers create-layer</filename> script
+ automates creating a BSP layer.
+ What makes a layer a "BSP layer", is the presence of a machine
+ configuration file.
+ Additionally, a BSP layer usually has a kernel recipe
+ or an append file that leverages off an existing kernel recipe.
+ The primary requirement, however, is the machine configuration.
</para>
<para>
- The following procedure creates a BSP layer:
+ Use these steps to create a BSP layer:
<itemizedlist>
<listitem><para>
- <emphasis>Create General Layer:</emphasis>
+ <emphasis>Create a General Layer:</emphasis>
Use the <filename>bitbake-layers</filename> script with the
<filename>create-layer</filename> subcommand to create a
new general layer.
@@ -1774,25 +1770,41 @@
section in the Yocto Project Development Tasks Manual.
</para></listitem>
<listitem><para>
+ <emphasis>Create a Layer Configuration File:</emphasis>
+ Every layer needs a layer configuration file.
+ This configuration file establishes locations for the
+ layer's recipes, priorities for the layer, and so forth.
+ You can find examples of <filename>layer.conf</filename>
+ files in the Yocto Project
+ <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink>.
+ To get examples of what you need in your configuration
+ file, locate a layer (e.g. "meta-ti") and examine the
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/meta-ti/tree/conf/layer.conf'></ulink>
+ file.
+ </para></listitem>
+ <listitem><para>
<emphasis>Create a Machine Configuration File:</emphasis>
- Create a <filename>conf/machine/&gt;machine&lt;.conf</filename>
+ Create a <filename>conf/machine/</filename><replaceable>bsp_root_name</replaceable><filename>.conf</filename>
file.
- See <filename>meta-yocto-bsp/conf/machine</filename> for sample
- <filename>&gt;machine.conf&lt;</filename> files.
- Other samples exist from other vendors such as
- <filename>meta-intel</filename>, <filename>meta-ti</filename>,
- and <filename>meta-freescale</filename> that have more specific machine
+ See
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta-yocto-bsp/conf/machine'><filename>meta-yocto-bsp/conf/machine</filename></ulink>
+ for sample
+ <replaceable>bsp_root_name</replaceable><filename>.conf</filename>
+ files.
+ Other samples such as
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/meta-ti/tree/conf/machine'><filename>meta-ti</filename></ulink>
+ and
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/meta-freescale/tree/conf/machine'><filename>meta-freescale</filename></ulink>
+ exist from other vendors that have more specific machine
and tuning examples.
</para></listitem>
<listitem><para>
<emphasis>Create a Kernel Recipe:</emphasis>
Create a kernel recipe in <filename>recipes-kernel/linux</filename>
- either using a linux-yocto kernel with a <filename>.bbappend</filename>
- file or a new custom kernel recipe file (i.e. <filename>.bb</filename>
- file).
+ by either using a kernel append file or a new custom kernel
+ recipe file (e.g. <filename>yocto-linux_4.12.bb</filename>).
The BSP layers mentioned in the previous step also contain different
kernel examples.
- You can start with the linux-yocto or use a custom kernel.
See the
"<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#modifying-an-existing-recipe'>Modifying an Existing Recipe</ulink>"
section in the Yocto Project Linux Kernel Development Manual
@@ -1802,43 +1814,456 @@
</para>
<para>
- [THERE IS MORE INFORMATION THAT NEEDS TO BE FILLED IN HERE. THIS NEEDS TO
- BE PROVIDED BY ENGINEERS.]
+ The remainder of this section provides a description of
+ the Yocto Project reference BSP for Beaglebone, which
+ resides in the
+ <ulink url='&YOCTO_DOCS_REF_URL;#term-container-layer'>Container Layer</ulink>
+ (i.e.
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta-yocto-bsp'><filename>meta-yocto-bsp</filename></ulink>).
</para>
- <para>
- The remainder of this section presents an example that uses
- <filename>myarm</filename> as the machine name and <filename>qemu</filename>
- as the machine architecture.
- Of the available architectures, <filename>qemu</filename> is the only architecture
- that causes the script to prompt you further for an actual architecture.
- In every other way, this architecture is representative of how creating a BSP for
- an actual machine would work.
- The reason the example uses this architecture is because it is an emulated architecture
- and can easily be followed without requiring actual hardware.
- </para>
+ <section id='bsp-layer-configuration-example'>
+ <title>BSP Layer Configuration Example</title>
- <para>
- Following is a complete example:
- <literallayout class='monospaced'>
- [INSERT EXAMPLE - NEED EXAMPLE]
- </literallayout>
- </para>
+ <para>
+ The layer's <filename>conf</filename> directory
+ contains the <filename>layer.conf</filename>
+ configuration file.
+ In this example, the
+ <filename>conf/layer.conf</filename> is the
+ following:
+ <literallayout class='monospaced'>
+ # We have a conf and classes directory, add to BBPATH
+ BBPATH .= ":${LAYERDIR}"
- <para>
- Once the BSP Layer is created, you must add it to your
- <filename>bblayers.conf</filename> file.
- Here is an example:
- <literallayout class='monospaced'>
- BBLAYERS = ? " \
- /usr/local/src/yocto/meta \
- /usr/local/src/yocto/meta-poky \
- /usr/local/src/yocto/meta-yocto-bsp \
- /usr/local/src/yocto/meta-myarm \
- "
- </literallayout>
- Adding the layer to this file allows the build system to build the BSP and
- find the layer along with other Metadata it needs.
- </para>
+ # We have recipes-* directories, add to BBFILES
+ BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+ ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+ BBFILE_COLLECTIONS += "yoctobsp"
+ BBFILE_PATTERN_yoctobsp = "^${LAYERDIR}/"
+ BBFILE_PRIORITY_yoctobsp = "5"
+ LAYERVERSION_yoctobsp = "4"
+ LAYERSERIES_COMPAT_yoctobsp = "&DISTRO_NAME_NO_CAP;"
+ </literallayout>
+ The variables used in this file configure the
+ layer.
+ A good way to learn about layer configuration
+ files is to examine various files for BSP from
+ the
+ <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink>.
+ </para>
+
+ <para>
+ For a detailed description of this particular
+ layer configuration file, see
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-layer-config-file-description'>step 3</ulink>
+ in the discussion that describes how to create
+ layers in the Yocto Project Development Tasks Manual.
+ </para>
+ </section>
+
+ <section id='bsp-machine-configuration-example'>
+ <title>BSP Machine Configuration Example</title>
+
+ <para>
+ As mentioned earlier in this section, the existence
+ of a machine configuration file is what makes a
+ layer a BSP layer as compared to a general or
+ kernel layer.
+ </para>
+
+ <para>
+ Machine configuration files exist in the
+ <replaceable>bsp_layer</replaceable><filename>/conf/machine/</filename>
+ directory of the layer:
+ <literallayout class='monospaced'>
+ <replaceable>bsp_layer</replaceable><filename>/conf/machine/</filename><replaceable>machine</replaceable><filename>.conf</filename>
+ </literallayout>
+ For example, the machine configuration file for the
+ <ulink url='http://beagleboard.org/bone'>BeagleBone and BeagleBone Black development boards</ulink>
+ is located in the container layer
+ <filename>poky/meta-yocto-bsp/conf/machine</filename>
+ and is named <filename>beaglebone-yocto.conf</filename>:
+ <literallayout class='monospaced'>
+ #@TYPE: Machine
+ #@NAME: Beaglebone-yocto machine
+ #@DESCRIPTION: Reference machine configuration for http://beagleboard.org/bone and http://beagleboard.org/black boards
+
+ PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
+ XSERVER ?= "xserver-xorg \
+ xf86-video-modesetting \
+ "
+
+ MACHINE_EXTRA_RRECOMMENDS = "kernel-modules kernel-devicetree"
+
+ EXTRA_IMAGEDEPENDS += "u-boot"
+
+ DEFAULTTUNE ?= "cortexa8hf-neon"
+ include conf/machine/include/tune-cortexa8.inc
+
+ IMAGE_FSTYPES += "tar.bz2 jffs2 wic wic.bmap"
+ EXTRA_IMAGECMD_jffs2 = "-lnp "
+ WKS_FILE ?= "beaglebone-yocto.wks"
+ IMAGE_INSTALL_append = " kernel-devicetree kernel-image-zimage"
+ do_image_wic[depends] += "mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot"
+
+ SERIAL_CONSOLES = "115200;ttyO0"
+
+ PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
+ PREFERRED_VERSION_linux-yocto ?= "4.12%"
+
+ KERNEL_IMAGETYPE = "zImage"
+ KERNEL_DEVICETREE = "am335x-bone.dtb am335x-boneblack.dtb am335x-bonegreen.dtb"
+ KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_ENTRYPOINT}"
+
+ SPL_BINARY = "MLO"
+ UBOOT_SUFFIX = "img"
+ UBOOT_MACHINE = "am335x_boneblack_config"
+ UBOOT_ENTRYPOINT = "0x80008000"
+ UBOOT_LOADADDRESS = "0x80008000"
+
+ MACHINE_FEATURES = "usbgadget usbhost vfat alsa"
+
+ IMAGE_BOOT_FILES ?= "u-boot.${UBOOT_SUFFIX} MLO"
+ </literallayout>
+ The variables used to configure the machine define
+ machine-specific properties.
+ For example, machine-dependent packages, machine
+ tunings, the type of kernel to build, and
+ U-Boot configurations.
+ </para>
+
+ <para>
+ The following list provides some explanation
+ for the statements found in the example reference
+ machine configuration file for the BeagleBone
+ development boards.
+ Realize that much more can be defined as part of
+ a machines configuration file.
+ In general, you can learn about related variables
+ that this example does not have by locating the
+ variables in the
+ "<ulink url='&YOCTO_DOCS_REF_URL;#ref-variables-glos'>Yocto Project Variables Glossary</ulink>"
+ in the Yocto Project Reference Manual.
+ <itemizedlist>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-PREFERRED_PROVIDER'><filename>PREFERRED_PROVIDER_virtual/xserver</filename></ulink>:
+ The recipe that provides "virtual/xserver" when
+ more than one provider is found.
+ In this case, the recipe that provides
+ "virtual/xserver" is "xserver-xorg", which
+ exists in
+ <filename>poky/meta/recipes-graphics/xserver-xorg</filename>.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-XSERVER'><filename>XSERVER</filename></ulink>:
+ The packages that should be installed to provide
+ an X server and drivers for the machine.
+ In this example, the "xserver-xorg" and
+ "xf86-video-modesetting" are installed.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_EXTRA_RRECOMMENDS'><filename>MACHINE_EXTRA_RRECOMMENDS</filename></ulink>:
+ A list of machine-dependent packages
+ not essential for booting the image.
+ Thus, the build does not fail if the packages
+ do not exist.
+ However, the packages are required for a
+ fully-featured image.
+ <note><title>Tip</title>
+ Many <filename>MACHINE*</filename> variables
+ exist that help you configure a particular
+ piece of hardware.
+ </note>
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_IMAGEDEPENDS'><filename>EXTRA_IMAGEDEPENDS</filename></ulink>:
+ Recipes to build that do not provide packages
+ for installing into the root filesystem
+ but building the image depends on the
+ recipes.
+ Sometimes a recipe is required to build
+ the final image but is not needed in the
+ root filesystem.
+ In this case, the U-Boot recipe must be
+ built for the image.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-DEFAULTTUNE'><filename>DEFAULTTUNE</filename></ulink>:
+ Machines use tunings to optimize machine,
+ CPU, and application performance.
+ These features, which are collectively known
+ as "tuning features", exist in the
+ <ulink url='&YOCTO_DOCS_REF_URL;#oe-core'>OpenEmbedded-Core (OE-Core)</ulink>
+ layer (e.g.
+ <filename>poky/meta/conf/machine/include</filename>).
+ In this example, the default tunning file is
+ "cortexa8hf-neon".
+ <note>
+ The <filename>include</filename> statement
+ that pulls in the
+ <filename>conf/machine/include/tune-cortexa8.inc</filename>
+ file provides many tuning possibilities.
+ </note>
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></ulink>:
+ The formats the OpenEmbedded build system
+ uses during the build when creating the
+ root filesystem.
+ In this example, four types of images are
+ supported.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_IMAGECMD'><filename>EXTRA_IMAGECMD</filename></ulink>:
+ Specifies additional options for image
+ creation commands.
+ In this example, the "-lnp " option is used
+ when creating the
+ <ulink url='https://en.wikipedia.org/wiki/JFFS2'>JFFS2</ulink>
+ image.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-WKS_FILE'><filename>WKS_FILE</filename></ulink>:
+ The location of the
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-kickstart'>Wic kickstart</ulink>
+ file used by the OpenEmbedded build system to
+ create a partitioned image (image.wic).
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></ulink>:
+ Specifies packages to install into an image
+ through the
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-image'><filename>image</filename></ulink>
+ class.
+ Recipes use the <filename>IMAGE_INSTALL</filename>
+ variable.
+ </para></listitem>
+ <listitem><para>
+ <filename>do_image_wic[depends]</filename>:
+ A task that is constructed during the build.
+ In this example, the task depends on specific tools
+ in order to create the sysroot when buiding a Wic
+ image.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-SERIAL_CONSOLES'><filename>SERIAL_CONSOLES</filename></ulink>:
+ Defines a serial console (TTY) to enable using
+ getty.
+ In this case, the baud rate is "115200" and the
+ device name is "ttyO0".
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-PREFERRED_PROVIDER'><filename>PREFERRED_PROVIDER_virtual/kernel</filename></ulink>:
+ Specifies the recipe that provides
+ "virtual/kernel" when more than one provider
+ is found.
+ In this case, the recipe that provides
+ "virtual/kernel" is "linux-yocto", which
+ exists in the layer's
+ <filename>recipes-kernel/linux</filename> directory.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-PREFERRED_VERSION'><filename>PREFERRED_VERSION_linux-yocto</filename></ulink>:
+ Defines the version of the recipe used
+ to build the kernel, which is "4.12" in this
+ case.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-KERNEL_IMAGETYPE'><filename>KERNEL_IMAGETYPE</filename></ulink>:
+ The type of kernel to build for the device.
+ In this case, the OpenEmbedded build system
+ creates a "zImage" image type.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-KERNEL_DEVICETREE'><filename>KERNEL_DEVICETREE</filename></ulink>:
+ The name of the generated Linux kernel device
+ tree (i.e. the <filename>.dtb</filename>) file.
+ All the device trees for the various BeagleBone
+ devices are included.
+<!--
+ You have to include some *.inc files according to the definition of KERNEL_DEVICETREE.
+ I don't see where these are being provided.
+-->
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-KERNEL_EXTRA_ARGS'><filename>KERNEL_EXTRA_ARGS</filename></ulink>:
+ Additional <filename>make</filename>
+ command-line arguments the OpenEmbedded build
+ system passes on when compiling the kernel.
+ In this example, "LOADADDR=${UBOOT_ENTRYPOINT}"
+ is passed as a command-line argument.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-SPL_BINARY'><filename>SPL_BINARY</filename></ulink>:
+ Defines the Secondary Program Loader (SPL) binary
+ type.
+ In this case, the SPL binary is set to
+ "MLO", which stands for Multimedia card LOader.
+ </para>
+
+ <para>The BeagleBone development board requires an
+ SPL to boot and that SPL file type must be MLO.
+ Consequently, the machine configuration needs to
+ define <filename>SPL_BINARY</filename> as "MLO".
+ <note>
+ For more information on how the SPL variables
+ are used, see the
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta/recipes-bsp/u-boot/u-boot.inc'><filename>u-boot.inc</filename></ulink>
+ include file.
+ </note>
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-UBOOT_ENTRYPOINT'><filename>UBOOT_*</filename></ulink>:
+ Defines various U-Boot configurations needed
+ to build a U-Boot image.
+ In this example, a U-Boot image is required
+ to boot the BeagleBone device.
+ See the following variables for more information:
+ <itemizedlist>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-UBOOT_SUFFIX'><filename>UBOOT_SUFFIX</filename></ulink>:
+ Points to the generated U-Boot extension.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-UBOOT_MACHINE'><filename>UBOOT_MACHINE</filename></ulink>:
+ Specifies the value passed on the make command line when building a U-Boot image.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-UBOOT_ENTRYPOINT'><filename>UBOOT_ENTRYPOINT</filename></ulink>:
+ Specifies the entry point for the U-Boot image.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-UBOOT_LOADADDRESS'><filename>UBOOT_LOADADDRESS</filename></ulink>:
+ Specifies the load address for the U-Boot image.
+ </para></listitem>
+ </itemizedlist>
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_FEATURES'><filename>MACHINE_FEATURES</filename></ulink>:
+ Specifies the list of hardware features the
+ BeagleBone device is capable of supporting.
+ In this case, the device supports
+ "usbgadget usbhost vfat alsa".
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_BOOT_FILES'><filename>IMAGE_BOOT_FILES</filename></ulink>:
+ Files installed into the device's boot partition
+ when preparing the image using the Wic tool
+ with the <filename>bootimg-partition</filename>
+ source plugin.
+ In this case, the "u-boot.${UBOOT_SUFFIX}" and
+ "MLO" files are installed.
+ </para></listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section id='bsp-kernel-recipe-example'>
+ <title>BSP Kernel Recipe Example</title>
+
+ <para>
+ The kernel recipe used to build the kernel image
+ for the BeagleBone device was established in the
+ machine configuration:
+ <literallayout class='monospaced'>
+ PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
+ PREFERRED_VERSION_linux-yocto ?= "4.12%"
+ </literallayout>
+ The <filename>meta-yocto-bsp/recipes-kernel/linux</filename>
+ directory in the layer contains metadata used
+ to build the kernel.
+ In this case, a kernel append file is used to
+ override an established kernel recipe, which is
+ located in
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta/recipes-kernel/linux'></ulink>
+ and named
+ <filename>linux-yocto_4.12.bb</filename>.
+ </para>
+
+ <para>
+ Following is the contents of the append file:
+ <literallayout class='monospaced'>
+ KBRANCH_genericx86 = "standard/base"
+ KBRANCH_genericx86-64 = "standard/base"
+
+ KMACHINE_genericx86 ?= "common-pc"
+ KMACHINE_genericx86-64 ?= "common-pc-64"
+ KBRANCH_edgerouter = "standard/edgerouter"
+ KBRANCH_beaglebone-yocto = "standard/beaglebone"
+ KMACHINE_beaglebone-yocto = "beaglebone"
+ KBRANCH_mpc8315e-rdb = "standard/fsl-mpc8315e-rdb"
+
+ SRCREV_machine_genericx86 ?= "1c4ad569af3e23a77994235435040e322908687f"
+ SRCREV_machine_genericx86-64 ?= "1c4ad569af3e23a77994235435040e322908687f"
+ SRCREV_machine_edgerouter ?= "257f843ea367744620f1d92910afd2f454e31483"
+ SRCREV_machine_beaglebone-yocto ?= "257f843ea367744620f1d92910afd2f454e31483"
+ SRCREV_machine_mpc8315e-rdb ?= "014560874f9eb2a86138c9cc35046ff1720485e1"
+
+
+ COMPATIBLE_MACHINE_genericx86 = "genericx86"
+ COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64"
+ COMPATIBLE_MACHINE_edgerouter = "edgerouter"
+ COMPATIBLE_MACHINE_beaglebone-yocto = "beaglebone-yocto"
+ COMPATIBLE_MACHINE_mpc8315e-rdb = "mpc8315e-rdb"
+
+ LINUX_VERSION_genericx86 = "4.12.20"
+ LINUX_VERSION_genericx86-64 = "4.12.20"
+ LINUX_VERSION_edgerouter = "4.12.19"
+ LINUX_VERSION_beaglebone-yocto = "4.12.19"
+ LINUX_VERSION_mpc8315e-rdb = "4.12.19"
+ </literallayout>
+ This particular append file works for all the
+ machines that are part of the
+ <filename>meta-yocto-bsp</filename> container
+ layer.
+ The relevant statements are appended with
+ the "beaglebone-yocto" string.
+ The OpenEmbedded build system uses these
+ statements to override similar statements
+ in the kernel recipe:
+ <itemizedlist>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-KBRANCH'><filename>KBRANCH</filename></ulink>:
+ Identifies the kernel branch that is validated,
+ patched, and configured during the build.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-KMACHINE'><filename>KMACHINE</filename></ulink>:
+ Identifies the machine name as known by the
+ kernel, which is sometimes a different name
+ than what is known by the OpenEmbedded build
+ system.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-SRCREV'><filename>SRCREV</filename></ulink>:
+ Identifies the revision of the source code used
+ to build the image.
+<!--
+ You find out about that point in the kernel source tree by
+ doing the following command:
+
+ git log &dash;&dash;decorate 257f843ea367744620f1d92910afd2f454e31483
+
+ Returns information about the commit, which is usually
+ that it is a merge point for a stable kernel release.
+-->
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-COMPATIBLE_MACHINE'><filename>COMPATIBLE_MACHINE</filename></ulink>:
+ A regular expression that resolves to one or
+ more target machines with which the recipe
+ is compatible.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-LINUX_VERSION'><filename>LINUX_VERSION</filename></ulink>:
+ The Linux version from kernel.org used by
+ the OpenEmbedded build system to build the
+ kernel image.
+ </para></listitem>
+ </itemizedlist>
+ </para>
+ </section>
</section>
</chapter>
diff --git a/documentation/concepts-manual/concepts-manual-customization.xsl b/documentation/concepts-manual/concepts-manual-customization.xsl
deleted file mode 100644
index 0e1d7131d5d..00000000000
--- a/documentation/concepts-manual/concepts-manual-customization.xsl
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version='1.0'?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
-
- <xsl:import href="http://downloads.yoctoproject.org/mirror/docbook-mirror/docbook-xsl-1.76.1/xhtml/docbook.xsl" />
-
-<!--
-
- <xsl:import href="../template/1.76.1/docbook-xsl-1.76.1/xhtml/docbook.xsl" />
-
- <xsl:import href="http://docbook.sourceforge.net/release/xsl/1.76.1/xhtml/docbook.xsl" />
-
--->
-
- <xsl:include href="../template/permalinks.xsl"/>
- <xsl:include href="../template/section.title.xsl"/>
- <xsl:include href="../template/component.title.xsl"/>
- <xsl:include href="../template/division.title.xsl"/>
- <xsl:include href="../template/formal.object.heading.xsl"/>
-
- <xsl:param name="html.stylesheet" select="'concepts-manual-style.css'" />
- <xsl:param name="chapter.autolabel" select="1" />
- <xsl:param name="appendix.autolabel" select="A" />
- <xsl:param name="section.autolabel" select="1" />
- <xsl:param name="section.label.includes.component.label" select="1" />
- <xsl:param name="generate.id.attributes" select="1" />
-
-</xsl:stylesheet>
diff --git a/documentation/concepts-manual/concepts-manual-eclipse-customization.xsl b/documentation/concepts-manual/concepts-manual-eclipse-customization.xsl
deleted file mode 100644
index 987d66bfdaf..00000000000
--- a/documentation/concepts-manual/concepts-manual-eclipse-customization.xsl
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version='1.0'?>
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns="http://www.w3.org/1999/xhtml"
- xmlns:fo="http://www.w3.org/1999/XSL/Format"
- version="1.0">
-
- <xsl:import href="http://downloads.yoctoproject.org/mirror/docbook-mirror/docbook-xsl-1.76.1/eclipse/eclipse3.xsl" />
-
-<!--
-
- <xsl:import href="../template/1.76.1/docbook-xsl-1.76.1/eclipse/eclipse3.xsl" />
-
- <xsl:import
- href="http://docbook.sourceforge.net/release/xsl/1.76.1/eclipse/eclipse3.xsl" />
-
--->
-
- <xsl:param name="chunker.output.indent" select="'yes'"/>
- <xsl:param name="chunk.quietly" select="1"/>
- <xsl:param name="chunk.first.sections" select="1"/>
- <xsl:param name="chunk.section.depth" select="10"/>
- <xsl:param name="use.id.as.filename" select="1"/>
- <xsl:param name="ulink.target" select="'_self'" />
- <xsl:param name="base.dir" select="'html/concepts-manual/'"/>
- <xsl:param name="html.stylesheet" select="'../book.css'"/>
- <xsl:param name="eclipse.manifest" select="0"/>
- <xsl:param name="create.plugin.xml" select="0"/>
- <xsl:param name="suppress.navigation" select="1"/>
- <xsl:param name="generate.index" select="0"/>
- <xsl:param name="chapter.autolabel" select="1" />
- <xsl:param name="appendix.autolabel" select="1" />
- <xsl:param name="section.autolabel" select="1" />
- <xsl:param name="section.label.includes.component.label" select="1" />
-</xsl:stylesheet>
diff --git a/documentation/concepts-manual/concepts-manual-intro.xml b/documentation/concepts-manual/concepts-manual-intro.xml
deleted file mode 100644
index adaa612525a..00000000000
--- a/documentation/concepts-manual/concepts-manual-intro.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
-"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
-[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
-
-<chapter id='concepts-manual-intro'>
-
-<title>The Yocto Project Concepts Manual</title>
- <section id='concepts-overview-welcome'>
- <title>Welcome</title>
-
- <para>
- Welcome to the Yocto Project Concepts Manual!
- This manual provides conceptual information that helps you
- better understand the Yocto Project.
- You can learn about Yocto Project components,
- cross-development toolchain generation, shared-state cache,
- and many other concepts.
- </para>
-
- <para>
- This manual does not give you the following:
- <itemizedlist>
- <listitem><para>
- <emphasis>Complete Step-by-step Instructions for Development Tasks:</emphasis>
- Instructional procedures reside in other manuals within
- the Yocto Project documentation set.
- For example, the
- <ulink url='&YOCTO_DOCS_DEV_URL;'>Yocto Project Development Tasks Manual</ulink>
- provides examples on how to perform various development
- tasks.
- As another example, the
- <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
- manual contains detailed instructions on how to install an
- SDK, which is used to develop applications for target
- hardware.
- </para></listitem>
- <listitem><para>
- <emphasis>Reference Material:</emphasis>
- This type of material resides in an appropriate reference
- manual.
- For example, system variables are documented in the
- <ulink url='&YOCTO_DOCS_REF_URL;'>Yocto Project Reference Manual</ulink>.
- As another example, the
- <ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support Package (BSP) Developer's Guide</ulink>
- contains reference information on BSPs.
- </para></listitem>
- <listitem><para>
- <emphasis>Getting Started Material:</emphasis>
- This type of material resides in the
- <ulink url='&YOCTO_DOCS_GS_URL;'>Getting Started With Yocto Project Manual</ulink>.
- </para></listitem>
- <listitem><para>
- <emphasis>Detailed Public Information Not Specific to the
- Yocto Project:</emphasis>
- For example, exhaustive information on how to use Git
- is better covered with Internet searches and official
- Git Documentation than through the Yocto Project
- documentation.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section id='concepts-overview-other-information'>
- <title>Other Information</title>
-
- <para>
- Because this manual presents information for many different
- concepts, supplemental information is recommended for full
- comprehension.
- For additional introductory information on the Yocto Project, see
- the <ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink>.
- You can find an introductory to using the Yocto Project by working
- through the
- <ulink url='&YOCTO_DOCS_QS_URL;'>Yocto Project Quick Start</ulink>.
- </para>
-
- <para>
- For a comprehensive list of links and other documentation, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#resources-links-and-related-documentation'>Links and Related Documentation</ulink>"
- section in the Yocto Project Reference Manual.
- </para>
- </section>
-</chapter>
-<!--
-vim: expandtab tw=80 ts=4
--->
diff --git a/documentation/concepts-manual/concepts-manual.xml b/documentation/concepts-manual/concepts-manual.xml
deleted file mode 100644
index 5057804f68a..00000000000
--- a/documentation/concepts-manual/concepts-manual.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
-"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
-[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
-
-<book id='concepts-manual' lang='en'
- xmlns:xi="http://www.w3.org/2003/XInclude"
- xmlns="http://docbook.org/ns/docbook"
- >
- <bookinfo>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref='figures/concepts-manual-title.png'
- format='SVG'
- align='left' scalefit='1' width='100%'/>
- </imageobject>
- </mediaobject>
-
- <title>
- Yocto Project Concepts Manual
- </title>
-
- <authorgroup>
- <author>
- <firstname>Scott</firstname> <surname>Rifenbark</surname>
- <affiliation>
- <orgname>Scotty's Documentation Services, INC</orgname>
- </affiliation>
- <email>srifenbark@gmail.com</email>
- </author>
- </authorgroup>
-
- <revhistory>
- <revision>
- <revnumber>2.5</revnumber>
- <date>April 2018</date>
- <revremark>The initial document released with the Yocto Project 2.5 Release.</revremark>
- </revision>
- </revhistory>
-
- <copyright>
- <year>&COPYRIGHT_YEAR;</year>
- <holder>Linux Foundation</holder>
- </copyright>
-
- <legalnotice>
- <para>
- Permission is granted to copy, distribute and/or modify this document under
- the terms of the <ulink type="http" url="http://creativecommons.org/licenses/by-sa/2.0/uk/">
- Creative Commons Attribution-Share Alike 2.0 UK: England &amp; Wales</ulink> as published by
- Creative Commons.
- </para>
- <note><title>Manual Notes</title>
- <itemizedlist>
- <listitem><para>
- This version of the
- <emphasis>Yocto Project Concepts Manual</emphasis>
- is for the &YOCTO_DOC_VERSION; release of the
- Yocto Project.
- To be sure you have the latest version of the manual
- for this release, use the manual from the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>.
- </para></listitem>
- <listitem><para>
- For manuals associated with other releases of the Yocto
- Project, go to the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
- and use the drop-down "Active Releases" button
- and choose the manual associated with the desired
- Yocto Project.
- </para></listitem>
- <listitem><para>
- To report any inaccuracies or problems with this
- manual, send an email to the Yocto Project
- discussion group at
- <filename>yocto@yoctoproject.com</filename> or log into
- the freenode <filename>#yocto</filename> channel.
- </para></listitem>
- </itemizedlist>
- </note>
- </legalnotice>
-
- </bookinfo>
-
- <xi:include href="concepts-manual-intro.xml"/>
-
- <xi:include href="concepts-manual-concepts.xml"/>
-
-</book>
-<!--
-vim: expandtab tw=80 ts=4
--->
diff --git a/documentation/concepts-manual/figures/analysis-for-package-splitting.png b/documentation/concepts-manual/figures/analysis-for-package-splitting.png
deleted file mode 100644
index 04f2794ea9b..00000000000
--- a/documentation/concepts-manual/figures/analysis-for-package-splitting.png
+++ /dev/null
Binary files differ
diff --git a/documentation/concepts-manual/figures/concepts-manual-title.png b/documentation/concepts-manual/figures/concepts-manual-title.png
deleted file mode 100644
index bac7a69994c..00000000000
--- a/documentation/concepts-manual/figures/concepts-manual-title.png
+++ /dev/null
Binary files differ
diff --git a/documentation/concepts-manual/figures/configuration-compile-autoreconf.png b/documentation/concepts-manual/figures/configuration-compile-autoreconf.png
deleted file mode 100644
index a07464f04c3..00000000000
--- a/documentation/concepts-manual/figures/configuration-compile-autoreconf.png
+++ /dev/null
Binary files differ
diff --git a/documentation/concepts-manual/figures/image-generation.png b/documentation/concepts-manual/figures/image-generation.png
deleted file mode 100644
index 71a48dc6f43..00000000000
--- a/documentation/concepts-manual/figures/image-generation.png
+++ /dev/null
Binary files differ
diff --git a/documentation/concepts-manual/figures/images.png b/documentation/concepts-manual/figures/images.png
deleted file mode 100644
index d99eac1fbfa..00000000000
--- a/documentation/concepts-manual/figures/images.png
+++ /dev/null
Binary files differ
diff --git a/documentation/concepts-manual/figures/layer-input.png b/documentation/concepts-manual/figures/layer-input.png
deleted file mode 100644
index 0a4f2e74f3d..00000000000
--- a/documentation/concepts-manual/figures/layer-input.png
+++ /dev/null
Binary files differ
diff --git a/documentation/concepts-manual/figures/package-feeds.png b/documentation/concepts-manual/figures/package-feeds.png
deleted file mode 100644
index 37c9c32506f..00000000000
--- a/documentation/concepts-manual/figures/package-feeds.png
+++ /dev/null
Binary files differ
diff --git a/documentation/concepts-manual/figures/patching.png b/documentation/concepts-manual/figures/patching.png
deleted file mode 100644
index 8ecd0185028..00000000000
--- a/documentation/concepts-manual/figures/patching.png
+++ /dev/null
Binary files differ
diff --git a/documentation/concepts-manual/figures/sdk-generation.png b/documentation/concepts-manual/figures/sdk-generation.png
deleted file mode 100755
index adbe1f4acfb..00000000000
--- a/documentation/concepts-manual/figures/sdk-generation.png
+++ /dev/null
Binary files differ
diff --git a/documentation/concepts-manual/figures/sdk.png b/documentation/concepts-manual/figures/sdk.png
deleted file mode 100644
index 5c36b7548bc..00000000000
--- a/documentation/concepts-manual/figures/sdk.png
+++ /dev/null
Binary files differ
diff --git a/documentation/concepts-manual/figures/source-fetching.png b/documentation/concepts-manual/figures/source-fetching.png
deleted file mode 100644
index 26aefb50c2d..00000000000
--- a/documentation/concepts-manual/figures/source-fetching.png
+++ /dev/null
Binary files differ
diff --git a/documentation/concepts-manual/figures/source-input.png b/documentation/concepts-manual/figures/source-input.png
deleted file mode 100644
index f7515058ef4..00000000000
--- a/documentation/concepts-manual/figures/source-input.png
+++ /dev/null
Binary files differ
diff --git a/documentation/concepts-manual/figures/user-configuration.png b/documentation/concepts-manual/figures/user-configuration.png
deleted file mode 100644
index c298401fc34..00000000000
--- a/documentation/concepts-manual/figures/user-configuration.png
+++ /dev/null
Binary files differ
diff --git a/documentation/concepts-manual/figures/yocto-environment-ref.png b/documentation/concepts-manual/figures/yocto-environment-ref.png
deleted file mode 100644
index 650c6c80307..00000000000
--- a/documentation/concepts-manual/figures/yocto-environment-ref.png
+++ /dev/null
Binary files differ
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml
index 11a7065c4e3..9745c1308b4 100644
--- a/documentation/dev-manual/dev-manual-common-tasks.xml
+++ b/documentation/dev-manual/dev-manual-common-tasks.xml
@@ -24,8 +24,8 @@
each other.
For introductory information on the Yocto Project Layer Model,
see the
- "<ulink url='&YOCTO_DOCS_GS_URL;#the-yocto-project-layer-model'>The Yocto Project Layer Model</ulink>"
- section in the Getting Started With Yocto Project Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#the-yocto-project-layer-model'>The Yocto Project Layer Model</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
<section id='creating-your-own-layer'>
@@ -56,7 +56,7 @@
has not already created a layer containing the Metadata
you need.
You can see the
- <ulink url='http://layers.openembedded.org/layerindex/layers/'><filename>OpenEmbedded Metadata Index</filename></ulink>
+ <ulink url='http://layers.openembedded.org/layerindex/layers/'>OpenEmbedded Metadata Index</ulink>
for a list of layers from the OpenEmbedded community
that can be used in the Yocto Project.
You could find a layer that is identical or close to
@@ -65,8 +65,15 @@
<listitem><para>
<emphasis>Create a Directory:</emphasis>
Create the directory for your layer.
- While not strictly required, prepend the name of the
- directory with the string "meta-".
+ When you create the layer, be sure to create the
+ directory in an area not associated with the
+ Yocto Project
+ <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
+ (e.g. the cloned <filename>poky</filename> repository).
+ </para>
+
+ <para>While not strictly required, prepend the name of
+ the directory with the string "meta-".
For example:
<literallayout class='monospaced'>
meta-mylayer
@@ -86,24 +93,24 @@
the "meta-" string are appended
to several variables used in the configuration.
</para></listitem>
- <listitem><para>
- <emphasis>Create a Layer Configuration
- File:</emphasis>
- Inside your new layer folder, you need to create a
- <filename>conf/layer.conf</filename> file.
- It is easiest to take an existing layer configuration
- file and copy that to your layer's
- <filename>conf</filename> directory and then modify the
- file as needed.</para>
-
- <para>The
- <filename>meta-yocto-bsp/conf/layer.conf</filename> file
- in the Yocto Project
- <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta-yocto-bsp/conf'>Source Repositories</ulink>
- demonstrates the required syntax.
- For your layer, you need to replace "yoctobsp" with the
- root name of your layer:
- <literallayout class='monospaced'>
+ <listitem><para id='dev-layer-config-file-description'>
+ <emphasis>Create a Layer Configuration File:</emphasis>
+ Inside your new layer folder, you need to create a
+ <filename>conf/layer.conf</filename> file.
+ It is easiest to take an existing layer configuration
+ file and copy that to your layer's
+ <filename>conf</filename> directory and then modify the
+ file as needed.</para>
+
+ <para>The
+ <filename>meta-yocto-bsp/conf/layer.conf</filename> file
+ in the Yocto Project
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta-yocto-bsp/conf'>Source Repositories</ulink>
+ demonstrates the required syntax.
+ For your layer, you need to replace "yoctobsp" with
+ a unique identifier for your layer (e.g. "machinexyz"
+ for a layer named "meta-machinexyz"):
+ <literallayout class='monospaced'>
# We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"
@@ -116,87 +123,76 @@
BBFILE_PRIORITY_yoctobsp = "5"
LAYERVERSION_yoctobsp = "4"
LAYERSERIES_COMPAT_yoctobsp = "&DISTRO_NAME_NO_CAP;"
- </literallayout></para>
-
- <para>Here is an explanation of the example:
+ </literallayout>
+ Following is an explanation of the layer configuration
+ file:
<itemizedlist>
<listitem><para>
- The configuration and classes directory is
- appended to
- <ulink url='&YOCTO_DOCS_REF_URL;#var-BBPATH'><filename>BBPATH</filename></ulink>.
- <note>
- All non-distro layers are expected to
- append the layer directory to
- <filename>BBPATH</filename>.
- On the other hand, distro layers, such as
- <filename>meta-poky</filename>, can choose
- to enforce their own precedence over
- <filename>BBPATH</filename>.
- For an example of that syntax, see the
- <filename>meta-poky/conf/layer.conf</filename>
- file for in the
- <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta-poky/conf'>Source Repositories</ulink>.
- </note>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-BBPATH'><filename>BBPATH</filename></ulink>:
+ Adds the layer's root directory to BitBake's
+ search path.
+ Through the use of the
+ <filename>BBPATH</filename> variable, BitBake
+ locates class files
+ (<filename>.bbclass</filename>),
+ configuration files, and files that are
+ included with <filename>include</filename> and
+ <filename>require</filename> statements.
+ For these cases, BitBake uses the first file
+ that matches the name found in
+ <filename>BBPATH</filename>.
+ This is similar to the way the
+ <filename>PATH</filename> variable is used for
+ binaries.
+ It is recommended, therefore, that you use
+ unique class and configuration filenames in
+ your custom layer.
</para></listitem>
<listitem><para>
- The recipes for the layers are appended to
- <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILES'>BBFILES</ulink></filename>.
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILES'><filename>BBFILES</filename></ulink>:
+ Defines the location for all recipes in the
+ layer.
</para></listitem>
<listitem><para>
- The
- <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILE_COLLECTIONS'>BBFILE_COLLECTIONS</ulink></filename>
- variable is appended with the layer's root name,
- which is "yoctobsp" in this example.
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILE_COLLECTIONS'><filename>BBFILE_COLLECTIONS</filename></ulink>:
+ Establishes the current layer through a
+ unique identifier that is used throughout the
+ OpenEmbedded build system to refer to the layer.
+ In this example, the identifier "yoctobsp" is
+ the representation for the container layer
+ named "meta-yocto-bsp".
</para></listitem>
<listitem><para>
- The
- <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILE_PATTERN'>BBFILE_PATTERN</ulink></filename>
- variable is set to a regular expression and is
- used to match files from
- <filename>BBFILES</filename> into a particular
- layer.
- In this case,
- <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-LAYERDIR'>LAYERDIR</ulink></filename>
- is used to make
- <filename>BBFILE_PATTERN</filename> match
- within the layer's path.
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILE_PATTERN'><filename>BBFILE_PATTERN</filename></ulink>:
+ Expands immediately during parsing to
+ provide the directory of the layer.
</para></listitem>
<listitem><para>
- The
- <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILE_PRIORITY'>BBFILE_PRIORITY</ulink></filename>
- variable assigns a priority to the layer.
- Applying priorities is useful in situations
- where the same recipe might appear in multiple
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILE_PRIORITY'><filename>BBFILE_PRIORITY</filename></ulink>:
+ Establishes a priority to use for
+ recipes in the layer when the OpenEmbedded build
+ finds recipes of the same name in different
layers.
- A priority allows you to choose the layer
- that takes precedence.
</para></listitem>
<listitem><para>
- The
- <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-LAYERVERSION'>LAYERVERSION</ulink></filename>
- variable optionally specifies the version of a
- layer as a single number.
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-LAYERVERSION'><filename>LAYERVERSION</filename></ulink>:
+ Establishes a version number for the layer.
+ You can use this version number to specify this
+ exact version of the layer as a dependency when
+ using the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-LAYERDEPENDS'><filename>LAYERDEPENDS</filename></ulink>
+ variable.
</para></listitem>
<listitem><para>
- The
- <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-LAYERDIR'>LAYERDIR</ulink></filename>
- variable expands to the directory of the
- current layer
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-LAYERSERIES_COMPAT'><filename>LAYERSERIES_COMPAT</filename></ulink>:
+ Lists the
+ <ulink url='&YOCTO_WIKI_URL;/wiki/Releases'>Yocto Project</ulink>
+ releases for which the current version is
+ compatible.
+ This variable is a good way to indicate how
+ up-to-date your particular layer is.
</para></listitem>
- </itemizedlist></para>
-
- <para>Through the use of the <filename>BBPATH</filename>
- variable, BitBake locates class files
- (<filename>.bbclass</filename>),
- configuration files, and files that are included
- with <filename>include</filename> and
- <filename>require</filename> statements.
- For these cases, BitBake uses the first file that
- matches the name found in <filename>BBPATH</filename>.
- This is similar to the way the <filename>PATH</filename>
- variable is used for binaries.
- It is recommended, therefore, that you use unique
- class and configuration filenames in your custom layer.
+ </itemizedlist>
</para></listitem>
<listitem><para>
<emphasis>Add Content:</emphasis>
@@ -471,7 +467,7 @@
acceptable explanation for any questions answered "No".
</para></listitem>
<listitem><para>
- You need to be a Yocto Project Member Organization.
+ Be a Yocto Project Member Organization.
</para></listitem>
</itemizedlist>
</para>
@@ -541,7 +537,7 @@
</para>
<para>
- The script divides tests into three areas: COMMON, BSD,
+ The script divides tests into three areas: COMMON, BSP,
and DISTRO.
For example, given a distribution layer (DISTRO), the
layer must pass both the COMMON and DISTRO related tests.
@@ -625,16 +621,18 @@
The following example shows how to enable a layer named
<filename>meta-mylayer</filename>:
<literallayout class='monospaced'>
- LCONF_VERSION = "6"
+ # POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
+ # changes incompatibly
+ POKY_BBLAYERS_CONF_VERSION = "2"
BBPATH = "${TOPDIR}"
BBFILES ?= ""
BBLAYERS ?= " \
- $HOME/poky/meta \
- $HOME/poky/meta-poky \
- $HOME/poky/meta-yocto-bsp \
- $HOME/poky/meta-mylayer \
+ /home/<replaceable>user</replaceable>/poky/meta \
+ /home/<replaceable>user</replaceable>/poky/meta-poky \
+ /home/<replaceable>user</replaceable>/poky/meta-yocto-bsp \
+ /home/<replaceable>user</replaceable>/poky/meta-mylayer \
"
</literallayout>
</para>
@@ -1076,9 +1074,10 @@
<literallayout class='monospaced'>
$ bitbake-layers create-layer <replaceable>your_layer_name</replaceable>
</literallayout>
- As an example, the following command adds a layer named
- <filename>meta-scottrif</filename>:
+ As an example, the following command creates a layer named
+ <filename>meta-scottrif</filename> in your home directory:
<literallayout class='monospaced'>
+ $ cd /usr/home
$ bitbake-layers create-layer meta-scottrif
NOTE: Starting bitbake server...
Add your new layer with 'bitbake-layers add-layer meta-scottrif'
@@ -1272,8 +1271,8 @@
To understand how these features work, the best reference is
<filename>meta/classes/core-image.bbclass</filename>.
This class lists out the available
- <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></ulink>
- of which most map to package groups while some, such as
+ <filename>IMAGE_FEATURES</filename> of which most map to
+ package groups while some, such as
<filename>debug-tweaks</filename> and
<filename>read-only-rootfs</filename>, resolve as general
configuration settings.
@@ -1693,7 +1692,7 @@
The Yocto Project and OpenEmbedded communities maintain many
recipes that might be candidates for what you are doing.
You can find a good central index of these recipes in the
- <ulink url='http://layers.openembedded.org'>OpenEmbedded metadata index</ulink>.
+ <ulink url='http://layers.openembedded.org'>OpenEmbedded Layer Index</ulink>.
</para>
<para>
@@ -1858,8 +1857,8 @@
<para>
You can find more information about the build process in
- "<ulink url='&YOCTO_DOCS_GS_URL;#overview-development-environment'>The Yocto Project Development Environment</ulink>"
- chapter of the Getting Started With Yocto Project Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#overview-development-environment'>The Yocto Project Development Environment</ulink>"
+ chapter of the Yocto Project Overview and Concepts Manual.
</para>
</section>
@@ -1875,8 +1874,8 @@
Your recipe must have a <filename>SRC_URI</filename> variable
that points to where the source is located.
For a graphical representation of source locations, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#sources-dev-environment'>Sources</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#sources-dev-environment'>Sources</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
<para>
@@ -2188,8 +2187,9 @@
containing the current checksum.
For more explanation and examples of how to set the
<filename>LIC_FILES_CHKSUM</filename> variable, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#usingpoky-configuring-LIC_FILES_CHKSUM'>Tracking License Changes</ulink>"
- section in the Yocto Project Concepts Manual.</para>
+ "<link link='usingpoky-configuring-LIC_FILES_CHKSUM'>Tracking License Changes</link>"
+ section.</para>
+
<para>To determine the correct checksum string, you
can list the appropriate files in the
<filename>LIC_FILES_CHKSUM</filename> variable with
@@ -2335,8 +2335,9 @@
automatically add a runtime dependency to "mypackage" on
"example").
See the
- "<ulink url='&YOCTO_DOCS_CM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
- in the Yocto Project Concepts Manual for further details.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
+ section in the Yocto Project Overview and Concepts Manual for
+ further details.
</para>
</section>
@@ -3398,9 +3399,10 @@
The variable
<filename><ulink url='&YOCTO_DOCS_REF_URL;#var-LIC_FILES_CHKSUM'>LIC_FILES_CHKSUM</ulink></filename>
is used to track source license changes as described in the
- "<ulink url='&YOCTO_DOCS_CM_URL;#usingpoky-configuring-LIC_FILES_CHKSUM'>Tracking License Changes</ulink>"
- section in the Yocto Project Concepts Manual.
- You can quickly create Autotool-based recipes in a manner similar to the previous example.
+ "<link linkend='usingpoky-configuring-LIC_FILES_CHKSUM'>Tracking License Changes</link>"
+ section in the Yocto Project Overview and Concepts Manual.
+ You can quickly create Autotool-based recipes in a manner
+ similar to the previous example.
</para>
</section>
@@ -3605,9 +3607,9 @@
allows runtime dependencies between packages
to be added automatically.
See the
- "<ulink url='&YOCTO_DOCS_CM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
- section in the Yocto Project Concepts Manual
- for more information.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
+ section in the Yocto Project Overview and
+ Concepts Manual for more information.
</para></listitem>
</itemizedlist>
</note>
@@ -4262,8 +4264,8 @@
You need to be sure that your development host is
set up to use the Yocto Project.
For information on how to set up your host, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#setting-up-the-development-host-to-use-the-yocto-project'>Setting Up the Development Host to Use the Yocto Project</ulink>"
- section in the Yocto Project Development Tasks Manual.
+ "<link linkend='dev-preparing-the-build-host'>Preparing the Build Host</link>"
+ section.
</para></listitem>
<listitem><para>
<emphasis>Make Sure Git is Configured:</emphasis>
@@ -4944,8 +4946,8 @@
Modifications will also disappear if you use the
<filename>rm_work</filename> feature as described
in the
- "<ulink url='&YOCTO_DOCS_QS_URL;#qs-building-images'>Building Images</ulink>"
- section of the Yocto Project Quick Start.
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-saving-memory-during-a-build'>Conserving Disk Space During Builds</ulink>"
+ section.
</note>
</para></listitem>
<listitem><para>
@@ -5161,103 +5163,1336 @@
</para>
</section>
- <section id='platdev-building-targets-with-multiple-configurations'>
- <title>Building Targets with Multiple Configurations</title>
+ <section id='dev-building'>
+ <title>Building</title>
<para>
- Bitbake also has functionality that allows you to build
- multiple targets at the same time, where each target uses
- a different configuration.
+ This section describes various build procedures.
+ For example, the steps needed for a simple build, a target that
+ uses multiple configurations, building an image for more than
+ one machine, and so forth.
</para>
- <para>
- In order to accomplish this, you setup each of the configurations
- you need to use in parallel by placing the configuration files in
- your current build directory alongside the usual
- <filename>local.conf</filename> file.
- </para>
+ <section id='dev-building-a-simple-image'>
+ <title>Building a Simple Image</title>
- <para>
- Follow these guidelines to create an environment that supports
- multiple configurations:
- <itemizedlist>
- <listitem><para>
- <emphasis>Create Configuration Files</emphasis>:
- You need to create a single configuration file for each
- configuration for which you want to add support.
- These files would contain lines such as the following:
+ <para>
+ In the development environment, you need to build an image
+ whenever you change hardware support, add or change system
+ libraries, or add or change services that have dependencies.
+ Several methods exist that allow you to build an image within
+ the Yocto Project.
+ This section presents the basic steps you need to build a
+ simple image using BitBake from a build host running Linux.
+ <note><title>Notes</title>
+ <itemizedlist>
+ <listitem><para>
+ For information on how to build an image using
+ <ulink url='&YOCTO_DOCS_REF_URL;#toaster-term'>Toaster</ulink>,
+ see the
+ <ulink url='&YOCTO_DOCS_TOAST_URL;'>Toaster User Manual</ulink>.
+ </para></listitem>
+ <listitem><para>
+ For information on how to use
+ <filename>devtool</filename> to build images, see
+ the
+ "<ulink url='&YOCTO_DOCS_SDK_URL;#using-devtool-in-your-sdk-workflow'>Using <filename>devtool</filename> in Your SDK Workflow</ulink>"
+ section in the Yocto Project Application
+ Development and the Extensible Software Development
+ Kit (eSDK) manual.
+ </para></listitem>
+ <listitem><para>
+ For a quick example on how to build an image using
+ the OpenEmbedded build system, see the
+ <ulink url='&YOCTO_DOCS_BRIEF_URL;'>Yocto Project Quick Build</ulink>
+ document.
+ </para></listitem>
+ </itemizedlist>
+ </note>
+ </para>
+
+ <para>
+ The build process creates an entire Linux distribution from
+ source and places it in your
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
+ under <filename>tmp/deploy/images</filename>.
+ For detailed information on the build process using BitBake,
+ see the
+ "<ulink url='&YOCTO_DOCS_OM_URL;#images-dev-environment'>Images</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
+ </para>
+
+ <para>
+ The following figure and list overviews the build process:
+ <imagedata fileref="figures/bitbake-build-flow.png" width="7in" depth="4in" align="center" scalefit="1" />
+ <orderedlist>
+ <listitem><para>
+ <emphasis>Set up Your Host Development System to Support
+ Development Using the Yocto Project</emphasis>:
+ See the
+ "<link linkend='dev-manual-start'>Setting Up to Use the Yocto Project</link>"
+ section for options on how to get a build host ready to
+ use the Yocto Project.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Initialize the Build Environment:</emphasis>
+ Initialize the build environment by sourcing the build
+ environment script (i.e.
+ <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>):
+ <literallayout class='monospaced'>
+ $ source &OE_INIT_FILE; [<replaceable>build_dir</replaceable>]
+ </literallayout></para>
+
+ <para>When you use the initialization script, the
+ OpenEmbedded build system uses
+ <filename>build</filename> as the default Build
+ Directory in your current work directory.
+ You can use a <replaceable>build_dir</replaceable>
+ argument with the script to specify a different build
+ directory.
+ <note><title>Tip</title>
+ A common practice is to use a different Build
+ Directory for different targets.
+ For example, <filename>~/build/x86</filename> for a
+ <filename>qemux86</filename> target, and
+ <filename>~/build/arm</filename> for a
+ <filename>qemuarm</filename> target.
+ </note>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Make Sure Your <filename>local.conf</filename>
+ File is Correct:</emphasis>
+ Ensure the <filename>conf/local.conf</filename>
+ configuration file, which is found in the Build
+ Directory, is set up how you want it.
+ This file defines many aspects of the build environment
+ including the target machine architecture through the
+ <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'>MACHINE</ulink></filename> variable,
+ the packaging format used during the build
+ (<ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></ulink>),
+ and a centralized tarball download directory through the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-DL_DIR'><filename>DL_DIR</filename></ulink> variable.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Build the Image:</emphasis>
+ Build the image using the <filename>bitbake</filename>
+ command:
+ <literallayout class='monospaced'>
+ $ bitbake <replaceable>target</replaceable>
+ </literallayout>
+ <note>
+ For information on BitBake, see the
+ <ulink url='&YOCTO_DOCS_BB_URL;'>BitBake User Manual</ulink>.
+ </note>
+ The <replaceable>target</replaceable> is the name of the
+ recipe you want to build.
+ Common targets are the images in
+ <filename>meta/recipes-core/images</filename>,
+ <filename>meta/recipes-sato/images</filename>, and so
+ forth all found in the
+ <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>.
+ Or, the target can be the name of a recipe for a
+ specific piece of software such as BusyBox.
+ For more details about the images the OpenEmbedded build
+ system supports, see the
+ "<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>"
+ chapter in the Yocto Project Reference Manual.</para>
+
+ <para>As an example, the following command builds the
+ <filename>core-image-minimal</filename> image:
+ <literallayout class='monospaced'>
+ $ bitbake core-image-minimal
+ </literallayout>
+ Once an image has been built, it often needs to be
+ installed.
+ The images and kernels built by the OpenEmbedded
+ build system are placed in the Build Directory in
+ <filename class="directory">tmp/deploy/images</filename>.
+ For information on how to run pre-built images such as
+ <filename>qemux86</filename> and <filename>qemuarm</filename>,
+ see the
+ <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
+ manual.
+ For information about how to install these images,
+ see the documentation for your particular board or
+ machine.
+ </para></listitem>
+ </orderedlist>
+ </para>
+ </section>
+
+ <section id='dev-building-images-for-multiple-targets-using-multiple-configurations'>
+ <title>Building Images for Multiple Targets Using Multiple Configurations</title>
+
+ <para>
+ You can use a single <filename>bitbake</filename> command
+ to build multiple images or packages for different targets
+ where each image or package requires a different configuration
+ (multiple configuration builds).
+ The builds, in this scenario, are sometimes referred to as
+ "multiconfigs", and this section uses that term throughout.
+ </para>
+
+ <para>
+ This section describes how to set up for multiple
+ configuration builds and how to account for cross-build
+ dependencies between the multiconfigs.
+ </para>
+
+ <section id='dev-setting-up-and-running-a-multiple-configuration-build'>
+ <title>Setting Up and Running a Multiple Configuration Build</title>
+
+ <para>
+ To accomplish a multiple configuration build, you must
+ define each target's configuration separately using
+ a parallel configuration file in the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>,
+ and you must follow a required file hierarchy.
+ Additionally, you must enable the multiple configuration
+ builds in your <filename>local.conf</filename> file.
+ </para>
+
+ <para>
+ Follow these steps to set up and execute multiple
+ configuration builds:
+ <itemizedlist>
+ <listitem><para>
+ <emphasis>Create Separate Configuration Files</emphasis>:
+ You need to create a single configuration file for
+ each build target (each multiconfig).
+ Minimally, each configuration file must define the
+ machine and the temporary directory BitBake uses
+ for the build.
+ Suggested practice dictates that you do not
+ overlap the temporary directories
+ used during the builds.
+ However, it is possible that you can share the
+ temporary directory
+ (<ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>).
+ For example, consider a scenario with two
+ different multiconfigs for the same
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>: "qemux86" built for
+ two distributions such as "poky" and "poky-lsb".
+ In this case, you might want to use the same
+ <filename>TMPDIR</filename>.</para>
+
+ <para>Here is an example showing the minimal
+ statements needed in a configuration file for
+ a "qemux86" target whose temporary build directory
+ is <filename>tmpmultix86</filename>:
+ <literallayout class='monospaced'>
+ MACHINE="qemux86"
+ TMPDIR="${TOPDIR}/tmpmultix86"
+ </literallayout></para>
+
+ <para>The location for these multiconfig
+ configuration files is specific.
+ They must reside in the current build directory in
+ a sub-directory of <filename>conf</filename> named
+ <filename>multiconfig</filename>.
+ Following is an example that defines two
+ configuration files for the "x86" and "arm"
+ multiconfigs:
+ <imagedata fileref="figures/multiconfig_files.png" align="center" width="4in" depth="3in" />
+ </para>
+
+ <para>The reason for this required file hierarchy
+ is because the <filename>BBPATH</filename> variable
+ is not constructed until the layers are parsed.
+ Consequently, using the configuration file as a
+ pre-configuration file is not possible unless it is
+ located in the current working directory.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Add the BitBake Multi-configuration Variable to the Local Configuration File</emphasis>:
+ Use the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-BBMULTICONFIG'><filename>BBMULTICONFIG</filename></ulink>
+ variable in your
+ <filename>conf/local.conf</filename> configuration
+ file to specify each multiconfig.
+ Continuing with the example from the previous
+ figure, the <filename>BBMULTICONFIG</filename>
+ variable needs to enable two multiconfigs: "x86"
+ and "arm" by specifying each configuration file:
+ <literallayout class='monospaced'>
+ BBMULTICONFIG = "x86 arm"
+ </literallayout>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Launch BitBake</emphasis>:
+ Use the following BitBake command form to launch the
+ multiple configuration build:
+ <literallayout class='monospaced'>
+ $ bitbake [multiconfig:<replaceable>multiconfigname</replaceable>:]<replaceable>target</replaceable> [[[multiconfig:<replaceable>multiconfigname</replaceable>:]<replaceable>target</replaceable>] ... ]
+ </literallayout>
+ For the example in this section, the following
+ command applies:
+ <literallayout class='monospaced'>
+ $ bitbake multiconfig:x86:core-image-minimal multiconfig:arm:core-image-sato
+ </literallayout>
+ The previous BitBake command builds a
+ <filename>core-image-minimal</filename> image that
+ is configured through the
+ <filename>x86.conf</filename> configuration file
+ and builds a <filename>core-image-sato</filename>
+ image that is configured through the
+ <filename>arm.conf</filename> configuration file.
+ </para></listitem>
+ </itemizedlist>
+ <note>
+ Support for multiple configuration builds in the
+ Yocto Project &DISTRO; (&DISTRO_NAME;) Release does
+ not include Shared State (sstate) optimizations.
+ Consequently, if a build uses the same object twice
+ in, for example, two different
+ <filename>TMPDIR</filename> directories, the build
+ either loads from an existing sstate cache for that
+ build at the start or builds the object fresh.
+ </note>
+ </para>
+ </section>
+
+ <section id='dev-enabling-multiple-configuration-build-dependencies'>
+ <title>Enabling Multiple Configuration Build Dependencies</title>
+
+ <para>
+ Sometimes dependencies can exist between targets
+ (multiconfigs) in a multiple configuration build.
+ For example, suppose that in order to build a
+ <filename>core-image-sato</filename> image for an "x86"
+ multiconfig, the root filesystem of an "arm"
+ multiconfig must exist.
+ This dependency is essentially that the
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-image'><filename>do_image</filename></ulink>
+ task in the <filename>core-image-sato</filename> recipe
+ depends on the completion of the
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-rootfs'><filename>do_rootfs</filename></ulink>
+ task of the <filename>core-image-minimal</filename>
+ recipe.
+ </para>
+
+ <para>
+ To enable dependencies in a multiple configuration
+ build, you must declare the dependencies in the recipe
+ using the following statement form:
+ <literallayout class='monospaced'>
+ <replaceable>task_or_package</replaceable>[mcdepends] = "multiconfig:<replaceable>from_multiconfig</replaceable>:<replaceable>to_multiconfig</replaceable>:<replaceable>recipe_name</replaceable>:<replaceable>task_on_which_to_depend</replaceable>"
+ </literallayout>
+ To better show how to use this statement, consider the
+ example scenario from the first paragraph of this section.
+ The following statement needs to be added to the recipe
+ that builds the <filename>core-image-sato</filename>
+ image:
<literallayout class='monospaced'>
- MACHINE = "A"
+ do_image[mcdepends] = "multiconfig:x86:arm:core-image-minimal:do_rootfs"
</literallayout>
- The files would contain any other variables that can
- be set and built in the same directory.
+ In this example, the
+ <replaceable>from_multiconfig</replaceable> is "x86".
+ The <replaceable>to_multiconfig</replaceable> is "arm".
+ The task on which the <filename>do_image</filename> task
+ in the recipe depends is the <filename>do_rootfs</filename>
+ task from the <filename>core-image-minimal</filename>
+ recipe associated with the "arm" multiconfig.
+ </para>
+
+ <para>
+ Once you set up this dependency, you can build the
+ "x86" multiconfig using a BitBake command as follows:
+ <literallayout class='monospaced'>
+ $ bitbake multiconfig:x86:core-image-sato
+ </literallayout>
+ This command executes all the tasks needed to create
+ the <filename>core-image-sato</filename> image for the
+ "x86" multiconfig.
+ Because of the dependency, BitBake also executes through
+ the <filename>do_rootfs</filename> task for the "arm"
+ multiconfig build.
+ </para>
+
+ <para>
+ Having a recipe depend on the root filesystem of another
+ build might not seem that useful.
+ Consider this change to the statement in the
+ <filename>core-image-sato</filename> recipe:
+ <literallayout class='monospaced'>
+ do_image[mcdepends] = "multiconfig:x86:arm:core-image-minimal:do_image"
+ </literallayout>
+ In this case, BitBake must create the
+ <filename>core-image-minimal</filename> image for the
+ "arm" build since the "x86" build depends on it.
+ </para>
+
+ <para>
+ Because "x86" and "arm" are enabled for multiple
+ configuration builds and have separate configuration
+ files, BitBake places the artifacts for each build in the
+ respective temporary build directories (i.e.
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>).
+ </para>
+ </section>
+ </section>
+
+ <section id='building-an-initramfs-image'>
+ <title>Building an Initial RAM Filesystem (initramfs) Image</title>
+
+ <para>
+ An initial RAM filesystem (initramfs) image provides a temporary
+ root filesystem used for early system initialization (e.g.
+ loading of modules needed to locate and mount the "real" root
+ filesystem).
+ <note>
+ The initramfs image is the successor of initial RAM disk
+ (initrd).
+ It is a "copy in and out" (cpio) archive of the initial
+ filesystem that gets loaded into memory during the Linux
+ startup process.
+ Because Linux uses the contents of the archive during
+ initialization, the initramfs image needs to contain all of the
+ device drivers and tools needed to mount the final root
+ filesystem.
+ </note>
+ </para>
+
+ <para>
+ Follow these steps to create an initramfs image:
+ <orderedlist>
+ <listitem><para>
+ <emphasis>Create the initramfs Image Recipe:</emphasis>
+ You can reference the
+ <filename>core-image-minimal-initramfs.bb</filename>
+ recipe found in the <filename>meta/recipes-core</filename>
+ directory of the
+ <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
+ as an example from which to work.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Decide if You Need to Bundle the initramfs Image
+ Into the Kernel Image:</emphasis>
+ If you want the initramfs image that is built to be
+ bundled in with the kernel image, set the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-INITRAMFS_IMAGE_BUNDLE'><filename>INITRAMFS_IMAGE_BUNDLE</filename></ulink>
+ variable to "1" in your <filename>local.conf</filename>
+ configuration file and set the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-INITRAMFS_IMAGE'><filename>INITRAMFS_IMAGE</filename></ulink>
+ variable in the recipe that builds the kernel image.
+ <note><title>Tip</title>
+ It is recommended that you do bundle the initramfs
+ image with the kernel image to avoid circular
+ dependencies between the kernel recipe and the
+ initramfs recipe should the initramfs image
+ include kernel modules.
+ </note>
+ Setting the <filename>INITRAMFS_IMAGE_BUNDLE</filename>
+ flag causes the initramfs image to be unpacked
+ into the <filename>${B}/usr/</filename> directory.
+ The unpacked initramfs image is then passed to the kernel's
+ <filename>Makefile</filename> using the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-CONFIG_INITRAMFS_SOURCE'><filename>CONFIG_INITRAMFS_SOURCE</filename></ulink>
+ variable, allowing the initramfs image to be built into
+ the kernel normally.
+ <note>
+ If you choose to not bundle the initramfs image with
+ the kernel image, you are essentially using an
+ <ulink url='https://en.wikipedia.org/wiki/Initrd'>Initial RAM Disk (initrd)</ulink>.
+ Creating an initrd is handled primarily through the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-INITRD_IMAGE'><filename>INITRD_IMAGE</filename></ulink>,
+ <filename>INITRD_LIVE</filename>, and
+ <filename>INITRD_IMAGE_LIVE</filename> variables.
+ For more information, see the
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta/classes/image-live.bbclass'><filename>image-live.bbclass</filename></ulink>
+ file.
+ </note>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Optionally Add Items to the initramfs Image
+ Through the initramfs Image Recipe:</emphasis>
+ If you add items to the initramfs image by way of its
+ recipe, you should use
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_INSTALL'><filename>PACKAGE_INSTALL</filename></ulink>
+ rather than
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></ulink>.
+ <filename>PACKAGE_INSTALL</filename> gives more direct
+ control of what is added to the image as compared to
+ the defaults you might not necessarily want that are
+ set by the
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-image'><filename>image</filename></ulink>
+ or
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-core-image'><filename>core-image</filename></ulink>
+ classes.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Build the Kernel Image and the initramfs
+ Image:</emphasis>
+ Build your kernel image using BitBake.
+ Because the initramfs image recipe is a dependency of the
+ kernel image, the initramfs image is built as well and
+ bundled with the kernel image if you used the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-INITRAMFS_IMAGE_BUNDLE'><filename>INITRAMFS_IMAGE_BUNDLE</filename></ulink>
+ variable described earlier.
+ </para></listitem>
+ </orderedlist>
+ </para>
+ </section>
+
+ <section id='building-a-tiny-system'>
+ <title>Building a Tiny System</title>
+
+ <para>
+ Very small distributions have some significant advantages such
+ as requiring less on-die or in-package memory (cheaper), better
+ performance through efficient cache usage, lower power requirements
+ due to less memory, faster boot times, and reduced development
+ overhead.
+ Some real-world examples where a very small distribution gives
+ you distinct advantages are digital cameras, medical devices,
+ and small headless systems.
+ </para>
+
+ <para>
+ This section presents information that shows you how you can
+ trim your distribution to even smaller sizes than the
+ <filename>poky-tiny</filename> distribution, which is around
+ 5 Mbytes, that can be built out-of-the-box using the Yocto Project.
+ </para>
+
+ <section id='tiny-system-overview'>
+ <title>Overview</title>
+
+ <para>
+ The following list presents the overall steps you need to
+ consider and perform to create distributions with smaller
+ root filesystems, achieve faster boot times, maintain your critical
+ functionality, and avoid initial RAM disks:
+ <itemizedlist>
+ <listitem><para>
+ <link linkend='goals-and-guiding-principles'>Determine your goals and guiding principles.</link>
+ </para></listitem>
+ <listitem><para>
+ <link linkend='understand-what-gives-your-image-size'>Understand what contributes to your image size.</link>
+ </para></listitem>
+ <listitem><para>
+ <link linkend='trim-the-root-filesystem'>Reduce the size of the root filesystem.</link>
+ </para></listitem>
+ <listitem><para>
+ <link linkend='trim-the-kernel'>Reduce the size of the kernel.</link>
+ </para></listitem>
+ <listitem><para>
+ <link linkend='remove-package-management-requirements'>Eliminate packaging requirements.</link>
+ </para></listitem>
+ <listitem><para>
+ <link linkend='look-for-other-ways-to-minimize-size'>Look for other ways to minimize size.</link>
+ </para></listitem>
+ <listitem><para>
+ <link linkend='iterate-on-the-process'>Iterate on the process.</link>
+ </para></listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section id='goals-and-guiding-principles'>
+ <title>Goals and Guiding Principles</title>
+
+ <para>
+ Before you can reach your destination, you need to know
+ where you are going.
+ Here is an example list that you can use as a guide when
+ creating very small distributions:
+ <itemizedlist>
+ <listitem><para>Determine how much space you need
+ (e.g. a kernel that is 1 Mbyte or less and
+ a root filesystem that is 3 Mbytes or less).
+ </para></listitem>
+ <listitem><para>Find the areas that are currently
+ taking 90% of the space and concentrate on reducing
+ those areas.
+ </para></listitem>
+ <listitem><para>Do not create any difficult "hacks"
+ to achieve your goals.</para></listitem>
+ <listitem><para>Leverage the device-specific
+ options.</para></listitem>
+ <listitem><para>Work in a separate layer so that you
+ keep changes isolated.
+ For information on how to create layers, see
+ the "<link linkend='understanding-and-creating-layers'>Understanding and Creating Layers</link>" section.
+ </para></listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section id='understand-what-gives-your-image-size'>
+ <title>Understand What Contributes to Your Image Size</title>
+
+ <para>
+ It is easiest to have something to start with when creating
+ your own distribution.
+ You can use the Yocto Project out-of-the-box to create the
+ <filename>poky-tiny</filename> distribution.
+ Ultimately, you will want to make changes in your own
+ distribution that are likely modeled after
+ <filename>poky-tiny</filename>.
<note>
- You can change the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>
- to not conflict.
- </note></para>
+ To use <filename>poky-tiny</filename> in your build,
+ set the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-DISTRO'><filename>DISTRO</filename></ulink>
+ variable in your
+ <filename>local.conf</filename> file to "poky-tiny"
+ as described in the
+ "<link linkend='creating-your-own-distribution'>Creating Your Own Distribution</link>"
+ section.
+ </note>
+ </para>
- <para>
- Furthermore, the configuration file must be located in the
- current build directory in a directory named
- <filename>multiconfig</filename> under the build's
- <filename>conf</filename> directory where
- <filename>local.conf</filename> resides.
- The reason for this restriction is because the
- <filename>BBPATH</filename> variable is not constructed
- until the layers are parsed.
- Consequently, using the configuration file as a
- pre-configuration file is not possible unless it is
- located in the current working directory.
- </para></listitem>
- <listitem><para>
- <emphasis>Add the BitBake Multi-Config Variable to you Local Configuration File</emphasis>:
- Use the
- <filename>BBMULTICONFIG</filename>
- variable in your <filename>conf/local.conf</filename>
- configuration file to specify each separate configuration.
- For example, the following line tells BitBake it should load
- <filename>conf/multiconfig/configA.conf</filename>,
- <filename>conf/multiconfig/configB.conf</filename>, and
- <filename>conf/multiconfig/configC.conf</filename>.
+ <para>
+ Understanding some memory concepts will help you reduce the
+ system size.
+ Memory consists of static, dynamic, and temporary memory.
+ Static memory is the TEXT (code), DATA (initialized data
+ in the code), and BSS (uninitialized data) sections.
+ Dynamic memory represents memory that is allocated at runtime:
+ stacks, hash tables, and so forth.
+ Temporary memory is recovered after the boot process.
+ This memory consists of memory used for decompressing
+ the kernel and for the <filename>__init__</filename>
+ functions.
+ </para>
+
+ <para>
+ To help you see where you currently are with kernel and root
+ filesystem sizes, you can use two tools found in the
+ <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink> in
+ the <filename>scripts/tiny/</filename> directory:
+ <itemizedlist>
+ <listitem><para><filename>ksize.py</filename>: Reports
+ component sizes for the kernel build objects.
+ </para></listitem>
+ <listitem><para><filename>dirsize.py</filename>: Reports
+ component sizes for the root filesystem.</para></listitem>
+ </itemizedlist>
+ This next tool and command help you organize configuration
+ fragments and view file dependencies in a human-readable form:
+ <itemizedlist>
+ <listitem><para><filename>merge_config.sh</filename>:
+ Helps you manage configuration files and fragments
+ within the kernel.
+ With this tool, you can merge individual configuration
+ fragments together.
+ The tool allows you to make overrides and warns you
+ of any missing configuration options.
+ The tool is ideal for allowing you to iterate on
+ configurations, create minimal configurations, and
+ create configuration files for different machines
+ without having to duplicate your process.</para>
+ <para>The <filename>merge_config.sh</filename> script is
+ part of the Linux Yocto kernel Git repositories
+ (i.e. <filename>linux-yocto-3.14</filename>,
+ <filename>linux-yocto-3.10</filename>,
+ <filename>linux-yocto-3.8</filename>, and so forth)
+ in the
+ <filename>scripts/kconfig</filename> directory.</para>
+ <para>For more information on configuration fragments,
+ see the
+ "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#creating-config-fragments'>Creating Configuration Fragments</ulink>"
+ section in the Yocto Project Linux Kernel Development
+ Manual.
+ </para></listitem>
+ <listitem><para><filename>bitbake -u taskexp -g <replaceable>bitbake_target</replaceable></filename>:
+ Using the BitBake command with these options brings up
+ a Dependency Explorer from which you can view file
+ dependencies.
+ Understanding these dependencies allows you to make
+ informed decisions when cutting out various pieces of the
+ kernel and root filesystem.</para></listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section id='trim-the-root-filesystem'>
+ <title>Trim the Root Filesystem</title>
+
+ <para>
+ The root filesystem is made up of packages for booting,
+ libraries, and applications.
+ To change things, you can configure how the packaging happens,
+ which changes the way you build them.
+ You can also modify the filesystem itself or select a different
+ filesystem.
+ </para>
+
+ <para>
+ First, find out what is hogging your root filesystem by running the
+ <filename>dirsize.py</filename> script from your root directory:
<literallayout class='monospaced'>
- BBMULTICONFIG = "configA configB configC"
+ $ cd <replaceable>root-directory-of-image</replaceable>
+ $ dirsize.py 100000 > dirsize-100k.log
+ $ cat dirsize-100k.log
</literallayout>
- </para></listitem>
- <listitem><para>
- <emphasis>Launch BitBake</emphasis>:
- Use the following BitBake command form to launch the
- build:
+ You can apply a filter to the script to ignore files under
+ a certain size.
+ The previous example filters out any files below 100 Kbytes.
+ The sizes reported by the tool are uncompressed, and thus
+ will be smaller by a relatively constant factor in a
+ compressed root filesystem.
+ When you examine your log file, you can focus on areas of the
+ root filesystem that take up large amounts of memory.
+ </para>
+
+ <para>
+ You need to be sure that what you eliminate does not cripple
+ the functionality you need.
+ One way to see how packages relate to each other is by using
+ the Dependency Explorer UI with the BitBake command:
<literallayout class='monospaced'>
- $ bitbake [multiconfig:<replaceable>multiconfigname</replaceable>:]<replaceable>target</replaceable> [[[multiconfig:<replaceable>multiconfigname</replaceable>:]<replaceable>target</replaceable>] ... ]
+ $ cd <replaceable>image-directory</replaceable>
+ $ bitbake -u taskexp -g <replaceable>image</replaceable>
+ </literallayout>
+ Use the interface to select potential packages you wish to
+ eliminate and see their dependency relationships.
+ </para>
+
+ <para>
+ When deciding how to reduce the size, get rid of packages that
+ result in minimal impact on the feature set.
+ For example, you might not need a VGA display.
+ Or, you might be able to get by with <filename>devtmpfs</filename>
+ and <filename>mdev</filename> instead of
+ <filename>udev</filename>.
+ </para>
+
+ <para>
+ Use your <filename>local.conf</filename> file to make changes.
+ For example, to eliminate <filename>udev</filename> and
+ <filename>glib</filename>, set the following in the
+ local configuration file:
+ <literallayout class='monospaced'>
+ VIRTUAL-RUNTIME_dev_manager = ""
+ </literallayout>
+ </para>
+
+ <para>
+ Finally, you should consider exactly the type of root
+ filesystem you need to meet your needs while also reducing
+ its size.
+ For example, consider <filename>cramfs</filename>,
+ <filename>squashfs</filename>, <filename>ubifs</filename>,
+ <filename>ext2</filename>, or an <filename>initramfs</filename>
+ using <filename>initramfs</filename>.
+ Be aware that <filename>ext3</filename> requires a 1 Mbyte
+ journal.
+ If you are okay with running read-only, you do not need this
+ journal.
+ </para>
+
+ <note>
+ After each round of elimination, you need to rebuild your
+ system and then use the tools to see the effects of your
+ reductions.
+ </note>
+ </section>
+
+ <section id='trim-the-kernel'>
+ <title>Trim the Kernel</title>
+
+ <para>
+ The kernel is built by including policies for hardware-independent
+ aspects.
+ What subsystems do you enable?
+ For what architecture are you building?
+ Which drivers do you build by default?
+ <note>You can modify the kernel source if you want to help
+ with boot time.
+ </note>
+ </para>
+
+ <para>
+ Run the <filename>ksize.py</filename> script from the top-level
+ Linux build directory to get an idea of what is making up
+ the kernel:
+ <literallayout class='monospaced'>
+ $ cd <replaceable>top-level-linux-build-directory</replaceable>
+ $ ksize.py > ksize.log
+ $ cat ksize.log
</literallayout>
- Following is an example that supports building a minimal
- image for configuration A alongside a standard
- <filename>core-image-sato</filename>, which takes its
- configuration from <filename>local.conf</filename>:
+ When you examine the log, you will see how much space is
+ taken up with the built-in <filename>.o</filename> files for
+ drivers, networking, core kernel files, filesystem, sound,
+ and so forth.
+ The sizes reported by the tool are uncompressed, and thus
+ will be smaller by a relatively constant factor in a compressed
+ kernel image.
+ Look to reduce the areas that are large and taking up around
+ the "90% rule."
+ </para>
+
+ <para>
+ To examine, or drill down, into any particular area, use the
+ <filename>-d</filename> option with the script:
<literallayout class='monospaced'>
- $ bitbake multiconfig:configA:core-image-minimal core-image-sato
+ $ ksize.py -d > ksize.log
</literallayout>
+ Using this option breaks out the individual file information
+ for each area of the kernel (e.g. drivers, networking, and
+ so forth).
+ </para>
+
+ <para>
+ Use your log file to see what you can eliminate from the kernel
+ based on features you can let go.
+ For example, if you are not going to need sound, you do not
+ need any drivers that support sound.
+ </para>
+
+ <para>
+ After figuring out what to eliminate, you need to reconfigure
+ the kernel to reflect those changes during the next build.
+ You could run <filename>menuconfig</filename> and make all your
+ changes at once.
+ However, that makes it difficult to see the effects of your
+ individual eliminations and also makes it difficult to replicate
+ the changes for perhaps another target device.
+ A better method is to start with no configurations using
+ <filename>allnoconfig</filename>, create configuration
+ fragments for individual changes, and then manage the
+ fragments into a single configuration file using
+ <filename>merge_config.sh</filename>.
+ The tool makes it easy for you to iterate using the
+ configuration change and build cycle.
+ </para>
+
+ <para>
+ Each time you make configuration changes, you need to rebuild
+ the kernel and check to see what impact your changes had on
+ the overall size.
+ </para>
+ </section>
+
+ <section id='remove-package-management-requirements'>
+ <title>Remove Package Management Requirements</title>
+
+ <para>
+ Packaging requirements add size to the image.
+ One way to reduce the size of the image is to remove all the
+ packaging requirements from the image.
+ This reduction includes both removing the package manager
+ and its unique dependencies as well as removing the package
+ management data itself.
+ </para>
+
+ <para>
+ To eliminate all the packaging requirements for an image,
+ be sure that "package-management" is not part of your
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></ulink>
+ statement for the image.
+ When you remove this feature, you are removing the package
+ manager as well as its dependencies from the root filesystem.
+ </para>
+ </section>
+
+ <section id='look-for-other-ways-to-minimize-size'>
+ <title>Look for Other Ways to Minimize Size</title>
+
+ <para>
+ Depending on your particular circumstances, other areas that you
+ can trim likely exist.
+ The key to finding these areas is through tools and methods
+ described here combined with experimentation and iteration.
+ Here are a couple of areas to experiment with:
+ <itemizedlist>
+ <listitem><para><filename>glibc</filename>:
+ In general, follow this process:
+ <orderedlist>
+ <listitem><para>Remove <filename>glibc</filename>
+ features from
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></ulink>
+ that you think you do not need.</para></listitem>
+ <listitem><para>Build your distribution.
+ </para></listitem>
+ <listitem><para>If the build fails due to missing
+ symbols in a package, determine if you can
+ reconfigure the package to not need those
+ features.
+ For example, change the configuration to not
+ support wide character support as is done for
+ <filename>ncurses</filename>.
+ Or, if support for those characters is needed,
+ determine what <filename>glibc</filename>
+ features provide the support and restore the
+ configuration.
+ </para></listitem>
+ <listitem><para>Rebuild and repeat the process.
+ </para></listitem>
+ </orderedlist></para></listitem>
+ <listitem><para><filename>busybox</filename>:
+ For BusyBox, use a process similar as described for
+ <filename>glibc</filename>.
+ A difference is you will need to boot the resulting
+ system to see if you are able to do everything you
+ expect from the running system.
+ You need to be sure to integrate configuration fragments
+ into Busybox because BusyBox handles its own core
+ features and then allows you to add configuration
+ fragments on top.
+ </para></listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section id='iterate-on-the-process'>
+ <title>Iterate on the Process</title>
+
+ <para>
+ If you have not reached your goals on system size, you need
+ to iterate on the process.
+ The process is the same.
+ Use the tools and see just what is taking up 90% of the root
+ filesystem and the kernel.
+ Decide what you can eliminate without limiting your device
+ beyond what you need.
+ </para>
+
+ <para>
+ Depending on your system, a good place to look might be
+ Busybox, which provides a stripped down
+ version of Unix tools in a single, executable file.
+ You might be able to drop virtual terminal services or perhaps
+ ipv6.
+ </para>
+ </section>
+ </section>
+
+ <section id='building-images-for-more-than-one-machine'>
+ <title>Building Images for More than One Machine</title>
+
+ <para>
+ A common scenario developers face is creating images for several
+ different machines that use the same software environment.
+ In this situation, it is tempting to set the
+ tunings and optimization flags for each build specifically for
+ the targeted hardware (i.e. "maxing out" the tunings).
+ Doing so can considerably add to build times and package feed
+ maintenance collectively for the machines.
+ For example, selecting tunes that are extremely specific to a
+ CPU core used in a system might enable some micro optimizations
+ in GCC for that particular system but would otherwise not gain
+ you much of a performance difference across the other systems
+ as compared to using a more general tuning across all the builds
+ (e.g. setting
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-DEFAULTTUNE'><filename>DEFAULTTUNE</filename></ulink>
+ specifically for each machine's build).
+ Rather than "max out" each build's tunings, you can take steps that
+ cause the OpenEmbedded build system to reuse software across the
+ various machines where it makes sense.
+ </para>
+
+ <para>
+ If build speed and package feed maintenance are considerations,
+ you should consider the points in this section that can help you
+ optimize your tunings to best consider build times and package
+ feed maintenance.
+ <itemizedlist>
+ <listitem><para>
+ <emphasis>Share the Build Directory:</emphasis>
+ If at all possible, share the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>
+ across builds.
+ The Yocto Project supports switching between different
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
+ values in the same <filename>TMPDIR</filename>.
+ This practice is well supported and regularly used by
+ developers when building for multiple machines.
+ When you use the same <filename>TMPDIR</filename> for
+ multiple machine builds, the OpenEmbedded build system can
+ reuse the existing native and often cross-recipes for
+ multiple machines.
+ Thus, build time decreases.
+ <note>
+ If
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-DISTRO'><filename>DISTRO</filename></ulink>
+ settings change or fundamental configuration settings
+ such as the filesystem layout, you need to work with
+ a clean <filename>TMPDIR</filename>.
+ Sharing <filename>TMPDIR</filename> under these
+ circumstances might work but since it is not
+ guaranteed, you should use a clean
+ <filename>TMPDIR</filename>.
+ </note>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Enable the Appropriate Package Architecture:</emphasis>
+ By default, the OpenEmbedded build system enables three
+ levels of package architectures: "all", "tune" or "package",
+ and "machine".
+ Any given recipe usually selects one of these package
+ architectures (types) for its output.
+ Depending for what a given recipe creates packages, making
+ sure you enable the appropriate package architecture can
+ directly impact the build time.</para>
+
+ <para>A recipe that just generates scripts can enable
+ "all" architecture because there are no binaries to build.
+ To specifically enable "all" architecture, be sure your
+ recipe inherits the
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-allarch'><filename>allarch</filename></ulink>
+ class.
+ This class is useful for "all" architectures because it
+ configures many variables so packages can be used across
+ multiple architectures.</para>
+
+ <para>If your recipe needs to generate packages that are
+ machine-specific or when one of the build or runtime
+ dependencies is already machine-architecture dependent,
+ which makes your recipe also machine-architecture dependent,
+ make sure your recipe enables the "machine" package
+ architecture through the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_ARCH'><filename>MACHINE_ARCH</filename></ulink>
+ variable:
+ <literallayout class='monospaced'>
+ PACKAGE_ARCH = "${MACHINE_ARCH}"
+ </literallayout>
+ When you do not specifically enable a package
+ architecture through the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_ARCH'><filename>PACKAGE_ARCH</filename></ulink>,
+ The OpenEmbedded build system defaults to the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-TUNE_PKGARCH'><filename>TUNE_PKGARCH</filename></ulink>
+ setting:
+ <literallayout class='monospaced'>
+ PACKAGE_ARCH = "${TUNE_PKGARCH}"
+ </literallayout>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Choose a Generic Tuning File if Possible:</emphasis>
+ Some tunes are more generic and can run on multiple targets
+ (e.g. an <filename>armv5</filename> set of packages could
+ run on <filename>armv6</filename> and
+ <filename>armv7</filename> processors in most cases).
+ Similarly, <filename>i486</filename> binaries could work
+ on <filename>i586</filename> and higher processors.
+ You should realize, however, that advances on newer
+ processor versions would not be used.</para>
+
+ <para>If you select the same tune for several different
+ machines, the OpenEmbedded build system reuses software
+ previously built, thus speeding up the overall build time.
+ Realize that even though a new sysroot for each machine is
+ generated, the software is not recompiled and only one
+ package feed exists.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Manage Granular Level Packaging:</emphasis>
+ Sometimes cases exist where injecting another level of
+ package architecture beyond the three higher levels noted
+ earlier can be useful.
+ For example, consider how NXP (formerly Freescale) allows
+ for the easy reuse of binary packages in their layer
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/meta-freescale/'><filename>meta-freescale</filename></ulink>.
+ In this example, the
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/meta-freescale/tree/classes/fsl-dynamic-packagearch.bbclass'><filename>fsl-dynamic-packagearch</filename></ulink>
+ class shares GPU packages for i.MX53 boards because
+ all boards share the AMD GPU.
+ The i.MX6-based boards can do the same because all boards
+ share the Vivante GPU.
+ This class inspects the BitBake datastore to identify if
+ the package provides or depends on one of the
+ sub-architecture values.
+ If so, the class sets the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_ARCH'><filename>PACKAGE_ARCH</filename></ulink>
+ value based on the <filename>MACHINE_SUBARCH</filename>
+ value.
+ If the package does not provide or depend on one of the
+ sub-architecture values but it matches a value in the
+ machine-specific filter, it sets
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_ARCH'><filename>MACHINE_ARCH</filename></ulink>.
+ This behavior reduces the number of packages built and
+ saves build time by reusing binaries.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Use Tools to Debug Issues:</emphasis>
+ Sometimes you can run into situations where software is
+ being rebuilt when you think it should not be.
+ For example, the OpenEmbedded build system might not be
+ using shared state between machines when you think it
+ should be.
+ These types of situations are usually due to references
+ to machine-specific variables such as
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>,
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-SERIAL_CONSOLES'><filename>SERIAL_CONSOLES</filename></ulink>,
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-XSERVER'><filename>XSERVER</filename></ulink>,
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_FEATURES'><filename>MACHINE_FEATURES</filename></ulink>,
+ and so forth in code that is supposed to only be
+ tune-specific or when the recipe depends
+ (<ulink url='&YOCTO_DOCS_REF_URL;#var-DEPENDS'><filename>DEPENDS</filename></ulink>,
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-RDEPENDS'><filename>RDEPENDS</filename></ulink>,
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-RRECOMMENDS'><filename>RRECOMMENDS</filename></ulink>,
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-RSUGGESTS'><filename>RSUGGESTS</filename></ulink>,
+ and so forth) on some other recipe that already has
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_ARCH'><filename>PACKAGE_ARCH</filename></ulink>
+ defined as "${MACHINE_ARCH}".
+ <note>
+ Patches to fix any issues identified are most welcome
+ as these issues occasionally do occur.
+ </note></para>
+
+ <para>For such cases, you can use some tools to help you
+ sort out the situation:
+ <itemizedlist>
+ <listitem><para>
+ <emphasis><filename>sstate-diff-machines.sh</filename>:</emphasis>
+ You can find this tool in the
+ <filename>scripts</filename> directory of the
+ Source Repositories.
+ See the comments in the script for information on
+ how to use the tool.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>BitBake's "-S printdiff" Option:</emphasis>
+ Using this option causes BitBake to try to
+ establish the closest signature match it can
+ (e.g. in the shared state cache) and then run
+ <filename>bitbake-diffsigs</filename> over the
+ matches to determine the stamps and delta where
+ these two stamp trees diverge.
+ </para></listitem>
+ </itemizedlist>
+ </para></listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section id="building-software-from-an-external-source">
+ <title>Building Software from an External Source</title>
+
+ <para>
+ By default, the OpenEmbedded build system uses the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
+ when building source code.
+ The build process involves fetching the source files, unpacking
+ them, and then patching them if necessary before the build takes
+ place.
+ </para>
+
+ <para>
+ Situations exist where you might want to build software from source
+ files that are external to and thus outside of the
+ OpenEmbedded build system.
+ For example, suppose you have a project that includes a new BSP with
+ a heavily customized kernel.
+ And, you want to minimize exposing the build system to the
+ development team so that they can focus on their project and
+ maintain everyone's workflow as much as possible.
+ In this case, you want a kernel source directory on the development
+ machine where the development occurs.
+ You want the recipe's
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
+ variable to point to the external directory and use it as is, not
+ copy it.
+ </para>
+
+ <para>
+ To build from software that comes from an external source, all you
+ need to do is inherit the
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-externalsrc'><filename>externalsrc</filename></ulink>
+ class and then set the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTERNALSRC'><filename>EXTERNALSRC</filename></ulink>
+ variable to point to your external source code.
+ Here are the statements to put in your
+ <filename>local.conf</filename> file:
+ <literallayout class='monospaced'>
+ INHERIT += "externalsrc"
+ EXTERNALSRC_pn-<replaceable>myrecipe</replaceable> = "<replaceable>path-to-your-source-tree</replaceable>"
+ </literallayout>
+ </para>
+
+ <para>
+ This next example shows how to accomplish the same thing by setting
+ <filename>EXTERNALSRC</filename> in the recipe itself or in the
+ recipe's append file:
+ <literallayout class='monospaced'>
+ EXTERNALSRC = "<replaceable>path</replaceable>"
+ EXTERNALSRC_BUILD = "<replaceable>path</replaceable>"
+ </literallayout>
+ <note>
+ In order for these settings to take effect, you must globally
+ or locally inherit the
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-externalsrc'><filename>externalsrc</filename></ulink>
+ class.
+ </note>
+ </para>
+
+ <para>
+ By default, <filename>externalsrc.bbclass</filename> builds
+ the source code in a directory separate from the external source
+ directory as specified by
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTERNALSRC'><filename>EXTERNALSRC</filename></ulink>.
+ If you need to have the source built in the same directory in
+ which it resides, or some other nominated directory, you can set
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTERNALSRC_BUILD'><filename>EXTERNALSRC_BUILD</filename></ulink>
+ to point to that directory:
+ <literallayout class='monospaced'>
+ EXTERNALSRC_BUILD_pn-<replaceable>myrecipe</replaceable> = "<replaceable>path-to-your-source-tree</replaceable>"
+ </literallayout>
+ </para>
+ </section>
+ </section>
+
+
+
+ <section id='speeding-up-a-build'>
+ <title>Speeding Up a Build</title>
+
+ <para>
+ Build time can be an issue.
+ By default, the build system uses simple controls to try and maximize
+ build efficiency.
+ In general, the default settings for all the following variables
+ result in the most efficient build times when dealing with single
+ socket systems (i.e. a single CPU).
+ If you have multiple CPUs, you might try increasing the default
+ values to gain more speed.
+ See the descriptions in the glossary for each variable for more
+ information:
+ <itemizedlist>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-BB_NUMBER_THREADS'><filename>BB_NUMBER_THREADS</filename>:</ulink>
+ The maximum number of threads BitBake simultaneously executes.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_BB_URL;#var-BB_NUMBER_PARSE_THREADS'><filename>BB_NUMBER_PARSE_THREADS</filename>:</ulink>
+ The number of threads BitBake uses during parsing.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename>:</ulink>
+ Extra options passed to the <filename>make</filename> command
+ during the
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-compile'><filename>do_compile</filename></ulink>
+ task in order to specify parallel compilation on the
+ local build host.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-PARALLEL_MAKEINST'><filename>PARALLEL_MAKEINST</filename>:</ulink>
+ Extra options passed to the <filename>make</filename> command
+ during the
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-install'><filename>do_install</filename></ulink>
+ task in order to specify parallel installation on the
+ local build host.
</para></listitem>
</itemizedlist>
+ As mentioned, these variables all scale to the number of processor
+ cores available on the build system.
+ For single socket systems, this auto-scaling ensures that the build
+ system fundamentally takes advantage of potential parallel operations
+ during the build based on the build machine's capabilities.
</para>
<para>
- Support for multiple configurations in this current release of
- the Yocto Project (&DISTRO_NAME; &DISTRO;) has some known issues:
+ Following are additional factors that can affect build speed:
<itemizedlist>
<listitem><para>
- No inter-multi-configuration dependencies exist.
+ File system type:
+ The file system type that the build is being performed on can
+ also influence performance.
+ Using <filename>ext4</filename> is recommended as compared
+ to <filename>ext2</filename> and <filename>ext3</filename>
+ due to <filename>ext4</filename> improved features
+ such as extents.
</para></listitem>
<listitem><para>
- Shared State (sstate) optimizations do not exist.
- Consequently, if the build uses the same object twice
- in, for example, two different
- <filename>TMPDIR</filename> directories, the build
- will either load from an existing sstate cache at the
- start or build the object twice.
+ Disabling the updating of access time using
+ <filename>noatime</filename>:
+ The <filename>noatime</filename> mount option prevents the
+ build system from updating file and directory access times.
+ </para></listitem>
+ <listitem><para>
+ Setting a longer commit:
+ Using the "commit=" mount option increases the interval
+ in seconds between disk cache writes.
+ Changing this interval from the five second default to
+ something longer increases the risk of data loss but decreases
+ the need to write to the disk, thus increasing the build
+ performance.
+ </para></listitem>
+ <listitem><para>
+ Choosing the packaging backend:
+ Of the available packaging backends, IPK is the fastest.
+ Additionally, selecting a singular packaging backend also
+ helps.
+ </para></listitem>
+ <listitem><para>
+ Using <filename>tmpfs</filename> for
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>
+ as a temporary file system:
+ While this can help speed up the build, the benefits are
+ limited due to the compiler using
+ <filename>-pipe</filename>.
+ The build system goes to some lengths to avoid
+ <filename>sync()</filename> calls into the
+ file system on the principle that if there was a significant
+ failure, the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
+ contents could easily be rebuilt.
+ </para></listitem>
+ <listitem><para>
+ Inheriting the
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-rm-work'><filename>rm_work</filename></ulink>
+ class:
+ Inheriting this class has shown to speed up builds due to
+ significantly lower amounts of data stored in the data
+ cache as well as on disk.
+ Inheriting this class also makes cleanup of
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>
+ faster, at the expense of being easily able to dive into the
+ source code.
+ File system maintainers have recommended that the fastest way
+ to clean up large numbers of files is to reformat partitions
+ rather than delete files due to the linear nature of
+ partitions.
+ This, of course, assumes you structure the disk partitions and
+ file systems in a way that this is practical.
</para></listitem>
</itemizedlist>
+ Aside from the previous list, you should keep some trade offs in
+ mind that can help you speed up the build:
+ <itemizedlist>
+ <listitem><para>
+ Remove items from
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></ulink>
+ that you might not need.
+ </para></listitem>
+ <listitem><para>
+ Exclude debug symbols and other debug information:
+ If you do not need these symbols and other debug information,
+ disabling the <filename>*-dbg</filename> package generation
+ can speed up the build.
+ You can disable this generation by setting the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-INHIBIT_PACKAGE_DEBUG_SPLIT'><filename>INHIBIT_PACKAGE_DEBUG_SPLIT</filename></ulink>
+ variable to "1".
+ </para></listitem>
+ <listitem><para>
+ Disable static library generation for recipes derived from
+ <filename>autoconf</filename> or <filename>libtool</filename>:
+ Following is an example showing how to disable static
+ libraries and still provide an override to handle exceptions:
+ <literallayout class='monospaced'>
+ STATICLIBCONF = "--disable-static"
+ STATICLIBCONF_sqlite3-native = ""
+ EXTRA_OECONF += "${STATICLIBCONF}"
+ </literallayout>
+ <note><title>Notes</title>
+ <itemizedlist>
+ <listitem><para>
+ Some recipes need static libraries in order to work
+ correctly (e.g. <filename>pseudo-native</filename>
+ needs <filename>sqlite3-native</filename>).
+ Overrides, as in the previous example, account for
+ these kinds of exceptions.
+ </para></listitem>
+ <listitem><para>
+ Some packages have packaging code that assumes the
+ presence of the static libraries.
+ If so, you might need to exclude them as well.
+ </para></listitem>
+ </itemizedlist>
+ </note>
+ </para></listitem>
+ </itemizedlist>
</para>
</section>
@@ -5929,8 +7164,7 @@
variable.
</para></listitem>
<listitem><para>
- Set the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTERNAL_TOOLCHAIN'><filename>EXTERNAL_TOOLCHAIN</filename></ulink>
+ Set the <filename>EXTERNAL_TOOLCHAIN</filename>
variable in your <filename>local.conf</filename> file
to the location in which you installed the toolchain.
</para></listitem>
@@ -5980,7 +7214,7 @@
system.
<note>
For a kickstart file reference, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#openembedded-kickstart-wks-reference'>OpenEmbedded Kickstart (<filename>.wks</filename>) Reference</ulink>"
+ "<ulink url='&YOCTO_DOCS_REF_URL;#ref-kickstart'>OpenEmbedded Kickstart (<filename>.wks</filename>) Reference</ulink>"
Chapter in the Yocto Project Reference Manual.
</note>
</para>
@@ -6034,7 +7268,7 @@
Wic is a completely independent
standalone utility that initially provides
easier-to-use and more flexible replacements for an
- existing functionality in OE Core's
+ existing functionality in OE-Core's
<ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-image-live'><filename>image-live</filename></ulink>
class and <filename>mkefidisk.sh</filename> script.
The difference between
@@ -6346,7 +7580,7 @@
can use an existing file provided by the Wic installation.
As shipped, kickstart files can be found in the
Yocto Project
- <ulink url='&YOCTO_DOCS_GS_URL;#source-repositories'>Source Repositories</ulink>
+ <ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>
in the following two locations:
<literallayout class='monospaced'>
poky/meta-yocto-bsp/wic
@@ -6615,11 +7849,9 @@
<section id='generate-an-image-using-a-provided-kickstart-file'>
<title>Generate an Image using an Existing Kickstart File</title>
- <para role='writernotes'>
+ <para>
This example runs in Cooked Mode and uses the
<filename>mkefidisk</filename> kickstart file:
- [OUTPUT IS WRONG DUE TO A BUG - ROOTFS_DIR AND BOOTIMG_DIR
- ARE DISPLAYING TEMPORARY FILES THAT WIC CLEANS UP BY DELETING]
<literallayout class='monospaced'>
$ wic create mkefidisk -e core-image-minimal
INFO: Building wic-tools...
@@ -6627,16 +7859,16 @@
.
.
INFO: The new image(s) can be found here:
- ./mkefidisk-201802211426-sda.direct
+ ./mkefidisk-201804191017-sda.direct
The following build artifacts were used to create the image(s):
- ROOTFS_DIR: /home/scottrif/poky/build/tmp.wic.zjs_iw41/rootfs_copy
- BOOTIMG_DIR: /home/scottrif/poky/build/tmp/work/qemux86-poky-linux/core-image-minimal/1.0-r0/recipe-sysroot/usr/share
- KERNEL_DIR: /home/scottrif/poky/build/tmp/deploy/images/qemux86
- NATIVE_SYSROOT: /home/scottrif/poky/build/tmp/work/i586-poky-linux/wic-tools/1.0-r0/recipe-sysroot-native
+ ROOTFS_DIR: /home/stephano/build/master/build/tmp-glibc/work/qemux86-oe-linux/core-image-minimal/1.0-r0/rootfs
+ BOOTIMG_DIR: /home/stephano/build/master/build/tmp-glibc/work/qemux86-oe-linux/core-image-minimal/1.0-r0/recipe-sysroot/usr/share
+ KERNEL_DIR: /home/stephano/build/master/build/tmp-glibc/deploy/images/qemux86
+ NATIVE_SYSROOT: /home/stephano/build/master/build/tmp-glibc/work/i586-oe-linux/wic-tools/1.0-r0/recipe-sysroot-native
INFO: The image(s) were created using OE kickstart file:
- /home/scottrif/poky/scripts/lib/wic/canned-wks/mkefidisk.wks
+ /home/stephano/build/master/openembedded-core/scripts/lib/wic/canned-wks/mkefidisk.wks
</literallayout>
The previous example shows the easiest way to create
an image by running in cooked mode and supplying
@@ -6668,11 +7900,11 @@
<filename>bmaptool</filename> or
<filename>dd</filename>:
<literallayout class='monospaced'>
- $ oe-run-native bmaptool copy mkefidisk-201802211426-sda.direct /dev/sd<replaceable>X</replaceable>
+ $ oe-run-native bmaptool copy mkefidisk-201804191017-sda.direct /dev/sd<replaceable>X</replaceable>
</literallayout>
or
<literallayout class='monospaced'>
- $ sudo dd if=mkefidisk-201802211426-sda.direct of=/dev/sd<replaceable>X</replaceable>
+ $ sudo dd if=mkefidisk-201804191017-sda.direct of=/dev/sd<replaceable>X</replaceable>
</literallayout>
<note>
For more information on how to use the
@@ -6732,8 +7964,8 @@
directory and then by changing the lines that specify
the target disk from which to boot.
<literallayout class='monospaced'>
- $ cp /home/scottrif/poky/scripts/lib/wic/canned-wks/directdisk-gpt.wks \
- /home/scottrif/poky/scripts/lib/wic/canned-wks/directdisksdb-gpt.wks
+ $ cp /home/stephano/poky/scripts/lib/wic/canned-wks/directdisk-gpt.wks \
+ /home/stephano/poky/scripts/lib/wic/canned-wks/directdisksdb-gpt.wks
</literallayout>
Next, the example modifies the
<filename>directdisksdb-gpt.wks</filename> file and
@@ -6769,13 +8001,13 @@
./directdisksdb-gpt-201710090938-sdb.direct
The following build artifacts were used to create the image(s):
- ROOTFS_DIR: /home/scottrif/poky/build/tmp.wic.hk3wl6zn/rootfs_copy
- BOOTIMG_DIR: /home/scottrif/poky/build/tmp/work/qemux86-poky-linux/core-image-minimal/1.0-r0/recipe-sysroot/usr/share
- KERNEL_DIR: /home/scottrif/poky/build/tmp/deploy/images/qemux86
- NATIVE_SYSROOT: /home/scottrif/poky/build/tmp/work/i586-poky-linux/wic-tools/1.0-r0/recipe-sysroot-native
+ ROOTFS_DIR: /home/stephano/build/master/build/tmp-glibc/work/qemux86-oe-linux/core-image-minimal/1.0-r0/rootfs
+ BOOTIMG_DIR: /home/stephano/build/master/build/tmp-glibc/work/qemux86-oe-linux/core-image-minimal/1.0-r0/recipe-sysroot/usr/share
+ KERNEL_DIR: /home/stephano/build/master/build/tmp-glibc/deploy/images/qemux86
+ NATIVE_SYSROOT: /home/stephano/build/master/build/tmp-glibc/work/i586-oe-linux/wic-tools/1.0-r0/recipe-sysroot-native
INFO: The image(s) were created using OE kickstart file:
- /home/scottrif/poky/scripts/lib/wic/canned-wks/directdisksdb-gpt.wks
+ /home/stephano/poky/scripts/lib/wic/canned-wks/directdisksdb-gpt.wks
</literallayout>
Continuing with the example, you can now directly
<filename>dd</filename> the image to a USB stick, or
@@ -6802,25 +8034,25 @@
somewhere other than the default output directory,
which is the current directory:
<literallayout class='monospaced'>
- $ wic create /home/scottrif/my_yocto/test.wks -o /home/scottrif/testwic \
- --rootfs-dir /home/scottrif/poky/build/tmp/work/qemux86-poky-linux/core-image-minimal/1.0-r0/rootfs \
- --bootimg-dir /home/scottrif/poky/build/tmp/work/qemux86-poky-linux/core-image-minimal/1.0-r0/recipe-sysroot/usr/share \
- --kernel-dir /home/scottrif/poky/build/tmp/deploy/images/qemux86 \
- --native-sysroot /home/scottrif/poky/build/tmp/work/i586-poky-linux/wic-tools/1.0-r0/recipe-sysroot-native
+ $ wic create /home/stephano/my_yocto/test.wks -o /home/stephano/testwic \
+ --rootfs-dir /home/stephano/build/master/build/tmp/work/qemux86-poky-linux/core-image-minimal/1.0-r0/rootfs \
+ --bootimg-dir /home/stephano/build/master/build/tmp/work/qemux86-poky-linux/core-image-minimal/1.0-r0/recipe-sysroot/usr/share \
+ --kernel-dir /home/stephano/build/master/build/tmp/deploy/images/qemux86 \
+ --native-sysroot /home/stephano/build/master/build/tmp/work/i586-poky-linux/wic-tools/1.0-r0/recipe-sysroot-native
INFO: Creating image(s)...
INFO: The new image(s) can be found here:
- /home/scottrif/testwic/test-201710091445-sdb.direct
+ /home/stephano/testwic/test-201710091445-sdb.direct
The following build artifacts were used to create the image(s):
- ROOTFS_DIR: /home/scottrif/testwic/tmp.wic.x4wipbmb/rootfs_copy
- BOOTIMG_DIR: /home/scottrif/poky/build/tmp/work/qemux86-poky-linux/core-image-minimal/1.0-r0/recipe-sysroot/usr/share
- KERNEL_DIR: /home/scottrif/poky/build/tmp/deploy/images/qemux86
- NATIVE_SYSROOT: /home/scottrif/poky/build/tmp/work/i586-poky-linux/wic-tools/1.0-r0/recipe-sysroot-native
+ ROOTFS_DIR: /home/stephano/build/master/build/tmp-glibc/work/qemux86-oe-linux/core-image-minimal/1.0-r0/rootfs
+ BOOTIMG_DIR: /home/stephano/build/master/build/tmp-glibc/work/qemux86-oe-linux/core-image-minimal/1.0-r0/recipe-sysroot/usr/share
+ KERNEL_DIR: /home/stephano/build/master/build/tmp-glibc/deploy/images/qemux86
+ NATIVE_SYSROOT: /home/stephano/build/master/build/tmp-glibc/work/i586-oe-linux/wic-tools/1.0-r0/recipe-sysroot-native
INFO: The image(s) were created using OE kickstart file:
- /home/scottrif/my_yocto/test.wks
+ /home/stephano/my_yocto/test.wks
</literallayout>
For this example,
<ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
@@ -6965,145 +8197,6 @@
</section>
</section>
- <section id='building-an-initramfs-image'>
- <title>Building an Initial RAM Filesystem (initramfs) Image</title>
-
- <para>
- An initial RAM filesystem (initramfs) image provides a temporary
- root filesystem used for early system initialization (e.g.
- loading of modules needed to locate and mount the "real" root
- filesystem).
- <note>
- The initramfs image is the successor of initial RAM disk
- (initrd).
- It is a "copy in and out" (cpio) archive of the initial
- filesystem that gets loaded into memory during the Linux
- startup process.
- Because Linux uses the contents of the archive during
- initialization, the initramfs image needs to contain all of the
- device drivers and tools needed to mount the final root
- filesystem.
- </note>
- </para>
-
- <para>
- Follow these steps to create an initramfs image:
- <orderedlist>
- <listitem><para>
- <emphasis>Create the initramfs Image Recipe:</emphasis>
- You can reference the
- <filename>core-image-minimal-initramfs.bb</filename>
- recipe found in the <filename>meta/recipes-core</filename>
- directory of the
- <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
- as an example from which to work.
- </para></listitem>
- <listitem><para>
- <emphasis>Decide if You Need to Bundle the initramfs Image
- Into the Kernel Image:</emphasis>
- If you want the initramfs image that is built to be
- bundled in with the kernel image, set the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-INITRAMFS_IMAGE_BUNDLE'><filename>INITRAMFS_IMAGE_BUNDLE</filename></ulink>
- variable to "1" in your <filename>local.conf</filename>
- configuration file and set the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-INITRAMFS_IMAGE'><filename>INITRAMFS_IMAGE</filename></ulink>
- variable in the recipe that builds the kernel image.
- <note><title>Tip</title>
- It is recommended that you do bundle the initramfs
- image with the kernel image to avoid circular
- dependencies between the kernel recipe and the
- initramfs recipe should the initramfs image
- include kernel modules.
- </note>
- Setting the <filename>INITRAMFS_IMAGE_BUNDLE</filename>
- flag causes the initramfs image to be unpacked
- into the <filename>${B}/usr/</filename> directory.
- The unpacked initramfs image is then passed to the kernel's
- <filename>Makefile</filename> using the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-CONFIG_INITRAMFS_SOURCE'><filename>CONFIG_INITRAMFS_SOURCE</filename></ulink>
- variable, allowing the initramfs image to be built into
- the kernel normally.
- <note>
- If you choose to not bundle the initramfs image with
- the kernel image, you are essentially using an
- <ulink url='https://en.wikipedia.org/wiki/Initrd'>Initial RAM Disk (initrd)</ulink>.
- Creating an initrd is handled primarily through the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-INITRD_IMAGE'><filename>INITRD_IMAGE</filename></ulink>,
- <filename>INITRD_LIVE</filename>, and
- <filename>INITRD_IMAGE_LIVE</filename> variables.
- For more information, see the
- <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta/classes/image-live.bbclass'><filename>image-live.bbclass</filename></ulink>
- file.
- </note>
- </para></listitem>
-<!--
-Some notes from Cal:
-
- A non-bundled initramfs is essentially an initrd, which I am discovering
- to be rather confusingly supported in OE at the moment.
-
- Its primarily handled through INITRD_IMAGE(_LIVE/_VM) and INITRD(_LIVE/_VM)
- variables. INITRD_IMAGE* is the primary image target, which gets added to
- INITRD*, which is a list of cpio filesystems. You can add more cpio
- filesystems to the INITRD variable to add more to the initrd. For
- instance, meta-intel adds intel-microcode via the following:
-
- INITRD_LIVE_prepend = "${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', '${DEPLOY_DIR_IMAGE}/microcode.cpio ', '', d)}"
-
- If 'intel-ucode' is in MACHINE_FEATURES, this resolves to:
-
- INITRD_LIVE_prepend = "${DEPLOY_DIR_IMAGE}/microcode.cpio "
-
- Unfortunately you need the full path, and its up to you to sort out
- dependencies as well. For instance, we have the following:
-
- MACHINE_ESSENTIAL_EXTRA_RDEPENDS_append = "${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', ' intel-microcode', '', d)}"
-
- which resolves to:
-
- MACHINE_ESSENTIAL_EXTRA_RDEPENDS_append = "intel-microcode"
-
- However, the above is only true with the "live" IMAGE_FSTYPE. Wic is
- another beast entirely, with current wic kickstart files not supporting
- initrds, and only partial support in the source plugins. That being said,
- I know the generic bootfs work Ed is working on will help immensely in this
- aspect. He or Saul can provide more details here.
-
- Anyhow, its rather fractured and confusing and could probably use a
- rework honestly. I don't know how feasible it is to document all the
- details and corner cases of this area.
--->
- <listitem><para>
- <emphasis>Optionally Add Items to the initramfs Image
- Through the initramfs Image Recipe:</emphasis>
- If you add items to the initramfs image by way of its
- recipe, you should use
- <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_INSTALL'><filename>PACKAGE_INSTALL</filename></ulink>
- rather than
- <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></ulink>.
- <filename>PACKAGE_INSTALL</filename> gives more direct
- control of what is added to the image as compared to
- the defaults you might not necessarily want that are
- set by the
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-image'><filename>image</filename></ulink>
- or
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-core-image'><filename>core-image</filename></ulink>
- classes.
- </para></listitem>
- <listitem><para>
- <emphasis>Build the Kernel Image and the initramfs
- Image:</emphasis>
- Build your kernel image using BitBake.
- Because the initramfs image recipe is a dependency of the
- kernel image, the initramfs image is built as well and
- bundled with the kernel image if you used the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-INITRAMFS_IMAGE_BUNDLE'><filename>INITRAMFS_IMAGE_BUNDLE</filename></ulink>
- variable described earlier.
- </para></listitem>
- </orderedlist>
- </para>
- </section>
-
<section id='flashing-images-using-bmaptool'>
<title>Flashing Images Using <filename>bmaptool</filename></title>
@@ -7217,7 +8310,7 @@ Some notes from Cal:
by Bruce Schneier
</para></listitem>
<listitem><para><emphasis>
- "<ulink url='http://internetcensus2012.bitbucket.org/paper.html'>Internet Census 2012</ulink>"</emphasis>
+ "<ulink url='http://census2012.sourceforge.net/paper.html'>Internet Census 2012</ulink>"</emphasis>
by Carna Botnet</para></listitem>
<listitem><para><emphasis>
"<ulink url='http://elinux.org/images/6/6f/Security-issues.pdf'>Security Issues for Embedded Devices</ulink>"</emphasis>
@@ -7425,7 +8518,7 @@ Some notes from Cal:
more secure.
You can find these tools in the
<filename>meta-security</filename> layer of the
- <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi'>Yocto Project Source Repositories</ulink>.
+ <ulink url='&YOCTO_GIT_URL;'>Yocto Project Source Repositories</ulink>.
</para>
</section>
</section>
@@ -7673,616 +8766,22 @@ Some notes from Cal:
</para>
</section>
- <section id='building-a-tiny-system'>
- <title>Building a Tiny System</title>
+ <section id='dev-saving-memory-during-a-build'>
+ <title>Conserving Disk Space During Builds</title>
<para>
- Very small distributions have some significant advantages such
- as requiring less on-die or in-package memory (cheaper), better
- performance through efficient cache usage, lower power requirements
- due to less memory, faster boot times, and reduced development
- overhead.
- Some real-world examples where a very small distribution gives
- you distinct advantages are digital cameras, medical devices,
- and small headless systems.
- </para>
-
- <para>
- This section presents information that shows you how you can
- trim your distribution to even smaller sizes than the
- <filename>poky-tiny</filename> distribution, which is around
- 5 Mbytes, that can be built out-of-the-box using the Yocto Project.
- </para>
-
- <section id='tiny-system-overview'>
- <title>Overview</title>
-
- <para>
- The following list presents the overall steps you need to
- consider and perform to create distributions with smaller
- root filesystems, achieve faster boot times, maintain your critical
- functionality, and avoid initial RAM disks:
- <itemizedlist>
- <listitem><para>
- <link linkend='goals-and-guiding-principles'>Determine your goals and guiding principles.</link>
- </para></listitem>
- <listitem><para>
- <link linkend='understand-what-gives-your-image-size'>Understand what contributes to your image size.</link>
- </para></listitem>
- <listitem><para>
- <link linkend='trim-the-root-filesystem'>Reduce the size of the root filesystem.</link>
- </para></listitem>
- <listitem><para>
- <link linkend='trim-the-kernel'>Reduce the size of the kernel.</link>
- </para></listitem>
- <listitem><para>
- <link linkend='remove-package-management-requirements'>Eliminate packaging requirements.</link>
- </para></listitem>
- <listitem><para>
- <link linkend='look-for-other-ways-to-minimize-size'>Look for other ways to minimize size.</link>
- </para></listitem>
- <listitem><para>
- <link linkend='iterate-on-the-process'>Iterate on the process.</link>
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section id='goals-and-guiding-principles'>
- <title>Goals and Guiding Principles</title>
-
- <para>
- Before you can reach your destination, you need to know
- where you are going.
- Here is an example list that you can use as a guide when
- creating very small distributions:
- <itemizedlist>
- <listitem><para>Determine how much space you need
- (e.g. a kernel that is 1 Mbyte or less and
- a root filesystem that is 3 Mbytes or less).
- </para></listitem>
- <listitem><para>Find the areas that are currently
- taking 90% of the space and concentrate on reducing
- those areas.
- </para></listitem>
- <listitem><para>Do not create any difficult "hacks"
- to achieve your goals.</para></listitem>
- <listitem><para>Leverage the device-specific
- options.</para></listitem>
- <listitem><para>Work in a separate layer so that you
- keep changes isolated.
- For information on how to create layers, see
- the "<link linkend='understanding-and-creating-layers'>Understanding and Creating Layers</link>" section.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section id='understand-what-gives-your-image-size'>
- <title>Understand What Contributes to Your Image Size</title>
-
- <para>
- It is easiest to have something to start with when creating
- your own distribution.
- You can use the Yocto Project out-of-the-box to create the
- <filename>poky-tiny</filename> distribution.
- Ultimately, you will want to make changes in your own
- distribution that are likely modeled after
- <filename>poky-tiny</filename>.
- <note>
- To use <filename>poky-tiny</filename> in your build,
- set the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-DISTRO'><filename>DISTRO</filename></ulink>
- variable in your
- <filename>local.conf</filename> file to "poky-tiny"
- as described in the
- "<link linkend='creating-your-own-distribution'>Creating Your Own Distribution</link>"
- section.
- </note>
- </para>
-
- <para>
- Understanding some memory concepts will help you reduce the
- system size.
- Memory consists of static, dynamic, and temporary memory.
- Static memory is the TEXT (code), DATA (initialized data
- in the code), and BSS (uninitialized data) sections.
- Dynamic memory represents memory that is allocated at runtime:
- stacks, hash tables, and so forth.
- Temporary memory is recovered after the boot process.
- This memory consists of memory used for decompressing
- the kernel and for the <filename>__init__</filename>
- functions.
- </para>
-
- <para>
- To help you see where you currently are with kernel and root
- filesystem sizes, you can use two tools found in the
- <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink> in
- the <filename>scripts/tiny/</filename> directory:
- <itemizedlist>
- <listitem><para><filename>ksize.py</filename>: Reports
- component sizes for the kernel build objects.
- </para></listitem>
- <listitem><para><filename>dirsize.py</filename>: Reports
- component sizes for the root filesystem.</para></listitem>
- </itemizedlist>
- This next tool and command help you organize configuration
- fragments and view file dependencies in a human-readable form:
- <itemizedlist>
- <listitem><para><filename>merge_config.sh</filename>:
- Helps you manage configuration files and fragments
- within the kernel.
- With this tool, you can merge individual configuration
- fragments together.
- The tool allows you to make overrides and warns you
- of any missing configuration options.
- The tool is ideal for allowing you to iterate on
- configurations, create minimal configurations, and
- create configuration files for different machines
- without having to duplicate your process.</para>
- <para>The <filename>merge_config.sh</filename> script is
- part of the Linux Yocto kernel Git repositories
- (i.e. <filename>linux-yocto-3.14</filename>,
- <filename>linux-yocto-3.10</filename>,
- <filename>linux-yocto-3.8</filename>, and so forth)
- in the
- <filename>scripts/kconfig</filename> directory.</para>
- <para>For more information on configuration fragments,
- see the
- "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#creating-config-fragments'>Creating Configuration Fragments</ulink>"
- section in the Yocto Project Linux Kernel Development
- Manual.
- </para></listitem>
- <listitem><para><filename>bitbake -u taskexp -g <replaceable>bitbake_target</replaceable></filename>:
- Using the BitBake command with these options brings up
- a Dependency Explorer from which you can view file
- dependencies.
- Understanding these dependencies allows you to make
- informed decisions when cutting out various pieces of the
- kernel and root filesystem.</para></listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section id='trim-the-root-filesystem'>
- <title>Trim the Root Filesystem</title>
-
- <para>
- The root filesystem is made up of packages for booting,
- libraries, and applications.
- To change things, you can configure how the packaging happens,
- which changes the way you build them.
- You can also modify the filesystem itself or select a different
- filesystem.
- </para>
-
- <para>
- First, find out what is hogging your root filesystem by running the
- <filename>dirsize.py</filename> script from your root directory:
- <literallayout class='monospaced'>
- $ cd <replaceable>root-directory-of-image</replaceable>
- $ dirsize.py 100000 > dirsize-100k.log
- $ cat dirsize-100k.log
- </literallayout>
- You can apply a filter to the script to ignore files under
- a certain size.
- The previous example filters out any files below 100 Kbytes.
- The sizes reported by the tool are uncompressed, and thus
- will be smaller by a relatively constant factor in a
- compressed root filesystem.
- When you examine your log file, you can focus on areas of the
- root filesystem that take up large amounts of memory.
- </para>
-
- <para>
- You need to be sure that what you eliminate does not cripple
- the functionality you need.
- One way to see how packages relate to each other is by using
- the Dependency Explorer UI with the BitBake command:
- <literallayout class='monospaced'>
- $ cd <replaceable>image-directory</replaceable>
- $ bitbake -u taskexp -g <replaceable>image</replaceable>
- </literallayout>
- Use the interface to select potential packages you wish to
- eliminate and see their dependency relationships.
- </para>
-
- <para>
- When deciding how to reduce the size, get rid of packages that
- result in minimal impact on the feature set.
- For example, you might not need a VGA display.
- Or, you might be able to get by with <filename>devtmpfs</filename>
- and <filename>mdev</filename> instead of
- <filename>udev</filename>.
- </para>
-
- <para>
- Use your <filename>local.conf</filename> file to make changes.
- For example, to eliminate <filename>udev</filename> and
- <filename>glib</filename>, set the following in the
- local configuration file:
- <literallayout class='monospaced'>
- VIRTUAL-RUNTIME_dev_manager = ""
- </literallayout>
- </para>
-
- <para>
- Finally, you should consider exactly the type of root
- filesystem you need to meet your needs while also reducing
- its size.
- For example, consider <filename>cramfs</filename>,
- <filename>squashfs</filename>, <filename>ubifs</filename>,
- <filename>ext2</filename>, or an <filename>initramfs</filename>
- using <filename>initramfs</filename>.
- Be aware that <filename>ext3</filename> requires a 1 Mbyte
- journal.
- If you are okay with running read-only, you do not need this
- journal.
- </para>
-
- <note>
- After each round of elimination, you need to rebuild your
- system and then use the tools to see the effects of your
- reductions.
- </note>
-
-
- </section>
-
- <section id='trim-the-kernel'>
- <title>Trim the Kernel</title>
-
- <para>
- The kernel is built by including policies for hardware-independent
- aspects.
- What subsystems do you enable?
- For what architecture are you building?
- Which drivers do you build by default?
- <note>You can modify the kernel source if you want to help
- with boot time.
- </note>
- </para>
-
- <para>
- Run the <filename>ksize.py</filename> script from the top-level
- Linux build directory to get an idea of what is making up
- the kernel:
- <literallayout class='monospaced'>
- $ cd <replaceable>top-level-linux-build-directory</replaceable>
- $ ksize.py > ksize.log
- $ cat ksize.log
- </literallayout>
- When you examine the log, you will see how much space is
- taken up with the built-in <filename>.o</filename> files for
- drivers, networking, core kernel files, filesystem, sound,
- and so forth.
- The sizes reported by the tool are uncompressed, and thus
- will be smaller by a relatively constant factor in a compressed
- kernel image.
- Look to reduce the areas that are large and taking up around
- the "90% rule."
- </para>
-
- <para>
- To examine, or drill down, into any particular area, use the
- <filename>-d</filename> option with the script:
- <literallayout class='monospaced'>
- $ ksize.py -d > ksize.log
- </literallayout>
- Using this option breaks out the individual file information
- for each area of the kernel (e.g. drivers, networking, and
- so forth).
- </para>
-
- <para>
- Use your log file to see what you can eliminate from the kernel
- based on features you can let go.
- For example, if you are not going to need sound, you do not
- need any drivers that support sound.
- </para>
-
- <para>
- After figuring out what to eliminate, you need to reconfigure
- the kernel to reflect those changes during the next build.
- You could run <filename>menuconfig</filename> and make all your
- changes at once.
- However, that makes it difficult to see the effects of your
- individual eliminations and also makes it difficult to replicate
- the changes for perhaps another target device.
- A better method is to start with no configurations using
- <filename>allnoconfig</filename>, create configuration
- fragments for individual changes, and then manage the
- fragments into a single configuration file using
- <filename>merge_config.sh</filename>.
- The tool makes it easy for you to iterate using the
- configuration change and build cycle.
- </para>
-
- <para>
- Each time you make configuration changes, you need to rebuild
- the kernel and check to see what impact your changes had on
- the overall size.
- </para>
- </section>
-
- <section id='remove-package-management-requirements'>
- <title>Remove Package Management Requirements</title>
-
- <para>
- Packaging requirements add size to the image.
- One way to reduce the size of the image is to remove all the
- packaging requirements from the image.
- This reduction includes both removing the package manager
- and its unique dependencies as well as removing the package
- management data itself.
- </para>
-
- <para>
- To eliminate all the packaging requirements for an image,
- be sure that "package-management" is not part of your
- <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></ulink>
- statement for the image.
- When you remove this feature, you are removing the package
- manager as well as its dependencies from the root filesystem.
- </para>
- </section>
-
- <section id='look-for-other-ways-to-minimize-size'>
- <title>Look for Other Ways to Minimize Size</title>
-
- <para>
- Depending on your particular circumstances, other areas that you
- can trim likely exist.
- The key to finding these areas is through tools and methods
- described here combined with experimentation and iteration.
- Here are a couple of areas to experiment with:
- <itemizedlist>
- <listitem><para><filename>glibc</filename>:
- In general, follow this process:
- <orderedlist>
- <listitem><para>Remove <filename>glibc</filename>
- features from
- <ulink url='&YOCTO_DOCS_REF_URL;#var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></ulink>
- that you think you do not need.</para></listitem>
- <listitem><para>Build your distribution.
- </para></listitem>
- <listitem><para>If the build fails due to missing
- symbols in a package, determine if you can
- reconfigure the package to not need those
- features.
- For example, change the configuration to not
- support wide character support as is done for
- <filename>ncurses</filename>.
- Or, if support for those characters is needed,
- determine what <filename>glibc</filename>
- features provide the support and restore the
- configuration.
- </para></listitem>
- <listitem><para>Rebuild and repeat the process.
- </para></listitem>
- </orderedlist></para></listitem>
- <listitem><para><filename>busybox</filename>:
- For BusyBox, use a process similar as described for
- <filename>glibc</filename>.
- A difference is you will need to boot the resulting
- system to see if you are able to do everything you
- expect from the running system.
- You need to be sure to integrate configuration fragments
- into Busybox because BusyBox handles its own core
- features and then allows you to add configuration
- fragments on top.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section id='iterate-on-the-process'>
- <title>Iterate on the Process</title>
-
- <para>
- If you have not reached your goals on system size, you need
- to iterate on the process.
- The process is the same.
- Use the tools and see just what is taking up 90% of the root
- filesystem and the kernel.
- Decide what you can eliminate without limiting your device
- beyond what you need.
- </para>
-
- <para>
- Depending on your system, a good place to look might be
- Busybox, which provides a stripped down
- version of Unix tools in a single, executable file.
- You might be able to drop virtual terminal services or perhaps
- ipv6.
- </para>
- </section>
- </section>
-
- <section id='building-images-for-more-than-one-machine'>
- <title>Building Images for More than One Machine</title>
-
- <para>
- A common scenario developers face is creating images for several
- different machines that use the same software environment.
- In this situation, it is tempting to set the
- tunings and optimization flags for each build specifically for
- the targeted hardware (i.e. "maxing out" the tunings).
- Doing so can considerably add to build times and package feed
- maintenance collectively for the machines.
- For example, selecting tunes that are extremely specific to a
- CPU core used in a system might enable some micro optimizations
- in GCC for that particular system but would otherwise not gain
- you much of a performance difference across the other systems
- as compared to using a more general tuning across all the builds
- (e.g. setting
- <ulink url='&YOCTO_DOCS_REF_URL;#var-DEFAULTTUNE'><filename>DEFAULTTUNE</filename></ulink>
- specifically for each machine's build).
- Rather than "max out" each build's tunings, you can take steps that
- cause the OpenEmbedded build system to reuse software across the
- various machines where it makes sense.
- </para>
- <para>
- If build speed and package feed maintenance are considerations,
- you should consider the points in this section that can help you
- optimize your tunings to best consider build times and package
- feed maintenance.
- <itemizedlist>
- <listitem><para><emphasis>Share the Build Directory:</emphasis>
- If at all possible, share the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>
- across builds.
- The Yocto Project supports switching between different
- <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
- values in the same <filename>TMPDIR</filename>.
- This practice is well supported and regularly used by
- developers when building for multiple machines.
- When you use the same <filename>TMPDIR</filename> for
- multiple machine builds, the OpenEmbedded build system can
- reuse the existing native and often cross-recipes for
- multiple machines.
- Thus, build time decreases.
- <note>
- If
- <ulink url='&YOCTO_DOCS_REF_URL;#var-DISTRO'><filename>DISTRO</filename></ulink>
- settings change or fundamental configuration settings
- such as the filesystem layout, you need to work with
- a clean <filename>TMPDIR</filename>.
- Sharing <filename>TMPDIR</filename> under these
- circumstances might work but since it is not
- guaranteed, you should use a clean
- <filename>TMPDIR</filename>.
- </note>
- </para></listitem>
- <listitem><para><emphasis>Enable the Appropriate Package Architecture:</emphasis>
- By default, the OpenEmbedded build system enables three
- levels of package architectures: "all", "tune" or "package",
- and "machine".
- Any given recipe usually selects one of these package
- architectures (types) for its output.
- Depending for what a given recipe creates packages, making
- sure you enable the appropriate package architecture can
- directly impact the build time.</para>
- <para>A recipe that just generates scripts can enable
- "all" architecture because there are no binaries to build.
- To specifically enable "all" architecture, be sure your
- recipe inherits the
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-allarch'><filename>allarch</filename></ulink>
- class.
- This class is useful for "all" architectures because it
- configures many variables so packages can be used across
- multiple architectures.</para>
- <para>If your recipe needs to generate packages that are
- machine-specific or when one of the build or runtime
- dependencies is already machine-architecture dependent,
- which makes your recipe also machine-architecture dependent,
- make sure your recipe enables the "machine" package
- architecture through the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_ARCH'><filename>MACHINE_ARCH</filename></ulink>
- variable:
- <literallayout class='monospaced'>
- PACKAGE_ARCH = "${MACHINE_ARCH}"
- </literallayout>
- When you do not specifically enable a package
- architecture through the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_ARCH'><filename>PACKAGE_ARCH</filename></ulink>,
- The OpenEmbedded build system defaults to the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-TUNE_PKGARCH'><filename>TUNE_PKGARCH</filename></ulink>
- setting:
- <literallayout class='monospaced'>
- PACKAGE_ARCH = "${TUNE_PKGARCH}"
- </literallayout>
- </para></listitem>
- <listitem><para><emphasis>Choose a Generic Tuning File if Possible:</emphasis>
- Some tunes are more generic and can run on multiple targets
- (e.g. an <filename>armv5</filename> set of packages could
- run on <filename>armv6</filename> and
- <filename>armv7</filename> processors in most cases).
- Similarly, <filename>i486</filename> binaries could work
- on <filename>i586</filename> and higher processors.
- You should realize, however, that advances on newer
- processor versions would not be used.</para>
- <para>If you select the same tune for several different
- machines, the OpenEmbedded build system reuses software
- previously built, thus speeding up the overall build time.
- Realize that even though a new sysroot for each machine is
- generated, the software is not recompiled and only one
- package feed exists.
- </para></listitem>
- <listitem><para><emphasis>Manage Granular Level Packaging:</emphasis>
- Sometimes cases exist where injecting another level
- of package architecture beyond the three higher levels
- noted earlier can be useful.
- For example, consider the <filename>emgd</filename>
- graphics stack in the
- <filename>meta-intel</filename> layer.
- In this layer, a subset of software exists that is
- compiled against something different from the rest of the
- generic packages.
- You can examine the key code in the
- <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi'>Source Repositories</ulink>
- "daisy" branch in
- <filename>classes/emgd-gl.bbclass</filename>.
- For a specific set of packages, the code redefines
- <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_ARCH'><filename>PACKAGE_ARCH</filename></ulink>.
- <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_EXTRA_ARCHS'><filename>PACKAGE_EXTRA_ARCHS</filename></ulink>
- is then appended with this extra tune name in
- <filename>meta-intel-emgd.inc</filename>.
- The result is that when searching for packages, the
- build system uses a four-level search and the packages
- in this new level are preferred as compared to the standard
- tune.
- The overall result is that the build system reuses most
- software from the common tune except for specific cases
- as needed.
- </para></listitem>
- <listitem><para><emphasis>Use Tools to Debug Issues:</emphasis>
- Sometimes you can run into situations where software is
- being rebuilt when you think it should not be.
- For example, the OpenEmbedded build system might not be
- using shared state between machines when you think it
- should be.
- These types of situations are usually due to references
- to machine-specific variables such as
- <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>,
- <ulink url='&YOCTO_DOCS_REF_URL;#var-SERIAL_CONSOLE'><filename>SERIAL_CONSOLE</filename></ulink>,
- <ulink url='&YOCTO_DOCS_REF_URL;#var-XSERVER'><filename>XSERVER</filename></ulink>,
- <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE_FEATURES'><filename>MACHINE_FEATURES</filename></ulink>,
- and so forth in code that is supposed to only be
- tune-specific or when the recipe depends
- (<ulink url='&YOCTO_DOCS_REF_URL;#var-DEPENDS'><filename>DEPENDS</filename></ulink>,
- <ulink url='&YOCTO_DOCS_REF_URL;#var-RDEPENDS'><filename>RDEPENDS</filename></ulink>,
- <ulink url='&YOCTO_DOCS_REF_URL;#var-RRECOMMENDS'><filename>RRECOMMENDS</filename></ulink>,
- <ulink url='&YOCTO_DOCS_REF_URL;#var-RSUGGESTS'><filename>RSUGGESTS</filename></ulink>,
- and so forth) on some other recipe that already has
- <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_ARCH'><filename>PACKAGE_ARCH</filename></ulink>
- defined as "${MACHINE_ARCH}".
- <note>
- Patches to fix any issues identified are most welcome
- as these issues occasionally do occur.
- </note></para>
- <para>For such cases, you can use some tools to help you
- sort out the situation:
- <itemizedlist>
- <listitem><para><emphasis><filename>sstate-diff-machines.sh</filename>:</emphasis>
- You can find this tool in the
- <filename>scripts</filename> directory of the
- Source Repositories.
- See the comments in the script for information on
- how to use the tool.
- </para></listitem>
- <listitem><para><emphasis>BitBake's "-S printdiff" Option:</emphasis>
- Using this option causes BitBake to try to
- establish the closest signature match it can
- (e.g. in the shared state cache) and then run
- <filename>bitbake-diffsigs</filename> over the
- matches to determine the stamps and delta where
- these two stamp trees diverge.
- </para></listitem>
- </itemizedlist>
- </para></listitem>
- </itemizedlist>
+ To help conserve disk space during builds, you can add the
+ following statement to your project's
+ <filename>local.conf</filename> configuration file found in the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>:
+ <literallayout class='monospaced'>
+ INHERIT += "rm_work"
+ </literallayout>
+ Adding this statement deletes the work directory used for building
+ a recipe once the recipe is built.
+ For more information on "rm_work", see the
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-rm-work'><filename>rm_work</filename></ulink>
+ class in the Yocto Project Reference Manual.
</para>
</section>
@@ -8486,7 +8985,7 @@ Some notes from Cal:
<para>
Because the OpenEmbedded build system uses
- "<ulink url='&YOCTO_DOCS_CM_URL;#overview-checksums'>signatures</ulink>",
+ "<ulink url='&YOCTO_DOCS_OM_URL;#overview-checksums'>signatures</ulink>",
which are unique to a given build, the build system
knows when to rebuild packages.
All the inputs into a given task are represented by a
@@ -8590,8 +9089,9 @@ Some notes from Cal:
<para>
For more information on shared state, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#shared-state-cache'>Shared State Cache</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#shared-state-cache'>Shared State Cache</ulink>"
+ section in the Yocto Project Overview and Concepts
+ Manual.
</para>
</note>
</section>
@@ -8835,7 +9335,7 @@ Some notes from Cal:
<filename>connman.inc</filename> file in the
<filename>meta/recipes-connectivity/connman/</filename>
directory of the <filename>poky</filename>
- <ulink url='&YOCTO_DOCS_GS_URL;#yocto-project-repositories'>source repository</ulink>.
+ <ulink url='&YOCTO_DOCS_OM_URL;#yocto-project-repositories'>source repository</ulink>.
You can also find examples in
<filename>meta/classes/kernel.bbclass</filename>.
</para>
@@ -9833,81 +10333,6 @@ Some notes from Cal:
</section>
</section>
- <section id="building-software-from-an-external-source">
- <title>Building Software from an External Source</title>
-
- <para>
- By default, the OpenEmbedded build system uses the
- <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
- when building source code.
- The build process involves fetching the source files, unpacking
- them, and then patching them if necessary before the build takes
- place.
- </para>
-
- <para>
- Situations exist where you might want to build software from source
- files that are external to and thus outside of the
- OpenEmbedded build system.
- For example, suppose you have a project that includes a new BSP with
- a heavily customized kernel.
- And, you want to minimize exposing the build system to the
- development team so that they can focus on their project and
- maintain everyone's workflow as much as possible.
- In this case, you want a kernel source directory on the development
- machine where the development occurs.
- You want the recipe's
- <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
- variable to point to the external directory and use it as is, not
- copy it.
- </para>
-
- <para>
- To build from software that comes from an external source, all you
- need to do is inherit the
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-externalsrc'><filename>externalsrc</filename></ulink>
- class and then set the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTERNALSRC'><filename>EXTERNALSRC</filename></ulink>
- variable to point to your external source code.
- Here are the statements to put in your
- <filename>local.conf</filename> file:
- <literallayout class='monospaced'>
- INHERIT += "externalsrc"
- EXTERNALSRC_pn-<replaceable>myrecipe</replaceable> = "<replaceable>path-to-your-source-tree</replaceable>"
- </literallayout>
- </para>
-
- <para>
- This next example shows how to accomplish the same thing by setting
- <filename>EXTERNALSRC</filename> in the recipe itself or in the
- recipe's append file:
- <literallayout class='monospaced'>
- EXTERNALSRC = "<replaceable>path</replaceable>"
- EXTERNALSRC_BUILD = "<replaceable>path</replaceable>"
- </literallayout>
- <note>
- In order for these settings to take effect, you must globally
- or locally inherit the
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-externalsrc'><filename>externalsrc</filename></ulink>
- class.
- </note>
- </para>
-
- <para>
- By default, <filename>externalsrc.bbclass</filename> builds
- the source code in a directory separate from the external source
- directory as specified by
- <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTERNALSRC'><filename>EXTERNALSRC</filename></ulink>.
- If you need to have the source built in the same directory in
- which it resides, or some other nominated directory, you can set
- <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTERNALSRC_BUILD'><filename>EXTERNALSRC_BUILD</filename></ulink>
- to point to that directory:
- <literallayout class='monospaced'>
- EXTERNALSRC_BUILD_pn-<replaceable>myrecipe</replaceable> = "<replaceable>path-to-your-source-tree</replaceable>"
- </literallayout>
- </para>
- </section>
-
<section id="selecting-an-initialization-manager">
<title>Selecting an Initialization Manager</title>
@@ -10378,7 +10803,7 @@ Some notes from Cal:
Enabling build history as previously described causes the
OpenEmbedded build system to collect build output information
and commit it as a single commit to a local
- <ulink url='&YOCTO_DOCS_GS_URL;#git'>Git</ulink>
+ <ulink url='&YOCTO_DOCS_OM_URL;#git'>Git</ulink>
repository.
<note>
Enabling build history increases your build times slightly,
@@ -10928,6 +11353,25 @@ Some notes from Cal:
which should generate a list of tap devices.
This is the option typically chosen for
Autobuilder-type environments.
+ <note><title>Notes</title>
+ <itemizedlist>
+ <listitem><para>
+ Be sure to use an absolute path
+ when calling this script
+ with sudo.
+ </para></listitem>
+ <listitem><para>
+ The package recipe
+ <filename>qemu-helper-native</filename>
+ is required to run this script.
+ Build the package using the
+ following command:
+ <literallayout class='monospaced'>
+ $ bitbake qemu-helper-native
+ </literallayout>
+ </para></listitem>
+ </itemizedlist>
+ </note>
</para></listitem>
</itemizedlist></para></listitem>
<listitem><para><emphasis>Set the
@@ -11067,8 +11511,8 @@ Some notes from Cal:
within a separately started QEMU or any
other virtual machine manager.
</para></listitem>
- <listitem><para><emphasis>"Systemd-bootTarget":</emphasis>
- Choose "Systemd-bootTarget" if your hardware is
+ <listitem><para><emphasis>"SystemdbootTarget":</emphasis>
+ Choose "SystemdbootTarget" if your hardware is
an EFI-based machine with
<filename>systemd-boot</filename> as bootloader and
<filename>core-image-testmaster</filename>
@@ -11076,10 +11520,10 @@ Some notes from Cal:
Also, your hardware under test must be in a
DHCP-enabled network that gives it the same IP
address for each reboot.</para>
- <para>If you choose "Systemd-bootTarget", there are
+ <para>If you choose "SystemdbootTarget", there are
additional requirements and considerations.
See the
- "<link linkend='selecting-systemd-boottarget'>Selecting Systemd-bootTarget</link>"
+ "<link linkend='selecting-systemdboottarget'>Selecting SystemdbootTarget</link>"
section, which follows, for more information.
</para></listitem>
<listitem><para><emphasis>"BeagleBoneTarget":</emphasis>
@@ -11125,12 +11569,12 @@ Some notes from Cal:
</para>
</section>
- <section id='selecting-systemd-boottarget'>
- <title>Selecting Systemd-bootTarget</title>
+ <section id='selecting-systemdboottarget'>
+ <title>Selecting SystemdbootTarget</title>
<para>
If you did not set <filename>TEST_TARGET</filename> to
- "Systemd-bootTarget", then you do not need any information
+ "SystemdbootTarget", then you do not need any information
in this section.
You can skip down to the
"<link linkend='qemu-image-running-tests'>Running Tests</link>"
@@ -11139,7 +11583,7 @@ Some notes from Cal:
<para>
If you did set <filename>TEST_TARGET</filename> to
- "Systemd-bootTarget", you also need to perform a one-time
+ "SystemdbootTarget", you also need to perform a one-time
setup of your master image by doing the following:
<orderedlist>
<listitem><para><emphasis>Set <filename>EFI_PROVIDER</filename>:</emphasis>
@@ -11210,7 +11654,7 @@ Some notes from Cal:
<para>
The final thing you need to do when setting
- <filename>TEST_TARGET</filename> to "Systemd-bootTarget" is
+ <filename>TEST_TARGET</filename> to "SystemdbootTarget" is
to set up the test image:
<orderedlist>
<listitem><para><emphasis>Set up your <filename>local.conf</filename> file:</emphasis>
@@ -11219,7 +11663,7 @@ Some notes from Cal:
<literallayout class='monospaced'>
IMAGE_FSTYPES += "tar.gz"
INHERIT += "testimage"
- TEST_TARGET = "Systemd-bootTarget"
+ TEST_TARGET = "SystemdbootTarget"
TEST_TARGET_IP = "192.168.2.3"
</literallayout>
</para></listitem>
@@ -11636,7 +12080,7 @@ Some notes from Cal:
The target controller object used to deploy
and start an image on a particular target
(e.g. QemuTarget, SimpleRemote, and
- Systemd-bootTarget).
+ SystemdbootTarget).
Tests usually use the following:
<itemizedlist>
<listitem><para><emphasis><filename>ip</filename>:</emphasis>
@@ -12240,7 +12684,7 @@ Some notes from Cal:
${BUILDDIR}/tmp/stamps/i586-poky-linux/db/6.0.30-r1.do_fetch.sigdata.7c048c18222b16ff0bcee2000ef648b1
</literallayout>
For tasks that are accelerated through the shared state
- (<ulink url='&YOCTO_DOCS_CM_URL;#shared-state-cache'>sstate</ulink>)
+ (<ulink url='&YOCTO_DOCS_OM_URL;#shared-state-cache'>sstate</ulink>)
cache, an additional <filename>siginfo</filename> file
is written into
<ulink url='&YOCTO_DOCS_REF_URL;#var-SSTATE_DIR'><filename>SSTATE_DIR</filename></ulink>
@@ -12312,6 +12756,98 @@ Some notes from Cal:
</para>
</section>
+ <section id='dev-viewing-metadata-used-to-create-the-input-signature-of-a-shared-state-task'>
+ <title>Viewing Metadata Used to Create the Input Signature of a Shared State Task</title>
+
+ <para>
+ Seeing what metadata went into creating the input signature
+ of a shared state (sstate) task can be a useful debugging
+ aid.
+ This information is available in signature information
+ (<filename>siginfo</filename>) files in
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-SSTATE_DIR'><filename>SSTATE_DIR</filename></ulink>.
+ For information on how to view and interpret information in
+ <filename>siginfo</filename> files, see the
+ "<link linkend='dev-viewing-task-variable-dependencies'>Viewing Task Variable Dependencies</link>"
+ section.
+ </para>
+
+ <para>
+ For conceptual information on shared state, see the
+ "<ulink url='&YOCTO_DOCS_OM_URL;#shared-state'>Shared State</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
+ </para>
+ </section>
+
+ <section id='dev-invalidating-shared-state-to-force-a-task-to-run'>
+ <title>Invalidating Shared State to Force a Task to Run</title>
+
+ <para>
+ The OpenEmbedded build system uses
+ <ulink url='&YOCTO_DOCS_OM_URL;#overview-checksums'>checksums</ulink>
+ and
+ <ulink url='&YOCTO_DOCS_OM_URL;#shared-state'>shared state</ulink>
+ cache to avoid unnecessarily rebuilding tasks.
+ Collectively, this scheme is known as "shared state code."
+ </para>
+
+ <para>
+ As with all schemes, this one has some drawbacks.
+ It is possible that you could make implicit changes to your
+ code that the checksum calculations do not take into
+ account.
+ These implicit changes affect a task's output but do not
+ trigger the shared state code into rebuilding a recipe.
+ Consider an example during which a tool changes its output.
+ Assume that the output of <filename>rpmdeps</filename>
+ changes.
+ The result of the change should be that all the
+ <filename>package</filename> and
+ <filename>package_write_rpm</filename> shared state cache
+ items become invalid.
+ However, because the change to the output is
+ external to the code and therefore implicit,
+ the associated shared state cache items do not become
+ invalidated.
+ In this case, the build process uses the cached items
+ rather than running the task again.
+ Obviously, these types of implicit changes can cause
+ problems.
+ </para>
+
+ <para>
+ To avoid these problems during the build, you need to
+ understand the effects of any changes you make.
+ Realize that changes you make directly to a function
+ are automatically factored into the checksum calculation.
+ Thus, these explicit changes invalidate the associated
+ area of shared state cache.
+ However, you need to be aware of any implicit changes that
+ are not obvious changes to the code and could affect
+ the output of a given task.
+ </para>
+
+ <para>
+ When you identify an implicit change, you can easily
+ take steps to invalidate the cache and force the tasks
+ to run.
+ The steps you can take are as simple as changing a
+ function's comments in the source code.
+ For example, to invalidate package shared state files,
+ change the comment statements of
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-package'><filename>do_package</filename></ulink>
+ or the comments of one of the functions it calls.
+ Even though the change is purely cosmetic, it causes the
+ checksum to be recalculated and forces the build system to
+ run the task again.
+ <note>
+ For an example of a commit that makes a cosmetic
+ change to invalidate shared state, see this
+ <ulink url='&YOCTO_GIT_URL;/cgit.cgi/poky/commit/meta/classes/package.bbclass?id=737f8bbb4f27b4837047cb9b4fbfe01dfde36d54'>commit</ulink>.
+ </note>
+ </para>
+ </section>
+
<section id='dev-debugging-taskrunning'>
<title>Running Specific Tasks</title>
@@ -12349,21 +12885,21 @@ Some notes from Cal:
<filename>-c</filename>, BitBake will only run the task if it
considers it "out of date".
See the
- "<ulink url='&YOCTO_DOCS_CM_URL;#stamp-files-and-the-rerunning-of-tasks'>Stamp Files and the Rerunning of Tasks</ulink>"
- section in the Yocto Project Concepts Manual for
+ "<ulink url='&YOCTO_DOCS_OM_URL;#stamp-files-and-the-rerunning-of-tasks'>Stamp Files and the Rerunning of Tasks</ulink>"
+ section in the Yocto Project Overview and Concepts Manual for
how BitBake determines whether a task is "out of date".
</para>
<para>
If you want to force an up-to-date task to be rerun (e.g.
because you made manual modifications to the recipe's
- <ulink linkend='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink>
that you want to try out), then you can use the
<filename>-f</filename> option.
<note>
The reason <filename>-f</filename> is never required when
running the
- <ulink linkend='&YOCTO_DOCS_REF_URL;#ref-tasks-devshell'><filename>do_devshell</filename></ulink>
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-devshell'><filename>do_devshell</filename></ulink>
task is because the
<filename>[</filename><ulink url='&YOCTO_DOCS_BB_URL;#variable-flags'><filename>nostamp</filename></ulink><filename>]</filename>
variable flag is already set for the task.
@@ -13358,127 +13894,1142 @@ Some notes from Cal:
</section>
</section>
- <section id='maintaining-open-source-license-compliance-during-your-products-lifecycle'>
- <title>Maintaining Open Source License Compliance During Your Product's Lifecycle</title>
+ <section id='making-changes-to-the-yocto-project'>
+ <title>Making Changes to the Yocto Project</title>
<para>
- One of the concerns for a development organization using open source
- software is how to maintain compliance with various open source
- licensing during the lifecycle of the product.
- While this section does not provide legal advice or
- comprehensively cover all scenarios, it does
- present methods that you can use to
- assist you in meeting the compliance requirements during a software
- release.
+ Because the Yocto Project is an open-source, community-based
+ project, you can effect changes to the project.
+ This section presents procedures that show you how to submit
+ a defect against the project and how to submit a change.
</para>
- <para>
- With hundreds of different open source licenses that the Yocto
- Project tracks, it is difficult to know the requirements of each
- and every license.
- However, the requirements of the major FLOSS licenses can begin
- to be covered by
- assuming that three main areas of concern exist:
- <itemizedlist>
- <listitem><para>Source code must be provided.</para></listitem>
- <listitem><para>License text for the software must be
- provided.</para></listitem>
- <listitem><para>Compilation scripts and modifications to the
- source code must be provided.
- </para></listitem>
- </itemizedlist>
- There are other requirements beyond the scope of these
- three and the methods described in this section
- (e.g. the mechanism through which source code is distributed).
- </para>
+ <section id='submitting-a-defect-against-the-yocto-project'>
+ <title>Submitting a Defect Against the Yocto Project</title>
- <para>
- As different organizations have different methods of complying with
- open source licensing, this section is not meant to imply that
- there is only one single way to meet your compliance obligations,
- but rather to describe one method of achieving compliance.
- The remainder of this section describes methods supported to meet the
- previously mentioned three requirements.
- Once you take steps to meet these requirements,
- and prior to releasing images, sources, and the build system,
- you should audit all artifacts to ensure completeness.
- <note>
- The Yocto Project generates a license manifest during
- image creation that is located
- in <filename>${DEPLOY_DIR}/licenses/<replaceable>image_name-datestamp</replaceable></filename>
- to assist with any audits.
- </note>
- </para>
+ <para>
+ Use the Yocto Project implementation of
+ <ulink url='http://www.bugzilla.org/about/'>Bugzilla</ulink>
+ to submit a defect (bug) against the Yocto Project.
+ For additional information on this implementation of Bugzilla see the
+ "<ulink url='&YOCTO_DOCS_REF_URL;#resources-bugtracker'>Yocto Project Bugzilla</ulink>"
+ section in the Yocto Project Reference Manual.
+ For more detail on any of the following steps, see the Yocto Project
+ <ulink url='&YOCTO_WIKI_URL;/wiki/Bugzilla_Configuration_and_Bug_Tracking'>Bugzilla wiki page</ulink>.
+ </para>
+
+ <para>
+ Use the following general steps to submit a bug"
+
+ <orderedlist>
+ <listitem><para>
+ Open the Yocto Project implementation of
+ <ulink url='&YOCTO_BUGZILLA_URL;'>Bugzilla</ulink>.
+ </para></listitem>
+ <listitem><para>
+ Click "File a Bug" to enter a new bug.
+ </para></listitem>
+ <listitem><para>
+ Choose the appropriate "Classification", "Product", and
+ "Component" for which the bug was found.
+ Bugs for the Yocto Project fall into one of several
+ classifications, which in turn break down into several
+ products and components.
+ For example, for a bug against the
+ <filename>meta-intel</filename> layer, you would choose
+ "Build System, Metadata &amp; Runtime", "BSPs", and
+ "bsps-meta-intel", respectively.
+ </para></listitem>
+ <listitem><para>
+ Choose the "Version" of the Yocto Project for which you found
+ the bug (e.g. &DISTRO;).
+ </para></listitem>
+ <listitem><para>
+ Determine and select the "Severity" of the bug.
+ The severity indicates how the bug impacted your work.
+ </para></listitem>
+ <listitem><para>
+ Choose the "Hardware" that the bug impacts.
+ </para></listitem>
+ <listitem><para>
+ Choose the "Architecture" that the bug impacts.
+ </para></listitem>
+ <listitem><para>
+ Choose a "Documentation change" item for the bug.
+ Fixing a bug might or might not affect the Yocto Project
+ documentation.
+ If you are unsure of the impact to the documentation, select
+ "Don't Know".
+ </para></listitem>
+ <listitem><para>
+ Provide a brief "Summary" of the bug.
+ Try to limit your summary to just a line or two and be sure
+ to capture the essence of the bug.
+ </para></listitem>
+ <listitem><para>
+ Provide a detailed "Description" of the bug.
+ You should provide as much detail as you can about the context,
+ behavior, output, and so forth that surrounds the bug.
+ You can even attach supporting files for output from logs by
+ using the "Add an attachment" button.
+ </para></listitem>
+ <listitem><para>
+ Click the "Submit Bug" button submit the bug.
+ A new Bugzilla number is assigned to the bug and the defect
+ is logged in the bug tracking system.
+ </para></listitem>
+ </orderedlist>
+ Once you file a bug, the bug is processed by the Yocto Project Bug
+ Triage Team and further details concerning the bug are assigned
+ (e.g. priority and owner).
+ You are the "Submitter" of the bug and any further categorization,
+ progress, or comments on the bug result in Bugzilla sending you an
+ automated email concerning the particular change or progress to the
+ bug.
+ </para>
+ </section>
- <section id='providing-the-source-code'>
- <title>Providing the Source Code</title>
+ <section id='how-to-submit-a-change'>
+ <title>Submitting a Change to the Yocto Project</title>
<para>
- Compliance activities should begin before you generate the
- final image.
- The first thing you should look at is the requirement that
- tops the list for most compliance groups - providing
- the source.
- The Yocto Project has a few ways of meeting this
- requirement.
+ Contributions to the Yocto Project and OpenEmbedded are very welcome.
+ Because the system is extremely configurable and flexible, we recognize
+ that developers will want to extend, configure or optimize it for
+ their specific uses.
</para>
<para>
- One of the easiest ways to meet this requirement is
- to provide the entire
- <ulink url='&YOCTO_DOCS_REF_URL;#var-DL_DIR'><filename>DL_DIR</filename></ulink>
- used by the build.
- This method, however, has a few issues.
- The most obvious is the size of the directory since it includes
- all sources used in the build and not just the source used in
- the released image.
- It will include toolchain source, and other artifacts, which
- you would not generally release.
- However, the more serious issue for most companies is accidental
- release of proprietary software.
- The Yocto Project provides an
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-archiver'><filename>archiver</filename></ulink>
- class to help avoid some of these concerns.
+ The Yocto Project uses a mailing list and a patch-based workflow
+ that is similar to the Linux kernel but contains important
+ differences.
+ In general, a mailing list exists through which you can submit
+ patches.
+ You should send patches to the appropriate mailing list so that they
+ can be reviewed and merged by the appropriate maintainer.
+ The specific mailing list you need to use depends on the
+ location of the code you are changing.
+ Each component (e.g. layer) should have a
+ <filename>README</filename> file that indicates where to send
+ the changes and which process to follow.
+ </para>
+
+ <para>
+ You can send the patch to the mailing list using whichever approach
+ you feel comfortable with to generate the patch.
+ Once sent, the patch is usually reviewed by the community at large.
+ If somebody has concerns with the patch, they will usually voice
+ their concern over the mailing list.
+ If a patch does not receive any negative reviews, the maintainer of
+ the affected layer typically takes the patch, tests it, and then
+ based on successful testing, merges the patch.
+ </para>
+
+ <para id='figuring-out-the-mailing-list-to-use'>
+ The "poky" repository, which is the Yocto Project's reference build
+ environment, is a hybrid repository that contains several
+ individual pieces (e.g. BitBake, Metadata, documentation,
+ and so forth) built using the combo-layer tool.
+ The upstream location used for submitting changes varies by
+ component:
+ <itemizedlist>
+ <listitem><para>
+ <emphasis>Core Metadata:</emphasis>
+ Send your patch to the
+ <ulink url='http://lists.openembedded.org/mailman/listinfo/openembedded-core'>openembedded-core</ulink>
+ mailing list. For example, a change to anything under
+ the <filename>meta</filename> or
+ <filename>scripts</filename> directories should be sent
+ to this mailing list.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>BitBake:</emphasis>
+ For changes to BitBake (i.e. anything under the
+ <filename>bitbake</filename> directory), send your patch
+ to the
+ <ulink url='http://lists.openembedded.org/mailman/listinfo/bitbake-devel'>bitbake-devel</ulink>
+ mailing list.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>"meta-*" trees:</emphasis>
+ These trees contain Metadata.
+ Use the
+ <ulink url='https://lists.yoctoproject.org/listinfo/poky'>poky</ulink>
+ mailing list.
+ </para></listitem>
+ </itemizedlist>
+ </para>
+
+ <para>
+ For changes to other layers hosted in the Yocto Project source
+ repositories (i.e. <filename>yoctoproject.org</filename>), tools,
+ and the Yocto Project documentation, use the
+ <ulink url='https://lists.yoctoproject.org/listinfo/yocto'>Yocto Project</ulink>
+ general mailing list.
+ <note>
+ Sometimes a layer's documentation specifies to use a
+ particular mailing list.
+ If so, use that list.
+ </note>
+ For additional recipes that do not fit into the core Metadata, you
+ should determine which layer the recipe should go into and submit
+ the change in the manner recommended by the documentation (e.g.
+ the <filename>README</filename> file) supplied with the layer.
+ If in doubt, please ask on the Yocto general mailing list or on
+ the openembedded-devel mailing list.
</para>
<para>
- Before you employ <filename>DL_DIR</filename> or the
- <filename>archiver</filename> class, you need to decide how
- you choose to provide source.
- The source <filename>archiver</filename> class can generate
- tarballs and SRPMs and can create them with various levels of
- compliance in mind.
+ You can also push a change upstream and request a maintainer to
+ pull the change into the component's upstream repository.
+ You do this by pushing to a contribution repository that is upstream.
+ See the
+ "<ulink url='&YOCTO_DOCS_OM_URL;#gs-git-workflows-and-the-yocto-project'>Git Workflows and the Yocto Project</ulink>"
+ section in the Yocto Project Overview and Concepts Manual for additional
+ concepts on working in the Yocto Project development environment.
</para>
<para>
- One way of doing this (but certainly not the only way) is to
- release just the source as a tarball.
- You can do this by adding the following to the
- <filename>local.conf</filename> file found in the
- <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>:
+ Two commonly used testing repositories exist for
+ OpenEmbedded-Core:
+ <itemizedlist>
+ <listitem><para>
+ <emphasis>"ross/mut" branch:</emphasis>
+ The "mut" (master-under-test) tree
+ exists in the <filename>poky-contrib</filename> repository
+ in the
+ <ulink url='&YOCTO_GIT_URL;'>Yocto Project source repositories</ulink>.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>"master-next" branch:</emphasis>
+ This branch is part of the main
+ "poky" repository in the Yocto Project source repositories.
+ </para></listitem>
+ </itemizedlist>
+ Maintainers use these branches to test submissions prior to merging
+ patches.
+ Thus, you can get an idea of the status of a patch based on
+ whether the patch has been merged into one of these branches.
+ <note>
+ This system is imperfect and changes can sometimes get lost in the
+ flow.
+ Asking about the status of a patch or change is reasonable if the
+ change has been idle for a while with no feedback.
+ The Yocto Project does have plans to use
+ <ulink url='https://en.wikipedia.org/wiki/Patchwork_(software)'>Patchwork</ulink>
+ to track the status of patches and also to automatically preview
+ patches.
+ </note>
+ </para>
+
+ <para>
+ The following sections provide procedures for submitting a change.
+ </para>
+
+ <section id='pushing-a-change-upstream'>
+ <title>Using Scripts to Push a Change Upstream and Request a Pull</title>
+
+ <para>
+ Follow this procedure to push a change to an upstream "contrib"
+ Git repository:
+ <note>
+ You can find general Git information on how to push a change
+ upstream in the
+ <ulink url='http://git-scm.com/book/en/v2/Distributed-Git-Distributed-Workflows'>Git Community Book</ulink>.
+ </note>
+ <orderedlist>
+ <listitem><para>
+ <emphasis>Make Your Changes Locally:</emphasis>
+ Make your changes in your local Git repository.
+ You should make small, controlled, isolated changes.
+ Keeping changes small and isolated aids review,
+ makes merging/rebasing easier and keeps the change
+ history clean should anyone need to refer to it in
+ future.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Stage Your Changes:</emphasis>
+ Stage your changes by using the <filename>git add</filename>
+ command on each file you changed.
+ </para></listitem>
+ <listitem><para id='making-sure-you-have-correct-commit-information'>
+ <emphasis>Commit Your Changes:</emphasis>
+ Commit the change by using the
+ <filename>git commit</filename> command.
+ Make sure your commit information follows standards by
+ following these accepted conventions:
+ <itemizedlist>
+ <listitem><para>
+ Be sure to include a "Signed-off-by:" line in the
+ same style as required by the Linux kernel.
+ Adding this line signifies that you, the submitter,
+ have agreed to the Developer's Certificate of
+ Origin 1.1 as follows:
+ <literallayout class='monospaced'>
+ Developer's Certificate of Origin 1.1
+
+ By making a contribution to this project, I certify that:
+
+ (a) The contribution was created in whole or in part by me and I
+ have the right to submit it under the open source license
+ indicated in the file; or
+
+ (b) The contribution is based upon previous work that, to the best
+ of my knowledge, is covered under an appropriate open source
+ license and I have the right under that license to submit that
+ work with modifications, whether created in whole or in part
+ by me, under the same open source license (unless I am
+ permitted to submit under a different license), as indicated
+ in the file; or
+
+ (c) The contribution was provided directly to me by some other
+ person who certified (a), (b) or (c) and I have not modified
+ it.
+
+ (d) I understand and agree that this project and the contribution
+ are public and that a record of the contribution (including all
+ personal information I submit with it, including my sign-off) is
+ maintained indefinitely and may be redistributed consistent with
+ this project or the open source license(s) involved.
+ </literallayout>
+ </para></listitem>
+ <listitem><para>
+ Provide a single-line summary of the change.
+ and,
+ if more explanation is needed, provide more
+ detail in the body of the commit.
+ This summary is typically viewable in the
+ "shortlist" of changes.
+ Thus, providing something short and descriptive
+ that gives the reader a summary of the change is
+ useful when viewing a list of many commits.
+ You should prefix this short description with the
+ recipe name (if changing a recipe), or else with
+ the short form path to the file being changed.
+ </para></listitem>
+ <listitem><para>
+ For the body of the commit message, provide
+ detailed information that describes what you
+ changed, why you made the change, and the approach
+ you used.
+ It might also be helpful if you mention how you
+ tested the change.
+ Provide as much detail as you can in the body of
+ the commit message.
+ <note>
+ You do not need to provide a more detailed
+ explanation of a change if the change is
+ minor to the point of the single line
+ summary providing all the information.
+ </note>
+ </para></listitem>
+ <listitem><para>
+ If the change addresses a specific bug or issue
+ that is associated with a bug-tracking ID,
+ include a reference to that ID in your detailed
+ description.
+ For example, the Yocto Project uses a specific
+ convention for bug references - any commit that
+ addresses a specific bug should use the following
+ form for the detailed description.
+ Be sure to use the actual bug-tracking ID from
+ Bugzilla for
+ <replaceable>bug-id</replaceable>:
+ <literallayout class='monospaced'>
+ Fixes [YOCTO #<replaceable>bug-id</replaceable>]
+
+ <replaceable>detailed description of change</replaceable>
+ </literallayout>
+ </para></listitem>
+ </itemizedlist>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Push Your Commits to a "Contrib" Upstream:</emphasis>
+ If you have arranged for permissions to push to an
+ upstream contrib repository, push the change to that
+ repository:
+ <literallayout class='monospaced'>
+ $ git push <replaceable>upstream_remote_repo</replaceable> <replaceable>local_branch_name</replaceable>
+ </literallayout>
+ For example, suppose you have permissions to push into the
+ upstream <filename>meta-intel-contrib</filename>
+ repository and you are working in a local branch named
+ <replaceable>your_name</replaceable><filename>/README</filename>.
+ The following command pushes your local commits to the
+ <filename>meta-intel-contrib</filename> upstream
+ repository and puts the commit in a branch named
+ <replaceable>your_name</replaceable><filename>/README</filename>:
+ <literallayout class='monospaced'>
+ $ git push meta-intel-contrib <replaceable>your_name</replaceable>/README
+ </literallayout>
+ </para></listitem>
+ <listitem><para id='push-determine-who-to-notify'>
+ <emphasis>Determine Who to Notify:</emphasis>
+ Determine the maintainer or the mailing list
+ that you need to notify for the change.</para>
+
+ <para>Before submitting any change, you need to be sure
+ who the maintainer is or what mailing list that you need
+ to notify.
+ Use either these methods to find out:
+ <itemizedlist>
+ <listitem><para>
+ <emphasis>Maintenance File:</emphasis>
+ Examine the <filename>maintainers.inc</filename>
+ file, which is located in the
+ <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
+ at
+ <filename>meta/conf/distro/include</filename>,
+ to see who is responsible for code.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Search by File:</emphasis>
+ Using <ulink url='&YOCTO_DOCS_OM_URL;#git'>Git</ulink>,
+ you can enter the following command to bring up a
+ short list of all commits against a specific file:
+ <literallayout class='monospaced'>
+ git shortlog -- <replaceable>filename</replaceable>
+ </literallayout>
+ Just provide the name of the file for which you
+ are interested.
+ The information returned is not ordered by history
+ but does include a list of everyone who has
+ committed grouped by name.
+ From the list, you can see who is responsible for
+ the bulk of the changes against the file.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Examine the List of Mailing Lists:</emphasis>
+ For a list of the Yocto Project and related mailing
+ lists, see the
+ "<ulink url='&YOCTO_DOCS_REF_URL;#resources-mailinglist'>Mailing lists</ulink>"
+ section in the Yocto Project Reference Manual.
+ </para></listitem>
+ </itemizedlist>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Make a Pull Request:</emphasis>
+ Notify the maintainer or the mailing list that you have
+ pushed a change by making a pull request.</para>
+
+ <para>The Yocto Project provides two scripts that
+ conveniently let you generate and send pull requests to the
+ Yocto Project.
+ These scripts are <filename>create-pull-request</filename>
+ and <filename>send-pull-request</filename>.
+ You can find these scripts in the
+ <filename>scripts</filename> directory within the
+ <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
+ (e.g. <filename>~/poky/scripts</filename>).
+ </para>
+
+ <para>Using these scripts correctly formats the requests
+ without introducing any whitespace or HTML formatting.
+ The maintainer that receives your patches either directly
+ or through the mailing list needs to be able to save and
+ apply them directly from your emails.
+ Using these scripts is the preferred method for sending
+ patches.</para>
+
+ <para>First, create the pull request.
+ For example, the following command runs the script,
+ specifies the upstream repository in the contrib directory
+ into which you pushed the change, and provides a subject
+ line in the created patch files:
+ <literallayout class='monospaced'>
+ $ ~/poky/scripts/create-pull-request -u meta-intel-contrib -s "Updated Manual Section Reference in README"
+ </literallayout>
+ Running this script forms
+ <filename>*.patch</filename> files in a folder named
+ <filename>pull-</filename><replaceable>PID</replaceable>
+ in the current directory.
+ One of the patch files is a cover letter.</para>
+
+ <para>Before running the
+ <filename>send-pull-request</filename> script, you must
+ edit the cover letter patch to insert information about
+ your change.
+ After editing the cover letter, send the pull request.
+ For example, the following command runs the script and
+ specifies the patch directory and email address.
+ In this example, the email address is a mailing list:
+ <literallayout class='monospaced'>
+ $ ~/poky/scripts/send-pull-request -p ~/meta-intel/pull-10565 -t meta-intel@yoctoproject.org
+ </literallayout>
+ You need to follow the prompts as the script is
+ interactive.
+ <note>
+ For help on using these scripts, simply provide the
+ <filename>-h</filename> argument as follows:
+ <literallayout class='monospaced'>
+ $ poky/scripts/create-pull-request -h
+ $ poky/scripts/send-pull-request -h
+ </literallayout>
+ </note>
+ </para></listitem>
+ </orderedlist>
+ </para>
+ </section>
+
+ <section id='submitting-a-patch'>
+ <title>Using Email to Submit a Patch</title>
+
+ <para>
+ You can submit patches without using the
+ <filename>create-pull-request</filename> and
+ <filename>send-pull-request</filename> scripts described in the
+ previous section.
+ However, keep in mind, the preferred method is to use the scripts.
+ </para>
+
+ <para>
+ Depending on the components changed, you need to submit the email
+ to a specific mailing list.
+ For some guidance on which mailing list to use, see the
+ <link linkend='figuring-out-the-mailing-list-to-use'>list</link>
+ at the beginning of this section.
+ For a description of all the available mailing lists, see the
+ "<ulink url='&YOCTO_DOCS_REF_URL;#resources-mailinglist'>Mailing Lists</ulink>"
+ section in the Yocto Project Reference Manual.
+ </para>
+
+ <para>
+ Here is the general procedure on how to submit a patch through
+ email without using the scripts:
+ <orderedlist>
+ <listitem><para>
+ <emphasis>Make Your Changes Locally:</emphasis>
+ Make your changes in your local Git repository.
+ You should make small, controlled, isolated changes.
+ Keeping changes small and isolated aids review,
+ makes merging/rebasing easier and keeps the change
+ history clean should anyone need to refer to it in
+ future.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Stage Your Changes:</emphasis>
+ Stage your changes by using the <filename>git add</filename>
+ command on each file you changed.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Commit Your Changes:</emphasis>
+ Commit the change by using the
+ <filename>git commit --signoff</filename> command.
+ Using the <filename>--signoff</filename> option identifies
+ you as the person making the change and also satisfies
+ the Developer's Certificate of Origin (DCO) shown earlier.
+ </para>
+
+ <para>When you form a commit, you must follow certain
+ standards established by the Yocto Project development
+ team.
+ See
+ <link linkend='making-sure-you-have-correct-commit-information'>Step 3</link>
+ in the previous section for information on how to
+ provide commit information that meets Yocto Project
+ commit message standards.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Format the Commit:</emphasis>
+ Format the commit into an email message.
+ To format commits, use the
+ <filename>git format-patch</filename> command.
+ When you provide the command, you must include a revision
+ list or a number of patches as part of the command.
+ For example, either of these two commands takes your most
+ recent single commit and formats it as an email message in
+ the current directory:
+ <literallayout class='monospaced'>
+ $ git format-patch -1
+ </literallayout>
+ or
+ <literallayout class='monospaced'>
+ $ git format-patch HEAD~
+ </literallayout></para>
+
+ <para>After the command is run, the current directory
+ contains a numbered <filename>.patch</filename> file for
+ the commit.</para>
+
+ <para>If you provide several commits as part of the
+ command, the <filename>git format-patch</filename> command
+ produces a series of numbered files in the current
+ directory – one for each commit.
+ If you have more than one patch, you should also use the
+ <filename>--cover</filename> option with the command,
+ which generates a cover letter as the first "patch" in
+ the series.
+ You can then edit the cover letter to provide a
+ description for the series of patches.
+ For information on the
+ <filename>git format-patch</filename> command,
+ see <filename>GIT_FORMAT_PATCH(1)</filename> displayed
+ using the <filename>man git-format-patch</filename>
+ command.
+ <note>
+ If you are or will be a frequent contributor to the
+ Yocto Project or to OpenEmbedded, you might consider
+ requesting a contrib area and the necessary associated
+ rights.
+ </note>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Import the Files Into Your Mail Client:</emphasis>
+ Import the files into your mail client by using the
+ <filename>git send-email</filename> command.
+ <note>
+ In order to use <filename>git send-email</filename>,
+ you must have the proper Git packages installed on
+ your host.
+ For Ubuntu, Debian, and Fedora the package is
+ <filename>git-email</filename>.
+ </note></para>
+
+ <para>The <filename>git send-email</filename> command
+ sends email by using a local or remote Mail Transport Agent
+ (MTA) such as <filename>msmtp</filename>,
+ <filename>sendmail</filename>, or through a direct
+ <filename>smtp</filename> configuration in your Git
+ <filename>~/.gitconfig</filename> file.
+ If you are submitting patches through email only, it is
+ very important that you submit them without any whitespace
+ or HTML formatting that either you or your mailer
+ introduces.
+ The maintainer that receives your patches needs to be able
+ to save and apply them directly from your emails.
+ A good way to verify that what you are sending will be
+ applicable by the maintainer is to do a dry run and send
+ them to yourself and then save and apply them as the
+ maintainer would.</para>
+
+ <para>The <filename>git send-email</filename> command is
+ the preferred method for sending your patches using
+ email since there is no risk of compromising whitespace
+ in the body of the message, which can occur when you use
+ your own mail client.
+ The command also has several options that let you
+ specify recipients and perform further editing of the
+ email message.
+ For information on how to use the
+ <filename>git send-email</filename> command,
+ see <filename>GIT-SEND-EMAIL(1)</filename> displayed using
+ the <filename>man git-send-email</filename> command.
+ </para></listitem>
+ </orderedlist>
+ </para>
+ </section>
+ </section>
+ </section>
+
+ <section id='working-with-licenses'>
+ <title>Working With Licenses</title>
+
+ <para>
+ As mentioned in the
+ "<ulink url='&YOCTO_DOCS_OM_URL;#licensing'>Licensing</ulink>"
+ section in the Yocto Project Overview and Concepts Manual,
+ open source projects are open to the public and they
+ consequently have different licensing structures in place.
+ This section describes the mechanism by which the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>
+ tracks changes to licensing text and covers how to maintain open
+ source license compliance during your project's lifecycle.
+ The section also describes how to enable commercially licensed
+ recipes, which by default are disabled.
+ </para>
+
+ <section id="usingpoky-configuring-LIC_FILES_CHKSUM">
+ <title>Tracking License Changes</title>
+
+ <para>
+ The license of an upstream project might change in the future.
+ In order to prevent these changes going unnoticed, the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-LIC_FILES_CHKSUM'><filename>LIC_FILES_CHKSUM</filename></ulink>
+ variable tracks changes to the license text. The checksums are
+ validated at the end of the configure step, and if the
+ checksums do not match, the build will fail.
+ </para>
+
+ <section id="usingpoky-specifying-LIC_FILES_CHKSUM">
+ <title>Specifying the <filename>LIC_FILES_CHKSUM</filename> Variable</title>
+
+ <para>
+ The <filename>LIC_FILES_CHKSUM</filename>
+ variable contains checksums of the license text in the
+ source code for the recipe.
+ Following is an example of how to specify
+ <filename>LIC_FILES_CHKSUM</filename>:
+ <literallayout class='monospaced'>
+ LIC_FILES_CHKSUM = "file://COPYING;md5=xxxx \
+ file://licfile1.txt;beginline=5;endline=29;md5=yyyy \
+ file://licfile2.txt;endline=50;md5=zzzz \
+ ..."
+ </literallayout>
+ <note><title>Notes</title>
+ <itemizedlist>
+ <listitem><para>
+ When using "beginline" and "endline", realize
+ that line numbering begins with one and not
+ zero.
+ Also, the included lines are inclusive (i.e.
+ lines five through and including 29 in the
+ previous example for
+ <filename>licfile1.txt</filename>).
+ </para></listitem>
+ <listitem><para>
+ When a license check fails, the selected license
+ text is included as part of the QA message.
+ Using this output, you can determine the exact
+ start and finish for the needed license text.
+ </para></listitem>
+ </itemizedlist>
+ </note>
+ </para>
+
+ <para>
+ The build system uses the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-S'><filename>S</filename></ulink>
+ variable as the default directory when searching files
+ listed in <filename>LIC_FILES_CHKSUM</filename>.
+ The previous example employs the default directory.
+ </para>
+
+ <para>
+ Consider this next example:
+ <literallayout class='monospaced'>
+ LIC_FILES_CHKSUM = "file://src/ls.c;beginline=5;endline=16;\
+ md5=bb14ed3c4cda583abc85401304b5cd4e"
+ LIC_FILES_CHKSUM = "file://${WORKDIR}/license.html;md5=5c94767cedb5d6987c902ac850ded2c6"
+ </literallayout>
+ </para>
+
+ <para>
+ The first line locates a file in
+ <filename>${S}/src/ls.c</filename> and isolates lines five
+ through 16 as license text.
+ The second line refers to a file in
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink>.
+ </para>
+
+ <para>
+ Note that <filename>LIC_FILES_CHKSUM</filename> variable is
+ mandatory for all recipes, unless the
+ <filename>LICENSE</filename> variable is set to "CLOSED".
+ </para>
+ </section>
+
+ <section id="usingpoky-LIC_FILES_CHKSUM-explanation-of-syntax">
+ <title>Explanation of Syntax</title>
+
+ <para>
+ As mentioned in the previous section, the
+ <filename>LIC_FILES_CHKSUM</filename> variable lists all
+ the important files that contain the license text for the
+ source code.
+ It is possible to specify a checksum for an entire file,
+ or a specific section of a file (specified by beginning and
+ ending line numbers with the "beginline" and "endline"
+ parameters, respectively).
+ The latter is useful for source files with a license
+ notice header, README documents, and so forth.
+ If you do not use the "beginline" parameter, then it is
+ assumed that the text begins on the first line of the file.
+ Similarly, if you do not use the "endline" parameter,
+ it is assumed that the license text ends with the last
+ line of the file.
+ </para>
+
+ <para>
+ The "md5" parameter stores the md5 checksum of the license
+ text.
+ If the license text changes in any way as compared to
+ this parameter then a mismatch occurs.
+ This mismatch triggers a build failure and notifies
+ the developer.
+ Notification allows the developer to review and address
+ the license text changes.
+ Also note that if a mismatch occurs during the build,
+ the correct md5 checksum is placed in the build log and
+ can be easily copied to the recipe.
+ </para>
+
+ <para>
+ There is no limit to how many files you can specify using
+ the <filename>LIC_FILES_CHKSUM</filename> variable.
+ Generally, however, every project requires a few
+ specifications for license tracking.
+ Many projects have a "COPYING" file that stores the
+ license information for all the source code files.
+ This practice allows you to just track the "COPYING"
+ file as long as it is kept up to date.
+ <note><title>Tips</title>
+ <itemizedlist>
+ <listitem><para>
+ If you specify an empty or invalid "md5"
+ parameter,
+ <ulink url='&YOCTO_DOCS_REF_URL;#bitbake-term'>BitBake</ulink>
+ returns an md5 mis-match
+ error and displays the correct "md5" parameter
+ value during the build.
+ The correct parameter is also captured in
+ the build log.
+ </para></listitem>
+ <listitem><para>
+ If the whole file contains only license text,
+ you do not need to use the "beginline" and
+ "endline" parameters.
+ </para></listitem>
+ </itemizedlist>
+ </note>
+ </para>
+ </section>
+ </section>
+
+ <section id="enabling-commercially-licensed-recipes">
+ <title>Enabling Commercially Licensed Recipes</title>
+
+ <para>
+ By default, the OpenEmbedded build system disables
+ components that have commercial or other special licensing
+ requirements.
+ Such requirements are defined on a
+ recipe-by-recipe basis through the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE_FLAGS'><filename>LICENSE_FLAGS</filename></ulink>
+ variable definition in the affected recipe.
+ For instance, the
+ <filename>poky/meta/recipes-multimedia/gstreamer/gst-plugins-ugly</filename>
+ recipe contains the following statement:
<literallayout class='monospaced'>
- INHERIT += "archiver"
- ARCHIVER_MODE[src] = "original"
+ LICENSE_FLAGS = "commercial"
</literallayout>
- During the creation of your image, the source from all
- recipes that deploy packages to the image is placed within
- subdirectories of
- <filename>DEPLOY_DIR/sources</filename> based on the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE'><filename>LICENSE</filename></ulink>
- for each recipe.
- Releasing the entire directory enables you to comply with
- requirements concerning providing the unmodified source.
- It is important to note that the size of the directory can
- get large.
+ Here is a slightly more complicated example that contains both
+ an explicit recipe name and version (after variable expansion):
+ <literallayout class='monospaced'>
+ LICENSE_FLAGS = "license_${PN}_${PV}"
+ </literallayout>
+ In order for a component restricted by a
+ <filename>LICENSE_FLAGS</filename> definition to be enabled and
+ included in an image, it needs to have a matching entry in the
+ global
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE_FLAGS_WHITELIST'><filename>LICENSE_FLAGS_WHITELIST</filename></ulink>
+ variable, which is a variable typically defined in your
+ <filename>local.conf</filename> file.
+ For example, to enable the
+ <filename>poky/meta/recipes-multimedia/gstreamer/gst-plugins-ugly</filename>
+ package, you could add either the string
+ "commercial_gst-plugins-ugly" or the more general string
+ "commercial" to <filename>LICENSE_FLAGS_WHITELIST</filename>.
+ See the
+ "<link linkend='license-flag-matching'>License Flag Matching</link>"
+ section for a full
+ explanation of how <filename>LICENSE_FLAGS</filename> matching
+ works.
+ Here is the example:
+ <literallayout class='monospaced'>
+ LICENSE_FLAGS_WHITELIST = "commercial_gst-plugins-ugly"
+ </literallayout>
+ Likewise, to additionally enable the package built from the
+ recipe containing
+ <filename>LICENSE_FLAGS = "license_${PN}_${PV}"</filename>,
+ and assuming that the actual recipe name was
+ <filename>emgd_1.10.bb</filename>, the following string would
+ enable that package as well as the original
+ <filename>gst-plugins-ugly</filename> package:
+ <literallayout class='monospaced'>
+ LICENSE_FLAGS_WHITELIST = "commercial_gst-plugins-ugly license_emgd_1.10"
+ </literallayout>
+ As a convenience, you do not need to specify the complete
+ license string in the whitelist for every package.
+ You can use an abbreviated form, which consists
+ of just the first portion or portions of the license
+ string before the initial underscore character or characters.
+ A partial string will match any license that contains the
+ given string as the first portion of its license.
+ For example, the following whitelist string will also match
+ both of the packages previously mentioned as well as any other
+ packages that have licenses starting with "commercial" or
+ "license".
+ <literallayout class='monospaced'>
+ LICENSE_FLAGS_WHITELIST = "commercial license"
+ </literallayout>
+ </para>
+
+ <section id="license-flag-matching">
+ <title>License Flag Matching</title>
+
+ <para>
+ License flag matching allows you to control what recipes
+ the OpenEmbedded build system includes in the build.
+ Fundamentally, the build system attempts to match
+ <filename>LICENSE_FLAGS</filename> strings found in recipes
+ against <filename>LICENSE_FLAGS_WHITELIST</filename>
+ strings found in the whitelist.
+ A match causes the build system to include a recipe in the
+ build, while failure to find a match causes the build
+ system to exclude a recipe.
+ </para>
+
+ <para>
+ In general, license flag matching is simple.
+ However, understanding some concepts will help you
+ correctly and effectively use matching.
+ </para>
+
+ <para>
+ Before a flag
+ defined by a particular recipe is tested against the
+ contents of the whitelist, the expanded string
+ <filename>_${PN}</filename> is appended to the flag.
+ This expansion makes each
+ <filename>LICENSE_FLAGS</filename> value recipe-specific.
+ After expansion, the string is then matched against the
+ whitelist.
+ Thus, specifying
+ <filename>LICENSE_FLAGS = "commercial"</filename>
+ in recipe "foo", for example, results in the string
+ <filename>"commercial_foo"</filename>.
+ And, to create a match, that string must appear in the
+ whitelist.
+ </para>
+
+ <para>
+ Judicious use of the <filename>LICENSE_FLAGS</filename>
+ strings and the contents of the
+ <filename>LICENSE_FLAGS_WHITELIST</filename> variable
+ allows you a lot of flexibility for including or excluding
+ recipes based on licensing.
+ For example, you can broaden the matching capabilities by
+ using license flags string subsets in the whitelist.
+ <note>
+ When using a string subset, be sure to use the part of
+ the expanded string that precedes the appended
+ underscore character (e.g.
+ <filename>usethispart_1.3</filename>,
+ <filename>usethispart_1.4</filename>, and so forth).
+ </note>
+ For example, simply specifying the string "commercial" in
+ the whitelist matches any expanded
+ <filename>LICENSE_FLAGS</filename> definition that starts
+ with the string "commercial" such as "commercial_foo" and
+ "commercial_bar", which are the strings the build system
+ automatically generates for hypothetical recipes named
+ "foo" and "bar" assuming those recipes simply specify the
+ following:
+ <literallayout class='monospaced'>
+ LICENSE_FLAGS = "commercial"
+ </literallayout>
+ Thus, you can choose to exhaustively
+ enumerate each license flag in the whitelist and
+ allow only specific recipes into the image, or
+ you can use a string subset that causes a broader range of
+ matches to allow a range of recipes into the image.
+ </para>
+
+ <para>
+ This scheme works even if the
+ <filename>LICENSE_FLAGS</filename> string already
+ has <filename>_${PN}</filename> appended.
+ For example, the build system turns the license flag
+ "commercial_1.2_foo" into "commercial_1.2_foo_foo" and
+ would match both the general "commercial" and the specific
+ "commercial_1.2_foo" strings found in the whitelist, as
+ expected.
+ </para>
+
+ <para>
+ Here are some other scenarios:
+ <itemizedlist>
+ <listitem><para>
+ You can specify a versioned string in the recipe
+ such as "commercial_foo_1.2" in a "foo" recipe.
+ The build system expands this string to
+ "commercial_foo_1.2_foo".
+ Combine this license flag with a whitelist that has
+ the string "commercial" and you match the flag
+ along with any other flag that starts with the
+ string "commercial".
+ </para></listitem>
+ <listitem><para>
+ Under the same circumstances, you can use
+ "commercial_foo" in the whitelist and the build
+ system not only matches "commercial_foo_1.2" but
+ also matches any license flag with the string
+ "commercial_foo", regardless of the version.
+ </para></listitem>
+ <listitem><para>
+ You can be very specific and use both the
+ package and version parts in the whitelist (e.g.
+ "commercial_foo_1.2") to specifically match a
+ versioned recipe.
+ </para></listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section id="other-variables-related-to-commercial-licenses">
+ <title>Other Variables Related to Commercial Licenses</title>
+
+ <para>
+ Other helpful variables related to commercial
+ license handling exist and are defined in the
+ <filename>poky/meta/conf/distro/include/default-distrovars.inc</filename> file:
+ <literallayout class='monospaced'>
+ COMMERCIAL_AUDIO_PLUGINS ?= ""
+ COMMERCIAL_VIDEO_PLUGINS ?= ""
+ </literallayout>
+ If you want to enable these components, you can do so by
+ making sure you have statements similar to the following
+ in your <filename>local.conf</filename> configuration file:
+ <literallayout class='monospaced'>
+ COMMERCIAL_AUDIO_PLUGINS = "gst-plugins-ugly-mad \
+ gst-plugins-ugly-mpegaudioparse"
+ COMMERCIAL_VIDEO_PLUGINS = "gst-plugins-ugly-mpeg2dec \
+ gst-plugins-ugly-mpegstream gst-plugins-bad-mpegvideoparse"
+ LICENSE_FLAGS_WHITELIST = "commercial_gst-plugins-ugly commercial_gst-plugins-bad commercial_qmmp"
+ </literallayout>
+ Of course, you could also create a matching whitelist
+ for those components using the more general "commercial"
+ in the whitelist, but that would also enable all the
+ other packages with <filename>LICENSE_FLAGS</filename>
+ containing "commercial", which you may or may not want:
+ <literallayout class='monospaced'>
+ LICENSE_FLAGS_WHITELIST = "commercial"
+ </literallayout>
+ </para>
+
+ <para>
+ Specifying audio and video plug-ins as part of the
+ <filename>COMMERCIAL_AUDIO_PLUGINS</filename> and
+ <filename>COMMERCIAL_VIDEO_PLUGINS</filename> statements
+ (along with the enabling
+ <filename>LICENSE_FLAGS_WHITELIST</filename>) includes the
+ plug-ins or components into built images, thus adding
+ support for media formats or components.
+ </para>
+ </section>
+ </section>
+
+ <section id='maintaining-open-source-license-compliance-during-your-products-lifecycle'>
+ <title>Maintaining Open Source License Compliance During Your Product's Lifecycle</title>
+
+ <para>
+ One of the concerns for a development organization using open source
+ software is how to maintain compliance with various open source
+ licensing during the lifecycle of the product.
+ While this section does not provide legal advice or
+ comprehensively cover all scenarios, it does
+ present methods that you can use to
+ assist you in meeting the compliance requirements during a software
+ release.
</para>
<para>
- A way to help mitigate the size issue is to only release
- tarballs for licenses that require the release of
- source.
- Let us assume you are only concerned with GPL code as
- identified by running the following script:
- <literallayout class='monospaced'>
+ With hundreds of different open source licenses that the Yocto
+ Project tracks, it is difficult to know the requirements of each
+ and every license.
+ However, the requirements of the major FLOSS licenses can begin
+ to be covered by
+ assuming that three main areas of concern exist:
+ <itemizedlist>
+ <listitem><para>Source code must be provided.</para></listitem>
+ <listitem><para>License text for the software must be
+ provided.</para></listitem>
+ <listitem><para>Compilation scripts and modifications to the
+ source code must be provided.
+ </para></listitem>
+ </itemizedlist>
+ There are other requirements beyond the scope of these
+ three and the methods described in this section
+ (e.g. the mechanism through which source code is distributed).
+ </para>
+
+ <para>
+ As different organizations have different methods of complying with
+ open source licensing, this section is not meant to imply that
+ there is only one single way to meet your compliance obligations,
+ but rather to describe one method of achieving compliance.
+ The remainder of this section describes methods supported to meet the
+ previously mentioned three requirements.
+ Once you take steps to meet these requirements,
+ and prior to releasing images, sources, and the build system,
+ you should audit all artifacts to ensure completeness.
+ <note>
+ The Yocto Project generates a license manifest during
+ image creation that is located
+ in <filename>${DEPLOY_DIR}/licenses/<replaceable>image_name-datestamp</replaceable></filename>
+ to assist with any audits.
+ </note>
+ </para>
+
+ <section id='providing-the-source-code'>
+ <title>Providing the Source Code</title>
+
+ <para>
+ Compliance activities should begin before you generate the
+ final image.
+ The first thing you should look at is the requirement that
+ tops the list for most compliance groups - providing
+ the source.
+ The Yocto Project has a few ways of meeting this
+ requirement.
+ </para>
+
+ <para>
+ One of the easiest ways to meet this requirement is
+ to provide the entire
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-DL_DIR'><filename>DL_DIR</filename></ulink>
+ used by the build.
+ This method, however, has a few issues.
+ The most obvious is the size of the directory since it includes
+ all sources used in the build and not just the source used in
+ the released image.
+ It will include toolchain source, and other artifacts, which
+ you would not generally release.
+ However, the more serious issue for most companies is accidental
+ release of proprietary software.
+ The Yocto Project provides an
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-archiver'><filename>archiver</filename></ulink>
+ class to help avoid some of these concerns.
+ </para>
+
+ <para>
+ Before you employ <filename>DL_DIR</filename> or the
+ <filename>archiver</filename> class, you need to decide how
+ you choose to provide source.
+ The source <filename>archiver</filename> class can generate
+ tarballs and SRPMs and can create them with various levels of
+ compliance in mind.
+ </para>
+
+ <para>
+ One way of doing this (but certainly not the only way) is to
+ release just the source as a tarball.
+ You can do this by adding the following to the
+ <filename>local.conf</filename> file found in the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>:
+ <literallayout class='monospaced'>
+ INHERIT += "archiver"
+ ARCHIVER_MODE[src] = "original"
+ </literallayout>
+ During the creation of your image, the source from all
+ recipes that deploy packages to the image is placed within
+ subdirectories of
+ <filename>DEPLOY_DIR/sources</filename> based on the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE'><filename>LICENSE</filename></ulink>
+ for each recipe.
+ Releasing the entire directory enables you to comply with
+ requirements concerning providing the unmodified source.
+ It is important to note that the size of the directory can
+ get large.
+ </para>
+
+ <para>
+ A way to help mitigate the size issue is to only release
+ tarballs for licenses that require the release of
+ source.
+ Let us assume you are only concerned with GPL code as
+ identified by running the following script:
+ <literallayout class='monospaced'>
# Script to archive a subset of packages matching specific license(s)
# Source and license files are copied into sub folders of package folder
# Must be run from build folder
@@ -13501,96 +15052,97 @@ Some notes from Cal:
cp tmp/deploy/licenses/$p/* $src_release_dir/$p/license 2> /dev/null
fi
done
- done </literallayout>
- At this point, you could create a tarball from the
- <filename>gpl_source_release</filename> directory and
- provide that to the end user.
- This method would be a step toward achieving compliance
- with section 3a of GPLv2 and with section 6 of GPLv3.
- </para>
- </section>
+ done
+ </literallayout>
+ At this point, you could create a tarball from the
+ <filename>gpl_source_release</filename> directory and
+ provide that to the end user.
+ This method would be a step toward achieving compliance
+ with section 3a of GPLv2 and with section 6 of GPLv3.
+ </para>
+ </section>
- <section id='providing-license-text'>
- <title>Providing License Text</title>
+ <section id='providing-license-text'>
+ <title>Providing License Text</title>
- <para>
- One requirement that is often overlooked is inclusion
- of license text.
- This requirement also needs to be dealt with prior to
- generating the final image.
- Some licenses require the license text to accompany
- the binary.
- You can achieve this by adding the following to your
- <filename>local.conf</filename> file:
- <literallayout class='monospaced'>
+ <para>
+ One requirement that is often overlooked is inclusion
+ of license text.
+ This requirement also needs to be dealt with prior to
+ generating the final image.
+ Some licenses require the license text to accompany
+ the binary.
+ You can achieve this by adding the following to your
+ <filename>local.conf</filename> file:
+ <literallayout class='monospaced'>
COPY_LIC_MANIFEST = "1"
COPY_LIC_DIRS = "1"
LICENSE_CREATE_PACKAGE = "1"
- </literallayout>
- Adding these statements to the configuration file ensures
- that the licenses collected during package generation
- are included on your image.
- <note>
- <para>Setting all three variables to "1" results in the
- image having two copies of the same license file.
- One copy resides in
- <filename>/usr/share/common-licenses</filename> and
- the other resides in
- <filename>/usr/share/license</filename>.</para>
-
- <para>The reason for this behavior is because
- <ulink url='&YOCTO_DOCS_REF_URL;#var-COPY_LIC_DIRS'><filename>COPY_LIC_DIRS</filename></ulink>
- and
- <ulink url='&YOCTO_DOCS_REF_URL;#var-COPY_LIC_MANIFEST'><filename>COPY_LIC_MANIFEST</filename></ulink>
- add a copy of the license when the image is built but do
- not offer a path for adding licenses for newly installed
- packages to an image.
- <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE_CREATE_PACKAGE'><filename>LICENSE_CREATE_PACKAGE</filename></ulink>
- adds a separate package and an upgrade path for adding
- licenses to an image.</para>
- </note>
- </para>
+ </literallayout>
+ Adding these statements to the configuration file ensures
+ that the licenses collected during package generation
+ are included on your image.
+ <note>
+ <para>Setting all three variables to "1" results in the
+ image having two copies of the same license file.
+ One copy resides in
+ <filename>/usr/share/common-licenses</filename> and
+ the other resides in
+ <filename>/usr/share/license</filename>.</para>
+
+ <para>The reason for this behavior is because
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-COPY_LIC_DIRS'><filename>COPY_LIC_DIRS</filename></ulink>
+ and
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-COPY_LIC_MANIFEST'><filename>COPY_LIC_MANIFEST</filename></ulink>
+ add a copy of the license when the image is built but do
+ not offer a path for adding licenses for newly installed
+ packages to an image.
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE_CREATE_PACKAGE'><filename>LICENSE_CREATE_PACKAGE</filename></ulink>
+ adds a separate package and an upgrade path for adding
+ licenses to an image.</para>
+ </note>
+ </para>
- <para>
- As the source <filename>archiver</filename> class has already
- archived the original
- unmodified source that contains the license files,
- you would have already met the requirements for inclusion
- of the license information with source as defined by the GPL
- and other open source licenses.
- </para>
- </section>
+ <para>
+ As the source <filename>archiver</filename> class has already
+ archived the original
+ unmodified source that contains the license files,
+ you would have already met the requirements for inclusion
+ of the license information with source as defined by the GPL
+ and other open source licenses.
+ </para>
+ </section>
- <section id='providing-compilation-scripts-and-source-code-modifications'>
- <title>Providing Compilation Scripts and Source Code Modifications</title>
+ <section id='providing-compilation-scripts-and-source-code-modifications'>
+ <title>Providing Compilation Scripts and Source Code Modifications</title>
- <para>
- At this point, we have addressed all we need to
- prior to generating the image.
- The next two requirements are addressed during the final
- packaging of the release.
- </para>
+ <para>
+ At this point, we have addressed all we need to
+ prior to generating the image.
+ The next two requirements are addressed during the final
+ packaging of the release.
+ </para>
- <para>
- By releasing the version of the OpenEmbedded build system
- and the layers used during the build, you will be providing both
- compilation scripts and the source code modifications in one
- step.
- </para>
+ <para>
+ By releasing the version of the OpenEmbedded build system
+ and the layers used during the build, you will be providing both
+ compilation scripts and the source code modifications in one
+ step.
+ </para>
- <para>
- If the deployment team has a
- <ulink url='&YOCTO_DOCS_BSP_URL;#bsp-layers'>BSP layer</ulink>
- and a distro layer, and those those layers are used to patch,
- compile, package, or modify (in any way) any open source
- software included in your released images, you
- might be required to release those layers under section 3 of
- GPLv2 or section 1 of GPLv3.
- One way of doing that is with a clean
- checkout of the version of the Yocto Project and layers used
- during your build.
- Here is an example:
- <literallayout class='monospaced'>
+ <para>
+ If the deployment team has a
+ <ulink url='&YOCTO_DOCS_BSP_URL;#bsp-layers'>BSP layer</ulink>
+ and a distro layer, and those those layers are used to patch,
+ compile, package, or modify (in any way) any open source
+ software included in your released images, you
+ might be required to release those layers under section 3 of
+ GPLv2 or section 1 of GPLv3.
+ One way of doing that is with a clean
+ checkout of the version of the Yocto Project and layers used
+ during your build.
+ Here is an example:
+ <literallayout class='monospaced'>
# We built using the &DISTRO_NAME_NO_CAP; branch of the poky repo
$ git clone -b &DISTRO_NAME_NO_CAP; git://git.yoctoproject.org/poky
$ cd poky
@@ -13599,18 +15151,18 @@ Some notes from Cal:
$ git clone -b release_branch git://git.mycompany.com/meta-my-software-layer
# clean up the .git repos
$ find . -name ".git" -type d -exec rm -rf {} \;
- </literallayout>
- One thing a development organization might want to consider
- for end-user convenience is to modify
- <filename>meta-poky/conf/bblayers.conf.sample</filename> to
- ensure that when the end user utilizes the released build
- system to build an image, the development organization's
- layers are included in the <filename>bblayers.conf</filename>
- file automatically:
- <literallayout class='monospaced'>
- # LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
+ </literallayout>
+ One thing a development organization might want to consider
+ for end-user convenience is to modify
+ <filename>meta-poky/conf/bblayers.conf.sample</filename> to
+ ensure that when the end user utilizes the released build
+ system to build an image, the development organization's
+ layers are included in the <filename>bblayers.conf</filename>
+ file automatically:
+ <literallayout class='monospaced'>
+ # POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
- LCONF_VERSION = "6"
+ POKY_BBLAYERS_CONF_VERSION = "2"
BBPATH = "${TOPDIR}"
BBFILES ?= ""
@@ -13621,13 +15173,39 @@ Some notes from Cal:
##OEROOT##/meta-yocto-bsp \
##OEROOT##/meta-mylayer \
"
+ </literallayout>
+ Creating and providing an archive of the
+ <ulink url='&YOCTO_DOCS_REF_URL;#metadata'>Metadata</ulink>
+ layers (recipes, configuration files, and so forth)
+ enables you to meet your
+ requirements to include the scripts to control compilation
+ as well as any modifications to the original source.
+ </para>
+ </section>
+ </section>
+
+ <section id='copying-licenses-that-do-not-exist'>
+ <title>Copying Licenses that Do Not Exist</title>
+
+ <para>
+ Some packages, such as the linux-firmware package, have many
+ licenses that are not in any way common.
+ You can avoid adding a lot of these types of common license
+ files, which are only applicable to a specific package, by using
+ the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-NO_GENERIC_LICENSE'><filename>NO_GENERIC_LICENSE</filename></ulink>
+ variable.
+ Using this variable also avoids QA errors when you use a
+ non-common, non-CLOSED license in a recipe.
+ </para>
+
+ <para>
+ The following is an example that uses the
+ <filename>LICENSE.Abilis.txt</filename>
+ file as the license from the fetched source:
+ <literallayout class='monospaced'>
+ NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENSE.Abilis.txt"
</literallayout>
- Creating and providing an archive of the
- <ulink url='&YOCTO_DOCS_REF_URL;#metadata'>Metadata</ulink>
- layers (recipes, configuration files, and so forth)
- enables you to meet your
- requirements to include the scripts to control compilation
- as well as any modifications to the original source.
</para>
</section>
</section>
@@ -13747,6 +15325,136 @@ Some notes from Cal:
</para>
</section>
</section>
+
+ <section id="dev-using-wayland-and-weston">
+ <title>Using Wayland and Weston</title>
+
+ <para>
+ <ulink url='http://en.wikipedia.org/wiki/Wayland_(display_server_protocol)'>Wayland</ulink>
+ is a computer display server protocol that
+ provides a method for compositing window managers to communicate
+ directly with applications and video hardware and expects them to
+ communicate with input hardware using other libraries.
+ Using Wayland with supporting targets can result in better control
+ over graphics frame rendering than an application might otherwise
+ achieve.
+ </para>
+
+ <para>
+ The Yocto Project provides the Wayland protocol libraries and the
+ reference
+ <ulink url='http://en.wikipedia.org/wiki/Wayland_(display_server_protocol)#Weston'>Weston</ulink>
+ compositor as part of its release.
+ You can find the integrated packages in the
+ <filename>meta</filename> layer of the
+ <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>.
+ Specifically, you can find the recipes that build both Wayland
+ and Weston at <filename>meta/recipes-graphics/wayland</filename>.
+ </para>
+
+ <para>
+ You can build both the Wayland and Weston packages for use only
+ with targets that accept the
+ <ulink url='https://en.wikipedia.org/wiki/Mesa_(computer_graphics)'>Mesa 3D and Direct Rendering Infrastructure</ulink>,
+ which is also known as Mesa DRI.
+ This implies that you cannot build and use the packages if your
+ target uses, for example, the
+ <trademark class='registered'>Intel</trademark> Embedded Media
+ and Graphics Driver
+ (<trademark class='registered'>Intel</trademark> EMGD) that
+ overrides Mesa DRI.
+ <note>
+ Due to lack of EGL support, Weston 1.0.3 will not run
+ directly on the emulated QEMU hardware.
+ However, this version of Weston will run under X emulation
+ without issues.
+ </note>
+ </para>
+
+ <para>
+ This section describes what you need to do to implement Wayland and
+ use the Weston compositor when building an image for a supporting
+ target.
+ </para>
+
+ <section id="enabling-wayland-in-an-image">
+ <title>Enabling Wayland in an Image</title>
+
+ <para>
+ To enable Wayland, you need to enable it to be built and enable
+ it to be included (installed) in the image.
+ </para>
+
+ <section id="enable-building">
+ <title>Building</title>
+
+ <para>
+ To cause Mesa to build the <filename>wayland-egl</filename>
+ platform and Weston to build Wayland with Kernel Mode
+ Setting
+ (<ulink url='https://wiki.archlinux.org/index.php/Kernel_Mode_Setting'>KMS</ulink>)
+ support, include the "wayland" flag in the
+ <ulink url="&YOCTO_DOCS_REF_URL;#var-DISTRO_FEATURES"><filename>DISTRO_FEATURES</filename></ulink>
+ statement in your <filename>local.conf</filename> file:
+ <literallayout class='monospaced'>
+ DISTRO_FEATURES_append = " wayland"
+ </literallayout>
+ <note>
+ If X11 has been enabled elsewhere, Weston will build
+ Wayland with X11 support
+ </note>
+ </para>
+ </section>
+
+ <section id="enable-installation-in-an-image">
+ <title>Installing</title>
+
+ <para>
+ To install the Wayland feature into an image, you must
+ include the following
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-CORE_IMAGE_EXTRA_INSTALL'><filename>CORE_IMAGE_EXTRA_INSTALL</filename></ulink>
+ statement in your <filename>local.conf</filename> file:
+ <literallayout class='monospaced'>
+ CORE_IMAGE_EXTRA_INSTALL += "wayland weston"
+ </literallayout>
+ </para>
+ </section>
+ </section>
+
+ <section id="running-weston">
+ <title>Running Weston</title>
+
+ <para>
+ To run Weston inside X11, enabling it as described earlier and
+ building a Sato image is sufficient.
+ If you are running your image under Sato, a Weston Launcher
+ appears in the "Utility" category.
+ </para>
+
+ <para>
+ Alternatively, you can run Weston through the command-line
+ interpretor (CLI), which is better suited for development work.
+ To run Weston under the CLI, you need to do the following after
+ your image is built:
+ <orderedlist>
+ <listitem><para>
+ Run these commands to export
+ <filename>XDG_RUNTIME_DIR</filename>:
+ <literallayout class='monospaced'>
+ mkdir -p /tmp/$USER-weston
+ chmod 0700 /tmp/$USER-weston
+ export XDG_RUNTIME_DIR=/tmp/$USER-weston
+ </literallayout>
+ </para></listitem>
+ <listitem><para>
+ Launch Weston in the shell:
+ <literallayout class='monospaced'>
+ weston
+ </literallayout></para></listitem>
+ </orderedlist>
+ </para>
+ </section>
+ </section>
</chapter>
<!--
diff --git a/documentation/dev-manual/dev-manual-intro.xml b/documentation/dev-manual/dev-manual-intro.xml
index 47c80061bee..3a34094b8c0 100644
--- a/documentation/dev-manual/dev-manual-intro.xml
+++ b/documentation/dev-manual/dev-manual-intro.xml
@@ -16,42 +16,38 @@
The manual groups related procedures into higher-level sections.
Procedures can consist of high-level steps or low-level steps
depending on the topic.
- You can find conceptual information related to a procedure by
- following appropriate links to the Yocto Project Reference
- Manual.
</para>
<para>
- The following list describes what you can get from this manual:
+ This manual provides the following:
<itemizedlist>
<listitem><para>
- <emphasis>Setup Procedures:</emphasis>
- Procedures that show you how to set
- up a Yocto Project Development environment and how
- to accomplish the change workflow through logging
- defects and submitting changes.
+ Procedures that help you get going with the Yocto Project.
+ For example, procedures that show you how to set up
+ a build host and work with the Yocto Project
+ source repositories.
</para></listitem>
<listitem><para>
- <emphasis>Emulation Procedures:</emphasis>
- Procedures that show you how to use the
- Yocto Project integrated QuickEMUlator (QEMU), which lets
- you simulate running on hardware an image you have built
- using the OpenEmbedded build system.
+ Procedures that show you how to submit changes to the
+ Yocto Project.
+ Changes can be improvements, new features, or bug
+ fixes.
</para></listitem>
<listitem><para>
- <emphasis>Common Procedures:</emphasis>
Procedures related to "everyday" tasks you perform while
developing images and applications using the Yocto
Project.
+ For example, procedures to create a layer, customize an
+ image, write a new recipe, and so forth.
</para></listitem>
</itemizedlist>
</para>
<para>
- This manual will not give you the following:
+ This manual does not provide the following:
<itemizedlist>
<listitem><para>
- <emphasis>Redundant Step-by-step Instructions:</emphasis>
+ Redundant Step-by-step Instructions:
For example, the
<ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
manual contains detailed instructions on how to install an
@@ -59,14 +55,15 @@
hardware.
</para></listitem>
<listitem><para>
- <emphasis>Reference or Conceptual Material:</emphasis>
- This type of material resides in an appropriate reference manual.
+ Reference or Conceptual Material:
+ This type of material resides in an appropriate reference
+ manual.
For example, system variables are documented in the
<ulink url='&YOCTO_DOCS_REF_URL;'>Yocto Project Reference Manual</ulink>.
</para></listitem>
<listitem><para>
- <emphasis>Detailed Public Information Not Specific to the
- Yocto Project:</emphasis>
+ Detailed Public Information Not Specific to the
+ Yocto Project:
For example, exhaustive information on how to use the
Source Control Manager Git is better covered with Internet
searches and official Git Documentation than through the
@@ -85,9 +82,10 @@
comprehension.
For introductory information on the Yocto Project, see the
<ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink>.
- You can find an introductory to using the Yocto Project by working
- through the
- <ulink url='&YOCTO_DOCS_QS_URL;'>Yocto Project Quick Start</ulink>.
+ If you want to build an image with no knowledge of Yocto Project
+ as a way of quickly testing it out, see the
+ <ulink url='&YOCTO_DOCS_BRIEF_URL;'>Yocto Project Quick Build</ulink>
+ document.
</para>
<para>
diff --git a/documentation/dev-manual/dev-manual-newbie.xml b/documentation/dev-manual/dev-manual-newbie.xml
deleted file mode 100644
index 68c8d9bbea6..00000000000
--- a/documentation/dev-manual/dev-manual-newbie.xml
+++ /dev/null
@@ -1,990 +0,0 @@
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
-"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
-[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
-
-<chapter id='dev-manual-newbie'>
-
-<title>The Yocto Project Open Source Development Environment</title>
-
-<section id="usingpoky-changes-collaborate">
- <title>Setting Up a Team Yocto Project Development Environment</title>
-
- <para>
- It might not be immediately clear how you can use the Yocto
- Project in a team development environment, or scale it for a large
- team of developers.
- One of the strengths of the Yocto Project is that it is extremely
- flexible.
- Thus, you can adapt it to many different use cases and scenarios.
- However, these characteristics can cause a struggle if you are trying
- to create a working setup that scales across a large team.
- </para>
-
- <para>
- To help you understand how to set up this type of environment,
- this section presents a procedure that gives you the information
- to learn how to get the results you want.
- The procedure is high-level and presents some of the project's most
- successful experiences, practices, solutions, and available
- technologies that work well.
- Keep in mind, the procedure here is a starting point.
- You can build off it and customize it to fit any
- particular working environment and set of practices.
- <orderedlist>
- <listitem><para>
- <emphasis>Determine Who is Going to be Developing:</emphasis>
- You need to understand who is going to be doing anything
- related to the Yocto Project and what their roles would be.
- Making this determination is essential to completing the
- steps two and three, which are to get your equipment together
- and set up your development environment's hardware topology.
- </para>
-
- <para>The following roles exist:
- <itemizedlist>
- <listitem><para>
- <emphasis>Application Development:</emphasis>
- These types of developers do application level work
- on top of an existing software stack.
- </para></listitem>
- <listitem><para>
- <emphasis>Core System Development:</emphasis>
- These types of developers work on the contents of the
- operating system image itself.
- </para></listitem>
- <listitem><para>
- <emphasis>Build Engineer:</emphasis>
- This type of developer manages Autobuilders and
- releases.
- Not all environments need a Build Engineer.
- </para></listitem>
- <listitem><para>
- <emphasis>Test Engineer:</emphasis>
- This type of developer creates and manages automated
- tests needed to ensure all application and core
- system development meets desired quality standards.
- </para></listitem>
- </itemizedlist>
- </para></listitem>
- <listitem><para>
- <emphasis>Gather the Hardware:</emphasis>
- Based on the size and make-up of the team, get the hardware
- together.
- Any development, build, or test engineer should be using
- a system that is running a supported Linux distribution.
- Systems, in general, should be high performance (e.g. dual,
- six-core Xeons with 24 Gbytes of RAM and plenty of disk space).
- You can help ensure efficiency by having any machines used
- for testing or that run Autobuilders be as high performance
- as possible.
- </para></listitem>
- <listitem><para>
- <emphasis>Understand the Hardware Topology of the Environment:</emphasis>
- Now that you know how many developers and support engineers
- are required, you can understand the topology of the
- hardware environment.
- The following figure shows a moderately sized Yocto Project
- development environment.
-
- <para role="writernotes">
- Need figure.</para>
-
- </para></listitem>
- <listitem><para>
- <emphasis>Use Git as Your Source Control Manager (SCM):</emphasis>
- Keeping your
- <ulink url='&YOCTO_DOCS_REF_URL;#metadata'>Metadata</ulink>
- and any software you are developing under the
- control of an SCM system that is compatible
- with the OpenEmbedded build system is advisable.
- Of the SCMs BitBake supports, the
- Yocto Project team strongly recommends using
- <ulink url='&YOCTO_DOCS_GS_URL;#git'>Git</ulink>.
- Git is a distributed system that is easy to backup,
- allows you to work remotely, and then connects back to the
- infrastructure.
- <note>
- For information about BitBake, see the
- <ulink url='&YOCTO_DOCS_BB_URL;'>BitBake User Manual</ulink>.
- </note></para>
-
- <para>It is relatively easy to set up Git services and create
- infrastructure like
- <ulink url='&YOCTO_GIT_URL;'>http://git.yoctoproject.org</ulink>,
- which is based on server software called
- <filename>gitolite</filename> with <filename>cgit</filename>
- being used to generate the web interface that lets you view the
- repositories.
- The <filename>gitolite</filename> software identifies users
- using SSH keys and allows branch-based
- access controls to repositories that you can control as little
- or as much as necessary.
-
- <note>
- The setup of these services is beyond the scope of this
- manual.
- However, sites such as these exist that describe how to
- perform setup:
- <itemizedlist>
- <listitem><para>
- <ulink url='http://git-scm.com/book/ch4-8.html'>Git documentation</ulink>:
- Describes how to install <filename>gitolite</filename>
- on the server.
- </para></listitem>
- <listitem><para>
- <ulink url='http://sitaramc.github.com/gitolite/master-toc.html'>The <filename>gitolite</filename> master index</ulink>:
- All topics for <filename>gitolite</filename>.
- </para></listitem>
- <listitem><para>
- <ulink url='https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools'>Interfaces, frontends, and tools</ulink>:
- Documentation on how to create interfaces and frontends
- for Git.
- </para></listitem>
- </itemizedlist>
- </note>
- </para></listitem>
- <listitem><para>
- <emphasis>Set up the Application Development Machines:</emphasis>
- As mentioned earlier, application developers are creating
- applications on top of existing software stacks.
- Following are some best practices for setting up machines
- that do application development:
- <itemizedlist>
- <listitem><para>
- Use a pre-built toolchain that
- contains the software stack itself.
- Then, develop the application code on top of the
- stack.
- This method works well for small numbers of relatively
- isolated applications.
- </para></listitem>
- <listitem><para>
- When possible, use the Yocto Project
- plug-in for the
- <trademark class='trade'>Eclipse</trademark> IDE
- and SDK development practices.
- For more information, see the
- "<ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>"
- manual.
- </para></listitem>
- <listitem><para>
- Keep your cross-development toolchains updated.
- You can do this through provisioning either as new
- toolchain downloads or as updates through a package
- update mechanism using <filename>opkg</filename>
- to provide updates to an existing toolchain.
- The exact mechanics of how and when to do this are a
- question for local policy.
- </para></listitem>
- <listitem><para>
- Use multiple toolchains installed locally
- into different locations to allow development across
- versions.
- </para></listitem>
- </itemizedlist>
- </para></listitem>
- <listitem><para>
- <emphasis>Set up the Core Development Machines:</emphasis>
- As mentioned earlier, these types of developers work on the
- contents of the operating system itself.
- Following are some best practices for setting up machines
- used for developing images:
- <itemizedlist>
- <listitem><para>
- Have the Yocto Project build system itself available on
- the developer workstations so developers can run their own
- builds and directly rebuild the software stack.
- </para></listitem>
- <listitem><para>
- Keep the core system unchanged as much as
- possible and do your work in layers on top of the
- core system.
- Doing so gives you a greater level of portability when
- upgrading to new versions of the core system or Board
- Support Packages (BSPs).
- </para></listitem>
- <listitem><para>
- Share layers amongst the developers of a
- particular project and contain the policy configuration
- that defines the project.
- </para></listitem>
- </itemizedlist>
- </para></listitem>
- <listitem><para>
- <emphasis>Set up an Autobuilder:</emphasis>
- Autobuilders are often the core of the development
- environment.
- It is here that changes from individual developers are brought
- together and centrally tested and subsequent decisions about
- releases can be made.
- Autobuilders also allow for "continuous integration" style
- testing of software components and regression identification
- and tracking.</para>
-
- <para>See "<ulink url='http://autobuilder.yoctoproject.org'>Yocto Project Autobuilder</ulink>"
- for more information and links to buildbot.
- The Yocto Project team has found this implementation
- works well in this role.
- A public example of this is the Yocto Project
- Autobuilders, which we use to test the overall health of the
- project.</para>
-
- <para>The features of this system are:
- <itemizedlist>
- <listitem><para>
- Highlights when commits break the build.
- </para></listitem>
- <listitem><para>
- Populates an sstate cache from which
- developers can pull rather than requiring local
- builds.
- </para></listitem>
- <listitem><para>
- Allows commit hook triggers,
- which trigger builds when commits are made.
- </para></listitem>
- <listitem><para>
- Allows triggering of automated image booting
- and testing under the QuickEMUlator (QEMU).
- </para></listitem>
- <listitem><para>
- Supports incremental build testing and
- from-scratch builds.
- </para></listitem>
- <listitem><para>
- Shares output that allows developer
- testing and historical regression investigation.
- </para></listitem>
- <listitem><para>
- Creates output that can be used for releases.
- </para></listitem>
- <listitem><para>
- Allows scheduling of builds so that resources
- can be used efficiently.
- </para></listitem>
- </itemizedlist>
- </para></listitem>
- <listitem><para>
- <emphasis>Set up Test Machines:</emphasis>
- Use a small number of shared, high performance systems
- for testing purposes.
- Developers can use these systems for wider, more
- extensive testing while they continue to develop
- locally using their primary development system.
- </para></listitem>
- <listitem><para>
- <emphasis>Document Policies and Change Flow:</emphasis>
- The Yocto Project itself uses a hierarchical structure and a
- pull model.
- Scripts exist to create and send pull requests
- (i.e. <filename>create-pull-request</filename> and
- <filename>send-pull-request</filename>).
- This model is in line with other open source projects where
- maintainers are responsible for specific areas of the project
- and a single maintainer handles the final "top-of-tree" merges.
- <note>
- You can also use a more collective push model.
- The <filename>gitolite</filename> software supports both the
- push and pull models quite easily.
- </note></para>
-
- <para>As with any development environment, it is important
- to document the policy used as well as any main project
- guidelines so they are understood by everyone.
- It is also a good idea to have well structured
- commit messages, which are usually a part of a project's
- guidelines.
- Good commit messages are essential when looking back in time and
- trying to understand why changes were made.</para>
-
- <para>If you discover that changes are needed to the core
- layer of the project, it is worth sharing those with the
- community as soon as possible.
- Chances are if you have discovered the need for changes,
- someone else in the community needs them also.
- </para></listitem>
- <listitem><para>
- <emphasis>Development Environment Summary:</emphasis>
- Aside from the previous steps, some best practices exist
- within the Yocto Project development environment.
- Consider the following:
- <itemizedlist>
- <listitem><para>
- Use
- <ulink url='&YOCTO_DOCS_GS_URL;#git'>Git</ulink>
- as the source control system.
- </para></listitem>
- <listitem><para>
- Maintain your Metadata in layers that make sense
- for your situation.
- See the "<link linkend='understanding-and-creating-layers'>Understanding
- and Creating Layers</link>" section for more information on
- layers.
- </para></listitem>
- <listitem><para>
- Separate the project's Metadata and code by using
- separate Git repositories.
- See the
- "<ulink url='&YOCTO_DOCS_GS_URL;#yocto-project-repositories'>Yocto Project Source Repositories</ulink>"
- section for information on these repositories.
- See the
- "<link linkend='working-with-yocto-project-source-files'>Working With Yocto Project Source Files</link>"
- section for information on how to set up local Git
- repositories for related upstream Yocto Project
- Git repositories.
- </para></listitem>
- <listitem><para>
- Set up the directory for the shared state cache
- (<ulink url='&YOCTO_DOCS_REF_URL;#var-SSTATE_DIR'><filename>SSTATE_DIR</filename></ulink>)
- where it makes sense.
- For example, set up the sstate cache on a system used
- by developers in the same organization and share the
- same source directories on their machines.
- </para></listitem>
- <listitem><para>
- Set up an Autobuilder and have it populate the
- sstate cache and source directories.
- </para></listitem>
- <listitem><para>
- The Yocto Project community encourages you
- to send patches to the project to fix bugs or add features.
- If you do submit patches, follow the project commit
- guidelines for writing good commit messages.
- See the "<link linkend='how-to-submit-a-change'>Submitting a Change to the Yocto Project</link>"
- section.
- </para></listitem>
- <listitem><para>
- Send changes to the core sooner than later
- as others are likely to run into the same issues.
- For some guidance on mailing lists to use, see the list in the
- "<link linkend='how-to-submit-a-change'>Submitting a Change to the Yocto Project</link>"
- section.
- For a description of the available mailing lists, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#resources-mailinglist'>Mailing Lists</ulink>"
- section in the Yocto Project Reference Manual.
- </para></listitem>
- </itemizedlist>
- </para></listitem>
- </orderedlist>
- </para>
-</section>
-
-<section id='submitting-a-defect-against-the-yocto-project'>
- <title>Submitting a Defect Against the Yocto Project</title>
-
- <para>
- Use the Yocto Project implementation of
- <ulink url='http://www.bugzilla.org/about/'>Bugzilla</ulink>
- to submit a defect (bug) against the Yocto Project.
- For additional information on this implementation of Bugzilla see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#resources-bugtracker'>Yocto Project Bugzilla</ulink>"
- section in the Yocto Project Reference Manual.
- For more detail on any of the following steps, see the Yocto Project
- <ulink url='&YOCTO_WIKI_URL;/wiki/Bugzilla_Configuration_and_Bug_Tracking'>Bugzilla wiki page</ulink>.
- </para>
-
- <para>
- Use the following general steps to submit a bug"
-
- <orderedlist>
- <listitem><para>
- Open the Yocto Project implementation of
- <ulink url='&YOCTO_BUGZILLA_URL;'>Bugzilla</ulink>.
- </para></listitem>
- <listitem><para>
- Click "File a Bug" to enter a new bug.
- </para></listitem>
- <listitem><para>
- Choose the appropriate "Classification", "Product", and
- "Component" for which the bug was found.
- Bugs for the Yocto Project fall into one of several
- classifications, which in turn break down into several
- products and components.
- For example, for a bug against the
- <filename>meta-intel</filename> layer, you would choose
- "Build System, Metadata &amp; Runtime", "BSPs", and
- "bsps-meta-intel", respectively.
- </para></listitem>
- <listitem><para>
- Choose the "Version" of the Yocto Project for which you found
- the bug (e.g. &DISTRO;).
- </para></listitem>
- <listitem><para>
- Determine and select the "Severity" of the bug.
- The severity indicates how the bug impacted your work.
- </para></listitem>
- <listitem><para>
- Choose the "Hardware" that the bug impacts.
- </para></listitem>
- <listitem><para>
- Choose the "Architecture" that the bug impacts.
- </para></listitem>
- <listitem><para>
- Choose a "Documentation change" item for the bug.
- Fixing a bug might or might not affect the Yocto Project
- documentation.
- If you are unsure of the impact to the documentation, select
- "Don't Know".
- </para></listitem>
- <listitem><para>
- Provide a brief "Summary" of the bug.
- Try to limit your summary to just a line or two and be sure
- to capture the essence of the bug.
- </para></listitem>
- <listitem><para>
- Provide a detailed "Description" of the bug.
- You should provide as much detail as you can about the context,
- behavior, output, and so forth that surrounds the bug.
- You can even attach supporting files for output from logs by
- using the "Add an attachment" button.
- </para></listitem>
- <listitem><para>
- Click the "Submit Bug" button submit the bug.
- A new Bugzilla number is assigned to the bug and the defect
- is logged in the bug tracking system.
- </para></listitem>
- </orderedlist>
- Once you file a bug, the bug is processed by the Yocto Project Bug
- Triage Team and further details concerning the bug are assigned
- (e.g. priority and owner).
- You are the "Submitter" of the bug and any further categorization,
- progress, or comments on the bug result in Bugzilla sending you an
- automated email concerning the particular change or progress to the
- bug.
- </para>
-</section>
-
-<section id='how-to-submit-a-change'>
- <title>Submitting a Change to the Yocto Project</title>
-
- <para>
- Contributions to the Yocto Project and OpenEmbedded are very welcome.
- Because the system is extremely configurable and flexible, we recognize
- that developers will want to extend, configure or optimize it for
- their specific uses.
- </para>
-
- <para>
- The Yocto Project uses a mailing list and a patch-based workflow
- that is similar to the Linux kernel but contains important
- differences.
- In general, a mailing list exists through which you can submit
- patches.
- You should send patches to the appropriate mailing list so that they
- can be reviewed and merged by the appropriate maintainer.
- The specific mailing list you need to use depends on the
- location of the code you are changing.
- Each component (e.g. layer) should have a
- <filename>README</filename> file that indicates where to send
- the changes and which process to follow.
- </para>
-
- <para>
- You can send the patch to the mailing list using whichever approach
- you feel comfortable with to generate the patch.
- Once sent, the patch is usually reviewed by the community at large.
- If somebody has concerns with the patch, they will usually voice
- their concern over the mailing list.
- If a patch does not receive any negative reviews, the maintainer of
- the affected layer typically takes the patch, tests it, and then
- based on successful testing, merges the patch.
- </para>
-
- <para id='figuring-out-the-mailing-list-to-use'>
- The "poky" repository, which is the Yocto Project's reference build
- environment, is a hybrid repository that contains several
- individual pieces (e.g. BitBake, Metadata, documentation,
- and so forth) built using the combo-layer tool.
- The upstream location used for submitting changes varies by
- component:
- <itemizedlist>
- <listitem><para>
- <emphasis>Core Metadata:</emphasis>
- Send your patch to the
- <ulink url='http://lists.openembedded.org/mailman/listinfo/openembedded-core'>openembedded-core</ulink>
- mailing list. For example, a change to anything under
- the <filename>meta</filename> or
- <filename>scripts</filename> directories should be sent
- to this mailing list.
- </para></listitem>
- <listitem><para>
- <emphasis>BitBake:</emphasis>
- For changes to BitBake (i.e. anything under the
- <filename>bitbake</filename> directory), send your patch
- to the
- <ulink url='http://lists.openembedded.org/mailman/listinfo/bitbake-devel'>bitbake-devel</ulink>
- mailing list.
- </para></listitem>
- <listitem><para>
- <emphasis>"meta-*" trees:</emphasis>
- These trees contain Metadata.
- Use the
- <ulink url='https://lists.yoctoproject.org/listinfo/poky'>poky</ulink>
- mailing list.
- </para></listitem>
- </itemizedlist>
- </para>
-
- <para>
- For changes to other layers hosted in the Yocto Project source
- repositories (i.e. <filename>yoctoproject.org</filename>), tools,
- and the Yocto Project documentation, use the
- <ulink url='https://lists.yoctoproject.org/listinfo/yocto'>Yocto Project</ulink>
- general mailing list.
- <note>
- Sometimes a layer's documentation specifies to use a
- particular mailing list.
- If so, use that list.
- </note>
- For additional recipes that do not fit into the core Metadata, you
- should determine which layer the recipe should go into and submit
- the change in the manner recommended by the documentation (e.g.
- the <filename>README</filename> file) supplied with the layer.
- If in doubt, please ask on the Yocto general mailing list or on
- the openembedded-devel mailing list.
- </para>
-
- <para>
- You can also push a change upstream and request a maintainer to
- pull the change into the component's upstream repository.
- You do this by pushing to a contribution repository that is upstream.
- See the
- "<ulink url='&YOCTO_DOCS_GS_URL;#workflows'>Workflows</ulink>"
- section in the Getting Started With Yocto Project Manual for additional
- concepts on working in the Yocto Project development environment.
- </para>
-
- <para>
- Two commonly used testing repositories exist for
- OpenEmbedded-Core:
- <itemizedlist>
- <listitem><para>
- <emphasis>"ross/mut" branch:</emphasis>
- The "mut" (master-under-test) tree
- exists in the <filename>poky-contrib</filename> repository
- in the
- <ulink url='&YOCTO_GIT_URL;'>Yocto Project source repositories</ulink>.
- </para></listitem>
- <listitem><para>
- <emphasis>"master-next" branch:</emphasis>
- This branch is part of the main
- "poky" repository in the Yocto Project source repositories.
- </para></listitem>
- </itemizedlist>
- Maintainers use these branches to test submissions prior to merging
- patches.
- Thus, you can get an idea of the status of a patch based on
- whether the patch has been merged into one of these branches.
- <note>
- This system is imperfect and changes can sometimes get lost in the
- flow.
- Asking about the status of a patch or change is reasonable if the
- change has been idle for a while with no feedback.
- The Yocto Project does have plans to use
- <ulink url='https://en.wikipedia.org/wiki/Patchwork_(software)'>Patchwork</ulink>
- to track the status of patches and also to automatically preview
- patches.
- </note>
- </para>
-
- <para>
- The following sections provide procedures for submitting a change.
- </para>
-
- <section id='pushing-a-change-upstream'>
- <title>Using Scripts to Push a Change Upstream and Request a Pull</title>
-
- <para>
- Follow this procedure to push a change to an upstream "contrib"
- Git repository:
- <note>
- You can find general Git information on how to push a change
- upstream in the
- <ulink url='http://git-scm.com/book/en/v2/Distributed-Git-Distributed-Workflows'>Git Community Book</ulink>.
- </note>
- <orderedlist>
- <listitem><para>
- <emphasis>Make Your Changes Locally:</emphasis>
- Make your changes in your local Git repository.
- You should make small, controlled, isolated changes.
- Keeping changes small and isolated aids review,
- makes merging/rebasing easier and keeps the change
- history clean should anyone need to refer to it in
- future.
- </para></listitem>
- <listitem><para>
- <emphasis>Stage Your Changes:</emphasis>
- Stage your changes by using the <filename>git add</filename>
- command on each file you changed.
- </para></listitem>
- <listitem><para id='making-sure-you-have-correct-commit-information'>
- <emphasis>Commit Your Changes:</emphasis>
- Commit the change by using the
- <filename>git commit</filename> command.
- Make sure your commit information follows standards by
- following these accepted conventions:
- <itemizedlist>
- <listitem><para>
- Be sure to include a "Signed-off-by:" line in the
- same style as required by the Linux kernel.
- Adding this line signifies that you, the submitter,
- have agreed to the Developer's Certificate of
- Origin 1.1 as follows:
- <literallayout class='monospaced'>
- Developer's Certificate of Origin 1.1
-
- By making a contribution to this project, I certify that:
-
- (a) The contribution was created in whole or in part by me and I
- have the right to submit it under the open source license
- indicated in the file; or
-
- (b) The contribution is based upon previous work that, to the best
- of my knowledge, is covered under an appropriate open source
- license and I have the right under that license to submit that
- work with modifications, whether created in whole or in part
- by me, under the same open source license (unless I am
- permitted to submit under a different license), as indicated
- in the file; or
-
- (c) The contribution was provided directly to me by some other
- person who certified (a), (b) or (c) and I have not modified
- it.
-
- (d) I understand and agree that this project and the contribution
- are public and that a record of the contribution (including all
- personal information I submit with it, including my sign-off) is
- maintained indefinitely and may be redistributed consistent with
- this project or the open source license(s) involved.
- </literallayout>
- </para></listitem>
- <listitem><para>
- Provide a single-line summary of the change.
- and,
- if more explanation is needed, provide more
- detail in the body of the commit.
- This summary is typically viewable in the
- "shortlist" of changes.
- Thus, providing something short and descriptive
- that gives the reader a summary of the change is
- useful when viewing a list of many commits.
- You should prefix this short description with the
- recipe name (if changing a recipe), or else with
- the short form path to the file being changed.
- </para></listitem>
- <listitem><para>
- For the body of the commit message, provide
- detailed information that describes what you
- changed, why you made the change, and the approach
- you used.
- It might also be helpful if you mention how you
- tested the change.
- Provide as much detail as you can in the body of
- the commit message.
- <note>
- You do not need to provide a more detailed
- explanation of a change if the change is
- minor to the point of the single line
- summary providing all the information.
- </note>
- </para></listitem>
- <listitem><para>
- If the change addresses a specific bug or issue
- that is associated with a bug-tracking ID,
- include a reference to that ID in your detailed
- description.
- For example, the Yocto Project uses a specific
- convention for bug references - any commit that
- addresses a specific bug should use the following
- form for the detailed description.
- Be sure to use the actual bug-tracking ID from
- Bugzilla for
- <replaceable>bug-id</replaceable>:
- <literallayout class='monospaced'>
- Fixes [YOCTO #<replaceable>bug-id</replaceable>]
-
- <replaceable>detailed description of change</replaceable>
- </literallayout>
- </para></listitem>
- </itemizedlist>
- </para></listitem>
- <listitem><para>
- <emphasis>Push Your Commits to a "Contrib" Upstream:</emphasis>
- If you have arranged for permissions to push to an
- upstream contrib repository, push the change to that
- repository:
- <literallayout class='monospaced'>
- $ git push <replaceable>upstream_remote_repo</replaceable> <replaceable>local_branch_name</replaceable>
- </literallayout>
- For example, suppose you have permissions to push into the
- upstream <filename>meta-intel-contrib</filename>
- repository and you are working in a local branch named
- <replaceable>your_name</replaceable><filename>/README</filename>.
- The following command pushes your local commits to the
- <filename>meta-intel-contrib</filename> upstream
- repository and puts the commit in a branch named
- <replaceable>your_name</replaceable><filename>/README</filename>:
- <literallayout class='monospaced'>
- $ git push meta-intel-contrib <replaceable>your_name</replaceable>/README
- </literallayout>
- </para></listitem>
- <listitem><para id='push-determine-who-to-notify'>
- <emphasis>Determine Who to Notify:</emphasis>
- Determine the maintainer or the mailing list
- that you need to notify for the change.</para>
-
- <para>Before submitting any change, you need to be sure
- who the maintainer is or what mailing list that you need
- to notify.
- Use either these methods to find out:
- <itemizedlist>
- <listitem><para>
- <emphasis>Maintenance File:</emphasis>
- Examine the <filename>maintainers.inc</filename>
- file, which is located in the
- <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
- at
- <filename>meta/conf/distro/include</filename>,
- to see who is responsible for code.
- </para></listitem>
- <listitem><para>
- <emphasis>Search by File:</emphasis>
- Using <ulink url='&YOCTO_DOCS_GS_URL;#git'>Git</ulink>,
- you can enter the following command to bring up a
- short list of all commits against a specific file:
- <literallayout class='monospaced'>
- git shortlog -- <replaceable>filename</replaceable>
- </literallayout>
- Just provide the name of the file for which you
- are interested.
- The information returned is not ordered by history
- but does include a list of everyone who has
- committed grouped by name.
- From the list, you can see who is responsible for
- the bulk of the changes against the file.
- </para></listitem>
- <listitem><para>
- <emphasis>Examine the List of Mailing Lists:</emphasis>
- For a list of the Yocto Project and related mailing
- lists, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#resources-mailinglist'>Mailing lists</ulink>"
- section in the Yocto Project Reference Manual.
- </para></listitem>
- </itemizedlist>
- </para></listitem>
- <listitem><para>
- <emphasis>Make a Pull Request:</emphasis>
- Notify the maintainer or the mailing list that you have
- pushed a change by making a pull request.</para>
-
- <para>The Yocto Project provides two scripts that
- conveniently let you generate and send pull requests to the
- Yocto Project.
- These scripts are <filename>create-pull-request</filename>
- and <filename>send-pull-request</filename>.
- You can find these scripts in the
- <filename>scripts</filename> directory within the
- <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
- (e.g. <filename>~/poky/scripts</filename>).
- </para>
-
- <para>Using these scripts correctly formats the requests
- without introducing any whitespace or HTML formatting.
- The maintainer that receives your patches either directly
- or through the mailing list needs to be able to save and
- apply them directly from your emails.
- Using these scripts is the preferred method for sending
- patches.</para>
-
- <para>First, create the pull request.
- For example, the following command runs the script,
- specifies the upstream repository in the contrib directory
- into which you pushed the change, and provides a subject
- line in the created patch files:
- <literallayout class='monospaced'>
- $ ~/poky/scripts/create-pull-request -u meta-intel-contrib -s "Updated Manual Section Reference in README"
- </literallayout>
- Running this script forms
- <filename>*.patch</filename> files in a folder named
- <filename>pull-</filename><replaceable>PID</replaceable>
- in the current directory.
- One of the patch files is a cover letter.</para>
-
- <para>Before running the
- <filename>send-pull-request</filename> script, you must
- edit the cover letter patch to insert information about
- your change.
- After editing the cover letter, send the pull request.
- For example, the following command runs the script and
- specifies the patch directory and email address.
- In this example, the email address is a mailing list:
- <literallayout class='monospaced'>
- $ ~/poky/scripts/send-pull-request -p ~/meta-intel/pull-10565 -t meta-intel@yoctoproject.org
- </literallayout>
- You need to follow the prompts as the script is
- interactive.
- <note>
- For help on using these scripts, simply provide the
- <filename>-h</filename> argument as follows:
- <literallayout class='monospaced'>
- $ poky/scripts/create-pull-request -h
- $ poky/scripts/send-pull-request -h
- </literallayout>
- </note>
- </para></listitem>
- </orderedlist>
- </para>
- </section>
-
- <section id='submitting-a-patch'>
- <title>Using Email to Submit a Patch</title>
-
- <para>
- You can submit patches without using the
- <filename>create-pull-request</filename> and
- <filename>send-pull-request</filename> scripts described in the
- previous section.
- However, keep in mind, the preferred method is to use the scripts.
- </para>
-
- <para>
- Depending on the components changed, you need to submit the email
- to a specific mailing list.
- For some guidance on which mailing list to use, see the
- <link linkend='figuring-out-the-mailing-list-to-use'>beginning</link>
- of this section.
- For a description of all the available mailing lists, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#resources-mailinglist'>Mailing Lists</ulink>"
- section in the Yocto Project Reference Manual.
- </para>
-
- <para>
- Here is the general procedure on how to submit a patch through
- email without using the scripts:
- <orderedlist>
- <listitem><para>
- <emphasis>Make Your Changes Locally:</emphasis>
- Make your changes in your local Git repository.
- You should make small, controlled, isolated changes.
- Keeping changes small and isolated aids review,
- makes merging/rebasing easier and keeps the change
- history clean should anyone need to refer to it in
- future.
- </para></listitem>
- <listitem><para>
- <emphasis>Stage Your Changes:</emphasis>
- Stage your changes by using the <filename>git add</filename>
- command on each file you changed.
- </para></listitem>
- <listitem><para>
- <emphasis>Commit Your Changes:</emphasis>
- Commit the change by using the
- <filename>git commit --signoff</filename> command.
- Using the <filename>--signoff</filename> option identifies
- you as the person making the change and also satisfies
- the Developer's Certificate of Origin (DCO) shown earlier.
- </para>
-
- <para>When you form a commit, you must follow certain
- standards established by the Yocto Project development
- team.
- See
- <link linkend='making-sure-you-have-correct-commit-information'>Step 3</link>
- in the previous section for information on how to
- provide commit information that meets Yocto Project
- commit message standards.
- </para></listitem>
- <listitem><para>
- <emphasis>Format the Commit:</emphasis>
- Format the commit into an email message.
- To format commits, use the
- <filename>git format-patch</filename> command.
- When you provide the command, you must include a revision
- list or a number of patches as part of the command.
- For example, either of these two commands takes your most
- recent single commit and formats it as an email message in
- the current directory:
- <literallayout class='monospaced'>
- $ git format-patch -1
- </literallayout>
- or
- <literallayout class='monospaced'>
- $ git format-patch HEAD~
- </literallayout></para>
-
- <para>After the command is run, the current directory
- contains a numbered <filename>.patch</filename> file for
- the commit.</para>
-
- <para>If you provide several commits as part of the
- command, the <filename>git format-patch</filename> command
- produces a series of numbered files in the current
- directory – one for each commit.
- If you have more than one patch, you should also use the
- <filename>--cover</filename> option with the command,
- which generates a cover letter as the first "patch" in
- the series.
- You can then edit the cover letter to provide a
- description for the series of patches.
- For information on the
- <filename>git format-patch</filename> command,
- see <filename>GIT_FORMAT_PATCH(1)</filename> displayed
- using the <filename>man git-format-patch</filename>
- command.
- <note>
- If you are or will be a frequent contributor to the
- Yocto Project or to OpenEmbedded, you might consider
- requesting a contrib area and the necessary associated
- rights.
- </note>
- </para></listitem>
- <listitem><para>
- <emphasis>Import the Files Into Your Mail Client:</emphasis>
- Import the files into your mail client by using the
- <filename>git send-email</filename> command.
- <note>
- In order to use <filename>git send-email</filename>,
- you must have the proper Git packages installed on
- your host.
- For Ubuntu, Debian, and Fedora the package is
- <filename>git-email</filename>.
- </note></para>
-
- <para>The <filename>git send-email</filename> command
- sends email by using a local or remote Mail Transport Agent
- (MTA) such as <filename>msmtp</filename>,
- <filename>sendmail</filename>, or through a direct
- <filename>smtp</filename> configuration in your Git
- <filename>~/.gitconfig</filename> file.
- If you are submitting patches through email only, it is
- very important that you submit them without any whitespace
- or HTML formatting that either you or your mailer
- introduces.
- The maintainer that receives your patches needs to be able
- to save and apply them directly from your emails.
- A good way to verify that what you are sending will be
- applicable by the maintainer is to do a dry run and send
- them to yourself and then save and apply them as the
- maintainer would.</para>
-
- <para>The <filename>git send-email</filename> command is
- the preferred method for sending your patches using
- email since there is no risk of compromising whitespace
- in the body of the message, which can occur when you use
- your own mail client.
- The command also has several options that let you
- specify recipients and perform further editing of the
- email message.
- For information on how to use the
- <filename>git send-email</filename> command,
- see <filename>GIT-SEND-EMAIL(1)</filename> displayed using
- the <filename>man git-send-email</filename> command.
- </para></listitem>
- </orderedlist>
- </para>
- </section>
-</section>
-</chapter>
-<!--
-vim: expandtab tw=80 ts=4
--->
diff --git a/documentation/dev-manual/dev-manual-qemu.xml b/documentation/dev-manual/dev-manual-qemu.xml
index f4719ebc3cb..4e7b5de4e80 100644
--- a/documentation/dev-manual/dev-manual-qemu.xml
+++ b/documentation/dev-manual/dev-manual-qemu.xml
@@ -343,6 +343,40 @@
</para>
</section>
+ <section id='qemu-kvm-cpu-compatibility'>
+ <title>QEMU CPU Compatibility Under KVM</title>
+
+ <para>
+ By default, the QEMU build compiles for and targets 64-bit and x86
+ <trademark class='registered'>Intel</trademark> <trademark class='trademark'>Core</trademark>2
+ Duo processors and 32-bit x86
+ <trademark class='registered'>Intel</trademark> <trademark class='registered'>Pentium</trademark>
+ II processors.
+ QEMU builds for and targets these CPU types because they display
+ a broad range of CPU feature compatibility with many commonly
+ used CPUs.
+ </para>
+
+ <para>
+ Despite this broad range of compatibility, the CPUs could support
+ a feature that your host CPU does not support.
+ Although this situation is not a problem when QEMU uses software
+ emulation of the feature, it can be a problem when QEMU is
+ running with KVM enabled.
+ Specifically, software compiled with a certain CPU feature crashes
+ when run on a CPU under KVM that does not support that feature.
+ To work around this problem, you can override QEMU's runtime CPU
+ setting by changing the <filename>QB_CPU_KVM</filename>
+ variable in <filename>qemuboot.conf</filename> in the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory's</ulink>
+ <filename>deploy/image</filename> directory.
+ This setting specifies a <filename>-cpu</filename> option
+ passed into QEMU in the <filename>runqemu</filename> script.
+ Running <filename>qemu -cpu help</filename> returns a list of
+ available supported CPU types.
+ </para>
+ </section>
+
<section id='qemu-dev-performance'>
<title>QEMU Performance</title>
diff --git a/documentation/dev-manual/dev-manual-start.xml b/documentation/dev-manual/dev-manual-start.xml
index 7732fdfb74e..fff81941ef0 100644
--- a/documentation/dev-manual/dev-manual-start.xml
+++ b/documentation/dev-manual/dev-manual-start.xml
@@ -4,30 +4,414 @@
<chapter id='dev-manual-start'>
-<title>Getting Started with the Yocto Project</title>
+<title>Setting Up to Use the Yocto Project</title>
<para>
This chapter provides procedures related to getting set up to use the
- Yocto Project, working with Yocto Project source files, and building
- an image.
+ Yocto Project.
+ You can learn about creating a team environment that develops using the
+ Yocto Project, how to set up a
+ <ulink url='&YOCTO_DOCS_REF_URL;#hardware-build-system-term'>build host</ulink>,
+ how to locate Yocto Project source repositories, and how to create local
+ Git repositories.
</para>
-<section id='setting-up-the-development-host-to-use-the-yocto-project'>
- <title>Setting Up the Development Host to Use the Yocto Project</title>
+<section id="usingpoky-changes-collaborate">
+ <title>Creating a Team Development Environment</title>
<para>
- This section provides procedures to set up your development host to
- use the Yocto Project.
- You can use the Yocto Project on a native Linux development host or
- you can use
+ It might not be immediately clear how you can use the Yocto
+ Project in a team development environment, or how to scale it for a
+ large team of developers.
+ One of the strengths of the Yocto Project is that it is extremely
+ flexible.
+ Thus, you can adapt it to many different use cases and scenarios.
+ However, this flexibility could cause difficulties if you are trying
+ to create a working setup that scales across a large team.
+ </para>
+
+ <para>
+ To help you understand how to set up this type of environment,
+ this section presents a procedure that gives you information
+ that can help you get the results you want.
+ The procedure is high-level and presents some of the project's most
+ successful experiences, practices, solutions, and available
+ technologies that have proved to work well in the past.
+ Keep in mind, the procedure here is a starting point.
+ You can build off these steps and customize the procedure to fit any
+ particular working environment and set of practices.
+ <orderedlist>
+ <listitem><para>
+ <emphasis>Determine Who is Going to be Developing:</emphasis>
+ You need to understand who is going to be doing anything
+ related to the Yocto Project and what their roles would be.
+ Making this determination is essential to completing
+ steps two and three, which are to get your equipment together
+ and set up your development environment's hardware topology.
+ </para>
+
+ <para>The following roles exist:
+ <itemizedlist>
+ <listitem><para>
+ <emphasis>Application Developer:</emphasis>
+ This type of developer does application level work
+ on top of an existing software stack.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Core System Developer:</emphasis>
+ This type of developer works on the contents of the
+ operating system image itself.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Build Engineer:</emphasis>
+ This type of developer manages Autobuilders and
+ releases.
+ Not all environments need a Build Engineer.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Test Engineer:</emphasis>
+ This type of developer creates and manages automated
+ tests that are used to ensure all application and
+ core system development meets desired quality
+ standards.
+ </para></listitem>
+ </itemizedlist>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Gather the Hardware:</emphasis>
+ Based on the size and make-up of the team, get the hardware
+ together.
+ Ideally, any development, build, or test engineer uses
+ a system that runs a supported Linux distribution.
+ These systems, in general, should be high performance
+ (e.g. dual, six-core Xeons with 24 Gbytes of RAM and plenty
+ of disk space).
+ You can help ensure efficiency by having any machines used
+ for testing or that run Autobuilders be as high performance
+ as possible.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Understand the Hardware Topology of the Environment:</emphasis>
+ Once you understand the hardware involved and the make-up
+ of the team, you can understand the hardware topology of the
+ development environment.
+ You can get a visual idea of the machines and their roles
+ across the development environment.
+
+<!--
+ The following figure shows a moderately sized Yocto Project
+ development environment.
+
+ <para role="writernotes">
+ Need figure.</para>
+-->
+
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Use Git as Your Source Control Manager (SCM):</emphasis>
+ Keeping your
+ <ulink url='&YOCTO_DOCS_REF_URL;#metadata'>Metadata</ulink>
+ (i.e. recipes, configuration files, classes, and so forth)
+ and any software you are developing under the control of an SCM
+ system that is compatible with the OpenEmbedded build system
+ is advisable.
+ Of the SCMs BitBake supports, the Yocto Project team strongly
+ recommends using
+ <ulink url='&YOCTO_DOCS_OM_URL;#git'>Git</ulink>.
+ Git is a distributed system that is easy to backup,
+ allows you to work remotely, and then connects back to the
+ infrastructure.
+ <note>
+ For information about BitBake, see the
+ <ulink url='&YOCTO_DOCS_BB_URL;'>BitBake User Manual</ulink>.
+ </note></para>
+
+ <para>It is relatively easy to set up Git services and create
+ infrastructure like
+ <ulink url='&YOCTO_GIT_URL;'>http://git.yoctoproject.org</ulink>,
+ which is based on server software called
+ <filename>gitolite</filename> with <filename>cgit</filename>
+ being used to generate the web interface that lets you view the
+ repositories.
+ The <filename>gitolite</filename> software identifies users
+ using SSH keys and allows branch-based access controls to
+ repositories that you can control as little or as much as
+ necessary.
+ <note>
+ The setup of these services is beyond the scope of this
+ manual.
+ However, sites such as the following exist that describe
+ how to perform setup:
+ <itemizedlist>
+ <listitem><para>
+ <ulink url='http://git-scm.com/book/ch4-8.html'>Git documentation</ulink>:
+ Describes how to install
+ <filename>gitolite</filename> on the server.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='http://gitolite.com'>Gitolite</ulink>:
+ Information for <filename>gitolite</filename>.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools'>Interfaces, frontends, and tools</ulink>:
+ Documentation on how to create interfaces and
+ frontends for Git.
+ </para></listitem>
+ </itemizedlist>
+ </note>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Set up the Application Development Machines:</emphasis>
+ As mentioned earlier, application developers are creating
+ applications on top of existing software stacks.
+ Following are some best practices for setting up machines
+ used for application development:
+ <itemizedlist>
+ <listitem><para>
+ Use a pre-built toolchain that contains the software
+ stack itself.
+ Then, develop the application code on top of the
+ stack.
+ This method works well for small numbers of relatively
+ isolated applications.
+ </para></listitem>
+ <listitem><para>
+ When possible, use the Yocto Project plug-in for the
+ <trademark class='trade'>Eclipse</trademark> IDE
+ and SDK development practices.
+ For more information, see the
+ <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
+ manual.
+ </para></listitem>
+ <listitem><para>
+ Keep your cross-development toolchains updated.
+ You can do this through provisioning either as new
+ toolchain downloads or as updates through a package
+ update mechanism using <filename>opkg</filename>
+ to provide updates to an existing toolchain.
+ The exact mechanics of how and when to do this depend
+ on local policy.
+ </para></listitem>
+ <listitem><para>
+ Use multiple toolchains installed locally into
+ different locations to allow development across
+ versions.
+ </para></listitem>
+ </itemizedlist>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Set up the Core Development Machines:</emphasis>
+ As mentioned earlier, core developers work on the contents of
+ the operating system itself.
+ Following are some best practices for setting up machines
+ used for developing images:
+ <itemizedlist>
+ <listitem><para>
+ Have the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>
+ available on the developer workstations so developers
+ can run their own builds and directly rebuild the
+ software stack.
+ </para></listitem>
+ <listitem><para>
+ Keep the core system unchanged as much as
+ possible and do your work in layers on top of the
+ core system.
+ Doing so gives you a greater level of portability when
+ upgrading to new versions of the core system or Board
+ Support Packages (BSPs).
+ </para></listitem>
+ <listitem><para>
+ Share layers amongst the developers of a
+ particular project and contain the policy configuration
+ that defines the project.
+ </para></listitem>
+ </itemizedlist>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Set up an Autobuilder:</emphasis>
+ Autobuilders are often the core of the development
+ environment.
+ It is here that changes from individual developers are brought
+ together and centrally tested.
+ Based on this automated build and test environment, subsequent
+ decisions about releases can be made.
+ Autobuilders also allow for "continuous integration" style
+ testing of software components and regression identification
+ and tracking.</para>
+
+ <para>See "<ulink url='http://autobuilder.yoctoproject.org'>Yocto Project Autobuilder</ulink>"
+ for more information and links to buildbot.
+ The Yocto Project team has found this implementation
+ works well in this role.
+ A public example of this is the Yocto Project
+ Autobuilders, which the Yocto Project team uses to test the
+ overall health of the project.</para>
+
+ <para>The features of this system are:
+ <itemizedlist>
+ <listitem><para>
+ Highlights when commits break the build.
+ </para></listitem>
+ <listitem><para>
+ Populates an
+ <ulink url='&YOCTO_DOCS_OM_URL;#shared-state-cache'>sstate cache</ulink>
+ from which developers can pull rather than requiring
+ local builds.
+ </para></listitem>
+ <listitem><para>
+ Allows commit hook triggers, which trigger builds when
+ commits are made.
+ </para></listitem>
+ <listitem><para>
+ Allows triggering of automated image booting
+ and testing under the QuickEMUlator (QEMU).
+ </para></listitem>
+ <listitem><para>
+ Supports incremental build testing and
+ from-scratch builds.
+ </para></listitem>
+ <listitem><para>
+ Shares output that allows developer
+ testing and historical regression investigation.
+ </para></listitem>
+ <listitem><para>
+ Creates output that can be used for releases.
+ </para></listitem>
+ <listitem><para>
+ Allows scheduling of builds so that resources
+ can be used efficiently.
+ </para></listitem>
+ </itemizedlist>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Set up Test Machines:</emphasis>
+ Use a small number of shared, high performance systems
+ for testing purposes.
+ Developers can use these systems for wider, more
+ extensive testing while they continue to develop
+ locally using their primary development system.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Document Policies and Change Flow:</emphasis>
+ The Yocto Project uses a hierarchical structure and a
+ pull model.
+ Scripts exist to create and send pull requests
+ (i.e. <filename>create-pull-request</filename> and
+ <filename>send-pull-request</filename>).
+ This model is in line with other open source projects where
+ maintainers are responsible for specific areas of the project
+ and a single maintainer handles the final "top-of-tree" merges.
+ <note>
+ You can also use a more collective push model.
+ The <filename>gitolite</filename> software supports both the
+ push and pull models quite easily.
+ </note></para>
+
+ <para>As with any development environment, it is important
+ to document the policy used as well as any main project
+ guidelines so they are understood by everyone.
+ It is also a good idea to have well structured
+ commit messages, which are usually a part of a project's
+ guidelines.
+ Good commit messages are essential when looking back in time and
+ trying to understand why changes were made.</para>
+
+ <para>If you discover that changes are needed to the core
+ layer of the project, it is worth sharing those with the
+ community as soon as possible.
+ Chances are if you have discovered the need for changes,
+ someone else in the community needs them also.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Development Environment Summary:</emphasis>
+ Aside from the previous steps, some best practices exist
+ within the Yocto Project development environment.
+ Consider the following:
+ <itemizedlist>
+ <listitem><para>
+ Use
+ <ulink url='&YOCTO_DOCS_OM_URL;#git'>Git</ulink>
+ as the source control system.
+ </para></listitem>
+ <listitem><para>
+ Maintain your Metadata in layers that make sense
+ for your situation.
+ See the
+ "<ulink url='&YOCTO_DOCS_OM_URL;#the-yocto-project-layer-model'>The Yocto Project Layer Model</ulink>"
+ section in the Yocto Project Overview and Concepts
+ Manual and the
+ "<link linkend='understanding-and-creating-layers'>Understanding and Creating Layers</link>"
+ section for more information on layers.
+ </para></listitem>
+ <listitem><para>
+ Separate the project's Metadata and code by using
+ separate Git repositories.
+ See the
+ "<ulink url='&YOCTO_DOCS_OM_URL;#yocto-project-repositories'>Yocto Project Source Repositories</ulink>"
+ section in the Yocto Project Overview and Concepts
+ Manual for information on these repositories.
+ See the
+ "<link linkend='locating-yocto-project-source-files'>Locating Yocto Project Source Files</link>"
+ section for information on how to set up local Git
+ repositories for related upstream Yocto Project
+ Git repositories.
+ </para></listitem>
+ <listitem><para>
+ Set up the directory for the shared state cache
+ (<ulink url='&YOCTO_DOCS_REF_URL;#var-SSTATE_DIR'><filename>SSTATE_DIR</filename></ulink>)
+ where it makes sense.
+ For example, set up the sstate cache on a system used
+ by developers in the same organization and share the
+ same source directories on their machines.
+ </para></listitem>
+ <listitem><para>
+ Set up an Autobuilder and have it populate the
+ sstate cache and source directories.
+ </para></listitem>
+ <listitem><para>
+ The Yocto Project community encourages you
+ to send patches to the project to fix bugs or add
+ features.
+ If you do submit patches, follow the project commit
+ guidelines for writing good commit messages.
+ See the "<link linkend='how-to-submit-a-change'>Submitting a Change to the Yocto Project</link>"
+ section.
+ </para></listitem>
+ <listitem><para>
+ Send changes to the core sooner than later
+ as others are likely to run into the same issues.
+ For some guidance on mailing lists to use, see the list
+ in the
+ "<link linkend='how-to-submit-a-change'>Submitting a Change to the Yocto Project</link>"
+ section.
+ For a description of the available mailing lists, see
+ the
+ "<ulink url='&YOCTO_DOCS_REF_URL;#resources-mailinglist'>Mailing Lists</ulink>"
+ section in the Yocto Project Reference Manual.
+ </para></listitem>
+ </itemizedlist>
+ </para></listitem>
+ </orderedlist>
+ </para>
+</section>
+
+<section id='dev-preparing-the-build-host'>
+ <title>Preparing the Build Host</title>
+
+ <para>
+ This section provides procedures to set up a system to be used as your
+ <ulink url='&YOCTO_DOCS_REF_URL;#hardware-build-system-term'>build host</ulink>
+ for development using the Yocto Project.
+ Your build host can be a native Linux machine (recommended) or it can
+ be a machine (Linux, Mac, or Windows) that uses
<ulink url='https://git.yoctoproject.org/cgit/cgit.cgi/crops/about/'>CROPS</ulink>,
which leverages
- <ulink url='https://www.docker.com/'>Docker Containers</ulink>,
- to prepare any Linux, Mac, or Windows development host.
+ <ulink url='https://www.docker.com/'>Docker Containers</ulink>.
</para>
<para>
- Once your development host is set up to use the Yocto Project,
+ Once your build host is set up to use the Yocto Project,
further steps are necessary depending on what you want to
accomplish.
See the following references for information on how to prepare for
@@ -62,7 +446,7 @@
<para>
Follow these steps to prepare a native Linux machine as your
- Yocto Project development host:
+ Yocto Project Build Host:
<orderedlist>
<listitem><para>
<emphasis>Use a Supported Linux Distribution:</emphasis>
@@ -80,8 +464,8 @@
</para></listitem>
<listitem><para>
<emphasis>Have Enough Free Memory:</emphasis>
- You should have at least 50 Gbytes of free disk space
- for building images.
+ Your system should have at least 50 Gbytes of free disk
+ space for building images.
</para></listitem>
<listitem><para>
<emphasis>Meet Minimal Version Requirements:</emphasis>
@@ -110,14 +494,14 @@
<listitem><para>
<emphasis>Install Development Host Packages:</emphasis>
Required development host packages vary depending on your
- build machine and what you want to do with the Yocto
+ build host and what you want to do with the Yocto
Project.
Collectively, the number of required packages is large
if you want to be able to cover all cases.</para>
<para>For lists of required packages for all scenarios,
see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#required-packages-for-the-host-development-system'>Required Packages for the Host Development System</ulink>"
+ "<ulink url='&YOCTO_DOCS_REF_URL;#required-packages-for-the-build-host'>Required Packages for the Build Host</ulink>"
section in the Yocto Project Reference Manual.
</para></listitem>
</orderedlist>
@@ -144,7 +528,7 @@
<para>
With
- <ulink url='https://git.yoctoproject.org/cgit/cgit.cgi/crops/about/'>CROPS</ulink>,
+ <ulink url='https://github.com/crops/crops/blob/master/README.md'>CROPS</ulink>,
which leverages
<ulink url='https://www.docker.com/'>Docker Containers</ulink>,
you can create a Yocto Project development environment that
@@ -155,66 +539,101 @@
<para>
Follow these general steps to prepare a Windows, Mac, or Linux
- machine as your Yocto Project development host:
+ machine as your Yocto Project build host:
<orderedlist>
<listitem><para>
- <emphasis>Go to the Docker Installation Site:</emphasis>
+ <emphasis>Determine What Your Build Host Needs:</emphasis>
<ulink url='https://www.docker.com/what-docker'>Docker</ulink>
is a software container platform that you need to install
- on the host development machine.
- To start the installation process, see the
- <ulink url='https://docs.docker.com/engine/installation/'>Docker Installation</ulink>
- site.
+ on the build host.
+ Depending on your build host, you might have to install
+ different software to support Docker containers.
+ Go to the Docker installation page and read about the
+ platform requirements in
+ "<ulink url='https://docs.docker.com/install/#supported-platforms'>Supported Platforms</ulink>"
+ your build host needs to run containers.
</para></listitem>
<listitem><para>
- <emphasis>Choose Your Docker Edition:</emphasis>
- Docker comes in several editions.
- For the Yocto Project, the stable community edition
- (i.e. "Docker CE Stable") is adequate.
- You can learn more about the Docker editions from the
- site.
+ <emphasis>Choose What To Install:</emphasis>
+ Depending on whether or not your build host meets system
+ requirements, you need to install "Docker CE Stable" or
+ the "Docker Toolbox".
+ Most situations call for Docker CE.
+ However, if you have a build host that does not meet
+ requirements (e.g. Pre-Windows 10 or Windows 10 "Home"
+ version), you must install Docker Toolbox instead.
</para></listitem>
<listitem><para>
- <emphasis>Go the Install Site for Your Platform:</emphasis>
+ <emphasis>Go to the Install Site for Your Platform:</emphasis>
Click the link for the Docker edition associated with
- your development host machine's native software.
- For example, if your machine is running Microsoft
+ your build host's native software.
+ For example, if your build host is running Microsoft
Windows Version 10 and you want the Docker CE Stable
edition, click that link under "Supported Platforms".
</para></listitem>
<listitem><para>
- <emphasis>Understand What You Need:</emphasis>
- The install page has pre-requisites your machine must
- meet.
- Be sure you read through this page and make sure your
- machine meets the requirements to run Docker.
- If your machine does not meet the requirements, the page
- has instructions to handle exceptions.
- For example, to run Docker on Windows 10, you must have
- the pro version of the operating system.
- If you have the home version, you need to install the
- <ulink url='https://docs.docker.com/toolbox/overview/#ready-to-get-started'>Docker Toolbox</ulink>.
- </para>
-
- <para>Another example is that a Windows machine needs to
- have Microsoft Hyper-V.
- If you have a legacy version of the the Microsoft
- operating system or for any other reason you do not have
- Microsoft Hyper-V, you would have to enter the BIOS and
- enable virtualization.
- </para></listitem>
- <listitem><para>
<emphasis>Install the Software:</emphasis>
Once you have understood all the pre-requisites, you can
download and install the appropriate software.
Follow the instructions for your specific machine and
- the type of the software you need to install.
+ the type of the software you need to install:
+ <itemizedlist>
+ <listitem><para>
+ Install
+ <ulink url='https://docs.docker.com/docker-for-windows/install/#install-docker-for-windows-desktop-app'>Docker CE for Windows</ulink>
+ for Windows build hosts that meet requirements.
+ </para></listitem>
+ <listitem><para>
+ Install
+ <ulink url='https://docs.docker.com/docker-for-mac/install/#install-and-run-docker-for-mac'>Docker CE for Macs</ulink>
+ for Mac build hosts that meet requirements.
+ </para></listitem>
+ <listitem><para>
+ Install
+ <ulink url='https://docs.docker.com/toolbox/toolbox_install_windows/'>Docker Toolbox for Windows</ulink>
+ for Windows build hosts that do not meet Docker
+ requirements.
+ </para></listitem>
+ <listitem><para>
+ Install
+ <ulink url='https://docs.docker.com/toolbox/toolbox_install_mac/'>Docker Toolbox for MacOS</ulink>
+ for Mac build hosts that do not meet Docker
+ requirements.
+ </para></listitem>
+ <listitem><para>
+ Install
+ <ulink url='https://docs.docker.com/install/linux/docker-ce/centos/'>Docker CE for CentOS</ulink>
+ for Linux build hosts running the CentOS
+ distribution.
+ </para></listitem>
+ <listitem><para>
+ Install
+ <ulink url='https://docs.docker.com/install/linux/docker-ce/debian/'>Docker CE for Debian</ulink>
+ for Linux build hosts running the Debian
+ distribution.
+ </para></listitem>
+ <listitem><para>
+ Install
+ <ulink url='https://docs.docker.com/install/linux/docker-ce/fedora/'>Docker CE for Fedora</ulink>
+ for Linux build hosts running the Fedora
+ distribution.
+ </para></listitem>
+ <listitem><para>
+ Install
+ <ulink url='https://docs.docker.com/install/linux/docker-ce/ubuntu/'>Docker CE for Ubuntu</ulink>
+ for Linux build hosts running the Ubuntu
+ distribution.
+ </para></listitem>
+ </itemizedlist>
</para></listitem>
<listitem><para>
- <emphasis>Optionally Orient Yourself With Dockers:</emphasis>
- If you are unfamiliar with Dockers and the container
+ <emphasis>Optionally Orient Yourself With Docker:</emphasis>
+ If you are unfamiliar with Docker and the container
concept, you can learn more here -
<ulink url='https://docs.docker.com/get-started/'></ulink>.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Launch Docker or Docker Toolbox:</emphasis>
You should be able to launch Docker or the Docker Toolbox
and have a terminal shell on your development host.
</para></listitem>
@@ -223,7 +642,7 @@
Go to
<ulink url='https://github.com/crops/docker-win-mac-docs/wiki'></ulink>
and follow the directions for your particular
- development host (i.e. Linux, Mac, or Windows).</para>
+ build host (i.e. Linux, Mac, or Windows).</para>
<para>Once you complete the setup instructions for your
machine, you have the Poky, Extensible SDK, and Toaster
@@ -248,25 +667,25 @@
</section>
</section>
-<section id='working-with-yocto-project-source-files'>
- <title>Working With Yocto Project Source Files</title>
+<section id='locating-yocto-project-source-files'>
+ <title>Locating Yocto Project Source Files</title>
<para>
- This section contains procedures related to locating and securing
- Yocto Project files.
+ This section shows you how to locate and access the
+ source files that ship with the Yocto Project.
You establish and use these local files to work on projects.
<note><title>Notes</title>
<itemizedlist>
<listitem><para>
For concepts and introductory information about Git as it
is used in the Yocto Project, see the
- "<ulink url='&YOCTO_DOCS_GS_URL;#git'>Git</ulink>"
- section in the Getting Started With Yocto Project Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#git'>Git</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para></listitem>
<listitem><para>
For concepts on Yocto Project source repositories, see the
- "<ulink url='&YOCTO_DOCS_GS_URL;#yocto-project-repositories'>Yocto Project Source Repositories</ulink>"
- section in the Getting Started With Yocto Project Manual."
+ "<ulink url='&YOCTO_DOCS_OM_URL;#yocto-project-repositories'>Yocto Project Source Repositories</ulink>"
+ section in the Yocto Project Overview and Concepts Manual."
</para></listitem>
</itemizedlist>
</note>
@@ -277,11 +696,11 @@
<para>
Working from a copy of the upstream Yocto Project
- <ulink url='&YOCTO_DOCS_GS_URL;#source-repositories'>Source Repositories</ulink>
+ <ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>
is the preferred method for obtaining and using a Yocto Project
release.
You can view the Yocto Project Source Repositories at
- <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink>.
+ <ulink url='&YOCTO_GIT_URL;'></ulink>.
In particular, you can find the
<filename>poky</filename> repository at
<ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/'></ulink>.
@@ -300,13 +719,13 @@
</para></listitem>
<listitem><para>
<emphasis>Select the Repository:</emphasis>
- Click on the repository in which you are interested (i.e.
+ Click on the repository in which you are interested (e.g.
<filename>poky</filename>).
</para></listitem>
<listitem><para>
<emphasis>Find the URL Used to Clone the Repository:</emphasis>
At the bottom of the page, note the URL used to
- <ulink url='&YOCTO_DOCS_GS_URL;#git-commands-clone'>clone</ulink>
+ <ulink url='&YOCTO_DOCS_OM_URL;#git-commands-clone'>clone</ulink>
that repository (e.g.
<filename>&YOCTO_GIT_URL;/poky</filename>).
<note>
@@ -334,6 +753,7 @@
The procedure in this section exists should you desire a
tarball snapshot of any given component.
</note>
+ Follow these steps to locate and download a particular tarball:
<orderedlist>
<listitem><para>
<emphasis>Access the Index of Releases:</emphasis>
@@ -383,7 +803,10 @@
uses a "DOWNLOADS" page from which you can locate and download
tarballs of any Yocto Project release.
Rather than Git repositories, these files represent snapshot
- tarballs.
+ tarballs similar to the tarballs located in the Index of Releases
+ described in the
+ "<link linkend='accessing-index-of-releases'>Accessing Index of Releases</link>"
+ section.
<note><title>Tip</title>
The recommended method for accessing Yocto Project
components is to use Git to clone a repository and work from
@@ -401,18 +824,23 @@
<listitem><para>
<emphasis>Get to the Downloads Area:</emphasis>
Select the "DOWNLOADS" item from the pull-down
- "SOFTWARE" tab menu.
+ "SOFTWARE" tab menu near the top of the page.
</para></listitem>
<listitem><para>
<emphasis>Select a Yocto Project Release:</emphasis>
Use the menu next to "RELEASE" to display and choose
- a Yocto Project release (e.g. sumo, rocko, pyro, and
- so forth.
- For a "map" of Yocto Project releases to version numbers,
- see the
- <ulink url='https://wiki.yoctoproject.org/wiki/Releases'>Releases</ulink>
- wiki page.
- </para></listitem>
+ a recent or past supported Yocto Project release
+ (e.g. &DISTRO_NAME_NO_CAP;,
+ &DISTRO_NAME_NO_CAP_MINUS_ONE;, and so forth).
+ <note><title>Tip</title>
+ For a "map" of Yocto Project releases to version
+ numbers, see the
+ <ulink url='https://wiki.yoctoproject.org/wiki/Releases'>Releases</ulink>
+ wiki page.
+ </note>
+ You can use the "RELEASE ARCHIVE" link to reveal a menu of
+ all Yocto Project releases.
+ </para></listitem>
<listitem><para>
<emphasis>Download Tools or Board Support Packages (BSPs):</emphasis>
From the "DOWNLOADS" page, you can download tools or
@@ -429,8 +857,9 @@
<para>
Yocto Project maintains an area for nightly builds that contains
tarball releases at <ulink url='&YOCTO_AB_NIGHTLY_URL;'/>.
- These builds include Yocto Project releases, SDK installation
- scripts, and experimental builds.
+ These builds include Yocto Project releases ("poky"),
+ toolchains, Yocto Project plugins for Eclipse, and builds for
+ supported machines.
</para>
<para>
@@ -438,14 +867,21 @@
Yocto Project component, use the following procedure:
<orderedlist>
<listitem><para>
- <emphasis>Access the Nightly Builds:</emphasis>
+ <emphasis>Locate the Index of Nightly Builds:</emphasis>
Open a browser and go to
<ulink url='&YOCTO_AB_NIGHTLY_URL;'/> to access the
Nightly Builds.
</para></listitem>
<listitem><para>
+ <emphasis>Select a Date:</emphasis>
+ Click on the date in which you are interested.
+ If you want the latest builds, use "CURRENT".
+ </para></listitem>
+ <listitem><para>
<emphasis>Select a Build:</emphasis>
- Click on any build by date in which you are interested.
+ Choose the area in which you are interested.
+ For example, if you are looking for the most recent
+ toolchains, select the "toolchain" link.
</para></listitem>
<listitem><para>
<emphasis>Find the Tarball:</emphasis>
@@ -459,35 +895,35 @@
</orderedlist>
</para>
</section>
+</section>
- <section id='cloning-the-poky-repository'>
- <title>Cloning the <filename>poky</filename> Repository</title>
+<section id='cloning-and-checking-out-branches'>
+ <title>Cloning and Checking Out Branches</title>
- <para>
- To use the Yocto Project, you need a release of the Yocto Project
- locally installed on your development system.
- The locally installed set of files is referred to as the
- <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
- in the Yocto Project documentation.
- </para>
+ <para>
+ To use the Yocto Project for development, you need a release locally
+ installed on your development system.
+ This locally installed set of files is referred to as the
+ <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
+ in the Yocto Project documentation.
+ </para>
- <para>
- You create your Source Directory by using
- <ulink url='&YOCTO_DOCS_GS_URL;#git'>Git</ulink> to clone a local
- copy of the upstream <filename>poky</filename> repository.
- <note><title>Tip</title>
- The preferred method of getting the Yocto Project Source
- Directory set up is to clone the repository.
- </note>
- Working from a copy of the upstream repository allows you
- to contribute back into the Yocto Project or simply work with
- the latest software on a development branch.
- Because Git maintains and creates an upstream repository with
- a complete history of changes and you are working with a local
- clone of that repository, you have access to all the Yocto
- Project development branches and tag names used in the upstream
- repository.
- </para>
+ <para>
+ The preferred method of creating your Source Directory is by using
+ <ulink url='&YOCTO_DOCS_OM_URL;#git'>Git</ulink> to clone a local
+ copy of the upstream <filename>poky</filename> repository.
+ Working from a cloned copy of the upstream repository allows you
+ to contribute back into the Yocto Project or to simply work with
+ the latest software on a development branch.
+ Because Git maintains and creates an upstream repository with
+ a complete history of changes and you are working with a local
+ clone of that repository, you have access to all the Yocto
+ Project development branches and tag names used in the upstream
+ repository.
+ </para>
+
+ <section id='cloning-the-poky-repository'>
+ <title>Cloning the <filename>poky</filename> Repository</title>
<para>
Follow these steps to create a local version of the
@@ -497,21 +933,23 @@
<orderedlist>
<listitem><para>
<emphasis>Set Your Directory:</emphasis>
- Be in the directory where you want to create your local
- copy of poky.
+ Change your working directory to where you want to
+ create your local copy of
+ <filename>poky</filename>.
</para></listitem>
<listitem><para>
<emphasis>Clone the Repository:</emphasis>
- The following command clones the repository and uses
+ The following example command clones the
+ <filename>poky</filename> repository and uses
the default name "poky" for your local repository:
<literallayout class='monospaced'>
$ git clone git://git.yoctoproject.org/poky
Cloning into 'poky'...
- remote: Counting objects: 367178, done.
- remote: Compressing objects: 100% (88161/88161), done.
- remote: Total 367178 (delta 272761), reused 366942 (delta 272525)
- Receiving objects: 100% (367178/367178), 133.26 MiB | 6.40 MiB/s, done.
- Resolving deltas: 100% (272761/272761), done.
+ remote: Counting objects: 416542, done.
+ remote: Compressing objects: 100% (98611/98611), done.
+ remote: Total 416542 (delta 311104), reused 416377 (delta 310939)
+ Receiving objects: 100% (416542/416542), 150.39 MiB | 15.77 MiB/s, done.
+ Resolving deltas: 100% (311104/311104), done.
Checking connectivity... done.
</literallayout>
Unless you specify a specific development branch or
@@ -523,11 +961,11 @@
branch based on a tag name, see the
"<link linkend='checking-out-by-branch-in-poky'>Checking Out By Branch in Poky</link>"
and
- <link linkend='checkout-out-by-tag-in-poky'>Checking Out By Tag in Poky</link>",
- respectively.</para>
+ <link linkend='checkout-out-by-tag-in-poky'>Checking Out By Tag in Poky</link>"
+ sections, respectively.</para>
- <para>Once the repository is created, you can change to
- that directory and check its status.
+ <para>Once the local repository is created, you can
+ change to that directory and check its status.
Here, the single "master" branch exists on your system
and by default, it is checked out:
<literallayout class='monospaced'>
@@ -542,6 +980,10 @@
Your local repository of poky is identical to the
upstream poky repository at the time from which it was
cloned.
+ As you work with the local branch, you can periodically
+ use the <filename>git pull &dash;&dash;rebase</filename>
+ command to be sure you are up-to-date with the upstream
+ branch.
</para></listitem>
</orderedlist>
</para>
@@ -706,306 +1148,6 @@
</section>
</section>
-<section id='dev-building-an-image'>
- <title>Building an Image</title>
-
- <para>
- In the development environment, you need to build an image whenever
- you change hardware support, add or change system libraries, or add
- or change services that have dependencies.
- Several methods exist that allow you to build an image within the
- Yocto Project.
- This section shows you how to build an image using BitBake from a
- Linux host.
- <note><title>Notes</title>
- <itemizedlist>
- <listitem><para>
- For information on how to build an image using
- <ulink url='&YOCTO_DOCS_REF_URL;#toaster-term'>Toaster</ulink>,
- see the
- <ulink url='&YOCTO_DOCS_TOAST_URL;'>Toaster Manual</ulink>.
- </para></listitem>
- <listitem><para>
- For information on how to use
- <filename>devtool</filename> to build images, see the
- "<ulink url='&YOCTO_DOCS_SDK_URL;#using-devtool-in-your-sdk-workflow'>Using <filename>devtool</filename> in Your SDK Workflow</ulink>"
- section in the Yocto Project Application Development and
- the Extensible Software Development Kit (eSDK) manual.
- </para></listitem>
- <listitem><para>
- For a practical example on how to build an image using the
- OpenEmbedded build system, see the
- "<ulink url='&YOCTO_DOCS_QS_URL;#qs-building-images'>Building Images</ulink>"
- section of the Yocto Project Quick Start.
- </para></listitem>
- </itemizedlist>
- </note>
- </para>
-
- <para>
- The build process creates an entire Linux distribution from source
- and places it in your
- <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
- under <filename>tmp/deploy/images</filename>.
- For detailed information on the build process using BitBake, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#images-dev-environment'>Images</ulink>"
- section in the Yocto Project Concepts Manual.
- </para>
-
- <para>
- The following figure and list overviews the build process:
- <imagedata fileref="figures/bitbake-build-flow.png" width="7in" depth="4in" align="center" scalefit="1" />
- <orderedlist>
- <listitem><para>
- <emphasis>Set up Your Host Development System to Support
- Development Using the Yocto Project</emphasis>:
- See the
- "<ulink url='&YOCTO_DOCS_QS_URL;#yp-resources'>Setting Up to Use the Yocto Project</ulink>"
- section in the Yocto Project Quick Start for options on how
- to get a build host ready to use the Yocto Project.
- </para></listitem>
- <listitem><para>
- <emphasis>Initialize the Build Environment:</emphasis>
- Initialize the build environment by sourcing the build
- environment script (i.e.
- <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>):
- <literallayout class='monospaced'>
- $ source &OE_INIT_FILE; [<replaceable>build_dir</replaceable>]
- </literallayout></para>
-
- <para>When you use the initialization script, the
- OpenEmbedded build system uses <filename>build</filename> as
- the default Build Directory in your current work directory.
- You can use a <replaceable>build_dir</replaceable> argument
- with the script to specify a different build directory.
- <note><title>Tip</title>
- A common practice is to use a different Build Directory for
- different targets.
- For example, <filename>~/build/x86</filename> for a
- <filename>qemux86</filename> target, and
- <filename>~/build/arm</filename> for a
- <filename>qemuarm</filename> target.
- </note>
- </para></listitem>
- <listitem><para>
- <emphasis>Make Sure Your <filename>local.conf</filename>
- File is Correct:</emphasis>
- Ensure the <filename>conf/local.conf</filename> configuration
- file, which is found in the Build Directory,
- is set up how you want it.
- This file defines many aspects of the build environment
- including the target machine architecture through the
- <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'>MACHINE</ulink></filename> variable,
- the packaging format used during the build
- (<ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></ulink>),
- and a centralized tarball download directory through the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-DL_DIR'><filename>DL_DIR</filename></ulink> variable.
- </para></listitem>
- <listitem><para>
- <emphasis>Build the Image:</emphasis>
- Build the image using the <filename>bitbake</filename> command:
- <literallayout class='monospaced'>
- $ bitbake <replaceable>target</replaceable>
- </literallayout>
- <note>
- For information on BitBake, see the
- <ulink url='&YOCTO_DOCS_BB_URL;'>BitBake User Manual</ulink>.
- </note>
- The <replaceable>target</replaceable> is the name of the
- recipe you want to build.
- Common targets are the images in
- <filename>meta/recipes-core/images</filename>,
- <filename>meta/recipes-sato/images</filename>, etc. all found
- in the
- <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>.
- Or, the target can be the name of a recipe for a specific
- piece of software such as BusyBox.
- For more details about the images the OpenEmbedded build
- system supports, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>"
- chapter in the Yocto Project Reference Manual.</para>
-
- <para>As an example, the following command builds the
- <filename>core-image-minimal</filename> image:
- <literallayout class='monospaced'>
- $ bitbake core-image-minimal
- </literallayout>
- Once an image has been built, it often needs to be installed.
- The images and kernels built by the OpenEmbedded build system
- are placed in the Build Directory in
- <filename class="directory">tmp/deploy/images</filename>.
- For information on how to run pre-built images such as
- <filename>qemux86</filename> and <filename>qemuarm</filename>,
- see the
- <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
- manual.
- For information about how to install these images, see the
- documentation for your particular board or machine.
- </para></listitem>
- </orderedlist>
- </para>
-</section>
-
-<section id='speeding-up-the-build'>
- <title>Speeding Up the Build</title>
-
- <para>
- Build time can be an issue.
- By default, the build system uses simple controls to try and maximize
- build efficiency.
- In general, the default settings for all the following variables
- result in the most efficient build times when dealing with single
- socket systems (i.e. a single CPU).
- If you have multiple CPUs, you might try increasing the default
- values to gain more speed.
- See the descriptions in the glossary for each variable for more
- information:
- <itemizedlist>
- <listitem><para>
- <ulink url='&YOCTO_DOCS_REF_URL;#var-BB_NUMBER_THREADS'><filename>BB_NUMBER_THREADS</filename>:</ulink>
- The maximum number of threads BitBake simultaneously executes.
- </para></listitem>
- <listitem><para>
- <ulink url='&YOCTO_DOCS_BB_URL;#var-BB_NUMBER_PARSE_THREADS'><filename>BB_NUMBER_PARSE_THREADS</filename>:</ulink>
- The number of threads BitBake uses during parsing.
- </para></listitem>
- <listitem><para>
- <ulink url='&YOCTO_DOCS_REF_URL;#var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename>:</ulink>
- Extra options passed to the <filename>make</filename> command
- during the
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-compile'><filename>do_compile</filename></ulink>
- task in order to specify parallel compilation on the
- local build host.
- </para></listitem>
- <listitem><para>
- <ulink url='&YOCTO_DOCS_REF_URL;#var-PARALLEL_MAKEINST'><filename>PARALLEL_MAKEINST</filename>:</ulink>
- Extra options passed to the <filename>make</filename> command
- during the
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-install'><filename>do_install</filename></ulink>
- task in order to specify parallel installation on the
- local build host.
- </para></listitem>
- </itemizedlist>
- As mentioned, these variables all scale to the number of processor
- cores available on the build system.
- For single socket systems, this auto-scaling ensures that the build
- system fundamentally takes advantage of potential parallel operations
- during the build based on the build machine's capabilities.
- </para>
-
- <para>
- Following are additional factors that can affect build speed:
- <itemizedlist>
- <listitem><para>
- File system type:
- The file system type that the build is being performed on can
- also influence performance.
- Using <filename>ext4</filename> is recommended as compared
- to <filename>ext2</filename> and <filename>ext3</filename>
- due to <filename>ext4</filename> improved features
- such as extents.
- </para></listitem>
- <listitem><para>
- Disabling the updating of access time using
- <filename>noatime</filename>:
- The <filename>noatime</filename> mount option prevents the
- build system from updating file and directory access times.
- </para></listitem>
- <listitem><para>
- Setting a longer commit:
- Using the "commit=" mount option increases the interval
- in seconds between disk cache writes.
- Changing this interval from the five second default to
- something longer increases the risk of data loss but decreases
- the need to write to the disk, thus increasing the build
- performance.
- </para></listitem>
- <listitem><para>
- Choosing the packaging backend:
- Of the available packaging backends, IPK is the fastest.
- Additionally, selecting a singular packaging backend also
- helps.
- </para></listitem>
- <listitem><para>
- Using <filename>tmpfs</filename> for
- <ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>
- as a temporary file system:
- While this can help speed up the build, the benefits are
- limited due to the compiler using
- <filename>-pipe</filename>.
- The build system goes to some lengths to avoid
- <filename>sync()</filename> calls into the
- file system on the principle that if there was a significant
- failure, the
- <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
- contents could easily be rebuilt.
- </para></listitem>
- <listitem><para>
- Inheriting the
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-rm-work'><filename>rm_work</filename></ulink>
- class:
- Inheriting this class has shown to speed up builds due to
- significantly lower amounts of data stored in the data
- cache as well as on disk.
- Inheriting this class also makes cleanup of
- <ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>
- faster, at the expense of being easily able to dive into the
- source code.
- File system maintainers have recommended that the fastest way
- to clean up large numbers of files is to reformat partitions
- rather than delete files due to the linear nature of
- partitions.
- This, of course, assumes you structure the disk partitions and
- file systems in a way that this is practical.
- </para></listitem>
- </itemizedlist>
- Aside from the previous list, you should keep some trade offs in
- mind that can help you speed up the build:
- <itemizedlist>
- <listitem><para>
- Remove items from
- <ulink url='&YOCTO_DOCS_REF_URL;#var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></ulink>
- that you might not need.
- </para></listitem>
- <listitem><para>
- Exclude debug symbols and other debug information:
- If you do not need these symbols and other debug information,
- disabling the <filename>*-dbg</filename> package generation
- can speed up the build.
- You can disable this generation by setting the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-INHIBIT_PACKAGE_DEBUG_SPLIT'><filename>INHIBIT_PACKAGE_DEBUG_SPLIT</filename></ulink>
- variable to "1".
- </para></listitem>
- <listitem><para>
- Disable static library generation for recipes derived from
- <filename>autoconf</filename> or <filename>libtool</filename>:
- Following is an example showing how to disable static
- libraries and still provide an override to handle exceptions:
- <literallayout class='monospaced'>
- STATICLIBCONF = "--disable-static"
- STATICLIBCONF_sqlite3-native = ""
- EXTRA_OECONF += "${STATICLIBCONF}"
- </literallayout>
- <note><title>Notes</title>
- <itemizedlist>
- <listitem><para>
- Some recipes need static libraries in order to work
- correctly (e.g. <filename>pseudo-native</filename>
- needs <filename>sqlite3-native</filename>).
- Overrides, as in the previous example, account for
- these kinds of exceptions.
- </para></listitem>
- <listitem><para>
- Some packages have packaging code that assumes the
- presence of the static libraries.
- If so, you might need to exclude them as well.
- </para></listitem>
- </itemizedlist>
- </note>
- </para></listitem>
- </itemizedlist>
- </para>
-</section>
</chapter>
<!--
vim: expandtab tw=80 ts=4
diff --git a/documentation/dev-manual/dev-manual.xml b/documentation/dev-manual/dev-manual.xml
index aaeb4e7576c..9831e2ac158 100644
--- a/documentation/dev-manual/dev-manual.xml
+++ b/documentation/dev-manual/dev-manual.xml
@@ -103,9 +103,14 @@
</revision>
<revision>
<revnumber>2.5</revnumber>
- <date>April 2018</date>
+ <date>May 2018</date>
<revremark>Released with the Yocto Project 2.5 Release.</revremark>
</revision>
+ <revision>
+ <revnumber>2.6</revnumber>
+ <date>&REL_MONTH_YEAR;</date>
+ <revremark>Released with the Yocto Project 2.6 Release.</revremark>
+ </revision>
</revhistory>
<copyright>
@@ -128,24 +133,36 @@
is for the &YOCTO_DOC_VERSION; release of the
Yocto Project.
To be sure you have the latest version of the manual
- for this release, use the manual from the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>.
+ for this release, go to the
+ <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
+ and select the manual from that site.
+ Manuals from the site are more up-to-date than manuals
+ derived from the Yocto Project released TAR files.
</para></listitem>
<listitem><para>
- For manuals associated with other releases of the Yocto
- Project, go to the
+ If you located this manual through a web search, the
+ version of the manual might not be the one you want
+ (e.g. the search might have returned a manual much
+ older than the Yocto Project version with which you
+ are working).
+ You can see all Yocto Project major releases by
+ visiting the
+ <ulink url='&YOCTO_WIKI_URL;/wiki/Releases'>Releases</ulink>
+ page.
+ If you need a version of this manual for a different
+ Yocto Project release, visit the
<ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
- and use the drop-down "Active Releases" button
- and choose the manual associated with the desired
- Yocto Project.
+ and select the manual set by using the
+ "ACTIVE RELEASES DOCUMENTATION" or "DOCUMENTS ARCHIVE"
+ pull-down menus.
</para></listitem>
<listitem><para>
- To report any inaccuracies or problems with this
- manual, send an email to the Yocto Project
- discussion group at
- <filename>yocto@yoctoproject.com</filename> or log into
- the freenode <filename>#yocto</filename> channel.
- </para></listitem>
+ To report any inaccuracies or problems with this
+ manual, send an email to the Yocto Project
+ discussion group at
+ <filename>yocto@yoctoproject.com</filename> or log into
+ the freenode <filename>#yocto</filename> channel.
+ </para></listitem>
</itemizedlist>
</note>
</legalnotice>
@@ -156,8 +173,6 @@
<xi:include href="dev-manual-start.xml"/>
- <xi:include href="dev-manual-newbie.xml"/>
-
<xi:include href="dev-manual-common-tasks.xml"/>
<xi:include href="dev-manual-qemu.xml"/>
diff --git a/documentation/dev-manual/figures/multiconfig_files.png b/documentation/dev-manual/figures/multiconfig_files.png
new file mode 100644
index 00000000000..0b59338b3a6
--- /dev/null
+++ b/documentation/dev-manual/figures/multiconfig_files.png
Binary files differ
diff --git a/documentation/getting-started/figures/getting-started-title.png b/documentation/getting-started/figures/getting-started-title.png
deleted file mode 100644
index f38b078ab7f..00000000000
--- a/documentation/getting-started/figures/getting-started-title.png
+++ /dev/null
Binary files differ
diff --git a/documentation/getting-started/getting-started-style.css b/documentation/getting-started/getting-started-style.css
deleted file mode 100644
index a03f7dc0c19..00000000000
--- a/documentation/getting-started/getting-started-style.css
+++ /dev/null
@@ -1,988 +0,0 @@
-/*
- Generic XHTML / DocBook XHTML CSS Stylesheet.
-
- Browser wrangling and typographic design by
- Oyvind Kolas / pippin@gimp.org
-
- Customised for Poky by
- Matthew Allum / mallum@o-hand.com
-
- Thanks to:
- Liam R. E. Quin
- William Skaggs
- Jakub Steiner
-
- Structure
- ---------
-
- The stylesheet is divided into the following sections:
-
- Positioning
- Margins, paddings, width, font-size, clearing.
- Decorations
- Borders, style
- Colors
- Colors
- Graphics
- Graphical backgrounds
- Nasty IE tweaks
- Workarounds needed to make it work in internet explorer,
- currently makes the stylesheet non validating, but up until
- this point it is validating.
- Mozilla extensions
- Transparency for footer
- Rounded corners on boxes
-
-*/
-
-
- /*************** /
- / Positioning /
-/ ***************/
-
-body {
- font-family: Verdana, Sans, sans-serif;
-
- min-width: 640px;
- width: 80%;
- margin: 0em auto;
- padding: 2em 5em 5em 5em;
- color: #333;
-}
-
-h1,h2,h3,h4,h5,h6,h7 {
- font-family: Arial, Sans;
- color: #00557D;
- clear: both;
-}
-
-h1 {
- font-size: 2em;
- text-align: left;
- padding: 0em 0em 0em 0em;
- margin: 2em 0em 0em 0em;
-}
-
-h2.subtitle {
- margin: 0.10em 0em 3.0em 0em;
- padding: 0em 0em 0em 0em;
- font-size: 1.8em;
- padding-left: 20%;
- font-weight: normal;
- font-style: italic;
-}
-
-h2 {
- margin: 2em 0em 0.66em 0em;
- padding: 0.5em 0em 0em 0em;
- font-size: 1.5em;
- font-weight: bold;
-}
-
-h3.subtitle {
- margin: 0em 0em 1em 0em;
- padding: 0em 0em 0em 0em;
- font-size: 142.14%;
- text-align: right;
-}
-
-h3 {
- margin: 1em 0em 0.5em 0em;
- padding: 1em 0em 0em 0em;
- font-size: 140%;
- font-weight: bold;
-}
-
-h4 {
- margin: 1em 0em 0.5em 0em;
- padding: 1em 0em 0em 0em;
- font-size: 120%;
- font-weight: bold;
-}
-
-h5 {
- margin: 1em 0em 0.5em 0em;
- padding: 1em 0em 0em 0em;
- font-size: 110%;
- font-weight: bold;
-}
-
-h6 {
- margin: 1em 0em 0em 0em;
- padding: 1em 0em 0em 0em;
- font-size: 110%;
- font-weight: bold;
-}
-
-.authorgroup {
- background-color: transparent;
- background-repeat: no-repeat;
- padding-top: 256px;
- background-image: url("figures/getting-started-title.png");
- background-position: left top;
- margin-top: -256px;
- padding-right: 50px;
- margin-left: 0px;
- text-align: right;
- width: 740px;
-}
-
-h3.author {
- margin: 0em 0me 0em 0em;
- padding: 0em 0em 0em 0em;
- font-weight: normal;
- font-size: 100%;
- color: #333;
- clear: both;
-}
-
-.author tt.email {
- font-size: 66%;
-}
-
-.titlepage hr {
- width: 0em;
- clear: both;
-}
-
-.revhistory {
- padding-top: 2em;
- clear: both;
-}
-
-.toc,
-.list-of-tables,
-.list-of-examples,
-.list-of-figures {
- padding: 1.33em 0em 2.5em 0em;
- color: #00557D;
-}
-
-.toc p,
-.list-of-tables p,
-.list-of-figures p,
-.list-of-examples p {
- padding: 0em 0em 0em 0em;
- padding: 0em 0em 0.3em;
- margin: 1.5em 0em 0em 0em;
-}
-
-.toc p b,
-.list-of-tables p b,
-.list-of-figures p b,
-.list-of-examples p b{
- font-size: 100.0%;
- font-weight: bold;
-}
-
-.toc dl,
-.list-of-tables dl,
-.list-of-figures dl,
-.list-of-examples dl {
- margin: 0em 0em 0.5em 0em;
- padding: 0em 0em 0em 0em;
-}
-
-.toc dt {
- margin: 0em 0em 0em 0em;
- padding: 0em 0em 0em 0em;
-}
-
-.toc dd {
- margin: 0em 0em 0em 2.6em;
- padding: 0em 0em 0em 0em;
-}
-
-div.glossary dl,
-div.variablelist dl {
-}
-
-.glossary dl dt,
-.variablelist dl dt,
-.variablelist dl dt span.term {
- font-weight: normal;
- width: 20em;
- text-align: right;
-}
-
-.variablelist dl dt {
- margin-top: 0.5em;
-}
-
-.glossary dl dd,
-.variablelist dl dd {
- margin-top: -1em;
- margin-left: 25.5em;
-}
-
-.glossary dd p,
-.variablelist dd p {
- margin-top: 0em;
- margin-bottom: 1em;
-}
-
-
-div.calloutlist table td {
- padding: 0em 0em 0em 0em;
- margin: 0em 0em 0em 0em;
-}
-
-div.calloutlist table td p {
- margin-top: 0em;
- margin-bottom: 1em;
-}
-
-div p.copyright {
- text-align: left;
-}
-
-div.legalnotice p.legalnotice-title {
- margin-bottom: 0em;
-}
-
-p {
- line-height: 1.5em;
- margin-top: 0em;
-
-}
-
-dl {
- padding-top: 0em;
-}
-
-hr {
- border: solid 1px;
-}
-
-
-.mediaobject,
-.mediaobjectco {
- text-align: center;
-}
-
-img {
- border: none;
-}
-
-ul {
- padding: 0em 0em 0em 1.5em;
-}
-
-ul li {
- padding: 0em 0em 0em 0em;
-}
-
-ul li p {
- text-align: left;
-}
-
-table {
- width :100%;
-}
-
-th {
- padding: 0.25em;
- text-align: left;
- font-weight: normal;
- vertical-align: top;
-}
-
-td {
- padding: 0.25em;
- vertical-align: top;
-}
-
-p a[id] {
- margin: 0px;
- padding: 0px;
- display: inline;
- background-image: none;
-}
-
-a {
- text-decoration: underline;
- color: #444;
-}
-
-pre {
- overflow: auto;
-}
-
-a:hover {
- text-decoration: underline;
- /*font-weight: bold;*/
-}
-
-/* This style defines how the permalink character
- appears by itself and when hovered over with
- the mouse. */
-
-[alt='Permalink'] { color: #eee; }
-[alt='Permalink']:hover { color: black; }
-
-
-div.informalfigure,
-div.informalexample,
-div.informaltable,
-div.figure,
-div.table,
-div.example {
- margin: 1em 0em;
- padding: 1em;
- page-break-inside: avoid;
-}
-
-
-div.informalfigure p.title b,
-div.informalexample p.title b,
-div.informaltable p.title b,
-div.figure p.title b,
-div.example p.title b,
-div.table p.title b{
- padding-top: 0em;
- margin-top: 0em;
- font-size: 100%;
- font-weight: normal;
-}
-
-.mediaobject .caption,
-.mediaobject .caption p {
- text-align: center;
- font-size: 80%;
- padding-top: 0.5em;
- padding-bottom: 0.5em;
-}
-
-.epigraph {
- padding-left: 55%;
- margin-bottom: 1em;
-}
-
-.epigraph p {
- text-align: left;
-}
-
-.epigraph .quote {
- font-style: italic;
-}
-.epigraph .attribution {
- font-style: normal;
- text-align: right;
-}
-
-span.application {
- font-style: italic;
-}
-
-.programlisting {
- font-family: monospace;
- font-size: 80%;
- white-space: pre;
- margin: 1.33em 0em;
- padding: 1.33em;
-}
-
-.tip,
-.warning,
-.caution,
-.note {
- margin-top: 1em;
- margin-bottom: 1em;
-
-}
-
-/* force full width of table within div */
-.tip table,
-.warning table,
-.caution table,
-.note table {
- border: none;
- width: 100%;
-}
-
-
-.tip table th,
-.warning table th,
-.caution table th,
-.note table th {
- padding: 0.8em 0.0em 0.0em 0.0em;
- margin : 0em 0em 0em 0em;
-}
-
-.tip p,
-.warning p,
-.caution p,
-.note p {
- margin-top: 0.5em;
- margin-bottom: 0.5em;
- padding-right: 1em;
- text-align: left;
-}
-
-.acronym {
- text-transform: uppercase;
-}
-
-b.keycap,
-.keycap {
- padding: 0.09em 0.3em;
- margin: 0em;
-}
-
-.itemizedlist li {
- clear: none;
-}
-
-.filename {
- font-size: medium;
- font-family: Courier, monospace;
-}
-
-
-div.navheader, div.heading{
- position: absolute;
- left: 0em;
- top: 0em;
- width: 100%;
- background-color: #cdf;
- width: 100%;
-}
-
-div.navfooter, div.footing{
- position: fixed;
- left: 0em;
- bottom: 0em;
- background-color: #eee;
- width: 100%;
-}
-
-
-div.navheader td,
-div.navfooter td {
- font-size: 66%;
-}
-
-div.navheader table th {
- /*font-family: Georgia, Times, serif;*/
- /*font-size: x-large;*/
- font-size: 80%;
-}
-
-div.navheader table {
- border-left: 0em;
- border-right: 0em;
- border-top: 0em;
- width: 100%;
-}
-
-div.navfooter table {
- border-left: 0em;
- border-right: 0em;
- border-bottom: 0em;
- width: 100%;
-}
-
-div.navheader table td a,
-div.navfooter table td a {
- color: #777;
- text-decoration: none;
-}
-
-/* normal text in the footer */
-div.navfooter table td {
- color: black;
-}
-
-div.navheader table td a:visited,
-div.navfooter table td a:visited {
- color: #444;
-}
-
-
-/* links in header and footer */
-div.navheader table td a:hover,
-div.navfooter table td a:hover {
- text-decoration: underline;
- background-color: transparent;
- color: #33a;
-}
-
-div.navheader hr,
-div.navfooter hr {
- display: none;
-}
-
-
-.qandaset tr.question td p {
- margin: 0em 0em 1em 0em;
- padding: 0em 0em 0em 0em;
-}
-
-.qandaset tr.answer td p {
- margin: 0em 0em 1em 0em;
- padding: 0em 0em 0em 0em;
-}
-.answer td {
- padding-bottom: 1.5em;
-}
-
-.emphasis {
- font-weight: bold;
-}
-
-
- /************* /
- / decorations /
-/ *************/
-
-.titlepage {
-}
-
-.part .title {
-}
-
-.subtitle {
- border: none;
-}
-
-/*
-h1 {
- border: none;
-}
-
-h2 {
- border-top: solid 0.2em;
- border-bottom: solid 0.06em;
-}
-
-h3 {
- border-top: 0em;
- border-bottom: solid 0.06em;
-}
-
-h4 {
- border: 0em;
- border-bottom: solid 0.06em;
-}
-
-h5 {
- border: 0em;
-}
-*/
-
-.programlisting {
- border: solid 1px;
-}
-
-div.figure,
-div.table,
-div.informalfigure,
-div.informaltable,
-div.informalexample,
-div.example {
- border: 1px solid;
-}
-
-
-
-.tip,
-.warning,
-.caution,
-.note {
- border: 1px solid;
-}
-
-.tip table th,
-.warning table th,
-.caution table th,
-.note table th {
- border-bottom: 1px solid;
-}
-
-.question td {
- border-top: 1px solid black;
-}
-
-.answer {
-}
-
-
-b.keycap,
-.keycap {
- border: 1px solid;
-}
-
-
-div.navheader, div.heading{
- border-bottom: 1px solid;
-}
-
-
-div.navfooter, div.footing{
- border-top: 1px solid;
-}
-
- /********* /
- / colors /
-/ *********/
-
-body {
- color: #333;
- background: white;
-}
-
-a {
- background: transparent;
-}
-
-a:hover {
- background-color: #dedede;
-}
-
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-h7,
-h8 {
- background-color: transparent;
-}
-
-hr {
- border-color: #aaa;
-}
-
-
-.tip, .warning, .caution, .note {
- border-color: #fff;
-}
-
-
-.tip table th,
-.warning table th,
-.caution table th,
-.note table th {
- border-bottom-color: #fff;
-}
-
-
-.warning {
- background-color: #f0f0f2;
-}
-
-.caution {
- background-color: #f0f0f2;
-}
-
-.tip {
- background-color: #f0f0f2;
-}
-
-.note {
- background-color: #f0f0f2;
-}
-
-.glossary dl dt,
-.variablelist dl dt,
-.variablelist dl dt span.term {
- color: #044;
-}
-
-div.figure,
-div.table,
-div.example,
-div.informalfigure,
-div.informaltable,
-div.informalexample {
- border-color: #aaa;
-}
-
-pre.programlisting {
- color: black;
- background-color: #fff;
- border-color: #aaa;
- border-width: 2px;
-}
-
-.guimenu,
-.guilabel,
-.guimenuitem {
- background-color: #eee;
-}
-
-
-b.keycap,
-.keycap {
- background-color: #eee;
- border-color: #999;
-}
-
-
-div.navheader {
- border-color: black;
-}
-
-
-div.navfooter {
- border-color: black;
-}
-
-.writernotes {
- color: red;
-}
-
-
- /*********** /
- / graphics /
-/ ***********/
-
-/*
-body {
- background-image: url("images/body_bg.jpg");
- background-attachment: fixed;
-}
-
-.navheader,
-.note,
-.tip {
- background-image: url("images/note_bg.jpg");
- background-attachment: fixed;
-}
-
-.warning,
-.caution {
- background-image: url("images/warning_bg.jpg");
- background-attachment: fixed;
-}
-
-.figure,
-.informalfigure,
-.example,
-.informalexample,
-.table,
-.informaltable {
- background-image: url("images/figure_bg.jpg");
- background-attachment: fixed;
-}
-
-*/
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-h7{
-}
-
-/*
-Example of how to stick an image as part of the title.
-
-div.article .titlepage .title
-{
- background-image: url("figures/white-on-black.png");
- background-position: center;
- background-repeat: repeat-x;
-}
-*/
-
-div.preface .titlepage .title,
-div.colophon .title,
-div.chapter .titlepage .title,
-div.article .titlepage .title
-{
-}
-
-div.section div.section .titlepage .title,
-div.sect2 .titlepage .title {
- background: none;
-}
-
-
-h1.title {
- background-color: transparent;
- background-repeat: no-repeat;
- height: 256px;
- text-indent: -9000px;
- overflow:hidden;
-}
-
-h2.subtitle {
- background-color: transparent;
- text-indent: -9000px;
- overflow:hidden;
- width: 0px;
- display: none;
-}
-
- /*************************************** /
- / pippin.gimp.org specific alterations /
-/ ***************************************/
-
-/*
-div.heading, div.navheader {
- color: #777;
- font-size: 80%;
- padding: 0;
- margin: 0;
- text-align: left;
- position: absolute;
- top: 0px;
- left: 0px;
- width: 100%;
- height: 50px;
- background: url('/gfx/heading_bg.png') transparent;
- background-repeat: repeat-x;
- background-attachment: fixed;
- border: none;
-}
-
-div.heading a {
- color: #444;
-}
-
-div.footing, div.navfooter {
- border: none;
- color: #ddd;
- font-size: 80%;
- text-align:right;
-
- width: 100%;
- padding-top: 10px;
- position: absolute;
- bottom: 0px;
- left: 0px;
-
- background: url('/gfx/footing_bg.png') transparent;
-}
-*/
-
-
-
- /****************** /
- / nasty ie tweaks /
-/ ******************/
-
-/*
-div.heading, div.navheader {
- width:expression(document.body.clientWidth + "px");
-}
-
-div.footing, div.navfooter {
- width:expression(document.body.clientWidth + "px");
- margin-left:expression("-5em");
-}
-body {
- padding:expression("4em 5em 0em 5em");
-}
-*/
-
- /**************************************** /
- / mozilla vendor specific css extensions /
-/ ****************************************/
-/*
-div.navfooter, div.footing{
- -moz-opacity: 0.8em;
-}
-
-div.figure,
-div.table,
-div.informalfigure,
-div.informaltable,
-div.informalexample,
-div.example,
-.tip,
-.warning,
-.caution,
-.note {
- -moz-border-radius: 0.5em;
-}
-
-b.keycap,
-.keycap {
- -moz-border-radius: 0.3em;
-}
-*/
-
-table tr td table tr td {
- display: none;
-}
-
-
-hr {
- display: none;
-}
-
-table {
- border: 0em;
-}
-
- .photo {
- float: right;
- margin-left: 1.5em;
- margin-bottom: 1.5em;
- margin-top: 0em;
- max-width: 17em;
- border: 1px solid gray;
- padding: 3px;
- background: white;
-}
- .seperator {
- padding-top: 2em;
- clear: both;
- }
-
- #validators {
- margin-top: 5em;
- text-align: right;
- color: #777;
- }
- @media print {
- body {
- font-size: 8pt;
- }
- .noprint {
- display: none;
- }
- }
-
-
-.tip,
-.note {
- background: #f0f0f2;
- color: #333;
- padding: 20px;
- margin: 20px;
-}
-
-.tip h3,
-.note h3 {
- padding: 0em;
- margin: 0em;
- font-size: 2em;
- font-weight: bold;
- color: #333;
-}
-
-.tip a,
-.note a {
- color: #333;
- text-decoration: underline;
-}
-
-.footnote {
- font-size: small;
- color: #333;
-}
-
-/* Changes the announcement text */
-.tip h3,
-.warning h3,
-.caution h3,
-.note h3 {
- font-size:large;
- color: #00557D;
-}
diff --git a/documentation/kernel-dev/kernel-dev-advanced.xml b/documentation/kernel-dev/kernel-dev-advanced.xml
index cf8d34dced0..5c76ed23912 100644
--- a/documentation/kernel-dev/kernel-dev-advanced.xml
+++ b/documentation/kernel-dev/kernel-dev-advanced.xml
@@ -21,7 +21,7 @@
<para>
Kernel Metadata exists in many places.
One area in the Yocto Project
- <ulink url='&YOCTO_DOCS_GS_URL;#source-repositories'>Source Repositories</ulink>
+ <ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>
is the <filename>yocto-kernel-cache</filename> Git repository.
You can find this repository grouped under the "Yocto Linux Kernel"
heading in the
@@ -64,8 +64,7 @@
<ulink url='&YOCTO_DOCS_REF_URL;#var-KMACHINE'><filename>KMACHINE</filename></ulink>
variable.
This variable is typically set to the same value as the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
- variable, which is used by
+ <filename>MACHINE</filename> variable, which is used by
<ulink url='&YOCTO_DOCS_REF_URL;#bitbake-term'>BitBake</ulink>.
However, in some cases, the variable might instead refer to the
underlying platform of the <filename>MACHINE</filename>.
@@ -77,8 +76,7 @@
Multiple Corei7-based BSPs could share the same "intel-corei7-64"
value for <filename>KMACHINE</filename>.
It is important to realize that <filename>KMACHINE</filename> is
- just for kernel mapping, while
- <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
+ just for kernel mapping, while <filename>MACHINE</filename>
is the machine type within a BSP Layer.
Even with this distinction, however, these two variables can hold
the same value.
@@ -116,8 +114,7 @@
used in assembling the configuration.
If you do not specify a <filename>LINUX_KERNEL_TYPE</filename>,
it defaults to "standard".
- Together with
- <ulink url='&YOCTO_DOCS_REF_URL;#var-KMACHINE'><filename>KMACHINE</filename></ulink>,
+ Together with <filename>KMACHINE</filename>,
<filename>LINUX_KERNEL_TYPE</filename> defines the search
arguments used by the kernel tools to find the
appropriate description within the kernel Metadata with which to
@@ -644,8 +641,7 @@
aggregation concepts, and presents a detailed example using
a BSP supported by the Yocto Project (i.e. BeagleBone Board).
For complete information on BSP layer file hierarchy, see the
- <ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support
- Package (BSP) Developer's Guide</ulink>.
+ <ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support Package (BSP) Developer's Guide</ulink>.
</para>
<section id='bsp-description-file-overview'>
@@ -856,7 +852,7 @@
<para>
Now consider the "minnow" description for the "tiny" kernel
- type (i.e. <filename>minnow-tiny.scc</filename>:
+ type (i.e. <filename>minnow-tiny.scc</filename>):
<literallayout class='monospaced'>
define KMACHINE minnow
define KTYPE tiny
@@ -1018,8 +1014,7 @@
<para>
If you modify the Metadata, you must not forget to update the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-SRCREV'><filename>SRCREV</filename></ulink>
- statements in the kernel's recipe.
+ <filename>SRCREV</filename> statements in the kernel's recipe.
In particular, you need to update the
<filename>SRCREV_meta</filename> variable to match the commit in
the <filename>KMETA</filename> branch you wish to use.
@@ -1227,9 +1222,13 @@
</para></listitem>
<listitem><para>
<filename>define</filename>:
- Defines variables, such as <filename>KMACHINE</filename>,
- <filename>KTYPE</filename>, <filename>KARCH</filename>,
- and <filename>KFEATURE_DESCRIPTION</filename>.</para></listitem>
+ Defines variables, such as
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-KMACHINE'><filename>KMACHINE</filename></ulink>,
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-KTYPE'><filename>KTYPE</filename></ulink>,
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-KARCH'><filename>KARCH</filename></ulink>,
+ and
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-KFEATURE_DESCRIPTION'><filename>KFEATURE_DESCRIPTION</filename></ulink>.
+ </para></listitem>
<listitem><para>
<filename>include SCC_FILE</filename>:
Includes an SCC file in the current file.
diff --git a/documentation/kernel-dev/kernel-dev-common.xml b/documentation/kernel-dev/kernel-dev-common.xml
index 9686609bf5b..83b02b1c18e 100644
--- a/documentation/kernel-dev/kernel-dev-common.xml
+++ b/documentation/kernel-dev/kernel-dev-common.xml
@@ -25,7 +25,7 @@
Before you can do any kernel development, you need to be
sure your build host is set up to use the Yocto Project.
For information on how to get set up, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#setting-up-the-development-host-to-use-the-yocto-project'>Setting Up to Use the Yocto Project</ulink>"
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-preparing-the-build-host'>Preparing the Build Host</ulink>"
section in the Yocto Project Development Tasks Manual.
Part of preparing the system is creating a local Git
repository of the
@@ -79,7 +79,7 @@
</literallayout>
<note>
The previous commands assume the
- <ulink url='&YOCTO_DOCS_GS_URL;#source-repositories'>Source Repositories</ulink>
+ <ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>
(i.e. <filename>poky</filename>) have been cloned
using Git and the local repository is named
"poky".
@@ -303,7 +303,7 @@
</literallayout>
<note>
The previous commands assume the
- <ulink url='&YOCTO_DOCS_GS_URL;#source-repositories'>Source Repositories</ulink>
+ <ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>
(i.e. <filename>poky</filename>) have been cloned
using Git and the local repository is named
"poky".
@@ -387,7 +387,7 @@
You can find Git repositories of supported Yocto Project
kernels organized under "Yocto Linux Kernel" in the
Yocto Project Source Repositories at
- <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink>.
+ <ulink url='&YOCTO_GIT_URL;'></ulink>.
</para>
<para>
@@ -1402,9 +1402,9 @@
SRC_URI_append = " file://0001-calibrate.c-Added-some-printk-statements.patch"
</literallayout>
The
- <ulink url='&YOCTO_DOCS_REF_URL;var-FILESEXTRAPATHS'><filename>FILESEXTRAPATHS</filename></ulink>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-FILESEXTRAPATHS'><filename>FILESEXTRAPATHS</filename></ulink>
and
- <ulink url='&YOCTO_DOCS_REF_URL;var-SRC_URI'><filename>SRC_URI</filename></ulink>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
statements enable the OpenEmbedded build system to find
the patch file.</para>
@@ -1656,7 +1656,7 @@
after applying the existing defconfig file configurations.
</note>
For more information on configuring the kernel, see the
- "<link link='changing-the-configuration'>Changing the Configuration</link>"
+ "<link linkend='changing-the-configuration'>Changing the Configuration</link>"
section.
</para>
</section>
@@ -2418,7 +2418,7 @@
modules.
If your module <filename>Makefile</filename> uses a different
variable, you might want to override the
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-compile'><filename>do_compile()</filename></ulink>
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-compile'><filename>do_compile</filename></ulink>
step, or create a patch to
the <filename>Makefile</filename> to work with the more typical
<filename>KERNEL_SRC</filename> or
@@ -2494,7 +2494,7 @@
the Git commands.
You can see the branch names through the web interface
to the Yocto Project source repositories at
- <ulink url='http://git.yoctoproject.org/cgit.cgi'></ulink>.
+ <ulink url='&YOCTO_GIT_URL;'></ulink>.
</note>
To see a full range of the changes, use the
<filename>git whatchanged</filename> command and specify a
diff --git a/documentation/kernel-dev/kernel-dev-concepts-appx.xml b/documentation/kernel-dev/kernel-dev-concepts-appx.xml
index 19e9fa994aa..6d675a6d518 100644
--- a/documentation/kernel-dev/kernel-dev-concepts-appx.xml
+++ b/documentation/kernel-dev/kernel-dev-concepts-appx.xml
@@ -49,7 +49,7 @@
<para>
You can find a web interface to the Yocto Linux kernels in the
- <ulink url='&YOCTO_DOCS_GS_URL;#source-repositories'>Source Repositories</ulink>
+ <ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>
at
<ulink url='&YOCTO_GIT_URL;'></ulink>.
If you look at the interface, you will see to the left a
@@ -239,8 +239,8 @@
<ulink url='http://git-scm.com/documentation'></ulink>.
You can also get an introduction to Git as it
applies to the Yocto Project in the
- "<ulink url='&YOCTO_DOCS_GS_URL;#git'>Git</ulink>"
- section in the Getting Started With Yocto Project
+ "<ulink url='&YOCTO_DOCS_OM_URL;#git'>Git</ulink>"
+ section in the Yocto Project Overview and Concepts
Manual.
The latter reference provides an overview of
Git and presents a minimal set of Git commands
@@ -382,7 +382,7 @@
generic kernel just for conceptual purposes.
Also keep in mind that this structure represents the Yocto
Project
- <ulink url='&YOCTO_DOCS_GS_URL;#source-repositories'>Source Repositories</ulink>
+ <ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>
that are either pulled from during the build or established
on the host development system prior to the build by either
cloning a particular kernel's Git repository or by
diff --git a/documentation/kernel-dev/kernel-dev-intro.xml b/documentation/kernel-dev/kernel-dev-intro.xml
index 7a5a34deb14..4e4fd282a53 100644
--- a/documentation/kernel-dev/kernel-dev-intro.xml
+++ b/documentation/kernel-dev/kernel-dev-intro.xml
@@ -108,7 +108,11 @@
review and understand the following documentation:
<itemizedlist>
<listitem><para>
- <ulink url='&YOCTO_DOCS_QS_URL;'>Yocto Project Quick Start</ulink>
+ <ulink url='&YOCTO_DOCS_BRIEF_URL;'>Yocto Project Quick Build</ulink>
+ document.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_OM_URL;'>Yocto Project Overview and Concepts Manual</ulink>.
</para></listitem>
<listitem><para>
<ulink url='&YOCTO_DOCS_SDK_URL;#using-devtool-in-your-sdk-workflow'><filename>devtool</filename> workflow</ulink>
@@ -153,12 +157,15 @@
<para>
<orderedlist>
<listitem><para>
- <emphasis>Set Up Your Host Development System to Support
- Development Using the Yocto Project:</emphasis>
+
+
+ <emphasis>Set up Your Host Development System to Support
+ Development Using the Yocto Project</emphasis>:
See the
- "<ulink url='&YOCTO_DOCS_QS_URL;#yp-resources'>Setting Up to Use the Yocto Project</ulink>"
- section in the Yocto Project Quick Start for options on how
- to get a build host ready to use the Yocto Project.
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-manual-start'>Setting Up the Development Host to Use the Yocto Project</ulink>"
+ section in the Yocto Project Development Tasks Manual for
+ options on how to get a build host ready to use the Yocto
+ Project.
</para></listitem>
<listitem><para>
<emphasis>Set Up Your Host Development System for Kernel Development:</emphasis>
diff --git a/documentation/kernel-dev/kernel-dev-maint-appx.xml b/documentation/kernel-dev/kernel-dev-maint-appx.xml
index 8acc2a8cade..b825ae7ea53 100644
--- a/documentation/kernel-dev/kernel-dev-maint-appx.xml
+++ b/documentation/kernel-dev/kernel-dev-maint-appx.xml
@@ -14,7 +14,7 @@
create Yocto Linux kernel repositories.
These kernel repositories are found under the heading "Yocto Linux
Kernel" at
- <ulink url='&YOCTO_GIT_URL;/cgit.cgi'>&YOCTO_GIT_URL;/cgit.cgi</ulink>
+ <ulink url='&YOCTO_GIT_URL;'>&YOCTO_GIT_URL;</ulink>
and are shipped as part of a Yocto Project release.
The team creates these repositories by compiling and executing the
set of feature descriptions for every BSP and feature in the
@@ -118,7 +118,7 @@
The following steps describe what happens when the Yocto Project
Team constructs the Yocto Project kernel source Git repository
(or tree) found at
- <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink> given the
+ <ulink url='&YOCTO_GIT_URL;'></ulink> given the
introduction of a new top-level kernel feature or BSP.
The following actions effectively provide the Metadata
and create the tree that includes the new feature, patch, or BSP:
@@ -217,7 +217,7 @@
end of an existing branch.
The full repository generation that is found in the
official Yocto Project kernel repositories at
- <ulink url='&YOCTO_GIT_URL;/cgit.cgi'>http://git.yoctoproject.org/cgit.cgi</ulink>
+ <ulink url='&YOCTO_GIT_URL;'>http://git.yoctoproject.org</ulink>
is the combination of all supported boards and
configurations.
</para></listitem>
@@ -231,7 +231,7 @@
</para></listitem>
<listitem><para>
The full kernel tree that you see on
- <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink> is
+ <ulink url='&YOCTO_GIT_URL;'></ulink> is
generated through repeating the above steps for all
valid BSPs.
The end result is a branched, clean history tree that
diff --git a/documentation/kernel-dev/kernel-dev.xml b/documentation/kernel-dev/kernel-dev.xml
index f697e3cb9d3..4045768493b 100644
--- a/documentation/kernel-dev/kernel-dev.xml
+++ b/documentation/kernel-dev/kernel-dev.xml
@@ -88,9 +88,14 @@
</revision>
<revision>
<revnumber>2.5</revnumber>
- <date>April 2018</date>
+ <date>May 2018</date>
<revremark>Released with the Yocto Project 2.5 Release.</revremark>
</revision>
+ <revision>
+ <revnumber>2.6</revnumber>
+ <date>&REL_MONTH_YEAR;</date>
+ <revremark>Released with the Yocto Project 2.6 Release.</revremark>
+ </revision>
</revhistory>
<copyright>
@@ -111,24 +116,36 @@
is for the &YOCTO_DOC_VERSION; release of the
Yocto Project.
To be sure you have the latest version of the manual
- for this release, use the manual from the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>.
+ for this release, go to the
+ <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
+ and select the manual from that site.
+ Manuals from the site are more up-to-date than manuals
+ derived from the Yocto Project released TAR files.
</para></listitem>
<listitem><para>
- For manuals associated with other releases of the Yocto
- Project, go to the
+ If you located this manual through a web search, the
+ version of the manual might not be the one you want
+ (e.g. the search might have returned a manual much
+ older than the Yocto Project version with which you
+ are working).
+ You can see all Yocto Project major releases by
+ visiting the
+ <ulink url='&YOCTO_WIKI_URL;/wiki/Releases'>Releases</ulink>
+ page.
+ If you need a version of this manual for a different
+ Yocto Project release, visit the
<ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
- and use the drop-down "Active Releases" button
- and choose the manual associated with the desired
- Yocto Project.
+ and select the manual set by using the
+ "ACTIVE RELEASES DOCUMENTATION" or "DOCUMENTS ARCHIVE"
+ pull-down menus.
</para></listitem>
<listitem><para>
- To report any inaccuracies or problems with this
- manual, send an email to the Yocto Project
- discussion group at
- <filename>yocto@yoctoproject.com</filename> or log into
- the freenode <filename>#yocto</filename> channel.
- </para></listitem>
+ To report any inaccuracies or problems with this
+ manual, send an email to the Yocto Project
+ discussion group at
+ <filename>yocto@yoctoproject.com</filename> or log into
+ the freenode <filename>#yocto</filename> channel.
+ </para></listitem>
</itemizedlist>
</note>
</legalnotice>
diff --git a/documentation/mega-manual/figures/analysis-for-package-splitting.png b/documentation/mega-manual/figures/analysis-for-package-splitting.png
index 04f2794ea9b..0cb038666be 100644
--- a/documentation/mega-manual/figures/analysis-for-package-splitting.png
+++ b/documentation/mega-manual/figures/analysis-for-package-splitting.png
Binary files differ
diff --git a/documentation/mega-manual/figures/bypqs-title.png b/documentation/mega-manual/figures/bypqs-title.png
new file mode 100644
index 00000000000..9e0a5ce52ed
--- /dev/null
+++ b/documentation/mega-manual/figures/bypqs-title.png
Binary files differ
diff --git a/documentation/mega-manual/figures/configuration-compile-autoreconf.png b/documentation/mega-manual/figures/configuration-compile-autoreconf.png
index a07464f04c3..043d195a33c 100644
--- a/documentation/mega-manual/figures/configuration-compile-autoreconf.png
+++ b/documentation/mega-manual/figures/configuration-compile-autoreconf.png
Binary files differ
diff --git a/documentation/mega-manual/figures/getting-started-title.png b/documentation/mega-manual/figures/getting-started-title.png
deleted file mode 100644
index f38b078ab7f..00000000000
--- a/documentation/mega-manual/figures/getting-started-title.png
+++ /dev/null
Binary files differ
diff --git a/documentation/mega-manual/figures/image-generation.png b/documentation/mega-manual/figures/image-generation.png
index 71a48dc6f43..aff9fc27e04 100644
--- a/documentation/mega-manual/figures/image-generation.png
+++ b/documentation/mega-manual/figures/image-generation.png
Binary files differ
diff --git a/documentation/mega-manual/figures/images.png b/documentation/mega-manual/figures/images.png
index d99eac1fbfa..20c01307d58 100644
--- a/documentation/mega-manual/figures/images.png
+++ b/documentation/mega-manual/figures/images.png
Binary files differ
diff --git a/documentation/mega-manual/figures/layer-input.png b/documentation/mega-manual/figures/layer-input.png
index 0a4f2e74f3d..29b56f9ea14 100644
--- a/documentation/mega-manual/figures/layer-input.png
+++ b/documentation/mega-manual/figures/layer-input.png
Binary files differ
diff --git a/documentation/mega-manual/figures/multiconfig_files.png b/documentation/mega-manual/figures/multiconfig_files.png
new file mode 100644
index 00000000000..0b59338b3a6
--- /dev/null
+++ b/documentation/mega-manual/figures/multiconfig_files.png
Binary files differ
diff --git a/documentation/mega-manual/figures/overview-manual-title.png b/documentation/mega-manual/figures/overview-manual-title.png
new file mode 100644
index 00000000000..41e9012c4f1
--- /dev/null
+++ b/documentation/mega-manual/figures/overview-manual-title.png
Binary files differ
diff --git a/documentation/mega-manual/figures/package-feeds.png b/documentation/mega-manual/figures/package-feeds.png
index 37c9c32506f..759283937c9 100644
--- a/documentation/mega-manual/figures/package-feeds.png
+++ b/documentation/mega-manual/figures/package-feeds.png
Binary files differ
diff --git a/documentation/mega-manual/figures/patching.png b/documentation/mega-manual/figures/patching.png
index 8ecd0185028..80fba7e7cf1 100644
--- a/documentation/mega-manual/figures/patching.png
+++ b/documentation/mega-manual/figures/patching.png
Binary files differ
diff --git a/documentation/mega-manual/figures/sdk-autotools-flow.png b/documentation/mega-manual/figures/sdk-autotools-flow.png
new file mode 100644
index 00000000000..ec6685f8b6c
--- /dev/null
+++ b/documentation/mega-manual/figures/sdk-autotools-flow.png
Binary files differ
diff --git a/documentation/mega-manual/figures/sdk-devtool-add-flow.png b/documentation/mega-manual/figures/sdk-devtool-add-flow.png
index c09e60e3558..e7d6173d2d4 100644
--- a/documentation/mega-manual/figures/sdk-devtool-add-flow.png
+++ b/documentation/mega-manual/figures/sdk-devtool-add-flow.png
Binary files differ
diff --git a/documentation/mega-manual/figures/sdk-devtool-modify-flow.png b/documentation/mega-manual/figures/sdk-devtool-modify-flow.png
index cd06c018132..18ba8b7e65e 100644
--- a/documentation/mega-manual/figures/sdk-devtool-modify-flow.png
+++ b/documentation/mega-manual/figures/sdk-devtool-modify-flow.png
Binary files differ
diff --git a/documentation/mega-manual/figures/sdk-devtool-upgrade-flow.png b/documentation/mega-manual/figures/sdk-devtool-upgrade-flow.png
index 65474dad02d..7d4f395e246 100644
--- a/documentation/mega-manual/figures/sdk-devtool-upgrade-flow.png
+++ b/documentation/mega-manual/figures/sdk-devtool-upgrade-flow.png
Binary files differ
diff --git a/documentation/mega-manual/figures/sdk-generation.png b/documentation/mega-manual/figures/sdk-generation.png
index adbe1f4acfb..939f8391136 100755..100644
--- a/documentation/mega-manual/figures/sdk-generation.png
+++ b/documentation/mega-manual/figures/sdk-generation.png
Binary files differ
diff --git a/documentation/mega-manual/figures/sdk-installed-extensible-sdk-directory.png b/documentation/mega-manual/figures/sdk-installed-extensible-sdk-directory.png
index 99e07ce6f68..b71c8ad73c3 100644
--- a/documentation/mega-manual/figures/sdk-installed-extensible-sdk-directory.png
+++ b/documentation/mega-manual/figures/sdk-installed-extensible-sdk-directory.png
Binary files differ
diff --git a/documentation/mega-manual/figures/sdk-installed-standard-sdk-directory.png b/documentation/mega-manual/figures/sdk-installed-standard-sdk-directory.png
index d4af8502083..45c0154b19f 100644
--- a/documentation/mega-manual/figures/sdk-installed-standard-sdk-directory.png
+++ b/documentation/mega-manual/figures/sdk-installed-standard-sdk-directory.png
Binary files differ
diff --git a/documentation/mega-manual/figures/sdk-makefile-flow.png b/documentation/mega-manual/figures/sdk-makefile-flow.png
new file mode 100644
index 00000000000..0ccb4180a3c
--- /dev/null
+++ b/documentation/mega-manual/figures/sdk-makefile-flow.png
Binary files differ
diff --git a/documentation/mega-manual/figures/sdk.png b/documentation/mega-manual/figures/sdk.png
index 5c36b7548bc..a376872638a 100644
--- a/documentation/mega-manual/figures/sdk.png
+++ b/documentation/mega-manual/figures/sdk.png
Binary files differ
diff --git a/documentation/mega-manual/figures/source-fetching.png b/documentation/mega-manual/figures/source-fetching.png
index 26aefb50c2d..bf5e187b2b7 100644
--- a/documentation/mega-manual/figures/source-fetching.png
+++ b/documentation/mega-manual/figures/source-fetching.png
Binary files differ
diff --git a/documentation/mega-manual/figures/source-input.png b/documentation/mega-manual/figures/source-input.png
index f7515058ef4..6b6ba4b3389 100644
--- a/documentation/mega-manual/figures/source-input.png
+++ b/documentation/mega-manual/figures/source-input.png
Binary files differ
diff --git a/documentation/mega-manual/figures/user-configuration.png b/documentation/mega-manual/figures/user-configuration.png
index c298401fc34..142454715bd 100755..100644
--- a/documentation/mega-manual/figures/user-configuration.png
+++ b/documentation/mega-manual/figures/user-configuration.png
Binary files differ
diff --git a/documentation/mega-manual/figures/yocto-environment-ref.png b/documentation/mega-manual/figures/yocto-environment-ref.png
deleted file mode 100644
index 650c6c80307..00000000000
--- a/documentation/mega-manual/figures/yocto-environment-ref.png
+++ /dev/null
Binary files differ
diff --git a/documentation/mega-manual/figures/ypqs-title.png b/documentation/mega-manual/figures/ypqs-title.png
deleted file mode 100644
index 25c7a42b99c..00000000000
--- a/documentation/mega-manual/figures/ypqs-title.png
+++ /dev/null
Binary files differ
diff --git a/documentation/mega-manual/mega-manual.xml b/documentation/mega-manual/mega-manual.xml
index 15402722ab4..7c6fe7e3a6a 100644
--- a/documentation/mega-manual/mega-manual.xml
+++ b/documentation/mega-manual/mega-manual.xml
@@ -72,9 +72,14 @@
</revision>
<revision>
<revnumber>2.5</revnumber>
- <date>April 2018</date>
+ <date>May 2018</date>
<revremark>Released with the Yocto Project 2.5 Release.</revremark>
</revision>
+ <revision>
+ <revnumber>2.6</revnumber>
+ <date>&REL_MONTH_YEAR;</date>
+ <revremark>Released with the Yocto Project 2.6 Release.</revremark>
+ </revision>
</revhistory>
<copyright>
@@ -95,24 +100,36 @@
is for the &YOCTO_DOC_VERSION; release of the
Yocto Project.
To be sure you have the latest version of the manual
- for this release, use the manual from the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>.
+ for this release, go to the
+ <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
+ and select the manual from that site.
+ Manuals from the site are more up-to-date than manuals
+ derived from the Yocto Project released TAR files.
</para></listitem>
<listitem><para>
- For manuals associated with other releases of the Yocto
- Project, go to the
+ If you located this manual through a web search, the
+ version of the manual might not be the one you want
+ (e.g. the search might have returned a manual much
+ older than the Yocto Project version with which you
+ are working).
+ You can see all Yocto Project major releases by
+ visiting the
+ <ulink url='&YOCTO_WIKI_URL;/wiki/Releases'>Releases</ulink>
+ page.
+ If you need a version of this manual for a different
+ Yocto Project release, visit the
<ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
- and use the drop-down "Active Releases" button
- and choose the manual associated with the desired
- Yocto Project.
+ and select the manual set by using the
+ "ACTIVE RELEASES DOCUMENTATION" or "DOCUMENTS ARCHIVE"
+ pull-down menus.
</para></listitem>
<listitem><para>
- To report any inaccuracies or problems with this
- manual, send an email to the Yocto Project
- discussion group at
- <filename>yocto@yoctoproject.com</filename> or log into
- the freenode <filename>#yocto</filename> channel.
- </para></listitem>
+ To report any inaccuracies or problems with this
+ manual, send an email to the Yocto Project
+ discussion group at
+ <filename>yocto@yoctoproject.com</filename> or log into
+ the freenode <filename>#yocto</filename> channel.
+ </para></listitem>
</itemizedlist>
</note>
@@ -120,41 +137,32 @@
</bookinfo>
-<!-- Includes yocto-project-qs -->
+<!-- Includes brief-yoctoprojectqs -->
<para>
- <imagedata fileref="figures/ypqs-title.png" width="100%" align="left" scalefit="1" />
+ <imagedata fileref="figures/bypqs-title.png" width="100%" align="left" scalefit="1" />
</para>
<xi:include
- xmlns:xi="http://www.w3.org/2003/XInclude" href="../yocto-project-qs/qs.xml"/>
+ xmlns:xi="http://www.w3.org/2003/XInclude" href="../brief-yoctoprojectqs/brief-yoctoprojectqs.xml"/>
-<!-- Includes getting-started title image and then getting-started chapters -->
+<!-- Includes overview-manual title image and then overview-manual chapters -->
<para>
- <imagedata fileref="figures/getting-started-title.png" width="100%" align="left" scalefit="1" />
+ <imagedata fileref="figures/overview-manual-title.png" width="100%" align="left" scalefit="1" />
</para>
<xi:include
- xmlns:xi="http://www.w3.org/2003/XInclude" href="../getting-started/getting-started-intro.xml"/>
-
- <xi:include
- xmlns:xi="http://www.w3.org/2003/XInclude" href="../getting-started/getting-started-yp-intro.xml"/>
+ xmlns:xi="http://www.w3.org/2003/XInclude" href="../overview-manual/overview-manual-intro.xml"/>
<xi:include
- xmlns:xi="http://www.w3.org/2003/XInclude" href="../getting-started/getting-started-development-environment.xml"/>
-
-<!-- Includes concepts-manual title image and then concepts-manual chapters -->
-
- <para>
- <imagedata fileref="figures/concepts-manual-title.png" width="100%" align="left" scalefit="1" />
- </para>
+ xmlns:xi="http://www.w3.org/2003/XInclude" href="../overview-manual/overview-manual-yp-intro.xml"/>
<xi:include
- xmlns:xi="http://www.w3.org/2003/XInclude" href="../concepts-manual/concepts-manual-intro.xml"/>
+ xmlns:xi="http://www.w3.org/2003/XInclude" href="../overview-manual/overview-manual-development-environment.xml"/>
<xi:include
- xmlns:xi="http://www.w3.org/2003/XInclude" href="../concepts-manual/concepts-manual-concepts.xml"/>
+ xmlns:xi="http://www.w3.org/2003/XInclude" href="../overview-manual/overview-manual-concepts.xml"/>
<!-- Includes dev-manual title image and then dev-manual chapters -->
@@ -167,8 +175,6 @@
<xi:include
xmlns:xi="http://www.w3.org/2003/XInclude" href="../dev-manual/dev-manual-start.xml"/>
<xi:include
- xmlns:xi="http://www.w3.org/2003/XInclude" href="../dev-manual/dev-manual-newbie.xml"/>
- <xi:include
xmlns:xi="http://www.w3.org/2003/XInclude" href="../dev-manual/dev-manual-common-tasks.xml"/>
<xi:include
xmlns:xi="http://www.w3.org/2003/XInclude" href="../dev-manual/dev-manual-qemu.xml"/>
@@ -196,7 +202,7 @@
<xi:include
xmlns:xi="http://www.w3.org/2003/XInclude" href="../sdk-manual/sdk-appendix-customizing-standard.xml"/>
<xi:include
- xmlns:xi="http://www.w3.org/2003/XInclude" href="../sdk-manual/sdk-appendix-mars.xml"/>
+ xmlns:xi="http://www.w3.org/2003/XInclude" href="../sdk-manual/sdk-appendix-neon.xml"/>
<!-- Includes bsp-guide title image and then bsp-guide chapters -->
diff --git a/documentation/getting-started/figures/YP-flow-diagram.png b/documentation/overview-manual/figures/YP-flow-diagram.png
index 82644105048..82644105048 100644
--- a/documentation/getting-started/figures/YP-flow-diagram.png
+++ b/documentation/overview-manual/figures/YP-flow-diagram.png
Binary files differ
diff --git a/documentation/overview-manual/figures/analysis-for-package-splitting.png b/documentation/overview-manual/figures/analysis-for-package-splitting.png
new file mode 100644
index 00000000000..0cb038666be
--- /dev/null
+++ b/documentation/overview-manual/figures/analysis-for-package-splitting.png
Binary files differ
diff --git a/documentation/overview-manual/figures/configuration-compile-autoreconf.png b/documentation/overview-manual/figures/configuration-compile-autoreconf.png
new file mode 100644
index 00000000000..043d195a33c
--- /dev/null
+++ b/documentation/overview-manual/figures/configuration-compile-autoreconf.png
Binary files differ
diff --git a/documentation/concepts-manual/figures/cross-development-toolchains.png b/documentation/overview-manual/figures/cross-development-toolchains.png
index cbe8371c057..cbe8371c057 100644
--- a/documentation/concepts-manual/figures/cross-development-toolchains.png
+++ b/documentation/overview-manual/figures/cross-development-toolchains.png
Binary files differ
diff --git a/documentation/getting-started/figures/git-workflow.png b/documentation/overview-manual/figures/git-workflow.png
index e401330a121..e401330a121 100644
--- a/documentation/getting-started/figures/git-workflow.png
+++ b/documentation/overview-manual/figures/git-workflow.png
Binary files differ
diff --git a/documentation/overview-manual/figures/image-generation.png b/documentation/overview-manual/figures/image-generation.png
new file mode 100644
index 00000000000..aff9fc27e04
--- /dev/null
+++ b/documentation/overview-manual/figures/image-generation.png
Binary files differ
diff --git a/documentation/overview-manual/figures/images.png b/documentation/overview-manual/figures/images.png
new file mode 100644
index 00000000000..20c01307d58
--- /dev/null
+++ b/documentation/overview-manual/figures/images.png
Binary files differ
diff --git a/documentation/getting-started/figures/index-downloads.png b/documentation/overview-manual/figures/index-downloads.png
index 96303b87812..96303b87812 100644
--- a/documentation/getting-started/figures/index-downloads.png
+++ b/documentation/overview-manual/figures/index-downloads.png
Binary files differ
diff --git a/documentation/getting-started/figures/key-dev-elements.png b/documentation/overview-manual/figures/key-dev-elements.png
index 76c44050fdd..76c44050fdd 100644
--- a/documentation/getting-started/figures/key-dev-elements.png
+++ b/documentation/overview-manual/figures/key-dev-elements.png
Binary files differ
diff --git a/documentation/overview-manual/figures/layer-input.png b/documentation/overview-manual/figures/layer-input.png
new file mode 100644
index 00000000000..29b56f9ea14
--- /dev/null
+++ b/documentation/overview-manual/figures/layer-input.png
Binary files differ
diff --git a/documentation/overview-manual/figures/overview-manual-title.png b/documentation/overview-manual/figures/overview-manual-title.png
new file mode 100644
index 00000000000..41e9012c4f1
--- /dev/null
+++ b/documentation/overview-manual/figures/overview-manual-title.png
Binary files differ
diff --git a/documentation/overview-manual/figures/package-feeds.png b/documentation/overview-manual/figures/package-feeds.png
new file mode 100644
index 00000000000..759283937c9
--- /dev/null
+++ b/documentation/overview-manual/figures/package-feeds.png
Binary files differ
diff --git a/documentation/overview-manual/figures/patching.png b/documentation/overview-manual/figures/patching.png
new file mode 100644
index 00000000000..80fba7e7cf1
--- /dev/null
+++ b/documentation/overview-manual/figures/patching.png
Binary files differ
diff --git a/documentation/getting-started/figures/poky-reference-distribution.png b/documentation/overview-manual/figures/poky-reference-distribution.png
index 1be89ae68e3..1be89ae68e3 100644
--- a/documentation/getting-started/figures/poky-reference-distribution.png
+++ b/documentation/overview-manual/figures/poky-reference-distribution.png
Binary files differ
diff --git a/documentation/overview-manual/figures/sdk-generation.png b/documentation/overview-manual/figures/sdk-generation.png
new file mode 100644
index 00000000000..939f8391136
--- /dev/null
+++ b/documentation/overview-manual/figures/sdk-generation.png
Binary files differ
diff --git a/documentation/overview-manual/figures/sdk.png b/documentation/overview-manual/figures/sdk.png
new file mode 100644
index 00000000000..a376872638a
--- /dev/null
+++ b/documentation/overview-manual/figures/sdk.png
Binary files differ
diff --git a/documentation/overview-manual/figures/source-fetching.png b/documentation/overview-manual/figures/source-fetching.png
new file mode 100644
index 00000000000..bf5e187b2b7
--- /dev/null
+++ b/documentation/overview-manual/figures/source-fetching.png
Binary files differ
diff --git a/documentation/overview-manual/figures/source-input.png b/documentation/overview-manual/figures/source-input.png
new file mode 100644
index 00000000000..6b6ba4b3389
--- /dev/null
+++ b/documentation/overview-manual/figures/source-input.png
Binary files differ
diff --git a/documentation/getting-started/figures/source-repos.png b/documentation/overview-manual/figures/source-repos.png
index 603300b6d26..603300b6d26 100644
--- a/documentation/getting-started/figures/source-repos.png
+++ b/documentation/overview-manual/figures/source-repos.png
Binary files differ
diff --git a/documentation/overview-manual/figures/user-configuration.png b/documentation/overview-manual/figures/user-configuration.png
new file mode 100644
index 00000000000..142454715bd
--- /dev/null
+++ b/documentation/overview-manual/figures/user-configuration.png
Binary files differ
diff --git a/documentation/getting-started/figures/yp-download.png b/documentation/overview-manual/figures/yp-download.png
index bfd12b678a1..bfd12b678a1 100644
--- a/documentation/getting-started/figures/yp-download.png
+++ b/documentation/overview-manual/figures/yp-download.png
Binary files differ
diff --git a/documentation/concepts-manual/concepts-manual-concepts.xml b/documentation/overview-manual/overview-manual-concepts.xml
index 7ff9e40be49..338a190ae23 100644
--- a/documentation/concepts-manual/concepts-manual-concepts.xml
+++ b/documentation/overview-manual/overview-manual-concepts.xml
@@ -2,9 +2,19 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
-<chapter id=' concepts-manual-concepts'>
+<chapter id=' overview-manual-concepts'>
<title>Yocto Project Concepts</title>
+ <para>
+ This chapter provides explanations for Yocto Project concepts that
+ go beyond the surface of "how-to" information and reference (or
+ look-up) material.
+ Concepts such as components, the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>
+ workflow, cross-development toolchains, shared state cache, and so
+ forth are explained.
+ </para>
+
<section id='yocto-project-components'>
<title>Yocto Project Components</title>
@@ -12,7 +22,8 @@
The
<ulink url='&YOCTO_DOCS_REF_URL;#bitbake-term'>BitBake</ulink>
task executor together with various types of configuration files
- form the OpenEmbedded Core.
+ form the
+ <ulink url='&YOCTO_DOCS_REF_URL;#oe-core'>OpenEmbedded-Core</ulink>.
This section overviews these components by describing their use and
how they interact.
</para>
@@ -52,7 +63,7 @@
Following are some brief details on these core components.
For additional information on how these components interact during
a build, see the
- "<link linkend='development-concepts'>Development Concepts</link>"
+ "<link linkend='openembedded-build-system-build-concepts'>OpenEmbedded Build System Concepts</link>"
section.
</para>
@@ -128,8 +139,8 @@
</para>
</section>
- <section id='concepts-components-metadata'>
- <title>Metadata (Recipes)</title>
+ <section id='overview-components-recipes'>
+ <title>Recipes</title>
<para>
Files that have the <filename>.bb</filename> suffix are
@@ -153,12 +164,12 @@
</para>
</section>
- <section id='concepts-components-classes'>
+ <section id='overview-components-classes'>
<title>Classes</title>
<para>
Class files (<filename>.bbclass</filename>) contain information
- that is useful to share between Metadata files.
+ that is useful to share between recipes files.
An example is the
<ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-autotools'><filename>autotools</filename></ulink>
class, which contains common settings for any application that
@@ -170,8 +181,8 @@
</para>
</section>
- <section id='concepts-components-configuration'>
- <title>Configuration</title>
+ <section id='overview-components-configurations'>
+ <title>Configurations</title>
<para>
The configuration files (<filename>.conf</filename>) define
@@ -181,64 +192,88 @@
configuration options, distribution configuration options,
compiler tuning options, general common configuration options,
and user configuration options in
- <filename>local.conf</filename>, which is found in the
+ <filename>conf/local.conf</filename>, which is found in the
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>.
</para>
</section>
</section>
- <section id='cm-layers'>
+ <section id='overview-layers'>
<title>Layers</title>
<para>
- Layers are repositories that contain related sets of instructions
- that tell the OpenEmbedded build system what to do.
- You use different layers to logically separate information in your
- build.
- You can collaborate, share, and reuse layers.
- The Layer Model simultaneously supports collaboration and
- customization.
+ Layers are repositories that contain related metadata (i.e.
+ sets of instructions) that tell the OpenEmbedded build system how
+ to build a target.
+ Yocto Project's
+ <link linkend='the-yocto-project-layer-model'>layer model</link>
+ facilitates collaboration, sharing, customization, and reuse
+ within the Yocto Project development environment.
+ Layers logically separate information for your project.
+ For example, you can use a layer to hold all the configurations
+ for a particular piece of hardware.
+ Isolating hardware-specific configurations allows you to share
+ other metadata by using a different layer where that metadata
+ might be common across several pieces of hardware.
+ </para>
+
+ <para>
+ Many layers exist that work in the Yocto Project development
+ environment.
+ The
+ <ulink url='https://caffelli-staging.yoctoproject.org/software-overview/layers/'>Yocto Project Curated Layer Index</ulink>
+ and
+ <ulink url='http://layers.openembedded.org/layerindex/branch/master/layers/'>OpenEmbedded Layer Index</ulink>
+ both contain layers from which you can use or leverage.
</para>
<para>
- For more introductory information on the Yocto Project's layer
- model, see the
- "<ulink url='&YOCTO_DOCS_GS_URL;#the-yocto-project-layer-model'>The Yocto Project Layer Model</ulink>"
- section in the Getting Started With Yocto Project Manual.
- For procedures on how to create layers, see the
+ By convention, layers in the Yocto Project follow a specific form.
+ Conforming to a known structure allows BitBake to make assumptions
+ during builds on where to find types of metadata.
+ You can find procedures and learn about tools (i.e.
+ <filename>bitbake-layers</filename>) for creating layers suitable
+ for the Yocto Project in the
"<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>"
- section in the Yocto Project Development Tasks Manual.
+ section of the Yocto Project Development Tasks Manual.
</para>
</section>
- <section id="development-concepts">
- <title>Development Concepts</title>
+ <section id="openembedded-build-system-build-concepts">
+ <title>OpenEmbedded Build System Concepts</title>
<para>
This section takes a more detailed look inside the build
- process used by the OpenEmbedded build system.
- The following diagram represents the build at a high level.
+ process used by the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>,
+ which is the build system specific to the Yocto Project.
+ At the heart of the build system is BitBake, the task executor.
+ </para>
+
+ <para>
+ The following diagram represents the high-level workflow of a
+ build.
The remainder of this section expands on the fundamental input,
- output, process, and
- <ulink url='&YOCTO_DOCS_REF_URL;#metadata'>Metadata</ulink>
- blocks that make up the build process.
+ output, process, and metadata logical blocks that make up the
+ workflow.
</para>
- <para id='general-yocto-environment-figure'>
- <imagedata fileref="figures/yocto-environment-ref.png" align="center" width="8in" depth="4.25in" />
+ <para id='general-workflow-figure'>
+ <imagedata fileref="figures/YP-flow-diagram.png" format="PNG" align='center' width="8in"/>
</para>
<para>
- In general, the build process consists of several functional areas:
+ In general, the build's workflow consists of several functional
+ areas:
<itemizedlist>
<listitem><para>
<emphasis>User Configuration:</emphasis>
- Metadata you can use to control the build process.
+ metadata you can use to control the build process.
</para></listitem>
<listitem><para>
<emphasis>Metadata Layers:</emphasis>
Various layers that provide software, machine, and
- distro Metadata.
+ distro metadata.
</para></listitem>
<listitem><para>
<emphasis>Source Files:</emphasis>
@@ -257,7 +292,8 @@
<emphasis>Package Feeds:</emphasis>
Directories containing output packages (RPM, DEB or IPK),
which are subsequently used in the construction of an
- image or SDK, produced by the build system.
+ image or Software Development Kit (SDK), produced by the
+ build system.
These feeds can also be copied and shared using a web
server or other means to facilitate extending or updating
existing images on devices at runtime if runtime package
@@ -265,7 +301,7 @@
</para></listitem>
<listitem><para>
<emphasis>Images:</emphasis>
- Images produced by the development process.
+ Images produced by the workflow.
</para></listitem>
<listitem><para>
<emphasis>Application Development SDK:</emphasis>
@@ -288,7 +324,7 @@
<para>
The following figure shows an expanded representation of the
"User Configuration" box of the
- <link linkend='general-yocto-environment-figure'>general Build Process figure</link>:
+ <link linkend='general-workflow-figure'>general workflow figure</link>:
</para>
<para>
@@ -300,21 +336,22 @@
complete a build.
These files are <filename>*.conf</filename> files.
The minimally necessary ones reside as example files in the
+ <filename>build/conf</filename> directory of the
<ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>.
For simplicity, this section refers to the Source Directory as
the "Poky Directory."
</para>
<para>
- When you clone the <filename>poky</filename> Git repository
- or you download and unpack a Yocto Project release, you
- can set up the Source Directory to be named anything you want.
+ When you clone the
+ <ulink url='&YOCTO_DOCS_REF_URL;#poky'>Poky</ulink>
+ Git repository or you download and unpack a Yocto Project
+ release, you can set up the Source Directory to be named
+ anything you want.
For this discussion, the cloned repository uses the default
name <filename>poky</filename>.
<note>
- The
- <ulink url='&YOCTO_DOCS_REF_URL;#poky'>Poky</ulink>
- repository is primarily an aggregation of existing
+ The Poky repository is primarily an aggregation of existing
repositories.
It is not a canonical upstream source.
</note>
@@ -325,10 +362,9 @@
a <filename>conf</filename> directory that has example
configuration files.
These example files are used as a basis for creating actual
- configuration files when you source the build environment
- script
- (i.e.
- <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>).
+ configuration files when you source
+ <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>,
+ which is the build environment script.
</para>
<para>
@@ -380,19 +416,10 @@
To see the default configurations in a
<filename>local.conf</filename> file created by the build
environment script, see the
- <filename>local.conf.sample</filename> in the
- <filename>meta-poky</filename> layer:
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta-poky/conf/local.conf.sample'><filename>local.conf.sample</filename></ulink>
+ in the <filename>meta-poky</filename> layer:
<itemizedlist>
<listitem><para>
- <emphasis>Parallelism Options:</emphasis>
- Controlled by the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-BB_NUMBER_THREADS'><filename>BB_NUMBER_THREADS</filename></ulink>,
- <ulink url='&YOCTO_DOCS_REF_URL;#var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></ulink>,
- and
- <ulink url='&YOCTO_DOCS_BB_URL;#var-BB_NUMBER_PARSE_THREADS'><filename>BB_NUMBER_PARSE_THREADS</filename></ulink>
- variables.
- </para></listitem>
- <listitem><para>
<emphasis>Target Machine Selection:</emphasis>
Controlled by the
<ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
@@ -416,6 +443,30 @@
<ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>
variable.
</para></listitem>
+ <listitem><para>
+ <emphasis>Distribution Policy:</emphasis>
+ Controlled by the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-DISTRO'><filename>DISTRO</filename></ulink>
+ variable.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Packaging Format:</emphasis>
+ Controlled by the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></ulink>
+ variable.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>SDK Target Architecture:</emphasis>
+ Controlled by the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-SDKMACHINE'><filename>SDKMACHINE</filename></ulink>
+ variable.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Extra Image Packages:</emphasis>
+ Controlled by the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_IMAGE_FEATURES'><filename>EXTRA_IMAGE_FEATURES</filename></ulink>
+ variable.
+ </para></listitem>
</itemizedlist>
<note>
Configurations set in the
@@ -505,7 +556,9 @@
<filename>site.conf</filename>, <filename>auto.conf</filename>,
and <filename>local.conf</filename>.
And, the build system applies the normal assignment statement
- rules.
+ rules as described in the
+ "<ulink url='&YOCTO_DOCS_BB_URL;#bitbake-user-manual-metadata'>Syntax and Operators</ulink>"
+ chapter of the BitBake User Manual.
Because the files are parsed in a specific order, variable
assignments for the same variable could be affected.
For example, if the <filename>auto.conf</filename> file and
@@ -527,67 +580,98 @@
This section takes a closer look at the layers the build system
uses to further control the build.
These layers provide Metadata for the software, machine, and
- policy.
+ policies.
</para>
<para>
- In general, three types of layer input exist:
+ In general, three types of layer input exists.
+ You can see them below the "User Configuration" box in the
+ <link linkend='general-workflow-figure'>general workflow figure</link>:
<itemizedlist>
<listitem><para>
- <emphasis>Policy Configuration:</emphasis>
- Distribution Layers provide top-level or general
- policies for the image or SDK being built.
- For example, this layer would dictate whether BitBake
- produces RPM or IPK packages.
+ <emphasis>Metadata (<filename>.bb</filename> + Patches):</emphasis>
+ Software layers containing user-supplied recipe files,
+ patches, and append files.
+ A good example of a software layer might be the
+ <ulink url='https://github.com/meta-qt5/meta-qt5'><filename>meta-qt5</filename></ulink>
+ layer from the
+ <ulink url='http://layers.openembedded.org/layerindex/branch/master/layers/'>OpenEmbedded Layer Index</ulink>.
+ This layer is for version 5.0 of the popular
+ <ulink url='https://wiki.qt.io/About_Qt'>Qt</ulink>
+ cross-platform application development framework for
+ desktop, embedded and mobile.
</para></listitem>
<listitem><para>
- <emphasis>Machine Configuration:</emphasis>
- Board Support Package (BSP) layers provide machine
+ <emphasis>Machine BSP Configuration:</emphasis>
+ Board Support Package (BSP) layers (i.e. "BSP Layer"
+ in the following figure) providing machine-specific
configurations.
This type of information is specific to a particular
target architecture.
+ A good example of a BSP layer from the
+ <link linkend='gs-reference-distribution-poky'>Poky Reference Distribution</link>
+ is the
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta-yocto-bsp'><filename>meta-yocto-bsp</filename></ulink>
+ layer.
</para></listitem>
<listitem><para>
- <emphasis>Metadata:</emphasis>
- Software layers contain user-supplied recipe files,
- patches, and append files.
+ <emphasis>Policy Configuration:</emphasis>
+ Distribution Layers (i.e. "Distro Layer" in the
+ following figure) providing top-level or general
+ policies for the images or SDKs being built for a
+ particular distribution.
+ For example, in the Poky Reference Distribution the
+ distro layer is the
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta-poky'><filename>meta-poky</filename></ulink>
+ layer.
+ Within the distro layer is a
+ <filename>conf/distro</filename> directory that
+ contains distro configuration files (e.g.
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta-poky/conf/distro/poky.conf'><filename>poky.conf</filename></ulink>
+ that contain many policy configurations for the
+ Poky distribution.
</para></listitem>
</itemizedlist>
</para>
<para>
- The following figure shows an expanded representation of the
- Metadata, Machine Configuration, and Policy Configuration input
- (layers) boxes of the
- <link linkend='general-yocto-environment-figure'>general Build Process figure</link>:
+ The following figure shows an expanded representation of
+ these three layers from the
+ <link linkend='general-workflow-figure'>general workflow figure</link>:
</para>
<para>
- <imagedata fileref="figures/layer-input.png" align="center" width="8in" depth="7.5in" />
+ <imagedata fileref="figures/layer-input.png" align="center" width="8in" depth="8in" />
</para>
<para>
In general, all layers have a similar structure.
They all contain a licensing file
- (e.g. <filename>COPYING</filename>) if the layer is to be
+ (e.g. <filename>COPYING.MIT</filename>) if the layer is to be
distributed, a <filename>README</filename> file as good
practice and especially if the layer is to be distributed, a
configuration directory, and recipe directories.
+ You can learn about the general structure for layers used with
+ the Yocto Project in the
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-your-own-layer'>Creating Your Own Layer</ulink>"
+ section in the Yocto Project Development Tasks Manual.
+ For a general discussion on layers and the many layers from
+ which you can draw, see the
+ "<link linkend='overview-layers'>Layers</link>" and
+ "<link linkend='the-yocto-project-layer-model'>The Yocto Project Layer Model</link>"
+ sections both earlier in this manual.
</para>
<para>
- The Yocto Project has many layers that can be used.
- You can see a web-interface listing of them on the
+ If you explored the previous links, you discovered some
+ areas where many layers that work with the Yocto Project
+ exist.
+ The
<ulink url="http://git.yoctoproject.org/">Source Repositories</ulink>
- page.
- The layers appear at the bottom categorized under
- "Yocto Metadata Layers."
- These layers are fundamentally a subset of the
- <ulink url="http://layers.openembedded.org/layerindex/layers/">OpenEmbedded Metadata Index</ulink>,
- which lists all layers provided by the OpenEmbedded community.
+ also shows layers categorized under "Yocto Metadata Layers."
<note>
Layers exist in the Yocto Project Source Repositories that
- cannot be found in the OpenEmbedded Metadata Index.
+ cannot be found in the OpenEmbedded Layer Index.
These layers are either deprecated or experimental
in nature.
</note>
@@ -599,12 +683,6 @@
should be using as part of the build.
</para>
- <para>
- For more information on layers, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>"
- section in the Yocto Project Development Tasks Manual.
- </para>
-
<section id="distro-layer">
<title>Distro Layer</title>
@@ -651,6 +729,16 @@
to add distribution-specific configuration,
initialization scripts, custom image recipes,
and so forth.
+ Examples of <filename>recipes-*</filename>
+ directories are <filename>recipes-core</filename>
+ and <filename>recipes-extra</filename>.
+ Hierarchy and contents within a
+ <filename>recipes-*</filename> directory can vary.
+ Generally, these directories contain recipe files
+ (<filename>*.bb</filename>), recipe append files
+ (<filename>*.bbappend</filename>), directories
+ that are distro-specific for configuration files,
+ and so forth.
</para></listitem>
</itemizedlist>
</para>
@@ -660,7 +748,8 @@
<title>BSP Layer</title>
<para>
- The BSP Layer provides machine configurations.
+ The BSP Layer provides machine configurations that
+ target specific hardware.
Everything in this layer is specific to the machine for
which you are building the image or the SDK.
A common structure or form is defined for BSP layers.
@@ -685,8 +774,8 @@
The remainder of the layer is dedicated to specific recipes
by function: <filename>recipes-bsp</filename>,
<filename>recipes-core</filename>,
- <filename>recipes-graphics</filename>, and
- <filename>recipes-kernel</filename>.
+ <filename>recipes-graphics</filename>,
+ <filename>recipes-kernel</filename>, and so forth.
Metadata can exist for multiple formfactors, graphics
support systems, and so forth.
<note>
@@ -709,8 +798,8 @@
</para>
<para>
- This layer contains any new recipes that your project
- needs in the form of recipe files.
+ This layer contains any recipes, append files, and
+ patches, that your project needs.
</para>
</section>
</section>
@@ -722,11 +811,11 @@
In order for the OpenEmbedded build system to create an
image or any target, it must be able to access source files.
The
- <link linkend='general-yocto-environment-figure'>general Build Process figure</link>
+ <link linkend='general-workflow-figure'>general workflow figure</link>
represents source files using the "Upstream Project Releases",
"Local Projects", and "SCMs (optional)" boxes.
The figure represents mirrors, which also play a role in
- locating source files, with the "Source Mirror(s)" box.
+ locating source files, with the "Source Materials" box.
</para>
<para>
@@ -786,8 +875,11 @@
The remainder of this section provides a deeper look into the
source files and the mirrors.
Here is a more detailed look at the source file area of the
- <link linkend='general-yocto-environment-figure'>general Build Process figure</link>:
- <imagedata fileref="figures/source-input.png" align="center" width="7in" depth="7.5in" />
+ <link linkend='general-workflow-figure'>general workflow figure</link>:
+ </para>
+
+ <para>
+ <imagedata fileref="figures/source-input.png" width="6in" depth="6in" align="center" />
</para>
<section id='upstream-project-releases'>
@@ -826,13 +918,6 @@
recipe to point to the local directory on your disk to pull
in the whole source tree.
</para>
-
- <para>
- For information on how to use the
- <filename>externalsrc</filename> class, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-externalsrc'><filename>externalsrc.bbclass</filename></ulink>"
- section.
- </para>
</section>
<section id='scms'>
@@ -906,7 +991,7 @@
in the
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>.
The
- <link linkend='general-yocto-environment-figure'>general Build Process figure</link>
+ <link linkend='general-workflow-figure'>general workflow figure</link>
shows this package feeds area in the upper-right corner.
</para>
@@ -998,18 +1083,17 @@
<para>
The OpenEmbedded build system uses
<ulink url='&YOCTO_DOCS_REF_URL;#bitbake-term'>BitBake</ulink>
- to produce images.
+ to produce images and Software Development Kits (SDKs).
You can see from the
- <link linkend='general-yocto-environment-figure'>general Build Process figure</link>,
+ <link linkend='general-workflow-figure'>general workflow figure</link>,
the BitBake area consists of several functional areas.
This section takes a closer look at each of those areas.
- </para>
-
- <para>
- Separate documentation exists for the BitBake tool.
- See the
- <ulink url='&YOCTO_DOCS_BB_URL;#bitbake-user-manual'>BitBake User Manual</ulink>
- for reference material on BitBake.
+ <note>
+ Separate documentation exists for the BitBake tool.
+ See the
+ <ulink url='&YOCTO_DOCS_BB_URL;#bitbake-user-manual'>BitBake User Manual</ulink>
+ for reference material on BitBake.
+ </note>
</para>
<section id='source-fetching-dev-environment'>
@@ -1026,8 +1110,8 @@
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-fetch'><filename>do_fetch</filename></ulink>
and
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-unpack'><filename>do_unpack</filename></ulink>
- tasks fetch the source files and unpack them into the work
- directory.
+ tasks fetch the source files and unpack them into the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>.
<note>
For every local file (e.g. <filename>file://</filename>)
that is part of a recipe's
@@ -1035,14 +1119,13 @@
statement, the OpenEmbedded build system takes a
checksum of the file for the recipe and inserts the
checksum into the signature for the
- <filename>do_fetch</filename>.
+ <filename>do_fetch</filename> task.
If any local file has been modified, the
<filename>do_fetch</filename> task and all tasks that
depend on it are re-executed.
</note>
- By default, everything is accomplished in the
- <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>,
- which has a defined structure.
+ By default, everything is accomplished in the Build
+ Directory, which has a defined structure.
For additional general information on the Build Directory,
see the
"<ulink url='&YOCTO_DOCS_REF_URL;#structure-core-build'><filename>build/</filename></ulink>"
@@ -1050,54 +1133,99 @@
</para>
<para>
- Unpacked source files are pointed to by the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-S'><filename>S</filename></ulink>
- variable.
Each recipe has an area in the Build Directory where the
unpacked source code resides.
+ The
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-S'><filename>S</filename></ulink>
+ variable points to this area for a recipe's unpacked source
+ code.
The name of that directory for any given recipe is defined
from several different variables.
- You can see the variables that define these directories
- by looking at the figure:
+ The preceding figure and the following list describe
+ the Build Directory's hierarchy:
<itemizedlist>
<listitem><para>
<ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>:
The base directory where the OpenEmbedded build
system performs all its work during the build.
+ The default base directory is the
+ <filename>tmp</filename> directory.
</para></listitem>
<listitem><para>
<ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_ARCH'><filename>PACKAGE_ARCH</filename></ulink>:
The architecture of the built package or packages.
+ Depending on the eventual destination of the
+ package or packages (i.e. machine architecture,
+ <ulink url='&YOCTO_DOCS_REF_URL;#hardware-build-system-term'>build host</ulink>,
+ SDK, or specific machine),
+ <filename>PACKAGE_ARCH</filename> varies.
+ See the variable's description for details.
</para></listitem>
<listitem><para>
<ulink url='&YOCTO_DOCS_REF_URL;#var-TARGET_OS'><filename>TARGET_OS</filename></ulink>:
The operating system of the target device.
+ A typical value would be "linux" (e.g.
+ "qemux86-poky-linux").
</para></listitem>
<listitem><para>
<ulink url='&YOCTO_DOCS_REF_URL;#var-PN'><filename>PN</filename></ulink>:
- The name of the built package.
- </para></listitem>
- <listitem><para>
- <ulink url='&YOCTO_DOCS_REF_URL;#var-PV'><filename>PV</filename></ulink>:
- The version of the recipe used to build the
- package.
- </para></listitem>
- <listitem><para>
- <ulink url='&YOCTO_DOCS_REF_URL;#var-PR'><filename>PR</filename></ulink>:
- The revision of the recipe used to build the
- package.
+ The name of the recipe used to build the package.
+ This variable can have multiple meanings.
+ However, when used in the context of input files,
+ <filename>PN</filename> represents the the name
+ of the recipe.
</para></listitem>
<listitem><para>
<ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink>:
- The location within <filename>TMPDIR</filename>
- where a specific package is built.
+ The location where the OpenEmbedded build system
+ builds a recipe (i.e. does the work to create the
+ package).
+ <itemizedlist>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-PV'><filename>PV</filename></ulink>:
+ The version of the recipe used to build the
+ package.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-PR'><filename>PR</filename></ulink>:
+ The revision of the recipe used to build the
+ package.
+ </para></listitem>
+ </itemizedlist>
</para></listitem>
<listitem><para>
<ulink url='&YOCTO_DOCS_REF_URL;#var-S'><filename>S</filename></ulink>:
Contains the unpacked source files for a given
recipe.
+ <itemizedlist>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-BPN'><filename>BPN</filename></ulink>:
+ The name of the recipe used to build the
+ package.
+ The <filename>BPN</filename> variable is
+ a version of the <filename>PN</filename>
+ variable but with common prefixes and
+ suffixes removed.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-PV'><filename>PV</filename></ulink>:
+ The version of the recipe used to build the
+ package.
+ </para></listitem>
+ </itemizedlist>
</para></listitem>
</itemizedlist>
+ <note>
+ In the previous figure, notice that two sample
+ hierarchies exist: one based on package architecture (i.e.
+ <filename>PACKAGE_ARCH</filename>) and one based on a
+ machine (i.e. <filename>MACHINE</filename>).
+ The underlying structures are identical.
+ The differentiator being what the OpenEmbedded build
+ system is using as a build target (e.g. general
+ architecture, a build host, an SDK, or a specific
+ machine).
+ </note>
</para>
</section>
@@ -1107,26 +1235,38 @@
<para>
Once source code is fetched and unpacked, BitBake locates
patch files and applies them to the source files:
- <imagedata fileref="figures/patching.png" align="center" width="6in" depth="5in" />
+ <imagedata fileref="figures/patching.png" align="center" width="7in" depth="6in" />
</para>
<para>
The
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-patch'><filename>do_patch</filename></ulink>
- task processes recipes by using the
+ task uses a recipe's
<ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
- variable to locate applicable patch files, which by default
- are <filename>*.patch</filename> or
- <filename>*.diff</filename> files, or any file if
- "apply=yes" is specified for the file in
- <filename>SRC_URI</filename>.
+ statements and the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-FILESPATH'><filename>FILESPATH</filename></ulink>
+ variable to locate applicable patch files.
+ </para>
+
+ <para>
+ Default processing for patch files assumes the files have
+ either <filename>*.patch</filename> or
+ <filename>*.diff</filename> file types.
+ You can use <filename>SRC_URI</filename> parameters to
+ change the way the build system recognizes patch files.
+ See the
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-patch'><filename>do_patch</filename></ulink>
+ task for more information.
</para>
<para>
BitBake finds and applies multiple patches for a single
- recipe in the order in which it finds the patches.
- Patches are applied to the recipe's source files located
- in the
+ recipe in the order in which it locates the patches.
+ The <filename>FILESPATH</filename> variable defines the
+ default set of directories that the build system uses to
+ search for patch files.
+ Once found, patches are applied to the recipe's source
+ files, which are located in the
<ulink url='&YOCTO_DOCS_REF_URL;#var-S'><filename>S</filename></ulink>
directory.
</para>
@@ -1136,20 +1276,35 @@
created, see the
"<link linkend='source-fetching-dev-environment'>Source Fetching</link>"
section.
+ For more information on how to create patches and how the
+ build system processes patches, see the
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-patching-code'>Patching Code</ulink>"
+ section in the Yocto Project Development Tasks Manual.
+ You can also see the
+ "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-devtool-use-devtool-modify-to-modify-the-source-of-an-existing-component'>Use <filename>devtool modify</filename> to Modify the Source of an Existing Component</ulink>"
+ section in the Yocto Project Application Development and
+ the Extensible Software Development Kit (SDK) manual and
+ the
+ "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#using-traditional-kernel-development-to-patch-the-kernel'>Using Traditional Kernel Development to Patch the Kernel</ulink>"
+ section in the Yocto Project Linux Kernel Development
+ Manual.
</para>
</section>
- <section id='configuration-and-compilation-dev-environment'>
- <title>Configuration and Compilation</title>
+ <section id='configuration-compilation-and-staging-dev-environment'>
+ <title>Configuration, Compilation, and Staging</title>
<para>
After source code is patched, BitBake executes tasks that
- configure and compile the source code:
+ configure and compile the source code.
+ Once compilation occurs, the files are copied to a holding
+ area (staged) in preparation for packaging:
<imagedata fileref="figures/configuration-compile-autoreconf.png" align="center" width="7in" depth="5in" />
</para>
<para>
- This step in the build process consists of three tasks:
+ This step in the build process consists of the following
+ tasks:
<itemizedlist>
<listitem><para>
<emphasis><ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-prepare_recipe_sysroot'><filename>do_prepare_recipe_sysroot</filename></ulink></emphasis>:
@@ -1157,7 +1312,8 @@
<filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink><filename>}</filename>
(i.e. <filename>recipe-sysroot</filename> and
<filename>recipe-sysroot-native</filename>) so that
- the sysroots contain the contents of the
+ during the packaging phase the sysroots can contain
+ the contents of the
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></ulink>
tasks of the recipes on which the recipe
containing the tasks depends.
@@ -1177,8 +1333,8 @@
<para>The configurations handled by the
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-configure'><filename>do_configure</filename></ulink>
- task are specific to source code configuration for
- the source code being built by the recipe.</para>
+ task are specific to configurations for the source
+ code being built by the recipe.</para>
<para>If you are using the
<ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-autotools'><filename>autotools</filename></ulink>
@@ -1190,13 +1346,14 @@
variables.
For information on how this variable works within
that class, see the
- <filename>meta/classes/autotools.bbclass</filename>
- file.
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-autotools'><filename>autotools</filename></ulink>
+ class
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta/classes/autotools.bbclass'>here</ulink>.
</para></listitem>
<listitem><para>
<emphasis><filename>do_compile</filename></emphasis>:
- Once a configuration task has been satisfied, BitBake
- compiles the source using the
+ Once a configuration task has been satisfied,
+ BitBake compiles the source using the
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-compile'><filename>do_compile</filename></ulink>
task.
Compilation occurs in the directory pointed to by
@@ -1210,7 +1367,7 @@
</para></listitem>
<listitem><para>
<emphasis><filename>do_install</filename></emphasis>:
- Once compilation is done, BitBake executes the
+ After compilation completes, BitBake executes the
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-install'><filename>do_install</filename></ulink>
task.
This task copies files from the
@@ -1218,6 +1375,8 @@
in a holding area pointed to by the
<ulink url='&YOCTO_DOCS_REF_URL;#var-D'><filename>D</filename></ulink>
variable.
+ Packaging occurs later using files from this
+ holding directory.
</para></listitem>
</itemizedlist>
</para>
@@ -1227,9 +1386,9 @@
<title>Package Splitting</title>
<para>
- After source code is configured and compiled, the
- OpenEmbedded build system analyzes
- the results and splits the output into packages:
+ After source code is configured, compiled, and staged, the
+ build system analyzes the results and splits the output
+ into packages:
<imagedata fileref="figures/analysis-for-package-splitting.png" align="center" width="7in" depth="7in" />
</para>
@@ -1242,35 +1401,72 @@
<ulink url='&YOCTO_DOCS_REF_URL;#var-D'><filename>D</filename></ulink>
directory and split them into subsets based on available
packages and files.
- The analyzing process involves the following as well as
- other items: splitting out debugging symbols, looking at
- shared library dependencies between packages, and looking
- at package relationships.
+ Analysis involves the following as well as other items:
+ splitting out debugging symbols, looking at shared library
+ dependencies between packages, and looking at package
+ relationships.
+ </para>
+
+ <para>
The <filename>do_packagedata</filename> task creates
package metadata based on the analysis such that the
- OpenEmbedded build system can generate the final packages.
+ build system can generate the final packages.
+ The
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></ulink>
+ task stages (copies) a subset of the files installed by
+ the
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-install'><filename>do_install</filename></ulink>
+ task into the appropriate sysroot.
Working, staged, and intermediate results of the analysis
- and package splitting process use these areas:
+ and package splitting process use several areas:
<itemizedlist>
<listitem><para>
<ulink url='&YOCTO_DOCS_REF_URL;#var-PKGD'><filename>PKGD</filename></ulink>:
- The destination directory for packages before they
- are split.
+ The destination directory
+ (i.e. <filename>package</filename>) for packages
+ before they are split into individual packages.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-PKGDESTWORK'><filename>PKGDESTWORK</filename></ulink>:
+ A temporary work area (i.e.
+ <filename>pkgdata</filename>) used by the
+ <filename>do_package</filename> task to save
+ package metadata.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-PKGDEST'><filename>PKGDEST</filename></ulink>:
+ The parent directory (i.e.
+ <filename>packages-split</filename>) for packages
+ after they have been split.
</para></listitem>
<listitem><para>
<ulink url='&YOCTO_DOCS_REF_URL;#var-PKGDATA_DIR'><filename>PKGDATA_DIR</filename></ulink>:
- A shared, global-state directory that holds data
- generated during the packaging process.
+ A shared, global-state directory that holds
+ packaging metadata generated during the packaging
+ process.
+ The packaging process copies metadata from
+ <filename>PKGDESTWORK</filename> to the
+ <filename>PKGDATA_DIR</filename> area where it
+ becomes globally available.
</para></listitem>
<listitem><para>
- <ulink url='&YOCTO_DOCS_REF_URL;#var-PKGDESTWORK'><filename>PKGDESTWORK</filename></ulink>:
- A temporary work area used by the
- <filename>do_package</filename> task.
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></ulink>:
+ The path for the sysroot for the system on which
+ a component is built to run (i.e.
+ <filename>recipe-sysroot</filename>).
</para></listitem>
<listitem><para>
- <ulink url='&YOCTO_DOCS_REF_URL;#var-PKGDEST'><filename>PKGDEST</filename></ulink>:
- The parent directory for packages after they have
- been split.
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-STAGING_DIR_NATIVE'><filename>STAGING_DIR_NATIVE</filename></ulink>:
+ The path for the sysroot used when building
+ components for the build host (i.e.
+ <filename>recipe-sysroot-native</filename>).
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-STAGING_DIR_TARGET'><filename>STAGING_DIR_TARGET</filename></ulink>:
+ The path for the sysroot used when a component that
+ is built to execute on a system and it generates
+ code for yet another machine (e.g. cross-canadian
+ recipes).
</para></listitem>
</itemizedlist>
The
@@ -1278,9 +1474,8 @@
variable defines the files that go into each package in
<ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGES'><filename>PACKAGES</filename></ulink>.
If you want details on how this is accomplished, you can
- look at the
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-package'><filename>package</filename></ulink>
- class.
+ look at
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta/classes/package.bbclass'><filename>package.bbclass</filename></ulink>.
</para>
<para>
@@ -1312,9 +1507,9 @@
<para>
Once packages are split and stored in the Package Feeds
- area, the OpenEmbedded build system uses BitBake to
- generate the root filesystem image:
- <imagedata fileref="figures/image-generation.png" align="center" width="6in" depth="7in" />
+ area, the build system uses BitBake to generate the root
+ filesystem image:
+ <imagedata fileref="figures/image-generation.png" align="center" width="7.5in" depth="7.5in" />
</para>
<para>
@@ -1329,12 +1524,13 @@
<itemizedlist>
<listitem><para>
<ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></ulink>:
- Lists out the base set of packages to install from
- the Package Feeds area.
+ Lists out the base set of packages from which to
+ install from the Package Feeds area.
</para></listitem>
<listitem><para>
<ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_EXCLUDE'><filename>PACKAGE_EXCLUDE</filename></ulink>:
- Specifies packages that should not be installed.
+ Specifies packages that should not be installed
+ into the image.
</para></listitem>
<listitem><para>
<ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></ulink>:
@@ -1344,9 +1540,9 @@
</para></listitem>
<listitem><para>
<ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></ulink>:
- Specifies the package backend to use and
- consequently helps determine where to locate
- packages within the Package Feeds area.
+ Specifies the package backend (e.g. RPM, DEB, or
+ IPK) to use and consequently helps determine where
+ to locate packages within the Package Feeds area.
</para></listitem>
<listitem><para>
<ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_LINGUAS'><filename>IMAGE_LINGUAS</filename></ulink>:
@@ -1355,8 +1551,8 @@
</para></listitem>
<listitem><para>
<ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_INSTALL'><filename>PACKAGE_INSTALL</filename></ulink>:
- The final list of packages passed to the package manager
- for installation into the image.
+ The final list of packages passed to the package
+ manager for installation into the image.
</para></listitem>
</itemizedlist>
</para>
@@ -1379,15 +1575,15 @@
enabled for the target, the package manager's data files
are deleted from the root filesystem.
As part of the final stage of package installation,
- postinstall scripts that are part of the packages are run.
- Any scripts that fail to run
- on the build host are run on the target when the target
- system is first booted.
+ post installation scripts that are part of the packages
+ are run.
+ Any scripts that fail to run on the build host are run on
+ the target when the target system is first booted.
If you are using a
<ulink url='&YOCTO_DOCS_DEV_URL;#creating-a-read-only-root-filesystem'>read-only root filesystem</ulink>,
- all the post installation scripts must succeed during the
- package installation phase since the root filesystem is
- read-only.
+ all the post installation scripts must succeed on the
+ build host during the package installation phase since the
+ root filesystem on the target is read-only.
</para>
<para>
@@ -1411,7 +1607,7 @@
</para>
<para>
- Optimizing processes run across the image include
+ Optimizing processes that are run across the image include
<filename>mklibs</filename>, <filename>prelink</filename>,
and any other post-processing commands as defined by the
<ulink url='&YOCTO_DOCS_REF_URL;#var-ROOTFS_POSTPROCESS_COMMAND'><filename>ROOTFS_POSTPROCESS_COMMAND</filename></ulink>
@@ -1432,21 +1628,22 @@
<ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_PREPROCESS_COMMAND'><filename>IMAGE_PREPROCESS_COMMAND</filename></ulink>
variable.
This variable specifies a list of functions to call before
- the OpenEmbedded build system creates the final image
- output files.
+ the build system creates the final image output files.
</para>
<para>
- The OpenEmbedded build system dynamically creates
+ The build system dynamically creates
<filename>do_image_*</filename> tasks as needed, based
on the image types specified in the
<ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></ulink>
variable.
The process turns everything into an image file or a set of
- image files and compresses the root filesystem image to
+ image files and can compress the root filesystem image to
reduce the overall size of the image.
The formats used for the root filesystem depend on the
<filename>IMAGE_FSTYPES</filename> variable.
+ Compression depends on whether the formats support
+ compression.
</para>
<para>
@@ -1454,14 +1651,14 @@
particular image <replaceable>type</replaceable> would
take the following form:
<literallayout class='monospaced'>
- do_image_<replaceable>type</replaceable>[depends]
+ do_image_<replaceable>type</replaceable>
</literallayout>
So, if the <replaceable>type</replaceable> as specified by
the <filename>IMAGE_FSTYPES</filename> were
<filename>ext4</filename>, the dynamically generated task
would be as follows:
<literallayout class='monospaced'>
- do_image_ext4[depends]
+ do_image_ext4
</literallayout>
</para>
@@ -1474,11 +1671,10 @@
<ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_POSTPROCESS_COMMAND'><filename>IMAGE_POSTPROCESS_COMMAND</filename></ulink>
variable.
The variable specifies a list of functions to call once the
- OpenEmbedded build system has created the final image
- output files.
+ build system has created the final image output files.
<note>
The entire image generation process is run under
- Pseudo.
+ <link linkend='fakeroot-and-pseudo'>Pseudo</link>.
Running under Pseudo ensures that the files in the
root filesystem have correct ownership.
</note>
@@ -1490,9 +1686,12 @@
<para>
The OpenEmbedded build system uses BitBake to generate the
- Software Development Kit (SDK) installer script for both
- the standard and extensible SDKs:
- <imagedata fileref="figures/sdk-generation.png" align="center" />
+ Software Development Kit (SDK) installer scripts for both
+ the standard SDK and the extensible SDK (eSDK):
+ </para>
+
+ <para>
+ <imagedata fileref="figures/sdk-generation.png" width="9in" align="center" />
<note>
For more information on the cross-development toolchain
generation, see the
@@ -1504,7 +1703,7 @@
task, see the
"<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-building-an-sdk-installer'>Building an SDK Installer</ulink>"
section in the Yocto Project Application Development
- and the Extensible Software Development Kit (SDK)
+ and the Extensible Software Development Kit (eSDK)
manual.
</note>
</para>
@@ -1512,10 +1711,12 @@
<para>
Like image generation, the SDK script process consists of
several stages and depends on many variables.
- The <filename>do_populate_sdk</filename> and
- <filename>do_populate_sdk_ext</filename> tasks use these
- key variables to help create the list of packages to
- actually install.
+ The
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-populate_sdk'><filename>do_populate_sdk</filename></ulink>
+ and
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-populate_sdk_ext'><filename>do_populate_sdk_ext</filename></ulink>
+ tasks use these key variables to help create the list of
+ packages to actually install.
For information on the variables listed in the figure,
see the
"<link linkend='sdk-dev-environment'>Application Development SDK</link>"
@@ -1565,7 +1766,7 @@
<ulink url='&YOCTO_DOCS_REF_URL;#var-STAMP'><filename>STAMP</filename></ulink>
variable, and the end of the name consists of the task's
name and current
- <ulink url='&YOCTO_DOCS_CM_URL;#overview-checksums'>input checksum</ulink>.
+ <link linkend='overview-checksums'>input checksum</link>.
<note>
This naming scheme assumes that
<ulink url='&YOCTO_DOCS_BB_URL;#var-BB_SIGNATURE_HANDLER'><filename>BB_SIGNATURE_HANDLER</filename></ulink>
@@ -1629,8 +1830,8 @@
<para>
The description of tasks so far assumes that BitBake needs
- to build everything and there are no prebuilt objects
- available.
+ to build everything and no available prebuilt objects
+ exist.
BitBake does support skipping tasks if prebuilt objects are
available.
These objects are usually made available in the form of a
@@ -1655,34 +1856,33 @@
variant (e.g. generating package files in the
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-package_write_deb'><filename>do_package_write_*</filename></ulink>
task).
- In other cases, it does not make sense, (e.g. a
+ In other cases, it does not make sense (e.g. a
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-patch'><filename>do_patch</filename></ulink>
- task or
+ task or a
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-unpack'><filename>do_unpack</filename></ulink>
task) since the work involved would be equal to or greater
than the underlying task.
</para>
<para>
- In the OpenEmbedded build system, the common tasks that
- have setscene variants are
+ In the build system, the common tasks that have setscene
+ variants are
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-package'><filename>do_package</filename></ulink>,
<filename>do_package_write_*</filename>,
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-deploy'><filename>do_deploy</filename></ulink>,
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-packagedata'><filename>do_packagedata</filename></ulink>,
and
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></ulink>.
- Notice that these are most of the tasks whose output is an
- end result.
+ Notice that these tasks represent most of the tasks whose
+ output is an end result.
</para>
<para>
- The OpenEmbedded build system has knowledge of the
- relationship between these tasks and other tasks that
- precede them.
+ The build system has knowledge of the relationship between
+ these tasks and other preceding tasks.
For example, if BitBake runs
<filename>do_populate_sysroot_setscene</filename> for
- something, there is little point in running any of the
+ something, it does not make sense to run any of the
<filename>do_fetch</filename>,
<filename>do_unpack</filename>,
<filename>do_patch</filename>,
@@ -1690,7 +1890,7 @@
<filename>do_compile</filename>, and
<filename>do_install</filename> tasks.
However, if <filename>do_package</filename> needs to be
- run, BitBake would need to run those other tasks.
+ run, BitBake needs to run those other tasks.
</para>
<para>
@@ -1698,7 +1898,7 @@
from an sstate cache because some objects are simply
not required at all.
For example, you do not need a compiler or native tools,
- such as quilt, if there is nothing to compile or patch.
+ such as quilt, if nothing exists to compile or patch.
If the <filename>do_package_write_*</filename> packages
are available from sstate, BitBake does not need the
<filename>do_package</filename> task data.
@@ -1717,26 +1917,24 @@
</para>
<para>
- If objects are found in the sstate cache, the OpenEmbedded
- build system works backwards from the end targets specified
- by the user.
- For example, if an image is being built, the OpenEmbedded
- build system first looks for the packages needed for
- that image and the tools needed to construct an image.
+ If objects are found in the sstate cache, the build system
+ works backwards from the end targets specified by the user.
+ For example, if an image is being built, the build system
+ first looks for the packages needed for that image and the
+ tools needed to construct an image.
If those are available, the compiler is not needed.
Thus, the compiler is not even downloaded.
If something was found to be unavailable, or the
- download or setscene task fails, the OpenEmbedded build
- system then tries to install dependencies, such as the
- compiler, from the cache.
+ download or setscene task fails, the build system then
+ tries to install dependencies, such as the compiler, from
+ the cache.
</para>
<para>
The availability of objects in the sstate cache is
handled by the function specified by the
<ulink url='&YOCTO_DOCS_BB_URL;#var-BB_HASHCHECK_FUNCTION'><filename>BB_HASHCHECK_FUNCTION</filename></ulink>
- variable and returns a list of the objects that are
- available.
+ variable and returns a list of available objects.
The function specified by the
<ulink url='&YOCTO_DOCS_BB_URL;#var-BB_SETSCENE_DEPVALID'><filename>BB_SETSCENE_DEPVALID</filename></ulink>
variable is the function that determines whether a given
@@ -1751,25 +1949,25 @@
<title>Images</title>
<para>
- The images produced by the OpenEmbedded build system
- are compressed forms of the
- root filesystem that are ready to boot on a target device.
+ The images produced by the build system are compressed forms
+ of the root filesystem and are ready to boot on a target
+ device.
You can see from the
- <link linkend='general-yocto-environment-figure'>general Build Process figure</link>
+ <link linkend='general-workflow-figure'>general workflow figure</link>
that BitBake output, in part, consists of images.
- This section is going to look more closely at this output:
+ This section takes a closer look at this output:
<imagedata fileref="figures/images.png" align="center" width="5.5in" depth="5.5in" />
</para>
- <para>
+ <note>
For a list of example images that the Yocto Project provides,
see the
"<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>"
chapter in the Yocto Project Reference Manual.
- </para>
+ </note>
<para>
- Images are written out to the
+ The build process writes images out to the
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
inside the
<filename>tmp/deploy/images/<replaceable>machine</replaceable>/</filename>
@@ -1785,35 +1983,34 @@
for the current configuration.
<itemizedlist>
<listitem><para>
- <filename><replaceable>kernel-image</replaceable></filename>:
+ <replaceable>kernel-image</replaceable>:
A kernel binary file.
The
<ulink url='&YOCTO_DOCS_REF_URL;#var-KERNEL_IMAGETYPE'><filename>KERNEL_IMAGETYPE</filename></ulink>
- variable setting determines the naming scheme for the
+ variable determines the naming scheme for the
kernel image file.
- Depending on that variable, the file could begin with
+ Depending on this variable, the file could begin with
a variety of naming strings.
The
- <filename>deploy/images/<replaceable>machine</replaceable></filename>
+ <filename>deploy/images/</filename><replaceable>machine</replaceable>
directory can contain multiple image files for the
machine.
</para></listitem>
<listitem><para>
- <filename><replaceable>root-filesystem-image</replaceable></filename>:
+ <replaceable>root-filesystem-image</replaceable>:
Root filesystems for the target device (e.g.
<filename>*.ext3</filename> or
<filename>*.bz2</filename> files).
The
<ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></ulink>
- variable setting determines the root filesystem image
- type.
+ variable determines the root filesystem image type.
The
- <filename>deploy/images/<replaceable>machine</replaceable></filename>
+ <filename>deploy/images/</filename><replaceable>machine</replaceable>
directory can contain multiple root filesystems for the
machine.
</para></listitem>
<listitem><para>
- <filename><replaceable>kernel-modules</replaceable></filename>:
+ <replaceable>kernel-modules</replaceable>:
Tarballs that contain all the modules built for the
kernel.
Kernel module tarballs exist for legacy purposes and
@@ -1821,22 +2018,22 @@
<ulink url='&YOCTO_DOCS_REF_URL;#var-MODULE_TARBALL_DEPLOY'><filename>MODULE_TARBALL_DEPLOY</filename></ulink>
variable to "0".
The
- <filename>deploy/images/<replaceable>machine</replaceable></filename>
+ <filename>deploy/images/</filename><replaceable>machine</replaceable>
directory can contain multiple kernel module tarballs
for the machine.
</para></listitem>
<listitem><para>
- <filename><replaceable>bootloaders</replaceable></filename>:
- Bootloaders supporting the image, if applicable to the
- target machine.
- The <filename>deploy/images/<replaceable>machine</replaceable></filename>
+ <replaceable>bootloaders</replaceable>:
+ If applicable to the target machine, bootloaders
+ supporting the image.
+ The <filename>deploy/images/</filename><replaceable>machine</replaceable>
directory can contain multiple bootloaders for the
machine.
</para></listitem>
<listitem><para>
- <filename><replaceable>symlinks</replaceable></filename>:
+ <replaceable>symlinks</replaceable>:
The
- <filename>deploy/images/<replaceable>machine</replaceable></filename>
+ <filename>deploy/images/</filename><replaceable>machine</replaceable>
folder contains a symbolic link that points to the
most recently built file for each machine.
These links might be useful for external scripts that
@@ -1851,24 +2048,26 @@
<para>
In the
- <link linkend='general-yocto-environment-figure'>general Yocto Project Development Environment figure</link>,
+ <link linkend='general-workflow-figure'>general workflow figure</link>,
the output labeled "Application Development SDK" represents an
SDK.
The SDK generation process differs depending on whether you
- build a standard SDK (e.g.
- <filename>bitbake -c populate_sdk</filename> <replaceable>imagename</replaceable>)
- or an extensible SDK (e.g.
- <filename>bitbake -c populate_sdk_ext</filename> <replaceable>imagename</replaceable>).
- This section is going to take a closer look at this output:
+ build an extensible SDK (e.g.
+ <filename>bitbake -c populate_sdk_ext</filename> <replaceable>imagename</replaceable>)
+ or a standard SDK (e.g.
+ <filename>bitbake -c populate_sdk</filename> <replaceable>imagename</replaceable>).
+ This section takes a closer look at this output:
<imagedata fileref="figures/sdk.png" align="center" width="9in" depth="7.25in" />
</para>
<para>
- The specific form of this output is a self-extracting
- SDK installer (<filename>*.sh</filename>) that, when run,
- installs the SDK, which consists of a cross-development
- toolchain, a set of libraries and headers, and an SDK
- environment setup script.
+ The specific form of this output is a set of files that
+ includes a self-extracting SDK installer
+ (<filename>*.sh</filename>), host and target manifest files,
+ and files used for SDK testing.
+ When the SDK installer file is run, it installs the SDK.
+ The SDK consists of a cross-development toolchain, a set of
+ libraries and headers, and an SDK environment setup script.
Running this installer essentially sets up your
cross-development environment.
You can think of the cross-toolchain as the "host"
@@ -1905,55 +2104,13 @@
</note>
<para>
- Once built, the SDK installers are written out to the
+ All the output files for an SDK are written to the
<filename>deploy/sdk</filename> folder inside the
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
- as shown in the figure at the beginning of this section.
+ as shown in the previous figure.
Depending on the type of SDK, several variables exist that help
configure these files.
- The following list shows the variables associated with
- a standard SDK:
- <itemizedlist>
- <listitem><para>
- <ulink url='&YOCTO_DOCS_REF_URL;#var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></ulink>:
- Points to the <filename>deploy</filename>
- directory.
- </para></listitem>
- <listitem><para>
- <ulink url='&YOCTO_DOCS_REF_URL;#var-SDKMACHINE'><filename>SDKMACHINE</filename></ulink>:
- Specifies the architecture of the machine
- on which the cross-development tools are run to
- create packages for the target hardware.
- </para></listitem>
- <listitem><para>
- <ulink url='&YOCTO_DOCS_REF_URL;#var-SDKIMAGE_FEATURES'><filename>SDKIMAGE_FEATURES</filename></ulink>:
- Lists the features to include in the "target" part
- of the SDK.
- </para></listitem>
- <listitem><para>
- <ulink url='&YOCTO_DOCS_REF_URL;#var-TOOLCHAIN_HOST_TASK'><filename>TOOLCHAIN_HOST_TASK</filename></ulink>:
- Lists packages that make up the host
- part of the SDK (i.e. the part that runs on
- the <filename>SDKMACHINE</filename>).
- When you use
- <filename>bitbake -c populate_sdk <replaceable>imagename</replaceable></filename>
- to create the SDK, a set of default packages
- apply.
- This variable allows you to add more packages.
- </para></listitem>
- <listitem><para>
- <ulink url='&YOCTO_DOCS_REF_URL;#var-TOOLCHAIN_TARGET_TASK'><filename>TOOLCHAIN_TARGET_TASK</filename></ulink>:
- Lists packages that make up the target part
- of the SDK (i.e. the part built for the
- target hardware).
- </para></listitem>
- <listitem><para>
- <ulink url='&YOCTO_DOCS_REF_URL;#var-SDKPATH'><filename>SDKPATH</filename></ulink>:
- Defines the default SDK installation path offered
- by the installation script.
- </para></listitem>
- </itemizedlist>
- This next list, shows the variables associated with an
+ The following list shows the variables associated with an
extensible SDK:
<itemizedlist>
<listitem><para>
@@ -1969,13 +2126,12 @@
</para></listitem>
<listitem><para>
<ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_INCLUDE_PKGDATA'><filename>SDK_INCLUDE_PKGDATA</filename></ulink>:
- Specifies whether or not packagedata will be
- included in the extensible SDK for all recipes in
- the "world" target.
+ Specifies whether or not packagedata is included in the
+ extensible SDK for all recipes in the "world" target.
</para></listitem>
<listitem><para>
<ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_INCLUDE_TOOLCHAIN'><filename>SDK_INCLUDE_TOOLCHAIN</filename></ulink>:
- Specifies whether or not the toolchain will be included
+ Specifies whether or not the toolchain is included
when building the extensible SDK.
</para></listitem>
<listitem><para>
@@ -1997,6 +2153,61 @@
value globally within the extensible SDK configuration.
</para></listitem>
</itemizedlist>
+ This next list, shows the variables associated with a standard
+ SDK:
+ <itemizedlist>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></ulink>:
+ Points to the <filename>deploy</filename> directory.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-SDKMACHINE'><filename>SDKMACHINE</filename></ulink>:
+ Specifies the architecture of the machine on which the
+ cross-development tools are run to create packages for
+ the target hardware.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-SDKIMAGE_FEATURES'><filename>SDKIMAGE_FEATURES</filename></ulink>:
+ Lists the features to include in the "target" part
+ of the SDK.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-TOOLCHAIN_HOST_TASK'><filename>TOOLCHAIN_HOST_TASK</filename></ulink>:
+ Lists packages that make up the host part of the SDK
+ (i.e. the part that runs on the
+ <filename>SDKMACHINE</filename>).
+ When you use
+ <filename>bitbake -c populate_sdk <replaceable>imagename</replaceable></filename>
+ to create the SDK, a set of default packages apply.
+ This variable allows you to add more packages.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-TOOLCHAIN_TARGET_TASK'><filename>TOOLCHAIN_TARGET_TASK</filename></ulink>:
+ Lists packages that make up the target part of the SDK
+ (i.e. the part built for the target hardware).
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-SDKPATH'><filename>SDKPATH</filename></ulink>:
+ Defines the default SDK installation path offered by
+ the installation script.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_HOST_MANIFEST'><filename>SDK_HOST_MANIFEST</filename></ulink>:
+ Lists all the installed packages that make up the host
+ part of the SDK.
+ This variable also plays a minor role for extensible
+ SDK development as well.
+ However, it is mainly used for the standard SDK.
+ </para></listitem>
+ <listitem><para>
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_TARGET_MANIFEST'><filename>SDK_TARGET_MANIFEST</filename></ulink>:
+ Lists all the installed packages that make up the
+ target part of the SDK.
+ This variable also plays a minor role for extensible
+ SDK development as well.
+ However, it is mainly used for the standard SDK.
+ </para></listitem>
+ </itemizedlist>
</para>
</section>
</section>
@@ -2017,7 +2228,7 @@
<para>
In the Yocto Project development environment, cross-development
- toolchains are used to build the image and applications that run
+ toolchains are used to build images and applications that run
on the target hardware.
With just a few commands, the OpenEmbedded build system creates
these necessary toolchains for you.
@@ -2087,8 +2298,12 @@
</para></listitem>
<listitem><para>
<filename>glibc-initial</filename>:
- An initial version of the Embedded GLIBC needed to bootstrap
- <filename>glibc</filename>.
+ An initial version of the Embedded GNU C Library
+ (GLIBC) needed to bootstrap <filename>glibc</filename>.
+ </para></listitem>
+ <listitem><para>
+ <filename>glibc</filename>:
+ The GNU C Library.
</para></listitem>
<listitem><para>
<filename>gcc-cross</filename>:
@@ -2185,10 +2400,10 @@
<filename>gcc-crosssdk</filename>:
The final stage of the bootstrap process for the
relocatable cross-compiler.
- The <filename>gcc-crosssdk</filename> is a transitory compiler
- and never leaves the build host.
- Its purpose is to help in the bootstrap process to create the
- eventual relocatable <filename>gcc-cross-canadian</filename>
+ The <filename>gcc-crosssdk</filename> is a transitory
+ compiler and never leaves the build host.
+ Its purpose is to help in the bootstrap process to create
+ the eventual <filename>gcc-cross-canadian</filename>
compiler, which is relocatable.
This tool is also a "native" package (i.e. it is
designed to run on the build host).
@@ -2214,7 +2429,7 @@
For information on advantages gained when building a
cross-development toolchain installer, see the
"<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-building-an-sdk-installer'>Building an SDK Installer</ulink>"
- section in the Yocto Project Application Development and the
+ appendix in the Yocto Project Application Development and the
Extensible Software Development Kit (eSDK) manual.
</note>
</section>
@@ -2228,10 +2443,10 @@
<ulink url='&YOCTO_DOCS_REF_URL;#bitbake-term'>BitBake</ulink>
can determine that parts do not need to be rebuilt.
Fundamentally, building from scratch is attractive as it means all
- parts are built fresh and there is no possibility of stale data
- causing problems.
+ parts are built fresh and no possibility of stale data exists that
+ can cause problems.
When developers hit problems, they typically default back to
- building from scratch so they know the state of things from the
+ building from scratch so they have a know state from the
start.
</para>
@@ -2267,10 +2482,9 @@
</para>
<para>
- For the first question, the
- <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>
- detects changes in the "inputs" to a given task by creating a
- checksum (or signature) of the task's inputs.
+ For the first question, the build system detects changes in the
+ "inputs" to a given task by creating a checksum (or signature) of
+ the task's inputs.
If the checksum changes, the system assumes the inputs have changed
and the task needs to be rerun.
For the second question, the shared state (sstate) code tracks
@@ -2281,24 +2495,39 @@
second question assuming the build system can fetch the sstate
objects from remote locations and install them if they are deemed
to be valid.
- <note>
- The OpenEmbedded build system does not maintain
- <ulink url='&YOCTO_DOCS_REF_URL;#var-PR'><filename>PR</filename></ulink>
- information as part of the shared state packages.
- Consequently, considerations exist that affect maintaining
- shared state feeds.
- For information on how the OpenEmbedded build system
- works with packages and can track incrementing
- <filename>PR</filename> information, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#automatically-incrementing-a-binary-package-revision-number'>Automatically Incrementing a Binary Package Revision Number</ulink>"
- section in the Yocto Project Development Tasks Manual.
+ <note><title>Notes</title>
+ <itemizedlist>
+ <listitem><para>
+ The build system does not maintain
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-PR'><filename>PR</filename></ulink>
+ information as part of the shared state packages.
+ Consequently, considerations exist that affect
+ maintaining shared state feeds.
+ For information on how the build system works with
+ packages and can track incrementing
+ <filename>PR</filename> information, see the
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#automatically-incrementing-a-binary-package-revision-number'>Automatically Incrementing a Binary Package Revision Number</ulink>"
+ section in the Yocto Project Development Tasks Manual.
+ </para></listitem>
+ <listitem><para>
+ The code in the build system that supports incremental
+ builds is not simple code.
+ For techniques that help you work around issues related
+ to shared state code, see the
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-viewing-metadata-used-to-create-the-input-signature-of-a-shared-state-task'>Viewing Metadata Used to Create the Input Signature of a Shared State Task</ulink>"
+ and
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-invalidating-shared-state-to-force-a-task-to-run'>Invalidating Shared State to Force a Task to Run</ulink>"
+ sections both in the Yocto Project Development Tasks
+ Manual.
+ </para></listitem>
+ </itemizedlist>
</note>
</para>
<para>
The rest of this section goes into detail about the overall
- incremental build architecture, the checksums (signatures), shared
- state, and some tips and tricks.
+ incremental build architecture, the checksums (signatures), and
+ shared state.
</para>
<section id='concepts-overall-architecture'>
@@ -2434,8 +2663,8 @@
inputs into a task.
Information based on direct inputs is referred to as the
"basehash" in the code.
- However, there is still the question of a task's indirect
- inputs - the things that were already built and present in the
+ However, the question of a task's indirect inputs still
+ exits - items already built and present in the
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>.
The checksum (or signature) for a particular task needs to add
the hashes of all the tasks on which the particular task
@@ -2452,8 +2681,8 @@
Within the BitBake configuration file, you can give BitBake
some extra information to help it construct the basehash.
The following statement effectively results in a list of
- global variable dependency excludes - variables never
- included in any checksum:
+ global variable dependency excludes (i.e. variables never
+ included in any checksum):
<literallayout class='monospaced'>
BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR \
SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM \
@@ -2478,7 +2707,7 @@
This file defines the two basic signature generators
<ulink url='&YOCTO_DOCS_REF_URL;#oe-core'>OE-Core</ulink>
uses: "OEBasic" and "OEBasicHash".
- By default, there is a dummy "noop" signature handler enabled
+ By default, a dummy "noop" signature handler is enabled
in BitBake.
This means that behavior is unchanged from previous versions.
OE-Core uses the "OEBasicHash" signature handler by default
@@ -2489,14 +2718,13 @@
</literallayout>
The "OEBasicHash" <filename>BB_SIGNATURE_HANDLER</filename>
is the same as the "OEBasic" version but adds the task hash to
- the stamp files.
- This results in any
- <ulink url='&YOCTO_DOCS_REF_URL;#metadata'>Metadata</ulink>
- change that changes the task hash, automatically
- causing the task to be run again.
+ the
+ <link linkend='stamp-files-and-the-rerunning-of-tasks'>stamp files</link>.
+ This results in any metadata change that changes the task hash,
+ automatically causing the task to be run again.
This removes the need to bump
<ulink url='&YOCTO_DOCS_REF_URL;#var-PR'><filename>PR</filename></ulink>
- values, and changes to Metadata automatically ripple across
+ values, and changes to metadata automatically ripple across
the build.
</para>
@@ -2532,7 +2760,7 @@
<para>
Checksums and dependencies, as discussed in the previous
section, solve half the problem of supporting a shared state.
- The other part of the problem is being able to use checksum
+ The other half of the problem is being able to use checksum
information during the build and being able to reuse or rebuild
specific components.
</para>
@@ -2545,8 +2773,9 @@
The idea is that the build process does not care about the
source of a task's output.
Output could be freshly built or it could be downloaded and
- unpacked from somewhere - the build process does not need to
- worry about its origin.
+ unpacked from somewhere.
+ In other words, the build process does not need to worry about
+ its origin.
</para>
<para>
@@ -2564,8 +2793,8 @@
<para>
The Yocto Project team has tried to keep the details of the
implementation hidden in <filename>sstate</filename> class.
- From a user's perspective, adding shared state wrapping to a task
- is as simple as this
+ From a user's perspective, adding shared state wrapping to a
+ task is as simple as this
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-deploy'><filename>do_deploy</filename></ulink>
example taken from the
<ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-deploy'><filename>deploy</filename></ulink>
@@ -2581,6 +2810,7 @@
}
addtask do_deploy_setscene
do_deploy[dirs] = "${DEPLOYDIR} ${B}"
+ do_deploy[stamp-extra-info] = "${MACHINE_ARCH}"
</literallayout>
The following list explains the previous example:
<itemizedlist>
@@ -2610,7 +2840,7 @@
If <filename>do_deploy</filename> is not already in
the shared state cache or if its input checksum
(signature) has changed from when the output was
- cached, the task will be run to populate the shared
+ cached, the task runs to populate the shared
state cache, after which the contents of the shared
state cache is copied to
<filename>${DEPLOY_DIR_IMAGE}</filename>.
@@ -2618,7 +2848,7 @@
state cache and its signature indicates that the
cached output is still valid (i.e. if no
relevant task inputs have changed), then the
- contents of the shared state cache will be copied
+ contents of the shared state cache copies
directly to
<filename>${DEPLOY_DIR_IMAGE}</filename> by the
<filename>do_deploy_setscene</filename> task
@@ -2675,6 +2905,18 @@
</note>
</para></listitem>
<listitem><para>
+ The <filename>do_deploy[stamp-extra-info] = "${MACHINE_ARCH}"</filename>
+ line appends extra metadata to the
+ <link linkend='stamp-files-and-the-rerunning-of-tasks'>stamp file</link>.
+ In this case, the metadata makes the task specific
+ to a machine's architecture.
+ See
+ "<ulink url='&YOCTO_DOCS_BB_URL;#ref-bitbake-tasklist'>The Task List</ulink>"
+ section in the BitBake User Manual for more
+ information on the <filename>stamp-extra-info</filename>
+ flag.
+ </para></listitem>
+ <listitem><para>
<filename>sstate-inputdirs</filename> and
<filename>sstate-outputdirs</filename> can also be used
with multiple directories.
@@ -2755,103 +2997,9 @@
Since the sysroot is not used, it would never get extracted.
This is another reason why a task-based approach is preferred
over a recipe-based approach, which would have to install the
- output from every task.n
+ output from every task.
</para>
</section>
-
- <section id='concepts-tips-and-tricks'>
- <title>Tips and Tricks</title>
-
- <para>
- The code in the build system that supports incremental builds
- is not simple code.
- This section presents some tips and tricks that help you work
- around issues related to shared state code.
- </para>
-
- <section id='concepts-overview-debugging'>
- <title>Debugging</title>
-
- <para>
- Seeing what metadata went into creating the input signature
- of a shared state (sstate) task can be a useful debugging
- aid.
- This information is available in signature information
- (<filename>siginfo</filename>) files in
- <ulink url='&YOCTO_DOCS_REF_URL;#var-SSTATE_DIR'><filename>SSTATE_DIR</filename></ulink>.
- For information on how to view and interpret information in
- <filename>siginfo</filename> files, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-viewing-task-variable-dependencies'>Viewing Task Variable Dependencies</ulink>"
- section in the Yocto Project Development Tasks Manual.
- </para>
- </section>
-
- <section id='concepts-invalidating-shared-state'>
- <title>Invalidating Shared State</title>
-
- <para>
- The OpenEmbedded build system uses checksums and shared
- state cache to avoid unnecessarily rebuilding tasks.
- Collectively, this scheme is known as "shared state code."
- </para>
-
- <para>
- As with all schemes, this one has some drawbacks.
- It is possible that you could make implicit changes to your
- code that the checksum calculations do not take into
- account.
- These implicit changes affect a task's output but do not
- trigger the shared state code into rebuilding a recipe.
- Consider an example during which a tool changes its output.
- Assume that the output of <filename>rpmdeps</filename>
- changes.
- The result of the change should be that all the
- <filename>package</filename> and
- <filename>package_write_rpm</filename> shared state cache
- items become invalid.
- However, because the change to the output is
- external to the code and therefore implicit,
- the associated shared state cache items do not become
- invalidated.
- In this case, the build process uses the cached items
- rather than running the task again.
- Obviously, these types of implicit changes can cause
- problems.
- </para>
-
- <para>
- To avoid these problems during the build, you need to
- understand the effects of any changes you make.
- Realize that changes you make directly to a function
- are automatically factored into the checksum calculation.
- Thus, these explicit changes invalidate the associated
- area of shared state cache.
- However, you need to be aware of any implicit changes that
- are not obvious changes to the code and could affect
- the output of a given task.
- </para>
-
- <para>
- When you identify an implicit change, you can easily
- take steps to invalidate the cache and force the tasks
- to run.
- The steps you can take are as simple as changing a
- function's comments in the source code.
- For example, to invalidate package shared state files,
- change the comment statements of
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-package'><filename>do_package</filename></ulink>
- or the comments of one of the functions it calls.
- Even though the change is purely cosmetic, it causes the
- checksum to be recalculated and forces the OpenEmbedded
- build system to run the task again.
- <note>
- For an example of a commit that makes a cosmetic
- change to invalidate shared state, see this
- <ulink url='&YOCTO_GIT_URL;/cgit.cgi/poky/commit/meta/classes/package.bbclass?id=737f8bbb4f27b4837047cb9b4fbfe01dfde36d54'>commit</ulink>.
- </note>
- </para>
- </section>
- </section>
</section>
<section id='automatically-added-runtime-dependencies'>
@@ -3078,532 +3226,6 @@
articles for background information on Pseudo.
</para>
</section>
-
- <section id="wayland">
- <title>Wayland</title>
-
- <para>
- <ulink url='http://en.wikipedia.org/wiki/Wayland_(display_server_protocol)'>Wayland</ulink>
- is a computer display server protocol that
- provides a method for compositing window managers to communicate
- directly with applications and video hardware and expects them to
- communicate with input hardware using other libraries.
- Using Wayland with supporting targets can result in better control
- over graphics frame rendering than an application might otherwise
- achieve.
- </para>
-
- <para>
- The Yocto Project provides the Wayland protocol libraries and the
- reference
- <ulink url='http://en.wikipedia.org/wiki/Wayland_(display_server_protocol)#Weston'>Weston</ulink>
- compositor as part of its release.
- This section describes what you need to do to implement Wayland and
- use the compositor when building an image for a supporting target.
- </para>
-
- <section id="wayland-support">
- <title>Support</title>
-
- <para>
- The Wayland protocol libraries and the reference Weston
- compositor ship as integrated packages in the
- <filename>meta</filename> layer of the
- <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>.
- Specifically, you can find the recipes that build both Wayland
- and Weston at
- <filename>meta/recipes-graphics/wayland</filename>.
- </para>
-
- <para>
- You can build both the Wayland and Weston packages for use only
- with targets that accept the
- <ulink url='https://en.wikipedia.org/wiki/Mesa_(computer_graphics)'>Mesa 3D and Direct Rendering Infrastructure</ulink>,
- which is also known as Mesa DRI.
- This implies that you cannot build and use the packages if your
- target uses, for example, the
- <trademark class='registered'>Intel</trademark> Embedded Media
- and Graphics Driver
- (<trademark class='registered'>Intel</trademark> EMGD) that
- overrides Mesa DRI.
- <note>
- Due to lack of EGL support, Weston 1.0.3 will not run
- directly on the emulated QEMU hardware.
- However, this version of Weston will run under X emulation
- without issues.
- </note>
- </para>
- </section>
-
- <section id="enabling-wayland-in-an-image">
- <title>Enabling Wayland in an Image</title>
-
- <para>
- To enable Wayland, you need to enable it to be built and enable
- it to be included in the image.
- </para>
-
- <section id="enable-building">
- <title>Building</title>
-
- <para>
- To cause Mesa to build the <filename>wayland-egl</filename>
- platform and Weston to build Wayland with Kernel Mode
- Setting
- (<ulink url='https://wiki.archlinux.org/index.php/Kernel_Mode_Setting'>KMS</ulink>)
- support, include the "wayland" flag in the
- <ulink url="&YOCTO_DOCS_REF_URL;#var-DISTRO_FEATURES"><filename>DISTRO_FEATURES</filename></ulink>
- statement in your <filename>local.conf</filename> file:
- <literallayout class='monospaced'>
- DISTRO_FEATURES_append = " wayland"
- </literallayout>
- <note>
- If X11 has been enabled elsewhere, Weston will build
- Wayland with X11 support
- </note>
- </para>
- </section>
-
- <section id="enable-installation-in-an-image">
- <title>Installing</title>
-
- <para>
- To install the Wayland feature into an image, you must
- include the following
- <ulink url='&YOCTO_DOCS_REF_URL;#var-CORE_IMAGE_EXTRA_INSTALL'><filename>CORE_IMAGE_EXTRA_INSTALL</filename></ulink>
- statement in your <filename>local.conf</filename> file:
- <literallayout class='monospaced'>
- CORE_IMAGE_EXTRA_INSTALL += "wayland weston"
- </literallayout>
- </para>
- </section>
- </section>
-
- <section id="running-weston">
- <title>Running Weston</title>
-
- <para>
- To run Weston inside X11, enabling it as described earlier and
- building a Sato image is sufficient.
- If you are running your image under Sato, a Weston Launcher
- appears in the "Utility" category.
- </para>
-
- <para>
- Alternatively, you can run Weston through the command-line
- interpretor (CLI), which is better suited for development work.
- To run Weston under the CLI, you need to do the following after
- your image is built:
- <orderedlist>
- <listitem><para>
- Run these commands to export
- <filename>XDG_RUNTIME_DIR</filename>:
- <literallayout class='monospaced'>
- mkdir -p /tmp/$USER-weston
- chmod 0700 /tmp/$USER-weston
- export XDG_RUNTIME_DIR=/tmp/$USER-weston
- </literallayout>
- </para></listitem>
- <listitem><para>
- Launch Weston in the shell:
- <literallayout class='monospaced'>
- weston
- </literallayout></para></listitem>
- </orderedlist>
- </para>
- </section>
- </section>
-
- <section id="overview-licenses">
- <title>Licenses</title>
-
- <para>
- This section describes the mechanism by which the
- <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>
- tracks changes to licensing text.
- The section also describes how to enable commercially licensed
- recipes, which by default are disabled.
- </para>
-
- <para>
- For information that can help you maintain compliance with
- various open source licensing during the lifecycle of the product,
- see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#maintaining-open-source-license-compliance-during-your-products-lifecycle'>Maintaining Open Source License Compliance During Your Project's Lifecycle</ulink>"
- section in the Yocto Project Development Tasks Manual.
- </para>
-
- <section id="usingpoky-configuring-LIC_FILES_CHKSUM">
- <title>Tracking License Changes</title>
-
- <para>
- The license of an upstream project might change in the future.
- In order to prevent these changes going unnoticed, the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-LIC_FILES_CHKSUM'><filename>LIC_FILES_CHKSUM</filename></ulink>
- variable tracks changes to the license text. The checksums are
- validated at the end of the configure step, and if the
- checksums do not match, the build will fail.
- </para>
-
- <section id="usingpoky-specifying-LIC_FILES_CHKSUM">
- <title>Specifying the <filename>LIC_FILES_CHKSUM</filename> Variable</title>
-
- <para>
- The <filename>LIC_FILES_CHKSUM</filename>
- variable contains checksums of the license text in the
- source code for the recipe.
- Following is an example of how to specify
- <filename>LIC_FILES_CHKSUM</filename>:
- <literallayout class='monospaced'>
- LIC_FILES_CHKSUM = "file://COPYING;md5=xxxx \
- file://licfile1.txt;beginline=5;endline=29;md5=yyyy \
- file://licfile2.txt;endline=50;md5=zzzz \
- ..."
- </literallayout>
- <note><title>Notes</title>
- <itemizedlist>
- <listitem><para>
- When using "beginline" and "endline", realize
- that line numbering begins with one and not
- zero.
- Also, the included lines are inclusive (i.e.
- lines five through and including 29 in the
- previous example for
- <filename>licfile1.txt</filename>).
- </para></listitem>
- <listitem><para>
- When a license check fails, the selected license
- text is included as part of the QA message.
- Using this output, you can determine the exact
- start and finish for the needed license text.
- </para></listitem>
- </itemizedlist>
- </note>
- </para>
-
- <para>
- The build system uses the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-S'><filename>S</filename></ulink>
- variable as the default directory when searching files
- listed in <filename>LIC_FILES_CHKSUM</filename>.
- The previous example employs the default directory.
- </para>
-
- <para>
- Consider this next example:
- <literallayout class='monospaced'>
- LIC_FILES_CHKSUM = "file://src/ls.c;beginline=5;endline=16;\
- md5=bb14ed3c4cda583abc85401304b5cd4e"
- LIC_FILES_CHKSUM = "file://${WORKDIR}/license.html;md5=5c94767cedb5d6987c902ac850ded2c6"
- </literallayout>
- </para>
-
- <para>
- The first line locates a file in
- <filename>${S}/src/ls.c</filename> and isolates lines five
- through 16 as license text.
- The second line refers to a file in
- <ulink url='&YOCTO_DOCS_REF_URL;#var-WORKDIR'><filename>WORKDIR</filename></ulink>.
- </para>
-
- <para>
- Note that <filename>LIC_FILES_CHKSUM</filename> variable is
- mandatory for all recipes, unless the
- <filename>LICENSE</filename> variable is set to "CLOSED".
- </para>
- </section>
-
- <section id="usingpoky-LIC_FILES_CHKSUM-explanation-of-syntax">
- <title>Explanation of Syntax</title>
-
- <para>
- As mentioned in the previous section, the
- <filename>LIC_FILES_CHKSUM</filename> variable lists all
- the important files that contain the license text for the
- source code.
- It is possible to specify a checksum for an entire file,
- or a specific section of a file (specified by beginning and
- ending line numbers with the "beginline" and "endline"
- parameters, respectively).
- The latter is useful for source files with a license
- notice header, README documents, and so forth.
- If you do not use the "beginline" parameter, then it is
- assumed that the text begins on the first line of the file.
- Similarly, if you do not use the "endline" parameter,
- it is assumed that the license text ends with the last
- line of the file.
- </para>
-
- <para>
- The "md5" parameter stores the md5 checksum of the license
- text.
- If the license text changes in any way as compared to
- this parameter then a mismatch occurs.
- This mismatch triggers a build failure and notifies
- the developer.
- Notification allows the developer to review and address
- the license text changes.
- Also note that if a mismatch occurs during the build,
- the correct md5 checksum is placed in the build log and
- can be easily copied to the recipe.
- </para>
-
- <para>
- There is no limit to how many files you can specify using
- the <filename>LIC_FILES_CHKSUM</filename> variable.
- Generally, however, every project requires a few
- specifications for license tracking.
- Many projects have a "COPYING" file that stores the
- license information for all the source code files.
- This practice allows you to just track the "COPYING"
- file as long as it is kept up to date.
- <note><title>Tips</title>
- <itemizedlist>
- <listitem><para>
- If you specify an empty or invalid "md5"
- parameter,
- <ulink url='&YOCTO_DOCS_REF_URL;#bitbake-term'>BitBake</ulink>
- returns an md5 mis-match
- error and displays the correct "md5" parameter
- value during the build.
- The correct parameter is also captured in
- the build log.
- </para></listitem>
- <listitem><para>
- If the whole file contains only license text,
- you do not need to use the "beginline" and
- "endline" parameters.
- </para></listitem>
- </itemizedlist>
- </note>
- </para>
- </section>
- </section>
-
- <section id="enabling-commercially-licensed-recipes">
- <title>Enabling Commercially Licensed Recipes</title>
-
- <para>
- By default, the OpenEmbedded build system disables
- components that have commercial or other special licensing
- requirements.
- Such requirements are defined on a
- recipe-by-recipe basis through the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE_FLAGS'><filename>LICENSE_FLAGS</filename></ulink>
- variable definition in the affected recipe.
- For instance, the
- <filename>poky/meta/recipes-multimedia/gstreamer/gst-plugins-ugly</filename>
- recipe contains the following statement:
- <literallayout class='monospaced'>
- LICENSE_FLAGS = "commercial"
- </literallayout>
- Here is a slightly more complicated example that contains both
- an explicit recipe name and version (after variable expansion):
- <literallayout class='monospaced'>
- LICENSE_FLAGS = "license_${PN}_${PV}"
- </literallayout>
- In order for a component restricted by a
- <filename>LICENSE_FLAGS</filename> definition to be enabled and
- included in an image, it needs to have a matching entry in the
- global
- <ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE_FLAGS_WHITELIST'><filename>LICENSE_FLAGS_WHITELIST</filename></ulink>
- variable, which is a variable typically defined in your
- <filename>local.conf</filename> file.
- For example, to enable the
- <filename>poky/meta/recipes-multimedia/gstreamer/gst-plugins-ugly</filename>
- package, you could add either the string
- "commercial_gst-plugins-ugly" or the more general string
- "commercial" to <filename>LICENSE_FLAGS_WHITELIST</filename>.
- See the
- "<link linkend='license-flag-matching'>License Flag Matching</link>"
- section for a full
- explanation of how <filename>LICENSE_FLAGS</filename> matching
- works.
- Here is the example:
- <literallayout class='monospaced'>
- LICENSE_FLAGS_WHITELIST = "commercial_gst-plugins-ugly"
- </literallayout>
- Likewise, to additionally enable the package built from the
- recipe containing
- <filename>LICENSE_FLAGS = "license_${PN}_${PV}"</filename>,
- and assuming that the actual recipe name was
- <filename>emgd_1.10.bb</filename>, the following string would
- enable that package as well as the original
- <filename>gst-plugins-ugly</filename> package:
- <literallayout class='monospaced'>
- LICENSE_FLAGS_WHITELIST = "commercial_gst-plugins-ugly license_emgd_1.10"
- </literallayout>
- As a convenience, you do not need to specify the complete
- license string in the whitelist for every package.
- You can use an abbreviated form, which consists
- of just the first portion or portions of the license
- string before the initial underscore character or characters.
- A partial string will match any license that contains the
- given string as the first portion of its license.
- For example, the following whitelist string will also match
- both of the packages previously mentioned as well as any other
- packages that have licenses starting with "commercial" or
- "license".
- <literallayout class='monospaced'>
- LICENSE_FLAGS_WHITELIST = "commercial license"
- </literallayout>
- </para>
-
- <section id="license-flag-matching">
- <title>License Flag Matching</title>
-
- <para>
- License flag matching allows you to control what recipes
- the OpenEmbedded build system includes in the build.
- Fundamentally, the build system attempts to match
- <filename>LICENSE_FLAGS</filename> strings found in recipes
- against <filename>LICENSE_FLAGS_WHITELIST</filename>
- strings found in the whitelist.
- A match causes the build system to include a recipe in the
- build, while failure to find a match causes the build
- system to exclude a recipe.
- </para>
-
- <para>
- In general, license flag matching is simple.
- However, understanding some concepts will help you
- correctly and effectively use matching.
- </para>
-
- <para>
- Before a flag
- defined by a particular recipe is tested against the
- contents of the whitelist, the expanded string
- <filename>_${PN}</filename> is appended to the flag.
- This expansion makes each
- <filename>LICENSE_FLAGS</filename> value recipe-specific.
- After expansion, the string is then matched against the
- whitelist.
- Thus, specifying
- <filename>LICENSE_FLAGS = "commercial"</filename>
- in recipe "foo", for example, results in the string
- <filename>"commercial_foo"</filename>.
- And, to create a match, that string must appear in the
- whitelist.
- </para>
-
- <para>
- Judicious use of the <filename>LICENSE_FLAGS</filename>
- strings and the contents of the
- <filename>LICENSE_FLAGS_WHITELIST</filename> variable
- allows you a lot of flexibility for including or excluding
- recipes based on licensing.
- For example, you can broaden the matching capabilities by
- using license flags string subsets in the whitelist.
- <note>
- When using a string subset, be sure to use the part of
- the expanded string that precedes the appended
- underscore character (e.g.
- <filename>usethispart_1.3</filename>,
- <filename>usethispart_1.4</filename>, and so forth).
- </note>
- For example, simply specifying the string "commercial" in
- the whitelist matches any expanded
- <filename>LICENSE_FLAGS</filename> definition that starts
- with the string "commercial" such as "commercial_foo" and
- "commercial_bar", which are the strings the build system
- automatically generates for hypothetical recipes named
- "foo" and "bar" assuming those recipes simply specify the
- following:
- <literallayout class='monospaced'>
- LICENSE_FLAGS = "commercial"
- </literallayout>
- Thus, you can choose to exhaustively
- enumerate each license flag in the whitelist and
- allow only specific recipes into the image, or
- you can use a string subset that causes a broader range of
- matches to allow a range of recipes into the image.
- </para>
-
- <para>
- This scheme works even if the
- <filename>LICENSE_FLAGS</filename> string already
- has <filename>_${PN}</filename> appended.
- For example, the build system turns the license flag
- "commercial_1.2_foo" into "commercial_1.2_foo_foo" and
- would match both the general "commercial" and the specific
- "commercial_1.2_foo" strings found in the whitelist, as
- expected.
- </para>
-
- <para>
- Here are some other scenarios:
- <itemizedlist>
- <listitem><para>
- You can specify a versioned string in the recipe
- such as "commercial_foo_1.2" in a "foo" recipe.
- The build system expands this string to
- "commercial_foo_1.2_foo".
- Combine this license flag with a whitelist that has
- the string "commercial" and you match the flag
- along with any other flag that starts with the
- string "commercial".
- </para></listitem>
- <listitem><para>
- Under the same circumstances, you can use
- "commercial_foo" in the whitelist and the build
- system not only matches "commercial_foo_1.2" but
- also matches any license flag with the string
- "commercial_foo", regardless of the version.
- </para></listitem>
- <listitem><para>
- You can be very specific and use both the
- package and version parts in the whitelist (e.g.
- "commercial_foo_1.2") to specifically match a
- versioned recipe.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section id="other-variables-related-to-commercial-licenses">
- <title>Other Variables Related to Commercial Licenses</title>
-
- <para>
- Other helpful variables related to commercial
- license handling exist and are defined in the
- <filename>poky/meta/conf/distro/include/default-distrovars.inc</filename> file:
- <literallayout class='monospaced'>
- COMMERCIAL_AUDIO_PLUGINS ?= ""
- COMMERCIAL_VIDEO_PLUGINS ?= ""
- </literallayout>
- If you want to enable these components, you can do so by
- making sure you have statements similar to the following
- in your <filename>local.conf</filename> configuration file:
- <literallayout class='monospaced'>
- COMMERCIAL_AUDIO_PLUGINS = "gst-plugins-ugly-mad \
- gst-plugins-ugly-mpegaudioparse"
- COMMERCIAL_VIDEO_PLUGINS = "gst-plugins-ugly-mpeg2dec \
- gst-plugins-ugly-mpegstream gst-plugins-bad-mpegvideoparse"
- LICENSE_FLAGS_WHITELIST = "commercial_gst-plugins-ugly commercial_gst-plugins-bad commercial_qmmp"
- </literallayout>
- Of course, you could also create a matching whitelist
- for those components using the more general "commercial"
- in the whitelist, but that would also enable all the
- other packages with <filename>LICENSE_FLAGS</filename>
- containing "commercial", which you may or may not want:
- <literallayout class='monospaced'>
- LICENSE_FLAGS_WHITELIST = "commercial"
- </literallayout>
- </para>
-
- <para>
- Specifying audio and video plug-ins as part of the
- <filename>COMMERCIAL_AUDIO_PLUGINS</filename> and
- <filename>COMMERCIAL_VIDEO_PLUGINS</filename> statements
- (along with the enabling
- <filename>LICENSE_FLAGS_WHITELIST</filename>) includes the
- plug-ins or components into built images, thus adding
- support for media formats or components.
- </para>
- </section>
- </section>
- </section>
</chapter>
<!--
vim: expandtab tw=80 ts=4
diff --git a/documentation/getting-started/getting-started-customization.xsl b/documentation/overview-manual/overview-manual-customization.xsl
index 9733bf87b2a..22360e7bab8 100644
--- a/documentation/getting-started/getting-started-customization.xsl
+++ b/documentation/overview-manual/overview-manual-customization.xsl
@@ -17,7 +17,7 @@
<xsl:include href="../template/division.title.xsl"/>
<xsl:include href="../template/formal.object.heading.xsl"/>
- <xsl:param name="html.stylesheet" select="'getting-started-style.css'" />
+ <xsl:param name="html.stylesheet" select="'overview-manual-style.css'" />
<xsl:param name="chapter.autolabel" select="1" />
<xsl:param name="appendix.autolabel" select="A" />
<xsl:param name="section.autolabel" select="1" />
diff --git a/documentation/getting-started/getting-started-development-environment.xml b/documentation/overview-manual/overview-manual-development-environment.xml
index 7bcf87ffd90..bba93ccefaa 100644
--- a/documentation/getting-started/getting-started-development-environment.xml
+++ b/documentation/overview-manual/overview-manual-development-environment.xml
@@ -69,7 +69,9 @@
<title>The Development Host</title>
<para>
- A development host or build host is key to using the Yocto Project.
+ A development host or
+ <ulink url='&YOCTO_DOCS_REF_URL;#hardware-build-system-term'>build host</ulink>
+ is key to using the Yocto Project.
Because the goal of the Yocto Project is to develop images or
applications that run on embedded hardware, development of those
images and applications generally takes place on a system not
@@ -117,10 +119,10 @@
<itemizedlist>
<listitem><para>
<emphasis>Command Lines, BitBake, and Shells:</emphasis>
- Traditional development in the Yocto Project involves using
- OpenEmbedded build system, which uses BitBake, in a
- command-line environment from a shell on your development
- host.
+ Traditional development in the Yocto Project involves using the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>,
+ which uses BitBake, in a command-line environment from a shell
+ on your development host.
You can accomplish this from a host that is a native Linux
machine or from a host that has been set up with CROPS.
Either way, you create, modify, and build images and
@@ -129,7 +131,7 @@
and the Yocto Project.</para>
<para>For a general flow of the build procedures, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-building-an-image'>Building an Image</ulink>"
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-building-a-simple-image'>Building a Simple Image</ulink>"
section in the Yocto Project Development Tasks Manual.
</para></listitem>
<listitem><para>
@@ -142,7 +144,7 @@
</para>
<para>The
- <ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support Package (BSP) Developer's Guide'</ulink>
+ <ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support Package (BSP) Developer's Guide</ulink>
provides BSP-related development information.
For specifics on development host preparation, see the
"<ulink url='&YOCTO_DOCS_BSP_URL;#preparing-your-build-host-to-work-with-bsp-layers'>Preparing Your Build Host to Work With BSP Layers</ulink>"
@@ -180,7 +182,7 @@
Extensible Software Development Kit (eSDK) manual.
</para></listitem>
<listitem><para>
- <emphasis>Using the Toaster:</emphasis>
+ <emphasis>Using Toaster:</emphasis>
The other Yocto Project development method that involves an
interface that effectively puts the Yocto Project into the
background is Toaster.
@@ -205,7 +207,7 @@
<para>
The Yocto Project team maintains complete source repositories for all
Yocto Project files at
- <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi'></ulink>.
+ <ulink url='&YOCTO_GIT_URL;'></ulink>.
This web-based source code browser is organized into categories by
function such as IDE Plugins, Matchbox, Poky, Yocto Linux Kernel, and
so forth.
@@ -222,8 +224,9 @@
<para>
For any supported release of Yocto Project, you can also go to the
<ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink> and
- select the "Downloads" tab and get a released tarball of the
- <filename>poky</filename> repository or any supported BSP tarballs.
+ select the "DOWNLOADS" item from the "SOFTWARE" menu and get a
+ released tarball of the <filename>poky</filename> repository, any
+ supported BSP tarball, or Yocto Project tools.
Unpacking these tarballs gives you a snapshot of the released
files.
<note><title>Notes</title>
@@ -238,8 +241,7 @@
</para></listitem>
<listitem><para>
Be sure to always work in matching branches for both
- the selected BSP repository and the
- <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
+ the selected BSP repository and the Source Directory
(i.e. <filename>poky</filename>) repository.
For example, if you have checked out the "master" branch
of <filename>poky</filename> and you are going to use
@@ -256,7 +258,7 @@
<itemizedlist>
<listitem><para id='source-repositories'>
<emphasis>
- <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi'>Source Repositories:</ulink>
+ <ulink url='&YOCTO_GIT_URL;'>Source Repositories:</ulink>
</emphasis>
This area contains IDE Plugins, Matchbox, Poky, Poky Support,
Tools, Yocto Linux Kernel, and Yocto Metadata Layers.
@@ -290,16 +292,17 @@
section in the Yocto Project Development Tasks Manual.
</para></listitem>
<listitem><para id='downloads-page'>
- <emphasis>"Downloads" page for the
+ <emphasis>"DOWNLOADS" page for the
<ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink>:
</emphasis></para>
<para>The Yocto Project website includes a "DOWNLOADS" page
- accessible through the "SOFTWARE" tab
- that allows you to download any Yocto Project
- release, tool, and Board Support Package (BSP) in tarball form.
+ accessible through the "SOFTWARE" menu that allows you to
+ download any Yocto Project release, tool, and Board Support
+ Package (BSP) in tarball form.
The tarballs are similar to those found in the
- <ulink url='&YOCTO_DL_URL;/releases/'>Index of /releases:</ulink> area.</para>
+ <ulink url='&YOCTO_DL_URL;/releases/'>Index of /releases:</ulink>
+ area.</para>
<para>
<imagedata fileref="figures/yp-download.png" align="center" width="6in" depth="4in" />
@@ -400,7 +403,7 @@
</para>
<para>
- To summarize the development workflow: a single point of entry
+ In summary, a single point of entry
exists for changes into a "master" or development branch of the
Git repository, which is controlled by the project’s maintainer.
And, a set of developers exist who independently develop, test, and
@@ -539,7 +542,7 @@
<listitem><para>
For information beyond the introductory nature in this
section, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#working-with-yocto-project-source-files'>Working With Yocto Project Source Files</ulink>"
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#locating-yocto-project-source-files'>Locating Yocto Project Source Files</ulink>"
section in the Yocto Project Development Tasks Manual.
</para></listitem>
</itemizedlist>
@@ -553,7 +556,7 @@
As mentioned briefly in the previous section and also in the
"<link linkend='gs-git-workflows-and-the-yocto-project'>Git Workflows and the Yocto Project</link>"
section, the Yocto Project maintains source repositories at
- <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink>.
+ <ulink url='&YOCTO_GIT_URL;'></ulink>.
If you look at this web-interface of the repositories, each item
is a separate Git repository.
</para>
@@ -587,7 +590,7 @@
Once you have a local copy of a repository, you can take steps to
develop locally.
For examples on how to clone Git repositories, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#working-with-yocto-project-source-files'>Working With Yocto Project Source Files</ulink>"
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#locating-yocto-project-source-files'>Locating Yocto Project Source Files</ulink>"
section in the Yocto Project Development Tasks Manual.
</para>
@@ -693,8 +696,8 @@
$ cd ~
$ git clone git://git.yoctoproject.org/poky
$ cd poky
- $ git fetch --all --tags --prune
- $ git checkout tags/pyro-17.0.0 -b my-pyro-17.0.0
+ $ git fetch --tags
+ $ git checkout tags/rocko-18.0.0 -b my_rocko-18.0.0
</literallayout>
In this example, the name of the top-level directory of your
local Yocto Project repository is <filename>poky</filename>.
@@ -702,9 +705,9 @@
<filename>git fetch</filename> command makes all the upstream
tags available locally in your repository.
Finally, the <filename>git checkout</filename> command
- creates and checks out a branch named "my-pyro-17.0.0" that is
+ creates and checks out a branch named "my-rocko-18.0.0" that is
based on the upstream branch whose "HEAD" matches the
- commit in the repository associated with the "pyro-17.0.0" tag.
+ commit in the repository associated with the "rocko-18.0.0" tag.
The files in your repository now exactly match that particular
Yocto Project release as it is tagged in the upstream Git
repository.
@@ -731,11 +734,6 @@
</para>
<para>
- If you do not know much about Git, you should educate
- yourself by visiting the links previously mentioned.
- </para>
-
- <para>
The following list of Git commands briefly describes some basic
Git operations as a way to get started.
As with any set of commands, this list (in most cases) simply shows
diff --git a/documentation/getting-started/getting-started-eclipse-customization.xsl b/documentation/overview-manual/overview-manual-eclipse-customization.xsl
index 17fff727f9f..aaf99ea1ba8 100644
--- a/documentation/getting-started/getting-started-eclipse-customization.xsl
+++ b/documentation/overview-manual/overview-manual-eclipse-customization.xsl
@@ -22,7 +22,7 @@
<xsl:param name="chunk.section.depth" select="10"/>
<xsl:param name="use.id.as.filename" select="1"/>
<xsl:param name="ulink.target" select="'_self'" />
- <xsl:param name="base.dir" select="'html/getting-started/'"/>
+ <xsl:param name="base.dir" select="'html/overview-manual/'"/>
<xsl:param name="html.stylesheet" select="'../book.css'"/>
<xsl:param name="eclipse.manifest" select="0"/>
<xsl:param name="create.plugin.xml" select="0"/>
diff --git a/documentation/getting-started/getting-started-intro.xml b/documentation/overview-manual/overview-manual-intro.xml
index e5967b34e49..39433aa41bd 100644
--- a/documentation/getting-started/getting-started-intro.xml
+++ b/documentation/overview-manual/overview-manual-intro.xml
@@ -4,12 +4,12 @@
<chapter id='overview-manual-intro'>
-<title>The Getting Started With Yocto Project Manual</title>
- <section id='getting-started-welcome'>
+<title>The Yocto Project Overview and Concepts Manual</title>
+ <section id='overview-manual-welcome'>
<title>Welcome</title>
<para>
- Welcome to the Getting Started With Yocto Project Manual!
+ Welcome to the Yocto Project Overview and Concepts Manual!
This manual introduces the Yocto Project by providing concepts,
software overviews, best-known-methods (BKMs), and any other
high-level introductory information suitable for a new Yocto
@@ -25,9 +25,10 @@
Project.
You will learn about features and challenges of the
Yocto Project, the layer model, components and tools,
- development methods, the Poky reference distribution,
- the OpenEmbedded build system workflow, and some basic
- Yocto terms.
+ development methods, the
+ <ulink url='&YOCTO_DOCS_REF_URL;#poky'>Poky</ulink>
+ reference distribution, the OpenEmbedded build system
+ workflow, and some basic Yocto terms.
</para></listitem>
<listitem><para>
<emphasis><link linkend='overview-development-environment'>The Yocto Project Development Environment</link>:</emphasis>
@@ -38,6 +39,13 @@
and the Yocto Project, a Git primer, and information
about licensing.
</para></listitem>
+ <listitem><para>
+ <emphasis><link linkend='overview-manual-concepts'>Yocto Project Concepts</link>:</emphasis>
+ This chapter presents various concepts regarding the
+ Yocto Project.
+ You can find conceptual information about components,
+ development, cross-toolchains, and so forth.
+ </para></listitem>
</itemizedlist>
</para>
@@ -80,7 +88,7 @@
</para>
</section>
- <section id='getting-started-overview-other-information'>
+ <section id='overview-manual-other-information'>
<title>Other Information</title>
<para>
@@ -89,19 +97,13 @@
comprehension.
For additional introductory information on the Yocto Project, see
the <ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink>.
- You can find an introductory to using the Yocto Project by working
- through the
- <ulink url='&YOCTO_DOCS_QS_URL;'>Yocto Project Quick Start</ulink>.
- </para>
-
- <para>
+ If you want to build an image with no knowledge of Yocto Project
+ as a way of quickly testing it out, see the
+ <ulink url='&YOCTO_DOCS_BRIEF_URL;'>Yocto Project Quick Build</ulink>
+ document.
For a comprehensive list of links and other documentation, see the
"<ulink url='&YOCTO_DOCS_REF_URL;#resources-links-and-related-documentation'>Links and Related Documentation</ulink>"
section in the Yocto Project Reference Manual.
- For a paper showing how to set up and run a quick build using the
- Yocto Project, see the
- "<ulink url='&YOCTO_DOCS_BRIEF_URL;'>My First Yocto Project Build</ulink>"
- paper.
</para>
</section>
</chapter>
diff --git a/documentation/concepts-manual/concepts-manual-style.css b/documentation/overview-manual/overview-manual-style.css
index e2882e45aae..97a364b125f 100644
--- a/documentation/concepts-manual/concepts-manual-style.css
+++ b/documentation/overview-manual/overview-manual-style.css
@@ -118,7 +118,7 @@ h6 {
background-color: transparent;
background-repeat: no-repeat;
padding-top: 256px;
- background-image: url("figures/concepts-manual-title.png");
+ background-image: url("figures/overview-manual-title.png");
background-position: left top;
margin-top: -256px;
padding-right: 50px;
diff --git a/documentation/getting-started/getting-started-yp-intro.xml b/documentation/overview-manual/overview-manual-yp-intro.xml
index 6941db68b99..d34b640e213 100644
--- a/documentation/getting-started/getting-started-yp-intro.xml
+++ b/documentation/overview-manual/overview-manual-yp-intro.xml
@@ -25,11 +25,11 @@
Project provides advantages in both systems and applications
development, archival and management benefits, and customizations
used for speed, footprint, and memory utilization.
- The project is a standard when it comes to delivering hardware
- support and software stacks, allowing software configuration
- and build interchange, and build and support customizations for
- multiple hardware platforms and software stacks that can be
- maintained and scaled.
+ The project is a standard when it comes to delivering embedded
+ software stacks.
+ The project allows software customizations and build interchange
+ for multiple hardware platforms as well as software stacks that
+ can be maintained and scaled.
</para>
<para id='yp-key-dev-elements'>
@@ -61,9 +61,12 @@
Semiconductor, operating system, software, and
service vendors exist whose products and services
adopt and support the Yocto Project.
- For a look at the companies involved with the Yocto
- Project, see the membership, associate, and
- participant pages on the Yocto Project home page.
+ For a look at the Yocto Project community and
+ the companies involved with the Yocto
+ Project, see the "COMMUNITY" and "ECOSYSTEM" tabs
+ on the
+ <ulink url='&YOCTO_HOME_URL;'>Yocto Project</ulink>
+ home page.
</para></listitem>
<listitem><para>
<emphasis>Architecture Agnostic:</emphasis>
@@ -136,8 +139,9 @@
</para></listitem>
<listitem><para>
<emphasis>Uses a Layer Model:</emphasis>
- The Yocto Project layer infrastructure groups related
- functionality into separate bundles.
+ The Yocto Project
+ <link linkend='the-yocto-project-layer-model'>layer infrastructure</link>
+ groups related functionality into separate bundles.
You can incrementally add these grouped functionalities
to your project as needed.
Using layers to isolate and group functionality
@@ -150,14 +154,16 @@
You can build and rebuild individual packages as
needed.
Yocto Project accomplishes this through its
- shared-state cache (sstate) scheme.
+ <link linkend='shared-state-cache'>shared-state cache</link>
+ (sstate) scheme.
Being able to build and debug components individually
eases project development.
</para></listitem>
<listitem><para>
<emphasis>Releases According to a Strict Schedule:</emphasis>
- Major releases occur on a six-month cycle predictably
- in October and April.
+ Major releases occur on a
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-release-process'>six-month cycle</ulink>
+ predictably in October and April.
The most recent two releases support point releases
to address common vulnerabilities and exposures.
This predictability is crucial for projects based on
@@ -185,8 +191,9 @@
</para></listitem>
<listitem><para>
<emphasis>License Manifest:</emphasis>
- The Yocto Project provides a license manifest for
- review by people who need to track the use of open
+ The Yocto Project provides a
+ <ulink url='&YOCTO_DOCS_DEV_URL;#maintaining-open-source-license-compliance-during-your-products-lifecycle'>license manifest</ulink>
+ for review by people who need to track the use of open
source licenses (e.g.legal teams).
</para></listitem>
</itemizedlist>
@@ -217,15 +224,18 @@
investigation.
For information that helps you transition from
trying out the Yocto Project to using it for your
- project, see the "What I wish I'd Known" and
- "Transitioning to a Custom Environment for Systems
- Development" documents on the Yocto Project website.
+ project, see the
+ "<ulink url='&YOCTO_HOME_URL;/docs/what-i-wish-id-known/'>What I wish I'd Known</ulink>"
+ and
+ "<ulink url='&YOCTO_HOME_URL;/docs/transitioning-to-a-custom-environment/'>Transitioning to a Custom Environment for Systems Development</ulink>"
+ documents on the Yocto Project website.
</para></listitem>
<listitem><para>
<emphasis>Project Workflow Could Be Confusing:</emphasis>
- The Yocto Project workflow could be confusing if you
- are used to traditional desktop and server software
- development.
+ The
+ <link linkend='overview-development-environment'>Yocto Project workflow</link>
+ could be confusing if you are used to traditional
+ desktop and server software development.
In a desktop development environment, mechanisms exist
to easily pull and install new packages, which are
typically pre-compiled binaries from servers accessible
@@ -250,7 +260,8 @@
within the BitBake environment and then deploying only
the updated packages to the target.</para>
- <para>The Yocto Project OpenEmbedded build system
+ <para>The Yocto Project
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>
produces packages in standard formats (i.e. RPM,
DEB, IPK, and TAR).
You can deploy these packages into the running system
@@ -285,7 +296,9 @@
The Layer Model simultaneously supports collaboration and
customization.
Layers are repositories that contain related sets of instructions
- that tell the OpenEmbedded build system what to do.
+ that tell the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>
+ what to do.
You can collaborate, share, and reuse layers.
</para>
@@ -327,9 +340,10 @@
<listitem><para>
Layers support the inclusion of technologies, hardware
components, and software components.
- The Yocto Project Compatible designation provides a
- minimum level of standardization that contributes to a
- strong ecosystem.
+ The
+ <ulink url='&YOCTO_DOCS_DEV_URL;#making-sure-your-layer-is-compatible-with-yocto-project'>Yocto Project Compatible</ulink>
+ designation provides a minimum level of standardization
+ that contributes to a strong ecosystem.
"YP Compatible" is applied to appropriate products and
software components such as BSPs, other OE-compatible
layers, and related open-source projects, allowing the
@@ -359,7 +373,7 @@
in this section.
<note>
For general information on BSP layer structure, see the
- <ulink url='&YOCTO_DOCS_BSP_URL;#bsp'>Board Support Packages (BSP) - Developer's Guide</ulink>.
+ <ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support Packages (BSP) Developer's Guide</ulink>.
</note>
</para>
@@ -403,7 +417,9 @@
and by those using the Yocto Project.
These components and tools are open source projects and
metadata that are separate from the reference distribution
- (Poky) and the OpenEmbedded build system.
+ (<ulink url='&YOCTO_DOCS_REF_URL;#poky'>Poky</ulink>)
+ and the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>.
Most of the components and tools are downloaded separately.
</para>
@@ -482,7 +498,8 @@
</para>
<para>For information on the eSDK, see the
- <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and Extensible Software Development Kit (eSDK) Manual</ulink>.
+ <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
+ Manual.
</para></listitem>
<listitem><para>
<emphasis><trademark class='trade'>Eclipse</trademark> IDE Plug-in:</emphasis>
@@ -519,6 +536,8 @@
OpenEmbedded build system.
Toaster allows you to configure, run, and view
information about builds.
+ For information on Toaster, see the
+ <ulink url='&YOCTO_DOCS_TOAST_URL;'>Toaster User Manual</ulink>.
</para></listitem>
</itemizedlist>
</para>
@@ -534,10 +553,10 @@
<listitem><para>
<emphasis>Auto Upgrade Helper:</emphasis>
This utility when used in conjunction with the
- OpenEmbedded build system (BitBake and OE-Core)
- automatically generates upgrades for recipes that
- are based on new versions of the recipes published
- upstream.
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>
+ (BitBake and OE-Core) automatically generates upgrades
+ for recipes that are based on new versions of the
+ recipes published upstream.
</para></listitem>
<listitem><para>
<emphasis>Recipe Reporting System:</emphasis>
@@ -546,9 +565,10 @@
The main purpose of the system is to help you
manage the recipes you maintain and to offer a dynamic
overview of the project.
- The Recipe Reporting System is built on top
- the of OpenEmbedded Metadata Index, which is a website
- that indexes layers for the OpenEmbedded build system.
+ The Recipe Reporting System is built on top of the
+ <ulink url="http://layers.openembedded.org/layerindex/layers/">OpenEmbedded Layer Index</ulink>,
+ which is a website that indexes OpenEmbedded-Core
+ layers.
</para></listitem>
<listitem><para>
<emphasis>Patchwork:</emphasis>
@@ -568,7 +588,10 @@
and quality assurance (QA).
By using the public AutoBuilder, anyone can determine
the status of the current "master" branch of Poky.
- </para>
+ <note>
+ AutoBuilder is based on
+ <ulink url='https://buildbot.net/'>buildbot</ulink>.
+ </note></para>
<para>A goal of the Yocto Project is to lead the
open source industry with a project that automates
@@ -654,8 +677,8 @@
when they do not.</para>
<para>You can read more about Pseudo in the
- "<ulink url='&YOCTO_DOCS_CM_URL;#fakeroot-and-pseudo'>Fakeroot and Pseudo</ulink>"
- section of the Yocto Project Concepts Manual.
+ "<link linkend='fakeroot-and-pseudo'>Fakeroot and Pseudo</link>"
+ section.
</para></listitem>
</itemizedlist>
</para>
@@ -666,7 +689,7 @@
<para>
The following list consists of components associated with the
- Open-Embedded build system:
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>:
<itemizedlist>
<listitem><para>
<emphasis>BitBake:</emphasis>
@@ -687,17 +710,15 @@
<ulink url='&YOCTO_DOCS_BB_URL;'>BitBake User Manual</ulink>.
</para></listitem>
<listitem><para>
- <emphasis>Openembedded Core:</emphasis>
- OpenEmbedded Core (OE-Core) is a common layer of
+ <emphasis>OpenEmbedded-Core:</emphasis>
+ OpenEmbedded-Core (OE-Core) is a common layer of
metadata (i.e. recipes, classes, and associated files)
used by OpenEmbedded-derived systems, which includes
the Yocto Project.
The Yocto Project and the OpenEmbedded Project both
- maintain the OpenEmbedded Core.
- You can find the OE-Core metadata in the Yocto
- Project
- <ulink url='&YOCTO_DOCS_GS_URL;#source-repositories'>Source Repositories</ulink>
- <ulink url='https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta'>here</ulink>.
+ maintain the OpenEmbedded-Core.
+ You can find the OE-Core metadata in the Yocto Project
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta'>Source Repositories</ulink>.
</para>
<para>Historically, the Yocto Project integrated the
@@ -732,9 +753,10 @@
<para>
Poky is the Yocto Project reference distribution.
- It contains the OpenEmbedded build system (BitBake and OE-Core)
- as well as a set of metadata to get you started building your
- own distribution.
+ It contains the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>Open-Embedded build system</ulink>
+ (BitBake and OE-Core) as well as a set of metadata to get you
+ started building your own distribution.
See the
<link linkend='what-is-the-yocto-project'>figure</link> in
"What is the Yocto Project?" section for an illustration
@@ -775,10 +797,9 @@
specific, non-desktop platform to enhance usability
in constrained environments.</para>
- <para>You can find the Matchbox source in its
- <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi'>repository</ulink>
- listed in the Yocto Project
- <ulink url='&YOCTO_DOCS_GS_URL;#source-repositories'>Source Repositories</ulink>.
+ <para>You can find the Matchbox source in the Yocto
+ Project
+ <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink>.
</para></listitem>
<listitem><para>
<emphasis>Opkg</emphasis>
@@ -920,7 +941,7 @@
Regardless of what your Build Host is running, you can
use Toaster to develop software using the Yocto Project.
Toaster is a web interface to the Yocto Project's
- OpenEmbedded build system.
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>Open-Embedded build system</ulink>.
The interface enables you to configure and run your
builds.
Information about builds is collected and stored in a
@@ -943,7 +964,7 @@
<para>For information about how to install and use the
Yocto Project Eclipse plug-in, see the
"<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-eclipse-project'>Developing Applications Using Eclipse</ulink>"
- section in the Yocto Project Application Development and
+ chapter in the Yocto Project Application Development and
the Extensible Software Development Kit (eSDK) Manual.
</para></listitem>
</itemizedlist>
@@ -959,9 +980,8 @@
Kit.
Poky contains the
<ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded Build System</ulink>
- build system
(<ulink url='&YOCTO_DOCS_REF_URL;#bitbake-term'>BitBake</ulink> and
- <ulink url='&YOCTO_DOCS_REF_URL;#oe-core'>OpenEmbedded Core</ulink>)
+ <ulink url='&YOCTO_DOCS_REF_URL;#oe-core'>OpenEmbedded-Core</ulink>)
as well as a set of
<ulink url='&YOCTO_DOCS_REF_URL;#metadata'>metadata</ulink> to get
you started building your own distro.
@@ -1000,7 +1020,7 @@
metadata.
</para></listitem>
<listitem><para>
- <filename>meta-yocto-bsp</filename>, which is Yocto
+ <filename>meta-yocto-bsp</filename>, which are Yocto
Project-specific Board Support Packages (BSPs).
</para></listitem>
<listitem><para>
@@ -1060,7 +1080,9 @@
One of the most powerful properties of Poky is that every aspect
of a build is controlled by the metadata.
You can use metadata to augment these base image types by
- adding metadata layers that extend functionality.
+ adding metadata
+ <link linkend='the-yocto-project-layer-model'>layers</link>
+ that extend functionality.
These layers can provide, for example, an additional software
stack for an image type, add a board support package (BSP) for
additional hardware, or even create a new image type.
@@ -1095,8 +1117,9 @@
<title>The OpenEmbedded Build System Workflow</title>
<para>
- The OpenEmbedded build system uses a "workflow" to accomplish
- image and SDK generation.
+ The
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>
+ uses a "workflow" to accomplish image and SDK generation.
The following figure overviews that workflow:
<imagedata fileref="figures/YP-flow-diagram.png"
format="PNG" align='center' width="8in"/>
@@ -1113,10 +1136,10 @@
or source code repositories systems such as Git.
</para></listitem>
<listitem><para>
- Once downloaded, the build system extracts the sources
- into a local work area where patches are applied and
- common steps for configuring and compiling the software
- are run.
+ Once source code is downloaded, the build system extracts
+ the sources into a local work area where patches are
+ applied and common steps for configuring and compiling
+ the software are run.
</para></listitem>
<listitem><para>
The build system then installs the software into a
@@ -1142,8 +1165,8 @@
<para>
For a very detailed look at this workflow, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#development-concepts'>Development Concepts</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<link linkend='openembedded-build-system-build-concepts'>OpenEmbedded Build System Concepts</link>"
+ section.
</para>
</section>
@@ -1164,8 +1187,9 @@
Files that hold global definitions of variables,
user-defined variables, and hardware configuration
information.
- These files tell the OpenEmbedded build system what to
- build and what to put into the image to support a
+ These files tell the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>Open-Embedded build system</ulink>
+ what to build and what to put into the image to support a
particular platform.
</para></listitem>
<listitem><para>
@@ -1175,7 +1199,7 @@
and programming changes back into the image to make
their code available to other application developers.
For information on the eSDK, see the
- <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and Extensible Software Development Kit (eSDK)</ulink>
+ <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
manual.
</para></listitem>
<listitem><para>
@@ -1205,8 +1229,7 @@
<emphasis>Metadata:</emphasis>
A key element of the Yocto Project is the Metadata that
is used to construct a Linux distribution and is contained
- in the files that the
- <link linkend='gs-term-openembedded-build-system'>OpenEmbedded build system</link> parses
+ in the files that the OpenEmbedded build system parses
when building an image.
In general, Metadata includes recipes, configuration
files, and other information that refers to the build
@@ -1219,7 +1242,7 @@
software itself (patches or auxiliary files) that
are used to fix bugs or customize the software for use
in a particular situation.
- OpenEmbedded Core is an important set of validated
+ OpenEmbedded-Core is an important set of validated
metadata.
</para></listitem>
<listitem><para id='gs-term-openembedded-build-system'>
@@ -1273,10 +1296,10 @@
<para>It is worth noting that the term "package" can,
in general, have subtle meanings.
For example, the packages referred to in the
- "<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Build Host Packages</ulink>"
- section in the Yocto Project Quick Start are compiled binaries
- that, when installed, add functionality to your Linux
- distribution.</para>
+ "<ulink url='&YOCTO_DOCS_REF_URL;#required-packages-for-the-build-host'>Required Packages for the Build Host</ulink>"
+ section in the Yocto Project Reference Manual are compiled
+ binaries that, when installed, add functionality to your
+ Linux distribution.</para>
<para>Another point worth noting is that historically within
the Yocto Project, recipes were referred to as packages - thus,
diff --git a/documentation/getting-started/getting-started.xml b/documentation/overview-manual/overview-manual.xml
index 8ce35fbc5d2..b23c39497cc 100644
--- a/documentation/getting-started/getting-started.xml
+++ b/documentation/overview-manual/overview-manual.xml
@@ -2,7 +2,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
-<book id='getting-started-manual' lang='en'
+<book id='overview-manual' lang='en'
xmlns:xi="http://www.w3.org/2003/XInclude"
xmlns="http://docbook.org/ns/docbook"
>
@@ -10,14 +10,14 @@
<mediaobject>
<imageobject>
- <imagedata fileref='figures/getting-started-title.png'
+ <imagedata fileref='figures/overview-manual-title.png'
format='SVG'
align='left' scalefit='1' width='100%'/>
</imageobject>
</mediaobject>
<title>
- Getting Started With Yocto Project
+ Yocto Project Overview and Concepts Manual
</title>
<authorgroup>
@@ -33,9 +33,14 @@
<revhistory>
<revision>
<revnumber>2.5</revnumber>
- <date>April 2018</date>
+ <date>May 2018</date>
<revremark>The initial document released with the Yocto Project 2.5 Release.</revremark>
</revision>
+ <revision>
+ <revnumber>2.6</revnumber>
+ <date>&REL_MONTH_YEAR;</date>
+ <revremark>Released with the Yocto Project 2.6 Release.</revremark>
+ </revision>
</revhistory>
<copyright>
@@ -54,39 +59,53 @@
<itemizedlist>
<listitem><para>
This version of the
- <emphasis>Getting Started With Yocto Project Manual</emphasis>
+ <emphasis>Yocto Project Overview and Concepts Manual</emphasis>
is for the &YOCTO_DOC_VERSION; release of the
Yocto Project.
To be sure you have the latest version of the manual
- for this release, use the manual from the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>.
+ for this release, go to the
+ <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
+ and select the manual from that site.
+ Manuals from the site are more up-to-date than manuals
+ derived from the Yocto Project released TAR files.
</para></listitem>
<listitem><para>
- For manuals associated with other releases of the Yocto
- Project, go to the
+ If you located this manual through a web search, the
+ version of the manual might not be the one you want
+ (e.g. the search might have returned a manual much
+ older than the Yocto Project version with which you
+ are working).
+ You can see all Yocto Project major releases by
+ visiting the
+ <ulink url='&YOCTO_WIKI_URL;/wiki/Releases'>Releases</ulink>
+ page.
+ If you need a version of this manual for a different
+ Yocto Project release, visit the
<ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
- and use the drop-down "Active Releases" button
- and choose the manual associated with the desired
- Yocto Project.
+ and select the manual set by using the
+ "ACTIVE RELEASES DOCUMENTATION" or "DOCUMENTS ARCHIVE"
+ pull-down menus.
</para></listitem>
<listitem><para>
- To report any inaccuracies or problems with this
- manual, send an email to the Yocto Project
- discussion group at
- <filename>yocto@yoctoproject.com</filename> or log into
- the freenode <filename>#yocto</filename> channel.
- </para></listitem>
+ To report any inaccuracies or problems with this
+ manual, send an email to the Yocto Project
+ discussion group at
+ <filename>yocto@yoctoproject.com</filename> or log into
+ the freenode <filename>#yocto</filename> channel.
+ </para></listitem>
</itemizedlist>
</note>
</legalnotice>
</bookinfo>
- <xi:include href="getting-started-intro.xml"/>
+ <xi:include href="overview-manual-intro.xml"/>
+
+ <xi:include href="overview-manual-yp-intro.xml"/>
- <xi:include href="getting-started-yp-intro.xml"/>
+ <xi:include href="overview-manual-development-environment.xml"/>
- <xi:include href="getting-started-development-environment.xml"/>
+ <xi:include href="overview-manual-concepts.xml" />
</book>
<!--
diff --git a/documentation/poky.ent b/documentation/poky.ent
index 4de800fefc4..abe892cf287 100644
--- a/documentation/poky.ent
+++ b/documentation/poky.ent
@@ -1,13 +1,17 @@
-<!ENTITY DISTRO "2.5">
-<!ENTITY DISTRO_COMPRESSED "25">
-<!ENTITY DISTRO_NAME_NO_CAP "sumo">
-<!ENTITY DISTRO_NAME "Sumo">
-<!ENTITY YOCTO_DOC_VERSION "2.5">
-<!ENTITY DISTRO_REL_TAG "yocto-2.5">
+<!ENTITY DISTRO "2.6">
+<!ENTITY DISTRO_COMPRESSED "26">
+<!ENTITY DISTRO_NAME_NO_CAP "thud">
+<!ENTITY DISTRO_NAME "Thud">
+<!ENTITY DISTRO_NAME_NO_CAP_MINUS_ONE "sumo">
+<!ENTITY DISTRO_NAME_MINUS_ONE "Sumo">
+<!ENTITY YOCTO_DOC_VERSION "2.6">
+<!ENTITY YOCTO_DOC_VERSION_MINUS_ONE "2.5">
+<!ENTITY DISTRO_REL_TAG "yocto-2.6">
<!ENTITY METAINTELVERSION "9.0">
+<!ENTITY REL_MONTH_YEAR "TBD">
<!ENTITY META_INTEL_REL_TAG "&METAINTELVERSION;-&DISTRO_NAME_NO_CAP;-&YOCTO_DOC_VERSION;">
-<!ENTITY POKYVERSION "20.0.0">
-<!ENTITY POKYVERSION_COMPRESSED "2000">
+<!ENTITY POKYVERSION "21.0.0">
+<!ENTITY POKYVERSION_COMPRESSED "2100">
<!ENTITY YOCTO_POKY "poky-&DISTRO_NAME_NO_CAP;-&POKYVERSION;">
<!ENTITY COPYRIGHT_YEAR "2010-2018">
<!ENTITY YOCTO_DL_URL "http://downloads.yoctoproject.org">
@@ -18,7 +22,6 @@
<!ENTITY YOCTO_AB_URL "http://autobuilder.yoctoproject.org">
<!ENTITY YOCTO_GIT_URL "http://git.yoctoproject.org">
<!ENTITY YOCTO_ADTREPO_URL "http://adtrepo.yoctoproject.org">
-<!ENTITY YOCTO_RELEASE_NOTES "&YOCTO_HOME_URL;/downloads/core/&DISTRO_NAME_NO_CAP;&DISTRO_COMPRESSED;">
<!ENTITY OE_HOME_URL "http://www.openembedded.org">
<!ENTITY OE_LISTS_URL "http://lists.openembedded.org/mailman">
<!ENTITY OE_DOCS_URL "http://docs.openembedded.org">
@@ -35,8 +38,8 @@
<!ENTITY ECLIPSE_INDIGO_CDT_URL "&ECLIPSE_DL_URL;/tools/cdt/releases/indigo">
<!ENTITY YOCTO_DOCS_URL "&YOCTO_HOME_URL;/docs">
<!ENTITY YOCTO_SOURCES_URL "&YOCTO_HOME_URL;/sources/">
-<!ENTITY YOCTO_AB_PORT_URL "&YOCTO_AB_URL;:8010">
-<!ENTITY YOCTO_AB_NIGHTLY_URL "&YOCTO_AB_URL;/pub/nightly/">
+<!ENTITY YOCTO_AB_PORT_URL "https://autobuilder.yocto.io/">
+<!ENTITY YOCTO_AB_NIGHTLY_URL "&YOCTO_AB_PORT_URL;/pub/nightly/">
<!ENTITY YOCTO_POKY_URL "&YOCTO_DL_URL;/releases/poky/">
<!ENTITY YOCTO_RELEASE_DL_URL "&YOCTO_DL_URL;/releases/yocto/yocto-&DISTRO;">
<!ENTITY YOCTO_TOOLCHAIN_DL_URL "&YOCTO_RELEASE_DL_URL;/toolchain/">
@@ -52,16 +55,13 @@
<!ENTITY YOCTO_DOCS_REF_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/ref-manual/ref-manual.html">
<!ENTITY YOCTO_DOCS_BSP_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/bsp-guide/bsp-guide.html">
<!ENTITY YOCTO_DOCS_DEV_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/dev-manual/dev-manual.html">
-<!ENTITY YOCTO_DOCS_KERNEL_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/kernel-manual/kernel-manual.html">
<!ENTITY YOCTO_DOCS_KERNEL_DEV_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/kernel-dev/kernel-dev.html">
<!ENTITY YOCTO_DOCS_PROF_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/profile-manual/profile-manual.html">
<!ENTITY YOCTO_DOCS_MM_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/mega-manual/mega-manual.html">
<!ENTITY YOCTO_DOCS_BB_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/bitbake-user-manual/bitbake-user-manual.html">
<!ENTITY YOCTO_DOCS_TOAST_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/toaster-manual/toaster-manual.html">
<!ENTITY YOCTO_DOCS_SDK_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/sdk-manual/sdk-manual.html">
-<!ENTITY YOCTO_DOCS_OVERVIEW_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/overview-manual/overview-manual.html">
-<!ENTITY YOCTO_DOCS_GS_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/getting-started/getting-started.html">
-<!ENTITY YOCTO_DOCS_CM_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/concepts-manual/concepts-manual.html">
+<!ENTITY YOCTO_DOCS_OM_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/overview-manual/overview-manual.html">
<!ENTITY YOCTO_DOCS_BRIEF_URL "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/brief-yoctoprojectqs/brief-yoctoprojectqs.html">
<!ENTITY YOCTO_ADTPATH_DIR "/opt/poky/&DISTRO;">
<!ENTITY YOCTO_POKY_TARBALL "&YOCTO_POKY;.tar.bz2">
diff --git a/documentation/profile-manual/profile-manual.xml b/documentation/profile-manual/profile-manual.xml
index 3f8f93a3ae4..bce030885a3 100644
--- a/documentation/profile-manual/profile-manual.xml
+++ b/documentation/profile-manual/profile-manual.xml
@@ -88,9 +88,14 @@
</revision>
<revision>
<revnumber>2.5</revnumber>
- <date>April 2018</date>
+ <date>May 2018</date>
<revremark>Released with the Yocto Project 2.5 Release.</revremark>
</revision>
+ <revision>
+ <revnumber>2.6</revnumber>
+ <date>&REL_MONTH_YEAR;</date>
+ <revremark>Released with the Yocto Project 2.6 Release.</revremark>
+ </revision>
</revhistory>
<copyright>
@@ -113,24 +118,36 @@
is for the &YOCTO_DOC_VERSION; release of the
Yocto Project.
To be sure you have the latest version of the manual
- for this release, use the manual from the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>.
+ for this release, go to the
+ <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
+ and select the manual from that site.
+ Manuals from the site are more up-to-date than manuals
+ derived from the Yocto Project released TAR files.
</para></listitem>
<listitem><para>
- For manuals associated with other releases of the Yocto
- Project, go to the
+ If you located this manual through a web search, the
+ version of the manual might not be the one you want
+ (e.g. the search might have returned a manual much
+ older than the Yocto Project version with which you
+ are working).
+ You can see all Yocto Project major releases by
+ visiting the
+ <ulink url='&YOCTO_WIKI_URL;/wiki/Releases'>Releases</ulink>
+ page.
+ If you need a version of this manual for a different
+ Yocto Project release, visit the
<ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
- and use the drop-down "Active Releases" button
- and choose the manual associated with the desired
- Yocto Project.
+ and select the manual set by using the
+ "ACTIVE RELEASES DOCUMENTATION" or "DOCUMENTS ARCHIVE"
+ pull-down menus.
</para></listitem>
<listitem><para>
- To report any inaccuracies or problems with this
- manual, send an email to the Yocto Project
- discussion group at
- <filename>yocto@yoctoproject.com</filename> or log into
- the freenode <filename>#yocto</filename> channel.
- </para></listitem>
+ To report any inaccuracies or problems with this
+ manual, send an email to the Yocto Project
+ discussion group at
+ <filename>yocto@yoctoproject.com</filename> or log into
+ the freenode <filename>#yocto</filename> channel.
+ </para></listitem>
</itemizedlist>
</note>
</legalnotice>
diff --git a/documentation/ref-manual/faq.xml b/documentation/ref-manual/faq.xml
index c0ec1a6fb9f..49ff86261da 100644
--- a/documentation/ref-manual/faq.xml
+++ b/documentation/ref-manual/faq.xml
@@ -143,7 +143,7 @@
To add a package, you need to create a BitBake recipe.
For information on how to create a BitBake recipe, see the
"<ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-writing-a-new-recipe'>Writing a New Recipe</ulink>"
- in the Yocto Project Development Tasks Manual.
+ section in the Yocto Project Development Tasks Manual.
</para>
</answer>
</qandaentry>
@@ -417,8 +417,8 @@
<para>
You can find more information on licensing in the
- "<ulink url='&YOCTO_DOCS_GS_URL;#licensing'>Licensing</ulink>"
- section in the Getting Started With Yocto Project Manual
+ "<ulink url='&YOCTO_DOCS_OM_URL;#licensing'>Licensing</ulink>"
+ section in the Yocto Project Overview and Concepts Manual
and also in the
"<ulink url='&YOCTO_DOCS_DEV_URL;#maintaining-open-source-license-compliance-during-your-products-lifecycle'>Maintaining Open Source License Compliance During Your Product's Lifecycle</ulink>"
section in the Yocto Project Development Tasks Manual.
diff --git a/documentation/ref-manual/migration.xml b/documentation/ref-manual/migration.xml
index bccbeed3b95..b0609680009 100644
--- a/documentation/ref-manual/migration.xml
+++ b/documentation/ref-manual/migration.xml
@@ -293,7 +293,7 @@
For the remainder, you can now find them in the
<filename>meta-extras</filename> repository, which is in the
Yocto Project
- <ulink url='&YOCTO_DOCS_GS_URL;#source-repositories'>Source Repositories</ulink>.
+ <ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>.
</para>
</section>
</section>
@@ -442,7 +442,7 @@
at <filename>meta/recipes-core/init-ifupdown</filename>.
For information on how to use append files, see the
"<ulink url='&YOCTO_DOCS_DEV_URL;#using-bbappend-files'>Using .bbappend Files</ulink>"
- in the Yocto Project Development Tasks Manual.
+ section in the Yocto Project Development Tasks Manual.
</para>
</section>
@@ -866,10 +866,8 @@
<link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>:
<itemizedlist>
<listitem><para>
- The value of
- <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>
- is now validated to ensure invalid feature items are not
- added.
+ The value of <filename>IMAGE_FEATURES</filename> is now
+ validated to ensure invalid feature items are not added.
Some users mistakenly add package names to this variable
instead of using
<link linkend='var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></link>
@@ -1116,8 +1114,8 @@
supports pre-renamed package names.</para></listitem>
<listitem><para>
<filename>classes/rootfs_rpm</filename>: Implement
- <link linkend='var-BAD_RECOMMENDATIONS'><filename>BAD_RECOMMENDATIONS</filename></link>
- for RPM.</para></listitem>
+ <filename>BAD_RECOMMENDATIONS</filename> for RPM.
+ </para></listitem>
<listitem><para>
<filename>systemd</filename>: Remove
<filename>systemd_unitdir</filename> if
@@ -1452,7 +1450,7 @@
<para>
Package Tests (ptest) are built but not installed by default.
For information on using Package Tests, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#testing-packages-with-ptest'>Setting up and running package test (ptest)</ulink>"
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#testing-packages-with-ptest'>Testing Packages with ptest</ulink>"
section in the Yocto Project Development Tasks Manual.
For information on the <filename>ptest</filename> class, see the
"<link linkend='ref-classes-ptest'><filename>ptest.bbclass</filename></link>"
@@ -1748,7 +1746,7 @@
<para>
The minimum
- <ulink url='&YOCTO_DOCS_GS_URL;#git'>Git</ulink> version
+ <ulink url='&YOCTO_DOCS_OM_URL;#git'>Git</ulink> version
required on the build host is now 1.7.8 because the
<filename>--list</filename> option is now required by
BitBake's Git fetcher.
@@ -1909,14 +1907,6 @@
for which <filename>module_conf_*</filename> is specified to
<filename>KERNEL_MODULE_PROBECONF</filename>.
</para>
-
- <para>
- For more information, see the
- <link linkend='var-KERNEL_MODULE_AUTOLOAD'><filename>KERNEL_MODULE_AUTOLOAD</filename></link>
- and
- <link linkend='var-KERNEL_MODULE_PROBECONF'><filename>KERNEL_MODULE_PROBECONF</filename></link>
- variables.
- </para>
</section>
<section id='migration-1.7-qa-check-changes'>
@@ -3037,7 +3027,7 @@
actively maintained.
See the
"<ulink url='&YOCTO_DOCS_TOAST_URL;#using-the-toaster-web-interface'>Using the Toaster Web Interface</ulink>"
- section in the Yocto Project Toaster User Manual for more
+ section in the Toaster User Manual for more
information on this interface.
</para></listitem>
<listitem><para><emphasis>"puccho" BitBake UI</emphasis>:
@@ -3057,7 +3047,8 @@
and the
<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-extensible'>extensible SDK</ulink>.
For information on these SDKs and how to build and use them, see the
- <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-intro'>Yocto Project Software Development Kit (SDK) Developer's Guide</ulink>.
+ <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
+ manual.
<note>
The Yocto Project Eclipse IDE Plug-in is still supported and
is not affected by this change.
@@ -4038,7 +4029,7 @@ $ runqemu qemux86-64 tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.
<para>For an example, see the
<filename>pixbufcache</filename> class in
<filename>meta/classes/</filename> in the Yocto Project
- <ulink url='&YOCTO_DOCS_GS_URL;#source-repositories'>Source Repositories</ulink>.
+ <ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>.
<note>
The <filename>SSTATEPOSTINSTFUNCS</filename> variable
itself is now deprecated in favor of the
@@ -4251,8 +4242,8 @@ $ runqemu qemux86-64 tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.
<para>See the
"<ulink url='&YOCTO_DOCS_BB_URL;#svn-fetcher'>Subversion (SVN) Fetcher (svn://)</ulink>"
- section in the Yocto Project BitBake User Manual for
- additional information.
+ section in the BitBake User Manual for additional
+ information.
</para></listitem>
<listitem><para>
<emphasis><filename>BB_SETSCENE_VERIFY_FUNCTION</filename>
@@ -4625,8 +4616,7 @@ id=f4d4f99cfbc2396e49c1613a7d237b9e57f06f81'>commit message</ulink>.
<listitem><para>
The <filename>USE_LDCONFIG</filename> variable has been
replaced with the "ldconfig"
- <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
- feature.
+ <filename>DISTRO_FEATURES</filename> feature.
Distributions that previously set:
<literallayout class='monospaced'>
USE_LDCONFIG = "0"
@@ -4685,9 +4675,9 @@ id=f4d4f99cfbc2396e49c1613a7d237b9e57f06f81'>commit message</ulink>.
</para></listitem>
<listitem><para>
All native and nativesdk recipes now use a separate
- <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
- value instead of sharing the value used by recipes for the
- target, in order to avoid unnecessary rebuilds.</para>
+ <filename>DISTRO_FEATURES</filename> value instead of
+ sharing the value used by recipes for the target, in order
+ to avoid unnecessary rebuilds.</para>
<para>The <filename>DISTRO_FEATURES</filename> for
<filename>native</filename> recipes is
@@ -4805,7 +4795,7 @@ id=f4d4f99cfbc2396e49c1613a7d237b9e57f06f81'>commit message</ulink>.
<link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>)
on the <filename>util-linux-su</filename> package
when "pam" is in
- <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>.
+ <filename>DISTRO_FEATURES</filename>.
</para></listitem>
<listitem><para>
The <filename>switch_root</filename> program is now
@@ -4824,7 +4814,7 @@ id=f4d4f99cfbc2396e49c1613a7d237b9e57f06f81'>commit message</ulink>.
packaged in a separate "util-linux-ionice" package.
The main <filename>util-linux</filename> package has
a recommended runtime dependency (i.e.
- <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>)
+ <filename>RRECOMMENDS</filename>)
on the <filename>util-linux-ionice</filename> package.
</para></listitem>
</itemizedlist>
@@ -4839,18 +4829,15 @@ id=f4d4f99cfbc2396e49c1613a7d237b9e57f06f81'>commit message</ulink>.
The change also eliminates needing to pull in the entire
<filename>initscripts</filename> package.
The main <filename>initscripts</filename> package has a
- runtime dependency (i.e.
- <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>)
+ runtime dependency (i.e. <filename>RDEPENDS</filename>)
on the <filename>sushell</filename> package when
- "selinux" is in
- <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>.
+ "selinux" is in <filename>DISTRO_FEATURES</filename>.
</para></listitem>
<listitem><para>
<emphasis><filename>glib-2.0</filename>:</emphasis>
The <filename>glib-2.0</filename> package now has a
recommended runtime dependency (i.e.
- <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>)
- on the
+ <filename>RRECOMMENDS</filename>) on the
<filename>shared-mime-info</filename> package, since large
portions of GIO are not useful without the MIME database.
You can remove the dependency by using the
@@ -5178,7 +5165,7 @@ id=f4d4f99cfbc2396e49c1613a7d237b9e57f06f81'>commit message</ulink>.
multiconfig is enabled (one per configuration).
For more information, see the
"<ulink url='&YOCTO_DOCS_BB_URL;#events'>Events</ulink>"
- in the BitBake User Manual.
+ section in the BitBake User Manual.
</para></listitem>
<listitem><para>
By default, the <filename>security_flags.inc</filename> file
@@ -5240,6 +5227,457 @@ id=f4d4f99cfbc2396e49c1613a7d237b9e57f06f81'>commit message</ulink>.
</para>
</section>
</section>
+
+<section id='moving-to-the-yocto-project-2.5-release'>
+ <title>Moving to the Yocto Project 2.5 Release</title>
+
+ <para>
+ This section provides migration information for moving to the
+ Yocto Project 2.5 Release from the prior release.
+ </para>
+
+ <section id='migration-2.5-packaging-changes'>
+ <title>Packaging Changes</title>
+
+ <para>
+ This section provides information about packaging changes that have
+ occurred:
+ <itemizedlist>
+ <listitem><para>
+ <emphasis><filename>bind-libs</filename>:</emphasis>
+ The libraries packaged by the bind recipe are in a
+ separate <filename>bind-libs</filename> package.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>libfm-gtk</filename>:</emphasis>
+ The <filename>libfm</filename> GTK+ bindings are split into
+ a separate <filename>libfm-gtk</filename> package.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>flex-libfl</filename>:</emphasis>
+ The flex recipe splits out libfl into a separate
+ <filename>flex-libfl</filename> package to avoid too many
+ dependencies being pulled in where only the library is
+ needed.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>grub-efi</filename>:</emphasis>
+ The <filename>grub-efi</filename> configuration is split
+ into a separate <filename>grub-bootconf</filename>
+ recipe.
+ However, the dependency relationship from
+ <filename>grub-efi</filename> is through a
+ virtual/grub-bootconf provider making it possible to have
+ your own recipe provide the dependency.
+ Alternatively, you can use a BitBake append file to bring
+ the configuration back into the
+ <filename>grub-efi</filename> recipe.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>armv7a Legacy Package Feed Support:</emphasis>
+ Legacy support is removed for transitioning from
+ <filename>armv7a</filename> to
+ <filename>armv7a-vfp-neon</filename> in package feeds,
+ which was previously enabled by setting
+ <filename>PKGARCHCOMPAT_ARMV7A</filename>.
+ This transition occurred in 2011 and active package feeds
+ should by now be updated to the new naming.
+ </para></listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section id='migration-2.5-removed-recipes'>
+ <title>Removed Recipes</title>
+
+ <para>
+ The following recipes have been removed:
+ <itemizedlist>
+ <listitem><para>
+ <emphasis><filename>gcc</filename>:</emphasis>
+ The version 6.4 recipes are replaced by 7.x.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>gst-player</filename>:</emphasis>
+ Renamed to <filename>gst-examples</filename> as per
+ upstream.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>hostap-utils</filename>:</emphasis>
+ This software package is obsolete.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>latencytop</filename>:</emphasis>
+ This recipe is no longer maintained upstream.
+ The last release was in 2009.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>libpfm4</filename>:</emphasis>
+ The only file that requires this recipe is
+ <filename>oprofile</filename>, which has been removed.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>linux-yocto</filename>:</emphasis>
+ The version 4.4, 4.9, and 4.10 recipes have been removed.
+ Versions 4.12, 4.14, and 4.15 remain.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>man</filename>:</emphasis>
+ This recipe has been replaced by modern
+ <filename>man-db</filename>
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>mkelfimage</filename>:</emphasis>
+ This tool has been removed in the upstream coreboot project,
+ and is no longer needed with the removal of the ELF image
+ type.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>nativesdk-postinst-intercept</filename>:</emphasis>
+ This recipe is not maintained.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>neon</filename>:</emphasis>
+ This software package is no longer maintained upstream and
+ is no longer needed by anything in OpenEmbedded-Core.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>oprofile</filename>:</emphasis>
+ The functionality of this recipe is replaced by
+ <filename>perf</filename> and keeping compatibility on
+ an ongoing basis with <filename>musl</filename> is
+ difficult.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>pax</filename>:</emphasis>
+ This software package is obsolete.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>stat</filename>:</emphasis>
+ This software package is not maintained upstream.
+ <filename>coreutils</filename> provides a modern stat binary.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>zisofs-tools-native</filename>:</emphasis>
+ This recipe is no longer needed because the compressed
+ ISO image feature has been removed.
+ </para></listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section id='migration-2.5-scripts-and-tools-changes'>
+ <title>Scripts and Tools Changes</title>
+
+ <para>
+ The following are changes to scripts and tools:
+ <itemizedlist>
+ <listitem><para>
+ <emphasis><filename>yocto-bsp</filename>,
+ <filename>yocto-kernel</filename>, and
+ <filename>yocto-layer</filename></emphasis>:
+ The <filename>yocto-bsp</filename>,
+ <filename>yocto-kernel</filename>, and
+ <filename>yocto-layer</filename> scripts previously shipped
+ with poky but not in OpenEmbedded-Core have been removed.
+ These scripts are not maintained and are outdated.
+ In many cases, they are also limited in scope.
+ The <filename>bitbake-layers create-layer</filename> command
+ is a direct replacement for <filename>yocto-layer</filename>.
+ See the documentation to create a BSP or kernel recipe in
+ the
+ "<ulink url='&YOCTO_DOCS_BSP_URL;#bsp-kernel-recipe-example'>BSP Kernel Recipe Example</ulink>"
+ section.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>devtool finish</filename>:</emphasis>
+ <filename>devtool finish</filename> now exits with an error
+ if there are uncommitted changes or a rebase/am in progress
+ in the recipe's source repository.
+ If this error occurs, there might be uncommitted changes
+ that will not be included in updates to the patches applied
+ by the recipe.
+ A -f/--force option is provided for situations that the
+ uncommitted changes are inconsequential and you want to
+ proceed regardless.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>scripts/oe-setup-rpmrepo</filename> script:</emphasis>
+ The functionality of
+ <filename>scripts/oe-setup-rpmrepo</filename> is replaced by
+ <filename>bitbake package-index</filename>.
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>scripts/test-dependencies.sh</filename> script:</emphasis>
+ The script is largely made obsolete by the
+ recipe-specific sysroots functionality introduced in the
+ previous release.
+ </para></listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section id='migration-2.5-bitbake-changes'>
+ <title>BitBake Changes</title>
+
+ <para>
+ The following are BitBake changes:
+ <itemizedlist>
+ <listitem><para>
+ The <filename>--runall</filename> option has changed.
+ There are two different behaviors people might want:
+ <itemizedlist>
+ <listitem><para>
+ <emphasis>Behavior A:</emphasis>
+ For a given target (or set of targets) look through
+ the task graph and run task X only if it is present
+ and will be built.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Behavior B:</emphasis>
+ For a given target (or set of targets) look through
+ the task graph and run task X if any recipe in the
+ taskgraph has such a target, even if it is not in
+ the original task graph.
+ </para></listitem>
+ </itemizedlist>
+ The <filename>--runall</filename> option now performs
+ "Behavior B".
+ Previously <filename>--runall</filename> behaved like
+ "Behavior A".
+ A <filename>--runonly</filename> option has been added to
+ retain the ability to perform "Behavior A".
+ </para></listitem>
+ <listitem><para>
+ Several explicit "run this task for all recipes in the
+ dependency tree" tasks have been removed (e.g.
+ <filename>fetchall</filename>,
+ <filename>checkuriall</filename>, and the
+ <filename>*all</filename> tasks provided by the
+ <filename>distrodata</filename> and
+ <filename>archiver</filename> classes).
+ There is a BitBake option to complete this for any arbitrary
+ task. For example:
+ <literallayout class='monospaced'>
+ bitbake &lt;target&gt; -c fetchall
+ </literallayout>
+ should now be replaced with:
+ <literallayout class='monospaced'>
+ bitbake &lt;target&gt; --runall=fetch
+ </literallayout>
+ </para></listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section id='migration-2.5-python-and-python3-changes'>
+ <title>Python and Python 3 Changes</title>
+
+ <para>
+ The following are auto-packaging changes to Python and Python 3:
+ </para>
+ <para>
+ The script-managed <filename>python-*-manifest.inc</filename> files
+ that were previously used to generate Python and Python 3
+ packages have been replaced with a JSON-based file that is
+ easier to read and maintain.
+ A new task is available for maintainers of the Python recipes to
+ update the JSON file when upgrading to new Python versions.
+ You can now edit the file directly instead of having to edit a
+ script and run it to update the file.
+ </para>
+ <para>
+ One particular change to note is that the Python recipes no longer
+ have build-time provides for their packages.
+ This assumes <filename>python-foo</filename> is one of the packages
+ provided by the Python recipe.
+ You can no longer run <filename>bitbake python-foo</filename> or
+ have a <ulink url='&YOCTO_DOCS_REF_URL;#var-DEPENDS'><filename>DEPENDS</filename></ulink> on
+ <filename>python-foo</filename>, but doing either of the following
+ causes the package to work as expected:
+ <literallayout class='monospaced'>
+ IMAGE_INSTALL_append = " python-foo"
+ </literallayout>
+ or
+ <literallayout class='monospaced'>
+ RDEPENDS_${PN} = "python-foo"
+ </literallayout>
+ The earlier build-time provides behavior was a quirk of the way the
+ Python manifest file was created.
+ For more information on this change please see
+ <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=8d94b9db221d1def42f091b991903faa2d1651ce'>this commit</ulink>.
+ </para>
+ </section>
+
+ <section id='migration-2.5-miscellaneous-changes'>
+ <title>Miscellaneous Changes</title>
+
+ <para>
+ The following are additional changes:
+ <itemizedlist>
+ <listitem><para>
+ The <filename>kernel</filename> class supports building
+ packages for multiple kernels.
+ If your kernel recipe or <filename>.bbappend</filename> file
+ mentions packaging at all, you should replace references to
+ the kernel in package names with
+ <filename>${KERNEL_PACKAGE_NAME}</filename>.
+ For example, if you disable automatic installation of the
+ kernel image using
+ <filename>RDEPENDS_kernel-base = ""</filename> you can avoid
+ warnings using
+ <filename>RDEPENDS_${KERNEL_PACKAGE_NAME}-base = ""</filename>
+ instead.
+ </para></listitem>
+ <listitem><para>
+ The <filename>buildhistory</filename> class commits changes
+ to the repository by default so you no longer need to set
+ <filename>BUILDHISTORY_COMMIT = "1"</filename>.
+ If you want to disable commits you need to set
+ <filename>BUILDHISTORY_COMMIT = "0"</filename> in your
+ configuration.
+ </para></listitem>
+ <listitem><para>
+ The <filename>beaglebone</filename> reference machine has
+ been renamed to <filename>beaglebone-yocto</filename>.
+ The <filename>beaglebone-yocto</filename> BSP is a reference
+ implementation using only mainline components available in
+ OpenEmbedded-Core and <filename>meta-yocto-bsp</filename>,
+ whereas Texas Instruments maintains a full-featured BSP in
+ the <filename>meta-ti</filename> layer.
+ This rename avoids the previous name clash that existed
+ between the two BSPs.
+ </para></listitem>
+ <listitem><para>
+ The <filename>update-alternatives</filename> class no longer
+ works with SysV <filename>init</filename> scripts because
+ this usage has been problematic.
+ Also, the <filename>sysklogd</filename> recipe no longer
+ uses <filename>update-alternatives</filename> because it is
+ incompatible with other implementations.
+ </para></listitem>
+ <listitem><para>
+ By default, the <filename>cmake</filename> class uses
+ <filename>ninja</filename> instead of
+ <filename>make</filename> for building.
+ This improves build performance.
+ If a recipe is broken with <filename>ninja</filename>, then
+ the recipe can set
+ <filename>OECMAKE_GENERATOR = "Unix Makefiles"</filename>
+ to change back to <filename>make</filename>.
+ </para></listitem>
+ <listitem><para>
+ The previously deprecated <filename>base_*</filename>
+ functions have been removed in favor of their replacements
+ in <filename>meta/lib/oe</filename> and
+ <filename>bitbake/lib/bb</filename>.
+ These are typically used from recipes and classes.
+ Any references to the old functions must be updated.
+ The following table shows the removed functions and their
+ replacements:
+
+ <literallayout class='monospaced'>
+ <emphasis>Removed</emphasis> <emphasis>Replacement</emphasis>
+ ============================ ============================
+ base_path_join() oe.path.join()
+ base_path_relative() oe.path.relative()
+ base_path_out() oe.path.format_display()
+ base_read_file() oe.utils.read_file()
+ base_ifelse() oe.utils.ifelse()
+ base_conditional() oe.utils.conditional()
+ base_less_or_equal() oe.utils.less_or_equal()
+ base_version_less_or_equal() oe.utils.version_less_or_equal()
+ base_contains() bb.utils.contains()
+ base_both_contain() oe.utils.both_contain()
+ base_prune_suffix() oe.utils.prune_suffix()
+ oe_filter() oe.utils.str_filter()
+ oe_filter_out() oe.utils.str_filter_out() (or use the _remove operator).
+ </literallayout>
+ </para></listitem>
+ <listitem><para>
+ Using <filename>exit 1</filename> to explicitly defer a
+ postinstall script until first boot is now deprecated since
+ it is not an obvious mechanism and can mask actual errors.
+ If you want to explicitly defer a postinstall to first boot
+ on the target rather than at <filename>rootfs</filename>
+ creation time, use
+ <filename>pkg_postinst_ontarget()</filename>
+ or call
+ <filename>postinst-intercepts defer_to_first_boot</filename>
+ from <filename>pkg_postinst()</filename>.
+ Any failure of a <filename>pkg_postinst()</filename>
+ script (including <filename>exit 1</filename>)
+ will trigger a warning during
+ <filename>do_rootfs</filename>.
+ </para></listitem>
+ <listitem><para>
+ The <filename>elf</filename> image type has been removed.
+ This image type was removed because the
+ <filename>mkelfimage</filename> tool
+ that was required to create it is no longer provided by
+ coreboot upstream and required updating every time
+ <filename>binutils</filename> updated.
+ </para></listitem>
+ <listitem><para>
+ Support for .iso image compression (previously enabled
+ through <filename>COMPRESSISO = "1"</filename>) has been
+ removed.
+ The userspace tools (<filename>zisofs-tools</filename>) are
+ unmaintained and <filename>squashfs</filename> provides
+ better performance and compression.
+ In order to build a live image with squashfs+lz4 compression
+ enabled you should now set
+ <filename>LIVE_ROOTFS_TYPE = "squashfs-lz4"</filename>
+ and ensure that <filename>live</filename>
+ is in <filename>IMAGE_FSTYPES</filename>.
+ </para></listitem>
+ <listitem><para>
+ Recipes with an unconditional dependency on
+ <filename>libpam</filename> are only buildable with
+ <filename>pam</filename> in
+ <filename>DISTRO_FEATURES</filename>.
+ If the dependency is truly optional then it is recommended
+ that the dependency be conditional upon
+ <filename>pam</filename> being in
+ <filename>DISTRO_FEATURES</filename>.
+ </para></listitem>
+ <listitem><para>
+ For EFI-based machines, the bootloader
+ (<filename>grub-efi</filename> by default) is installed into
+ the image at /boot.
+ Wic can be used to split the bootloader into separate boot
+ and rootfs partitions if necessary.
+ </para></listitem>
+ <listitem><para>
+ Patches whose context does not match exactly (i.e. where
+ patch reports "fuzz" when applying) will generate a
+ warning.
+ For an example of this see
+ <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=cc97bc08125b63821ce3f616771830f77c456f57'>this commit</ulink>.
+ </para></listitem>
+ <listitem><para>
+ Layers are expected to set
+ <filename>LAYERSERIES_COMPAT_layername</filename>
+ to match the version(s) of OpenEmbedded-Core they are
+ compatible with.
+ This is specified as codenames using spaces to separate
+ multiple values (e.g. "rocko sumo").
+ If a layer does not set
+ <filename>LAYERSERIES_COMPAT_layername</filename>, a warning
+ will is shown.
+ If a layer sets a value that does not include the current
+ version ("sumo" for the 2.5 release), then an error will be
+ produced.
+ </para></listitem>
+ <listitem><para>
+ The <filename>TZ</filename> environment variable is set to
+ "UTC" within the build environment in order to fix
+ reproducibility problems in some recipes.
+ </para></listitem>
+ </itemizedlist>
+ </para>
+ </section>
+</section>
</chapter>
<!--
vim: expandtab tw=80 ts=4
diff --git a/documentation/ref-manual/ref-bitbake.xml b/documentation/ref-manual/ref-bitbake.xml
deleted file mode 100644
index 9e3e9cf35d2..00000000000
--- a/documentation/ref-manual/ref-bitbake.xml
+++ /dev/null
@@ -1,479 +0,0 @@
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
-"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
-[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
-
-<chapter id='ref-bitbake'>
-
- <title>BitBake</title>
-
- <para>
- BitBake is a program written in Python that interprets the
- <link linkend='metadata'>Metadata</link> used by
- the OpenEmbedded build system.
- At some point, developers wonder what actually happens when you enter:
- <literallayout class='monospaced'>
- $ bitbake core-image-sato
- </literallayout>
- </para>
-
- <para>
- This chapter provides an overview of what happens behind the scenes from BitBake's perspective.
- </para>
-
- <note>
- BitBake strives to be a generic "task" executor that is capable of handling complex dependency relationships.
- As such, it has no real knowledge of what the tasks being executed actually do.
- BitBake just considers a list of tasks with dependencies and handles
- <link linkend='metadata'>Metadata</link>
- consisting of variables in a certain format that get passed to the tasks.
- </note>
-
- <section id='ref-bitbake-parsing'>
- <title>Parsing</title>
-
- <para>
- BitBake parses configuration files, classes, and <filename>.bb</filename> files.
- </para>
-
- <para>
- The first thing BitBake does is look for the
- <filename>bitbake.conf</filename> file.
- This file resides in the
- <link linkend='source-directory'>Source Directory</link>
- within the <filename>meta/conf/</filename> directory.
- BitBake finds it by examining its
- <link linkend='var-BBPATH'><filename>BBPATH</filename></link> environment
- variable and looking for the <filename>meta/conf/</filename>
- directory.
- </para>
-
- <para>
- The <filename>bitbake.conf</filename> file lists other configuration
- files to include from a <filename>conf/</filename>
- directory below the directories listed in <filename>BBPATH</filename>.
- In general, the most important configuration file from a user's perspective
- is <filename>local.conf</filename>, which contains a user's customized
- settings for the OpenEmbedded build environment.
- Other notable configuration files are the distribution
- configuration file (set by the
- <filename><link linkend='var-DISTRO'>DISTRO</link></filename> variable)
- and the machine configuration file
- (set by the
- <filename><link linkend='var-MACHINE'>MACHINE</link></filename> variable).
- The <filename>DISTRO</filename> and <filename>MACHINE</filename> BitBake environment
- variables are both usually set in
- the <filename>local.conf</filename> file.
- Valid distribution
- configuration files are available in the <filename>meta/conf/distro/</filename> directory
- and valid machine configuration
- files in the <filename>meta/conf/machine/</filename> directory.
- Within the <filename>meta/conf/machine/include/</filename>
- directory are various <filename>tune-*.inc</filename> configuration files that provide common
- "tuning" settings specific to and shared between particular architectures and machines.
- </para>
-
- <para>
- After the parsing of the configuration files, some standard classes are included.
- The <filename>base.bbclass</filename> file is always included.
- Other classes that are specified in the configuration using the
- <filename><link linkend='var-INHERIT'>INHERIT</link></filename>
- variable are also included.
- Class files are searched for in a <filename>classes</filename> subdirectory
- under the paths in <filename>BBPATH</filename> in the same way as
- configuration files.
- </para>
-
- <para>
- After classes are included, the variable
- <filename><link linkend='var-BBFILES'>BBFILES</link></filename>
- is set, usually in
- <filename>local.conf</filename>, and defines the list of places to search for
- <filename>.bb</filename> files.
- By default, the <filename>BBFILES</filename> variable specifies the
- <filename>meta/recipes-*/</filename> directory within Poky.
- Adding extra content to <filename>BBFILES</filename> is best achieved through the use of
- BitBake layers as described in the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>"
- section of the Yocto Project Development Tasks Manual.
- </para>
-
- <para>
- BitBake parses each <filename>.bb</filename> file in <filename>BBFILES</filename> and
- stores the values of various variables.
- In summary, for each <filename>.bb</filename>
- file the configuration plus the base class of variables are set, followed
- by the data in the <filename>.bb</filename> file
- itself, followed by any inherit commands that
- <filename>.bb</filename> file might contain.
- </para>
-
- <para>
- Because parsing <filename>.bb</filename> files is a time
- consuming process, a cache is kept to speed up subsequent parsing.
- This cache is invalid if the timestamp of the <filename>.bb</filename>
- file itself changes, or if the timestamps of any of the include,
- configuration files or class files on which the
- <filename>.bb</filename> file depends change.
- </para>
-
- <note>
- <para>
- You need to be aware of how BitBake parses curly braces.
- If a recipe uses a closing curly brace within the function and
- the character has no leading spaces, BitBake produces a parsing
- error.
- If you use a pair of curly brace in a shell function, the
- closing curly brace must not be located at the start of the line
- without leading spaces.
- </para>
-
- <para>
- Here is an example that causes BitBake to produce a parsing
- error:
- <literallayout class='monospaced'>
- fakeroot create_shar() {
- cat &lt;&lt; "EOF" &gt; ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
- usage()
- {
- echo "test"
- ###### The following "}" at the start of the line causes a parsing error ######
- }
- EOF
- }
- </literallayout>
- Writing the recipe this way avoids the error:
- <literallayout class='monospaced'>
- fakeroot create_shar() {
- cat &lt;&lt; "EOF" &gt; ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
- usage()
- {
- echo "test"
- ######The following "}" with a leading space at the start of the line avoids the error ######
- }
- EOF
- }
- </literallayout>
- </para>
- </note>
- </section>
-
- <section id='ref-bitbake-providers'>
- <title>Preferences and Providers</title>
-
- <para>
- Once all the <filename>.bb</filename> files have been
- parsed, BitBake starts to build the target (<filename>core-image-sato</filename>
- in the previous section's example) and looks for providers of that target.
- Once a provider is selected, BitBake resolves all the dependencies for
- the target.
- In the case of <filename>core-image-sato</filename>, it would lead to
- <filename>packagegroup-core-x11-sato</filename>,
- which in turn leads to recipes like <filename>matchbox-terminal</filename>,
- <filename>pcmanfm</filename> and <filename>gthumb</filename>.
- These recipes in turn depend on <filename>glibc</filename> and the toolchain.
- </para>
-
- <para>
- Sometimes a target might have multiple providers.
- A common example is "virtual/kernel", which is provided by each kernel package.
- Each machine often selects the best kernel provider by using a line similar to the
- following in the machine configuration file:
- </para>
-
- <literallayout class='monospaced'>
- PREFERRED_PROVIDER_virtual/kernel = "linux-yocto"
- </literallayout>
-
- <para>
- The default <filename><link linkend='var-PREFERRED_PROVIDER'>PREFERRED_PROVIDER</link></filename>
- is the provider with the same name as the target.
- </para>
-
- <para>
- Understanding how providers are chosen is made complicated by the fact
- that multiple versions might exist.
- BitBake defaults to the highest version of a provider.
- Version comparisons are made using the same method as Debian.
- You can use the
- <filename><link linkend='var-PREFERRED_VERSION'>PREFERRED_VERSION</link></filename>
- variable to specify a particular version (usually in the distro configuration).
- You can influence the order by using the
- <filename><link linkend='var-DEFAULT_PREFERENCE'>DEFAULT_PREFERENCE</link></filename>
- variable.
- By default, files have a preference of "0".
- Setting the <filename>DEFAULT_PREFERENCE</filename> to "-1" makes the
- package unlikely to be used unless it is explicitly referenced.
- Setting the <filename>DEFAULT_PREFERENCE</filename> to "1" makes it likely the package is used.
- <filename>PREFERRED_VERSION</filename> overrides any <filename>DEFAULT_PREFERENCE</filename> setting.
- <filename>DEFAULT_PREFERENCE</filename> is often used to mark newer and more experimental package
- versions until they have undergone sufficient testing to be considered stable.
- </para>
-
- <para>
- In summary, BitBake has created a list of providers, which is prioritized, for each target.
- </para>
- </section>
-
- <section id='ref-bitbake-dependencies'>
- <title>Dependencies</title>
-
- <para>
- Each target BitBake builds consists of multiple tasks such as
- <filename>fetch</filename>, <filename>unpack</filename>,
- <filename>patch</filename>, <filename>configure</filename>,
- and <filename>compile</filename>.
- For best performance on multi-core systems, BitBake considers each task as an independent
- entity with its own set of dependencies.
- </para>
-
- <para>
- Dependencies are defined through several variables.
- You can find information about variables BitBake uses in the
- BitBake documentation, which is found in the
- <filename>bitbake/doc/manual</filename> directory within the
- <link linkend='source-directory'>Source Directory</link>.
- At a basic level, it is sufficient to know that BitBake uses the
- <filename><link linkend='var-DEPENDS'>DEPENDS</link></filename> and
- <filename><link linkend='var-RDEPENDS'>RDEPENDS</link></filename>
- variables when calculating dependencies.
- </para>
- </section>
-
- <section id='ref-bitbake-tasklist'>
- <title>The Task List</title>
-
- <para>
- Based on the generated list of providers and the dependency information,
- BitBake can now calculate exactly what tasks it needs to run and in what
- order it needs to run them.
- The build now starts with BitBake forking off threads up to the limit set in the
- <filename><link linkend='var-BB_NUMBER_THREADS'>BB_NUMBER_THREADS</link></filename> variable.
- BitBake continues to fork threads as long as there are tasks ready to run,
- those tasks have all their dependencies met, and the thread threshold has not been
- exceeded.
- </para>
-
- <para>
- It is worth noting that you can greatly speed up the build time by properly setting
- the <filename>BB_NUMBER_THREADS</filename> variable.
- See the
- "<ulink url='&YOCTO_DOCS_QS_URL;#qs-building-images'>Building Images</ulink>"
- section in the Yocto Project Quick Start for more information.
- </para>
-
- <para>
- As each task completes, a timestamp is written to the directory specified by the
- <filename><link linkend='var-STAMP'>STAMP</link></filename> variable.
- On subsequent runs, BitBake looks within the <filename>build/tmp/stamps</filename>
- directory and does not rerun
- tasks that are already completed unless a timestamp is found to be invalid.
- Currently, invalid timestamps are only considered on a per
- <filename>.bb</filename> file basis.
- So, for example, if the configure stamp has a timestamp greater than the
- compile timestamp for a given target, then the compile task would rerun.
- Running the compile task again, however, has no effect on other providers
- that depend on that target.
- This behavior could change or become configurable in future versions of BitBake.
- </para>
-
- <note>
- Some tasks are marked as "nostamp" tasks.
- No timestamp file is created when these tasks are run.
- Consequently, "nostamp" tasks are always rerun.
- </note>
- </section>
-
- <section id='ref-bitbake-runtask'>
- <title>Running a Task</title>
-
- <para>
- Tasks can either be a shell task or a Python task.
- For shell tasks, BitBake writes a shell script to
- <filename>${WORKDIR}/temp/run.do_taskname.pid</filename> and then executes the script.
- The generated shell script contains all the exported variables, and the shell functions
- with all variables expanded.
- Output from the shell script goes to the file <filename>${WORKDIR}/temp/log.do_taskname.pid</filename>.
- Looking at the expanded shell functions in the run file and the output in the log files
- is a useful debugging technique.
- </para>
-
- <para>
- For Python tasks, BitBake executes the task internally and logs information to the
- controlling terminal.
- Future versions of BitBake will write the functions to files similar to the way
- shell tasks are handled.
- Logging will be handled in a way similar to shell tasks as well.
- </para>
-
- <para>
- Once all the tasks have been completed BitBake exits.
- </para>
-
- <para>
- When running a task, BitBake tightly controls the execution environment
- of the build tasks to make sure unwanted contamination from the build machine
- cannot influence the build.
- Consequently, if you do want something to get passed into the build
- task's environment, you must take a few steps:
- <orderedlist>
- <listitem><para>Tell BitBake to load what you want from the environment
- into the data store.
- You can do so through the <filename>BB_ENV_EXTRAWHITE</filename>
- variable.
- For example, assume you want to prevent the build system from
- accessing your <filename>$HOME/.ccache</filename> directory.
- The following command tells BitBake to load
- <filename>CCACHE_DIR</filename> from the environment into the data
- store:
- <literallayout class='monospaced'>
- export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE CCACHE_DIR"
- </literallayout></para></listitem>
- <listitem><para>Tell BitBake to export what you have loaded into the
- environment store to the task environment of every running task.
- Loading something from the environment into the data store
- (previous step) only makes it available in the datastore.
- To export it to the task environment of every running task,
- use a command similar to the following in your
- <filename>local.conf</filename> or distro configuration file:
- <literallayout class='monospaced'>
- export CCACHE_DIR
- </literallayout></para></listitem>
- </orderedlist>
- </para>
-
- <note>
- A side effect of the previous steps is that BitBake records the variable
- as a dependency of the build process in things like the shared state
- checksums.
- If doing so results in unnecessary rebuilds of tasks, you can whitelist the
- variable so that the shared state code ignores the dependency when it creates
- checksums.
- For information on this process, see the
- <filename>BB_HASHBASE_WHITELIST</filename> example in the
- "<ulink url='&YOCTO_DOCS_CM_URL;#overview-checksums'>Checksums (Signatures)</ulink>"
- section in the Yocto Project Concepts Manual.
- </note>
- </section>
-
- <section id='ref-bitbake-commandline'>
- <title>BitBake Command Line</title>
-
- <para>
- Following is the BitBake help output:
- </para>
-
- <screen>
-$ bitbake --help
-Usage: bitbake [options] [recipename/target ...]
-
- Executes the specified task (default is 'build') for a given set of target recipes (.bb files).
- It is assumed there is a conf/bblayers.conf available in cwd or in BBPATH which
- will provide the layer, BBFILES and other configuration information.
-
-Options:
- --version show program's version number and exit
- -h, --help show this help message and exit
- -b BUILDFILE, --buildfile=BUILDFILE
- Execute tasks from a specific .bb recipe directly.
- WARNING: Does not handle any dependencies from other
- recipes.
- -k, --continue Continue as much as possible after an error. While the
- target that failed and anything depending on it cannot
- be built, as much as possible will be built before
- stopping.
- -a, --tryaltconfigs Continue with builds by trying to use alternative
- providers where possible.
- -f, --force Force the specified targets/task to run (invalidating
- any existing stamp file).
- -c CMD, --cmd=CMD Specify the task to execute. The exact options
- available depend on the metadata. Some examples might
- be 'compile' or 'populate_sysroot' or 'listtasks' may
- give a list of the tasks available.
- -C INVALIDATE_STAMP, --clear-stamp=INVALIDATE_STAMP
- Invalidate the stamp for the specified task such as
- 'compile' and then run the default task for the
- specified target(s).
- -r PREFILE, --read=PREFILE
- Read the specified file before bitbake.conf.
- -R POSTFILE, --postread=POSTFILE
- Read the specified file after bitbake.conf.
- -v, --verbose Output more log message data to the terminal.
- -D, --debug Increase the debug level. You can specify this more
- than once.
- -n, --dry-run Don't execute, just go through the motions.
- -S, --dump-signatures
- Don't execute, just dump out the signature
- construction information.
- -p, --parse-only Quit after parsing the BB recipes.
- -s, --show-versions Show current and preferred versions of all recipes.
- -e, --environment Show the global or per-package environment complete
- with information about where variables were
- set/changed.
- -g, --graphviz Save dependency tree information for the specified
- targets in the dot syntax.
- -I EXTRA_ASSUME_PROVIDED, --ignore-deps=EXTRA_ASSUME_PROVIDED
- Assume these dependencies don't exist and are already
- provided (equivalent to ASSUME_PROVIDED). Useful to
- make dependency graphs more appealing
- -l DEBUG_DOMAINS, --log-domains=DEBUG_DOMAINS
- Show debug logging for the specified logging domains
- -P, --profile Profile the command and save reports.
- -u UI, --ui=UI The user interface to use (e.g. knotty and taskexp).
- -t SERVERTYPE, --servertype=SERVERTYPE
- Choose which server to use, process or xmlrpc.
- --revisions-changed Set the exit code depending on whether upstream
- floating revisions have changed or not.
- --server-only Run bitbake without a UI, only starting a server
- (cooker) process.
- -B BIND, --bind=BIND The name/address for the bitbake server to bind to.
- --no-setscene Do not run any setscene tasks. sstate will be ignored
- and everything needed, built.
- --remote-server=REMOTE_SERVER
- Connect to the specified server.
- -m, --kill-server Terminate the remote server.
- --observe-only Connect to a server as an observing-only client.
- </screen>
- </section>
-
- <section id='ref-bitbake-fetchers'>
- <title>Fetchers</title>
-
- <para>
- BitBake also contains a set of "fetcher" modules that allow
- retrieval of source code from various types of sources.
- For example, BitBake can get source code from a disk with the metadata, from websites,
- from remote shell accounts, or from Source Code Management (SCM) systems
- like <filename>cvs/subversion/git</filename>.
- </para>
-
- <para>
- Fetchers are usually triggered by entries in
- <filename><link linkend='var-SRC_URI'>SRC_URI</link></filename>.
- You can find information about the options and formats of entries for specific
- fetchers in the BitBake manual located in the
- <filename>bitbake/doc/manual</filename> directory of the
- <link linkend='source-directory'>Source Directory</link>.
- </para>
-
- <para>
- One useful feature for certain Source Code Manager (SCM) fetchers
- is the ability to "auto-update" when the upstream SCM changes
- version.
- Since this ability requires certain functionality from the SCM,
- not all systems support it.
- Currently Subversion, Bazaar and to a limited extent, Git support
- the ability to "auto-update".
- This feature works using the <filename><link linkend='var-SRCREV'>SRCREV</link></filename>
- variable.
- See the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#platdev-appdev-srcrev'>Using an External SCM</ulink>"
- section in the Yocto Project Development Tasks Manual for more
- information.
- </para>
-
- </section>
-
-</chapter>
-<!--
-vim: expandtab tw=80 ts=4 spell spelllang=en_gb
--->
diff --git a/documentation/ref-manual/ref-classes.xml b/documentation/ref-manual/ref-classes.xml
index 8dfa0851cd1..1728139abad 100644
--- a/documentation/ref-manual/ref-classes.xml
+++ b/documentation/ref-manual/ref-classes.xml
@@ -35,8 +35,7 @@
<para>
This chapter discusses only the most useful and important classes.
Other classes do exist within the <filename>meta/classes</filename>
- directory in the
- <link linkend='source-directory'>Source Directory</link>.
+ directory in the Source Directory.
You can reference the <filename>.bbclass</filename> files directly
for more information.
</para>
@@ -128,9 +127,8 @@
<para>
By default, the <filename>autotools*</filename> classes
use out-of-tree builds (i.e.
- <filename>autotools.bbclass</filename>).
- (<link linkend='var-B'><filename>B</filename></link> <filename>!=</filename>
- <link linkend='var-S'><filename>S</filename></link>).
+ <filename>autotools.bbclass</filename> building with
+ <filename>B != S</filename>).
</para>
<para>
@@ -407,8 +405,7 @@
<title><filename>ccache.bbclass</filename></title>
<para>
- The <filename>ccache</filename> class enables the
- <ulink url='http://ccache.samba.org/'>C/C++ Compiler Cache</ulink>
+ The <filename>ccache</filename> class enables the C/C++ Compiler Cache
for the build.
This class is used to give a minor performance boost during the build.
However, using the class can lead to unexpected side-effects.
@@ -568,9 +565,9 @@
provides support for the recipes that build the Canadian
Cross-compilation tools for SDKs.
See the
- "<ulink url='&YOCTO_DOCS_CM_URL;#cross-development-toolchain-generation'>Cross-Development Toolchain Generation</ulink>"
- section in the Yocto Project Concepts Manual for more discussion on
- these cross-compilation tools.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#cross-development-toolchain-generation'>Cross-Development Toolchain Generation</ulink>"
+ section in the Yocto Project Overview and Concepts Manual for more
+ discussion on these cross-compilation tools.
</para>
</section>
@@ -582,9 +579,9 @@
provides support for the recipes that build the cross-compilation
tools used for building SDKs.
See the
- "<ulink url='&YOCTO_DOCS_CM_URL;#cross-development-toolchain-generation'>Cross-Development Toolchain Generation</ulink>"
- section in the Yocto Project Concepts Manual for more discussion on
- these cross-compilation tools.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#cross-development-toolchain-generation'>Cross-Development Toolchain Generation</ulink>"
+ section in the Yocto Project Overview and Concepts Manual for more
+ discussion on these cross-compilation tools.
</para>
</section>
@@ -1251,8 +1248,8 @@
"<ulink url='&YOCTO_DOCS_DEV_URL;#usingpoky-extend-customimage'>Customizing Images</ulink>"
section in the Yocto Project Development Tasks Manual.
For information on how images are created, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#images-dev-environment'>Images</ulink>"
- section in the Yocto Project Concpets Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#images-dev-environment'>Images</ulink>"
+ section in the Yocto Project Overview and Concpets Manual.
</para>
</section>
@@ -1293,7 +1290,7 @@
This class also handles conversion and compression of images.
<note>
To build a VMware VMDK image, you need to add "wic.vmdk" to
- <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>.
+ <filename>IMAGE_FSTYPES</filename>.
This would also be similar for Virtual Box Virtual Disk Image
("vdi") and QEMU Copy On Write Version 2 ("qcow2") images.
</note>
@@ -1554,7 +1551,8 @@
<link linkend='var-FILES'><filename>FILES</filename></link>
variable values that contain "//", which is invalid.
</para></listitem>
- <listitem><para><emphasis><filename>host-user-contaminated:</filename></emphasis>
+ <listitem><para id='insane-host-user-contaminated'>
+ <emphasis><filename>host-user-contaminated:</filename></emphasis>
Checks that no package produced by the recipe contains any
files outside of <filename>/home</filename> with a user or
group ID that matches the user running BitBake.
@@ -2135,7 +2133,7 @@ This check was removed for YP 2.3 release
<para>
For general information on out-of-tree Linux kernel modules, see the
- "<ulink url='&YOCTO_DOCS_KERNEL_URL;#incorporating-out-of-tree-modules'>Incorporating Out-of-Tree Modules</ulink>"
+ "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#incorporating-out-of-tree-modules'>Incorporating Out-of-Tree Modules</ulink>"
section in the Yocto Project Linux Kernel Development Manual.
</para>
</section>
@@ -2722,8 +2720,8 @@ This check was removed for YP 2.3 release
<para>
For more information on the cross-development toolchain
generation, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#cross-development-toolchain-generation'>Cross-Development Toolchain Generation</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#cross-development-toolchain-generation'>Cross-Development Toolchain Generation</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
For information on advantages gained when building a
cross-development toolchain using the
<link linkend='ref-tasks-populate_sdk'><filename>do_populate_sdk</filename></link>
@@ -3020,8 +3018,8 @@ This check was removed for YP 2.3 release
<para>
For information on how root filesystem images are created, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#image-generation-dev-environment'>Image Generation</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#image-generation-dev-environment'>Image Generation</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
</section>
@@ -3147,12 +3145,6 @@ This check was removed for YP 2.3 release
and <filename><link linkend='var-SITEINFO_BITS'>SITEINFO_BITS</link></filename>
that can be used elsewhere in the metadata.
</para>
-
- <para>
- Because the
- <link linkend='ref-classes-base'><filename>base</filename></link> class
- includes the <filename>siteinfo</filename> class, it is always active.
- </para>
</section>
<section id='ref-classes-spdx'>
@@ -3182,8 +3174,8 @@ This check was removed for YP 2.3 release
<para>
For more information on sstate, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#shared-state-cache'>Shared State Cache</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#shared-state-cache'>Shared State Cache</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
</section>
diff --git a/documentation/ref-manual/ref-devtool-reference.xml b/documentation/ref-manual/ref-devtool-reference.xml
index 0b445852873..b974d0f5951 100644
--- a/documentation/ref-manual/ref-devtool-reference.xml
+++ b/documentation/ref-manual/ref-devtool-reference.xml
@@ -20,7 +20,7 @@
For more information on how to apply the command when using the
extensible SDK, see the
"<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-extensible'>Using the Extensible SDK</ulink>"
- section in the Yocto Project Application Development and the
+ chapter in the Yocto Project Application Development and the
Extensible Software Development Kit (eSDK) manual.
</para>
@@ -474,7 +474,7 @@
workflow in the
"<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-devtool-use-devtool-upgrade-to-create-a-version-of-the-recipe-that-supports-a-newer-version-of-the-software'>Use <filename>devtool upgrade</filename> to Create a Version of the Recipe that Supports a Newer Version of the Software</ulink>"
section in the Yocto Project Application Development and the
- Extensible Software Development Kit (eSDK) Manual.
+ Extensible Software Development Kit (eSDK) manual.
You can also see an example of how to use
<filename>devtool upgrade</filename> in the
"<ulink url='&YOCTO_DOCS_DEV_URL;#gs-using-devtool-upgrade'>Using <filename>devtool upgrade</filename></ulink>"
diff --git a/documentation/ref-manual/ref-features.xml b/documentation/ref-manual/ref-features.xml
index 02857dce38a..cb74df6dad9 100644
--- a/documentation/ref-manual/ref-features.xml
+++ b/documentation/ref-manual/ref-features.xml
@@ -161,9 +161,9 @@
protocols support.
<note>
The default value for the
- <link linkend='var-DISTRO_FEATURES'><filename>DISTRO FEATURES</filename></link>
- variable includes "bluetooth", which causes bluez5
- to be backfilled in for bluetooth support.
+ <filename>DISTRO FEATURES</filename> variable includes
+ "bluetooth", which causes bluez5 to be backfilled in
+ for bluetooth support.
If you do not want bluez5 backfilled and would rather
use bluez4, you need to use the
<link linkend='var-DISTRO_FEATURES_BACKFILL_CONSIDERED'><filename>DISTRO_FEATURES_BACKFILL_CONSIDERED</filename></link>
diff --git a/documentation/ref-manual/ref-images.xml b/documentation/ref-manual/ref-images.xml
index 8b7cee827a1..1f96186c6e4 100644
--- a/documentation/ref-manual/ref-images.xml
+++ b/documentation/ref-manual/ref-images.xml
@@ -40,15 +40,19 @@
<para>
Following is a list of supported recipes:
<itemizedlist>
- <listitem><para><filename>build-appliance-image</filename>:
- An example virtual machine that contains all the pieces required to
- run builds using the build system as well as the build system itself.
+ <listitem><para>
+ <filename>build-appliance-image</filename>:
+ An example virtual machine that contains all the pieces
+ required to run builds using the build system as well as the
+ build system itself.
You can boot and run the image using either the
<ulink url='http://www.vmware.com/products/player/overview.html'>VMware Player</ulink>
- or <ulink url='http://www.vmware.com/products/workstation/overview.html'>VMware Workstation</ulink>.
+ or
+ <ulink url='http://www.vmware.com/products/workstation/overview.html'>VMware Workstation</ulink>.
For more information on this image, see the
- <ulink url='&YOCTO_HOME_URL;/documentation/build-appliance'>Build Appliance</ulink> page on
- the Yocto Project website.</para></listitem>
+ <ulink url='&YOCTO_HOME_URL;/software-item/build-appliance/'>Build Appliance</ulink>
+ page on the Yocto Project website.
+ </para></listitem>
<listitem><para><filename>core-image-base</filename>:
A console-only image that fully supports the target device hardware.</para></listitem>
<listitem><para><filename>core-image-clutter</filename>:
@@ -151,8 +155,8 @@
This image provides the Wayland protocol libraries and the
reference Weston compositor.
For more information, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#wayland'>Wayland</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-using-wayland-and-weston'>Using Wayland and Weston</ulink>"
+ section in the Yocto Project Development Tasks Manual.
</para></listitem>
<listitem><para><filename>core-image-x11</filename>:
A very basic X11 image with a terminal.
diff --git a/documentation/ref-manual/ref-kickstart.xml b/documentation/ref-manual/ref-kickstart.xml
index fd3de5b41de..a58f9d7c960 100644
--- a/documentation/ref-manual/ref-kickstart.xml
+++ b/documentation/ref-manual/ref-kickstart.xml
@@ -27,15 +27,10 @@
Kickstart commands are based on the Fedora kickstart versions but
with modifications to reflect Wic capabilities.
You can see the original documentation for those commands at the
- following links:
- <itemizedlist>
- <listitem><para>
- <ulink url='http://fedoraproject.org/wiki/Anaconda/Kickstart#part_or_partition'>http://fedoraproject.org/wiki/Anaconda/Kickstart#part_or_partition</ulink>
- </para></listitem>
- <listitem><para>
- <ulink url='http://fedoraproject.org/wiki/Anaconda/Kickstart#bootloader'>http://fedoraproject.org/wiki/Anaconda/Kickstart#bootloader</ulink>
- </para></listitem>
- </itemizedlist>
+ following link:
+ <literallayout class='monospaced'>
+ <ulink url='http://pykickstart.readthedocs.io/en/latest/kickstart-docs.html'>http://pykickstart.readthedocs.io/en/latest/kickstart-docs.html</ulink>
+ </literallayout>
</para>
</section>
diff --git a/documentation/ref-manual/ref-manual.xml b/documentation/ref-manual/ref-manual.xml
index dbcc28bcd69..1504e915817 100644
--- a/documentation/ref-manual/ref-manual.xml
+++ b/documentation/ref-manual/ref-manual.xml
@@ -119,9 +119,14 @@
</revision>
<revision>
<revnumber>2.5</revnumber>
- <date>April 2018</date>
+ <date>May 2018</date>
<revremark>Released with the Yocto Project 2.5 Release.</revremark>
</revision>
+ <revision>
+ <revnumber>2.6</revnumber>
+ <date>&REL_MONTH_YEAR;</date>
+ <revremark>Released with the Yocto Project 2.6 Release.</revremark>
+ </revision>
</revhistory>
<copyright>
@@ -142,24 +147,36 @@
is for the &YOCTO_DOC_VERSION; release of the
Yocto Project.
To be sure you have the latest version of the manual
- for this release, use the manual from the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>.
+ for this release, go to the
+ <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
+ and select the manual from that site.
+ Manuals from the site are more up-to-date than manuals
+ derived from the Yocto Project released TAR files.
</para></listitem>
<listitem><para>
- For manuals associated with other releases of the Yocto
- Project, go to the
+ If you located this manual through a web search, the
+ version of the manual might not be the one you want
+ (e.g. the search might have returned a manual much
+ older than the Yocto Project version with which you
+ are working).
+ You can see all Yocto Project major releases by
+ visiting the
+ <ulink url='&YOCTO_WIKI_URL;/wiki/Releases'>Releases</ulink>
+ page.
+ If you need a version of this manual for a different
+ Yocto Project release, visit the
<ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
- and use the drop-down "Active Releases" button
- and choose the manual associated with the desired
- Yocto Project.
+ and select the manual set by using the
+ "ACTIVE RELEASES DOCUMENTATION" or "DOCUMENTS ARCHIVE"
+ pull-down menus.
</para></listitem>
<listitem><para>
- To report any inaccuracies or problems with this
- manual, send an email to the Yocto Project
- discussion group at
- <filename>yocto@yoctoproject.com</filename> or log into
- the freenode <filename>#yocto</filename> channel.
- </para></listitem>
+ To report any inaccuracies or problems with this
+ manual, send an email to the Yocto Project
+ discussion group at
+ <filename>yocto@yoctoproject.com</filename> or log into
+ the freenode <filename>#yocto</filename> channel.
+ </para></listitem>
</itemizedlist>
</note>
</legalnotice>
diff --git a/documentation/ref-manual/ref-release-process.xml b/documentation/ref-manual/ref-release-process.xml
index d8ead1399ba..5efe17417aa 100644
--- a/documentation/ref-manual/ref-release-process.xml
+++ b/documentation/ref-manual/ref-release-process.xml
@@ -61,7 +61,7 @@
<para>
Each major release receives a codename that identifies the release in
the
- <ulink url='&YOCTO_DOCS_GS_URL;#yocto-project-repositories'>Yocto Project Source Repositories</ulink>.
+ <ulink url='&YOCTO_DOCS_OM_URL;#yocto-project-repositories'>Yocto Project Source Repositories</ulink>.
The concept is that branches of
<link linkend='metadata'>Metadata</link>
with the same codename are likely to be compatible and thus
@@ -189,7 +189,7 @@
Running <filename>oe-selftest</filename> requires
host packages beyond the "Essential" grouping.
See the
- "<link linkend='required-packages-for-the-host-development-system'>Required Packages for the Host Development System</link>"
+ "<link linkend='required-packages-for-the-build-host'>Required Packages for the Build Host</link>"
section for more information.
</note>
</para></listitem>
@@ -217,7 +217,7 @@
in the <filename>poky</filename> repository.
<note>
You can find all these branches in the Yocto Project
- <ulink url='&YOCTO_DOCS_GS_URL;#source-repositories'>Source Repositories</ulink>.
+ <ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>.
</note>
Testing within these public branches ensures in a publicly visible way
that all of the main supposed architectures and recipes in OE-Core
diff --git a/documentation/ref-manual/ref-structure.xml b/documentation/ref-manual/ref-structure.xml
index 5d30987956a..8e0c9f5b626 100644
--- a/documentation/ref-manual/ref-structure.xml
+++ b/documentation/ref-manual/ref-structure.xml
@@ -18,7 +18,7 @@
<para>
For information on how to establish a local Source Directory on your
development system, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#working-with-yocto-project-source-files'>Working With Yocto Project Source Files</ulink>"
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#locating-yocto-project-source-files'>Locating Yocto Project Source Files</ulink>"
section in the Yocto Project Development Tasks Manual.
</para>
@@ -114,7 +114,7 @@
<title><filename>meta/</filename></title>
<para>
- This directory contains the OpenEmbedded Core metadata.
+ This directory contains the OpenEmbedded-Core metadata.
The directory holds recipes, common classes, and machine
configuration for emulated targets (<filename>qemux86</filename>,
<filename>qemuarm</filename>, and so forth.)
@@ -137,8 +137,7 @@
This directory contains the Yocto Project reference
hardware Board Support Packages (BSPs).
For more information on BSPs, see the
- <ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support
- Package (BSP) Developer's Guide</ulink>.
+ <ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support Package (BSP) Developer's Guide</ulink>.
</para>
</section>
@@ -234,8 +233,7 @@
</para>
<para>
- By default, running this script without a
- <link linkend='build-directory'>Build Directory</link>
+ By default, running this script without a Build Directory
argument creates the <filename>build</filename> directory
in your current working directory.
If you provide a Build Directory argument when you
@@ -350,7 +348,7 @@
which defaults to <filename>meta-poky/conf</filename>
when you are building from the Yocto Project development
environment and defaults to <filename>meta/conf</filename> when
- you are building from the OpenEmbedded Core environment.
+ you are building from the OpenEmbedded-Core environment.
Because the script variable points to the source of the
<filename>local.conf.sample</filename> file, this implies that
you can configure your build environment from any layer by setting
@@ -402,7 +400,7 @@
which defaults to <filename>meta-poky/conf</filename>
when you are building from the Yocto Project development
environment and defaults to <filename>meta/conf</filename> when
- you are building from the OpenEmbedded Core environment.
+ you are building from the OpenEmbedded-Core environment.
Because the script variable points to the source of the
<filename>bblayers.conf.sample</filename> file, this implies that
you can base your build from any layer by setting the variable in
@@ -520,10 +518,10 @@
variable points to this directory.
For more detail on the contents of the <filename>deploy</filename>
directory, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#images-dev-environment'>Images</ulink>"
+ "<ulink url='&YOCTO_DOCS_OM_URL;#images-dev-environment'>Images</ulink>"
and
- "<ulink url='&YOCTO_DOCS_CM_URL;#sdk-dev-environment'>Application Development SDK</ulink>"
- sections in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#sdk-dev-environment'>Application Development SDK</ulink>"
+ sections in the Yocto Project Overview and Concepts Manual.
</para>
</section>
@@ -696,8 +694,8 @@
<para>
For information on how BitBake uses stamp files to determine if
a task should be rerun, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#stamp-files-and-the-rerunning-of-tasks'>Stamp Files and the Rerunning of Tasks</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#stamp-files-and-the-rerunning-of-tasks'>Stamp Files and the Rerunning of Tasks</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
</section>
@@ -736,8 +734,7 @@
built within the Yocto Project.
For this package, a work directory of
<filename>tmp/work/qemux86-poky-linux/linux-yocto/3.0+git1+&lt;.....&gt;</filename>,
- referred to as the
- <filename><link linkend='var-WORKDIR'>WORKDIR</link></filename>, is created.
+ referred to as the <filename>WORKDIR</filename>, is created.
Within this directory, the source is unpacked to
<filename>linux-qemux86-standard-build</filename> and then patched by Quilt.
(See the
diff --git a/documentation/ref-manual/ref-system-requirements.xml b/documentation/ref-manual/ref-system-requirements.xml
index 423c7389d79..23efde0bf90 100644
--- a/documentation/ref-manual/ref-system-requirements.xml
+++ b/documentation/ref-manual/ref-system-requirements.xml
@@ -21,16 +21,19 @@
<para>
For introductory information on the Yocto Project, see the
<ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink> and the
- "<ulink url='&YOCTO_DOCS_GS_URL;#overview-development-environment'>Yocto Project Development Environment</ulink>"
- chapter in the Getting Started With Yocto Project Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#overview-development-environment'>Yocto Project Development Environment</ulink>"
+ chapter in the Yocto Project Overview and Concepts Manual.
</para>
<para>
- If you want to use the Yocto Project to test run building an image
+ If you want to use the Yocto Project to quickly build an image
without having to understand concepts, work through the
- <ulink url='&YOCTO_DOCS_QS_URL;'>Yocto Project Quick Start</ulink>.
+ <ulink url='&YOCTO_DOCS_BRIEF_URL;'>Yocto Project Quick Build</ulink>
+ document.
You can find "how-to" information in the
<ulink url='&YOCTO_DOCS_DEV_URL;'>Yocto Project Development Tasks Manual</ulink>.
+ You can find Yocto Project overview and conceptual information in the
+ <ulink url='&YOCTO_DOCS_OM_URL;'>Yocto Project Overview and Concepts Manual</ulink>.
<note><title>Tip</title>
For more information about the Yocto Project Documentation set,
see the
@@ -129,8 +132,8 @@
</note>
</section>
- <section id='required-packages-for-the-host-development-system'>
- <title>Required Packages for the Host Development System</title>
+ <section id='required-packages-for-the-build-host'>
+ <title>Required Packages for the Build Host</title>
<para>
The list of packages you need on the host development system can
@@ -367,7 +370,7 @@
Execute the installation script.
Here is an example:
<literallayout class='monospaced'>
- $ sh poky-glibc-x86_64-buildtools-tarball-x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh
+ $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh
</literallayout>
During execution, a prompt appears that allows you to
choose the installation directory.
@@ -451,7 +454,7 @@
to install the tools.
Here is an example:
<literallayout class='monospaced'>
- $ sh poky-glibc-x86_64-buildtools-tarball-x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh
+ $ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh
</literallayout>
During execution, a prompt appears that allows you to
choose the installation directory.
diff --git a/documentation/ref-manual/ref-tasks.xml b/documentation/ref-manual/ref-tasks.xml
index 968cc7af6a5..ccd0f85cfd2 100644
--- a/documentation/ref-manual/ref-tasks.xml
+++ b/documentation/ref-manual/ref-tasks.xml
@@ -111,8 +111,7 @@
<link linkend='ref-classes-deploy'><filename>deploy</filename></link>
class and should write the output to
<filename>${</filename><link linkend='var-DEPLOYDIR'><filename>DEPLOYDIR</filename></link><filename>}</filename>,
- which is not to be confused with
- <filename>${</filename><link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link><filename>}</filename>.
+ which is not to be confused with <filename>${DEPLOY_DIR}</filename>.
The <filename>deploy</filename> class sets up
<filename>do_deploy</filename> as a shared state (sstate) task that
can be accelerated through sstate use.
@@ -220,8 +219,8 @@
<para>
For more information on image creation, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#image-generation-dev-environment'>Image Generation</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#image-generation-dev-environment'>Image Generation</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
</section>
@@ -232,7 +231,7 @@
Completes the image generation process.
The <filename>do_image_complete</filename> task runs after the
OpenEmbedded build system has run the
- <link linkend='ref-tasks-rootfs'><filename>do_image</filename></link>
+ <link linkend='ref-tasks-image'><filename>do_image</filename></link>
task during which image pre-processing occurs and through
dynamically generated <filename>do_image_*</filename> tasks the
image is constructed.
@@ -246,8 +245,8 @@
<para>
For more information on image creation, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#image-generation-dev-environment'>Image Generation</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#image-generation-dev-environment'>Image Generation</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
</section>
@@ -268,7 +267,7 @@
and
<link linkend='ref-tasks-rootfs'><filename>do_rootfs</filename></link>),
run under
- <ulink url='&YOCTO_DOCS_CM_URL;#fakeroot-and-pseudo'>fakeroot</ulink>.
+ <ulink url='&YOCTO_DOCS_OM_URL;#fakeroot-and-pseudo'>fakeroot</ulink>.
<note>
<title>Caution</title>
@@ -280,7 +279,7 @@
UID and/or GID of the original file, which is usually not
what you want.
The
- <link linkend='ref-classes-insane'><filename>host-user-contaminated</filename></link>
+ <link linkend='insane-host-user-contaminated'><filename>host-user-contaminated</filename></link>
QA check checks for files that probably have the wrong
ownership.
</para>
@@ -342,8 +341,8 @@
For additional information, see the
<link linkend='var-PKGDESTWORK'><filename>PKGDESTWORK</filename></link>
variable and the
- "<ulink url='&YOCTO_DOCS_CM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
</section>
@@ -367,8 +366,8 @@
<filename>${</filename><link linkend='var-DEPLOY_DIR_DEB'><filename>DEPLOY_DIR_DEB</filename></link><filename>}</filename>
directory in the package feeds area.
For more information, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
</section>
@@ -381,8 +380,8 @@
<filename>${</filename><link linkend='var-DEPLOY_DIR_IPK'><filename>DEPLOY_DIR_IPK</filename></link><filename>}</filename>
directory in the package feeds area.
For more information, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
</section>
@@ -395,8 +394,8 @@
<filename>${</filename><link linkend='var-DEPLOY_DIR_RPM'><filename>DEPLOY_DIR_RPM</filename></link><filename>}</filename>
directory in the package feeds area.
For more information, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
</section>
@@ -408,8 +407,8 @@
<filename>${</filename><link linkend='var-DEPLOY_DIR_TAR'><filename>DEPLOY_DIR_TAR</filename></link><filename>}</filename>
directory in the package feeds area.
For more information, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
- section Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
</section>
@@ -430,10 +429,87 @@
<para>
Locates patch files and applies them to the source code.
- See the
- "<ulink url='&YOCTO_DOCS_CM_URL;#patching-dev-environment'>Patching</ulink>"
- section in the Yocto Project Concepts Manual for more
- information.
+ </para>
+
+ <para>
+ After fetching and unpacking source files, the build system
+ uses the recipe's
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
+ statements to locate and apply patch files to the source code.
+ <note>
+ The build system uses the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-FILESPATH'><filename>FILESPATH</filename></ulink>
+ variable to determine the default set of directories when
+ searching for patches.
+ </note>
+ Patch files, by default, are <filename>*.patch</filename> and
+ <filename>*.diff</filename> files created and kept in a
+ subdirectory of the directory holding the recipe file.
+ For example, consider the
+ <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta/recipes-connectivity/bluez5'><filename>bluez5</filename></ulink>
+ recipe from the OE-Core layer (i.e.
+ <filename>poky/meta</filename>):
+ <literallayout class='monospaced'>
+ poky/meta/recipes-connectivity/bluez5
+ </literallayout>
+ This recipe has two patch files located here:
+ <literallayout class='monospaced'>
+ poky/meta/recipes-connectivity/bluez5/bluez5
+ </literallayout>
+ </para>
+
+ <para>
+ In the <filename>bluez5</filename> recipe, the
+ <filename>SRC_URI</filename> statements point to the source and
+ patch files needed to build the package.
+ <note>
+ In the case for the <filename>bluez5_5.48.bb</filename>
+ recipe, the <filename>SRC_URI</filename> statements are from an
+ include file <filename>bluez5.inc</filename>.
+ </note>
+ </para>
+
+ <para>
+ As mentioned earlier, the build system treats files whose file
+ types are <filename>.patch</filename> and
+ <filename>.diff</filename> as patch files.
+ However, you can use the "apply=yes" parameter with the
+ <filename>SRC_URI</filename> statement to indicate any file as a
+ patch file:
+ <literallayout class='monospaced'>
+ SRC_URI = " \
+ git://<replaceable>path_to_repo</replaceable>/<replaceable>some_package</replaceable> \
+ file://<replaceable>file</replaceable>;apply=yes \
+ "
+ </literallayout>
+ </para>
+
+ <para>
+ Conversely, if you have a directory full of patch files and you
+ want to exclude some so that the <filename>do_patch</filename>
+ task does not apply them during the patch phase, you can use
+ the "apply=no" parameter with the <filename>SRC_URI</filename>
+ statement:
+ <literallayout class='monospaced'>
+ SRC_URI = " \
+ git://<replaceable>path_to_repo</replaceable>/<replaceable>some_package</replaceable> \
+ file://<replaceable>path_to_lots_of_patch_files</replaceable> \
+ file://<replaceable>path_to_lots_of_patch_files</replaceable>/<replaceable>patch_file5</replaceable>;apply=no \
+ "
+ </literallayout>
+ In the previous example, assuming all the files in the directory
+ holding the patch files end with either <filename>.patch</filename>
+ or <filename>.diff</filename>, every file would be applied as a
+ patch by default except for the
+ <replaceable>patch_file5</replaceable> patch.
+ </para>
+
+ <para>
+ You can find out more about the patching process in the
+ "<ulink url='&YOCTO_DOCS_OM_URL;#patching-dev-environment'>Patching</ulink>"
+ section in the Yocto Project Overview and Concepts Manual and the
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-patching-code'>Patching Code</ulink>"
+ section in the Yocto Project Development Tasks Manual.
</para>
</section>
@@ -452,8 +528,8 @@
<para>
Creates the file and directory structure for an installable SDK.
See the
- "<ulink url='&YOCTO_DOCS_CM_URL;#sdk-generation-dev-environment'>SDK Generation</ulink>"
- section in the Yocto Project Concepts Manual for more
+ "<ulink url='&YOCTO_DOCS_OM_URL;#sdk-generation-dev-environment'>SDK Generation</ulink>"
+ section in the Yocto Project Overview and Concepts Manual for more
information.
</para>
</section>
@@ -520,15 +596,6 @@
</para>
</section>
- <section id='ref-tasks-rm_work_all'>
- <title><filename>do_rm_work_all</filename></title>
-
- <para>
- Top-level task for removing work files after the build system has
- finished with them.
- </para>
- </section>
-
<section id='ref-tasks-unpack'>
<title><filename>do_unpack</filename></title>
@@ -540,8 +607,8 @@
<link linkend='var-S'><filename>S</filename></link> variable also
plays a role in where unpacked source files ultimately reside.
For more information on how source files are unpacked, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#source-fetching-dev-environment'>Source Fetching</ulink>"
- section in the Yocto Project Concepts Manual and also
+ "<ulink url='&YOCTO_DOCS_OM_URL;#source-fetching-dev-environment'>Source Fetching</ulink>"
+ section in the Yocto Project Overview and Concepts Manual and also
see the <filename>WORKDIR</filename> and
<filename>S</filename> variable descriptions.
</para>
@@ -602,8 +669,7 @@
<para>
Removes all output files for a target from the
<link linkend='ref-tasks-unpack'><filename>do_unpack</filename></link>
- task forward (i.e.
- <link linkend='ref-tasks-patch'><filename>do_unpack</filename></link>,
+ task forward (i.e. <filename>do_unpack</filename>,
<link linkend='ref-tasks-configure'><filename>do_configure</filename></link>,
<link linkend='ref-tasks-compile'><filename>do_compile</filename></link>,
<link linkend='ref-tasks-install'><filename>do_install</filename></link>,
@@ -620,7 +686,7 @@
<para>
Running this task does not remove the
- <ulink url='&YOCTO_DOCS_CM_URL;#shared-state-cache'>sstate</ulink>
+ <ulink url='&YOCTO_DOCS_OM_URL;#shared-state-cache'>sstate</ulink>
cache files.
Consequently, if no changes have been made and the recipe is
rebuilt after cleaning, output files are simply restored from the
@@ -637,7 +703,7 @@
<para>
Removes all output files, shared state
- (<ulink url='&YOCTO_DOCS_CM_URL;#shared-state-cache'>sstate</ulink>)
+ (<ulink url='&YOCTO_DOCS_OM_URL;#shared-state-cache'>sstate</ulink>)
cache, and downloaded source files for a target (i.e. the contents
of
<link linkend='var-DL_DIR'><filename>DL_DIR</filename></link>).
@@ -668,13 +734,13 @@
<para>
Removes all output files and shared state
- (<ulink url='&YOCTO_DOCS_CM_URL;#shared-state-cache'>sstate</ulink>)
+ (<ulink url='&YOCTO_DOCS_OM_URL;#shared-state-cache'>sstate</ulink>)
cache for a target.
Essentially, the <filename>do_cleansstate</filename> task is
identical to the
<link linkend='ref-tasks-clean'><filename>do_clean</filename></link>
task with the added removal of shared state
- (<ulink url='&YOCTO_DOCS_CM_URL;#shared-state-cache'>sstate</ulink>)
+ (<ulink url='&YOCTO_DOCS_OM_URL;#shared-state-cache'>sstate</ulink>)
cache.
</para>
@@ -744,7 +810,7 @@
<para>
Creates or updates the index in the
- <ulink url='&YOCTO_DOCS_CM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>
+ <ulink url='&YOCTO_DOCS_OM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>
area.
<note>
This task is not triggered with the
@@ -796,8 +862,8 @@
Creates the root filesystem (file and directory structure) for an
image.
See the
- "<ulink url='&YOCTO_DOCS_CM_URL;#image-generation-dev-environment'>Image Generation</ulink>"
- section in the Yocto Project Concepts Manual for more
+ "<ulink url='&YOCTO_DOCS_OM_URL;#image-generation-dev-environment'>Image Generation</ulink>"
+ section in the Yocto Project Overview and Concepts Manual for more
information on how the root filesystem is created.
</para>
</section>
diff --git a/documentation/ref-manual/ref-terms.xml b/documentation/ref-manual/ref-terms.xml
index b8320dbfd6e..e25a1475492 100644
--- a/documentation/ref-manual/ref-terms.xml
+++ b/documentation/ref-manual/ref-terms.xml
@@ -200,8 +200,8 @@
<para>Creation of these toolchains is simple and automated.
For information on toolchain concepts as they apply to the
Yocto Project, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#cross-development-toolchain-generation'>Cross-Development Toolchain Generation</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#cross-development-toolchain-generation'>Cross-Development Toolchain Generation</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
You can also find more information on using the
relocatable toolchain in the
<ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
@@ -215,7 +215,7 @@
their code available to other application developers.</para>
<para>For information on the eSDK, see the
- <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and Extensible Software Development Kit (eSDK)</ulink>
+ <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
manual.
</para></listitem>
<listitem><para>
@@ -245,8 +245,8 @@
Yocto Project.</para>
<para>For introductory information on layers, see the
- "<ulink url='&YOCTO_DOCS_GS_URL;#the-yocto-project-layer-model'>The Yocto Project Layer Model</ulink>"
- section in the Getting Started With Yocto Project Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#the-yocto-project-layer-model'>The Yocto Project Layer Model</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
For more detailed information on layers, see the
"<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>"
section in the Yocto Project Development Tasks Manual.
@@ -273,7 +273,7 @@
software itself (patches or auxiliary files) that
are used to fix bugs or customize the software for use
in a particular situation.
- OpenEmbedded Core is an important set of validated
+ OpenEmbedded-Core is an important set of validated
metadata.</para>
<para>In the context of the kernel ("kernel Metadata"), the
@@ -283,7 +283,7 @@
Git repository.
</para></listitem>
<listitem><para id='oe-core'>
- <emphasis>OpenEmbedded Core (OE-Core):</emphasis>
+ <emphasis>OpenEmbedded-Core (OE-Core):</emphasis>
OE-Core is metadata comprised of foundational recipes,
classes, and associated files that are meant to be
common among many different OpenEmbedded-derived systems,
@@ -329,10 +329,9 @@
<para>It is worth noting that the term "package" can,
in general, have subtle meanings.
For example, the packages referred to in the
- "<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Build Host Packages</ulink>"
- section in the Yocto Project Quick Start are compiled binaries
- that, when installed, add functionality to your Linux
- distribution.</para>
+ "<link linkend='required-packages-for-the-build-host'>Required Packages for the Build Host</link>"
+ section are compiled binaries that, when installed, add
+ functionality to your Linux distribution.</para>
<para>Another point worth noting is that historically within
the Yocto Project, recipes were referred to as packages - thus,
@@ -471,8 +470,8 @@
<para>For more information on concepts related to Git
repositories, branches, and tags, see the
- "<ulink url='&YOCTO_DOCS_GS_URL;#repositories-tags-and-branches'>Repositories, Tags, and Branches</ulink>"
- section in the Getting Started With Yocto Project Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#repositories-tags-and-branches'>Repositories, Tags, and Branches</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para></listitem>
<listitem><para><emphasis>Task:</emphasis>
A unit of execution for BitBake (e.g.
@@ -487,7 +486,7 @@
The interface enables you to configure and run your builds.
Information about builds is collected and stored in a database.
For information on Toaster, see the
- <ulink url='&YOCTO_DOCS_TOAST_URL;'>Yocto Project Toaster Manual</ulink>.
+ <ulink url='&YOCTO_DOCS_TOAST_URL;'>Toaster User Manual</ulink>.
</para></listitem>
<listitem><para>
<emphasis>Upstream:</emphasis>
diff --git a/documentation/ref-manual/ref-variables.xml b/documentation/ref-manual/ref-variables.xml
index 7ba1c576f64..05487cf83f6 100644
--- a/documentation/ref-manual/ref-variables.xml
+++ b/documentation/ref-manual/ref-variables.xml
@@ -254,13 +254,14 @@
<glossentry id='var-APPEND'><glossterm>APPEND</glossterm>
<info>
- APPEND[doc] = "An override list of append strings for each LABEL."
+ APPEND[doc] = "An override list of append strings for target specified using LABELS."
</info>
<glossdef>
<para role="glossdeffirst">
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
- An override list of append strings for each
- <link linkend='var-LABELS'><filename>LABEL</filename></link>.
+ An override list of append strings for each target
+ specified with
+ <link linkend='var-LABELS'><filename>LABELS</filename></link>.
</para>
<para>
@@ -355,7 +356,7 @@
</para>
<para>
- In OpenEmbedded Core, <filename>ASSUME_PROVIDED</filename>
+ In OpenEmbedded-Core, <filename>ASSUME_PROVIDED</filename>
mostly specifies native tools that should not be built.
An example is <filename>git-native</filename>, which when
specified, allows for the Git binary from the host to be
@@ -776,10 +777,9 @@
WARN: Issue a warning but continue the
build when a threshold is broken.
Subsequent warnings are issued as
- defined by the
- <link linkend='var-BB_DISKMON_WARNINTERVAL'>BB_DISKMON_WARNINTERVAL</link> variable,
- which must be defined in the
- conf/local.conf file.
+ defined by the BB_DISKMON_WARNINTERVAL
+ variable, which must be defined in
+ the conf/local.conf file.
<replaceable>dir</replaceable> is:
Any directory you choose. You can specify one or
@@ -972,7 +972,7 @@
<para>
For more information on speeding up builds, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#speeding-up-the-build'>Speeding Up the Build</ulink>"
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#speeding-up-a-build'>Speeding Up a Build</ulink>"
section in the Yocto Project Development Tasks Manual.
</para>
</glossdef>
@@ -1274,8 +1274,8 @@
The expressions are compared against the full paths to
the files.
For complete syntax information, see Python's
- documentation at
- <ulink url='http://docs.python.org/release/2.3/lib/re-syntax.html'></ulink>.
+ documentation for the appropriate release at
+ <ulink url='http://docs.python.org/release/'></ulink>.
</para>
<para>
@@ -1336,7 +1336,7 @@
<filename>BBMULTICONFIG</filename> in an environment that
supports building targets with multiple configurations,
see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#platdev-building-targets-with-multiple-configurations'>Building Targets with Multiple Configurations</ulink>"
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-building-images-for-multiple-targets-using-multiple-configurations'>Building Images for Multiple Targets Using Multiple Configurations</ulink>"
section in the Yocto Project Development Tasks Manual.
</para>
</glossdef>
@@ -1871,7 +1871,7 @@
<para>
Git requires that the value you provide for the
<filename>BUILDHISTORY_COMMIT_AUTHOR</filename> variable
- takes the form of "name &lt;email@host&gt;".
+ takes the form of "name <replaceable>email@host</replaceable>".
Providing an email address or host that is not valid does
not produce an error.
</para>
@@ -1928,7 +1928,7 @@
</para>
<para>
- You can specify three features in the form of a
+ You can specify these features in the form of a
space-separated list:
<itemizedlist>
<listitem><para><emphasis>image:</emphasis>
@@ -1943,12 +1943,20 @@
Analysis of the contents of the software
development kit (SDK).
</para></listitem>
+ <listitem><para><emphasis>task:</emphasis>
+ Save output file signatures for
+ <ulink url='&YOCTO_DOCS_OM_URL;#shared-state-cache'>shared state</ulink>
+ (sstate) tasks.
+ This saves one file per task and lists the SHA-256
+ checksums for each file staged (i.e. the output of
+ the task).
+ </para></listitem>
</itemizedlist>
</para>
<para>
By default, the <filename>buildhistory</filename> class
- enables all three features:
+ enables the following features:
<literallayout class='monospaced'>
BUILDHISTORY_FEATURES ?= "image package sdk"
</literallayout>
@@ -2286,13 +2294,6 @@
level, in case the hardware supports Bluetooth but you
do not ever intend to use it.
</para>
-
- <para>
- For more information, see the
- <link linkend='var-MACHINE_FEATURES'><filename>MACHINE_FEATURES</filename></link>
- and <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
- variables.
- </para>
</glossdef>
</glossentry>
@@ -2806,13 +2807,13 @@
<glossentry id='var-COREBASE'><glossterm>COREBASE</glossterm>
<info>
- COREBASE[doc] = "Specifies the parent directory of the OpenEmbedded Core Metadata layer (i.e. meta)."
+ COREBASE[doc] = "Specifies the parent directory of the OpenEmbedded-Core Metadata layer (i.e. meta)."
</info>
<glossdef>
<para role="glossdeffirst">
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
- Specifies the parent directory of the OpenEmbedded
- Core Metadata layer (i.e. <filename>meta</filename>).
+ Specifies the parent directory of the OpenEmbedded-Core
+ Metadata layer (i.e. <filename>meta</filename>).
</para>
<para>
@@ -3012,12 +3013,12 @@
task.
This location defaults to:
<literallayout class='monospaced'>
- ${<link linkend='var-WORKDIR'>WORKDIR</link>}/image
+ ${WORKDIR}/image
</literallayout>
<note><title>Caution</title>
Tasks that read from or write to this directory should
run under
- <ulink url='&YOCTO_DOCS_CM_URL;#fakeroot-and-pseudo'>fakeroot</ulink>.
+ <ulink url='&YOCTO_DOCS_OM_URL;#fakeroot-and-pseudo'>fakeroot</ulink>.
</note>
</para>
</glossdef>
@@ -3264,10 +3265,10 @@
add any runtime dependencies between the
packages produced by the two recipes.
However, as explained in the
- "<ulink url='&YOCTO_DOCS_CM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
- section in the Yocto Project Concepts Manual,
- runtime dependencies will often be
- added automatically, meaning
+ "<ulink url='&YOCTO_DOCS_OM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
+ section in the Yocto Project Overview and
+ Concepts Manual, runtime dependencies will
+ often be added automatically, meaning
<filename>DEPENDS</filename> alone is
sufficient for most recipes.
</para></listitem>
@@ -3329,11 +3330,12 @@
section.
For more detail on the contents of the
<filename>deploy</filename> directory, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#images-dev-environment'>Images</ulink>",
- "<ulink url='&YOCTO_DOCS_CM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>",
+ "<ulink url='&YOCTO_DOCS_OM_URL;#images-dev-environment'>Images</ulink>",
+ "<ulink url='&YOCTO_DOCS_OM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>",
and
- "<ulink url='&YOCTO_DOCS_CM_URL;#sdk-dev-environment'>Application Development SDK</ulink>"
- sections all in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#sdk-dev-environment'>Application Development SDK</ulink>"
+ sections all in the Yocto Project Overview and Concepts
+ Manual.
</para>
</glossdef>
</glossentry>
@@ -3372,8 +3374,8 @@
<link linkend='ref-tasks-package_write_deb'><filename>do_package_write_deb</filename></link>
task writes Debian packages into the appropriate folder.
For more information on how packaging works, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
</glossdef>
</glossentry>
@@ -3402,10 +3404,11 @@
section.
For more detail on the contents of the
<filename>deploy</filename> directory, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#images-dev-environment'>Images</ulink>"
+ "<ulink url='&YOCTO_DOCS_OM_URL;#images-dev-environment'>Images</ulink>"
and
- "<ulink url='&YOCTO_DOCS_CM_URL;#sdk-dev-environment'>Application Development SDK</ulink>"
- sections both in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#sdk-dev-environment'>Application Development SDK</ulink>"
+ sections both in the Yocto Project Overview and Concepts
+ Manual.
</para>
</glossdef>
</glossentry>
@@ -3443,8 +3446,8 @@
<link linkend='ref-tasks-package_write_ipk'><filename>do_package_write_ipk</filename></link>
task writes IPK packages into the appropriate folder.
For more information on how packaging works, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
</glossdef>
</glossentry>
@@ -3482,8 +3485,8 @@
<link linkend='ref-tasks-package_write_rpm'><filename>do_package_write_rpm</filename></link>
task writes RPM packages into the appropriate folder.
For more information on how packaging works, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
</glossdef>
</glossentry>
@@ -3521,8 +3524,8 @@
<link linkend='ref-tasks-package_write_tar'><filename>do_package_write_tar</filename></link>
task writes TAR packages into the appropriate folder.
For more information on how packaging works, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#package-feeds-dev-environment'>Package Feeds</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
</glossdef>
</glossentry>
@@ -3633,10 +3636,17 @@
<para role="glossdeffirst">
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
The short name of the distribution.
- This variable corresponds to a distribution
- configuration file whose root name is the same as the
- variable's argument and whose filename extension is
- <filename>.conf</filename>.
+ For information on the long name of the distribution, see
+ the
+ <link linkend='var-DISTRO_NAME'><filename>DISTRO_NAME</filename></link>
+ variable.
+ </para>
+
+ <para>
+ The <filename>DISTRO</filename> variable corresponds to a
+ distribution configuration file whose root name is the
+ same as the variable's argument and whose filename
+ extension is <filename>.conf</filename>.
For example, the distribution configuration file for the
Poky distribution is named <filename>poky.conf</filename>
and resides in the
@@ -3661,9 +3671,9 @@
The value for <filename>DISTRO</filename> must not contain
spaces, and is typically all lower-case.
<note>
- If the <filename>DISTRO</filename> variable is blank, a set
- of default configurations are used, which are specified
- within
+ If the <filename>DISTRO</filename> variable is blank,
+ a set of default configurations are used, which are
+ specified within
<filename>meta/conf/distro/defaultsetup.conf</filename>
also in the Source Directory.
</note>
@@ -3774,7 +3784,7 @@
It is not intended to be user-configurable.
It is best to just reference the variable to see which distro features are
being backfilled for all distro configurations.
- See the <link linkend='ref-features-backfill'>Feature backfilling</link> section for
+ See the <link linkend='ref-features-backfill'>Feature Backfilling</link> section for
more information.
</para>
</glossdef>
@@ -3928,6 +3938,46 @@
<para role="glossdeffirst">
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
The long name of the distribution.
+ For information on the short name of the distribution, see
+ the
+ <link linkend='var-DISTRO'><filename>DISTRO</filename></link>
+ variable.
+ </para>
+
+ <para>
+ The <filename>DISTRO_NAME</filename> variable corresponds
+ to a distribution configuration file whose root name is the
+ same as the variable's argument and whose filename
+ extension is <filename>.conf</filename>.
+ For example, the distribution configuration file for the
+ Poky distribution is named <filename>poky.conf</filename>
+ and resides in the
+ <filename>meta-poky/conf/distro</filename> directory of
+ the
+ <link linkend='source-directory'>Source Directory</link>.
+ </para>
+
+ <para>
+ Within that <filename>poky.conf</filename> file, the
+ <filename>DISTRO_NAME</filename> variable is set as
+ follows:
+ <literallayout class='monospaced'>
+ DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
+ </literallayout>
+ </para>
+
+ <para>
+ Distribution configuration files are located in a
+ <filename>conf/distro</filename> directory within the
+ <link linkend='metadata'>Metadata</link>
+ that contains the distribution configuration.
+ <note>
+ If the <filename>DISTRO_NAME</filename> variable is
+ blank, a set of default configurations are used, which
+ are specified within
+ <filename>meta/conf/distro/defaultsetup.conf</filename>
+ also in the Source Directory.
+ </note>
</para>
</glossdef>
</glossentry>
@@ -4462,7 +4512,7 @@
<glossentry id='var-EXTRA_IMAGECMD'><glossterm>EXTRA_IMAGECMD</glossterm>
<info>
- EXTRA_IMAGECMD[doc] = "Specifies additional options for the image creation command that has been specified in IMAGE_CMD. When setting this variable, you should use an override for the associated type."
+ EXTRA_IMAGECMD[doc] = "Specifies additional options for the image creation command that has been specified in IMAGE_CMD. When setting this variable, you should use an override for the associated image type."
</info>
<glossdef>
<para role="glossdeffirst">
@@ -4470,8 +4520,8 @@
Specifies additional options for the image
creation command that has been specified in
<link linkend='var-IMAGE_CMD'><filename>IMAGE_CMD</filename></link>.
- When setting this variable, you should
- use an override for the associated type.
+ When setting this variable, use an override for the
+ associated image type.
Here is an example:
<literallayout class='monospaced'>
EXTRA_IMAGECMD_ext3 ?= "-i 4096"
@@ -4863,7 +4913,7 @@
The previous statement appears in the
<filename>linux-yocto-dev.bbappend</filename> file, which
is found in the Yocto Project
- <ulink url='&YOCTO_DOCS_GS_URL;#source-repositories'>Source Repositories</ulink>
+ <ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>
in
<filename>meta-intel/common/recipes-kernel/linux</filename>.
Here, the machine override is a special
@@ -4897,7 +4947,7 @@
<link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>.
You can find more information on how overrides are handled
in the
- <ulink url='&YOCTO_DOCS_BB_URL;'>BitBake Manual</ulink>.
+ <ulink url='&YOCTO_DOCS_BB_URL;'>BitBake User Manual</ulink>.
</para>
<para>
@@ -4929,7 +4979,9 @@
During the build process, BitBake searches each directory in
<filename>FILESPATH</filename> in the specified order when
looking for files and patches specified by each
- <filename>file://</filename> URI in a recipe.
+ <filename>file://</filename> URI in a recipe's
+ <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
+ statements.
</para>
<para>
@@ -4957,9 +5009,19 @@
If you want the build system to find patches or files
that reside with your append files, you need to extend
the <filename>FILESPATH</filename> variable by using
- the
- <link linkend='var-FILESEXTRAPATHS'><filename>FILESEXTRAPATHS</filename></link>
- variable.
+ the <filename>FILESEXTRAPATHS</filename> variable.
+ </para>
+
+ <para>
+ You can find out more about the patching process in the
+ "<ulink url='&YOCTO_DOCS_OM_URL;#patching-dev-environment'>Patching</ulink>"
+ section in the Yocto Project Overview and Concepts Manual
+ and the
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-patching-code'>Patching Code</ulink>"
+ section in the Yocto Project Development Tasks Manual.
+ See the
+ <link linkend='ref-tasks-patch'><filename>do_patch</filename></link>
+ task as well.
</para>
</glossdef>
</glossentry>
@@ -5483,7 +5545,7 @@
contamination.
Unlike
<link linkend='var-HOSTTOOLS'><filename>HOSTTOOLS</filename></link>,
- the OpenEmbedded build system does not produce and error
+ the OpenEmbedded build system does not produce an error
if a tool specified in the value of
<filename>HOSTTOOLS_NONFATAL</filename> is not found on the
build host.
@@ -5502,7 +5564,7 @@
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Specifies the name of the vendor.
<filename>HOST_VENDOR</filename> is normally the same as
- <link linkend='var-TARGET_PREFIX'><filename>TARGET_VENDOR</filename></link>.
+ <link linkend='var-TARGET_VENDOR'><filename>TARGET_VENDOR</filename></link>.
</para>
</glossdef>
</glossentry>
@@ -5720,18 +5782,17 @@
<glossentry id='var-IMAGE_BOOT_FILES'><glossterm>IMAGE_BOOT_FILES</glossterm>
<info>
- IMAGE_BOOT_FILES[doc] = "A space-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_BOOT_FILES[doc] = "A space-separated list of files from ${DEPLOY_DIR_IMAGE} to place in boot partition."
</info>
<glossdef>
<para role="glossdeffirst">
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
A space-separated list of files installed into the
- boot partition when preparing an image using the
- <filename>wic</filename> tool with the
- <filename>bootimg-partition</filename> source
+ boot partition when preparing an image using the Wic tool
+ with the <filename>bootimg-partition</filename> source
plugin.
- By default, the files are installed under
- the same name as the source files.
+ By default, the files are installed under the same name as
+ the source files.
To change the installed name, separate it from the
original name with a semi-colon (;).
Source files need to be located in
@@ -5747,9 +5808,8 @@
<para>
Alternatively, source files can be picked up using
a glob pattern.
- In this case, the destination file
- will have the same name as the base name of the source file
- path.
+ In this case, the destination file must have the same name
+ as the base name of the source file path.
To install files into a directory within the
target location, pass its name after a semi-colon
(;).
@@ -5765,6 +5825,15 @@
<filename>boot</filename> directory within the
target partition.
</para>
+
+ <para>
+ You can find information on how to use the Wic tool in the
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-partitioned-images-using-wic'>Creating Partitioned Images Using Wic</ulink>"
+ section of the Yocto Project Development Tasks Manual.
+ Reference material for Wic is located in the
+ "<ulink url='&YOCTO_DOCS_REF_URL;#ref-kickstart'>OpenEmbedded Kickstart (.wks) Reference</ulink>"
+ chapter.
+ </para>
</glossdef>
</glossentry>
@@ -5949,19 +6018,19 @@
image through the
<link linkend='ref-classes-image'><filename>image</filename></link>
class.
- You should use the <filename>IMAGE_INSTALL</filename>
- variable with care to avoid ordering issues.
+ Use the <filename>IMAGE_INSTALL</filename> variable with
+ care to avoid ordering issues.
</para>
<para>
Image recipes set <filename>IMAGE_INSTALL</filename>
to specify the packages to install into an image through
<filename>image.bbclass</filename>.
- Additionally, "helper" classes exist, such as the
- <link linkend='ref-classes-core-image'><filename>core-image</filename></link>,
- class that can take
+ Additionally, "helper" classes such as the
+ <link linkend='ref-classes-core-image'><filename>core-image</filename></link>
+ class exist that can take lists used with
<filename><link linkend='var-IMAGE_FEATURES'>IMAGE_FEATURES</link></filename>
- lists and turn these into auto-generated entries in
+ and turn them into auto-generated entries in
<filename>IMAGE_INSTALL</filename> in addition to its
default contents.
</para>
@@ -6097,8 +6166,8 @@
variables.
You can find information on how the image
is created in the
- "<ulink url='&YOCTO_DOCS_CM_URL;#image-generation-dev-environment'>Image Generation</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#image-generation-dev-environment'>Image Generation</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
</glossdef>
</glossentry>
@@ -6604,7 +6673,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
For more information on <filename>INHERIT</filename>, see
the
"<ulink url="&YOCTO_DOCS_BB_URL;#inherit-configuration-directive"><filename>INHERIT</filename> Configuration Directive</ulink>"
- section in the Yocto Project Bitbake User Manual.
+ section in the Bitbake User Manual.
</para>
</glossdef>
</glossentry>
@@ -6778,8 +6847,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<para>
You can also find more information by referencing the
<filename>meta-poky/conf/local.conf.sample.extended</filename>
- configuration file in the
- <link linkend='source-directory'>Source Directory</link>,
+ configuration file in the Source Directory,
the
<link linkend='ref-classes-image'><filename>image</filename></link>
class, and the
@@ -6845,8 +6913,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<para>
Setting the variable to "1" in a configuration file causes the
OpenEmbedded build system to generate a kernel image with the
- initramfs specified in
- <link linkend='var-INITRAMFS_IMAGE'><filename>INITRAMFS_IMAGE</filename></link>
+ initramfs specified in <filename>INITRAMFS_IMAGE</filename>
bundled within:
<literallayout class='monospaced'>
INITRAMFS_IMAGE_BUNDLE = "1"
@@ -7228,7 +7295,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
For more information on how to use the
<filename>KBUILD_DEFCONFIG</filename> variable, see the
"<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#using-an-in-tree-defconfig-file'>Using an "In-Tree" <filename>defconfig</filename> File</ulink>"
- section.
+ section in the Yocto Project Linux Kernel Development
+ Manual.
</para>
</glossdef>
</glossentry>
@@ -7531,7 +7599,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
class.
For information on how this variable is used, see the
"<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#incorporating-out-of-tree-modules'>Incorporating Out-of-Tree Modules</ulink>"
- section.
+ section in the Yocto Project Linux Kernel Development
+ Manual.
</para>
<para>
@@ -7562,7 +7631,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
class.
For information on how this variable is used, see the
"<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#incorporating-out-of-tree-modules'>Incorporating Out-of-Tree Modules</ulink>"
- section.
+ section in the Yocto Project Linux Kernel Development
+ Manual.
</para>
<para>
@@ -7812,6 +7882,53 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
</glossdef>
</glossentry>
+ <glossentry id='var-LAYERSERIES_COMPAT'><glossterm>LAYERSERIES_COMPAT</glossterm>
+ <info>
+ LAYERSERIES_COMPAT[doc] = "Lists the OpenEmbedded-Core versions for which a layer is compatible."
+ </info>
+ <glossdef>
+ <para role="glossdeffirst">
+<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+ Lists the versions of the
+ <link linkend='oe-core'>OpenEmbedded-Core</link> for which
+ a layer is compatible.
+ Using the <filename>LAYERSERIES_COMPAT</filename> variable
+ allows the layer maintainer to indicate which combinations
+ of the layer and OE-Core can be expected to work.
+ The variable gives the system a way to detect when a layer
+ has not been tested with new releases of OE-Core (e.g.
+ the layer is not maintained).
+ </para>
+
+ <para>
+ To specify the OE-Core versions for which a layer is
+ compatible, use this variable in your layer's
+ <filename>conf/layer.conf</filename> configuration file.
+ For the list, use the Yocto Project
+ <ulink url='https://wiki.yoctoproject.org/wiki/Releases'>Release Name</ulink>
+ (e.g. &DISTRO_NAME_NO_CAP;).
+ To specify multiple OE-Core versions for the layer,
+ use a space-separated list:
+ <literallayout class='monospaced'>
+ LAYERSERIES_COMPAT_<replaceable>layer_root_name</replaceable> = "&DISTRO_NAME_NO_CAP; &DISTRO_NAME_NO_CAP_MINUS_ONE;"
+ </literallayout>
+ <note>
+ Setting <filename>LAYERSERIES_COMPAT</filename> is
+ required by the Yocto Project Compatible version 2
+ standard.
+ The OpenEmbedded build system produces a warning if
+ the variable is not set for any given layer.
+ </note>
+ </para>
+
+ <para>
+ See the
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-your-own-layer'>Creating Your Own Layer</ulink>"
+ section in the Yocto Project Development Tasks Manual.
+ </para>
+ </glossdef>
+ </glossentry>
+
<glossentry id='var-LAYERVERSION'><glossterm>LAYERVERSION</glossterm>
<info>
LAYERVERSION[doc] = "Optionally specifies the version of a layer as a single number. This variable is used in the conf/layer.conf file and must be suffixed with the name of the specific layer."
@@ -7924,8 +8041,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<link linkend='var-LICENSE'><filename>LICENSE</filename></link>
is set to "CLOSED").</para>
<para>For more information, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#usingpoky-configuring-LIC_FILES_CHKSUM'>Tracking License Changes</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#usingpoky-configuring-LIC_FILES_CHKSUM'>Tracking License Changes</ulink>"
+ section in the Yocto Project Development Tasks Manual.
</para>
</glossdef>
</glossentry>
@@ -8060,8 +8177,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
require additional licenses in order to be used in a
commercial product.
For more information, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</ulink>"
+ section in the Yocto Project Development Tasks Manual.
</para>
</glossdef>
</glossentry>
@@ -8080,8 +8197,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
This practice is otherwise known as "whitelisting"
license flags.
For more information, see the
- <ulink url='&YOCTO_DOCS_CM_URL;#enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</ulink>"
+ section in the Yocto Project Development Tasks Manual.
</para>
</glossdef>
</glossentry>
@@ -8537,7 +8654,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
It is not intended to be user-configurable.
It is best to just reference the variable to see which machine features are
being backfilled for all machine configurations.
- See the "<link linkend='ref-features-backfill'>Feature backfilling</link>" section for
+ See the "<link linkend='ref-features-backfill'>Feature Backfilling</link>" section for
more information.
</para>
</glossdef>
@@ -8555,7 +8672,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
that should not be backfilled (i.e. added to
<filename><link linkend='var-MACHINE_FEATURES'>MACHINE_FEATURES</link></filename>)
during the build.
- See the "<link linkend='ref-features-backfill'>Feature backfilling</link>" section for
+ See the "<link linkend='ref-features-backfill'>Feature Backfilling</link>" section for
more information.
</para>
</glossdef>
@@ -8941,6 +9058,40 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
</glossdef>
</glossentry>
+ <glossentry id='var-NO_GENERIC_LICENSE'><glossterm>NO_GENERIC_LICENSE</glossterm>
+ <info>
+ NO_GENERIC_LICENSE[doc] = "Used to allow copying a license that does not exist in common licenses."
+ </info>
+ <glossdef>
+ <para role="glossdeffirst">
+<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+ Avoids QA errors when you use a non-common, non-CLOSED
+ license in a recipe.
+ Packages exist, such as the linux-firmware package, with
+ many licenses that are not in any way common.
+ Also, new licenses are added occasionally to avoid
+ introducing a lot of common license files, which are only
+ applicable to a specific package.
+ <filename>NO_GENERIC_LICENSE</filename> is used to allow
+ copying a license that does not exist in common licenses.
+ </para>
+
+ <para>
+ The following example shows how to add
+ <filename>NO_GENERIC_LICENSE</filename> to a recipe:
+ <literallayout class='monospaced'>
+ NO_GENERIC_LICENSE[<replaceable>license_name</replaceable>] = "<replaceable>license_file_in_fetched_source</replaceable>"
+ </literallayout>
+ The following is an example that uses the
+ <filename>LICENSE.Abilis.txt</filename> file as the license
+ from the fetched source:
+ <literallayout class='monospaced'>
+ NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENSE.Abilis.txt"
+ </literallayout>
+ </para>
+ </glossdef>
+ </glossentry>
+
<glossentry id='var-NO_RECOMMENDATIONS'><glossterm>NO_RECOMMENDATIONS</glossterm>
<info>
NO_RECOMMENDATIONS[doc] = "When set to '1', no recommended packages will be installed. Some recommended packages might be required for certain system functionality, such as kernel-modules. It is up to the user to add packages to IMAGE_INSTALL as needed."
@@ -9119,8 +9270,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
for details on how this class applies these additional
sed command arguments.
For general information on the
- <filename>binconfig.bbclass</filename> class, see the
- "<link linkend='ref-classes-binconfig'>Binary Configuration Scripts - <filename>binconfig.bbclass</filename></link>"
+ <filename>binconfig</filename> class, see the
+ "<link linkend='ref-classes-binconfig'><filename>binconfig.bbclass</filename></link>"
section.
</para>
</glossdef>
@@ -9340,11 +9491,17 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
By default, the value of this variable is set to
<link linkend='var-TUNE_PKGARCH'><filename>TUNE_PKGARCH</filename></link>
when building for the target,
- <filename>BUILD_ARCH</filename> when building for the
- build host and "${SDK_ARCH}-${SDKPKGSUFFIX}" when building
+ <link linkend='var-BUILD_ARCH'><filename>BUILD_ARCH</filename></link>
+ when building for the
+ build host, and "${SDK_ARCH}-${SDKPKGSUFFIX}" when building
for the SDK.
+ <note>
+ See
+ <link linkend='var-SDK_ARCH'><filename>SDK_ARCH</filename></link>
+ for more information.
+ </note>
However, if your recipe's output packages are built
- specific to the target machine rather than general for
+ specific to the target machine rather than generally for
the architecture of the machine, you should set
<filename>PACKAGE_ARCH</filename> to the value of
<link linkend='var-MACHINE_ARCH'><filename>MACHINE_ARCH</filename></link>
@@ -9415,9 +9572,10 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
</literallayout>
<note><title>Warning</title>
While it is a legal option, the
- <filename>package_tar</filename> class is broken
- and is not supported.
- It is recommended that you do not use it.
+ <filename>package_tar</filename> class has limited
+ functionality due to no support for package
+ dependencies by that backend.
+ Therefore, it is recommended that you do not use it.
</note>
The build system uses only the first argument in the list
as the package manager when creating your image or SDK.
@@ -9840,7 +9998,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
execute at rootfs creation time rather than on the
target but depends on a native tool in order to execute,
you need to list the tools in
- <filename>PACKAGE_WRITE_DEPENDS</filename>.
+ <filename>PACKAGE_WRITE_DEPS</filename>.
</para>
<para>
@@ -9924,7 +10082,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
In this case, <filename>--with-croco</filename> is
added to the configure script argument list and
<filename>libcroco</filename> is added to
- <filename><link linkend='var-DEPENDS'>DEPENDS</link></filename>.
+ <filename>DEPENDS</filename>.
On the other hand, if the feature is disabled say through
a <filename>.bbappend</filename> file in another layer, then
the second argument <filename>--without-croco</filename> is
@@ -9996,8 +10154,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
and
<link linkend='ref-classes-cmake'><filename>cmake</filename></link>
use <filename>PACKAGECONFIG_CONFARGS</filename> to pass
- <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>
- options to <filename>configure</filename> and
+ <filename>PACKAGECONFIG</filename> options to
+ <filename>configure</filename> and
<filename>cmake</filename>, respectively.
If you are using
<filename>PACKAGECONFIG</filename> but not a class that
@@ -10005,12 +10163,6 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
you need to use
<filename>PACKAGECONFIG_CONFARGS</filename> appropriately.
</para>
-
- <para>
- For additional information, see the
- <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>
- variable.
- </para>
</glossdef>
</glossentry>
@@ -10192,7 +10344,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<para>
For more information on speeding up builds, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#speeding-up-the-build'>Speeding Up the Build</ulink>"
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#speeding-up-a-build'>Speeding Up a Build</ulink>"
section in the Yocto Project Development Tasks Manual.
</para>
</glossdef>
@@ -10434,10 +10586,14 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
${STAGING_DIR_HOST}/pkgdata
</literallayout>
For examples of how this data is used, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
- section in the Yocto Project Concepts Manual and the
+ "<ulink url='&YOCTO_DOCS_OM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
+ section in the Yocto Project Overview and Concepts Manual
+ and the
"<ulink url='&YOCTO_DOCS_DEV_URL;#viewing-package-information-with-oe-pkgdata-util'>Viewing Package Information with <filename>oe-pkgdata-util</filename></ulink>"
section in the Yocto Project Development Tasks Manual.
+ For more information on the shared, global-state directory,
+ see
+ <link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>.
</para>
</glossdef>
</glossentry>
@@ -10586,17 +10742,16 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
to build.
This variable works in conjunction with the
<link linkend='ref-classes-blacklist'><filename>blacklist</filename></link>
- class, which the recipe must inherit globally.
+ class, which is inherited globally.
</para>
<para>
- To prevent a recipe from being built, inherit the class
- globally and use the variable in your
+ To prevent a recipe from being built, use the
+ <filename>PNBLACKLIST</filename> variable in your
<filename>local.conf</filename> file.
Here is an example that prevents
<filename>myrecipe</filename> from being built:
<literallayout class='monospaced'>
- INHERIT += "blacklist"
PNBLACKLIST[myrecipe] = "Not supported by our organization."
</literallayout>
</para>
@@ -10681,11 +10836,11 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<filename>PR</filename> to know when to rebuild a
recipe.
The build system uses the task
- <ulink url='&YOCTO_DOCS_CM_URL;#overview-checksums'>input checksums</ulink>
+ <ulink url='&YOCTO_DOCS_OM_URL;#overview-checksums'>input checksums</ulink>
along with the
<link linkend='structure-build-tmp-stamps'>stamp</link>
and
- <ulink url='&YOCTO_DOCS_CM_URL;#shared-state-cache'>shared state cache</ulink>
+ <ulink url='&YOCTO_DOCS_OM_URL;#shared-state-cache'>shared state cache</ulink>
mechanisms.
</note>
The <filename>PR</filename> variable primarily becomes
@@ -10836,8 +10991,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
The <filename>_forcevariable</filename> override is
not handled specially.
This override only works because the default value of
- <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
- includes "forcevariable".
+ <filename>OVERRIDES</filename> includes
+ "forcevariable".
</note>
</para>
</glossdef>
@@ -10954,8 +11109,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<para>
For more information, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
</glossdef>
</glossentry>
@@ -11000,8 +11155,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
Recipes that provide the functionality in question list the
virtual target in <filename>PROVIDES</filename>.
Recipes that depend on the functionality in question can
- include the virtual target in
- <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
+ include the virtual target in <filename>DEPENDS</filename>
to leave the choice of provider open.
</para>
@@ -11141,8 +11295,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
</para>
<para>
- Recipes that inherit the
- <link linkend='ref-classes-distutils'><filename>distutils</filename></link>
+ Recipes that inherit the <filename>distutils</filename>
class during cross-builds also use this variable to
locate the headers and libraries of the appropriate Python
that the extension is targeting.
@@ -11271,8 +11424,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
Therefore, most recipes do not need to set
<filename>RDEPENDS</filename>.
For more information, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
<para>
@@ -11711,9 +11864,9 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
In the example, the package name
(<filename>${<link linkend='var-PN'>PN</link>}-dev</filename>)
must appear as it would in the
- <filename><link linkend='var-PACKAGES'>PACKAGES</link></filename>
- namespace before any renaming of the output package by
- classes such as <filename>debian.bbclass</filename>.
+ <filename>PACKAGES</filename> namespace before any renaming
+ of the output package by classes such as
+ <filename>debian.bbclass</filename>.
</para>
<para>
@@ -11947,11 +12100,11 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
The directory set up and used by the
<link linkend='ref-classes-populate-sdk'><filename>populate_sdk_base</filename></link>
- to which the SDK is deployed.
+ class to which the SDK is deployed.
The <filename>populate_sdk_base</filename> class defines
<filename>SDK_DEPLOY</filename> as follows:
<literallayout class='monospaced'>
- SDK_DEPLOY = "${<link linkend='var-TMPDIR'>TMPDIR</link>}/deploy/sdk"
+ SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
</literallayout>
</para>
</glossdef>
@@ -11970,7 +12123,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
class defines the variable as follows:
<literallayout class='monospaced'>
- SDK_DIR = "${<link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>}/sdk"
+ SDK_DIR = "${WORKDIR}/sdk"
</literallayout>
<note>
The <filename>SDK_DIR</filename> directory is a
@@ -12016,7 +12169,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
The manifest file for the host part of the SDK.
This file lists all the installed packages that make up
- the host part of SDK.
+ the host part of the SDK.
The file contains package information on a line-per-package
basis as follows:
<literallayout class='monospaced'>
@@ -12102,13 +12255,26 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
A list of classes to remove from the
<link linkend='var-INHERIT'><filename>INHERIT</filename></link>
value globally within the extensible SDK configuration.
- The default value is "buildhistory icecc".
+ The
+ <link linkend='ref-classes-populate-sdk-*'><filename>populate-sdk-ext</filename></link>
+ class sets the default value:
+ <literallayout class='monospaced'>
+ SDK_INHERIT_BLACKLIST ?= "buildhistory icecc"
+ </literallayout>
</para>
<para>
Some classes are not generally applicable within
- the extensible SDK context and you can use this variable
- to disable them.
+ the extensible SDK context.
+ You can use this variable to disable those classes.
+ </para>
+
+ <para>
+ For additional information on how to customize the
+ extensible SDK's configuration, see the
+ "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-configuring-the-extensible-sdk'>Configuring the Extensible SDK</ulink>"
+ section in the Yocto Project Application Development and
+ the Extensible Software Development Kit (eSDK) manual.
</para>
</glossdef>
</glossentry>
@@ -12120,12 +12286,40 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<glossdef>
<para role="glossdeffirst">
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
- A list of variables not allowed through from the build
- system configuration into the extensible SDK configuration.
+ A list of variables not allowed through from the
+ OpenEmbedded build system configuration into the extensible
+ SDK configuration.
Usually, these are variables that are specific to the
machine on which the build system is running and thus
would be potentially problematic within the extensible SDK.
+ </para>
+
+ <para>By default,
+ <filename>SDK_LOCAL_CONF_BLACKLIST</filename> is set in the
+ <link linkend='ref-classes-populate-sdk-*'><filename>populate-sdk-ext</filename></link>
+ class and excludes the following variables:
+ <literallayout class='monospaced'>
+ <link linkend='var-CONF_VERSION'>CONF_VERSION</link>
+ <link linkend='var-BB_NUMBER_THREADS'>BB_NUMBER_THREADS</link>
+ <ulink url='&YOCTO_DOCS_BB_URL;#var-BB_NUMBER_PARSE_THREADS'>BB_NUMBER_PARSE_THREADS</ulink>
+ <link linkend='var-PARALLEL_MAKE'>PARALLEL_MAKE</link>
+ <link linkend='var-PRSERV_HOST'>PRSERV_HOST</link>
+ <link linkend='var-SSTATE_MIRRORS'>SSTATE_MIRRORS</link>
+ <link linkend='var-DL_DIR'>DL_DIR</link>
+ <link linkend='var-SSTATE_DIR'>SSTATE_DIR</link>
+ <link linkend='var-TMPDIR'>TMPDIR</link>
+ <link linkend='var-BB_SERVER_TIMEOUT'>BB_SERVER_TIMEOUT</link>
+ </literallayout>
</para>
+
+ <para>
+ For additional information on how to customize the
+ extensible SDK's configuration, see the
+ "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-configuring-the-extensible-sdk'>Configuring the Extensible SDK</ulink>"
+ section in the Yocto Project Application Development and
+ the Extensible Software Development Kit (eSDK) manual.
+ </para>
+
</glossdef>
</glossentry>
@@ -12136,8 +12330,16 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<glossdef>
<para role="glossdeffirst">
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
- A list of variables allowed through from the build system
- configuration into the extensible SDK configuration.
+ A list of variables allowed through from the OpenEmbedded
+ build system configuration into the extensible SDK
+ configuration.
+ By default, the list of variables is empty and is set in
+ the
+ <link linkend='ref-classes-populate-sdk-*'><filename>populate-sdk-ext</filename></link>
+ class.
+ </para>
+
+ <para>
This list overrides the variables specified using the
<link linkend='var-SDK_LOCAL_CONF_BLACKLIST'><filename>SDK_LOCAL_CONF_BLACKLIST</filename></link>
variable as well as any variables identified by automatic
@@ -12146,6 +12348,14 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
path and thus might not be valid on the system where the
SDK is installed.
</para>
+
+ <para>
+ For additional information on how to customize the
+ extensible SDK's configuration, see the
+ "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-configuring-the-extensible-sdk'>Configuring the Extensible SDK</ulink>"
+ section in the Yocto Project Application Development and
+ the Extensible Software Development Kit (eSDK) manual.
+ </para>
</glossdef>
</glossentry>
@@ -12200,13 +12410,16 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
class defines the variable as follows:
<literallayout class='monospaced'>
- SDK_OUTPUT = "${<link linkend='var-SDK_DIR'>SDK_DIR</link>}/image"
+ SDK_DIR = "${WORKDIR}/sdk"
+ SDK_OUTPUT = "${SDK_DIR}/image"
+ SDK_DEPLOY = "${DEPLOY_DIR}/sdk"
</literallayout>
<note>
The <filename>SDK_OUTPUT</filename> directory is a
temporary directory as it is part of
- <filename>WORKDIR</filename> by way of
- <filename>SDK_DIR</filename>.
+ <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>
+ by way of
+ <link linkend='var-SDK_DIR'><filename>SDK_DIR</filename></link>.
The final output directory is
<link linkend='var-SDK_DEPLOY'><filename>SDK_DEPLOY</filename></link>.
</note>
@@ -12386,22 +12599,33 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<glossentry id='var-SDK_TITLE'><glossterm>SDK_TITLE</glossterm>
<info>
- SDK_TITLE[doc] = "Specifies a title to be printed when running the SDK installer."
+ SDK_TITLE[doc] = "The title to be printed when running the SDK installer."
</info>
<glossdef>
<para role="glossdeffirst">
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
- Specifies a title to be printed when running the SDK
- installer.
- The <filename>SDK_TITLE</filename> variable defaults to
- "<replaceable>distro</replaceable> SDK" for the standard
- SDK and "<replaceable>distro</replaceable> Extensible SDK"
- for the extensible SDK, where
- <replaceable>distro</replaceable> is the first one of
+ The title to be printed when running the SDK installer.
+ By default, this title is based on the
<link linkend='var-DISTRO_NAME'><filename>DISTRO_NAME</filename></link>
or
<link linkend='var-DISTRO'><filename>DISTRO</filename></link>
- that is set in your configuration.
+ variable and is set in the
+ <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
+ class as follows:
+ <literallayout class='monospaced'>
+ SDK_TITLE ??= "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} SDK"
+ </literallayout>
+ For the default distribution "poky",
+ <filename>SDK_TITLE</filename> is set to
+ "Poky (Yocto Project Reference Distro)".
+ </para>
+
+ <para>
+ For information on how to change this default title,
+ see the
+ "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-changing-the-sdk-installer-title'>Changing the Extensible SDK Installer Title</ulink>"
+ section in the Yocto Project Application Development and
+ the Extensible Software Development Kit (eSDK) manual.
</para>
</glossdef>
</glossentry>
@@ -12460,6 +12684,36 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
</glossdef>
</glossentry>
+ <glossentry id='var-SDKEXTPATH'><glossterm>SDKEXTPATH</glossterm>
+ <info>
+ SDKEXTPATH[doc] = "The default installation directory for the extensible SDK."
+ </info>
+ <glossdef>
+ <para role="glossdeffirst">
+<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+ The default installation directory for the Extensible SDK.
+ By default, this directory is based on the
+ <link linkend='var-DISTRO'><filename>DISTRO</filename></link>
+ variable and is set in the
+ <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
+ class as follows:
+ <literallayout class='monospaced'>
+ SDKEXTPATH ??= "~/${@d.getVar('DISTRO')}_sdk"
+ </literallayout>
+ For the default distribution "poky", the
+ <filename>SDKEXTPATH</filename> is set to "poky_sdk".
+ </para>
+
+ <para>
+ For information on how to change this default directory,
+ see the
+ "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-changing-the-default-sdk-installation-directory'>Changing the Default SDK Installation Directory</ulink>"
+ section in the Yocto Project Application Development and
+ the Extensible Software Development Kit (eSDK) manual.
+ </para>
+ </glossdef>
+ </glossentry>
+
<glossentry id='var-SDKIMAGE_FEATURES'><glossterm>SDKIMAGE_FEATURES</glossterm>
<info>
SDKIMAGE_FEATURES[doc] = "Equivalent to IMAGE_FEATURES. However, this variable applies to the SDK generated from an image using the command 'bitbake -c populate_sdk imagename'."
@@ -12583,12 +12837,13 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<glossentry id='var-SERIAL_CONSOLE'><glossterm>SERIAL_CONSOLE</glossterm>
<info>
- SERIAL_CONSOLE[doc] = "The speed and device for the serial port used to attach the serial console. This variable is given to the kernel as the 'console' parameter. After booting occurs, getty is started on that port so remote login is possible."
+ SERIAL_CONSOLE[doc] = "Defines the serial consoles (TTYs) to enable using getty."
</info>
<glossdef>
<para role="glossdeffirst">
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
- Defines a serial console (TTY) to enable using getty.
+ Defines a serial console (TTY) to enable using
+ <ulink url='https://en.wikipedia.org/wiki/Getty_(Unix)'>getty</ulink>.
Provide a value that specifies the baud rate followed by
the TTY device name separated by a space.
You cannot specify more than one TTY device:
@@ -12613,7 +12868,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<glossdef>
<para role="glossdeffirst">
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
- Defines the serial consoles (TTYs) to enable using getty.
+ Defines a serial console (TTY) to enable using
+ <ulink url='https://en.wikipedia.org/wiki/Getty_(Unix)'>getty</ulink>.
Provide a value that specifies the baud rate followed by
the TTY device name separated by a semicolon.
Use spaces to separate multiple devices:
@@ -12667,8 +12923,25 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
</para>
<para>
- In this example, <filename>intone</filename> depends on
- <filename>mplayer2</filename>.
+ In the previous example, <filename>intone</filename>
+ depends on <filename>mplayer2</filename>.
+ </para>
+
+ <para>
+ You can use the special token <filename>"*"</filename> on
+ the left-hand side of the dependency to match all
+ recipes except the one on the right-hand side.
+ Here is an example:
+ <literallayout class='monospaced'>
+ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "*->quilt-native"
+ </literallayout>
+ </para>
+
+ <para>
+ In the previous example, all recipes except
+ <filename>quilt-native</filename> ignore task
+ signatures from the <filename>quilt-native</filename>
+ recipe when determining their task signatures.
</para>
<para>
@@ -12929,6 +13202,48 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
</glossdef>
</glossentry>
+ <glossentry id='var-SPL_BINARY'><glossterm>SPL_BINARY</glossterm>
+ <info>
+ SPL_BINARY[doc] = "The file type of the Secondary Program Loader (SPL)."
+ </info>
+ <glossdef>
+ <para role="glossdeffirst">
+<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+ The file type for the Secondary Program Loader (SPL).
+ Some devices use an SPL from which to boot (e.g. the
+ BeagleBone development board).
+ For such cases, you can declare the file type of the
+ SPL binary in the <filename>u-boot.inc</filename> include
+ file, which is used in the U-Boot recipe.
+ </para>
+
+ <para>
+ The SPL file type is set to "null" by default in the
+ <filename>u-boot.inc</filename> file as follows:
+ <literallayout class='monospaced'>
+ # 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}"
+ </literallayout>
+ The <filename>SPL_BINARY</filename> variable helps form
+ various <filename>SPL_*</filename> variables used by
+ the OpenEmbedded build system.
+ </para>
+
+ <para>
+ See the BeagleBone machine configuration example in the
+ "<ulink url='&YOCTO_DOCS_BSP_URL;#creating-a-new-bsp-layer-using-the-bitbake-layers-script'>Creating a new BSP Layer Using the <filename>bitbake-layers</filename> Script</ulink>"
+ section in the Yocto Project Board Support Package
+ Developer's Guide for additional information.
+ </para>
+ </glossdef>
+ </glossentry>
+
<glossentry id='var-SRC_URI'><glossterm>SRC_URI</glossterm>
<info>
SRC_URI[doc] = "The list of source files - local or remote. This variable tells the OpenEmbedded build system what bits to pull in for the build and how to pull them in."
@@ -12963,7 +13278,9 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
Fetches files, which are usually files shipped with
the
<link linkend='metadata'>Metadata</link>,
- from the local machine.
+ from the local machine (e.g.
+ <ulink url='&YOCTO_DOCS_OM_URL;#patching-dev-environment'>patch</ulink>
+ files).
The path is relative to the
<link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>
variable.
@@ -13092,14 +13409,14 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
</para></listitem>
<listitem><para><emphasis><filename>subdir</filename> -</emphasis> Places the file
(or extracts its contents) into the specified
- subdirectory of <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>
+ subdirectory of <filename>WORKDIR</filename>
when the local (<filename>file://</filename>)
fetcher is used.
</para></listitem>
<listitem><para><emphasis><filename>localdir</filename> -</emphasis> Places the file
(or extracts its contents) into the specified
- subdirectory of <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>
- when the CVS fetcher is used.
+ subdirectory of <filename>WORKDIR</filename> when
+ the CVS fetcher is used.
</para></listitem>
<listitem><para><emphasis><filename>subpath</filename> -</emphasis>
Limits the checkout to a specific subpath of the
@@ -13441,27 +13758,27 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<glossentry id='var-STAGING_DIR'><glossterm>STAGING_DIR</glossterm>
<info>
- STAGING_DIR[doc] = "Specifies the path to the top-level sysroots directory (i.e. ${TMPDIR}/sysroots)."
+ STAGING_DIR[doc] = "Helps construct the recipe-sysroots directory, which is used during packaging."
</info>
<glossdef>
<para role="glossdeffirst">
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
- Specifies the path to the top-level sysroots directory
- (i.e.
- <filename>${</filename><link linkend='var-TMPDIR'><filename>TMPDIR</filename></link><filename>}/sysroots</filename>).
+ Helps construct the <filename>recipe-sysroots</filename>
+ directory, which is used during packaging.
</para>
<para>
- <filename>STAGING_DIR</filename> contains the directories
- that are staged into the sysroot by the
+ For information on how staging for recipe-specific
+ sysroots occurs, see the
<link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
- task.
- See the
- <link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS</filename></link>
- variable and the
+ task, the
"<ulink url='&YOCTO_DOCS_DEV_URL;#new-sharing-files-between-recipes'>Sharing Files Between Recipes</ulink>"
- section in the Yocto Project Development Tasks Manual
- for more information.
+ section in the Yocto Project Development Tasks Manual, the
+ "<ulink url='&YOCTO_DOCS_OM_URL;#configuration-compilation-and-staging-dev-environment'>Configuration, Compilation, and Staging</ulink>"
+ section in the Yocto Project Overview and Concepts Manual,
+ and the
+ <link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS</filename></link>
+ variable.
<note>
Recipes should never write files directly under
the <filename>STAGING_DIR</filename> directory because
@@ -13486,11 +13803,12 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<para role="glossdeffirst">
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Specifies the path to the sysroot directory for the system
- that the component is built to run on (the system that hosts
- the component).
- For most recipes, this sysroot is the one that the recipe's
+ on which the component is built to run (the system that
+ hosts the component).
+ For most recipes, this sysroot is the one in which that
+ recipe's
<link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
- task copies files into.
+ task copies files.
Exceptions include <filename>-native</filename> recipes,
where the <filename>do_populate_sysroot</filename> task
instead uses
@@ -13499,17 +13817,19 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<filename>STAGING_DIR_HOST</filename> can have the
following values:
<itemizedlist>
- <listitem><para>For recipes building for the target
- machine, the value is
+ <listitem><para>
+ For recipes building for the target machine, the
+ value is
"${<link linkend='var-STAGING_DIR'>STAGING_DIR</link>}/${<link linkend='var-MACHINE'>MACHINE</link>}".
</para></listitem>
- <listitem><para>For native recipes building
- for the build host, the value is empty given the
- assumption that when building for the build host,
- the build host's own directories should be used.
- <note><para>
- <filename>-native</filename> recipes are not
- installed into host paths like such as
+ <listitem><para>
+ For native recipes building for the build host, the
+ value is empty given the assumption that when
+ building for the build host, the build host's own
+ directories should be used.
+ <note>
+ <para><filename>-native</filename> recipes are
+ not installed into host paths like such as
<filename>/usr</filename>.
Rather, these recipes are installed into
<filename>STAGING_DIR_NATIVE</filename>.
@@ -13525,7 +13845,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
example, GCC's <filename>-isystem</filename>
option.</para>
- <para>This emphasizes that the
+ <para>Thus, the emphasis is that the
<filename>STAGING_DIR*</filename> variables
should be viewed as input variables by tasks
such as
@@ -13539,7 +13859,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<filename>-native</filename> recipes, as
they make use of host headers and libraries.
</para>
- </note>
+ </note>
</para></listitem>
</itemizedlist>
</para>
@@ -13730,8 +14050,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<para>
For information on how BitBake uses stamp files to determine
if a task should be rerun, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#stamp-files-and-the-rerunning-of-tasks'>Stamp Files and the Rerunning of Tasks</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#stamp-files-and-the-rerunning-of-tasks'>Stamp Files and the Rerunning of Tasks</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
</para>
<para>
@@ -13864,7 +14184,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
in your recipe.
The variable's default value is set in the
<link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
- as follows:
+ class as follows:
<literallayout class='monospaced'>
SYSLINUX_SERIAL ?= "0 115200"
</literallayout>
@@ -13907,7 +14227,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
Specifies the alternate console=tty... kernel boot argument.
The variable's default value is set in the
<link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
- as follows:
+ class as follows:
<literallayout class='monospaced'>
SYSLINUX_SERIAL_TTY ?= "console=ttyS0,115200"
</literallayout>
@@ -14389,10 +14709,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<para>
Additionally, the SDK's environment setup script sets
- the
- <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
- variable in the environment to the
- <filename>TARGET_CFLAGS</filename> value so that
+ the <filename>CFLAGS</filename> variable in the environment
+ to the <filename>TARGET_CFLAGS</filename> value so that
executables built using the SDK also have the flags
applied.
</para>
@@ -14416,12 +14734,10 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<para>
Additionally, the SDK's environment setup script sets
- the
- <link linkend='var-CPPFLAGS'><filename>CPPFLAGS</filename></link>
- variable in the environment to the
- <filename>TARGET_CPPFLAGS</filename> value so that
- executables built using the SDK also have the flags
- applied.
+ the <filename>CPPFLAGS</filename> variable in the
+ environment to the <filename>TARGET_CPPFLAGS</filename>
+ value so that executables built using the SDK also have
+ the flags applied.
</para>
</glossdef>
</glossentry>
@@ -14442,12 +14758,10 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<para>
Additionally, the SDK's environment setup script sets
- the
- <link linkend='var-CXXFLAGS'><filename>CXXFLAGS</filename></link>
- variable in the environment to the
- <filename>TARGET_CXXFLAGS</filename> value so that
- executables built using the SDK also have the flags
- applied.
+ the <filename>CXXFLAGS</filename> variable in the
+ environment to the <filename>TARGET_CXXFLAGS</filename>
+ value so that executables built using the SDK also have
+ the flags applied.
</para>
</glossdef>
</glossentry>
@@ -14521,10 +14835,10 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<para role="glossdeffirst">
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Specifies the target's operating system.
- The variable can be set to "linux" for <filename>glibc</filename>-based systems and
- to "linux-musl" for <filename>musl</filename>.
- For ARM/EABI targets, there are also "linux-gnueabi" and
- "linux-musleabi" values possible.
+ The variable can be set to "linux" for glibc-based systems
+ (GNU C Library) and to "linux-musl" for musl libc.
+ For ARM/EABI targets, "linux-gnueabi" and "linux-musleabi"
+ possible values exist.
</para>
</glossdef>
</glossentry>
@@ -14620,6 +14934,26 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
</glossdef>
</glossentry>
+ <glossentry id='var-TCLIBC'><glossterm>TCLIBC</glossterm>
+ <info>
+ TCLIBC[doc] = "Specifies GNU standard C library (libc) variant to use during the build process. You can select 'glibc', 'musl' or "newlib."
+ </info>
+ <glossdef>
+ <para role="glossdeffirst">
+<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
+ Specifies the GNU standard C library
+ (<filename>libc</filename>) variant to use during the
+ build process.
+ This variable replaces <filename>POKYLIBC</filename>,
+ which is no longer supported.
+ </para>
+
+ <para>
+ You can select "glibc", "musl", "newlib", or "baremetal"
+ </para>
+ </glossdef>
+ </glossentry>
+
<glossentry id='var-TCLIBCAPPEND'><glossterm>TCLIBCAPPEND</glossterm>
<info>
TCLIBCAPPEND[doc] = "Specifies a suffix appended to TMPDIR that identifies the libc variant for the build."
@@ -14651,25 +14985,6 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
</glossdef>
</glossentry>
- <glossentry id='var-TCLIBC'><glossterm>TCLIBC</glossterm>
- <info>
- TCLIBC[doc] = "Specifies GNU standard C library (libc) variant to use during the build process. You can select 'glibc' or 'musl'."
- </info>
- <glossdef>
- <para role="glossdeffirst">
-<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
- Specifies the GNU standard C library (<filename>libc</filename>)
- variant to use during the build process.
- This variable replaces <filename>POKYLIBC</filename>, which is no longer
- supported.
- </para>
-
- <para>
- You can select "glibc" or "musl".
- </para>
- </glossdef>
- </glossentry>
-
<glossentry id='var-TCMODE'><glossterm>TCMODE</glossterm>
<info>
TCMODE[doc] = "Enables an external toolchain (where provided by an additional layer) if set to a value other than 'default'."
@@ -14692,10 +15007,14 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
default toolchain.
Using older or newer versions of these components
might cause build problems.
- See the
- <ulink url='&YOCTO_RELEASE_NOTES;'>Release Notes</ulink>
+ See the Release Notes for the Yocto Project release
for the specific components with which the toolchain
must be compatible.
+ To access the Release Notes, go to the
+ <ulink url='&YOCTO_HOME_URL;/software-overview/downloads/'>Downloads</ulink>
+ page on the Yocto Project website and click on the
+ "RELEASE INFORMATION" link for the appropriate
+ release.
</note>
</para>
@@ -14967,9 +15286,9 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Specifies the target controller to use when running tests
against a test image.
- The default controller to use is "qemu":
+ The default controller to use is "QemuTarget":
<literallayout class='monospaced'>
- TEST_TARGET = "qemu"
+ TEST_TARGET = "QemuTarget"
</literallayout>
</para>
@@ -14988,35 +15307,24 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
You can provide the following arguments with
<filename>TEST_TARGET</filename>:
<itemizedlist>
- <listitem><para><emphasis>"qemu" and "QemuTarget":</emphasis>
+ <listitem><para><emphasis>"QemuTarget":</emphasis>
Boots a QEMU image and runs the tests.
See the
"<ulink url='&YOCTO_DOCS_DEV_URL;#qemu-image-enabling-tests'>Enabling Runtime Tests on QEMU</ulink>"
section in the Yocto Project Development Tasks
Manual for more information.
</para></listitem>
- <listitem><para><emphasis>"simpleremote" and "SimpleRemoteTarget":</emphasis>
+ <listitem><para><emphasis>"SimpleRemoteTarget":</emphasis>
Runs the tests on target hardware that is already
up and running.
The hardware can be on the network or it can be
a device running an image on QEMU.
You must also set
<link linkend='var-TEST_TARGET_IP'><filename>TEST_TARGET_IP</filename></link>
- when you use "simpleremote" or "SimpleRemoteTarget".
- <note>
- This argument is defined in
- <filename>meta/lib/oeqa/targetcontrol.py</filename>.
- The small caps names are kept for compatibility
- reasons.
- </note>
- </para></listitem>
- <listitem><para><emphasis>"GummibootTarget":</emphasis>
- Automatically deploys and runs tests on an
- EFI-enabled machine that has a master image
- installed.
+ when you use "SimpleRemoteTarget".
<note>
This argument is defined in
- <filename>meta/lib/oeqa/controllers/masterimage.py</filename>.
+ <filename>meta/lib/oeqa/controllers/simpleremote.py</filename>.
</note>
</para></listitem>
</itemizedlist>
@@ -15222,8 +15530,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<para>
For background information on cross-development toolchains
in the Yocto Project development environment, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#cross-development-toolchain-generation'>Cross-Development Toolchain Generation</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#cross-development-toolchain-generation'>Cross-Development Toolchain Generation</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
For information on setting up a cross-development
environment, see the
<ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
@@ -15281,8 +15589,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
<para>
For background information on cross-development toolchains
in the Yocto Project development environment, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#cross-development-toolchain-generation'>Cross-Development Toolchain Generation</ulink>"
- section in the Yocto Project Concepts Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#cross-development-toolchain-generation'>Cross-Development Toolchain Generation</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
For information on setting up a cross-development
environment, see the
<ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
@@ -15320,7 +15628,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
a value where underscores are not allowed, for example
within package filenames.
In this case, dash characters replace any underscore
- characters used in TARGET_ARCH.
+ characters used in <filename>TARGET_ARCH</filename>.
</para>
<para>
@@ -16405,7 +16713,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
"<ulink url='&YOCTO_DOCS_DEV_URL;#creating-partitioned-images-using-wic'>Creating Partitioned Images Using Wic</ulink>"
section in the Yocto Project Development Tasks Manual.
For details on the kickstart file format, see the
- "<link linkend='openembedded-kickstart-wks-reference'>OpenEmbedded Kickstart (<filename>.wks</filename>) Reference</link>
+ "<link linkend='ref-kickstart'>OpenEmbedded Kickstart (<filename>.wks</filename>) Reference</link>
Chapter.
</para>
</glossdef>
@@ -16434,7 +16742,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
</literallayout>
The actual directory depends on several things:
<itemizedlist>
- <listitem><link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>:
+ <listitem><filename>TMPDIR</filename>:
The top-level build output directory</listitem>
<listitem><link linkend='var-MULTIMACH_TARGET_SYS'><filename>MULTIMACH_TARGET_SYS</filename></link>:
The target system identifier</listitem>
diff --git a/documentation/ref-manual/resources.xml b/documentation/ref-manual/resources.xml
index a6a90febc23..be0469616ca 100644
--- a/documentation/ref-manual/resources.xml
+++ b/documentation/ref-manual/resources.xml
@@ -37,8 +37,8 @@
<para>
The Yocto Project uses its own implementation of
- <ulink url='http://www.bugzilla.org/about/'>Bugzilla</ulink> to track
- defects (bugs).
+ <ulink url='&YOCTO_BUGZILLA_URL;'>Bugzilla</ulink> to
+ track defects (bugs).
Implementations of Bugzilla work well for group development because
they track bugs and code changes, can be used to communicate changes
and problems with developers, can be used to submit and review patches,
@@ -68,6 +68,8 @@
<ulink url='&YOCTO_WIKI_URL;/wiki/Bugzilla_Configuration_and_Bug_Tracking'>Bugzilla wiki page</ulink>
</para></listitem>
</itemizedlist>
+ For information on Bugzilla in general, see
+ <ulink url='http://www.bugzilla.org/about/'></ulink>.
</para>
</section>
@@ -160,25 +162,18 @@
</para></listitem>
<listitem><para>
<emphasis>
- <ulink url='&YOCTO_DOCS_QS_URL;'>Yocto Project Quick Start</ulink>:
+ <ulink url='&YOCTO_DOCS_BRIEF_URL;'>Yocto Project Quick Build</ulink>:
</emphasis>
- This short document lets you get started
- with the Yocto Project and quickly begin building an image.
+ This short document lets you experience building an image using
+ the Yocto Project without having to understand any concepts or
+ details.
</para></listitem>
<listitem><para>
<emphasis>
- <ulink url='&YOCTO_DOCS_GS_URL;'>Getting Started With Yocto Project Manual</ulink>:
+ <ulink url='&YOCTO_DOCS_OM_URL;'>Yocto Project Overview and Concepts Manual</ulink>:
</emphasis>
- This manual introduces the Yocto Project and provides
- development environment basics.
- </para></listitem>
- <listitem><para>
- <emphasis>
- <ulink url='&YOCTO_DOCS_CM_URL;'>Yocto Project Concepts Manual</ulink>:
- </emphasis>
- This manual offers conceptual information not suited for
- reference or "how-to" procedures (e.g. a deep look into the
- image build process).
+ This manual provides overview and conceptual information
+ about the Yocto Project.
</para></listitem>
<listitem><para>
<emphasis>
@@ -223,7 +218,7 @@
</para></listitem>
<listitem><para>
<emphasis>
- <ulink url='&YOCTO_DOCS_MM_URL;'>Yocto Project Reference Mega-Manual</ulink>:
+ <ulink url='&YOCTO_DOCS_MM_URL;'>Yocto Project Mega-Manual</ulink>:
</emphasis>
This manual is simply a single HTML file comprised of the
bulk of the Yocto Project manuals.
@@ -252,7 +247,7 @@
</para></listitem>
<listitem><para>
<emphasis>
- <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-appendix-latest-yp-eclipse-plug-in'>Eclipse IDE Yocto Plug-in</ulink>:
+ <ulink url='&YOCTO_DOCS_SDK_URL;#adt-eclipse'>Eclipse IDE Yocto Plug-in</ulink>:
</emphasis>
Instructions that demonstrate how an application developer
uses the Eclipse Yocto Project Plug-in feature within
@@ -265,11 +260,13 @@
A list of commonly asked questions and their answers.
</para></listitem>
<listitem><para>
- <emphasis>
- <ulink url='&YOCTO_RELEASE_NOTES;'>Release Notes</ulink>:
- </emphasis>
+ <emphasis>Release Notes:</emphasis>
Features, updates and known issues for the current
release of the Yocto Project.
+ To access the Release Notes, go to the
+ <ulink url='&YOCTO_HOME_URL;/software-overview/downloads/'>Downloads</ulink>
+ page on the Yocto Project website and click on the
+ "RELEASE INFORMATION" link for the appropriate release.
</para></listitem>
<listitem><para>
<emphasis>
diff --git a/documentation/sdk-manual/figures/sdk-autotools-flow.png b/documentation/sdk-manual/figures/sdk-autotools-flow.png
new file mode 100644
index 00000000000..ec6685f8b6c
--- /dev/null
+++ b/documentation/sdk-manual/figures/sdk-autotools-flow.png
Binary files differ
diff --git a/documentation/sdk-manual/figures/sdk-devtool-add-flow.png b/documentation/sdk-manual/figures/sdk-devtool-add-flow.png
index 985ac331f1b..e7d6173d2d4 100644
--- a/documentation/sdk-manual/figures/sdk-devtool-add-flow.png
+++ b/documentation/sdk-manual/figures/sdk-devtool-add-flow.png
Binary files differ
diff --git a/documentation/sdk-manual/figures/sdk-devtool-modify-flow.png b/documentation/sdk-manual/figures/sdk-devtool-modify-flow.png
index fd684ffbe95..18ba8b7e65e 100644
--- a/documentation/sdk-manual/figures/sdk-devtool-modify-flow.png
+++ b/documentation/sdk-manual/figures/sdk-devtool-modify-flow.png
Binary files differ
diff --git a/documentation/sdk-manual/figures/sdk-devtool-upgrade-flow.png b/documentation/sdk-manual/figures/sdk-devtool-upgrade-flow.png
index 65474dad02d..7d4f395e246 100644
--- a/documentation/sdk-manual/figures/sdk-devtool-upgrade-flow.png
+++ b/documentation/sdk-manual/figures/sdk-devtool-upgrade-flow.png
Binary files differ
diff --git a/documentation/sdk-manual/figures/sdk-installed-extensible-sdk-directory.png b/documentation/sdk-manual/figures/sdk-installed-extensible-sdk-directory.png
index 99e07ce6f68..b71c8ad73c3 100644
--- a/documentation/sdk-manual/figures/sdk-installed-extensible-sdk-directory.png
+++ b/documentation/sdk-manual/figures/sdk-installed-extensible-sdk-directory.png
Binary files differ
diff --git a/documentation/sdk-manual/figures/sdk-installed-standard-sdk-directory.png b/documentation/sdk-manual/figures/sdk-installed-standard-sdk-directory.png
index d4af8502083..45c0154b19f 100644
--- a/documentation/sdk-manual/figures/sdk-installed-standard-sdk-directory.png
+++ b/documentation/sdk-manual/figures/sdk-installed-standard-sdk-directory.png
Binary files differ
diff --git a/documentation/sdk-manual/figures/sdk-makefile-flow.png b/documentation/sdk-manual/figures/sdk-makefile-flow.png
new file mode 100644
index 00000000000..0ccb4180a3c
--- /dev/null
+++ b/documentation/sdk-manual/figures/sdk-makefile-flow.png
Binary files differ
diff --git a/documentation/sdk-manual/sdk-appendix-customizing.xml b/documentation/sdk-manual/sdk-appendix-customizing.xml
index 587526f65fa..7454c90bee5 100644
--- a/documentation/sdk-manual/sdk-appendix-customizing.xml
+++ b/documentation/sdk-manual/sdk-appendix-customizing.xml
@@ -7,7 +7,7 @@
<title>Customizing the Extensible SDK</title>
<para>
- This appendix presents customizations you can apply to the extensible SDK.
+ This appendix describes customizations you can apply to the extensible SDK.
</para>
<section id='sdk-configuring-the-extensible-sdk'>
@@ -17,26 +17,31 @@
The extensible SDK primarily consists of a pre-configured copy of
the OpenEmbedded build system from which it was produced.
Thus, the SDK's configuration is derived using that build system and
- the following filters, which the OpenEmbedded build system applies
- against <filename>local.conf</filename> and
- <filename>auto.conf</filename> if they are present:
+ the filters shown in the following list.
+ When these filters are present, the OpenEmbedded build system applies
+ them against <filename>local.conf</filename> and
+ <filename>auto.conf</filename>:
<itemizedlist>
<listitem><para>
Variables whose values start with "/" are excluded since the
assumption is that those values are paths that are likely to
- be specific to the build host.
+ be specific to the
+ <ulink url='&YOCTO_DOCS_REF_URL;#hardware-build-system-term'>build host</ulink>.
</para></listitem>
<listitem><para>
Variables listed in
<ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_LOCAL_CONF_BLACKLIST'><filename>SDK_LOCAL_CONF_BLACKLIST</filename></ulink>
are excluded.
- The default value blacklists
- <ulink url='&YOCTO_DOCS_REF_URL;#var-CONF_VERSION'><filename>CONF_VERSION</filename></ulink>,
- <ulink url='&YOCTO_DOCS_REF_URL;#var-BB_NUMBER_THREADS'><filename>BB_NUMBER_THREADS</filename></ulink>,
- <ulink url='&YOCTO_DOCS_REF_URL;#var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></ulink>,
- <ulink url='&YOCTO_DOCS_REF_URL;#var-PRSERV_HOST'><filename>PRSERV_HOST</filename></ulink>,
- and
- <ulink url='&YOCTO_DOCS_REF_URL;#var-SSTATE_MIRRORS'><filename>SSTATE_MIRRORS</filename></ulink>.
+ These variables are not allowed through from the OpenEmbedded
+ build system configuration into the extensible SDK
+ configuration.
+ Typically, these variables are specific to the machine on
+ which the build system is running and could be problematic
+ as part of the extensible SDK configuration.</para>
+
+ <para>For a list of the variables excluded by default, see the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_LOCAL_CONF_BLACKLIST'><filename>SDK_LOCAL_CONF_BLACKLIST</filename></ulink>
+ in the glossary of the Yocto Project Reference Manual.
</para></listitem>
<listitem><para>
Variables listed in
@@ -44,7 +49,7 @@
are included.
Including a variable in the value of
<filename>SDK_LOCAL_CONF_WHITELIST</filename> overrides either
- of the above two conditions.
+ of the previous two filters.
The default value is blank.
</para></listitem>
<listitem><para>
@@ -54,7 +59,7 @@
<ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_INHERIT_BLACKLIST'><filename>SDK_INHERIT_BLACKLIST</filename></ulink>
are disabled.
Using <filename>SDK_INHERIT_BLACKLIST</filename> to disable
- these classes is is the typical method to disable classes that
+ these classes is the typical method to disable classes that
are problematic or unnecessary in the SDK context.
The default value blacklists the
<ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-buildhistory'><filename>buildhistory</filename></ulink>
@@ -73,11 +78,13 @@
</para>
</section>
-<section id='adjusting-the-extensible-sdk-to-suit-your-build-system-setup'>
- <title>Adjusting the Extensible SDK to Suit Your Build System Setup</title>
+<section id='adjusting-the-extensible-sdk-to-suit-your-build-hosts-setup'>
+ <title>Adjusting the Extensible SDK to Suit Your Build Host's Setup</title>
<para>
- In most cases, the extensible SDK defaults should work.
+ In most cases, the extensible SDK defaults should work with your
+ <ulink url='&YOCTO_DOCS_REF_URL;#hardware-build-system-term'>build host's</ulink>
+ setup.
However, some cases exist for which you might consider making
adjustments:
<itemizedlist>
@@ -88,33 +95,43 @@
variable and you do not need or want those classes enabled in
the SDK, you can blacklist them by adding them to the
<ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_INHERIT_BLACKLIST'><filename>SDK_INHERIT_BLACKLIST</filename></ulink>
- variable.
- The default value of <filename>SDK_INHERIT_BLACKLIST</filename>
- is set using the "?=" operator.
- Consequently, you will need to either set the complete value
- using "=" or append the value using "_append".
+ variable as described in the fourth bullet of the previous
+ section.
+ <note>
+ The default value of
+ <filename>SDK_INHERIT_BLACKLIST</filename> is set using
+ the "?=" operator.
+ Consequently, you will need to either define the entire
+ list by using the "=" operator, or you will need to append
+ a value using either "_append" or the "+=" operator.
+ You can learn more about these operators in the
+ "<ulink url='&YOCTO_DOCS_BB_URL;#basic-syntax'>Basic Syntax</ulink>"
+ section of the BitBake User Manual.
+ </note>.
</para></listitem>
<listitem><para>
If you have classes or recipes that add additional tasks to
- the standard build flow (i.e. that execute as part of building
- the recipe as opposed to needing to be called explicitly), then
- you need to do one of the following:
+ the standard build flow (i.e. the tasks execute as the recipe
+ builds as opposed to being called explicitly), then you need
+ to do one of the following:
<itemizedlist>
<listitem><para>
- Ensure the tasks are shared state tasks (i.e. their
- output is saved to and can be restored from the shared
- state cache), or that the tasks are able to be
- produced quickly from a task that is a shared state
- task and add the task name to the value of
+ After ensuring the tasks are
+ <ulink url='&YOCTO_DOCS_OM_URL;#shared-state-cache'>shared state</ulink>
+ tasks (i.e. the output of the task is saved to and
+ can be restored from the shared state cache) or
+ ensuring the tasks are able to be produced quickly from
+ a task that is a shared state task, add the task name
+ to the value of
<ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_RECRDEP_TASKS'><filename>SDK_RECRDEP_TASKS</filename></ulink>.
</para></listitem>
<listitem><para>
Disable the tasks if they are added by a class and
you do not need the functionality the class provides
in the extensible SDK.
- To disable the tasks, add the class to
- <filename>SDK_INHERIT_BLACKLIST</filename> as previously
- described.
+ To disable the tasks, add the class to the
+ <filename>SDK_INHERIT_BLACKLIST</filename> variable
+ as described in the previous section.
</para></listitem>
</itemizedlist>
</para></listitem>
@@ -132,7 +149,7 @@
<ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_UPDATE_URL'><filename>SDK_UPDATE_URL</filename></ulink>
variable.
For more information, see the
- "<link linkend='sdk-providing-updates-after-installing-the-extensible-sdk'>Providing Updates After Installing the Extensible SDK</link>"
+ "<link linkend='sdk-providing-updates-to-the-extensible-sdk-after-installation'>Providing Updates to the Extensible SDK After Installation</link>"
section.
</para></listitem>
<listitem><para>
@@ -162,13 +179,20 @@
</para>
</section>
-<section id='sdk-changing-the-appearance-of-the-extensible-sdk'>
- <title>Changing the Appearance of the Extensible SDK</title>
+<section id='sdk-changing-the-sdk-installer-title'>
+ <title>Changing the Extensible SDK Installer Title</title>
<para>
- You can change the title shown by the SDK installer by setting the
+ You can change the displayed title for the SDK installer by setting
+ the
<ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_TITLE'><filename>SDK_TITLE</filename></ulink>
- variable.
+ variable and then rebuilding the the SDK installer.
+ For information on how to build an SDK installer, see the
+ "<link linkend='sdk-building-an-sdk-installer'>Building an SDK Installer</link>"
+ section.
+ </para>
+
+ <para>
By default, this title is derived from
<ulink url='&YOCTO_DOCS_REF_URL;#var-DISTRO_NAME'><filename>DISTRO_NAME</filename></ulink>
when it is set.
@@ -177,21 +201,54 @@
<ulink url='&YOCTO_DOCS_REF_URL;#var-DISTRO'><filename>DISTRO</filename></ulink>
variable.
</para>
+
+ <para>
+ The
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></ulink>
+ class defines the default value of the <filename>SDK_TITLE</filename>
+ variable as follows:
+ <literallayout class='monospaced'>
+ SDK_TITLE ??= "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} SDK"
+ </literallayout>
+ </para>
+
+ <para>
+ While several ways exist to change this variable, an efficient method
+ is to set the variable in your distribution's configuration file.
+ Doing so creates an SDK installer title that applies across your
+ distribution.
+ As an example, assume you have your own layer for your distribution
+ named "meta-mydistro" and you are using the same type of file
+ hierarchy as does the default "poky" distribution.
+ If so, you could update the <filename>SDK_TITLE</filename> variable
+ in the
+ <filename>~/meta-mydistro/conf/distro/mydistro.conf</filename> file
+ using the following form:
+ <literallayout class='monospaced'>
+ SDK_TITLE = "<replaceable>your_title</replaceable>"
+ </literallayout>
+ </para>
</section>
-<section id='sdk-providing-updates-after-installing-the-extensible-sdk'>
- <title>Providing Updates After Installing the Extensible SDK</title>
+<section id='sdk-providing-updates-to-the-extensible-sdk-after-installation'>
+ <title>Providing Updates to the Extensible SDK After Installation</title>
<para>
When you make changes to your configuration or to the metadata and
if you want those changes to be reflected in installed SDKs, you need
- to perform additional steps to make it possible for those that use
- the SDK to update their installations with the
+ to perform additional steps.
+ These steps make it possible for anyone using the installed SDKs to
+ update the installed SDKs by using the
<filename>devtool sdk-update</filename> command:
<orderedlist>
<listitem><para>
- Arrange to be created a directory that can be shared over
- HTTP or HTTPS.
+ Create a directory that can be shared over HTTP or HTTPS.
+ You can do this by setting up a web server such as an
+ <ulink url='https://en.wikipedia.org/wiki/Apache_HTTP_Server'>Apache HTTP Server</ulink>
+ or
+ <ulink url='https://en.wikipedia.org/wiki/Nginx'>Nginx</ulink>
+ server in the cloud to host the directory.
+ This directory must contain the published SDK.
</para></listitem>
<listitem><para>
Set the
@@ -199,7 +256,10 @@
variable to point to the corresponding HTTP or HTTPS URL.
Setting this variable causes any SDK built to default to that
URL and thus, the user does not have to pass the URL to the
- <filename>devtool sdk-update</filename> command.
+ <filename>devtool sdk-update</filename> command as described
+ in the
+ "<link linkend='sdk-applying-updates-to-an-installed-extensible-sdk'>Applying Updates to an Installed Extensible SDK</link>"
+ section.
</para></listitem>
<listitem><para>
Build the extensible SDK normally (i.e., use the
@@ -209,7 +269,7 @@
<listitem><para>
Publish the SDK using the following command:
<literallayout class='monospaced'>
- $ oe-publish-sdk <replaceable>some_path</replaceable>/sdk-installer.sh <replaceable>path_to_shared/http_directory</replaceable>
+ $ oe-publish-sdk <replaceable>some_path</replaceable>/sdk-installer.sh <replaceable>path_to_shared_http_directory</replaceable>
</literallayout>
You must repeat this step each time you rebuild the SDK
with changes that you want to make available through the
@@ -219,40 +279,96 @@
</para>
<para>
- Completing the above steps allows users of the existing SDKs to
- simply run <filename>devtool sdk-update</filename> to retrieve the
- latest updates.
+ Completing the above steps allows users of the existing installed
+ SDKs to simply run <filename>devtool sdk-update</filename> to
+ retrieve and apply the latest updates.
See the
- "<link linkend='sdk-updating-the-extensible-sdk'>Updating the Extensible SDK</link>"
+ "<link linkend='sdk-applying-updates-to-an-installed-extensible-sdk'>Applying Updates to an Installed Extensible SDK</link>"
section for further information.
</para>
</section>
+<section id='sdk-changing-the-default-sdk-installation-directory'>
+ <title>Changing the Default SDK Installation Directory</title>
+
+ <para>
+ When you build the installer for the Extensible SDK, the default
+ installation directory for the SDK is based on the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-DISTRO'><filename>DISTRO</filename></ulink>
+ and
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-SDKEXTPATH'><filename>SDKEXTPATH</filename></ulink>
+ variables from within the
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></ulink>
+ class as follows:
+ <literallayout class='monospaced'>
+ SDKEXTPATH ??= "~/${@d.getVar('DISTRO')}_sdk"
+ </literallayout>
+ You can change this default installation directory by specifically
+ setting the <filename>SDKEXTPATH</filename> variable.
+ </para>
+
+ <para>
+ While a number of ways exist through which you can set this variable,
+ the method that makes the most sense is to set the variable in your
+ distribution's configuration file.
+ Doing so creates an SDK installer default directory that applies
+ across your distribution.
+ As an example, assume you have your own layer for your distribution
+ named "meta-mydistro" and you are using the same type of file
+ hierarchy as does the default "poky" distribution.
+ If so, you could update the <filename>SDKEXTPATH</filename> variable
+ in the
+ <filename>~/meta-mydistro/conf/distro/mydistro.conf</filename> file
+ using the following form:
+ <literallayout class='monospaced'>
+ SDKEXTPATH = "<replaceable>some_path_for_your_installed_sdk</replaceable>"
+ </literallayout>
+ </para>
+
+ <para>
+ After building your installer, running it prompts the user for
+ acceptance of the
+ <replaceable>some_path_for_your_installed_sdk</replaceable> directory
+ as the default location to install the Extensible SDK.
+ </para>
+</section>
+
<section id='sdk-providing-additional-installable-extensible-sdk-content'>
<title>Providing Additional Installable Extensible SDK Content</title>
<para>
- If you want the users of the extensible SDK you are building to be
- able to add items to the SDK without needing to build the
- items from source, you need to do a number of things:
+ If you want the users of an extensible SDK you build to be
+ able to add items to the SDK without requiring the users to build
+ the items from source, you need to do a number of things:
<orderedlist>
<listitem><para>
Ensure the additional items you want the user to be able to
- install are actually built.
- You can ensure these items are built a number of different
- ways: 1) Build them explicitly, perhaps using one or more
- "meta" recipes that depend on lists of other recipes to keep
- things tidy, or 2) Build the "world" target and set
- <filename>EXCLUDE_FROM_WORLD_pn-</filename><replaceable>recipename</replaceable>
- for the recipes you do not want built.
- See the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-EXCLUDE_FROM_WORLD'><filename>EXCLUDE_FROM_WORLD</filename></ulink>
- variable for additional information.
+ install are already built:
+ <itemizedlist>
+ <listitem><para>
+ Build the items explicitly.
+ You could use one or more "meta" recipes that depend
+ on lists of other recipes.
+ </para></listitem>
+ <listitem><para>
+ Build the "world" target and set
+ <filename>EXCLUDE_FROM_WORLD_pn-</filename><replaceable>recipename</replaceable>
+ for the recipes you do not want built.
+ See the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-EXCLUDE_FROM_WORLD'><filename>EXCLUDE_FROM_WORLD</filename></ulink>
+ variable for additional information.
+ </para></listitem>
+ </itemizedlist>
</para></listitem>
<listitem><para>
Expose the <filename>sstate-cache</filename> directory
produced by the build.
- Typically, you expose this directory over HTTP or HTTPS.
+ Typically, you expose this directory by making it available
+ through an
+ <ulink url='https://en.wikipedia.org/wiki/Apache_HTTP_Server'>Apache HTTP Server</ulink>
+ or
+ <ulink url='https://en.wikipedia.org/wiki/Nginx'>Nginx</ulink>
+ server.
</para></listitem>
<listitem><para>
Set the appropriate configuration so that the produced SDK
@@ -285,7 +401,7 @@
Alternatively, if you just want to set the
<filename>SSTATE_MIRRORS</filename> variable's value
for the SDK alone, create a
- <filename>conf/sdk-extra.conf</filename> either in
+ <filename>conf/sdk-extra.conf</filename> file either in
your
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
or within any layer and put your
@@ -324,24 +440,24 @@
size, which downloads and installs quickly.
You need to realize, though, that the minimal installer does not
install any libraries or tools out of the box.
- These must be installed either "on the fly" or through actions you
- perform using <filename>devtool</filename> or explicitly with the
- <filename>devtool sdk-install</filename> command.
+ These libraries and tools must be installed either "on the fly" or
+ through actions you perform using <filename>devtool</filename> or
+ explicitly with the <filename>devtool sdk-install</filename> command.
</para>
<para>
- In most cases, when building a minimal SDK you will need to also enable
+ In most cases, when building a minimal SDK you need to also enable
bringing in the information on a wider range of packages produced by
the system.
- This is particularly true so that <filename>devtool add</filename>
- is able to effectively map dependencies it discovers in a source tree
- to the appropriate recipes.
- Also so that the <filename>devtool search</filename> command
- is able to return useful results.
+ Requiring this wider range of information is particularly true
+ so that <filename>devtool add</filename> is able to effectively map
+ dependencies it discovers in a source tree to the appropriate recipes.
+ Additionally, the information enables the
+ <filename>devtool search</filename> command to return useful results.
</para>
<para>
- To facilitate this wider range of information, you would additionally
+ To facilitate this wider range of information, you would need to
set the following:
<literallayout class='monospaced'>
SDK_INCLUDE_PKGDATA = "1"
@@ -384,11 +500,12 @@
<ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_INCLUDE_TOOLCHAIN'><filename>SDK_INCLUDE_TOOLCHAIN</filename></ulink>
variable to "1".
In particular, it is useful to include the toolchain when you
- have set <filename>SDK_EXT_TYPE</filename> to
- "minimal", which by default, excludes the toolchain.
+ have set <filename>SDK_EXT_TYPE</filename> to "minimal", which by
+ default, excludes the toolchain.
Also, it is helpful if you are building a small SDK for use with
- an IDE, such as Eclipse, or some other tool where you do not want
- to take extra steps to install a toolchain.
+ an IDE, such as <trademark class='trade'>Eclipse</trademark>, or some
+ other tool where you do not want to take extra steps to install a
+ toolchain.
</para>
</section>
</appendix>
diff --git a/documentation/sdk-manual/sdk-appendix-mars.xml b/documentation/sdk-manual/sdk-appendix-neon.xml
index 84167a8ce00..0fb92985a4e 100644
--- a/documentation/sdk-manual/sdk-appendix-mars.xml
+++ b/documentation/sdk-manual/sdk-appendix-neon.xml
@@ -2,29 +2,29 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
-<appendix id='sdk-appendix-latest-yp-eclipse-plug-in'>
- <title>Using Eclipse Mars</title>
+<appendix id='sdk-appendix-neon-yp-eclipse-plug-in'>
+ <title>Using <trademark class='trade'>Eclipse</trademark> Neon</title>
<para>
- This release of the Yocto Project supports both the Neon and Mars
+ This release of the Yocto Project supports both the Oxygen and Neon
versions of the Eclipse IDE.
This appendix presents information that describes how to obtain and
- configure the Mars version of Eclipse.
+ configure the Neon version of Eclipse.
It also provides a basic project example that you can work through
from start to finish.
For general information on using the Eclipse IDE and the Yocto
Project Eclipse Plug-In, see the
- "<link linkend='sdk-eclipse-project'>Developing Applications Using <trademark class='trade'>Eclipse</trademark></link>"
- Chapter.
+ "<link linkend='application-development-workflow-using-eclipse'>Application Development Workflow Using <trademark class='trade'>Eclipse</trademark></link>"
+ section.
</para>
- <section id='mars-setting-up-the-eclipse-ide'>
- <title>Setting Up the Mars Version of the Eclipse IDE</title>
+ <section id='neon-setting-up-the-eclipse-ide'>
+ <title>Setting Up the Neon Version of the Eclipse IDE</title>
<para>
To develop within the Eclipse IDE, you need to do the following:
<orderedlist>
- <listitem><para>Install the Mars version of the Eclipse
+ <listitem><para>Install the Neon version of the Eclipse
IDE.</para></listitem>
<listitem><para>Configure the Eclipse IDE.
</para></listitem>
@@ -41,70 +41,70 @@
</note>
</para>
- <section id='mars-installing-eclipse-ide'>
- <title>Installing the Mars Eclipse IDE</title>
+ <section id='neon-installing-eclipse-ide'>
+ <title>Installing the Neon Eclipse IDE</title>
<para>
Follow these steps to locate, install, and configure
- Mars Eclipse:
+ Neon Eclipse:
<orderedlist>
- <listitem><para><emphasis>Locate the Mars Download:</emphasis>
+ <listitem><para><emphasis>Locate the Neon Download:</emphasis>
Open a browser and go to
- <ulink url='http://www.eclipse.org/mars/'>http://www.eclipse.org/mars/</ulink>.
+ <ulink url='http://www.eclipse.org/neon/'>http://www.eclipse.org/neon/</ulink>.
</para></listitem>
<listitem><para><emphasis>Download the Tarball:</emphasis>
- Click the "Download" button and then use the "Linux
- for Eclipse IDE for C++ Developers"
- appropriate for your development system
- (e.g.
- <ulink url='http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/mars/2/eclipse-cpp-mars-2-linux-gtk-x86_64.tar.gz'>64-bit under Linux for Eclipse IDE for C++ Developers</ulink>
- if your development system is a Linux 64-bit machine.
+ Click the "Download" button and look for the
+ "Eclipse IDE for C/C++ Developers" Neon 3 Package.
+ Select the correct platform download link listed at
+ the right.
+ For example, click on "64-bit" next to Linux if your
+ build host is running a 64-bit Linux distribution.
+ Click through the process to save the file.
</para></listitem>
<listitem><para><emphasis>Unpack the Tarball:</emphasis>
- Move to a clean directory and unpack the tarball.
- Here is an example:
+ Move to a directory and unpack the tarball.
+ The following commands unpack the tarball into the
+ home directory:
<literallayout class='monospaced'>
$ cd ~
- $ tar -xzvf ~/Downloads/eclipse-cpp-mars-2-linux-gtk-x86_64.tar.gz
+ $ tar -xzvf ~/Downloads/eclipse-cpp-neon-3-linux-gtk-x86_64.tar.gz
</literallayout>
Everything unpacks into a folder named "Eclipse".
</para></listitem>
<listitem><para><emphasis>Launch Eclipse:</emphasis>
- Double click the "Eclipse" file in the folder to
- launch Eclipse.
- <note>
- If you experience a NullPointer Exception after
- launch Eclipse or the debugger from within Eclipse,
- try adding the following
- to your <filename>eclipse.ini</filename> file,
- which is located in the directory in which you
- unpacked the Eclipse tar file:
- <literallayout class='monospaced'>
- --launcher.GTK_version
- 2
- </literallayout>
- Alternatively, you can export the
- <filename>SWT_GTK</filename> variable in your
- shell as follows:
- <literallayout class='monospaced'>
- $ export SWT_GTK3=0
- </literallayout>
- </note>
+ The following commands launch Eclipse assuming you
+ unpacked it in your home directory:
+ <literallayout class='monospaced'>
+ $ cd ~/eclipse
+ $ ./eclipse
+ </literallayout>
+ Accept the default "workspace" once Eclipse launches.
</para></listitem>
</orderedlist>
</para>
</section>
- <section id='mars-configuring-the-mars-eclipse-ide'>
- <title>Configuring the Mars Eclipse IDE</title>
+ <section id='neon-configuring-the-neon-eclipse-ide'>
+ <title>Configuring the Neon Eclipse IDE</title>
<para>
- Follow these steps to configure the Mars Eclipse IDE.
- <note>
- Depending on how you installed Eclipse and what you have
- already done, some of the options will not appear.
- If you cannot find an option as directed by the manual,
- it has already been installed.
+ Follow these steps to configure the Neon Eclipse IDE.
+ <note><title>Notes</title>
+ <itemizedlist>
+ <listitem><para>
+ Depending on how you installed Eclipse and what
+ you have already done, some of the options do
+ not appear.
+ If you cannot find an option as directed by the
+ manual, it has already been installed.
+ </para></listitem>
+ <listitem><para>
+ If you want to see all options regardless of
+ whether they are installed or not, deselect the
+ "Hide items that are already installed"
+ check box.
+ </para></listitem>
+ </itemizedlist>
</note>
<orderedlist>
<listitem><para>Be sure Eclipse is running and
@@ -114,13 +114,15 @@
the "Help" pull-down menu.
</para></listitem>
<listitem><para>Select
- "Mars - http://download.eclipse.org/releases/mars"
+ "Neon - http://download.eclipse.org/releases/neon"
from the "Work with:" pull-down menu.
</para></listitem>
<listitem><para>Expand the box next to
- "Linux Tools" and select "C/C++ Remote
- (Over TCF/TE) Run/Debug Launcher" and
- "TM Terminal".
+ "Linux Tools" and select the following
+ <literallayout class='monospaced'>
+ C/C++ Remote (Over TCF/TE) Run/Debug Launcher
+ TM Terminal
+ </literallayout>
</para></listitem>
<listitem><para>Expand the box next to "Mobile and
Device Development" and select the following
@@ -135,9 +137,8 @@
</para></listitem>
<listitem><para>Expand the box next to
"Programming Languages" and select the
- following boxes:
+ following box:
<literallayout class='monospaced'>
- C/C++ Autotools Support
C/C++ Development Tools SDK
</literallayout>
</para></listitem>
@@ -149,8 +150,8 @@
</para>
</section>
- <section id='mars-installing-the-eclipse-yocto-plug-in'>
- <title>Installing or Accessing the Mars Eclipse Yocto Plug-in</title>
+ <section id='neon-installing-the-eclipse-yocto-plug-in'>
+ <title>Installing or Accessing the Neon Eclipse Yocto Plug-in</title>
<para>
You can install the Eclipse Yocto Plug-in into the Eclipse
@@ -159,11 +160,11 @@
install the plug-in from the latest source code.
</para>
- <section id='mars-new-software'>
+ <section id='neon-new-software'>
<title>Installing the Pre-built Plug-in from the Yocto Project Eclipse Update Site</title>
<para>
- To install the Mars Eclipse Yocto Plug-in from the update
+ To install the Neon Eclipse Yocto Plug-in from the update
site, follow these steps:
<orderedlist>
<listitem><para>Start up the Eclipse IDE.
@@ -175,15 +176,15 @@
area.
</para></listitem>
<listitem><para>Enter
- <filename>&ECLIPSE_DL_PLUGIN_URL;/mars</filename>
+ <filename>&ECLIPSE_DL_PLUGIN_URL;/neon</filename>
in the URL field and provide a meaningful name
in the "Name" field.
</para></listitem>
- <listitem><para>Click "OK" to have the entry added
- to the "Work with:" drop-down list.
- </para></listitem>
- <listitem><para>Select the entry for the plug-in
- from the "Work with:" drop-down list.
+ <listitem><para>
+ Click "OK" to have the entry automatically
+ populate the "Work with:" field and to have
+ the items for installation appear in the window
+ below.
</para></listitem>
<listitem><para>Check the boxes next to the following:
<literallayout class='monospaced'>
@@ -204,15 +205,21 @@
</para>
</section>
- <section id='mars-zip-file-method'>
+ <section id='neon-zip-file-method'>
<title>Installing the Plug-in Using the Latest Source Code</title>
<para>
- To install the Mars Eclipse Yocto Plug-in from the latest
+ To install the Neon Eclipse Yocto Plug-in from the latest
source code, follow these steps:
<orderedlist>
- <listitem><para>Be sure your development system
- has JDK 1.7+
+ <listitem><para>
+ Be sure your build host has JDK version 1.8
+ or greater.
+ On a Linux build host you can determine the
+ version using the following command:
+ <literallayout class='monospaced'>
+ $ java -version
+ </literallayout>
</para></listitem>
<listitem><para>install X11-related packages:
<literallayout class='monospaced'>
@@ -226,15 +233,19 @@
$ git clone git://git.yoctoproject.org/eclipse-yocto
</literallayout>
</para></listitem>
- <listitem><para>Use Git to checkout the correct
- tag:
+ <listitem><para>
+ Use Git to create the correct tag:
<literallayout class='monospaced'>
$ cd ~/eclipse-yocto
- $ git checkout mars/yocto-&DISTRO;
+ $ git checkout -b neon/&DISTRO_NAME_NO_CAP; remotes/origin/neon/&DISTRO_NAME_NO_CAP;
</literallayout>
- This puts you in a detached HEAD state, which
- is fine since you are only going to be building
- and not developing.
+ This creates a local tag named
+ <filename>neon/&DISTRO_NAME_NO_CAP;</filename>
+ based on the branch
+ <filename>origin/neon/&DISTRO_NAME_NO_CAP;</filename>.
+ You are put into a detached HEAD state,
+ which is fine since you are only going to
+ be building and not developing.
</para></listitem>
<listitem><para>Change to the
<filename>scripts</filename>
@@ -255,20 +266,22 @@
directory of the Git repository created
earlier.
</para></listitem>
- <listitem><para>Run the <filename>build.sh</filename>
+ <listitem><para>
+ Run the <filename>build.sh</filename>
script as directed.
- Be sure to provide the tag name, documentation
- branch, and a release name.</para>
- <para>
- Following is an example:
+ Be sure to provide the tag name,
+ documentation branch, and a release name.</para>
+
+ <para>Following is an example:
<literallayout class='monospaced'>
- $ ECLIPSE_HOME=/home/scottrif/eclipse-yocto/scripts/eclipse ./build.sh -l mars/yocto-&DISTRO; master yocto-&DISTRO; 2>&amp;1 | tee build.log
+ $ ECLIPSE_HOME=/home/scottrif/eclipse-yocto/scripts/eclipse ./build.sh -l neon/&DISTRO_NAME_NO_CAP; master yocto-&DISTRO; 2>&amp;1 | tee build.log
</literallayout>
- The previous example command adds the tag you
- need for <filename>mars/yocto-&DISTRO;</filename>
- to <filename>HEAD</filename>, then tells the
- build script to use the local (-l) Git checkout
- for the build.
+ The previous example command adds the tag
+ you need for
+ <filename>neon/&DISTRO_NAME_NO_CAP;</filename>
+ to <filename>HEAD</filename>, then tells
+ the build script to use the local (-l) Git
+ checkout for the build.
After running the script, the file
<filename>org.yocto.sdk-</filename><replaceable>release</replaceable><filename>-</filename><replaceable>date</replaceable><filename>-archive.zip</filename>
is in the current directory.
@@ -316,16 +329,16 @@
<para>
At this point you should be able to configure the
Eclipse Yocto Plug-in as described in the
- "<link linkend='mars-configuring-the-eclipse-yocto-plug-in'>Configuring the Mars Eclipse Yocto Plug-in</link>"
+ "<link linkend='neon-configuring-the-eclipse-yocto-plug-in'>Configuring the Neon Eclipse Yocto Plug-in</link>"
section.</para>
</section>
</section>
- <section id='mars-configuring-the-eclipse-yocto-plug-in'>
- <title>Configuring the Mars Eclipse Yocto Plug-in</title>
+ <section id='neon-configuring-the-eclipse-yocto-plug-in'>
+ <title>Configuring the Neon Eclipse Yocto Plug-In</title>
<para>
- Configuring the Mars Eclipse Yocto Plug-in involves setting the
+ Configuring the Neon Eclipse Yocto Plug-in involves setting the
Cross Compiler options and the Target options.
The configurations you choose become the default settings
for all projects.
@@ -336,14 +349,16 @@
<para>
To start, you need to do the following from within the
Eclipse IDE:
- <itemizedlist>
- <listitem><para>Choose "Preferences" from the
+ <orderedlist>
+ <listitem><para>
+ Choose "Preferences" from the
"Window" menu to display the Preferences Dialog.
</para></listitem>
- <listitem><para>Click "Yocto Project SDK" to display
+ <listitem><para>
+ Click "Yocto Project SDK" to display
the configuration screen.
</para></listitem>
- </itemizedlist>
+ </orderedlist>
The following sub-sections describe how to configure the
the plug-in.
<note>
@@ -355,7 +370,7 @@
</note>
</para>
- <section id='mars-configuring-the-cross-compiler-options'>
+ <section id='neon-configuring-the-cross-compiler-options'>
<title>Configuring the Cross-Compiler Options</title>
<para>
@@ -366,15 +381,15 @@
the sysroot location, and select the target
architecture.
<itemizedlist>
- <listitem><para><emphasis>Selecting the Toolchain Type:</emphasis>
- Choose between
- <filename>Standalone pre-built toolchain</filename>
+ <listitem><para>
+ <emphasis>Selecting the Toolchain Type:</emphasis>
+ Choose between "Standalone pre-built toolchain"
and
- <filename>Build system derived toolchain</filename>
- for Cross Compiler Options.
+ "Build system derived toolchain" for Cross Compiler
+ Options.
<itemizedlist>
- <listitem><para><emphasis>
- <filename>Standalone Pre-built Toolchain:</filename></emphasis>
+ <listitem><para>
+ <emphasis>Standalone Pre-built Toolchain:</emphasis>
Select this type when you are using
a stand-alone cross-toolchain.
For example, suppose you are an
@@ -388,24 +403,25 @@
and installed a pre-built toolchain
for an existing image.
</para></listitem>
- <listitem><para><emphasis>
- <filename>Build System Derived Toolchain:</filename></emphasis>
+ <listitem><para>
+ <emphasis>Build System Derived Toolchain:</emphasis>
Select this type if you built the
toolchain as part of the
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>.
- When you select
- <filename>Build system derived toolchain</filename>,
- you are using the toolchain built and
- bundled inside the Build Directory.
+ When you select "Build system derived
+ toolchain", you are using the toolchain
+ built and bundled inside the Build
+ Directory.
For example, suppose you created a
suitable image using the steps in the
<ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>wiki</ulink>.
- In this situation, you would select the
- <filename>Build system derived toolchain</filename>.
+ In this situation, you would select
+ "Build system derived toolchain".
</para></listitem>
</itemizedlist>
</para></listitem>
- <listitem><para><emphasis>Specify the Toolchain Root Location:</emphasis>
+ <listitem><para>
+ <emphasis>Specify the Toolchain Root Location:</emphasis>
If you are using a stand-alone pre-built
toolchain, you should be pointing to where it is
installed (e.g.
@@ -414,10 +430,10 @@
"<link linkend='sdk-installing-the-sdk'>Installing the SDK</link>"
section for information about how the SDK is
installed.</para>
+
<para>If you are using a build system derived
toolchain, the path you provide for the
- <filename>Toolchain Root Location</filename>
- field is the
+ "Toolchain Root Location" field is the
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
from which you run the
<filename>bitbake</filename> command (e.g
@@ -426,10 +442,12 @@
"<link linkend='sdk-building-an-sdk-installer'>Building an SDK Installer</link>"
section.
</para></listitem>
- <listitem><para><emphasis>Specify Sysroot Location:</emphasis>
+ <listitem><para>
+ <emphasis>Specify Sysroot Location:</emphasis>
This location is where the root filesystem for
the target hardware resides.
</para>
+
<para>This location depends on where you
separately extracted and installed the
target filesystem when you either built
@@ -450,26 +468,27 @@
and you would browse to and select that directory
(e.g. <filename>/home/scottrif/build/MY_QEMU_ROOTFS</filename>).
</para>
+
<para>For more information on how to install the
toolchain and on how to extract and install the
sysroot filesystem, see the
"<link linkend='sdk-building-an-sdk-installer'>Building an SDK Installer</link>"
section.
</para></listitem>
- <listitem><para><emphasis>Select the Target Architecture:</emphasis>
+ <listitem><para>
+ <emphasis>Select the Target Architecture:</emphasis>
The target architecture is the type of hardware
you are going to use or emulate.
- Use the pull-down
- <filename>Target Architecture</filename> menu
+ Use the pull-down "Target Architecture" menu
to make your selection.
The pull-down menu should have the supported
architectures.
If the architecture you need is not listed in
the menu, you will need to build the image.
See the
- "<ulink url='&YOCTO_DOCS_QS_URL;#qs-building-images'>Building Images</ulink>"
- section of the Yocto Project Quick Start for
- more information.
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-building-a-simple-image'>Building a Simple Image</ulink>"
+ section of the Yocto Project Development Tasks
+ Manual for more information.
You can also see the
<ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>wiki</ulink>.
</para></listitem>
@@ -477,7 +496,7 @@
</para>
</section>
- <section id='mars-configuring-the-target-options'>
+ <section id='neon-configuring-the-target-options'>
<title>Configuring the Target Options</title>
<para>
@@ -485,16 +504,17 @@
emulator, or you can choose to run your image on actual
hardware.
<itemizedlist>
- <listitem><para><emphasis>QEMU:</emphasis>
+ <listitem><para>
+ <emphasis>QEMU:</emphasis>
Select this option if you will be using the
QEMU emulator.
If you are using the emulator, you also need to
locate the kernel and specify any custom
options.</para>
- <para>If you selected the
- <filename>Build system derived toolchain</filename>,
- the target kernel you built will be located in
- the
+
+ <para>If you selected the Build system derived
+ toolchain, the target kernel you built will be
+ located in the
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
in
<filename>tmp/deploy/images/<replaceable>machine</replaceable></filename>
@@ -506,10 +526,12 @@
followed by the image (e.g.
<filename>/home/scottrif/poky/build/tmp/deploy/images/qemux86/bzImage-qemux86.bin</filename>).
</para>
+
<para>If you selected the standalone pre-built
toolchain, the pre-built image you downloaded is
located in the directory you specified when you
downloaded the image.</para>
+
<para>Most custom options are for advanced QEMU
users to further customize their QEMU instance.
These options are specified between paired
@@ -526,16 +548,16 @@
The following is an example:
<literallayout class='monospaced'>
serial ‘&lt;-m 256 -full-screen&gt;’
- </literallayout></para>
- <para>
+ </literallayout>
Regardless of the mode, Sysroot is already
defined as part of the Cross-Compiler Options
- configuration in the
- <filename>Sysroot Location:</filename> field.
+ configuration in the "Sysroot Location:" field.
</para></listitem>
- <listitem><para><emphasis>External HW:</emphasis>
+ <listitem><para>
+ <emphasis>External HW:</emphasis>
Select this option if you will be using actual
- hardware.</para></listitem>
+ hardware.
+ </para></listitem>
</itemizedlist>
</para>
@@ -547,7 +569,7 @@
</section>
</section>
- <section id='mars-creating-the-project'>
+ <section id='neon-creating-the-project'>
<title>Creating the Project</title>
<para>
@@ -562,7 +584,7 @@
<note>
Do not use special characters in project names
(e.g. spaces, underscores, etc.). Doing so can
- cause configuration to fail.
+ cause the configuration to fail.
</note>
</para>
@@ -570,31 +592,37 @@
To create a project based on a Yocto template and then display
the source code, follow these steps:
<orderedlist>
- <listitem><para>Select "C Project" from the "File -> New" menu.
+ <listitem><para>
+ Select "C Project" from the "File -> New" menu.
</para></listitem>
- <listitem><para>Expand <filename>Yocto Project SDK Autotools Project</filename>.
+ <listitem><para>
+ Expand "Yocto Project SDK Autotools Project".
</para></listitem>
- <listitem><para>Select <filename>Hello World ANSI C Autotools Projects</filename>.
+ <listitem><para>
+ Select "Hello World ANSI C Autotools Projects".
This is an Autotools-based project based on a Yocto
template.
</para></listitem>
- <listitem><para>Put a name in the <filename>Project name:</filename>
- field.
+ <listitem><para>
+ Put a name in the "Project name:" field.
Do not use hyphens as part of the name
- (e.g. <filename>hello</filename>).
+ (e.g. "hello").
</para></listitem>
- <listitem><para>Click "Next".
+ <listitem><para>
+ Click "Next".
</para></listitem>
- <listitem><para>Add appropriate information in the various
- fields.
+ <listitem><para>
+ Add appropriate information in the various fields.
</para></listitem>
- <listitem><para>Click "Finish".
+ <listitem><para>
+ Click "Finish".
</para></listitem>
- <listitem><para>If the "open perspective" prompt appears,
- click "Yes" so that you in the C/C++ perspective.
+ <listitem><para>
+ If the "open perspective" prompt appears,
+ click "Yes" so that you are in the C/C++ perspective.
</para></listitem>
- <listitem><para>The left-hand navigation pane shows your
- project.
+ <listitem><para>
+ The left-hand navigation pane shows your project.
You can display your source by double clicking the
project's source file.
</para></listitem>
@@ -602,17 +630,18 @@
</para>
</section>
- <section id='mars-configuring-the-cross-toolchains'>
+ <section id='neon-configuring-the-cross-toolchains'>
<title>Configuring the Cross-Toolchains</title>
<para>
The earlier section,
- "<link linkend='mars-configuring-the-eclipse-yocto-plug-in'>Configuring the Mars Eclipse Yocto Plug-in</link>",
+ "<link linkend='neon-configuring-the-eclipse-yocto-plug-in'>Configuring the Neon Eclipse Yocto Plug-in</link>",
sets up the default project configurations.
You can override these settings for a given project by following
these steps:
<orderedlist>
- <listitem><para>Select "Yocto Project Settings" from
+ <listitem><para>
+ Select "Yocto Project Settings" from
the "Project -> Properties" menu.
This selection brings up the Yocto Project Settings
Dialog and allows you to make changes specific to an
@@ -621,32 +650,29 @@
Options for a project are inherited from settings you
provided using the Preferences Dialog as described
earlier in the
- "<link linkend='mars-configuring-the-eclipse-yocto-plug-in'>Configuring the Mars Eclipse Yocto Plug-in</link>" section.
+ "<link linkend='neon-configuring-the-eclipse-yocto-plug-in'>Configuring the Neon Eclipse Yocto Plug-in</link>" section.
The Yocto Project Settings Dialog allows you to override
those default settings for a given project.
</para></listitem>
- <listitem><para>Make or verify your configurations for the
- project and click "OK".
+ <listitem><para>
+ Make or verify your configurations for the project and
+ click "OK".
</para></listitem>
- <listitem><para>Right-click in the navigation pane and
- select "Reconfigure Project" from the pop-up menu.
+ <listitem><para>
+ Right-click in the navigation pane and select
+ "Reconfigure Project" from the pop-up menu.
This selection reconfigures the project by running
- <filename>autogen.sh</filename> in the workspace for
- your project.
- The script also runs <filename>libtoolize</filename>,
- <filename>aclocal</filename>,
- <filename>autoconf</filename>,
- <filename>autoheader</filename>,
- <filename>automake --a</filename>, and
- <filename>./configure</filename>.
- Click on the "Console" tab beneath your source code to
- see the results of reconfiguring your project.
+ <ulink url='https://en.wikipedia.org/wiki/GNU_Build_System'>Autotools GNU utility programs</ulink>
+ such as Autoconf, Automake, and so forth in the
+ workspace for your project.
+ Click on the "Console" tab beneath your source code
+ to see the results of reconfiguring your project.
</para></listitem>
</orderedlist>
</para>
</section>
- <section id='mars-building-the-project'>
+ <section id='neon-building-the-project'>
<title>Building the Project</title>
<para>
@@ -668,8 +694,7 @@
Select the project.
</para></listitem>
<listitem><para>
- Select "Folder" from the
- <filename>File > New</filename> menu.
+ Select "Folder" from the "File > New" menu.
</para></listitem>
<listitem><para>
In the "New Folder" Dialog, select "Link to alternate
@@ -691,7 +716,7 @@
</para>
</section>
- <section id='mars-starting-qemu-in-user-space-nfs-mode'>
+ <section id='neon-starting-qemu-in-user-space-nfs-mode'>
<title>Starting QEMU in User-Space NFS Mode</title>
<para>
@@ -761,7 +786,7 @@
</para>
</section>
- <section id='mars-deploying-and-debugging-the-application'>
+ <section id='neon-deploying-and-debugging-the-application'>
<title>Deploying and Debugging the Application</title>
<para>
@@ -794,58 +819,71 @@
exit out of or close that shell).
</note>
<orderedlist>
- <listitem><para>Select "Debug Configurations..." from the
+ <listitem><para>
+ Select "Debug Configurations..." from the
"Run" menu.</para></listitem>
- <listitem><para>In the left area, expand
- <filename>C/C++Remote Application</filename>.
+ <listitem><para>
+ In the left area, expand
+ "C/C++Remote Application".
</para></listitem>
- <listitem><para>Locate your project and select it to bring
+ <listitem><para>
+ Locate your project and select it to bring
up a new tabbed view in the Debug Configurations Dialog.
</para></listitem>
- <listitem><para>Click on the "Debugger" tab to see the
+ <listitem><para>
+ Click on the "Debugger" tab to see the
cross-tool debugger you are using.
Be sure to change to the debugger perspective in Eclipse.
</para></listitem>
- <listitem><para>Click on the "Main" tab.
+ <listitem><para>
+ Click on the "Main" tab.
</para></listitem>
<listitem><para>Create a new connection to the QEMU instance
by clicking on "new".</para></listitem>
- <listitem><para>Select <filename>SSH</filename>, which means
+ <listitem><para>
+ Select "SSH", which means
Secure Socket Shell.
Optionally, you can select a TCF connection instead.
</para></listitem>
- <listitem><para>Click "Next".
+ <listitem><para>
+ Click "Next".
</para></listitem>
- <listitem><para>Clear out the "Connection name" field and
+ <listitem><para>
+ Clear out the "Connection name" field and
enter any name you want for the connection.
</para></listitem>
- <listitem><para>Put the IP address for the connection in
+ <listitem><para>
+ Put the IP address for the connection in
the "Host" field.
- For QEMU, the default is <filename>192.168.7.2</filename>.
+ For QEMU, the default is "192.168.7.2".
However, if a previous QEMU session did not exit
cleanly, the IP address increments (e.g.
- <filename>192.168.7.3</filename>).
+ "192.168.7.3").
<note>
You can find the IP address for the current QEMU
session by looking in the xterm that opens when
you launch QEMU.
</note>
</para></listitem>
- <listitem><para>Enter <filename>root</filename>, which
+ <listitem><para>
+ Enter "root", which
is the default for QEMU, for the "User" field.
Be sure to leave the password field empty.
</para></listitem>
<listitem><para>Click "Finish" to close the
New Connections Dialog.
</para></listitem>
- <listitem><para>If necessary, use the drop-down menu now in the
+ <listitem><para>
+ If necessary, use the drop-down menu now in the
"Connection" field and pick the IP Address you entered.
</para></listitem>
- <listitem><para>Assuming you are connecting as the root user,
+ <listitem><para>
+ Assuming you are connecting as the root user,
which is the default for QEMU x86-64 SDK images provided by
the Yocto Project, in the "Remote Absolute File Path for
C/C++ Application" field, browse to
- <filename>/home/root</filename>.
+ <filename>/home/root/</filename><replaceable>ProjectName</replaceable>
+ (e.g. <filename>/home/root/hello</filename>).
You could also browse to any other path you have write
access to on the target such as
<filename>/usr/bin</filename>.
@@ -885,15 +923,17 @@
<listitem><para>
Be sure you change to the "Debug" perspective in Eclipse.
</para></listitem>
- <listitem><para>Click "Debug"
+ <listitem><para>
+ Click "Debug"
</para></listitem>
- <listitem><para>Accept the debug perspective.
+ <listitem><para>
+ Accept the debug perspective.
</para></listitem>
</orderedlist>
</para>
</section>
- <section id='mars-using-Linuxtools'>
+ <section id='neon-using-Linuxtools'>
<title>Using Linuxtools</title>
<para>
diff --git a/documentation/sdk-manual/sdk-appendix-obtain.xml b/documentation/sdk-manual/sdk-appendix-obtain.xml
index d35cc0a3c90..2cadcc1e909 100644
--- a/documentation/sdk-manual/sdk-appendix-obtain.xml
+++ b/documentation/sdk-manual/sdk-appendix-obtain.xml
@@ -25,32 +25,33 @@
Go to <ulink url='&YOCTO_TOOLCHAIN_DL_URL;'></ulink>
</para></listitem>
<listitem><para>
- <emphasis>Open the Folder for Your Development System:</emphasis>
- Open the folder that matches your host development system
+ <emphasis>Open the Folder for Your Build Host:</emphasis>
+ Open the folder that matches your
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>build host</ulink>
(i.e. <filename>i686</filename> for 32-bit machines or
<filename>x86_64</filename> for 64-bit machines).
</para></listitem>
<listitem><para>
<emphasis>Locate and Download the SDK Installer:</emphasis>
You need to find and download the installer appropriate for
- your development system, target hardware, and image type.
+ your build host, target hardware, and image type.
</para>
<para>The installer files (<filename>*.sh</filename>) follow
this naming convention:
<literallayout class='monospaced'>
- poky-eglibc-<replaceable>host_system</replaceable>-core-image-<replaceable>type</replaceable>-<replaceable>arch</replaceable>-toolchain-ext-<replaceable>release</replaceable>.sh
+ poky-glibc-<replaceable>host_system</replaceable>-core-image-<replaceable>type</replaceable>-<replaceable>arch</replaceable>-toolchain[-ext]-<replaceable>release</replaceable>.sh
Where:
<replaceable>host_system</replaceable> is a string representing your development system:
- i686 or x86_64.
+ "i686" or "x86_64"
- <replaceable>type</replaceable> is a string representing either a "sato" or "minimal"
- image.
+ <replaceable>type</replaceable> is a string representing the image:
+ "sato" or "minimal"
<replaceable>arch</replaceable> is a string representing the target architecture:
- aarch64, armv5e, core2-64, coretexa8hf-neon, i586, mips3242,
- mips64, or ppc7400.
+ "aarch64", "armv5e", "core2-64", "coretexa8hf-neon", "i586", "mips32r2",
+ "mips64", or "ppc7400"
<replaceable>release</replaceable> is the version of Yocto Project.
@@ -65,10 +66,10 @@
libraries appropriate for developing against those images.
</para>
- <para>For example, if your host development system is a
- 64-bit x86 system and you are need an extended SDK for a
- 64-bit core2 target, go into the <filename>x86_64</filename>
- folder and download the following installer:
+ <para>For example, if your build host is a 64-bit x86 system
+ and you need an extended SDK for a 64-bit core2 target, go
+ into the <filename>x86_64</filename> folder and download the
+ following installer:
<literallayout class='monospaced'>
poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-&DISTRO;.sh
</literallayout>
@@ -97,7 +98,7 @@
<title>Building an SDK Installer</title>
<para>
- As an alternative to locating and downloading a SDK installer,
+ As an alternative to locating and downloading an SDK installer,
you can build the SDK installer.
Follow these steps:
<orderedlist>
@@ -105,7 +106,7 @@
<emphasis>Set Up the Build Environment:</emphasis>
Be sure you are set up to use BitBake in a shell.
See the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#setting-up-the-development-host-to-use-the-yocto-project'>Setting Up the Development Host to Use the Yocto Project</ulink>"
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-preparing-the-build-host'>Preparing the Build Host</ulink>"
section in the Yocto Project Development Tasks Manual for
information on how to get a build host ready that is either a
native Linux machine or a machine that uses CROPS.
@@ -138,8 +139,7 @@
Among other things, the script creates the
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>,
which is <filename>build</filename> in this case
- and is located in the
- <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>.
+ and is located in the Source Directory.
After the script runs, your current working directory
is set to the <filename>build</filename> directory.
</para></listitem>
@@ -148,17 +148,31 @@
Check to be sure that your
<ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
variable in the <filename>local.conf</filename> file in your
- <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
- matches the architecture for which you are building.
+ Build Directory matches the architecture for which you are
+ building.
</para></listitem>
<listitem><para>
<emphasis>Make Sure Your SDK Machine is Correctly Set:</emphasis>
If you are building a toolchain designed to run on an
architecture that differs from your current development host
- machine (i.e. the build machine), be sure that the
+ machine (i.e. the build host), be sure that the
<ulink url='&YOCTO_DOCS_REF_URL;#var-SDKMACHINE'><filename>SDKMACHINE</filename></ulink>
variable in the <filename>local.conf</filename> file in your
Build Directory is correctly set.
+ <note>
+ If you are building an SDK installer for the Extensible
+ SDK, the <filename>SDKMACHINE</filename> value must be
+ set for the architecture of the machine you are using to
+ build the installer.
+ If <filename>SDKMACHINE</filename> is not set appropriately,
+ the build fails and provides an error message similar to
+ the following:
+ <literallayout class='monospaced'>
+ The extensible SDK can currently only be built for the same architecture as the machine being built on - SDK_ARCH is
+ set to i686 (likely via setting SDKMACHINE) which is different from the architecture of the build machine (x86_64).
+ Unable to continue.
+ </literallayout>
+ </note>
</para></listitem>
<listitem><para>
<emphasis>Build the SDK Installer:</emphasis>
@@ -174,7 +188,7 @@
<literallayout class='monospaced'>
$ bitbake <replaceable>image</replaceable> -c populate_sdk_ext
</literallayout>
- These commands result in a SDK installer that contains the
+ These commands produce an SDK installer that contains the
sysroot that matches your target root filesystem.</para>
<para>When the <filename>bitbake</filename> command completes,
@@ -183,16 +197,18 @@
<note><title>Notes</title>
<itemizedlist>
<listitem><para>
- By default, this toolchain does not build static
- binaries.
+ By default, the previous BitBake command does not
+ build static binaries.
If you want to use the toolchain to build these
types of libraries, you need to be sure your SDK
has the appropriate static development libraries.
Use the
<ulink url='&YOCTO_DOCS_REF_URL;#var-TOOLCHAIN_TARGET_TASK'><filename>TOOLCHAIN_TARGET_TASK</filename></ulink>
variable inside your <filename>local.conf</filename>
- file to install the appropriate library packages
- in the SDK.
+ file before building the SDK installer.
+ Doing so ensures that the eventual SDK installation
+ process installs the appropriate library packages
+ as part of the SDK.
Following is an example using
<filename>libc</filename> static development
libraries:
@@ -203,7 +219,7 @@
<listitem><para>
For additional information on building the
installer, see the
- <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>Cookbook guide to Making an Eclipse Debug Capable Image</ulink>
+ <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>Cookbook guide to Making an <trademark class='trade'>Eclipse</trademark> Debug Capable Image</ulink>
wiki page.
</para></listitem>
</itemizedlist>
@@ -262,32 +278,40 @@
Root Filesystem Image File:</emphasis>
You need to find and download the root filesystem image
file that is appropriate for your target system.
- These files are kept in the
+ These files are kept in machine-specific folders in the
<ulink url='&YOCTO_DL_URL;/releases/yocto/yocto-&DISTRO;/machines/'>Index of Releases</ulink>
in the "machines" directory.</para>
- <para>The "machines" directory contains tarballs
- (<filename>*.tar.bz2</filename>) for supported machines.
- The directory also contains flattened root filesystem
+ <para>The machine-specific folders of the "machines" directory
+ contain tarballs (<filename>*.tar.bz2</filename>) for supported
+ machines.
+ These directories also contain flattened root filesystem
image files (<filename>*.ext4</filename>), which you can use
with QEMU directly.</para>
<para>The pre-built root filesystem image files
follow these naming conventions:
<literallayout class='monospaced'>
+<!--
+ core-image-<replaceable>profile</replaceable>-<replaceable>arch</replaceable>-<replaceable>date_time</replaceable>.rootfs.tar.bz2
+-->
core-image-<replaceable>profile</replaceable>-<replaceable>arch</replaceable>.tar.bz2
Where:
<replaceable>profile</replaceable> is the filesystem image's profile:
- lsb, lsb-dev, lsb-sdk, lsb-qt3, minimal, minimal-dev, sato,
- sato-dev, sato-sdk, minimal-initramfs, or sdk-ptest. For
- information on these types of image profiles, see the
- "Images" chapter in the Yocto Project Reference Manual.
+ lsb, lsb-dev, lsb-sdk, minimal, minimal-dev, minimal-initramfs,
+ sato, sato-dev, sato-sdk, sato-sdk-ptest. For information on
+ these types of image profiles, see the "<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>" chapter in
+ the Yocto Project Reference Manual.
<replaceable>arch</replaceable> is a string representing the target architecture:
- beaglebone, edgerouter, genericx86, genericx86-64, mpc8315e-rdb,
- qemuarm, qemuarm64, qemumips, qemumips64, qemuppc, qemux86, or
- qemux86-64.
+ beaglebone-yocto, beaglebone-yocto-lsb, edgerouter, edgerouter-lsb,
+ genericx86, genericx86-64, genericx86-64-lsb, genericx86-lsb,
+ mpc8315e-rdb, mpc8315e-rdb-lsb, and qemu*.
+
+<!-->
+ <replaceable>date_time</replaceable> is a date and time stamp.
+-->
</literallayout>
The root filesystems provided by the Yocto Project are based
@@ -295,26 +319,28 @@
<filename>core-image-minimal</filename> images.
</para>
- <para>For example, if your target hardware system is a
- BeagleBone board and your image is a
- <filename>core-image-minimal</filename> image, you need
- to download the following root filesystem image file:
+ <para>For example, if you plan on using a BeagleBone device
+ as your target hardware and your image is a
+ <filename>core-image-sato-sdk</filename>
+ image, you can download the following file:
<literallayout class='monospaced'>
- core-image-minimal-beaglebone.tar.bz2
+ core-image-sato-sdk-beaglebone-yocto.tar.bz2
</literallayout>
</para></listitem>
<listitem><para>
<emphasis>Initialize the Cross-Development Environment:</emphasis>
- You must <filename>source</filename>
- the cross-development environment setup script to establish
- necessary environment variables.</para>
+ You must <filename>source</filename> the cross-development
+ environment setup script to establish necessary environment
+ variables.</para>
<para>This script is located in the top-level directory in
which you installed the toolchain (e.g.
<filename>poky_sdk</filename>).</para>
- <para>Following is an example for the Core2 64-bit
- architecture:
+ <para>Following is an example based on the toolchain installed
+ in the
+ "<link linkend='sdk-locating-pre-built-sdk-installers'>Locating Pre-Built SDK Installers</link>"
+ section:
<literallayout class='monospaced'>
$ source ~/poky_sdk/environment-setup-core2-64-poky-linux
</literallayout>
@@ -327,14 +353,14 @@
<para>Following is an example command that extracts the root
filesystem from a previously built root filesystem image that
was downloaded from the
- <ulink url='&YOCTO_DOCS_GS_URL;#index-downloads'>Index of Releases</ulink>.
+ <ulink url='&YOCTO_DOCS_OM_URL;#index-downloads'>Index of Releases</ulink>.
This command extracts the root filesystem into the
<filename>core2-64-sato</filename> directory:
<literallayout class='monospaced'>
- $ runqemu-extract-sdk ~/Downloads/core-image-sato-core2-64.tar.bz2 ~/core2-64-sato
+ $ runqemu-extract-sdk ~/Downloads/core-image-sato-sdk-beaglebone-yocto.tar.bz2 ~/beaglebone-sato
</literallayout>
You could now point to the target sysroot at
- <filename>core2-64-sato</filename>.
+ <filename>beablebone-sato</filename>.
</para></listitem>
</orderedlist>
</para>
@@ -350,7 +376,7 @@
</para>
<para>
- <imagedata fileref="figures/sdk-installed-standard-sdk-directory.png" scale="60" align="center" />
+ <imagedata fileref="figures/sdk-installed-standard-sdk-directory.png" scale="80" align="center" />
</para>
<para>
@@ -391,7 +417,7 @@
</para>
<para>
- <imagedata fileref="figures/sdk-installed-extensible-sdk-directory.png" scale="60" align="center" />
+ <imagedata fileref="figures/sdk-installed-extensible-sdk-directory.png" scale="80" align="center" />
</para>
<para>
@@ -406,8 +432,8 @@
<para>
Of note in the directory structure are an environment setup script
for the SDK, a configuration file for the target, a version file for
- the target, and a log file for the OpenEmbedded build system
- preparation script run by the installer.
+ the target, and log files for the OpenEmbedded build system
+ preparation script run by the installer and BitBake.
</para>
<para>
@@ -415,11 +441,9 @@
portions of the file or directory name.
For example,
<replaceable>install_dir</replaceable> is the directory where the SDK
- is installed, which is <filename>poky_sdk</filename> by default.
+ is installed, which is <filename>poky_sdk</filename> by default, and
<replaceable>target</replaceable> represents the target
- architecture (e.g. <filename>i586</filename>) and
- <replaceable>host</replaceable> represents the development system's
- architecture (e.g. <filename>x86_64</filename>).
+ architecture (e.g. <filename>i586</filename>).
</para>
</section>
diff --git a/documentation/sdk-manual/sdk-eclipse-project.xml b/documentation/sdk-manual/sdk-eclipse-project.xml
index 76963a1b51a..15a9ae75351 100644
--- a/documentation/sdk-manual/sdk-eclipse-project.xml
+++ b/documentation/sdk-manual/sdk-eclipse-project.xml
@@ -12,15 +12,34 @@
application all from within Eclipse.
This chapter describes general workflow using the SDK and Eclipse
and how to configure and set up Eclipse.
+ <note><title>Notes</title>
+ <itemizedlist>
+ <listitem><para>
+ This chapter assumes development of applications on top of
+ an image prepared using the Yocto Project.
+ As such, inclusion of a pre-built image or the building of
+ an image is included in the workflow.
+ </para></listitem>
+ <listitem><para>
+ The chapter also assumes development on a build host that
+ is set up to use the Yocto Project.
+ Realize that you can easily use Eclipse and the Yocto
+ Project plug-in to develop an application for any number
+ of images developed and tested on different machines.
+ </para></listitem>
+ </itemizedlist>
+ </note>
</para>
- <section id='workflow-using-eclipse'>
- <title>Workflow Using <trademark class='trade'>Eclipse</trademark></title>
+ <section id='application-development-workflow-using-eclipse'>
+ <title>Application Development Workflow Using <trademark class='trade'>Eclipse</trademark></title>
<para>
- The following figure and supporting list summarize the
- application development general workflow that employs both the
- SDK Eclipse.
+ The following figure and supporting list summarize a
+ general workflow for application development that uses the
+ SDK within the Eclipse IDE.
+ The application developed runs on top of an image created using
+ the Yocto Project.
</para>
<para>
@@ -31,24 +50,30 @@
<para>
<orderedlist>
<listitem><para>
- <emphasis>Prepare the host system for the Yocto
- Project</emphasis>:
- See
- "<ulink url='&YOCTO_DOCS_REF_URL;#detailed-supported-distros'>Supported Linux Distributions</ulink>"
- and
- "<ulink url='&YOCTO_DOCS_REF_URL;#required-packages-for-the-host-development-system'>Required Packages for the Host Development System</ulink>"
- sections both in the Yocto Project Reference Manual for
- requirements.
- In particular, be sure your host system has the
- <filename>xterm</filename> package installed.
+ <emphasis>Prepare the Host System for the Yocto Project</emphasis>:
+ Because this example workflow assumes development on a
+ system set up to use the Yocto Project, you need to be
+ sure your
+ <ulink url='&YOCTO_DOCS_REF_URL;#hardware-build-system-term'>build host</ulink>
+ can use the Yocto Project.
+ See the
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-preparing-the-build-host'>Preparing the Build Host</ulink>"
+ section in the Yocto Project Development Tasks Manual for
+ information on how to set up your build host.
+ <note>
+ Be sure you install the "xterm" package, which is a
+ <ulink url='&YOCTO_DOCS_REF_URL;#required-packages-for-the-build-host'>graphical and Eclipse plug-in extra</ulink>
+ needed by Eclipse.
+ </note>
</para></listitem>
<listitem><para>
- <emphasis>Secure the Yocto Project kernel target
- image</emphasis>:
- You must have a target kernel image that has been built
- using the OpenEmbedded build system.</para>
- <para>Depending on whether the Yocto Project has a
- pre-built image that matches your target architecture
+ <emphasis>Secure the Yocto Project Kernel Target Image</emphasis>:
+ This example workflow assumes application development on
+ top of an image built using the Yocto Project.
+ Depending on whether you are using a pre-built image
+ that matches your target architecture or you are using an
+ image you build using the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded Build System</ulink>
and where you are going to run the image while you
develop your application (QEMU or real hardware), the
area from which you get the image differs.
@@ -66,7 +91,8 @@
<filename>machines/qemu</filename></ulink> if
your target architecture is supported and you
are going to develop and test your application
- using the QEMU emulator.
+ using the
+ <ulink url='&YOCTO_DOCS_DEV_URL;#dev-manual-qemu'>QEMU Emulator</ulink>.
</para></listitem>
<listitem><para>
Build your image if you cannot find a pre-built
@@ -78,6 +104,10 @@
"<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#using-devtool-to-patch-the-kernel'>Using <filename>devtool</filename> to Patch the Kernel</ulink>"
section in the Yocto Project Linux Kernel
Development Manual for an example.
+ You can also see the
+ "<ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage#Making_a_Suitable_Qemux86_Image'>Making a Suitable Qemux86 Image</ulink>"
+ wiki for steps needed to build an image suitable
+ for QEMU and for debugging within the Eclipse IDE.
</para></listitem>
</itemizedlist>
</para></listitem>
@@ -91,10 +121,10 @@
section.
</para></listitem>
<listitem><para>
- <emphasis>Secure the target root filesystem
- and the Cross-development toolchain</emphasis>:
+ <emphasis>Secure the Target Root Filesystem and the Cross-Development Toolchain</emphasis>:
You need to find and download the appropriate root
filesystem and the cross-development toolchain.</para>
+
<para>You can find the tarballs for the root filesystem
in the same area used for the kernel image.
Depending on the type of image you are running, the
@@ -102,6 +132,7 @@
For example, if you are developing an application that
runs on an image that supports Sato, you need to get a
root filesystem that supports Sato.</para>
+
<para>You can find the cross-development toolchains at
<ulink url='&YOCTO_TOOLCHAIN_DL_URL;'><filename>toolchains</filename></ulink>.
Be sure to get the correct toolchain for your
@@ -118,22 +149,18 @@
section.
Another helpful resource for building an installer
is the
- <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>Cookbook guide to Making an Eclipse Debug Capable Image</ulink>
+ "<ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>Cookbook guide to Making an Eclipse Debug Capable Image</ulink>"
wiki page.
</note>
</para></listitem>
<listitem><para>
- <emphasis>Create and build your application</emphasis>:
- At this point, you need to have source files for your
- application.
+ <emphasis>Create and Build Your Application</emphasis>:
+ You need to have source files for your application.
Once you have the files, you can use the Eclipse IDE
to import them and build the project.
- If you are not using Eclipse, you need to use the
- cross-development tools you have installed to create
- the image.</para></listitem>
+ </para></listitem>
<listitem><para>
- <emphasis>Deploy the image with the
- application</emphasis>:
+ <emphasis>Deploy the Image With the Application</emphasis>:
Using the Eclipse IDE, you can deploy your image to the
hardware or to QEMU through the project's preferences.
You can also use Eclipse to load and test your image
@@ -144,7 +171,7 @@
for information on using QEMU.
</para></listitem>
<listitem><para>
- <emphasis>Test and debug the application</emphasis>:
+ <emphasis>Test and Debug the Application</emphasis>:
Once your application is deployed, you need to test it.
Within the Eclipse IDE, you can use the debugging
environment along with supported performance enhancing
@@ -179,25 +206,25 @@
collection of power data, collection of latency data, and
collection of performance data.
<note>
- This release of the Yocto Project supports both the Neon
- and Mars versions of the Eclipse IDE.
- This section provides information on how to use the Neon
+ This release of the Yocto Project supports both the Oxygen
+ and Neon versions of the Eclipse IDE.
+ This section provides information on how to use the Oxygen
release with the Yocto Project.
- For information on how to use the Mars version of Eclipse
+ For information on how to use the Neon version of Eclipse
with the Yocto Project, see
- "<link linkend='sdk-appendix-latest-yp-eclipse-plug-in'>Appendix C</link>.
+ "<link linkend='sdk-appendix-neon-yp-eclipse-plug-in'>Appendix D</link>".
</note>
</para>
- <section id='neon-setting-up-the-eclipse-ide'>
- <title>Setting Up the Neon Version of the Eclipse IDE</title>
+ <section id='oxygen-setting-up-the-eclipse-ide'>
+ <title>Setting Up the Oxygen Version of the Eclipse IDE</title>
<para>
To develop within the Eclipse IDE, you need to do the
following:
<orderedlist>
<listitem><para>
- Install the Neon version of the Eclipse IDE.
+ Install the Oxygen version of the Eclipse IDE.
</para></listitem>
<listitem><para>
Configure the Eclipse IDE.
@@ -217,17 +244,17 @@
</note>
</para>
- <section id='neon-installing-eclipse-ide'>
- <title>Installing the Neon Eclipse IDE</title>
+ <section id='oxygen-installing-eclipse-ide'>
+ <title>Installing the Oxygen Eclipse IDE</title>
<para>
Follow these steps to locate, install, and configure
- Neon Eclipse:
+ Oxygen Eclipse:
<orderedlist>
<listitem><para>
- <emphasis>Locate the Neon Download:</emphasis>
+ <emphasis>Locate the Oxygen Download:</emphasis>
Open a browser and go to
- <ulink url='http://www.eclipse.org/neon/'>http://www.eclipse.org/neon/</ulink>.
+ <ulink url='http://www.eclipse.org/oxygen/'>http://www.eclipse.org/oxygen/</ulink>.
</para></listitem>
<listitem><para>
<emphasis>Download the Tarball:</emphasis>
@@ -262,36 +289,61 @@
</para></listitem>
<listitem><para>
<emphasis>Install the Software:</emphasis>
- Accept the default "cpp-neon" directory and
- click "Install".
- Accept any license agreements and approve any
- certificates.
+ Click "Install" to begin the installation.
+ Accept all the certificates and any license
+ agreements.
+ Click "Install" again to finish the installation.
</para></listitem>
<listitem><para>
- <emphasis>Launch Neon:</emphasis>
- Click the "Launch" button and accept the
- default "workspace".
+ <emphasis>Launch Oxygen:</emphasis>
+ Accept the default "workspace" and click the
+ "Launch" button.
+ You should see the Eclipse welcome page from which
+ can click "workbench" to enter your workspace.
+ <note>
+ The executable for Eclipse is located in the
+ <filename>eclipse/cpp-oxygen/eclipse</filename>
+ folder.
+ To launch Eclipse outside of the installation
+ process, simply execute that binary.
+ Here is an example:
+ <literallayout class='monospaced'>
+ $ ~/eclipse/cpp-oxygen/eclipse/eclipse
+ </literallayout>
+ </note>
</para></listitem>
</orderedlist>
</para>
</section>
- <section id='neon-configuring-the-mars-eclipse-ide'>
- <title>Configuring the Neon Eclipse IDE</title>
+ <section id='oxygen-configuring-the-eclipse-ide'>
+ <title>Configuring the Oxygen Eclipse IDE</title>
<para>
- Follow these steps to configure the Neon Eclipse IDE.
- <note>
- Depending on how you installed Eclipse and what
- you have already done, some of the options will
- not appear.
- If you cannot find an option as directed by the
- manual, it has already been installed.
+ Follow these steps to configure the Oxygen Eclipse IDE.
+ <note><title>Notes</title>
+ <itemizedlist>
+ <listitem><para>
+ Depending on how you installed Eclipse and what
+ you have already done, some of the options do
+ not appear.
+ If you cannot find an option as directed by the
+ manual, it has already been installed.
+ </para></listitem>
+ <listitem><para>
+ If you want to see all options regardless of
+ whether they are installed or not, deselect the
+ "Hide items that are already installed"
+ check box.
+ </para></listitem>
+ </itemizedlist>
</note>
<orderedlist>
<listitem><para>
Be sure Eclipse is running and you are in your
workbench.
+ Just click "workbench" if you are not in your
+ default workspace.
</para></listitem>
<listitem><para>
Select "Install New Software" from the "Help"
@@ -299,7 +351,7 @@
</para></listitem>
<listitem><para>
Select
- "Neon - http://download.eclipse.org/releases/neon"
+ "Oxygen - http://download.eclipse.org/releases/oxygen"
from the "Work with:" pull-down menu.
</para></listitem>
<listitem><para>
@@ -331,28 +383,29 @@
</para></listitem>
<listitem><para>
Complete the installation by clicking through
- appropriate "Next" and "Finish" buttons.
+ appropriate "Next" and "Finish" buttons and then
+ restart the Eclipse IDE.
</para></listitem>
</orderedlist>
</para>
</section>
- <section id='neon-installing-the-eclipse-yocto-plug-in'>
- <title>Installing or Accessing the Neon Eclipse Yocto Plug-in</title>
+ <section id='oxygen-installing-the-eclipse-yocto-plug-in'>
+ <title>Installing or Accessing the Oxygen Eclipse Yocto Plug-in</title>
<para>
You can install the Eclipse Yocto Plug-in into the
Eclipse IDE one of two ways: use the Yocto Project's
- Eclipse Update site to install the pre-built plug-in
+ Eclipse Update site to install the pre-built plug-in,
or build and install the plug-in from the latest
source code.
</para>
- <section id='neon-new-software'>
+ <section id='oxygen-new-software'>
<title>Installing the Pre-built Plug-in from the Yocto Project Eclipse Update Site</title>
<para>
- To install the Neon Eclipse Yocto Plug-in from the
+ To install the Oxygen Eclipse Yocto Plug-in from the
update site, follow these steps:
<orderedlist>
<listitem><para>
@@ -367,17 +420,15 @@
</para></listitem>
<listitem><para>
Enter
- <filename>&ECLIPSE_DL_PLUGIN_URL;/neon</filename>
+ <filename>&ECLIPSE_DL_PLUGIN_URL;/oxygen</filename>
in the URL field and provide a meaningful
name in the "Name" field.
</para></listitem>
<listitem><para>
- Click "OK" to have the entry added
- to the "Work with:" drop-down list.
- </para></listitem>
- <listitem><para>
- Select the entry for the plug-in
- from the "Work with:" drop-down list.
+ Click "OK" to have the entry automatically
+ populate the "Work with:" field and to have
+ the items for installation appear in the window
+ below.
</para></listitem>
<listitem><para>
Check the boxes next to the following:
@@ -401,16 +452,21 @@
</para>
</section>
- <section id='neon-zip-file-method'>
+ <section id='oxygen-zip-file-method'>
<title>Installing the Plug-in Using the Latest Source Code</title>
<para>
- To install the Neon Eclipse Yocto Plug-in from the
+ To install the Oxygen Eclipse Yocto Plug-in from the
latest source code, follow these steps:
<orderedlist>
<listitem><para>
- Be sure your development system
- has JDK 1.8+
+ Be sure your build host has JDK version 1.8
+ or greater.
+ On a Linux build host you can determine the
+ version using the following command:
+ <literallayout class='monospaced'>
+ $ java -version
+ </literallayout>
</para></listitem>
<listitem><para>
Install X11-related packages:
@@ -430,12 +486,12 @@
Use Git to create the correct tag:
<literallayout class='monospaced'>
$ cd ~/eclipse-yocto
- $ git checkout neon/yocto-&DISTRO;
+ $ git checkout -b oxygen/&DISTRO_NAME_NO_CAP; remotes/origin/oxygen/&DISTRO_NAME_NO_CAP;
</literallayout>
This creates a local tag named
- <filename>neon/yocto-&DISTRO;</filename>
+ <filename>oxygen/&DISTRO_NAME_NO_CAP;</filename>
based on the branch
- <filename>origin/neon-master</filename>.
+ <filename>origin/oxygen/&DISTRO_NAME_NO_CAP;</filename>.
You are put into a detached HEAD state,
which is fine since you are only going to
be building and not developing.
@@ -469,11 +525,11 @@
<para>
Following is an example:
<literallayout class='monospaced'>
- $ ECLIPSE_HOME=/home/scottrif/eclipse-yocto/scripts/eclipse ./build.sh -l neon/yocto-&DISTRO; master yocto-&DISTRO; 2>&amp;1 | tee build.log
+ $ ECLIPSE_HOME=/home/scottrif/eclipse-yocto/scripts/eclipse ./build.sh -l oxygen/&DISTRO_NAME_NO_CAP; master yocto-&DISTRO; 2>&amp;1 | tee build.log
</literallayout>
The previous example command adds the tag
you need for
- <filename>mars/yocto-&DISTRO;</filename>
+ <filename>oxygen/&DISTRO_NAME_NO_CAP;</filename>
to <filename>HEAD</filename>, then tells
the build script to use the local (-l) Git
checkout for the build.
@@ -533,17 +589,17 @@
<para>
At this point you should be able to configure the
Eclipse Yocto Plug-in as described in the
- "<link linkend='mars-configuring-the-eclipse-yocto-plug-in'>Configuring the Neon Eclipse Yocto Plug-in</link>"
+ "<link linkend='oxygen-configuring-the-eclipse-yocto-plug-in'>Configuring the Oxygen Eclipse Yocto Plug-in</link>"
section.
</para>
</section>
</section>
- <section id='neon-configuring-the-eclipse-yocto-plug-in'>
- <title>Configuring the Neon Eclipse Yocto Plug-in</title>
+ <section id='oxygen-configuring-the-eclipse-yocto-plug-in'>
+ <title>Configuring the Oxygen Eclipse Yocto Plug-In</title>
<para>
- Configuring the Neon Eclipse Yocto Plug-in involves
+ Configuring the Oxygen Eclipse Yocto Plug-in involves
setting the Cross Compiler options and the Target
options.
The configurations you choose become the default
@@ -555,7 +611,7 @@
<para>
To start, you need to do the following from within the
Eclipse IDE:
- <itemizedlist>
+ <orderedlist>
<listitem><para>
Choose "Preferences" from the "Window" menu to
display the Preferences Dialog.
@@ -564,7 +620,7 @@
Click "Yocto Project SDK" to display
the configuration screen.
</para></listitem>
- </itemizedlist>
+ </orderedlist>
The following sub-sections describe how to configure
the plug-in.
<note>
@@ -572,12 +628,12 @@
example for preparing a QEMU image for use with
Eclipse is referenced as the "wiki" and is linked
to the example on the
- <ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'> Cookbook guide to Making an Eclipse Debug Capable Image</ulink>
+ "<ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'> Cookbook guide to Making an Eclipse Debug Capable Image</ulink>"
wiki page.
</note>
</para>
- <section id='neon-configuring-the-cross-compiler-options'>
+ <section id='oxygen-configuring-the-cross-compiler-options'>
<title>Configuring the Cross-Compiler Options</title>
<para>
@@ -589,18 +645,13 @@
architecture.
<itemizedlist>
<listitem><para>
- <emphasis>Selecting the Toolchain
- Type:</emphasis>
- Choose between
- <filename>Standalone pre-built toolchain</filename>
- and
- <filename>Build system derived toolchain</filename>
- for Cross Compiler Options.
+ <emphasis>Selecting the Toolchain Type:</emphasis>
+ Choose between "Standalone pre-built toolchain"
+ and "Build system derived toolchain" for
+ Cross Compiler Options.
<itemizedlist>
<listitem><para>
- <emphasis>
- <filename>Standalone Pre-built Toolchain:</filename>
- </emphasis>
+ <emphasis>Standalone Pre-built Toolchain:</emphasis>
Select this type when you are using
a stand-alone cross-toolchain.
For example, suppose you are an
@@ -615,29 +666,24 @@
for an existing image.
</para></listitem>
<listitem><para>
- <emphasis>
- <filename>Build System Derived Toolchain:</filename>
- </emphasis>
+ <emphasis>Build System Derived Toolchain:</emphasis>
Select this type if you built the
toolchain as part of the
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>.
- When you select
- <filename>Build system derived toolchain</filename>,
- you are using the toolchain built
- and bundled inside the Build
+ When you select "Build system derived
+ toolchain", you are using the toolchain
+ built and bundled inside the Build
Directory.
For example, suppose you created a
suitable image using the steps in the
<ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>wiki</ulink>.
In this situation, you would select
- the
- <filename>Build system derived toolchain</filename>.
+ "Build system derived toolchain".
</para></listitem>
</itemizedlist>
</para></listitem>
<listitem><para>
- <emphasis>Specify the Toolchain Root
- Location:</emphasis>
+ <emphasis>Specify the Toolchain Root Location:</emphasis>
If you are using a stand-alone pre-built
toolchain, you should be pointing to where
it is installed (e.g.
@@ -646,11 +692,10 @@
"<link linkend='sdk-installing-the-sdk'>Installing the SDK</link>"
section for information about how the SDK is
installed.</para>
+
<para>If you are using a build system
derived toolchain, the path you provide for
- the
- <filename>Toolchain Root Location</filename>
- field is the
+ the "Toolchain Root Location" field is the
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
from which you run the
<filename>bitbake</filename> command (e.g
@@ -661,11 +706,11 @@
section.
</para></listitem>
<listitem><para>
- <emphasis>Specify Sysroot Location:
- </emphasis>
+ <emphasis>Specify Sysroot Location:</emphasis>
This location is where the root filesystem
for the target hardware resides.
</para>
+
<para>This location depends on where you
separately extracted and installed the
target filesystem when you either built
@@ -682,12 +727,12 @@
<ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>wiki</ulink>.
If so, the
<filename>MY_QEMU_ROOTFS</filename>
- directory is found in the
- <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
+ directory is found in the Build Directory
and you would browse to and select that
directory (e.g.
<filename>/home/scottrif/poky/build/MY_QEMU_ROOTFS</filename>).
</para>
+
<para>For more information on how to
install the toolchain and on how to extract
and install the sysroot filesystem, see the
@@ -695,12 +740,10 @@
section.
</para></listitem>
<listitem><para>
- <emphasis>Select the Target Architecture:
- </emphasis>
+ <emphasis>Select the Target Architecture:</emphasis>
The target architecture is the type of
hardware you are going to use or emulate.
- Use the pull-down
- <filename>Target Architecture</filename>
+ Use the pull-down "Target Architecture"
menu to make your selection.
The pull-down menu should have the
supported architectures.
@@ -708,9 +751,9 @@
in the menu, you will need to build the
image.
See the
- "<ulink url='&YOCTO_DOCS_QS_URL;#qs-building-images'>Building Images</ulink>"
- section of the Yocto Project Quick Start
- for more information.
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-building-a-simple-image'>Building a Simple Image</ulink>"
+ section of the Yocto Project Development Tasks
+ Manual for more information.
You can also see the
<ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>wiki</ulink>.
</para></listitem>
@@ -718,7 +761,7 @@
</para>
</section>
- <section id='neon-configuring-the-target-options'>
+ <section id='oxygen-configuring-the-target-options'>
<title>Configuring the Target Options</title>
<para>
@@ -733,10 +776,10 @@
If you are using the emulator, you also
need to locate the kernel and specify any
custom options.</para>
- <para>If you selected the
- <filename>Build system derived toolchain</filename>,
- the target kernel you built will be located
- in the
+
+ <para>If you selected the Build system derived
+ toolchain, the target kernel you built will be
+ located in the
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
in
<filename>tmp/deploy/images/<replaceable>machine</replaceable></filename>
@@ -748,11 +791,13 @@
Directory path followed by the image (e.g.
<filename>/home/scottrif/poky/build/tmp/deploy/images/qemux86/bzImage-qemux86.bin</filename>).
</para>
+
<para>If you selected the standalone
pre-built toolchain, the pre-built image
you downloaded is located in the directory
you specified when you downloaded the
image.</para>
+
<para>Most custom options are for advanced
QEMU users to further customize their QEMU
instance.
@@ -771,30 +816,29 @@
The following is an example:
<literallayout class='monospaced'>
serial ‘&lt;-m 256 -full-screen&gt;’
- </literallayout></para>
- <para>
+ </literallayout>
Regardless of the mode, Sysroot is already
defined as part of the Cross-Compiler
- Options configuration in the
- <filename>Sysroot Location:</filename>
- field.
+ Options configuration in the "Sysroot
+ Location:" field.
</para></listitem>
<listitem><para>
<emphasis>External HW:</emphasis>
Select this option if you will be using
- actual hardware.</para></listitem>
+ actual hardware.
+ </para></listitem>
</itemizedlist>
</para>
<para>
- Click the "Apply" and "OK" to save your plug-in
+ Click "Apply and Close" to save your plug-in
configurations.
</para>
</section>
</section>
</section>
- <section id='neon-creating-the-project'>
+ <section id='oxygen-creating-the-project'>
<title>Creating the Project</title>
<para>
@@ -818,22 +862,24 @@
display the source code, follow these steps:
<orderedlist>
<listitem><para>
- Select "C Project" from the "File -> New" menu.
+ Select "C/C++ Project" from the "File -> New" menu.
+ </para></listitem>
+ <listitem><para>
+ Select "C Managed Build" from the available options and
+ click "Next".
</para></listitem>
<listitem><para>
- Expand
- <filename>Yocto Project SDK Autotools Project</filename>.
+ Expand "Yocto Project SDK Autotools Project".
</para></listitem>
<listitem><para>
- Select <filename>Hello World ANSI C Autotools Projects</filename>.
+ Select "Hello World ANSI C Autotools Projects".
This is an Autotools-based project based on a Yocto
template.
</para></listitem>
<listitem><para>
- Put a name in the
- <filename>Project name:</filename> field.
+ Put a name in the "Project name:" field.
Do not use hyphens as part of the name
- (e.g. <filename>hello</filename>).
+ (e.g. "hello").
</para></listitem>
<listitem><para>
Click "Next".
@@ -857,12 +903,12 @@
</para>
</section>
- <section id='neon-configuring-the-cross-toolchains'>
+ <section id='oxygen-configuring-the-cross-toolchains'>
<title>Configuring the Cross-Toolchains</title>
<para>
The earlier section,
- "<link linkend='neon-configuring-the-eclipse-yocto-plug-in'>Configuring the Neon Eclipse Yocto Plug-in</link>",
+ "<link linkend='oxygen-configuring-the-eclipse-yocto-plug-in'>Configuring the Oxygen Eclipse Yocto Plug-in</link>",
sets up the default project configurations.
You can override these settings for a given project by
following these steps:
@@ -877,7 +923,7 @@
Target Options for a project are inherited from
settings you provided using the Preferences Dialog
as described earlier in the
- "<link linkend='neon-configuring-the-eclipse-yocto-plug-in'>Configuring the Neon Eclipse Yocto Plug-in</link>"
+ "<link linkend='oxygen-configuring-the-eclipse-yocto-plug-in'>Configuring the Oxygen Eclipse Yocto Plug-in</link>"
section.
The Yocto Project Settings Dialog allows you to
override those default settings for a given
@@ -885,21 +931,15 @@
</para></listitem>
<listitem><para>
Make or verify your configurations for the
- project and click "OK".
+ project and click "Apply and Close".
</para></listitem>
<listitem><para>
- Right-click in the navigation pane and
- select "Reconfigure Project" from the pop-up menu.
+ Right-click in the navigation pane and select
+ "Reconfigure Project" from the pop-up menu.
This selection reconfigures the project by running
- <filename>autogen.sh</filename> in the workspace
- for your project.
- The script also runs
- <filename>libtoolize</filename>,
- <filename>aclocal</filename>,
- <filename>autoconf</filename>,
- <filename>autoheader</filename>,
- <filename>automake --a</filename>, and
- <filename>./configure</filename>.
+ <ulink url='https://en.wikipedia.org/wiki/GNU_Build_System'>Autotools GNU utility programs</ulink>
+ such as Autoconf, Automake, and so forth in the
+ workspace for your project.
Click on the "Console" tab beneath your source code
to see the results of reconfiguring your project.
</para></listitem>
@@ -907,13 +947,14 @@
</para>
</section>
- <section id='neon-building-the-project'>
+ <section id='oxygen-building-the-project'>
<title>Building the Project</title>
<para>
To build the project select "Build All" from the
"Project" menu.
The console should update and you can note the
- cross-compiler you are using.
+ cross-compiler you are using (i.e.
+ <filename>i586-poky-linux-gcc</filename> in this example).
<note>
When building "Yocto Project SDK Autotools" projects,
the Eclipse IDE might display error messages for
@@ -929,12 +970,12 @@
Select the project.
</para></listitem>
<listitem><para>
- Select "Folder" from the
- <filename>File > New</filename> menu.
+ Select "Folder" from the "File -> New" menu.
</para></listitem>
<listitem><para>
- In the "New Folder" Dialog, select "Link to
- alternate location (linked folder)".
+ In the "New Folder" Dialog, click the "Advanced"
+ button and then activate "Link to
+ alternate location (linked folder)" button.
</para></listitem>
<listitem><para>
Click "Browse" to navigate to the include
@@ -943,9 +984,6 @@
configuration preferences.
</para></listitem>
<listitem><para>
- Click "OK".
- </para></listitem>
- <listitem><para>
Click "Finish" to save the linked folder.
</para></listitem>
</orderedlist>
@@ -953,7 +991,7 @@
</para>
</section>
- <section id='neon-starting-qemu-in-user-space-nfs-mode'>
+ <section id='oxygen-starting-qemu-in-user-space-nfs-mode'>
<title>Starting QEMU in User-Space NFS Mode</title>
<para>
@@ -987,8 +1025,8 @@
<filename>rpcbind</filename>, follow the
suggestions to get the service running.
As an example, on a new Ubuntu 16.04 LTS
- installation, you must do the following in
- order to get QEMU to launch:
+ installation, you must do the following in a new
+ shell in order to get QEMU to launch:
<literallayout class='monospaced'>
$ sudo apt-get install rpcbind
</literallayout>
@@ -1032,7 +1070,7 @@
</para>
</section>
- <section id='neon-deploying-and-debugging-the-application'>
+ <section id='oxygen-deploying-and-debugging-the-application'>
<title>Deploying and Debugging the Application</title>
<para>
@@ -1072,7 +1110,7 @@
</para></listitem>
<listitem><para>
In the left area, expand
- <filename>C/C++Remote Application</filename>.
+ "C/C++Remote Application".
</para></listitem>
<listitem><para>
Locate your project and select it to bring
@@ -1091,7 +1129,7 @@
<listitem><para>
Create a new connection to the QEMU instance
by clicking on "new".</para></listitem>
- <listitem><para>Select <filename>SSH</filename>, which
+ <listitem><para>Select "SSH", which
means Secure Socket Shell and then click "OK".
Optionally, you can select a TCF connection
instead.
@@ -1103,11 +1141,10 @@
<listitem><para>
Put the IP address for the connection in
the "Host" field.
- For QEMU, the default is
- <filename>192.168.7.2</filename>.
+ For QEMU, the default is "192.168.7.2".
However, if a previous QEMU session did not exit
cleanly, the IP address increments (e.g.
- <filename>192.168.7.3</filename>).
+ "192.168.7.3").
<note>
You can find the IP address for the current
QEMU session by looking in the xterm that
@@ -1115,7 +1152,7 @@
</note>
</para></listitem>
<listitem><para>
- Enter <filename>root</filename>, which
+ Enter "root", which
is the default for QEMU, for the "User" field.
Be sure to leave the password field empty.
</para></listitem>
@@ -1186,7 +1223,7 @@
</para>
</section>
- <section id='neon-using-Linuxtools'>
+ <section id='oxygen-using-Linuxtools'>
<title>Using Linuxtools</title>
<para>
diff --git a/documentation/sdk-manual/sdk-extensible.xml b/documentation/sdk-manual/sdk-extensible.xml
index 02a0b2ffe7e..09f06088d27 100644
--- a/documentation/sdk-manual/sdk-extensible.xml
+++ b/documentation/sdk-manual/sdk-extensible.xml
@@ -28,7 +28,7 @@
In addition to the functionality available through
<filename>devtool</filename>, you can alternatively make use of the
toolchain directly, for example from Makefile, Autotools, and
- Eclipse-based projects.
+ <trademark class='trade'>Eclipse</trademark>-based projects.
See the
"<link linkend='sdk-working-projects'>Using the SDK Toolchain Directly</link>"
chapter for more information.
@@ -54,29 +54,29 @@
</para>
</section>
- <section id='sdk-setting-up-to-use-the-extensible-sdk'>
- <title>Setting Up to Use the Extensible SDK</title>
+ <section id='sdk-installing-the-extensible-sdk'>
+ <title>Installing the Extensible SDK</title>
<para>
- The first thing you need to do is install the SDK on your host
- development machine by running the <filename>*.sh</filename>
- installation script.
+ The first thing you need to do is install the SDK on your
+ <ulink url='&YOCTO_DOCS_REF_URL;#hardware-build-system-term'>Build Host</ulink>
+ by running the <filename>*.sh</filename> installation script.
</para>
<para>
You can download a tarball installer, which includes the
pre-built toolchain, the <filename>runqemu</filename>
script, the internal build system, <filename>devtool</filename>,
- and support files from the appropriate directory under
- <ulink url='&YOCTO_TOOLCHAIN_DL_URL;'></ulink>.
- Toolchains are available for 32-bit and 64-bit x86 development
- systems from the <filename>i686</filename> and
- <filename>x86_64</filename> directories, respectively.
+ and support files from the appropriate
+ <ulink url='&YOCTO_TOOLCHAIN_DL_URL;'>toolchain</ulink>
+ directory within the Index of Releases.
+ Toolchains are available for several 32-bit and 64-bit
+ architectures with the <filename>x86_64</filename> directories,
+ respectively.
The toolchains the Yocto Project provides are based off the
- <filename>core-image-sato</filename> image and contain
+ <filename>core-image-sato</filename> and
+ <filename>core-image-minimal</filename> images and contain
libraries appropriate for developing against that image.
- Each type of development system supports five or more target
- architectures.
</para>
<para>
@@ -85,6 +85,7 @@
filename and then is immediately followed by a string
representing the target architecture.
An extensible SDK has the string "-ext" as part of the name.
+ Following is the general form:
<literallayout class='monospaced'>
poky-glibc-<replaceable>host_system</replaceable>-<replaceable>image_type</replaceable>-<replaceable>arch</replaceable>-toolchain-ext-<replaceable>release_version</replaceable>.sh
@@ -93,14 +94,15 @@
i686 or x86_64.
- <replaceable>image_type</replaceable> is the image for which the SDK was built.
+ <replaceable>image_type</replaceable> is the image for which the SDK was built:
+
+ core-image-sato or core-image-minimal
<replaceable>arch</replaceable> is a string representing the tuned target architecture:
- i586, x86_64, powerpc, mips, armv7a or armv5te
+ aarch64, armv5e, core2-64, i586, mips32r2, mips64, ppc7400, or cortexa8hf-neon
- <replaceable>release_version</replaceable> is a string representing the release number of the
- Yocto Project:
+ <replaceable>release_version</replaceable> is a string representing the release number of the Yocto Project:
&DISTRO;, &DISTRO;+snapshot
</literallayout>
@@ -131,9 +133,10 @@
home directory.
You can choose to install the extensible SDK in any location when
you run the installer.
- However, the location you choose needs to be writable for whichever
- users need to use the SDK, since files will need to be written
- under that directory during the normal course of operation.
+ However, because files need to be written under that directory
+ during the normal course of operation, the location you choose
+ for installation must be writable for whichever
+ users need to use the SDK.
</para>
<para>
@@ -141,28 +144,34 @@
toolchain tarball for a 64-bit x86 development host system and
a 64-bit x86 target architecture.
The example assumes the SDK installer is located in
- <filename>~/Downloads/</filename>.
+ <filename>~/Downloads/</filename> and has execution rights.
<note>
If you do not have write permissions for the directory
into which you are installing the SDK, the installer
notifies you and exits.
- Be sure you have write permissions in the directory and
- run the installer again.
+ For that case, set up the proper permissions in the directory
+ and run the installer again.
</note>
<literallayout class='monospaced'>
- $ ./poky-glibc-x86_64-core-image-minimal-core2-64-toolchain-ext-&DISTRO;.sh
- Poky (Yocto Project Reference Distro) Extensible SDK installer version &DISTRO;
- ===================================================================================
+ $ ./Downloads/poky-glibc-x86_64-core-image-minimal-core2-64-toolchain-ext-2.5.sh
+ Poky (Yocto Project Reference Distro) Extensible SDK installer version 2.5
+ ==========================================================================
Enter target directory for SDK (default: ~/poky_sdk):
You are about to install the SDK to "/home/scottrif/poky_sdk". Proceed[Y/n]? Y
- Extracting SDK......................................................................done
+ Extracting SDK..............done
Setting it up...
Extracting buildtools...
Preparing build system...
+ Parsing recipes: 100% |##################################################################| Time: 0:00:52
+ Initialising tasks: 100% |###############################################################| Time: 0:00:00
+ Checking sstate mirror object availability: 100% |#######################################| Time: 0:00:00
+ Loading cache: 100% |####################################################################| Time: 0:00:00
+ Initialising tasks: 100% |###############################################################| Time: 0:00:00
done
SDK has been successfully set up and is ready to be used.
Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
$ . /home/scottrif/poky_sdk/environment-setup-core2-64-poky-linux
+
</literallayout>
</para>
</section>
@@ -172,7 +181,7 @@
<para>
Once you have the SDK installed, you must run the SDK environment
- setup script before you can actually use it.
+ setup script before you can actually use the SDK.
This setup script resides in the directory you chose when you
installed the SDK, which is either the default
<filename>poky_sdk</filename> directory or the directory you
@@ -196,32 +205,13 @@
SDK environment now set up; additionally you may now run devtool to perform development tasks.
Run devtool --help for further details.
</literallayout>
- When you run the setup script, many environment variables are
- defined:
- <literallayout class='monospaced'>
- <ulink url='&YOCTO_DOCS_REF_URL;#var-SDKTARGETSYSROOT'><filename>SDKTARGETSYSROOT</filename></ulink> - The path to the sysroot used for cross-compilation
- <ulink url='&YOCTO_DOCS_REF_URL;#var-PKG_CONFIG_PATH'><filename>PKG_CONFIG_PATH</filename></ulink> - The path to the target pkg-config files
- <ulink url='&YOCTO_DOCS_REF_URL;#var-CONFIG_SITE'><filename>CONFIG_SITE</filename></ulink> - A GNU autoconf site file preconfigured for the target
- <ulink url='&YOCTO_DOCS_REF_URL;#var-CC'><filename>CC</filename></ulink> - The minimal command and arguments to run the C compiler
- <ulink url='&YOCTO_DOCS_REF_URL;#var-CXX'><filename>CXX</filename></ulink> - The minimal command and arguments to run the C++ compiler
- <ulink url='&YOCTO_DOCS_REF_URL;#var-CPP'><filename>CPP</filename></ulink> - The minimal command and arguments to run the C preprocessor
- <ulink url='&YOCTO_DOCS_REF_URL;#var-AS'><filename>AS</filename></ulink> - The minimal command and arguments to run the assembler
- <ulink url='&YOCTO_DOCS_REF_URL;#var-LD'><filename>LD</filename></ulink> - The minimal command and arguments to run the linker
- <ulink url='&YOCTO_DOCS_REF_URL;#var-GDB'><filename>GDB</filename></ulink> - The minimal command and arguments to run the GNU Debugger
- <ulink url='&YOCTO_DOCS_REF_URL;#var-STRIP'><filename>STRIP</filename></ulink> - The minimal command and arguments to run 'strip', which strips symbols
- <ulink url='&YOCTO_DOCS_REF_URL;#var-RANLIB'><filename>RANLIB</filename></ulink> - The minimal command and arguments to run 'ranlib'
- <ulink url='&YOCTO_DOCS_REF_URL;#var-OBJCOPY'><filename>OBJCOPY</filename></ulink> - The minimal command and arguments to run 'objcopy'
- <ulink url='&YOCTO_DOCS_REF_URL;#var-OBJDUMP'><filename>OBJDUMP</filename></ulink> - The minimal command and arguments to run 'objdump'
- <ulink url='&YOCTO_DOCS_REF_URL;#var-AR'><filename>AR</filename></ulink> - The minimal command and arguments to run 'ar'
- <ulink url='&YOCTO_DOCS_REF_URL;#var-NM'><filename>NM</filename></ulink> - The minimal command and arguments to run 'nm'
- <ulink url='&YOCTO_DOCS_REF_URL;#var-TARGET_PREFIX'><filename>TARGET_PREFIX</filename></ulink> - The toolchain binary prefix for the target tools
- <ulink url='&YOCTO_DOCS_REF_URL;#var-CROSS_COMPILE'><filename>CROSS_COMPILE</filename></ulink> - The toolchain binary prefix for the target tools
- <ulink url='&YOCTO_DOCS_REF_URL;#var-CONFIGURE_FLAGS'><filename>CONFIGURE_FLAGS</filename></ulink> - The minimal arguments for GNU configure
- <ulink url='&YOCTO_DOCS_REF_URL;#var-CFLAGS'><filename>CFLAGS</filename></ulink> - Suggested C flags
- <ulink url='&YOCTO_DOCS_REF_URL;#var-CXXFLAGS'><filename>CXXFLAGS</filename></ulink> - Suggested C++ flags
- <ulink url='&YOCTO_DOCS_REF_URL;#var-LDFLAGS'><filename>LDFLAGS</filename></ulink> - Suggested linker flags when you use CC to link
- <ulink url='&YOCTO_DOCS_REF_URL;#var-CPPFLAGS'><filename>CPPFLAGS</filename></ulink> - Suggested preprocessor flags
- </literallayout>
+ Running the setup script defines many environment variables needed
+ in order to use the SDK (e.g. <filename>PATH</filename>,
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-CC'><filename>CC</filename></ulink>,
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-LD'><filename>LD</filename></ulink>,
+ and so forth).
+ If you want to see all the environment variables the script
+ exports, examine the installation file itself.
</para>
</section>
@@ -240,14 +230,14 @@
the extensible SDK.
You can use <filename>devtool</filename> to help you easily
develop any project whose build output must be part of an
- image built using the OpenEmbedded build system.
+ image built using the build system.
</note>
</para>
<para>
The <filename>devtool</filename> command line is organized
similarly to
- <ulink url='&YOCTO_DOCS_GS_URL;#git'>Git</ulink> in that it
+ <ulink url='&YOCTO_DOCS_OM_URL;#git'>Git</ulink> in that it
has a number of sub-commands for each function.
You can run <filename>devtool --help</filename> to see all the
commands.
@@ -260,8 +250,8 @@
</para>
<para>
- Three <filename>devtool</filename> subcommands that provide
- entry-points into development are:
+ Three <filename>devtool</filename> subcommands exist that provide
+ entry-points into development:
<itemizedlist>
<listitem><para>
<emphasis><filename>devtool add</filename></emphasis>:
@@ -278,17 +268,17 @@
an updated set of source files.
</para></listitem>
</itemizedlist>
- As with the OpenEmbedded build system, "recipes" represent software
- packages within <filename>devtool</filename>.
+ As with the build system, "recipes" represent software packages
+ within <filename>devtool</filename>.
When you use <filename>devtool add</filename>, a recipe is
automatically created.
When you use <filename>devtool modify</filename>, the specified
- existing recipe is used in order to determine where to get the source
- code and how to patch it.
+ existing recipe is used in order to determine where to get the
+ source code and how to patch it.
In both cases, an environment is set up so that when you build the
recipe a source tree that is under your control is used in order to
allow you to make changes to the source as desired.
- By default, both new recipes and the source go into a "workspace"
+ By default, new recipes and the source go into a "workspace"
directory under the SDK.
</para>
@@ -335,10 +325,10 @@
generate a recipe based on existing source code.</para>
<para>In a shared development environment, it is
- typical where other developers are responsible for
+ typical for other developers to be responsible for
various areas of source code.
As a developer, you are probably interested in using
- that source code as part of your development using
+ that source code as part of your development within
the Yocto Project.
All you need is access to the code, a recipe, and a
controlled area in which to do your work.</para>
@@ -346,138 +336,164 @@
<para>Within the diagram, three possible scenarios
feed into the <filename>devtool add</filename> workflow:
<itemizedlist>
- <listitem><para><emphasis>Left</emphasis>:
- The left scenario represents a common situation
- where the source code does not exist locally
- and needs to be extracted.
- In this situation, you just let it get
- extracted to the default workspace - you do not
- want it in some specific location outside of the
- workspace.
- Thus, everything you need will be located in the
- workspace:
+ <listitem><para>
+ <emphasis>Left</emphasis>:
+ The left scenario in the figure represents a
+ common situation where the source code does not
+ exist locally and needs to be extracted.
+ In this situation, the source code is extracted
+ to the default workspace - you do not
+ want the files in some specific location
+ outside of the workspace.
+ Thus, everything you need will be located in
+ the workspace:
<literallayout class='monospaced'>
$ devtool add <replaceable>recipe fetchuri</replaceable>
</literallayout>
With this command, <filename>devtool</filename>
- creates a recipe and an append file in the
- workspace as well as extracts the upstream
- source files into a local Git repository also
- within the <filename>sources</filename> folder.
+ extracts the upstream source files into a local
+ Git repository within the
+ <filename>sources</filename> folder.
+ The command then creates a recipe named
+ <replaceable>recipe</replaceable> and a
+ corresponding append file in the workspace.
+ If you do not provide
+ <replaceable>recipe</replaceable>, the command
+ makes an attempt to determine the recipe name.
</para></listitem>
- <listitem><para><emphasis>Middle</emphasis>:
- The middle scenario also represents a situation where
- the source code does not exist locally.
+ <listitem><para>
+ <emphasis>Middle</emphasis>:
+ The middle scenario in the figure also
+ represents a situation where the source code
+ does not exist locally.
In this case, the code is again upstream
and needs to be extracted to some
local area - this time outside of the default
workspace.
- If required, <filename>devtool</filename>
- always creates
- a Git repository locally during the extraction.
+ <note>
+ If required, <filename>devtool</filename>
+ always creates
+ a Git repository locally during the
+ extraction.
+ </note>
Furthermore, the first positional argument
- <replaceable>srctree</replaceable> in this case
- identifies where the
+ <replaceable>srctree</replaceable> in this
+ case identifies where the
<filename>devtool add</filename> command
will locate the extracted code outside of the
- workspace:
+ workspace.
+ You need to specify an empty directory:
<literallayout class='monospaced'>
$ devtool add <replaceable>recipe srctree fetchuri</replaceable>
</literallayout>
In summary, the source code is pulled from
- <replaceable>fetchuri</replaceable> and extracted
- into the location defined by
+ <replaceable>fetchuri</replaceable> and
+ extracted into the location defined by
<replaceable>srctree</replaceable> as a local
Git repository.</para>
- <para>Within workspace, <filename>devtool</filename>
- creates both the recipe and an append file
- for the recipe.
+ <para>Within workspace,
+ <filename>devtool</filename> creates a
+ recipe named <replaceable>recipe</replaceable>
+ along with an associated append file.
</para></listitem>
- <listitem><para><emphasis>Right</emphasis>:
- The right scenario represents a situation
- where the source tree (srctree) has been
+ <listitem><para>
+ <emphasis>Right</emphasis>:
+ The right scenario in the figure represents a
+ situation where the
+ <replaceable>srctree</replaceable> has been
previously prepared outside of the
- <filename>devtool</filename> workspace.
- </para>
+ <filename>devtool</filename> workspace.</para>
- <para>The following command names the recipe
- and identifies where the existing source tree
- is located:
+ <para>The following command provides a new
+ recipe name and identifies the existing source
+ tree location:
<literallayout class='monospaced'>
$ devtool add <replaceable>recipe srctree</replaceable>
</literallayout>
- The command examines the source code and creates
- a recipe for it placing the recipe into the
- workspace.</para>
+ The command examines the source code and
+ creates a recipe named
+ <replaceable>recipe</replaceable> for the code
+ and places the recipe into the workspace.
+ </para>
- <para>Because the extracted source code already exists,
- <filename>devtool</filename> does not try to
- relocate it into the workspace - just the new
- the recipe is placed in the workspace.</para>
+ <para>Because the extracted source code already
+ exists, <filename>devtool</filename> does not
+ try to relocate the source code into the
+ workspace - only the new recipe is placed
+ in the workspace.</para>
<para>Aside from a recipe folder, the command
- also creates an append folder and places an initial
- <filename>*.bbappend</filename> within.
+ also creates an associated append folder and
+ places an initial
+ <filename>*.bbappend</filename> file within.
</para></listitem>
</itemizedlist>
</para></listitem>
- <listitem><para><emphasis>Edit the Recipe</emphasis>:
- At this point, you can use <filename>devtool edit-recipe</filename>
+ <listitem><para>
+ <emphasis>Edit the Recipe</emphasis>:
+ You can use <filename>devtool edit-recipe</filename>
to open up the editor as defined by the
<filename>$EDITOR</filename> environment variable
and modify the file:
<literallayout class='monospaced'>
$ devtool edit-recipe <replaceable>recipe</replaceable>
</literallayout>
- From within the editor, you can make modifications to the
- recipe that take affect when you build it later.
+ From within the editor, you can make modifications to
+ the recipe that take affect when you build it later.
</para></listitem>
- <listitem><para><emphasis>Build the Recipe or Rebuild the Image</emphasis>:
- At this point in the flow, the next step you
- take depends on what you are going to do with
- the new code.</para>
- <para>If you need to take the build output and eventually
- move it to the target hardware, you would use
- <filename>devtool build</filename>:
+ <listitem><para>
+ <emphasis>Build the Recipe or Rebuild the Image</emphasis>:
+ The next step you take depends on what you are going
+ to do with the new code.</para>
+
+ <para>If you need to eventually move the build output
+ to the target hardware, use the following
+ <filename>devtool</filename> command:
<literallayout class='monospaced'>
$ devtool build <replaceable>recipe</replaceable>
</literallayout></para>
+
<para>On the other hand, if you want an image to
- contain the recipe's packages for immediate deployment
- onto a device (e.g. for testing purposes), you can use
+ contain the recipe's packages from the workspace
+ for immediate deployment onto a device (e.g. for
+ testing purposes), you can use
the <filename>devtool build-image</filename> command:
<literallayout class='monospaced'>
$ devtool build-image <replaceable>image</replaceable>
</literallayout>
</para></listitem>
- <listitem><para><emphasis>Deploy the Build Output</emphasis>:
+ <listitem><para>
+ <emphasis>Deploy the Build Output</emphasis>:
When you use the <filename>devtool build</filename>
command to build out your recipe, you probably want to
- see if the resulting build output works as expected on target
- hardware.
+ see if the resulting build output works as expected
+ on the target hardware.
<note>
This step assumes you have a previously built
image that is already either running in QEMU or
- running on actual hardware.
- Also, it is assumed that for deployment of the image
- to the target, SSH is installed in the image and if
- the image is running on real hardware that you have
- network access to and from your development machine.
+ is running on actual hardware.
+ Also, it is assumed that for deployment of the
+ image to the target, SSH is installed in the image
+ and, if the image is running on real hardware,
+ you have network access to and from your
+ development machine.
</note>
- You can deploy your build output to that target hardware by
- using the <filename>devtool deploy-target</filename> command:
+ You can deploy your build output to that target
+ hardware by using the
+ <filename>devtool deploy-target</filename> command:
<literallayout class='monospaced'>
$ devtool deploy-target <replaceable>recipe target</replaceable>
</literallayout>
- The <replaceable>target</replaceable> is a live target machine
- running as an SSH server.</para>
+ The <replaceable>target</replaceable> is a live target
+ machine running as an SSH server.</para>
- <para>You can, of course, also deploy the image you build
- using the <filename>devtool build-image</filename> command
- to actual hardware.
- However, <filename>devtool</filename> does not provide a
- specific command that allows you to do this.
+ <para>You can, of course, also deploy the image you
+ build to actual hardware by using the
+ <filename>devtool build-image</filename> command.
+ However, <filename>devtool</filename> does not provide
+ a specific command that allows you to deploy the
+ image to actual hardware.
</para></listitem>
<listitem><para>
<emphasis>Finish Your Work With the Recipe</emphasis>:
@@ -494,8 +510,9 @@
committed to the Git repository in the source tree.
</note></para>
- <para>As mentioned, the <filename>devtool finish</filename>
- command moves the final recipe to its permanent layer.
+ <para>As mentioned, the
+ <filename>devtool finish</filename> command moves the
+ final recipe to its permanent layer.
</para>
<para>As a final process of the
@@ -520,21 +537,20 @@
<para>
The <filename>devtool modify</filename> command prepares the
- way to work on existing code that already has a recipe in
- place.
- The command is flexible enough to allow you to extract code,
- specify the existing recipe, and keep track of and gather any
- patch files from other developers that are
- associated with the code.
+ way to work on existing code that already has a local recipe in
+ place that is used to build the software.
+ The command is flexible enough to allow you to extract code
+ from an upstream source, specify the existing recipe, and
+ keep track of and gather any patch files from other developers
+ that are associated with the code.
</para>
<para>
Depending on your particular scenario, the arguments and options
you use with <filename>devtool modify</filename> form different
combinations.
- The following diagram shows common development flows
- you would use with the <filename>devtool modify</filename>
- command:
+ The following diagram shows common development flows for the
+ <filename>devtool modify</filename> command:
</para>
<para>
@@ -543,140 +559,181 @@
<para>
<orderedlist>
- <listitem><para><emphasis>Preparing to Modify the Code</emphasis>:
+ <listitem><para>
+ <emphasis>Preparing to Modify the Code</emphasis>:
The top part of the flow shows three scenarios by which
you could use <filename>devtool modify</filename> to
prepare to work on source files.
Each scenario assumes the following:
<itemizedlist>
- <listitem><para>The recipe exists in some layer external
+ <listitem><para>
+ The recipe exists locally in a layer external
to the <filename>devtool</filename> workspace.
</para></listitem>
- <listitem><para>The source files exist upstream in an
+ <listitem><para>
+ The source files exist either upstream in an
un-extracted state or locally in a previously
extracted state.
</para></listitem>
</itemizedlist>
The typical situation is where another developer has
- created some layer for use with the Yocto Project and
+ created a layer for use with the Yocto Project and
their recipe already resides in that layer.
Furthermore, their source code is readily available
either upstream or locally.
<itemizedlist>
- <listitem><para><emphasis>Left</emphasis>:
- The left scenario represents a common situation
- where the source code does not exist locally
- and needs to be extracted.
+ <listitem><para>
+ <emphasis>Left</emphasis>:
+ The left scenario in the figure represents a
+ common situation where the source code does
+ not exist locally and it needs to be extracted
+ from an upstream source.
In this situation, the source is extracted
- into the default workspace location.
+ into the default <filename>devtool</filename>
+ workspace location.
The recipe, in this scenario, is in its own
layer outside the workspace
(i.e.
<filename>meta-</filename><replaceable>layername</replaceable>).
</para>
- <para>The following command identifies the recipe
- and by default extracts the source files:
+ <para>The following command identifies the
+ recipe and, by default, extracts the source
+ files:
<literallayout class='monospaced'>
$ devtool modify <replaceable>recipe</replaceable>
</literallayout>
- Once <filename>devtool</filename>locates the recipe,
- it uses the
+ Once <filename>devtool</filename>locates the
+ recipe, <filename>devtool</filename> uses the
+ recipe's
<ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
- variable to locate the source code and
- any local patch files from other developers are
- located.
- <note>
- You cannot provide an URL for
- <replaceable>srctree</replaceable> when using the
- <filename>devtool modify</filename> command.
- </note>
- With this scenario, however, since no
- <replaceable>srctree</replaceable> argument exists, the
- <filename>devtool modify</filename> command by default
- extracts the source files to a Git structure.
- Furthermore, the location for the extracted source is the
- default area within the workspace.
- The result is that the command sets up both the source
- code and an append file within the workspace with the
- recipe remaining in its original location.
+ statements to locate the source code and any
+ local patch files from other developers.</para>
+
+ <para>With this scenario, no
+ <replaceable>srctree</replaceable> argument
+ exists.
+ Consequently, the default behavior of the
+ <filename>devtool modify</filename> command is
+ to extract the source files pointed to by the
+ <filename>SRC_URI</filename> statements into a
+ local Git structure.
+ Furthermore, the location for the extracted
+ source is the default area within the
+ <filename>devtool</filename> workspace.
+ The result is that the command sets up both
+ the source code and an append file within the
+ workspace while the recipe remains in its
+ original location.
</para></listitem>
- <listitem><para><emphasis>Middle</emphasis>:
- The middle scenario represents a situation where
- the source code also does not exist locally.
+ <listitem><para>
+ <emphasis>Middle</emphasis>:
+ The middle scenario in the figure represents a
+ situation where the source code also does not
+ exist locally.
In this case, the code is again upstream
and needs to be extracted to some
local area as a Git repository.
- The recipe, in this scenario, is again in its own
- layer outside the workspace.</para>
+ The recipe, in this scenario, is again local
+ and in its own layer outside the workspace.
+ </para>
<para>The following command tells
<filename>devtool</filename> what recipe with
- which to work and, in this case, identifies a local
- area for the extracted source files that is outside
- of the default workspace:
+ which to work and, in this case, identifies a
+ local area for the extracted source files that
+ is outside of the default
+ <filename>devtool</filename> workspace:
<literallayout class='monospaced'>
$ devtool modify <replaceable>recipe srctree</replaceable>
</literallayout>
+ <note>
+ You cannot provide a URL for
+ <replaceable>srctree</replaceable> using
+ the <filename>devtool</filename> command.
+ </note>
As with all extractions, the command uses
- the recipe's <filename>SRC_URI</filename> to locate the
- source files.
- Once the files are located, the command by default
- extracts them.
- Providing the <replaceable>srctree</replaceable>
- argument instructs <filename>devtool</filename> where
- to place the extracted source.</para>
-
- <para>Within workspace, <filename>devtool</filename>
- creates an append file for the recipe.
+ the recipe's <filename>SRC_URI</filename>
+ statements to locate the source files and any
+ associated patch files.
+ Once the files are located, the command by
+ default extracts them into
+ <replaceable>srctree</replaceable>.</para>
+
+ <para>Within workspace,
+ <filename>devtool</filename> creates an append
+ file for the recipe.
The recipe remains in its original location but
- the source files are extracted to the location you
- provided with <replaceable>srctree</replaceable>.
+ the source files are extracted to the location
+ you provide with
+ <replaceable>srctree</replaceable>.
</para></listitem>
- <listitem><para><emphasis>Right</emphasis>:
- The right scenario represents a situation
- where the source tree
- (<replaceable>srctree</replaceable>) exists as a
- previously extracted Git structure outside of
- the <filename>devtool</filename> workspace.
+ <listitem><para>
+ <emphasis>Right</emphasis>:
+ The right scenario in the figure represents a
+ situation where the source tree
+ (<replaceable>srctree</replaceable>) already
+ exists locally as a previously extracted Git
+ structure outside of the
+ <filename>devtool</filename> workspace.
In this example, the recipe also exists
- elsewhere in its own layer.
+ elsewhere locally in its own layer.
</para>
<para>The following command tells
<filename>devtool</filename> the recipe
- with which to work, uses the "-n" option to indicate
- source does not need to be extracted, and uses
- <replaceable>srctree</replaceable> to point to the
- previously extracted source files:
+ with which to work, uses the "-n" option to
+ indicate source does not need to be extracted,
+ and uses <replaceable>srctree</replaceable> to
+ point to the previously extracted source files:
<literallayout class='monospaced'>
$ devtool modify -n <replaceable>recipe srctree</replaceable>
</literallayout>
</para>
<para>Once the command finishes, it creates only
- an append file for the recipe in the workspace.
+ an append file for the recipe in the
+ <filename>devtool</filename> workspace.
The recipe and the source code remain in their
original locations.
</para></listitem>
</itemizedlist>
</para></listitem>
- <listitem><para><emphasis>Edit the Source</emphasis>:
- Once you have used the <filename>devtool modify</filename>
- command, you are free to make changes to the source
- files.
+ <listitem><para>
+ <emphasis>Edit the Source</emphasis>:
+ Once you have used the
+ <filename>devtool modify</filename> command, you are
+ free to make changes to the source files.
You can use any editor you like to make and save
your source code modifications.
</para></listitem>
- <listitem><para><emphasis>Build the Recipe</emphasis>:
- Once you have updated the source files, you can build
- the recipe.
+ <listitem><para>
+ <emphasis>Build the Recipe or Rebuild the Image</emphasis>:
+ The next step you take depends on what you are going
+ to do with the new code.</para>
+
+ <para>If you need to eventually move the build output
+ to the target hardware, use the following
+ <filename>devtool</filename> command:
+ <literallayout class='monospaced'>
+ $ devtool build <replaceable>recipe</replaceable>
+ </literallayout></para>
+
+ <para>On the other hand, if you want an image to
+ contain the recipe's packages from the workspace
+ for immediate deployment onto a device (e.g. for
+ testing purposes), you can use
+ the <filename>devtool build-image</filename> command:
+ <literallayout class='monospaced'>
+ $ devtool build-image <replaceable>image</replaceable>
+ </literallayout>
</para></listitem>
- <listitem><para><emphasis>Deploy the Build Output</emphasis>:
+ <listitem><para>
+ <emphasis>Deploy the Build Output</emphasis>:
When you use the <filename>devtool build</filename>
- command to build out your recipe, you probably want to see
- if the resulting build output works as expected on target
- hardware.
+ command to build out your recipe, you probably want to
+ see if the resulting build output works as expected
+ on target hardware.
<note>
This step assumes you have a previously built
image that is already either running in QEMU or
@@ -686,19 +743,22 @@
the image is running on real hardware that you have
network access to and from your development machine.
</note>
- You can deploy your build output to that target hardware by
- using the <filename>devtool deploy-target</filename> command:
+ You can deploy your build output to that target
+ hardware by using the
+ <filename>devtool deploy-target</filename> command:
<literallayout class='monospaced'>
$ devtool deploy-target <replaceable>recipe target</replaceable>
</literallayout>
- The <replaceable>target</replaceable> is a live target machine
- running as an SSH server.</para>
+ The <replaceable>target</replaceable> is a live target
+ machine running as an SSH server.</para>
- <para>You can, of course, also deploy the image you build
- using the <filename>devtool build-image</filename> command
- to actual hardware.
- However, <filename>devtool</filename> does not provide a
- specific command that allows you to do this.
+ <para>You can, of course, use other methods to deploy
+ the image you built using the
+ <filename>devtool build-image</filename> command to
+ actual hardware.
+ <filename>devtool</filename> does not provide
+ a specific command to deploy the image to actual
+ hardware.
</para></listitem>
<listitem><para>
<emphasis>Finish Your Work With the Recipe</emphasis>:
@@ -707,28 +767,30 @@
Git repository, updates the recipe to point to them
(or creates a <filename>.bbappend</filename> file to do
so, depending on the specified destination layer), and
- then resets the recipe so that the recipe is built normally
- rather than from the workspace.
+ then resets the recipe so that the recipe is built
+ normally rather than from the workspace.
<literallayout class='monospaced'>
$ devtool finish <replaceable>recipe layer</replaceable>
</literallayout>
<note>
Any changes you want to turn into patches must be
- committed to the Git repository in the source tree.
+ staged and committed within the local Git
+ repository before you use the
+ <filename>devtool finish</filename> command.
</note></para>
<para>Because there is no need to move the recipe,
<filename>devtool finish</filename> either updates the
original recipe in the original layer or the command
- creates a <filename>.bbappend</filename> in a different
- layer as provided by <replaceable>layer</replaceable>.
- </para>
+ creates a <filename>.bbappend</filename> file in a
+ different layer as provided by
+ <replaceable>layer</replaceable>.</para>
<para>As a final process of the
<filename>devtool finish</filename> command, the state
of the standard layers and the upstream source is
restored so that you can build the recipe from those
- areas rather than the workspace.
+ areas rather than from the workspace.
<note>
You can use the <filename>devtool reset</filename>
command to put things back should you decide you
@@ -754,7 +816,7 @@
workflow to make sure your recipes you are using for builds
are up-to-date with their upstream counterparts.
<note>
- Several methods exist by which you can upgrade recipes.
+ Several methods exist by which you can upgrade recipes -
<filename>devtool upgrade</filename> happens to be one.
You can read about all the methods by which you can
upgrade recipes in the
@@ -773,12 +835,8 @@
</para>
<para>
- Depending on your particular scenario, the arguments and
- options you use with <filename>devtool upgrade</filename> form
- different combinations.
- The following diagram shows a common development flow
- you would use with the <filename>devtool upgrade</filename>
- command:
+ The following diagram shows the common development flow
+ used with the <filename>devtool upgrade</filename> command:
</para>
<para>
@@ -789,19 +847,18 @@
<orderedlist>
<listitem><para>
<emphasis>Initiate the Upgrade</emphasis>:
- The top part of the flow shows a typical scenario by
- which you could use
- <filename>devtool upgrade</filename>.
+ The top part of the flow shows the typical scenario by
+ which you use the <filename>devtool upgrade</filename>
+ command.
The following conditions exist:
<itemizedlist>
<listitem><para>
- The recipe exists in some layer external
+ The recipe exists in a local layer external
to the <filename>devtool</filename> workspace.
</para></listitem>
<listitem><para>
The source files for the new release
- exist adjacent to the same location pointed to
- by
+ exist in the same location pointed to by
<ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
in the recipe (e.g. a tarball with the new
version number in the name, or as a different
@@ -842,19 +899,19 @@
<para>Once <filename>devtool</filename> locates the
recipe, it uses the <filename>SRC_URI</filename>
variable to locate the source code and any local patch
- files from other developers are located.
+ files from other developers.
The result is that the command sets up the source
code, the new version of the recipe, and an append file
all within the workspace.
</para></listitem>
- <listitem><para><emphasis>
- Resolve any Conflicts created by the Upgrade</emphasis>:
- At this point, conflicts could exist due to the
- software being upgraded to a new version.
+ <listitem><para>
+ <emphasis>Resolve any Conflicts created by the Upgrade</emphasis>:
+ Conflicts could exist due to the software being
+ upgraded to a new version.
Conflicts occur if your recipe specifies some patch
files in <filename>SRC_URI</filename> that conflict
with changes made in the new version of the software.
- If this is the case, you need to resolve the conflicts
+ For such cases, you need to resolve the conflicts
by editing the source and following the normal
<filename>git rebase</filename> conflict resolution
process.</para>
@@ -864,13 +921,25 @@
newer or different version of the software.
</para></listitem>
<listitem><para>
- <emphasis>Build the Recipe</emphasis>:
- Once you have your recipe in order, you can build it.
- You can either use <filename>devtool build</filename>
- or <filename>bitbake</filename>.
- Either method produces build output that is stored
- in
- <ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink>.
+ <emphasis>Build the Recipe or Rebuild the Image</emphasis>:
+ The next step you take depends on what you are going
+ to do with the new code.</para>
+
+ <para>If you need to eventually move the build output
+ to the target hardware, use the following
+ <filename>devtool</filename> command:
+ <literallayout class='monospaced'>
+ $ devtool build <replaceable>recipe</replaceable>
+ </literallayout></para>
+
+ <para>On the other hand, if you want an image to
+ contain the recipe's packages from the workspace
+ for immediate deployment onto a device (e.g. for
+ testing purposes), you can use
+ the <filename>devtool build-image</filename> command:
+ <literallayout class='monospaced'>
+ $ devtool build-image <replaceable>image</replaceable>
+ </literallayout>
</para></listitem>
<listitem><para>
<emphasis>Deploy the Build Output</emphasis>:
@@ -946,8 +1015,8 @@
<title>A Closer Look at <filename>devtool add</filename></title>
<para>
- The <filename>devtool add</filename> command automatically creates a
- recipe based on the source tree with which you provide it.
+ The <filename>devtool add</filename> command automatically creates
+ a recipe based on the source tree you provide with the command.
Currently, the command has support for the following:
<itemizedlist>
<listitem><para>
@@ -993,8 +1062,8 @@
In most cases, you need to edit the automatically generated
recipe in order to make it build properly.
Typically, you would go through several edit and build cycles
- until you can build the recipe.
- Once the recipe can be built, you could use possible further
+ until the recipe successfully builds.
+ Once the recipe builds, you could use possible further
iterations to test the recipe on the target device.
</note>
</para>
@@ -1009,15 +1078,19 @@
<para>
If you do not specify a name and version on the command
- line, <filename>devtool add</filename> attempts to determine
- the name and version of the software being built from
- various metadata within the source tree.
- Furthermore, the command sets the name of the created recipe
- file accordingly.
- If the name or version cannot be determined, the
- <filename>devtool add</filename> command prints an error and
- you must re-run the command with both the name and version
- or just the name or version specified.
+ line, <filename>devtool add</filename> uses various metadata
+ within the source tree in an attempt to determine
+ the name and version of the software being built.
+ Based on what the tool determines, <filename>devtool</filename>
+ sets the name of the created recipe file accordingly.
+ </para>
+
+ <para>
+ If <filename>devtool</filename> cannot determine the name and
+ version, the command prints an error.
+ For such cases, you must re-run the command and provide
+ the name and version, just the name, or just the version as
+ part of the command line.
</para>
<para>
@@ -1041,26 +1114,27 @@
detect build-time dependencies and map them to other recipes
in the system.
During this mapping, the command fills in the names of those
- recipes in the
+ recipes as part of the
<ulink url='&YOCTO_DOCS_REF_URL;#var-DEPENDS'><filename>DEPENDS</filename></ulink>
- value within the recipe.
- If a dependency cannot be mapped, then a comment is placed in
- the recipe indicating such.
- The inability to map a dependency might be caused because the
- naming is not recognized or because the dependency simply is
- not available.
+ variable within the recipe.
+ If a dependency cannot be mapped, <filename>devtool</filename>
+ places a comment in the recipe indicating such.
+ The inability to map a dependency can result from naming not
+ being recognized or because the dependency simply is not
+ available.
For cases where the dependency is not available, you must use
the <filename>devtool add</filename> command to add an
- additional recipe to satisfy the dependency and then come
- back to the first recipe and add its name to
- <filename>DEPENDS</filename>.
+ additional recipe that satisfies the dependency.
+ Once you add that recipe, you need to update the
+ <filename>DEPENDS</filename> variable in the original recipe
+ to include the new recipe.
</para>
<para>
If you need to add runtime dependencies, you can do so by
adding the following to your recipe:
<literallayout class='monospaced'>
- RDEPENDS_${PN} += "dependency1 dependency2 ..."
+ RDEPENDS_${PN} += "<replaceable>dependency1 dependency2 ...</replaceable>"
</literallayout>
<note>
The <filename>devtool add</filename> command often cannot
@@ -1071,7 +1145,7 @@
script for the software the recipe is building for further
details.
In some cases, you might find you can substitute the
- dependency for an option to disable the associated
+ dependency with an option that disables the associated
functionality passed to the configure script.
</note>
</para>
@@ -1083,20 +1157,24 @@
<para>
The <filename>devtool add</filename> command attempts to
determine if the software you are adding is able to be
- distributed under a common open-source license and sets the
+ distributed under a common, open-source license.
+ If so, the command sets the
<ulink url='&YOCTO_DOCS_REF_URL;#var-LICENSE'><filename>LICENSE</filename></ulink>
value accordingly.
- You should double-check this value against the documentation
- or source files for the software you are building and update
- that <filename>LICENSE</filename> value if necessary.
+ You should double-check the value added by the command against
+ the documentation or source files for the software you are
+ building and, if necessary, update that
+ <filename>LICENSE</filename> value.
</para>
<para>
The <filename>devtool add</filename> command also sets the
<ulink url='&YOCTO_DOCS_REF_URL;#var-LIC_FILES_CHKSUM'><filename>LIC_FILES_CHKSUM</filename></ulink>
value to point to all files that appear to be license-related.
- However, license statements often appear in comments at the top
- of source files or within documentation.
+ Realize that license statements often appear in comments at
+ the top of source files or within the documentation.
+ In such cases, the command does not recognize those license
+ statements.
Consequently, you might need to amend the
<filename>LIC_FILES_CHKSUM</filename> variable to point to one
or more of those comments if present.
@@ -1110,14 +1188,13 @@
<para>
If the <filename>devtool add</filename> command cannot
- determine licensing information, the
- <filename>LICENSE</filename> value is set to "CLOSED" and the
- <filename>LIC_FILES_CHKSUM</filename> value remains unset.
- This behavior allows you to continue with development but is
- unlikely to be correct in all cases.
- Consequently, you should check the documentation or source
- files for the software you are building to determine the actual
- license.
+ determine licensing information, <filename>devtool</filename>
+ sets the <filename>LICENSE</filename> value to "CLOSED" and
+ leaves the <filename>LIC_FILES_CHKSUM</filename> value unset.
+ This behavior allows you to continue with development even
+ though the settings are unlikely to be correct in all cases.
+ You should check the documentation or source files for the
+ software you are building to determine the actual license.
</para>
</section>
@@ -1125,8 +1202,8 @@
<title>Adding Makefile-Only Software</title>
<para>
- The use of <filename>make</filename> by itself is very common
- in both proprietary and open source software.
+ The use of Make by itself is very common in both proprietary
+ and open-source software.
Unfortunately, Makefiles are often not written with
cross-compilation in mind.
Thus, <filename>devtool add</filename> often cannot do very
@@ -1139,7 +1216,7 @@
<filename>gcc</filename> is the compiler for the build host
and the cross-compiler is named something similar to
<filename>arm-poky-linux-gnueabi-gcc</filename> and might
- require some arguments (e.g. to point to the associated sysroot
+ require arguments (e.g. to point to the associated sysroot
for the target machine).
</para>
@@ -1154,18 +1231,17 @@
<filename>g++</filename>.
</para></listitem>
<listitem><para>
- The environment in which <filename>make</filename> runs
- is set up with various standard variables for
- compilation (e.g. <filename>CC</filename>,
- <filename>CXX</filename>, and so forth) in a similar
- manner to the environment set up by the SDK's
- environment setup script.
+ The environment in which Make runs is set up with
+ various standard variables for compilation (e.g.
+ <filename>CC</filename>, <filename>CXX</filename>, and
+ so forth) in a similar manner to the environment set
+ up by the SDK's environment setup script.
One easy way to see these variables is to run the
<filename>devtool build</filename> command on the
recipe and then look in
<filename>oe-logs/run.do_compile</filename>.
- Towards the top of this file you will see a list of
- environment variables that are being set.
+ Towards the top of this file, a list of environment
+ variables exists that are being set.
You can take advantage of these variables within the
Makefile.
</para></listitem>
@@ -1173,7 +1249,7 @@
If the Makefile sets a default for a variable using "=",
that default overrides the value set in the environment,
which is usually not desirable.
- In this situation, you can either patch the Makefile
+ For this case, you can either patch the Makefile
so it sets the default using the "?=" operator, or
you can alternatively force the value on the
<filename>make</filename> command line.
@@ -1198,16 +1274,17 @@
This is particularly true because those hardcoded paths
often point to locations on the build host and thus
will either be read-only or will introduce
- contamination into the cross-compilation by virtue of
- being specific to the build host rather than the target.
+ contamination into the cross-compilation because they
+ are specific to the build host rather than the target.
Patching the Makefile to use prefix variables or other
- path variables is usually the way to handle this.
+ path variables is usually the way to handle this
+ situation.
</para></listitem>
<listitem><para>
Sometimes a Makefile runs target-specific commands such
as <filename>ldconfig</filename>.
- For such cases, you might be able to simply apply
- patches that remove these commands from the Makefile.
+ For such cases, you might be able to apply patches that
+ remove these commands from the Makefile.
</para></listitem>
</itemizedlist>
</para>
@@ -1218,9 +1295,11 @@
<para>
Often, you need to build additional tools that run on the
- build host system as opposed to the target.
- You should indicate this using one of the following methods
- when you run <filename>devtool add</filename>:
+ <ulink url='&YOCTO_DOCS_REF_URL;#hardware-build-system-term'>build host</ulink>
+ as opposed to the target.
+ You should indicate this requirement by using one of the
+ following methods when you run
+ <filename>devtool add</filename>:
<itemizedlist>
<listitem><para>
Specify the name of the recipe such that it ends
@@ -1242,8 +1321,8 @@
typically accomplish this by building the native and target
parts separately rather than within the same compilation
process.
- Realize though that with the "&dash;&dash;also-native" option, you
- can add the tool using just one recipe file.
+ Realize though that with the "&dash;&dash;also-native"
+ option, you can add the tool using just one recipe file.
</note>
</para>
</section>
@@ -1284,11 +1363,9 @@
found" errors.
</para></listitem>
<listitem><para>
- In order to support adding
- Node.js modules, a
- <filename>nodejs</filename> recipe must be part of your
- SDK in order to provide Node.js
- itself.
+ In order to support adding Node.js modules, a
+ <filename>nodejs</filename> recipe must be part
+ of your SDK.
</para></listitem>
</itemizedlist>
</note>
@@ -1297,14 +1374,15 @@
<para>
As mentioned earlier, you can also add Node.js modules
directly from a repository or local source tree.
- To add modules this way, use <filename>devtool add</filename> in
- the following form:
+ To add modules this way, use <filename>devtool add</filename>
+ in the following form:
<literallayout class='monospaced'>
$ devtool add https://github.com/diversario/node-ssdp
</literallayout>
- In this example, <filename>devtool</filename> fetches the specified
- Git repository, detects that the code is Node.js code, fetches
- dependencies using <filename>npm</filename>, and sets
+ In this example, <filename>devtool</filename> fetches the
+ specified Git repository, detects the code as Node.js
+ code, fetches dependencies using <filename>npm</filename>, and
+ sets
<ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink>
accordingly.
</para>
@@ -1315,8 +1393,9 @@
<title>Working With Recipes</title>
<para>
- When building a recipe with <filename>devtool build</filename>, the
- typical build progression is as follows:
+ When building a recipe using the
+ <filename>devtool build</filename> command, the typical build
+ progresses as follows:
<orderedlist>
<listitem><para>
Fetch the source
@@ -1328,7 +1407,7 @@
Configure the source
</para></listitem>
<listitem><para>
- Compiling the source
+ Compile the source
</para></listitem>
<listitem><para>
Install the build output
@@ -1339,10 +1418,13 @@
</orderedlist>
For recipes in the workspace, fetching and unpacking is disabled
as the source tree has already been prepared and is persistent.
- Each of these build steps is defined as a function, usually with a
- "do_" prefix.
- These functions are typically shell scripts but can instead be written
- in Python.
+ Each of these build steps is defined as a function (task), usually
+ with a "do_" prefix (e.g.
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-fetch'><filename>do_fetch</filename></ulink>,
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-unpack'><filename>do_unpack</filename></ulink>,
+ and so forth).
+ These functions are typically shell scripts but can instead be
+ written in Python.
</para>
<para>
@@ -1350,12 +1432,13 @@
recipe does not include complete instructions for building the
software.
Instead, common functionality is encapsulated in classes inherited
- with the <filename>inherit</filename> directive, leaving the recipe
- to describe just the things that are specific to the software to be
- built.
- A <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-base'><filename>base</filename></ulink>
- class exists that is implicitly inherited by all recipes and provides
- the functionality that most typical recipes need.
+ with the <filename>inherit</filename> directive.
+ This technique leaves the recipe to describe just the things that
+ are specific to the software being built.
+ A
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-base'><filename>base</filename></ulink>
+ class exists that is implicitly inherited by all recipes and
+ provides the functionality that most recipes typically need.
</para>
<para>
@@ -1367,46 +1450,57 @@
<title>Finding Logs and Work Files</title>
<para>
- When you are debugging a recipe that you previously created using
- <filename>devtool add</filename> or whose source you are modifying
- by using the <filename>devtool modify</filename> command, after
- the first run of <filename>devtool build</filename>, you will
- find some symbolic links created within the source tree:
- <filename>oe-logs</filename>, which points to the directory in
- which log files and run scripts for each build step are created
- and <filename>oe-workdir</filename>, which points to the temporary
- work area for the recipe.
- You can use these links to get more information on what is
- happening at each build step.
- </para>
-
- <para>
- These locations under <filename>oe-workdir</filename> are
- particularly useful:
+ After the first run of the <filename>devtool build</filename>
+ command, recipes that were previously created using the
+ <filename>devtool add</filename> command or whose sources were
+ modified using the <filename>devtool modify</filename>
+ command contain symbolic links created within the source tree:
<itemizedlist>
- <listitem><para><filename>image/</filename>:
- Contains all of the files installed at the
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-install'><filename>do_install</filename></ulink>
- stage.
- Within a recipe, this directory is referred to by the
- expression
- <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-D'><filename>D</filename></ulink><filename>}</filename>.
- </para></listitem>
- <listitem><para><filename>sysroot-destdir/</filename>:
- Contains a subset of files installed within
- <filename>do_install</filename> that have been put into the
- shared sysroot.
- For more information, see the
- "<link linkend='sdk-sharing-files-between-recipes'>Sharing Files Between Recipes</link>"
- section.
+ <listitem><para>
+ <filename>oe-logs</filename>:
+ This link points to the directory in which log files
+ and run scripts for each build step are created.
</para></listitem>
- <listitem><para><filename>packages-split/</filename>:
- Contains subdirectories for each package produced by the
+ <listitem><para>
+ <filename>oe-workdir</filename>:
+ This link points to the temporary work area for the
recipe.
- For more information, see the
- "<link linkend='sdk-packaging'>Packaging</link>" section.
+ The following locations under
+ <filename>oe-workdir</filename> are particularly
+ useful:
+ <itemizedlist>
+ <listitem><para>
+ <filename>image/</filename>:
+ Contains all of the files installed during
+ the
+ <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-install'><filename>do_install</filename></ulink>
+ stage.
+ Within a recipe, this directory is referred
+ to by the expression
+ <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-D'><filename>D</filename></ulink><filename>}</filename>.
+ </para></listitem>
+ <listitem><para>
+ <filename>sysroot-destdir/</filename>:
+ Contains a subset of files installed within
+ <filename>do_install</filename> that have
+ been put into the shared sysroot.
+ For more information, see the
+ "<link linkend='sdk-sharing-files-between-recipes'>Sharing Files Between Recipes</link>"
+ section.
+ </para></listitem>
+ <listitem><para>
+ <filename>packages-split/</filename>:
+ Contains subdirectories for each package
+ produced by the recipe.
+ For more information, see the
+ "<link linkend='sdk-packaging'>Packaging</link>"
+ section.
+ </para></listitem>
+ </itemizedlist>
</para></listitem>
</itemizedlist>
+ You can use these links to get more information on what is
+ happening at each build step.
</para>
</section>
@@ -1453,12 +1547,14 @@
<para>
Recipes often need to use files provided by other recipes on
- the build host.
+ the
+ <ulink url='&YOCTO_DOCS_REF_URL;#hardware-build-system-term'>build host</ulink>.
For example, an application linking to a common library needs
access to the library itself and its associated headers.
The way this access is accomplished within the extensible SDK is
through the sysroot.
- One sysroot exists per "machine" for which the SDK is being built.
+ One sysroot exists per "machine" for which the SDK is being
+ built.
In practical terms, this means a sysroot exists for the target
machine, and a sysroot exists for the build host.
</para>
@@ -1471,7 +1567,7 @@
task within the
<filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-D'><filename>D</filename></ulink><filename>}</filename>
directory.
- A subset of these files automatically go into the sysroot.
+ A subset of these files automatically goes into the sysroot.
The reason for this limitation is that almost all files that go
into the sysroot are cataloged in manifests in order to ensure
they can be removed later when a recipe is modified or removed.
@@ -1496,20 +1592,20 @@
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-package'><filename>do_package</filename></ulink>
task, files installed during the
<ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-install'><filename>do_install</filename></ulink>
- task are split into one main package, which is almost always named
- the same as the recipe, and several other packages.
- This separation is done because not all of those installed files
- are always useful in every image.
+ task are split into one main package, which is almost always
+ named the same as the recipe, and into several other packages.
+ This separation exists because not all of those installed files
+ are useful in every image.
For example, you probably do not need any of the documentation
installed in a production image.
- Consequently, for each recipe the documentation files are separated
- into a <filename>-doc</filename> package.
- Recipes that package software that has optional modules or
- plugins might do additional package splitting as well.
+ Consequently, for each recipe the documentation files are
+ separated into a <filename>-doc</filename> package.
+ Recipes that package software containing optional modules or
+ plugins might undergo additional package splitting as well.
</para>
<para>
- After building a recipe you can see where files have gone by
+ After building a recipe, you can see where files have gone by
looking in the <filename>oe-workdir/packages-split</filename>
directory, which contains a subdirectory for each package.
Apart from some advanced cases, the
@@ -1519,17 +1615,18 @@
variables controls splitting.
The <filename>PACKAGES</filename> variable lists all of the
packages to be produced, while the <filename>FILES</filename>
- variable specifies which files to include in each package,
+ variable specifies which files to include in each package by
using an override to specify the package.
- For example, <filename>FILES_${PN}</filename> specifies the files
- to go into the main package (i.e. the main package is named the
- same as the recipe and
+ For example, <filename>FILES_${PN}</filename> specifies the
+ files to go into the main package (i.e. the main package has
+ the same name as the recipe and
<filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-PN'><filename>PN</filename></ulink><filename>}</filename>
evaluates to the recipe name).
- The order of the <filename>PACKAGES</filename> value is significant.
+ The order of the <filename>PACKAGES</filename> value is
+ significant.
For each installed file, the first package whose
- <filename>FILES</filename> value matches the file is the package
- into which the file goes.
+ <filename>FILES</filename> value matches the file is the
+ package into which the file goes.
Defaults exist for both the <filename>PACKAGES</filename> and
<filename>FILES</filename> variables.
Consequently, you might find you do not even need to set these
@@ -1551,29 +1648,29 @@
<filename>devtool deploy-target</filename> command.
Because the <filename>devtool deploy-target</filename> command
backs up any files it overwrites, you can use the
- <filename>devtool undeploy-target</filename> to restore those files
- and remove any other files the recipe deployed.
+ <filename>devtool undeploy-target</filename> command to restore
+ those files and remove any other files the recipe deployed.
Consider the following example:
<literallayout class='monospaced'>
$ devtool undeploy-target lighttpd root@192.168.7.2
</literallayout>
If you have deployed multiple applications, you can remove them
- all at once thus restoring the target device back to its
+ all using the "-a" option thus restoring the target device to its
original state:
<literallayout class='monospaced'>
$ devtool undeploy-target -a root@192.168.7.2
</literallayout>
Information about files deployed to the target as well as any
backed up files are stored on the target itself.
- This storage of course requires some additional space
+ This storage, of course, requires some additional space
on the target machine.
<note>
The <filename>devtool deploy-target</filename> and
- <filename>devtool undeploy-target</filename> command do not
+ <filename>devtool undeploy-target</filename> commands do not
currently interact with any package management system on the
target device (e.g. RPM or OPKG).
- Consequently, you should not intermingle operations
- <filename>devtool deploy-target</filename> and the package
+ Consequently, you should not intermingle
+ <filename>devtool deploy-target</filename> and package
manager operations on the target device.
Doing so could result in a conflicting set of files.
</note>
@@ -1584,16 +1681,14 @@
<title>Installing Additional Items Into the Extensible SDK</title>
<para>
- The extensible SDK typically only comes with a small number of tools
- and libraries out of the box.
- If you have a minimal SDK, then it starts mostly empty and is
- populated on-demand.
- However, sometimes you will need to explicitly install extra items
- into the SDK.
+ Out of the box the extensible SDK typically only comes with a small
+ number of tools and libraries.
+ A minimal SDK starts mostly empty and is populated on-demand.
+ Sometimes you must explicitly install extra items into the SDK.
If you need these extra items, you can first search for the items
using the <filename>devtool search</filename> command.
For example, suppose you need to link to libGL but you are not sure
- which recipe provides it.
+ which recipe provides libGL.
You can use the following command to find out:
<literallayout class='monospaced'>
$ devtool search libGL
@@ -1604,45 +1699,51 @@
<literallayout class='monospaced'>
$ devtool sdk-install mesa
</literallayout>
- By default, the <filename>devtool sdk-install</filename> assumes the
- item is available in pre-built form from your SDK provider.
+ By default, the <filename>devtool sdk-install</filename> command
+ assumes the item is available in pre-built form from your SDK
+ provider.
If the item is not available and it is acceptable to build the item
from source, you can add the "-s" option as follows:
<literallayout class='monospaced'>
$ devtool sdk-install -s mesa
</literallayout>
- It is important to remember that building the item from source takes
- significantly longer than installing the pre-built artifact.
- Also, if no recipe exists for the item you want to add to the SDK, you
- must instead add it using the <filename>devtool add</filename> command.
+ It is important to remember that building the item from source
+ takes significantly longer than installing the pre-built artifact.
+ Also, if no recipe exists for the item you want to add to the SDK,
+ you must instead add the item using the
+ <filename>devtool add</filename> command.
</para>
</section>
- <section id='sdk-updating-the-extensible-sdk'>
- <title>Updating the Extensible SDK</title>
+ <section id='sdk-applying-updates-to-an-installed-extensible-sdk'>
+ <title>Applying Updates to an Installed Extensible SDK</title>
<para>
- If you are working with an extensible SDK that gets occasionally
- updated (e.g. typically when that SDK has been provided to you by
- another party), then you will need to manually pull down those
- updates to your installed SDK.
+ If you are working with an installed extensible SDK that gets
+ occasionally updated (e.g. a third-party SDK), then you will need
+ to manually "pull down" the updates into the installed SDK.
</para>
<para>
- To update your installed SDK, run the following:
+ To update your installed SDK, use <filename>devtool</filename> as
+ follows:
<literallayout class='monospaced'>
$ devtool sdk-update
</literallayout>
The previous command assumes your SDK provider has set the default
- update URL for you.
- If that URL has not been set, you need to specify it yourself as
- follows:
+ update URL for you through the
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_UPDATE_URL'><filename>SDK_UPDATE_URL</filename></ulink>
+ variable as described in the
+ "<link linkend='sdk-providing-updates-to-the-extensible-sdk-after-installation'>Providing Updates to the Extensible SDK After Installation</link>"
+ section.
+ If the SDK provider has not set that default URL, you need to
+ specify it yourself in the command as follows:
<literallayout class='monospaced'>
$ devtool sdk-update <replaceable>path_to_update_directory</replaceable>
</literallayout>
<note>
- The URL needs to point specifically to a published SDK and not an
- SDK installer that you would download and install.
+ The URL needs to point specifically to a published SDK and
+ not to an SDK installer that you would download and install.
</note>
</para>
</section>
@@ -1652,31 +1753,34 @@
<para>
You might need to produce an SDK that contains your own custom
- libraries for sending to a third party (e.g., if you are a vendor with
- customers needing to build their own software for the target platform).
- If that is the case, then you can produce a derivative SDK based on
- the currently installed SDK fairly easily.
- Use these steps:
+ libraries.
+ A good example would be if you were a vendor with customers that
+ use your SDK to build their own platform-specific software and
+ those customers need an SDK that has custom libraries.
+ In such a case, you can produce a derivative SDK based on the
+ currently installed SDK fairly easily by following these steps:
<orderedlist>
- <listitem><para>If necessary, install an extensible SDK that
+ <listitem><para>
+ If necessary, install an extensible SDK that
you want to use as a base for your derivative SDK.
</para></listitem>
- <listitem><para>Source the environment script for the SDK.
+ <listitem><para>
+ Source the environment script for the SDK.
</para></listitem>
- <listitem><para>Add the extra libraries or other components
- you want by using the <filename>devtool add</filename>
- command.
+ <listitem><para>
+ Add the extra libraries or other components you want by
+ using the <filename>devtool add</filename> command.
</para></listitem>
- <listitem><para>Run the <filename>devtool build-sdk</filename>
- command.
+ <listitem><para>
+ Run the <filename>devtool build-sdk</filename> command.
</para></listitem>
</orderedlist>
- The above procedure takes the recipes added to the workspace and
- constructs a new SDK installer containing those recipes and the
+ The previous steps take the recipes added to the workspace and
+ construct a new SDK installer that contains those recipes and the
resulting binary artifacts.
The recipes go into their own separate layer in the constructed
- derivative SDK, leaving the workspace clean and ready for users
- to add their own recipes.
+ derivative SDK, which leaves the workspace clean and ready for
+ users to add their own recipes.
</para>
</section>
</chapter>
diff --git a/documentation/sdk-manual/sdk-intro.xml b/documentation/sdk-manual/sdk-intro.xml
index b6925fa266d..8642be61add 100644
--- a/documentation/sdk-manual/sdk-intro.xml
+++ b/documentation/sdk-manual/sdk-intro.xml
@@ -31,15 +31,18 @@
<para>
All SDKs consist of the following:
<itemizedlist>
- <listitem><para><emphasis>Cross-Development Toolchain</emphasis>:
+ <listitem><para>
+ <emphasis>Cross-Development Toolchain</emphasis>:
This toolchain contains a compiler, debugger, and various
miscellaneous tools.
</para></listitem>
- <listitem><para><emphasis>Libraries, Headers, and Symbols</emphasis>:
+ <listitem><para>
+ <emphasis>Libraries, Headers, and Symbols</emphasis>:
The libraries, headers, and symbols are specific to the image
(i.e. they match the image).
</para></listitem>
- <listitem><para><emphasis>Environment Setup Script</emphasis>:
+ <listitem><para>
+ <emphasis>Environment Setup Script</emphasis>:
This <filename>*.sh</filename> file, once run, sets up the
cross-development environment by defining variables and
preparing for SDK use.
@@ -48,7 +51,7 @@
</para>
<para>
- Additionally an extensible SDK has tools that allow you to easily add
+ Additionally, an extensible SDK has tools that allow you to easily add
new applications and libraries to an image, modify the source of an
existing component, test changes on the target hardware, and easily
integrate an application into the
@@ -81,14 +84,15 @@
and
<ulink url='&YOCTO_DOCS_REF_URL;#var-LD'><filename>LD</filename></ulink>.
This reduces the space needed for the tools.
- Understand, however, that a sysroot is still needed for every target
- since those binaries are target-specific.
+ Understand, however, that every target still needs a sysroot because
+ those binaries are target-specific.
</para>
<para>
The SDK development environment consists of the following:
<itemizedlist>
- <listitem><para>The self-contained SDK, which is an
+ <listitem><para>
+ The self-contained SDK, which is an
architecture-specific cross-toolchain and
matching sysroots (target and native) all built by the
OpenEmbedded build system (e.g. the SDK).
@@ -100,21 +104,24 @@
Additionally, the extensible SDK contains the
<filename>devtool</filename> functionality.
</para></listitem>
- <listitem><para>The Quick EMUlator (QEMU), which lets you simulate
+ <listitem><para>
+ The Quick EMUlator (QEMU), which lets you simulate
target hardware.
QEMU is not literally part of the SDK.
You must build and include this emulator separately.
However, QEMU plays an important role in the development
process that revolves around use of the SDK.
</para></listitem>
- <listitem><para>The Eclipse IDE Yocto Plug-in.
+ <listitem><para>
+ The Eclipse IDE Yocto Plug-in.
This plug-in is available for you if you are an Eclipse
user.
In the same manner as QEMU, the plug-in is not literally part
of the SDK but is rather available for use as part of the
development process.
</para></listitem>
- <listitem><para>Various performance-related
+ <listitem><para>
+ Various performance-related
<ulink url='http://www.eclipse.org/linuxtools/index.php'>tools</ulink>
that can enhance your development experience.
These tools are also separate from the actual SDK but can be
@@ -192,11 +199,11 @@
</tgroup>
</informaltable>
<literallayout class='monospaced'>
- * Extensible SDK will contain the toolchain and debugger if <ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_EXT_TYPE'><filename>SDK_EXT_TYPE</filename></ulink> is "full" or <ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_INCLUDE_TOOLCHAIN'><filename>SDK_INCLUDE_TOOLCHAIN</filename></ulink> is "1", which is the default.
+ * Extensible SDK contains the toolchain and debugger if <ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_EXT_TYPE'><filename>SDK_EXT_TYPE</filename></ulink> is "full" or <ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_INCLUDE_TOOLCHAIN'><filename>SDK_INCLUDE_TOOLCHAIN</filename></ulink> is "1", which is the default.
- ** Sysroot is managed through use of <filename>devtool</filename>. Thus, it is less likely that you will corrupt your SDK sysroot when you try to add additional libraries.
+ ** Sysroot is managed through the use of <filename>devtool</filename>. Thus, it is less likely that you will corrupt your SDK sysroot when you try to add additional libraries.
- *** Runtime package management can be added to the standard SDK but it is not supported by default.
+ *** You can add runtime package management to the standard SDK but it is not supported by default.
**** You must build and make the shared state available to extensible SDK users for "packages" you want to enable users to install.
</literallayout>
@@ -216,7 +223,7 @@
This toolchain is created by running a SDK installer script
or through a
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
- that is based on your Metadata configuration or extension for
+ that is based on your metadata configuration or extension for
your targeted device.
The cross-toolchain works with a matching target sysroot.
</para>
@@ -230,7 +237,7 @@
for generating binaries that run on the target architecture.
The target sysroot is based on the target root filesystem image
that is built by the OpenEmbedded build system and uses the same
- Metadata configuration used to build the cross-toolchain.
+ metadata configuration used to build the cross-toolchain.
</para>
</section>
@@ -240,7 +247,8 @@
<para>
The QEMU emulator allows you to simulate your hardware while
running your application or image.
- QEMU is not part of the SDK but is made available a number of ways:
+ QEMU is not part of the SDK but is made available a number of
+ different ways:
<itemizedlist>
<listitem><para>
If you have cloned the <filename>poky</filename> Git
@@ -265,7 +273,7 @@
</section>
<section id='eclipse-overview'>
- <title>Eclipse Yocto Plug-in</title>
+ <title><trademark class='trade'>Eclipse</trademark> Yocto Plug-in</title>
<para>
The Eclipse IDE is a popular development environment and it fully
@@ -285,8 +293,8 @@
Previous releases of the Eclipse Yocto Plug-in supported
"user-space tools" (i.e. LatencyTOP, PowerTOP, Perf, SystemTap,
and Lttng-ust) that also added to the development experience.
- These tools have been deprecated beginning with this release
- of the plug-in.
+ These tools have been deprecated with the release of the
+ Eclipse Yocto Plug-in.
</note>
</para>
@@ -335,14 +343,18 @@
<para>
You just need to follow these general steps:
<orderedlist>
- <listitem><para><emphasis>Install the SDK for your target hardware:</emphasis>
+ <listitem><para>
+ <emphasis>Install the SDK for your target hardware:</emphasis>
For information on how to install the SDK, see the
"<link linkend='sdk-installing-the-sdk'>Installing the SDK</link>"
- section.</para></listitem>
- <listitem><para><emphasis>Download or Build the Target Image:</emphasis>
+ section.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Download or Build the Target Image:</emphasis>
The Yocto Project supports several target architectures
and has many pre-built kernel images and root filesystem
images.</para>
+
<para>If you are going to develop your application on
hardware, go to the
<ulink url='&YOCTO_MACHINES_DL_URL;'><filename>machines</filename></ulink>
@@ -356,6 +368,7 @@
so forth.
Be sure to get the files you need for your particular
development process.</para>
+
<para>If you are going to develop your application and
then run and test it using the QEMU emulator, go to the
<ulink url='&YOCTO_QEMU_DL_URL;'><filename>machines/qemu</filename></ulink>
@@ -364,35 +377,35 @@
target architecture (e.g. <filename>qemux86_64</filename>
for an <trademark class='registered'>Intel</trademark>-based
64-bit architecture).
- Download kernel, root filesystem, and any other files you
+ Download the kernel, root filesystem, and any other files you
need for your process.
<note>
- To use the root filesystem in QEMU, you
- need to extract it.
+ To use the root filesystem in QEMU, you need to extract it.
See the
"<link linkend='sdk-extracting-the-root-filesystem'>Extracting the Root Filesystem</link>"
section for information on how to extract the root
filesystem.
</note>
</para></listitem>
- <listitem><para><emphasis>Develop and Test your
- Application:</emphasis> At this point, you have the tools
- to develop your application.
- If you need to separately install and use the QEMU
- emulator, you can go to
+ <listitem><para>
+ <emphasis>Develop and Test your Application:</emphasis>
+ At this point, you have the tools to develop your application.
+ If you need to separately install and use the QEMU emulator,
+ you can go to
<ulink url='http://wiki.qemu.org/Main_Page'>QEMU Home Page</ulink>
to download and learn about the emulator.
See the
"<ulink url='&YOCTO_DOCS_DEV_URL;#dev-manual-qemu'>Using the Quick EMUlator (QEMU)</ulink>"
chapter in the Yocto Project Development Tasks Manual
for information on using QEMU within the Yocto
- Project.</para></listitem>
+ Project.
+ </para></listitem>
</orderedlist>
</para>
<para>
- The remainder of this manual describes how to use both the standard
- SDK and the extensible SDK.
+ The remainder of this manual describes how to use the extensible
+ and standard SDKs.
Information also exists in appendix form that describes how you can
build, install, and modify an SDK.
</para>
diff --git a/documentation/sdk-manual/sdk-manual.xml b/documentation/sdk-manual/sdk-manual.xml
index d33205a846f..78c60a620c8 100644
--- a/documentation/sdk-manual/sdk-manual.xml
+++ b/documentation/sdk-manual/sdk-manual.xml
@@ -53,9 +53,14 @@
</revision>
<revision>
<revnumber>2.5</revnumber>
- <date>April 2018</date>
+ <date>May 2018</date>
<revremark>Released with the Yocto Project 2.5 Release.</revremark>
</revision>
+ <revision>
+ <revnumber>2.6</revnumber>
+ <date>&REL_MONTH_YEAR;</date>
+ <revremark>Released with the Yocto Project 2.6 Release.</revremark>
+ </revision>
</revhistory>
<copyright>
@@ -76,27 +81,38 @@
manual is for the &YOCTO_DOC_VERSION; release of the
Yocto Project.
To be sure you have the latest version of the manual
- for this release, use the manual from the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>.
+ for this release, go to the
+ <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
+ and select the manual from that site.
+ Manuals from the site are more up-to-date than manuals
+ derived from the Yocto Project released TAR files.
</para></listitem>
<listitem><para>
- For manuals associated with other releases of the Yocto
- Project, go to the
+ If you located this manual through a web search, the
+ version of the manual might not be the one you want
+ (e.g. the search might have returned a manual much
+ older than the Yocto Project version with which you
+ are working).
+ You can see all Yocto Project major releases by
+ visiting the
+ <ulink url='&YOCTO_WIKI_URL;/wiki/Releases'>Releases</ulink>
+ page.
+ If you need a version of this manual for a different
+ Yocto Project release, visit the
<ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
- and use the drop-down "Active Releases" button
- and choose the manual associated with the desired
- Yocto Project.
+ and select the manual set by using the
+ "ACTIVE RELEASES DOCUMENTATION" or "DOCUMENTS ARCHIVE"
+ pull-down menus.
</para></listitem>
<listitem><para>
- To report any inaccuracies or problems with this
- manual, send an email to the Yocto Project
- discussion group at
- <filename>yocto@yoctoproject.com</filename> or log into
- the freenode <filename>#yocto</filename> channel.
- </para></listitem>
+ To report any inaccuracies or problems with this
+ manual, send an email to the Yocto Project
+ discussion group at
+ <filename>yocto@yoctoproject.com</filename> or log into
+ the freenode <filename>#yocto</filename> channel.
+ </para></listitem>
</itemizedlist>
</note>
-
</legalnotice>
</bookinfo>
@@ -117,7 +133,7 @@
<xi:include href="sdk-appendix-customizing-standard.xml"/>
- <xi:include href="sdk-appendix-mars.xml"/>
+ <xi:include href="sdk-appendix-neon.xml"/>
<!-- <index id='index'>
<title>Index</title>
diff --git a/documentation/sdk-manual/sdk-using.xml b/documentation/sdk-manual/sdk-using.xml
index 7281e83ef5d..dd220c340b9 100644
--- a/documentation/sdk-manual/sdk-using.xml
+++ b/documentation/sdk-manual/sdk-using.xml
@@ -19,9 +19,9 @@
<para>
You can use a standard SDK to work on Makefile, Autotools, and
- Eclipse-based projects.
+ <trademark class='trade'>Eclipse</trademark>-based projects.
See the
- "<link linkend='sdk-working-projects'>Working with Different Types of Projects</link>"
+ "<link linkend='sdk-working-projects'>Using the SDK Toolchain Directly</link>"
chapter for more information.
</para>
@@ -53,24 +53,24 @@
<title>Installing the SDK</title>
<para>
- The first thing you need to do is install the SDK on your host
- development machine by running the <filename>*.sh</filename>
- installation script.
+ The first thing you need to do is install the SDK on your
+ <ulink url='&YOCTO_DOCS_REF_URL;#hardware-build-system-term'>Build Host</ulink>
+ by running the <filename>*.sh</filename> installation script.
</para>
<para>
You can download a tarball installer, which includes the
pre-built toolchain, the <filename>runqemu</filename>
- script, and support files from the appropriate directory under
- <ulink url='&YOCTO_TOOLCHAIN_DL_URL;'></ulink>.
- Toolchains are available for 32-bit and 64-bit x86 development
- systems from the <filename>i686</filename> and
- <filename>x86_64</filename> directories, respectively.
+ script, and support files from the appropriate
+ <ulink url='&YOCTO_TOOLCHAIN_DL_URL;'>toolchain</ulink>
+ directory within the Index of Releases.
+ Toolchains are available for several 32-bit and 64-bit
+ architectures with the <filename>x86_64</filename> directories,
+ respectively.
The toolchains the Yocto Project provides are based off the
- <filename>core-image-sato</filename> image and contain
+ <filename>core-image-sato</filename> and
+ <filename>core-image-minimal</filename> images and contain
libraries appropriate for developing against that image.
- Each type of development system supports five or more target
- architectures.
</para>
<para>
@@ -86,14 +86,15 @@
i686 or x86_64.
- <replaceable>image_type</replaceable> is the image for which the SDK was built.
+ <replaceable>image_type</replaceable> is the image for which the SDK was built:
+
+ core-image-minimal or core-image-sato.
<replaceable>arch</replaceable> is a string representing the tuned target architecture:
- i586, x86_64, powerpc, mips, armv7a or armv5te
+ aarch64, armv5e, core2-64, i586, mips32r2, mips64, ppc7400, or cortexa8hf-neon.
- <replaceable>release_version</replaceable> is a string representing the release number of the
- Yocto Project:
+ <replaceable>release_version</replaceable> is a string representing the release number of the Yocto Project:
&DISTRO;, &DISTRO;+snapshot
</literallayout>
@@ -120,38 +121,36 @@
<para>
The SDK and toolchains are self-contained and by default are
- installed into <filename>/opt/poky</filename>.
- However, when you run the SDK installer, you can choose an
- installation directory.
- <note>
- You must change the permissions on the SDK
- installer script so that it is executable:
- <literallayout class='monospaced'>
- $ chmod +x poky-glibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh
- </literallayout>
- </note>
+ installed into the <filename>poky_sdk</filename> folder in your
+ home directory.
+ You can choose to install the extensible SDK in any location when
+ you run the installer.
+ However, because files need to be written under that directory
+ during the normal course of operation, the location you choose
+ for installation must be writable for whichever
+ users need to use the SDK.
</para>
<para>
The following command shows how to run the installer given a
toolchain tarball for a 64-bit x86 development host system and
- a 32-bit x86 target architecture.
+ a 64-bit x86 target architecture.
The example assumes the SDK installer is located in
- <filename>~/Downloads/</filename>.
+ <filename>~/Downloads/</filename> and has execution rights.
<note>
If you do not have write permissions for the directory
into which you are installing the SDK, the installer
notifies you and exits.
- Be sure you have write permissions in the directory and
- run the installer again.
+ For that case, set up the proper permissions in the directory
+ and run the installer again.
</note>
<literallayout class='monospaced'>
- $ ./poky-glibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh
+ $ ./Downloads/poky-glibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh
Poky (Yocto Project Reference Distro) SDK installer version &DISTRO;
===============================================================
Enter target directory for SDK (default: /opt/poky/&DISTRO;):
You are about to install the SDK to "/opt/poky/&DISTRO;". Proceed[Y/n]? Y
- Extracting SDK.......................................................................done
+ Extracting SDK........................................ ..............................done
Setting it up...done
SDK has been successfully set up and is ready to be used.
Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
@@ -172,12 +171,11 @@
<para>
Once you have the SDK installed, you must run the SDK environment
- setup script before you can actually use it.
+ setup script before you can actually use the SDK.
This setup script resides in the directory you chose when you
- installed the SDK.
- For information on where this setup script can reside, see the
- "<link linkend='sdk-appendix-obtain'>Obtaining the SDK</link>"
- Appendix.
+ installed the SDK, which is either the default
+ <filename>/opt/poky/&DISTRO;</filename> directory or the directory
+ you chose during installation.
</para>
<para>
@@ -186,9 +184,11 @@
Environment setup scripts begin with the string
"<filename>environment-setup</filename>" and include as part of
their name the tuned target architecture.
- For example, the command to source a setup script for an IA-based
- target machine using i586 tuning and located in the default SDK
- installation directory is as follows:
+ As an example, the following commands set the working directory
+ to where the SDK was installed and then source the environment
+ setup script.
+ In this example, the setup script is for an IA-based
+ target machine using i586 tuning:
<literallayout class='monospaced'>
$ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux
</literallayout>
diff --git a/documentation/sdk-manual/sdk-working-projects.xml b/documentation/sdk-manual/sdk-working-projects.xml
index 6965e3f285f..d8cc4229dc1 100644
--- a/documentation/sdk-manual/sdk-working-projects.xml
+++ b/documentation/sdk-manual/sdk-working-projects.xml
@@ -8,7 +8,7 @@
<para>
You can use the SDK toolchain directly with Makefile,
- Autotools, and <trademark class='trade'>Eclipse</trademark> based
+ Autotools, and <trademark class='trade'>Eclipse</trademark>-based
projects.
This chapter covers the first two, while the
"<link linkend='sdk-eclipse-project'>Developing Applications Using <trademark class='trade'>Eclipse</trademark></link>"
@@ -19,263 +19,494 @@
<title>Autotools-Based Projects</title>
<para>
- Once you have a suitable cross-toolchain installed, it is very easy
- to develop a project outside of the OpenEmbedded build system.
- This section presents a simple "Helloworld" example that shows how
- to set up, compile, and run the project.
+ Once you have a suitable
+ <ulink url='&YOCTO_DOCS_REF_URL;#cross-development-toolchain'>cross-development toolchain</ulink>
+ installed, it is very easy to develop a project using the
+ <ulink url='https://en.wikipedia.org/wiki/GNU_Build_System'>GNU Autotools-based</ulink>
+ workflow, which is outside of the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>.
</para>
- <section id='creating-and-running-a-project-based-on-gnu-autotools'>
- <title>Creating and Running a Project Based on GNU Autotools</title>
+ <para>
+ The following figure presents a simple Autotools workflow.
+ <imagedata fileref="figures/sdk-autotools-flow.png" width="7in" height="8in" align="center" />
+ </para>
- <para>
- Follow these steps to create a simple Autotools-based project:
- <orderedlist>
- <listitem><para>
- <emphasis>Create your directory:</emphasis>
- Create a clean directory for your project and then make
- that directory your working location:
- <literallayout class='monospaced'>
+ <para>
+ Follow these steps to create a simple Autotools-based
+ "Hello World" project:
+ <note>
+ For more information on the GNU Autotools workflow,
+ see the same example on the
+ <ulink url='https://developer.gnome.org/anjuta-build-tutorial/stable/create-autotools.html.en'>GNOME Developer</ulink>
+ site.
+ </note>
+ <orderedlist>
+ <listitem><para>
+ <emphasis>Create a Working Directory and Populate It:</emphasis>
+ Create a clean directory for your project and then make
+ that directory your working location.
+ <literallayout class='monospaced'>
$ mkdir $HOME/helloworld
$ cd $HOME/helloworld
- </literallayout>
- </para></listitem>
- <listitem><para>
- <emphasis>Populate the directory:</emphasis>
- Create <filename>hello.c</filename>,
- <filename>Makefile.am</filename>,
- and <filename>configure.ac</filename> files as follows:
- <itemizedlist>
- <listitem><para>
- For <filename>hello.c</filename>, include
- these lines:
- <literallayout class='monospaced'>
+ </literallayout>
+ After setting up the directory, populate it with files
+ needed for the flow.
+ You need a project source file, a file to help with
+ configuration, and a file to help create the Makefile,
+ and a README file:
+ <filename>hello.c</filename>,
+ <filename>configure.ac</filename>,
+ <filename>Makefile.am</filename>, and
+ <filename>README</filename>, respectively.</para>
+
+ <para> Use the following command to create an empty README
+ file, which is required by GNU Coding Standards:
+ <literallayout class='monospaced'>
+ $ touch README
+ </literallayout>
+ Create the remaining three files as follows:
+ <itemizedlist>
+ <listitem><para>
+ <emphasis><filename>hello.c</filename>:</emphasis>
+ <literallayout class='monospaced'>
#include &lt;stdio.h&gt;
main()
{
printf("Hello World!\n");
}
- </literallayout>
- </para></listitem>
- <listitem><para>
- For <filename>Makefile.am</filename>,
- include these lines:
- <literallayout class='monospaced'>
- bin_PROGRAMS = hello
- hello_SOURCES = hello.c
- </literallayout>
- </para></listitem>
- <listitem><para>
- For <filename>configure.in</filename>,
- include these lines:
- <literallayout class='monospaced'>
+ </literallayout>
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>configure.ac</filename>:</emphasis>
+ <literallayout class='monospaced'>
AC_INIT(hello,0.1)
AM_INIT_AUTOMAKE([foreign])
AC_PROG_CC
- AC_PROG_INSTALL
- AC_OUTPUT(Makefile)
- </literallayout>
- </para></listitem>
- </itemizedlist>
- </para></listitem>
- <listitem><para>
- <emphasis>Source the cross-toolchain
- environment setup file:</emphasis>
- As described earlier in the manual, installing the
- cross-toolchain creates a cross-toolchain
- environment setup script in the directory that the SDK
- was installed.
- Before you can use the tools to develop your project,
- you must source this setup script.
- The script begins with the string "environment-setup"
- and contains the machine architecture, which is
- followed by the string "poky-linux".
- Here is an example that sources a script from the
- default SDK installation directory that uses the
- 32-bit Intel x86 Architecture and the
- &DISTRO_NAME; Yocto Project release:
- <literallayout class='monospaced'>
+ AC_CONFIG_FILES(Makefile)
+ AC_OUTPUT
+ </literallayout>
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>Makefile.am</filename>:</emphasis>
+ <literallayout class='monospaced'>
+ bin_PROGRAMS = hello
+ hello_SOURCES = hello.c
+ </literallayout>
+ </para></listitem>
+ </itemizedlist>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Source the Cross-Toolchain
+ Environment Setup File:</emphasis>
+ As described earlier in the manual, installing the
+ cross-toolchain creates a cross-toolchain
+ environment setup script in the directory that the SDK
+ was installed.
+ Before you can use the tools to develop your project,
+ you must source this setup script.
+ The script begins with the string "environment-setup"
+ and contains the machine architecture, which is
+ followed by the string "poky-linux".
+ For this example, the command sources a script from the
+ default SDK installation directory that uses the
+ 32-bit Intel x86 Architecture and the
+ &DISTRO_NAME; Yocto Project release:
+ <literallayout class='monospaced'>
$ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux
- </literallayout>
- </para></listitem>
- <listitem><para>
- <emphasis>Generate the local aclocal.m4
- files and create the configure script:</emphasis>
- The following GNU Autotools generate the local
- <filename>aclocal.m4</filename> files and create the
- configure script:
- <literallayout class='monospaced'>
- $ aclocal
- $ autoconf
- </literallayout>
- </para></listitem>
- <listitem><para>
- <emphasis>Generate files needed by GNU coding
- standards:</emphasis>
- GNU coding standards require certain files in order
- for the project to be compliant.
- This command creates those files:
- <literallayout class='monospaced'>
- $ touch NEWS README AUTHORS ChangeLog
- </literallayout>
- </para></listitem>
- <listitem><para>
- <emphasis>Generate the configure file:</emphasis>
- This command generates the
- <filename>configure</filename>:
- <literallayout class='monospaced'>
- $ automake -a
- </literallayout>
- </para></listitem>
- <listitem><para>
- <emphasis>Cross-compile the project:</emphasis>
- This command compiles the project using the
- cross-compiler.
- The
- <ulink url='&YOCTO_DOCS_REF_URL;#var-CONFIGURE_FLAGS'><filename>CONFIGURE_FLAGS</filename></ulink>
- environment variable provides the minimal arguments for
- GNU configure:
- <literallayout class='monospaced'>
+ </literallayout>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Create the <filename>configure</filename> Script:</emphasis>
+ Use the <filename>autoreconf</filename> command to
+ generate the <filename>configure</filename> script.
+ <literallayout class='monospaced'>
+ $ autoreconf
+ </literallayout>
+ The <filename>autoreconf</filename> tool takes care
+ of running the other Autotools such as
+ <filename>aclocal</filename>,
+ <filename>autoconf</filename>, and
+ <filename>automake</filename>.
+ <note>
+ If you get errors from
+ <filename>configure.ac</filename>, which
+ <filename>autoreconf</filename> runs, that indicate
+ missing files, you can use the "-i" option, which
+ ensures missing auxiliary files are copied to the build
+ host.
+ </note>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Cross-Compile the Project:</emphasis>
+ This command compiles the project using the
+ cross-compiler.
+ The
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-CONFIGURE_FLAGS'><filename>CONFIGURE_FLAGS</filename></ulink>
+ environment variable provides the minimal arguments for
+ GNU configure:
+ <literallayout class='monospaced'>
$ ./configure ${CONFIGURE_FLAGS}
- </literallayout>
- </para></listitem>
- <listitem><para>
- <emphasis>Make and install the project:</emphasis>
- These two commands generate and install the project
- into the destination directory:
- <literallayout class='monospaced'>
+ </literallayout>
+ For an Autotools-based project, you can use the
+ cross-toolchain by just passing the appropriate host
+ option to <filename>configure.sh</filename>.
+ The host option you use is derived from the name of the
+ environment setup script found in the directory in which
+ you installed the cross-toolchain.
+ For example, the host option for an ARM-based target that
+ uses the GNU EABI is
+ <filename>armv5te-poky-linux-gnueabi</filename>.
+ You will notice that the name of the script is
+ <filename>environment-setup-armv5te-poky-linux-gnueabi</filename>.
+ Thus, the following command works to update your project
+ and rebuild it using the appropriate cross-toolchain tools:
+ <literallayout class='monospaced'>
+ $ ./configure --host=armv5te-poky-linux-gnueabi --with-libtool-sysroot=<replaceable>sysroot_dir</replaceable>
+ </literallayout>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Make and Install the Project:</emphasis>
+ These two commands generate and install the project
+ into the destination directory:
+ <literallayout class='monospaced'>
$ make
$ make install DESTDIR=./tmp
- </literallayout>
- </para></listitem>
- <listitem><para>
- <emphasis>Verify the installation:</emphasis>
- This command is a simple way to verify the installation
- of your project.
- Running the command prints the architecture on which
- the binary file can run.
- This architecture should be the same architecture that
- the installed cross-toolchain supports.
- <literallayout class='monospaced'>
+ </literallayout>
+ <note>
+ To learn about environment variables established
+ when you run the cross-toolchain environment setup
+ script and how they are used or overridden when
+ the Makefile, see the
+ "<link linkend='makefile-based-projects'>Makefile-Based Projects</link>"
+ section.
+ </note>
+ This next command is a simple way to verify the
+ installation of your project.
+ Running the command prints the architecture on which
+ the binary file can run.
+ This architecture should be the same architecture that
+ the installed cross-toolchain supports.
+ <literallayout class='monospaced'>
$ file ./tmp/usr/local/bin/hello
- </literallayout>
- </para></listitem>
- <listitem><para>
- <emphasis>Execute your project:</emphasis>
- To execute the project in the shell, simply enter
- the name.
- You could also copy the binary to the actual target
- hardware and run the project there as well:
- <literallayout class='monospaced'>
- $ ./hello
- </literallayout>
- As expected, the project displays the "Hello World!"
- message.
- </para></listitem>
- </orderedlist>
- </para>
- </section>
-
- <section id='passing-host-options'>
- <title>Passing Host Options</title>
-
- <para>
- For an Autotools-based project, you can use the cross-toolchain
- by just passing the appropriate host option to
- <filename>configure.sh</filename>.
- The host option you use is derived from the name of the
- environment setup script found in the directory in which you
- installed the cross-toolchain.
- For example, the host option for an ARM-based target that uses
- the GNU EABI is <filename>armv5te-poky-linux-gnueabi</filename>.
- You will notice that the name of the script is
- <filename>environment-setup-armv5te-poky-linux-gnueabi</filename>.
- Thus, the following command works to update your project and
- rebuild it using the appropriate cross-toolchain tools:
- <literallayout class='monospaced'>
- $ ./configure --host=armv5te-poky-linux-gnueabi \
- --with-libtool-sysroot=<replaceable>sysroot_dir</replaceable>
- </literallayout>
- <note>
- If the <filename>configure</filename> script results in
- problems recognizing the
- <filename>--with-libtool-sysroot=</filename><replaceable>sysroot-dir</replaceable>
- option, regenerate the script to enable the support by
- doing the following and then run the script again:
+ </literallayout>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Execute Your Project:</emphasis>
+ To execute the project, you would need to run it on your
+ target hardware.
+ If your target hardware happens to be your build host,
+ you could run the project as follows:
<literallayout class='monospaced'>
- $ libtoolize --automake
- $ aclocal -I ${OECORE_TARGET_SYSROOT}/usr/share/aclocal [-I <replaceable>dir_containing_your_project-specific_m4_macros</replaceable>]
- $ autoconf
- $ autoheader
- $ automake -a
+ $ ./tmp/usr/local/bin/hello
</literallayout>
- </note>
- </para>
- </section>
+ As expected, the project displays the "Hello World!"
+ message.
+ </para></listitem>
+ </orderedlist>
+ </para>
</section>
<section id='makefile-based-projects'>
<title>Makefile-Based Projects</title>
<para>
- For Makefile-based projects, the cross-toolchain environment
- variables established by running the cross-toolchain environment
- setup script are subject to general <filename>make</filename>
- rules.
+ Simple Makefile-based projects use and interact with the
+ cross-toolchain environment variables established when you run
+ the cross-toolchain environment setup script.
+ The environment variables are subject to general
+ <filename>make</filename> rules.
</para>
<para>
- To illustrate this, consider the following four cross-toolchain
- environment variables:
- <literallayout class='monospaced'>
- <ulink url='&YOCTO_DOCS_REF_URL;#var-CC'>CC</ulink>=i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/&DISTRO;/sysroots/i586-poky-linux
- <ulink url='&YOCTO_DOCS_REF_URL;#var-LD'>LD</ulink>=i586-poky-linux-ld --sysroot=/opt/poky/&DISTRO;/sysroots/i586-poky-linux
- <ulink url='&YOCTO_DOCS_REF_URL;#var-CFLAGS'>CFLAGS</ulink>=-O2 -pipe -g -feliminate-unused-debug-types
- <ulink url='&YOCTO_DOCS_REF_URL;#var-CXXFLAGS'>CXXFLAGS</ulink>=-O2 -pipe -g -feliminate-unused-debug-types
- </literallayout>
- Now, consider the following three cases:
+ This section presents a simple Makefile development flow and
+ provides an example that lets you see how you can use
+ cross-toolchain environment variables and Makefile variables
+ during development.
+ <imagedata fileref="figures/sdk-makefile-flow.png" width="6in" height="7in" align="center" />
+ </para>
+
+ <para>
+ The main point of this section is to explain the following three
+ cases regarding variable behavior:
<itemizedlist>
<listitem><para>
<emphasis>Case 1 - No Variables Set in the
- <filename>Makefile</filename>:</emphasis>
- Because these variables are not specifically set in the
+ <filename>Makefile</filename> Map to Equivalent
+ Environment Variables Set in the SDK Setup Script:</emphasis>
+ Because matching variables are not specifically set in the
<filename>Makefile</filename>, the variables retain their
- values based on the environment.
+ values based on the environment setup script.
</para></listitem>
<listitem><para>
- <emphasis>Case 2 - Variables Set in the
- <filename>Makefile</filename>:</emphasis>
- Specifically setting variables in the
+ <emphasis>Case 2 - Variables Are Set in the Makefile that
+ Map to Equivalent Environment Variables from the SDK
+ Setup Script:</emphasis>
+ Specifically setting matching variables in the
<filename>Makefile</filename> during the build results in
the environment settings of the variables being
overwritten.
+ In this case, the variables you set in the
+ <filename>Makefile</filename> are used.
</para></listitem>
<listitem><para>
- <emphasis>Case 3 - Variables Set when the
- <filename>Makefile</filename> is Executed from the
- Command Line:</emphasis>
+ <emphasis>Case 3 - Variables Are Set Using the Command Line
+ that Map to Equivalent Environment Variables from the
+ SDK Setup Script:</emphasis>
Executing the <filename>Makefile</filename> from the
- command-line results in the variables being overwritten
- with command-line content regardless of what is being set
- in the <filename>Makefile</filename>.
- In this case, environment variables are not considered
- unless you use the "-e" flag during the build:
- <literallayout class='monospaced'>
- $ make -e <replaceable>file</replaceable>
- </literallayout>
- If you use this flag, then the environment values of the
- variables override any variables specifically set in the
- <filename>Makefile</filename>.
+ command line results in the environment variables being
+ overwritten.
+ In this case, the command-line content is used.
</para></listitem>
</itemizedlist>
<note>
- For the list of variables set up by the cross-toolchain
- environment setup script, see the
- "<link linkend='sdk-running-the-sdk-environment-setup-script'>Running the SDK Environment Setup Script</link>"
- section.
+ Regardless of how you set your variables, if you use
+ the "-e" option with <filename>make</filename>, the
+ variables from the SDK setup script take precedence:
+ <literallayout class='monospaced'>
+ $ make -e <replaceable>target</replaceable>
+ </literallayout>
</note>
</para>
+
+ <para>
+ The remainder of this section presents a simple Makefile example
+ that demonstrates these variable behaviors.
+ </para>
+
+ <para>
+ In a new shell environment variables are not established for the
+ SDK until you run the setup script.
+ For example, the following commands show a null value for the
+ compiler variable (i.e.
+ <ulink url='&YOCTO_DOCS_REF_URL;#var-CC'><filename>CC</filename></ulink>).
+ <literallayout class='monospaced'>
+ $ echo ${CC}
+
+ $
+ </literallayout>
+ Running the SDK setup script for a 64-bit build host and an
+ i586-tuned target architecture for a
+ <filename>core-image-sato</filename> image using the current
+ &DISTRO; Yocto Project release and then echoing that variable
+ shows the value established through the script:
+ <literallayout class='monospaced'>
+ $ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux
+ $ echo ${CC}
+ i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/2.5/sysroots/i586-poky-linux
+ </literallayout>
+ </para>
+
+ <para>
+ To illustrate variable use, work through this simple "Hello World!"
+ example:
+ <orderedlist>
+ <listitem><para>
+ <emphasis>Create a Working Directory and Populate It:</emphasis>
+ Create a clean directory for your project and then make
+ that directory your working location.
+ <literallayout class='monospaced'>
+ $ mkdir $HOME/helloworld
+ $ cd $HOME/helloworld
+ </literallayout>
+ After setting up the directory, populate it with files
+ needed for the flow.
+ You need a <filename>main.c</filename> file from which you
+ call your function, a <filename>module.h</filename> file
+ to contain headers, and a <filename>module.c</filename>
+ that defines your function.
+ </para>
+
+ <para>Create the three files as follows:
+ <itemizedlist>
+ <listitem><para>
+ <emphasis><filename>main.c</filename>:</emphasis>
+ <literallayout class='monospaced'>
+ #include "module.h"
+ void sample_func();
+ int main()
+ {
+ sample_func();
+ return 0;
+ }
+ </literallayout>
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>module.h</filename>:</emphasis>
+ <literallayout class='monospaced'>
+ #include &lt;stdio.h&gt;
+ void sample_func();
+ </literallayout>
+ </para></listitem>
+ <listitem><para>
+ <emphasis><filename>module.c</filename>:</emphasis>
+ <literallayout class='monospaced'>
+ #include "module.h"
+ void sample_func()
+ {
+ printf("Hello World!");
+ printf("\n");
+ }
+ </literallayout>
+ </para></listitem>
+ </itemizedlist>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Source the Cross-Toolchain Environment Setup File:</emphasis>
+ As described earlier in the manual, installing the
+ cross-toolchain creates a cross-toolchain environment setup
+ script in the directory that the SDK was installed.
+ Before you can use the tools to develop your project,
+ you must source this setup script.
+ The script begins with the string "environment-setup"
+ and contains the machine architecture, which is
+ followed by the string "poky-linux".
+ For this example, the command sources a script from the
+ default SDK installation directory that uses the
+ 32-bit Intel x86 Architecture and the
+ &DISTRO_NAME; Yocto Project release:
+ <literallayout class='monospaced'>
+ $ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux
+ </literallayout>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Create the <filename>Makefile</filename>:</emphasis>
+ For this example, the Makefile contains two lines that
+ can be used to set the <filename>CC</filename> variable.
+ One line is identical to the value that is set when you
+ run the SDK environment setup script, and the other line
+ sets <filename>CC</filename> to "gcc", the default GNU
+ compiler on the build host:
+ <literallayout class='monospaced'>
+ # CC=i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/2.5/sysroots/i586-poky-linux
+ # CC="gcc"
+ all: main.o module.o
+ ${CC} main.o module.o -o target_bin
+ main.o: main.c module.h
+ ${CC} -I . -c main.c
+ module.o: module.c module.h
+ ${CC} -I . -c module.c
+ clean:
+ rm -rf *.o
+ rm target_bin
+ </literallayout>
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Make the Project:</emphasis>
+ Use the <filename>make</filename> command to create the
+ binary output file.
+ Because variables are commented out in the Makefile,
+ the value used for <filename>CC</filename> is the value
+ set when the SDK environment setup file was run:
+ <literallayout class='monospaced'>
+ $ make
+ i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/2.5/sysroots/i586-poky-linux -I . -c main.c
+ i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/2.5/sysroots/i586-poky-linux -I . -c module.c
+ i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/2.5/sysroots/i586-poky-linux main.o module.o -o target_bin
+ </literallayout>
+ From the results of the previous command, you can see that
+ the compiler used was the compiler established through
+ the <filename>CC</filename> variable defined in the
+ setup script.</para>
+
+ <para>You can override the <filename>CC</filename>
+ environment variable with the same variable as set from
+ the Makefile by uncommenting the line in the Makefile
+ and running <filename>make</filename> again.
+ <literallayout class='monospaced'>
+ $ make clean
+ rm -rf *.o
+ rm target_bin
+ #
+ # Edit the Makefile by uncommenting the line that sets CC to "gcc"
+ #
+ $ make
+ gcc -I . -c main.c
+ gcc -I . -c module.c
+ gcc main.o module.o -o target_bin
+ </literallayout>
+ As shown in the previous example, the cross-toolchain
+ compiler is not used.
+ Rather, the default compiler is used.</para>
+
+ <para>This next case shows how to override a variable
+ by providing the variable as part of the command line.
+ Go into the Makefile and re-insert the comment character
+ so that running <filename>make</filename> uses
+ the established SDK compiler.
+ However, when you run <filename>make</filename>, use a
+ command-line argument to set <filename>CC</filename>
+ to "gcc":
+ <literallayout class='monospaced'>
+ $ make clean
+ rm -rf *.o
+ rm target_bin
+ #
+ # Edit the Makefile to comment out the line setting CC to "gcc"
+ #
+ $ make
+ i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/2.5/sysroots/i586-poky-linux -I . -c main.c
+ i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/2.5/sysroots/i586-poky-linux -I . -c module.c
+ i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/2.5/sysroots/i586-poky-linux main.o module.o -o target_bin
+ $ make clean
+ rm -rf *.o
+ rm target_bin
+ $ make CC="gcc"
+ gcc -I . -c main.c
+ gcc -I . -c module.c
+ gcc main.o module.o -o target_bin
+ </literallayout>
+ In the previous case, the command-line argument overrides
+ the SDK environment variable.</para>
+
+ <para>In this last case, edit Makefile again to use the
+ "gcc" compiler but then use the "-e" option on the
+ <filename>make</filename> command line:
+ <literallayout class='monospaced'>
+ $ make clean
+ rm -rf *.o
+ rm target_bin
+ #
+ # Edit the Makefile to use "gcc"
+ #
+ $ make
+ gcc -I . -c main.c
+ gcc -I . -c module.c
+ gcc main.o module.o -o target_bin
+ $ make clean
+ rm -rf *.o
+ rm target_bin
+ $ make -e
+ i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/2.5/sysroots/i586-poky-linux -I . -c main.c
+ i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/2.5/sysroots/i586-poky-linux -I . -c module.c
+ i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/2.5/sysroots/i586-poky-linux main.o module.o -o target_bin
+ </literallayout>
+ In the previous case, the "-e" option forces
+ <filename>make</filename> to use the SDK environment
+ variables regardless of the values in the Makefile.
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Execute Your Project:</emphasis>
+ To execute the project (i.e.
+ <filename>target_bin</filename>), use the following
+ command:
+ <literallayout class='monospaced'>
+ $ ./target_bin
+ Hello World!
+ </literallayout>
+ <note>
+ If you used the cross-toolchain compiler to build
+ <filename>target_bin</filename> and your build host
+ differs in architecture from that of the target
+ machine, you need to run your project on the target
+ device.
+ </note>
+ As expected, the project displays the "Hello World!"
+ message.
+ </para></listitem>
+ </orderedlist>
+ </para>
</section>
</chapter>
<!--
diff --git a/documentation/toaster-manual/toaster-manual-intro.xml b/documentation/toaster-manual/toaster-manual-intro.xml
index 4e59e007806..e84964c4e1a 100644
--- a/documentation/toaster-manual/toaster-manual-intro.xml
+++ b/documentation/toaster-manual/toaster-manual-intro.xml
@@ -38,7 +38,7 @@
Browse layers listed in the various
<link linkend='layer-source'>layer sources</link>
that are available in your project (e.g. the
- OpenEmbedded Metadata Index at
+ OpenEmbedded Layer Index at
<ulink url='http://layers.openembedded.org/layerindex/'></ulink>).
</para></listitem>
<listitem><para>
diff --git a/documentation/toaster-manual/toaster-manual-reference.xml b/documentation/toaster-manual/toaster-manual-reference.xml
index 45c71bc1b10..7440580e7ce 100644
--- a/documentation/toaster-manual/toaster-manual-reference.xml
+++ b/documentation/toaster-manual/toaster-manual-reference.xml
@@ -34,7 +34,7 @@
A layer index is a web application that contains information
about a set of custom layers.
A good example of an existing layer index is the
- OpenEmbedded Metadata Index.
+ OpenEmbedded Layer Index.
A public instance of this layer index exists at
<ulink url='http://layers.openembedded.org'></ulink>.
You can find the code for this layer index's web application at
@@ -92,8 +92,8 @@
<para>
For general information on layers, see the
- "<ulink url='&YOCTO_DOCS_GS_URL;#the-yocto-project-layer-model'>The Yocto Project Layer Model</ulink>"
- section in the Getting Started With Yocto Project Manual.
+ "<ulink url='&YOCTO_DOCS_OM_URL;#the-yocto-project-layer-model'>The Yocto Project Layer Model</ulink>"
+ section in the Yocto Project Overview and Concepts Manual.
For information on how to create layers, see the
"<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>"
section in the Yocto Project Development Tasks Manual.
@@ -681,26 +681,27 @@
(e.g. <filename>poky</filename>) at
<filename>bitbake/lib/manage.py</filename>.
This section documents those commands.
- <note>
- <para>
- When using <filename>manage.py</filename> commands given
- a default configuration, you must be sure that your
- working directory is set to the
- <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>.
- Using <filename>manage.py</filename> commands from the
- Build Directory allows Toaster to find the
- <filename>toaster.sqlite</filename> file, which is located
- in the Build Directory.
- </para>
-
- <para>
- For non-default database configurations, it is possible
- that you can use <filename>manage.py</filename> commands
- from a directory other than the Build directory.
- To do so, the
- <filename>toastermain/settings.py</filename> file must be
- configured to point to the correct database backend.
- </para>
+ <note><title>Notes</title>
+ <itemizedlist>
+ <listitem><para>
+ When using <filename>manage.py</filename> commands given
+ a default configuration, you must be sure that your
+ working directory is set to the
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>.
+ Using <filename>manage.py</filename> commands from the
+ Build Directory allows Toaster to find the
+ <filename>toaster.sqlite</filename> file, which is located
+ in the Build Directory.
+ </para></listitem>
+ <listitem><para>
+ For non-default database configurations, it is possible
+ that you can use <filename>manage.py</filename> commands
+ from a directory other than the Build Directory.
+ To do so, the
+ <filename>toastermain/settings.py</filename> file must be
+ configured to point to the correct database backend.
+ </para></listitem>
+ </itemizedlist>
</note>
</para>
diff --git a/documentation/toaster-manual/toaster-manual-setup-and-use.xml b/documentation/toaster-manual/toaster-manual-setup-and-use.xml
index c26a32a3d5e..b4caebbe0fa 100644
--- a/documentation/toaster-manual/toaster-manual-setup-and-use.xml
+++ b/documentation/toaster-manual/toaster-manual-setup-and-use.xml
@@ -11,9 +11,9 @@
<para>
Once you have set up the Yocto Project and installed the
- Toaster system dependencies as described in
- "<link linkend='toaster-manual-start'>Preparing to Use Toaster</link>",
- you are ready to start Toaster.
+ Toaster system dependencies as described in the
+ "<link linkend='toaster-manual-start'>Preparing to Use Toaster</link>"
+ chapter, you are ready to start Toaster.
</para>
<para>
@@ -61,6 +61,71 @@
</para>
</section>
+ <section id='setting-up-toaster-without-a-web-server'>
+ <title>Setting Up Toaster Without a Web Server</title>
+
+ <para>
+ You can start a Toaster environment without starting its
+ web server. This is useful for the following:
+ <itemizedlist>
+ <listitem><para>
+ Capturing a command-line build’s statistics into
+ the Toaster database for examination later.
+ </para></listitem>
+ <listitem><para>
+ Capturing a command-line build’s statistics when
+ the Toaster server is already running.
+ </para></listitem>
+ <listitem><para>
+ Having one instance of the Toaster web server
+ track and capture multiple command-line builds,
+ where each build is started in its own “nowebâ€
+ Toaster environment.
+ </para></listitem>
+ </itemizedlist>
+ The following commands show how to start a Toaster environment
+ without starting its web server, perform BitBake operations,
+ and then shut down the Toaster environment.
+ Once the build is complete, you can close the Toaster environment.
+ Before closing the environment, however, you should allow a few
+ minutes to ensure the complete transfer of its BitBake build
+ statistics to the Toaster database.
+ If you have a separate Toaster web server instance running, you
+ can watch this command-line build’s progress and examine the
+ results as soon as they are posted:
+ <literallayout class='monospaced'>
+ $ source toaster start noweb
+ $ bitbake <replaceable>target</replaceable>
+ $ source toaster stop
+ </literallayout>
+ </para>
+ </section>
+
+ <section id='setting-up-toaster-without-a-build-server'>
+ <title>Setting Up Toaster Without a Build Server</title>
+
+ <para>
+ You can start a Toaster environment with the
+ “New Projects†feature disabled.
+ Doing so is useful for the following:
+ <itemizedlist>
+ <listitem><para>
+ Sharing your build results over the web server while
+ blocking others from starting builds on your host.
+ </para></listitem>
+ <listitem><para>
+ Allowing only local command-line builds to be captured
+ into the Toaster database.
+ </para></listitem>
+ </itemizedlist>
+ Use the following command to set up Toaster without a
+ build server:
+ <literallayout class='monospaced'>
+ $ source toaster start nobuild webport=<replaceable>port</replaceable>
+ </literallayout>
+ </para>
+ </section>
+
<section id='setting-up-external-access'>
<title>Setting up External Access</title>
@@ -227,8 +292,8 @@
</note>
<itemizedlist>
<listitem><para>
- Have all the build requirements as described in
- "<link linkend='toaster-setting-up-the-basic-system-requirements'>Setting Up the Basic System Requirements</link>"
+ Have all the build requirements as described in the
+ "<link linkend='toaster-manual-start'>Preparing to Use Toaster</link>"
chapter.
</para></listitem>
<listitem><para>
@@ -312,7 +377,7 @@
<itemizedlist>
<listitem><para>
Edit the
- <ulink url='http://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SECRET_KEY'>DATABASE</ulink>
+ <ulink url='https://docs.djangoproject.com/en/1.11/ref/settings/#databases'>DATABASES</ulink>
settings:
<literallayout class='monospaced'>
DATABASES = {
@@ -329,14 +394,14 @@
</para></listitem>
<listitem><para>
Edit the
- <ulink url='http://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SECRET_KEY'>SECRET_KEY</ulink>:
+ <ulink url='https://docs.djangoproject.com/en/1.11/ref/settings/#std:setting-SECRET_KEY'>SECRET_KEY</ulink>:
<literallayout class='monospaced'>
SECRET_KEY = '<replaceable>your_secret_key</replaceable>'
</literallayout>
</para></listitem>
<listitem><para>
Edit the
- <ulink url='http://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SECRET_KEY'>STATIC_ROOT</ulink>:
+ <ulink url='https://docs.djangoproject.com/en/1.11/ref/settings/#std:setting-STATIC_ROOT'>STATIC_ROOT</ulink>:
<literallayout class='monospaced'>
STATIC_ROOT = '/var/www/toaster/static_files/'
</literallayout>
@@ -360,58 +425,68 @@
<literallayout class='monospaced'>
$ cd /var/www/toaster/poky/
$ ./bitbake/lib/toaster/manage.py migrate
- $ TOASTER_DIR=`pwd` TOASTER_CONF=./meta-poky/conf/toasterconf.json \
+ $ TOASTER_DIR=`pwd` TEMPLATECONF='poky' \
./bitbake/lib/toaster/manage.py checksettings
$ ./bitbake/lib/toaster/manage.py collectstatic
</literallayout>
- </para>
-
- <para>
- For the above set of commands, after moving to the
- <filename>poky</filename> directory,
- the <filename>migrate</filename>
- command ensures the database
- schema has had changes propagated correctly (i.e.
- migrations).
- </para>
-
- <para>
- The next line sets the Toaster root directory
- <filename>TOASTER_DIR</filename> and the location of
- the Toaster configuration file
- <filename>TOASTER_CONF</filename>, which is
- relative to the Toaster root directory
- <filename>TOASTER_DIR</filename>.
- For more information on the Toaster configuration file,
- see the
- <link linkend='configuring-toaster'>Configuring Toaster</link>
- chapter.
- </para>
-
- <para>
- This line also runs the <filename>checksettings</filename>
- command, which configures the location of the Toaster
- <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build directory</ulink>.
- The Toaster root directory <filename>TOASTER_DIR</filename>
- determines where the Toaster build directory
- is created on the file system.
- In the example above,
- <filename>TOASTER_DIR</filename> is set as follows:
- <literallayout class="monospaced">
+ In the previous example, from the <filename>poky</filename>
+ directory, the <filename>migrate</filename> command
+ ensures the database schema changes have propagated
+ correctly (i.e. migrations).
+ The next line sets the Toaster root directory
+ <filename>TOASTER_DIR</filename> and the location
+ of the Toaster configuration file
+ <filename>TOASTER_CONF</filename>, which is relative to
+ <filename>TOASTER_DIR</filename>.
+ The <filename>TEMPLATECONF</filename> value reflects the
+ contents of <filename>poky/.templateconf</filename>, and
+ by default, should include the string "poky".
+ For more information on the Toaster configuration
+ file, see the
+ "<link linkend='configuring-toaster'>Configuring Toaster</link>"
+ section.</para>
+
+ <para>This line also runs the <filename>checksettings</filename>
+ command, which configures the location of the Toaster
+ <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>.
+ The Toaster root directory <filename>TOASTER_DIR</filename>
+ determines where the Toaster build directory
+ is created on the file system.
+ In the example above,
+ <filename>TOASTER_DIR</filename> is set as follows:
+ <literallayout class="monospaced">
/var/www/toaster/poky
- </literallayout>
- This setting causes the Toaster build directory to be:
- <literallayout class="monospaced">
+ </literallayout>
+ This setting causes the Toaster build directory to be:
+ <literallayout class="monospaced">
/var/www/toaster/poky/build
- </literallayout>
- </para>
-
- <para>
- Finally, the <filename>collectstatic</filename> command
- is a Django framework command that collects all the
- statically served files into a designated directory to
- be served up by the Apache web server as defined by
- <filename>STATIC_ROOT</filename>.
+ </literallayout></para>
+
+ <para>Finally, the <filename>collectstatic</filename> command
+ is a Django framework command that collects all the
+ statically served files into a designated directory to
+ be served up by the Apache web server as defined by
+ <filename>STATIC_ROOT</filename>.
+ </para></listitem>
+ <listitem><para>
+ Test and/or use the Mysql integration with Toaster’s
+ Django web server.
+ At this point, you can start up the normal Toaster
+ Django web server with the Toaster database in Mysql.
+ You can use this web server to confirm that the database
+ migration and data population from the Layer Index is
+ complete.</para>
+
+ <para>To start the default Toaster Django web server with
+ the Toaster database now in Mysql, use the standard
+ start commands:
+ <literallayout class='monospaced'>
+ $ source oe-init-build-env
+ $ source toaster start
+ </literallayout>
+ Additionally, if Django is sufficient for your requirements,
+ you can use it for your release system and migrate later
+ to Apache as your requirements change.
</para></listitem>
<listitem><para>
Add an Apache configuration file for Toaster to your Apache web
@@ -535,7 +610,7 @@
<itemizedlist>
<listitem><para>
Browse published layers in the
- <ulink url='http://layers.openembedded.org'>OpenEmbedded Metadata Index</ulink>
+ <ulink url='http://layers.openembedded.org'>OpenEmbedded Layer Index</ulink>
that are available for your selected version of the build
system.
</para></listitem>
diff --git a/documentation/toaster-manual/toaster-manual-start.xml b/documentation/toaster-manual/toaster-manual-start.xml
index 65e057a83e8..fc187ecd5e8 100644
--- a/documentation/toaster-manual/toaster-manual-start.xml
+++ b/documentation/toaster-manual/toaster-manual-start.xml
@@ -18,10 +18,9 @@
Before you can use Toaster, you need to first set up your
build system to run the Yocto Project.
To do this, follow the instructions in the
- "<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Build Host Packages</ulink>"
- and
- "<ulink url='&YOCTO_DOCS_QS_URL;#releases'>Yocto Project Release</ulink>"
- sections in the Yocto Project Quick Start.
+ "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-preparing-the-build-host'>Preparing the Build Host</ulink>"
+ section of the Yocto Project Development Tasks
+ Manual.
For Ubuntu/Debian, you might also need to do an additional install
of pip3.
<literallayout class='monospaced'>
diff --git a/documentation/toaster-manual/toaster-manual.xml b/documentation/toaster-manual/toaster-manual.xml
index 21fadfca578..80ac579bbb8 100644
--- a/documentation/toaster-manual/toaster-manual.xml
+++ b/documentation/toaster-manual/toaster-manual.xml
@@ -63,9 +63,14 @@
</revision>
<revision>
<revnumber>2.5</revnumber>
- <date>April 2018</date>
+ <date>May 2018</date>
<revremark>Released with the Yocto Project 2.5 Release.</revremark>
</revision>
+ <revision>
+ <revnumber>2.6</revnumber>
+ <date>&REL_MONTH_YEAR;</date>
+ <revremark>Released with the Yocto Project 2.6 Release.</revremark>
+ </revision>
</revhistory>
<copyright>
@@ -86,24 +91,36 @@
is for the &YOCTO_DOC_VERSION; release of the
Yocto Project.
To be sure you have the latest version of the manual
- for this release, use the manual from the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>.
+ for this release, go to the
+ <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
+ and select the manual from that site.
+ Manuals from the site are more up-to-date than manuals
+ derived from the Yocto Project released TAR files.
</para></listitem>
<listitem><para>
- For manuals associated with other releases of the Yocto
- Project, go to the
+ If you located this manual through a web search, the
+ version of the manual might not be the one you want
+ (e.g. the search might have returned a manual much
+ older than the Yocto Project version with which you
+ are working).
+ You can see all Yocto Project major releases by
+ visiting the
+ <ulink url='&YOCTO_WIKI_URL;/wiki/Releases'>Releases</ulink>
+ page.
+ If you need a version of this manual for a different
+ Yocto Project release, visit the
<ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
- and use the drop-down "Active Releases" button
- and choose the manual associated with the desired
- Yocto Project.
+ and select the manual set by using the
+ "ACTIVE RELEASES DOCUMENTATION" or "DOCUMENTS ARCHIVE"
+ pull-down menus.
</para></listitem>
<listitem><para>
- To report any inaccuracies or problems with this
- manual, send an email to the Yocto Project
- discussion group at
- <filename>yocto@yoctoproject.com</filename> or log into
- the freenode <filename>#yocto</filename> channel.
- </para></listitem>
+ To report any inaccuracies or problems with this
+ manual, send an email to the Yocto Project
+ discussion group at
+ <filename>yocto@yoctoproject.com</filename> or log into
+ the freenode <filename>#yocto</filename> channel.
+ </para></listitem>
</itemizedlist>
</note>
diff --git a/documentation/tools/eclipse-help.sed b/documentation/tools/eclipse-help.sed
index 38690bc9386..ab5c9affd47 100644
--- a/documentation/tools/eclipse-help.sed
+++ b/documentation/tools/eclipse-help.sed
@@ -1,18 +1,18 @@
-# Processes poky-ref-manual and yocto-project-qs manual (<word>-<word>-<word> style)
+# Process poky-ref-manual and yocto-project-qs manual (<word>-<word>-<word> style)
# For example:
# "ulink" href="http://www.yoctoproject.org/docs/1.3/poky-ref-manual/poky-ref-manual.html#faq"
# -> "link" href="../poky-ref-manual/faq.html"
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/[^\/]*\/\([a-z]*-[a-z]*-[a-z]*\)\/[a-z]*-[a-z]*-[a-z]*.html#\([^\"]*\)\"/\"link\" href=\"\.\.\/\1\/\2.html\"/g
+s@"ulink" href="http://www.yoctoproject.org/docs/[^/]*/([a-z]*-[a-z]*-[a-z]*)/[a-z]*-[a-z]*-[a-z]*.html#([^"]*)"/@"link" href="../1/2.html"@g
# Processes all other manuals (<word>-<word> style)
# For example:
# "ulink" href="http://www.yoctoproject.org/docs/1.3/kernel-manual/kernel-manual.html#faq"
# -> "link" href="../kernel-manual/faq.html"
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/[^\/]*\/\([a-z]*-[a-z]*\)\/[a-z]*-[a-z]*.html#\([^\"]*\)\"/\"link\" href=\"\.\.\/\1\/\2.html\"/g
+s@"ulink" href="http://www.yoctoproject.org/docs/[^/]*/([a-z]*-[a-z]*)/[a-z]*-[a-z]*.html#([^"]*)"@"link" href="../1/2.html"@g
# Process cases where just an external manual is referenced without an id anchor
# For example:
# "ulink" href="http://www.yoctoproject.org/docs/1.3/kernel-manual/kernel-manual.html
# -> "link" href="../kernel-manual/index.html"
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/[^\/]*\/\([a-z]*-[a-z]*-[a-z]*\)\/[a-z]*-[a-z]*-[a-z]*.html\"/\"link\" href=\"\.\.\/\1\/index.html\"/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/[^\/]*\/\([a-z]*-[a-z]*\)\/[a-z]*-[a-z]*.html\"/\"link\" href=\"\.\.\/\1\/index.html\"/g
+s@"ulink" href="http://www.yoctoproject.org/docs/[^/]*/([a-z]*-[a-z]*-[a-z]*)/[a-z]*-[a-z]*-[a-z]*.html"@"link" href="../1/index.html"@g
+s@"ulink" href="http://www.yoctoproject.org/docs/[^/]*/([a-z]*-[a-z]*)/[a-z]*-[a-z]*.html"@"link" href="../1/index.html"@g
diff --git a/documentation/tools/mega-manual.sed b/documentation/tools/mega-manual.sed
index 3a5a53e0a78..83f05e27e53 100644
--- a/documentation/tools/mega-manual.sed
+++ b/documentation/tools/mega-manual.sed
@@ -2,35 +2,39 @@
# This style is for manual folders like "yocto-project-qs" and "poky-ref-manual".
# This is the old way that did it. Can't do that now that we have "bitbake-user-manual" strings
# in the mega-manual.
-# s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/[a-z]*-[a-z]*-[a-z]*\/[a-z]*-[a-z]*-[a-z]*.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/yocto-project-qs\/yocto-project-qs.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/poky-ref-manual\/poky-ref-manual.html#/\"link\" href=\"#/g
+# s@"ulink" href="http://www.yoctoproject.org/docs/2.6/[a-z]*-[a-z]*-[a-z]*/[a-z]*-[a-z]*-[a-z]*.html#@"link" href="#@g
+s@"ulink" href="http://www.yoctoproject.org/docs/2.6/yocto-project-qs/yocto-project-qs.html#@"link" href="#@g
+s@"ulink" href="http://www.yoctoproject.org/docs/2.6/poky-ref-manual/poky-ref-manual.html#@"link" href="#@g
# Processes all other manuals (<word>-<word> style) except for the BitBake User Manual because
# it is not included in the mega-manual.
# This style is for manual folders that use two word, which is the standard now (e.g. "ref-manual").
# This was the one-liner that worked before we introduced the BitBake User Manual, which is
# not in the mega-manual.
-# s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/[a-z]*-[a-z]*\/[a-z]*-[a-z]*.html#/\"link\" href=\"#/g
+# s@"ulink" href="http://www.yoctoproject.org/docs/2.6/[a-z]*-[a-z]*/[a-z]*-[a-z]*.html#@"link" href="#@g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/sdk-manual\/sdk-manual.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/bsp-guide\/bsp-guide.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/dev-manual\/dev-manual.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/getting-started\/getting-started.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/concepts-manual\/concepts-manual.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/kernel-dev\/kernel-dev.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/profile-manual\/profile-manual.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/ref-manual\/ref-manual.html#/\"link\" href=\"#/g
-s/\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/toaster-manual\/toaster-manual.html#/\"link\" href=\"#/g
+s@"ulink" href="http://www.yoctoproject.org/docs/2.6/sdk-manual/sdk-manual.html#@"link" href="#@g
+s@"ulink" href="http://www.yoctoproject.org/docs/2.6/bsp-guide/bsp-guide.html#@"link" href="#@g
+s@"ulink" href="http://www.yoctoproject.org/docs/2.6/dev-manual/dev-manual.html#@"link" href="#@g
+s@"ulink" href="http://www.yoctoproject.org/docs/2.6/overview-manual/overview-manual.html#@"link" href="#@g
+s@"ulink" href="http://www.yoctoproject.org/docs/2.6/brief-yoctoprojectqs/brief-yoctoprojectqs.html#@"link" href="#@g
+s@"ulink" href="http://www.yoctoproject.org/docs/2.6/kernel-dev/kernel-dev.html#@"link" href="#@g
+s@"ulink" href="http://www.yoctoproject.org/docs/2.6/profile-manual/profile-manual.html#@"link" href="#@g
+s@"ulink" href="http://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html#@"link" href="#@g
+s@"ulink" href="http://www.yoctoproject.org/docs/2.6/toaster-manual/toaster-manual.html#@"link" href="#@g
# Process cases where just an external manual is referenced without an id anchor
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/yocto-project-qs\/yocto-project-qs.html\" target=\"_top\">Yocto Project Quick Start<\/a>/Yocto Project Quick Start/g
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/dev-manual\/dev-manual.html\" target=\"_top\">Yocto Project Development Tasks Manual<\/a>/Yocto Project Development Tasks Manual/g
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/getting-started\/getting-started.html\" target=\"_top\">Getting Started With Yocto Project Manual<\/a>/Getting Started With Yocto Project Manual/g
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/concepts-manual\/concepts-manual.html\" target=\"_top\">Yocto Project Concepts Manual<\/a>/Yocto Project Concepts Manual/g
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/sdk-manual\/sdk-manual.html\" target=\"_top\">Yocto Project Application Development and the Extensible Software Development Kit (eSDK)<\/a>/Yocto Project Application Development and the Extensible Software Development Kit (eSDK)/g
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/bsp-guide\/bsp-guide.html\" target=\"_top\">Yocto Project Board Support Package (BSP) Developer's Guide<\/a>/Yocto Project Board Support Package (BSP) Developer's Guide/g
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/profile-manual\/profile-manual.html\" target=\"_top\">Yocto Project Profiling and Tracing Manual<\/a>/Yocto Project Profiling and Tracing Manual/g
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/kernel-dev\/kernel-dev.html\" target=\"_top\">Yocto Project Linux Kernel Development Manual<\/a>/Yocto Project Linux Kernel Development Manual/g
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/ref-manual\/ref-manual.html\" target=\"_top\">Yocto Project Reference Manual<\/a>/Yocto Project Reference Manual/g
-s/<a class=\"ulink\" href=\"http:\/\/www.yoctoproject.org\/docs\/2.5\/toaster-manual\/toaster-manual.html\" target=\"_top\">Toaster User Manual<\/a>/Toaster User Manual/g
+s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/brief-yoctoprojectqs/brief-yoctoprojectqs.html" target="_top">Yocto Project Quick Build</a>@Yocto Project Quick Build@g
+s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/yocto-project-qs/yocto-project-qs.html" target="_top">Yocto Project Quick Start</a>@Yocto Project Quick Start@g
+s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/dev-manual/dev-manual.html" target="_top">Yocto Project Development Tasks Manual</a>@Yocto Project Development Tasks Manual@g
+s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/overview-manual/overview-manual.html" target="_top">Yocto Project Overview and Concepts Manual</a>@Yocto project Overview and Concepts Manual@g
+s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/sdk-manual/sdk-manual.html" target="_top">Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</a>@Yocto Project Application Development and the Extensible Software Development Kit (eSDK)@g
+s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/bsp-guide/bsp-guide.html" target="_top">Yocto Project Board Support Package (BSP) Developer's Guide</a>@Yocto Project Board Support Package (BSP) Developer's Guide@g
+s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/profile-manual/profile-manual.html" target="_top">Yocto Project Profiling and Tracing Manual</a>@Yocto Project Profiling and Tracing Manual@g
+s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/kernel-dev/kernel-dev.html" target="_top">Yocto Project Linux Kernel Development Manual</a>@Yocto Project Linux Kernel Development Manual@g
+s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/ref-manual/ref-manual.html" target="_top">Yocto Project Reference Manual</a>@Yocto Project Reference Manual@g
+s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/toaster-manual/toaster-manual.html" target="_top">Toaster User Manual</a>@Toaster User Manual@g
+
+# Process a single, rouge occurrence of a linked reference to the Mega-Manual.
+s@<a class="ulink" href="http://www.yoctoproject.org/docs/2.6/mega-manual/mega-manual.html" target="_top">Yocto Project Mega-Manual</a>@Yocto Project Mega-Manual@g
+
diff --git a/documentation/yocto-project-qs/figures/yocto-project-transp.png b/documentation/yocto-project-qs/figures/yocto-project-transp.png
deleted file mode 100755
index 31d2b147fdb..00000000000
--- a/documentation/yocto-project-qs/figures/yocto-project-transp.png
+++ /dev/null
Binary files differ
diff --git a/documentation/yocto-project-qs/figures/ypqs-title.png b/documentation/yocto-project-qs/figures/ypqs-title.png
deleted file mode 100644
index 25c7a42b99c..00000000000
--- a/documentation/yocto-project-qs/figures/ypqs-title.png
+++ /dev/null
Binary files differ
diff --git a/documentation/yocto-project-qs/qs-style.css b/documentation/yocto-project-qs/qs-style.css
deleted file mode 100644
index 5085b9d0bec..00000000000
--- a/documentation/yocto-project-qs/qs-style.css
+++ /dev/null
@@ -1,989 +0,0 @@
-/*
- Generic XHTML / DocBook XHTML CSS Stylesheet.
-
- Browser wrangling and typographic design by
- Oyvind Kolas / pippin@gimp.org
-
- Customised for Poky by
- Matthew Allum / mallum@o-hand.com
-
- Thanks to:
- Liam R. E. Quin
- William Skaggs
- Jakub Steiner
-
- Structure
- ---------
-
- The stylesheet is divided into the following sections:
-
- Positioning
- Margins, paddings, width, font-size, clearing.
- Decorations
- Borders, style
- Colors
- Colors
- Graphics
- Graphical backgrounds
- Nasty IE tweaks
- Workarounds needed to make it work in internet explorer,
- currently makes the stylesheet non validating, but up until
- this point it is validating.
- Mozilla extensions
- Transparency for footer
- Rounded corners on boxes
-
-*/
-
-
- /*************** /
- / Positioning /
-/ ***************/
-
-body {
- font-family: Verdana, Sans, sans-serif;
-
- min-width: 640px;
- width: 80%;
- margin: 0em auto;
- padding: 2em 5em 5em 5em;
- color: #333;
-}
-
-h1,h2,h3,h4,h5,h6,h7 {
- font-family: Arial, Sans;
- color: #00557D;
- clear: both;
-}
-
-h1 {
- font-size: 2em;
- text-align: left;
- padding: 0em 0em 0em 0em;
- margin: 2em 0em 0em 0em;
-}
-
-h2.subtitle {
- margin: 0.10em 0em 3.0em 0em;
- padding: 0em 0em 0em 0em;
- font-size: 1.8em;
- padding-left: 20%;
- font-weight: normal;
- font-style: italic;
-}
-
-h2 {
- margin: 2em 0em 0.66em 0em;
- padding: 0.5em 0em 0em 0em;
- font-size: 1.5em;
- font-weight: bold;
-}
-
-h3.subtitle {
- margin: 0em 0em 1em 0em;
- padding: 0em 0em 0em 0em;
- font-size: 142.14%;
- text-align: right;
-}
-
-h3 {
- margin: 1em 0em 0.5em 0em;
- padding: 1em 0em 0em 0em;
- font-size: 140%;
- font-weight: bold;
-}
-
-h4 {
- margin: 1em 0em 0.5em 0em;
- padding: 1em 0em 0em 0em;
- font-size: 120%;
- font-weight: bold;
-}
-
-h5 {
- margin: 1em 0em 0.5em 0em;
- padding: 1em 0em 0em 0em;
- font-size: 110%;
- font-weight: bold;
-}
-
-h6 {
- margin: 1em 0em 0em 0em;
- padding: 1em 0em 0em 0em;
- font-size: 110%;
- font-weight: bold;
-}
-
-.authorgroup {
- background-color: transparent;
- background-repeat: no-repeat;
- padding-top: 256px;
- background-image: url("figures/ypqs-title.png");
- background-position: left top;
- margin-top: -256px;
- padding-right: 50px;
- margin-left: 0px;
- text-align: right;
- width: 740px;
-}
-
-h3.author {
- margin: 0em 0me 0em 0em;
- padding: 0em 0em 0em 0em;
- font-weight: normal;
- font-size: 100%;
- color: #333;
- clear: both;
-}
-
-.author tt.email {
- font-size: 66%;
-}
-
-.titlepage hr {
- width: 0em;
- clear: both;
-}
-
-.revhistory {
- padding-top: 2em;
- clear: both;
-}
-
-.toc,
-.list-of-tables,
-.list-of-examples,
-.list-of-figures {
- padding: 1.33em 0em 2.5em 0em;
- color: #00557D;
-}
-
-.toc p,
-.list-of-tables p,
-.list-of-figures p,
-.list-of-examples p {
- padding: 0em 0em 0em 0em;
- padding: 0em 0em 0.3em;
- margin: 1.5em 0em 0em 0em;
-}
-
-.toc p b,
-.list-of-tables p b,
-.list-of-figures p b,
-.list-of-examples p b{
- font-size: 100.0%;
- font-weight: bold;
-}
-
-.toc dl,
-.list-of-tables dl,
-.list-of-figures dl,
-.list-of-examples dl {
- margin: 0em 0em 0.5em 0em;
- padding: 0em 0em 0em 0em;
-}
-
-.toc dt {
- margin: 0em 0em 0em 0em;
- padding: 0em 0em 0em 0em;
-}
-
-.toc dd {
- margin: 0em 0em 0em 2.6em;
- padding: 0em 0em 0em 0em;
-}
-
-div.glossary dl,
-div.variablelist dl {
-}
-
-.glossary dl dt,
-.variablelist dl dt,
-.variablelist dl dt span.term {
- font-weight: normal;
- width: 20em;
- text-align: right;
-}
-
-.variablelist dl dt {
- margin-top: 0.5em;
-}
-
-.glossary dl dd,
-.variablelist dl dd {
- margin-top: -1em;
- margin-left: 25.5em;
-}
-
-.glossary dd p,
-.variablelist dd p {
- margin-top: 0em;
- margin-bottom: 1em;
-}
-
-
-div.calloutlist table td {
- padding: 0em 0em 0em 0em;
- margin: 0em 0em 0em 0em;
-}
-
-div.calloutlist table td p {
- margin-top: 0em;
- margin-bottom: 1em;
-}
-
-div p.copyright {
- text-align: left;
-}
-
-div.legalnotice p.legalnotice-title {
- margin-bottom: 0em;
-}
-
-p {
- line-height: 1.5em;
- margin-top: 0em;
-
-}
-
-dl {
- padding-top: 0em;
-}
-
-hr {
- border: solid 1px;
-}
-
-
-.mediaobject,
-.mediaobjectco {
- text-align: center;
-}
-
-img {
- border: none;
-}
-
-ul {
- padding: 0em 0em 0em 1.5em;
-}
-
-ul li {
- padding: 0em 0em 0em 0em;
-}
-
-ul li p {
- text-align: left;
-}
-
-table {
- width :100%;
-}
-
-th {
- padding: 0.25em;
- text-align: left;
- font-weight: normal;
- vertical-align: top;
-}
-
-td {
- padding: 0.25em;
- vertical-align: top;
-}
-
-p a[id] {
- margin: 0px;
- padding: 0px;
- display: inline;
- background-image: none;
-}
-
-a {
- text-decoration: underline;
- color: #444;
-}
-
-pre {
- overflow: auto;
-}
-
-a:hover {
- text-decoration: underline;
- /*font-weight: bold;*/
-}
-
-/* This style defines how the permalink character
- appears by itself and when hovered over with
- the mouse. */
-
-[alt='Permalink'] { color: #eee; }
-[alt='Permalink']:hover { color: black; }
-
-
-div.informalfigure,
-div.informalexample,
-div.informaltable,
-div.figure,
-div.table,
-div.example {
- margin: 1em 0em;
- padding: 1em;
- page-break-inside: avoid;
-}
-
-
-div.informalfigure p.title b,
-div.informalexample p.title b,
-div.informaltable p.title b,
-div.figure p.title b,
-div.example p.title b,
-div.table p.title b{
- padding-top: 0em;
- margin-top: 0em;
- font-size: 100%;
- font-weight: normal;
-}
-
-.mediaobject .caption,
-.mediaobject .caption p {
- text-align: center;
- font-size: 80%;
- padding-top: 0.5em;
- padding-bottom: 0.5em;
-}
-
-.epigraph {
- padding-left: 55%;
- margin-bottom: 1em;
-}
-
-.epigraph p {
- text-align: left;
-}
-
-.epigraph .quote {
- font-style: italic;
-}
-.epigraph .attribution {
- font-style: normal;
- text-align: right;
-}
-
-span.application {
- font-style: italic;
-}
-
-.programlisting {
- font-family: monospace;
- font-size: 80%;
- white-space: pre;
- margin: 1.33em 0em;
- padding: 1.33em;
-}
-
-.tip,
-.warning,
-.caution,
-.note {
- margin-top: 1em;
- margin-bottom: 1em;
-
-}
-
-/* force full width of table within div */
-.tip table,
-.warning table,
-.caution table,
-.note table {
- border: none;
- width: 100%;
-}
-
-
-.tip table th,
-.warning table th,
-.caution table th,
-.note table th {
- padding: 0.8em 0.0em 0.0em 0.0em;
- margin : 0em 0em 0em 0em;
-}
-
-.tip p,
-.warning p,
-.caution p,
-.note p {
- margin-top: 0.5em;
- margin-bottom: 0.5em;
- padding-right: 1em;
- text-align: left;
-}
-
-.acronym {
- text-transform: uppercase;
-}
-
-b.keycap,
-.keycap {
- padding: 0.09em 0.3em;
- margin: 0em;
-}
-
-.itemizedlist li {
- clear: none;
-}
-
-.filename {
- font-size: medium;
- font-family: Courier, monospace;
-}
-
-
-div.navheader, div.heading{
- position: absolute;
- left: 0em;
- top: 0em;
- width: 100%;
- background-color: #cdf;
- width: 100%;
-}
-
-div.navfooter, div.footing{
- position: fixed;
- left: 0em;
- bottom: 0em;
- background-color: #eee;
- width: 100%;
-}
-
-
-div.navheader td,
-div.navfooter td {
- font-size: 66%;
-}
-
-div.navheader table th {
- /*font-family: Georgia, Times, serif;*/
- /*font-size: x-large;*/
- font-size: 80%;
-}
-
-div.navheader table {
- border-left: 0em;
- border-right: 0em;
- border-top: 0em;
- width: 100%;
-}
-
-div.navfooter table {
- border-left: 0em;
- border-right: 0em;
- border-bottom: 0em;
- width: 100%;
-}
-
-div.navheader table td a,
-div.navfooter table td a {
- color: #777;
- text-decoration: none;
-}
-
-/* normal text in the footer */
-div.navfooter table td {
- color: black;
-}
-
-div.navheader table td a:visited,
-div.navfooter table td a:visited {
- color: #444;
-}
-
-
-/* links in header and footer */
-div.navheader table td a:hover,
-div.navfooter table td a:hover {
- text-decoration: underline;
- background-color: transparent;
- color: #33a;
-}
-
-div.navheader hr,
-div.navfooter hr {
- display: none;
-}
-
-
-.qandaset tr.question td p {
- margin: 0em 0em 1em 0em;
- padding: 0em 0em 0em 0em;
-}
-
-.qandaset tr.answer td p {
- margin: 0em 0em 1em 0em;
- padding: 0em 0em 0em 0em;
-}
-.answer td {
- padding-bottom: 1.5em;
-}
-
-.emphasis {
- font-weight: bold;
-}
-
-
- /************* /
- / decorations /
-/ *************/
-
-.titlepage {
-}
-
-.part .title {
-}
-
-.subtitle {
- border: none;
-}
-
-/*
-h1 {
- border: none;
-}
-
-h2 {
- border-top: solid 0.2em;
- border-bottom: solid 0.06em;
-}
-
-h3 {
- border-top: 0em;
- border-bottom: solid 0.06em;
-}
-
-h4 {
- border: 0em;
- border-bottom: solid 0.06em;
-}
-
-h5 {
- border: 0em;
-}
-*/
-
-.programlisting {
- border: solid 1px;
-}
-
-div.figure,
-div.table,
-div.informalfigure,
-div.informaltable,
-div.informalexample,
-div.example {
- border: 1px solid;
-}
-
-
-
-.tip,
-.warning,
-.caution,
-.note {
- border: 1px solid;
-}
-
-.tip table th,
-.warning table th,
-.caution table th,
-.note table th {
- border-bottom: 1px solid;
-}
-
-.question td {
- border-top: 1px solid black;
-}
-
-.answer {
-}
-
-
-b.keycap,
-.keycap {
- border: 1px solid;
-}
-
-
-div.navheader, div.heading{
- border-bottom: 1px solid;
-}
-
-
-div.navfooter, div.footing{
- border-top: 1px solid;
-}
-
- /********* /
- / colors /
-/ *********/
-
-body {
- color: #333;
- background: white;
-}
-
-a {
- background: transparent;
-}
-
-a:hover {
- background-color: #dedede;
-}
-
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-h7,
-h8 {
- background-color: transparent;
-}
-
-hr {
- border-color: #aaa;
-}
-
-
-.tip, .warning, .caution, .note {
- border-color: #fff;
-}
-
-
-.tip table th,
-.warning table th,
-.caution table th,
-.note table th {
- border-bottom-color: #fff;
-}
-
-
-.warning {
- background-color: #f0f0f2;
-}
-
-.caution {
- background-color: #f0f0f2;
-}
-
-.tip {
- background-color: #f0f0f2;
-}
-
-.note {
- background-color: #f0f0f2;
-}
-
-.glossary dl dt,
-.variablelist dl dt,
-.variablelist dl dt span.term {
- color: #044;
-}
-
-div.figure,
-div.table,
-div.example,
-div.informalfigure,
-div.informaltable,
-div.informalexample {
- border-color: #aaa;
-}
-
-pre.programlisting {
- color: black;
- background-color: #fff;
- border-color: #aaa;
- border-width: 2px;
-}
-
-.guimenu,
-.guilabel,
-.guimenuitem {
- background-color: #eee;
-}
-
-
-b.keycap,
-.keycap {
- background-color: #eee;
- border-color: #999;
-}
-
-
-div.navheader {
- border-color: black;
-}
-
-
-div.navfooter {
- border-color: black;
-}
-
-
-.writernotes {
- color: red;
-}
-
-
- /*********** /
- / graphics /
-/ ***********/
-
-/*
-body {
- background-image: url("images/body_bg.jpg");
- background-attachment: fixed;
-}
-
-.navheader,
-.note,
-.tip {
- background-image: url("images/note_bg.jpg");
- background-attachment: fixed;
-}
-
-.warning,
-.caution {
- background-image: url("images/warning_bg.jpg");
- background-attachment: fixed;
-}
-
-.figure,
-.informalfigure,
-.example,
-.informalexample,
-.table,
-.informaltable {
- background-image: url("images/figure_bg.jpg");
- background-attachment: fixed;
-}
-
-*/
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-h7{
-}
-
-/*
-Example of how to stick an image as part of the title.
-
-div.article .titlepage .title
-{
- background-image: url("figures/white-on-black.png");
- background-position: center;
- background-repeat: repeat-x;
-}
-*/
-
-div.preface .titlepage .title,
-div.colophon .title,
-div.chapter .titlepage .title {
- background-position: bottom;
- background-repeat: repeat-x;
-}
-
-div.section div.section .titlepage .title,
-div.sect2 .titlepage .title {
- background: none;
-}
-
-
-h1.title {
- background-color: transparent;
- background-repeat: no-repeat;
- height: 256px;
- text-indent: -9000px;
- overflow:hidden;
-}
-
-h2.subtitle {
- background-color: transparent;
- text-indent: -9000px;
- overflow:hidden;
- width: 0px;
- display: none;
-}
-
- /*************************************** /
- / pippin.gimp.org specific alterations /
-/ ***************************************/
-
-/*
-div.heading, div.navheader {
- color: #777;
- font-size: 80%;
- padding: 0;
- margin: 0;
- text-align: left;
- position: absolute;
- top: 0px;
- left: 0px;
- width: 100%;
- height: 50px;
- background: url('/gfx/heading_bg.png') transparent;
- background-repeat: repeat-x;
- background-attachment: fixed;
- border: none;
-}
-
-div.heading a {
- color: #444;
-}
-
-div.footing, div.navfooter {
- border: none;
- color: #ddd;
- font-size: 80%;
- text-align:right;
-
- width: 100%;
- padding-top: 10px;
- position: absolute;
- bottom: 0px;
- left: 0px;
-
- background: url('/gfx/footing_bg.png') transparent;
-}
-*/
-
-
-
- /****************** /
- / nasty ie tweaks /
-/ ******************/
-
-/*
-div.heading, div.navheader {
- width:expression(document.body.clientWidth + "px");
-}
-
-div.footing, div.navfooter {
- width:expression(document.body.clientWidth + "px");
- margin-left:expression("-5em");
-}
-body {
- padding:expression("4em 5em 0em 5em");
-}
-*/
-
- /**************************************** /
- / mozilla vendor specific css extensions /
-/ ****************************************/
-/*
-div.navfooter, div.footing{
- -moz-opacity: 0.8em;
-}
-
-div.figure,
-div.table,
-div.informalfigure,
-div.informaltable,
-div.informalexample,
-div.example,
-.tip,
-.warning,
-.caution,
-.note {
- -moz-border-radius: 0.5em;
-}
-
-b.keycap,
-.keycap {
- -moz-border-radius: 0.3em;
-}
-*/
-
-table tr td table tr td {
- display: none;
-}
-
-
-hr {
- display: none;
-}
-
-table {
- border: 0em;
-}
-
- .photo {
- float: right;
- margin-left: 1.5em;
- margin-bottom: 1.5em;
- margin-top: 0em;
- max-width: 17em;
- border: 1px solid gray;
- padding: 3px;
- background: white;
-}
- .seperator {
- padding-top: 2em;
- clear: both;
- }
-
- #validators {
- margin-top: 5em;
- text-align: right;
- color: #777;
- }
- @media print {
- body {
- font-size: 8pt;
- }
- .noprint {
- display: none;
- }
- }
-
-
-.tip,
-.note {
- background: #f0f0f2;
- color: #333;
- padding: 20px;
- margin: 20px;
-}
-
-.tip h3,
-.note h3 {
- padding: 0em;
- margin: 0em;
- font-size: 2em;
- font-weight: bold;
- color: #333;
-}
-
-.tip a,
-.note a {
- color: #333;
- text-decoration: underline;
-}
-
-.footnote {
- font-size: small;
- color: #333;
-}
-
-/* Changes the announcement text */
-.tip h3,
-.warning h3,
-.caution h3,
-.note h3 {
- font-size:large;
- color: #00557D;
-}
diff --git a/documentation/yocto-project-qs/qs.xml b/documentation/yocto-project-qs/qs.xml
deleted file mode 100644
index 2e5defe6a00..00000000000
--- a/documentation/yocto-project-qs/qs.xml
+++ /dev/null
@@ -1,1113 +0,0 @@
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
-"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
-[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
-
-<chapter id='qs'>
-
- <section id='welcome'>
- <title>Welcome!</title>
-
- <para>
- Welcome to the Yocto Project!
- The Yocto Project is an open-source collaboration project whose
- focus is developers of embedded Linux systems.
- The Yocto Project provides a development
- environment that eases application, kernel image, and Linux image
- development for embedded hardware systems.
- You can think of the Yocto Project as an umbrella over-arching
- many components, which include a build system, a reference or
- test distribution, and various tools all designed to enhance
- your embedded Linux development experience.
- </para>
-
- <para>
- The Yocto Project uses a build host based on the OpenEmbedded
- (OE) project, which uses the
- <ulink url='&YOCTO_DOCS_REF_URL;#bitbake-term'>BitBake</ulink>
- tool, to construct complete images.
- The BitBake and OE components combine together to form
- a reference build host, historically known as
- <ulink url='&YOCTO_DOCS_REF_URL;#poky'>Poky</ulink>
- (<emphasis>Pock</emphasis>-ee).
- Tools exist that facilitate aspects of development such as
- layer creation to isolate your work, emulation for testing
- modules, modification of existing source code, integration of
- new or modified modules into existing images, and so forth.
- </para>
-
- <para>
- Rather than go into great detail about the Yocto Project and its
- many capabilities, this quick start provides high-level
- practical information that lets you try out the Yocto Project.
- The quick start is written to help introduce you to the Yocto
- Project, get a feel for how to use it to build a Linux image or
- two, and provide you with a "road map" to other areas of interest
- for the new user.
- <note><title>Tips</title>
- <itemizedlist>
- <listitem><para>
- For more introductory and conceptual information on the
- Yocto Project, see the
- <ulink url='&YOCTO_DOCS_GS_URL;'>Getting Started With Yocto Project Manual</ulink>.
- </para></listitem>
- <listitem><para>
- For guidance on where to look for information beyond
- this quick start, see the
- "<link linkend='where-to-go-next'>Where To Go Next</link>"
- section.
- </para></listitem>
- </itemizedlist>
- </note>
- </para>
- </section>
-
- <section id='reference-build'>
- <title>Reference Build</title>
-
- <para>
- This section of the quick start lets you work through setting up
- a build host and then shows you how to build two images: one for
- emulation and one for target hardware.
- The steps do not go into great detail but are rather focused on
- just letting you get set up and quickly experience the Yocto
- Project.
- </para>
-
- <section id='yp-resources'>
- <title>Setting Up to Use the Yocto Project</title>
-
- <para>
- Setting up to use the Yocto Project involves getting your build
- host ready.
- If you have a native Linux machine that runs a Yocto Project
- supported distribution as described by the
- "<ulink url='&YOCTO_DOCS_REF_URL;#detailed-supported-distros'>Supported Linux Distributions</ulink>"
- section in the Yocto Project Reference Manual, you can prepare
- that machine as your build host.
- See the
- "<link linkend='qs-native-linux-build-host'>Using a Native Linux Machine</link>"
- section for more information.
- </para>
-
- <para>
- If you do not want to use the Yocto Project on a native Linux
- machine, you can prepare your build host to use
- <ulink url='https://git.yoctoproject.org/cgit/cgit.cgi/crops/about/'>CROPS</ulink>,
- which leverages
- <ulink url='https://www.docker.com/'>Docker Containers</ulink>.
- You can set up a build host for Windows, Mac, and Linux
- machines.
- See the
- "<link linkend='qs-crops-build-host'>Using CROPS and Containers</link>"
- section for more information.
- </para>
-
- <section id='qs-crops-build-host'>
- <title>Using CROPS and Containers</title>
-
- <para>
- Follow these steps to get your build host set up with a
- Poky container that you can use to complete the build
- examples further down in the Quick Start:
- <orderedlist>
- <listitem><para>
- <emphasis>Set Up to use CROss PlatformS (CROPS):</emphasis>
- Work through the first six steps of the procedure
- in the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#setting-up-to-use-crops'>Setting Up to Use CROss PlatformS (CROPS)</ulink>"
- section of the Yocto Project Development Tasks Manual.
- </para></listitem>
- <listitem><para>
- <emphasis>Set Up the Poky Container to Use the Yocto Project:</emphasis>
- Go to
- <ulink url='https://github.com/crops/poky-container/blob/master/README.md'></ulink>
- and follow the directions to set up the Poky container
- on your build host.</para>
-
- <para>Once you complete the setup instructions for your
- machine, you need to get a copy of the
- <filename>poky</filename> repository on your build
- host.
- See the
- "<link linkend='releases'>Yocto Project Release</link>"
- section to continue.
- </para></listitem>
- </orderedlist>
- </para>
- </section>
-
- <section id='qs-native-linux-build-host'>
- <title>Using a Native Linux Machine</title>
-
- <para>
- The following list shows what you need in order to use a
- Linux-based build host to use the Yocto Project to build images:
- </para>
-
- <itemizedlist>
- <listitem><para><emphasis>Build Host</emphasis>
- A build host with a minimum of 50 Gbytes of free disk
- space that is running a supported Linux distribution (i.e.
- recent releases of Fedora, openSUSE, CentOS, Debian, or
- Ubuntu).
- </para></listitem>
- <listitem><para><emphasis>Build Host Packages</emphasis>
- Appropriate packages installed on the build host.
- </para></listitem>
- </itemizedlist>
-
- <section id='the-linux-distro'>
- <title>The Linux Distribution</title>
-
- <para>
- The Yocto Project team verifies each release against recent
- versions of the most popular Linux distributions that
- provide stable releases.
- In general, if you have the current release minus one of the
- following distributions, you should have no problems.
- <itemizedlist>
- <listitem><para>
- Ubuntu
- </para></listitem>
- <listitem><para>
- Fedora
- </para></listitem>
- <listitem><para>
- openSUSE
- </para></listitem>
- <listitem><para>
- CentOS
- </para></listitem>
- <listitem><para>
- Debian
- </para></listitem>
- </itemizedlist>
- For a more detailed list of distributions that support the
- Yocto Project, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#detailed-supported-distros'>Supported Linux Distributions</ulink>"
- section in the Yocto Project Reference Manual.
- </para>
-
- <para>
- The OpenEmbedded build system should be able to run on any
- modern distribution that has the following versions for
- Git, tar, and Python.
- <itemizedlist>
- <listitem><para>
- Git 1.8.3.1 or greater
- </para></listitem>
- <listitem><para>
- tar 1.27 or greater
- </para></listitem>
- <listitem><para>
- Python 3.4.0 or greater.
- </para></listitem>
- </itemizedlist>
- If your build host does not meet any of these three listed
- version requirements, you can take steps to prepare the
- system so that you can still use the Yocto Project.
- See the
- "<ulink url='&YOCTO_DOCS_REF_URL;#required-git-tar-and-python-versions'>Required Git, tar, and Python Versions</ulink>"
- section in the Yocto Project Reference Manual for information.
- </para>
- </section>
-
- <section id='packages'>
- <title>The Build Host Packages</title>
-
- <para>
- Required build host packages vary depending on your
- build machine and what you want to do with the Yocto Project.
- For example, if you want to build an image that can run
- on QEMU in graphical mode (a minimal, basic build
- requirement), then the build host package requirements
- are different than if you want to build an image on a headless
- system or build out the Yocto Project documentation set.
- </para>
-
- <para>
- Collectively, the number of required packages is large
- if you want to be able to cover all cases.
- <note>
- In general, you need to have root access and then install
- the required packages.
- Thus, the commands in the following section may or may
- not work depending on whether or not your Linux
- distribution has <filename>sudo</filename> installed.
- </note>
- </para>
-
- <para>
- The following list shows the required packages needed to build
- an image that runs on QEMU in graphical mode (e.g. essential
- plus graphics support).
- For lists of required packages for other scenarios, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#required-packages-for-the-host-development-system'>Required Packages for the Host Development System</ulink>"
- section in the Yocto Project Reference Manual.
- <itemizedlist>
- <listitem><para><emphasis>Ubuntu and Debian</emphasis>
- <literallayout class='monospaced'>
- $ sudo apt-get install &UBUNTU_HOST_PACKAGES_ESSENTIAL; libsdl1.2-dev xterm
- </literallayout>
- </para></listitem>
- <listitem><para><emphasis>Fedora</emphasis>
- <literallayout class='monospaced'>
- $ sudo dnf install &FEDORA_HOST_PACKAGES_ESSENTIAL; SDL-devel xterm
- </literallayout>
- </para></listitem>
- <listitem><para><emphasis>OpenSUSE</emphasis>
- <literallayout class='monospaced'>
- $ sudo zypper install &OPENSUSE_HOST_PACKAGES_ESSENTIAL; libSDL-devel xterm
- </literallayout>
- </para></listitem>
- <listitem><para><emphasis>CentOS</emphasis>
- <literallayout class='monospaced'>
- $ sudo yum install &CENTOS_HOST_PACKAGES_ESSENTIAL; SDL-devel xterm
- </literallayout>
- <note><title>Notes</title>
- <itemizedlist>
- <listitem><para>
- Extra Packages for Enterprise Linux
- (i.e. <filename>epel-release</filename>)
- is a collection of packages from Fedora
- built on RHEL/CentOS for easy installation
- of packages not included in enterprise
- Linux by default.
- You need to install these packages
- separately.
- </para></listitem>
- <listitem><para>
- The <filename>makecache</filename> command
- consumes additional Metadata from
- <filename>epel-release</filename>.
- </para></listitem>
- </itemizedlist>
- </note>
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
-
- <para>
- Once you complete the setup instructions for your
- machine, you need to get a copy of the
- <filename>poky</filename> repository on your build
- host.
- Continue with the
- "<link linkend='releases'>Yocto Project Release</link>"
- section.
- </para>
- </section>
-
- <section id='releases'>
- <title>Yocto Project Release</title>
-
- <para>
- Now that your build host has the right packages (native
- Linux machine) or you have the Poky container set up
- (CROPS), you need to get a copy of the Yocto Project.
- It is recommended that you get the latest Yocto Project release
- by setting up (cloning in
- <ulink url='&YOCTO_DOCS_GS_URL;#git'>Git</ulink>
- terms) a local copy of the <filename>poky</filename> Git
- repository on your build host and then checking out the
- latest release.
- Doing so allows you to easily update to newer Yocto Project
- releases as well as contribute back to the Yocto Project.
- </para>
-
- <para>
- Here is an example from a native Linux machine that is
- running Ubuntu.
- <note>
- If your build host is using a Poky container, you can
- use the same Git commands.
- </note>
- The following example clones the <filename>poky</filename>
- repository and then checks out the latest Yocto Project Release
- by tag (i.e. <filename>&DISTRO_REL_TAG;</filename>):
- <literallayout class='monospaced'>
- $ git clone git://git.yoctoproject.org/poky
- Cloning into 'poky'...
- remote: Counting objects: 361782, done.
- remote: Compressing objects: 100% (87100/87100), done.
- remote: Total 361782 (delta 268619), reused 361439 (delta 268277)
- Receiving objects: 100% (361782/361782), 131.94 MiB | 6.88 MiB/s, done.
- Resolving deltas: 100% (268619/268619), done.
- Checking connectivity... done.
- $ cd poky
- $ git checkout tags/&DISTRO_REL_TAG; -b poky_&DISTRO;
- </literallayout>
- </para>
-
- <para>
- The previous Git <filename>checkout</filename> command
- creates a local branch named
- <filename>poky_&DISTRO;</filename>.
- The files available to you in that branch exactly match the
- repository's files in the
- <filename>&DISTRO_NAME_NO_CAP;</filename>
- development branch at the time of the Yocto Project &DISTRO;
- release.
- <note>
- Rather than checking out the entire development branch
- of a release (i.e. the tip), which could be continuously
- changing while you are doing your development, you would
- check out a branch based on a release tag as shown in
- the previous example.
- Doing so provides you with an unchanging, stable set of
- files.
- </note>
- </para>
-
- <para>
- For more options and information about accessing Yocto
- Project related repositories, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#working-with-yocto-project-source-files'>Working With Yocto Project Source Files</ulink>"
- section in the Yocto Project Development Tasks Manual.
- </para>
- </section>
- </section>
-
- <section id='qs-building-images'>
- <title>Building Images</title>
-
- <para>
- You are now ready to give the Yocto Project a try.
- For this example, you will be using the command line to build
- your images.
- <note>
- A graphical user interface to the Yocto Project is available
- through
- <ulink url='&YOCTO_DOCS_REF_URL;#toaster-term'>Toaster</ulink>.
- See the
- <ulink url='&YOCTO_DOCS_TOAST_URL;'>Toaster User Manual</ulink>
- for more information.
- </note>
- </para>
-
- <para>
- The remainder of this quick start steps you through the
- following:
- <itemizedlist>
- <listitem><para>
- Build a <filename>qemux86</filename> reference image
- and run it in the QEMU emulator.
- </para></listitem>
- <listitem><para>
- Easily change configurations so that you can quickly
- create a second image that you can load onto bootable
- media and actually boot target hardware.
- This example uses the MinnowBoard
- Turbot-compatible boards.
- </para></listitem>
- </itemizedlist>
- <note>
- The steps in the following two sections do not provide detail,
- but rather provide minimal, working commands and examples
- designed to just get you started.
- For more details, see the appropriate manuals in the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project manual set</ulink>.
- </note>
- </para>
-
- <section id='building-an-image-for-emulation'>
- <title>Building an Image for Emulation</title>
-
- <para>
- Use the following commands to build your image.
- The OpenEmbedded build system creates an entire Linux
- distribution, including the toolchain, from source.
- <note><title>Notes about Network Proxies</title>
- <itemizedlist>
- <listitem><para>
- By default, the build process searches for source
- code using a pre-determined order through a set of
- locations.
- If you are working behind a firewall and your build
- host is not set up for proxies, you could encounter
- problems with the build process when fetching source
- code (e.g. fetcher failures or Git failures).
- </para></listitem>
- <listitem><para>
- If you do not know your proxy settings, consult your
- local network infrastructure resources and get that
- information.
- A good starting point could also be to check your
- web browser settings.
- Finally, you can find more information on using the
- Yocto Project behind a firewall in the Yocto Project
- Reference Manual
- <ulink url='&YOCTO_DOCS_REF_URL;#how-does-the-yocto-project-obtain-source-code-and-will-it-work-behind-my-firewall-or-proxy-server'>FAQ</ulink>
- and on the
- "<ulink url='https://wiki.yoctoproject.org/wiki/Working_Behind_a_Network_Proxy'>Working Behind a Network Proxy</ulink>"
- wiki page.
- </para></listitem>
- </itemizedlist>
- </note>
- </para>
-
- <para>
- <orderedlist>
- <listitem><para>
- <emphasis>Be Sure Your Build Host is Set Up:</emphasis>
- The steps to build an image in this section depend on
- your build host being properly set up.
- Be sure you have worked through the requirements
- described in the
- "<link linkend='yp-resources'>Setting Up to Use the Yocto Project</link>"
- section.
- </para></listitem>
- <listitem><para>
- <emphasis>Check Out Your Branch:</emphasis>
- Be sure you are in the
- <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
- (e.g. <filename>poky</filename>) and then check out
- the branch associated with the latest Yocto Project
- Release:
- <literallayout class='monospaced'>
- $ cd ~/poky
- $ git checkout -b &DISTRO_NAME_NO_CAP; origin/&DISTRO_NAME_NO_CAP;
- </literallayout>
- Git's <filename>checkout</filename> command checks out
- the current Yocto Project release into a local branch
- whose name matches the release (i.e.
- <filename>&DISTRO_NAME_NO_CAP;</filename>).
- The local branch tracks the upstream branch of the
- same name.
- Creating your own branch based on the released
- branch ensures you are using the latest files for
- that release.
- </para></listitem>
- <listitem><para>
- <emphasis>Initialize the Build Environment:</emphasis>
- Run the
- <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>
- environment setup script to define the OpenEmbedded
- build environment on your build host.
- <literallayout class='monospaced'>
- $ source &OE_INIT_FILE;
- </literallayout>
- Among other things, the script creates the
- <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>,
- which is <filename>build</filename> in this case
- and is located in the
- <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>.
- After the script runs, your current working directory
- is set to the Build Directory.
- Later, when the build completes, the Build Directory
- contains all the files created during the build.
- </para></listitem>
- <listitem><para>
- <emphasis>Examine Your Local Configuration File:</emphasis>
- When you set up the build environment, a local
- configuration file named
- <filename>local.conf</filename> becomes available in
- a <filename>conf</filename> subdirectory of the
- Build Directory.
- Before using BitBake to start the build, you can
- look at this file and be sure your general
- configurations are how you want them:
- <itemizedlist>
- <listitem><para>
- To help conserve disk space during builds,
- you can add the following statement to your
- project's configuration file, which for this
- example is
- <filename>poky/build/conf/local.conf</filename>.
- Adding this statement deletes the work
- directory used for building a recipe once the
- recipe is built.
- <literallayout class='monospaced'>
- INHERIT += "rm_work"
- </literallayout>
- </para></listitem>
- <listitem><para>
- By default, the target machine for the build is
- <filename>qemux86</filename>,
- which produces an image that can be used in
- the QEMU emulator and is targeted at an
- <trademark class='registered'>Intel</trademark>
- 32-bit based architecture.
- Further on in this example, this default is
- easily changed through the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
- variable so that you can quickly
- build an image for a different machine.
- </para></listitem>
- <listitem><para>
- Another consideration before you build is the
- package manager used when creating the image.
- The default <filename>local.conf</filename>
- file selects the RPM package manager.
- You can control this configuration by using the
- <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></ulink></filename>
- variable.</para>
- <para>Selection of the package manager is separate
- from whether package management is used at runtime
- in the target image.</para>
- <para>For additional package manager selection
- information, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-package'><filename>package.bbclass</filename></ulink>"
- section in the Yocto Project Reference Manual.
- </para></listitem>
- </itemizedlist>
- </para></listitem>
- <listitem><para>
- <emphasis>Start the Build:</emphasis>
- Continue with the following command to build an OS image
- for the target, which is
- <filename>core-image-sato</filename> in this example:
- <note>
- Depending on the number of processors and cores, the
- amount of RAM, the speed of your Internet connection
- and other factors, the build process could take
- several hours the first time you run it.
- Subsequent builds run much faster since parts of the
- build are cached.
- </note>
- <literallayout class='monospaced'>
- $ bitbake core-image-sato
- </literallayout>
- <note>
- <para>
- If you experience a build error due to resources
- temporarily being unavailable and it appears you
- should not be having this issue, it might be due
- to the combination of a 4.3+ Linux kernel and
- <filename>systemd</filename> version 228+
- (i.e. see this
- <ulink url='http://unix.stackexchange.com/questions/253903/creating-threads-fails-with-resource-temporarily-unavailable-with-4-3-kernel'>link</ulink>
- for information).
- </para>
-
- <para>
- To work around this issue, you can try either
- of the following:
- <itemizedlist>
- <listitem><para>
- Try the build again.
- </para></listitem>
- <listitem><para>
- Modify the "DefaultTasksMax"
- <filename>systemd</filename> parameter
- by uncommenting it and setting it to
- "infinity".
- You can find this parameter in the
- <filename>system.conf</filename> file
- located in
- <filename>/etc/systemd</filename>
- on most systems.
- </para></listitem>
- </itemizedlist>
- </para>
- </note>
- For information on using the
- <filename>bitbake</filename> command, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#usingpoky-components-bitbake'>BitBake</ulink>"
- section in the Yocto Project Concepts Manual, or
- see the
- "<ulink url='&YOCTO_DOCS_BB_URL;#bitbake-user-manual-command'>BitBake Command</ulink>"
- section in the BitBake User Manual.
- For information on other targets, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>"
- chapter in the Yocto Project Reference Manual.
- </para></listitem>
- <listitem><para>
- <emphasis>Simulate Your Image Using QEMU:</emphasis>
- Once this particular image is built, you can start QEMU
- and run the image:
- <literallayout class='monospaced'>
- $ runqemu qemux86
- </literallayout>
- If you want to learn more about running QEMU, see the
- "<ulink url="&YOCTO_DOCS_DEV_URL;#dev-manual-qemu">Using the Quick EMUlator (QEMU)</ulink>"
- chapter in the Yocto Project Development Tasks Manual.
- </para></listitem>
- <listitem><para>
- <emphasis>Exit QEMU:</emphasis>
- Exit QEMU by either clicking on the shutdown icon or by
- typing <filename>Ctrl-C</filename> in the QEMU
- transcript window from which you evoked QEMU.
- </para></listitem>
- </orderedlist>
- </para>
- </section>
-
- <section id='building-an-image-for-hardware'>
- <title>Building an Image for Hardware</title>
-
- <para id='qs-minnowboard-example'>
- The following steps show how easy it is to set up to build an
- image for a new machine.
- These steps build an image for the MinnowBoard Turbot, which is
- supported by the Yocto Project and the
- <filename>meta-intel</filename> <filename>intel-corei7-64</filename>
- and <filename>intel-core2-32</filename> Board Support Packages
- (BSPs).
- <note>
- The MinnowBoard Turbot ships with 64-bit firmware.
- If you want to use the board in 32-bit mode, you must
- download the
- <ulink url='http://firmware.intel.com/projects/minnowboard-max'>32-bit firmware</ulink>.
- </note>
- </para>
-
- <para>
- <orderedlist>
- <listitem><para>
- <emphasis>Create a Local Copy of the
- <filename>meta-intel</filename> Repository:</emphasis>
- Building an image for the MinnowBoard Turbot requires
- the
- <filename>meta-intel</filename> layer.
- Use the <filename>git clone</filename> command to create
- a local copy of the repository inside your
- <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>,
- which is <filename>poky</filename> in this example:
- <literallayout class='monospaced'>
- $ cd $HOME/poky
- $ git clone git://git.yoctoproject.org/meta-intel
- Cloning into 'meta-intel'...
- remote: Counting objects: 14039, done.
- remote: Compressing objects: 100% (4471/4471), done.
- remote: Total 14039 (delta 8130), reused 13837 (delta 7947)
- Receiving objects: 100% (14039/14039), 4.27 MiB | 3.98 MiB/s, done.
- Resolving deltas: 100% (8130/8130), done.
- Checking connectivity... done.
- </literallayout>
- By default when you clone a Git repository, the
- "master" branch is checked out.
- Before you build your image that uses the
- <filename>meta-intel</filename> layer, you must be
- sure that both repositories
- (<filename>meta-intel</filename> and
- <filename>poky</filename>) are using the same releases.
- Because you used the <filename>&DISTRO_REL_TAG;</filename>
- tag when you checked out the <filename>poky</filename>
- repository by tag, you should use a
- <filename>meta-intel</filename>
- tag that corresponds with the release you used for
- <filename>poky</filename>.
- Consequently, you need to checkout out the
- "<filename>&METAINTELVERSION;-&DISTRO_NAME_NO_CAP;-&YOCTO_DOC_VERSION;</filename>"
- branch after cloning <filename>meta-intel</filename>:
- <literallayout class='monospaced'>
- $ cd $HOME/poky/meta-intel
- $ git checkout tags/&METAINTELVERSION;-&DISTRO_NAME_NO_CAP;-&YOCTO_DOC_VERSION; -b meta-intel-&DISTRO_NAME_NO_CAP;-&YOCTO_DOC_VERSION;
- Switched to a new branch 'meta-intel-&DISTRO_NAME_NO_CAP;-&YOCTO_DOC_VERSION;'
- </literallayout>
- The previous Git <filename>checkout</filename> command
- creates a local branch named
- <filename>meta-intel-&DISTRO_NAME_NO_CAP;-&YOCTO_DOC_VERSION;</filename>.
- You have the option to name your local branch whatever
- you want by providing any name you like for
- "meta-intel-&DISTRO_NAME_NO_CAP;-&YOCTO_DOC_VERSION;"
- in the above example.
- </para></listitem>
- <listitem><para>
- <emphasis>Configure the Build:</emphasis>
- To configure the build, you edit the
- <filename>bblayers.conf</filename> and
- <filename>local.conf</filename> files, both of which are
- located in the <filename>build/conf</filename> directory.
- </para>
-
- <para>Here is a quick way to make the edits.
- The first command uses the
- <filename>bitbake-layers add-layer</filename> command
- to add the <filename>meta-intel</filename>
- layer, which contains the <filename>intel-core*</filename>
- BSPs to the build.
- The second command selects the BSP by setting the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
- variable.
- <literallayout class='monospaced'>
- $ cd $HOME/poky/build
- $ bitbake-layers add-layer "$HOME/poky/meta-intel"
- $ echo 'MACHINE = "intel-corei7-64"' >> conf/local.conf
- </literallayout>
- <note><title>Notes</title>
- <para>
- If you want a 64-bit build, use the following:
- <literallayout class='monospaced'>
- $ echo 'MACHINE = "intel-corei7-64"' >> conf/local.conf
- </literallayout>
- </para>
-
- <para>
- If you want 32-bit images, use the following:
- <literallayout class='monospaced'>
- $ echo 'MACHINE = "intel-core2-32"' >> conf/local.conf
- </literallayout>
- </para>
- </note>
- </para></listitem>
- <listitem><para>
- <emphasis>Build an Image for MinnowBoard
- Turbot:</emphasis>
- The type of image you build depends on your goals.
- For example, the previous build created a
- <filename>core-image-sato</filename> image, which is an
- image with Sato support.
- It is possible to build many image types for the
- MinnowBoard Turbot.
- Some possibilities are <filename>core-image-base</filename>,
- which is a console-only image.
- Another choice could be a
- <filename>core-image-full-cmdline</filename>, which is
- another console-only image but has more full-features
- Linux system functionality installed.
- For types of images you can build using the Yocto
- Project, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>"
- chapter in the Yocto Project Reference Manual.</para>
- <para>Because configuration changes are minimal to set up
- for this second build, the OpenEmbedded build system can
- re-use files from previous builds as much as possible.
- Re-using files means this second build will be much faster
- than an initial build.
- For this example, the <filename>core-image-base</filename>
- image is built:
- <literallayout class='monospaced'>
- $ bitbake core-image-base
- </literallayout>
- <note>
- <para>
- If you experience a build error due to resources
- temporarily being unavailable and it appears you
- should not be having this issue, it might be due
- to the combination of a 4.3+ Linux kernel and
- <filename>systemd</filename> version 228+
- (i.e. see this
- <ulink url='http://unix.stackexchange.com/questions/253903/creating-threads-fails-with-resource-temporarily-unavailable-with-4-3-kernel'>link</ulink>
- for information).
- </para>
-
- <para>
- To work around this issue, you can try either
- of the following:
- <itemizedlist>
- <listitem><para>
- Try the build again.
- </para></listitem>
- <listitem><para>
- Modify the "DefaultTasksMax"
- <filename>systemd</filename> parameter
- by uncommenting it and setting it to
- "infinity".
- You can find this parameter in the
- <filename>system.conf</filename> file
- located in
- <filename>/etc/systemd</filename>
- on most systems.
- </para></listitem>
- </itemizedlist>
- </para>
- </note>
- Once the build completes, the resulting console-only image
- is located in the Build Directory here:
- <literallayout class='monospaced'>
- tmp/deploy/images/intel-corei7-64/core-image-base-intel-corei7-64.wic
- </literallayout>
- </para></listitem>
- <listitem><para>
- <emphasis>Write the Image:</emphasis>
- You can write the image just built to a bootable media
- (e.g. a USB key, SATA drive, SD card, etc.) using the
- <filename>dd</filename> utility:
- <literallayout class='monospaced'>
- $ sudo dd if=tmp/deploy/images/intel-corei7-64/core-image-base-intel-corei7-64.wic of=TARGET_DEVICE
- </literallayout>
- In the previous command, the
- <filename>TARGET_DEVICE</filename> is the device node in
- the host machine (e.g. <filename>/dev/sdc</filename>, which
- is most likely a USB stick, or
- <filename>/dev/mmcblk0</filename>, which is most likely an
- SD card).
- </para></listitem>
- <listitem><para>
- <emphasis>Boot the Hardware:</emphasis>
- With the boot device provisioned, you can insert the
- media into the MinnowBoard Turbot and boot the hardware.
- The board should automatically detect the media and boot to
- the bootloader and subsequently the operating system.
- </para>
-
- <para>If the board does not boot automatically, you can
- boot it manually from the EFI shell as follows:
- <literallayout class='monospaced'>
- Shell> connect -r
- Shell> map -r
- Shell> fs0:
- Shell> bootx64
- </literallayout>
- <note>
- For a 32-bit image use the following:
- <literallayout class='monospaced'>
- Shell> bootia32
- </literallayout>
- </note>
- </para></listitem>
- </orderedlist>
- </para>
- </section>
- </section>
- </section>
-
- <section id='where-to-go-next'>
- <title>Where To Go Next</title>
-
- <para>
- Now that you have experienced using the Yocto Project, you might
- be asking yourself "What now?"
- This next section of the Quick Start provides some "sign posts"
- that can help you find additional information depending on what
- you want to accomplish with the Yocto Project.
- The section provides a list of resources for more information,
- some links into sections that provide basic tasks, and some
- links into more specialized areas that go beyond building images.
- <note>
- You can also see the
- <ulink url='&YOCTO_HOME_URL;/documentation'></ulink> page for
- suggested sets of Yocto Project manuals designed for various
- levels of experience.
- </note>
- </para>
-
- <section id='additional-resources'>
- <title>Additional Resources</title>
-
- <para>
- The Yocto Project has many sources of information including
- the website, wiki pages, and user manuals.
- This section lists resources you might find helpful:
- <itemizedlist>
- <listitem><para>
- <emphasis>Website:</emphasis>
- The
- <ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink>
- provides background information, the latest builds,
- breaking news, full development documentation, and
- access to a rich Yocto Project Development Community
- into which you can tap.
- </para></listitem>
- <listitem><para>
- <emphasis>FAQs:</emphasis>
- Lists commonly asked Yocto Project questions and
- answers.
- You can find two FAQs:
- <ulink url='&YOCTO_WIKI_URL;/wiki/FAQ'>Yocto Project FAQ</ulink>
- on a wiki, and the
- "<ulink url='&YOCTO_DOCS_REF_URL;#faq'>FAQ</ulink>"
- chapter in the Yocto Project Reference Manual.
- </para></listitem>
- <listitem><para>
- <emphasis>Developer Screencast:</emphasis>
- The
- <ulink url='http://vimeo.com/36450321'>Getting Started with the Yocto Project - New Developer Screencast Tutorial</ulink>
- provides a 30-minute video created for users unfamiliar
- with the Yocto Project but familiar with Linux build
- hosts.
- While this screencast is somewhat dated, the
- introductory and fundamental concepts are useful for
- the beginner.
- </para></listitem>
- <listitem><para>
- <emphasis>Yocto Project Implementation of Bugzilla:</emphasis>
- The Yocto Project uses its own implementation of
- Bugzilla that you can find
- <ulink url='&YOCTO_BUGZILLA_URL;'>here</ulink>.
- Bugzilla allows you to report and track the progress
- of defects and improvements to the Yocto Project.
- </para></listitem>
- <listitem><para>
- <emphasis>Yocto Project Wiki:</emphasis>
- The
- <ulink url='&YOCTO_WIKI_URL;'>Yocto Project Wiki</ulink>
- provides additional information on where to go next
- when ramping up with the Yocto Project, release
- information, project planning, and QA information.
- </para></listitem>
- <listitem><para>
- <emphasis>Yocto Project Mailing Lists:</emphasis>
- Related mailing lists provide a forum for discussion,
- patch submission and announcements.
- Several mailing lists exist and are grouped according
- to areas of concern.
- See the
- "<ulink url='&YOCTO_DOCS_REF_URL;#resources-mailinglist'>Mailing lists</ulink>"
- section in the Yocto Project Reference Manual for a
- complete list of Yocto Project mailing lists.
- </para></listitem>
- <listitem><para>
- <emphasis>Comprehensive List of Links and Other Documentation:</emphasis>
- The
- "<ulink url='&YOCTO_DOCS_REF_URL;#resources-links-and-related-documentation'>Links and Related Documentation</ulink>"
- section in the Yocto Project Reference Manual provides a
- comprehensive list of all related links and other
- user documentation.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section id='qs-guided-examples'>
- <title>Guided Examples</title>
-
- <para>
- Depending on what you primary interests are with the Yocto
- Project, you could consider any of the following:
- <itemizedlist>
- <listitem><para>
- <emphasis>Add a Layer for Hardware Support:</emphasis>
- For steps on how to add a Board Support Package (BSP)
- layer that supports specific hardware, see the
- "<ulink url='&YOCTO_DOCS_BSP_URL;#creating-a-new-bsp-layer-using-the-bitbake-layers-script'>Creating a new BSP Layer Using the <filename>bitbake-layers</filename> Script</ulink>"
- section in the Yocto Project Board Support Package
- (BSP) Developer's Guide.
- For background information on BSP layers, see the
- "<ulink url='&YOCTO_DOCS_BSP_URL;#bsp-layers'>BSP Layers</ulink>"
- section in the same manual.
- </para></listitem>
- <listitem><para>
- <emphasis>Create a Layer for Software:</emphasis>
- For steps on how to create a general layer for software,
- see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-a-general-layer-using-the-bitbake-layers-script'>Creating a General Layer Using the <filename>bitbake-layers</filename> Script</ulink>"
- section in the Yocto Project Development Tasks Manual.
- For background information on layers in general, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>"
- section in the same manual.
- </para></listitem>
- <listitem><para>
- <emphasis>Write a New Recipe:</emphasis>
- For steps on how to write a new recipe,
- see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-writing-a-new-recipe'>Writing a New Recipe</ulink>"
- section in the Yocto Project Development Tasks Manual.
- </para></listitem>
- <listitem><para role='writernotes'>
- <emphasis>Create a Layer for Customizations:</emphasis>
- This is a step suggested by Richard.
- I don't know the distinction between creating a layer
- for customizations and creating a general layer as
- pointed out earlier for creating a general layer
- (i.e. a layer for software).
- I need some help on this bullet item.
- </para></listitem>
- <listitem><para>
- <emphasis>Add a Custom Kernel:</emphasis>
- For steps on how to modify and create your own custom
- kernel, see the
- "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#using-devtool-to-patch-the-kernel'>Using <filename>devtool</filename> to Patch the Kernel</ulink>"
- section in the Yocto Project Linux Kernel Development
- Manual.
- </para></listitem>
- <listitem><para>
- <emphasis>Change the Default Kernel Configuration:</emphasis>
- For steps on how to configure the kernel, see the
- "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#configuring-the-kernel'>Configuring the Kernel</ulink>"
- section in the Yocto Project Linux Kernel Development
- Manual.
- </para></listitem>
- <listitem><para>
- <emphasis>Submit a Change to the Yocto Project:</emphasis>
- For steps on how to submit a change or patch to the
- Yocto Project, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#how-to-submit-a-change'>Submitting a Change to the Yocto Project</ulink>"
- section in the Yocto Project Development Tasks Manual.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
-
- <section id='going-beyond-builds'>
- <title>Going Beyond Builds</title>
-
- <para>
- This section presents some pointers to topics that go beyond
- building images:
- <itemizedlist>
- <listitem><para>
- <emphasis>The OpenEmbedded Layer Index:</emphasis>
- This index shows layers that exist for use with the
- Yocto Project.
- More times than not, you can find layers for your own
- use or layers that are close to what you need and can
- be leveraged when creating your own layers.
- See
- <ulink url='http://layers.openembedded.org/layerindex/branch/master/layers/'>http://layers.openembedded.org/layerindex/branch/master/layers/</ulink>
- for the layer index.
- </para></listitem>
- <listitem><para>
- <emphasis>Yocto Project Autobuilder:</emphasis>
- Autobuilders provide automatic building in a
- development or production environment.
- For information on the autobuilders used by the Yocto
- Project, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#usingpoky-changes-collaborate'>Setting Up a Team Yocto Project Development Environment</ulink>"
- section of the Yocto Project Development Tasks Manual.
- You can also see the
- <ulink url='http://autobuilder.yoctoproject.org/'>http://autobuilder.yoctoproject.org/</ulink>
- link.
- </para></listitem>
- <listitem><para>
- <emphasis>Yocto Project Compatibility:</emphasis>
- When you create layers, you can take steps to make sure
- your layer is compatible with the Yocto Project.
- See the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#making-sure-your-layer-is-compatible-with-yocto-project'>Making Sure Your Layer is Compatible With Yocto Project</ulink>"
- section in the Yocto Project Development Tasks Manual
- for more information.
- </para></listitem>
- <listitem><para>
- <emphasis>Auto Upgrade Tools:</emphasis>
- Tools exits to help ease upgrading recipe versions.
- In particular, you can use the
- <ulink url='&YOCTO_DOCS_DEV_URL;#gs-using-the-auto-upgrade-helper'>Auto Upgrade Helper (AUH)</ulink>
- and
- <ulink url='&YOCTO_DOCS_DEV_URL;#gs-using-devtool-upgrade'><filename>devtool upgrade</filename></ulink>
- to upgrade recipes to newer versions.
- </para></listitem>
- <listitem><para role='writernotes'>
- <emphasis>Patches and Patchwork:</emphasis>
- This is a step suggested by Richard.
- I don't know what this is and need help with this
- bullet item.
- </para></listitem>
- <listitem><para>
- <emphasis>Pseudo:</emphasis>
- Pseudo gives the illusion of running under root and is
- used by the OpenEmbedded build system during the image
- generation process.
- For information on Fakeroot and Pseudo, see the
- "<ulink url='&YOCTO_DOCS_CM_URL;#fakeroot-and-pseudo'>Fakeroot and Pseudo</ulink>"
- section in the Yocto Project Concepts Manual.
- </para></listitem>
- <listitem><para role='writernotes'>
- <emphasis>OPKG:</emphasis>
- OPKG is a file management system.
- I am not sure what Richard had in mind for suggesting
- this "beyond builds" topic.
- I have one reference at
- "<ulink url='&YOCTO_DOCS_DEV_URL;#runtime-package-management-target-ipk'>Using IPK</ulink>"
- in the Yocto Project Development Tasks Manual that
- is the bulk of my known information.
- I need more help with this bullet item.
- </para></listitem>
- <listitem><para>
- <emphasis>Team Yocto Project Development Environments:</emphasis>
- For information on Yocto Project development team
- environments, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#usingpoky-changes-collaborate'>Setting Up a Team Yocto Project Development Environment</ulink>"
- section in the Yocto Project Development Tasks Manual.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- </section>
-</chapter>
-<!--
-vim: expandtab tw=80 ts=4
--->
diff --git a/documentation/yocto-project-qs/yocto-project-qs-customization.xsl b/documentation/yocto-project-qs/yocto-project-qs-customization.xsl
deleted file mode 100644
index 3372c7a7c3a..00000000000
--- a/documentation/yocto-project-qs/yocto-project-qs-customization.xsl
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version='1.0'?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
-
- <xsl:import href="http://downloads.yoctoproject.org/mirror/docbook-mirror/docbook-xsl-1.76.1/xhtml/docbook.xsl" />
-
-<!--
-
- <xsl:import href="../template/1.76.1/docbook-xsl-1.76.1/xhtml/docbook.xsl" />
-
- <xsl:import href="http://docbook.sourceforge.net/release/xsl/1.76.1/xhtml/docbook.xsl" />
-
--->
-
- <xsl:import href="yocto-project-qs-titlepage.xsl"/>
-
- <xsl:include href="../template/permalinks.xsl"/>
- <xsl:include href="../template/section.title.xsl"/>
- <xsl:include href="../template/component.title.xsl"/>
- <xsl:include href="../template/division.title.xsl"/>
- <xsl:include href="../template/formal.object.heading.xsl"/>
-
-<!--
-
- <xsl:param name="generate.toc" select="'article nop'"></xsl:param>
- <xsl:param name="html.stylesheet" select="'qs-style.css'" />
-
--->
-
- <xsl:param name="html.stylesheet" select="'qs-style.css'" />
- <xsl:param name="chapter.autolabel" select="1" />
- <xsl:param name="appendix.autolabel" select="A" />
- <xsl:param name="section.autolabel" select="1" />
- <xsl:param name="section.label.includes.component.label" select="1" />
- <xsl:param name="generate.id.attributes" select="1" />
- <xsl:param name="generate.toc" select="'article nop'"></xsl:param>
-
-</xsl:stylesheet>
diff --git a/documentation/yocto-project-qs/yocto-project-qs-titlepage.xsl b/documentation/yocto-project-qs/yocto-project-qs-titlepage.xsl
deleted file mode 100644
index a435ac77abc..00000000000
--- a/documentation/yocto-project-qs/yocto-project-qs-titlepage.xsl
+++ /dev/null
@@ -1,3820 +0,0 @@
-<?xml version="1.0"?>
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" version="1.0" exclude-result-prefixes="exsl">
-
-<!-- This stylesheet was created by template/titlepage.xsl-->
-
-<xsl:template name="article.titlepage.recto">
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/abstract"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/abstract"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/abstract"/>
- <xsl:choose>
- <xsl:when test="articleinfo/title">
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/title"/>
- </xsl:when>
- <xsl:when test="artheader/title">
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/title"/>
- </xsl:when>
- <xsl:when test="info/title">
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/title"/>
- </xsl:when>
- <xsl:when test="title">
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="title"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="articleinfo/subtitle">
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="artheader/subtitle">
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/corpauthor"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/corpauthor"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/corpauthor"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/authorgroup"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/authorgroup"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/authorgroup"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/author"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/author"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/author"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/othercredit"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/othercredit"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/othercredit"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/releaseinfo"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/releaseinfo"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/releaseinfo"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/copyright"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/copyright"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/copyright"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/legalnotice"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/legalnotice"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/legalnotice"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/pubdate"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/pubdate"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/pubdate"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revision"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revision"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revision"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revhistory"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revhistory"/>
- <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revhistory"/>
-</xsl:template>
-
-<xsl:template name="article.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="article.titlepage.separator"><hr/>
-</xsl:template>
-
-<xsl:template name="article.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="article.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="article.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="article.titlepage.before.recto"/>
- <xsl:call-template name="article.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="article.titlepage.before.verso"/>
- <xsl:call-template name="article.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="article.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="article.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="article.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="abstract" mode="article.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="article.titlepage.recto.style">
- <xsl:call-template name="anchor"/>
- <xsl:apply-templates/>
-<!-- orignally generated content -->
-<!-- <xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> -->
-</div>
-</xsl:template>
-
-<xsl:template match="title" mode="article.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="article.titlepage.recto.style">
-<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="article.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="article.titlepage.recto.style">
-<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="corpauthor" mode="article.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="article.titlepage.recto.style">
-<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="authorgroup" mode="article.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="article.titlepage.recto.style">
-<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="author" mode="article.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="article.titlepage.recto.style">
-<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="othercredit" mode="article.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="article.titlepage.recto.style">
-<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="releaseinfo" mode="article.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="article.titlepage.recto.style">
-<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="copyright" mode="article.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="article.titlepage.recto.style">
-<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="legalnotice" mode="article.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="article.titlepage.recto.style">
-<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="pubdate" mode="article.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="article.titlepage.recto.style">
-<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revision" mode="article.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="article.titlepage.recto.style">
-<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revhistory" mode="article.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="article.titlepage.recto.style">
-<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="set.titlepage.recto">
- <xsl:choose>
- <xsl:when test="setinfo/title">
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/title"/>
- </xsl:when>
- <xsl:when test="info/title">
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/title"/>
- </xsl:when>
- <xsl:when test="title">
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="title"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="setinfo/subtitle">
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/corpauthor"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/corpauthor"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/authorgroup"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/authorgroup"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/author"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/author"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/othercredit"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/othercredit"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/releaseinfo"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/releaseinfo"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/copyright"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/copyright"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/legalnotice"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/legalnotice"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/pubdate"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/pubdate"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revision"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revision"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revhistory"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revhistory"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/abstract"/>
- <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/abstract"/>
-</xsl:template>
-
-<xsl:template name="set.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="set.titlepage.separator"><hr/>
-</xsl:template>
-
-<xsl:template name="set.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="set.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="set.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="set.titlepage.before.recto"/>
- <xsl:call-template name="set.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="set.titlepage.before.verso"/>
- <xsl:call-template name="set.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="set.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="set.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="set.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="title" mode="set.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="set.titlepage.recto.style">
-<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="set.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="set.titlepage.recto.style">
-<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="corpauthor" mode="set.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="set.titlepage.recto.style">
-<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="authorgroup" mode="set.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="set.titlepage.recto.style">
-<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="author" mode="set.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="set.titlepage.recto.style">
-<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="othercredit" mode="set.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="set.titlepage.recto.style">
-<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="releaseinfo" mode="set.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="set.titlepage.recto.style">
-<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="copyright" mode="set.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="set.titlepage.recto.style">
-<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="legalnotice" mode="set.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="set.titlepage.recto.style">
-<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="pubdate" mode="set.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="set.titlepage.recto.style">
-<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revision" mode="set.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="set.titlepage.recto.style">
-<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revhistory" mode="set.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="set.titlepage.recto.style">
-<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="abstract" mode="set.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="set.titlepage.recto.style">
-<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="book.titlepage.recto">
- <xsl:choose>
- <xsl:when test="bookinfo/title">
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title"/>
- </xsl:when>
- <xsl:when test="info/title">
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/title"/>
- </xsl:when>
- <xsl:when test="title">
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="bookinfo/subtitle">
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/corpauthor"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/corpauthor"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/authorgroup"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/authorgroup"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/author"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/author"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/othercredit"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/othercredit"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/releaseinfo"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/releaseinfo"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/copyright"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/copyright"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/legalnotice"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/legalnotice"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/pubdate"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/pubdate"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/revision"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/revision"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/revhistory"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/revhistory"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/abstract"/>
- <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/abstract"/>
-</xsl:template>
-
-<xsl:template name="book.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="book.titlepage.separator"><hr/>
-</xsl:template>
-
-<xsl:template name="book.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="book.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="book.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="book.titlepage.before.recto"/>
- <xsl:call-template name="book.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="book.titlepage.before.verso"/>
- <xsl:call-template name="book.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="book.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="book.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="book.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="title" mode="book.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="book.titlepage.recto.style">
-<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="book.titlepage.recto.style">
-<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="corpauthor" mode="book.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="book.titlepage.recto.style">
-<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="authorgroup" mode="book.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="book.titlepage.recto.style">
-<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="author" mode="book.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="book.titlepage.recto.style">
-<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="othercredit" mode="book.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="book.titlepage.recto.style">
-<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="releaseinfo" mode="book.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="book.titlepage.recto.style">
-<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="copyright" mode="book.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="book.titlepage.recto.style">
-<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="legalnotice" mode="book.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="book.titlepage.recto.style">
-<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="pubdate" mode="book.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="book.titlepage.recto.style">
-<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revision" mode="book.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="book.titlepage.recto.style">
-<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revhistory" mode="book.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="book.titlepage.recto.style">
-<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="abstract" mode="book.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="book.titlepage.recto.style">
-<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="part.titlepage.recto">
- <div xsl:use-attribute-sets="part.titlepage.recto.style">
-<xsl:call-template name="division.title">
-<xsl:with-param name="node" select="ancestor-or-self::part[1]"/>
-</xsl:call-template></div>
- <xsl:choose>
- <xsl:when test="partinfo/subtitle">
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="docinfo/subtitle">
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/corpauthor"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/corpauthor"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/authorgroup"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/authorgroup"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/author"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/author"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/author"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/othercredit"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/othercredit"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/releaseinfo"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/releaseinfo"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/copyright"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/copyright"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/copyright"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/legalnotice"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/legalnotice"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/pubdate"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/pubdate"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/revision"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/revision"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/revision"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/revhistory"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/revhistory"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/abstract"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/abstract"/>
- <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/abstract"/>
-</xsl:template>
-
-<xsl:template name="part.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="part.titlepage.separator">
-</xsl:template>
-
-<xsl:template name="part.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="part.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="part.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="part.titlepage.before.recto"/>
- <xsl:call-template name="part.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="part.titlepage.before.verso"/>
- <xsl:call-template name="part.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="part.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="part.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="part.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="part.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="part.titlepage.recto.style">
-<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="corpauthor" mode="part.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="part.titlepage.recto.style">
-<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="authorgroup" mode="part.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="part.titlepage.recto.style">
-<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="author" mode="part.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="part.titlepage.recto.style">
-<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="othercredit" mode="part.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="part.titlepage.recto.style">
-<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="releaseinfo" mode="part.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="part.titlepage.recto.style">
-<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="copyright" mode="part.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="part.titlepage.recto.style">
-<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="legalnotice" mode="part.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="part.titlepage.recto.style">
-<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="pubdate" mode="part.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="part.titlepage.recto.style">
-<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revision" mode="part.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="part.titlepage.recto.style">
-<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revhistory" mode="part.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="part.titlepage.recto.style">
-<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="abstract" mode="part.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="part.titlepage.recto.style">
-<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="partintro.titlepage.recto">
- <xsl:choose>
- <xsl:when test="partintroinfo/title">
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/title"/>
- </xsl:when>
- <xsl:when test="docinfo/title">
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/title"/>
- </xsl:when>
- <xsl:when test="info/title">
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/title"/>
- </xsl:when>
- <xsl:when test="title">
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="title"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="partintroinfo/subtitle">
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="docinfo/subtitle">
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/corpauthor"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/corpauthor"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/authorgroup"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/authorgroup"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/author"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/author"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/author"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/othercredit"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/othercredit"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/releaseinfo"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/releaseinfo"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/copyright"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/copyright"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/copyright"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/legalnotice"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/legalnotice"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/pubdate"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/pubdate"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revision"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revision"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revision"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revhistory"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revhistory"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/abstract"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/abstract"/>
- <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/abstract"/>
-</xsl:template>
-
-<xsl:template name="partintro.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="partintro.titlepage.separator">
-</xsl:template>
-
-<xsl:template name="partintro.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="partintro.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="partintro.titlepage">
- <div>
- <xsl:variable name="recto.content">
- <xsl:call-template name="partintro.titlepage.before.recto"/>
- <xsl:call-template name="partintro.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="partintro.titlepage.before.verso"/>
- <xsl:call-template name="partintro.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="partintro.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="partintro.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="partintro.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="title" mode="partintro.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
-<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="partintro.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
-<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="corpauthor" mode="partintro.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
-<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="authorgroup" mode="partintro.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
-<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="author" mode="partintro.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
-<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="othercredit" mode="partintro.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
-<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="releaseinfo" mode="partintro.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
-<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="copyright" mode="partintro.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
-<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="legalnotice" mode="partintro.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
-<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="pubdate" mode="partintro.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
-<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revision" mode="partintro.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
-<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revhistory" mode="partintro.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
-<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="abstract" mode="partintro.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="partintro.titlepage.recto.style">
-<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="reference.titlepage.recto">
- <xsl:choose>
- <xsl:when test="referenceinfo/title">
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/title"/>
- </xsl:when>
- <xsl:when test="docinfo/title">
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/title"/>
- </xsl:when>
- <xsl:when test="info/title">
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/title"/>
- </xsl:when>
- <xsl:when test="title">
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="title"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="referenceinfo/subtitle">
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="docinfo/subtitle">
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/corpauthor"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/corpauthor"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/authorgroup"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/authorgroup"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/author"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/author"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/author"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/othercredit"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/othercredit"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/releaseinfo"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/releaseinfo"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/copyright"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/copyright"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/copyright"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/legalnotice"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/legalnotice"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/pubdate"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/pubdate"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revision"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revision"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revision"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revhistory"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revhistory"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/abstract"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/abstract"/>
- <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/abstract"/>
-</xsl:template>
-
-<xsl:template name="reference.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="reference.titlepage.separator"><hr/>
-</xsl:template>
-
-<xsl:template name="reference.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="reference.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="reference.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="reference.titlepage.before.recto"/>
- <xsl:call-template name="reference.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="reference.titlepage.before.verso"/>
- <xsl:call-template name="reference.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="reference.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="reference.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="reference.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="title" mode="reference.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="reference.titlepage.recto.style">
-<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="reference.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="reference.titlepage.recto.style">
-<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="corpauthor" mode="reference.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="reference.titlepage.recto.style">
-<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="authorgroup" mode="reference.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="reference.titlepage.recto.style">
-<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="author" mode="reference.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="reference.titlepage.recto.style">
-<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="othercredit" mode="reference.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="reference.titlepage.recto.style">
-<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="releaseinfo" mode="reference.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="reference.titlepage.recto.style">
-<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="copyright" mode="reference.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="reference.titlepage.recto.style">
-<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="legalnotice" mode="reference.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="reference.titlepage.recto.style">
-<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="pubdate" mode="reference.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="reference.titlepage.recto.style">
-<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revision" mode="reference.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="reference.titlepage.recto.style">
-<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revhistory" mode="reference.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="reference.titlepage.recto.style">
-<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="abstract" mode="reference.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="reference.titlepage.recto.style">
-<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="refentry.titlepage.recto">
-</xsl:template>
-
-<xsl:template name="refentry.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="refentry.titlepage.separator">
-</xsl:template>
-
-<xsl:template name="refentry.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="refentry.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="refentry.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="refentry.titlepage.before.recto"/>
- <xsl:call-template name="refentry.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="refentry.titlepage.before.verso"/>
- <xsl:call-template name="refentry.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="refentry.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="refentry.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="refentry.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template name="dedication.titlepage.recto">
- <div xsl:use-attribute-sets="dedication.titlepage.recto.style">
-<xsl:call-template name="component.title">
-<xsl:with-param name="node" select="ancestor-or-self::dedication[1]"/>
-</xsl:call-template></div>
- <xsl:choose>
- <xsl:when test="dedicationinfo/subtitle">
- <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="dedicationinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="docinfo/subtitle">
- <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
-</xsl:template>
-
-<xsl:template name="dedication.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="dedication.titlepage.separator">
-</xsl:template>
-
-<xsl:template name="dedication.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="dedication.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="dedication.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="dedication.titlepage.before.recto"/>
- <xsl:call-template name="dedication.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="dedication.titlepage.before.verso"/>
- <xsl:call-template name="dedication.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="dedication.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="dedication.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="dedication.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="dedication.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="dedication.titlepage.recto.style">
-<xsl:apply-templates select="." mode="dedication.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="acknowledgements.titlepage.recto">
- <div xsl:use-attribute-sets="acknowledgements.titlepage.recto.style">
-<xsl:call-template name="component.title">
-<xsl:with-param name="node" select="ancestor-or-self::acknowledgements[1]"/>
-</xsl:call-template></div>
- <xsl:choose>
- <xsl:when test="acknowledgementsinfo/subtitle">
- <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="acknowledgementsinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="docinfo/subtitle">
- <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
-</xsl:template>
-
-<xsl:template name="acknowledgements.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="acknowledgements.titlepage.separator">
-</xsl:template>
-
-<xsl:template name="acknowledgements.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="acknowledgements.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="acknowledgements.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="acknowledgements.titlepage.before.recto"/>
- <xsl:call-template name="acknowledgements.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="acknowledgements.titlepage.before.verso"/>
- <xsl:call-template name="acknowledgements.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="acknowledgements.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="acknowledgements.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="acknowledgements.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="acknowledgements.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="acknowledgements.titlepage.recto.style">
-<xsl:apply-templates select="." mode="acknowledgements.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="preface.titlepage.recto">
- <xsl:choose>
- <xsl:when test="prefaceinfo/title">
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/title"/>
- </xsl:when>
- <xsl:when test="docinfo/title">
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/title"/>
- </xsl:when>
- <xsl:when test="info/title">
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/title"/>
- </xsl:when>
- <xsl:when test="title">
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="title"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="prefaceinfo/subtitle">
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="docinfo/subtitle">
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/corpauthor"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/corpauthor"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/authorgroup"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/authorgroup"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/author"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/author"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/author"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/othercredit"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/othercredit"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/releaseinfo"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/releaseinfo"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/copyright"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/copyright"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/copyright"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/legalnotice"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/legalnotice"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/pubdate"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/pubdate"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revision"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revision"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revision"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revhistory"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revhistory"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/abstract"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/abstract"/>
- <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/abstract"/>
-</xsl:template>
-
-<xsl:template name="preface.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="preface.titlepage.separator">
-</xsl:template>
-
-<xsl:template name="preface.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="preface.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="preface.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="preface.titlepage.before.recto"/>
- <xsl:call-template name="preface.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="preface.titlepage.before.verso"/>
- <xsl:call-template name="preface.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="preface.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="preface.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="preface.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="title" mode="preface.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="preface.titlepage.recto.style">
-<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="preface.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="preface.titlepage.recto.style">
-<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="corpauthor" mode="preface.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="preface.titlepage.recto.style">
-<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="authorgroup" mode="preface.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="preface.titlepage.recto.style">
-<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="author" mode="preface.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="preface.titlepage.recto.style">
-<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="othercredit" mode="preface.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="preface.titlepage.recto.style">
-<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="releaseinfo" mode="preface.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="preface.titlepage.recto.style">
-<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="copyright" mode="preface.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="preface.titlepage.recto.style">
-<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="legalnotice" mode="preface.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="preface.titlepage.recto.style">
-<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="pubdate" mode="preface.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="preface.titlepage.recto.style">
-<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revision" mode="preface.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="preface.titlepage.recto.style">
-<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revhistory" mode="preface.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="preface.titlepage.recto.style">
-<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="abstract" mode="preface.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="preface.titlepage.recto.style">
-<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="chapter.titlepage.recto">
- <xsl:choose>
- <xsl:when test="chapterinfo/title">
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/title"/>
- </xsl:when>
- <xsl:when test="docinfo/title">
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/title"/>
- </xsl:when>
- <xsl:when test="info/title">
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/title"/>
- </xsl:when>
- <xsl:when test="title">
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="title"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="chapterinfo/subtitle">
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="docinfo/subtitle">
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/corpauthor"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/corpauthor"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/authorgroup"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/authorgroup"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/author"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/author"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/author"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/othercredit"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/othercredit"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/releaseinfo"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/releaseinfo"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/copyright"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/copyright"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/copyright"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/legalnotice"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/legalnotice"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/pubdate"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/pubdate"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revision"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revision"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revision"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revhistory"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revhistory"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/abstract"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/abstract"/>
- <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/abstract"/>
-</xsl:template>
-
-<xsl:template name="chapter.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="chapter.titlepage.separator">
-</xsl:template>
-
-<xsl:template name="chapter.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="chapter.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="chapter.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="chapter.titlepage.before.recto"/>
- <xsl:call-template name="chapter.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="chapter.titlepage.before.verso"/>
- <xsl:call-template name="chapter.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="chapter.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="chapter.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="chapter.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
-<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="chapter.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
-<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="corpauthor" mode="chapter.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
-<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="authorgroup" mode="chapter.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
-<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="author" mode="chapter.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
-<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="othercredit" mode="chapter.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
-<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="releaseinfo" mode="chapter.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
-<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="copyright" mode="chapter.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
-<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="legalnotice" mode="chapter.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
-<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="pubdate" mode="chapter.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
-<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revision" mode="chapter.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
-<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revhistory" mode="chapter.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
-<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="abstract" mode="chapter.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="chapter.titlepage.recto.style">
-<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="appendix.titlepage.recto">
- <xsl:choose>
- <xsl:when test="appendixinfo/title">
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/title"/>
- </xsl:when>
- <xsl:when test="docinfo/title">
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/title"/>
- </xsl:when>
- <xsl:when test="info/title">
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/title"/>
- </xsl:when>
- <xsl:when test="title">
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="title"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="appendixinfo/subtitle">
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="docinfo/subtitle">
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/corpauthor"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/corpauthor"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/authorgroup"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/authorgroup"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/author"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/author"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/author"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/othercredit"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/othercredit"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/releaseinfo"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/releaseinfo"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/copyright"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/copyright"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/copyright"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/legalnotice"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/legalnotice"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/pubdate"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/pubdate"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revision"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revision"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revision"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revhistory"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revhistory"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/abstract"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/abstract"/>
- <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/abstract"/>
-</xsl:template>
-
-<xsl:template name="appendix.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="appendix.titlepage.separator">
-</xsl:template>
-
-<xsl:template name="appendix.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="appendix.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="appendix.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="appendix.titlepage.before.recto"/>
- <xsl:call-template name="appendix.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="appendix.titlepage.before.verso"/>
- <xsl:call-template name="appendix.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="appendix.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="appendix.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="appendix.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="title" mode="appendix.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
-<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="appendix.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
-<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="corpauthor" mode="appendix.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
-<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="authorgroup" mode="appendix.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
-<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="author" mode="appendix.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
-<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="othercredit" mode="appendix.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
-<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="releaseinfo" mode="appendix.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
-<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="copyright" mode="appendix.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
-<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="legalnotice" mode="appendix.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
-<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="pubdate" mode="appendix.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
-<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revision" mode="appendix.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
-<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revhistory" mode="appendix.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
-<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="abstract" mode="appendix.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="appendix.titlepage.recto.style">
-<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="section.titlepage.recto">
- <xsl:choose>
- <xsl:when test="sectioninfo/title">
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/title"/>
- </xsl:when>
- <xsl:when test="info/title">
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/title"/>
- </xsl:when>
- <xsl:when test="title">
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="title"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="sectioninfo/subtitle">
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/corpauthor"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/corpauthor"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/authorgroup"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/authorgroup"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/author"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/author"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/othercredit"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/othercredit"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/releaseinfo"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/releaseinfo"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/copyright"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/copyright"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/legalnotice"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/legalnotice"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/pubdate"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/pubdate"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revision"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revision"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revhistory"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revhistory"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/abstract"/>
- <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/abstract"/>
-</xsl:template>
-
-<xsl:template name="section.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="section.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
-</xsl:template>
-
-<xsl:template name="section.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="section.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="section.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="section.titlepage.before.recto"/>
- <xsl:call-template name="section.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="section.titlepage.before.verso"/>
- <xsl:call-template name="section.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="section.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="section.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="section.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="title" mode="section.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="section.titlepage.recto.style">
-<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="section.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="section.titlepage.recto.style">
-<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="corpauthor" mode="section.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="section.titlepage.recto.style">
-<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="authorgroup" mode="section.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="section.titlepage.recto.style">
-<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="author" mode="section.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="section.titlepage.recto.style">
-<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="othercredit" mode="section.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="section.titlepage.recto.style">
-<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="releaseinfo" mode="section.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="section.titlepage.recto.style">
-<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="copyright" mode="section.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="section.titlepage.recto.style">
-<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="legalnotice" mode="section.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="section.titlepage.recto.style">
-<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="pubdate" mode="section.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="section.titlepage.recto.style">
-<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revision" mode="section.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="section.titlepage.recto.style">
-<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revhistory" mode="section.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="section.titlepage.recto.style">
-<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="abstract" mode="section.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="section.titlepage.recto.style">
-<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="sect1.titlepage.recto">
- <xsl:choose>
- <xsl:when test="sect1info/title">
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/title"/>
- </xsl:when>
- <xsl:when test="info/title">
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/title"/>
- </xsl:when>
- <xsl:when test="title">
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="title"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="sect1info/subtitle">
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/corpauthor"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/corpauthor"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/authorgroup"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/authorgroup"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/author"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/author"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/othercredit"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/othercredit"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/releaseinfo"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/releaseinfo"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/copyright"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/copyright"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/legalnotice"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/legalnotice"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/pubdate"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/pubdate"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revision"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revision"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revhistory"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revhistory"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/abstract"/>
- <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/abstract"/>
-</xsl:template>
-
-<xsl:template name="sect1.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="sect1.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
-</xsl:template>
-
-<xsl:template name="sect1.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="sect1.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="sect1.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="sect1.titlepage.before.recto"/>
- <xsl:call-template name="sect1.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="sect1.titlepage.before.verso"/>
- <xsl:call-template name="sect1.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="sect1.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="sect1.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="sect1.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="title" mode="sect1.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="sect1.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="corpauthor" mode="sect1.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="authorgroup" mode="sect1.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="author" mode="sect1.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="othercredit" mode="sect1.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="releaseinfo" mode="sect1.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="copyright" mode="sect1.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="legalnotice" mode="sect1.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="pubdate" mode="sect1.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revision" mode="sect1.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revhistory" mode="sect1.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="abstract" mode="sect1.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect1.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="sect2.titlepage.recto">
- <xsl:choose>
- <xsl:when test="sect2info/title">
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/title"/>
- </xsl:when>
- <xsl:when test="info/title">
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/title"/>
- </xsl:when>
- <xsl:when test="title">
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="title"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="sect2info/subtitle">
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/corpauthor"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/corpauthor"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/authorgroup"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/authorgroup"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/author"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/author"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/othercredit"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/othercredit"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/releaseinfo"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/releaseinfo"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/copyright"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/copyright"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/legalnotice"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/legalnotice"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/pubdate"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/pubdate"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revision"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revision"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revhistory"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revhistory"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/abstract"/>
- <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/abstract"/>
-</xsl:template>
-
-<xsl:template name="sect2.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="sect2.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
-</xsl:template>
-
-<xsl:template name="sect2.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="sect2.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="sect2.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="sect2.titlepage.before.recto"/>
- <xsl:call-template name="sect2.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="sect2.titlepage.before.verso"/>
- <xsl:call-template name="sect2.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="sect2.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="sect2.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="sect2.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="title" mode="sect2.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="sect2.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="corpauthor" mode="sect2.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="authorgroup" mode="sect2.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="author" mode="sect2.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="othercredit" mode="sect2.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="releaseinfo" mode="sect2.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="copyright" mode="sect2.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="legalnotice" mode="sect2.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="pubdate" mode="sect2.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revision" mode="sect2.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revhistory" mode="sect2.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="abstract" mode="sect2.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect2.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="sect3.titlepage.recto">
- <xsl:choose>
- <xsl:when test="sect3info/title">
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/title"/>
- </xsl:when>
- <xsl:when test="info/title">
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/title"/>
- </xsl:when>
- <xsl:when test="title">
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="title"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="sect3info/subtitle">
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/corpauthor"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/corpauthor"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/authorgroup"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/authorgroup"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/author"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/author"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/othercredit"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/othercredit"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/releaseinfo"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/releaseinfo"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/copyright"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/copyright"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/legalnotice"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/legalnotice"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/pubdate"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/pubdate"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revision"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revision"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revhistory"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revhistory"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/abstract"/>
- <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/abstract"/>
-</xsl:template>
-
-<xsl:template name="sect3.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="sect3.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
-</xsl:template>
-
-<xsl:template name="sect3.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="sect3.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="sect3.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="sect3.titlepage.before.recto"/>
- <xsl:call-template name="sect3.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="sect3.titlepage.before.verso"/>
- <xsl:call-template name="sect3.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="sect3.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="sect3.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="sect3.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="title" mode="sect3.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="sect3.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="corpauthor" mode="sect3.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="authorgroup" mode="sect3.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="author" mode="sect3.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="othercredit" mode="sect3.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="releaseinfo" mode="sect3.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="copyright" mode="sect3.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="legalnotice" mode="sect3.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="pubdate" mode="sect3.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revision" mode="sect3.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revhistory" mode="sect3.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="abstract" mode="sect3.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect3.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="sect4.titlepage.recto">
- <xsl:choose>
- <xsl:when test="sect4info/title">
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/title"/>
- </xsl:when>
- <xsl:when test="info/title">
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/title"/>
- </xsl:when>
- <xsl:when test="title">
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="title"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="sect4info/subtitle">
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/corpauthor"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/corpauthor"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/authorgroup"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/authorgroup"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/author"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/author"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/othercredit"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/othercredit"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/releaseinfo"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/releaseinfo"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/copyright"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/copyright"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/legalnotice"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/legalnotice"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/pubdate"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/pubdate"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revision"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revision"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revhistory"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revhistory"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/abstract"/>
- <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/abstract"/>
-</xsl:template>
-
-<xsl:template name="sect4.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="sect4.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
-</xsl:template>
-
-<xsl:template name="sect4.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="sect4.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="sect4.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="sect4.titlepage.before.recto"/>
- <xsl:call-template name="sect4.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="sect4.titlepage.before.verso"/>
- <xsl:call-template name="sect4.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="sect4.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="sect4.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="sect4.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="title" mode="sect4.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="sect4.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="corpauthor" mode="sect4.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="authorgroup" mode="sect4.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="author" mode="sect4.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="othercredit" mode="sect4.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="releaseinfo" mode="sect4.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="copyright" mode="sect4.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="legalnotice" mode="sect4.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="pubdate" mode="sect4.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revision" mode="sect4.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revhistory" mode="sect4.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="abstract" mode="sect4.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect4.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="sect5.titlepage.recto">
- <xsl:choose>
- <xsl:when test="sect5info/title">
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/title"/>
- </xsl:when>
- <xsl:when test="info/title">
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/title"/>
- </xsl:when>
- <xsl:when test="title">
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="title"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="sect5info/subtitle">
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/corpauthor"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/corpauthor"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/authorgroup"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/authorgroup"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/author"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/author"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/othercredit"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/othercredit"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/releaseinfo"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/releaseinfo"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/copyright"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/copyright"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/legalnotice"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/legalnotice"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/pubdate"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/pubdate"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revision"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revision"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revhistory"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revhistory"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/abstract"/>
- <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/abstract"/>
-</xsl:template>
-
-<xsl:template name="sect5.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="sect5.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
-</xsl:template>
-
-<xsl:template name="sect5.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="sect5.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="sect5.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="sect5.titlepage.before.recto"/>
- <xsl:call-template name="sect5.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="sect5.titlepage.before.verso"/>
- <xsl:call-template name="sect5.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="sect5.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="sect5.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="sect5.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="title" mode="sect5.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="sect5.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="corpauthor" mode="sect5.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="authorgroup" mode="sect5.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="author" mode="sect5.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="othercredit" mode="sect5.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="releaseinfo" mode="sect5.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="copyright" mode="sect5.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="legalnotice" mode="sect5.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="pubdate" mode="sect5.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revision" mode="sect5.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revhistory" mode="sect5.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="abstract" mode="sect5.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sect5.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="simplesect.titlepage.recto">
- <xsl:choose>
- <xsl:when test="simplesectinfo/title">
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/title"/>
- </xsl:when>
- <xsl:when test="docinfo/title">
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/title"/>
- </xsl:when>
- <xsl:when test="info/title">
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/title"/>
- </xsl:when>
- <xsl:when test="title">
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="title"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="simplesectinfo/subtitle">
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="docinfo/subtitle">
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/corpauthor"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/corpauthor"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/authorgroup"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/authorgroup"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/author"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/author"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/author"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/othercredit"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/othercredit"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/othercredit"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/releaseinfo"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/releaseinfo"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/copyright"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/copyright"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/copyright"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/legalnotice"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/legalnotice"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/legalnotice"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/pubdate"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/pubdate"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revision"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revision"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revision"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revhistory"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revhistory"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revhistory"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/abstract"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/abstract"/>
- <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/abstract"/>
-</xsl:template>
-
-<xsl:template name="simplesect.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="simplesect.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
-</xsl:template>
-
-<xsl:template name="simplesect.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="simplesect.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="simplesect.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="simplesect.titlepage.before.recto"/>
- <xsl:call-template name="simplesect.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="simplesect.titlepage.before.verso"/>
- <xsl:call-template name="simplesect.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="simplesect.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="simplesect.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="simplesect.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="title" mode="simplesect.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
-<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="simplesect.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
-<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="corpauthor" mode="simplesect.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
-<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="authorgroup" mode="simplesect.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
-<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="author" mode="simplesect.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
-<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="othercredit" mode="simplesect.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
-<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="releaseinfo" mode="simplesect.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
-<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="copyright" mode="simplesect.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
-<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="legalnotice" mode="simplesect.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
-<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="pubdate" mode="simplesect.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
-<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revision" mode="simplesect.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
-<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="revhistory" mode="simplesect.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
-<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template match="abstract" mode="simplesect.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="simplesect.titlepage.recto.style">
-<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="bibliography.titlepage.recto">
- <div xsl:use-attribute-sets="bibliography.titlepage.recto.style">
-<xsl:call-template name="component.title">
-<xsl:with-param name="node" select="ancestor-or-self::bibliography[1]"/>
-</xsl:call-template></div>
- <xsl:choose>
- <xsl:when test="bibliographyinfo/subtitle">
- <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="bibliographyinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="docinfo/subtitle">
- <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
-</xsl:template>
-
-<xsl:template name="bibliography.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="bibliography.titlepage.separator">
-</xsl:template>
-
-<xsl:template name="bibliography.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="bibliography.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="bibliography.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="bibliography.titlepage.before.recto"/>
- <xsl:call-template name="bibliography.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="bibliography.titlepage.before.verso"/>
- <xsl:call-template name="bibliography.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="bibliography.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="bibliography.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="bibliography.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="bibliography.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="bibliography.titlepage.recto.style">
-<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="glossary.titlepage.recto">
- <div xsl:use-attribute-sets="glossary.titlepage.recto.style">
-<xsl:call-template name="component.title">
-<xsl:with-param name="node" select="ancestor-or-self::glossary[1]"/>
-</xsl:call-template></div>
- <xsl:choose>
- <xsl:when test="glossaryinfo/subtitle">
- <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="glossaryinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="docinfo/subtitle">
- <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
-</xsl:template>
-
-<xsl:template name="glossary.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="glossary.titlepage.separator">
-</xsl:template>
-
-<xsl:template name="glossary.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="glossary.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="glossary.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="glossary.titlepage.before.recto"/>
- <xsl:call-template name="glossary.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="glossary.titlepage.before.verso"/>
- <xsl:call-template name="glossary.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="glossary.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="glossary.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="glossary.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="glossary.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="glossary.titlepage.recto.style">
-<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="index.titlepage.recto">
- <div xsl:use-attribute-sets="index.titlepage.recto.style">
-<xsl:call-template name="component.title">
-<xsl:with-param name="node" select="ancestor-or-self::index[1]"/>
-</xsl:call-template></div>
- <xsl:choose>
- <xsl:when test="indexinfo/subtitle">
- <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="indexinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="docinfo/subtitle">
- <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
-</xsl:template>
-
-<xsl:template name="index.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="index.titlepage.separator">
-</xsl:template>
-
-<xsl:template name="index.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="index.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="index.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="index.titlepage.before.recto"/>
- <xsl:call-template name="index.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="index.titlepage.before.verso"/>
- <xsl:call-template name="index.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="index.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="index.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="index.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="index.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="index.titlepage.recto.style">
-<xsl:apply-templates select="." mode="index.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="setindex.titlepage.recto">
- <div xsl:use-attribute-sets="setindex.titlepage.recto.style">
-<xsl:call-template name="component.title">
-<xsl:with-param name="node" select="ancestor-or-self::setindex[1]"/>
-</xsl:call-template></div>
- <xsl:choose>
- <xsl:when test="setindexinfo/subtitle">
- <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="setindexinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="docinfo/subtitle">
- <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
-</xsl:template>
-
-<xsl:template name="setindex.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="setindex.titlepage.separator">
-</xsl:template>
-
-<xsl:template name="setindex.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="setindex.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="setindex.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="setindex.titlepage.before.recto"/>
- <xsl:call-template name="setindex.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="setindex.titlepage.before.verso"/>
- <xsl:call-template name="setindex.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="setindex.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="setindex.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="setindex.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="setindex.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="setindex.titlepage.recto.style">
-<xsl:apply-templates select="." mode="setindex.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-<xsl:template name="sidebar.titlepage.recto">
- <xsl:choose>
- <xsl:when test="sidebarinfo/title">
- <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/title"/>
- </xsl:when>
- <xsl:when test="docinfo/title">
- <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/title"/>
- </xsl:when>
- <xsl:when test="info/title">
- <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/title"/>
- </xsl:when>
- <xsl:when test="title">
- <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="title"/>
- </xsl:when>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="sidebarinfo/subtitle">
- <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="docinfo/subtitle">
- <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
- </xsl:when>
- <xsl:when test="info/subtitle">
- <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/subtitle"/>
- </xsl:when>
- <xsl:when test="subtitle">
- <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="subtitle"/>
- </xsl:when>
- </xsl:choose>
-
-</xsl:template>
-
-<xsl:template name="sidebar.titlepage.verso">
-</xsl:template>
-
-<xsl:template name="sidebar.titlepage.separator">
-</xsl:template>
-
-<xsl:template name="sidebar.titlepage.before.recto">
-</xsl:template>
-
-<xsl:template name="sidebar.titlepage.before.verso">
-</xsl:template>
-
-<xsl:template name="sidebar.titlepage">
- <div class="titlepage">
- <xsl:variable name="recto.content">
- <xsl:call-template name="sidebar.titlepage.before.recto"/>
- <xsl:call-template name="sidebar.titlepage.recto"/>
- </xsl:variable>
- <xsl:variable name="recto.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
- <div><xsl:copy-of select="$recto.content"/></div>
- </xsl:if>
- <xsl:variable name="verso.content">
- <xsl:call-template name="sidebar.titlepage.before.verso"/>
- <xsl:call-template name="sidebar.titlepage.verso"/>
- </xsl:variable>
- <xsl:variable name="verso.elements.count">
- <xsl:choose>
- <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
- <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
- <xsl:otherwise>1</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
- <div><xsl:copy-of select="$verso.content"/></div>
- </xsl:if>
- <xsl:call-template name="sidebar.titlepage.separator"/>
- </div>
-</xsl:template>
-
-<xsl:template match="*" mode="sidebar.titlepage.recto.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="*" mode="sidebar.titlepage.verso.mode">
- <!-- if an element isn't found in this mode, -->
- <!-- try the generic titlepage.mode -->
- <xsl:apply-templates select="." mode="titlepage.mode"/>
-</xsl:template>
-
-<xsl:template match="title" mode="sidebar.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sidebar.titlepage.recto.style">
-<xsl:call-template name="formal.object.heading">
-<xsl:with-param name="object" select="ancestor-or-self::sidebar[1]"/>
-</xsl:call-template>
-</div>
-</xsl:template>
-
-<xsl:template match="subtitle" mode="sidebar.titlepage.recto.auto.mode">
-<div xsl:use-attribute-sets="sidebar.titlepage.recto.style">
-<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/>
-</div>
-</xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/documentation/yocto-project-qs/yocto-project-qs.xml b/documentation/yocto-project-qs/yocto-project-qs.xml
deleted file mode 100644
index 12ca05b930b..00000000000
--- a/documentation/yocto-project-qs/yocto-project-qs.xml
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
-"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
-[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
-
-<book id='yocto-project-qs' lang='en'
- xmlns:xi="http://www.w3.org/2003/XInclude"
- xmlns="http://docbook.org/ns/docbook"
- >
- <bookinfo>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref='figures/ypqs-title.png'
- format='SVG'
- align='center' scalefit='1' width='100%'/>
- </imageobject>
- </mediaobject>
-
- <title>
- Yocto Project Quick Start
- </title>
-
- <authorgroup>
- <author>
- <firstname>Scott</firstname> <surname>Rifenbark</surname>
- <affiliation>
- <orgname>Scotty's Documentation Services, INC</orgname>
- </affiliation>
- <email>srifenbark@gmail.com</email>
- </author>
- </authorgroup>
-
-<!--
- <revhistory>
- <revision>
- <revnumber>0.9</revnumber>
- <date>24 November 2010</date>
- <revremark>The initial document draft released with the Yocto Project 0.9 Release.</revremark>
- </revision>
- <revision>
- <revnumber>1.0</revnumber>
- <date>6 April 2011</date>
- <revremark>Released with the Yocto Project 1.0 Release.</revremark>
- </revision>
- <revision>
- <revnumber>1.0.1</revnumber>
- <date>23 May 2011</date>
- <revremark>Released with the Yocto Project 1.0.1 Release.</revremark>
- </revision>
- <revision>
- <revnumber>1.1</revnumber>
- <date>6 October 2011</date>
- <revremark>Released with the Yocto Project 1.1 Release.</revremark>
- </revision>
- <revision>
- <revnumber>1.2</revnumber>
- <date>April 2012</date>
- <revremark>Released with the Yocto Project 1.2 Release.</revremark>
- </revision>
- <revision>
- <revnumber>1.3</revnumber>
- <date>October 2012</date>
- <revremark>Released with the Yocto Project 1.3 Release.</revremark>
- </revision>
- <revision>
- <revnumber>1.4</revnumber>
- <date>April 2013</date>
- <revremark>Released with the Yocto Project 1.4 Release.</revremark>
- </revision>
- <revision>
- <revnumber>1.5</revnumber>
- <date>October 2013</date>
- <revremark>Released with the Yocto Project 1.5 Release.</revremark>
- </revision>
- <revision>
- <revnumber>1.5.1</revnumber>
- <date>January 2014</date>
- <revremark>Released with the Yocto Project 1.5.1 Release.</revremark>
- </revision>
- <revision>
- <revnumber>1.6</revnumber>
- <date>April 2014</date>
- <revremark>Released with the Yocto Project 1.6 Release.</revremark>
- </revision>
- <revision>
- <revnumber>1.7</revnumber>
- <date>October 2014</date>
- <revremark>Released with the Yocto Project 1.7 Release.</revremark>
- </revision>
- <revision>
- <revnumber>1.8</revnumber>
- <date>April 2015</date>
- <revremark>Released with the Yocto Project 1.8 Release.</revremark>
- </revision>
- <revision>
- <revnumber>2.0</revnumber>
- <date>October 2015</date>
- <revremark>Released with the Yocto Project 2.0 Release.</revremark>
- </revision>
- <revision>
- <revnumber>2.1</revnumber>
- <date>April 2016</date>
- <revremark>Released with the Yocto Project 2.1 Release.</revremark>
- </revision>
- <revision>
- <revnumber>2.2</revnumber>
- <date>October 2016</date>
- <revremark>Released with the Yocto Project 2.2 Release.</revremark>
- </revision>
- <revision>
- <revnumber>2.3</revnumber>
- <date>May 2017</date>
- <revremark>Released with the Yocto Project 2.3 Release.</revremark>
- </revision>
- <revision>
- <revnumber>2.4</revnumber>
- <date>October 2017</date>
- <revremark>Released with the Yocto Project 2.4 Release.</revremark>
- </revision>
- <revision>
- <revnumber>2.5</revnumber>
- <date>April 2018</date>
- <revremark>Released with the Yocto Project 2.5 Release.</revremark>
- </revision>
- </revhistory>
--->
-
- <copyright>
- <year>&COPYRIGHT_YEAR;</year>
- <holder>Linux Foundation</holder>
- </copyright>
-
- <legalnotice>
- <para>
- Permission is granted to copy, distribute and/or modify this document under
- the terms of the <ulink type="http" url="http://creativecommons.org/licenses/by-nc-sa/2.0/uk/">Creative Commons Attribution-Share Alike 2.0 UK: England &amp; Wales</ulink> as published by Creative Commons.
- </para>
- <note><title>Manual Notes</title>
- <itemizedlist>
- <listitem><para>
- This version of the
- <emphasis>Yocto Project Quick Start</emphasis>
- is for the &YOCTO_DOC_VERSION; release of the
- Yocto Project.
- To be sure you have the latest version of the manual
- for this release, use the manual from the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>.
- </para></listitem>
- <listitem><para>
- For manuals associated with other releases of the Yocto
- Project, go to the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
- and use the drop-down "Active Releases" button
- and choose the manual associated with the desired
- Yocto Project.
- </para></listitem>
- <listitem><para>
- To report any inaccuracies or problems with this
- manual, send an email to the Yocto Project
- discussion group at
- <filename>yocto@yoctoproject.com</filename> or log into
- the freenode <filename>#yocto</filename> channel.
- </para></listitem>
- </itemizedlist>
- </note>
- </legalnotice>
-
- </bookinfo>
-
- <xi:include href="qs.xml"/>
-
-<!-- <index id='index'>
- <title>Index</title>
- </index>
--->
-
-</book>
-<!--
-vim: expandtab tw=80 ts=4
--->
diff --git a/meta-poky/conf/distro/poky-lsb.conf b/meta-poky/conf/distro/poky-lsb.conf
index ecfe5d2f446..1c426bae0e8 100644
--- a/meta-poky/conf/distro/poky-lsb.conf
+++ b/meta-poky/conf/distro/poky-lsb.conf
@@ -1,6 +1,5 @@
require conf/distro/poky.conf
-require conf/distro/include/security_flags.inc
DISTRO = "poky-lsb"
DISTROOVERRIDES = "poky:linuxstdbase"
diff --git a/meta-poky/conf/distro/poky-tiny.conf b/meta-poky/conf/distro/poky-tiny.conf
index 7b22a13cac6..690cb0d5c99 100644
--- a/meta-poky/conf/distro/poky-tiny.conf
+++ b/meta-poky/conf/distro/poky-tiny.conf
@@ -38,7 +38,7 @@ TCLIBC = "musl"
# Distro config is evaluated after the machine config, so we have to explicitly
# set the kernel provider to override a machine config.
PREFERRED_PROVIDER_virtual/kernel = "linux-yocto-tiny"
-PREFERRED_VERSION_linux-yocto-tiny ?= "4.14%"
+PREFERRED_VERSION_linux-yocto-tiny ?= "4.18%"
# We can use packagegroup-core-boot, but in the future we may need a new packagegroup-core-tiny
#POKY_DEFAULT_EXTRA_RDEPENDS += "packagegroup-core-boot"
diff --git a/meta-poky/conf/distro/poky.conf b/meta-poky/conf/distro/poky.conf
index 7b1f24e0dc8..3fdd2f303cc 100644
--- a/meta-poky/conf/distro/poky.conf
+++ b/meta-poky/conf/distro/poky.conf
@@ -1,7 +1,7 @@
DISTRO = "poky"
DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
-DISTRO_VERSION = "2.5"
-DISTRO_CODENAME = "sumo"
+DISTRO_VERSION = "2.5+snapshot-${DATE}"
+DISTRO_CODENAME = "master"
SDK_VENDOR = "-pokysdk"
SDK_VERSION := "${@'${DISTRO_VERSION}'.replace('snapshot-${DATE}','snapshot')}"
@@ -21,7 +21,7 @@ POKY_DEFAULT_EXTRA_RRECOMMENDS = "kernel-module-af-packet"
DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT} ${DISTRO_FEATURES_LIBC} ${POKY_DEFAULT_DISTRO_FEATURES}"
-PREFERRED_VERSION_linux-yocto ?= "4.14%"
+PREFERRED_VERSION_linux-yocto ?= "4.18%"
SDK_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-${IMAGE_BASENAME}-${TUNE_PKGARCH}"
SDKPATH = "/opt/${DISTRO}/${SDK_VERSION}"
@@ -91,11 +91,12 @@ INHERIT += "poky-sanity"
# QA check settings - a little stricter than the OE-Core defaults
WARN_TO_ERROR_QA = "already-stripped compile-host-path install-host-path \
installed-vs-shipped ldflags pn-overrides rpaths staticdev \
- useless-rpaths"
+ unknown-configure-option useless-rpaths"
WARN_QA_remove = "${WARN_TO_ERROR_QA}"
ERROR_QA_append = " ${WARN_TO_ERROR_QA}"
require conf/distro/include/poky-world-exclude.inc
require conf/distro/include/no-static-libs.inc
require conf/distro/include/yocto-uninative.inc
+require conf/distro/include/security_flags.inc
INHERIT += "uninative"
diff --git a/meta-poky/conf/layer.conf b/meta-poky/conf/layer.conf
index 3761f87c686..b9b263716ab 100644
--- a/meta-poky/conf/layer.conf
+++ b/meta-poky/conf/layer.conf
@@ -9,7 +9,7 @@ BBFILE_COLLECTIONS += "yocto"
BBFILE_PATTERN_yocto = "^${LAYERDIR}/"
BBFILE_PRIORITY_yocto = "5"
-LAYERSERIES_COMPAT_yocto = "sumo"
+LAYERSERIES_COMPAT_yocto = "thud"
# This should only be incremented on significant changes that will
# cause compatibility issues with other layers
diff --git a/meta-poky/conf/local.conf.sample b/meta-poky/conf/local.conf.sample
index aa8df40b87e..d28bf58a1e7 100644
--- a/meta-poky/conf/local.conf.sample
+++ b/meta-poky/conf/local.conf.sample
@@ -234,12 +234,12 @@ BB_DISKMON_DIRS ??= "\
# Qemu configuration
#
# By default qemu will build with a builtin VNC server where graphical output can be
-# seen. The two lines below enable the SDL backend too. By default libsdl-native will
+# 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 libsdl-native then uncomment the ASSUME_PROVIDED line below.
+# by libsdl2-native then uncomment the ASSUME_PROVIDED line below.
PACKAGECONFIG_append_pn-qemu-native = " sdl"
PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
-#ASSUME_PROVIDED += "libsdl-native"
+#ASSUME_PROVIDED += "libsdl2-native"
# 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
diff --git a/meta-poky/conf/local.conf.sample.extended b/meta-poky/conf/local.conf.sample.extended
index 0560de8576c..dbb734f186e 100644
--- a/meta-poky/conf/local.conf.sample.extended
+++ b/meta-poky/conf/local.conf.sample.extended
@@ -32,7 +32,7 @@
#DISTRO_FEATURES_LIBC = "ipv6 libc-backtrace libc-big-macros libc-bsd libc-cxx-tests libc-catgets libc-charsets libc-crypt \
# libc-crypt-ufc libc-db-aliases libc-envz libc-fcvt libc-fmtmsg libc-fstab libc-ftraverse \
# libc-getlogin libc-idn libc-inet libc-inet-anl libc-libm libc-locales libc-locale-code \
-# libc-memusage libc-nis libc-nsswitch libc-rcmd libc-rtld-debug libc-spawn libc-streams libc-sunrpc \
+# libc-memusage libc-nsswitch libc-rcmd libc-rtld-debug libc-spawn libc-streams \
# libc-utmp libc-utmpx libc-wordexp libc-posix-clang-wchar libc-posix-regexp libc-posix-regexp-glibc \
# libc-posix-wchar-io"
diff --git a/meta-poky/conf/site.conf.sample b/meta-poky/conf/site.conf.sample
index 6cfefc574a4..a4c2f9feed9 100644
--- a/meta-poky/conf/site.conf.sample
+++ b/meta-poky/conf/site.conf.sample
@@ -24,7 +24,9 @@ SCONF_VERSION = "1"
#or
#ALL_PROXY ?= "https://proxy.example.com:8080"
# If you wish to use certain hosts without the proxy, specify them in NO_PROXY.
-# See the script for details on syntax.
+# See the script for details on syntax. The script oe-git-proxy uses some tools
+# that may not be included on HOSTTOOLS, thus add them manually through
+# HOSTTOOLS += "getent seq"
# Uncomment this to use a shared download directory
#DL_DIR = "/some/shared/download/directory/"
diff --git a/meta-selftest/conf/layer.conf b/meta-selftest/conf/layer.conf
index f574a505d6f..0626b2a3ea4 100644
--- a/meta-selftest/conf/layer.conf
+++ b/meta-selftest/conf/layer.conf
@@ -9,4 +9,4 @@ BBFILE_COLLECTIONS += "selftest"
BBFILE_PATTERN_selftest = "^${LAYERDIR}/"
BBFILE_PRIORITY_selftest = "5"
-LAYERSERIES_COMPAT_selftest = "sumo"
+LAYERSERIES_COMPAT_selftest = "thud"
diff --git a/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py b/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py
index 81c50ed97b7..64a35023703 100644
--- a/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py
+++ b/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py
@@ -1,6 +1,7 @@
from oeqa.core.decorator.depends import OETestDepends
from oeqa.runtime.cases.dnf import DnfTest
from oeqa.utils.httpserver import HTTPService
+from oeqa.core.decorator.data import skipIfDataVar
class DnfSelftest(DnfTest):
@@ -18,13 +19,15 @@ class DnfSelftest(DnfTest):
cls.temp_dir.cleanup()
@OETestDepends(['dnf.DnfBasicTest.test_dnf_help'])
+ @skipIfDataVar('PACKAGE_FEED_URIS', None,
+ 'Not suitable as PACKAGE_FEED_URIS is not set')
def test_verify_package_feeds(self):
"""
Summary: Check correct setting of PACKAGE_FEED_URIS var
Expected: 1. Feeds were correctly set for dnf
2. Update recovers packages from host's repo
Author: Humberto Ibarra <humberto.ibarra.lopez@intel.com>
- Author: Alexander Kanavin <alexander.kanavin@intel.com>
+ Author: Alexander Kanavin <alex.kanavin@gmail.com>
"""
# When we created an image, we had to supply fake ip and port
# for the feeds. Now we can patch the real ones into the config file.
diff --git a/meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb b/meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb
index 073cf5665c9..922518bc396 100644
--- a/meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb
+++ b/meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb
@@ -28,5 +28,8 @@ FILES_${PN} = "${bindir}/aspell"
FILES_libpspell = "${libdir}/libpspell.so.*"
FILES_libpspell-dev = "${libdir}/libpspell* ${bindir}/pspell-config ${includedir}/pspell"
-ARM_INSTRUCTION_SET = "arm"
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
+ARM_INSTRUCTION_SET_armv6 = "arm"
+
inherit autotools gettext
diff --git a/meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink.bb b/meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink.bb
new file mode 100644
index 00000000000..842a9772cbe
--- /dev/null
+++ b/meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink.bb
@@ -0,0 +1,30 @@
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+LICENSE = "MIT"
+
+SRC_URI = "file://hello.c \
+ file://gdb.sh \
+"
+
+S = "${WORKDIR}"
+
+do_compile () {
+ ${CC} hello.c -o hello1 ${CFLAGS} ${LDFLAGS}
+}
+
+do_install () {
+ install -d ${D}${bindir}
+ install -m 755 ${WORKDIR}/gdb.sh ${D}${bindir}/
+ install -m 755 hello1 ${D}${bindir}/hello1
+ ln ${D}${bindir}/hello1 ${D}${bindir}/hello2
+
+ install -d ${D}${libexecdir}
+ ln ${D}${bindir}/hello1 ${D}${libexecdir}/hello3
+ ln ${D}${bindir}/hello1 ${D}${libexecdir}/hello4
+
+ dd if=/dev/zero of=${D}${bindir}/sparsetest bs=1 count=0 seek=1M
+}
+
+RDEPENDS_${PN}-gdb += "gdb"
+PACKAGES =+ "${PN}-gdb"
+FILES_${PN}-gdb = "${bindir}/gdb.sh"
diff --git a/meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink/gdb.sh b/meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink/gdb.sh
new file mode 100755
index 00000000000..f6417d54583
--- /dev/null
+++ b/meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink/gdb.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+gdb -q $1 <<'EOF'
+b main
+r
+c
+q
+EOF
+echo ""
diff --git a/meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink/hello.c b/meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink/hello.c
new file mode 100644
index 00000000000..5c45dc60bd2
--- /dev/null
+++ b/meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink/hello.c
@@ -0,0 +1,5 @@
+#include <stdio.h>
+
+int main() {
+ printf("Hello World!\n");
+} \ No newline at end of file
diff --git a/meta-skeleton/conf/layer.conf b/meta-skeleton/conf/layer.conf
index 4e8692e3e2e..13bda7b5706 100644
--- a/meta-skeleton/conf/layer.conf
+++ b/meta-skeleton/conf/layer.conf
@@ -14,4 +14,4 @@ LAYERVERSION_skeleton = "1"
LAYERDEPENDS_skeleton = "core"
-LAYERSERIES_COMPAT_skeleton = "sumo"
+LAYERSERIES_COMPAT_skeleton = "thud"
diff --git a/meta-yocto-bsp/conf/layer.conf b/meta-yocto-bsp/conf/layer.conf
index 6472238e635..53e8722e813 100644
--- a/meta-yocto-bsp/conf/layer.conf
+++ b/meta-yocto-bsp/conf/layer.conf
@@ -9,4 +9,4 @@ BBFILE_COLLECTIONS += "yoctobsp"
BBFILE_PATTERN_yoctobsp = "^${LAYERDIR}/"
BBFILE_PRIORITY_yoctobsp = "5"
LAYERVERSION_yoctobsp = "4"
-LAYERSERIES_COMPAT_yoctobsp = "sumo"
+LAYERSERIES_COMPAT_yoctobsp = "thud"
diff --git a/meta-yocto-bsp/conf/machine/beaglebone-yocto.conf b/meta-yocto-bsp/conf/machine/beaglebone-yocto.conf
index ae682a47d31..e911e750049 100644
--- a/meta-yocto-bsp/conf/machine/beaglebone-yocto.conf
+++ b/meta-yocto-bsp/conf/machine/beaglebone-yocto.conf
@@ -20,10 +20,10 @@ WKS_FILE ?= "beaglebone-yocto.wks"
IMAGE_INSTALL_append = " kernel-devicetree kernel-image-zimage"
do_image_wic[depends] += "mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot"
-SERIAL_CONSOLE = "115200 ttyO0"
+SERIAL_CONSOLES = "115200;ttyO0"
PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
-PREFERRED_VERSION_linux-yocto ?= "4.15%"
+PREFERRED_VERSION_linux-yocto ?= "4.18%"
KERNEL_IMAGETYPE = "zImage"
KERNEL_DEVICETREE = "am335x-bone.dtb am335x-boneblack.dtb am335x-bonegreen.dtb"
@@ -37,4 +37,4 @@ UBOOT_LOADADDRESS = "0x80008000"
MACHINE_FEATURES = "usbgadget usbhost vfat alsa"
-IMAGE_BOOT_FILES ?= "u-boot.${UBOOT_SUFFIX} MLO"
+IMAGE_BOOT_FILES ?= "u-boot.${UBOOT_SUFFIX} MLO zImage am335x-bone.dtb am335x-boneblack.dtb am335x-bonegreen.dtb"
diff --git a/meta-yocto-bsp/conf/machine/edgerouter.conf b/meta-yocto-bsp/conf/machine/edgerouter.conf
index 61f2145fd59..b7a94e9cbbe 100644
--- a/meta-yocto-bsp/conf/machine/edgerouter.conf
+++ b/meta-yocto-bsp/conf/machine/edgerouter.conf
@@ -11,9 +11,9 @@ KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
KERNEL_IMAGE_STRIP_EXTRA_SECTIONS = ".comment"
PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
-PREFERRED_VERSION_linux-yocto ?= "4.15%"
+PREFERRED_VERSION_linux-yocto ?= "4.18%"
-SERIAL_CONSOLE = "115200 ttyS0"
+SERIAL_CONSOLES = "115200;ttyS0"
USE_VT ?= "0"
MACHINE_EXTRA_RRECOMMENDS = "kernel-modules"
diff --git a/meta-yocto-bsp/conf/machine/include/genericx86-common.inc b/meta-yocto-bsp/conf/machine/include/genericx86-common.inc
index e35685cb22b..f83ce5c5940 100644
--- a/meta-yocto-bsp/conf/machine/include/genericx86-common.inc
+++ b/meta-yocto-bsp/conf/machine/include/genericx86-common.inc
@@ -13,7 +13,7 @@ XSERVER ?= "${XSERVER_X86_BASE} \
${XSERVER_X86_MODESETTING} \
"
-MACHINE_EXTRA_RRECOMMENDS += "linux-firmware eee-acpi-scripts"
+MACHINE_EXTRA_RRECOMMENDS += "kernel-modules linux-firmware"
GLIBC_ADDONS = "nptl"
diff --git a/meta-yocto-bsp/conf/machine/mpc8315e-rdb.conf b/meta-yocto-bsp/conf/machine/mpc8315e-rdb.conf
index 34f12303a11..6f5b9859d72 100644
--- a/meta-yocto-bsp/conf/machine/mpc8315e-rdb.conf
+++ b/meta-yocto-bsp/conf/machine/mpc8315e-rdb.conf
@@ -1,5 +1,5 @@
#@TYPE: Machine
-#@DESCRIPTION: Machine configuration for running
+#@DESCRIPTION: Machine configuration for running
TARGET_FPU = ""
@@ -10,12 +10,12 @@ KERNEL_IMAGETYPE = "uImage"
EXTRA_IMAGEDEPENDS += "u-boot"
UBOOT_MACHINE = "MPC8315ERDB_config"
-SERIAL_CONSOLE = "115200 ttyS0"
+SERIAL_CONSOLES = "115200;ttyS0"
MACHINE_FEATURES = "keyboard pci ext2 ext3 serial"
-PREFERRED_VERSION_linux-yocto ?= "4.15%"
-PREFERRED_PROVIDER_virtual/kernel = "linux-yocto"
+PREFERRED_VERSION_linux-yocto ?= "4.18%"
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
XSERVER ?= "xserver-xorg \
@@ -32,4 +32,4 @@ JFFS2_ERASEBLOCK = "0x4000"
IMAGE_FSTYPES += "wic wic.bmap"
WKS_FILE ?= 'mpc8315e-rdb.wks'
-IMAGE_BOOT_FILES ?= "u-boot.bin uImage uImage-mpc8315erdb.dtb;dtb"
+IMAGE_BOOT_FILES ?= "u-boot.bin uImage mpc8315erdb.dtb;dtb"
diff --git a/meta-yocto-bsp/lib/oeqa/selftest/cases/systemd_boot.py b/meta-yocto-bsp/lib/oeqa/selftest/cases/systemd_boot.py
index dd5eeec1633..dfd739ae77f 100644
--- a/meta-yocto-bsp/lib/oeqa/selftest/cases/systemd_boot.py
+++ b/meta-yocto-bsp/lib/oeqa/selftest/cases/systemd_boot.py
@@ -6,26 +6,9 @@ from oeqa.core.decorator.depends import OETestDepends
from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
class Systemdboot(OESelftestTestCase):
- def _common_setup(self):
- """
- Common setup for test cases: 1445, 1528
- """
-
- # Set EFI_PROVIDER = "systemdboot" and MACHINE = "genericx86-64" in conf/local.conf
- features = 'EFI_PROVIDER = "systemd-boot"\n'
- features += 'MACHINE = "genericx86-64"'
- self.append_config(features)
-
- def _common_build(self):
- """
- Common build for test cases: 1445 , 1528
- """
-
- # Build a genericx86-64/efi systemdboot image
- bitbake('mtools-native core-image-minimal')
-
@OETestID(1445)
+ @OETestID(1528)
def test_efi_systemdboot_images_can_be_built(self):
"""
Summary: Check if systemd-boot images can be built correctly
@@ -36,26 +19,25 @@ class Systemdboot(OESelftestTestCase):
AutomatedBy: Jose Perez Carranza <jose.perez.carranza@intel.com>
"""
- # We'd use DEPLOY_DIR_IMAGE here, except that we need its value for
- # MACHINE="genericx86-64 which is probably not the one configured
- systemdbootfile = os.path.join(get_bb_var('DEPLOY_DIR'), 'images', 'genericx86-64', 'systemd-bootx64.efi')
+ # Set EFI_PROVIDER = "systemdboot" and MACHINE = "genericx86-64" in conf/local.conf
+ features = 'EFI_PROVIDER = "systemd-boot"\n'
+ features += 'MACHINE = "genericx86-64"'
+ self.append_config(features)
- self._common_setup()
+ deploydir = get_bb_var('DEPLOY_DIR_IMAGE', "core-image-minimal")
+ systemdbootfile = os.path.join(deploydir, 'systemd-bootx64.efi')
# Ensure we're actually testing that this gets built and not that
# it was around from an earlier build
- bitbake('-c cleansstate systemd-boot')
+ bitbake('-c clean systemd-boot')
runCmd('rm -f %s' % systemdbootfile)
- self._common_build()
+ # Build a genericx86-64/efi systemdboot image
+ bitbake('mtools-native core-image-minimal')
found = os.path.isfile(systemdbootfile)
self.assertTrue(found, 'Systemd-Boot file %s not found' % systemdbootfile)
- @OETestID(1528)
- @OETestDepends(['systemd_boot.Systemdboot.test_efi_systemdboot_images_can_be_built'])
- def test_image_efi_file(self):
-
"""
Summary: Check if EFI bootloader for systemd is correctly build
Dependencies: Image was built correctly on testcase 1445
@@ -71,28 +53,21 @@ class Systemdboot(OESelftestTestCase):
AutomatedBy: Jose Perez Carranza <jose.perez.carranza at linux-intel.com>
"""
- systemdbootfile = os.path.join(get_bb_var('DEPLOY_DIR'), 'images', 'genericx86-64',
- 'systemd-bootx64.efi')
- systemdbootimage = os.path.join(get_bb_var('DEPLOY_DIR'), 'images', 'genericx86-64',
- 'core-image-minimal-genericx86-64.hddimg')
- imagebootfile = os.path.join(get_bb_var('DEPLOY_DIR'), 'images', 'genericx86-64',
- 'bootx64.efi')
- mcopynative = os.path.join(get_bb_var('STAGING_BINDIR_NATIVE'), 'mcopy')
+ systemdbootimage = os.path.join(deploydir, 'core-image-minimal-genericx86-64.hddimg')
+ imagebootfile = os.path.join(deploydir, 'bootx64.efi')
+ mcopynative = os.path.join(get_bb_var('STAGING_BINDIR_NATIVE', "core-image-minimal"), 'mcopy')
- #Clean environment before start the test
+ # Clean environment before start the test
if os.path.isfile(imagebootfile):
runCmd('rm -f %s' % imagebootfile)
- #Step 1
- runCmd('%s -i %s ::EFI/BOOT/bootx64.efi %s' % (mcopynative ,systemdbootimage,
+ runCmd('%s -i %s ::EFI/BOOT/bootx64.efi %s' % (mcopynative ,systemdbootimage,
imagebootfile))
- #Step 2
- found = os.path.isfile(imagebootfile)
- self.assertTrue(found, 'bootx64.efi file %s was not copied from image'
+ found = os.path.isfile(imagebootfile)
+ self.assertTrue(found, 'bootx64.efi file %s was not copied from image'
% imagebootfile)
- #Step 3
- result = runCmd('md5sum %s %s' % (systemdbootfile, imagebootfile))
- self.assertEqual(result.output.split()[0], result.output.split()[2],
+ result = runCmd('md5sum %s %s' % (systemdbootfile, imagebootfile))
+ self.assertEqual(result.output.split()[0], result.output.split()[2],
'%s was not correclty generated' % imagebootfile)
diff --git a/meta-yocto-bsp/recipes-kernel/linux/linux-yocto-dev.bbappend b/meta-yocto-bsp/recipes-kernel/linux/linux-yocto-dev.bbappend
new file mode 100644
index 00000000000..f044dafb4d3
--- /dev/null
+++ b/meta-yocto-bsp/recipes-kernel/linux/linux-yocto-dev.bbappend
@@ -0,0 +1,15 @@
+KBRANCH_genericx86 = "standard/base"
+KBRANCH_genericx86-64 = "standard/base"
+KBRANCH_edgerouter = "standard/edgerouter"
+KBRANCH_beaglebone-yocto = "standard/beaglebone"
+KBRANCH_mpc8315e-rdb = "standard/fsl-mpc8315e-rdb"
+
+KMACHINE_genericx86 ?= "common-pc"
+KMACHINE_genericx86-64 ?= "common-pc-64"
+KMACHINE_beaglebone-yocto ?= "beaglebone"
+
+COMPATIBLE_MACHINE_genericx86 = "genericx86"
+COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64"
+COMPATIBLE_MACHINE_edgerouter = "edgerouter"
+COMPATIBLE_MACHINE_beaglebone-yocto = "beaglebone-yocto"
+COMPATIBLE_MACHINE_mpc8315e-rdb = "mpc8315e-rdb"
diff --git a/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.12.bbappend b/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.12.bbappend
deleted file mode 100644
index e28360b69cb..00000000000
--- a/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.12.bbappend
+++ /dev/null
@@ -1,28 +0,0 @@
-KBRANCH_genericx86 = "standard/base"
-KBRANCH_genericx86-64 = "standard/base"
-
-KMACHINE_genericx86 ?= "common-pc"
-KMACHINE_genericx86-64 ?= "common-pc-64"
-KBRANCH_edgerouter = "standard/edgerouter"
-KBRANCH_beaglebone-yocto = "standard/beaglebone"
-KMACHINE_beaglebone-yocto = "beaglebone"
-KBRANCH_mpc8315e-rdb = "standard/fsl-mpc8315e-rdb"
-
-SRCREV_machine_genericx86 ?= "97e710ef0545c19d3c10bd81a61bdca9fe543b81"
-SRCREV_machine_genericx86-64 ?= "97e710ef0545c19d3c10bd81a61bdca9fe543b81"
-SRCREV_machine_edgerouter ?= "97e710ef0545c19d3c10bd81a61bdca9fe543b81"
-SRCREV_machine_beaglebone-yocto ?= "97e710ef0545c19d3c10bd81a61bdca9fe543b81"
-SRCREV_machine_mpc8315e-rdb ?= "55fcfbee2560f57a490c5724ac5b5cb49bacb01c"
-
-
-COMPATIBLE_MACHINE_genericx86 = "genericx86"
-COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64"
-COMPATIBLE_MACHINE_edgerouter = "edgerouter"
-COMPATIBLE_MACHINE_beaglebone-yocto = "beaglebone-yocto"
-COMPATIBLE_MACHINE_mpc8315e-rdb = "mpc8315e-rdb"
-
-LINUX_VERSION_genericx86 = "4.12.21"
-LINUX_VERSION_genericx86-64 = "4.12.21"
-LINUX_VERSION_edgerouter = "4.12.21"
-LINUX_VERSION_beaglebone-yocto = "4.12.21"
-LINUX_VERSION_mpc8315e-rdb = "4.12.21"
diff --git a/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.14.bbappend b/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.14.bbappend
index 5130707dd7d..dbfb7b09776 100644
--- a/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.14.bbappend
+++ b/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.14.bbappend
@@ -8,11 +8,11 @@ KMACHINE_genericx86 ?= "common-pc"
KMACHINE_genericx86-64 ?= "common-pc-64"
KMACHINE_beaglebone-yocto ?= "beaglebone"
-SRCREV_machine_genericx86 ?= "1d50ce210b0536eb9a66d1e56ae215f92176444a"
-SRCREV_machine_genericx86-64 ?= "1d50ce210b0536eb9a66d1e56ae215f92176444a"
-SRCREV_machine_edgerouter ?= "f2dc94f77d19ab65a832bad6f42662c509d2ef9e"
-SRCREV_machine_beaglebone-yocto ?= "6c1a02d4a9c227eca356911715a52cf92457ec16"
-SRCREV_machine_mpc8315e-rdb ?= "7e9a0b017be7b685e094638f4bdaa33a7df8f7c0"
+SRCREV_machine_genericx86 ?= "78a16a4d8cfd58f91be412797aac248e811d083b"
+SRCREV_machine_genericx86-64 ?= "78a16a4d8cfd58f91be412797aac248e811d083b"
+SRCREV_machine_edgerouter ?= "e06bfa18c727bd0e6e10cf26d9f161e4c791f52b"
+SRCREV_machine_beaglebone-yocto ?= "b8805de77dcf8f59d8368fee4921c146c1300a6a"
+SRCREV_machine_mpc8315e-rdb ?= "f88e87360b10f8fbd853a7d412982e6620f3f96d"
COMPATIBLE_MACHINE_genericx86 = "genericx86"
COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64"
@@ -20,8 +20,8 @@ COMPATIBLE_MACHINE_edgerouter = "edgerouter"
COMPATIBLE_MACHINE_beaglebone-yocto = "beaglebone-yocto"
COMPATIBLE_MACHINE_mpc8315e-rdb = "mpc8315e-rdb"
-LINUX_VERSION_genericx86 = "4.14.30"
-LINUX_VERSION_genericx86-64 = "4.14.30"
-LINUX_VERSION_edgerouter = "4.14.30"
-LINUX_VERSION_beaglebone-yocto = "4.14.30"
-LINUX_VERSION_mpc8315e-rdb = "4.14.30"
+LINUX_VERSION_genericx86 = "4.14.71"
+LINUX_VERSION_genericx86-64 = "4.14.71"
+LINUX_VERSION_edgerouter = "4.14.71"
+LINUX_VERSION_beaglebone-yocto = "4.14.71"
+LINUX_VERSION_mpc8315e-rdb = "4.14.71"
diff --git a/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.15.bbappend b/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.15.bbappend
deleted file mode 100644
index c0c6ad92dab..00000000000
--- a/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.15.bbappend
+++ /dev/null
@@ -1,27 +0,0 @@
-KBRANCH_genericx86 = "v4.15/standard/base"
-KBRANCH_genericx86-64 = "v4.15/standard/base"
-KBRANCH_edgerouter = "v4.15/standard/edgerouter"
-KBRANCH_beaglebone-yocto = "v4.15/standard/beaglebone"
-KBRANCH_mpc8315e-rdb = "v4.15/standard/fsl-mpc8315e-rdb"
-
-KMACHINE_genericx86 ?= "common-pc"
-KMACHINE_genericx86-64 ?= "common-pc-64"
-KMACHINE_beaglebone-yocto ?= "beaglebone"
-
-SRCREV_machine_genericx86 ?= "f73fd8783a3e7529902366ba75aafb81c19ec3c9"
-SRCREV_machine_genericx86-64 ?= "f73fd8783a3e7529902366ba75aafb81c19ec3c9"
-SRCREV_machine_edgerouter ?= "f73fd8783a3e7529902366ba75aafb81c19ec3c9"
-SRCREV_machine_beaglebone-yocto ?= "f73fd8783a3e7529902366ba75aafb81c19ec3c9"
-SRCREV_machine_mpc8315e-rdb ?= "cc2711c4f3b83b5cd78358e7c949fdbb6076e25b"
-
-COMPATIBLE_MACHINE_genericx86 = "genericx86"
-COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64"
-COMPATIBLE_MACHINE_edgerouter = "edgerouter"
-COMPATIBLE_MACHINE_beaglebone-yocto = "beaglebone-yocto"
-COMPATIBLE_MACHINE_mpc8315e-rdb = "mpc8315e-rdb"
-
-LINUX_VERSION_genericx86 = "4.15.13"
-LINUX_VERSION_genericx86-64 = "4.15.13"
-LINUX_VERSION_edgerouter = "4.15.13"
-LINUX_VERSION_beaglebone-yocto = "4.15.13"
-LINUX_VERSION_mpc8315e-rdb = "4.15.13"
diff --git a/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.18.bbappend b/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.18.bbappend
new file mode 100644
index 00000000000..9910c051865
--- /dev/null
+++ b/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.18.bbappend
@@ -0,0 +1,27 @@
+KBRANCH_genericx86 = "v4.18/standard/base"
+KBRANCH_genericx86-64 = "v4.18/standard/base"
+KBRANCH_edgerouter = "v4.18/standard/edgerouter"
+KBRANCH_beaglebone-yocto = "v4.18/standard/beaglebone"
+KBRANCH_mpc8315e-rdb = "v4.18/standard/fsl-mpc8315e-rdb"
+
+KMACHINE_genericx86 ?= "common-pc"
+KMACHINE_genericx86-64 ?= "common-pc-64"
+KMACHINE_beaglebone-yocto ?= "beaglebone"
+
+SRCREV_machine_genericx86 ?= "0cdc8564c61958a39704d97e008120bd7c762f60"
+SRCREV_machine_genericx86-64 ?= "0cdc8564c61958a39704d97e008120bd7c762f60"
+SRCREV_machine_edgerouter ?= "0cdc8564c61958a39704d97e008120bd7c762f60"
+SRCREV_machine_beaglebone-yocto ?= "0cdc8564c61958a39704d97e008120bd7c762f60"
+SRCREV_machine_mpc8315e-rdb ?= "20be2231bb047b02248d7f965c1c3af0c6be3a5e"
+
+COMPATIBLE_MACHINE_genericx86 = "genericx86"
+COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64"
+COMPATIBLE_MACHINE_edgerouter = "edgerouter"
+COMPATIBLE_MACHINE_beaglebone-yocto = "beaglebone-yocto"
+COMPATIBLE_MACHINE_mpc8315e-rdb = "mpc8315e-rdb"
+
+LINUX_VERSION_genericx86 = "4.18.9"
+LINUX_VERSION_genericx86-64 = "4.18.9"
+LINUX_VERSION_edgerouter = "4.18.9"
+LINUX_VERSION_beaglebone-yocto = "4.18.9"
+LINUX_VERSION_mpc8315e-rdb = "4.18.9"
diff --git a/meta-yocto-bsp/wic/beaglebone-yocto.wks b/meta-yocto-bsp/wic/beaglebone-yocto.wks
index 967cad78b87..b75f238df93 100644
--- a/meta-yocto-bsp/wic/beaglebone-yocto.wks
+++ b/meta-yocto-bsp/wic/beaglebone-yocto.wks
@@ -2,5 +2,5 @@
# long-description: Creates a partitioned SD card image for Beaglebone.
# Boot files are located in the first vfat partition.
-part /boot --source bootimg-partition --ondisk mmcblk0 --fstype=vfat --label boot --active --align 4 --size 16
-part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4
+part /boot --source bootimg-partition --ondisk mmcblk0 --fstype=vfat --label boot --active --align 4 --size 16 --sourceparams="loader=u-boot" --use-uuid
+part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4 --use-uuid
diff --git a/meta/classes/allarch.bbclass b/meta/classes/allarch.bbclass
index 51ba509cd0a..5bd5c44a276 100644
--- a/meta/classes/allarch.bbclass
+++ b/meta/classes/allarch.bbclass
@@ -2,7 +2,18 @@
# This class is used for architecture independent recipes/data files (usually scripts)
#
-PACKAGE_ARCH = "all"
+python allarch_package_arch_handler () {
+ if bb.data.inherits_class("native", d) or bb.data.inherits_class("nativesdk", d) \
+ or bb.data.inherits_class("crosssdk", d):
+ return
+
+ variants = d.getVar("MULTILIB_VARIANTS")
+ if not variants:
+ d.setVar("PACKAGE_ARCH", "all" )
+}
+
+addhandler allarch_package_arch_handler
+allarch_package_arch_handler[eventmask] = "bb.event.RecipePreFinalise"
python () {
# Allow this class to be included but overridden - only set
@@ -45,6 +56,7 @@ python () {
# These multilib values shouldn't change allarch packages so exclude them
d.appendVarFlag("emit_pkgdata", "vardepsexclude", " MULTILIB_VARIANTS")
d.appendVarFlag("write_specfile", "vardepsexclude", " MULTILIBS")
+ d.appendVarFlag("do_package", "vardepsexclude", " package_do_shlibs")
elif bb.data.inherits_class('packagegroup', d) and not bb.data.inherits_class('nativesdk', d):
bb.error("Please ensure recipe %s sets PACKAGE_ARCH before inherit packagegroup" % d.getVar("FILE"))
}
diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass
index 31c9b7eb4b6..a54cf948f3e 100644
--- a/meta/classes/archiver.bbclass
+++ b/meta/classes/archiver.bbclass
@@ -98,9 +98,12 @@ python () {
# There is a corner case with "gcc-source-${PV}" recipes, they don't have
# the "do_configure" task, so we need to use "do_preconfigure"
- if pn.startswith("gcc-source-"):
+ def hasTask(task):
+ return bool(d.getVarFlag(task, "task", False)) and not bool(d.getVarFlag(task, "noexec", False))
+
+ if hasTask("do_preconfigure"):
d.appendVarFlag('do_ar_configured', 'depends', ' %s:do_preconfigure' % pn)
- else:
+ 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)
@@ -243,21 +246,27 @@ python do_ar_configured() {
# do_configure, we archive the already configured ${S} to
# instead of.
elif pn != 'libtool-native':
+ def runTask(task):
+ bb.warn("running %s" % task)
+ prefuncs = d.getVarFlag(task, 'prefuncs') or ''
+ for func in prefuncs.split():
+ if func != "sysroot_cleansstate":
+ bb.build.exec_func(func, d)
+ bb.build.exec_func(task, d)
+ postfuncs = d.getVarFlag(task, 'postfuncs') or ''
+ for func in postfuncs.split():
+ if func != 'do_qa_configure':
+ bb.build.exec_func(func, d)
+
# Change the WORKDIR to make do_configure run in another dir.
d.setVar('WORKDIR', d.getVar('ARCHIVER_WORKDIR'))
- if bb.data.inherits_class('kernel-yocto', d):
- bb.build.exec_func('do_kernel_configme', d)
- if bb.data.inherits_class('cmake', d):
- bb.build.exec_func('do_generate_toolchain_file', d)
- prefuncs = d.getVarFlag('do_configure', 'prefuncs')
- for func in (prefuncs or '').split():
- if func != "sysroot_cleansstate":
- bb.build.exec_func(func, d)
- bb.build.exec_func('do_configure', d)
- postfuncs = d.getVarFlag('do_configure', 'postfuncs')
- for func in (postfuncs or '').split():
- if func != "do_qa_configure":
- bb.build.exec_func(func, d)
+
+ preceeds = bb.build.preceedtask('do_configure', False, d)
+ for task in preceeds:
+ if task != 'do_patch' and task != 'do_prepare_recipe_sysroot':
+ runTask(task)
+ runTask('do_configure')
+
srcdir = d.getVar('S')
builddir = d.getVar('B')
if srcdir != builddir:
diff --git a/meta/classes/autotools.bbclass b/meta/classes/autotools.bbclass
index cc857acc3e6..8768a6ad687 100644
--- a/meta/classes/autotools.bbclass
+++ b/meta/classes/autotools.bbclass
@@ -225,7 +225,7 @@ autotools_do_configure() {
find ${S} -ignore_readdir_race -name $i -delete
done
- bbnote Executing ACLOCAL=\"$ACLOCAL\" autoreconf --verbose --install --force ${EXTRA_AUTORECONF} $acpaths
+ 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."
cd $olddir
fi
@@ -237,7 +237,7 @@ autotools_do_configure() {
}
autotools_do_compile() {
- oe_runmake
+ oe_runmake
}
autotools_do_install() {
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index bb1f4b75336..df11c8b270e 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -100,8 +100,8 @@ def get_lic_checksum_file_list(d):
# We only care about items that are absolute paths since
# any others should be covered by SRC_URI.
try:
- path = bb.fetch.decodeurl(url)[2]
- if not path:
+ (method, host, path, user, pswd, parm) = bb.fetch.decodeurl(url)
+ if method != "file" or not path:
raise bb.fetch.MalformedUrl(url)
if path[0] == '/':
@@ -152,7 +152,7 @@ python base_do_fetch() {
addtask unpack after do_fetch
do_unpack[dirs] = "${WORKDIR}"
-do_unpack[cleandirs] = "${@d.getVar('S') if d.getVar('S') != d.getVar('WORKDIR') else os.path.join('${S}', 'patches')}"
+do_unpack[cleandirs] = "${@d.getVar('S') if os.path.normpath(d.getVar('S')) != os.path.normpath(d.getVar('WORKDIR')) else os.path.join('${S}', 'patches')}"
python base_do_unpack() {
src_uri = (d.getVar('SRC_URI') or "").split()
@@ -520,19 +520,18 @@ python () {
incompatwl = []
for lic in bad_licenses:
spdx_license = return_spdx(d, lic)
- for w in ["LGPLv2_WHITELIST_", "WHITELIST_"]:
- whitelist.extend((d.getVar(w + lic) or "").split())
- if spdx_license:
- whitelist.extend((d.getVar(w + 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(w + lic) or "").split())
- if spdx_license:
- incompatwl.extend((d.getVar(w + spdx_license) or "").split())
+ 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()
@@ -622,7 +621,7 @@ python () {
elif path.endswith('.zip') or path.endswith('.jar'):
d.appendVarFlag('do_unpack', 'depends', ' unzip-native:do_populate_sysroot')
- # file is needed by rpm2cpio.sh
+ # Some rpm files may be compressed internally using xz (for example, rpms from Fedora)
elif path.endswith('.rpm'):
d.appendVarFlag('do_unpack', 'depends', ' xz-native:do_populate_sysroot')
diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass
index 63980f72a52..40b292b139f 100644
--- a/meta/classes/buildhistory.bbclass
+++ b/meta/classes/buildhistory.bbclass
@@ -77,6 +77,7 @@ python buildhistory_emit_pkghistory() {
import re
import json
+ import shlex
import errno
pkghistdir = d.getVar('BUILDHISTORY_DIR_PACKAGE')
@@ -244,7 +245,7 @@ python buildhistory_emit_pkghistory() {
key = item[0]
if key.endswith('_' + pkg):
key = key[:-len(pkg)-1]
- pkgdata[key] = item[1]
+ pkgdata[key] = item[1].encode('latin-1').decode('unicode_escape')
pkge = pkgdata.get('PKGE', '0')
pkgv = pkgdata['PKGV']
@@ -287,7 +288,7 @@ python buildhistory_emit_pkghistory() {
dictval = json.loads(val)
filelist = list(dictval.keys())
filelist.sort()
- pkginfo.filelist = " ".join(filelist)
+ pkginfo.filelist = " ".join([shlex.quote(x) for x in filelist])
pkginfo.size = int(pkgdata['PKGSIZE'])
diff --git a/meta/classes/clutter.bbclass b/meta/classes/clutter.bbclass
index 167407dfdcf..8550363bdfd 100644
--- a/meta/classes/clutter.bbclass
+++ b/meta/classes/clutter.bbclass
@@ -1,4 +1,3 @@
-
def get_minor_dir(v):
import re
m = re.match("^([0-9]+)\.([0-9]+)", v)
@@ -12,11 +11,7 @@ def get_real_name(n):
VERMINOR = "${@get_minor_dir("${PV}")}"
REALNAME = "${@get_real_name("${BPN}")}"
-CLUTTER_SRC_FTP = "${GNOME_MIRROR}/${REALNAME}/${VERMINOR}/${REALNAME}-${PV}.tar.xz;name=archive"
-
-CLUTTER_SRC_GIT = "git://git.gnome.org/${REALNAME}"
-
-SRC_URI = "${CLUTTER_SRC_FTP}"
+SRC_URI = "${GNOME_MIRROR}/${REALNAME}/${VERMINOR}/${REALNAME}-${PV}.tar.xz;name=archive"
S = "${WORKDIR}/${REALNAME}-${PV}"
inherit autotools pkgconfig gtk-doc gettext
diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass
index fcfd5dda4f5..fd40a9863ea 100644
--- a/meta/classes/cmake.bbclass
+++ b/meta/classes/cmake.bbclass
@@ -54,8 +54,6 @@ EXTRA_OECMAKE_BUILD_prepend_task-install = "${PARALLEL_MAKEINST} "
OECMAKE_TARGET_COMPILE ?= "all"
OECMAKE_TARGET_INSTALL ?= "install"
-FILES_${PN}-dev += "${libdir}/cmake ${datadir}/cmake"
-
# 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.
diff --git a/meta/classes/compress_doc.bbclass b/meta/classes/compress_doc.bbclass
index 069d53492e7..45bb8fff651 100644
--- a/meta/classes/compress_doc.bbclass
+++ b/meta/classes/compress_doc.bbclass
@@ -79,6 +79,7 @@ def _collect_hardlink(hardlink_dict, file):
return hardlink_dict
def _process_hardlink(hardlink_dict, compress_mode, shell_cmds, decompress=False):
+ import subprocess
for target in hardlink_dict:
if decompress:
compress_format = _get_compress_format(target, shell_cmds.keys())
@@ -87,7 +88,7 @@ def _process_hardlink(hardlink_dict, compress_mode, shell_cmds, decompress=False
else:
cmd = "%s -f %s" % (shell_cmds[compress_mode], target)
bb.note('compress hardlink %s' % target)
- (retval, output) = oe.utils.getstatusoutput(cmd)
+ (retval, output) = subprocess.getstatusoutput(cmd)
if retval:
bb.warn("de/compress file failed %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
return
@@ -176,7 +177,7 @@ def compress_doc(topdir, compress_mode, compress_cmds):
# Normal file
elif os.path.isfile(file):
cmd = "%s %s" % (compress_cmds[compress_mode], file)
- (retval, output) = oe.utils.getstatusoutput(cmd)
+ (retval, output) = subprocess.getstatusoutput(cmd)
if retval:
bb.warn("compress failed %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
continue
@@ -206,7 +207,7 @@ def decompress_doc(topdir, compress_mode, decompress_cmds):
# Normal file
elif os.path.isfile(file):
cmd = "%s %s" % (decompress_cmds[compress_format], file)
- (retval, output) = oe.utils.getstatusoutput(cmd)
+ (retval, output) = subprocess.getstatusoutput(cmd)
if retval:
bb.warn("decompress failed %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
continue
diff --git a/meta/classes/cpan.bbclass b/meta/classes/cpan.bbclass
index 8e079e0d55e..a5bc301898d 100644
--- a/meta/classes/cpan.bbclass
+++ b/meta/classes/cpan.bbclass
@@ -16,8 +16,7 @@ export PERL_ARCHLIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version
export PERLHOSTLIB = "${STAGING_LIBDIR_NATIVE}/perl-native/perl/${@get_perl_version(d)}/"
cpan_do_configure () {
- export PERL5LIB="${PERL_ARCHLIB}"
- yes '' | perl ${EXTRA_PERLFLAGS} Makefile.PL INSTALLDIRS=vendor ${EXTRA_CPANFLAGS}
+ yes '' | perl ${EXTRA_PERLFLAGS} Makefile.PL INSTALLDIRS=vendor NO_PERLLOCAL=1 NO_PACKLIST=1 ${EXTRA_CPANFLAGS}
# Makefile.PLs can exit with success without generating a
# Makefile, e.g. in cases of missing configure time
@@ -41,6 +40,16 @@ cpan_do_configure () {
fi
}
+do_configure_append_class-target() {
+ find . -name Makefile | xargs sed -E -i \
+ -e 's:LD_RUN_PATH ?= ?"?[^"]*"?::g'
+}
+
+do_configure_append_class-nativesdk() {
+ find . -name Makefile | xargs sed -E -i \
+ -e 's:LD_RUN_PATH ?= ?"?[^"]*"?::g'
+}
+
cpan_do_compile () {
oe_runmake PASTHRU_INC="${CFLAGS}" LD="${CCLD}"
}
diff --git a/meta/classes/cpan_build.bbclass b/meta/classes/cpan_build.bbclass
index fac074d6101..9a2ad895ef4 100644
--- a/meta/classes/cpan_build.bbclass
+++ b/meta/classes/cpan_build.bbclass
@@ -30,7 +30,7 @@ cpan_build_do_configure () {
}
cpan_build_do_compile () {
- perl Build verbose=1
+ perl Build --perl "${bindir}/perl" verbose=1
}
cpan_build_do_install () {
diff --git a/meta/classes/cross-canadian.bbclass b/meta/classes/cross-canadian.bbclass
index ee8aa6142a3..acde331ef92 100644
--- a/meta/classes/cross-canadian.bbclass
+++ b/meta/classes/cross-canadian.bbclass
@@ -30,7 +30,7 @@ python () {
if d.getVar("MODIFYTOS") != "1":
return
- if d.getVar("TCLIBC") == "baremetal":
+ if d.getVar("TCLIBC") in [ 'baremetal', 'newlib' ]:
return
tos = d.getVar("TARGET_OS")
diff --git a/meta/classes/cross.bbclass b/meta/classes/cross.bbclass
index 4e85cab2d19..34d7951f3f1 100644
--- a/meta/classes/cross.bbclass
+++ b/meta/classes/cross.bbclass
@@ -37,7 +37,6 @@ CPPFLAGS = "${BUILD_CPPFLAGS}"
CFLAGS = "${BUILD_CFLAGS}"
CXXFLAGS = "${BUILD_CFLAGS}"
LDFLAGS = "${BUILD_LDFLAGS}"
-LDFLAGS_build-darwin = "-L${STAGING_LIBDIR_NATIVE}"
TOOLCHAIN_OPTIONS = ""
diff --git a/meta/classes/cve-check.bbclass b/meta/classes/cve-check.bbclass
index 537659df12f..12ad3e5c5c3 100644
--- a/meta/classes/cve-check.bbclass
+++ b/meta/classes/cve-check.bbclass
@@ -146,15 +146,17 @@ def get_patches_cves(d):
with open(patch_file, "r", encoding="iso8859-1") as f:
patch_text = f.read()
- # Search for the "CVE: " line
- match = cve_match.search(patch_text)
- if match:
+ # 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)
- elif not fname_match:
+ 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
@@ -177,7 +179,7 @@ def check_cves(d, patched_cves):
cve_db_dir = d.getVar("CVE_CHECK_DB_DIR")
cve_whitelist = ast.literal_eval(d.getVar("CVE_CHECK_CVE_WHITELIST"))
cve_cmd = "cve-check-tool"
- cmd = [cve_cmd, "--no-html", "--csv", "--not-affected", "-t", "faux", "-d", cve_db_dir]
+ cmd = [cve_cmd, "--no-html", "--skip-update", "--csv", "--not-affected", "-t", "faux", "-d", cve_db_dir]
# If the recipe has been whitlisted we return empty lists
if d.getVar("PN") in d.getVar("CVE_CHECK_PN_WHITELIST").split():
diff --git a/meta/classes/devicetree.bbclass b/meta/classes/devicetree.bbclass
new file mode 100644
index 00000000000..8fe5a5ed795
--- /dev/null
+++ b/meta/classes/devicetree.bbclass
@@ -0,0 +1,143 @@
+# This bbclass implements device tree compliation for user provided device tree
+# sources. The compilation of the device tree sources is the same as the kernel
+# device tree compilation process, this includes being able to include sources
+# from the kernel such as soc dtsi files or header files such as gpio.h. In
+# addition to device trees this bbclass also handles compilation of device tree
+# overlays.
+#
+# The output of this class behaves similar to how kernel-devicetree.bbclass
+# operates in that the output files are installed into /boot/devicetree.
+# However this class on purpose separates the deployed device trees into the
+# 'devicetree' subdirectory. This prevents clashes with the kernel-devicetree
+# output. Additionally the device trees are populated into the sysroot for
+# access via the sysroot from within other recipes.
+
+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"
+
+INHIBIT_DEFAULT_DEPS = "1"
+DEPENDS += "dtc-native"
+
+inherit deploy kernel-arch
+
+COMPATIBLE_MACHINE ?= "^$"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+SYSROOT_DIRS += "/boot/devicetree"
+FILES_${PN} = "/boot/devicetree/*.dtb /boot/devicetree/*.dtbo"
+
+S = "${WORKDIR}"
+B = "${WORKDIR}/build"
+
+# Default kernel includes, these represent what are normally used for in-kernel
+# sources.
+KERNEL_INCLUDE ??= " \
+ ${STAGING_KERNEL_DIR}/arch/${ARCH}/boot/dts \
+ ${STAGING_KERNEL_DIR}/arch/${ARCH}/boot/dts/* \
+ ${STAGING_KERNEL_DIR}/scripts/dtc/include-prefixes \
+ "
+
+DT_INCLUDE[doc] = "Search paths to be made available to both the device tree compiler and preprocessor for inclusion."
+DT_INCLUDE ?= "${DT_FILES_PATH} ${KERNEL_INCLUDE}"
+DT_FILES_PATH[doc] = "Defaults to source directory, can be used to select dts files that are not in source (e.g. generated)."
+DT_FILES_PATH ?= "${S}"
+
+DT_PADDING_SIZE[doc] = "Size of padding on the device tree blob, used as extra space typically for additional properties during boot."
+DT_PADDING_SIZE ??= "0x3000"
+DT_RESERVED_MAP[doc] = "Number of reserved map entires."
+DT_RESERVED_MAP ??= "8"
+DT_BOOT_CPU[doc] = "The boot cpu, defaults to 0"
+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_OFLAGS ?= "-p 0 -@ -H epapr"
+
+python () {
+ if d.getVar("KERNEL_INCLUDE"):
+ # auto add dependency on kernel tree, but only if kernel include paths
+ # are specified.
+ d.appendVarFlag("do_compile", "depends", " virtual/kernel:do_configure")
+}
+
+def expand_includes(varname, d):
+ import glob
+ includes = set()
+ # expand all includes with glob
+ for i in (d.getVar(varname) or "").split():
+ for g in glob.glob(i):
+ if os.path.isdir(g): # only add directories to include path
+ includes.add(g)
+ return includes
+
+def devicetree_source_is_overlay(path):
+ # determine if a dts file is an overlay by checking if it uses "/plugin/;"
+ with open(path, "r") as f:
+ for i in f:
+ if i.startswith("/plugin/;"):
+ return True
+ return False
+
+def devicetree_compile(dtspath, includes, d):
+ import subprocess
+ dts = os.path.basename(dtspath)
+ dtname = os.path.splitext(dts)[0]
+ bb.note("Processing {0} [{1}]".format(dtname, dts))
+
+ # preprocess
+ ppargs = d.getVar("BUILD_CPP").split()
+ ppargs += (d.getVar("DTC_PPFLAGS") or "").split()
+ for i in includes:
+ ppargs.append("-I{0}".format(i))
+ ppargs += ["-o", "{0}.pp".format(dts), dtspath]
+ bb.note("Running {0}".format(" ".join(ppargs)))
+ subprocess.run(ppargs, check = True)
+
+ # determine if the file is an overlay or not (using the preprocessed file)
+ isoverlay = devicetree_source_is_overlay("{0}.pp".format(dts))
+
+ # compile
+ dtcargs = ["dtc"] + (d.getVar("DTC_FLAGS") or "").split()
+ if isoverlay:
+ dtcargs += (d.getVar("DTC_OFLAGS") or "").split()
+ else:
+ dtcargs += (d.getVar("DTC_BFLAGS") or "").split()
+ for i in includes:
+ dtcargs += ["-i", i]
+ dtcargs += ["-o", "{0}.{1}".format(dtname, "dtbo" if isoverlay else "dtb")]
+ dtcargs += ["-I", "dts", "-O", "dtb", "{0}.pp".format(dts)]
+ bb.note("Running {0}".format(" ".join(dtcargs)))
+ subprocess.run(dtcargs, check = True)
+
+python devicetree_do_compile() {
+ includes = expand_includes("DT_INCLUDE", d)
+ listpath = d.getVar("DT_FILES_PATH")
+ for dts in os.listdir(listpath):
+ if not dts.endswith(".dts"):
+ continue # skip non-.dts files
+ dtspath = os.path.join(listpath, dts)
+ devicetree_compile(dtspath, includes, d)
+}
+
+devicetree_do_install() {
+ for DTB_FILE in `ls *.dtb *.dtbo`; do
+ install -Dm 0644 ${B}/${DTB_FILE} ${D}/boot/devicetree/${DTB_FILE}
+ done
+}
+
+devicetree_do_deploy() {
+ for DTB_FILE in `ls *.dtb *.dtbo`; do
+ install -Dm 0644 ${B}/${DTB_FILE} ${DEPLOYDIR}/devicetree/${DTB_FILE}
+ done
+}
+addtask deploy before do_build after do_install
+
+EXPORT_FUNCTIONS do_compile do_install do_deploy
+
diff --git a/meta/classes/devtool-source.bbclass b/meta/classes/devtool-source.bbclass
index 56882a41d84..67cd0bafb20 100644
--- a/meta/classes/devtool-source.bbclass
+++ b/meta/classes/devtool-source.bbclass
@@ -90,11 +90,23 @@ python devtool_post_unpack() {
fname in files])
return ret
+ is_kernel_yocto = bb.data.inherits_class('kernel-yocto', d)
# Move local source files into separate subdir
recipe_patches = [os.path.basename(patch) for patch in
oe.recipeutils.get_recipe_patches(d)]
local_files = oe.recipeutils.get_recipe_local_files(d)
+ if is_kernel_yocto:
+ for key in local_files.copy():
+ if key.endswith('scc'):
+ sccfile = open(local_files[key], 'r')
+ for l in sccfile:
+ line = l.split()
+ if line and line[0] in ('kconf', 'patch'):
+ local_files[line[-1]] = os.path.join(os.path.dirname(local_files[key]), line[-1])
+ shutil.copy2(os.path.join(os.path.dirname(local_files[key]), line[-1]), workdir)
+ sccfile.close()
+
# Ignore local files with subdir={BP}
srcabspath = os.path.abspath(srcsubdir)
local_files = [fname for fname in local_files if
diff --git a/meta/classes/distutils-common-base.bbclass b/meta/classes/distutils-common-base.bbclass
index 824a1b68b1f..94b5fd426d7 100644
--- a/meta/classes/distutils-common-base.bbclass
+++ b/meta/classes/distutils-common-base.bbclass
@@ -1,6 +1,18 @@
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 += "\
diff --git a/meta/classes/distutils.bbclass b/meta/classes/distutils.bbclass
index 1930c352927..98627314932 100644
--- a/meta/classes/distutils.bbclass
+++ b/meta/classes/distutils.bbclass
@@ -4,20 +4,30 @@ 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 ?= "--prefix=${D}/${prefix} \
- --install-data=${D}/${datadir}"
+DISTUTILS_INSTALL_ARGS ?= "--root=${D} \
+ --prefix=${prefix} \
+ --install-lib=${PYTHON_SITEPACKAGES_DIR} \
+ --install-data=${datadir}"
+
+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 execution failed."
+ 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 execution failed."
+ bbfatal_log "'${PYTHON_PN} setup.py install_headers ${DISTUTILS_STAGE_HEADERS_ARGS}' execution for stage_headers failed."
}
distutils_stage_all() {
@@ -26,7 +36,7 @@ distutils_stage_all() {
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 (stage) execution failed."
+ bbfatal_log "'${PYTHON_PN} setup.py install ${DISTUTILS_STAGE_ALL_ARGS}' execution for stage_all failed."
}
distutils_do_install() {
@@ -34,8 +44,8 @@ distutils_do_install() {
STAGING_INCDIR=${STAGING_INCDIR} \
STAGING_LIBDIR=${STAGING_LIBDIR} \
PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \
- ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install --install-lib=${D}/${PYTHON_SITEPACKAGES_DIR} ${DISTUTILS_INSTALL_ARGS} || \
- bbfatal_log "${PYTHON_PN} setup.py install execution failed."
+ ${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
@@ -77,6 +87,6 @@ distutils_do_install() {
fi
}
-EXPORT_FUNCTIONS do_compile do_install
+EXPORT_FUNCTIONS do_configure do_compile do_install
export LDSHARED="${CCLD} -shared"
diff --git a/meta/classes/distutils3.bbclass b/meta/classes/distutils3.bbclass
index 6c303068820..834e3224743 100644
--- a/meta/classes/distutils3.bbclass
+++ b/meta/classes/distutils3.bbclass
@@ -5,22 +5,32 @@ 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 ?= "--prefix=${D}/${prefix} \
- --install-data=${D}/${datadir}"
+DISTUTILS_INSTALL_ARGS ?= "--root=${D} \
+ --prefix=${prefix} \
+ --install-lib=${PYTHON_SITEPACKAGES_DIR} \
+ --install-data=${datadir}"
+
+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_ext execution failed."
+ 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 execution failed."
+ bbfatal_log "'${PYTHON_PN} setup.py install_headers ${DISTUTILS_STAGE_HEADERS_ARGS}' execution for stage_headers failed."
}
distutils3_stage_headers[vardepsexclude] = "MACHINE"
@@ -30,7 +40,7 @@ distutils3_stage_all() {
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 (stage) execution failed."
+ bbfatal_log "'${PYTHON_PN} setup.py install ${DISTUTILS_STAGE_ALL_ARGS}' execution for stage_all failed."
}
distutils3_stage_all[vardepsexclude] = "MACHINE"
@@ -39,8 +49,8 @@ distutils3_do_install() {
STAGING_INCDIR=${STAGING_INCDIR} \
STAGING_LIBDIR=${STAGING_LIBDIR} \
PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \
- ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install --install-lib=${D}/${PYTHON_SITEPACKAGES_DIR} ${DISTUTILS_INSTALL_ARGS} || \
- bbfatal_log "${PYTHON_PN} setup.py install execution failed."
+ ${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 {} \;
@@ -71,6 +81,6 @@ distutils3_do_install() {
}
distutils3_do_install[vardepsexclude] = "MACHINE"
-EXPORT_FUNCTIONS do_compile do_install
+EXPORT_FUNCTIONS do_configure do_compile do_install
export LDSHARED="${CCLD} -shared"
diff --git a/meta/classes/dos2unix.bbclass b/meta/classes/dos2unix.bbclass
new file mode 100644
index 00000000000..3fc17e21963
--- /dev/null
+++ b/meta/classes/dos2unix.bbclass
@@ -0,0 +1,14 @@
+# Class for use to convert all CRLF line terminators to LF
+# provided that some projects are being developed/maintained
+# on Windows so they have different line terminators(CRLF) vs
+# on Linux(LF), which can cause annoying patching errors during
+# git push/checkout processes.
+
+do_convert_crlf_to_lf[depends] += "dos2unix-native:do_populate_sysroot"
+
+# Convert CRLF line terminators to LF
+do_convert_crlf_to_lf () {
+ find ${S} -type f -exec dos2unix {} \;
+}
+
+addtask convert_crlf_to_lf after do_unpack before do_patch
diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass
index c9f5cf767d0..ad87d85f787 100644
--- a/meta/classes/externalsrc.bbclass
+++ b/meta/classes/externalsrc.bbclass
@@ -77,6 +77,9 @@ python () {
# 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', '')
+
tasks = filter(lambda k: d.getVarFlag(k, "task"), d.keys())
for task in tasks:
diff --git a/meta/classes/fontcache.bbclass b/meta/classes/fontcache.bbclass
index e76331131ee..f71a754a4dd 100644
--- a/meta/classes/fontcache.bbclass
+++ b/meta/classes/fontcache.bbclass
@@ -17,7 +17,7 @@ FONTCONFIG_CACHE_PARAMS ?= "-v"
FONTCONFIG_CACHE_ENV ?= "FC_DEBUG=1"
fontcache_common() {
if [ -n "$D" ] ; then
- $INTERCEPT_DIR/postinst_intercept update_font_cache ${PKG} mlprefix=${MLPREFIX} \
+ $INTERCEPT_DIR/postinst_intercept update_font_cache ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX} \
'bindir="${bindir}"' \
'libdir="${libdir}"' \
'base_libdir="${base_libdir}"' \
diff --git a/meta/classes/go.bbclass b/meta/classes/go.bbclass
index d33d83ea7f1..167d02e3fa3 100644
--- a/meta/classes/go.bbclass
+++ b/meta/classes/go.bbclass
@@ -179,3 +179,13 @@ FILES_${PN}-staticdev = "${libdir}/go/pkg"
INSANE_SKIP_${PN} += "ldflags"
INSANE_SKIP_${PN}-ptest += "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
+# variants.
+python() {
+ if 'mips' 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 f54c5169e3e..b2c94faddb7 100644
--- a/meta/classes/goarch.bbclass
+++ b/meta/classes/goarch.bbclass
@@ -33,9 +33,13 @@ COMPATIBLE_HOST_linux-muslx32 = "null"
COMPATIBLE_HOST_powerpc = "null"
COMPATIBLE_HOST_powerpc64 = "null"
COMPATIBLE_HOST_mipsarchn32 = "null"
-ARM_INSTRUCTION_SET = "arm"
+
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
+ARM_INSTRUCTION_SET_armv6 = "arm"
+
TUNE_CCARGS_remove = "-march=mips32r2"
-SECURITY_CFLAGS_mips = "${SECURITY_NOPIE_CFLAGS}"
+SECURITY_CFLAGS_mipsarch = "${SECURITY_NOPIE_CFLAGS}"
SECURITY_NOPIE_CFLAGS ??= ""
def go_map_arch(a, d):
diff --git a/meta/classes/gtk-immodules-cache.bbclass b/meta/classes/gtk-immodules-cache.bbclass
index 3d82dbe9e34..9bb0af8b26a 100644
--- a/meta/classes/gtk-immodules-cache.bbclass
+++ b/meta/classes/gtk-immodules-cache.bbclass
@@ -10,53 +10,39 @@ GTKIMMODULES_PACKAGES ?= "${PN}"
gtk_immodule_cache_postinst() {
if [ "x$D" != "x" ]; then
- if [ -x $D${bindir}/gtk-query-immodules-2.0 ]; then
- IMFILES=$(ls $D${libdir}/gtk-2.0/*/immodules/*.so)
- ${@qemu_run_binary(d, '$D', '${bindir}/gtk-query-immodules-2.0')} \
- $IMFILES > $D${libdir}/gtk-2.0/2.10.0/immodules.cache 2>/dev/null &&
- sed -i -e "s:$D::" $D${libdir}/gtk-2.0/2.10.0/immodules.cache
- fi
- if [ -x $D${bindir}/gtk-query-immodules-3.0 ]; then
- IMFILES=$(ls $D${libdir}/gtk-3.0/*/immodules/*.so)
- ${@qemu_run_binary(d, '$D', '${bindir}/gtk-query-immodules-3.0')} \
- $IMFILES > $D${libdir}/gtk-3.0/3.0.0/immodules.cache 2>/dev/null &&
- sed -i -e "s:$D::" $D${libdir}/gtk-3.0/3.0.0/immodules.cache
- fi
-
- [ $? -ne 0 ] && exit 1
- exit 0
-fi
-if [ ! -z `which gtk-query-immodules-2.0` ]; then
- gtk-query-immodules-2.0 > ${libdir}/gtk-2.0/2.10.0/immodules.cache
-fi
-if [ ! -z `which gtk-query-immodules-3.0` ]; then
- gtk-query-immodules-3.0 > ${libdir}/gtk-3.0/3.0.0/immodules.cache
+ $INTERCEPT_DIR/postinst_intercept update_gtk_immodules_cache ${PKG} \
+ mlprefix=${MLPREFIX} \
+ binprefix=${MLPREFIX} \
+ libdir=${libdir} \
+ libexecdir=${libexecdir} \
+ base_libdir=${base_libdir} \
+ bindir=${bindir}
+else
+ if [ ! -z `which gtk-query-immodules-2.0` ]; then
+ gtk-query-immodules-2.0 > ${libdir}/gtk-2.0/2.10.0/immodules.cache
+ fi
+ if [ ! -z `which gtk-query-immodules-3.0` ]; then
+ gtk-query-immodules-3.0 > ${libdir}/gtk-3.0/3.0.0/immodules.cache
+ fi
fi
}
gtk_immodule_cache_postrm() {
if [ "x$D" != "x" ]; then
- if [ -x $D${bindir}/gtk-query-immodules-2.0 ]; then
- IMFILES=$(ls $D${libdir}/gtk-2.0/*/immodules/*.so)
- ${@qemu_run_binary(d, '$D', '${bindir}/gtk-query-immodules-2.0')} \
- $IMFILES > $D${libdir}/gtk-2.0/2.10.0/immodules.cache 2>/dev/null &&
- sed -i -e "s:$D::" $D${libdir}/gtk-2.0/2.10.0/immodules.cache
- fi
- if [ -x $D${bindir}/gtk-query-immodules-3.0 ]; then
- IMFILES=$(ls $D${libdir}/gtk-3.0/*/immodules/*.so)
- ${@qemu_run_binary(d, '$D', '${bindir}/gtk-query-immodules-3.0')} \
- $IMFILES > $D${libdir}/gtk-3.0/3.0.0/immodules.cache 2>/dev/null &&
- sed -i -e "s:$D::" $D${libdir}/gtk-3.0/3.0.0/immodules.cache
- fi
-
- [ $? -ne 0 ] && exit 1
- exit 0
-fi
-if [ ! -z `which gtk-query-immodules-2.0` ]; then
- gtk-query-immodules-2.0 > ${libdir}/gtk-2.0/2.10.0/immodules.cache
-fi
-if [ ! -z `which gtk-query-immodules-3.0` ]; then
- gtk-query-immodules-3.0 > ${libdir}/gtk-3.0/3.0.0/immodules.cache
+ $INTERCEPT_DIR/postinst_intercept update_gtk_immodules_cache ${PKG} \
+ mlprefix=${MLPREFIX} \
+ binprefix=${MLPREFIX} \
+ libdir=${libdir} \
+ libexecdir=${libexecdir} \
+ base_libdir=${base_libdir} \
+ bindir=${bindir}
+else
+ if [ ! -z `which gtk-query-immodules-2.0` ]; then
+ gtk-query-immodules-2.0 > ${libdir}/gtk-2.0/2.10.0/immodules.cache
+ fi
+ if [ ! -z `which gtk-query-immodules-3.0` ]; then
+ gtk-query-immodules-3.0 > ${libdir}/gtk-3.0/3.0.0/immodules.cache
+ fi
fi
}
diff --git a/meta/classes/icecc.bbclass b/meta/classes/icecc.bbclass
index 0ca8de86c24..b5a84577473 100644
--- a/meta/classes/icecc.bbclass
+++ b/meta/classes/icecc.bbclass
@@ -171,7 +171,7 @@ def use_icecc(bb,d):
return "yes"
def icecc_is_allarch(bb, d):
- return d.getVar("PACKAGE_ARCH") == "all" or bb.data.inherits_class('allarch', d)
+ return d.getVar("PACKAGE_ARCH") == "all"
def icecc_is_kernel(bb, d):
return \
diff --git a/meta/classes/image-live.bbclass b/meta/classes/image-live.bbclass
index 966277c6785..af71be5093d 100644
--- a/meta/classes/image-live.bbclass
+++ b/meta/classes/image-live.bbclass
@@ -19,8 +19,6 @@
# External variables (also used by syslinux.bbclass)
# ${INITRD} - indicates a list of filesystem images to concatenate and use as an initrd (optional)
-# ${NOISO} - skip building the ISO image if set to 1
-# ${NOHDD} - skip building the HDD image if set to 1
# ${HDDIMG_ID} - FAT image volume-id
# ${ROOTFS} - indicates a filesystem image to include as the root filesystem (optional)
@@ -80,8 +78,8 @@ populate_live() {
}
build_iso() {
- # Only create an ISO if we have an INITRD and NOISO was not set
- if [ -z "${INITRD}" ] || [ "${NOISO}" = "1" ]; then
+ # Only create an ISO if we have an INITRD and the live or iso image type was selected
+ if [ -z "${INITRD}" ] || [ "${@bb.utils.contains_any('IMAGE_FSTYPES', 'live iso', '1', '0', d)}" != "1" ]; then
bbnote "ISO image will not be created."
return
fi
@@ -217,7 +215,7 @@ build_fat_img() {
build_hddimg() {
# Create an HDD image
- if [ "${NOHDD}" != "1" ] ; then
+ if [ "${@bb.utils.contains_any('IMAGE_FSTYPES', 'live hddimg', '1', '0', d)}" = "1" ] ; then
populate_live ${HDDDIR}
if [ "${PCBIOS}" = "1" ]; then
@@ -232,11 +230,11 @@ build_hddimg() {
if [ -f ${HDDDIR}/rootfs.img ]; then
rootfs_img_size=`stat -c '%s' ${HDDDIR}/rootfs.img`
max_size=`expr 4 \* 1024 \* 1024 \* 1024`
- if [ $rootfs_img_size -gt $max_size ]; then
- bberror "${HDDDIR}/rootfs.img execeeds 4GB,"
- bberror "this doesn't work on FAT filesystem, you can try either of:"
- bberror "1) Reduce the size of rootfs.img"
- bbfatal "2) Use iso, vmdk or vdi to instead of hddimg\n"
+ if [ $rootfs_img_size -ge $max_size ]; then
+ 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"
fi
fi
diff --git a/meta/classes/image-mklibs.bbclass b/meta/classes/image-mklibs.bbclass
index 5f6df1b17fd..68e11d43655 100644
--- a/meta/classes/image-mklibs.bbclass
+++ b/meta/classes/image-mklibs.bbclass
@@ -19,7 +19,7 @@ mklibs_optimize_image_doit() {
echo $i
done > ${WORKDIR}/mklibs/executables.list
- dynamic_loader=$(linuxloader)
+ dynamic_loader=${@get_linuxloader(d)}
mklibs -v \
--ldlib ${dynamic_loader} \
diff --git a/meta/classes/image-postinst-intercepts.bbclass b/meta/classes/image-postinst-intercepts.bbclass
new file mode 100644
index 00000000000..ed30bbd98d9
--- /dev/null
+++ b/meta/classes/image-postinst-intercepts.bbclass
@@ -0,0 +1,23 @@
+# Gather existing and candidate postinst intercepts from BBPATH
+POSTINST_INTERCEPTS_DIR ?= "${COREBASE}/scripts/postinst-intercepts"
+POSTINST_INTERCEPTS_PATHS ?= "${@':'.join('%s/postinst-intercepts' % p for p in '${BBPATH}'.split(':'))}:${POSTINST_INTERCEPTS_DIR}"
+
+python find_intercepts() {
+ intercepts = {}
+ search_paths = []
+ paths = d.getVar('POSTINST_INTERCEPTS_PATHS').split(':')
+ overrides = (':' + d.getVar('FILESOVERRIDES')).split(':') + ['']
+ search_paths = [os.path.join(p, op) for p in paths for op in overrides]
+ searched = oe.path.which_wild('*', ':'.join(search_paths), candidates=True)
+ files, chksums = [], []
+ for pathname, candidates in searched:
+ if os.path.isfile(pathname):
+ files.append(pathname)
+ chksums.append('%s:True' % pathname)
+ chksums.extend('%s:False' % c for c in candidates[:-1])
+
+ d.setVar('POSTINST_INTERCEPT_CHECKSUMS', ' '.join(chksums))
+ d.setVar('POSTINST_INTERCEPTS', ' '.join(files))
+}
+find_intercepts[eventmask] += "bb.event.RecipePreFinalise"
+addhandler find_intercepts
diff --git a/meta/classes/image-prelink.bbclass b/meta/classes/image-prelink.bbclass
index 6a8afa8fa95..04dd57c940a 100644
--- a/meta/classes/image-prelink.bbclass
+++ b/meta/classes/image-prelink.bbclass
@@ -33,7 +33,7 @@ prelink_image () {
fi
cat ${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf >> $ldsoconf
- dynamic_loader=$(linuxloader)
+ dynamic_loader=${@get_linuxloader(d)}
# prelink!
if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 2247b305da8..34fdbb08507 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -1,9 +1,21 @@
-inherit rootfs_${IMAGE_PKGTYPE}
+IMAGE_CLASSES ??= ""
+
+# rootfs bootstrap install
+# warning - image-container resets this
+ROOTFS_BOOTSTRAP_INSTALL = "run-postinsts"
+
+# Handle inherits of any of the image classes we need
+IMGCLASSES = "rootfs_${IMAGE_PKGTYPE} image_types ${IMAGE_CLASSES}"
# Only Linux SDKs support populate_sdk_ext, fall back to populate_sdk_base
# in the non-Linux SDK_OS case, such as mingw32
-SDKEXTCLASS ?= "${@['populate_sdk_base', 'populate_sdk_ext']['linux' in d.getVar("SDK_OS")]}"
-inherit ${SDKEXTCLASS}
+IMGCLASSES += "${@['populate_sdk_base', 'populate_sdk_ext']['linux' in d.getVar("SDK_OS")]}"
+IMGCLASSES += "${@bb.utils.contains_any('IMAGE_FSTYPES', 'live iso hddimg', 'image-live', '', d)}"
+IMGCLASSES += "${@bb.utils.contains('IMAGE_FSTYPES', 'container', 'image-container', '', d)}"
+IMGCLASSES += "image_types_wic"
+IMGCLASSES += "rootfs-postcommands"
+IMGCLASSES += "image-postinst-intercepts"
+inherit ${IMGCLASSES}
TOOLCHAIN_TARGET_TASK += "${PACKAGE_INSTALL}"
TOOLCHAIN_TARGET_TASK_ATTEMPTONLY += "${PACKAGE_INSTALL_ATTEMPTONLY}"
@@ -11,25 +23,21 @@ POPULATE_SDK_POST_TARGET_COMMAND += "rootfs_sysroot_relativelinks; "
LICENSE ?= "MIT"
PACKAGES = ""
-DEPENDS += "${MLPREFIX}qemuwrapper-cross depmodwrapper-cross"
+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}"
RRECOMMENDS += "${PACKAGE_INSTALL_ATTEMPTONLY}"
+PATH_prepend = "${@":".join(all_multilib_tune_values(d, 'STAGING_BINDIR_CROSS').split())}:"
INHIBIT_DEFAULT_DEPS = "1"
-TESTIMAGECLASS = "${@oe.utils.conditional('TEST_IMAGE', '1', 'testimage-auto', '', d)}"
-inherit ${TESTIMAGECLASS}
-
# IMAGE_FEATURES may contain any available package group
IMAGE_FEATURES ?= ""
IMAGE_FEATURES[type] = "list"
-IMAGE_FEATURES[validitems] += "debug-tweaks read-only-rootfs empty-root-password allow-empty-password post-install-logging"
+IMAGE_FEATURES[validitems] += "debug-tweaks read-only-rootfs empty-root-password allow-empty-password allow-root-login post-install-logging"
# Generate companion debugfs?
IMAGE_GEN_DEBUGFS ?= "0"
-# rootfs bootstrap install
-ROOTFS_BOOTSTRAP_INSTALL = "run-postinsts"
# These packages will be removed from a read-only rootfs after all other
# packages have been installed
@@ -126,23 +134,6 @@ do_rootfs[vardeps] += "${@rootfs_variables(d)}"
do_build[depends] += "virtual/kernel:do_deploy"
-def build_live(d):
- if bb.utils.contains("IMAGE_FSTYPES", "live", "live", "0", d) == "0": # live is not set but hob might set iso or hddimg
- d.setVar('NOISO', bb.utils.contains('IMAGE_FSTYPES', "iso", "0", "1", d))
- d.setVar('NOHDD', bb.utils.contains('IMAGE_FSTYPES', "hddimg", "0", "1", d))
- if d.getVar('NOISO') == "0" or d.getVar('NOHDD') == "0":
- return "image-live"
- return ""
- return "image-live"
-
-IMAGE_TYPE_live = "${@build_live(d)}"
-inherit ${IMAGE_TYPE_live}
-
-IMAGE_TYPE_container = '${@bb.utils.contains("IMAGE_FSTYPES", "container", "image-container", "", d)}'
-inherit ${IMAGE_TYPE_container}
-
-IMAGE_TYPE_wic = "image_types_wic"
-inherit ${IMAGE_TYPE_wic}
python () {
def extraimage_getdepends(task):
@@ -151,7 +142,6 @@ python () {
deps += " %s:%s" % (dep, task)
return deps
- d.appendVarFlag('do_image', 'depends', extraimage_getdepends('do_populate_lic'))
d.appendVarFlag('do_image_complete', 'depends', extraimage_getdepends('do_populate_sysroot'))
deps = " " + imagetypes_getdepends(d)
@@ -177,9 +167,6 @@ python () {
check_image_features(d)
}
-IMAGE_CLASSES += "image_types"
-inherit ${IMAGE_CLASSES}
-
IMAGE_POSTPROCESS_COMMAND ?= ""
# some default locales
@@ -191,8 +178,6 @@ LINGUAS_INSTALL ?= "${@" ".join(map(lambda s: "locale-base-%s" % s, d.getVar('IM
# aren't yet available.
PSEUDO_PASSWD = "${IMAGE_ROOTFS}:${STAGING_DIR_NATIVE}"
-inherit rootfs-postcommands
-
PACKAGE_EXCLUDE ??= ""
PACKAGE_EXCLUDE[type] = "list"
@@ -262,6 +247,7 @@ fakeroot python do_rootfs () {
do_rootfs[dirs] = "${TOPDIR}"
do_rootfs[cleandirs] += "${S} ${IMGDEPLOYDIR}"
do_rootfs[umask] = "022"
+do_rootfs[file-checksums] += "${POSTINST_INTERCEPT_CHECKSUMS}"
addtask rootfs after do_prepare_recipe_sysroot
fakeroot python do_image () {
@@ -666,7 +652,10 @@ POPULATE_SDK_PRE_TARGET_COMMAND += "${@bb.utils.contains('DISTRO_FEATURES', 'usr
reproducible_final_image_task () {
if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then
if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then
- REPRODUCIBLE_TIMESTAMP_ROOTFS=`git log -1 --pretty=%ct`
+ 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
fi
# Set mtime of all files to a reproducible value
bbnote "reproducible_final_image_task: mtime set to $REPRODUCIBLE_TIMESTAMP_ROOTFS"
diff --git a/meta/classes/image_types_wic.bbclass b/meta/classes/image_types_wic.bbclass
index dcf620cee0c..5b40a9e919f 100644
--- a/meta/classes/image_types_wic.bbclass
+++ b/meta/classes/image_types_wic.bbclass
@@ -102,6 +102,7 @@ python () {
# a variable and let the metadata deal with the deps.
d.setVar('_WKS_TEMPLATE', body)
bb.build.addtask('do_write_wks_template', 'do_image_wic', None, d)
+ bb.build.addtask('do_image_wic', 'do_image_complete', None, d)
}
#
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index fa154608420..4644221bc6b 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -46,139 +46,6 @@ ALL_QA = "${WARN_QA} ${ERROR_QA}"
UNKNOWN_CONFIGURE_WHITELIST ?= "--enable-nls --disable-nls --disable-silent-rules --disable-dependency-tracking --with-libtool-sysroot --disable-static"
-#
-# dictionary for elf headers
-#
-# feel free to add and correct.
-#
-# TARGET_OS TARGET_ARCH MACHINE, OSABI, ABIVERSION, Little Endian, 32bit?
-def package_qa_get_machine_dict(d):
- machdata = {
- "darwin9" : {
- "arm" : (40, 0, 0, True, 32),
- },
- "eabi" : {
- "arm" : (40, 0, 0, True, 32),
- },
- "elf" : {
- "aarch64" : (183, 0, 0, True, 64),
- "aarch64_be" :(183, 0, 0, False, 64),
- "i586" : (3, 0, 0, True, 32),
- "x86_64": (62, 0, 0, True, 64),
- "epiphany": (4643, 0, 0, True, 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),
- "riscv32": (243, 0, 0, True, 32),
- "riscv64": (243, 0, 0, True, 64),
- },
- "linux" : {
- "aarch64" : (183, 0, 0, True, 64),
- "aarch64_be" :(183, 0, 0, False, 64),
- "arm" : (40, 97, 0, True, 32),
- "armeb": (40, 97, 0, False, 32),
- "powerpc": (20, 0, 0, False, 32),
- "powerpc64": (21, 0, 0, False, 64),
- "i386": ( 3, 0, 0, True, 32),
- "i486": ( 3, 0, 0, True, 32),
- "i586": ( 3, 0, 0, True, 32),
- "i686": ( 3, 0, 0, True, 32),
- "x86_64": (62, 0, 0, True, 64),
- "ia64": (50, 0, 0, True, 64),
- "alpha": (36902, 0, 0, True, 64),
- "hppa": (15, 3, 0, False, 32),
- "m68k": ( 4, 0, 0, False, 32),
- "mips": ( 8, 0, 0, False, 32),
- "mipsel": ( 8, 0, 0, True, 32),
- "mips64": ( 8, 0, 0, False, 64),
- "mips64el": ( 8, 0, 0, True, 64),
- "mipsisa32r6": ( 8, 0, 0, False, 32),
- "mipsisa32r6el": ( 8, 0, 0, True, 32),
- "mipsisa64r6": ( 8, 0, 0, False, 64),
- "mipsisa64r6el": ( 8, 0, 0, True, 64),
- "nios2": (113, 0, 0, True, 32),
- "riscv32": (243, 0, 0, True, 32),
- "riscv64": (243, 0, 0, True, 64),
- "s390": (22, 0, 0, False, 32),
- "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-musl" : {
- "aarch64" : (183, 0, 0, True, 64),
- "aarch64_be" :(183, 0, 0, False, 64),
- "arm" : ( 40, 97, 0, True, 32),
- "armeb": ( 40, 97, 0, False, 32),
- "powerpc": ( 20, 0, 0, False, 32),
- "i386": ( 3, 0, 0, True, 32),
- "i486": ( 3, 0, 0, True, 32),
- "i586": ( 3, 0, 0, True, 32),
- "i686": ( 3, 0, 0, True, 32),
- "x86_64": ( 62, 0, 0, True, 64),
- "mips": ( 8, 0, 0, False, 32),
- "mipsel": ( 8, 0, 0, True, 32),
- "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),
- "sh4": ( 42, 0, 0, True, 32),
- },
- "uclinux-uclibc" : {
- "bfin": ( 106, 0, 0, True, 32),
- },
- "linux-gnueabi" : {
- "arm" : (40, 0, 0, True, 32),
- "armeb" : (40, 0, 0, False, 32),
- },
- "linux-musleabi" : {
- "arm" : (40, 0, 0, True, 32),
- "armeb" : (40, 0, 0, False, 32),
- },
- "linux-gnuspe" : {
- "powerpc": (20, 0, 0, False, 32),
- },
- "linux-muslspe" : {
- "powerpc": (20, 0, 0, False, 32),
- },
- "linux-gnu" : {
- "powerpc": (20, 0, 0, False, 32),
- "sh4": (42, 0, 0, True, 32),
- },
- "linux-gnu_ilp32" : {
- "aarch64" : (183, 0, 0, True, 32),
- },
- "linux-gnux32" : {
- "x86_64": (62, 0, 0, True, 32),
- },
- "linux-muslx32" : {
- "x86_64": (62, 0, 0, True, 32),
- },
- "linux-gnun32" : {
- "mips64": ( 8, 0, 0, False, 32),
- "mips64el": ( 8, 0, 0, True, 32),
- "mipsisa64r6": ( 8, 0, 0, False, 32),
- "mipsisa64r6el":( 8, 0, 0, True, 32),
- },
- }
-
- # Add in any extra user supplied data which may come from a BSP layer, removing the
- # need to always change this class directly
- extra_machdata = (d.getVar("PACKAGEQA_EXTRA_MACHDEFFUNCS") or "").split()
- for m in extra_machdata:
- call = m + "(machdata, d)"
- locs = { "machdata" : machdata, "d" : d}
- machdata = bb.utils.better_eval(call, locs)
-
- return machdata
-
-
def package_qa_clean_path(path, d, pkg=None):
"""
Remove redundant paths from the path for display. If pkg isn't set then
@@ -403,7 +270,7 @@ def package_qa_check_arch(path,name,d, elf, messages):
"""
Check if archs are compatible
"""
- import re
+ import re, oe.elf
if not elf:
return
@@ -430,12 +297,14 @@ def package_qa_check_arch(path,name,d, elf, messages):
#if this will throw an exception, then fix the dict above
(machine, osabi, abiversion, littleendian, bits) \
- = package_qa_get_machine_dict(d)[target_os][target_arch]
+ = oe.elf.machine_dict(d)[target_os][target_arch]
# Check the architecture and endiannes of the binary
is_32 = (("virtual/kernel" in provides) or bb.data.inherits_class("module", d)) and \
- (target_os == "linux-gnux32" or target_os == "linux-muslx32" or target_os == "linux-gnu_ilp32" or re.match('mips64.*32', d.getVar('DEFAULTTUNE')))
- if not ((machine == elf.machine()) or is_32):
+ (target_os == "linux-gnux32" or target_os == "linux-muslx32" or \
+ target_os == "linux-gnu_ilp32" or re.match('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)))
elif not ((bits == elf.abiSize()) or is_32):
@@ -534,9 +403,9 @@ def package_qa_check_buildpaths(path, name, d, elf, messages):
if path.find(name + "/CONTROL/") != -1 or path.find(name + "/DEBIAN/") != -1:
return
- tmpdir = d.getVar('TMPDIR')
+ tmpdir = bytes(d.getVar('TMPDIR'), encoding="utf-8")
with open(path, 'rb') as f:
- file_content = f.read().decode('utf-8', errors='ignore')
+ file_content = f.read()
if tmpdir in file_content:
package_qa_add_message(messages, "buildpaths", "File %s in package contained reference to tmpdir" % package_qa_clean_path(path,d))
@@ -599,7 +468,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)
+ sane &= package_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"
@@ -607,11 +476,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)
+ sane &= package_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):
- package_qa_handle_error("license-checksum", pn + ": LIC_FILES_CHKSUM points to an invalid file: " + srclicfile, d)
+ sane &= package_qa_handle_error("license-checksum", pn + ": LIC_FILES_CHKSUM points to an invalid file: " + srclicfile, d)
continue
if (srclicfile == corebase_licensefile):
@@ -695,7 +564,7 @@ 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)
+ sane &= package_qa_handle_error("license-checksum", msg, d)
if not sane:
bb.fatal("Fatal QA errors found, failing task.")
@@ -732,14 +601,14 @@ def package_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)
+ sane &= package_qa_handle_error("la", error_msg, d)
elif file.endswith(".pc"):
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)
+ sane &= package_qa_handle_error("pkgconfig", error_msg, d)
return sane
diff --git a/meta/classes/kernel-arch.bbclass b/meta/classes/kernel-arch.bbclass
index 09793fc9c26..2b52a63c648 100644
--- a/meta/classes/kernel-arch.bbclass
+++ b/meta/classes/kernel-arch.bbclass
@@ -22,6 +22,7 @@ def map_kernel_arch(a, d):
valid_archs = d.getVar('valid_archs').split()
if re.match('(i.86|athlon|x86.64)$', a): return 'x86'
+ elif re.match('arceb$', a): return 'arc'
elif re.match('armeb$', a): return 'arm'
elif re.match('aarch64$', a): return 'arm64'
elif re.match('aarch64_be$', a): return 'arm64'
diff --git a/meta/classes/kernel-artifact-names.bbclass b/meta/classes/kernel-artifact-names.bbclass
new file mode 100644
index 00000000000..bbeecba7bd1
--- /dev/null
+++ b/meta/classes/kernel-artifact-names.bbclass
@@ -0,0 +1,18 @@
+KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
+
+KERNEL_IMAGE_NAME ?= "${KERNEL_ARTIFACT_NAME}"
+KERNEL_IMAGE_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
+
+KERNEL_DTB_NAME ?= "${KERNEL_ARTIFACT_NAME}"
+KERNEL_DTB_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
+
+KERNEL_FIT_NAME ?= "${KERNEL_ARTIFACT_NAME}"
+KERNEL_FIT_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
+
+MODULE_TARBALL_NAME ?= "${KERNEL_ARTIFACT_NAME}"
+MODULE_TARBALL_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
+MODULE_TARBALL_DEPLOY ?= "1"
+
+INITRAMFS_NAME ?= "initramfs-${KERNEL_ARTIFACT_NAME}"
+INITRAMFS_LINK_NAME ?= "initramfs-${KERNEL_ARTIFACT_LINK_NAME}"
diff --git a/meta/classes/kernel-devicetree.bbclass b/meta/classes/kernel-devicetree.bbclass
index 4f80cc62eb4..867b776aa7f 100644
--- a/meta/classes/kernel-devicetree.bbclass
+++ b/meta/classes/kernel-devicetree.bbclass
@@ -10,21 +10,21 @@ FILES_${KERNEL_PACKAGE_NAME}-image-zimage-bundle = "/${KERNEL_IMAGEDEST}/zImage-
KERNEL_DEVICETREE_BUNDLE ?= "0"
normalize_dtb () {
- DTB="$1"
- 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'`
+ dtb="$1"
+ 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
- echo "${DTB}"
+ echo "$dtb"
}
get_real_dtb_path_in_kernel () {
- DTB="$1"
- DTB_PATH="${B}/arch/${ARCH}/boot/dts/${DTB}"
- if [ ! -e "${DTB_PATH}" ]; then
- DTB_PATH="${B}/arch/${ARCH}/boot/${DTB}"
+ dtb="$1"
+ dtb_path="${B}/arch/${ARCH}/boot/dts/$dtb"
+ if [ ! -e "$dtb_path" ]; then
+ dtb_path="${B}/arch/${ARCH}/boot/$dtb"
fi
- echo "${DTB_PATH}"
+ echo "$dtb_path"
}
do_configure_append() {
@@ -50,61 +50,44 @@ do_configure_append() {
}
do_compile_append() {
- for DTB in ${KERNEL_DEVICETREE}; do
- DTB=`normalize_dtb "${DTB}"`
- oe_runmake ${DTB}
+ for dtbf in ${KERNEL_DEVICETREE}; do
+ dtb=`normalize_dtb "$dtbf"`
+ oe_runmake $dtb
done
}
do_install_append() {
- for DTB in ${KERNEL_DEVICETREE}; do
- DTB=`normalize_dtb "${DTB}"`
- DTB_EXT=${DTB##*.}
- DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`
- DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"`
- install -m 0644 ${DTB_PATH} ${D}/${KERNEL_IMAGEDEST}/${DTB_BASE_NAME}.${DTB_EXT}
- for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do
- symlink_name=${type}"-"${KERNEL_IMAGE_SYMLINK_NAME}
- DTB_SYMLINK_NAME=`echo ${symlink_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
- ln -sf ${DTB_BASE_NAME}.${DTB_EXT} ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.${DTB_EXT}
-
- if [ "$type" = "zImage" ] && [ "${KERNEL_DEVICETREE_BUNDLE}" = "1" ]; then
- cat ${D}/${KERNEL_IMAGEDEST}/$type \
- ${D}/${KERNEL_IMAGEDEST}/${DTB_BASE_NAME}.${DTB_EXT} \
- > ${D}/${KERNEL_IMAGEDEST}/$type-${DTB_BASE_NAME}.${DTB_EXT}.bin
- fi
- done
+ for dtbf in ${KERNEL_DEVICETREE}; do
+ dtb=`normalize_dtb "$dtbf"`
+ dtb_ext=${dtb##*.}
+ dtb_base_name=`basename $dtb .$dtb_ext`
+ dtb_path=`get_real_dtb_path_in_kernel "$dtb"`
+ install -m 0644 $dtb_path ${D}/${KERNEL_IMAGEDEST}/$dtb_base_name.$dtb_ext
done
}
do_deploy_append() {
- for DTB in ${KERNEL_DEVICETREE}; do
- DTB=`normalize_dtb "${DTB}"`
- DTB_EXT=${DTB##*.}
- DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"`
+ 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
for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do
- base_name=${type}"-"${KERNEL_IMAGE_BASE_NAME}
- symlink_name=${type}"-"${KERNEL_IMAGE_SYMLINK_NAME}
- DTB_NAME=`echo ${base_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
- DTB_SYMLINK_NAME=`echo ${symlink_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
- DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`
- install -d ${DEPLOYDIR}
- install -m 0644 ${DTB_PATH} ${DEPLOYDIR}/${DTB_NAME}.${DTB_EXT}
- ln -sf ${DTB_NAME}.${DTB_EXT} ${DEPLOYDIR}/${DTB_SYMLINK_NAME}.${DTB_EXT}
- ln -sf ${DTB_NAME}.${DTB_EXT} ${DEPLOYDIR}/${DTB_BASE_NAME}.${DTB_EXT}
-
if [ "$type" = "zImage" ] && [ "${KERNEL_DEVICETREE_BUNDLE}" = "1" ]; then
- cat ${DEPLOYDIR}/$type \
- ${DEPLOYDIR}/${DTB_NAME}.${DTB_EXT} \
- > ${DEPLOYDIR}/${DTB_NAME}.${DTB_EXT}.bin
- ln -sf ${DTB_NAME}.${DTB_EXT}.bin ${DEPLOYDIR}/$type-${DTB_BASE_NAME}.${DTB_EXT}.bin
-
+ 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
if [ -e "${KERNEL_OUTPUT_DIR}/${type}.initramfs" ]; then
cat ${KERNEL_OUTPUT_DIR}/${type}.initramfs \
- ${DEPLOYDIR}/${DTB_NAME}.${DTB_EXT} \
- > ${DEPLOYDIR}/${type}-${INITRAMFS_BASE_NAME}-${DTB_BASE_NAME}.${DTB_EXT}.bin
- ln -sf ${type}-${INITRAMFS_BASE_NAME}-${DTB_BASE_NAME}.${DTB_EXT}.bin \
- ${DEPLOYDIR}/${type}-initramfs-${DTB_BASE_NAME}.${DTB_EXT}-${MACHINE}.bin
+ ${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
fi
fi
done
diff --git a/meta/classes/kernel-fitimage.bbclass b/meta/classes/kernel-fitimage.bbclass
index 50a91e19906..4c4fd99ff4a 100644
--- a/meta/classes/kernel-fitimage.bbclass
+++ b/meta/classes/kernel-fitimage.bbclass
@@ -1,4 +1,4 @@
-inherit kernel-uboot uboot-sign
+inherit kernel-uboot kernel-artifact-names uboot-sign
python __anonymous () {
kerneltypes = d.getVar('KERNEL_IMAGETYPES') or ""
@@ -135,6 +135,15 @@ fitimage_emit_section_dtb() {
dtb_csum="sha1"
+ dtb_loadline=""
+ dtb_ext=${DTB##*.}
+ if [ "${dtb_ext}" = "dtbo" ]; then
+ if [ -n "${UBOOT_DTBO_LOADADDRESS}" ]; then
+ dtb_loadline="load = <${UBOOT_DTBO_LOADADDRESS}>;"
+ fi
+ elif [ -n "${UBOOT_DTB_LOADADDRESS}" ]; then
+ dtb_loadline="load = <${UBOOT_DTB_LOADADDRESS}>;"
+ fi
cat << EOF >> ${1}
fdt@${2} {
description = "Flattened Device Tree blob";
@@ -142,6 +151,7 @@ fitimage_emit_section_dtb() {
type = "flat_dt";
arch = "${UBOOT_ARCH}";
compression = "none";
+ ${dtb_loadline}
hash@1 {
algo = "${dtb_csum}";
};
@@ -248,25 +258,34 @@ fitimage_emit_section_config() {
fi
# Test if we have any DTBs at all
- conf_desc="Linux kernel"
- kernel_line="kernel = \"kernel@${2}\";"
+ sep=""
+ conf_desc=""
+ kernel_line=""
fdt_line=""
ramdisk_line=""
setup_line=""
default_line=""
+ if [ -n "${2}" ]; then
+ conf_desc="Linux kernel"
+ sep=", "
+ kernel_line="kernel = \"kernel@${2}\";"
+ fi
+
if [ -n "${3}" ]; then
- conf_desc="${conf_desc}, FDT blob"
+ conf_desc="${conf_desc}${sep}FDT blob"
+ sep=", "
fdt_line="fdt = \"fdt@${3}\";"
fi
if [ -n "${4}" ]; then
- conf_desc="${conf_desc}, ramdisk"
+ conf_desc="${conf_desc}${sep}ramdisk"
+ sep=", "
ramdisk_line="ramdisk = \"ramdisk@${4}\";"
fi
if [ -n "${5}" ]; then
- conf_desc="${conf_desc}, setup"
+ conf_desc="${conf_desc}${sep}setup"
setup_line="setup = \"setup@${5}\";"
fi
@@ -289,18 +308,26 @@ EOF
if [ ! -z "${conf_sign_keyname}" ] ; then
- sign_line="sign-images = \"kernel\""
+ sign_line="sign-images = "
+ sep=""
+
+ if [ -n "${2}" ]; then
+ sign_line="${sign_line}${sep}\"kernel\""
+ sep=", "
+ fi
if [ -n "${3}" ]; then
- sign_line="${sign_line}, \"fdt\""
+ sign_line="${sign_line}${sep}\"fdt\""
+ sep=", "
fi
if [ -n "${4}" ]; then
- sign_line="${sign_line}, \"ramdisk\""
+ sign_line="${sign_line}${sep}\"ramdisk\""
+ sep=", "
fi
if [ -n "${5}" ]; then
- sign_line="${sign_line}, \"setup\""
+ sign_line="${sign_line}${sep}\"setup\""
fi
sign_line="${sign_line};"
@@ -377,7 +404,7 @@ fitimage_assemble() {
#
if [ "x${ramdiskcount}" = "x1" ] ; 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 cpio; do
+ 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
@@ -403,7 +430,12 @@ fitimage_assemble() {
if [ -n "${DTBS}" ]; then
i=1
for DTB in ${DTBS}; do
- fitimage_emit_section_config ${1} "${kernelcount}" "${DTB}" "${ramdiskcount}" "${setupcount}" "`expr ${i} = ${dtbcount}`"
+ dtb_ext=${DTB##*.}
+ if [ "${dtb_ext}" = "dtbo" ]; then
+ fitimage_emit_section_config ${1} "" "${DTB}" "" "" "`expr ${i} = ${dtbcount}`"
+ else
+ fitimage_emit_section_config ${1} "${kernelcount}" "${DTB}" "${ramdiskcount}" "${setupcount}" "`expr ${i} = ${dtbcount}`"
+ fi
i=`expr ${i} + 1`
done
fi
@@ -427,7 +459,7 @@ fitimage_assemble() {
uboot-mkimage \
${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
-F -k "${UBOOT_SIGN_KEYDIR}" \
- -K "${DEPLOY_DIR_IMAGE}/${UBOOT_DTB_BINARY}" \
+ ${@'-K "${DEPLOY_DIR_IMAGE}/${UBOOT_DTB_BINARY}"' if len('${UBOOT_DTB_BINARY}') else ''} \
-r arch/${ARCH}/boot/${2}
fi
}
@@ -456,32 +488,22 @@ kernel_do_deploy[vardepsexclude] = "DATETIME"
kernel_do_deploy_append() {
# Update deploy directory
if echo ${KERNEL_IMAGETYPES} | grep -wq "fitImage"; then
- cd ${B}
echo "Copying fit-image.its source file..."
- its_base_name="fitImage-its-${PV}-${PR}-${MACHINE}-${DATETIME}"
- its_symlink_name=fitImage-its-${MACHINE}
- install -m 0644 fit-image.its ${DEPLOYDIR}/${its_base_name}.its
- linux_bin_base_name="fitImage-linux.bin-${PV}-${PR}-${MACHINE}-${DATETIME}"
- linux_bin_symlink_name=fitImage-linux.bin-${MACHINE}
- install -m 0644 linux.bin ${DEPLOYDIR}/${linux_bin_base_name}.bin
+ 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 [ -n "${INITRAMFS_IMAGE}" ]; then
echo "Copying fit-image-${INITRAMFS_IMAGE}.its source file..."
- its_initramfs_base_name="fitImage-its-${INITRAMFS_IMAGE_NAME}-${PV}-${PR}-${DATETIME}"
- its_initramfs_symlink_name=fitImage-its-${INITRAMFS_IMAGE_NAME}
- install -m 0644 fit-image-${INITRAMFS_IMAGE}.its ${DEPLOYDIR}/${its_initramfs_base_name}.its
- fit_initramfs_base_name="fitImage-${INITRAMFS_IMAGE_NAME}-${PV}-${PR}-${DATETIME}"
- fit_initramfs_symlink_name=fitImage-${INITRAMFS_IMAGE_NAME}
- install -m 0644 arch/${ARCH}/boot/fitImage-${INITRAMFS_IMAGE} ${DEPLOYDIR}/${fit_initramfs_base_name}.bin
- fi
-
- cd ${DEPLOYDIR}
- ln -sf ${its_base_name}.its ${its_symlink_name}.its
- ln -sf ${linux_bin_base_name}.bin ${linux_bin_symlink_name}.bin
+ 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 "${INITRAMFS_IMAGE}" ]; then
- ln -sf ${its_initramfs_base_name}.its ${its_initramfs_symlink_name}.its
- ln -sf ${fit_initramfs_base_name}.bin ${fit_initramfs_symlink_name}.bin
+ 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
fi
}
diff --git a/meta/classes/kernel-uimage.bbclass b/meta/classes/kernel-uimage.bbclass
index 1d8656e76e3..c2de6bb40dc 100644
--- a/meta/classes/kernel-uimage.bbclass
+++ b/meta/classes/kernel-uimage.bbclass
@@ -1,7 +1,7 @@
inherit kernel-uboot
python __anonymous () {
- if "uImage" in (d.getVar('KERNEL_IMAGETYPES') or "").split():
+ if "uImage" in d.getVar('KERNEL_IMAGETYPES'):
depends = d.getVar("DEPENDS")
depends = "%s u-boot-mkimage-native" % depends
d.setVar("DEPENDS", depends)
diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass
index 4ac3a39e475..496c8a7f68e 100644
--- a/meta/classes/kernel-yocto.bbclass
+++ b/meta/classes/kernel-yocto.bbclass
@@ -140,6 +140,8 @@ do_kernel_metadata() {
includes="$includes -I${WORKDIR}/$f/kernel-meta"
elif [ -d "${WORKDIR}/$f" ]; then
includes="$includes -I${WORKDIR}/$f"
+ elif [ -d "${WORKDIR}/../oe-local-files/$f" ]; then
+ includes="$includes -I${WORKDIR}/../oe-local-files/$f"
fi
done
for s in ${sccs} ${patches}; do
@@ -275,6 +277,9 @@ addtask kernel_metadata after do_validate_branches do_unpack before do_patch
do_kernel_metadata[depends] = "kern-tools-native:do_populate_sysroot"
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[dirs] += "${S} ${B}"
do_kernel_configme() {
set +e
@@ -304,7 +309,7 @@ do_kernel_configme() {
bbfatal_log "Could not find configuration queue (${meta_dir}/config.queue)"
fi
- CFLAGS="${CFLAGS} ${TOOLCHAIN_OPTIONS}" ARCH=${ARCH} merge_config.sh -O ${B} ${config_flags} ${configs} > ${meta_dir}/cfg/merge_config_build.log 2>&1
+ 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}"
fi
@@ -316,7 +321,7 @@ do_kernel_configme() {
addtask kernel_configme before do_configure after do_patch
python do_kernel_configcheck() {
- import re, string, sys
+ import re, string, sys, subprocess
# if KMETA isn't set globally by a recipe using this routine, we need to
# set the default to 'meta'. Otherwise, kconf_check is not passed a valid
@@ -325,13 +330,24 @@ python do_kernel_configcheck() {
if not os.path.exists(kmeta):
kmeta = "." + kmeta
- pathprefix = "export PATH=%s:%s; " % (d.getVar('PATH'), "${S}/scripts/util/")
+ s = d.getVar('S')
- cmd = d.expand("scc --configs -o ${S}/.kernel-meta")
- ret, configs = oe.utils.getstatusoutput("%s%s" % (pathprefix, cmd))
+ env = os.environ.copy()
+ env['PATH'] = "%s:%s%s" % (d.getVar('PATH'), s, "/scripts/util/")
- cmd = d.expand("cd ${S}; kconf_check --report -o ${S}/%s/cfg/ ${B}/.config ${S} %s" % (kmeta,configs))
- ret, result = oe.utils.getstatusoutput("%s%s" % (pathprefix, cmd))
+ 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)
@@ -343,6 +359,27 @@ python do_kernel_configcheck() {
with open (mismatch_file, "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)
+
+ 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:
+ 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:
+ 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)
}
# Ensure that the branches (BSP and meta) are on the locations specified by
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 78d6c30b07c..d0fbbd19899 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -62,31 +62,36 @@ python __anonymous () {
type = d.getVar('KERNEL_IMAGETYPE') or ""
alttype = d.getVar('KERNEL_ALT_IMAGETYPE') or ""
types = d.getVar('KERNEL_IMAGETYPES') or ""
- kname = d.getVar('KERNEL_PACKAGE_NAME') or "kernel"
if type not in types.split():
types = (type + ' ' + types).strip()
if alttype not in types.split():
types = (alttype + ' ' + types).strip()
d.setVar('KERNEL_IMAGETYPES', types)
- # some commonly used kernel images aren't generated by the kernel build system, such as vmlinux.gz
- # typeformake lists only valid kernel make targets, and post processing can be done after the kernel
- # is built (such as using gzip to compress vmlinux)
- typeformake = types.replace('vmlinux.gz', 'vmlinux')
- d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake)
+ # 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()).
+ # KERNEL_IMAGETYPE_FOR_MAKE should contain only image types supported
+ # directly by the kernel build system.
+ if not d.getVar('KERNEL_IMAGETYPE_FOR_MAKE'):
+ typeformake = set()
+ for type in types.split():
+ if type == 'vmlinux.gz':
+ type = 'vmlinux'
+ typeformake.add(type)
+
+ d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', ' '.join(sorted(typeformake)))
+
+ kname = d.getVar('KERNEL_PACKAGE_NAME') or "kernel"
+ imagedest = d.getVar('KERNEL_IMAGEDEST')
for type in types.split():
typelower = type.lower()
- imagedest = d.getVar('KERNEL_IMAGEDEST')
-
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')
image = d.getVar('INITRAMFS_IMAGE')
@@ -224,39 +229,37 @@ copy_initramfs() {
echo "Finished copy of initramfs into ./usr"
}
-INITRAMFS_BASE_NAME ?= "initramfs-${PV}-${PR}-${MACHINE}-${DATETIME}"
-INITRAMFS_BASE_NAME[vardepsexclude] = "DATETIME"
do_bundle_initramfs () {
if [ ! -z "${INITRAMFS_IMAGE}" -a x"${INITRAMFS_IMAGE_BUNDLE}" = x1 ]; then
echo "Creating a kernel image with a bundled initramfs..."
copy_initramfs
# Backing up kernel image relies on its type(regular file or symbolic link)
tmp_path=""
- for type in ${KERNEL_IMAGETYPE_FOR_MAKE} ; do
- if [ -h ${KERNEL_OUTPUT_DIR}/$type ] ; then
- linkpath=`readlink -n ${KERNEL_OUTPUT_DIR}/$type`
- realpath=`readlink -fn ${KERNEL_OUTPUT_DIR}/$type`
+ for imageType in ${KERNEL_IMAGETYPE_FOR_MAKE} ; do
+ if [ -h ${KERNEL_OUTPUT_DIR}/$imageType ] ; then
+ linkpath=`readlink -n ${KERNEL_OUTPUT_DIR}/$imageType`
+ realpath=`readlink -fn ${KERNEL_OUTPUT_DIR}/$imageType`
mv -f $realpath $realpath.bak
- tmp_path=$tmp_path" "$type"#"$linkpath"#"$realpath
- elif [ -f ${KERNEL_OUTPUT_DIR}/$type ]; then
- mv -f ${KERNEL_OUTPUT_DIR}/$type ${KERNEL_OUTPUT_DIR}/$type.bak
- tmp_path=$tmp_path" "$type"##"
+ tmp_path=$tmp_path" "$imageType"#"$linkpath"#"$realpath
+ elif [ -f ${KERNEL_OUTPUT_DIR}/$imageType ]; then
+ mv -f ${KERNEL_OUTPUT_DIR}/$imageType ${KERNEL_OUTPUT_DIR}/$imageType.bak
+ tmp_path=$tmp_path" "$imageType"##"
fi
done
use_alternate_initrd=CONFIG_INITRAMFS_SOURCE=${B}/usr/${INITRAMFS_IMAGE_NAME}.cpio
kernel_do_compile
# Restoring kernel image
for tp in $tmp_path ; do
- type=`echo $tp|cut -d "#" -f 1`
+ imageType=`echo $tp|cut -d "#" -f 1`
linkpath=`echo $tp|cut -d "#" -f 2`
realpath=`echo $tp|cut -d "#" -f 3`
if [ -n "$realpath" ]; then
mv -f $realpath $realpath.initramfs
mv -f $realpath.bak $realpath
- ln -sf $linkpath.initramfs ${B}/${KERNEL_OUTPUT_DIR}/$type.initramfs
+ ln -sf $linkpath.initramfs ${B}/${KERNEL_OUTPUT_DIR}/$imageType.initramfs
else
- mv -f ${KERNEL_OUTPUT_DIR}/$type ${KERNEL_OUTPUT_DIR}/$type.initramfs
- mv -f ${KERNEL_OUTPUT_DIR}/$type.bak ${KERNEL_OUTPUT_DIR}/$type
+ mv -f ${KERNEL_OUTPUT_DIR}/$imageType ${KERNEL_OUTPUT_DIR}/$imageType.initramfs
+ mv -f ${KERNEL_OUTPUT_DIR}/$imageType.bak ${KERNEL_OUTPUT_DIR}/$imageType
fi
done
fi
@@ -283,7 +286,7 @@ kernel_do_compile() {
if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then
# kernel sources do not use do_unpack, so SOURCE_DATE_EPOCH may not
# be set....
- if [ "$SOURCE_DATE_EPOCH" = "0" ]; then
+ if [ "${SOURCE_DATE_EPOCH}" = "" -o "${SOURCE_DATE_EPOCH}" = "0" ]; then
olddir=`pwd`
cd ${S}
SOURCE_DATE_EPOCH=`git log -1 --pretty=%ct`
@@ -362,10 +365,10 @@ kernel_do_install() {
#
install -d ${D}/${KERNEL_IMAGEDEST}
install -d ${D}/boot
- for type in ${KERNEL_IMAGETYPES} ; do
- install -m 0644 ${KERNEL_OUTPUT_DIR}/${type} ${D}/${KERNEL_IMAGEDEST}/${type}-${KERNEL_VERSION}
+ 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 ${type}-${KERNEL_VERSION} ${D}/${KERNEL_IMAGEDEST}/${type}
+ ln -sf ${imageType}-${KERNEL_VERSION} ${D}/${KERNEL_IMAGEDEST}/${imageType}
fi
done
install -m 0644 System.map ${D}/boot/System.map-${KERNEL_VERSION}
@@ -489,7 +492,7 @@ sysroot_stage_all () {
:
}
-KERNEL_CONFIG_COMMAND ?= "oe_runmake_call -C ${S} O=${B} oldnoconfig"
+KERNEL_CONFIG_COMMAND ?= "oe_runmake_call -C ${S} CC="${KERNEL_CC}" O=${B} oldnoconfig"
python check_oldest_kernel() {
oldest_kernel = d.getVar('OLDEST_KERNEL')
@@ -637,10 +640,10 @@ do_sizecheck() {
die "Invalid KERNEL_IMAGE_MAXSIZE: ${KERNEL_IMAGE_MAXSIZE}, should be an integer (The unit is Kbytes)"
fi
at_least_one_fits=
- for type in ${KERNEL_IMAGETYPES} ; do
- size=`du -ks ${B}/${KERNEL_OUTPUT_DIR}/$type | awk '{print $1}'`
+ for imageType in ${KERNEL_IMAGETYPES} ; do
+ size=`du -ks ${B}/${KERNEL_OUTPUT_DIR}/$imageType | awk '{print $1}'`
if [ $size -ge ${KERNEL_IMAGE_MAXSIZE} ]; then
- bbwarn "This kernel $type (size=$size(K) > ${KERNEL_IMAGE_MAXSIZE}(K)) is too big for your device."
+ bbwarn "This kernel $imageType (size=$size(K) > ${KERNEL_IMAGE_MAXSIZE}(K)) is too big for your device."
else
at_least_one_fits=y
fi
@@ -654,16 +657,7 @@ do_sizecheck[dirs] = "${B}"
addtask sizecheck before do_install after do_strip
-KERNEL_IMAGE_BASE_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
-# Don't include the DATETIME variable in the sstate package signatures
-KERNEL_IMAGE_BASE_NAME[vardepsexclude] = "DATETIME"
-KERNEL_IMAGE_SYMLINK_NAME ?= "${MACHINE}"
-MODULE_IMAGE_BASE_NAME ?= "modules-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
-MODULE_IMAGE_BASE_NAME[vardepsexclude] = "DATETIME"
-MODULE_TARBALL_BASE_NAME ?= "${MODULE_IMAGE_BASE_NAME}.tgz"
-# Don't include the DATETIME variable in the sstate package signatures
-MODULE_TARBALL_SYMLINK_NAME ?= "modules-${MACHINE}.tgz"
-MODULE_TARBALL_DEPLOY ?= "1"
+inherit kernel-artifact-names
kernel_do_deploy() {
deployDir="${DEPLOYDIR}"
@@ -672,34 +666,28 @@ kernel_do_deploy() {
mkdir "$deployDir"
fi
- for type in ${KERNEL_IMAGETYPES} ; do
- base_name=${type}-${KERNEL_IMAGE_BASE_NAME}
- install -m 0644 ${KERNEL_OUTPUT_DIR}/${type} $deployDir/${base_name}.bin
+ 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}
done
+
if [ ${MODULE_TARBALL_DEPLOY} = "1" ] && (grep -q -i -e '^CONFIG_MODULES=y$' .config); then
- mkdir -p ${D}/lib
- tar -cvzf $deployDir/${MODULE_TARBALL_BASE_NAME} -C ${D} lib
- ln -sf ${MODULE_TARBALL_BASE_NAME} $deployDir/${MODULE_TARBALL_SYMLINK_NAME}
+ 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
fi
- for type in ${KERNEL_IMAGETYPES} ; do
- base_name=${type}-${KERNEL_IMAGE_BASE_NAME}
- symlink_name=${type}-${KERNEL_IMAGE_SYMLINK_NAME}
- ln -sf ${base_name}.bin $deployDir/${symlink_name}.bin
- ln -sf ${base_name}.bin $deployDir/${type}
- done
-
- cd ${B}
- # Update deploy directory
- for type in ${KERNEL_IMAGETYPES} ; do
- if [ -e "${KERNEL_OUTPUT_DIR}/${type}.initramfs" ]; then
- echo "Copying deploy ${type} kernel-initramfs image and setting up links..."
- initramfs_base_name=${type}-${INITRAMFS_BASE_NAME}
- initramfs_symlink_name=${type}-initramfs-${MACHINE}
- install -m 0644 ${KERNEL_OUTPUT_DIR}/${type}.initramfs $deployDir/${initramfs_base_name}.bin
+ if [ ! -z "${INITRAMFS_IMAGE}" -a x"${INITRAMFS_IMAGE_BUNDLE}" = x1 ]; then
+ for imageType in ${KERNEL_IMAGETYPES} ; do
+ 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
- fi
- done
+ done
+ fi
}
do_deploy[cleandirs] = "${DEPLOYDIR}"
do_deploy[dirs] = "${DEPLOYDIR} ${B}"
diff --git a/meta/classes/libc-common.bbclass b/meta/classes/libc-common.bbclass
index 9ea2c03749a..0e351b67464 100644
--- a/meta/classes/libc-common.bbclass
+++ b/meta/classes/libc-common.bbclass
@@ -1,9 +1,5 @@
do_install() {
oe_runmake install_root=${D} install
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- install -m 0644 ${S}/sunrpc/rpcsvc/$h ${D}/${includedir}/rpcsvc/
- done
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"
diff --git a/meta/classes/libc-package.bbclass b/meta/classes/libc-package.bbclass
index 2e7cd25297e..9d09c7be6af 100644
--- a/meta/classes/libc-package.bbclass
+++ b/meta/classes/libc-package.bbclass
@@ -257,6 +257,8 @@ python package_do_split_gconvs () {
"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 " }
diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
index 06dd4a8c117..4cf7f074fc2 100644
--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -16,284 +16,6 @@ addtask populate_lic after do_patch before do_build
do_populate_lic[dirs] = "${LICSSTATEDIR}/${PN}"
do_populate_lic[cleandirs] = "${LICSSTATEDIR}"
-python write_package_manifest() {
- # Get list of installed packages
- license_image_dir = d.expand('${LICENSE_DIRECTORY}/${IMAGE_NAME}')
- bb.utils.mkdirhier(license_image_dir)
- from oe.rootfs import image_list_installed_packages
- from oe.utils import format_pkg_list
-
- pkgs = image_list_installed_packages(d)
- output = format_pkg_list(pkgs)
- open(os.path.join(license_image_dir, 'package.manifest'),
- 'w+').write(output)
-}
-
-python write_deploy_manifest() {
- license_deployed_manifest(d)
-}
-
-python license_create_manifest() {
- import oe.packagedata
- from oe.rootfs import image_list_installed_packages
-
- build_images_from_feeds = d.getVar('BUILD_IMAGES_FROM_FEEDS')
- if build_images_from_feeds == "1":
- return 0
-
- pkg_dic = {}
- for pkg in sorted(image_list_installed_packages(d)):
- pkg_info = os.path.join(d.getVar('PKGDATA_DIR'),
- 'runtime-reverse', pkg)
- pkg_name = os.path.basename(os.readlink(pkg_info))
-
- 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_dic[pkg_name]["LICENSE"] = pkg_dic[pkg_name][pkg_lic_name]
-
- rootfs_license_manifest = os.path.join(d.getVar('LICENSE_DIRECTORY'),
- d.getVar('IMAGE_NAME'), 'license.manifest')
- write_license_files(d, rootfs_license_manifest, pkg_dic)
-}
-
-def write_license_files(d, license_manifest, pkg_dic):
- import re
-
- bad_licenses = (d.getVar("INCOMPATIBLE_LICENSE") or "").split()
- bad_licenses = map(lambda l: canonical_license(d, l), bad_licenses)
- bad_licenses = expand_wildcard_licenses(d, bad_licenses)
-
- with open(license_manifest, "w") as license_file:
- for pkg in sorted(pkg_dic):
- if bad_licenses:
- try:
- (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))
- else:
- pkg_dic[pkg]["LICENSES"] = re.sub('[|&()*]', ' ', pkg_dic[pkg]["LICENSE"])
- pkg_dic[pkg]["LICENSES"] = re.sub(' *', ' ', pkg_dic[pkg]["LICENSES"])
- pkg_dic[pkg]["LICENSES"] = pkg_dic[pkg]["LICENSES"].split()
-
- if not "IMAGE_MANIFEST" in pkg_dic[pkg]:
- # Rootfs manifest
- license_file.write("PACKAGE NAME: %s\n" % pkg)
- license_file.write("PACKAGE VERSION: %s\n" % pkg_dic[pkg]["PV"])
- license_file.write("RECIPE NAME: %s\n" % pkg_dic[pkg]["PN"])
- license_file.write("LICENSE: %s\n\n" % pkg_dic[pkg]["LICENSE"])
-
- # 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":
- continue
- else:
- # Image manifest
- license_file.write("RECIPE NAME: %s\n" % pkg_dic[pkg]["PN"])
- license_file.write("VERSION: %s\n" % pkg_dic[pkg]["PV"])
- license_file.write("LICENSE: %s\n" % pkg_dic[pkg]["LICENSE"])
- license_file.write("FILES: %s\n\n" % pkg_dic[pkg]["FILES"])
-
- for lic in pkg_dic[pkg]["LICENSES"]:
- lic_file = os.path.join(d.getVar('LICENSE_DIRECTORY'),
- pkg_dic[pkg]["PN"], "generic_%s" %
- re.sub('\+', '', lic))
- # add explicity avoid of CLOSED license because isn't generic
- if lic == "CLOSED":
- 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"]))
-
- # Two options here:
- # - Just copy the manifest
- # - Copy the manifest and the license directories
- # With both options set we see a .5 M increase in core-image-minimal
- copy_lic_manifest = d.getVar('COPY_LIC_MANIFEST')
- copy_lic_dirs = d.getVar('COPY_LIC_DIRS')
- if copy_lic_manifest == "1":
- rootfs_license_dir = os.path.join(d.getVar('IMAGE_ROOTFS'),
- 'usr', 'share', 'common-licenses')
- bb.utils.mkdirhier(rootfs_license_dir)
- rootfs_license_manifest = os.path.join(rootfs_license_dir,
- os.path.split(license_manifest)[1])
- if not os.path.exists(rootfs_license_manifest):
- os.link(license_manifest, rootfs_license_manifest)
-
- if copy_lic_dirs == "1":
- for pkg in sorted(pkg_dic):
- pkg_rootfs_license_dir = os.path.join(rootfs_license_dir, pkg)
- bb.utils.mkdirhier(pkg_rootfs_license_dir)
- pkg_license_dir = os.path.join(d.getVar('LICENSE_DIRECTORY'),
- pkg_dic[pkg]["PN"])
-
- pkg_manifest_licenses = [canonical_license(d, lic) \
- for lic in pkg_dic[pkg]["LICENSES"]]
-
- 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)
-
- if re.match("^generic_.*$", lic):
- generic_lic = canonical_license(d,
- re.search("^generic_(.*)$", lic).group(1))
-
- # Do not copy generic license into package if isn't
- # declared into LICENSES of the package.
- if not re.sub('\+$', '', generic_lic) in \
- [re.sub('\+', '', lic) for lic in \
- pkg_manifest_licenses]:
- continue
-
- if oe.license.license_ok(generic_lic,
- bad_licenses) == False:
- continue
-
- if not os.path.exists(rootfs_license):
- os.link(pkg_license, rootfs_license)
-
- if not os.path.exists(pkg_rootfs_license):
- os.symlink(os.path.join('..', lic), pkg_rootfs_license)
- else:
- if (oe.license.license_ok(canonical_license(d,
- lic), bad_licenses) == False or
- os.path.exists(pkg_rootfs_license)):
- continue
-
- os.link(pkg_license, pkg_rootfs_license)
-
-
-def license_deployed_manifest(d):
- """
- Write the license manifest for the deployed recipes.
- The deployed recipes usually includes the bootloader
- and extra files to boot the target.
- """
-
- dep_dic = {}
- man_dic = {}
- lic_dir = d.getVar("LICENSE_DIRECTORY")
-
- dep_dic = get_deployed_dependencies(d)
- for dep in dep_dic.keys():
- man_dic[dep] = {}
- # It is necessary to mark this will be used for image manifest
- man_dic[dep]["IMAGE_MANIFEST"] = True
- man_dic[dep]["PN"] = dep
- man_dic[dep]["FILES"] = \
- " ".join(get_deployed_files(dep_dic[dep]))
- with open(os.path.join(lic_dir, dep, "recipeinfo"), "r") as f:
- for line in f.readlines():
- key,val = line.split(": ", 1)
- man_dic[dep][key] = val[:-1]
-
- lic_manifest_dir = os.path.join(d.getVar('LICENSE_DIRECTORY'),
- d.getVar('IMAGE_NAME'))
- bb.utils.mkdirhier(lic_manifest_dir)
- image_license_manifest = os.path.join(lic_manifest_dir, 'image_license.manifest')
- write_license_files(d, image_license_manifest, man_dic)
-
-def get_deployed_dependencies(d):
- """
- Get all the deployed dependencies of an image
- """
-
- deploy = {}
- # Get all the dependencies for the current task (rootfs).
- # Also get EXTRA_IMAGEDEPENDS because the bootloader is
- # usually in this var and not listed in rootfs.
- # At last, get the dependencies from boot classes because
- # it might contain the bootloader.
- taskdata = d.getVar("BB_TASKDEPDATA", False)
- depends = list(set([dep[0] for dep
- in list(taskdata.values())
- if not dep[0].endswith("-native")]))
- extra_depends = d.getVar("EXTRA_IMAGEDEPENDS")
- boot_depends = get_boot_dependencies(d)
- depends.extend(extra_depends.split())
- depends.extend(boot_depends)
- depends = list(set(depends))
-
- # To verify what was deployed it checks the rootfs dependencies against
- # the SSTATE_MANIFESTS for "deploy" task.
- # The manifest file name contains the arch. Because we are not running
- # in the recipe context it is necessary to check every arch used.
- sstate_manifest_dir = d.getVar("SSTATE_MANIFESTS")
- archs = list(set(d.getVar("SSTATE_ARCHS").split()))
- for dep in depends:
- # Some recipes have an arch on their own, so we try that first.
- special_arch = d.getVar("PACKAGE_ARCH_pn-%s" % dep)
- if special_arch:
- sstate_manifest_file = os.path.join(sstate_manifest_dir,
- "manifest-%s-%s.deploy" % (special_arch, dep))
- if os.path.exists(sstate_manifest_file):
- deploy[dep] = sstate_manifest_file
- continue
-
- for arch in archs:
- sstate_manifest_file = os.path.join(sstate_manifest_dir,
- "manifest-%s-%s.deploy" % (arch, dep))
- if os.path.exists(sstate_manifest_file):
- deploy[dep] = sstate_manifest_file
- break
-
- return deploy
-get_deployed_dependencies[vardepsexclude] = "BB_TASKDEPDATA"
-
-def get_boot_dependencies(d):
- """
- Return the dependencies from boot tasks
- """
-
- depends = []
- taskdepdata = d.getVar("BB_TASKDEPDATA", False)
- # Only bootimg includes the depends flag
- boot_depends_string = d.getVarFlag("do_bootimg", "depends") or ""
- boot_depends = [dep.split(":")[0] for dep
- in boot_depends_string.split()
- if not dep.split(":")[0].endswith("-native")]
- for dep in boot_depends:
- info_file = os.path.join(d.getVar("LICENSE_DIRECTORY"),
- dep, "recipeinfo")
- # If the recipe and dependency name is the same
- if os.path.exists(info_file):
- depends.append(dep)
- # We need to search for the provider of the dependency
- else:
- for taskdep in taskdepdata.values():
- # The fifth field contains what the task provides
- if dep in taskdep[4]:
- info_file = os.path.join(
- d.getVar("LICENSE_DIRECTORY"),
- taskdep[0], "recipeinfo")
- if os.path.exists(info_file):
- depends.append(taskdep[0])
- break
- return depends
-get_boot_dependencies[vardepsexclude] = "BB_TASKDEPDATA"
-
-def get_deployed_files(man_file):
- """
- Get the files deployed from the sstate manifest
- """
-
- dep_files = []
- excluded_files = []
- with open(man_file, "r") as manifest:
- all_files = manifest.read()
- for f in all_files.splitlines():
- if ((not (os.path.islink(f) or os.path.isdir(f))) and
- not os.path.basename(f) in excluded_files):
- dep_files.append(os.path.basename(f))
- return dep_files
-
python do_populate_lic() {
"""
Populate LICENSE_DIRECTORY with licenses.
@@ -340,6 +62,9 @@ def add_package_and_files(d):
# 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))
@@ -480,7 +205,9 @@ def find_license_files(d):
for url in lic_files.split():
try:
- (type, host, path, user, pswd, parm) = bb.fetch.decodeurl(url)
+ (method, host, path, user, pswd, parm) = bb.fetch.decodeurl(url)
+ if method != "file" or not path:
+ raise bb.fetch.MalformedUrl()
except bb.fetch.MalformedUrl:
bb.fatal("%s: LIC_FILES_CHKSUM contains an invalid URL: %s" % (d.getVar('PF'), url))
# We want the license filename and path
@@ -672,11 +399,7 @@ SSTATETASKS += "do_populate_lic"
do_populate_lic[sstate-inputdirs] = "${LICSSTATEDIR}"
do_populate_lic[sstate-outputdirs] = "${LICENSE_DIRECTORY}/"
-ROOTFS_POSTPROCESS_COMMAND_prepend = "write_package_manifest; license_create_manifest; "
-do_rootfs[recrdeptask] += "do_populate_lic"
-
-IMAGE_POSTPROCESS_COMMAND_prepend = "write_deploy_manifest; "
-do_image[recrdeptask] += "do_populate_lic"
+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
new file mode 100644
index 00000000000..f0fbb763f1d
--- /dev/null
+++ b/meta/classes/license_image.bbclass
@@ -0,0 +1,238 @@
+python write_package_manifest() {
+ # Get list of installed packages
+ license_image_dir = d.expand('${LICENSE_DIRECTORY}/${IMAGE_NAME}')
+ bb.utils.mkdirhier(license_image_dir)
+ from oe.rootfs import image_list_installed_packages
+ from oe.utils import format_pkg_list
+
+ pkgs = image_list_installed_packages(d)
+ output = format_pkg_list(pkgs)
+ open(os.path.join(license_image_dir, 'package.manifest'),
+ 'w+').write(output)
+}
+
+python license_create_manifest() {
+ import oe.packagedata
+ from oe.rootfs import image_list_installed_packages
+
+ build_images_from_feeds = d.getVar('BUILD_IMAGES_FROM_FEEDS')
+ if build_images_from_feeds == "1":
+ return 0
+
+ pkg_dic = {}
+ for pkg in sorted(image_list_installed_packages(d)):
+ pkg_info = os.path.join(d.getVar('PKGDATA_DIR'),
+ 'runtime-reverse', pkg)
+ pkg_name = os.path.basename(os.readlink(pkg_info))
+
+ 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_dic[pkg_name]["LICENSE"] = pkg_dic[pkg_name][pkg_lic_name]
+
+ rootfs_license_manifest = os.path.join(d.getVar('LICENSE_DIRECTORY'),
+ d.getVar('IMAGE_NAME'), 'license.manifest')
+ write_license_files(d, rootfs_license_manifest, pkg_dic)
+}
+
+def write_license_files(d, license_manifest, pkg_dic):
+ import re
+
+ bad_licenses = (d.getVar("INCOMPATIBLE_LICENSE") or "").split()
+ bad_licenses = map(lambda l: canonical_license(d, l), bad_licenses)
+ bad_licenses = expand_wildcard_licenses(d, bad_licenses)
+
+ with open(license_manifest, "w") as license_file:
+ for pkg in sorted(pkg_dic):
+ if bad_licenses:
+ try:
+ (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))
+ else:
+ pkg_dic[pkg]["LICENSES"] = re.sub('[|&()*]', ' ', pkg_dic[pkg]["LICENSE"])
+ pkg_dic[pkg]["LICENSES"] = re.sub(' *', ' ', pkg_dic[pkg]["LICENSES"])
+ pkg_dic[pkg]["LICENSES"] = pkg_dic[pkg]["LICENSES"].split()
+
+ if not "IMAGE_MANIFEST" in pkg_dic[pkg]:
+ # Rootfs manifest
+ license_file.write("PACKAGE NAME: %s\n" % pkg)
+ license_file.write("PACKAGE VERSION: %s\n" % pkg_dic[pkg]["PV"])
+ license_file.write("RECIPE NAME: %s\n" % pkg_dic[pkg]["PN"])
+ license_file.write("LICENSE: %s\n\n" % pkg_dic[pkg]["LICENSE"])
+
+ # 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":
+ continue
+ else:
+ # Image manifest
+ license_file.write("RECIPE NAME: %s\n" % pkg_dic[pkg]["PN"])
+ license_file.write("VERSION: %s\n" % pkg_dic[pkg]["PV"])
+ license_file.write("LICENSE: %s\n" % pkg_dic[pkg]["LICENSE"])
+ license_file.write("FILES: %s\n\n" % pkg_dic[pkg]["FILES"])
+
+ for lic in pkg_dic[pkg]["LICENSES"]:
+ lic_file = os.path.join(d.getVar('LICENSE_DIRECTORY'),
+ pkg_dic[pkg]["PN"], "generic_%s" %
+ re.sub('\+', '', lic))
+ # add explicity avoid of CLOSED license because isn't generic
+ if lic == "CLOSED":
+ 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"]))
+
+ # Two options here:
+ # - Just copy the manifest
+ # - Copy the manifest and the license directories
+ # With both options set we see a .5 M increase in core-image-minimal
+ copy_lic_manifest = d.getVar('COPY_LIC_MANIFEST')
+ copy_lic_dirs = d.getVar('COPY_LIC_DIRS')
+ if copy_lic_manifest == "1":
+ rootfs_license_dir = os.path.join(d.getVar('IMAGE_ROOTFS'),
+ 'usr', 'share', 'common-licenses')
+ bb.utils.mkdirhier(rootfs_license_dir)
+ rootfs_license_manifest = os.path.join(rootfs_license_dir,
+ os.path.split(license_manifest)[1])
+ if not os.path.exists(rootfs_license_manifest):
+ os.link(license_manifest, rootfs_license_manifest)
+
+ if copy_lic_dirs == "1":
+ for pkg in sorted(pkg_dic):
+ pkg_rootfs_license_dir = os.path.join(rootfs_license_dir, pkg)
+ bb.utils.mkdirhier(pkg_rootfs_license_dir)
+ pkg_license_dir = os.path.join(d.getVar('LICENSE_DIRECTORY'),
+ pkg_dic[pkg]["PN"])
+
+ pkg_manifest_licenses = [canonical_license(d, lic) \
+ for lic in pkg_dic[pkg]["LICENSES"]]
+
+ 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)
+
+ if re.match("^generic_.*$", lic):
+ generic_lic = canonical_license(d,
+ re.search("^generic_(.*)$", lic).group(1))
+
+ # Do not copy generic license into package if isn't
+ # declared into LICENSES of the package.
+ if not re.sub('\+$', '', generic_lic) in \
+ [re.sub('\+', '', lic) for lic in \
+ pkg_manifest_licenses]:
+ continue
+
+ if oe.license.license_ok(generic_lic,
+ bad_licenses) == False:
+ continue
+
+ if not os.path.exists(rootfs_license):
+ os.link(pkg_license, rootfs_license)
+
+ if not os.path.exists(pkg_rootfs_license):
+ os.symlink(os.path.join('..', lic), pkg_rootfs_license)
+ else:
+ if (oe.license.license_ok(canonical_license(d,
+ lic), bad_licenses) == False or
+ os.path.exists(pkg_rootfs_license)):
+ continue
+
+ os.link(pkg_license, pkg_rootfs_license)
+
+
+def license_deployed_manifest(d):
+ """
+ Write the license manifest for the deployed recipes.
+ The deployed recipes usually includes the bootloader
+ and extra files to boot the target.
+ """
+
+ dep_dic = {}
+ man_dic = {}
+ lic_dir = d.getVar("LICENSE_DIRECTORY")
+
+ dep_dic = get_deployed_dependencies(d)
+ for dep in dep_dic.keys():
+ man_dic[dep] = {}
+ # It is necessary to mark this will be used for image manifest
+ man_dic[dep]["IMAGE_MANIFEST"] = True
+ man_dic[dep]["PN"] = dep
+ man_dic[dep]["FILES"] = \
+ " ".join(get_deployed_files(dep_dic[dep]))
+ with open(os.path.join(lic_dir, dep, "recipeinfo"), "r") as f:
+ for line in f.readlines():
+ key,val = line.split(": ", 1)
+ man_dic[dep][key] = val[:-1]
+
+ lic_manifest_dir = os.path.join(d.getVar('LICENSE_DIRECTORY'),
+ d.getVar('IMAGE_NAME'))
+ bb.utils.mkdirhier(lic_manifest_dir)
+ image_license_manifest = os.path.join(lic_manifest_dir, 'image_license.manifest')
+ write_license_files(d, image_license_manifest, man_dic)
+
+def get_deployed_dependencies(d):
+ """
+ Get all the deployed dependencies of an image
+ """
+
+ deploy = {}
+ # Get all the dependencies for the current task (rootfs).
+ # Also get EXTRA_IMAGEDEPENDS because the bootloader is
+ # usually in this var and not listed in rootfs.
+ # At last, get the dependencies from boot classes because
+ # it might contain the bootloader.
+ taskdata = d.getVar("BB_TASKDEPDATA", False)
+ depends = list(set([dep[0] for dep
+ in list(taskdata.values())
+ if not dep[0].endswith("-native")]))
+
+ # To verify what was deployed it checks the rootfs dependencies against
+ # the SSTATE_MANIFESTS for "deploy" task.
+ # The manifest file name contains the arch. Because we are not running
+ # in the recipe context it is necessary to check every arch used.
+ sstate_manifest_dir = d.getVar("SSTATE_MANIFESTS")
+ archs = list(set(d.getVar("SSTATE_ARCHS").split()))
+ for dep in depends:
+ for arch in archs:
+ sstate_manifest_file = os.path.join(sstate_manifest_dir,
+ "manifest-%s-%s.deploy" % (arch, dep))
+ if os.path.exists(sstate_manifest_file):
+ deploy[dep] = sstate_manifest_file
+ break
+
+ return deploy
+get_deployed_dependencies[vardepsexclude] = "BB_TASKDEPDATA"
+
+def get_deployed_files(man_file):
+ """
+ Get the files deployed from the sstate manifest
+ """
+
+ dep_files = []
+ excluded_files = []
+ with open(man_file, "r") as manifest:
+ all_files = manifest.read()
+ for f in all_files.splitlines():
+ if ((not (os.path.islink(f) or os.path.isdir(f))) and
+ not os.path.basename(f) in excluded_files):
+ dep_files.append(os.path.basename(f))
+ return dep_files
+
+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)
+}
+
+addtask populate_lic_deploy before do_build after do_image_complete
+do_populate_lic_deploy[recrdeptask] += "do_populate_lic do_deploy"
+
diff --git a/meta/classes/linuxloader.bbclass b/meta/classes/linuxloader.bbclass
index 8f30eb32e76..b4c413494a2 100644
--- a/meta/classes/linuxloader.bbclass
+++ b/meta/classes/linuxloader.bbclass
@@ -1,70 +1,61 @@
-LDSO_TCLIBC = "glibc"
-LDSO_TCLIBC_libc-musl = "musl"
-LDSO_TCLIBC_libc-baremetal = "musl"
+def get_musl_loader(d):
+ import re
+ dynamic_loader = None
-linuxloader_glibc () {
- case ${TARGET_ARCH} in
- powerpc | microblaze )
- dynamic_loader="${base_libdir}/ld.so.1"
- ;;
- mipsisa32r6el | mipsisa32r6 | mipsisa64r6el | mipsisa64r6)
- dynamic_loader="${base_libdir}/ld-linux-mipsn8.so.1"
- ;;
- mips* )
- dynamic_loader="${base_libdir}/ld.so.1"
- ;;
- powerpc64)
- dynamic_loader="${base_libdir}/ld64.so.1"
- ;;
- x86_64)
- dynamic_loader="${base_libdir}/ld-linux-x86-64.so.2"
- ;;
- i*86 )
- dynamic_loader="${base_libdir}/ld-linux.so.2"
- ;;
- arm )
- dynamic_loader="${base_libdir}/ld-linux.so.3"
- ;;
- * )
- dynamic_loader="/unknown_dynamic_linker"
- ;;
- esac
- echo $dynamic_loader
-}
+ 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"
+ 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"
+ 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"
+ elif targetarch == "x86_64":
+ dynamic_loader = "${base_libdir}/ld-musl-x86_64.so.1"
+ elif re.search("i.86", targetarch):
+ dynamic_loader = "${base_libdir}/ld-musl-i386.so.1"
+ elif targetarch.startswith("arm"):
+ dynamic_loader = "${base_libdir}/ld-musl-arm${ARMPKGSFX_ENDIAN}${ARMPKGSFX_EABI}.so.1"
+ elif targetarch.startswith("aarch64"):
+ dynamic_loader = "${base_libdir}/ld-musl-aarch64${ARMPKGSFX_ENDIAN_64}.so.1"
+ return dynamic_loader
-linuxloader_musl () {
- case ${TARGET_ARCH} in
- microblaze* )
- dynamic_loader="${base_libdir}/ld-musl-microblaze${@bb.utils.contains('TUNE_FEATURES', 'bigendian', '', 'el' ,d)}.so.1"
- ;;
- mips* )
- dynamic_loader="${base_libdir}/ld-musl-mips${ABIEXTENSION}${MIPSPKGSFX_BYTE}${MIPSPKGSFX_R6}${MIPSPKGSFX_ENDIAN}${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}.so.1"
- ;;
- powerpc )
- dynamic_loader="${base_libdir}/ld-musl-powerpc${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}.so.1"
- ;;
- powerpc64 )
- dynamic_loader="${base_libdir}/ld-musl-powerpc64.so.1"
- ;;
- x86_64 )
- dynamic_loader="${base_libdir}/ld-musl-x86_64.so.1"
- ;;
- i*86 )
- dynamic_loader="${base_libdir}/ld-musl-i386.so.1"
- ;;
- arm* )
- dynamic_loader="${base_libdir}/ld-musl-arm${ARMPKGSFX_ENDIAN}${ARMPKGSFX_EABI}.so.1"
- ;;
- aarch64* )
- dynamic_loader="${base_libdir}/ld-musl-aarch64${ARMPKGSFX_ENDIAN_64}.so.1"
- ;;
- * )
- dynamic_loader="/unknown_dynamic_linker"
- ;;
- esac
- echo $dynamic_loader
-}
+def get_glibc_loader(d):
+ import re
-linuxloader () {
- linuxloader_${LDSO_TCLIBC}
-}
+ dynamic_loader = None
+ targetarch = d.getVar("TARGET_ARCH")
+ if targetarch in ["powerpc", "microblaze"]:
+ dynamic_loader = "${base_libdir}/ld.so.1"
+ elif targetarch in ["mipsisa32r6el", "mipsisa32r6", "mipsisa64r6el", "mipsisa64r6"]:
+ dynamic_loader = "${base_libdir}/ld-linux-mipsn8.so.1"
+ elif targetarch.startswith("mips"):
+ dynamic_loader = "${base_libdir}/ld.so.1"
+ elif targetarch == "powerpc64":
+ dynamic_loader = "${base_libdir}/ld64.so.1"
+ elif targetarch == "x86_64":
+ dynamic_loader = "${base_libdir}/ld-linux-x86-64.so.2"
+ 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"
+ elif targetarch.startswith("aarch64"):
+ dynamic_loader = "${base_libdir}/ld-linux-aarch64${ARMPKGSFX_ENDIAN_64}.so.1"
+ return dynamic_loader
+
+def get_linuxloader(d):
+ overrides = d.getVar("OVERRIDES").split(":")
+
+ if "libc-baremetal" in overrides:
+ return None
+
+ if "libc-musl" in overrides:
+ dynamic_loader = get_musl_loader(d)
+ else:
+ dynamic_loader = get_glibc_loader(d)
+ return dynamic_loader
+
+get_linuxloader[vardepvalue] = "${@get_linuxloader(d)}"
+get_musl_loader[vardepvalue] = "${@get_musl_loader(d)}"
+get_glibc_loader[vardepvalue] = "${@get_glibc_loader(d)}"
diff --git a/meta/classes/manpages.bbclass b/meta/classes/manpages.bbclass
index d16237b8983..50c254763e8 100644
--- a/meta/classes/manpages.bbclass
+++ b/meta/classes/manpages.bbclass
@@ -3,3 +3,35 @@
# 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)}"
+
+inherit qemu
+
+# usually manual files are packaged to ${PN}-doc except man-pages
+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)}"
+
+pkg_postinst_append_${MAN_PKG} () {
+ # 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
+ sed "s:\(\s\)/:\1$D/:g" $D${sysconfdir}/man_db.conf | ${@qemu_run_binary(d, '$D', '${bindir}/mandb')} -C - -u -q $D${mandir}
+ mkdir -p $D${localstatedir}/cache/man
+ mv $D${mandir}/index.db $D${localstatedir}/cache/man
+ else
+ $INTERCEPT_DIR/postinst_intercept delay_to_first_boot ${PKG} mlprefix=${MLPREFIX}
+ fi
+ else
+ mandb -q
+ fi
+ fi
+}
+
+pkg_postrm_append_${MAN_PKG} () {
+ # 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
+ fi
+}
diff --git a/meta/classes/meson.bbclass b/meta/classes/meson.bbclass
index 2d7ee4fffc0..ed08a4058cb 100644
--- a/meta/classes/meson.bbclass
+++ b/meta/classes/meson.bbclass
@@ -1,4 +1,4 @@
-inherit python3native
+inherit siteinfo python3native
DEPENDS_append = " meson-native ninja-native"
@@ -24,25 +24,50 @@ MESONOPTS = " --prefix ${prefix} \
--infodir ${@noprefix('infodir', d)} \
--sysconfdir ${sysconfdir} \
--localstatedir ${localstatedir} \
- --sharedstatedir ${sharedstatedir}"
+ --sharedstatedir ${sharedstatedir} \
+ -Dc_args='${BUILD_CPPFLAGS} ${BUILD_CFLAGS}' \
+ -Dc_link_args='${BUILD_LDFLAGS}' \
+ -Dcpp_args='${BUILD_CPPFLAGS} ${BUILD_CXXFLAGS}' \
+ -Dcpp_link_args='${BUILD_LDFLAGS}'"
MESON_TOOLCHAIN_ARGS = "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
MESON_C_ARGS = "${MESON_TOOLCHAIN_ARGS} ${CFLAGS}"
MESON_CPP_ARGS = "${MESON_TOOLCHAIN_ARGS} ${CXXFLAGS}"
MESON_LINK_ARGS = "${MESON_TOOLCHAIN_ARGS} ${LDFLAGS}"
-# both are required but not used by meson
-MESON_HOST_ENDIAN = "bogus-endian"
-MESON_TARGET_ENDIAN = "bogus-endian"
-
-EXTRA_OEMESON += "${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"
def meson_array(var, d):
- return "', '".join(d.getVar(var).split()).join(("'", "'"))
+ 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 == 'mipsel':
+ return 'mips'
+ elif re.match(r"i[3-6]86", arch):
+ return "x86"
+ 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))
addtask write_config before do_configure
do_write_config[vardeps] += "MESON_C_ARGS MESON_CPP_ARGS MESON_LINK_ARGS CC CXX LD AR NM STRIP READELF"
@@ -50,68 +75,66 @@ do_write_config() {
# This needs to be Py to split the args into single-element lists
cat >${WORKDIR}/meson.cross <<EOF
[binaries]
-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)}]
+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)}
pkgconfig = 'pkg-config'
[properties]
needs_exe_wrapper = true
-c_args = [${@meson_array('MESON_C_ARGS', d)}]
-c_link_args = [${@meson_array('MESON_LINK_ARGS', d)}]
-cpp_args = [${@meson_array('MESON_CPP_ARGS', d)}]
-cpp_link_args = [${@meson_array('MESON_LINK_ARGS', d)}]
+c_args = ${@meson_array('MESON_C_ARGS', d)}
+c_link_args = ${@meson_array('MESON_LINK_ARGS', d)}
+cpp_args = ${@meson_array('MESON_CPP_ARGS', d)}
+cpp_link_args = ${@meson_array('MESON_LINK_ARGS', d)}
gtkdoc_exe_wrapper = '${B}/gtkdoc-qemuwrapper'
[host_machine]
system = '${HOST_OS}'
-cpu_family = '${HOST_ARCH}'
+cpu_family = '${@meson_cpu_family('HOST_ARCH', d)}'
cpu = '${HOST_ARCH}'
-endian = '${MESON_HOST_ENDIAN}'
+endian = '${@meson_endian('HOST', d)}'
[target_machine]
system = '${TARGET_OS}'
-cpu_family = '${TARGET_ARCH}'
+cpu_family = '${@meson_cpu_family('TARGET_ARCH', d)}'
cpu = '${TARGET_ARCH}'
-endian = '${MESON_TARGET_ENDIAN}'
+endian = '${@meson_endian('TARGET', d)}'
EOF
}
CONFIGURE_FILES = "meson.build"
meson_do_configure() {
+ bbnote Executing meson ${EXTRA_OEMESON}...
if ! meson ${MESONOPTS} "${MESON_SOURCEPATH}" "${B}" ${MESON_CROSS_FILE} ${EXTRA_OEMESON}; then
- cat ${B}/meson-logs/meson-log.txt
bbfatal_log meson failed
fi
}
-meson_do_configure_prepend_class-target() {
+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. Note that we do *not* set CFLAGS,
- # LDFLAGS, etc. as they will be slurped in by meson and applied to the
- # target build, causing errors.
+ # override these for the target build.
export CC="${BUILD_CC}"
export CXX="${BUILD_CXX}"
export LD="${BUILD_LD}"
export AR="${BUILD_AR}"
+ # 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() {
- # 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 nativesdk build. Note that we do *not* set CFLAGS,
- # LDFLAGS, etc. as they will be slurped in by meson and applied to the
- # nativesdk build, causing errors.
- export CC="${BUILD_CC}"
- export CXX="${BUILD_CXX}"
- export LD="${BUILD_LD}"
- export AR="${BUILD_AR}"
+ override_native_tools
}
meson_do_configure_prepend_class-native() {
@@ -120,11 +143,11 @@ meson_do_configure_prepend_class-native() {
do_compile[progress] = "outof:^\[(\d+)/(\d+)\]\s+"
meson_do_compile() {
- ninja ${PARALLEL_MAKE}
+ ninja -v ${PARALLEL_MAKE}
}
meson_do_install() {
- DESTDIR='${D}' ninja ${PARALLEL_MAKEINST} install
+ DESTDIR='${D}' ninja -v ${PARALLEL_MAKEINST} install
}
EXPORT_FUNCTIONS do_configure do_compile do_install
diff --git a/meta/classes/mime.bbclass b/meta/classes/mime.bbclass
index 0df15831c46..6c7b868f799 100644
--- a/meta/classes/mime.bbclass
+++ b/meta/classes/mime.bbclass
@@ -53,5 +53,5 @@ python populate_packages_append () {
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, " shared-mime-info-data")
+ d.appendVar('RDEPENDS_' + pkg, " " + d.getVar('MLPREFIX')+"shared-mime-info-data")
}
diff --git a/meta/classes/mirrors.bbclass b/meta/classes/mirrors.bbclass
index b331afc5d0e..87bba41472e 100644
--- a/meta/classes/mirrors.bbclass
+++ b/meta/classes/mirrors.bbclass
@@ -1,4 +1,5 @@
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 \
@@ -68,7 +69,7 @@ ${CPAN_MIRROR} http://search.cpan.org/CPAN/ \n \
MIRRORS += "\
git://salsa.debian.org/.* git://salsa.debian.org/PATH;protocol=https \n \
-git://git.gnome.org/.* git://git.gnome.org/browse/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 \
diff --git a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass
index 519c1a55ba2..6c6499a23e6 100644
--- a/meta/classes/multilib.bbclass
+++ b/meta/classes/multilib.bbclass
@@ -11,8 +11,12 @@ python multilib_virtclass_handler () {
# There should only be one kernel in multilib configs
# We also skip multilib setup for module packages.
provides = (e.data.getVar("PROVIDES") or "").split()
- if "virtual/kernel" in provides or bb.data.inherits_class('module-base', e.data) or "make-mod-scripts" in e.data.getVar("PN"):
- raise bb.parse.SkipRecipe("We shouldn't have multilib variants for the kernel")
+ non_ml_recipes = d.getVar('NON_MULTILIB_RECIPES').split()
+ bpn = e.data.getVar("BPN")
+ if "virtual/kernel" in provides or \
+ bb.data.inherits_class('module-base', e.data) or \
+ bpn in non_ml_recipes:
+ raise bb.parse.SkipRecipe("We shouldn't have multilib variants for %s" % bpn)
save_var_name=e.data.getVar("MULTILIB_SAVE_VARNAME") or ""
for name in save_var_name.split():
@@ -35,6 +39,10 @@ python multilib_virtclass_handler () {
return
if bb.data.inherits_class('cross-canadian', e.data):
+ # Multilib cross-candian should use the same nativesdk sysroot without MLPREFIX
+ e.data.setVar("RECIPE_SYSROOT", "${WORKDIR}/recipe-sysroot")
+ e.data.setVar("STAGING_DIR_TARGET", "${WORKDIR}/recipe-sysroot")
+ e.data.setVar("STAGING_DIR_HOST", "${WORKDIR}/recipe-sysroot")
e.data.setVar("MLPREFIX", variant + "-")
override = ":virtclass-multilib-" + variant
e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override)
@@ -46,10 +54,10 @@ python multilib_virtclass_handler () {
if bb.data.inherits_class('nativesdk', e.data) or bb.data.inherits_class('crosssdk', e.data):
raise bb.parse.SkipRecipe("We can't extend nativesdk recipes")
- if bb.data.inherits_class('allarch', e.data) and not bb.data.inherits_class('packagegroup', e.data):
+ if bb.data.inherits_class('allarch', e.data) and not d.getVar('MULTILIB_VARIANTS') \
+ and not bb.data.inherits_class('packagegroup', e.data):
raise bb.parse.SkipRecipe("Don't extend allarch recipes which are not packagegroups")
-
# Expand this since this won't work correctly once we set a multilib into place
e.data.setVar("ALL_MULTILIB_PACKAGE_ARCHS", e.data.getVar("ALL_MULTILIB_PACKAGE_ARCHS"))
@@ -65,12 +73,11 @@ python multilib_virtclass_handler () {
e.data.setVar("PN", variant + "-" + e.data.getVar("PN", False))
e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override)
- # Expand the WHITELISTs with multilib prefix
- for whitelist in ["WHITELIST_GPL-3.0", "LGPLv2_WHITELIST_GPL-3.0"]:
- pkgs = e.data.getVar(whitelist)
- for pkg in pkgs.split():
- pkgs += " " + variant + "-" + pkg
- e.data.setVar(whitelist, pkgs)
+ # 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)
# DEFAULTTUNE can change TARGET_ARCH override so expand this now before update_data
newtune = e.data.getVar("DEFAULTTUNE_" + "virtclass-multilib-" + variant, False)
@@ -117,6 +124,7 @@ python __anonymous () {
clsextend.map_variable("INITSCRIPT_PACKAGES")
clsextend.map_variable("USERADD_PACKAGES")
clsextend.map_variable("SYSTEMD_PACKAGES")
+ clsextend.map_variable("UPDATERCPN")
}
PACKAGEFUNCS_append = " do_package_qa_multilib"
@@ -131,7 +139,8 @@ python do_package_qa_multilib() {
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')):
+ (not i.startswith("rtld")) and (not i.startswith('kernel-vmlinux')) \
+ and (not i.startswith("kernel-image")):
candidates.append(i)
if len(candidates) > 0:
msg = "%s package %s - suspicious values '%s' in %s" \
@@ -142,6 +151,10 @@ python do_package_qa_multilib() {
if not ml:
return
+ # exception for ${MLPREFIX}target-sdk-provides-dummy
+ if 'target-sdk-provides-dummy' in d.getVar('PN'):
+ return
+
packages = d.getVar('PACKAGES')
for pkg in packages.split():
check_mlprefix(pkg, 'RDEPENDS', ml)
diff --git a/meta/classes/multilib_global.bbclass b/meta/classes/multilib_global.bbclass
index d2ec1adfea6..649cc096b76 100644
--- a/meta/classes/multilib_global.bbclass
+++ b/meta/classes/multilib_global.bbclass
@@ -164,10 +164,11 @@ python multilib_virtclass_handler_global () {
if variant:
return
+ non_ml_recipes = d.getVar('NON_MULTILIB_RECIPES').split()
+
if bb.data.inherits_class('kernel', e.data) or \
bb.data.inherits_class('module-base', e.data) or \
- (bb.data.inherits_class('allarch', e.data) and\
- not bb.data.inherits_class('packagegroup', e.data)):
+ d.getVar('BPN') in non_ml_recipes:
variants = (e.data.getVar("MULTILIB_VARIANTS") or "").split()
import oe.classextend
diff --git a/meta/classes/multilib_script.bbclass b/meta/classes/multilib_script.bbclass
new file mode 100644
index 00000000000..51c9fcc12c5
--- /dev/null
+++ b/meta/classes/multilib_script.bbclass
@@ -0,0 +1,32 @@
+#
+# Recipe needs to set MULTILIB_SCRIPTS in the form <pkgname>:<scriptname>, e.g.
+# MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/file1 ${PN}:${base_bindir}/file2"
+# to indicate which script files to process from which packages.
+#
+
+inherit update-alternatives
+
+MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}"
+
+PACKAGE_PREPROCESS_FUNCS += "multilibscript_rename"
+
+multilibscript_rename() {
+ :
+}
+
+python () {
+ # Do nothing if multilib isn't being used
+ if not d.getVar("MULTILIB_VARIANTS"):
+ return
+ # Do nothing for native/cross
+ if bb.data.inherits_class('native', d) or bb.data.inherits_class('cross', d):
+ return
+
+ for entry in (d.getVar("MULTILIB_SCRIPTS", False) or "").split():
+ pkg, script = entry.split(":")
+ scriptname = os.path.basename(script)
+ d.appendVar("ALTERNATIVE_" + pkg, 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}")
+}
diff --git a/meta/classes/native.bbclass b/meta/classes/native.bbclass
index a911f2aebdb..ddccfe2e1d4 100644
--- a/meta/classes/native.bbclass
+++ b/meta/classes/native.bbclass
@@ -44,7 +44,6 @@ CPPFLAGS = "${BUILD_CPPFLAGS}"
CFLAGS = "${BUILD_CFLAGS}"
CXXFLAGS = "${BUILD_CXXFLAGS}"
LDFLAGS = "${BUILD_LDFLAGS}"
-LDFLAGS_build-darwin = "-L${STAGING_LIBDIR_NATIVE} "
STAGING_BINDIR = "${STAGING_BINDIR_NATIVE}"
STAGING_BINDIR_CROSS = "${STAGING_BINDIR_NATIVE}"
@@ -78,6 +77,7 @@ exec_prefix = "${STAGING_DIR_NATIVE}${prefix_native}"
bindir = "${STAGING_BINDIR_NATIVE}"
sbindir = "${STAGING_SBINDIR_NATIVE}"
+base_libdir = "${STAGING_LIBDIR_NATIVE}"
libdir = "${STAGING_LIBDIR_NATIVE}"
includedir = "${STAGING_INCDIR_NATIVE}"
sysconfdir = "${STAGING_ETCDIR_NATIVE}"
@@ -89,6 +89,7 @@ export lt_cv_sys_lib_dlsearch_path_spec = "${libdir} ${base_libdir} /lib /lib64
NATIVE_PACKAGE_PATH_SUFFIX ?= ""
bindir .= "${NATIVE_PACKAGE_PATH_SUFFIX}"
+base_libdir .= "${NATIVE_PACKAGE_PATH_SUFFIX}"
libdir .= "${NATIVE_PACKAGE_PATH_SUFFIX}"
libexecdir .= "${NATIVE_PACKAGE_PATH_SUFFIX}"
@@ -152,8 +153,6 @@ python native_virtclass_handler () {
newdeps.append(dep)
d.setVar(varname, " ".join(newdeps))
- e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + ":virtclass-native")
-
map_dependencies("DEPENDS", e.data)
for pkg in [e.data.getVar("PN"), "", "${PN}"]:
map_dependencies("RDEPENDS", e.data, pkg)
diff --git a/meta/classes/nativesdk.bbclass b/meta/classes/nativesdk.bbclass
index 69fb45c8a58..f25b0c31b13 100644
--- a/meta/classes/nativesdk.bbclass
+++ b/meta/classes/nativesdk.bbclass
@@ -12,6 +12,11 @@ MACHINEOVERRIDES = ""
MULTILIBS = ""
+# we need consistent staging dir whether or not multilib is enabled
+STAGING_DIR_HOST = "${WORKDIR}/recipe-sysroot"
+STAGING_DIR_TARGET = "${WORKDIR}/recipe-sysroot"
+RECIPE_SYSROOT = "${WORKDIR}/recipe-sysroot"
+
#
# Update PACKAGE_ARCH and PACKAGE_ARCHS
#
@@ -78,7 +83,6 @@ python nativesdk_virtclass_handler () {
e.data.setVar("MLPREFIX", "nativesdk-")
e.data.setVar("PN", "nativesdk-" + e.data.getVar("PN").replace("-nativesdk", "").replace("nativesdk-", ""))
- e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + ":virtclass-nativesdk")
}
python () {
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index edeffa978fa..d1e9138c668 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -58,7 +58,7 @@ PACKAGE_DEPENDS += "rpm-native dwarfsrcfiles-native"
# If your postinstall can execute at rootfs creation time rather than on
# target but depends on a native/cross tool in order to execute, you need to
-# list that tool in PACKAGE_WRITE_DEPENDS. Target package dependencies belong
+# list that tool in PACKAGE_WRITE_DEPS. Target package dependencies belong
# in the package dependencies as normal, this is just for native/cross support
# tools at rootfs build time.
PACKAGE_WRITE_DEPS ??= ""
@@ -345,8 +345,16 @@ def parse_debugsources_from_dwarfsrcfiles_output(dwarfsrcfiles_output):
return debugfiles.keys()
def append_source_info(file, sourcefile, d, fatal=True):
- cmd = "'dwarfsrcfiles' '%s'" % (file)
- (retval, output) = oe.utils.getstatusoutput(cmd)
+ import subprocess
+
+ cmd = ["dwarfsrcfiles", file]
+ try:
+ output = subprocess.check_output(cmd, universal_newlines=True, stderr=subprocess.STDOUT)
+ retval = 0
+ except subprocess.CalledProcessError as exc:
+ output = exc.output
+ retval = exc.returncode
+
# 255 means a specific file wasn't fully parsed to get the debug file list, which is not a fatal failure
if retval != 0 and retval != 255:
msg = "dwarfsrcfiles failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else "")
@@ -359,10 +367,12 @@ def append_source_info(file, sourcefile, d, fatal=True):
# of rpm's debugedit, which was writing them out that way, and the code elsewhere
# is still assuming that.
debuglistoutput = '\0'.join(debugsources) + '\0'
+ lf = bb.utils.lockfile(sourcefile + ".lock")
open(sourcefile, 'a').write(debuglistoutput)
+ bb.utils.unlockfile(lf)
-def splitdebuginfo(file, debugfile, debugsrcdir, sourcefile, d):
+def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir, sourcefile, 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.
@@ -370,6 +380,16 @@ def splitdebuginfo(file, debugfile, debugsrcdir, sourcefile, d):
# sourcefile is also generated containing a list of debugsources
import stat
+ import subprocess
+
+ src = file[len(dvar):]
+ dest = debuglibdir + os.path.dirname(src) + debugdir + "/" + os.path.basename(src) + debugappend
+ debugfile = dvar + dest
+
+ # Split the file...
+ bb.utils.mkdirhier(os.path.dirname(debugfile))
+ #bb.note("Split %s -> %s" % (file, debugfile))
+ # Only store off the hard link reference if we successfully split!
dvar = d.getVar('PKGD')
objcopy = d.getVar("OBJCOPY")
@@ -390,16 +410,10 @@ def splitdebuginfo(file, debugfile, debugsrcdir, sourcefile, d):
bb.utils.mkdirhier(os.path.dirname(debugfile))
- cmd = "'%s' --only-keep-debug '%s' '%s'" % (objcopy, file, debugfile)
- (retval, output) = oe.utils.getstatusoutput(cmd)
- if retval:
- bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
+ subprocess.check_output([objcopy, '--only-keep-debug', file, debugfile], stderr=subprocess.STDOUT)
# Set the debuglink to have the view of the file path on the target
- cmd = "'%s' --add-gnu-debuglink='%s' '%s'" % (objcopy, debugfile, file)
- (retval, output) = oe.utils.getstatusoutput(cmd)
- if retval:
- bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
+ subprocess.check_output([objcopy, '--add-gnu-debuglink', debugfile, file], stderr=subprocess.STDOUT)
if newmode:
os.chmod(file, origmode)
@@ -411,6 +425,7 @@ def copydebugsources(debugsrcdir, d):
# and copied to the destination here.
import stat
+ import subprocess
sourcefile = d.expand("${WORKDIR}/debugsources.list")
if debugsrcdir and os.path.isfile(sourcefile):
@@ -447,23 +462,20 @@ def copydebugsources(debugsrcdir, d):
processdebugsrc += "(cd '%s' ; cpio -pd0mlL --no-preserve-owner '%s%s' 2>/dev/null)"
cmd = processdebugsrc % (sourcefile, workbasedir, localsrc_prefix, workparentdir, dvar, debugsrcdir)
- (retval, output) = oe.utils.getstatusoutput(cmd)
- # Can "fail" if internal headers/transient sources are attempted
- #if retval:
- # bb.fatal("debug source copy failed with exit code %s (cmd was %s)" % (retval, cmd))
+ try:
+ subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
+ except subprocess.CalledProcessError:
+ # Can "fail" if internal headers/transient sources are attempted
+ pass
# cpio seems to have a bug with -lL together and symbolic links are just copied, not dereferenced.
# Work around this by manually finding and copying any symbolic links that made it through.
cmd = "find %s%s -type l -print0 -delete | sed s#%s%s/##g | (cd '%s' ; cpio -pd0mL --no-preserve-owner '%s%s' 2>/dev/null)" % (dvar, debugsrcdir, dvar, debugsrcdir, workparentdir, dvar, debugsrcdir)
- (retval, output) = oe.utils.getstatusoutput(cmd)
- if retval:
- bb.fatal("debugsrc symlink fixup failed with exit code %s (cmd was %s)" % (retval, cmd))
+ subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
# The copy by cpio may have resulted in some empty directories! Remove these
cmd = "find %s%s -empty -type d -delete" % (dvar, debugsrcdir)
- (retval, output) = oe.utils.getstatusoutput(cmd)
- if retval:
- bb.fatal("empty directory removal failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
+ subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
# Also remove debugsrcdir if its empty
for p in nosuchdir[::-1]:
@@ -482,7 +494,8 @@ def get_package_mapping (pkg, basepkg, d):
if key in data:
# Have to avoid undoing the write_extra_pkgs(global_variants...)
- if bb.data.inherits_class('allarch', d) and data[key] == basepkg:
+ if bb.data.inherits_class('allarch', d) and not d.getVar('MULTILIB_VARIANTS') \
+ and data[key] == basepkg:
return pkg
return data[key]
@@ -624,16 +637,16 @@ python package_do_split_locales() {
}
python perform_packagecopy () {
+ import subprocess
+
dest = d.getVar('D')
dvar = d.getVar('PKGD')
# Start by package population by taking a copy of the installed
# files to operate on
# Preserve sparse files and hard links
- cmd = 'tar -cf - -C %s -p . | tar -xf - -C %s' % (dest, dvar)
- (retval, output) = oe.utils.getstatusoutput(cmd)
- if retval:
- bb.fatal("file copy failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
+ cmd = 'tar -cf - -C %s -p -S . | tar -xf - -C %s' % (dest, dvar)
+ subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
# replace RPATHs for the nativesdk binaries, to make them relocatable
if bb.data.inherits_class('nativesdk', d) or bb.data.inherits_class('cross-canadian', d):
@@ -762,7 +775,11 @@ python fixup_perms () {
bbpath = d.getVar('BBPATH')
fs_perms_tables = d.getVar('FILESYSTEM_PERMS_TABLES') or ""
for conf_file in fs_perms_tables.split():
- str += " %s" % bb.utils.which(bbpath, conf_file)
+ confpath = bb.utils.which(bbpath, conf_file)
+ if confpath:
+ str += " %s" % bb.utils.which(bbpath, conf_file)
+ else:
+ bb.warn("cannot find %s specified in FILESYSTEM_PERMS_TABLES" % conf_file)
return str
@@ -880,6 +897,7 @@ python fixup_perms () {
python split_and_strip_files () {
import stat, errno
+ import subprocess
dvar = d.getVar('PKGD')
pn = d.getVar('PN')
@@ -916,43 +934,6 @@ python split_and_strip_files () {
sourcefile = d.expand("${WORKDIR}/debugsources.list")
bb.utils.remove(sourcefile)
- # Return type (bits):
- # 0 - not elf
- # 1 - ELF
- # 2 - stripped
- # 4 - executable
- # 8 - shared library
- # 16 - kernel module
- def isELF(path):
- type = 0
- ret, result = oe.utils.getstatusoutput("file -b '%s'" % path)
-
- if ret:
- msg = "split_and_strip_files: 'file %s' failed" % path
- package_qa_handle_error("split-strip", msg, d)
- return type
-
- # Not stripped
- if "ELF" in result:
- type |= 1
- if "not stripped" not in result:
- type |= 2
- if "executable" in result:
- type |= 4
- if "shared" in result:
- type |= 8
- return type
-
- def isStaticLib(path):
- if path.endswith('.a') and not os.path.islink(path):
- with open(path, 'rb') as fh:
- # The magic must include the first slash to avoid
- # matching golang static libraries
- magic = b'!<arch>\x0a/'
- start = fh.read(len(magic))
- return start == magic
- return False
-
#
# First lets figure out all of the files we may have to process ... do this only once!
#
@@ -966,13 +947,15 @@ python split_and_strip_files () {
skipfiles = (d.getVar("INHIBIT_PACKAGE_STRIP_FILES") or "").split()
if (d.getVar('INHIBIT_PACKAGE_STRIP') != '1' or \
d.getVar('INHIBIT_PACKAGE_DEBUG_SPLIT') != '1'):
+ checkelf = {}
+ checkelflinks = {}
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 isStaticLib(file):
+ if oe.package.is_static_lib(file):
staticlibs.append(file)
continue
@@ -999,59 +982,63 @@ python split_and_strip_files () {
# 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 it's a symlink, and points to an ELF file, we capture the readlink target
+
if cpath.islink(file):
- target = os.readlink(file)
- if isELF(ltarget):
- #bb.note("Sym: %s (%d)" % (ltarget, isELF(ltarget)))
- symlinks[file] = target
+ checkelflinks[file] = ltarget
continue
+ # Use a reference of device ID and inode number to identify files
+ file_reference = "%d_%d" % (s.st_dev, s.st_ino)
+ checkelf[file] = (file, file_reference)
+
+ results = oe.utils.multiprocess_launch(oe.package.is_elf, checkelflinks.values(), d)
+ results_map = {}
+ for (ltarget, elf_file) in results:
+ results_map[ltarget] = elf_file
+ for file in checkelflinks:
+ ltarget = checkelflinks[file]
+ # If it's a symlink, and points to an ELF file, we capture the readlink target
+ if results_map[ltarget]:
+ target = os.readlink(file)
+ #bb.note("Sym: %s (%d)" % (ltarget, results_map[ltarget]))
+ symlinks[file] = target
+
+ results = oe.utils.multiprocess_launch(oe.package.is_elf, checkelf.keys(), d)
+ for (file, elf_file) in results:
+ # It's a file (or hardlink), not a link
+ # ...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():
+ 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)
+ continue
- # It's a file (or hardlink), not a link
- # ...but is it ELF, and is it already stripped?
- elf_file = isELF(file)
- if elf_file & 1:
- if elf_file & 2:
- 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)
- continue
-
- # At this point we have an unstripped elf file. We need to:
- # a) Make sure any file we strip is not hardlinked to anything else outside this tree
- # b) Only strip any hardlinked file once (no races)
- # c) Track any hardlinks between files so that we can reconstruct matching debug file hardlinks
-
- # Use a reference of device ID and inode number to identify files
- file_reference = "%d_%d" % (s.st_dev, s.st_ino)
- if file_reference in inodes:
- os.unlink(file)
- os.link(inodes[file_reference][0], file)
- inodes[file_reference].append(file)
- else:
- inodes[file_reference] = [file]
- # break hardlink
- bb.utils.copyfile(file, file)
- elffiles[file] = elf_file
- # Modified the file so clear the cache
- cpath.updatecache(file)
+ # At this point we have an unstripped elf file. We need to:
+ # a) Make sure any file we strip is not hardlinked to anything else outside this tree
+ # b) Only strip any hardlinked file once (no races)
+ # c) Track any hardlinks between files so that we can reconstruct matching debug file hardlinks
+
+ # Use a reference of device ID and inode number to identify files
+ file_reference = checkelf[file][1]
+ if file_reference in inodes:
+ os.unlink(file)
+ os.link(inodes[file_reference][0], file)
+ inodes[file_reference].append(file)
+ else:
+ inodes[file_reference] = [file]
+ # break hardlink
+ bb.utils.break_hardlinks(file)
+ elffiles[file] = elf_file
+ # Modified the file so clear the cache
+ cpath.updatecache(file)
#
# First lets process debug splitting
#
if (d.getVar('INHIBIT_PACKAGE_DEBUG_SPLIT') != '1'):
- for file in elffiles:
- src = file[len(dvar):]
- dest = debuglibdir + os.path.dirname(src) + debugdir + "/" + os.path.basename(src) + debugappend
- fpath = dvar + dest
-
- # Split the file...
- bb.utils.mkdirhier(os.path.dirname(fpath))
- #bb.note("Split %s -> %s" % (file, fpath))
- # Only store off the hard link reference if we successfully split!
- splitdebuginfo(file, fpath, debugsrcdir, sourcefile, d)
+ oe.utils.multiprocess_launch(splitdebuginfo, list(elffiles), d, extraargs=(dvar, debugdir, debuglibdir, debugappend, debugsrcdir, sourcefile, d))
if debugsrcdir and not targetos.startswith("mingw"):
for file in staticlibs:
@@ -1061,15 +1048,18 @@ python split_and_strip_files () {
for ref in inodes:
if len(inodes[ref]) == 1:
continue
+
+ 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(src) + debugappend
+ dest = debuglibdir + os.path.dirname(src) + debugdir + "/" + os.path.basename(target) + debugappend
fpath = dvar + dest
- target = inodes[ref][0][len(dvar):]
ftarget = dvar + debuglibdir + os.path.dirname(target) + debugdir + "/" + os.path.basename(target) + debugappend
bb.utils.mkdirhier(os.path.dirname(fpath))
- #bb.note("Link %s -> %s" % (fpath, ftarget))
- os.link(ftarget, fpath)
+ # Only one hardlink of separated debug info file in each directory
+ if not os.access(fpath, os.R_OK):
+ #bb.note("Link %s -> %s" % (fpath, ftarget))
+ os.link(ftarget, fpath)
# Create symlinks for all cases we were able to split symbols
for file in symlinks:
@@ -1118,7 +1108,7 @@ python split_and_strip_files () {
for f in kernmods:
sfiles.append((f, 16, strip))
- oe.utils.multiprocess_exec(sfiles, oe.package.runstrip)
+ oe.utils.multiprocess_launch(oe.package.runstrip, sfiles, d)
#
# End of strip
@@ -1151,21 +1141,22 @@ python populate_packages () {
# Sanity check PACKAGES for duplicates
# Sanity should be moved to sanity.bbclass once we have the infrastructure
- package_list = []
+ package_dict = {}
- for pkg in packages.split():
- if pkg in package_list:
+ for i, pkg in enumerate(packages.split()):
+ 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)
# If debug-with-srcpkg mode is enabled then the src package will have
# priority over dbg package when assigning the files.
# This allows src package to include source files and remove them from dbg.
elif split_source_package and pkg.endswith("-src"):
- package_list.insert(0, pkg)
- elif autodebug and pkg.endswith("-dbg") and not split_source_package:
- package_list.insert(0, pkg)
+ package_dict[pkg] = (10, i)
+ elif autodebug and pkg.endswith("-dbg"):
+ package_dict[pkg] = (30, i)
else:
- package_list.append(pkg)
+ package_dict[pkg] = (50, i)
+ package_list = sorted(package_dict.keys(), key=package_dict.get)
d.setVar('PACKAGES', ' '.join(package_list))
pkgdest = d.getVar('PKGDEST')
@@ -1411,9 +1402,6 @@ fi
pkgdest = d.getVar('PKGDEST')
pkgdatadir = d.getVar('PKGDESTWORK')
- # Take shared lock since we're only reading, not writing
- lf = bb.utils.lockfile(d.expand("${PACKAGELOCK}"), True)
-
data_file = pkgdatadir + d.expand("/${PN}" )
f = open(data_file, 'w')
f.write("PACKAGES: %s\n" % packages)
@@ -1426,7 +1414,8 @@ fi
if bb.data.inherits_class('kernel', d) or bb.data.inherits_class('module-base', d):
write_extra_pkgs(variants, pn, packages, pkgdatadir)
- if (bb.data.inherits_class('allarch', d) and not bb.data.inherits_class('packagegroup', d)):
+ if bb.data.inherits_class('allarch', d) and not variants \
+ and not bb.data.inherits_class('packagegroup', d):
write_extra_pkgs(global_variants, pn, packages, pkgdatadir)
workdir = d.getVar('WORKDIR')
@@ -1515,10 +1504,10 @@ fi
if bb.data.inherits_class('kernel', d) or bb.data.inherits_class('module-base', d):
write_extra_runtime_pkgs(variants, packages, pkgdatadir)
- if bb.data.inherits_class('allarch', d) and not bb.data.inherits_class('packagegroup', d):
+ if bb.data.inherits_class('allarch', d) and not variants \
+ and not bb.data.inherits_class('packagegroup', d):
write_extra_runtime_pkgs(global_variants, packages, pkgdatadir)
- bb.utils.unlockfile(lf)
}
emit_pkgdata[dirs] = "${PKGDESTWORK}/runtime ${PKGDESTWORK}/runtime-reverse ${PKGDESTWORK}/runtime-rprovides"
@@ -1558,7 +1547,7 @@ python package_do_filedeps() {
for files in chunks(pkgfiles[pkg], 100):
pkglist.append((pkg, files, rpmdeps, pkgdest))
- processed = oe.utils.multiprocess_exec( pkglist, oe.package.filedeprunner)
+ processed = oe.utils.multiprocess_launch(oe.package.filedeprunner, pkglist, d)
provides_files = {}
requires_files = {}
@@ -1574,12 +1563,12 @@ python package_do_filedeps() {
for file in provides:
provides_files[pkg].append(file)
key = "FILERPROVIDES_" + file + "_" + pkg
- d.setVar(key, " ".join(provides[file]))
+ d.appendVar(key, " " + " ".join(provides[file]))
for file in requires:
requires_files[pkg].append(file)
key = "FILERDEPENDS_" + file + "_" + pkg
- d.setVar(key, " ".join(requires[file]))
+ d.appendVar(key, " " + " ".join(requires[file]))
for pkg in requires_files:
d.setVar("FILERDEPENDSFLIST_" + pkg, " ".join(requires_files[pkg]))
@@ -1592,7 +1581,7 @@ SHLIBSWORKDIR = "${PKGDESTWORK}/${MLPREFIX}shlibs2"
python package_do_shlibs() {
import re, pipes
- import subprocess as sub
+ import subprocess
exclude_shlibs = d.getVar('EXCLUDE_FROM_SHLIBS', False)
if exclude_shlibs:
@@ -1603,6 +1592,18 @@ python package_do_shlibs() {
libdir_re = re.compile(".*/%s$" % d.getVar('baselib'))
packages = d.getVar('PACKAGES')
+
+ shlib_pkgs = []
+ exclusion_list = d.getVar("EXCLUDE_PACKAGES_FROM_SHLIBS")
+ if exclusion_list:
+ for pkg in packages.split():
+ if pkg not in exclusion_list.split():
+ shlib_pkgs.append(pkg)
+ else:
+ bb.note("not generating shlibs for %s" % pkg)
+ else:
+ shlib_pkgs = packages.split()
+
targetos = d.getVar('TARGET_OS')
workdir = d.getVar('WORKDIR')
@@ -1617,28 +1618,28 @@ python package_do_shlibs() {
shlibswork_dir = d.getVar('SHLIBSWORKDIR')
- # Take shared lock since we're only reading, not writing
- lf = bb.utils.lockfile(d.expand("${PACKAGELOCK}"), True)
-
- def linux_so(file, needed, sonames, renames, pkgver):
+ def linux_so(file, pkg, pkgver, d):
needs_ldconfig = False
+ needed = set()
+ sonames = set()
+ renames = []
ldir = os.path.dirname(file).replace(pkgdest + "/" + pkg, '')
cmd = d.getVar('OBJDUMP') + " -p " + pipes.quote(file) + " 2>/dev/null"
fd = os.popen(cmd)
lines = fd.readlines()
fd.close()
- rpath = []
+ rpath = tuple()
for l in lines:
m = re.match("\s+RPATH\s+([^\s]*)", l)
if m:
rpaths = m.group(1).replace("$ORIGIN", ldir).split(":")
- rpath = list(map(os.path.normpath, rpaths))
+ rpath = tuple(map(os.path.normpath, rpaths))
for l in lines:
m = re.match("\s+NEEDED\s+([^\s]*)", l)
if m:
dep = m.group(1)
- if dep not in needed[pkg]:
- needed[pkg].append((dep, file, rpath))
+ if dep not in needed:
+ needed.add((dep, file, rpath))
m = re.match("\s+SONAME\s+([^\s]*)", l)
if m:
this_soname = m.group(1)
@@ -1646,12 +1647,12 @@ python package_do_shlibs() {
if not prov in sonames:
# if library is private (only used by package) then do not build shlib for it
if not private_libs or this_soname not in private_libs:
- sonames.append(prov)
+ sonames.add(prov)
if libdir_re.match(os.path.dirname(file)):
needs_ldconfig = True
if snap_symlinks and (os.path.basename(file) != this_soname):
renames.append((file, os.path.join(os.path.dirname(file), this_soname)))
- return needs_ldconfig
+ return (needs_ldconfig, needed, sonames, renames)
def darwin_so(file, needed, sonames, renames, pkgver):
if not os.path.exists(file):
@@ -1679,10 +1680,10 @@ python package_do_shlibs() {
for combo in combos:
if not combo in sonames:
prov = (combo, ldir, pkgver)
- sonames.append(prov)
+ sonames.add(prov)
if file.endswith('.dylib') or file.endswith('.so'):
rpath = []
- p = sub.Popen([d.expand("${HOST_PREFIX}otool"), '-l', file],stdout=sub.PIPE,stderr=sub.PIPE)
+ p = subprocess.Popen([d.expand("${HOST_PREFIX}otool"), '-l', file], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
# If returned successfully, process stdout for results
if p.returncode == 0:
@@ -1691,7 +1692,7 @@ python package_do_shlibs() {
if l.startswith('path '):
rpath.append(l.split()[1])
- p = sub.Popen([d.expand("${HOST_PREFIX}otool"), '-L', file],stdout=sub.PIPE,stderr=sub.PIPE)
+ p = subprocess.Popen([d.expand("${HOST_PREFIX}otool"), '-L', file], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
# If returned successfully, process stdout for results
if p.returncode == 0:
@@ -1703,7 +1704,7 @@ python package_do_shlibs() {
continue
name = os.path.basename(l.split()[0]).rsplit(".", 1)[0]
if name and name not in needed[pkg]:
- needed[pkg].append((name, file, []))
+ needed[pkg].add((name, file, tuple()))
def mingw_dll(file, needed, sonames, renames, pkgver):
if not os.path.exists(file):
@@ -1711,18 +1712,18 @@ python package_do_shlibs() {
if file.endswith(".dll"):
# assume all dlls are shared objects provided by the package
- sonames.append((os.path.basename(file), os.path.dirname(file).replace(pkgdest + "/" + pkg, ''), pkgver))
+ sonames.add((os.path.basename(file), os.path.dirname(file).replace(pkgdest + "/" + pkg, ''), pkgver))
if (file.endswith(".dll") or file.endswith(".exe")):
# use objdump to search for "DLL Name: .*\.dll"
- p = sub.Popen([d.expand("${HOST_PREFIX}objdump"), "-p", file], stdout = sub.PIPE, stderr= sub.PIPE)
+ p = subprocess.Popen([d.expand("${HOST_PREFIX}objdump"), "-p", file], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
# process the output, grabbing all .dll names
if p.returncode == 0:
for m in re.finditer("DLL Name: (.*?\.dll)$", out.decode(), re.MULTILINE | re.IGNORECASE):
dllname = m.group(1)
if dllname:
- needed[pkg].append((dllname, file, []))
+ needed[pkg].add((dllname, file, tuple()))
if d.getVar('PACKAGE_SNAP_LIB_SYMLINKS') == "1":
snap_symlinks = True
@@ -1732,9 +1733,13 @@ python package_do_shlibs() {
use_ldconfig = bb.utils.contains('DISTRO_FEATURES', 'ldconfig', True, False, d)
needed = {}
+
+ # Take shared lock since we're only reading, not writing
+ lf = bb.utils.lockfile(d.expand("${PACKAGELOCK}"), True)
shlib_provider = oe.package.read_shlib_providers(d)
+ bb.utils.unlockfile(lf)
- for pkg in packages.split():
+ for pkg in shlib_pkgs:
private_libs = d.getVar('PRIVATE_LIBS_' + pkg) or d.getVar('PRIVATE_LIBS') or ""
private_libs = private_libs.split()
needs_ldconfig = False
@@ -1746,9 +1751,10 @@ python package_do_shlibs() {
if not pkgver:
pkgver = ver
- needed[pkg] = []
- sonames = list()
- renames = list()
+ needed[pkg] = set()
+ sonames = set()
+ renames = []
+ linuxlist = []
for file in pkgfiles[pkg]:
soname = None
if cpath.islink(file):
@@ -1758,8 +1764,17 @@ python package_do_shlibs() {
elif targetos.startswith("mingw"):
mingw_dll(file, needed, sonames, renames, pkgver)
elif os.access(file, os.X_OK) or lib_re.match(file):
- ldconfig = linux_so(file, needed, sonames, renames, pkgver)
- needs_ldconfig = needs_ldconfig or ldconfig
+ linuxlist.append(file)
+
+ if linuxlist:
+ results = oe.utils.multiprocess_launch(linux_so, linuxlist, d, extraargs=(pkg, pkgver, d))
+ for r in results:
+ ldconfig = r[0]
+ needed[pkg] |= r[1]
+ sonames |= r[2]
+ renames.extend(r[3])
+ needs_ldconfig = needs_ldconfig or ldconfig
+
for (old, new) in renames:
bb.note("Renaming %s to %s" % (old, new))
os.rename(old, new)
@@ -1788,8 +1803,6 @@ python package_do_shlibs() {
d.setVar('pkg_postinst_%s' % pkg, postinst)
bb.debug(1, 'LIBNAMES: pkg %s sonames %s' % (pkg, sonames))
- bb.utils.unlockfile(lf)
-
assumed_libs = d.getVar('ASSUME_SHLIBS')
if assumed_libs:
libdir = d.getVar("libdir")
@@ -1806,7 +1819,7 @@ python package_do_shlibs() {
libsearchpath = [d.getVar('libdir'), d.getVar('base_libdir')]
- for pkg in packages.split():
+ 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 ""
@@ -1827,7 +1840,7 @@ python package_do_shlibs() {
for k in shlib_provider[n[0]].keys():
shlib_provider_path.append(k)
match = None
- for p in n[2] + shlib_provider_path + libsearchpath:
+ for p in list(n[2]) + shlib_provider_path + libsearchpath:
if p in shlib_provider[n[0]]:
match = p
break
@@ -1902,9 +1915,6 @@ python package_do_pkgconfig () {
if hdr == 'Requires':
pkgconfig_needed[pkg] += exp.replace(',', ' ').split()
- # Take shared lock since we're only reading, not writing
- lf = bb.utils.lockfile(d.expand("${PACKAGELOCK}"), True)
-
for pkg in packages.split():
pkgs_file = os.path.join(shlibswork_dir, pkg + ".pclist")
if pkgconfig_provided[pkg] != []:
@@ -1913,6 +1923,9 @@ python package_do_pkgconfig () {
f.write('%s\n' % p)
f.close()
+ # Take shared lock since we're only reading, not writing
+ lf = bb.utils.lockfile(d.expand("${PACKAGELOCK}"), True)
+
# Go from least to most specific since the last one found wins
for dir in reversed(shlibs_dirs):
if not os.path.exists(dir):
@@ -1928,6 +1941,8 @@ python package_do_pkgconfig () {
for l in lines:
pkgconfig_provided[pkg].append(l.rstrip())
+ bb.utils.unlockfile(lf)
+
for pkg in packages.split():
deps = []
for n in pkgconfig_needed[pkg]:
@@ -1945,8 +1960,6 @@ python package_do_pkgconfig () {
for dep in deps:
fd.write(dep + '\n')
fd.close()
-
- bb.utils.unlockfile(lf)
}
def read_libdep_files(d):
diff --git a/meta/classes/package_deb.bbclass b/meta/classes/package_deb.bbclass
index 2e8d17d3c71..6f815916531 100644
--- a/meta/classes/package_deb.bbclass
+++ b/meta/classes/package_deb.bbclass
@@ -41,32 +41,6 @@ def debian_arch_map(arch, tune):
return arch
python do_package_deb () {
-
- import multiprocessing
- import traceback
-
- class DebianWritePkgProcess(multiprocessing.Process):
- def __init__(self, *args, **kwargs):
- multiprocessing.Process.__init__(self, *args, **kwargs)
- self._pconn, self._cconn = multiprocessing.Pipe()
- self._exception = None
-
- def run(self):
- try:
- multiprocessing.Process.run(self)
- self._cconn.send(None)
- except Exception as e:
- tb = traceback.format_exc()
- self._cconn.send((e, tb))
-
- @property
- def exception(self):
- if self._pconn.poll():
- self._exception = self._pconn.recv()
- return self._exception
-
- oldcwd = os.getcwd()
-
packages = d.getVar('PACKAGES')
if not packages:
bb.debug(1, "PACKAGES not defined, nothing to package")
@@ -76,30 +50,7 @@ python do_package_deb () {
if os.access(os.path.join(tmpdir, "stamps", "DEB_PACKAGE_INDEX_CLEAN"),os.R_OK):
os.unlink(os.path.join(tmpdir, "stamps", "DEB_PACKAGE_INDEX_CLEAN"))
- max_process = int(d.getVar("BB_NUMBER_THREADS") or os.cpu_count() or 1)
- launched = []
- error = None
- pkgs = packages.split()
- while not error and pkgs:
- if len(launched) < max_process:
- p = DebianWritePkgProcess(target=deb_write_pkg, args=(pkgs.pop(), d))
- p.start()
- launched.append(p)
- for q in launched:
- # The finished processes are joined when calling is_alive()
- if not q.is_alive():
- launched.remove(q)
- if q.exception:
- error, traceback = q.exception
- break
-
- for p in launched:
- p.join()
-
- os.chdir(oldcwd)
-
- if error:
- raise error
+ oe.utils.multiprocess_launch(deb_write_pkg, packages.split(), d, extraargs=(d,))
}
do_package_deb[vardeps] += "deb_write_pkg"
do_package_deb[vardepsexclude] = "BB_NUMBER_THREADS"
diff --git a/meta/classes/package_ipk.bbclass b/meta/classes/package_ipk.bbclass
index a0b34fa7a5d..5eb910ca318 100644
--- a/meta/classes/package_ipk.bbclass
+++ b/meta/classes/package_ipk.bbclass
@@ -17,32 +17,6 @@ OPKG_ARGS += "${@['', '--add-exclude ' + ' --add-exclude '.join((d.getVar('PACKA
OPKGLIBDIR = "${localstatedir}/lib"
python do_package_ipk () {
- import multiprocessing
- import traceback
-
- class IPKWritePkgProcess(multiprocessing.Process):
- def __init__(self, *args, **kwargs):
- multiprocessing.Process.__init__(self, *args, **kwargs)
- self._pconn, self._cconn = multiprocessing.Pipe()
- self._exception = None
-
- def run(self):
- try:
- multiprocessing.Process.run(self)
- self._cconn.send(None)
- except Exception as e:
- tb = traceback.format_exc()
- self._cconn.send((e, tb))
-
- @property
- def exception(self):
- if self._pconn.poll():
- self._exception = self._pconn.recv()
- return self._exception
-
-
- oldcwd = os.getcwd()
-
workdir = d.getVar('WORKDIR')
outdir = d.getVar('PKGWRITEDIRIPK')
tmpdir = d.getVar('TMPDIR')
@@ -61,30 +35,7 @@ python do_package_ipk () {
if os.access(os.path.join(tmpdir, "stamps", "IPK_PACKAGE_INDEX_CLEAN"), os.R_OK):
os.unlink(os.path.join(tmpdir, "stamps", "IPK_PACKAGE_INDEX_CLEAN"))
- max_process = int(d.getVar("BB_NUMBER_THREADS") or os.cpu_count() or 1)
- launched = []
- error = None
- pkgs = packages.split()
- while not error and pkgs:
- if len(launched) < max_process:
- p = IPKWritePkgProcess(target=ipk_write_pkg, args=(pkgs.pop(), d))
- p.start()
- launched.append(p)
- for q in launched:
- # The finished processes are joined when calling is_alive()
- if not q.is_alive():
- launched.remove(q)
- if q.exception:
- error, traceback = q.exception
- break
-
- for p in launched:
- p.join()
-
- os.chdir(oldcwd)
-
- if error:
- raise error
+ oe.utils.multiprocess_launch(ipk_write_pkg, packages.split(), d, extraargs=(d,))
}
do_package_ipk[vardeps] += "ipk_write_pkg"
do_package_ipk[vardepsexclude] = "BB_NUMBER_THREADS"
diff --git a/meta/classes/patch.bbclass b/meta/classes/patch.bbclass
index 2fc6925e495..3e0a1818218 100644
--- a/meta/classes/patch.bbclass
+++ b/meta/classes/patch.bbclass
@@ -33,7 +33,7 @@ python patch_task_patch_prefunc() {
if (testsrcdir + os.sep).startswith(workdir + os.sep):
# Double-check that either workdir or S or some directory in-between is a git repository
found = False
- while testsrcdir != '/':
+ while testsrcdir != workdir:
if os.path.exists(os.path.join(testsrcdir, '.git')):
found = True
break
diff --git a/meta/classes/pixbufcache.bbclass b/meta/classes/pixbufcache.bbclass
index b3e507f61b6..3378ff2c806 100644
--- a/meta/classes/pixbufcache.bbclass
+++ b/meta/classes/pixbufcache.bbclass
@@ -12,7 +12,7 @@ PACKAGE_WRITE_DEPS += "qemu-native gdk-pixbuf-native"
pixbufcache_common() {
if [ "x$D" != "x" ]; then
- $INTERCEPT_DIR/postinst_intercept update_pixbuf_cache ${PKG} mlprefix=${MLPREFIX} libdir=${libdir} \
+ $INTERCEPT_DIR/postinst_intercept update_pixbuf_cache ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX} libdir=${libdir} \
bindir=${bindir} base_libdir=${base_libdir}
else
diff --git a/meta/classes/populate_sdk_base.bbclass b/meta/classes/populate_sdk_base.bbclass
index 3da350747e2..e07ad0cc6b2 100644
--- a/meta/classes/populate_sdk_base.bbclass
+++ b/meta/classes/populate_sdk_base.bbclass
@@ -1,4 +1,4 @@
-inherit meta
+inherit meta image-postinst-intercepts
# Wildcards specifying complementary packages to install for every package that has been explicitly
# installed into the rootfs
@@ -40,13 +40,13 @@ SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${REAL_MULTIMACH_TARGET_SYS}"
TOOLCHAIN_HOST_TASK ?= "nativesdk-packagegroup-sdk-host packagegroup-cross-canadian-${MACHINE}"
TOOLCHAIN_HOST_TASK_ATTEMPTONLY ?= ""
-TOOLCHAIN_TARGET_TASK ?= "${@multilib_pkg_extend(d, 'packagegroup-core-standalone-sdk-target')} \
- ${@multilib_pkg_extend(d, 'target-sdk-provides-dummy')}"
+TOOLCHAIN_TARGET_TASK ?= "${@multilib_pkg_extend(d, 'packagegroup-core-standalone-sdk-target')} target-sdk-provides-dummy"
TOOLCHAIN_TARGET_TASK_ATTEMPTONLY ?= ""
TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}"
SDK_RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
-SDK_DEPENDS = "virtual/fakeroot-native xz-native cross-localedef-native ${MLPREFIX}qemuwrapper-cross"
+SDK_DEPENDS = "virtual/fakeroot-native xz-native 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())}:"
SDK_DEPENDS_append_libc-glibc = " nativesdk-glibc-locale"
# We want the MULTIARCH_TARGET_SYS to point to the TUNE_PKGARCH, not PACKAGE_ARCH as it
@@ -62,8 +62,8 @@ SDK_PRE_INSTALL_COMMAND ?= ""
SDK_POST_INSTALL_COMMAND ?= ""
SDK_RELOCATE_AFTER_INSTALL ?= "1"
-SDKEXTPATH ?= "~/${@d.getVar('DISTRO')}_sdk"
-SDK_TITLE ?= "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} SDK"
+SDKEXTPATH ??= "~/${@d.getVar('DISTRO')}_sdk"
+SDK_TITLE ??= "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} SDK"
SDK_TARGET_MANIFEST = "${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.target.manifest"
SDK_HOST_MANIFEST = "${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.host.manifest"
@@ -258,7 +258,7 @@ EOF
-e 's#@SDK_VERSION@#${SDK_VERSION}#g' \
-e '/@SDK_PRE_INSTALL_COMMAND@/d' \
-e '/@SDK_POST_INSTALL_COMMAND@/d' \
- -e 's#@SDK_GCC_VER@#${@oe.utils.host_gcc_version(d)}#g' \
+ -e 's#@SDK_GCC_VER@#${@oe.utils.host_gcc_version(d, taskcontextonly=True)}#g' \
${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh
# add execution permission
@@ -306,4 +306,5 @@ do_populate_sdk[dirs] = "${PKGDATA_DIR} ${TOPDIR}"
do_populate_sdk[depends] += "${@' '.join([x + ':do_populate_sysroot' for x in d.getVar('SDK_DEPENDS').split()])} ${@d.getVarFlag('do_rootfs', 'depends', False)}"
do_populate_sdk[rdepends] = "${@' '.join([x + ':do_package_write_${IMAGE_PKGTYPE} ' + x + ':do_packagedata' for x in d.getVar('SDK_RDEPENDS').split()])}"
do_populate_sdk[recrdeptask] += "do_packagedata do_package_write_rpm do_package_write_ipk do_package_write_deb"
+do_populate_sdk[file-checksums] += "${POSTINST_INTERCEPT_CHECKSUMS}"
addtask populate_sdk
diff --git a/meta/classes/populate_sdk_ext.bbclass b/meta/classes/populate_sdk_ext.bbclass
index e1bba49eaf3..9c31d70f2a4 100644
--- a/meta/classes/populate_sdk_ext.bbclass
+++ b/meta/classes/populate_sdk_ext.bbclass
@@ -200,15 +200,9 @@ python copy_buildsystem () {
workspace_name = 'orig-workspace'
else:
workspace_name = None
- layers_copied = buildsystem.copy_bitbake_and_layers(baseoutpath + '/layers', workspace_name)
- sdkbblayers = []
- corebase = os.path.basename(d.getVar('COREBASE'))
- for layer in layers_copied:
- if corebase == os.path.basename(layer):
- conf_bbpath = os.path.join('layers', layer, 'bitbake')
- else:
- sdkbblayers.append(layer)
+ corebase, sdkbblayers = buildsystem.copy_bitbake_and_layers(baseoutpath + '/layers', workspace_name)
+ conf_bbpath = os.path.join('layers', corebase, 'bitbake')
for path in os.listdir(baseoutpath + '/layers'):
relpath = os.path.join('layers', path, oe_init_env_script)
@@ -325,8 +319,9 @@ python copy_buildsystem () {
f.write('TCLIBCAPPEND = ""\n')
f.write('DL_DIR = "${TOPDIR}/downloads"\n')
- f.write('INHERIT += "%s"\n' % 'uninative')
- f.write('UNINATIVE_CHECKSUM[%s] = "%s"\n\n' % (d.getVar('BUILD_ARCH'), uninative_checksum))
+ if bb.data.inherits_class('uninative', d):
+ f.write('INHERIT += "%s"\n' % 'uninative')
+ f.write('UNINATIVE_CHECKSUM[%s] = "%s"\n\n' % (d.getVar('BUILD_ARCH'), uninative_checksum))
f.write('CONF_VERSION = "%s"\n\n' % d.getVar('CONF_VERSION', False))
# Some classes are not suitable for SDK, remove them from INHERIT
diff --git a/meta/classes/python3native.bbclass b/meta/classes/python3native.bbclass
index 89665efee8b..da12a714703 100644
--- a/meta/classes/python3native.bbclass
+++ b/meta/classes/python3native.bbclass
@@ -1,8 +1,8 @@
inherit python3-dir
-PYTHON="${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN}"
-EXTRANATIVEPATH += "${PYTHON_PN}-native"
-DEPENDS_append = " ${PYTHON_PN}-native "
+PYTHON="${STAGING_BINDIR_NATIVE}/python3-native/python3"
+EXTRANATIVEPATH += "python3-native"
+DEPENDS_append = " python3-native "
# python-config and other scripts are using distutils modules
# which we patch to access these variables
diff --git a/meta/classes/pythonnative.bbclass b/meta/classes/pythonnative.bbclass
index 4cc8b2769c2..ae6600cd155 100644
--- a/meta/classes/pythonnative.bbclass
+++ b/meta/classes/pythonnative.bbclass
@@ -1,11 +1,11 @@
inherit python-dir
-PYTHON="${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN}"
+PYTHON="${STAGING_BINDIR_NATIVE}/python-native/python"
# PYTHON_EXECUTABLE is used by cmake
PYTHON_EXECUTABLE="${PYTHON}"
-EXTRANATIVEPATH += "${PYTHON_PN}-native"
-DEPENDS_append = " ${PYTHON_PN}-native "
+EXTRANATIVEPATH += "python-native"
+DEPENDS_append = " python-native "
# python-config and other scripts are using distutils modules
# which we patch to access these variables
diff --git a/meta/classes/reproducible_build.bbclass b/meta/classes/reproducible_build.bbclass
index 2df805330aa..4f3680a3765 100644
--- a/meta/classes/reproducible_build.bbclass
+++ b/meta/classes/reproducible_build.bbclass
@@ -1,33 +1,32 @@
-#
# reproducible_build.bbclass
#
-# This bbclass is mainly responsible to determine SOURCE_DATE_EPOCH on a per recipe base.
-# We need to set a recipe specific SOURCE_DATE_EPOCH in each recipe environment for various tasks.
-# One way would be to modify all recipes one-by-one to specify SOURCE_DATE_EPOCH explicitly,
-# but that is not realistic as there are hundreds (probably thousands) of recipes in various meta-layers.
-# Therefore we do it this class.
-# After sources are unpacked but before they are patched, we try to determine the value for SOURCE_DATE_EPOCH.
+# 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 to determine SOURCE_DATE_EPOCH:
+# There are 4 ways we determine SOURCE_DATE_EPOCH:
#
-# 1. Use 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.
-# In principle, it could actually provided by a recipe via SRC_URI
+# 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, first try to determine the value for SOURCE_DATE_EPOCH:
+# If the file does not exist:
#
-# 2. If we detected a folder .git, use .git last commit date timestamp, as git does not allow checking out
-# files and preserving their timestamps.
+# 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 will work fine for any well kept repository distributed via tarballs.
+# This works for well-kept repositories distributed via tarball.
#
-# 4. If the above steps fail, we need to check all package source files and use the youngest file of the source tree.
+# 4. If the above steps fail, use the modification time of the youngest file in the source tree.
#
-# Once the value of SOURCE_DATE_EPOCH is determined, it is stored in the recipe ${WORKDIR}/source_date_epoch folder
-# in a text file "__source_date_epoch.txt'. If this file is found by other recipe task, the value is exported in
-# the SOURCE_DATE_EPOCH variable in the task environment. This is done in an anonymous python function,
-# so SOURCE_DATE_EPOCH is guaranteed to exist for all tasks the may use it (do_configure, do_compile, do_package, ...)
+# Once the value of SOURCE_DATE_EPOCH is determined, it is stored in the recipe's ${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', '')}
@@ -50,86 +49,100 @@ do_deploy_source_date_epoch[sstate-plaindirs] = "${SDE_DIR}"
addtask do_deploy_source_date_epoch_setscene
addtask do_deploy_source_date_epoch before do_configure after do_patch
-def get_source_date_epoch_known_files(d, path):
- source_date_epoch = 0
+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(path,file)
+ filepath = os.path.join(sourcedir, file)
if os.path.isfile(filepath):
- mtime = int(os.path.getmtime(filepath))
+ mtime = int(os.lstat(filepath).st_mtime)
# There may be more than one "known_file" present, if so, use the youngest one
- if mtime > source_date_epoch:
+ 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(path):
- exclude = set(["temp", "license-destdir", "patches", "recipe-sysroot-native", "recipe-sysroot", "pseudo", "build", "image", "sysroot-destdir"])
- for root, dirs, files in os.walk(path, topdown=True):
+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:
- #bb.warn("found root:%s" % (str(root)))
return root
-
-def get_source_date_epoch_git(d, path):
- source_date_epoch = 0
+
+ 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.getVar('WORKDIR'))
- if gitpath != None:
+ gitpath = find_git_folder(d, sourcedir)
+ if gitpath:
import subprocess
- if os.path.isdir(os.path.join(gitpath,".git")):
- try:
- source_date_epoch = int(subprocess.check_output(['git','log','-1','--pretty=%ct'], cwd=path))
- #bb.warn("JB *** gitpath:%s sde: %d" % (gitpath,source_date_epoch))
- bb.debug(1, "git repo path:%s sde: %d" % (gitpath,source_date_epoch))
- except subprocess.CalledProcessError as grepexc:
- #bb.warn( "Expected git repository not found, (path: %s) error:%d" % (gitpath, grepexc.returncode))
- bb.debug(1, "Expected git repository not found, (path: %s) error:%d" % (gitpath, grepexc.returncode))
- else:
- bb.warn("Failed to find a git repository for path:%s" % (path))
+ 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
-
-python do_create_source_date_epoch_stamp() {
- path = d.getVar('S')
- if not os.path.isdir(path):
- bb.warn("Unable to determine source_date_epoch! path:%s" % path)
- return
+def get_source_date_epoch_from_youngest_file(d, sourcedir):
+ # Do it the hard way: check all files and find the youngest one...
+ source_date_epoch = None
+ newest_file = None
+ # Just in case S = WORKDIR
+ exclude = set(["build", "image", "license-destdir", "patches", "pseudo",
+ "recipe-sysroot", "recipe-sysroot-native", "sysroot-destdir", "temp"])
+ for root, dirs, files in os.walk(sourcedir, topdown=True):
+ files = [f for f in files if not f[0] == '.']
+ dirs[:] = [d for d in dirs if d not in exclude]
+
+ 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
+
+python do_create_source_date_epoch_stamp() {
epochfile = d.getVar('SDE_FILE')
if os.path.isfile(epochfile):
- bb.debug(1, " path: %s reusing __source_date_epoch.txt" % epochfile)
+ bb.debug(1, "Reusing SOURCE_DATE_EPOCH from: %s" % epochfile)
return
-
- # Try to detect/find a git repository
- source_date_epoch = get_source_date_epoch_git(d, path)
- if source_date_epoch == 0:
- source_date_epoch = get_source_date_epoch_known_files(d, path)
+
+ 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
+ 0 # Last resort
+ )
if source_date_epoch == 0:
- # Do it the hard way: check all files and find the youngest one...
- filename_dbg = None
- exclude = set(["temp", "license-destdir", "patches", "recipe-sysroot-native", "recipe-sysroot", "pseudo", "build", "image", "sysroot-destdir"])
- for root, dirs, files in os.walk(path, topdown=True):
- files = [f for f in files if not f[0] == '.']
- dirs[:] = [d for d in dirs if d not in exclude]
-
- for fname in files:
- filename = os.path.join(root, fname)
- try:
- mtime = int(os.path.getmtime(filename))
- except ValueError:
- mtime = 0
- if mtime > source_date_epoch:
- source_date_epoch = mtime
- filename_dbg = filename
-
- if filename_dbg != None:
- bb.debug(1," SOURCE_DATE_EPOCH %d derived from: %s" % (source_date_epoch, filename_dbg))
-
- if source_date_epoch == 0:
- # empty folder, not a single file ...
- # kernel source do_unpack is special cased
- if not bb.data.inherits_class('kernel', d):
- bb.debug(1, "Unable to determine source_date_epoch! path:%s" % path)
+ # empty folder, not a single file ...
+ bb.debug(1, "No files found to determine SOURCE_DATE_EPOCH")
+ 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))
@@ -145,6 +158,6 @@ python () {
if os.path.isfile(epochfile):
with open(epochfile, 'r') as f:
source_date_epoch = f.read()
- bb.debug(1, "source_date_epoch stamp found ---> stamp %s" % source_date_epoch)
+ bb.debug(1, "SOURCE_DATE_EPOCH: %s" % source_date_epoch)
d.setVar('SOURCE_DATE_EPOCH', source_date_epoch)
}
diff --git a/meta/classes/rm_work.bbclass b/meta/classes/rm_work.bbclass
index 31d99e4554a..10e134b9585 100644
--- a/meta/classes/rm_work.bbclass
+++ b/meta/classes/rm_work.bbclass
@@ -47,59 +47,60 @@ do_rm_work () {
cd `dirname ${STAMP}`
for i in `basename ${STAMP}`*
do
- for j in ${SSTATETASKS} do_shared_workdir
- do
- case $i in
- *do_setscene*)
- break
- ;;
- *sigdata*|*sigbasedata*)
- i=dummy
- break
- ;;
- *do_package_write*)
- i=dummy
- break
- ;;
- *do_image_complete*)
- mv $i `echo $i | sed -e "s#do_image_complete#do_image_complete_setscene#"`
- i=dummy
- break
- ;;
- *do_rootfs*|*do_image*|*do_bootimg*|*do_write_qemuboot_conf*)
- i=dummy
- break
- ;;
- *do_build*)
- i=dummy
- break
- ;;
- *do_addto_recipe_sysroot*)
- # Preserve recipe-sysroot-native if do_addto_recipe_sysroot has been used
- excludes="$excludes recipe-sysroot-native"
- i=dummy
- break
- ;;
+ # 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*)
+ # 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_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.
- *do_package|*do_package.*|*do_package_setscene.*)
- rm -f $i;
- i=dummy
- break
- ;;
- *_setscene*)
- i=dummy
+ rm -f $i;
+ i=dummy
+ ;;
+ *_setscene*)
+ # Skip stamps which are already setscene versions
+ i=dummy
+ ;;
+ 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
diff --git a/meta/classes/rootfs-postcommands.bbclass b/meta/classes/rootfs-postcommands.bbclass
index 55222095349..e816824f281 100644
--- a/meta/classes/rootfs-postcommands.bbclass
+++ b/meta/classes/rootfs-postcommands.bbclass
@@ -2,9 +2,12 @@
# 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)}'
-# Allow dropbear/openssh to accept logins from accounts with an empty password string if debug-tweaks is enabled
+# 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)}'
+# Allow dropbear/openssh to accept root logins if debug-tweaks or allow-root-login is enabled
+ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains_any("IMAGE_FEATURES", [ 'debug-tweaks', 'allow-root-login' ], "ssh_allow_root_login; ", "",d)}'
+
# Enable postinst logging if debug-tweaks is enabled
ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains_any("IMAGE_FEATURES", [ 'debug-tweaks', 'post-install-logging' ], "postinst_enable_logging; ", "",d)}'
@@ -36,11 +39,6 @@ ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("DISTRO_FEATURES", "systemd"
ROOTFS_POSTPROCESS_COMMAND += 'empty_var_volatile;'
-# Disable DNS lookups, the SSH_DISABLE_DNS_LOOKUP can be overridden to allow
-# distros to choose not to take this change
-SSH_DISABLE_DNS_LOOKUP ?= " ssh_disable_dns_lookup ; "
-ROOTFS_POSTPROCESS_COMMAND_append_qemuall = "${SSH_DISABLE_DNS_LOOKUP}"
-
# 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,
@@ -112,14 +110,11 @@ read_only_rootfs_hook () {
# Also tweak the key location for dropbear in the same way.
if [ -d ${IMAGE_ROOTFS}/etc/dropbear ]; then
- if [ -e ${IMAGE_ROOTFS}/etc/dropbear/dropbear_rsa_host_key ]; then
- echo "DROPBEAR_RSAKEY_DIR=/etc/dropbear" >> ${IMAGE_ROOTFS}/etc/default/dropbear
- else
+ if [ ! -e ${IMAGE_ROOTFS}/etc/dropbear/dropbear_rsa_host_key ]; then
echo "DROPBEAR_RSAKEY_DIR=/var/lib/dropbear" >> ${IMAGE_ROOTFS}/etc/default/dropbear
fi
fi
-
if ${@bb.utils.contains("DISTRO_FEATURES", "sysvinit", "true", "false", d)}; then
# Change the value of ROOTFS_READ_ONLY in /etc/default/rcS to yes
if [ -e ${IMAGE_ROOTFS}/etc/default/rcS ]; then
@@ -146,12 +141,11 @@ zap_empty_root_password () {
}
#
-# allow dropbear/openssh to accept root logins and logins from accounts with an empty password string
+# allow dropbear/openssh to accept logins from accounts with an empty password string
#
ssh_allow_empty_password () {
for config in sshd_config sshd_config_readonly; do
if [ -e ${IMAGE_ROOTFS}${sysconfdir}/ssh/$config ]; then
- sed -i 's/^[#[:space:]]*PermitRootLogin.*/PermitRootLogin yes/' ${IMAGE_ROOTFS}${sysconfdir}/ssh/$config
sed -i 's/^[#[:space:]]*PermitEmptyPasswords.*/PermitEmptyPasswords yes/' ${IMAGE_ROOTFS}${sysconfdir}/ssh/$config
fi
done
@@ -174,9 +168,20 @@ ssh_allow_empty_password () {
fi
}
-ssh_disable_dns_lookup () {
- if [ -e ${IMAGE_ROOTFS}${sysconfdir}/ssh/sshd_config ]; then
- sed -i -e 's:#UseDNS yes:UseDNS no:' ${IMAGE_ROOTFS}${sysconfdir}/ssh/sshd_config
+#
+# allow dropbear/openssh to accept root logins
+#
+ssh_allow_root_login () {
+ for config in sshd_config sshd_config_readonly; do
+ if [ -e ${IMAGE_ROOTFS}${sysconfdir}/ssh/$config ]; then
+ sed -i 's/^[#[:space:]]*PermitRootLogin.*/PermitRootLogin yes/' ${IMAGE_ROOTFS}${sysconfdir}/ssh/$config
+ fi
+ done
+
+ if [ -e ${IMAGE_ROOTFS}${sbindir}/dropbear ] ; then
+ if grep -q DROPBEAR_EXTRA_ARGS ${IMAGE_ROOTFS}${sysconfdir}/default/dropbear 2>/dev/null ; then
+ sed -i '/^DROPBEAR_EXTRA_ARGS=/ s/-w//' ${IMAGE_ROOTFS}${sysconfdir}/default/dropbear
+ fi
fi
}
@@ -311,17 +316,18 @@ rootfs_sysroot_relativelinks () {
python write_image_test_data() {
from oe.data import export2json
- testdata = "%s/%s.testdata.json" % (d.getVar('DEPLOY_DIR_IMAGE'), d.getVar('IMAGE_NAME'))
- testdata_link = "%s/%s.testdata.json" % (d.getVar('DEPLOY_DIR_IMAGE'), d.getVar('IMAGE_LINK_NAME'))
+ deploy_dir = d.getVar('IMGDEPLOYDIR')
+ link_name = d.getVar('IMAGE_LINK_NAME')
+ testdata_name = os.path.join(deploy_dir, "%s.testdata.json" % d.getVar('IMAGE_NAME'))
- bb.utils.mkdirhier(os.path.dirname(testdata))
searchString = "%s/"%(d.getVar("TOPDIR")).replace("//","/")
- export2json(d, testdata,searchString=searchString,replaceString="")
+ export2json(d, testdata_name, searchString=searchString, replaceString="")
- if testdata_link != testdata:
+ if os.path.exists(testdata_name):
+ testdata_link = os.path.join(deploy_dir, "%s.testdata.json" % link_name)
if os.path.lexists(testdata_link):
- os.remove(testdata_link)
- os.symlink(os.path.basename(testdata), testdata_link)
+ os.remove(testdata_link)
+ os.symlink(os.path.basename(testdata_name), testdata_link)
}
write_image_test_data[vardepsexclude] += "TOPDIR"
diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
index e0e57ceec1f..4e8eae8946d 100644
--- a/meta/classes/sanity.bbclass
+++ b/meta/classes/sanity.bbclass
@@ -336,11 +336,11 @@ def check_path_length(filepath, pathname, limit):
return ""
def get_filesystem_id(path):
- status, result = oe.utils.getstatusoutput("stat -f -c '%s' '%s'" % ("%t", path))
- if status == 0:
- return result
- else:
- bb.warn("Can't get the filesystem id of: %s" % path)
+ import subprocess
+ try:
+ return subprocess.check_output(["stat", "-f", "-c", "%t", path]).decode('utf-8')
+ except subprocess.CalledProcessError:
+ bb.warn("Can't get filesystem id of: %s" % path)
return None
# Check that the path isn't located on nfs.
@@ -463,7 +463,7 @@ def check_patch_version(sanity_data):
import re, subprocess
try:
- result = subprocess.check_output(["patch", "--version"], stderr=subprocess.STDOUT, universal_newlines=True)
+ 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"):
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"
@@ -476,9 +476,12 @@ def check_patch_version(sanity_data):
# Use a modified reproducer from http://savannah.gnu.org/bugs/?30612 to validate.
def check_make_version(sanity_data):
from distutils.version import LooseVersion
- status, result = oe.utils.getstatusoutput("make --version")
- if status != 0:
- return "Unable to execute make --version, exit code %d\n" % status
+ import subprocess
+
+ try:
+ result = subprocess.check_output(['make', '--version'], stderr=subprocess.STDOUT).decode('utf-8')
+ 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"):
# Construct a test file
@@ -493,18 +496,18 @@ def check_make_version(sanity_data):
f.close()
# Check if make 3.82 has been patched
- status,result = oe.utils.getstatusoutput("make -f makefile_test")
-
- os.remove("makefile_test")
- if os.path.exists("makefile_test_a.c"):
- os.remove("makefile_test_a.c")
- if os.path.exists("makefile_test_b.c"):
- os.remove("makefile_test_b.c")
- if os.path.exists("makefile_test.a"):
- os.remove("makefile_test.a")
-
- if status != 0:
+ try:
+ subprocess.check_call(['make', '-f', 'makefile_test'])
+ except subprocess.CalledProcessError as e:
return "Your version of make 3.82 is broken. Please revert to 3.81 or install a patched version.\n"
+ finally:
+ os.remove("makefile_test")
+ if os.path.exists("makefile_test_a.c"):
+ os.remove("makefile_test_a.c")
+ if os.path.exists("makefile_test_b.c"):
+ os.remove("makefile_test_b.c")
+ if os.path.exists("makefile_test.a"):
+ os.remove("makefile_test.a")
return None
@@ -512,9 +515,11 @@ def check_make_version(sanity_data):
# but earlier versions do not; this needs to work properly for sstate
def check_tar_version(sanity_data):
from distutils.version import LooseVersion
- status, result = oe.utils.getstatusoutput("tar --version")
- if status != 0:
- return "Unable to execute tar --version, exit code %d\n" % status
+ 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"
@@ -525,9 +530,11 @@ def check_tar_version(sanity_data):
# 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
- status, result = oe.utils.getstatusoutput("git --version 2> /dev/null")
- if status != 0:
- return "Unable to execute git --version, exit code %d\n" % status
+ 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"):
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"
@@ -535,13 +542,15 @@ def check_git_version(sanity_data):
# Check the required perl modules which may not be installed by default
def check_perl_modules(sanity_data):
+ import subprocess
ret = ""
modules = ( "Text::ParseWords", "Thread::Queue", "Data::Dumper" )
errresult = ''
for m in modules:
- status, result = oe.utils.getstatusoutput("perl -e 'use %s'" % m)
- if status != 0:
- errresult += result
+ try:
+ subprocess.check_output(["perl", "-e", "use %s" % m])
+ except subprocess.CalledProcessError as e:
+ errresult += e.output
ret += "%s " % m
if ret:
return "Required perl module(s) not found: %s\n\n%s\n" % (ret, errresult)
diff --git a/meta/classes/setuptools.bbclass b/meta/classes/setuptools.bbclass
index 56343b1c731..a923ea3c4a1 100644
--- a/meta/classes/setuptools.bbclass
+++ b/meta/classes/setuptools.bbclass
@@ -1,8 +1,3 @@
inherit distutils
-DEPENDS += "python-distribute-native"
-
-DISTUTILS_INSTALL_ARGS = "--root=${D} \
- --prefix=${prefix} \
- --install-lib=${PYTHON_SITEPACKAGES_DIR} \
- --install-data=${datadir}"
+DEPENDS += "python-setuptools-native"
diff --git a/meta/classes/setuptools3.bbclass b/meta/classes/setuptools3.bbclass
index de6dd9440c6..8ca66ee708e 100644
--- a/meta/classes/setuptools3.bbclass
+++ b/meta/classes/setuptools3.bbclass
@@ -2,7 +2,3 @@ inherit distutils3
DEPENDS += "python3-setuptools-native"
-DISTUTILS_INSTALL_ARGS = "--root=${D} \
- --prefix=${prefix} \
- --install-lib=${PYTHON_SITEPACKAGES_DIR} \
- --install-data=${datadir}"
diff --git a/meta/classes/siteinfo.bbclass b/meta/classes/siteinfo.bbclass
index 86bb853be22..24585d58427 100644
--- a/meta/classes/siteinfo.bbclass
+++ b/meta/classes/siteinfo.bbclass
@@ -15,11 +15,13 @@
# It is an error for the target not to exist.
# If 'what' doesn't exist then an empty value is returned
#
-def siteinfo_data(d):
+def siteinfo_data_for_machine(arch, os, d):
archinfo = {
"allarch": "endian-little bit-32", # bogus, but better than special-casing the checks below for allarch
"aarch64": "endian-little bit-64 arm-common arm-64",
"aarch64_be": "endian-big bit-64 arm-common arm-64",
+ "arc": "endian-little bit-32 arc-common",
+ "arceb": "endian-big bit-32 arc-common",
"arm": "endian-little bit-32 arm-common arm-32",
"armeb": "endian-big bit-32 arm-common arm-32",
"avr32": "endian-big bit-32 avr32-common",
@@ -30,6 +32,7 @@ def siteinfo_data(d):
"i586": "endian-little bit-32 ix86-common",
"i686": "endian-little bit-32 ix86-common",
"ia64": "endian-little bit-64",
+ "lm32": "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",
@@ -128,15 +131,13 @@ def siteinfo_data(d):
locs = { "archinfo" : archinfo, "osinfo" : osinfo, "targetinfo" : targetinfo, "d" : d}
archinfo, osinfo, targetinfo = bb.utils.better_eval(call, locs)
- hostarch = d.getVar("HOST_ARCH")
- hostos = d.getVar("HOST_OS")
- target = "%s-%s" % (hostarch, hostos)
+ target = "%s-%s" % (arch, os)
sitedata = []
- if hostarch in archinfo:
- sitedata.extend(archinfo[hostarch].split())
- if hostos in osinfo:
- sitedata.extend(osinfo[hostos].split())
+ if arch in archinfo:
+ sitedata.extend(archinfo[arch].split())
+ if os in osinfo:
+ sitedata.extend(osinfo[os].split())
if target in targetinfo:
sitedata.extend(targetinfo[target].split())
sitedata.append(target)
@@ -145,6 +146,9 @@ def siteinfo_data(d):
bb.debug(1, "SITE files %s" % sitedata);
return sitedata
+def siteinfo_data(d):
+ return siteinfo_data_for_machine(d.getVar("HOST_ARCH"), d.getVar("HOST_OS"), d)
+
python () {
sitedata = set(siteinfo_data(d))
if "endian-little" in sitedata:
diff --git a/meta/classes/spdx.bbclass b/meta/classes/spdx.bbclass
index c5f544d2a4f..fb78e274a8e 100644
--- a/meta/classes/spdx.bbclass
+++ b/meta/classes/spdx.bbclass
@@ -202,18 +202,13 @@ def list_files(dir):
return
def hash_file(file_name):
- try:
- with open(file_name, 'rb') as f:
- data_string = f.read()
- sha1 = hash_string(data_string)
- return sha1
- except:
- return None
+ from bb.utils import sha1_file
+ return sha1_file(file_name)
def hash_string(data):
import hashlib
sha1 = hashlib.sha1()
- sha1.update(data)
+ sha1.update(data.encode('utf-8'))
return sha1.hexdigest()
def run_fossology(foss_command, full_spdx):
@@ -226,7 +221,7 @@ def run_fossology(foss_command, full_spdx):
except subprocess.CalledProcessError as e:
return None
- foss_output = string.replace(foss_output, '\r', '')
+ foss_output = foss_output.replace('\r', '')
# Package info
package_info = {}
@@ -289,7 +284,8 @@ def create_spdx_doc(file_info, scanned_files):
def get_ver_code(dirname):
chksums = []
for f_dir, f in list_files(dirname):
- hash = hash_file(os.path.join(dirname, f_dir, f))
+ path = os.path.join(dirname, f_dir, f)
+ hash = hash_file(path)
if not hash is None:
chksums.append(hash)
else:
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index 0b288501407..efb0096c709 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -25,14 +25,21 @@ PV[vardepvalue] = "${PV}"
SSTATE_EXTRAPATH[vardepvalue] = ""
# For multilib rpm the allarch packagegroup files can overwrite (in theory they're identical)
-SSTATE_DUPWHITELIST = "${DEPLOY_DIR_IMAGE}/ ${DEPLOY_DIR}/licenses/ ${DEPLOY_DIR_RPM}/noarch/"
+SSTATE_DUPWHITELIST = "${DEPLOY_DIR}/licenses/"
# Avoid docbook/sgml catalog warnings for now
SSTATE_DUPWHITELIST += "${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/"
+# 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/"
# Archive the sources for many architectures in one deploy folder
SSTATE_DUPWHITELIST += "${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_SCAN_FILES ?= "*.la *-config *_config postinst-*"
SSTATE_SCAN_CMD ??= 'find ${SSTATE_BUILDDIR} \( -name "${@"\" -o -name \"".join(d.getVar("SSTATE_SCAN_FILES").split())}" \) -type f'
@@ -59,7 +66,6 @@ SSTATEPREINSTFUNCS = ""
SSTATEPOSTUNPACKFUNCS = "sstate_hardcode_path_unpack"
SSTATEPOSTINSTFUNCS = ""
EXTRA_STAGING_FIXMES ?= "HOSTTOOLS_DIR"
-SSTATECLEANFUNCS = ""
# Check whether sstate exists for tasks that support sstate and are in the
# locked signatures file.
@@ -301,7 +307,7 @@ def sstate_installpkg(ss, d):
sstatepkg = d.getVar('SSTATE_PKG') + '_' + ss['task'] + ".tgz"
if not os.path.exists(sstatepkg):
- pstaging_fetch(sstatefetch, sstatepkg, d)
+ pstaging_fetch(sstatefetch, d)
if not os.path.isfile(sstatepkg):
bb.note("Staging package %s does not exist" % sstatepkg)
@@ -408,7 +414,7 @@ python sstate_hardcode_path_unpack () {
bb.note("Replacing fixme paths in sstate package: %s" % (sstate_hardcode_cmd))
subprocess.check_call(sstate_hardcode_cmd, shell=True)
- # Need to remove this or we'd copy it into the target directory and may
+ # Need to remove this or we'd copy it into the target directory and may
# conflict with another writer
os.remove(fixmefn)
}
@@ -507,10 +513,6 @@ def sstate_clean(ss, d):
stfile.endswith(rm_nohash):
oe.path.remove(stfile)
- # Removes the users/groups created by the package
- for cleanfunc in (d.getVar('SSTATECLEANFUNCS') or '').split():
- bb.build.exec_func(cleanfunc, d)
-
sstate_clean[vardepsexclude] = "SSTATE_MANFILEPREFIX"
CLEANFUNCS += "sstate_cleanall"
@@ -640,7 +642,7 @@ def sstate_package(ss, d):
return
-def pstaging_fetch(sstatefetch, sstatepkg, d):
+def pstaging_fetch(sstatefetch, d):
import bb.fetch2
# Only try and fetch if the user has configured a mirror
@@ -720,17 +722,24 @@ sstate_task_postfunc[dirs] = "${WORKDIR}"
#
sstate_create_package () {
TFILE=`mktemp ${SSTATE_PKG}.XXXXXXXX`
+
+ # Use pigz if available
+ OPT="-czS"
+ if [ -x "$(command -v pigz)" ]; then
+ OPT="-I pigz -cS"
+ fi
+
# Need to handle empty directories
if [ "$(ls -A)" ]; then
set +e
- tar -czf $TFILE *
+ tar $OPT -f $TFILE *
ret=$?
if [ $ret -ne 0 ] && [ $ret -ne 1 ]; then
exit 1
fi
set -e
else
- tar -cz --file=$TFILE --files-from=/dev/null
+ tar $OPT --file=$TFILE --files-from=/dev/null
fi
chmod 0664 $TFILE
mv -f $TFILE ${SSTATE_PKG}
@@ -890,6 +899,18 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash, sq_hashfn, d, siginfo=False):
evdata['found'].append( (sq_fn[task], sq_task[task], sq_hash[task], sstatefile ) )
bb.event.fire(bb.event.MetadataEvent("MissedSstate", evdata), d)
+ # Print some summary statistics about the current task completion and how much sstate
+ # reuse there was. Avoid divide by zero errors.
+ total = len(sq_fn)
+ currentcount = d.getVar("BB_SETSCENE_STAMPCURRENT_COUNT") or 0
+ complete = 0
+ if currentcount:
+ complete = (len(ret) + currentcount) / (total + currentcount) * 100
+ match = 0
+ if total:
+ match = len(ret) / total * 100
+ bb.plain("Sstate summary: Wanted %d Found %d Missed %d Current %d (%d%% match, %d%% complete)" % (total, len(ret), len(missed), currentcount, match, complete))
+
if hasattr(bb.parse.siggen, "checkhashes"):
bb.parse.siggen.checkhashes(missed, ret, sq_fn, sq_task, sq_hash, sq_hashfn, d)
@@ -902,6 +923,7 @@ def setscene_depvalid(task, taskdependees, notneeded, d, log=None):
# task is included in taskdependees too
# Return - False - We need this dependency
# - True - We can skip this dependency
+ import re
def logit(msg, log):
if log is not None:
@@ -956,11 +978,24 @@ def setscene_depvalid(task, taskdependees, notneeded, d, log=None):
# Consider sysroot depending on sysroot tasks
if taskdependees[task][1] == 'do_populate_sysroot' and taskdependees[dep][1] == 'do_populate_sysroot':
- # base-passwd/shadow-sysroot don't need their dependencies
- if taskdependees[dep][0].endswith(("base-passwd", "shadow-sysroot")):
- continue
- # Nothing need depend on libc-initial/gcc-cross-initial
- if "-initial" in taskdependees[task][0]:
+ # Allow excluding certain recursive dependencies. If a recipe needs it should add a
+ # specific dependency itself, rather than relying on one of its dependees to pull
+ # them in.
+ # See also http://lists.openembedded.org/pipermail/openembedded-core/2018-January/146324.html
+ not_needed = False
+ excludedeps = d.getVar('_SSTATE_EXCLUDEDEPS_SYSROOT')
+ if excludedeps is None:
+ # Cache the regular expressions for speed
+ excludedeps = []
+ for excl in (d.getVar('SSTATE_EXCLUDEDEPS_SYSROOT') or "").split():
+ excludedeps.append((re.compile(excl.split('->', 1)[0]), re.compile(excl.split('->', 1)[1])))
+ d.setVar('_SSTATE_EXCLUDEDEPS_SYSROOT', excludedeps)
+ for excl in excludedeps:
+ if excl[0].match(taskdependees[dep][0]):
+ if excl[1].match(taskdependees[task][0]):
+ not_needed = True
+ break
+ if not_needed:
continue
# For meta-extsdk-toolchain we want all sysroot dependencies
if taskdependees[dep][0] == 'meta-extsdk-toolchain':
@@ -1007,7 +1042,7 @@ python sstate_eventhandler() {
bb.siggen.dump_this_task(sstatepkg + '_' + taskname + ".tgz" ".siginfo", d)
}
-SSTATE_PRUNE_OBSOLETEWORKDIR = "1"
+SSTATE_PRUNE_OBSOLETEWORKDIR ?= "1"
# Event handler which removes manifests and stamps file for
# recipes which are no longer reachable in a build where they
@@ -1027,6 +1062,16 @@ python sstate_eventhandler2() {
with open(preservestampfile, 'r') as f:
preservestamps = f.readlines()
seen = []
+
+ # The machine index contains all the stamps this machine has ever seen in this build directory.
+ # We should only remove things which this machine once accessed but no longer does.
+ machineindex = set()
+ bb.utils.mkdirhier(d.expand("${SSTATE_MANIFESTS}"))
+ mi = d.expand("${SSTATE_MANIFESTS}/index-machine-${MACHINE}")
+ if os.path.exists(mi):
+ with open(mi, "r") as f:
+ machineindex = set(line.strip() for line in f.readlines())
+
for a in sorted(list(set(d.getVar("SSTATE_ARCHS").split()))):
toremove = []
i = d.expand("${SSTATE_MANIFESTS}/index-" + a)
@@ -1036,7 +1081,7 @@ python sstate_eventhandler2() {
lines = f.readlines()
for l in lines:
(stamp, manifest, workdir) = l.split()
- if stamp not in stamps and stamp not in preservestamps:
+ if stamp not in stamps and stamp not in preservestamps and stamp in machineindex:
toremove.append(l)
if stamp not in seen:
bb.debug(2, "Stamp %s is not reachable, removing related manifests" % stamp)
@@ -1065,6 +1110,11 @@ python sstate_eventhandler2() {
with open(i, "w") as f:
for l in lines:
f.write(l)
+ machineindex |= set(stamps)
+ with open(mi, "w") as f:
+ for l in machineindex:
+ f.write(l + "\n")
+
if preservestamps:
os.remove(preservestampfile)
}
diff --git a/meta/classes/staging.bbclass b/meta/classes/staging.bbclass
index 3fcbc9f15d3..84e13bab592 100644
--- a/meta/classes/staging.bbclass
+++ b/meta/classes/staging.bbclass
@@ -70,7 +70,7 @@ sysroot_stage_all() {
python sysroot_strip () {
inhibit_sysroot = d.getVar('INHIBIT_SYSROOT_STRIP')
if inhibit_sysroot and oe.types.boolean(inhibit_sysroot):
- return 0
+ return
dstdir = d.getVar('SYSROOT_DESTDIR')
pn = d.getVar('PN')
@@ -79,7 +79,7 @@ python sysroot_strip () {
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,
+ oe.package.strip_execs(pn, dstdir, strip_cmd, libdir, base_libdir, d,
qa_already_stripped=qa_already_stripped)
}
@@ -256,7 +256,7 @@ python extend_recipe_sysroot() {
workdir = d.getVar("WORKDIR")
#bb.warn(str(taskdepdata))
pn = d.getVar("PN")
-
+ mc = d.getVar("BB_CURRENT_MC")
stagingdir = d.getVar("STAGING_DIR")
sharedmanifests = d.getVar("COMPONENTS_DIR") + "/manifests"
recipesysroot = d.getVar("RECIPE_SYSROOT")
@@ -294,12 +294,14 @@ python extend_recipe_sysroot() {
start = set([start])
sstatetasks = d.getVar("SSTATETASKS").split()
+ # Add recipe specific tasks referenced by setscene_depvalid()
+ sstatetasks.append("do_stash_locale")
def print_dep_tree(deptree):
data = ""
for dep in deptree:
deps = " " + "\n ".join(deptree[dep][3]) + "\n"
- data = "%s:\n %s\n %s\n%s %s\n %s\n" % (deptree[dep][0], deptree[dep][1], deptree[dep][2], deps, deptree[dep][4], deptree[dep][5])
+ data = data + "%s:\n %s\n %s\n%s %s\n %s\n" % (deptree[dep][0], deptree[dep][1], deptree[dep][2], deps, deptree[dep][4], deptree[dep][5])
return data
#bb.note("Full dep tree is:\n%s" % print_dep_tree(taskdepdata))
@@ -383,8 +385,6 @@ python extend_recipe_sysroot() {
lock = bb.utils.lockfile(recipesysroot + "/sysroot.lock")
fixme = {}
- fixme[''] = []
- fixme['native'] = []
seendirs = set()
postinsts = []
multilibs = {}
@@ -445,7 +445,13 @@ python extend_recipe_sysroot() {
msg_exists = []
msg_adding = []
+
for dep in configuredeps:
+ if mc != 'default':
+ # We should not care about other multiconfigs
+ depmc = dep.split(':')[1]
+ if depmc != mc:
+ continue
c = setscenedeps[dep][0]
if c not in installed:
continue
@@ -471,7 +477,14 @@ python extend_recipe_sysroot() {
os.symlink(c + "." + taskhash, depdir + "/" + c)
manifest, d2 = oe.sstatesig.find_sstate_manifest(c, setscenedeps[dep][2], "populate_sysroot", d, multilibs)
+ if d2 is not d:
+ # If we don't do this, the recipe sysroot will be placed in the wrong WORKDIR for multilibs
+ # We need a consistent WORKDIR for the image
+ d2.setVar("WORKDIR", d.getVar("WORKDIR"))
destsysroot = d2.getVar("RECIPE_SYSROOT")
+ # We put allarch recipes into the default sysroot
+ if manifest and "allarch" in manifest:
+ destsysroot = d.getVar("RECIPE_SYSROOT")
native = False
if c.endswith("-native") or "-cross-" in c or "-crosssdk" in c:
@@ -479,12 +492,13 @@ python extend_recipe_sysroot() {
if manifest:
newmanifest = collections.OrderedDict()
+ targetdir = destsysroot
if native:
- fm = fixme['native']
targetdir = recipesysrootnative
- else:
- fm = fixme['']
- targetdir = destsysroot
+ if targetdir not in fixme:
+ fixme[targetdir] = []
+ fm = fixme[targetdir]
+
with open(manifest, "r") as f:
manifests[dep] = manifest
for l in f:
@@ -542,12 +556,7 @@ python extend_recipe_sysroot() {
bb.note("Skipping as already exists in sysroot: %s" % str(msg_exists))
for f in fixme:
- if f == '':
- staging_processfixme(fixme[f], recipesysroot, recipesysroot, recipesysrootnative, d)
- elif f == 'native':
- staging_processfixme(fixme[f], recipesysrootnative, recipesysroot, recipesysrootnative, d)
- else:
- staging_processfixme(fixme[f], multilibs[f].getVar("RECIPE_SYSROOT"), recipesysroot, recipesysrootnative, d)
+ staging_processfixme(fixme[f], f, recipesysroot, recipesysrootnative, d)
for p in postinsts:
subprocess.check_output(p, shell=True, stderr=subprocess.STDOUT)
diff --git a/meta/classes/systemd.bbclass b/meta/classes/systemd.bbclass
index 1b134322fbc..c7b784dea8e 100644
--- a/meta/classes/systemd.bbclass
+++ b/meta/classes/systemd.bbclass
@@ -34,10 +34,10 @@ if type systemctl >/dev/null 2>/dev/null; then
systemctl daemon-reload
fi
- systemctl $OPTS ${SYSTEMD_AUTO_ENABLE} ${SYSTEMD_SERVICE}
+ systemctl $OPTS ${SYSTEMD_AUTO_ENABLE} ${SYSTEMD_SERVICE_ESCAPED}
if [ -z "$D" -a "${SYSTEMD_AUTO_ENABLE}" = "enable" ]; then
- systemctl --no-block restart ${SYSTEMD_SERVICE}
+ systemctl --no-block restart ${SYSTEMD_SERVICE_ESCAPED}
fi
fi
}
@@ -51,10 +51,10 @@ fi
if type systemctl >/dev/null 2>/dev/null; then
if [ -z "$D" ]; then
- systemctl stop ${SYSTEMD_SERVICE}
+ systemctl stop ${SYSTEMD_SERVICE_ESCAPED}
fi
- systemctl $OPTS disable ${SYSTEMD_SERVICE}
+ systemctl $OPTS disable ${SYSTEMD_SERVICE_ESCAPED}
fi
}
@@ -65,6 +65,7 @@ systemd_populate_packages[vardepsexclude] += "OVERRIDES"
python systemd_populate_packages() {
import re
+ import shlex
if not bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d):
return
@@ -85,6 +86,9 @@ 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, True).split())
+ d.setVar('SYSTEMD_SERVICE_ESCAPED_' + pkg, paths_escaped)
+
# Add pkg to the overrides so that it finds the SYSTEMD_SERVICE_pkg
# variable.
localdata = d.createCopy()
@@ -130,7 +134,7 @@ python systemd_populate_packages() {
systemd_add_files_and_parse(pkg_systemd, path, service_base + '@.service', keys)
for key in keys.split():
# recurse all dependencies found in keys ('Also';'Conflicts';..) and add to files
- cmd = "grep %s %s | sed 's,%s=,,g' | tr ',' '\\n'" % (key, fullpath, key)
+ cmd = "grep %s %s | sed 's,%s=,,g' | tr ',' '\\n'" % (key, shlex.quote(fullpath), key)
pipe = os.popen(cmd, 'r')
line = pipe.readline()
while line:
diff --git a/meta/classes/terminal.bbclass b/meta/classes/terminal.bbclass
index a27e10c6ecb..73e765d57aa 100644
--- a/meta/classes/terminal.bbclass
+++ b/meta/classes/terminal.bbclass
@@ -25,7 +25,8 @@ def emit_terminal_func(command, envdata, d):
bb.utils.mkdirhier(os.path.dirname(runfile))
with open(runfile, 'w') as script:
- script.write('#!/bin/sh -e\n')
+ script.write('#!/usr/bin/env %s\n' % d.getVar('SHELL'))
+ script.write('set -e\n')
bb.data.emit_func(cmd_func, script, envdata)
script.write(cmd_func)
script.write("\n")
diff --git a/meta/classes/testimage-auto.bbclass b/meta/classes/testimage-auto.bbclass
deleted file mode 100644
index e0a22b773c8..00000000000
--- a/meta/classes/testimage-auto.bbclass
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright (C) 2013 Intel Corporation
-#
-# Released under the MIT license (see COPYING.MIT)
-
-
-# Run tests automatically on an image after the image is constructed
-# (as opposed to testimage.bbclass alone where tests must be called
-# manually using bitbake -c testimage <image>).
-#
-# NOTE: to use this class, simply set TEST_IMAGE = "1" - no need to
-# inherit it since that will be done in image.bbclass when this variable
-# has been set.
-#
-# See testimage.bbclass for the test implementation.
-
-inherit testimage
-
-python do_testimage_auto() {
- testimage_main(d)
-}
-addtask testimage_auto before do_build after do_image_complete
-do_testimage_auto[depends] += "${TESTIMAGEDEPENDS}"
-do_testimage_auto[lockfiles] += "${TESTIMAGELOCK}"
diff --git a/meta/classes/testimage.bbclass b/meta/classes/testimage.bbclass
index 77291c22ce5..0adaf60f1b6 100644
--- a/meta/classes/testimage.bbclass
+++ b/meta/classes/testimage.bbclass
@@ -10,6 +10,11 @@
# - first add IMAGE_CLASSES += "testimage" in local.conf
# - build a qemu core-image-sato
# - then bitbake core-image-sato -c testimage. That will run a standard suite of tests.
+#
+# The tests can be run automatically each time an image is built if you set
+# TESTIMAGE_AUTO = "1"
+
+TESTIMAGE_AUTO ??= "0"
# You can set (or append to) TEST_SUITES in local.conf to select the tests
# which you want to run for your target.
@@ -117,13 +122,6 @@ testimage_dump_host () {
}
python do_testimage() {
-
- testimage_sanity(d)
-
- if (d.getVar('IMAGE_PKGTYPE') == 'rpm'
- and 'dnf' in d.getVar('TEST_SUITES')):
- create_rpm_index(d)
-
testimage_main(d)
}
@@ -159,6 +157,12 @@ def testimage_main(d):
"""
raise RuntimeError
+ testimage_sanity(d)
+
+ if (d.getVar('IMAGE_PKGTYPE') == 'rpm'
+ and ('dnf' in d.getVar('TEST_SUITES') or 'auto' in d.getVar('TEST_SUITES'))):
+ create_rpm_index(d)
+
logger = make_logger_bitbake_compatible(logging.getLogger("BitBake"))
pn = d.getVar("PN")
@@ -217,8 +221,8 @@ def testimage_main(d):
# Get use_kvm
qemu_use_kvm = d.getVar("QEMU_USE_KVM")
if qemu_use_kvm and \
- (oe.types.boolean(qemu_use_kvm) and 'x86' in machine or \
- d.getVar('MACHINE') in qemu_use_kvm.split()):
+ (d.getVar('MACHINE') in qemu_use_kvm.split() or \
+ oe.types.boolean(qemu_use_kvm) and 'x86' in machine):
kvm = True
else:
kvm = False
@@ -260,10 +264,16 @@ def testimage_main(d):
# Load tests before starting the target
test_paths = get_runtime_paths(d)
test_modules = d.getVar('TEST_SUITES').split()
+ if not test_modules:
+ bb.fatal('Empty test suite, please verify TEST_SUITES variable')
+
tc.loadTests(test_paths, modules=test_modules)
- if not getSuiteCases(tc.suites):
+ suitecases = getSuiteCases(tc.suites)
+ if not suitecases:
bb.fatal('Empty test suite, please verify TEST_SUITES variable')
+ else:
+ bb.debug(2, 'test suites:\n\t%s' % '\n\t'.join([str(c) for c in suitecases]))
package_extraction(d, tc.suites)
@@ -296,6 +306,18 @@ def testimage_main(d):
bb.fatal('%s - FAILED - tests were interrupted during execution' % pn, forcelog=True)
results.logDetails()
results.logSummary(pn)
+ if (d.getVar('OEQA_SKIP_OUTPUT_JSON')) == '1':
+ bb.debug(2, 'Skip the OEQA output json testresult as OEQA_SKIP_OUTPUT_JSON=1')
+ else:
+ workdir = d.getVar("WORKDIR")
+ image_basename = d.getVar("IMAGE_BASENAME")
+ json_result_dir = os.path.join(workdir,
+ 'temp',
+ 'json_testresults-%s' % os.getpid(),
+ 'runtime',
+ machine,
+ image_basename)
+ results.logDetailsInJson(json_result_dir)
if not results.wasSuccessful():
bb.fatal('%s - FAILED - check the task log and the ssh log' % pn, forcelog=True)
@@ -331,6 +353,7 @@ def create_index(arg):
return None
def create_rpm_index(d):
+ import glob
# Index RPMs
rpm_createrepo = bb.utils.which(os.getenv('PATH'), "createrepo_c")
index_cmds = []
@@ -347,9 +370,13 @@ def create_rpm_index(d):
lf = bb.utils.lockfile(lockfilename, False)
oe.path.copyhardlinktree(rpm_dir, idx_path)
# Full indexes overload a 256MB image so reduce the number of rpms
- # in the feed. Filter to r* since we use the run-postinst packages and
- # this leaves some allarch and machine arch packages too.
- bb.utils.remove(idx_path + "*/[a-qs-z]*.rpm")
+ # in the feed by filtering to specific packages needed by the tests.
+ package_list = glob.glob(idx_path + "*/*.rpm")
+
+ for pkg in package_list:
+ if not os.path.basename(pkg).startswith(("rpm", "run-postinsts", "busybox", "bash", "update-alternatives", "libc6", "curl", "musl")):
+ bb.utils.remove(pkg)
+
bb.utils.unlockfile(lf)
cmd = '%s --update -q %s' % (rpm_createrepo, idx_path)
@@ -372,4 +399,9 @@ def package_extraction(d, test_suites):
testimage_main[vardepsexclude] += "BB_ORIGENV DATETIME"
+python () {
+ if oe.types.boolean(d.getVar("TESTIMAGE_AUTO") or "False"):
+ bb.build.addtask("testimage", "do_build", "do_image_complete", d)
+}
+
inherit testsdk
diff --git a/meta/classes/testsdk.bbclass b/meta/classes/testsdk.bbclass
index 2e43343643e..6f81fe01531 100644
--- a/meta/classes/testsdk.bbclass
+++ b/meta/classes/testsdk.bbclass
@@ -24,8 +24,6 @@ def testsdk_main(d):
from oeqa.sdk.context import OESDKTestContext, OESDKTestContextExecutor
from oeqa.utils import make_logger_bitbake_compatible
- bb.event.enable_threadlock()
-
pn = d.getVar("PN")
logger = make_logger_bitbake_compatible(logging.getLogger("BitBake"))
@@ -44,6 +42,14 @@ def testsdk_main(d):
host_pkg_manifest = OESDKTestContextExecutor._load_manifest(
d.expand("${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.host.manifest"))
+ processes = d.getVar("TESTIMAGE_NUMBER_THREADS") or d.getVar("BB_NUMBER_THREADS")
+ if processes:
+ try:
+ import testtools, subunit
+ except ImportError:
+ bb.warn("Failed to import testtools or subunit, the testcases will run serially")
+ processes = None
+
sdk_dir = d.expand("${WORKDIR}/testimage-sdk/")
bb.utils.remove(sdk_dir, True)
bb.utils.mkdirhier(sdk_dir)
@@ -67,13 +73,27 @@ def testsdk_main(d):
import traceback
bb.fatal("Loading tests failed:\n%s" % traceback.format_exc())
- result = tc.runTests()
+ if processes:
+ result = tc.runTests(processes=int(processes))
+ else:
+ result = tc.runTests()
component = "%s %s" % (pn, OESDKTestContextExecutor.name)
context_msg = "%s:%s" % (os.path.basename(tcname), os.path.basename(sdk_env))
result.logDetails()
result.logSummary(component, context_msg)
+ if (d.getVar('OEQA_SKIP_OUTPUT_JSON')) == '1':
+ bb.debug(2, 'Skip the OEQA output json testresult as OEQA_SKIP_OUTPUT_JSON=1')
+ else:
+ workdir = d.getVar("WORKDIR")
+ image_basename = d.getVar("IMAGE_BASENAME")
+ json_result_dir = os.path.join(workdir,
+ 'temp',
+ 'json_testresults-%s' % os.getpid(),
+ 'sdk',
+ image_basename)
+ result.logDetailsInJson(json_result_dir)
if not result.wasSuccessful():
fail = True
@@ -99,8 +119,6 @@ def testsdkext_main(d):
from oeqa.utils import avoid_paths_in_environ, make_logger_bitbake_compatible, subprocesstweak
from oeqa.sdkext.context import OESDKExtTestContext, OESDKExtTestContextExecutor
- bb.event.enable_threadlock()
-
pn = d.getVar("PN")
logger = make_logger_bitbake_compatible(logging.getLogger("BitBake"))
@@ -157,6 +175,7 @@ def testsdkext_main(d):
f.write('SSTATE_MIRRORS += " \\n 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'))
# We need to do this in case we have a minimal SDK
subprocess.check_output(". %s > /dev/null; devtool sdk-install meta-extsdk-toolchain" % \
@@ -179,6 +198,17 @@ def testsdkext_main(d):
result.logDetails()
result.logSummary(component, context_msg)
+ if (d.getVar('OEQA_SKIP_OUTPUT_JSON')) == '1':
+ bb.debug(2, 'Skip the OEQA output json testresult as OEQA_SKIP_OUTPUT_JSON=1')
+ else:
+ workdir = d.getVar("WORKDIR")
+ image_basename = d.getVar("IMAGE_BASENAME")
+ json_result_dir = os.path.join(workdir,
+ 'temp',
+ 'json_testresults-%s' % os.getpid(),
+ 'sdkext',
+ image_basename)
+ result.logDetailsInJson(json_result_dir)
if not result.wasSuccessful():
fail = True
@@ -194,3 +224,8 @@ python do_testsdkext() {
addtask testsdkext
do_testsdkext[nostamp] = "1"
+python () {
+ if oe.types.boolean(d.getVar("TESTIMAGE_AUTO") or "False"):
+ bb.build.addtask("testsdk", None, "do_populate_sdk", d)
+ bb.build.addtask("testsdkext", None, "do_populate_sdk_ext", d)
+}
diff --git a/meta/classes/toolchain-scripts.bbclass b/meta/classes/toolchain-scripts.bbclass
index eeb320d15a8..6d1ba69473a 100644
--- a/meta/classes/toolchain-scripts.bbclass
+++ b/meta/classes/toolchain-scripts.bbclass
@@ -51,6 +51,10 @@ toolchain_create_sdk_env_script () {
echo "export OECORE_NATIVE_SYSROOT=\"$sdkpathnative\"" >> $script
echo 'export OECORE_TARGET_SYSROOT="$SDKTARGETSYSROOT"' >> $script
echo "export OECORE_ACLOCAL_OPTS=\"-I $sdkpathnative/usr/share/aclocal\"" >> $script
+ echo 'export OECORE_BASELIB="${baselib}"' >> $script
+ echo 'export OECORE_TARGET_ARCH="${TARGET_ARCH}"' >>$script
+ echo 'export OECORE_TARGET_OS="${TARGET_OS}"' >>$script
+
echo 'unset command_not_found_handle' >> $script
toolchain_shared_env_script
@@ -62,7 +66,8 @@ toolchain_create_tree_env_script () {
script=${TMPDIR}/environment-setup-${REAL_MULTIMACH_TARGET_SYS}
rm -f $script
touch $script
- echo 'export PATH=${STAGING_DIR_NATIVE}/usr/bin:${PATH}' >> $script
+ echo 'orig=`pwd`; cd ${COREBASE}; . ./oe-init-build-env ${TOPDIR}; cd $orig' >> $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
@@ -117,14 +122,34 @@ EOF
}
toolchain_create_post_relocate_script() {
- script=$1
- rm -f $script
- touch $script
+ relocate_script=$1
+ env_dir=$2
+ rm -f $relocate_script
+ touch $relocate_script
+
+ cat >> $relocate_script <<EOF
+# Source top-level SDK env scripts in case they are needed for the relocate
+# scripts.
+for env_setup_script in ${env_dir}/environment-setup-*; do
+ . \$env_setup_script
+ status=\$?
+ if [ \$status != 0 ]; then
+ echo "\$0: Failed to source \$env_setup_script with status \$status"
+ exit \$status
+ fi
+done
- cat >> $script <<EOF
if [ -d "${SDKPATHNATIVE}/post-relocate-setup.d/" ]; then
- for s in ${SDKPATHNATIVE}/post-relocate-setup.d/*.sh; do
+ for s in ${SDKPATHNATIVE}/post-relocate-setup.d/*; do
+ if [ ! -x \$s ]; then
+ continue
+ fi
\$s "\$1"
+ status=\$?
+ if [ \$status != 0 ]; then
+ echo "post-relocate command \"\$s \$1\" failed with status \$status" >&2
+ exit \$status
+ fi
done
rm -rf "${SDKPATHNATIVE}/post-relocate-setup.d"
fi
diff --git a/meta/classes/uboot-extlinux-config.bbclass b/meta/classes/uboot-extlinux-config.bbclass
index 61dff14b7c0..c65c421b60b 100644
--- a/meta/classes/uboot-extlinux-config.bbclass
+++ b/meta/classes/uboot-extlinux-config.bbclass
@@ -58,7 +58,7 @@
#
# The kernel has an internal default console, which you can override with
# a console=...some_tty...
-UBOOT_EXTLINUX_CONSOLE ??= "console=${console}"
+UBOOT_EXTLINUX_CONSOLE ??= "console=${console},${baudrate}"
UBOOT_EXTLINUX_LABELS ??= "linux"
UBOOT_EXTLINUX_FDT ??= ""
UBOOT_EXTLINUX_FDTDIR ??= "../"
diff --git a/meta/classes/uninative.bbclass b/meta/classes/uninative.bbclass
index de2221a3655..ba99fb6e8fd 100644
--- a/meta/classes/uninative.bbclass
+++ b/meta/classes/uninative.bbclass
@@ -1,10 +1,11 @@
-UNINATIVE_LOADER ?= "${UNINATIVE_STAGING_DIR}-uninative/${BUILD_ARCH}-linux/lib/${@bb.utils.contains('BUILD_ARCH', 'x86_64', 'ld-linux-x86-64.so.2', 'ld-linux.so.2', 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)}"
UNINATIVE_STAGING_DIR ?= "${STAGING_DIR}"
UNINATIVE_URL ?= "unset"
UNINATIVE_TARBALL ?= "${BUILD_ARCH}-nativesdk-libc.tar.bz2"
# Example checksums
-#UNINATIVE_CHECKSUM[i586] = "dead"
+#UNINATIVE_CHECKSUM[aarch64] = "dead"
+#UNINATIVE_CHECKSUM[i686] = "dead"
#UNINATIVE_CHECKSUM[x86_64] = "dead"
UNINATIVE_DLDIR ?= "${DL_DIR}/uninative/"
diff --git a/meta/classes/utils.bbclass b/meta/classes/utils.bbclass
index 4f016e3d002..0016e5c4e6d 100644
--- a/meta/classes/utils.bbclass
+++ b/meta/classes/utils.bbclass
@@ -328,16 +328,11 @@ def get_multilib_datastore(variant, d):
def all_multilib_tune_values(d, var, unique = True, need_split = True, delim = ' '):
"""Return a string of all ${var} in all multilib tune configuration"""
values = []
- value = d.getVar(var) or ""
- if value != "":
- if need_split:
- for item in value.split(delim):
- values.append(item)
- else:
- values.append(value)
- variants = d.getVar("MULTILIB_VARIANTS") or ""
- for item in variants.split():
+ variants = (d.getVar("MULTILIB_VARIANTS") or "").split() + ['']
+ for item in variants:
localdata = get_multilib_datastore(item, d)
+ # We need WORKDIR to be consistent with the original datastore
+ localdata.setVar("WORKDIR", d.getVar("WORKDIR"))
value = localdata.getVar(var) or ""
if value != "":
if need_split:
@@ -365,23 +360,10 @@ def all_multilib_tune_list(vars, d):
values = {}
for v in vars:
values[v] = []
-
- localdata = bb.data.createCopy(d)
- overrides = localdata.getVar("OVERRIDES", False).split(":")
- newoverrides = []
- for o in overrides:
- if not o.startswith("virtclass-multilib-"):
- newoverrides.append(o)
- localdata.setVar("OVERRIDES", ":".join(newoverrides))
- localdata.setVar("MLPREFIX", "")
- origdefault = localdata.getVar("DEFAULTTUNE_MULTILIB_ORIGINAL")
- if origdefault:
- localdata.setVar("DEFAULTTUNE", origdefault)
values['ml'] = ['']
- for v in vars:
- values[v].append(localdata.getVar(v))
- variants = d.getVar("MULTILIB_VARIANTS") or ""
- for item in variants.split():
+
+ variants = (d.getVar("MULTILIB_VARIANTS") or "").split() + ['']
+ for item in variants:
localdata = get_multilib_datastore(item, d)
values[v].append(localdata.getVar(v))
values['ml'].append(item)
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index a21b7282fbd..93aee1ae462 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -93,7 +93,7 @@ VOLATILE_LOG_DIR ?= "yes"
# Architecture-dependent build variables.
##################################################################
-# Immediate expansion since there is no point in reapeatedly calling
+# Immediate expansion since there is no point in repeatedly calling
# os.uname() throughout parsing
BUILD_ARCH := "${@os.uname()[4]}"
BUILD_OS := "${@os.uname()[0].lower()}"
@@ -308,7 +308,8 @@ FILES_SOLIBSDEV ?= "${base_libdir}/lib*${SOLIBSDEV} ${libdir}/lib*${SOLIBSDEV}"
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}/${BPN}/*.la ${base_libdir}/*.la \
+ ${libdir}/cmake ${datadir}/cmake"
SECTION_${PN}-dev = "devel"
ALLOW_EMPTY_${PN}-dev = "1"
RDEPENDS_${PN}-dev = "${PN} (= ${EXTENDPKGV})"
@@ -318,7 +319,6 @@ 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"
@@ -445,8 +445,9 @@ STAGING_KERNEL_BUILDDIR = "${TMPDIR}/work-shared/${MACHINE}/kernel-build-artifac
IMAGE_ROOTFS = "${WORKDIR}/rootfs"
IMAGE_BASENAME = "${PN}"
-IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}-${DATETIME}"
-IMAGE_NAME[vardepsexclude] += "DATETIME"
+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
@@ -487,10 +488,10 @@ HOSTTOOLS += " \
"
# Tools needed to run testimage runtime image testing
-HOSTTOOLS += "${@['', 'ip ping ps scp ssh stty'][bb.data.inherits_class('testimage', d)]}"
+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 ccache gcc-ar gpg ld.bfd ld.gold nc sftp socat ssh sudo"
+HOSTTOOLS_NONFATAL += "aws ccache gcc-ar gpg 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"
@@ -585,11 +586,10 @@ 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}"
-export TARGET_LDFLAGS = "-Wl,-O1 ${TARGET_LINK_HASH_STYLE}"
-#export TARGET_LDFLAGS = "-L${STAGING_DIR_TARGET}${libdir} \
-# -Wl,-rpath-link,${STAGING_DIR_TARGET}${libdir} \
-# -Wl,-O1"
+export TARGET_LDFLAGS = "-Wl,-O1 ${TARGET_LINK_HASH_STYLE} ${ASNEEDED}"
# Pass parallel make options to the compile task
EXTRA_OEMAKE_prepend_task-compile = "${PARALLEL_MAKE} "
@@ -610,9 +610,9 @@ DEBUG_FLAGS ?= "-g -feliminate-unused-debug-types ${DEBUG_PREFIX_MAP}"
# Disabled until the option works properly -feliminate-dwarf2-dups
FULL_OPTIMIZATION = "-O2 -pipe ${DEBUG_FLAGS}"
DEBUG_OPTIMIZATION = "-O -fno-omit-frame-pointer ${DEBUG_FLAGS} -pipe"
-SELECTED_OPTIMIZATION = "${@d.getVar(['FULL_OPTIMIZATION', 'DEBUG_OPTIMIZATION'][d.getVar('DEBUG_BUILD') == '1'])}"
+SELECTED_OPTIMIZATION = "${@d.getVar(oe.utils.vartrue('DEBUG_BUILD', 'DEBUG_OPTIMIZATION', 'FULL_OPTIMIZATION', d))}"
SELECTED_OPTIMIZATION[vardeps] += "FULL_OPTIMIZATION DEBUG_OPTIMIZATION"
-BUILD_OPTIMIZATION = "-O2 -pipe"
+BUILD_OPTIMIZATION = "${@oe.utils.vartrue('DEBUG_BUILD', '-O -g -feliminate-unused-debug-types -fno-omit-frame-pointer', '-O2', d)} -pipe"
##################################################################
# Settings used by bitbake-layers.
@@ -627,7 +627,7 @@ BBLAYERS_FETCH_DIR ??= "${COREBASE}"
APACHE_MIRROR = "http://archive.apache.org/dist"
DEBIAN_MIRROR = "http://ftp.debian.org/debian/pool"
GENTOO_MIRROR = "http://distfiles.gentoo.org/distfiles"
-GNOME_GIT = "git://git.gnome.org"
+GNOME_GIT = "git://gitlab.gnome.org/GNOME"
GNOME_MIRROR = "http://ftp.gnome.org/pub/GNOME/sources"
GNU_MIRROR = "http://ftp.gnu.org/gnu"
GNUPG_MIRROR = "https://www.gnupg.org/ftp/gcrypt"
@@ -664,7 +664,7 @@ SRC_URI[vardepsexclude] += "\
FETCHCMD_svn = "/usr/bin/env svn --non-interactive --trust-server-cert"
FETCHCMD_cvs = "/usr/bin/env cvs"
-FETCHCMD_wget = "/usr/bin/env wget -t 2 -T 30 -nv --passive-ftp --no-check-certificate"
+FETCHCMD_wget = "/usr/bin/env wget -t 2 -T 30 --passive-ftp --no-check-certificate"
FETCHCMD_bzr = "/usr/bin/env bzr"
FETCHCMD_hg = "/usr/bin/env hg"
@@ -722,20 +722,18 @@ export PKG_CONFIG_SYSTEM_INCLUDE_PATH = "${includedir}"
# is a bad idea. Setting a dummy value is better than a ton of anonymous python.
DISTRO ??= "nodistro"
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 an envionment variable named '<foo>_arm' overrides an
-# environment variable '<foo>' (when ${TARGET_ARCH} is arm).
-# An environment variable '<foo>_qemuarm' overrides '<foo>' and overrides
-# '<foo>_arm' when ${MACHINE} is 'qemuarm'.
+# 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.
+# This works for functions as well, they are really just variables.
#
-# This works for functions as well, they are really just environment variables.
-# Default OVERRIDES to make compilation fail fast in case of build system misconfiguration.
-OVERRIDES = "${TARGET_OS}:${TRANSLATED_TARGET_ARCH}:build-${BUILD_OS}:pn-${PN}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:${CLASSOVERRIDE}:forcevariable"
+OVERRIDES = "${TARGET_OS}:${TRANSLATED_TARGET_ARCH}:pn-${PN}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:${CLASSOVERRIDE}${LIBCOVERRIDE}:forcevariable"
+LIBCOVERRIDE ?= ""
CLASSOVERRIDE ?= "class-target"
DISTROOVERRIDES ?= "${@d.getVar('DISTRO') or ''}"
MACHINEOVERRIDES ?= "${MACHINE}"
@@ -880,7 +878,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"
+ progress mcdepends"
MLPREFIX ??= ""
MULTILIB_VARIANTS ??= ""
diff --git a/meta/conf/distro/include/as-needed.inc b/meta/conf/distro/include/as-needed.inc
deleted file mode 100644
index 6a8ad9d6249..00000000000
--- a/meta/conf/distro/include/as-needed.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-
-ASNEEDED = "-Wl,--as-needed"
-
-ASNEEDED_pn-babeltrace = ""
-ASNEEDED_pn-console-tools = ""
-ASNEEDED_pn-distcc = ""
-ASNEEDED_pn-openobex = ""
-ASNEEDED_pn-icu = ""
-ASNEEDED_pn-pciutils = ""
-ASNEEDED_pn-puzzles = ""
-ASNEEDED_pn-rpm = ""
-
-TARGET_LDFLAGS += "${ASNEEDED}"
diff --git a/meta/conf/distro/include/default-distrovars.inc b/meta/conf/distro/include/default-distrovars.inc
index 9620ad48ded..f5ec6cef91e 100644
--- a/meta/conf/distro/include/default-distrovars.inc
+++ b/meta/conf/distro/include/default-distrovars.inc
@@ -14,7 +14,7 @@ DISTRO_FEATURES_DEFAULT ?= "acl alsa argp bluetooth ext2 irda largefile pcmcia u
DISTRO_FEATURES_LIBC_DEFAULT ?= "ipv4 ipv6 libc-backtrace libc-big-macros libc-bsd libc-cxx-tests libc-catgets libc-charsets libc-crypt \
libc-crypt-ufc libc-db-aliases libc-envz libc-fcvt libc-fmtmsg libc-fstab libc-ftraverse \
libc-getlogin libc-idn libc-inet-anl libc-libm libc-locales libc-locale-code \
- libc-memusage libc-nis libc-nsswitch libc-rcmd libc-rtld-debug libc-spawn libc-streams libc-sunrpc \
+ libc-memusage libc-nsswitch libc-rcmd libc-rtld-debug libc-spawn libc-streams \
libc-utmp libc-utmpx libc-wordexp libc-posix-clang-wchar libc-posix-regexp libc-posix-regexp-glibc \
libc-posix-wchar-io"
DISTRO_FEATURES_LIBC ?= "${DISTRO_FEATURES_LIBC_DEFAULT}"
@@ -24,7 +24,6 @@ DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT} ${DISTRO_FEATURES_LIBC}"
IMAGE_FEATURES ?= ""
WHITELIST_GPL-3.0 ?= ""
-LGPLv2_WHITELIST_GPL-3.0 ?= ""
COMMERCIAL_AUDIO_PLUGINS ?= ""
# COMMERCIAL_AUDIO_PLUGINS ?= "gst-plugins-ugly-mad gst-plugins-ugly-mpegaudioparse"
diff --git a/meta/conf/distro/include/default-providers.inc b/meta/conf/distro/include/default-providers.inc
index e65c1ed323d..019ceeb290a 100644
--- a/meta/conf/distro/include/default-providers.inc
+++ b/meta/conf/distro/include/default-providers.inc
@@ -23,9 +23,9 @@ VIRTUAL-RUNTIME_update-alternatives ?= "update-alternatives-opkg"
VIRTUAL-RUNTIME_apm ?= "apm"
VIRTUAL-RUNTIME_alsa-state ?= "alsa-state"
VIRTUAL-RUNTIME_getopt ?= "util-linux-getopt"
-VIRTUAL-RUNTIME_wireless-tools ?= "iw wireless-tools"
VIRTUAL-RUNTIME_base-utils ?= "busybox"
VIRTUAL-RUNTIME_base-utils-hwclock ?= "busybox-hwclock"
+VIRTUAL-RUNTIME_base-utils-syslog ?= "busybox-syslog"
#
# Default recipe providers
diff --git a/meta/conf/distro/include/default-versions.inc b/meta/conf/distro/include/default-versions.inc
index 868073843af..a6f331350eb 100644
--- a/meta/conf/distro/include/default-versions.inc
+++ b/meta/conf/distro/include/default-versions.inc
@@ -2,6 +2,3 @@
# Default preferred versions
#
-PREFERRED_VERSION_openssl = "1.0.%"
-PREFERRED_VERSION_openssl-native = "1.0.%"
-PREFERRED_VERSION_nativesdk-openssl = "1.0.%"
diff --git a/meta/conf/distro/include/distro_alias.inc b/meta/conf/distro/include/distro_alias.inc
index 13c7e652bc7..7502542e89e 100644
--- a/meta/conf/distro/include/distro_alias.inc
+++ b/meta/conf/distro/include/distro_alias.inc
@@ -15,7 +15,6 @@ 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-bigreqsproto = "Meego=xorg-x11-proto-bigreqsproto"
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"
@@ -25,7 +24,6 @@ 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-calibrateproto = "OSPDT upstream=http://cgit.freedesktop.org/xorg/proto/calibrateproto"
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"
@@ -37,7 +35,6 @@ DISTRO_PN_ALIAS_pn-clutter-gtk-1.0 = "Debian=clutter-gtk Ubuntu=clutter-gtk Fedo
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-compositeproto = "Meego=xorg-x11-proto-compositeproto"
DISTRO_PN_ALIAS_pn-connman = "Meego=connman"
DISTRO_PN_ALIAS_pn-connman-conf = "OE-Core"
DISTRO_PN_ALIAS_pn-connman-gnome = "Intel"
@@ -68,14 +65,12 @@ 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-damageproto = "Meego=xorg-x11-proto-damageproto"
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-dmxproto = "Meego=xorg-x11-proto-dmxproto Ubuntu=x11proto-dmx Debian=x11proto-dmx"
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"
@@ -83,21 +78,14 @@ DISTRO_PN_ALIAS_pn-docbook-sgml-dtd-4.5 = "Fedora=docbook-dtds Mandriva=docbook-
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-dri2proto = "Meego=xorg-x11-proto-dri2proto"
-DISTRO_PN_ALIAS_pn-dri3proto = "Fedora=dri3proto Opensuse=dri3proto-devel"
DISTRO_PN_ALIAS_pn-dropbear = "Debian=dropbear Ubuntu=dropbear"
DISTRO_PN_ALIAS_pn-dtc = "Fedora=dtc Ubuntu=dtc"
-DISTRO_PN_ALIAS_pn-eee-acpi-scripts = "Debian=eeepc-acpi-scripts Ubuntu=eeepc-acpi-scripts"
DISTRO_PN_ALIAS_pn-eglinfo-fb = "OE-Core"
DISTRO_PN_ALIAS_pn-eglinfo-x11 = "OE-Core"
DISTRO_PN_ALIAS_pn-encodings = "Ubuntu=xfonts-encodings Mandriva=x11-font-encodings Debian=xfonts-encodings"
-DISTRO_PN_ALIAS_pn-fixesproto = "Meego=xorg-x11-proto-fixesproto"
DISTRO_PN_ALIAS_pn-font-alias = "Fedora=xorg-x11-fonts-base Mandriva=x11-font-alias Meego=xorg-x11-fonts"
-DISTRO_PN_ALIAS_pn-fontcacheproto = "Meego=xorg-x11-proto-fontcacheproto"
-DISTRO_PN_ALIAS_pn-fontsproto = "Meego=xorg-x11-proto-fontsproto"
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-fstests = "OpenedHand"
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"
@@ -114,7 +102,6 @@ DISTRO_PN_ALIAS_pn-glib-2.0 = "Meego=glib2 Fedora=glib2 OpenSuSE=glib2 Ubuntu=gl
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-glproto = "Meego=xorg-x11-proto-glproto"
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"
@@ -149,12 +136,9 @@ 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-inputproto = "Meego=xorg-x11-proto-inputproto"
DISTRO_PN_ALIAS_pn-iproute2 = "OSPDT"
DISTRO_PN_ALIAS_pn-jpeg = "OpenSuSE=libjpeg Ubuntu=libjpeg62"
-DISTRO_PN_ALIAS_pn-kbproto = "Meego=xorg-x11-proto-kbproto Ubuntu=x11proto-kb-dev Debian=x11proto-kb-dev"
DISTRO_PN_ALIAS_pn-kernel-devsrc = "Debian=linux-base Ubuntu=linux"
-DISTRO_PN_ALIAS_pn-kernelshark = "Mandriva=kernelshark Ubuntu=kernelshark"
DISTRO_PN_ALIAS_pn-kern-tools-native = "Windriver"
DISTRO_PN_ALIAS_pn-keymaps = "OE-Core"
DISTRO_PN_ALIAS_pn-kf = "OSPDT"
@@ -205,7 +189,6 @@ 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-libusb-compat = "OSPDT"
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"
@@ -257,7 +240,6 @@ 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-mktemp = "Mandriva=mktemp Fedora=mktemp"
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"
@@ -315,21 +297,18 @@ 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-presentproto = "Debian=x11proto-present-dev Fedora=xorg-x11-proto-devel"
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-distribute = "Debian=python3-setuptools Fedora=python3-setuptools"
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-distribute = "Opensuse=python-setuptools Fedora=python-setuptools"
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"
@@ -341,12 +320,8 @@ 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-randrproto = "Meego=xorg-x11-proto-randrproto"
DISTRO_PN_ALIAS_pn-readline = "Fedora=readline Debian=readline-common"
-DISTRO_PN_ALIAS_pn-recordproto = "Meego=xorg-x11-proto-recordproto"
DISTRO_PN_ALIAS_pn-remake = "Mandriva=remake Debian=remake"
-DISTRO_PN_ALIAS_pn-renderproto = "Meego=xorg-x11-proto-renderproto"
-DISTRO_PN_ALIAS_pn-resourceproto = "Meego=xorg-x11-proto-resourceproto"
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"
@@ -355,7 +330,6 @@ 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-scrnsaverproto = "Meego=xorg-x11-proto-scrnsaverproto Ubuntu=x11proto-scrnsaver-dev Debian=x11proto-scrnsaver-dev"
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"
@@ -376,7 +350,6 @@ 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-trace-cmd = "Mandriva=trace-cmd Ubuntu=trace-cmd"
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"
@@ -392,7 +365,6 @@ 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-videoproto = "Meego=xorg-x11-proto-videoproto"
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"
@@ -404,21 +376,15 @@ 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-xcmiscproto = "Meego=xorg-x11-proto-xcmiscproto"
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-xextproto = "Meego=xorg-x11-proto-xextproto"
DISTRO_PN_ALIAS_pn-xeyes = "Ubuntu=x11-apps Fedora=xorg-x11-apps"
-DISTRO_PN_ALIAS_pn-xf86bigfontproto = "Meego=xorg-x11-proto-xf86bigfontproto"
-DISTRO_PN_ALIAS_pn-xf86dgaproto = "Meego=xorg-x11-proto-xf86dgaproto"
-DISTRO_PN_ALIAS_pn-xf86driproto = "Meego=xorg-x11-proto-xf86driproto"
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-xf86miscproto = "Meego=xorg-x11-proto-xf86miscproto"
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"
@@ -427,15 +393,13 @@ DISTRO_PN_ALIAS_pn-xf86-video-omap = "Ubuntu=xf86-video-omap Debian=xf86-video-o
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-xf86vidmodeproto = "Meego=xorg-x11-proto-xf86vidmodeproto Ubuntu=x11proto-xf86vidmode Debian=x11proto-xf86vidmode"
DISTRO_PN_ALIAS_pn-xhost = "Ubuntu=x11-xserver-utils Fedora=xorg-x11-server-utils"
-DISTRO_PN_ALIAS_pn-xineramaproto = "Meego=xorg-x11-proto-xineramaproto Ubuntu=x11proto-xinerama Debian=x11proto-xinerama"
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-xproto = "Meego=xorg-x11-proto-xproto Fedora=xorg-x11-proto-devel Ubuntu=x11proto-core-dev Debian=x11proto-core-dev Opensuse=xorg-x11-proto-devel Mandriva=x11-proto-devel"
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"
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index 48aff9537e4..ddc8a034556 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -29,102 +29,94 @@
#
RECIPE_MAINTAINER_pn-acl = "Chen Qi <Qi.Chen@windriver.com>"
RECIPE_MAINTAINER_pn-acpica = "Fathi Boudra <fathi.boudra@linaro.org>"
-RECIPE_MAINTAINER_pn-acpid = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-acpitests = "Fathi Boudra <fathi.boudra@linaro.org>"
-RECIPE_MAINTAINER_pn-adwaita-icon-theme = "Maxin B. John <maxin.john@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 = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-apmd = "Ross Burton <ross.burton@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 = "Jose Lamego <jose.a.lamego@linux.intel.com>"
-RECIPE_MAINTAINER_pn-assimp = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-aspell = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-assimp = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-at = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-at-spi2-atk = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-at-spi2-core = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-atk = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-at-spi2-atk = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-at-spi2-core = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-atk = "Ross Burton <ross.burton@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-autogen-native = "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 <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-base-files = "Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>"
-RECIPE_MAINTAINER_pn-base-passwd = "Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>"
+RECIPE_MAINTAINER_pn-babeltrace = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER_pn-base-files = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-base-passwd = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-bash = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-bash-completion = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-bc = "Jose Lamego <jose.a.lamego@linux.intel.com>"
-RECIPE_MAINTAINER_pn-bdwgc = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-beecrypt = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-bigreqsproto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-bind = "Armin Kuster <akuster@mvista.com>"
+RECIPE_MAINTAINER_pn-bash-completion = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER_pn-bc = "Ross Burton <ross.burton@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 = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER_pn-binutils-cross-canadian = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER_pn-binutils-crosssdk = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER_pn-bison = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-bjam-native = "Alexander Kanavin <alexander.kanavin@intel.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 <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-bluez5 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-bmap-tools = "Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>"
-RECIPE_MAINTAINER_pn-boost = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-bootchart2 = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-blktrace = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER_pn-bluez5 = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-bmap-tools = "Ross Burton <ross.burton@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 <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-build-appliance-image = "Cristian Iorga <cristian.iorga@intel.com>"
-RECIPE_MAINTAINER_pn-build-compare = "Randy Witt <randy.e.witt@linux.intel.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 = "Cristian Iorga <cristian.iorga@intel.com>"
-RECIPE_MAINTAINER_pn-buildtools-tarball = "Cristian Iorga <cristian.iorga@intel.com>"
-RECIPE_MAINTAINER_pn-busybox = "Armin Kuster <akuster808@gmail.com>"
+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 <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-cairo = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-calibrateproto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-cantarell-fonts = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-ca-certificates = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER_pn-cairo = "Ross Burton <ross.burton@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 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-clutter-gst-3.0 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-clutter-gtk-1.0 = "Maxin B. John <maxin.john@intel.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 = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
RECIPE_MAINTAINER_pn-cmake-native = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
-RECIPE_MAINTAINER_pn-cogl-1.0 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-compositeproto = "Armin Kuster <akuster@mvista.com>"
+RECIPE_MAINTAINER_pn-cogl-1.0 = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-connman = "Changhyeok Bae <changhyeok.bae@lge.com>"
-RECIPE_MAINTAINER_pn-connman-conf = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-connman-gnome = "Maxin B. John <maxin.john@intel.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-coreutils = "Chen Qi <Qi.Chen@windriver.com>"
RECIPE_MAINTAINER_pn-cpio = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-cracklib = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-createrepo-c = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-cronie = "Maxin B. John <maxin.john@intel.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 = "Ross Burton <ross.burton@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 <akuster@mvista.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-cwautomacros = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-damageproto = "Armin Kuster <akuster@mvista.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>"
@@ -132,55 +124,46 @@ 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-depmodwrapper-cross = "Mark Hatle <mark.hatle@windriver.com>"
-RECIPE_MAINTAINER_pn-desktop-file-utils-native = "Alexander Kanavin <alexander.kanavin@intel.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-directfb = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-directfb-examples = "Hongxu Jia <hongxu.jia@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 <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-dmxproto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-dnf = "Alexander Kanavin <alexander.kanavin@intel.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-dri2proto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-dri3proto = "Armin Kuster <akuster@mvista.com>"
RECIPE_MAINTAINER_pn-dropbear = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-dtc = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-dwarfsrcfiles = "Alexander Kanavin <alexander.kanavin@intel.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 <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-eee-acpi-scripts = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-efilinux = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-eglinfo-fb = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-eglinfo-x11 = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-efilinux = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-ed = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER_pn-eglinfo-fb = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER_pn-eglinfo-x11 = "Alexander Kanavin <alex.kanavin@gmail.com>"
RECIPE_MAINTAINER_pn-elfutils = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-enchant = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-encodings = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-epiphany = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-enchant = "Ross Burton <ross.burton@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@lge.com>"
-RECIPE_MAINTAINER_pn-eudev = "Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>"
+RECIPE_MAINTAINER_pn-eudev = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-expat = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-expect = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-ffmpeg = "Alexander Kanavin <alexander.kanavin@intel.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-fixesproto = "Armin Kuster <akuster@mvista.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 <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-font-util = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-fontconfig = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-fontsproto = "Armin Kuster <akuster@mvista.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 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-freetype = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-fstests = "Alexander Kanavin <alexander.kanavin@intel.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>"
@@ -193,52 +176,48 @@ 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 = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER_pn-gccmakedep = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gconf = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-gcr = "Alexander Kanavin <alexander.kanavin@intel.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 = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER_pn-gdb-cross-canadian = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gdbm = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-gdk-pixbuf = "Maxin B. John <maxin.john@intel.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 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-glib-2.0 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-glib-networking = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-glew = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-glib-2.0 = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-glib-networking = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-glibc = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER_pn-glibc-initial = "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-glide = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
-RECIPE_MAINTAINER_pn-glproto = "Armin Kuster <akuster@mvista.com>"
RECIPE_MAINTAINER_pn-gmp = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gnome-common = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-gnome-desktop-testing = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-gnome-desktop3 = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-gnome-doc-utils = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-gnome-themes-standard = "Maxin B. John <maxin.john@intel.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 <akuster@mvista.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 = "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-gobject-introspection = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-gperf = "Alexander Kanavin <alexander.kanavin@intel.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 <alexander.kanavin@intel.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 = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-grub-bootconf = "California Sullivan <california.l.sullivan@intel.com>"
-RECIPE_MAINTAINER_pn-grub-efi = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-gsettings-desktop-schemas = "Maxin B. John <maxin.john@intel.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 = "Ross Burton <ross.burton@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>"
@@ -252,177 +231,162 @@ RECIPE_MAINTAINER_pn-gstreamer1.0-plugins-ugly = "Anuj Mittal <anuj.mittal@intel
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+ = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-gtk+3 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-gtk-doc = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-gtk-engines = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-gtk-icon-utils-native = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-gtk-sato-engine = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-guilt-native = "Bruce Ashfield <bruce.ashfield@windriver.com>"
-RECIPE_MAINTAINER_pn-gummiboot = "Alexander Kanavin <alexander.kanavin@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 = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-harfbuzz = "Ross Burton <ross.burton@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 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-hwlatdetect = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-i2c-tools = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-hicolor-icon-theme = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-hwlatdetect = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER_pn-i2c-tools = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-icecc-create-env = "Joshua Watt <JPEWhacker@gmail.com>"
-RECIPE_MAINTAINER_pn-icon-naming-utils = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-icu = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-ifupdown = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-init-ifupdown = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-icu = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER_pn-ifupdown = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-init-ifupdown = "Ross Burton <ross.burton@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 = "Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>"
-RECIPE_MAINTAINER_pn-initramfs-live-boot-tiny = "Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>"
-RECIPE_MAINTAINER_pn-initramfs-live-install = "Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>"
-RECIPE_MAINTAINER_pn-initramfs-live-install-efi = "Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>"
-RECIPE_MAINTAINER_pn-initramfs-live-install-efi-testfs = "Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>"
-RECIPE_MAINTAINER_pn-initramfs-live-install-testfs = "Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>"
-RECIPE_MAINTAINER_pn-initscripts = "Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>"
-RECIPE_MAINTAINER_pn-inputproto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-intltool = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-initramfs-live-boot = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-initramfs-live-boot-tiny = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-initramfs-live-install = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-initramfs-live-install-efi = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-initramfs-live-install-efi-testfs = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-initramfs-live-install-testfs = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-initscripts = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-intltool = "Alexander Kanavin <alex.kanavin@gmail.com>"
RECIPE_MAINTAINER_pn-iproute2 = "Changhyeok Bae <changhyeok.bae@lge.com>"
RECIPE_MAINTAINER_pn-iptables = "Changhyeok Bae <changhyeok.bae@lge.com>"
RECIPE_MAINTAINER_pn-iputils = "Changhyeok Bae <changhyeok.bae@lge.com>"
RECIPE_MAINTAINER_pn-irda-utils = "Changhyeok Bae <changhyeok.bae@lge.com>"
-RECIPE_MAINTAINER_pn-iso-codes = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-iso-codes = "Alexander Kanavin <alex.kanavin@gmail.com>"
RECIPE_MAINTAINER_pn-iw = "Changhyeok Bae <changhyeok.bae@lge.com>"
-RECIPE_MAINTAINER_pn-libjpeg-turbo = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-libjpeg-turbo = "Ross Burton <ross.burton@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 <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-kbproto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-kconfig-frontends = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-kbd = "Alexander Kanavin <alex.kanavin@gmail.com>"
RECIPE_MAINTAINER_pn-kern-tools-native = "Bruce Ashfield <bruce.ashfield@windriver.com>"
-RECIPE_MAINTAINER_pn-kernelshark = "Alexander Kanavin <alexander.kanavin@intel.com>"
RECIPE_MAINTAINER_pn-kernel-devsrc = "Bruce Ashfield <bruce.ashfield@windriver.com>"
-RECIPE_MAINTAINER_pn-kexec-tools = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-keymaps = "Alexander Kanavin <alexander.kanavin@intel.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 = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-l3afpad = "Ross Burton <ross.burton@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 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libaio = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-libacpi = "Ross Burton <ross.burton@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-libart-lgpl = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libassuan = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libatomic-ops = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-libart-lgpl = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-libassuan = "Armin Kuster <akuster808@gmail.com>"
+RECIPE_MAINTAINER_pn-libatomic-ops = "Ross Burton <ross.burton@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-libcgroup = "Alexander Kanavin <alexander.kanavin@intel.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 <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libconvert-asn1-perl = "Tim Orling <timothy.t.orling@intel.com>"
-RECIPE_MAINTAINER_pn-libcroco = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libdaemon = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libdmx = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libdnf = "Alexander Kanavin <alexander.kanavin@intel.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 = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-libdaemon = "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-libepoxy = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-liberation-fonts = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-libepoxy = "Ross Burton <ross.burton@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 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libevent = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libexif = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libfakekey = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libffi = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libfm = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libfm-extra = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libfontenc = "Armin Kuster <akuster@mvista.com>"
+RECIPE_MAINTAINER_pn-libevdev = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-libevent = "Ross Burton <ross.burton@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-libglu = "Maxin B. John <maxin.john@intel.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 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libical = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libice = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libiconv = "Alexander Kanavin <alexander.kanavin@intel.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 <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libinput = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libjson = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libksba = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libmatchbox = "Maxin B. John <maxin.john@intel.com>"
+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-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-libnewt = "Hongxu Jia <hongxu.jia@windriver.com>"
RECIPE_MAINTAINER_pn-libnewt-python = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-libnfsidmap = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libnl = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libnotify = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-libnl = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER_pn-libnotify = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-libnsl2 = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-libnss-mdns = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libogg = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libomxil = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libowl = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libpam = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libpcap = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libpciaccess = "Alexander Kanavin <alexander.kanavin@intel.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 = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-libomxil = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-libpam = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-libpcap = "Ross Burton <ross.burton@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 <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libpfm4 = "Matthew McClintock <msm@freescale.com>"
-RECIPE_MAINTAINER_pn-libpipeline = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libpng = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libpng12 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libproxy = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libpthread-stubs = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-librepo = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-librsvg = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-libpcre2 = "Armin Kuster <akuster808@gmail.com>"
+RECIPE_MAINTAINER_pn-libpipeline = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER_pn-libpng = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-libproxy = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-libpthread-stubs = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER_pn-librepo = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER_pn-librsvg = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-libsamplerate0 = "Tanu Kaskinen <tanuk@iki.fi>"
RECIPE_MAINTAINER_pn-libsdl = "Yi Zhao <yi.zhao@windriver.com>"
RECIPE_MAINTAINER_pn-libsdl2 = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-libsecret = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libsm = "Armin Kuster <akuster@mvista.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 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libsoup-2.4 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libtasn1 = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-libsolv = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-libsoup-2.4 = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-libtasn1 = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-libtest-needs-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libtheora = "Alexander Kanavin <alexander.kanavin@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 = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-libtirpc = "Ross Burton <ross.burton@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 = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-libunistring = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-libunwind = "Bruce Ashfield <bruce.ashfield@windriver.com>"
-RECIPE_MAINTAINER_pn-liburcu = "Alexander Kanavin <alexander.kanavin@intel.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-libusb-compat = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libusb1 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libuser = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-libusb1 = "Ross Burton <ross.burton@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 <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libx11 = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libx11-diet = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxau = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxcalibrate = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxcb = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxcomposite = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxcursor = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxdamage = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxdmcp = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxext = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxfixes = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxfont = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxfont2 = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxft = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxi = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxinerama = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxkbcommon = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxkbfile = "Armin Kuster <akuster@mvista.com>"
+RECIPE_MAINTAINER_pn-libwebp = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER_pn-libx11 = "Armin Kuster <akuster808@gmail.com>"
+RECIPE_MAINTAINER_pn-libx11-diet = "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-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>"
@@ -430,25 +394,24 @@ RECIPE_MAINTAINER_pn-libxml-sax-base-perl = "Tim Orling <timothy.t.orling@linux.
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 <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxpm = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxrandr = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxrender = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxres = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxscrnsaver = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxsettings-client = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-libxshmfence = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxslt = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-libxt = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxtst = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxv = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxvmc = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxxf86dga = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxxf86misc = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libxxf86vm = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libyaml = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-lighttpd = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-linux-dummy = "Alexander Kanavin <alexander.kanavin@intel.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-libxxf86dga = "Armin Kuster <akuster808@gmail.com>"
+RECIPE_MAINTAINER_pn-libxxf86misc = "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@windriver.com>"
RECIPE_MAINTAINER_pn-linux-yocto = "Bruce Ashfield <bruce.ashfield@windriver.com>"
@@ -457,11 +420,11 @@ RECIPE_MAINTAINER_pn-linux-yocto-rt = "Bruce Ashfield <bruce.ashfield@windriver.
RECIPE_MAINTAINER_pn-linux-yocto-tiny = "Bruce Ashfield <bruce.ashfield@windriver.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 = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-lrzsz = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-lsb = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-lsbinitscripts = "Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>"
+RECIPE_MAINTAINER_pn-lsbinitscripts = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-lsbtest = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-lsof = "Maxin B. John <maxin.john@intel.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>"
@@ -478,120 +441,111 @@ RECIPE_MAINTAINER_pn-makedevs = "Chen Qi <Qi.Chen@windriver.com>"
RECIPE_MAINTAINER_pn-make-mod-scripts = "Bruce Ashfield <bruce.ashfield@windriver.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 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-matchbox-desktop = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-matchbox-desktop-sato = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-matchbox-keyboard = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-matchbox-panel-2 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-matchbox-session = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-matchbox-session-sato = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-matchbox-terminal = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-matchbox-theme-sato = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-matchbox-wm = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-mc = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-mdadm = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-menu-cache = "Maxin B. John <maxin.john@intel.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 <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-meson = "Alexander Kanavin <alex.kanavin@gmail.com>"
RECIPE_MAINTAINER_pn-meta-environment = "Richard Purdie <richard.purdie@linuxfoundation.org>"
RECIPE_MAINTAINER_pn-meta-environment-extsdk = "Richard Purdie <richard.purdie@linuxfoundation.org>"
RECIPE_MAINTAINER_pn-meta-extsdk-toolchain = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-meta-ide-support = "Cristian Iorga <cristian.iorga@intel.com>"
-RECIPE_MAINTAINER_pn-meta-toolchain = "Cristian Iorga <cristian.iorga@intel.com>"
+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 <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-minicom = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-mkelfimage = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-mkfontdir = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-mkfontscale = "Armin Kuster <akuster@mvista.com>"
+RECIPE_MAINTAINER_pn-mini-x-session = "Armin Kuster <akuster808@gmail.com>"
+RECIPE_MAINTAINER_pn-minicom = "Ross Burton <ross.burton@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-mktemp = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-mmc-utils = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-mobile-broadband-provider-info = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-mmc-utils = "Ross Burton <ross.burton@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 <alexander.kanavin@intel.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 <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-msmtp = "Alexander Kanavin <alexander.kanavin@intel.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 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-mtools = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-mtdev = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-mtools = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-musl = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER_pn-musl-utils = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-mx-1.0 = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-mx-1.0 = "Ross Burton <ross.burton@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-libtool = "Richard Purdie <richard.purdie@linuxfoundation.org>"
RECIPE_MAINTAINER_pn-nativesdk-packagegroup-sdk-host = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-nativesdk-qemu-helper = "Juro Bystricky <juro.bystricky@intel.com>"
+RECIPE_MAINTAINER_pn-nativesdk-qemu-helper = "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 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-neon = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-net-tools = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-netbase = "Armin Kuster <akuster@mvista.com>"
+RECIPE_MAINTAINER_pn-neard = "Ross Burton <ross.burton@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 <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-nspr = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-nss = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-nss-myhostname = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-ofono = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-oh-puzzles = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-openssh = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-openssl = "Alexander Kanavin <alexander.kanavin@intel.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 = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-ofono = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-openssh = "Armin Kuster <akuster808@gmail.com>"
+RECIPE_MAINTAINER_pn-openssl = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER_pn-openssl10 = "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-oprofile = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-orc = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-orc = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-os-release = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-ossp-uuid = "Alexander Kanavin <alexander.kanavin@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 <alexander.kanavin@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 = "Maxin B. John <maxin.john@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-pax-utils = "Hongxu Jia <hongxu.jia@windriver.com>"
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 <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-pcmciautils = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER_pn-pcmanfm = "Alexander Kanavin <alex.kanavin@gmail.com>"
RECIPE_MAINTAINER_pn-perf = "Bruce Ashfield <bruce.ashfield@windriver.com>"
-RECIPE_MAINTAINER_pn-perl = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-perl-native = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-piglit = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-perl = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-perl-native = "Ross Burton <ross.burton@intel.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 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-pixz = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-pkgconf = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-pkgconfig = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-pm-utils = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-pointercal-xinput = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-pong-clock = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-pixman = "Ross Burton <ross.burton@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 = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-popt = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-powertop = "Alexander Kanavin <alexander.kanavin@intel.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-presentproto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-procps = "Alexander Kanavin <alexander.kanavin@intel.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 <alexander.kanavin@intel.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 = "Maxin B. John <maxin.john@intel.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 = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-puzzles = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-python = "Derek Straka <derek@asterius.io>"
RECIPE_MAINTAINER_pn-python-native = "Derek Straka <derek@asterius.io>"
RECIPE_MAINTAINER_pn-python-nose = "Derek Straka <derek@asterius.io>"
@@ -603,6 +557,8 @@ RECIPE_MAINTAINER_pn-python3 = "Derek Straka <derek@asterius.io>"
RECIPE_MAINTAINER_pn-python3-async = "Derek Straka <derek@asterius.io>"
RECIPE_MAINTAINER_pn-python3-dbus = "Derek Straka <derek@asterius.io>"
RECIPE_MAINTAINER_pn-python3-docutils = "Derek Straka <derek@asterius.io>"
+RECIPE_MAINTAINER_pn-python3-extras = "Derek Straka <derek@asterius.io>"
+RECIPE_MAINTAINER_pn-python3-file-utils = "Derek Straka <derek@asterius.io>"
RECIPE_MAINTAINER_pn-python3-git = "Derek Straka <derek@asterius.io>"
RECIPE_MAINTAINER_pn-python3-gitdb = "Derek Straka <derek@asterius.io>"
RECIPE_MAINTAINER_pn-python3-iniparse = "Derek Straka <derek@asterius.io>"
@@ -610,190 +566,170 @@ RECIPE_MAINTAINER_pn-python3-mako = "Derek Straka <derek@asterius.io>"
RECIPE_MAINTAINER_pn-python3-native = "Derek Straka <derek@asterius.io>"
RECIPE_MAINTAINER_pn-python3-nose = "Derek Straka <derek@asterius.io>"
RECIPE_MAINTAINER_pn-python3-numpy = "Derek Straka <derek@asterius.io>"
+RECIPE_MAINTAINER_pn-python3-pbr = "Derek Straka <derek@asterius.io>"
RECIPE_MAINTAINER_pn-python3-pip = "Derek Straka <derek@asterius.io>"
RECIPE_MAINTAINER_pn-python3-pycairo = "Derek Straka <derek@asterius.io>"
RECIPE_MAINTAINER_pn-python3-pygobject = "Derek Straka <derek@asterius.io>"
RECIPE_MAINTAINER_pn-python3-setuptools = "Derek Straka <derek@asterius.io>"
RECIPE_MAINTAINER_pn-python3-six = "Derek Straka <derek@asterius.io>"
RECIPE_MAINTAINER_pn-python3-smmap = "Derek Straka <derek@asterius.io>"
-RECIPE_MAINTAINER_pn-qemu = "Juro Bystricky <juro.bystricky@intel.com>"
-RECIPE_MAINTAINER_pn-qemu-helper-native = "Juro Bystricky <juro.bystricky@intel.com>"
-RECIPE_MAINTAINER_pn-qemuwrapper-cross = "Juro Bystricky <juro.bystricky@intel.com>"
+RECIPE_MAINTAINER_pn-python3-subunit = "Derek Straka <derek@asterius.io>"
+RECIPE_MAINTAINER_pn-python3-testtools = "Derek Straka <derek@asterius.io>"
+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-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 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-randrproto = "Armin Kuster <akuster@mvista.com>"
+RECIPE_MAINTAINER_pn-quota = "Ross Burton <ross.burton@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-recordproto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-remake = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-renderproto = "Armin Kuster <akuster@mvista.com>"
RECIPE_MAINTAINER_pn-resolvconf = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-resourceproto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-rgb = "Armin Kuster <akuster@mvista.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 = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-rng-tools = "Ross Burton <ross.burton@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-rpmresolve = "Mark Hatle <mark.hatle@windriver.com>"
RECIPE_MAINTAINER_pn-rsync = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-rt-tests = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-ruby = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-run-postinsts = "Cristian Iorga <cristian.iorga@intel.com>"
-RECIPE_MAINTAINER_pn-rxvt-unicode = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-sato-screenshot = "Maxin B. John <maxin.john@intel.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 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-scrnsaverproto = "Armin Kuster <akuster@mvista.com>"
+RECIPE_MAINTAINER_pn-screen = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-sed = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-serf = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-serf = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-setserial = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-settings-daemon = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-settings-daemon = "Ross Burton <ross.burton@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 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-shutdown-desktop = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-shared-mime-info = "Ross Burton <ross.burton@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-source-highlight = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-source-highlight = "Alexander Kanavin <alex.kanavin@gmail.com>"
RECIPE_MAINTAINER_pn-speex = "Tanu Kaskinen <tanuk@iki.fi>"
RECIPE_MAINTAINER_pn-speexdsp = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-sqlite3 = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-sqlite3 = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-squashfs-tools = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-startup-notification = "Alexander Kanavin <alexander.kanavin@intel.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 = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-stress = "Ross Burton <ross.burton@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-swabber-native = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-swig = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-swig = "Ross Burton <ross.burton@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 <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-sysprof = "Alexander Kanavin <alexander.kanavin@intel.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 = "California Sullivan <california.l.sullivan@intel.com>"
+RECIPE_MAINTAINER_pn-systemd-bootconf = "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 = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-systemtap-uprobes = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-sysvinit = "Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>"
-RECIPE_MAINTAINER_pn-sysvinit-inittab = "Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>"
-RECIPE_MAINTAINER_pn-taglib = "Maxin B. John <maxin.john@intel.com>"
+RECIPE_MAINTAINER_pn-systemtap = "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 = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-tar = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-tcf-agent = "Randy Witt <randy.e.witt@linux.intel.com>"
+RECIPE_MAINTAINER_pn-tcf-agent = "Ross Burton <ross.burton@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 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-texinfo-dummy-native = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-tiff = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-texinfo = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-texinfo-dummy-native = "Ross Burton <ross.burton@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-tiny-init = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-trace-cmd = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-ttf-bitstream-vera = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-tzcode-native = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-tzdata = "Armin Kuster <akuster@mvista.com>"
+RECIPE_MAINTAINER_pn-ttf-bitstream-vera = "Ross Burton <ross.burton@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-mkimage = "Marek Vasut <marek.vasut@gmail.com>"
-RECIPE_MAINTAINER_pn-ubootchart = "Ross Burton <ross.burton@intel.com>"
-RECIPE_MAINTAINER_pn-udev-extraconf = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-unfs3 = "Randy Witt <randy.e.witt@linux.intel.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 = "Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>"
-RECIPE_MAINTAINER_pn-usbinit = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-usbutils = "Alexander Kanavin <alexander.kanavin@intel.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 <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-v86d = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-vala = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-valgrind = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-videoproto = "Armin Kuster <akuster@mvista.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-volatile-binds = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-vte = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-vulkan = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-vulkan-demos = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-waffle = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-watchdog = "Alexander Kanavin <alexander.kanavin@intel.com>"
-RECIPE_MAINTAINER_pn-watchdog-config = "Alexander Kanavin <alexander.kanavin@intel.com>"
+RECIPE_MAINTAINER_pn-vte = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-vulkan = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-vulkan-demos = "Ross Burton <ross.burton@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 <alexander.kanavin@intel.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 = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-wic-tools = "Chang Rebecca Swee Fun <rebecca.swee.fun.chang@intel.com>"
-RECIPE_MAINTAINER_pn-wireless-tools = "Changhyeok Bae <changhyeok.bae@lge.com>"
+RECIPE_MAINTAINER_pn-which = "Ross Burton <ross.burton@intel.com>"
+RECIPE_MAINTAINER_pn-wic-tools = "Ross Burton <ross.burton@intel.com>"
RECIPE_MAINTAINER_pn-wpa-supplicant = "Changhyeok Bae <changhyeok.bae@lge.com>"
-RECIPE_MAINTAINER_pn-x11-common = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-x11perf = "Armin Kuster <akuster@mvista.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 <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xcb-proto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xcb-util = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xcb-util-image = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xcb-util-keysyms = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xcb-util-renderutil = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xcb-util-wm = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xcmiscproto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xcursor-transparent-theme = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xdg-utils = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-xdpyinfo = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xev = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xextproto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xeyes = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xf86-input-evdev = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xf86-input-keyboard = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xf86-input-libinput = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xf86-input-mouse = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xf86-input-synaptics = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xf86-input-vmmouse = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xf86-video-cirrus = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xf86-video-fbdev = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xf86-video-intel = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xf86-video-omap = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xf86-video-omapfb = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xf86-video-vesa = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xf86-video-vmware = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xf86dgaproto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xf86driproto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xf86miscproto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xf86vidmodeproto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xhost = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xineramaproto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xinetd = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-xinit = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xinput = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xinput-calibrator = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xkbcomp = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xkeyboard-config = "Armin Kuster <akuster@mvista.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 = "Ross Burton <ross.burton@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 <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xorg-minimal-fonts = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xprop = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xproto = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xrandr = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xrestop = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xserver-nodm-init = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xserver-xf86-config = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xserver-xorg = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xset = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xtrans = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xuser-account = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xvideo-tests = "Maxin B. John <maxin.john@intel.com>"
-RECIPE_MAINTAINER_pn-xvinfo = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-xwininfo = "Armin Kuster <akuster@mvista.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-xvideo-tests = "Ross Burton <ross.burton@intel.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-yasm = "Yi Zhao <yi.zhao@windriver.com>"
RECIPE_MAINTAINER_pn-zip = "Denys Dmytriyenko <denys@ti.com>"
RECIPE_MAINTAINER_pn-zlib = "Denys Dmytriyenko <denys@ti.com>"
diff --git a/meta/conf/distro/include/no-static-libs.inc b/meta/conf/distro/include/no-static-libs.inc
index 7c165c717fc..cdc53916d07 100644
--- a/meta/conf/distro/include/no-static-libs.inc
+++ b/meta/conf/distro/include/no-static-libs.inc
@@ -1,4 +1,4 @@
-DISABLE_STATIC = " --disable-static"
+DISABLE_STATIC ?= " --disable-static"
# qemu aborts on unrecognised option
DISABLE_STATIC_pn-qemu = ""
@@ -36,6 +36,7 @@ DISABLE_STATIC_pn-libusb1-native = ""
EXTRA_OECONF_append = "${DISABLE_STATIC}"
EXTRA_OECMAKE_append_pn-libical = " -DSHARED_ONLY=True"
+EXTRA_OECMAKE_append_pn-libjpeg-turbo = " -DENABLE_STATIC=False"
EXCONFIG_ARGS_append_pn-ncurses = " --without-normal"
EXCONFIG_ARGS_append_pn-ncurses-native = " --without-normal"
diff --git a/meta/conf/distro/include/security_flags.inc b/meta/conf/distro/include/security_flags.inc
index d66dd576493..620978a8ed4 100644
--- a/meta/conf/distro/include/security_flags.inc
+++ b/meta/conf/distro/include/security_flags.inc
@@ -3,14 +3,14 @@
# or both so a blacklist 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-lsb" configuration.
+# in the DISTRO="poky" configuration.
GCCPIE ?= "--enable-default-pie"
-GLIBCPIE ?= "--enable-static-pie"
+# If static PIE is known to work well, GLIBCPIE="--enable-static-pie" can be set
# _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)}"
+lcl_maybe_fortify ?= "${@oe.utils.conditional('DEBUG_BUILD','1','','-D_FORTIFY_SOURCE=2',d)}"
# Error on use of format strings that represent possible security problems
SECURITY_STRINGFORMAT ?= "-Wformat -Wformat-security -Werror=format-security"
@@ -21,19 +21,20 @@ SECURITY_PIE_CFLAGS ?= "${@'' if '${GCCPIE}' else '-pie -fPIE'}"
SECURITY_NOPIE_CFLAGS ?= "-no-pie -fno-PIE"
-SECURITY_CFLAGS ?= "-fstack-protector-strong ${SECURITY_PIE_CFLAGS} ${lcl_maybe_fortify} ${SECURITY_STRINGFORMAT}"
-SECURITY_NO_PIE_CFLAGS ?= "-fstack-protector-strong ${lcl_maybe_fortify} ${SECURITY_STRINGFORMAT}"
+SECURITY_STACK_PROTECTOR ?= "-fstack-protector-strong"
-SECURITY_LDFLAGS ?= "-fstack-protector-strong -Wl,-z,relro,-z,now"
-SECURITY_X_LDFLAGS ?= "-fstack-protector-strong -Wl,-z,relro"
+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"
# powerpc does not get on with pie for reasons not looked into as yet
-SECURITY_CFLAGS_powerpc = "-fstack-protector-strong ${lcl_maybe_fortify} ${SECURITY_NOPIE_CFLAGS}"
-SECURITY_CFLAGS_pn-libgcc_powerpc = ""
GCCPIE_powerpc = ""
GLIBCPIE_powerpc = ""
+SECURITY_CFLAGS_remove_powerpc = "${SECURITY_PIE_CFLAGS}"
+SECURITY_CFLAGS_pn-libgcc_powerpc = ""
-# arm specific security flag issues
SECURITY_CFLAGS_pn-glibc = ""
SECURITY_CFLAGS_pn-glibc-initial = ""
SECURITY_CFLAGS_pn-gcc-runtime = ""
@@ -43,7 +44,6 @@ 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}"
@@ -58,9 +58,9 @@ SECURITY_STRINGFORMAT_pn-gcc = ""
TARGET_CC_ARCH_append_class-target = " ${SECURITY_CFLAGS}"
TARGET_LDFLAGS_append_class-target = " ${SECURITY_LDFLAGS}"
-SECURITY_LDFLAGS_remove_pn-gcc-runtime = "-fstack-protector-strong"
-SECURITY_LDFLAGS_remove_pn-glibc = "-fstack-protector-strong"
-SECURITY_LDFLAGS_remove_pn-glibc-initial = "-fstack-protector-strong"
+SECURITY_STACK_PROTECTOR_pn-gcc-runtime = ""
+SECURITY_STACK_PROTECTOR_pn-glibc = ""
+SECURITY_STACK_PROTECTOR_pn-glibc-initial = ""
# 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}"
diff --git a/meta/conf/distro/include/tclibc-baremetal.inc b/meta/conf/distro/include/tclibc-baremetal.inc
index a8ce6d3ac27..e04f8c88123 100644
--- a/meta/conf/distro/include/tclibc-baremetal.inc
+++ b/meta/conf/distro/include/tclibc-baremetal.inc
@@ -4,11 +4,9 @@
LIBCEXTENSION = ""
-# Add baremetal libc overrides to the overrides.
LIBCOVERRIDE = ":libc-baremetal"
-OVERRIDES .= "${LIBCOVERRIDE}"
-ASSUME_PROVIDED += "virtual/libc virtual/libiconv"
+ASSUME_PROVIDED += "virtual/libc virtual/libiconv virtual/crypt"
PREFERRED_PROVIDER_virtual/libc ?= "musl"
PREFERRED_PROVIDER_virtual/libiconv ?= "musl"
@@ -23,6 +21,9 @@ LIBC_DEPENDENCIES = ""
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"
+
TARGET_OS = "elf"
TARGET_OS_arm = "eabi"
@@ -30,3 +31,9 @@ TOOLCHAIN_HOST_TASK ?= "packagegroup-cross-canadian-${MACHINE}"
TOOLCHAIN_HOST_TASK_ATTEMPTONLY ?= ""
TOOLCHAIN_TARGET_TASK ?= "libgcc-dev"
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 = ""
+# disable pie security flags by default
+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 ad8000f5de1..8d1076440fd 100644
--- a/meta/conf/distro/include/tclibc-glibc.inc
+++ b/meta/conf/distro/include/tclibc-glibc.inc
@@ -4,9 +4,7 @@
LIBCEXTENSION = "${@['', '-gnu'][(d.getVar('ABIEXTENSION') or '') != '']}"
-# Add glibc overrides to the overrides for glibc.
LIBCOVERRIDE = ":libc-glibc"
-OVERRIDES .= "${LIBCOVERRIDE}"
PREFERRED_PROVIDER_virtual/libiconv ?= "glibc"
PREFERRED_PROVIDER_virtual/nativesdk-libiconv ?= "nativesdk-glibc"
diff --git a/meta/conf/distro/include/tclibc-musl.inc b/meta/conf/distro/include/tclibc-musl.inc
index 54e1acf1df4..8badbbb40a6 100644
--- a/meta/conf/distro/include/tclibc-musl.inc
+++ b/meta/conf/distro/include/tclibc-musl.inc
@@ -4,13 +4,12 @@
LIBCEXTENSION = "-musl"
-# Add musl libc overrides to the overrides.
LIBCOVERRIDE = ":libc-musl"
-OVERRIDES .= "${LIBCOVERRIDE}"
PREFERRED_PROVIDER_virtual/libc ?= "musl"
PREFERRED_PROVIDER_virtual/libiconv ?= "musl"
PREFERRED_PROVIDER_virtual/libintl ?= "musl"
+PREFERRED_PROVIDER_virtual/crypt ?= "musl"
PREFERRED_PROVIDER_virtual/nativesdk-libintl ?= "nativesdk-glibc"
PREFERRED_PROVIDER_virtual/nativesdk-libiconv ?= "nativesdk-glibc"
diff --git a/meta/conf/distro/include/tclibc-newlib.inc b/meta/conf/distro/include/tclibc-newlib.inc
new file mode 100644
index 00000000000..896c0b16d78
--- /dev/null
+++ b/meta/conf/distro/include/tclibc-newlib.inc
@@ -0,0 +1,48 @@
+#
+# Newlib configuration
+#
+
+LIBCEXTENSION = "-newlib"
+LIBCOVERRIDE = ":libc-newlib"
+
+PREFERRED_PROVIDER_virtual/libc ?= "newlib"
+PREFERRED_PROVIDER_virtual/libiconv ?= "newlib"
+PREFERRED_PROVIDER_virtual/libintl ?= "newlib"
+PREFERRED_PROVIDER_virtual/nativesdk-libintl ?= "nativesdk-glibc"
+PREFERRED_PROVIDER_virtual/nativesdk-libiconv ?= "nativesdk-glibc"
+
+DISTRO_FEATURES_BACKFILL_CONSIDERED += "ldconfig"
+
+#USE_NLS ?= "no"
+
+IMAGE_LINGUAS = ""
+
+LIBC_DEPENDENCIES = "\
+ newlib-dbg \
+ newlib-dev \
+ libgloss \
+ libgloss-dev \
+ libgloss-dbg \
+ libgcc-dev \
+ libgcc-dbg \
+ "
+
+# 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"
+
+# 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}"
+
+TARGET_OS = "elf"
+TARGET_OS_arm = "eabi"
+
+TOOLCHAIN_HOST_TASK ?= "packagegroup-cross-canadian-${MACHINE}"
+TOOLCHAIN_TARGET_TASK ?= "${LIBC_DEPENDENCIES}"
+TOOLCHAIN_NEED_CONFIGSITE_CACHE_remove = "zlib ncurses"
+
+# disable pie security flags by default
+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 00399ae820c..15daf801f15 100644
--- a/meta/conf/distro/include/tcmode-default.inc
+++ b/meta/conf/distro/include/tcmode-default.inc
@@ -22,13 +22,13 @@ PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-initial = "${TCLIBC}-initial"
PREFERRED_PROVIDER_virtual/nativesdk-${SDK_PREFIX}libc-initial ?= "nativesdk-glibc-initial"
PREFERRED_PROVIDER_virtual/gettext ??= "gettext"
-GCCVERSION ?= "7.%"
+GCCVERSION ?= "8.%"
SDKGCCVERSION ?= "${GCCVERSION}"
-BINUVERSION ?= "2.30%"
-GDBVERSION ?= "8.0%"
-GLIBCVERSION ?= "2.27%"
-LINUXLIBCVERSION ?= "4.15%"
-QEMUVERSION ?= "2.11%"
+BINUVERSION ?= "2.31%"
+GDBVERSION ?= "8.2%"
+GLIBCVERSION ?= "2.28%"
+LINUXLIBCVERSION ?= "4.18%"
+QEMUVERSION ?= "3.0%"
PREFERRED_VERSION_gcc ?= "${GCCVERSION}"
PREFERRED_VERSION_gcc-cross-${TARGET_ARCH} ?= "${GCCVERSION}"
@@ -65,12 +65,9 @@ PREFERRED_VERSION_glibc-initial ?= "${GLIBCVERSION}"
PREFERRED_VERSION_nativesdk-glibc-initial ?= "${GLIBCVERSION}"
PREFERRED_VERSION_cross-localedef-native ?= "${GLIBCVERSION}"
-
PREFERRED_VERSION_qemu ?= "${QEMUVERSION}"
PREFERRED_VERSION_qemu-native ?= "${QEMUVERSION}"
PREFERRED_VERSION_nativesdk-qemu ?= "${QEMUVERSION}"
-# Setup suitable toolchain flags
-require conf/distro/include/as-needed.inc
GOVERSION ?= "1.9%"
PREFERRED_VERSION_virtual/${TARGET_PREFIX}go ?= "${GOVERSION}"
diff --git a/meta/conf/distro/include/yocto-uninative.inc b/meta/conf/distro/include/yocto-uninative.inc
index a8e82cb5d75..180d4e54baa 100644
--- a/meta/conf/distro/include/yocto-uninative.inc
+++ b/meta/conf/distro/include/yocto-uninative.inc
@@ -8,6 +8,8 @@
UNINATIVE_MAXGLIBCVERSION = "2.27"
-UNINATIVE_URL ?= "http://downloads.yoctoproject.org/releases/uninative/1.9/"
-UNINATIVE_CHECKSUM[i686] ?= "83a4f927da81d9889ef0cbe5c12cb782e21c6cc11e6155600b94ff0c99576dce"
-UNINATIVE_CHECKSUM[x86_64] ?= "c26622a1f27dbf5b25de986b11584b5c5b2f322d9eb367f705a744f58a5561ec"
+UNINATIVE_URL ?= "http://downloads.yoctoproject.org/releases/uninative/2.2/"
+UNINATIVE_CHECKSUM[aarch64] ?= "5c9636d2683dca8b783763b5e52f80f12ac857c0f445cdaa58a8c2370583da77"
+UNINATIVE_CHECKSUM[i686] ?= "036b60092fe4acfa1a321d110673030db20344a2d56f33a4d047f0279498bdad"
+UNINATIVE_CHECKSUM[x86_64] ?= "e3b77208169bf1ac4e89496f3cdbf27695f5b18a2694a908a793390f28b67f83"
+
diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf
index 254f8f19604..fc6d008807b 100644
--- a/meta/conf/documentation.conf
+++ b/meta/conf/documentation.conf
@@ -288,8 +288,6 @@ MULTIMACH_TARGET_SYS[doc] = "Separates files for different machines such that yo
NATIVELSBSTRING[doc] = "A string identifying the host distribution."
NO_RECOMMENDATIONS[doc] = "When set to '1', no recommended packages will be installed. Realize that some recommended packages might be required for certain system functionality, such as kernel-modules. It is up to the user to add packages to IMAGE_INSTALL as needed."
-NOHDD[doc] = "Causes the OpenEmbedded build system to skip building the .hddimg image."
-NOISO[doc] = "Causes the OpenEmbedded build system to skip building the ISO image."
#O
@@ -417,7 +415,7 @@ TARGET_PREFIX[doc] = "The prefix for the cross-compile toolchain (e.g. arm-linux
TARGET_SYS[doc] = "The target system is comprised of TARGET_ARCH,TARGET_VENDOR and TARGET_OS."
TCLIBC[doc] = "Specifies C library (libc) variant to use during the build process. You can select 'baremetal', 'glibc' or 'musl'."
TCMODE[doc] = "Enables an external toolchain (where provided by an additional layer) if set to a value other than 'default'."
-TEST_IMAGE[doc] = "Enables test booting of virtual machine images under the QEMU emulator after any root filesystems are created and runs tests against those images."
+TESTIMAGE_AUTO[doc] = "Enables test booting of virtual machine images under the QEMU emulator after any root filesystems are created and runs tests against those images each time an image is built."
TEST_QEMUBOOT_TIMEOUT[doc] = "The time in seconds allowed for an image to boot before automated runtime tests begin to run against an image."
TEST_SUITES[doc] = "An ordered list of tests (modules) to run against an image when performing automated runtime testing."
TEST_POWERCONTROL_CMD[doc] = "For automated hardware testing, specifies the command to use to control the power of the target machine under test"
diff --git a/meta/conf/layer.conf b/meta/conf/layer.conf
index 315fb936fa8..6221a057ce6 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 = "sumo"
+LAYERSERIES_CORENAMES = "thud"
# This should only be incremented on significant changes that will
# cause compatibility issues with other layers
LAYERVERSION_core = "11"
-LAYERSERIES_COMPAT_core = "sumo"
+LAYERSERIES_COMPAT_core = "thud"
BBLAYERS_LAYERINDEX_NAME_core = "openembedded-core"
@@ -78,5 +78,21 @@ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
weston-init->kbd \
"
+# Avoid adding bison-native to the sysroot without a specific
+# dependency in the recipe. This means indirect dependencies
+# (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
+# base-passwd/shadow-sysroot don't need their dependencies
+SSTATE_EXCLUDEDEPS_SYSROOT += "\
+ .*->.*-initial.* \
+ .*(base-passwd|shadow-sysroot)->.* \
+"
+# Avoid adding autoconf-archive-native to sysroot without a specific
+# dependency in the recipe.
+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}"
diff --git a/meta/conf/licenses.conf b/meta/conf/licenses.conf
index 3e2d2589ab6..90c486ebed7 100644
--- a/meta/conf/licenses.conf
+++ b/meta/conf/licenses.conf
@@ -16,7 +16,7 @@ SRC_DISTRIBUTE_LICENSES += "CC-BY-SA-1.0 CC-BY-SA-2.0 CC-BY-SA-2.5 CC-BY-SA-3.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 += "Elfutils-Exception Entessa EPL-1.0 ErlPL-1.1"
+SRC_DISTRIBUTE_LICENSES += "Elfutils-Exception 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"
diff --git a/meta/conf/machine-sdk/aarch64.conf b/meta/conf/machine-sdk/aarch64.conf
new file mode 100644
index 00000000000..98d8380ecba
--- /dev/null
+++ b/meta/conf/machine-sdk/aarch64.conf
@@ -0,0 +1,2 @@
+SDK_ARCH = "aarch64"
+ABIEXTENSION_class-nativesdk = ""
diff --git a/meta/conf/machine/include/arm/arch-armv7a.inc b/meta/conf/machine/include/arm/arch-armv7a.inc
index bad1c270595..a2663d8008c 100644
--- a/meta/conf/machine/include/arm/arch-armv7a.inc
+++ b/meta/conf/machine/include/arm/arch-armv7a.inc
@@ -1,4 +1,5 @@
DEFAULTTUNE ?= "armv7athf"
+ARM_INSTRUCTION_SET ?= "thumb"
TUNEVALID[armv7a] = "Enable instructions for ARMv7-a"
TUNECONFLICTS[armv7a] = "armv4 armv5 armv6 armv7"
diff --git a/meta/conf/machine/include/mips/tune-mips-74k.inc b/meta/conf/machine/include/mips/tune-mips-74k.inc
new file mode 100644
index 00000000000..94afee34bd8
--- /dev/null
+++ b/meta/conf/machine/include/mips/tune-mips-74k.inc
@@ -0,0 +1,37 @@
+DEFAULTTUNE ?= "mips32r2-74kc"
+
+MIPSPKGSFX_MIPS16E ??= ""
+
+require conf/machine/include/tune-mips32r2.inc
+require conf/machine/include/mips/feature-mips-mips16e.inc
+
+
+TUNEVALID[74kc] = "Enable MIPS 74K with DSPr2 processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "74kc", " -mtune=74kc", "", d)}"
+
+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"
+
+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"
+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"
+
+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"
+QEMU_EXTRAOPTIONS_mips32r2el-74kc-m16-nf = " -cpu 24KEc"
diff --git a/meta/conf/machine/include/qemu.inc b/meta/conf/machine/include/qemu.inc
index aa332fecc2c..5050e41066e 100644
--- a/meta/conf/machine/include/qemu.inc
+++ b/meta/conf/machine/include/qemu.inc
@@ -19,7 +19,7 @@ IMAGE_FSTYPES += "tar.bz2 ext4"
RDEPENDS_${KERNEL_PACKAGE_NAME}-base = ""
# Use a common kernel recipe for all QEMU machines
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
+PREFERRED_PROVIDER_virtual/kernel ??= "linux-yocto"
EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native"
diff --git a/meta/conf/machine/include/tune-core2.inc b/meta/conf/machine/include/tune-core2.inc
index c686bb46825..ddde719bde6 100644
--- a/meta/conf/machine/include/tune-core2.inc
+++ b/meta/conf/machine/include/tune-core2.inc
@@ -21,7 +21,7 @@ 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 core2duo"
+QEMU_EXTRAOPTIONS_core2-32 = " -cpu n270"
AVAILTUNES += "core2-64"
TUNE_FEATURES_tune-core2-64 = "${TUNE_FEATURES_tune-x86-64} core2"
diff --git a/meta/conf/machine/include/tune-corei7.inc b/meta/conf/machine/include/tune-corei7.inc
index 6edfb680e22..d06af47b86a 100644
--- a/meta/conf/machine/include/tune-corei7.inc
+++ b/meta/conf/machine/include/tune-corei7.inc
@@ -1,20 +1,19 @@
-# Settings for the GCC(1) cpu-type "corei7":
+# Settings for the GCC(1) cpu-type "nehalem":
#
-# Intel Core i7 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1
-# and SSE4.2 instruction set support.
+# 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"
-# Pull in the previous tune in to pull in PACKAGE_EXTRA_ARCHS
+# 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=corei7 -mtune=corei7 -mfpmath=sse -msse4.2', '', d)}"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'corei7', ' -march=nehalem -mtune=generic -mfpmath=sse -msse4.2', '', d)}"
# Extra tune selections
AVAILTUNES += "corei7-32"
diff --git a/meta/conf/machine/include/x86-base.inc b/meta/conf/machine/include/x86-base.inc
index f8aacea64cc..c29279209b7 100644
--- a/meta/conf/machine/include/x86-base.inc
+++ b/meta/conf/machine/include/x86-base.inc
@@ -8,20 +8,17 @@
MACHINE_FEATURES += "screen keyboard pci usbhost ext2 ext3 x86 \
acpi serial usbgadget alsa"
-MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
-
-IMAGE_FSTYPES ?= "live"
-NOISO ?= "1"
+IMAGE_FSTYPES ?= "hddimg"
KERNEL_IMAGETYPE ?= "bzImage"
-SERIAL_CONSOLE ?= "115200 ttyS0"
+SERIAL_CONSOLES ?= "115200;ttyS0"
#
# kernel-related variables
#
PREFERRED_PROVIDER_virtual/kernel ??= "linux-yocto"
-PREFERRED_VERSION_linux-yocto ??= "4.15%"
+PREFERRED_VERSION_linux-yocto ??= "4.18%"
#
# XSERVER subcomponents, used to build the XSERVER variable
diff --git a/meta/conf/machine/qemuarm.conf b/meta/conf/machine/qemuarm.conf
index 9403b1e7e3b..d2f2c85c3fa 100644
--- a/meta/conf/machine/qemuarm.conf
+++ b/meta/conf/machine/qemuarm.conf
@@ -16,5 +16,5 @@ QB_MACHINE = "-machine versatilepb"
QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0,115200 console=tty"
# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
QB_OPT_APPEND = "-show-cursor -usb -device usb-tablet -device virtio-rng-pci"
-PREFERRED_VERSION_linux-yocto ??= "4.15%"
+PREFERRED_VERSION_linux-yocto ??= "4.18%"
QB_DTB = "${@oe.utils.version_less_or_equal('PREFERRED_VERSION_linux-yocto', '4.7', '', 'zImage-versatile-pb.dtb', d)}"
diff --git a/meta/conf/machine/qemumips.conf b/meta/conf/machine/qemumips.conf
index 986315a64a9..a60f67aa879 100644
--- a/meta/conf/machine/qemumips.conf
+++ b/meta/conf/machine/qemumips.conf
@@ -10,5 +10,3 @@ KERNEL_IMAGETYPE = "vmlinux"
KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1"
-
-MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
diff --git a/meta/conf/machine/qemumips64.conf b/meta/conf/machine/qemumips64.conf
index 3f91cbe1777..a166a1031c8 100644
--- a/meta/conf/machine/qemumips64.conf
+++ b/meta/conf/machine/qemumips64.conf
@@ -10,5 +10,3 @@ KERNEL_IMAGETYPE = "vmlinux"
KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1"
-
-MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
diff --git a/meta/conf/machine/qemux86-64.conf b/meta/conf/machine/qemux86-64.conf
index fcc44595e8c..fd1f4142e9b 100644
--- a/meta/conf/machine/qemux86-64.conf
+++ b/meta/conf/machine/qemux86-64.conf
@@ -12,6 +12,8 @@ DEFAULTTUNE ?= "core2-64"
require conf/machine/include/tune-core2.inc
require conf/machine/include/qemuboot-x86.inc
+UBOOT_MACHINE ?= "qemu-x86_64_defconfig"
+
KERNEL_IMAGETYPE = "bzImage"
SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1"
@@ -33,5 +35,5 @@ KERNEL_MODULE_AUTOLOAD += "uvesafb"
KERNEL_MODULE_PROBECONF += "uvesafb"
module_conf_uvesafb = "options uvesafb mode_option=${UVESA_MODE}"
-WKS_FILE ?= "directdisk.wks"
+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 c53f7a92ce5..efcebb27825 100644
--- a/meta/conf/machine/qemux86.conf
+++ b/meta/conf/machine/qemux86.conf
@@ -11,6 +11,8 @@ require conf/machine/include/qemu.inc
require conf/machine/include/tune-i586.inc
require conf/machine/include/qemuboot-x86.inc
+UBOOT_MACHINE ?= "qemu-x86_defconfig"
+
KERNEL_IMAGETYPE = "bzImage"
SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1"
@@ -32,5 +34,5 @@ KERNEL_MODULE_AUTOLOAD += "uvesafb"
KERNEL_MODULE_PROBECONF += "uvesafb"
module_conf_uvesafb = "options uvesafb mode_option=${UVESA_MODE}"
-WKS_FILE ?= "directdisk.wks"
+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 e74dec81a89..65a28ddbd2f 100644
--- a/meta/conf/multilib.conf
+++ b/meta/conf/multilib.conf
@@ -26,3 +26,7 @@ OPKG_ARGS_append = " --force-maintainer --force-overwrite"
PKG_CONFIG_PATH .= ":${WORKDIR}/recipe-sysroot/${datadir}/pkgconfig"
PKG_CONFIG_PATH[vardepsexclude] = "datadir WORKDIR"
PKG_CONFIG_PATH[vardepvalueexclude] = ":${WORKDIR}/recipe-sysroot/${datadir}/pkgconfig"
+
+# These recipes don't need multilib variants, the ${BPN} PROVDES/RPROVDES
+# ${MLPREFIX}${BPN}
+NON_MULTILIB_RECIPES = "grub grub-efi make-mod-scripts"
diff --git a/meta/conf/sanity.conf b/meta/conf/sanity.conf
index 390d3427a20..45e67525182 100644
--- a/meta/conf/sanity.conf
+++ b/meta/conf/sanity.conf
@@ -3,7 +3,7 @@
# See sanity.bbclass
#
# Expert users can confirm their sanity with "touch conf/sanity.conf"
-BB_MIN_VERSION = "1.35.0"
+BB_MIN_VERSION = "1.39.1"
SANITY_ABIFILE = "${TMPDIR}/abi_version"
diff --git a/meta/files/common-licenses/EPL-2.0 b/meta/files/common-licenses/EPL-2.0
new file mode 100644
index 00000000000..e48e0963459
--- /dev/null
+++ b/meta/files/common-licenses/EPL-2.0
@@ -0,0 +1,277 @@
+Eclipse Public License - v 2.0
+
+ THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+ 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 the initial Contributor, the initial content
+ Distributed under this Agreement, and
+
+ b) in the case of each subsequent 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 Distributed by that particular Contributor. A Contribution
+ "originates" from a Contributor if it was added to the Program by
+ such Contributor itself or anyone acting on such Contributor's behalf.
+ Contributions do not include changes or additions to the Program that
+ are not Modified Works.
+
+"Contributor" means any person or entity that Distributes the Program.
+
+"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.
+
+"Program" means the Contributions Distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement
+or any Secondary License (as applicable), including Contributors.
+
+"Derivative Works" shall mean any work, whether in Source Code or other
+form, that is based on (or derived from) the Program and for which the
+editorial revisions, annotations, elaborations, or other modifications
+represent, as a whole, an original work of authorship.
+
+"Modified Works" shall mean any work in Source Code or other form that
+results from an addition to, deletion from, or modification of the
+contents of the Program, including, for purposes of clarity any new file
+in Source Code form that contains any contents of the Program. Modified
+Works shall not include works that contain only declarations,
+interfaces, types, classes, structures, or files of the Program solely
+in each case in order to link to, bind by name, or subclass the Program
+or Modified Works thereof.
+
+"Distribute" means the acts of a) distributing or b) making available
+in any manner that enables the transfer of a copy.
+
+"Source Code" means the form of a Program preferred for making
+modifications, including but not limited to software source code,
+documentation source, and configuration files.
+
+"Secondary License" means either the GNU General Public License,
+Version 2.0, or any later versions of that license, including any
+exceptions or additional permissions as identified by the initial
+Contributor.
+
+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.
+
+ 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 or other form. This patent license shall
+ apply to the combination of the Contribution 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 shall not apply to any other
+ combinations which include the Contribution. 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.
+
+ e) Notwithstanding the terms of any Secondary License, no
+ Contributor makes additional grants to any Recipient (other than
+ those set forth in this Agreement) as a result of such Recipient's
+ receipt of the Program under the terms of a Secondary License
+ (if permitted under the terms of Section 3).
+
+3. REQUIREMENTS
+
+3.1 If a Contributor Distributes the Program in any form, then:
+
+ a) the Program must also be made available as Source Code, in
+ accordance with section 3.2, and the Contributor must accompany
+ the Program with a statement that the Source Code for the Program
+ is available under this Agreement, and informs Recipients how to
+ obtain it in a reasonable manner on or through a medium customarily
+ used for software exchange; and
+
+ b) the Contributor may Distribute the Program under a license
+ different than this Agreement, provided that such license:
+ i) effectively disclaims on behalf of all other 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;
+
+ ii) effectively excludes on behalf of all other Contributors all
+ liability for damages, including direct, indirect, special,
+ incidental and consequential damages, such as lost profits;
+
+ iii) does not attempt to limit or alter the recipients' rights
+ in the Source Code under section 3.2; and
+
+ iv) requires any subsequent distribution of the Program by any
+ party to be under a license that satisfies the requirements
+ of this section 3.
+
+3.2 When the Program is Distributed as Source Code:
+
+ a) it must be made available under this Agreement, or if the
+ Program (i) is combined with other material in a separate file or
+ files made available under a Secondary License, and (ii) the initial
+ Contributor attached to the Source Code the notice described in
+ Exhibit A of this Agreement, then the Program may be made available
+ under the terms of such Secondary Licenses, and
+
+ b) a copy of this Agreement must be included with each copy of
+ the Program.
+
+3.3 Contributors may not remove or alter any copyright, patent,
+trademark, attribution notices, disclaimers of warranty, or limitations
+of liability ("notices") contained within the Program from any copy of
+the Program which they Distribute, provided that Contributors may add
+their own appropriate notices.
+
+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 Contributor who includes the Program in a commercial product
+offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes
+the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every
+other 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 Contributor 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 Contributor in
+writing of such claim, and b) allow the Commercial Contributor to control,
+and cooperate with the Commercial Contributor in, the defense and any
+related settlement negotiations. The Indemnified Contributor may
+participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those performance
+claims and warranties, and if a court requires any other Contributor to
+pay any damages as a result, the Commercial Contributor must pay
+those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
+PERMITTED BY APPLICABLE LAW, 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, AND TO THE EXTENT
+PERMITTED BY APPLICABLE LAW, 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 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.
+
+Everyone is permitted to copy and distribute copies of this Agreement,
+but in order to avoid inconsistency the Agreement is copyrighted and
+may only be modified in the following manner. The Agreement Steward
+reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement
+Steward has the right to modify this Agreement. The Eclipse Foundation
+is the initial Agreement Steward. The Eclipse Foundation may assign the
+responsibility to serve as the Agreement Steward to a suitable separate
+entity. 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.
+
+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. Nothing in this Agreement is intended
+to be enforceable by any entity that is not a Contributor or Recipient.
+No third-party beneficiary rights are created under this Agreement.
+
+Exhibit A - Form of Secondary Licenses Notice
+
+"This Source Code may also be made available under the following
+Secondary Licenses when the conditions for such availability set forth
+in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+version(s), and exceptions or additional permissions here}."
+
+ Simply including a copy of this Agreement, including this Exhibit A
+ is not sufficient to license the Source Code under Secondary Licenses.
+
+ 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.
diff --git a/meta/files/toolchain-shar-extract.sh b/meta/files/toolchain-shar-extract.sh
index f7ab43066fb..9eabd626308 100644
--- a/meta/files/toolchain-shar-extract.sh
+++ b/meta/files/toolchain-shar-extract.sh
@@ -3,6 +3,7 @@
[ -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
diff --git a/meta/lib/bblayers/create.py b/meta/lib/bblayers/create.py
index 6a41fe05043..2ebf151ad18 100644
--- a/meta/lib/bblayers/create.py
+++ b/meta/lib/bblayers/create.py
@@ -30,8 +30,10 @@ class CreatePlugin(LayerPlugin):
conf = os.path.join(layerdir, 'conf')
bb.utils.mkdirhier(conf)
+ layername = os.path.basename(os.path.normpath(args.layerdir))
+
# Create the README from templates/README
- readme_template = read_template('README') % (args.layerdir, args.layerdir, args.layerdir, args.layerdir, args.layerdir, args.layerdir)
+ readme_template = read_template('README').format(layername=layername)
readme = os.path.join(layerdir, 'README')
with open(readme, 'w') as fd:
fd.write(readme_template)
@@ -43,8 +45,12 @@ class CreatePlugin(LayerPlugin):
license_dst = os.path.join(layerdir, copying)
shutil.copy(license_src, license_dst)
+ # Get the compat value for core layer.
+ compat = self.tinfoil.config_data.getVar('LAYERSERIES_COMPAT_core') or ""
+
# Create the layer.conf from templates/layer.conf
- layerconf_template = read_template('layer.conf') % (args.layerdir, args.layerdir, args.layerdir, args.priority)
+ layerconf_template = read_template('layer.conf').format(
+ layername=layername, priority=args.priority, compat=compat)
layerconf = os.path.join(conf, 'layer.conf')
with open(layerconf, 'w') as fd:
fd.write(layerconf_template)
@@ -53,7 +59,7 @@ class CreatePlugin(LayerPlugin):
example_template = read_template('example.bb')
example = os.path.join(layerdir, 'recipes-' + args.examplerecipe, args.examplerecipe)
bb.utils.mkdirhier(example)
- with open(os.path.join(example, args.examplerecipe + '.bb'), 'w') as fd:
+ with open(os.path.join(example, args.examplerecipe + '_%s.bb') % args.version, 'w') as fd:
fd.write(example_template)
logger.plain('Add your new layer with \'bitbake-layers add-layer %s\'' % args.layerdir)
@@ -63,4 +69,5 @@ class CreatePlugin(LayerPlugin):
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('--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/README b/meta/lib/bblayers/templates/README
index 5a77f8d3478..fb2d28e1771 100644
--- a/meta/lib/bblayers/templates/README
+++ b/meta/lib/bblayers/templates/README
@@ -1,4 +1,4 @@
-This README file contains information on the contents of the %s layer.
+This README file contains information on the contents of the {layername} layer.
Please see the corresponding sections below for details.
@@ -18,7 +18,7 @@ Dependencies
Patches
=======
-Please submit any patches against the %s layer to the xxxx mailing list (xxxx@zzzz.org)
+Please submit any patches against the {layername} layer to the xxxx mailing list (xxxx@zzzz.org)
and cc: the maintainer:
Maintainer: XXX YYYYYY <xxx.yyyyyy@zzzzz.com>
@@ -26,16 +26,16 @@ Maintainer: XXX YYYYYY <xxx.yyyyyy@zzzzz.com>
Table of Contents
=================
- I. Adding the %s layer to your build
+ I. Adding the {layername} layer to your build
II. Misc
-I. Adding the %s layer to your build
+I. Adding the {layername} layer to your build
=================================================
-Run 'bitbake-layers add-layer %s'
+Run 'bitbake-layers add-layer {layername}'
II. Misc
========
---- replace with specific information about the %s layer ---
+--- replace with specific information about the {layername} layer ---
diff --git a/meta/lib/bblayers/templates/layer.conf b/meta/lib/bblayers/templates/layer.conf
index 3c0300226c5..e2eaff43469 100644
--- a/meta/lib/bblayers/templates/layer.conf
+++ b/meta/lib/bblayers/templates/layer.conf
@@ -1,10 +1,13 @@
# We have a conf and classes directory, add to BBPATH
-BBPATH .= ":${LAYERDIR}"
+BBPATH .= ":${{LAYERDIR}}"
# We have recipes-* directories, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
- ${LAYERDIR}/recipes-*/*/*.bbappend"
+BBFILES += "${{LAYERDIR}}/recipes-*/*/*.bb \
+ ${{LAYERDIR}}/recipes-*/*/*.bbappend"
-BBFILE_COLLECTIONS += "%s"
-BBFILE_PATTERN_%s = "^${LAYERDIR}/"
-BBFILE_PRIORITY_%s = "%s"
+BBFILE_COLLECTIONS += "{layername}"
+BBFILE_PATTERN_{layername} = "^${{LAYERDIR}}/"
+BBFILE_PRIORITY_{layername} = "{priority}"
+
+LAYERDEPENDS_{layername} = "core"
+LAYERSERIES_COMPAT_{layername} = "{compat}"
diff --git a/meta/lib/oe/buildhistory_analysis.py b/meta/lib/oe/buildhistory_analysis.py
index b0365abcedf..ad7fceb8bbc 100644
--- a/meta/lib/oe/buildhistory_analysis.py
+++ b/meta/lib/oe/buildhistory_analysis.py
@@ -13,6 +13,7 @@ import os.path
import difflib
import git
import re
+import shlex
import hashlib
import collections
import bb.utils
@@ -31,13 +32,6 @@ ver_monitor_fields = ['PKGE', 'PKGV', 'PKGR']
monitor_numeric_threshold = 10
# Image files to monitor (note that image-info.txt is handled separately)
img_monitor_files = ['installed-package-names.txt', 'files-in-image.txt']
-# Related context fields for reporting (note: PE, PV & PR are always reported for monitored package fields)
-related_fields = {}
-related_fields['RDEPENDS'] = ['DEPENDS']
-related_fields['RRECOMMENDS'] = ['DEPENDS']
-related_fields['FILELIST'] = ['FILES']
-related_fields['files-in-image.txt'] = ['installed-package-names.txt', 'USER_CLASSES', 'IMAGE_CLASSES', 'ROOTFS_POSTPROCESS_COMMAND', 'IMAGE_POSTPROCESS_COMMAND']
-related_fields['installed-package-names.txt'] = ['IMAGE_FEATURES', 'IMAGE_LINGUAS', 'IMAGE_INSTALL', 'BAD_RECOMMENDATIONS', 'NO_RECOMMENDATIONS', 'PACKAGE_EXCLUDE']
colours = {
'colour_default': '',
@@ -67,7 +61,6 @@ class ChangeRecord:
self.oldvalue = oldvalue
self.newvalue = newvalue
self.monitored = monitored
- self.related = []
self.filechanges = None
def __str__(self):
@@ -123,10 +116,13 @@ class ChangeRecord:
aitems = pkglist_combine(depvera)
bitems = pkglist_combine(depverb)
else:
- aitems = self.oldvalue.split()
- bitems = self.newvalue.split()
if self.fieldname == 'FILELIST':
+ aitems = shlex.split(self.oldvalue)
+ bitems = shlex.split(self.newvalue)
renamed_dirs, aitems, bitems = detect_renamed_dirs(aitems, bitems)
+ else:
+ aitems = self.oldvalue.split()
+ bitems = self.newvalue.split()
removed = list(set(aitems) - set(bitems))
added = list(set(bitems) - set(aitems))
@@ -206,13 +202,6 @@ class ChangeRecord:
else:
out = '{} changed from "{colour_remove}{}{colour_default}" to "{colour_add}{}{colour_default}"'.format(self.fieldname, self.oldvalue, self.newvalue, **colours)
- if self.related:
- for chg in self.related:
- if not outer and chg.fieldname in ['PE', 'PV', 'PR']:
- continue
- for line in chg._str_internal(False).splitlines():
- out += '\n * %s' % line
-
return '%s%s' % (prefix, out) if out else ''
class FileChange:
@@ -424,9 +413,13 @@ def compare_dict_blobs(path, ablob, bblob, report_all, report_ver):
(depvera, depverb) = compare_pkg_lists(astr, bstr)
if depvera == depverb:
continue
- alist = astr.split()
+ if key == 'FILELIST':
+ alist = shlex.split(astr)
+ blist = shlex.split(bstr)
+ else:
+ alist = astr.split()
+ blist = bstr.split()
alist.sort()
- blist = bstr.split()
blist.sort()
# We don't care about the removal of self-dependencies
if pkgname in alist and not pkgname in blist:
@@ -635,17 +628,6 @@ def process_changes(repopath, revision1, revision2='HEAD', report_all=False, rep
chg = ChangeRecord(path, filename[7:], d.a_blob.data_stream.read().decode('utf-8'), '', True)
changes.append(chg)
- # Link related changes
- for chg in changes:
- if chg.monitored:
- for chg2 in changes:
- # (Check dirname in the case of fields from recipe info files)
- if chg.path == chg2.path or os.path.dirname(chg.path) == chg2.path:
- if chg2.fieldname in related_fields.get(chg.fieldname, []):
- chg.related.append(chg2)
- elif chg.path == chg2.path and chg.path.startswith('packages/') and chg2.fieldname in ['PE', 'PV', 'PR']:
- chg.related.append(chg2)
-
# filter out unwanted paths
if exclude_path:
for chg in changes:
diff --git a/meta/lib/oe/copy_buildsystem.py b/meta/lib/oe/copy_buildsystem.py
index 4b94806c73f..7cb784cf8c4 100644
--- a/meta/lib/oe/copy_buildsystem.py
+++ b/meta/lib/oe/copy_buildsystem.py
@@ -1,5 +1,12 @@
# This class should provide easy access to the different aspects of the
# buildsystem such as layers, bitbake location, etc.
+#
+# SDK_LAYERS_EXCLUDE: Layers which will be excluded from SDK layers.
+# SDK_LAYERS_EXCLUDE_PATTERN: The simiar to SDK_LAYERS_EXCLUDE, this supports
+# python regular expression, use space as separator,
+# e.g.: ".*-downloads closed-.*"
+#
+
import stat
import shutil
@@ -23,9 +30,12 @@ class BuildSystem(object):
self.context = context
self.layerdirs = [os.path.abspath(pth) for pth in d.getVar('BBLAYERS').split()]
self.layers_exclude = (d.getVar('SDK_LAYERS_EXCLUDE') or "").split()
+ self.layers_exclude_pattern = d.getVar('SDK_LAYERS_EXCLUDE_PATTERN')
def copy_bitbake_and_layers(self, destdir, workspace_name=None):
+ import re
# Copy in all metadata layers + bitbake (as repositories)
+ copied_corebase = None
layers_copied = []
bb.utils.mkdirhier(destdir)
layers = list(self.layerdirs)
@@ -40,8 +50,17 @@ class BuildSystem(object):
# Exclude layers
for layer_exclude in self.layers_exclude:
if layer_exclude in layers:
+ bb.note('Excluded %s from sdk layers since it is in SDK_LAYERS_EXCLUDE' % layer_exclude)
layers.remove(layer_exclude)
+ if self.layers_exclude_pattern:
+ layers_cp = layers[:]
+ for pattern in self.layers_exclude_pattern.split():
+ for layer in layers_cp:
+ if re.match(pattern, layer):
+ bb.note('Excluded %s from sdk layers since matched SDK_LAYERS_EXCLUDE_PATTERN' % layer)
+ layers.remove(layer)
+
workspace_newname = workspace_name
if workspace_newname:
layernames = [os.path.basename(layer) for layer in layers]
@@ -84,17 +103,18 @@ class BuildSystem(object):
layer_relative = os.path.relpath(layerdestpath,
destdir)
- layers_copied.append(layer_relative)
-
# Treat corebase as special since it typically will contain
# build directories or other custom items.
if corebase == layer:
+ copied_corebase = layer_relative
bb.utils.mkdirhier(layerdestpath)
for f in corebase_files:
f_basename = os.path.basename(f)
destname = os.path.join(layerdestpath, f_basename)
_smart_copy(f, destname)
else:
+ layers_copied.append(layer_relative)
+
if os.path.exists(os.path.join(layerdestpath, 'conf/layer.conf')):
bb.note("Skipping layer %s, already handled" % layer)
else:
@@ -140,7 +160,7 @@ class BuildSystem(object):
layers_copied.remove(layer)
break
- return layers_copied
+ return copied_corebase, layers_copied
def generate_locked_sigs(sigfile, d):
bb.utils.mkdirhier(os.path.dirname(sigfile))
diff --git a/meta/lib/oe/elf.py b/meta/lib/oe/elf.py
new file mode 100644
index 00000000000..0ed59ae05c1
--- /dev/null
+++ b/meta/lib/oe/elf.py
@@ -0,0 +1,128 @@
+def machine_dict(d):
+# TARGET_OS TARGET_ARCH MACHINE, OSABI, ABIVERSION, Little Endian, 32bit?
+ machdata = {
+ "darwin9" : {
+ "arm" : (40, 0, 0, True, 32),
+ },
+ "eabi" : {
+ "arm" : (40, 0, 0, True, 32),
+ },
+ "elf" : {
+ "aarch64" : (183, 0, 0, True, 64),
+ "aarch64_be" :(183, 0, 0, False, 64),
+ "i586" : (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),
+ "riscv64": (243, 0, 0, True, 64),
+ },
+ "linux" : {
+ "aarch64" : (183, 0, 0, True, 64),
+ "aarch64_be" :(183, 0, 0, False, 64),
+ "arm" : (40, 97, 0, True, 32),
+ "armeb": (40, 97, 0, False, 32),
+ "powerpc": (20, 0, 0, False, 32),
+ "powerpc64": (21, 0, 0, False, 64),
+ "i386": ( 3, 0, 0, True, 32),
+ "i486": ( 3, 0, 0, True, 32),
+ "i586": ( 3, 0, 0, True, 32),
+ "i686": ( 3, 0, 0, True, 32),
+ "x86_64": (62, 0, 0, True, 64),
+ "ia64": (50, 0, 0, True, 64),
+ "alpha": (36902, 0, 0, True, 64),
+ "hppa": (15, 3, 0, False, 32),
+ "m68k": ( 4, 0, 0, False, 32),
+ "mips": ( 8, 0, 0, False, 32),
+ "mipsel": ( 8, 0, 0, True, 32),
+ "mips64": ( 8, 0, 0, False, 64),
+ "mips64el": ( 8, 0, 0, True, 64),
+ "mipsisa32r6": ( 8, 0, 0, False, 32),
+ "mipsisa32r6el": ( 8, 0, 0, True, 32),
+ "mipsisa64r6": ( 8, 0, 0, False, 64),
+ "mipsisa64r6el": ( 8, 0, 0, True, 64),
+ "nios2": (113, 0, 0, True, 32),
+ "riscv32": (243, 0, 0, True, 32),
+ "riscv64": (243, 0, 0, True, 64),
+ "s390": (22, 0, 0, False, 32),
+ "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-musl" : {
+ "aarch64" : (183, 0, 0, True, 64),
+ "aarch64_be" :(183, 0, 0, False, 64),
+ "arm" : ( 40, 97, 0, True, 32),
+ "armeb": ( 40, 97, 0, False, 32),
+ "powerpc": ( 20, 0, 0, False, 32),
+ "i386": ( 3, 0, 0, True, 32),
+ "i486": ( 3, 0, 0, True, 32),
+ "i586": ( 3, 0, 0, True, 32),
+ "i686": ( 3, 0, 0, True, 32),
+ "x86_64": ( 62, 0, 0, True, 64),
+ "mips": ( 8, 0, 0, False, 32),
+ "mipsel": ( 8, 0, 0, True, 32),
+ "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),
+ "sh4": ( 42, 0, 0, True, 32),
+ },
+ "uclinux-uclibc" : {
+ "bfin": ( 106, 0, 0, True, 32),
+ },
+ "linux-gnueabi" : {
+ "arm" : (40, 0, 0, True, 32),
+ "armeb" : (40, 0, 0, False, 32),
+ },
+ "linux-musleabi" : {
+ "arm" : (40, 0, 0, True, 32),
+ "armeb" : (40, 0, 0, False, 32),
+ },
+ "linux-gnuspe" : {
+ "powerpc": (20, 0, 0, False, 32),
+ },
+ "linux-muslspe" : {
+ "powerpc": (20, 0, 0, False, 32),
+ },
+ "linux-gnu" : {
+ "powerpc": (20, 0, 0, False, 32),
+ "sh4": (42, 0, 0, True, 32),
+ },
+ "linux-gnu_ilp32" : {
+ "aarch64" : (183, 0, 0, True, 32),
+ },
+ "linux-gnux32" : {
+ "x86_64": (62, 0, 0, True, 32),
+ },
+ "linux-muslx32" : {
+ "x86_64": (62, 0, 0, True, 32),
+ },
+ "linux-gnun32" : {
+ "mips64": ( 8, 0, 0, False, 32),
+ "mips64el": ( 8, 0, 0, True, 32),
+ "mipsisa64r6": ( 8, 0, 0, False, 32),
+ "mipsisa64r6el":( 8, 0, 0, True, 32),
+ },
+ }
+
+ # Add in any extra user supplied data which may come from a BSP layer, removing the
+ # need to always change this class directly
+ extra_machdata = (d and d.getVar("PACKAGEQA_EXTRA_MACHDEFFUNCS" or None) or "").split()
+ for m in extra_machdata:
+ call = m + "(machdata, d)"
+ locs = { "machdata" : machdata, "d" : d}
+ machdata = bb.utils.better_eval(call, locs)
+
+ return machdata
diff --git a/meta/lib/oe/gpg_sign.py b/meta/lib/oe/gpg_sign.py
index b17272928fc..ccd5aee4207 100644
--- a/meta/lib/oe/gpg_sign.py
+++ b/meta/lib/oe/gpg_sign.py
@@ -3,6 +3,8 @@ import os
import bb
import oe.utils
+import subprocess
+import shlex
class LocalSigner(object):
"""Class for handling local (on the build host) signing"""
@@ -23,10 +25,7 @@ class LocalSigner(object):
if armor:
cmd += "--armor "
cmd += keyid
- status, output = oe.utils.getstatusoutput(cmd)
- if status:
- raise bb.build.FuncFailed('Failed to export gpg public key (%s): %s' %
- (keyid, output))
+ subprocess.check_output(shlex.split(cmd), stderr=subprocess.STDOUT)
def sign_rpms(self, files, keyid, passphrase, digest, sign_chunk, fsk=None, fsk_password=None):
"""Sign RPM files"""
@@ -48,13 +47,10 @@ class LocalSigner(object):
# Sign in chunks
for i in range(0, len(files), sign_chunk):
- status, output = oe.utils.getstatusoutput(cmd + ' '.join(files[i:i+sign_chunk]))
- if status:
- raise bb.build.FuncFailed("Failed to sign RPM packages: %s" % output)
+ subprocess.check_output(shlex.split(cmd + ' '.join(files[i:i+sign_chunk])), stderr=subprocess.STDOUT)
def detach_sign(self, input_file, keyid, passphrase_file, passphrase=None, armor=True):
"""Create a detached signature of a file"""
- import subprocess
if passphrase_file and passphrase:
raise Exception("You should use either passphrase_file of passphrase, not both")
@@ -100,7 +96,6 @@ class LocalSigner(object):
def get_gpg_version(self):
"""Return the gpg version as a tuple of ints"""
- import subprocess
try:
ver_str = subprocess.check_output((self.gpg_bin, "--version", "--no-permission-warning")).split()[2].decode("utf-8")
return tuple([int(i) for i in ver_str.split("-")[0].split('.')])
@@ -114,7 +109,7 @@ class LocalSigner(object):
if self.gpg_path:
cmd += "--homedir %s " % self.gpg_path
cmd += sig_file
- status, _ = oe.utils.getstatusoutput(cmd)
+ status = subprocess.call(shlex.split(cmd))
ret = False if status else True
return ret
diff --git a/meta/lib/oe/maketype.py b/meta/lib/oe/maketype.py
index f88981dd902..c36e7b56046 100644
--- a/meta/lib/oe/maketype.py
+++ b/meta/lib/oe/maketype.py
@@ -7,7 +7,12 @@ the arguments of the type's factory for details.
import inspect
import oe.types as types
-import collections
+try:
+ # Python 3.7+
+ from collections.abc import Callable
+except ImportError:
+ # Python < 3.7
+ from collections import Callable
available_types = {}
@@ -96,7 +101,7 @@ for name in dir(types):
continue
obj = getattr(types, name)
- if not isinstance(obj, collections.Callable):
+ if not isinstance(obj, Callable):
continue
register(name, obj)
diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py
index 4f3e21ad40f..efd36b3758d 100644
--- a/meta/lib/oe/package.py
+++ b/meta/lib/oe/package.py
@@ -1,15 +1,17 @@
+import stat
+import mmap
+import subprocess
+
def runstrip(arg):
# Function to strip a single file, called from split_and_strip_files below
# A working 'file' (one which works on the target architecture)
#
- # The elftype is a bit pattern (explained in split_and_strip_files) to tell
+ # The elftype is a bit pattern (explained in is_elf below) to tell
# us what type of file we're processing...
# 4 - executable
# 8 - shared library
# 16 - kernel module
- import stat, subprocess
-
(file, elftype, strip) = arg
newmode = None
@@ -19,11 +21,15 @@ def runstrip(arg):
os.chmod(file, newmode)
stripcmd = [strip]
-
+ skip_strip = False
# kernel module
if elftype & 16:
- stripcmd.extend(["--strip-debug", "--remove-section=.comment",
- "--remove-section=.note", "--preserve-dates"])
+ if is_kernel_module_signed(file):
+ bb.debug(1, "Skip strip on signed module %s" % file)
+ skip_strip = True
+ else:
+ stripcmd.extend(["--strip-debug", "--remove-section=.comment",
+ "--remove-section=.note", "--preserve-dates"])
# .so and shared library
elif ".so" in file and elftype & 8:
stripcmd.extend(["--remove-section=.comment", "--remove-section=.note", "--strip-unneeded"])
@@ -34,18 +40,59 @@ def runstrip(arg):
stripcmd.append(file)
bb.debug(1, "runstrip: %s" % stripcmd)
- try:
+ if not skip_strip:
output = subprocess.check_output(stripcmd, stderr=subprocess.STDOUT)
- except subprocess.CalledProcessError as e:
- bb.error("runstrip: '%s' strip command failed with %s (%s)" % (stripcmd, e.returncode, e.output))
if newmode:
os.chmod(file, origmode)
- return
-
-
-def strip_execs(pn, dstdir, strip_cmd, libdir, base_libdir, qa_already_stripped=False):
+# Detect .ko module by searching for "vermagic=" string
+def is_kernel_module(path):
+ with open(path) as f:
+ return mmap.mmap(f.fileno(), 0, prot=mmap.PROT_READ).find(b"vermagic=") >= 0
+
+# Detect if .ko module is signed
+def is_kernel_module_signed(path):
+ with open(path, "rb") as f:
+ f.seek(-28, 2)
+ module_tail = f.read()
+ return "Module signature appended" in "".join(chr(c) for c in bytearray(module_tail))
+
+# Return type (bits):
+# 0 - not elf
+# 1 - ELF
+# 2 - stripped
+# 4 - executable
+# 8 - shared library
+# 16 - kernel module
+def is_elf(path):
+ exec_type = 0
+ result = subprocess.check_output(["file", "-b", path], stderr=subprocess.STDOUT).decode("utf-8")
+
+ if "ELF" in result:
+ exec_type |= 1
+ if "not stripped" not in result:
+ exec_type |= 2
+ if "executable" in result:
+ exec_type |= 4
+ if "shared" in result:
+ exec_type |= 8
+ if "relocatable" in result:
+ if path.endswith(".ko") and path.find("/lib/modules/") != -1 and is_kernel_module(path):
+ exec_type |= 16
+ return (path, exec_type)
+
+def is_static_lib(path):
+ if path.endswith('.a') and not os.path.islink(path):
+ with open(path, 'rb') as fh:
+ # The magic must include the first slash to avoid
+ # matching golang static libraries
+ magic = b'!<arch>\x0a/'
+ start = fh.read(len(magic))
+ return start == magic
+ return False
+
+def strip_execs(pn, dstdir, strip_cmd, libdir, base_libdir, d, qa_already_stripped=False):
"""
Strip executable code (like executables, shared libraries) _in_place_
- Based on sysroot_strip in staging.bbclass
@@ -56,39 +103,7 @@ def strip_execs(pn, dstdir, strip_cmd, libdir, base_libdir, qa_already_stripped=
:param qa_already_stripped: Set to True if already-stripped' in ${INSANE_SKIP}
This is for proper logging and messages only.
"""
- import stat, errno, oe.path, oe.utils, mmap
-
- # Detect .ko module by searching for "vermagic=" string
- def is_kernel_module(path):
- with open(path) as f:
- return mmap.mmap(f.fileno(), 0, prot=mmap.PROT_READ).find(b"vermagic=") >= 0
-
- # Return type (bits):
- # 0 - not elf
- # 1 - ELF
- # 2 - stripped
- # 4 - executable
- # 8 - shared library
- # 16 - kernel module
- def is_elf(path):
- exec_type = 0
- ret, result = oe.utils.getstatusoutput("file -b '%s'" % path)
-
- if ret:
- bb.error("split_and_strip_files: 'file %s' failed" % path)
- return exec_type
-
- if "ELF" in result:
- exec_type |= 1
- if "not stripped" not in result:
- exec_type |= 2
- if "executable" in result:
- exec_type |= 4
- if "shared" in result:
- exec_type |= 8
- if "relocatable" in result and is_kernel_module(path):
- exec_type |= 16
- return exec_type
+ import stat, errno, oe.path, oe.utils
elffiles = {}
inodes = {}
@@ -98,6 +113,8 @@ def strip_execs(pn, dstdir, strip_cmd, libdir, base_libdir, qa_already_stripped=
#
# First lets figure out all of the files we may have to process
#
+ checkelf = []
+ inodecache = {}
for root, dirs, files in os.walk(dstdir):
for f in files:
file = os.path.join(root, f)
@@ -123,7 +140,11 @@ def strip_execs(pn, dstdir, strip_cmd, libdir, base_libdir, qa_already_stripped=
# It's a file (or hardlink), not a link
# ...but is it ELF, and is it already stripped?
- elf_file = is_elf(file)
+ checkelf.append(file)
+ inodecache[file] = s.st_ino
+ results = oe.utils.multiprocess_launch(is_elf, checkelf, d)
+ for (file, elf_file) in results:
+ #elf_file = is_elf(file)
if elf_file & 1:
if elf_file & 2:
if qa_already_stripped:
@@ -132,13 +153,13 @@ def strip_execs(pn, dstdir, strip_cmd, libdir, base_libdir, qa_already_stripped=
bb.warn("File '%s' from %s was already stripped, this will prevent future debugging!" % (file[len(dstdir):], pn))
continue
- if s.st_ino in inodes:
+ if inodecache[file] in inodes:
os.unlink(file)
- os.link(inodes[s.st_ino], file)
+ os.link(inodes[inodecache[file]], file)
else:
# break hardlinks so that we do not strip the original.
- inodes[s.st_ino] = file
- bb.utils.copyfile(file, file)
+ inodes[inodecache[file]] = file
+ bb.utils.break_hardlinks(file)
elffiles[file] = elf_file
#
@@ -149,8 +170,7 @@ def strip_execs(pn, dstdir, strip_cmd, libdir, base_libdir, qa_already_stripped=
elf_file = int(elffiles[file])
sfiles.append((file, elf_file, strip_cmd))
- oe.utils.multiprocess_exec(sfiles, runstrip)
-
+ oe.utils.multiprocess_launch(runstrip, sfiles, d)
def file_translate(file):
diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index 2d8aeba037c..8f4b42b0daa 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -3,7 +3,6 @@ import os
import glob
import subprocess
import shutil
-import multiprocessing
import re
import collections
import bb
@@ -13,6 +12,7 @@ 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):
@@ -84,12 +84,55 @@ def opkg_query(cmd_output):
return output
-# Note: this should be bb.fatal in the future.
-def failed_postinsts_warn(pkgs, log_path):
- bb.warn("""Intentionally failing postinstall scriptlets of %s to defer them to first boot is deprecated. Please place them into pkg_postinst_ontarget_${PN} ().
-If deferring to first boot wasn't the intent, then scriptlet failure may mean an issue in the recipe, or a regression elsewhere.
+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 = { \
+ "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
@@ -177,7 +220,7 @@ class OpkgIndexer(Indexer):
bb.note("There are no packages in %s!" % self.deploy_dir)
return
- oe.utils.multiprocess_exec(index_cmds, create_index)
+ oe.utils.multiprocess_launch(create_index, index_cmds, self.d)
if signer:
feed_sig_type = self.d.getVar('PACKAGE_FEED_GPG_SIGNATURE_TYPE')
@@ -258,7 +301,7 @@ class DpkgIndexer(Indexer):
bb.note("There are no packages in %s" % self.deploy_dir)
return
- oe.utils.multiprocess_exec(index_cmds, create_index)
+ 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')
@@ -336,17 +379,24 @@ class PackageManager(object, metaclass=ABCMeta):
def _initialize_intercepts(self):
bb.note("Initializing intercept dir for %s" % self.target_rootfs)
- postinst_intercepts_dir = self.d.getVar("POSTINST_INTERCEPTS_DIR")
- if not postinst_intercepts_dir:
- postinst_intercepts_dir = self.d.expand("${COREBASE}/scripts/postinst-intercepts")
# 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()) )
+ 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)
- shutil.copytree(postinst_intercepts_dir, self.intercepts_dir)
+ 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):
@@ -370,7 +420,7 @@ class PackageManager(object, metaclass=ABCMeta):
self._handle_intercept_failure(registered_pkgs)
- def run_intercepts(self):
+ def run_intercepts(self, populate_sdk=None):
intercepts_dir = self.intercepts_dir
bb.note("Running intercept scripts:")
@@ -382,7 +432,8 @@ class PackageManager(object, metaclass=ABCMeta):
if script == "postinst_intercept" or not os.access(script_full, os.X_OK):
continue
- if script == "delay_to_first_boot":
+ # 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
@@ -392,9 +443,22 @@ class PackageManager(object, metaclass=ABCMeta):
output = subprocess.check_output(script_full, stderr=subprocess.STDOUT)
if output: bb.note(output.decode("utf-8"))
except subprocess.CalledProcessError as e:
- bb.warn("The postinstall intercept hook '%s' failed, details in %s/log.do_%s" % (script, self.d.getVar('T'), self.d.getVar('BB_CURRENTTASK')))
bb.note("Exit code %d. Output:\n%s" % (e.returncode, e.output.decode("utf-8")))
- self._postpone_to_first_boot(script_full)
+ if populate_sdk == 'host':
+ bb.warn("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.warn("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):
@@ -523,6 +587,13 @@ class PackageManager(object, metaclass=ABCMeta):
"'%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!")
@@ -559,7 +630,7 @@ class PackageManager(object, metaclass=ABCMeta):
return res
return _append(uris, base_paths)
-def create_packages_dir(d, rpm_repo_dir, deploydir, taskname, filterbydependencies):
+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
@@ -574,15 +645,13 @@ def create_packages_dir(d, rpm_repo_dir, deploydir, taskname, filterbydependenci
seendirs = set()
multilibs = {}
- rpm_subrepo_dir = oe.path.join(rpm_repo_dir, "rpm")
-
- bb.utils.remove(rpm_subrepo_dir, recurse=True)
- bb.utils.mkdirhier(rpm_subrepo_dir)
+ 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, rpm_subrepo_dir, True)
+ oe.path.symlink(deploydir, subrepo_dir, True)
return
start = None
@@ -593,24 +662,24 @@ def create_packages_dir(d, rpm_repo_dir, deploydir, taskname, filterbydependenci
break
if start is None:
bb.fatal("Couldn't find ourself in BB_TASKDEPDATA?")
- rpmdeps = set()
+ pkgdeps = set()
start = [start]
seen = set(start)
- # Support direct dependencies (do_rootfs -> rpms)
- # or indirect dependencies within PN (do_populate_sdk_ext -> do_rootfs -> rpms)
+ # 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:
- rpmdeps.add(dep)
+ pkgdeps.add(dep)
elif dep not in seen:
next.append(dep)
seen.add(dep)
start = next
- for dep in rpmdeps:
+ 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:
@@ -620,8 +689,9 @@ def create_packages_dir(d, rpm_repo_dir, deploydir, taskname, filterbydependenci
with open(manifest, "r") as f:
for l in f:
l = l.strip()
+ deploydir = os.path.normpath(deploydir)
dest = l.replace(deploydir, "")
- dest = rpm_subrepo_dir + dest
+ dest = subrepo_dir + dest
if l.endswith("/"):
if dest not in seendirs:
bb.utils.mkdirhier(dest)
@@ -663,12 +733,12 @@ class RpmPM(PackageManager):
self.primary_arch = self.d.getVar('MACHINE_ARCH')
self.rpm_repo_dir = oe.path.join(self.d.getVar('WORKDIR'), rpm_repo_workdir)
- create_packages_dir(self.d, self.rpm_repo_dir, d.getVar("DEPLOY_DIR_RPM"), "package_write_rpm", filterbydependencies)
+ 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 = ['var/lib/rpm', 'var/lib/dnf', 'var/cache/dnf']
+ 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')):
@@ -697,7 +767,9 @@ class RpmPM(PackageManager):
rpmrcconfdir = "%s/%s" %(self.target_rootfs, "etc/")
bb.utils.mkdirhier(platformconfdir)
open(platformconfdir + "platform", 'w').write("%s-pc-linux" % self.primary_arch)
- open(rpmrcconfdir + "rpmrc", 'w').write("arch_compat: %s: %s\n" % (self.primary_arch, self.archs if len(self.archs) > 0 else 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'):
@@ -789,9 +861,7 @@ class RpmPM(PackageManager):
failed_scriptlets_pkgnames[line.split()[-1]] = True
if len(failed_scriptlets_pkgnames) > 0:
- failed_postinsts_warn(list(failed_scriptlets_pkgnames.keys()), self.d.expand("${T}/log.do_${BB_CURRENTTASK}"))
- for pkg in failed_scriptlets_pkgnames.keys():
- self.save_rpmpostinst(pkg)
+ failed_postinsts_abort(list(failed_scriptlets_pkgnames.keys()), self.d.expand("${T}/log.do_${BB_CURRENTTASK}"))
def remove(self, pkgs, with_dependencies = True):
if len(pkgs) == 0:
@@ -832,7 +902,10 @@ class RpmPM(PackageManager):
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)
- shutil.copytree(source_dir, target_dir, symlinks=True)
+ 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
@@ -842,9 +915,10 @@ class RpmPM(PackageManager):
if os.path.exists(target_dir):
bb.utils.remove(target_dir, True)
source_dir = oe.path.join(self.saved_packaging_data, i)
- shutil.copytree(source_dir,
- target_dir,
- symlinks=True)
+ 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"],
@@ -884,7 +958,7 @@ class RpmPM(PackageManager):
os.environ['RPM_ETCCONFIGDIR'] = self.target_rootfs
dnf_cmd = bb.utils.which(os.getenv('PATH'), "dnf")
- standard_dnf_args = (["-v", "--rpmverbosity=debug"] if self.d.getVar('ROOTFS_RPM_DEBUG') else []) + ["-y",
+ standard_dnf_args = ["-v", "--rpmverbosity=debug", "-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")),
"--repofrompath=oe-repo,%s" % (self.rpm_repo_dir),
@@ -896,7 +970,7 @@ class RpmPM(PackageManager):
try:
output = subprocess.check_output(cmd,stderr=subprocess.STDOUT).decode("utf-8")
if print_output:
- bb.note(output)
+ bb.debug(1, output)
return output
except subprocess.CalledProcessError as e:
if print_output:
@@ -1060,19 +1134,22 @@ class OpkgDpkgPM(PackageManager):
self.mark_packages("unpacked", registered_pkgs.split())
class OpkgPM(OpkgDpkgPM):
- def __init__(self, d, target_rootfs, config_file, archs, task_name='target'):
+ 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 = self.d.getVar("DEPLOY_DIR_IPK")
+ 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:]
@@ -1265,7 +1342,7 @@ class OpkgPM(OpkgDpkgPM):
bb.warn(line)
failed_pkgs.append(line.split(".")[0])
if failed_pkgs:
- failed_postinsts_warn(failed_pkgs, self.d.expand("${T}/log.do_${BB_CURRENTTASK}"))
+ 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" %
@@ -1437,9 +1514,12 @@ class OpkgPM(OpkgDpkgPM):
return tmp_dir
class DpkgPM(OpkgDpkgPM):
- def __init__(self, d, target_rootfs, archs, base_archs, apt_conf_dir=None):
+ 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 = self.d.getVar('DEPLOY_DIR_DEB')
+ 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:
@@ -1515,7 +1595,6 @@ class DpkgPM(OpkgDpkgPM):
os.environ['INTERCEPT_DIR'] = self.intercepts_dir
os.environ['NATIVE_ROOT'] = self.d.getVar('STAGING_DIR_NATIVE')
- failed_pkgs = []
for pkg_name in installed_pkgs:
for control_script in control_scripts:
p_full = os.path.join(info_dir, pkg_name + control_script.suffix)
@@ -1530,12 +1609,7 @@ class DpkgPM(OpkgDpkgPM):
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_warn([pkg_name], self.d.expand("${T}/log.do_${BB_CURRENTTASK}"))
- failed_pkgs.append(pkg_name)
- break
-
- if len(failed_pkgs):
- self.mark_packages("unpacked", failed_pkgs)
+ failed_postinsts_abort([pkg_name], self.d.expand("${T}/log.do_${BB_CURRENTTASK}"))
def update(self):
os.environ['APT_CONFIG'] = self.apt_conf_file
diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
index af7aa523515..e0f0604251a 100644
--- a/meta/lib/oe/patch.py
+++ b/meta/lib/oe/patch.py
@@ -21,6 +21,7 @@ class CmdError(bb.BBHandledException):
def runcmd(args, dir = None):
import pipes
+ import subprocess
if dir:
olddir = os.path.abspath(os.curdir)
@@ -33,7 +34,7 @@ def runcmd(args, dir = None):
args = [ pipes.quote(str(arg)) for arg in args ]
cmd = " ".join(args)
# print("cmd: %s" % cmd)
- (exitstatus, output) = oe.utils.getstatusoutput(cmd)
+ (exitstatus, output) = subprocess.getstatusoutput(cmd)
if exitstatus != 0:
raise CmdError(cmd, exitstatus >> 8, output)
if " fuzz " in output:
diff --git a/meta/lib/oe/path.py b/meta/lib/oe/path.py
index 76c58fa7601..1e24d0586b6 100644
--- a/meta/lib/oe/path.py
+++ b/meta/lib/oe/path.py
@@ -86,7 +86,7 @@ def copytree(src, dst):
# This way we also preserve hardlinks between files in the tree.
bb.utils.mkdirhier(dst)
- cmd = "tar --xattrs --xattrs-include='*' -cf - -C %s -p . | tar --xattrs --xattrs-include='*' -xf - -C %s" % (src, dst)
+ cmd = "tar --xattrs --xattrs-include='*' -cf - -S -C %s -p . | tar --xattrs --xattrs-include='*' -xf - -C %s" % (src, dst)
subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
def copyhardlinktree(src, dst):
@@ -98,7 +98,7 @@ def copyhardlinktree(src, dst):
if (os.stat(src).st_dev == os.stat(dst).st_dev):
# 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 - -C %s -p --no-recursion --files-from - | tar --xattrs --xattrs-include='*' -xhf - -C %s" % (src, src, dst)
+ 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)
subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
source = ''
if os.path.isdir(src):
@@ -259,3 +259,37 @@ def is_path_parent(possible_parent, *paths):
if not path_abs.startswith(possible_parent_abs):
return False
return True
+
+def which_wild(pathname, path=None, mode=os.F_OK, *, reverse=False, candidates=False):
+ """Search a search path for pathname, supporting wildcards.
+
+ Return all paths in the specific search path matching the wildcard pattern
+ in pathname, returning only the first encountered for each file. If
+ candidates is True, information on all potential candidate paths are
+ included.
+ """
+ paths = (path or os.environ.get('PATH', os.defpath)).split(':')
+ if reverse:
+ paths.reverse()
+
+ seen, files = set(), []
+ for index, element in enumerate(paths):
+ if not os.path.isabs(element):
+ element = os.path.abspath(element)
+
+ candidate = os.path.join(element, pathname)
+ globbed = glob.glob(candidate)
+ if globbed:
+ for found_path in sorted(globbed):
+ if not os.access(found_path, mode):
+ continue
+ rel = os.path.relpath(found_path, element)
+ if rel not in seen:
+ seen.add(rel)
+ if candidates:
+ files.append((found_path, [os.path.join(p, rel) for p in paths[:index+1]]))
+ else:
+ files.append(found_path)
+
+ return files
+
diff --git a/meta/lib/oe/qa.py b/meta/lib/oe/qa.py
index 3231e60cead..59c72ce5807 100644
--- a/meta/lib/oe/qa.py
+++ b/meta/lib/oe/qa.py
@@ -158,7 +158,8 @@ def elf_machine_to_string(machine):
0x2A: "SuperH",
0x32: "IA-64",
0x3E: "x86-64",
- 0xB7: "AArch64"
+ 0xB7: "AArch64",
+ 0xF7: "BPF"
}[machine]
except:
return "Unknown (%s)" % repr(machine)
diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py
index f8f717c0505..ddda552263d 100644
--- a/meta/lib/oe/rootfs.py
+++ b/meta/lib/oe/rootfs.py
@@ -144,6 +144,10 @@ class Rootfs(object, metaclass=ABCMeta):
bb.note(" Install complementary '*-dbg' packages...")
self.pm.install_complementary('*-dbg')
+ if self.d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-with-srcpkg':
+ bb.note(" Install complementary '*-src' packages...")
+ self.pm.install_complementary('*-src')
+
bb.note(" Rename debug rootfs...")
try:
shutil.rmtree(self.image_rootfs + '-dbg')
@@ -472,7 +476,8 @@ class RpmRootfs(Rootfs):
self._log_check_error()
def _cleanup(self):
- self.pm._invoke_dnf(["clean", "all"])
+ if bb.utils.contains("IMAGE_FEATURES", "package-management", True, False, self.d):
+ self.pm._invoke_dnf(["clean", "all"])
class DpkgOpkgRootfs(Rootfs):
@@ -560,6 +565,9 @@ class DpkgOpkgRootfs(Rootfs):
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)
@@ -782,7 +790,7 @@ class OpkgRootfs(DpkgOpkgRootfs):
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)
+ ml_pm = OpkgPM(self.d, ml_target_rootfs, ml_opkg_conf, self.pkg_archs, prepare_index=False)
ml_pm.update()
ml_pm.install(pkgs)
@@ -849,9 +857,8 @@ class OpkgRootfs(DpkgOpkgRootfs):
opkg_pre_process_cmds = self.d.getVar('OPKG_PREPROCESS_COMMANDS')
opkg_post_process_cmds = self.d.getVar('OPKG_POSTPROCESS_COMMANDS')
- # update PM index files, unless users provide their own feeds
- if (self.d.getVar('BUILD_IMAGES_FROM_FEEDS') or "") != "1":
- self.pm.write_index()
+ # update PM index files
+ self.pm.write_index()
execute_pre_post_process(self.d, opkg_pre_process_cmds)
diff --git a/meta/lib/oe/sdk.py b/meta/lib/oe/sdk.py
index d6a503372a3..153b07d76b4 100644
--- a/meta/lib/oe/sdk.py
+++ b/meta/lib/oe/sdk.py
@@ -7,52 +7,6 @@ import shutil
import glob
import traceback
-def generate_locale_archive(d, rootfs):
- # Pretty sure we don't need this for SDK archive generation but
- # keeping it to be safe...
- target_arch = d.getVar('SDK_ARCH')
- locale_arch_options = { \
- "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"],
- "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")
-
- localedir = oe.path.join(rootfs, d.getVar("libdir_nativesdk"), "locale")
- # 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):
- try:
- cmd = ["cross-localedef", "--verbose"]
- cmd += arch_options
- cmd += ["--add-to-archive", path]
- subprocess.check_output(cmd, env=env, stderr=subprocess.STDOUT)
- except Exception as e:
- bb.fatal("Cannot create locale archive: %s" % e.output)
-
class Sdk(object, metaclass=ABCMeta):
def __init__(self, d, manifest_dir):
self.d = d
@@ -144,7 +98,10 @@ class Sdk(object, metaclass=ABCMeta):
for lang in linguas.split():
pm.install("nativesdk-glibc-binary-localedata-%s.utf-8" % lang)
# Generate a locale archive of them
- generate_locale_archive(self.d, oe.path.join(self.sdk_host_sysroot, self.sdk_native_path))
+ target_arch = self.d.getVar('SDK_ARCH')
+ rootfs = oe.path.join(self.sdk_host_sysroot, self.sdk_native_path)
+ localedir = oe.path.join(rootfs, self.d.getVar("libdir_nativesdk"), "locale")
+ generate_locale_archive(self.d, rootfs, target_arch, localedir)
# And now delete the binary locales
pkgs = fnmatch.filter(pm.list_installed(), "nativesdk-glibc-binary-localedata-*.utf-8")
pm.remove(pkgs)
@@ -209,7 +166,7 @@ class RpmSdk(Sdk):
self.target_pm.install_complementary(self.d.getVar('SDKIMAGE_INSTALL_COMPLEMENTARY'))
- self.target_pm.run_intercepts()
+ self.target_pm.run_intercepts(populate_sdk='target')
execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_TARGET_COMMAND"))
@@ -220,7 +177,7 @@ class RpmSdk(Sdk):
self._populate_sysroot(self.host_pm, self.host_manifest)
self.install_locales(self.host_pm)
- self.host_pm.run_intercepts()
+ self.host_pm.run_intercepts(populate_sdk='host')
execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_HOST_COMMAND"))
@@ -270,11 +227,17 @@ class OpkgSdk(Sdk):
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"))
+ 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"))
+ 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()
@@ -297,7 +260,7 @@ class OpkgSdk(Sdk):
self.target_pm.install_complementary(self.d.getVar('SDKIMAGE_INSTALL_COMPLEMENTARY'))
- self.target_pm.run_intercepts()
+ self.target_pm.run_intercepts(populate_sdk='target')
execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_TARGET_COMMAND"))
@@ -308,7 +271,7 @@ class OpkgSdk(Sdk):
self._populate_sysroot(self.host_pm, self.host_manifest)
self.install_locales(self.host_pm)
- self.host_pm.run_intercepts()
+ self.host_pm.run_intercepts(populate_sdk='host')
execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_HOST_COMMAND"))
@@ -350,15 +313,21 @@ class DpkgSdk(Sdk):
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)
+ 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)
+ 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")
@@ -386,7 +355,7 @@ class DpkgSdk(Sdk):
self.target_pm.install_complementary(self.d.getVar('SDKIMAGE_INSTALL_COMPLEMENTARY'))
- self.target_pm.run_intercepts()
+ self.target_pm.run_intercepts(populate_sdk='target')
execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_TARGET_COMMAND"))
@@ -399,7 +368,7 @@ class DpkgSdk(Sdk):
self._populate_sysroot(self.host_pm, self.host_manifest)
self.install_locales(self.host_pm)
- self.host_pm.run_intercepts()
+ self.host_pm.run_intercepts(populate_sdk='host')
execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_HOST_COMMAND"))
diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py
index b82e0f422ee..18c5a353a2a 100644
--- a/meta/lib/oe/sstatesig.py
+++ b/meta/lib/oe/sstatesig.py
@@ -45,7 +45,7 @@ def sstate_rundepfilter(siggen, fn, recipename, task, dep, depname, dataCache):
# 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):
- return False
+ return False
# Exclude well defined machine specific configurations which don't change ABI
if depname in siggen.abisaferecipes and not isImage(fn):
@@ -150,16 +150,23 @@ class SignatureGeneratorOEBasicHash(bb.siggen.SignatureGeneratorBasicHash):
if recipename in self.unlockedrecipes:
unlocked = True
else:
+ def get_mc(tid):
+ tid = tid.rsplit('.', 1)[0]
+ if tid.startswith('multiconfig:'):
+ elems = tid.split(':')
+ return elems[1]
def recipename_from_dep(dep):
# The dep entry will look something like
# /path/path/recipename.bb.task, virtual:native:/p/foo.bb.task,
# ...
+
fn = dep.rsplit('.', 1)[0]
return dataCache.pkg_fn[fn]
+ mc = get_mc(fn)
# If any unlocked recipe is in the direct dependencies then the
# current recipe should be unlocked as well.
- depnames = [ recipename_from_dep(x) for x in deps ]
+ depnames = [ recipename_from_dep(x) for x in deps if mc == get_mc(x)]
if any(x in y for y in depnames for x in self.unlockedrecipes):
self.unlockedrecipes[recipename] = ''
unlocked = True
@@ -372,8 +379,14 @@ def sstate_get_manifest_filename(task, d):
def find_sstate_manifest(taskdata, taskdata2, taskname, d, multilibcache):
d2 = d
variant = ''
+ curr_variant = ''
+ if d.getVar("BBEXTENDCURR") == "multilib":
+ curr_variant = d.getVar("BBEXTENDVARIANT")
+ if "virtclass-multilib" not in d.getVar("OVERRIDES"):
+ curr_variant = "invalid"
if taskdata2.startswith("virtual:multilib"):
variant = taskdata2.split(":")[2]
+ if curr_variant != variant:
if variant not in multilibcache:
multilibcache[variant] = oe.utils.get_multilib_datastore(variant, d)
d2 = multilibcache[variant]
diff --git a/meta/lib/oe/terminal.py b/meta/lib/oe/terminal.py
index 94afe394ed1..caeb5e31ec9 100644
--- a/meta/lib/oe/terminal.py
+++ b/meta/lib/oe/terminal.py
@@ -112,7 +112,7 @@ class Screen(Terminal):
bb.event.fire(bb.event.LogExecTTY(msg, "screen -r %s" % s_id,
0.5, 10), d)
else:
- logger.warn(msg)
+ logger.warning(msg)
class TmuxRunning(Terminal):
"""Open a new pane in the current running tmux window"""
@@ -168,7 +168,7 @@ class Tmux(Terminal):
if d:
bb.event.fire(bb.event.LogExecTTY(msg, attach_cmd, 0.5, 10), d)
else:
- logger.warn(msg)
+ logger.warning(msg)
class Custom(Terminal):
command = 'false' # This is a placeholder
@@ -180,7 +180,7 @@ class Custom(Terminal):
if not '{command}' in self.command:
self.command += ' {command}'
Terminal.__init__(self, sh_cmd, title, env, d)
- logger.warn('Custom terminal was started.')
+ logger.warning('Custom terminal was started.')
else:
logger.debug(1, 'No custom terminal (OE_TERMINAL_CUSTOMCMD) set')
raise UnsupportedTerminal('OE_TERMINAL_CUSTOMCMD not set')
diff --git a/meta/lib/oe/types.py b/meta/lib/oe/types.py
index 4ae58acfacc..f4017130df6 100644
--- a/meta/lib/oe/types.py
+++ b/meta/lib/oe/types.py
@@ -103,8 +103,13 @@ def boolean(value):
"""OpenEmbedded 'boolean' type
Valid values for true: 'yes', 'y', 'true', 't', '1'
- Valid values for false: 'no', 'n', 'false', 'f', '0'
+ Valid values for false: 'no', 'n', 'false', 'f', '0', None
"""
+ if value is None:
+ return False
+
+ if isinstance(value, bool):
+ return value
if not isinstance(value, str):
raise TypeError("boolean accepts a string, not '%s'" % type(value))
diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py
index 80f0442d0ae..93b0763b0a9 100644
--- a/meta/lib/oe/utils.py
+++ b/meta/lib/oe/utils.py
@@ -1,4 +1,6 @@
import subprocess
+import multiprocessing
+import traceback
def read_file(filename):
try:
@@ -23,6 +25,13 @@ def conditional(variable, checkvalue, truevalue, falsevalue, d):
else:
return falsevalue
+def vartrue(var, iftrue, iffalse, d):
+ import oe.types
+ if oe.types.boolean(d.getVar(var)):
+ return iftrue
+ else:
+ return iffalse
+
def less_or_equal(variable, checkvalue, truevalue, falsevalue, d):
if float(d.getVar(variable)) <= float(checkvalue):
return truevalue
@@ -246,38 +255,72 @@ def execute_pre_post_process(d, cmds):
bb.note("Executing %s ..." % cmd)
bb.build.exec_func(cmd, d)
-def multiprocess_exec(commands, function):
- import signal
- import multiprocessing
-
- if not commands:
- return []
-
- def init_worker():
- signal.signal(signal.SIGINT, signal.SIG_IGN)
-
- fails = []
+# For each item in items, call the function 'target' with item as the first
+# argument, extraargs as the other arguments and handle any exceptions in the
+# parent thread
+def multiprocess_launch(target, items, d, extraargs=None):
- def failures(res):
- fails.append(res)
-
- nproc = min(multiprocessing.cpu_count(), len(commands))
- pool = bb.utils.multiprocessingpool(nproc, init_worker)
-
- try:
- mapresult = pool.map_async(function, commands, error_callback=failures)
-
- pool.close()
- pool.join()
- results = mapresult.get()
- except KeyboardInterrupt:
- pool.terminate()
- pool.join()
- raise
-
- if fails:
- raise fails[0]
+ class ProcessLaunch(multiprocessing.Process):
+ def __init__(self, *args, **kwargs):
+ multiprocessing.Process.__init__(self, *args, **kwargs)
+ self._pconn, self._cconn = multiprocessing.Pipe()
+ self._exception = None
+ self._result = None
+ def run(self):
+ try:
+ ret = self._target(*self._args, **self._kwargs)
+ self._cconn.send((None, ret))
+ except Exception as e:
+ tb = traceback.format_exc()
+ self._cconn.send((e, tb))
+
+ def update(self):
+ if self._pconn.poll():
+ (e, tb) = self._pconn.recv()
+ if e is not None:
+ self._exception = (e, tb)
+ else:
+ self._result = tb
+
+ @property
+ def exception(self):
+ self.update()
+ return self._exception
+
+ @property
+ def result(self):
+ self.update()
+ return self._result
+
+ max_process = int(d.getVar("BB_NUMBER_THREADS") or os.cpu_count() or 1)
+ launched = []
+ errors = []
+ results = []
+ items = list(items)
+ while (items and not errors) or launched:
+ if not errors and items and len(launched) < max_process:
+ args = (items.pop(),)
+ if extraargs is not None:
+ args = args + extraargs
+ p = ProcessLaunch(target=target, args=args)
+ p.start()
+ launched.append(p)
+ for q in launched:
+ # The finished processes are joined when calling is_alive()
+ if not q.is_alive():
+ if q.exception:
+ errors.append(q.exception)
+ if q.result:
+ results.append(q.result)
+ launched.remove(q)
+ # Paranoia doesn't hurt
+ for p in launched:
+ p.join()
+ if errors:
+ for (e, tb) in errors:
+ bb.error(str(tb))
+ bb.fatal("Fatal errors occurred in subprocesses, tracebacks printed above")
return results
def squashspaces(string):
@@ -306,9 +349,12 @@ def format_pkg_list(pkg_dict, ret_format=None):
return '\n'.join(output)
-def host_gcc_version(d):
+def host_gcc_version(d, taskcontextonly=False):
import re, subprocess
+ if taskcontextonly and d.getVar('BB_WORKERCONTEXT') != '1':
+ return
+
compiler = d.getVar("BUILD_CC")
try:
env = os.environ.copy()
@@ -327,9 +373,18 @@ def host_gcc_version(d):
def get_multilib_datastore(variant, d):
localdata = bb.data.createCopy(d)
- overrides = localdata.getVar("OVERRIDES", False) + ":virtclass-multilib-" + variant
- localdata.setVar("OVERRIDES", overrides)
- localdata.setVar("MLPREFIX", variant + "-")
+ if variant:
+ overrides = localdata.getVar("OVERRIDES", False) + ":virtclass-multilib-" + variant
+ localdata.setVar("OVERRIDES", overrides)
+ localdata.setVar("MLPREFIX", variant + "-")
+ else:
+ origdefault = localdata.getVar("DEFAULTTUNE_MULTILIB_ORIGINAL")
+ if origdefault:
+ localdata.setVar("DEFAULTTUNE", origdefault)
+ overrides = localdata.getVar("OVERRIDES", False).split(":")
+ overrides = ":".join([x for x in overrides if not x.startswith("virtclass-multilib-")])
+ localdata.setVar("OVERRIDES", overrides)
+ localdata.setVar("MLPREFIX", "")
return localdata
#
@@ -419,3 +474,4 @@ class ImageQAFailed(bb.build.FuncFailed):
msg = msg + ' (%s)' % self.description
return msg
+
diff --git a/meta/lib/oeqa/core/context.py b/meta/lib/oeqa/core/context.py
index acd547416f9..821aec8836a 100644
--- a/meta/lib/oeqa/core/context.py
+++ b/meta/lib/oeqa/core/context.py
@@ -27,7 +27,6 @@ class OETestContext(object):
self.logger = logger
self._registry = {}
self._registry['cases'] = collections.OrderedDict()
- self._results = {}
def _read_modules_from_manifest(self, manifest):
if not os.path.exists(manifest):
@@ -58,14 +57,21 @@ class OETestContext(object):
modules_required, filters)
self.suites = self.loader.discover()
- def runTests(self, skips=[]):
+ def runTests(self, processes=None, skips=[]):
self.runner = self.runnerClass(self, descriptions=False, verbosity=2)
# Dinamically skip those tests specified though arguments
self.skipTests(skips)
self._run_start_time = time.time()
- result = self.runner.run(self.suites)
+ if processes:
+ from oeqa.core.utils.concurrencytest import ConcurrentTestSuite
+
+ concurrent_suite = ConcurrentTestSuite(self.suites, processes)
+ result = self.runner.run(concurrent_suite)
+ else:
+ self.runner.buffer = True
+ result = self.runner.run(self.suites)
self._run_end_time = time.time()
return result
diff --git a/meta/lib/oeqa/core/decorator/__init__.py b/meta/lib/oeqa/core/decorator/__init__.py
index 855b6b9d281..14d7bfcd356 100644
--- a/meta/lib/oeqa/core/decorator/__init__.py
+++ b/meta/lib/oeqa/core/decorator/__init__.py
@@ -2,15 +2,15 @@
# Released under the MIT license (see COPYING.MIT)
from functools import wraps
-from abc import abstractmethod
+from abc import abstractmethod, ABCMeta
decoratorClasses = set()
-def registerDecorator(obj):
- decoratorClasses.add(obj)
- return obj
+def registerDecorator(cls):
+ decoratorClasses.add(cls)
+ return cls
-class OETestDecorator(object):
+class OETestDecorator(object, metaclass=ABCMeta):
case = None # Reference of OETestCase decorated
attrs = None # Attributes to be loaded by decorator implementation
diff --git a/meta/lib/oeqa/core/decorator/data.py b/meta/lib/oeqa/core/decorator/data.py
index ff7bdd98b7f..f0f65abb39a 100644
--- a/meta/lib/oeqa/core/decorator/data.py
+++ b/meta/lib/oeqa/core/decorator/data.py
@@ -54,6 +54,20 @@ class skipIfNotDataVar(OETestDecorator):
self.case.skipTest(self.msg)
@registerDecorator
+class skipIfInDataVar(OETestDecorator):
+ """
+ Skip test if value is in data store's variable.
+ """
+
+ attrs = ('var', 'value', 'msg')
+ def setUpDecorator(self):
+ msg = ('Checking if %r value contains %r to skip '
+ 'the test' % (self.var, self.value))
+ self.logger.debug(msg)
+ if self.value in (self.case.td.get(self.var)):
+ self.case.skipTest(self.msg)
+
+@registerDecorator
class skipIfNotInDataVar(OETestDecorator):
"""
Skip test if value is not in data store's variable.
@@ -61,10 +75,10 @@ class skipIfNotInDataVar(OETestDecorator):
attrs = ('var', 'value', 'msg')
def setUpDecorator(self):
- msg = ('Checking if %r value is in %r to run '
+ msg = ('Checking if %r value contains %r to run '
'the test' % (self.var, self.value))
self.logger.debug(msg)
- if not self.value in self.case.td.get(self.var):
+ if not self.value in (self.case.td.get(self.var) or ""):
self.case.skipTest(self.msg)
@registerDecorator
diff --git a/meta/lib/oeqa/core/decorator/depends.py b/meta/lib/oeqa/core/decorator/depends.py
index baa04341c71..950dbaa67a3 100644
--- a/meta/lib/oeqa/core/decorator/depends.py
+++ b/meta/lib/oeqa/core/decorator/depends.py
@@ -3,7 +3,6 @@
from unittest import SkipTest
-from oeqa.core.threaded import OETestRunnerThreaded
from oeqa.core.exception import OEQADependency
from . import OETestDiscover, registerDecorator
@@ -64,19 +63,15 @@ def _order_test_case_by_depends(cases, depends):
return [cases[case_id] for case_id in cases_ordered]
def _skipTestDependency(case, depends):
- if isinstance(case.tc.runner, OETestRunnerThreaded):
- import threading
- results = case.tc._results[threading.get_ident()]
- else:
- results = case.tc._results
-
- skipReasons = ['errors', 'failures', 'skipped']
-
- for reason in skipReasons:
- for test, _ in results[reason]:
- if test.id() in depends:
- raise SkipTest("Test case %s depends on %s and was in %s." \
- % (case.id(), test.id(), reason))
+ for dep in depends:
+ found = False
+ for test, _ in case.tc.results.successes:
+ if test.id() == dep:
+ found = True
+ break
+ if not found:
+ raise SkipTest("Test case %s depends on %s but it didn't pass/run." \
+ % (case.id(), dep))
@registerDecorator
class OETestDepends(OETestDiscover):
diff --git a/meta/lib/oeqa/core/decorator/oetimeout.py b/meta/lib/oeqa/core/decorator/oetimeout.py
index f85e7d97923..a247583f7f1 100644
--- a/meta/lib/oeqa/core/decorator/oetimeout.py
+++ b/meta/lib/oeqa/core/decorator/oetimeout.py
@@ -1,12 +1,8 @@
# Copyright (C) 2016 Intel Corporation
# Released under the MIT license (see COPYING.MIT)
-from . import OETestDecorator, registerDecorator
-
import signal
-from threading import Timer
-
-from oeqa.core.threaded import OETestRunnerThreaded
+from . import OETestDecorator, registerDecorator
from oeqa.core.exception import OEQATimeoutError
@registerDecorator
@@ -14,32 +10,16 @@ class OETimeout(OETestDecorator):
attrs = ('oetimeout',)
def setUpDecorator(self):
- self.logger.debug("Setting up a %d second(s) timeout" % self.oetimeout)
-
- if isinstance(self.case.tc.runner, OETestRunnerThreaded):
- self.timeouted = False
- def _timeoutHandler():
- self.timeouted = True
-
- self.timer = Timer(self.oetimeout, _timeoutHandler)
- self.timer.start()
- else:
- timeout = self.oetimeout
- def _timeoutHandler(signum, frame):
- raise OEQATimeoutError("Timed out after %s "
+ timeout = self.oetimeout
+ def _timeoutHandler(signum, frame):
+ raise OEQATimeoutError("Timed out after %s "
"seconds of execution" % timeout)
- self.alarmSignal = signal.signal(signal.SIGALRM, _timeoutHandler)
- signal.alarm(self.oetimeout)
+ self.logger.debug("Setting up a %d second(s) timeout" % self.oetimeout)
+ self.alarmSignal = signal.signal(signal.SIGALRM, _timeoutHandler)
+ signal.alarm(self.oetimeout)
def tearDownDecorator(self):
- if isinstance(self.case.tc.runner, OETestRunnerThreaded):
- self.timer.cancel()
- self.logger.debug("Removed Timer handler")
- if self.timeouted:
- raise OEQATimeoutError("Timed out after %s "
- "seconds of execution" % self.oetimeout)
- else:
- signal.alarm(0)
- signal.signal(signal.SIGALRM, self.alarmSignal)
- self.logger.debug("Removed SIGALRM handler")
+ signal.alarm(0)
+ 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 a4744dee033..6070bf53105 100644
--- a/meta/lib/oeqa/core/loader.py
+++ b/meta/lib/oeqa/core/loader.py
@@ -44,6 +44,8 @@ def _built_modules_dict(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)
+ if not m:
+ continue
module_name, class_name, test_name = m.groups()
@@ -155,7 +157,16 @@ class OETestLoader(unittest.TestLoader):
class_name = case.__class__.__name__
test_name = case._testMethodName
- if self.modules:
+ # 'auto' is a reserved key word to run test cases automatically
+ # warn users if their test case belong to a module named 'auto'
+ if module_name_small == "auto":
+ bb.warn("'auto' is a reserved key word for TEST_SUITES. "
+ "But test case '%s' is detected to belong to auto module. "
+ "Please condier using a new name for your module." % str(case))
+
+ # check if case belongs to any specified module
+ # if 'auto' is specified, such check is skipped
+ if self.modules and not 'auto' in self.modules:
module = None
try:
module = self.modules[module_name_small]
@@ -245,7 +256,7 @@ class OETestLoader(unittest.TestLoader):
for tcName in testCaseNames:
case = self._getTestCase(testCaseClass, tcName)
# Filer by case id
- if not (self.tests and not 'all' in self.tests
+ if not (self.tests and not 'auto' in self.tests
and not getCaseID(case) in self.tests):
self._handleTestCaseDecorators(case)
@@ -309,14 +320,14 @@ class OETestLoader(unittest.TestLoader):
module_name = module.__name__
# Normal test modules are loaded if no modules were specified,
- # if module is in the specified module list or if 'all' is in
+ # if module is in the specified module list or if 'auto' is in
# module list.
# Underscore modules are loaded only if specified in module list.
load_module = True if not module_name.startswith('_') \
and (not self.modules \
or module_name in self.modules \
or module_name_small in self.modules \
- or 'all' in self.modules) \
+ or 'auto' in self.modules) \
else False
load_underscore = True if module_name.startswith('_') \
diff --git a/meta/lib/oeqa/core/runner.py b/meta/lib/oeqa/core/runner.py
index 13cdf5ba523..54efdd0df5c 100644
--- a/meta/lib/oeqa/core/runner.py
+++ b/meta/lib/oeqa/core/runner.py
@@ -6,17 +6,11 @@ import time
import unittest
import logging
import re
+import json
+import pathlib
-xmlEnabled = False
-try:
- import xmlrunner
- from xmlrunner.result import _XMLTestResult as _TestResult
- from xmlrunner.runner import XMLTestRunner as _TestRunner
- xmlEnabled = True
-except ImportError:
- # use the base runner instead
- from unittest import TextTestResult as _TestResult
- from unittest import TextTestRunner as _TestRunner
+from unittest import TextTestResult as _TestResult
+from unittest import TextTestRunner as _TestRunner
class OEStreamLogger(object):
def __init__(self, logger):
@@ -42,22 +36,38 @@ class OETestResult(_TestResult):
def __init__(self, tc, *args, **kwargs):
super(OETestResult, self).__init__(*args, **kwargs)
+ self.successes = []
+ self.starttime = {}
+ self.endtime = {}
+ self.progressinfo = {}
+
+ # Inject into tc so that TestDepends decorator can see results
+ tc.results = self
+
self.tc = tc
- self._tc_map_results()
+
+ self.result_types = ['failures', 'errors', 'skipped', 'expectedFailures', 'successes']
+ self.result_desc = ['FAILED', 'ERROR', 'SKIPPED', 'EXPECTEDFAIL', 'PASSED']
def startTest(self, test):
- # Allow us to trigger the testcase buffer mode on a per test basis
- # so stdout/stderr are only printed upon failure. Enables debugging
- # but clean output
- if hasattr(test, "buffer"):
- self.buffer = test.buffer
+ # May have been set by concurrencytest
+ if test.id() not in self.starttime:
+ self.starttime[test.id()] = time.time()
super(OETestResult, self).startTest(test)
- def _tc_map_results(self):
- self.tc._results['failures'] = self.failures
- self.tc._results['errors'] = self.errors
- self.tc._results['skipped'] = self.skipped
- self.tc._results['expectedFailures'] = self.expectedFailures
+ def stopTest(self, test):
+ self.endtime[test.id()] = time.time()
+ super(OETestResult, self).stopTest(test)
+ if test.id() in self.progressinfo:
+ self.tc.logger.info(self.progressinfo[test.id()])
+
+ # Print the errors/failures early to aid/speed debugging, its a pain
+ # to wait until selftest finishes to see them.
+ for t in ['failures', 'errors', 'skipped', 'expectedFailures']:
+ for (scase, msg) in getattr(self, t):
+ if test.id() == scase.id():
+ self.tc.logger.info(str(msg))
+ break
def logSummary(self, component, context_msg=''):
elapsed_time = self.tc._run_end_time - self.tc._run_start_time
@@ -70,28 +80,19 @@ class OETestResult(_TestResult):
msg = "%s - OK - All required tests passed" % component
else:
msg = "%s - FAIL - Required tests failed" % component
- skipped = len(self.tc._results['skipped'])
+ skipped = len(self.skipped)
if skipped:
msg += " (skipped=%d)" % skipped
self.tc.logger.info(msg)
- def _getDetailsNotPassed(self, case, type, desc):
+ def _isTestResultContainTestCaseWithResultTypeProvided(self, case, type):
found = False
- for (scase, msg) in self.tc._results[type]:
- # XXX: When XML reporting is enabled scase is
- # xmlrunner.result._TestInfo instance instead of
- # string.
- if xmlEnabled:
- if case.id() == scase.test_id:
- found = True
- break
- scase_str = scase.test_id
- else:
- if case == scase:
- found = True
- break
- scase_str = str(scase)
+ for (scase, msg) in getattr(self, type):
+ if case.id() == scase.id():
+ found = True
+ break
+ scase_str = str(scase.id())
# When fails at module or class level the class name is passed as string
# so figure out to see if match
@@ -115,21 +116,22 @@ class OETestResult(_TestResult):
return (found, None)
+ def addSuccess(self, test):
+ #Added so we can keep track of successes too
+ self.successes.append((test, None))
+ super(OETestResult, self).addSuccess(test)
+
def logDetails(self):
self.tc.logger.info("RESULTS:")
for case_name in self.tc._registry['cases']:
case = self.tc._registry['cases'][case_name]
- result_types = ['failures', 'errors', 'skipped', 'expectedFailures']
- result_desc = ['FAILED', 'ERROR', 'SKIPPED', 'EXPECTEDFAIL']
-
- fail = False
+ found = False
desc = None
- for idx, name in enumerate(result_types):
- (fail, msg) = self._getDetailsNotPassed(case, result_types[idx],
- result_desc[idx])
- if fail:
- desc = result_desc[idx]
+ for idx, name in enumerate(self.result_types):
+ (found, msg) = self._isTestResultContainTestCaseWithResultTypeProvided(case, self.result_types[idx])
+ if found:
+ desc = self.result_desc[idx]
break
oeid = -1
@@ -138,12 +140,46 @@ class OETestResult(_TestResult):
if hasattr(d, 'oeid'):
oeid = d.oeid
- if fail:
- self.tc.logger.info("RESULTS - %s - Testcase %s: %s" % (case.id(),
- oeid, desc))
+ t = ""
+ 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)"
+
+ if found:
+ self.tc.logger.info("RESULTS - %s - Testcase %s: %s%s" % (case.id(),
+ oeid, desc, t))
+ else:
+ self.tc.logger.info("RESULTS - %s - Testcase %s: %s%s" % (case.id(),
+ oeid, 'UNKNOWN', t))
+
+ def _get_testcase_result_and_testmessage_dict(self):
+ testcase_result_dict = {}
+ testcase_testmessage_dict = {}
+ for case_name in self.tc._registry['cases']:
+ case = self.tc._registry['cases'][case_name]
+
+ found = False
+ desc = None
+ test_msg = ''
+ for idx, name in enumerate(self.result_types):
+ (found, msg) = self._isTestResultContainTestCaseWithResultTypeProvided(case, self.result_types[idx])
+ if found:
+ desc = self.result_desc[idx]
+ test_msg = msg
+ break
+
+ if found:
+ testcase_result_dict[case.id()] = desc
+ testcase_testmessage_dict[case.id()] = test_msg
else:
- self.tc.logger.info("RESULTS - %s - Testcase %s: %s" % (case.id(),
- oeid, 'PASSED'))
+ testcase_result_dict[case.id()] = "UNKNOWN"
+ return testcase_result_dict, testcase_testmessage_dict
+
+ def logDetailsInJson(self, file_dir):
+ (testcase_result_dict, testcase_testmessage_dict) = self._get_testcase_result_and_testmessage_dict()
+ if len(testcase_result_dict) > 0 and len(testcase_testmessage_dict) > 0:
+ jsontresulthelper = OEJSONTestResultHelper(testcase_result_dict, testcase_testmessage_dict)
+ jsontresulthelper.write_json_testresult_files(file_dir)
+ jsontresulthelper.write_testcase_log_files(os.path.join(file_dir, 'logs'))
class OEListTestsResult(object):
def wasSuccessful(self):
@@ -153,33 +189,14 @@ class OETestRunner(_TestRunner):
streamLoggerClass = OEStreamLogger
def __init__(self, tc, *args, **kwargs):
- if xmlEnabled:
- if not kwargs.get('output'):
- kwargs['output'] = os.path.join(os.getcwd(),
- 'TestResults_%s_%s' % (time.strftime("%Y%m%d%H%M%S"), os.getpid()))
-
kwargs['stream'] = self.streamLoggerClass(tc.logger)
super(OETestRunner, self).__init__(*args, **kwargs)
self.tc = tc
self.resultclass = OETestResult
- # XXX: The unittest-xml-reporting package defines _make_result method instead
- # of _makeResult standard on unittest.
- if xmlEnabled:
- def _make_result(self):
- """
- Creates a TestResult object which will be used to store
- information about the executed tests.
- """
- # override in subclasses if necessary.
- return self.resultclass(self.tc,
- self.stream, self.descriptions, self.verbosity, self.elapsed_times
- )
- else:
- def _makeResult(self):
- return self.resultclass(self.tc, self.stream, self.descriptions,
- self.verbosity)
-
+ def _makeResult(self):
+ return self.resultclass(self.tc, self.stream, self.descriptions,
+ self.verbosity)
def _walk_suite(self, suite, func):
for obj in suite:
@@ -275,3 +292,87 @@ class OETestRunner(_TestRunner):
self._list_tests_module(suite)
return OEListTestsResult()
+
+class OEJSONTestResultHelper(object):
+ def __init__(self, testcase_result_dict, testcase_log_dict):
+ self.testcase_result_dict = testcase_result_dict
+ self.testcase_log_dict = testcase_log_dict
+
+ def get_testcase_list(self):
+ return self.testcase_result_dict.keys()
+
+ def get_testsuite_from_testcase(self, testcase):
+ testsuite = testcase[0:testcase.rfind(".")]
+ return testsuite
+
+ def get_testmodule_from_testsuite(self, testsuite):
+ testmodule = testsuite[0:testsuite.find(".")]
+ return testmodule
+
+ def get_testsuite_testcase_dictionary(self):
+ testsuite_testcase_dict = {}
+ for testcase in self.get_testcase_list():
+ testsuite = self.get_testsuite_from_testcase(testcase)
+ if testsuite in testsuite_testcase_dict:
+ testsuite_testcase_dict[testsuite].append(testcase)
+ else:
+ testsuite_testcase_dict[testsuite] = [testcase]
+ return testsuite_testcase_dict
+
+ def get_testmodule_testsuite_dictionary(self, testsuite_testcase_dict):
+ testsuite_list = testsuite_testcase_dict.keys()
+ testmodule_testsuite_dict = {}
+ for testsuite in testsuite_list:
+ testmodule = self.get_testmodule_from_testsuite(testsuite)
+ if testmodule in testmodule_testsuite_dict:
+ testmodule_testsuite_dict[testmodule].append(testsuite)
+ else:
+ testmodule_testsuite_dict[testmodule] = [testsuite]
+ return testmodule_testsuite_dict
+
+ def _get_testcase_result(self, testcase, testcase_status_dict):
+ if testcase in testcase_status_dict:
+ return testcase_status_dict[testcase]
+ return ""
+
+ def _create_testcase_testresult_object(self, testcase_list, testcase_result_dict):
+ testcase_dict = {}
+ for testcase in sorted(testcase_list):
+ result = self._get_testcase_result(testcase, testcase_result_dict)
+ testcase_dict[testcase] = {"testresult": result}
+ return testcase_dict
+
+ def _create_json_testsuite_string(self, testsuite_list, testsuite_testcase_dict, testcase_result_dict):
+ testsuite_object = {'testsuite': {}}
+ testsuite_dict = testsuite_object['testsuite']
+ for testsuite in sorted(testsuite_list):
+ testsuite_dict[testsuite] = {'testcase': {}}
+ testsuite_dict[testsuite]['testcase'] = self._create_testcase_testresult_object(
+ testsuite_testcase_dict[testsuite],
+ testcase_result_dict)
+ return json.dumps(testsuite_object, sort_keys=True, indent=4)
+
+ def write_json_testresult_files(self, write_dir):
+ if not os.path.exists(write_dir):
+ pathlib.Path(write_dir).mkdir(parents=True, exist_ok=True)
+ testsuite_testcase_dict = self.get_testsuite_testcase_dictionary()
+ testmodule_testsuite_dict = self.get_testmodule_testsuite_dictionary(testsuite_testcase_dict)
+ for testmodule in testmodule_testsuite_dict.keys():
+ testsuite_list = testmodule_testsuite_dict[testmodule]
+ json_testsuite = self._create_json_testsuite_string(testsuite_list, testsuite_testcase_dict,
+ self.testcase_result_dict)
+ file_name = '%s.json' % testmodule
+ file_path = os.path.join(write_dir, file_name)
+ with open(file_path, 'w') as the_file:
+ the_file.write(json_testsuite)
+
+ def write_testcase_log_files(self, write_dir):
+ if not os.path.exists(write_dir):
+ pathlib.Path(write_dir).mkdir(parents=True, exist_ok=True)
+ for testcase in self.testcase_log_dict.keys():
+ test_log = self.testcase_log_dict[testcase]
+ if test_log is not None:
+ file_name = '%s.log' % testcase
+ file_path = os.path.join(write_dir, file_name)
+ with open(file_path, 'w') as the_file:
+ the_file.write(test_log)
diff --git a/meta/lib/oeqa/core/target/ssh.py b/meta/lib/oeqa/core/target/ssh.py
index 151b99a77f6..8ff1f6c677c 100644
--- a/meta/lib/oeqa/core/target/ssh.py
+++ b/meta/lib/oeqa/core/target/ssh.py
@@ -208,7 +208,7 @@ def SSHCall(command, logger, timeout=None, **opts):
try:
if select.select([process.stdout], [], [], 5)[0] != []:
reader = codecs.getreader('utf-8')(process.stdout)
- data = reader.read(1024, 1024)
+ data = reader.read(1024, 4096)
if not data:
process.stdout.close()
eof = True
diff --git a/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded.py b/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded.py
deleted file mode 100644
index 0fe4cb3f116..00000000000
--- a/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (C) 2017 Intel Corporation
-# Released under the MIT license (see COPYING.MIT)
-
-from oeqa.core.case import OETestCase
-
-class ThreadedTest(OETestCase):
- def test_threaded_no_depends(self):
- self.assertTrue(True, msg='How is this possible?')
-
-class ThreadedTest2(OETestCase):
- def test_threaded_same_module(self):
- self.assertTrue(True, msg='How is this possible?')
diff --git a/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_alone.py b/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_alone.py
deleted file mode 100644
index 905f397846b..00000000000
--- a/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_alone.py
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright (C) 2017 Intel Corporation
-# Released under the MIT license (see COPYING.MIT)
-
-from oeqa.core.case import OETestCase
-
-class ThreadedTestAlone(OETestCase):
- def test_threaded_alone(self):
- self.assertTrue(True, msg='How is this possible?')
diff --git a/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_depends.py b/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_depends.py
deleted file mode 100644
index 0c158d3bacf..00000000000
--- a/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_depends.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright (C) 2017 Intel Corporation
-# Released under the MIT license (see COPYING.MIT)
-
-from oeqa.core.case import OETestCase
-from oeqa.core.decorator.depends import OETestDepends
-
-class ThreadedTest3(OETestCase):
- @OETestDepends(['threaded.ThreadedTest.test_threaded_no_depends'])
- def test_threaded_depends(self):
- self.assertTrue(True, msg='How is this possible?')
diff --git a/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_module.py b/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_module.py
deleted file mode 100644
index 63d17e04018..00000000000
--- a/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_module.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (C) 2017 Intel Corporation
-# Released under the MIT license (see COPYING.MIT)
-
-from oeqa.core.case import OETestCase
-
-class ThreadedTestModule(OETestCase):
- def test_threaded_module(self):
- self.assertTrue(True, msg='How is this possible?')
-
-class ThreadedTestModule2(OETestCase):
- def test_threaded_module2(self):
- self.assertTrue(True, msg='How is this possible?')
diff --git a/meta/lib/oeqa/core/tests/common.py b/meta/lib/oeqa/core/tests/common.py
index 19323234094..52b18a1c3ea 100644
--- a/meta/lib/oeqa/core/tests/common.py
+++ b/meta/lib/oeqa/core/tests/common.py
@@ -33,13 +33,3 @@ class TestBase(unittest.TestCase):
tc.loadTests(self.cases_path, modules=modules, tests=tests,
filters=filters)
return tc
-
- def _testLoaderThreaded(self, d={}, modules=[],
- tests=[], filters={}):
- from oeqa.core.threaded import OETestContextThreaded
-
- tc = OETestContextThreaded(d, self.logger)
- tc.loadTests(self.cases_path, modules=modules, tests=tests,
- filters=filters)
-
- return tc
diff --git a/meta/lib/oeqa/core/tests/test_data.py b/meta/lib/oeqa/core/tests/test_data.py
index 320468cbe4a..21b6c68b8a4 100755
--- a/meta/lib/oeqa/core/tests/test_data.py
+++ b/meta/lib/oeqa/core/tests/test_data.py
@@ -21,7 +21,7 @@ class TestData(TestBase):
tc = self._testLoader(modules=self.modules)
self.assertEqual(False, tc.runTests().wasSuccessful())
- for test, data in tc._results['errors']:
+ for test, data in tc.errors:
expect = False
if expectedException in data:
expect = True
@@ -34,7 +34,7 @@ class TestData(TestBase):
tc = self._testLoader(d=d, modules=self.modules)
self.assertEqual(False, tc.runTests().wasSuccessful())
- for test, data in tc._results['failures']:
+ for test, data in tc.failures:
expect = False
if expectedError in data:
expect = True
diff --git a/meta/lib/oeqa/core/tests/test_decorators.py b/meta/lib/oeqa/core/tests/test_decorators.py
index cf99e0d72da..f7d11e885a4 100755
--- a/meta/lib/oeqa/core/tests/test_decorators.py
+++ b/meta/lib/oeqa/core/tests/test_decorators.py
@@ -131,17 +131,5 @@ class TestTimeoutDecorator(TestBase):
msg = "OETestTimeout didn't restore SIGALRM"
self.assertIs(alarm_signal, signal.getsignal(signal.SIGALRM), msg=msg)
- def test_timeout_thread(self):
- tests = ['timeout.TimeoutTest.testTimeoutPass']
- msg = 'Failed to run test using OETestTimeout'
- tc = self._testLoaderThreaded(modules=self.modules, tests=tests)
- self.assertTrue(tc.runTests().wasSuccessful(), msg=msg)
-
- def test_timeout_threaded_fail(self):
- tests = ['timeout.TimeoutTest.testTimeoutFail']
- msg = "OETestTimeout test didn't timeout as expected"
- tc = self._testLoaderThreaded(modules=self.modules, tests=tests)
- self.assertFalse(tc.runTests().wasSuccessful(), msg=msg)
-
if __name__ == '__main__':
unittest.main()
diff --git a/meta/lib/oeqa/core/tests/test_loader.py b/meta/lib/oeqa/core/tests/test_loader.py
index e0d917d317d..b79b8bad4da 100755
--- a/meta/lib/oeqa/core/tests/test_loader.py
+++ b/meta/lib/oeqa/core/tests/test_loader.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
-# Copyright (C) 2016-2017 Intel Corporation
+# Copyright (C) 2016 Intel Corporation
# Released under the MIT license (see COPYING.MIT)
import os
@@ -82,33 +82,5 @@ class TestLoader(TestBase):
msg = 'Expected modules from two different paths'
self.assertEqual(modules, expected_modules, msg=msg)
- def test_loader_threaded(self):
- cases_path = self.cases_path
-
- self.cases_path = [os.path.join(self.cases_path, 'loader', 'threaded')]
-
- tc = self._testLoaderThreaded()
- self.assertEqual(len(tc.suites), 3, "Expected to be 3 suites")
-
- case_ids = ['threaded.ThreadedTest.test_threaded_no_depends',
- 'threaded.ThreadedTest2.test_threaded_same_module',
- 'threaded_depends.ThreadedTest3.test_threaded_depends']
- for case in tc.suites[0]._tests:
- self.assertEqual(case.id(),
- case_ids[tc.suites[0]._tests.index(case)])
-
- case_ids = ['threaded_alone.ThreadedTestAlone.test_threaded_alone']
- for case in tc.suites[1]._tests:
- self.assertEqual(case.id(),
- case_ids[tc.suites[1]._tests.index(case)])
-
- case_ids = ['threaded_module.ThreadedTestModule.test_threaded_module',
- 'threaded_module.ThreadedTestModule2.test_threaded_module2']
- for case in tc.suites[2]._tests:
- self.assertEqual(case.id(),
- case_ids[tc.suites[2]._tests.index(case)])
-
- self.cases_path = cases_path
-
if __name__ == '__main__':
unittest.main()
diff --git a/meta/lib/oeqa/core/threaded.py b/meta/lib/oeqa/core/threaded.py
deleted file mode 100644
index 2cafe03a212..00000000000
--- a/meta/lib/oeqa/core/threaded.py
+++ /dev/null
@@ -1,275 +0,0 @@
-# Copyright (C) 2017 Intel Corporation
-# Released under the MIT license (see COPYING.MIT)
-
-import threading
-import multiprocessing
-import queue
-import time
-
-from unittest.suite import TestSuite
-
-from oeqa.core.loader import OETestLoader
-from oeqa.core.runner import OEStreamLogger, OETestResult, OETestRunner
-from oeqa.core.context import OETestContext
-
-class OETestLoaderThreaded(OETestLoader):
- def __init__(self, tc, module_paths, modules, tests, modules_required,
- filters, process_num=0, *args, **kwargs):
- super(OETestLoaderThreaded, self).__init__(tc, module_paths, modules,
- tests, modules_required, filters, *args, **kwargs)
-
- self.process_num = process_num
-
- def discover(self):
- suite = super(OETestLoaderThreaded, self).discover()
-
- if self.process_num <= 0:
- self.process_num = min(multiprocessing.cpu_count(),
- len(suite._tests))
-
- suites = []
- for _ in range(self.process_num):
- suites.append(self.suiteClass())
-
- def _search_for_module_idx(suites, case):
- """
- Cases in the same module needs to be run
- in the same thread because PyUnit keeps track
- of setUp{Module, Class,} and tearDown{Module, Class,}.
- """
-
- for idx in range(self.process_num):
- suite = suites[idx]
- for c in suite._tests:
- if case.__module__ == c.__module__:
- return idx
-
- return -1
-
- def _search_for_depend_idx(suites, depends):
- """
- Dependency cases needs to be run in the same
- thread, because OEQA framework look at the state
- of dependant test to figure out if skip or not.
- """
-
- for idx in range(self.process_num):
- suite = suites[idx]
-
- for case in suite._tests:
- if case.id() in depends:
- return idx
- return -1
-
- def _get_best_idx(suites):
- sizes = [len(suite._tests) for suite in suites]
- return sizes.index(min(sizes))
-
- def _fill_suites(suite):
- idx = -1
- for case in suite:
- if isinstance(case, TestSuite):
- _fill_suites(case)
- else:
- idx = _search_for_module_idx(suites, case)
-
- depends = {}
- if 'depends' in self.tc._registry:
- depends = self.tc._registry['depends']
-
- if idx == -1 and case.id() in depends:
- case_depends = depends[case.id()]
- idx = _search_for_depend_idx(suites, case_depends)
-
- if idx == -1:
- idx = _get_best_idx(suites)
-
- suites[idx].addTest(case)
- _fill_suites(suite)
-
- suites_tmp = suites
- suites = []
- for suite in suites_tmp:
- if len(suite._tests) > 0:
- suites.append(suite)
-
- return suites
-
-class OEStreamLoggerThreaded(OEStreamLogger):
- _lock = threading.Lock()
- buffers = {}
-
- def write(self, msg):
- tid = threading.get_ident()
-
- if not tid in self.buffers:
- self.buffers[tid] = ""
-
- if msg:
- self.buffers[tid] += msg
-
- def finish(self):
- tid = threading.get_ident()
-
- self._lock.acquire()
- self.logger.info('THREAD: %d' % tid)
- self.logger.info('-' * 70)
- for line in self.buffers[tid].split('\n'):
- self.logger.info(line)
- self._lock.release()
-
-class OETestResultThreadedInternal(OETestResult):
- def _tc_map_results(self):
- tid = threading.get_ident()
-
- # PyUnit generates a result for every test module run, test
- # if the thread already has an entry to avoid lose the previous
- # test module results.
- if not tid in self.tc._results:
- self.tc._results[tid] = {}
- self.tc._results[tid]['failures'] = self.failures
- self.tc._results[tid]['errors'] = self.errors
- self.tc._results[tid]['skipped'] = self.skipped
- self.tc._results[tid]['expectedFailures'] = self.expectedFailures
-
-class OETestResultThreaded(object):
- _results = {}
- _lock = threading.Lock()
-
- def __init__(self, tc):
- self.tc = tc
-
- def _fill_tc_results(self):
- tids = list(self.tc._results.keys())
- fields = ['failures', 'errors', 'skipped', 'expectedFailures']
-
- for tid in tids:
- result = self.tc._results[tid]
- for field in fields:
- if not field in self.tc._results:
- self.tc._results[field] = []
- self.tc._results[field].extend(result[field])
-
- def addResult(self, result, run_start_time, run_end_time):
- tid = threading.get_ident()
-
- self._lock.acquire()
- self._results[tid] = {}
- self._results[tid]['result'] = result
- self._results[tid]['run_start_time'] = run_start_time
- self._results[tid]['run_end_time'] = run_end_time
- self._results[tid]['result'] = result
- self._lock.release()
-
- def wasSuccessful(self):
- wasSuccessful = True
- for tid in self._results.keys():
- wasSuccessful = wasSuccessful and \
- self._results[tid]['result'].wasSuccessful()
- return wasSuccessful
-
- def stop(self):
- for tid in self._results.keys():
- self._results[tid]['result'].stop()
-
- def logSummary(self, component, context_msg=''):
- elapsed_time = (self.tc._run_end_time - self.tc._run_start_time)
-
- self.tc.logger.info("SUMMARY:")
- self.tc.logger.info("%s (%s) - Ran %d tests in %.3fs" % (component,
- context_msg, len(self.tc._registry['cases']), elapsed_time))
- if self.wasSuccessful():
- msg = "%s - OK - All required tests passed" % component
- else:
- msg = "%s - FAIL - Required tests failed" % component
- self.tc.logger.info(msg)
-
- def logDetails(self):
- if list(self._results):
- tid = list(self._results)[0]
- result = self._results[tid]['result']
- result.logDetails()
-
-class _Worker(threading.Thread):
- """Thread executing tasks from a given tasks queue"""
- def __init__(self, tasks, result, stream):
- threading.Thread.__init__(self)
- self.tasks = tasks
-
- self.result = result
- self.stream = stream
-
- def run(self):
- while True:
- try:
- func, args, kargs = self.tasks.get(block=False)
- except queue.Empty:
- break
-
- try:
- run_start_time = time.time()
- rc = func(*args, **kargs)
- run_end_time = time.time()
- self.result.addResult(rc, run_start_time, run_end_time)
- self.stream.finish()
- except Exception as e:
- print(e)
- finally:
- self.tasks.task_done()
-
-class _ThreadedPool:
- """Pool of threads consuming tasks from a queue"""
- def __init__(self, num_workers, num_tasks, stream=None, result=None):
- self.tasks = queue.Queue(num_tasks)
- self.workers = []
-
- for _ in range(num_workers):
- worker = _Worker(self.tasks, result, stream)
- self.workers.append(worker)
-
- def start(self):
- for worker in self.workers:
- worker.start()
-
- def add_task(self, func, *args, **kargs):
- """Add a task to the queue"""
- self.tasks.put((func, args, kargs))
-
- def wait_completion(self):
- """Wait for completion of all the tasks in the queue"""
- self.tasks.join()
- for worker in self.workers:
- worker.join()
-
-class OETestRunnerThreaded(OETestRunner):
- streamLoggerClass = OEStreamLoggerThreaded
-
- def __init__(self, tc, *args, **kwargs):
- super(OETestRunnerThreaded, self).__init__(tc, *args, **kwargs)
- self.resultclass = OETestResultThreadedInternal # XXX: XML reporting overrides at __init__
-
- def run(self, suites):
- result = OETestResultThreaded(self.tc)
-
- pool = _ThreadedPool(len(suites), len(suites), stream=self.stream,
- result=result)
- for s in suites:
- pool.add_task(super(OETestRunnerThreaded, self).run, s)
- pool.start()
- pool.wait_completion()
- result._fill_tc_results()
-
- return result
-
-class OETestContextThreaded(OETestContext):
- loaderClass = OETestLoaderThreaded
- runnerClass = OETestRunnerThreaded
-
- def loadTests(self, module_paths, modules=[], tests=[],
- modules_manifest="", modules_required=[], filters={}, process_num=0):
- if modules_manifest:
- modules = self._read_modules_from_manifest(modules_manifest)
-
- self.loader = self.loaderClass(self, module_paths, modules, tests,
- modules_required, filters, process_num)
- self.suites = self.loader.discover()
diff --git a/meta/lib/oeqa/core/utils/concurrencytest.py b/meta/lib/oeqa/core/utils/concurrencytest.py
new file mode 100644
index 00000000000..6404cb4668c
--- /dev/null
+++ b/meta/lib/oeqa/core/utils/concurrencytest.py
@@ -0,0 +1,256 @@
+#!/usr/bin/env python3
+#
+# Modified for use in OE by Richard Purdie, 2018
+#
+# Modified by: Corey Goldberg, 2013
+# License: GPLv2+
+#
+# Original code from:
+# Bazaar (bzrlib.tests.__init__.py, v2.6, copied Jun 01 2013)
+# Copyright (C) 2005-2011 Canonical Ltd
+# License: GPLv2+
+
+import os
+import sys
+import traceback
+import unittest
+import subprocess
+import testtools
+import threading
+import time
+import io
+
+from queue import Queue
+from itertools import cycle
+from subunit import ProtocolTestCase, TestProtocolClient
+from subunit.test_results import AutoTimingTestResultDecorator
+from testtools import ThreadsafeForwardingResult, iterate_tests
+
+import bb.utils
+import oe.path
+
+_all__ = [
+ 'ConcurrentTestSuite',
+ 'fork_for_tests',
+ 'partition_tests',
+]
+
+#
+# Patch the version from testtools to allow access to _test_start and allow
+# computation of timing information and threading progress
+#
+class BBThreadsafeForwardingResult(ThreadsafeForwardingResult):
+
+ def __init__(self, target, semaphore, threadnum, totalinprocess, totaltests):
+ super(BBThreadsafeForwardingResult, self).__init__(target, semaphore)
+ self.threadnum = threadnum
+ self.totalinprocess = totalinprocess
+ self.totaltests = totaltests
+
+ def _add_result_with_semaphore(self, method, test, *args, **kwargs):
+ self.semaphore.acquire()
+ try:
+ self.result.starttime[test.id()] = self._test_start.timestamp()
+ self.result.threadprogress[self.threadnum].append(test.id())
+ totalprogress = sum(len(x) for x in self.result.threadprogress.values())
+ self.result.progressinfo[test.id()] = "%s: %s/%s %s/%s (%ss) (%s)" % (
+ self.threadnum,
+ len(self.result.threadprogress[self.threadnum]),
+ self.totalinprocess,
+ totalprogress,
+ self.totaltests,
+ "{0:.2f}".format(time.time()-self._test_start.timestamp()),
+ test.id())
+ finally:
+ self.semaphore.release()
+ super(BBThreadsafeForwardingResult, self)._add_result_with_semaphore(method, test, *args, **kwargs)
+
+#
+# A dummy structure to add to io.StringIO so that the .buffer object
+# is available and accepts writes. This allows unittest with buffer=True
+# to interact ok with subunit which wants to access sys.stdout.buffer.
+#
+class dummybuf(object):
+ def __init__(self, parent):
+ self.p = parent
+ def write(self, data):
+ self.p.write(data.decode("utf-8"))
+
+#
+# Taken from testtools.ConncurrencyTestSuite but modified for OE use
+#
+class ConcurrentTestSuite(unittest.TestSuite):
+
+ def __init__(self, suite, processes):
+ super(ConcurrentTestSuite, self).__init__([suite])
+ self.processes = processes
+
+ def run(self, result):
+ tests, totaltests = fork_for_tests(self.processes, self)
+ try:
+ threads = {}
+ queue = Queue()
+ semaphore = threading.Semaphore(1)
+ result.threadprogress = {}
+ for i, (test, testnum) in enumerate(tests):
+ result.threadprogress[i] = []
+ process_result = BBThreadsafeForwardingResult(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)
+ reader_thread = threading.Thread(
+ target=self._run_test, args=(test, process_result, queue))
+ threads[test] = reader_thread, process_result
+ reader_thread.start()
+ while threads:
+ finished_test = queue.get()
+ threads[finished_test][0].join()
+ del threads[finished_test]
+ except:
+ for thread, process_result in threads.values():
+ process_result.stop()
+ raise
+
+ def _run_test(self, test, process_result, queue):
+ try:
+ try:
+ test.run(process_result)
+ except Exception:
+ # The run logic itself failed
+ case = testtools.ErrorHolder(
+ "broken-runner",
+ 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)
+
+def fork_for_tests(concurrency_num, suite):
+ result = []
+ test_blocks = partition_tests(suite, concurrency_num)
+ # Clear the tests from the original suite so it doesn't keep them alive
+ suite._tests[:] = []
+ totaltests = sum(len(x) for x in test_blocks)
+ for process_tests in test_blocks:
+ numtests = len(process_tests)
+ process_suite = unittest.TestSuite(process_tests)
+ # Also clear each split list so new suite has only reference
+ process_tests[:] = []
+ c2pread, c2pwrite = os.pipe()
+ # Clear buffers before fork to avoid duplicate output
+ sys.stdout.flush()
+ sys.stderr.flush()
+ pid = os.fork()
+ if pid == 0:
+ ourpid = os.getpid()
+ try:
+ newbuilddir = None
+ 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)
+ selftestdir = os.path.abspath(builddir + "/../meta-selftest")
+ 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)
+
+ # Leave stderr and stdout open so we can see test noise
+ # Close stdin so that the child goes away if it decides to
+ # read from stdin (otherwise its a roulette to see what
+ # child actually gets keystrokes for pdb etc).
+ newsi = os.open(os.devnull, os.O_RDWR)
+ os.dup2(newsi, sys.stdin.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(subunit_result)
+ if ourpid != os.getpid():
+ os._exit(0)
+ if newbuilddir:
+ removebuilddir(newbuilddir)
+ except:
+ # Don't do anything with process children
+ if ourpid != os.getpid():
+ os._exit(1)
+ # Try and report traceback on stream, but exit with error
+ # even if stream couldn't be created or something else
+ # goes wrong. The traceback is formatted to a string and
+ # written in one go to avoid interleaving lines from
+ # multiple failing children.
+ try:
+ stream.write(traceback.format_exc().encode('utf-8'))
+ except:
+ sys.stderr.write(traceback.format_exc())
+ finally:
+ if newbuilddir:
+ removebuilddir(newbuilddir)
+ stream.flush()
+ os._exit(1)
+ stream.flush()
+ os._exit(0)
+ else:
+ os.close(c2pwrite)
+ stream = os.fdopen(c2pread, 'rb', 1)
+ test = ProtocolTestCase(stream)
+ result.append((test, numtests))
+ return result, totaltests
+
+def partition_tests(suite, count):
+ # Keep tests from the same class together but allow tests from modules
+ # to go to different processes to aid parallelisation.
+ modules = {}
+ for test in iterate_tests(suite):
+ m = test.__module__ + "." + test.__class__.__name__
+ if m not in modules:
+ modules[m] = []
+ modules[m].append(test)
+
+ # Simply divide the test blocks between the available processes
+ partitions = [list() for _ in range(count)]
+ for partition, m in zip(cycle(partitions), modules):
+ partition.extend(modules[m])
+
+ # No point in empty threads so drop them
+ return [p for p in partitions if p]
+
diff --git a/meta/lib/oeqa/files/test.pl b/meta/lib/oeqa/files/test.pl
deleted file mode 100644
index 689c8f16355..00000000000
--- a/meta/lib/oeqa/files/test.pl
+++ /dev/null
@@ -1,2 +0,0 @@
-$a = 9.01e+21 - 9.01e+21 + 0.01;
-print ("the value of a is ", $a, "\n");
diff --git a/meta/lib/oeqa/files/test.py b/meta/lib/oeqa/files/test.py
deleted file mode 100644
index f389225d72d..00000000000
--- a/meta/lib/oeqa/files/test.py
+++ /dev/null
@@ -1,6 +0,0 @@
-import os
-
-os.system('touch /tmp/testfile.python')
-
-a = 9.01e+21 - 9.01e+21 + 0.01
-print("the value of a is %s" % a)
diff --git a/meta/lib/oeqa/runtime/cases/dnf.py b/meta/lib/oeqa/runtime/cases/dnf.py
index 2f87296b4e0..e93a1cea06e 100644
--- a/meta/lib/oeqa/runtime/cases/dnf.py
+++ b/meta/lib/oeqa/runtime/cases/dnf.py
@@ -67,7 +67,8 @@ class DnfRepoTest(DnfTest):
deploy_url = 'http://%s:%s/' %(self.target.server_ip, self.repo_server.port)
cmdlinerepoopts = ["--repofrompath=oe-testimage-repo-%s,%s%s" %(arch, deploy_url, arch) for arch in pkgarchs]
- self.dnf(" ".join(cmdlinerepoopts) + " --nogpgcheck " + command)
+ output = self.dnf(" ".join(cmdlinerepoopts) + " --nogpgcheck " + command)
+ return output
@OETestDepends(['dnf.DnfBasicTest.test_dnf_help'])
@OETestID(1744)
@@ -88,6 +89,9 @@ class DnfRepoTest(DnfTest):
@OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache'])
@OETestID(1740)
def test_dnf_install(self):
+ output = self.dnf_with_repo('list run-postinsts-dev')
+ if 'Installed Packages' in output:
+ self.dnf_with_repo('remove -y run-postinsts-dev')
self.dnf_with_repo('install -y run-postinsts-dev')
@OETestDepends(['dnf.DnfRepoTest.test_dnf_install'])
@@ -120,4 +124,44 @@ class DnfRepoTest(DnfTest):
def test_dnf_reinstall(self):
self.dnf_with_repo('reinstall -y run-postinsts-dev')
+ @OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache'])
+ @OETestID(1771)
+ def test_dnf_installroot(self):
+ rootpath = '/home/root/chroot/test'
+ #Copy necessary files to avoid errors with not yet installed tools on
+ #installroot directory.
+ self.target.run('mkdir -p %s/etc' % rootpath, 1500)
+ self.target.run('mkdir -p %s/bin %s/sbin %s/usr/bin %s/usr/sbin' % (rootpath, rootpath, rootpath, rootpath), 1500)
+ self.target.run('mkdir -p %s/dev' % rootpath, 1500)
+ #Handle different architectures lib dirs
+ self.target.run('mkdir -p %s/lib' % rootpath, 1500)
+ self.target.run('mkdir -p %s/libx32' % rootpath, 1500)
+ self.target.run('mkdir -p %s/lib64' % rootpath, 1500)
+ self.target.run('cp /lib/libtinfo.so.5 %s/lib' % rootpath, 1500)
+ self.target.run('cp /libx32/libtinfo.so.5 %s/libx32' % rootpath, 1500)
+ self.target.run('cp /lib64/libtinfo.so.5 %s/lib64' % rootpath, 1500)
+ self.target.run('cp -r /etc/rpm %s/etc' % rootpath, 1500)
+ self.target.run('cp -r /etc/dnf %s/etc' % rootpath, 1500)
+ self.target.run('cp /bin/sh %s/bin' % rootpath, 1500)
+ self.target.run('mount -o bind /dev %s/dev/' % rootpath, 1500)
+ self.dnf_with_repo('install --installroot=%s -v -y --rpmverbosity=debug busybox run-postinsts' % rootpath)
+ status, output = self.target.run('test -e %s/var/cache/dnf' % rootpath, 1500)
+ self.assertEqual(0, status, output)
+ status, output = self.target.run('test -e %s/bin/busybox' % rootpath, 1500)
+ self.assertEqual(0, status, output)
+ @OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache'])
+ @OETestID(1772)
+ def test_dnf_exclude(self):
+ excludepkg = 'curl-dev'
+ self.dnf_with_repo('install -y curl*')
+ self.dnf('list %s' % excludepkg, 0)
+ #Avoid remove dependencies to skip some errors on different archs and images
+ self.dnf_with_repo('remove --setopt=clean_requirements_on_remove=0 -y curl*')
+ #check curl-dev is not installed adter removing all curl occurrences
+ status, output = self.target.run('dnf list --installed | grep %s'% excludepkg, 1500)
+ self.assertEqual(1, status, "%s was not removed, is listed as installed"%excludepkg)
+ self.dnf_with_repo('install -y --exclude=%s --exclude=curl-staticdev curl*' % excludepkg)
+ #check curl-dev is not installed after being excluded
+ status, output = self.target.run('dnf list --installed | grep %s'% excludepkg , 1500)
+ self.assertEqual(1, status, "%s was not excluded, is listed as installed"%excludepkg)
diff --git a/meta/lib/oeqa/runtime/cases/ksample.py b/meta/lib/oeqa/runtime/cases/ksample.py
new file mode 100644
index 00000000000..eb8713351af
--- /dev/null
+++ b/meta/lib/oeqa/runtime/cases/ksample.py
@@ -0,0 +1,221 @@
+import os
+import time
+
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.core.decorator.oeid import OETestID
+from oeqa.core.decorator.data import skipIfNotFeature
+
+# need some kernel fragments
+# 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)
+ if not match_string:
+ # send cmd
+ msg = '%s failed, %s' % (cmd, output)
+ self.assertEqual(status, 0, msg=msg)
+ else:
+ # check result
+ result = ("%s" % match_string) in output
+ msg = output
+ self.assertTrue(result, msg)
+ self.assertEqual(status, 0, cmd)
+
+ def check_config(self, config_opt=''):
+ cmd = "zcat /proc/config.gz | grep %s" % config_opt
+ status, output = self.target.run(cmd)
+ result = ("%s=y" % config_opt) in output
+ if not result:
+ self.skipTest("%s is not set" % config_opt)
+
+ def check_module_exist(self, path='', module_name=''):
+ status, output = self.target.run("uname -r")
+ cmd = "ls " + "/lib/modules/" + output + "/kernel/samples/" + path + module_name
+ status, output = self.target.run(cmd)
+ if status != 0:
+ error_info = module_name + "doesn't exist"
+ self.skipTest(error_info)
+
+ def kfifo_func(self, name=''):
+ module_prename = name + "-example"
+ module_name = name + "-example.ko"
+ sysmbol_name = name + "_example"
+
+ # make sure if module exists
+ self.check_module_exist("kfifo/", module_name)
+ # modprobe
+ self.cmd_and_check("modprobe %s" % module_prename)
+ # lsmod
+ self.cmd_and_check("lsmod | grep %s | cut -d\' \' -f1" % sysmbol_name, sysmbol_name)
+ # check result
+ self.cmd_and_check("dmesg | grep \"test passed\" ", "test passed")
+ # rmmod
+ self.cmd_and_check("rmmod %s" % module_prename)
+
+ def kprobe_func(self, name=''):
+ # check config
+ self.check_config("CONFIG_KPROBES")
+
+ module_prename = name + "_example"
+ module_name = name + "_example.ko"
+ sysmbol_name = module_prename
+
+ # make sure if module exists
+ self.check_module_exist("kprobes/", module_name)
+ # modprobe
+ self.cmd_and_check("modprobe %s" % module_prename)
+ # lsmod
+ self.cmd_and_check("lsmod | grep %s | cut -d\' \' -f1" % sysmbol_name, sysmbol_name)
+ # check result
+ self.cmd_and_check("dmesg | grep Planted | head -n10", "Planted")
+ # rmmod
+ self.cmd_and_check("rmmod %s" % module_prename)
+
+ def kobject_func(self, name=''):
+ module_prename = name + "_example"
+ module_name = name + "-example.ko"
+ sysmbol_name = module_prename
+
+ # make sure if module exists
+ self.check_module_exist("kobject/", module_name)
+ # modprobe
+ self.cmd_and_check("modprobe %s" % module_prename)
+ # lsmod
+ self.cmd_and_check("lsmod | grep %s | cut -d\' \' -f1" % sysmbol_name, sysmbol_name)
+ # check result
+ self.cmd_and_check("ls /sys/kernel/%s/" % sysmbol_name, "bar")
+ # rmmod
+ self.cmd_and_check("rmmod %s" % module_prename)
+
+class KSampleTest(KSample):
+ # kfifo
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_kfifo_test(self):
+ index = ["dma", "bytestream", "inttype", "record"]
+ for i in index:
+ self.kfifo_func(i)
+
+ # kprobe
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_kprobe_test(self):
+ index = ["kprobe", "kretprobe"]
+ for i in index:
+ self.kprobe_func(i)
+
+ # kobject
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_kobject_test(self):
+ index = ["kobject", "kset"]
+ for i in index:
+ self.kobject_func(i)
+
+ #trace
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_trace_events(self):
+ # check config
+ self.check_config("CONFIG_TRACING_SUPPORT")
+ # make sure if module exists
+ self.check_module_exist("trace_events/", "trace-events-sample.ko")
+ # modprobe
+ self.cmd_and_check("modprobe trace-events-sample")
+ # lsmod
+ self.cmd_and_check("lsmod | grep trace_events_sample | cut -d\' \' -f1", "trace_events_sample")
+ # check dir
+ self.cmd_and_check("ls /sys/kernel/debug/tracing/events/ | grep sample-trace", "sample-trace")
+ # enable trace
+ self.cmd_and_check("echo 1 > /sys/kernel/debug/tracing/events/sample-trace/enable")
+ self.cmd_and_check("cat /sys/kernel/debug/tracing/events/sample-trace/enable")
+ # check result
+ status = 1
+ count = 0
+ while status != 0:
+ time.sleep(1)
+ status, output = self.target.run('cat /sys/kernel/debug/tracing/trace | grep hello | head -n1 | cut -d\':\' -f2')
+ if " foo_bar" in output:
+ break
+ count = count + 1
+ if count > 5:
+ self.assertTrue(False, "Time out when check result")
+ # disable trace
+ self.cmd_and_check("echo 0 > /sys/kernel/debug/tracing/events/sample-trace/enable")
+ # clean up trace
+ self.cmd_and_check("echo > /sys/kernel/debug/tracing/trace")
+ # rmmod
+ self.cmd_and_check("rmmod trace-events-sample")
+
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_trace_printk(self):
+ # check config
+ self.check_config("CONFIG_TRACING_SUPPORT")
+ # make sure if module exists
+ self.check_module_exist("trace_printk/", "trace-printk.ko")
+ # modprobe
+ self.cmd_and_check("modprobe trace-printk")
+ # lsmod
+ self.cmd_and_check("lsmod | grep trace_printk | cut -d\' \' -f1", "trace_printk")
+ # check result
+ self.cmd_and_check("cat /sys/kernel/debug/tracing/trace | grep trace_printk_irq_work | head -n1 | cut -d\':\' -f2", " trace_printk_irq_work")
+ # clean up trace
+ self.cmd_and_check("echo > /sys/kernel/debug/tracing/trace")
+ # rmmod
+ self.cmd_and_check("rmmod trace-printk")
+
+ # hw breakpoint
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_hw_breakpoint_example(self):
+ # check arch
+ status, output = self.target.run("uname -m")
+ result = ("x86" in output) or ("aarch64" in output)
+ if not result:
+ self.skipTest("the arch doesn't support hw breakpoint" % output)
+ # check config
+ self.check_config("CONFIG_KALLSYMS_ALL")
+ # make sure if module exists
+ self.check_module_exist("hw_breakpoint/", "data_breakpoint.ko")
+ # modprobe
+ self.cmd_and_check("modprobe data_breakpoint")
+ # lsmod
+ self.cmd_and_check("lsmod | grep data_breakpoint | cut -d\' \' -f1", "data_breakpoint")
+ # check result
+ self.cmd_and_check("cat /var/log/messages | grep sample_hbp_handler", "sample_hbp_handler")
+ # rmmod
+ self.cmd_and_check("rmmod data_breakpoint")
+
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_configfs_sample(self):
+ # check config
+ status, ret = self.target.run('zcat /proc/config.gz | grep CONFIG_CONFIGFS_FS')
+ if not ["CONFIG_CONFIGFS_FS=m" in ret or "CONFIG_CONFIGFS_FS=y" in ret]:
+ self.skipTest("CONFIG error")
+ # make sure if module exists
+ self.check_module_exist("configfs/", "configfs_sample.ko")
+ # modprobe
+ self.cmd_and_check("modprobe configfs_sample")
+ # lsmod
+ self.cmd_and_check("lsmod | grep configfs_sample | cut -d\' \' -f1 | head -n1", "configfs_sample")
+
+ status = 1
+ count = 0
+ while status != 0:
+ time.sleep(1)
+ status, ret = self.target.run('cat /sys/kernel/config/01-childless/description')
+ count = count + 1
+ if count > 200:
+ self.skipTest("Time out for check dir")
+
+ # rmmod
+ self.cmd_and_check("rmmod configfs_sample")
+
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_cn_test(self):
+ # make sure if module exists
+ self.check_module_exist("connector/", "cn_test.ko")
+ # modprobe
+ self.cmd_and_check("modprobe cn_test")
+ # lsmod
+ self.cmd_and_check("lsmod | grep cn_test | cut -d\' \' -f1", "cn_test")
+ # check result
+ self.cmd_and_check("cat /proc/net/connector | grep cn_test | head -n1 | cut -d\' \' -f1", "cn_test")
+ # rmmod
+ self.cmd_and_check("rmmod cn_test")
diff --git a/meta/lib/oeqa/runtime/cases/ldd.py b/meta/lib/oeqa/runtime/cases/ldd.py
index c6d92fd5af8..5bde1845d9c 100644
--- a/meta/lib/oeqa/runtime/cases/ldd.py
+++ b/meta/lib/oeqa/runtime/cases/ldd.py
@@ -2,24 +2,23 @@ from oeqa.runtime.case import OERuntimeTestCase
from oeqa.core.decorator.depends import OETestDepends
from oeqa.core.decorator.oeid import OETestID
from oeqa.core.decorator.data import skipIfNotFeature
+from oeqa.runtime.decorator.package import OEHasPackage
class LddTest(OERuntimeTestCase):
@OETestID(962)
- @skipIfNotFeature('tools-sdk',
- 'Test requires tools-sdk to be in IMAGE_FEATURES')
+ @OEHasPackage(["ldd"])
@OETestDepends(['ssh.SSHTest.test_ssh'])
- def test_ldd_exists(self):
+ def test_ldd(self):
status, output = self.target.run('which ldd')
msg = 'ldd does not exist in PATH: which ldd: %s' % output
self.assertEqual(status, 0, msg=msg)
- @OETestID(239)
- @OETestDepends(['ldd.LddTest.test_ldd_exists'])
- def test_ldd_rtldlist_check(self):
cmd = ('for i in $(which ldd | xargs cat | grep "^RTLDLIST"| '
'cut -d\'=\' -f2|tr -d \'"\'); '
'do test -f $i && echo $i && break; done')
status, output = self.target.run(cmd)
- msg = "ldd path not correct or RTLDLIST files don't exist."
- self.assertEqual(status, 0, msg=msg)
+ self.assertEqual(status, 0, msg="ldd path not correct or RTLDLIST files don't exist.")
+
+ status, output = self.target.run("ldd /bin/true")
+ self.assertEqual(status, 0, msg="ldd failed to execute: %s" % output)
diff --git a/meta/lib/oeqa/runtime/cases/logrotate.py b/meta/lib/oeqa/runtime/cases/logrotate.py
index 992fef29891..db6e695eef0 100644
--- a/meta/lib/oeqa/runtime/cases/logrotate.py
+++ b/meta/lib/oeqa/runtime/cases/logrotate.py
@@ -21,9 +21,9 @@ class LogrotateTest(OERuntimeTestCase):
self.assertEqual(status, 0, msg = msg)
cmd = ('sed -i "s#wtmp {#wtmp {\\n olddir $HOME/logrotate_dir#"'
- ' /etc/logrotate.conf')
+ ' /etc/logrotate.d/wtmp')
status, output = self.target.run(cmd)
- msg = ('Could not write to logrotate.conf file. Status and output: '
+ msg = ('Could not write to logrotate.d/wtmp file. Status and output: '
' %s and %s' % (status, output))
self.assertEqual(status, 0, msg = msg)
diff --git a/meta/lib/oeqa/runtime/cases/multilib.py b/meta/lib/oeqa/runtime/cases/multilib.py
index 8c167f1008e..89020386b18 100644
--- a/meta/lib/oeqa/runtime/cases/multilib.py
+++ b/meta/lib/oeqa/runtime/cases/multilib.py
@@ -27,6 +27,8 @@ 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):
"""
Check that a multilib image has both 32-bit and 64-bit libc in.
@@ -36,6 +38,6 @@ class MultilibTest(OERuntimeTestCase):
@OETestID(279)
@OETestDepends(['multilib.MultilibTest.test_check_multilib_libc'])
- @OEHasPackage(['lib32-connman'])
+ @OEHasPackage(['lib32-connman', '!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 005b6978d9d..a92a1f2bcb3 100644
--- a/meta/lib/oeqa/runtime/cases/oe_syslog.py
+++ b/meta/lib/oeqa/runtime/cases/oe_syslog.py
@@ -8,12 +8,14 @@ class SyslogTest(OERuntimeTestCase):
@OETestID(201)
@OETestDepends(['ssh.SSHTest.test_ssh'])
- @OEHasPackage(["busybox-syslog", "sysklogd"])
+ @OEHasPackage(["busybox-syslog", "sysklogd", "rsyslog", "syslog-ng"])
def test_syslog_running(self):
- cmd = '%s | grep -i [s]yslogd' % self.tc.target_cmds['ps']
- status, output = self.target.run(cmd)
- msg = "No syslogd process; ps output: %s" % output
+ status, output = self.target.run(self.tc.target_cmds['ps'])
+ msg = "Failed to execute %s" % self.tc.target_cmds['ps']
self.assertEqual(status, 0, msg=msg)
+ msg = "No syslog daemon process; %s output:\n%s" % (self.tc.target_cmds['ps'], output)
+ hasdaemon = "syslogd" in output or "syslog-ng" in output
+ self.assertTrue(hasdaemon, msg=msg)
class SyslogTestConfig(OERuntimeTestCase):
@@ -45,7 +47,7 @@ class SyslogTestConfig(OERuntimeTestCase):
@OETestID(202)
@OETestDepends(['oe_syslog.SyslogTestConfig.test_syslog_logger'])
- @OEHasPackage(["!sysklogd", "busybox"])
+ @OEHasPackage(["busybox-syslog"])
@skipIfDataVar('VIRTUAL-RUNTIME_init_manager', 'systemd',
'Not appropiate for systemd image')
def test_syslog_startup_config(self):
diff --git a/meta/lib/oeqa/runtime/cases/parselogs.py b/meta/lib/oeqa/runtime/cases/parselogs.py
index 1f36c610812..f6e9820cdcf 100644
--- a/meta/lib/oeqa/runtime/cases/parselogs.py
+++ b/meta/lib/oeqa/runtime/cases/parselogs.py
@@ -49,6 +49,10 @@ common_errors = [
"error: couldn\'t mount because of unsupported optional features",
"GPT: Use GNU Parted to correct GPT errors",
"Cannot set xattr user.Librepo.DownloadInProgress",
+ "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 "
]
video_related = [
@@ -120,15 +124,6 @@ ignore_errors = {
'dmi: Firmware registration failed.',
'irq: type mismatch, failed to map hwirq-27 for /intc',
] + common_errors,
- 'emenlow' : [
- '[Firmware Bug]: ACPI: No _BQC method, cannot determine initial brightness',
- '(EE) Failed to load module "psb"',
- '(EE) Failed to load module psb',
- '(EE) Failed to load module "psbdrv"',
- '(EE) Failed to load module psbdrv',
- '(EE) open /dev/fb0: No such file or directory',
- '(EE) AIGLX: reverting to software rendering',
- ] + x86_common,
'intel-core2-32' : [
'ACPI: No _BQC method, cannot determine initial brightness',
'[Firmware Bug]: ACPI: No _BQC method, cannot determine initial brightness',
@@ -156,7 +151,6 @@ ignore_errors = {
'Bluetooth: hci0: Failed to send firmware data (-38)',
'atkbd serio0: Failed to enable keyboard on isa0060/serio0',
] + x86_common,
- 'crownbay' : x86_common,
'genericx86' : x86_common,
'genericx86-64' : [
'Direct firmware load for i915',
@@ -169,10 +163,6 @@ ignore_errors = {
'edgerouter' : [
'Fatal server error:',
] + common_errors,
- 'jasperforest' : [
- 'Activated service \'org.bluez\' failed:',
- 'Unable to find NFC netlink family',
- ] + common_errors,
}
log_locations = ["/var/log/","/var/log/dmesg", "/tmp/dmesg_output.log"]
@@ -323,7 +313,7 @@ class ParseLogsTest(OERuntimeTestCase):
pass
if result is not None:
- results[log.replace('target_logs/','')] = {}
+ results[log] = {}
rez = result.splitlines()
for xrez in rez:
@@ -333,7 +323,7 @@ class ParseLogsTest(OERuntimeTestCase):
grep_output = check_output(cmd).decode('utf-8')
except:
pass
- results[log.replace('target_logs/','')][xrez]=grep_output
+ results[log][xrez]=grep_output
return results
diff --git a/meta/lib/oeqa/runtime/cases/perl.py b/meta/lib/oeqa/runtime/cases/perl.py
index d0b7e8ed925..afeeb180e24 100644
--- a/meta/lib/oeqa/runtime/cases/perl.py
+++ b/meta/lib/oeqa/runtime/cases/perl.py
@@ -1,37 +1,13 @@
import os
from oeqa.runtime.case import OERuntimeTestCase
-from oeqa.core.decorator.depends import OETestDepends
from oeqa.core.decorator.oeid import OETestID
from oeqa.runtime.decorator.package import OEHasPackage
class PerlTest(OERuntimeTestCase):
-
- @classmethod
- def setUpClass(cls):
- src = os.path.join(cls.tc.files_dir, 'test.pl')
- dst = '/tmp/test.pl'
- cls.tc.target.copyTo(src, dst)
-
- @classmethod
- def tearDownClass(cls):
- dst = '/tmp/test.pl'
- cls.tc.target.run('rm %s' % dst)
-
- @OETestID(1141)
- @OETestDepends(['ssh.SSHTest.test_ssh'])
- @OEHasPackage(['perl'])
- def test_perl_exists(self):
- status, output = self.target.run('which perl')
- msg = 'Perl binary not in PATH or not on target.'
- self.assertEqual(status, 0, msg=msg)
-
@OETestID(208)
- @OETestDepends(['perl.PerlTest.test_perl_exists'])
+ @OEHasPackage(['perl'])
def test_perl_works(self):
- status, output = self.target.run('perl /tmp/test.pl')
- msg = 'Exit status was not 0. Output: %s' % output
- self.assertEqual(status, 0, msg=msg)
-
- msg = 'Incorrect output: %s' % output
- self.assertEqual(output, "the value of a is 0.01", msg=msg)
+ status, output = self.target.run("perl -e '$_=\"Uryyb, jbeyq\"; tr/a-zA-Z/n-za-mN-ZA-M/;print'")
+ self.assertEqual(status, 0)
+ self.assertEqual(output, "Hello, world")
diff --git a/meta/lib/oeqa/runtime/cases/python.py b/meta/lib/oeqa/runtime/cases/python.py
index bf3e1791638..4419a9f6394 100644
--- a/meta/lib/oeqa/runtime/cases/python.py
+++ b/meta/lib/oeqa/runtime/cases/python.py
@@ -1,43 +1,21 @@
-import os
-
from oeqa.runtime.case import OERuntimeTestCase
from oeqa.core.decorator.depends import OETestDepends
from oeqa.core.decorator.oeid import OETestID
-from oeqa.runtime.decorator.package import OEHasPackage
class PythonTest(OERuntimeTestCase):
-
@classmethod
def setUpClass(cls):
- src = os.path.join(cls.tc.files_dir, 'test.py')
- dst = '/tmp/test.py'
- cls.tc.target.copyTo(src, dst)
-
- @classmethod
- def tearDownClass(cls):
- dst = '/tmp/test.py'
- cls.tc.target.run('rm %s' % dst)
-
- @OETestID(1145)
- @OETestDepends(['ssh.SSHTest.test_ssh'])
- @OEHasPackage(['python-core'])
- def test_python_exists(self):
- status, output = self.target.run('which python')
- msg = 'Python binary not in PATH or not on target.'
- self.assertEqual(status, 0, msg=msg)
+ import unittest
+ if "python3-core" not in cls.tc.image_packages:
+ raise unittest.SkipTest("Python3 not on target")
@OETestID(965)
- @OETestDepends(['python.PythonTest.test_python_exists'])
- def test_python_stdout(self):
- status, output = self.target.run('python /tmp/test.py')
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_python3(self):
+ cmd = "python3 -c \"import codecs; print(codecs.encode('Uryyb, jbeyq', 'rot13'))\""
+ 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, "the value of a is 0.01", msg=msg)
-
- @OETestID(1146)
- @OETestDepends(['python.PythonTest.test_python_stdout'])
- def test_python_testfile(self):
- status, output = self.target.run('ls /tmp/testfile.python')
- self.assertEqual(status, 0, msg='Python test file generate failed.')
+ self.assertEqual(output, "Hello, world", msg=msg)
diff --git a/meta/lib/oeqa/runtime/cases/rpm.py b/meta/lib/oeqa/runtime/cases/rpm.py
index 05b94c7b40e..1e5e4631d37 100644
--- a/meta/lib/oeqa/runtime/cases/rpm.py
+++ b/meta/lib/oeqa/runtime/cases/rpm.py
@@ -16,6 +16,7 @@ class RpmBasicTest(OERuntimeTestCase):
cls.skipTest('Tests require image to be build from rpm')
@OETestID(960)
+ @OEHasPackage(['rpm'])
@OETestDepends(['ssh.SSHTest.test_ssh'])
def test_rpm_help(self):
status, output = self.target.run('rpm --help')
@@ -38,31 +39,31 @@ class RpmInstallRemoveTest(OERuntimeTestCase):
pkgarch = cls.td['TUNE_PKGARCH'].replace('-', '_')
rpmdir = os.path.join(cls.tc.td['DEPLOY_DIR'], 'rpm', pkgarch)
- # Pick rpm-doc as a test file to get installed, because it's small
+ # Pick base-passwd-doc as a test file to get installed, because it's small
# and it will always be built for standard targets
- rpm_doc = 'rpm-doc-*.%s.rpm' % pkgarch
+ rpm_doc = 'base-passwd-doc-*.%s.rpm' % pkgarch
for f in fnmatch.filter(os.listdir(rpmdir), rpm_doc):
test_file = os.path.join(rpmdir, f)
- dst = '/tmp/rpm-doc.rpm'
+ dst = '/tmp/base-passwd-doc.rpm'
cls.tc.target.copyTo(test_file, dst)
@classmethod
def tearDownClass(cls):
- dst = '/tmp/rpm-doc.rpm'
+ dst = '/tmp/base-passwd-doc.rpm'
cls.tc.target.run('rm -f %s' % dst)
@OETestID(192)
@OETestDepends(['rpm.RpmBasicTest.test_rpm_help'])
def test_rpm_install(self):
- status, output = self.target.run('rpm -ivh /tmp/rpm-doc.rpm')
- msg = 'Failed to install rpm-doc package: %s' % output
+ status, output = self.target.run('rpm -ivh /tmp/base-passwd-doc.rpm')
+ msg = 'Failed to install base-passwd-doc package: %s' % output
self.assertEqual(status, 0, msg=msg)
@OETestID(194)
@OETestDepends(['rpm.RpmInstallRemoveTest.test_rpm_install'])
def test_rpm_remove(self):
- status,output = self.target.run('rpm -e rpm-doc')
- msg = 'Failed to remove rpm-doc package: %s' % output
+ status,output = self.target.run('rpm -e base-passwd-doc')
+ msg = 'Failed to remove base-passwd-doc package: %s' % output
self.assertEqual(status, 0, msg=msg)
@OETestID(1096)
@@ -106,7 +107,7 @@ class RpmInstallRemoveTest(OERuntimeTestCase):
Expected: There should be some RPM prefixed entries in the above file.
Product: BSPs
Author: Alexandru Georgescu <alexandru.c.georgescu@intel.com>
- Author: Alexander Kanavin <alexander.kanavin@intel.com>
+ Author: Alexander Kanavin <alex.kanavin@gmail.com>
AutomatedBy: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
"""
db_files_cmd = 'ls /var/lib/rpm/__db.*'
@@ -118,16 +119,16 @@ class RpmInstallRemoveTest(OERuntimeTestCase):
self.assertEqual(0, status, msg=msg)
# Remove the package just in case
- self.target.run('rpm -e rpm-doc')
+ self.target.run('rpm -e base-passwd-doc')
# Install/Remove a package 10 times
for i in range(10):
- status, output = self.target.run('rpm -ivh /tmp/rpm-doc.rpm')
- msg = 'Failed to install rpm-doc package. Reason: {}'.format(output)
+ status, output = self.target.run('rpm -ivh /tmp/base-passwd-doc.rpm')
+ msg = 'Failed to install base-passwd-doc package. Reason: {}'.format(output)
self.assertEqual(0, status, msg=msg)
- status, output = self.target.run('rpm -e rpm-doc')
- msg = 'Failed to remove rpm-doc package. Reason: {}'.format(output)
+ status, output = self.target.run('rpm -e base-passwd-doc')
+ msg = 'Failed to remove base-passwd-doc package. Reason: {}'.format(output)
self.assertEqual(0, status, msg=msg)
# if using systemd this should ensure all entries are flushed to /var
diff --git a/meta/lib/oeqa/runtime/cases/scanelf.py b/meta/lib/oeqa/runtime/cases/scanelf.py
deleted file mode 100644
index 3ba1f78af9b..00000000000
--- a/meta/lib/oeqa/runtime/cases/scanelf.py
+++ /dev/null
@@ -1,26 +0,0 @@
-from oeqa.runtime.case import OERuntimeTestCase
-from oeqa.core.decorator.depends import OETestDepends
-from oeqa.core.decorator.oeid import OETestID
-from oeqa.runtime.decorator.package import OEHasPackage
-
-class ScanelfTest(OERuntimeTestCase):
- scancmd = 'scanelf --quiet --recursive --mount --ldpath --path'
-
- @OETestID(966)
- @OETestDepends(['ssh.SSHTest.test_ssh'])
- @OEHasPackage(['pax-utils'])
- def test_scanelf_textrel(self):
- # print TEXTREL information
- cmd = '%s --textrel' % self.scancmd
- status, output = self.target.run(cmd)
- msg = '\n'.join([cmd, output])
- self.assertEqual(output.strip(), '', msg=msg)
-
- @OETestID(967)
- @OETestDepends(['scanelf.ScanelfTest.test_scanelf_textrel'])
- def test_scanelf_rpath(self):
- # print RPATH information
- cmd = '%s --textrel --rpath' % self.scancmd
- status, output = self.target.run(cmd)
- msg = '\n'.join([cmd, output])
- self.assertEqual(output.strip(), '', msg=msg)
diff --git a/meta/lib/oeqa/runtime/cases/stap.py b/meta/lib/oeqa/runtime/cases/stap.py
index fc728bfc553..96e197a2d68 100644
--- a/meta/lib/oeqa/runtime/cases/stap.py
+++ b/meta/lib/oeqa/runtime/cases/stap.py
@@ -25,7 +25,7 @@ class StapTest(OERuntimeTestCase):
def test_stap(self):
cmds = [
'cd /usr/src/kernel && make scripts prepare',
- 'cd /lib/modules/`uname -r` && (if [ ! -L build ]; then ln -s /usr/src/kernel build; fi)',
+ '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:
diff --git a/meta/lib/oeqa/runtime/cases/systemd.py b/meta/lib/oeqa/runtime/cases/systemd.py
index db69384c8a0..460b8fc3a10 100644
--- a/meta/lib/oeqa/runtime/cases/systemd.py
+++ b/meta/lib/oeqa/runtime/cases/systemd.py
@@ -11,11 +11,11 @@ from oeqa.core.decorator.data import skipIfNotFeature
class SystemdTest(OERuntimeTestCase):
def systemctl(self, action='', target='', expected=0, verbose=False):
- command = 'systemctl %s %s' % (action, target)
+ command = 'SYSTEMD_BUS_TIMEOUT=240s systemctl %s %s' % (action, target)
status, output = self.target.run(command)
message = '\n'.join([command, output])
if status != expected and verbose:
- cmd = 'systemctl status --full %s' % target
+ cmd = 'SYSTEMD_BUS_TIMEOUT=240s systemctl status --full %s' % target
message += self.target.run(cmd)[1]
self.assertEqual(status, expected, message)
return output
@@ -63,7 +63,7 @@ class SystemdBasicTests(SystemdTest):
"""
endtime = time.time() + (60 * 2)
while True:
- status, output = self.target.run('systemctl --state=activating')
+ status, output = self.target.run('SYSTEMD_BUS_TIMEOUT=240s systemctl --state=activating')
if "0 loaded units listed" in output:
return (True, '')
if time.time() >= endtime:
diff --git a/meta/lib/oeqa/runtime/context.py b/meta/lib/oeqa/runtime/context.py
index 0294003fc7e..a7f38239966 100644
--- a/meta/lib/oeqa/runtime/context.py
+++ b/meta/lib/oeqa/runtime/context.py
@@ -112,12 +112,9 @@ class OERuntimeTestContextExecutor(OETestContextExecutor):
# XXX: Don't base your targets on this code it will be refactored
# in the near future.
# Custom target module loading
- try:
- target_modules_path = kwargs.get('target_modules_path', '')
- controller = OERuntimeTestContextExecutor.getControllerModule(target_type, target_modules_path)
- target = controller(logger, target_ip, server_ip, **kwargs)
- except ImportError as e:
- raise TypeError("Failed to import %s from available controller modules" % target_type)
+ target_modules_path = kwargs.get('target_modules_path', '')
+ controller = OERuntimeTestContextExecutor.getControllerModule(target_type, target_modules_path)
+ target = controller(logger, target_ip, server_ip, **kwargs)
return target
@@ -173,10 +170,7 @@ class OERuntimeTestContextExecutor(OETestContextExecutor):
def _loadControllerFromModule(target, modulename):
obj = None
# import module, allowing it to raise import exception
- try:
- module = __import__(modulename, globals(), locals(), [target])
- except Exception as e:
- return obj
+ 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:
diff --git a/meta/lib/oeqa/sdk/cases/assimp.py b/meta/lib/oeqa/sdk/cases/assimp.py
new file mode 100644
index 00000000000..26c1df089ce
--- /dev/null
+++ b/meta/lib/oeqa/sdk/cases/assimp.py
@@ -0,0 +1,63 @@
+import os, subprocess, unittest
+import bb
+from oeqa.sdk.case import OESDKTestCase
+
+from oeqa.utils.subprocesstweak import errors_have_output
+errors_have_output()
+
+class BuildAssimp(OESDKTestCase):
+ """
+ Test case to build a project using cmake.
+ """
+
+ td_vars = ['DATETIME', 'TARGET_OS', 'TARGET_ARCH']
+
+ @classmethod
+ def setUpClass(self):
+ if not (self.tc.hasHostPackage("nativesdk-cmake") or
+ self.tc.hasHostPackage("cmake-native")):
+ raise unittest.SkipTest("Needs cmake")
+
+ def fetch(self, workdir, dl_dir, url, archive=None):
+ if not archive:
+ from urllib.parse import urlparse
+ archive = os.path.basename(urlparse(url).path)
+
+ if dl_dir:
+ tarball = os.path.join(dl_dir, archive)
+ if os.path.exists(tarball):
+ return tarball
+
+ tarball = os.path.join(workdir, archive)
+ subprocess.check_output(["wget", "-O", tarball, url])
+ return tarball
+
+ def test_assimp(self):
+ import tempfile
+ import oe.qa, oe.elf
+
+ with tempfile.TemporaryDirectory(prefix="assimp", dir=self.tc.sdk_dir) as testdir:
+ dl_dir = self.td.get('DL_DIR', None)
+ tarball = self.fetch(testdir, dl_dir, "https://github.com/assimp/assimp/archive/v4.1.0.tar.gz")
+ subprocess.check_output(["tar", "xf", tarball, "-C", testdir])
+
+ sourcedir = os.path.join(testdir, "assimp-4.1.0")
+ builddir = os.path.join(testdir, "build")
+ installdir = os.path.join(testdir, "install")
+ bb.utils.mkdirhier(builddir)
+
+ self._run("cd %s && cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON %s " % (builddir, sourcedir))
+ self._run("cmake --build %s -- -j" % builddir)
+ self._run("cmake --build %s --target install -- DESTDIR=%s" % (builddir, installdir))
+
+ elf = oe.qa.ELFFile(os.path.join(installdir, "usr", "local", "lib", "libassimp.so.4.1.0"))
+ elf.open()
+
+ output = self._run("echo $OECORE_TARGET_OS:$OECORE_TARGET_ARCH")
+ target_os, target_arch = output.strip().split(":")
+ machine_data = oe.elf.machine_dict(None)[target_os][target_arch]
+ (machine, osabi, abiversion, endian, bits) = machine_data
+
+ self.assertEqual(machine, elf.machine())
+ self.assertEqual(bits, elf.abiSize())
+ self.assertEqual(endian, elf.isLittleEndian())
diff --git a/meta/lib/oeqa/sdk/cases/buildgalculator.py b/meta/lib/oeqa/sdk/cases/buildgalculator.py
index 780afccc744..050d1b3b520 100644
--- a/meta/lib/oeqa/sdk/cases/buildgalculator.py
+++ b/meta/lib/oeqa/sdk/cases/buildgalculator.py
@@ -8,9 +8,11 @@ class GalculatorTest(OESDKTestCase):
@classmethod
def setUpClass(self):
- if not (self.tc.hasTargetPackage("gtk\+3") or\
- self.tc.hasTargetPackage("libgtk-3.0")):
+ if not (self.tc.hasTargetPackage("gtk+3", multilib=True) or \
+ self.tc.hasTargetPackage("libgtk-3.0", multilib=True)):
raise unittest.SkipTest("GalculatorTest class: SDK don't support gtk+3")
+ if not (self.tc.hasHostPackage("nativesdk-gettext-dev")):
+ raise unittest.SkipTest("GalculatorTest class: SDK doesn't contain gettext")
def test_galculator(self):
dl_dir = self.td.get('DL_DIR', None)
diff --git a/meta/lib/oeqa/sdk/cases/buildlzip.py b/meta/lib/oeqa/sdk/cases/buildlzip.py
index 3a89ce86276..b28cc3a595e 100644
--- a/meta/lib/oeqa/sdk/cases/buildlzip.py
+++ b/meta/lib/oeqa/sdk/cases/buildlzip.py
@@ -17,8 +17,8 @@ class BuildLzipTest(OESDKTestCase):
machine = self.td.get("MACHINE")
- if not (self.tc.hasTargetPackage("packagegroup-cross-canadian-%s" % machine) or
- self.tc.hasTargetPackage("gcc")):
+ if not (self.tc.hasHostPackage("packagegroup-cross-canadian-%s" % machine) or
+ self.tc.hasHostPackage("^gcc-", regex=True)):
raise unittest.SkipTest("SDK doesn't contain a cross-canadian toolchain")
def test_lzip(self):
diff --git a/meta/lib/oeqa/sdk/cases/gcc.py b/meta/lib/oeqa/sdk/cases/gcc.py
index d11f4b63fbf..b32b01fc241 100644
--- a/meta/lib/oeqa/sdk/cases/gcc.py
+++ b/meta/lib/oeqa/sdk/cases/gcc.py
@@ -18,8 +18,8 @@ class GccCompileTest(OESDKTestCase):
def setUp(self):
machine = self.td.get("MACHINE")
- if not (self.tc.hasTargetPackage("packagegroup-cross-canadian-%s" % machine) or
- self.tc.hasTargetPackage("gcc")):
+ if not (self.tc.hasHostPackage("packagegroup-cross-canadian-%s" % machine) or
+ self.tc.hasHostPackage("^gcc-", regex=True)):
raise unittest.SkipTest("GccCompileTest class: SDK doesn't contain a cross-canadian toolchain")
def test_gcc_compile(self):
diff --git a/meta/lib/oeqa/sdk/cases/perl.py b/meta/lib/oeqa/sdk/cases/perl.py
index 8085678116c..ff50b468006 100644
--- a/meta/lib/oeqa/sdk/cases/perl.py
+++ b/meta/lib/oeqa/sdk/cases/perl.py
@@ -1,8 +1,4 @@
-import os
-import shutil
import unittest
-
-from oeqa.core.utils.path import remove_safe
from oeqa.sdk.case import OESDKTestCase
class PerlTest(OESDKTestCase):
@@ -12,17 +8,10 @@ class PerlTest(OESDKTestCase):
self.tc.hasHostPackage("perl-native")):
raise unittest.SkipTest("No perl package in the SDK")
- for f in ['test.pl']:
- shutil.copyfile(os.path.join(self.tc.files_dir, f),
- os.path.join(self.tc.sdk_dir, f))
- self.testfile = os.path.join(self.tc.sdk_dir, "test.pl")
-
- def test_perl_exists(self):
- self._run('which perl')
-
- def test_perl_works(self):
- self._run('perl %s' % self.testfile)
-
- @classmethod
- def tearDownClass(self):
- remove_safe(self.testfile)
+ def test_perl(self):
+ try:
+ cmd = "perl -e '$_=\"Uryyb, jbeyq\"; tr/a-zA-Z/n-za-mN-ZA-M/;print'"
+ output = self._run(cmd)
+ self.assertEqual(output, "Hello, world")
+ except subprocess.CalledProcessError as e:
+ self.fail("Unexpected exit %d (output %s)" % (e.returncode, e.output))
diff --git a/meta/lib/oeqa/sdk/cases/python.py b/meta/lib/oeqa/sdk/cases/python.py
index 72dfcc72bde..bd5f1f67be2 100644
--- a/meta/lib/oeqa/sdk/cases/python.py
+++ b/meta/lib/oeqa/sdk/cases/python.py
@@ -1,32 +1,17 @@
-import os
-import shutil
-import unittest
-
-from oeqa.core.utils.path import remove_safe
+import subprocess, unittest
from oeqa.sdk.case import OESDKTestCase
class PythonTest(OESDKTestCase):
@classmethod
def setUpClass(self):
- if not (self.tc.hasHostPackage("nativesdk-python") or
- self.tc.hasHostPackage("python-native")):
+ if not (self.tc.hasHostPackage("nativesdk-python3") or
+ self.tc.hasHostPackage("python3-native")):
raise unittest.SkipTest("No python package in the SDK")
- for f in ['test.py']:
- shutil.copyfile(os.path.join(self.tc.files_dir, f),
- os.path.join(self.tc.sdk_dir, f))
-
- def test_python_exists(self):
- self._run('which python')
-
- def test_python_stdout(self):
- output = self._run('python %s/test.py' % self.tc.sdk_dir)
- self.assertEqual(output.strip(), "the value of a is 0.01", msg="Incorrect output: %s" % output)
-
- def test_python_testfile(self):
- self._run('ls /tmp/testfile.python')
-
- @classmethod
- def tearDownClass(self):
- remove_safe("%s/test.py" % self.tc.sdk_dir)
- remove_safe("/tmp/testfile.python")
+ def test_python3(self):
+ try:
+ cmd = "python3 -c \"import codecs; print(codecs.encode('Uryyb, jbeyq', 'rot13'))\""
+ output = self._run(cmd)
+ self.assertEqual(output, "Hello, world\n")
+ except subprocess.CalledProcessError as e:
+ self.fail("Unexpected exit %d (output %s)" % (e.returncode, e.output))
diff --git a/meta/lib/oeqa/sdk/context.py b/meta/lib/oeqa/sdk/context.py
index b3d7c751837..adc4166fd2d 100644
--- a/meta/lib/oeqa/sdk/context.py
+++ b/meta/lib/oeqa/sdk/context.py
@@ -6,10 +6,9 @@ import sys
import glob
import re
-from oeqa.core.context import OETestContextExecutor
-from oeqa.core.threaded import OETestContextThreaded
+from oeqa.core.context import OETestContext, OETestContextExecutor
-class OESDKTestContext(OETestContextThreaded):
+class OESDKTestContext(OETestContext):
sdk_files_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "files")
def __init__(self, td=None, logger=None, sdk_dir=None, sdk_env=None,
@@ -21,17 +20,30 @@ class OESDKTestContext(OETestContextThreaded):
self.target_pkg_manifest = target_pkg_manifest
self.host_pkg_manifest = host_pkg_manifest
- def _hasPackage(self, manifest, pkg):
- for host_pkg in manifest.keys():
- if re.search(pkg, host_pkg):
+ def _hasPackage(self, manifest, pkg, regex=False):
+ if regex:
+ # do regex match
+ pat = re.compile(pkg)
+ for p in manifest.keys():
+ if pat.search(p):
+ return True
+ else:
+ # do exact match
+ if pkg in manifest.keys():
return True
return False
- def hasHostPackage(self, pkg):
- return self._hasPackage(self.host_pkg_manifest, pkg)
+ def hasHostPackage(self, pkg, regex=False):
+ return self._hasPackage(self.host_pkg_manifest, pkg, regex=regex)
- def hasTargetPackage(self, pkg):
- return self._hasPackage(self.target_pkg_manifest, pkg)
+ def hasTargetPackage(self, pkg, multilib=False, regex=False):
+ if multilib:
+ # match multilib according to sdk_env
+ mls = self.td.get('MULTILIB_VARIANTS', '').split()
+ for ml in mls:
+ if ('ml'+ml) in self.sdk_env:
+ pkg = ml + '-' + pkg
+ return self._hasPackage(self.target_pkg_manifest, pkg, regex=regex)
class OESDKTestContextExecutor(OETestContextExecutor):
_context_class = OESDKTestContext
@@ -66,6 +78,9 @@ class OESDKTestContextExecutor(OETestContextExecutor):
sdk_rgroup.add_argument('--sdk-dir', required=False, action='store',
help='sdk installed directory')
+ self.parser.add_argument('-j', '--num-processes', dest='processes', action='store',
+ type=int, help="number of processes to execute in parallel with")
+
@staticmethod
def _load_manifest(manifest):
pkg_manifest = {}
@@ -86,6 +101,7 @@ class OESDKTestContextExecutor(OETestContextExecutor):
OESDKTestContextExecutor._load_manifest(args.target_manifest)
self.tc_kwargs['init']['host_pkg_manifest'] = \
OESDKTestContextExecutor._load_manifest(args.host_manifest)
+ self.tc_kwargs['run']['processes'] = args.processes
@staticmethod
def _get_sdk_environs(sdk_dir):
diff --git a/meta/lib/oeqa/sdk/utils/sdkbuildproject.py b/meta/lib/oeqa/sdk/utils/sdkbuildproject.py
index 4e251142d7c..6fed73e3505 100644
--- a/meta/lib/oeqa/sdk/utils/sdkbuildproject.py
+++ b/meta/lib/oeqa/sdk/utils/sdkbuildproject.py
@@ -20,10 +20,9 @@ class SDKBuildProject(BuildProject):
BuildProject.__init__(self, uri, foldername, tmpdir=testpath, dl_dir=dl_dir)
def download_archive(self):
-
self._download_archive()
- cmd = 'tar xf %s%s -C %s' % (self.targetdir, self.archive, self.targetdir)
+ cmd = 'tar xf %s -C %s' % (os.path.join(self.targetdir, self.archive), self.targetdir)
subprocess.check_output(cmd, shell=True)
#Change targetdir to project folder
@@ -42,4 +41,9 @@ class SDKBuildProject(BuildProject):
def _run(self, cmd):
self.log("Running . %s; " % self.sdkenv + cmd)
- return subprocess.call(". %s; " % self.sdkenv + cmd, shell=True)
+ try:
+ output = subprocess.check_output(". %s; " % self.sdkenv + cmd, shell=True, stderr=subprocess.STDOUT)
+ except subprocess.CalledProcessError as exc:
+ print(exc.output.decode('utf-8'))
+ return exc.returncode
+ return 0
diff --git a/meta/lib/oeqa/sdkext/cases/devtool.py b/meta/lib/oeqa/sdkext/cases/devtool.py
index ea9051710ae..0860e8d17cf 100644
--- a/meta/lib/oeqa/sdkext/cases/devtool.py
+++ b/meta/lib/oeqa/sdkext/cases/devtool.py
@@ -6,7 +6,6 @@ import shutil
import subprocess
from oeqa.sdkext.case import OESDKExtTestCase
-from oeqa.core.decorator.depends import OETestDepends
from oeqa.core.decorator.oeid import OETestID
from oeqa.utils.httpserver import HTTPService
@@ -45,28 +44,23 @@ class DevtoolTest(OESDKExtTestCase):
self.assertEqual(output.startswith(self.tc.sdk_dir), True, \
msg="Seems that devtool isn't the eSDK one: %s" % output)
- @OETestDepends(['test_devtool_location'])
def test_devtool_add_reset(self):
self._run('devtool add myapp %s' % self.myapp_dst)
self._run('devtool reset myapp')
@OETestID(1605)
- @OETestDepends(['test_devtool_location'])
def test_devtool_build_make(self):
self._test_devtool_build(self.myapp_dst)
@OETestID(1606)
- @OETestDepends(['test_devtool_location'])
def test_devtool_build_esdk_package(self):
self._test_devtool_build_package(self.myapp_dst)
@OETestID(1607)
- @OETestDepends(['test_devtool_location'])
def test_devtool_build_cmake(self):
self._test_devtool_build(self.myapp_cmake_dst)
@OETestID(1608)
- @OETestDepends(['test_devtool_location'])
def test_extend_autotools_recipe_creation(self):
req = 'https://github.com/rdfa/librdfa'
recipe = "librdfa"
@@ -78,7 +72,6 @@ class DevtoolTest(OESDKExtTestCase):
self._run('devtool reset %s' % recipe)
@OETestID(1609)
- @OETestDepends(['test_devtool_location'])
def test_devtool_kernelmodule(self):
docfile = 'https://github.com/umlaeute/v4l2loopback.git'
recipe = 'v4l2loopback-driver'
@@ -89,7 +82,6 @@ class DevtoolTest(OESDKExtTestCase):
self._run('devtool reset %s' % recipe)
@OETestID(1610)
- @OETestDepends(['test_devtool_location'])
def test_recipes_for_nodejs(self):
package_nodejs = "npm://registry.npmjs.org;name=winston;version=2.2.0"
self._run('devtool add %s ' % package_nodejs)
diff --git a/meta/lib/oeqa/selftest/case.py b/meta/lib/oeqa/selftest/case.py
index e09915b4957..7a90a6b9758 100644
--- a/meta/lib/oeqa/selftest/case.py
+++ b/meta/lib/oeqa/selftest/case.py
@@ -213,31 +213,31 @@ to ensure accurate results.")
ftools.remove_from_file(self.testinc_path, data)
def recipeinc(self, recipe):
- """Return absolute path of meta-sefltest/recipes-test/<recipe>/test_recipe.inc"""
+ """Return absolute path of meta-selftest/recipes-test/<recipe>/test_recipe.inc"""
return os.path.join(self.testlayer_path, 'recipes-test', recipe, 'test_recipe.inc')
def write_recipeinc(self, recipe, data):
- """Write to meta-sefltest/recipes-test/<recipe>/test_recipe.inc"""
+ """Write to meta-selftest/recipes-test/<recipe>/test_recipe.inc"""
inc_file = self.recipeinc(recipe)
self.logger.debug("Writing to: %s\n%s\n" % (inc_file, data))
ftools.write_file(inc_file, data)
return inc_file
def append_recipeinc(self, recipe, data):
- """Append data to meta-sefltest/recipes-test/<recipe>/test_recipe.inc"""
+ """Append data to meta-selftest/recipes-test/<recipe>/test_recipe.inc"""
inc_file = self.recipeinc(recipe)
self.logger.debug("Appending to: %s\n%s\n" % (inc_file, data))
ftools.append_file(inc_file, data)
return inc_file
def remove_recipeinc(self, recipe, data):
- """Remove data from meta-sefltest/recipes-test/<recipe>/test_recipe.inc"""
+ """Remove data from meta-selftest/recipes-test/<recipe>/test_recipe.inc"""
inc_file = self.recipeinc(recipe)
self.logger.debug("Removing from: %s\n%s\n" % (inc_file, data))
ftools.remove_from_file(inc_file, data)
def delete_recipeinc(self, recipe):
- """Delete meta-sefltest/recipes-test/<recipe>/test_recipe.inc file"""
+ """Delete meta-selftest/recipes-test/<recipe>/test_recipe.inc file"""
inc_file = self.recipeinc(recipe)
self.logger.debug("Deleting file: %s" % inc_file)
try:
diff --git a/meta/lib/oeqa/selftest/cases/bblayers.py b/meta/lib/oeqa/selftest/cases/bblayers.py
index 90a2249b081..447c54b7e60 100644
--- a/meta/lib/oeqa/selftest/cases/bblayers.py
+++ b/meta/lib/oeqa/selftest/cases/bblayers.py
@@ -2,7 +2,7 @@ import os
import re
import oeqa.utils.ftools as ftools
-from oeqa.utils.commands import runCmd, get_bb_var
+from oeqa.utils.commands import runCmd, get_bb_var, get_bb_vars
from oeqa.selftest.case import OESelftestTestCase
from oeqa.core.decorator.oeid import OETestID
@@ -85,6 +85,31 @@ class BitbakeLayers(OESelftestTestCase):
self.assertNotEqual(result.status, 0, 'bitbake-layers show-recipes -i nonexistentclass should have failed')
self.assertIn('ERROR:', result.output)
+ def test_bitbakelayers_createlayer(self):
+ priority = 10
+ layername = 'test-bitbakelayer-layercreate'
+ layerpath = os.path.join(self.builddir, layername)
+ self.assertFalse(os.path.exists(layerpath), '%s should not exist at this point in time' % layerpath)
+ result = runCmd('bitbake-layers create-layer --priority=%d %s' % (priority, layerpath))
+ self.track_for_cleanup(layerpath)
+ result = runCmd('bitbake-layers add-layer %s' % layerpath)
+ self.add_command_to_tearDown('bitbake-layers remove-layer %s' % layerpath)
+ result = runCmd('bitbake-layers show-layers')
+ find_in_contents = re.search(re.escape(layername) + r'\s+' + re.escape(layerpath) + r'\s+' + re.escape(str(priority)), result.output)
+ self.assertTrue(find_in_contents, "%s not found in layers\n%s" % (layername, result.output))
+
+ layervars = ['BBFILE_PRIORITY', 'BBFILE_PATTERN', 'LAYERDEPENDS', 'LAYERSERIES_COMPAT']
+ bb_vars = get_bb_vars(['BBFILE_COLLECTIONS'] + ['%s_%s' % (v, layername) for v in layervars])
+
+ for v in layervars:
+ varname = '%s_%s' % (v, layername)
+ self.assertIsNotNone(bb_vars[varname], "%s not found" % varname)
+
+ find_in_contents = re.search(r'(^|\s)' + re.escape(layername) + r'($|\s)', bb_vars['BBFILE_COLLECTIONS'])
+ self.assertTrue(find_in_contents, "%s not in BBFILE_COLLECTIONS" % layername)
+
+ self.assertEqual(bb_vars['BBFILE_PRIORITY_%s' % layername], str(priority), 'BBFILE_PRIORITY_%s != %d' % (layername, priority))
+
def get_recipe_basename(self, recipe):
recipe_file = ""
result = runCmd("bitbake-layers show-recipes -f %s" % recipe)
diff --git a/meta/lib/oeqa/selftest/cases/bbtests.py b/meta/lib/oeqa/selftest/cases/bbtests.py
index 350614967c9..005fdd09640 100644
--- a/meta/lib/oeqa/selftest/cases/bbtests.py
+++ b/meta/lib/oeqa/selftest/cases/bbtests.py
@@ -15,16 +15,26 @@ class BitbakeTests(OESelftestTestCase):
return l
@OETestID(789)
+ # Test bitbake can run from the <builddir>/conf directory
def test_run_bitbake_from_dir_1(self):
os.chdir(os.path.join(self.builddir, 'conf'))
self.assertEqual(bitbake('-e').status, 0, msg = "bitbake couldn't run from \"conf\" dir")
@OETestID(790)
+ # Test bitbake can run from the <builddir>'s parent directory
def test_run_bitbake_from_dir_2(self):
my_env = os.environ.copy()
my_env['BBPATH'] = my_env['BUILDDIR']
os.chdir(os.path.dirname(os.environ['BUILDDIR']))
- self.assertEqual(bitbake('-e', env=my_env).status, 0, msg = "bitbake couldn't run from builddir")
+ self.assertEqual(bitbake('-e', env=my_env).status, 0, msg = "bitbake couldn't run from builddir's parent directory")
+
+ # Test bitbake can run from some other random system location (we use /tmp/)
+ def test_run_bitbake_from_dir_3(self):
+ my_env = os.environ.copy()
+ my_env['BBPATH'] = my_env['BUILDDIR']
+ os.chdir("/tmp/")
+ self.assertEqual(bitbake('-e', env=my_env).status, 0, msg = "bitbake couldn't run from /tmp/")
+
@OETestID(806)
def test_event_handler(self):
diff --git a/meta/lib/oeqa/selftest/cases/devtool.py b/meta/lib/oeqa/selftest/cases/devtool.py
index d5b6a46d491..3c1189003de 100644
--- a/meta/lib/oeqa/selftest/cases/devtool.py
+++ b/meta/lib/oeqa/selftest/cases/devtool.py
@@ -11,9 +11,123 @@ from oeqa.utils.commands import runCmd, bitbake, get_bb_var, create_temp_layer
from oeqa.utils.commands import get_bb_vars, runqemu, get_test_layer
from oeqa.core.decorator.oeid import OETestID
+oldmetapath = None
+
+def setUpModule():
+ import bb.utils
+
+ global templayerdir
+ templayerdir = tempfile.mkdtemp(prefix='devtoolqa')
+ corecopydir = os.path.join(templayerdir, 'core-copy')
+ bblayers_conf = os.path.join(os.environ['BUILDDIR'], 'conf', 'bblayers.conf')
+ edited_layers = []
+
+ # We need to take a copy of the meta layer so we can modify it and not
+ # have any races against other tests that might be running in parallel
+ # however things like COREBASE mean that you can't just copy meta, you
+ # need the whole repository.
+ def bblayers_edit_cb(layerpath, canonical_layerpath):
+ global oldmetapath
+ if not canonical_layerpath.endswith('/'):
+ # This helps us match exactly when we're using this path later
+ canonical_layerpath += '/'
+ if not edited_layers and canonical_layerpath.endswith('/meta/'):
+ edited_layers.append(layerpath)
+ oldmetapath = layerpath
+ result = runCmd('git rev-parse --show-toplevel', cwd=canonical_layerpath)
+ oldreporoot = result.output.rstrip()
+ newmetapath = os.path.join(corecopydir, os.path.relpath(oldmetapath, oldreporoot))
+ runCmd('git clone %s %s' % (oldreporoot, corecopydir), cwd=templayerdir)
+ # Now we need to copy any modified files
+ # You might ask "why not just copy the entire tree instead of
+ # cloning and doing this?" - well, the problem with that is
+ # TMPDIR or an equally large subdirectory might exist
+ # under COREBASE and we don't want to copy that, so we have
+ # to be selective.
+ result = runCmd('git status --porcelain', cwd=oldreporoot)
+ for line in result.output.splitlines():
+ if line.startswith(' M ') or line.startswith('?? '):
+ relpth = line.split()[1]
+ pth = os.path.join(oldreporoot, relpth)
+ if pth.startswith(canonical_layerpath):
+ if relpth.endswith('/'):
+ destdir = os.path.join(corecopydir, relpth)
+ shutil.copytree(pth, destdir)
+ else:
+ destdir = os.path.join(corecopydir, os.path.dirname(relpth))
+ bb.utils.mkdirhier(destdir)
+ shutil.copy2(pth, destdir)
+ return newmetapath
+ else:
+ return layerpath
+ bb.utils.edit_bblayers_conf(bblayers_conf, None, None, bblayers_edit_cb)
+
+def tearDownModule():
+ if oldmetapath:
+ edited_layers = []
+ def bblayers_edit_cb(layerpath, canonical_layerpath):
+ if not edited_layers and canonical_layerpath.endswith('/meta'):
+ edited_layers.append(layerpath)
+ return oldmetapath
+ else:
+ return layerpath
+ bblayers_conf = os.path.join(os.environ['BUILDDIR'], 'conf', 'bblayers.conf')
+ bb.utils.edit_bblayers_conf(bblayers_conf, None, None, bblayers_edit_cb)
+ shutil.rmtree(templayerdir)
+
class DevtoolBase(OESelftestTestCase):
- buffer = True
+ @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.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"""
+ self.assertTrue(os.path.isdir(os.path.join(repo_dir, '.git')),
+ 'git repository for external source tree not found')
+ result = runCmd('git status --porcelain', cwd=repo_dir)
+ self.assertEqual(result.output.strip(), "",
+ 'Created git repo is not clean')
+ result = runCmd('git symbolic-ref HEAD', cwd=repo_dir)
+ self.assertEqual(result.output.strip(), "refs/heads/devtool",
+ 'Wrong branch in git repo')
+
+ def _check_repo_status(self, repo_dir, expected_status):
+ """Check the worktree status of a repository"""
+ result = runCmd('git status . --porcelain',
+ cwd=repo_dir)
+ for line in result.output.splitlines():
+ for ind, (f_status, fn_re) in enumerate(expected_status):
+ if re.match(fn_re, line[3:]):
+ if f_status != line[:2]:
+ self.fail('Unexpected status in line: %s' % line)
+ expected_status.pop(ind)
+ break
+ else:
+ self.fail('Unexpected modified file in line: %s' % line)
+ if expected_status:
+ self.fail('Missing file changes: %s' % expected_status)
def _test_recipe_contents(self, recipefile, checkvars, checkinherits):
with open(recipefile, 'r') as f:
@@ -118,58 +232,6 @@ class DevtoolBase(OESelftestTestCase):
class DevtoolTests(DevtoolBase):
- @classmethod
- def setUpClass(cls):
- super(DevtoolTests, 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(DevtoolTests, cls).tearDownClass()
-
- def setUp(self):
- """Test case setup function"""
- super(DevtoolTests, 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"""
- self.assertTrue(os.path.isdir(os.path.join(repo_dir, '.git')),
- 'git repository for external source tree not found')
- result = runCmd('git status --porcelain', cwd=repo_dir)
- self.assertEqual(result.output.strip(), "",
- 'Created git repo is not clean')
- result = runCmd('git symbolic-ref HEAD', cwd=repo_dir)
- self.assertEqual(result.output.strip(), "refs/heads/devtool",
- 'Wrong branch in git repo')
-
- def _check_repo_status(self, repo_dir, expected_status):
- """Check the worktree status of a repository"""
- result = runCmd('git status . --porcelain',
- cwd=repo_dir)
- for line in result.output.splitlines():
- for ind, (f_status, fn_re) in enumerate(expected_status):
- if re.match(fn_re, line[3:]):
- if f_status != line[:2]:
- self.fail('Unexpected status in line: %s' % line)
- expected_status.pop(ind)
- break
- else:
- self.fail('Unexpected modified file in line: %s' % line)
- if expected_status:
- self.fail('Missing file changes: %s' % expected_status)
-
@OETestID(1158)
def test_create_workspace(self):
# Check preconditions
@@ -191,6 +253,8 @@ class DevtoolTests(DevtoolBase):
self.assertNotIn(tempdir, result.output)
self.assertIn(self.workspacedir, result.output)
+class DevtoolAddTests(DevtoolBase):
+
@OETestID(1159)
def test_devtool_add(self):
# Fetch source
@@ -235,6 +299,8 @@ class DevtoolTests(DevtoolBase):
@OETestID(1423)
def test_devtool_add_git_local(self):
+ # We need dbus built so that DEPENDS recognition works
+ bitbake('dbus')
# Fetch source from a remote URL, but do it outside of devtool
tempdir = tempfile.mkdtemp(prefix='devtoolqa')
self.track_for_cleanup(tempdir)
@@ -444,6 +510,8 @@ class DevtoolTests(DevtoolBase):
checkvars['SRC_URI'] = url.replace(testver, '${PV}')
self._test_recipe_contents(recipefile, checkvars, [])
+class DevtoolModifyTests(DevtoolBase):
+
@OETestID(1164)
def test_devtool_modify(self):
import oe.path
@@ -689,6 +757,7 @@ class DevtoolTests(DevtoolBase):
self._check_src_repo(tempdir)
# This is probably sufficient
+class DevtoolUpdateTests(DevtoolBase):
@OETestID(1169)
def test_devtool_update_recipe(self):
@@ -1105,6 +1174,8 @@ class DevtoolTests(DevtoolBase):
expected_status = []
self._check_repo_status(os.path.dirname(recipefile), expected_status)
+class DevtoolExtractTests(DevtoolBase):
+
@OETestID(1163)
def test_devtool_extract(self):
tempdir = tempfile.mkdtemp(prefix='devtoolqa')
@@ -1274,6 +1345,8 @@ class DevtoolTests(DevtoolBase):
if reqpkgs:
self.fail('The following packages were not present in the image as expected: %s' % ', '.join(reqpkgs))
+class DevtoolUpgradeTests(DevtoolBase):
+
@OETestID(1367)
def test_devtool_upgrade(self):
# Check preconditions
diff --git a/meta/lib/oeqa/selftest/cases/distrodata.py b/meta/lib/oeqa/selftest/cases/distrodata.py
index 7b2800464cb..e7b5e349564 100644
--- a/meta/lib/oeqa/selftest/cases/distrodata.py
+++ b/meta/lib/oeqa/selftest/cases/distrodata.py
@@ -21,7 +21,7 @@ class Distrodata(OESelftestTestCase):
Summary: Test that upstream version checks do not regress
Expected: Upstream version checks should succeed except for the recipes listed in the exception list.
Product: oe-core
- Author: Alexander Kanavin <alexander.kanavin@intel.com>
+ Author: Alexander Kanavin <alex.kanavin@gmail.com>
"""
checkpkg_result = open(os.path.join(get_bb_var("LOG_DIR"), "checkpkg.csv")).readlines()[1:]
regressed_failures = [pkg_data[0] for pkg_data in [pkg_line.split('\t') for pkg_line in checkpkg_result] if pkg_data[11] == 'UNKNOWN_BROKEN']
@@ -46,7 +46,7 @@ but their recipes claim otherwise by setting UPSTREAM_VERSION_UNKNOWN. Please re
Summary: Test that oe-core recipes have a maintainer
Expected: All oe-core recipes (except a few special static/testing ones) should have a maintainer listed in maintainers.inc file.
Product: oe-core
- Author: Alexander Kanavin <alexander.kanavin@intel.com>
+ Author: Alexander Kanavin <alex.kanavin@gmail.com>
"""
def is_exception(pkg):
exceptions = ["packagegroup-", "initramfs-", "systemd-machine-units", "target-sdk-provides-dummy"]
diff --git a/meta/lib/oeqa/selftest/cases/efibootpartition.py b/meta/lib/oeqa/selftest/cases/efibootpartition.py
index 0c832566965..c6f39d5b162 100644
--- a/meta/lib/oeqa/selftest/cases/efibootpartition.py
+++ b/meta/lib/oeqa/selftest/cases/efibootpartition.py
@@ -11,7 +11,6 @@ from oeqa.utils.commands import bitbake, runqemu, get_bb_var
class GenericEFITest(OESelftestTestCase):
"""EFI booting test class"""
- buffer = True
cmd_common = "runqemu nographic serial wic ovmf"
efi_provider = "systemd-boot"
image = "core-image-minimal"
diff --git a/meta/lib/oeqa/selftest/cases/fetch.py b/meta/lib/oeqa/selftest/cases/fetch.py
new file mode 100644
index 00000000000..4acc8cdcc8e
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/fetch.py
@@ -0,0 +1,49 @@
+import oe.path
+from oeqa.selftest.case import OESelftestTestCase
+from oeqa.utils.commands import bitbake
+from oeqa.core.decorator.oeid import OETestID
+
+class Fetch(OESelftestTestCase):
+ @OETestID(1058)
+ def test_git_mirrors(self):
+ """
+ Verify that the git fetcher will fall back to the HTTP mirrors. The
+ recipe needs to be one that we have on the Yocto Project source mirror
+ and is hosted in git.
+ """
+
+ # TODO: mktempd instead of hardcoding
+ dldir = os.path.join(self.builddir, "download-git-mirrors")
+ self.track_for_cleanup(dldir)
+
+ # No mirrors, should use git to fetch successfully
+ features = """
+DL_DIR = "%s"
+MIRRORS_forcevariable = ""
+PREMIRRORS_forcevariable = ""
+""" % dldir
+ self.write_config(features)
+ oe.path.remove(dldir, recurse=True)
+ bitbake("dbus-wait -c fetch -f")
+
+ # No mirrors and broken git, should fail
+ features = """
+DL_DIR = "%s"
+GIT_PROXY_COMMAND = "false"
+MIRRORS_forcevariable = ""
+PREMIRRORS_forcevariable = ""
+""" % dldir
+ self.write_config(features)
+ oe.path.remove(dldir, recurse=True)
+ with self.assertRaises(AssertionError):
+ bitbake("dbus-wait -c fetch -f")
+
+ # Broken git but a specific mirror
+ features = """
+DL_DIR = "%s"
+GIT_PROXY_COMMAND = "false"
+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")
diff --git a/meta/lib/oeqa/selftest/cases/image_typedep.py b/meta/lib/oeqa/selftest/cases/image_typedep.py
index e6788853a36..932c7f883da 100644
--- a/meta/lib/oeqa/selftest/cases/image_typedep.py
+++ b/meta/lib/oeqa/selftest/cases/image_typedep.py
@@ -29,11 +29,14 @@ inherit image
# like CONVERSION_DEPENDS_bz2="somedep"
result = bitbake('-e emptytest')
+ dep = None
for line in result.output.split('\n'):
if line.startswith('CONVERSION_DEPENDS_bz2'):
dep = line.split('=')[1].strip('"')
break
+ self.assertIsNotNone(dep, "CONVERSION_DEPENDS_bz2 dependency not found in bitbake -e output")
+
# Now get the dependency task list and check for the expected task
# dependency
bitbake('-g emptytest')
diff --git a/meta/lib/oeqa/selftest/cases/imagefeatures.py b/meta/lib/oeqa/selftest/cases/imagefeatures.py
index 09e0b20625b..8c95432e00b 100644
--- a/meta/lib/oeqa/selftest/cases/imagefeatures.py
+++ b/meta/lib/oeqa/selftest/cases/imagefeatures.py
@@ -10,8 +10,6 @@ class ImageFeatures(OESelftestTestCase):
test_user = 'tester'
root_user = 'root'
- buffer = True
-
@OETestID(1107)
def test_non_root_user_can_connect_via_ssh_without_password(self):
"""
@@ -23,7 +21,7 @@ class ImageFeatures(OESelftestTestCase):
AutomatedBy: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
"""
- features = 'EXTRA_IMAGE_FEATURES = "ssh-server-openssh empty-root-password allow-empty-password"\n'
+ features = 'EXTRA_IMAGE_FEATURES = "ssh-server-openssh empty-root-password allow-empty-password allow-root-login"\n'
features += 'INHERIT += "extrausers"\n'
features += 'EXTRA_USERS_PARAMS = "useradd -p \'\' {}; usermod -s /bin/sh {};"'.format(self.test_user, self.test_user)
self.write_config(features)
@@ -49,7 +47,7 @@ class ImageFeatures(OESelftestTestCase):
AutomatedBy: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
"""
- features = 'EXTRA_IMAGE_FEATURES = "ssh-server-openssh allow-empty-password"\n'
+ features = 'EXTRA_IMAGE_FEATURES = "ssh-server-openssh allow-empty-password allow-root-login"\n'
features += 'INHERIT += "extrausers"\n'
features += 'EXTRA_USERS_PARAMS = "useradd -p \'\' {}; usermod -s /bin/sh {};"'.format(self.test_user, self.test_user)
self.write_config(features)
diff --git a/meta/lib/oeqa/selftest/cases/lic_checksum.py b/meta/lib/oeqa/selftest/cases/lic_checksum.py
index 37407157c1e..f992b3736e4 100644
--- a/meta/lib/oeqa/selftest/cases/lic_checksum.py
+++ b/meta/lib/oeqa/selftest/cases/lic_checksum.py
@@ -19,6 +19,8 @@ class LicenseTests(OESelftestTestCase):
os.close(lic_file)
self.track_for_cleanup(lic_path)
+ self.write_config("INHERIT_remove = \"report-error\"")
+
self.write_recipeinc('emptytest', """
INHIBIT_DEFAULT_DEPS = "1"
LIC_FILES_CHKSUM = "file://%s;md5=d41d8cd98f00b204e9800998ecf8427e"
@@ -29,7 +31,6 @@ SRC_URI = "file://%s;md5=d41d8cd98f00b204e9800998ecf8427e"
with open(lic_path, "w") as f:
f.write("data")
- self.write_config("INHERIT_remove = \"report-error\"")
result = bitbake(bitbake_cmd, ignore_status=True)
if error_msg not in result.output:
raise AssertionError(result.output)
diff --git a/meta/lib/oeqa/selftest/cases/oelib/elf.py b/meta/lib/oeqa/selftest/cases/oelib/elf.py
index 74ee6a11cc7..15c03f4609f 100644
--- a/meta/lib/oeqa/selftest/cases/oelib/elf.py
+++ b/meta/lib/oeqa/selftest/cases/oelib/elf.py
@@ -15,6 +15,7 @@ class TestElf(TestCase):
self.assertEqual(oe.qa.elf_machine_to_string(0x32), "IA-64")
self.assertEqual(oe.qa.elf_machine_to_string(0x3E), "x86-64")
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(0xDEADBEEF), "Unknown (3735928559)")
diff --git a/meta/lib/oeqa/selftest/cases/oelib/utils.py b/meta/lib/oeqa/selftest/cases/oelib/utils.py
index 9fb6c1576e0..275aeda74eb 100644
--- a/meta/lib/oeqa/selftest/cases/oelib/utils.py
+++ b/meta/lib/oeqa/selftest/cases/oelib/utils.py
@@ -1,5 +1,8 @@
+import sys
from unittest.case import TestCase
-from oe.utils import packages_filter_out_system, trim_version
+from contextlib import contextmanager
+from io import StringIO
+from oe.utils import packages_filter_out_system, trim_version, multiprocess_launch
class TestPackagesFilterOutSystem(TestCase):
def test_filter(self):
@@ -49,3 +52,44 @@ class TestTrimVersion(TestCase):
self.assertEqual(trim_version("1.2.3", 2), "1.2")
self.assertEqual(trim_version("1.2.3", 3), "1.2.3")
self.assertEqual(trim_version("1.2.3", 4), "1.2.3")
+
+
+class TestMultiprocessLaunch(TestCase):
+
+ def test_multiprocesslaunch(self):
+ import bb
+
+ def testfunction(item, d):
+ if item == "2" or item == "1":
+ raise KeyError("Invalid number %s" % item)
+ return "Found %s" % item
+
+ def dummyerror(msg):
+ print("ERROR: %s" % msg)
+
+ @contextmanager
+ def captured_output():
+ new_out, new_err = StringIO(), StringIO()
+ old_out, old_err = sys.stdout, sys.stderr
+ try:
+ sys.stdout, sys.stderr = new_out, new_err
+ yield sys.stdout, sys.stderr
+ finally:
+ sys.stdout, sys.stderr = old_out, old_err
+
+ d = bb.data_smart.DataSmart()
+ bb.error = dummyerror
+
+ # Assert the function returns the right results
+ result = multiprocess_launch(testfunction, ["3", "4", "5", "6"], d, extraargs=(d,))
+ self.assertIn("Found 3", result)
+ self.assertIn("Found 4", result)
+ self.assertIn("Found 5", result)
+ self.assertIn("Found 6", result)
+ self.assertEqual(len(result), 4)
+
+ # 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 1ee753763ec..bcdc2d5ac07 100644
--- a/meta/lib/oeqa/selftest/cases/oescripts.py
+++ b/meta/lib/oeqa/selftest/cases/oescripts.py
@@ -10,6 +10,19 @@ class BuildhistoryDiffTests(BuildhistoryBase):
target = 'xcursor-transparent-theme'
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)
+ result = runCmd("oe-pkgdata-util read-value PKGV %s" % target)
+ pkgv = result.output.rstrip()
result = runCmd("buildhistory-diff -p %s" % get_bb_var('BUILDHISTORY_DIR'))
- expected_output = 'PR changed from "r1" to "r0"'
- self.assertTrue(expected_output in result.output, msg="Did not find expected output: %s" % result.output)
+ expected_endlines = [
+ "xcursor-transparent-theme-dev: RDEPENDS: removed \"xcursor-transparent-theme (['= %s-r1'])\", added \"xcursor-transparent-theme (['= %s-r0'])\"" % (pkgv, pkgv),
+ "xcursor-transparent-theme-staticdev: RDEPENDS: removed \"xcursor-transparent-theme-dev (['= %s-r1'])\", added \"xcursor-transparent-theme-dev (['= %s-r0'])\"" % (pkgv, pkgv)
+ ]
+ for line in result.output.splitlines():
+ for el in expected_endlines:
+ if line.endswith(el):
+ expected_endlines.remove(el)
+ break
+ else:
+ self.fail('Unexpected line:\n%s\nExpected line endings:\n %s' % (line, '\n '.join(expected_endlines)))
+ if expected_endlines:
+ self.fail('Missing expected line endings:\n %s' % '\n '.join(expected_endlines))
diff --git a/meta/lib/oeqa/selftest/cases/package.py b/meta/lib/oeqa/selftest/cases/package.py
index 169698f780d..0a88dc25b3a 100644
--- a/meta/lib/oeqa/selftest/cases/package.py
+++ b/meta/lib/oeqa/selftest/cases/package.py
@@ -1,6 +1,7 @@
from oeqa.selftest.case import OESelftestTestCase
from oeqa.core.decorator.oeid import OETestID
-from oeqa.utils.commands import bitbake, get_bb_vars
+from oeqa.utils.commands import bitbake, get_bb_vars, get_bb_var, runqemu
+import stat
import subprocess, os
import oe.path
@@ -29,7 +30,7 @@ class VersionOrdering(OESelftestTestCase):
cls.bindir = oe.path.join(cls.staging, vars["bindir_native"])
cls.libdir = oe.path.join(cls.staging, vars["libdir_native"])
- def setUp(self):
+ def setUpLocal(self):
# Just for convenience
self.staging = type(self).staging
self.bindir = type(self).bindir
@@ -84,3 +85,65 @@ class VersionOrdering(OESelftestTestCase):
status = subprocess.call(command, env=env)
self.assertIn(status, (99, 100, 101))
self.assertEqual(status - 100, sort, "%s %s (%d) failed" % (ver1, ver2, sort))
+
+class PackageTests(OESelftestTestCase):
+ # Verify that a recipe which sets up hardlink files has those preserved into split packages
+ # Also test file sparseness is preserved
+ def test_preserve_sparse_hardlinks(self):
+ bitbake("selftest-hardlink -c package")
+
+ dest = get_bb_var('PKGDEST', 'selftest-hardlink')
+ bindir = get_bb_var('bindir', 'selftest-hardlink')
+
+ def checkfiles():
+ # Recipe creates 4 hardlinked files, there is a copy in package/ and a copy in packages-split/
+ # so expect 8 in total.
+ self.assertEqual(os.stat(dest + "/selftest-hardlink" + bindir + "/hello1").st_nlink, 8)
+
+ # Test a sparse file remains sparse
+ sparsestat = os.stat(dest + "/selftest-hardlink" + bindir + "/sparsetest")
+ self.assertEqual(sparsestat.st_blocks, 0)
+ self.assertEqual(sparsestat.st_size, 1048576)
+
+ checkfiles()
+
+ # Clean and reinstall so its now definitely from sstate, then retest.
+ bitbake("selftest-hardlink -c clean")
+ bitbake("selftest-hardlink -c package")
+
+ checkfiles()
+
+ # 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'
+ self.write_config(features)
+ bitbake("core-image-minimal")
+
+ def gdbtest(qemu, binary):
+ """
+ Check that gdb ``binary`` to read symbols from separated debug file
+ """
+ self.logger.info("gdbtest %s" % binary)
+ status, output = qemu.run_serial('/usr/bin/gdb.sh %s' % binary, timeout=60)
+ for l in output.split('\n'):
+ # Check debugging symbols exists
+ if '(no debugging symbols found)' in l:
+ self.logger.error("No debugging symbols found. GDB result:\n%s" % output)
+ return False
+
+ # Check debugging symbols works correctly
+ elif "Breakpoint 1, main () at hello.c:4" in l:
+ return True
+
+ self.logger.error("GDB result:\n%s: %s" % output)
+ return False
+
+ with runqemu('core-image-minimal') as qemu:
+ for binary in ['/usr/bin/hello1',
+ '/usr/bin/hello2',
+ '/usr/libexec/hello3',
+ '/usr/libexec/hello4']:
+ if not gdbtest(qemu, binary):
+ self.fail('GDB %s failed' % binary)
diff --git a/meta/lib/oeqa/selftest/cases/recipetool.py b/meta/lib/oeqa/selftest/cases/recipetool.py
index 754ea949824..cd15df11a93 100644
--- a/meta/lib/oeqa/selftest/cases/recipetool.py
+++ b/meta/lib/oeqa/selftest/cases/recipetool.py
@@ -427,6 +427,8 @@ class RecipetoolTests(RecipetoolBase):
@OETestID(1418)
def test_recipetool_create_cmake(self):
+ bitbake('-c packagedata gtk+')
+
# Try adding a recipe
temprecipe = os.path.join(self.tempdir, 'recipe')
os.makedirs(temprecipe)
@@ -439,7 +441,7 @@ class RecipetoolTests(RecipetoolBase):
checkvars['SRC_URI'] = 'http://downloads.sourceforge.net/project/navit/v${PV}/navit-${PV}.tar.gz'
checkvars['SRC_URI[md5sum]'] = '242f398e979a6b8c0f3c802b63435b68'
checkvars['SRC_URI[sha256sum]'] = '13353481d7fc01a4f64e385dda460b51496366bba0fd2cc85a89a0747910e94d'
- checkvars['DEPENDS'] = set(['freetype', 'zlib', 'openssl', 'glib-2.0', 'virtual/libgl', 'virtual/egl', 'gtk+', 'libpng', 'libsdl', 'freeglut', 'dbus-glib'])
+ checkvars['DEPENDS'] = set(['freetype', 'zlib', 'openssl', 'glib-2.0', 'virtual/libgl', 'virtual/egl', 'gtk+', 'libpng', 'libsdl', 'freeglut', 'dbus-glib', 'fribidi'])
inherits = ['cmake', 'python-dir', 'gettext', 'pkgconfig']
self._test_recipe_contents(recipefile, checkvars, inherits)
diff --git a/meta/lib/oeqa/selftest/cases/runqemu.py b/meta/lib/oeqa/selftest/cases/runqemu.py
index 5ebdd57a41e..e57f503a577 100644
--- a/meta/lib/oeqa/selftest/cases/runqemu.py
+++ b/meta/lib/oeqa/selftest/cases/runqemu.py
@@ -14,8 +14,6 @@ class RunqemuTests(OESelftestTestCase):
image_is_ready = False
deploy_dir_image = ''
- # We only want to print runqemu stdout/stderr if there is a test case failure
- buffer = True
def setUpLocal(self):
super(RunqemuTests, self).setUpLocal()
diff --git a/meta/lib/oeqa/selftest/cases/runtime_test.py b/meta/lib/oeqa/selftest/cases/runtime_test.py
index 9c9b4b34111..906e460d4f8 100644
--- a/meta/lib/oeqa/selftest/cases/runtime_test.py
+++ b/meta/lib/oeqa/selftest/cases/runtime_test.py
@@ -122,6 +122,7 @@ 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 += 'TEST_SUITES = "ping ssh selftest"\n'
self.write_config(features)
@@ -135,7 +136,7 @@ class TestImage(OESelftestTestCase):
Summary: Check package feeds functionality for dnf
Expected: 1. Check that remote package feeds can be accessed
Product: oe-core
- Author: Alexander Kanavin <alexander.kanavin@intel.com>
+ Author: Alexander Kanavin <alex.kanavin@gmail.com>
"""
if get_bb_var('DISTRO') == 'poky-tiny':
self.skipTest('core-image-full-cmdline not buildable for poky-tiny')
@@ -148,10 +149,12 @@ class TestImage(OESelftestTestCase):
features += 'EXTRA_IMAGE_FEATURES += "package-management"\n'
features += 'PACKAGE_CLASSES = "package_rpm"\n'
+ bitbake('gnupg-native -c addto_recipe_sysroot')
+
# Enable package feed signing
self.gpg_home = tempfile.mkdtemp(prefix="oeqa-feed-sign-")
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')))
+ 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"))
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')
@@ -231,7 +234,7 @@ class Postinst(OESelftestTestCase):
Expected: The scriptlet failure is properly reported.
The file that is created after the error in the scriptlet is not present.
Product: oe-core
- Author: Alexander Kanavin <alexander.kanavin@intel.com>
+ Author: Alexander Kanavin <alex.kanavin@gmail.com>
"""
import oe.path
@@ -249,8 +252,8 @@ class Postinst(OESelftestTestCase):
features = 'CORE_IMAGE_EXTRA_INSTALL = "postinst-rootfs-failing"\n'
features += 'PACKAGE_CLASSES = "%s"\n' % classes
self.write_config(features)
- bb_result = bitbake('core-image-minimal')
- self.assertGreaterEqual(bb_result.output.find("Intentionally failing postinstall scriptlets of ['postinst-rootfs-failing'] to defer them to first boot is deprecated."), 0,
+ bb_result = bitbake('core-image-minimal', ignore_status=True)
+ self.assertGreaterEqual(bb_result.output.find("Postinstall scriptlets of ['postinst-rootfs-failing'] have failed."), 0,
"Warning about a failed scriptlet not found in bitbake output: %s" %(bb_result.output))
self.assertTrue(os.path.isfile(os.path.join(hosttestdir, "rootfs-before-failure")),
diff --git a/meta/lib/oeqa/selftest/cases/signing.py b/meta/lib/oeqa/selftest/cases/signing.py
index a750cfc7b28..a130ac96cf9 100644
--- a/meta/lib/oeqa/selftest/cases/signing.py
+++ b/meta/lib/oeqa/selftest/cases/signing.py
@@ -41,7 +41,7 @@ class Signing(OESelftestTestCase):
Expected: Images can be created from signed packages
Product: oe-core
Author: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
- Author: Alexander Kanavin <alexander.kanavin@intel.com>
+ Author: Alexander Kanavin <alex.kanavin@gmail.com>
AutomatedBy: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
"""
import oe.packagedata
diff --git a/meta/lib/oeqa/selftest/cases/sstatetests.py b/meta/lib/oeqa/selftest/cases/sstatetests.py
index 7b008e409f4..7194225c0a6 100644
--- a/meta/lib/oeqa/selftest/cases/sstatetests.py
+++ b/meta/lib/oeqa/selftest/cases/sstatetests.py
@@ -349,12 +349,9 @@ MACHINE = \"qemuarm\"
self.sstate_allarch_samesigs(configA, configB)
@OETestID(1645)
- def test_sstate_allarch_samesigs_multilib(self):
+ def test_sstate_nativesdk_samesigs_multilib(self):
"""
- The sstate checksums of allarch multilib packages should be independent of whichever
- MACHINE is set. Check this using bitbake -S.
- Also, rather than duplicate the test, check nativesdk stamps are the same between
- the two MACHINE values.
+ check nativesdk stamps are the same between the two MACHINE values.
"""
configA = """
@@ -392,10 +389,6 @@ MULTILIBS = \"\"
(_, task, _, shash) = name.rsplit(".", 3)
f[os.path.join(os.path.basename(root), task)] = shash
return f
- files1 = get_files(self.topdir + "/tmp-sstatesamehash/stamps/all" + self.target_vendor + "-" + self.target_os)
- files2 = get_files(self.topdir + "/tmp-sstatesamehash2/stamps/all" + self.target_vendor + "-" + self.target_os)
- self.maxDiff = None
- self.assertEqual(files1, files2)
nativesdkdir = os.path.basename(glob.glob(self.topdir + "/tmp-sstatesamehash/stamps/*-nativesdk*-linux")[0])
diff --git a/meta/lib/oeqa/selftest/cases/wic.py b/meta/lib/oeqa/selftest/cases/wic.py
index b84466d9aef..36ee5e5a146 100644
--- a/meta/lib/oeqa/selftest/cases/wic.py
+++ b/meta/lib/oeqa/selftest/cases/wic.py
@@ -61,94 +61,103 @@ def only_for_arch(archs, image='core-image-minimal'):
return wrapper
-class Wic(OESelftestTestCase):
+class WicTestCase(OESelftestTestCase):
"""Wic test class."""
- resultdir = "/var/tmp/wic.oe-selftest/"
image_is_ready = False
- native_sysroot = None
wicenv_cache = {}
def setUpLocal(self):
"""This code is executed before each test method."""
- super(Wic, self).setUpLocal()
- if not self.native_sysroot:
- Wic.native_sysroot = get_bb_var('STAGING_DIR_NATIVE', 'wic-tools')
+ self.resultdir = self.builddir + "/wic-tmp/"
+ super(WicTestCase, self).setUpLocal()
# Do this here instead of in setUpClass as the base setUp does some
# clean up which can result in the native tools built earlier in
# setUpClass being unavailable.
- if not Wic.image_is_ready:
+ if not WicTestCase.image_is_ready:
if get_bb_var('USE_NLS') == 'yes':
bitbake('wic-tools')
else:
self.skipTest('wic-tools cannot be built due its (intltool|gettext)-native dependency and NLS disable')
bitbake('core-image-minimal')
- Wic.image_is_ready = True
+ WicTestCase.image_is_ready = True
rmtree(self.resultdir, ignore_errors=True)
def tearDownLocal(self):
"""Remove resultdir as it may contain images."""
rmtree(self.resultdir, ignore_errors=True)
- super(Wic, self).tearDownLocal()
+ super(WicTestCase, self).tearDownLocal()
+
+ def _get_image_env_path(self, image):
+ """Generate and obtain the path to <image>.env"""
+ if image not in WicTestCase.wicenv_cache:
+ self.assertEqual(0, bitbake('%s -c do_rootfs_wicenv' % image).status)
+ bb_vars = get_bb_vars(['STAGING_DIR', 'MACHINE'], image)
+ stdir = bb_vars['STAGING_DIR']
+ machine = bb_vars['MACHINE']
+ WicTestCase.wicenv_cache[image] = os.path.join(stdir, machine, 'imgdata')
+ return WicTestCase.wicenv_cache[image]
+
+class Wic(WicTestCase):
@OETestID(1552)
def test_version(self):
"""Test wic --version"""
- self.assertEqual(0, runCmd('wic --version').status)
+ runCmd('wic --version')
@OETestID(1208)
def test_help(self):
"""Test wic --help and wic -h"""
- self.assertEqual(0, runCmd('wic --help').status)
- self.assertEqual(0, runCmd('wic -h').status)
+ runCmd('wic --help')
+ runCmd('wic -h')
@OETestID(1209)
def test_createhelp(self):
"""Test wic create --help"""
- self.assertEqual(0, runCmd('wic create --help').status)
+ runCmd('wic create --help')
@OETestID(1210)
def test_listhelp(self):
"""Test wic list --help"""
- self.assertEqual(0, runCmd('wic list --help').status)
+ runCmd('wic list --help')
@OETestID(1553)
def test_help_create(self):
"""Test wic help create"""
- self.assertEqual(0, runCmd('wic help create').status)
+ runCmd('wic help create')
@OETestID(1554)
def test_help_list(self):
"""Test wic help list"""
- self.assertEqual(0, runCmd('wic help list').status)
+ runCmd('wic help list')
@OETestID(1215)
def test_help_overview(self):
"""Test wic help overview"""
- self.assertEqual(0, runCmd('wic help overview').status)
+ runCmd('wic help overview')
@OETestID(1216)
def test_help_plugins(self):
"""Test wic help plugins"""
- self.assertEqual(0, runCmd('wic help plugins').status)
+ runCmd('wic help plugins')
@OETestID(1217)
def test_help_kickstart(self):
"""Test wic help kickstart"""
- self.assertEqual(0, runCmd('wic help kickstart').status)
+ runCmd('wic help kickstart')
@OETestID(1555)
def test_list_images(self):
"""Test wic list images"""
- self.assertEqual(0, runCmd('wic list images').status)
+ runCmd('wic list images')
@OETestID(1556)
def test_list_source_plugins(self):
"""Test wic list source-plugins"""
- self.assertEqual(0, runCmd('wic list source-plugins').status)
+ runCmd('wic list source-plugins')
@OETestID(1557)
def test_listed_images_help(self):
@@ -156,7 +165,7 @@ class Wic(OESelftestTestCase):
output = runCmd('wic list images').output
imagelist = [line.split()[0] for line in output.splitlines()]
for image in imagelist:
- self.assertEqual(0, runCmd('wic list %s help' % image).status)
+ runCmd('wic list %s help' % image)
@OETestID(1213)
def test_unsupported_subcommand(self):
@@ -172,7 +181,7 @@ class Wic(OESelftestTestCase):
def test_build_image_name(self):
"""Test wic create wictestdisk --image-name=core-image-minimal"""
cmd = "wic create wictestdisk --image-name=core-image-minimal -o %s" % self.resultdir
- self.assertEqual(0, runCmd(cmd).status)
+ runCmd(cmd)
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*.direct")))
@OETestID(1157)
@@ -180,7 +189,7 @@ class Wic(OESelftestTestCase):
def test_gpt_image(self):
"""Test creation of core-image-minimal with gpt table and UUID boot"""
cmd = "wic create directdisk-gpt --image-name core-image-minimal -o %s" % self.resultdir
- self.assertEqual(0, runCmd(cmd).status)
+ runCmd(cmd)
self.assertEqual(1, len(glob(self.resultdir + "directdisk-*.direct")))
@OETestID(1346)
@@ -191,10 +200,10 @@ class Wic(OESelftestTestCase):
'MACHINE_FEATURES_append = " efi"\n'\
'DEPENDS_pn-core-image-minimal += "syslinux"\n'
self.append_config(config)
- bitbake('core-image-minimal')
+ bitbake('core-image-minimal core-image-minimal-initramfs')
self.remove_config(config)
cmd = "wic create mkhybridiso --image-name core-image-minimal -o %s" % self.resultdir
- self.assertEqual(0, runCmd(cmd).status)
+ runCmd(cmd)
self.assertEqual(1, len(glob(self.resultdir + "HYBRID_ISO_IMG-*.direct")))
self.assertEqual(1, len(glob(self.resultdir + "HYBRID_ISO_IMG-*.iso")))
@@ -203,7 +212,7 @@ class Wic(OESelftestTestCase):
def test_qemux86_directdisk(self):
"""Test creation of qemux-86-directdisk image"""
cmd = "wic create qemux86-directdisk -e core-image-minimal -o %s" % self.resultdir
- self.assertEqual(0, runCmd(cmd).status)
+ runCmd(cmd)
self.assertEqual(1, len(glob(self.resultdir + "qemux86-directdisk-*direct")))
@OETestID(1350)
@@ -211,7 +220,7 @@ class Wic(OESelftestTestCase):
def test_mkefidisk(self):
"""Test creation of mkefidisk image"""
cmd = "wic create mkefidisk -e core-image-minimal -o %s" % self.resultdir
- self.assertEqual(0, runCmd(cmd).status)
+ runCmd(cmd)
self.assertEqual(1, len(glob(self.resultdir + "mkefidisk-*direct")))
@OETestID(1385)
@@ -223,7 +232,7 @@ class Wic(OESelftestTestCase):
bitbake('core-image-minimal')
self.remove_config(config)
cmd = "wic create directdisk-bootloader-config -e core-image-minimal -o %s" % self.resultdir
- self.assertEqual(0, runCmd(cmd).status)
+ runCmd(cmd)
self.assertEqual(1, len(glob(self.resultdir + "directdisk-bootloader-config-*direct")))
@OETestID(1560)
@@ -235,7 +244,7 @@ class Wic(OESelftestTestCase):
bitbake('core-image-minimal')
self.remove_config(config)
cmd = "wic create systemd-bootdisk -e core-image-minimal -o %s" % self.resultdir
- self.assertEqual(0, runCmd(cmd).status)
+ runCmd(cmd)
self.assertEqual(1, len(glob(self.resultdir + "systemd-bootdisk-*direct")))
@OETestID(1561)
@@ -244,7 +253,7 @@ class Wic(OESelftestTestCase):
cmd = "wic create sdimage-bootpart -e core-image-minimal -o %s" % self.resultdir
kimgtype = get_bb_var('KERNEL_IMAGETYPE', 'core-image-minimal')
self.write_config('IMAGE_BOOT_FILES = "%s"\n' % kimgtype)
- self.assertEqual(0, runCmd(cmd).status)
+ runCmd(cmd)
self.assertEqual(1, len(glob(self.resultdir + "sdimage-bootpart-*direct")))
@OETestID(1562)
@@ -258,7 +267,7 @@ class Wic(OESelftestTestCase):
bitbake('core-image-minimal')
self.remove_config(config)
cmd = "wic create directdisk -e core-image-minimal"
- self.assertEqual(0, runCmd(cmd).status)
+ runCmd(cmd)
self.assertEqual(1, len(glob("directdisk-*.direct")))
@OETestID(1212)
@@ -271,37 +280,36 @@ class Wic(OESelftestTestCase):
'core-image-minimal'))
bbvars = {key.lower(): value for key, value in bb_vars.items()}
bbvars['resultdir'] = self.resultdir
- status = runCmd("wic create directdisk "
+ runCmd("wic create directdisk "
"-b %(staging_datadir)s "
"-k %(deploy_dir_image)s "
"-n %(recipe_sysroot_native)s "
"-r %(image_rootfs)s "
- "-o %(resultdir)s" % bbvars).status
- self.assertEqual(0, status)
+ "-o %(resultdir)s" % bbvars)
self.assertEqual(1, len(glob(self.resultdir + "directdisk-*.direct")))
@OETestID(1264)
def test_compress_gzip(self):
"""Test compressing an image with gzip"""
- self.assertEqual(0, runCmd("wic create wictestdisk "
+ runCmd("wic create wictestdisk "
"--image-name core-image-minimal "
- "-c gzip -o %s" % self.resultdir).status)
+ "-c gzip -o %s" % self.resultdir)
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*.direct.gz")))
@OETestID(1265)
def test_compress_bzip2(self):
"""Test compressing an image with bzip2"""
- self.assertEqual(0, runCmd("wic create wictestdisk "
+ runCmd("wic create wictestdisk "
"--image-name=core-image-minimal "
- "-c bzip2 -o %s" % self.resultdir).status)
+ "-c bzip2 -o %s" % self.resultdir)
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*.direct.bz2")))
@OETestID(1266)
def test_compress_xz(self):
"""Test compressing an image with xz"""
- self.assertEqual(0, runCmd("wic create wictestdisk "
+ runCmd("wic create wictestdisk "
"--image-name=core-image-minimal "
- "--compress-with=xz -o %s" % self.resultdir).status)
+ "--compress-with=xz -o %s" % self.resultdir)
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*.direct.xz")))
@OETestID(1267)
@@ -315,63 +323,62 @@ class Wic(OESelftestTestCase):
@OETestID(1558)
def test_debug_short(self):
"""Test -D option"""
- self.assertEqual(0, runCmd("wic create wictestdisk "
+ runCmd("wic create wictestdisk "
"--image-name=core-image-minimal "
- "-D -o %s" % self.resultdir).status)
+ "-D -o %s" % self.resultdir)
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*.direct")))
@OETestID(1658)
def test_debug_long(self):
"""Test --debug option"""
- self.assertEqual(0, runCmd("wic create wictestdisk "
+ runCmd("wic create wictestdisk "
"--image-name=core-image-minimal "
- "--debug -o %s" % self.resultdir).status)
+ "--debug -o %s" % self.resultdir)
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*.direct")))
@OETestID(1563)
def test_skip_build_check_short(self):
"""Test -s option"""
- self.assertEqual(0, runCmd("wic create wictestdisk "
+ runCmd("wic create wictestdisk "
"--image-name=core-image-minimal "
- "-s -o %s" % self.resultdir).status)
+ "-s -o %s" % self.resultdir)
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*.direct")))
@OETestID(1671)
def test_skip_build_check_long(self):
"""Test --skip-build-check option"""
- self.assertEqual(0, runCmd("wic create wictestdisk "
+ runCmd("wic create wictestdisk "
"--image-name=core-image-minimal "
"--skip-build-check "
- "--outdir %s" % self.resultdir).status)
+ "--outdir %s" % self.resultdir)
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*.direct")))
@OETestID(1564)
def test_build_rootfs_short(self):
"""Test -f option"""
- self.assertEqual(0, runCmd("wic create wictestdisk "
+ runCmd("wic create wictestdisk "
"--image-name=core-image-minimal "
- "-f -o %s" % self.resultdir).status)
+ "-f -o %s" % self.resultdir)
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*.direct")))
@OETestID(1656)
def test_build_rootfs_long(self):
"""Test --build-rootfs option"""
- self.assertEqual(0, runCmd("wic create wictestdisk "
+ runCmd("wic create wictestdisk "
"--image-name=core-image-minimal "
"--build-rootfs "
- "--outdir %s" % self.resultdir).status)
+ "--outdir %s" % self.resultdir)
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*.direct")))
@OETestID(1268)
@only_for_arch(['i586', 'i686', 'x86_64'])
def test_rootfs_indirect_recipes(self):
"""Test usage of rootfs plugin with rootfs recipes"""
- status = runCmd("wic create directdisk-multi-rootfs "
+ runCmd("wic create directdisk-multi-rootfs "
"--image-name=core-image-minimal "
"--rootfs rootfs1=core-image-minimal "
"--rootfs rootfs2=core-image-minimal "
- "--outdir %s" % self.resultdir).status
- self.assertEqual(0, status)
+ "--outdir %s" % self.resultdir)
self.assertEqual(1, len(glob(self.resultdir + "directdisk-multi-rootfs*.direct")))
@OETestID(1269)
@@ -385,14 +392,13 @@ class Wic(OESelftestTestCase):
bbvars = {key.lower(): value for key, value in bb_vars.items()}
bbvars['wks'] = "directdisk-multi-rootfs"
bbvars['resultdir'] = self.resultdir
- status = runCmd("wic create %(wks)s "
+ runCmd("wic create %(wks)s "
"--bootimg-dir=%(staging_datadir)s "
"--kernel-dir=%(deploy_dir_image)s "
"--native-sysroot=%(recipe_sysroot_native)s "
"--rootfs-dir rootfs1=%(image_rootfs)s "
"--rootfs-dir rootfs2=%(image_rootfs)s "
- "--outdir %(resultdir)s" % bbvars).status
- self.assertEqual(0, status)
+ "--outdir %(resultdir)s" % bbvars)
self.assertEqual(1, len(glob(self.resultdir + "%(wks)s-*.direct" % bbvars)))
@OETestID(1661)
@@ -411,8 +417,8 @@ part / --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path usr
part /usr --source rootfs --ondisk mmcblk0 --fstype=ext4 --rootfs-dir %s/usr
part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --rootfs-dir %s/usr"""
% (rootfs_dir, rootfs_dir))
- self.assertEqual(0, runCmd("wic create %s -e core-image-minimal -o %s" \
- % (wks_file, self.resultdir)).status)
+ runCmd("wic create %s -e core-image-minimal -o %s" \
+ % (wks_file, self.resultdir))
os.remove(wks_file)
wicout = glob(self.resultdir + "%s-*direct" % 'temp')
@@ -422,7 +428,6 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
# verify partition size with wic
res = runCmd("parted -m %s unit b p 2>/dev/null" % wicimg)
- self.assertEqual(0, res.status)
# parse parted output which looks like this:
# BYT;\n
@@ -438,8 +443,8 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
self.assertEqual(7, len(partln))
start = int(partln[1].rstrip("B")) / 512
length = int(partln[3].rstrip("B")) / 512
- self.assertEqual(0, runCmd("dd if=%s of=%s skip=%d count=%d" %
- (wicimg, part_file, start, length)).status)
+ runCmd("dd if=%s of=%s skip=%d count=%d" %
+ (wicimg, part_file, start, length))
def extract_files(debugfs_output):
"""
@@ -463,7 +468,6 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
# /usr.
res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % \
os.path.join(self.resultdir, "selftest_img.part1"))
- self.assertEqual(0, res.status)
files = extract_files(res.output)
self.assertIn("etc", files)
self.assertNotIn("usr", files)
@@ -472,7 +476,6 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
# directories.
res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % \
os.path.join(self.resultdir, "selftest_img.part2"))
- self.assertEqual(0, res.status)
files = extract_files(res.output)
self.assertNotIn("etc", files)
self.assertNotIn("usr", files)
@@ -482,7 +485,6 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
# directory, but not the files inside it.
res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % \
os.path.join(self.resultdir, "selftest_img.part3"))
- self.assertEqual(0, res.status)
files = extract_files(res.output)
self.assertNotIn("etc", files)
self.assertNotIn("usr", files)
@@ -490,7 +492,6 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
self.assertIn("bin", files)
res = runCmd("debugfs -R 'ls -p bin' %s 2>/dev/null" % \
os.path.join(self.resultdir, "selftest_img.part3"))
- self.assertEqual(0, res.status)
files = extract_files(res.output)
self.assertIn(".", files)
self.assertIn("..", files)
@@ -522,12 +523,13 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
% (wks_file, self.resultdir), ignore_status=True).status)
os.remove(wks_file)
+class Wic2(WicTestCase):
+
@OETestID(1496)
def test_bmap_short(self):
"""Test generation of .bmap file -m option"""
cmd = "wic create wictestdisk -e core-image-minimal -m -o %s" % self.resultdir
- status = runCmd(cmd).status
- self.assertEqual(0, status)
+ runCmd(cmd)
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*direct")))
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*direct.bmap")))
@@ -535,21 +537,10 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
def test_bmap_long(self):
"""Test generation of .bmap file --bmap option"""
cmd = "wic create wictestdisk -e core-image-minimal --bmap -o %s" % self.resultdir
- status = runCmd(cmd).status
- self.assertEqual(0, status)
+ runCmd(cmd)
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*direct")))
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*direct.bmap")))
- def _get_image_env_path(self, image):
- """Generate and obtain the path to <image>.env"""
- if image not in self.wicenv_cache:
- self.assertEqual(0, bitbake('%s -c do_rootfs_wicenv' % image).status)
- bb_vars = get_bb_vars(['STAGING_DIR', 'MACHINE'], image)
- stdir = bb_vars['STAGING_DIR']
- machine = bb_vars['MACHINE']
- self.wicenv_cache[image] = os.path.join(stdir, machine, 'imgdata')
- return self.wicenv_cache[image]
-
@OETestID(1347)
def test_image_env(self):
"""Test generation of <image>.env files."""
@@ -580,10 +571,10 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
imgenvdir = self._get_image_env_path(image)
native_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "wic-tools")
- self.assertEqual(0, runCmd("wic create wictestdisk "
+ runCmd("wic create wictestdisk "
"--image-name=%s -v %s -n %s -o %s"
% (image, imgenvdir, native_sysroot,
- self.resultdir)).status)
+ self.resultdir))
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*direct")))
@OETestID(1665)
@@ -593,13 +584,13 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
imgenvdir = self._get_image_env_path(image)
native_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "wic-tools")
- self.assertEqual(0, runCmd("wic create wictestdisk "
+ runCmd("wic create wictestdisk "
"--image-name=%s "
"--vars %s "
"--native-sysroot %s "
"--outdir %s"
% (image, imgenvdir, native_sysroot,
- self.resultdir)).status)
+ self.resultdir))
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*direct")))
@OETestID(1351)
@@ -679,21 +670,21 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
Test creation of a simple image with partition size controlled through
--fixed-size flag
"""
- wkspath, wksname = Wic._make_fixed_size_wks(200)
+ wkspath, wksname = Wic2._make_fixed_size_wks(200)
- self.assertEqual(0, runCmd("wic create %s -e core-image-minimal -o %s" \
- % (wkspath, self.resultdir)).status)
+ 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))
wicimg = wicout[0]
+ 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,
- ignore_status=True,
- native_sysroot=self.native_sysroot)
- self.assertEqual(0, res.status)
+ native_sysroot=native_sysroot)
# parse parted output which looks like this:
# BYT;\n
@@ -711,7 +702,7 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
--fixed-size flag. The size of partition is intentionally set to 1MiB
in order to trigger an error in wic.
"""
- wkspath, wksname = Wic._make_fixed_size_wks(1)
+ 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)
@@ -748,7 +739,7 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
'bootloader --timeout=0 --append="console=ttyS0,115200n8"\n'])
wks.flush()
cmd = "wic create %s -e %s -o %s" % (wks.name, img, self.resultdir)
- self.assertEqual(0, runCmd(cmd).status)
+ runCmd(cmd)
wksname = os.path.splitext(os.path.basename(wks.name))[0]
out = glob(self.resultdir + "%s-*direct" % wksname)
self.assertEqual(1, len(out))
@@ -765,10 +756,10 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
'part emptyvfat --fstype vfat --size 1M\n',
'part emptymsdos --fstype msdos --size 1M\n',
'part emptyext2 --fstype ext2 --size 1M\n',
- 'part emptybtrfs --fstype btrfs --size 100M\n'])
+ 'part emptybtrfs --fstype btrfs --size 150M\n'])
wks.flush()
cmd = "wic create %s -e %s -o %s" % (wks.name, img, self.resultdir)
- self.assertEqual(0, runCmd(cmd).status)
+ runCmd(cmd)
wksname = os.path.splitext(os.path.basename(wks.name))[0]
out = glob(self.resultdir + "%s-*direct" % wksname)
self.assertEqual(1, len(out))
@@ -781,7 +772,7 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
'--overhead-factor 1.2 --size 100k\n'])
wks.flush()
cmd = "wic create %s -e core-image-minimal -o %s" % (wks.name, self.resultdir)
- self.assertEqual(0, runCmd(cmd).status)
+ runCmd(cmd)
wksname = os.path.splitext(os.path.basename(wks.name))[0]
out = glob(self.resultdir + "%s-*direct" % wksname)
self.assertEqual(1, len(out))
@@ -793,7 +784,7 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
cmd = "wic create sdimage-bootpart -e %s -o %s" % (img, self.resultdir)
config = 'IMAGE_BOOT_FILES = "%s*"' % get_bb_var('KERNEL_IMAGETYPE', img)
self.append_config(config)
- self.assertEqual(0, runCmd(cmd).status)
+ runCmd(cmd)
self.remove_config(config)
self.assertEqual(1, len(glob(self.resultdir + "sdimage-bootpart-*direct")))
@@ -829,9 +820,9 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
@OETestID(1857)
def test_wic_ls(self):
"""Test listing image content using 'wic ls'"""
- self.assertEqual(0, runCmd("wic create wictestdisk "
+ runCmd("wic create wictestdisk "
"--image-name=core-image-minimal "
- "-D -o %s" % self.resultdir).status)
+ "-D -o %s" % self.resultdir)
images = glob(self.resultdir + "wictestdisk-*.direct")
self.assertEqual(1, len(images))
@@ -839,20 +830,18 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
# list partitions
result = runCmd("wic ls %s -n %s" % (images[0], sysroot))
- self.assertEqual(0, result.status)
self.assertEqual(3, len(result.output.split('\n')))
# list directory content of the first partition
result = runCmd("wic ls %s:1/ -n %s" % (images[0], sysroot))
- self.assertEqual(0, result.status)
self.assertEqual(6, len(result.output.split('\n')))
@OETestID(1856)
def test_wic_cp(self):
"""Test copy files and directories to the the wic image."""
- self.assertEqual(0, runCmd("wic create wictestdisk "
+ runCmd("wic create wictestdisk "
"--image-name=core-image-minimal "
- "-D -o %s" % self.resultdir).status)
+ "-D -o %s" % self.resultdir)
images = glob(self.resultdir + "wictestdisk-*.direct")
self.assertEqual(1, len(images))
@@ -860,19 +849,16 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
# list directory content of the first partition
result = runCmd("wic ls %s:1/ -n %s" % (images[0], sysroot))
- self.assertEqual(0, result.status)
self.assertEqual(6, len(result.output.split('\n')))
with NamedTemporaryFile("w", suffix=".wic-cp") as testfile:
testfile.write("test")
# copy file to the partition
- result = runCmd("wic cp %s %s:1/ -n %s" % (testfile.name, images[0], sysroot))
- self.assertEqual(0, result.status)
+ runCmd("wic cp %s %s:1/ -n %s" % (testfile.name, images[0], sysroot))
# check if file is there
result = runCmd("wic ls %s:1/ -n %s" % (images[0], sysroot))
- self.assertEqual(0, result.status)
self.assertEqual(7, len(result.output.split('\n')))
self.assertTrue(os.path.basename(testfile.name) in result.output)
@@ -883,21 +869,19 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
copy(testfile.name, testdir)
# copy directory to the partition
- result = runCmd("wic cp %s %s:1/ -n %s" % (testdir, images[0], sysroot))
- self.assertEqual(0, result.status)
+ runCmd("wic cp %s %s:1/ -n %s" % (testdir, images[0], sysroot))
# check if directory is there
result = runCmd("wic ls %s:1/ -n %s" % (images[0], sysroot))
- self.assertEqual(0, result.status)
self.assertEqual(8, len(result.output.split('\n')))
self.assertTrue(os.path.basename(testdir) in result.output)
@OETestID(1858)
def test_wic_rm(self):
"""Test removing files and directories from the the wic image."""
- self.assertEqual(0, runCmd("wic create mkefidisk "
+ runCmd("wic create mkefidisk "
"--image-name=core-image-minimal "
- "-D -o %s" % self.resultdir).status)
+ "-D -o %s" % self.resultdir)
images = glob(self.resultdir + "mkefidisk-*.direct")
self.assertEqual(1, len(images))
@@ -905,21 +889,17 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
# list directory content of the first partition
result = runCmd("wic ls %s:1 -n %s" % (images[0], sysroot))
- self.assertEqual(0, result.status)
self.assertIn('\nBZIMAGE ', result.output)
self.assertIn('\nEFI <DIR> ', result.output)
# remove file
- result = runCmd("wic rm %s:1/bzimage -n %s" % (images[0], sysroot))
- self.assertEqual(0, result.status)
+ runCmd("wic rm %s:1/bzimage -n %s" % (images[0], sysroot))
# remove directory
- result = runCmd("wic rm %s:1/efi -n %s" % (images[0], sysroot))
- self.assertEqual(0, result.status)
+ runCmd("wic rm %s:1/efi -n %s" % (images[0], sysroot))
# check if they're removed
result = runCmd("wic ls %s:1 -n %s" % (images[0], sysroot))
- self.assertEqual(0, result.status)
self.assertNotIn('\nBZIMAGE ', result.output)
self.assertNotIn('\nEFI <DIR> ', result.output)
@@ -938,7 +918,7 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
'part emptybtrfs --fstype btrfs --size 100M --mkfs-extraopts "--mixed -K"\n'])
wks.flush()
cmd = "wic create %s -e %s -o %s" % (wks.name, img, self.resultdir)
- self.assertEqual(0, runCmd(cmd).status)
+ runCmd(cmd)
wksname = os.path.splitext(os.path.basename(wks.name))[0]
out = glob(self.resultdir + "%s-*direct" % wksname)
self.assertEqual(1, len(out))
@@ -968,7 +948,7 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
sysroot = get_bb_var('RECIPE_SYSROOT_NATIVE', 'wic-tools')
cmd = "wic write -n %s --expand 1:0 %s %s" % (sysroot, image_path, new_image_path)
- self.assertEqual(0, runCmd(cmd).status)
+ runCmd(cmd)
# check if partitions are expanded
orig = runCmd("wic ls %s -n %s" % (image_path, sysroot))
@@ -998,9 +978,9 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
def test_wic_ls_ext(self):
"""Test listing content of the ext partition using 'wic ls'"""
- self.assertEqual(0, runCmd("wic create wictestdisk "
+ runCmd("wic create wictestdisk "
"--image-name=core-image-minimal "
- "-D -o %s" % self.resultdir).status)
+ "-D -o %s" % self.resultdir)
images = glob(self.resultdir + "wictestdisk-*.direct")
self.assertEqual(1, len(images))
@@ -1008,15 +988,14 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
# list directory content of the second ext4 partition
result = runCmd("wic ls %s:2/ -n %s" % (images[0], sysroot))
- self.assertEqual(0, result.status)
self.assertTrue(set(['bin', 'home', 'proc', 'usr', 'var', 'dev', 'lib', 'sbin']).issubset(
set(line.split()[-1] for line in result.output.split('\n') if line)))
def test_wic_cp_ext(self):
"""Test copy files and directories to the ext partition."""
- self.assertEqual(0, runCmd("wic create wictestdisk "
+ runCmd("wic create wictestdisk "
"--image-name=core-image-minimal "
- "-D -o %s" % self.resultdir).status)
+ "-D -o %s" % self.resultdir)
images = glob(self.resultdir + "wictestdisk-*.direct")
self.assertEqual(1, len(images))
@@ -1024,7 +1003,6 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
# list directory content of the ext4 partition
result = runCmd("wic ls %s:2/ -n %s" % (images[0], sysroot))
- self.assertEqual(0, result.status)
dirs = set(line.split()[-1] for line in result.output.split('\n') if line)
self.assertTrue(set(['bin', 'home', 'proc', 'usr', 'var', 'dev', 'lib', 'sbin']).issubset(dirs))
@@ -1032,20 +1010,18 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
testfile.write("test")
# copy file to the partition
- result = runCmd("wic cp %s %s:2/ -n %s" % (testfile.name, images[0], sysroot))
- self.assertEqual(0, result.status)
+ runCmd("wic cp %s %s:2/ -n %s" % (testfile.name, images[0], sysroot))
# check if file is there
result = runCmd("wic ls %s:2/ -n %s" % (images[0], sysroot))
- self.assertEqual(0, result.status)
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)]))
def test_wic_rm_ext(self):
"""Test removing files from the ext partition."""
- self.assertEqual(0, runCmd("wic create mkefidisk "
+ runCmd("wic create mkefidisk "
"--image-name=core-image-minimal "
- "-D -o %s" % self.resultdir).status)
+ "-D -o %s" % self.resultdir)
images = glob(self.resultdir + "mkefidisk-*.direct")
self.assertEqual(1, len(images))
@@ -1053,14 +1029,11 @@ part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --r
# list directory content of the /etc directory on ext4 partition
result = runCmd("wic ls %s:2/etc/ -n %s" % (images[0], sysroot))
- self.assertEqual(0, result.status)
self.assertTrue('fstab' in [line.split()[-1] for line in result.output.split('\n') if line])
# remove file
- result = runCmd("wic rm %s:2/etc/fstab -n %s" % (images[0], sysroot))
- self.assertEqual(0, result.status)
+ runCmd("wic rm %s:2/etc/fstab -n %s" % (images[0], sysroot))
# check if it's removed
result = runCmd("wic ls %s:2/etc/ -n %s" % (images[0], sysroot))
- self.assertEqual(0, result.status)
self.assertTrue('fstab' 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 9e90d3c2565..61b4afb0192 100644
--- a/meta/lib/oeqa/selftest/context.py
+++ b/meta/lib/oeqa/selftest/context.py
@@ -25,14 +25,14 @@ class OESelftestTestContext(OETestContext):
self.custommachine = None
self.config_paths = config_paths
- def runTests(self, machine=None, skips=[]):
+ def runTests(self, processes=None, machine=None, skips=[]):
if machine:
self.custommachine = machine
if machine == 'random':
self.custommachine = choice(self.machines)
self.logger.info('Run tests with custom MACHINE set to: %s' % \
self.custommachine)
- return super(OESelftestTestContext, self).runTests(skips)
+ return super(OESelftestTestContext, self).runTests(processes, skips)
def listTests(self, display_type, machine=None):
return super(OESelftestTestContext, self).listTests(display_type)
@@ -68,8 +68,14 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
action="store_true", default=False,
help='List all available tests.')
+ parser.add_argument('-j', '--num-processes', dest='processes', action='store',
+ type=int, help="number of processes to execute in parallel with")
+
parser.add_argument('--machine', required=False, choices=['random', 'all'],
help='Run tests on different machines (random/all).')
+
+ parser.add_argument('-s', '--skip-export-json', action='store_true',
+ help='Skip the output test result in json format to files.')
parser.set_defaults(func=self.run)
@@ -96,8 +102,8 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
return cases_paths
def _process_args(self, logger, args):
- args.output_log = '%s-results-%s.log' % (self.name,
- time.strftime("%Y%m%d%H%M%S"))
+ args.test_start_time = time.strftime("%Y%m%d%H%M%S")
+ args.output_log = '%s-results-%s.log' % (self.name, args.test_start_time)
args.test_data_file = None
args.CASES_PATHS = None
@@ -137,6 +143,7 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
self.tc_kwargs['init']['config_paths']['bblayers_backup'])
self.tc_kwargs['run']['skips'] = args.skips
+ self.tc_kwargs['run']['processes'] = args.processes
def _pre_run(self):
def _check_required_env_variables(vars):
@@ -152,7 +159,7 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
os.chdir(builddir)
if not "meta-selftest" in self.tc.td["BBLAYERS"]:
- self.tc.logger.warn("meta-selftest layer not found in BBLAYERS, adding it")
+ self.tc.logger.warning("meta-selftest layer not found in BBLAYERS, adding it")
meta_selftestdir = os.path.join(
self.tc.td["BBLAYERS_FETCH_DIR"], 'meta-selftest')
if os.path.isdir(meta_selftestdir):
@@ -183,6 +190,10 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
self.tc.logger.error("You have buildhistory enabled already and this isn't recommended for selftest, please disable it first.")
raise OEQAPreRun
+ if "rm_work.bbclass" in self.tc.td["BBINCLUDED"]:
+ self.tc.logger.error("You have rm_work enabled which isn't recommended while running oe-selftest. Please disable it before continuing.")
+ raise OEQAPreRun
+
if "PRSERV_HOST" in self.tc.td:
self.tc.logger.error("Please unset PRSERV_HOST in order to run oe-selftest")
raise OEQAPreRun
@@ -193,8 +204,8 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
_add_layer_libs()
- self.tc.logger.info("Running bitbake -p")
- runCmd("bitbake -p")
+ self.tc.logger.info("Running bitbake -e to test the configuration is valid/parsable")
+ runCmd("bitbake -e")
def _internal_run(self, logger, args):
self.module_paths = self._get_cases_paths(
@@ -214,6 +225,11 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
rc = self.tc.runTests(**self.tc_kwargs['run'])
rc.logDetails()
rc.logSummary(self.name)
+ if not args.skip_export_json:
+ json_result_dir = os.path.join(os.path.dirname(os.path.abspath(args.output_log)),
+ 'json_testresults-%s' % args.test_start_time,
+ 'oe-selftest')
+ rc.logDetailsInJson(json_result_dir)
return rc
diff --git a/meta/lib/oeqa/utils/package_manager.py b/meta/lib/oeqa/utils/package_manager.py
index afd5b8e75f6..1495f873210 100644
--- a/meta/lib/oeqa/utils/package_manager.py
+++ b/meta/lib/oeqa/utils/package_manager.py
@@ -22,13 +22,15 @@ def get_package_manager(d, root_path):
pm = OpkgPM(d,
root_path,
d.getVar("IPKGCONF_TARGET"),
- d.getVar("ALL_MULTILIB_PACKAGE_ARCHS"))
+ d.getVar("ALL_MULTILIB_PACKAGE_ARCHS"),
+ filterbydependencies=False)
elif pkg_class == "deb":
pm = DpkgPM(d,
root_path,
d.getVar('PACKAGE_ARCHS'),
- d.getVar('DPKG_ARCH'))
+ d.getVar('DPKG_ARCH'),
+ filterbydependencies=False)
pm.write_index()
pm.update()
diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py
index c962602a63a..c3c643d7107 100644
--- a/meta/lib/oeqa/utils/qemurunner.py
+++ b/meta/lib/oeqa/utils/qemurunner.py
@@ -384,7 +384,7 @@ class QemuRunner:
# qemu-system behaves well and a SIGTERM is enough
os.kill(self.qemupid, signal.SIGTERM)
except ProcessLookupError as e:
- self.logger.warn('qemu-system ended unexpectedly')
+ self.logger.warning('qemu-system ended unexpectedly')
def stop_thread(self):
if self.thread and self.thread.is_alive():
@@ -400,7 +400,7 @@ class QemuRunner:
return False
def is_alive(self):
- if not self.runqemu:
+ if not self.runqemu or self.runqemu.poll() is not None:
return False
if os.path.isfile(self.qemu_pidfile):
f = open(self.qemu_pidfile, 'r')
@@ -461,7 +461,7 @@ class QemuRunner:
def _dump_host(self):
self.host_dumper.create_dir("qemu")
- self.logger.warn("Qemu ended unexpectedly, dump data from host"
+ self.logger.warning("Qemu ended unexpectedly, dump data from host"
" is in %s" % self.host_dumper.dump_dir)
self.host_dumper.dump_host()
diff --git a/meta/recipes-bsp/acpid/acpid_2.0.28.bb b/meta/recipes-bsp/acpid/acpid_2.0.30.bb
index 686526fdaad..aa19d28edff 100644
--- a/meta/recipes-bsp/acpid/acpid_2.0.28.bb
+++ b/meta/recipes-bsp/acpid/acpid_2.0.30.bb
@@ -3,5 +3,5 @@ require acpid.inc
LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
file://acpid.h;endline=24;md5=324a9cf225ae69ddaad1bf9d942115b5"
-SRC_URI[md5sum] = "0432407b5ff75ae8e08afb43052fde2b"
-SRC_URI[sha256sum] = "980c3a54b0d3f2fd49fd845a0584c5c2abeaab9e9ac09fcbb68686bbb57a7110"
+SRC_URI[md5sum] = "1528040b5d34f8c24ebabd97befbf913"
+SRC_URI[sha256sum] = "28b77b62d3f64ebd1c2a3d16bccc6d4333b4e24a86aeacebec255fad223cf4cb"
diff --git a/meta/recipes-bsp/apmd/apmd/legacy.patch b/meta/recipes-bsp/apmd/apmd/legacy.patch
index 5db895e8fec..88713118057 100644
--- a/meta/recipes-bsp/apmd/apmd/legacy.patch
+++ b/meta/recipes-bsp/apmd/apmd/legacy.patch
@@ -7,7 +7,7 @@ This patch is taken from
ftp://ftp.debian.org/debian/pool/main/a/apmd/apmd_3.2.2-15.debian.tar.xz
Upstream-Status: Inappropriate [upstream is dead]
-Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
Makefile | 2 +-
diff --git a/meta/recipes-bsp/eee-acpi-scripts/eee-acpi-scripts_git.bb b/meta/recipes-bsp/eee-acpi-scripts/eee-acpi-scripts_git.bb
deleted file mode 100644
index c2a02aadbbd..00000000000
--- a/meta/recipes-bsp/eee-acpi-scripts/eee-acpi-scripts_git.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-SUMMARY = "eeePC specific ACPI scripts"
-HOMEPAGE = "http://alioth.debian.org/projects/debian-eeepc/"
-SECTION = "base"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://debian/copyright;md5=77ef83ab5f4af938a93edb61f7b74f2c"
-
-SRCREV = "9d4cdedca25b396405f8587f9c4fbf8229e041c2"
-PV = "1.1.12+git${SRCPV}"
-
-SRC_URI = "git://git.debian.org/git/debian-eeepc/eeepc-acpi-scripts.git \
- file://remove-doc-check.patch \
- file://powerbtn.patch \
- file://policy-funcs "
-
-S = "${WORKDIR}/git"
-
-FILES_${PN} = "${datadir}/acpi-support/ \
- ${datadir}/eeepc-acpi-scripts \
- ${sysconfdir}/default/ \
- ${sysconfdir}/acpi/"
-
-do_install () {
- install -d ${D}${sysconfdir}/default/
- install -d ${D}${sysconfdir}/acpi/actions/
- install -d ${D}${sysconfdir}/acpi/events/
- install -d ${D}${sysconfdir}/acpi/lib/udev/rules.d
- install -d ${D}${datadir}/eeepc-acpi-scripts/
- install -d ${D}${datadir}/acpi-support/
- install -m 644 ${S}/events/* ${D}${sysconfdir}/acpi/events/
- install -m 644 ${S}/lib/udev/rules.d/* ${D}${sysconfdir}/acpi/lib/udev/rules.d/
- install ${S}/actions/* ${D}${sysconfdir}/acpi/actions/
- install -m 0644 ${S}/acpilib/functions.sh ${D}${datadir}/eeepc-acpi-scripts/
- install -m 0644 ${WORKDIR}/policy-funcs ${D}${datadir}/acpi-support/
- install -m 0644 ${S}/debian/eeepc-acpi-scripts.default* ${D}${sysconfdir}/default/
-}
-
-RDEPENDS_${PN} = "pm-utils"
-
diff --git a/meta/recipes-bsp/eee-acpi-scripts/files/policy-funcs b/meta/recipes-bsp/eee-acpi-scripts/files/policy-funcs
deleted file mode 100644
index fd099df0d80..00000000000
--- a/meta/recipes-bsp/eee-acpi-scripts/files/policy-funcs
+++ /dev/null
@@ -1,8 +0,0 @@
-CheckPolicy() {
- if pidof gnome-power-manager kpowersave > /dev/null ||
- (pidof dcopserver > /dev/null && test -x /usr/bin/dcop && /usr/bin/dcop kded kded loadedModules | grep -q klaptopdaemon) ; then
- echo 0;
- else
- echo 1;
- fi
-}
diff --git a/meta/recipes-bsp/eee-acpi-scripts/files/powerbtn.patch b/meta/recipes-bsp/eee-acpi-scripts/files/powerbtn.patch
deleted file mode 100644
index 403e5569b87..00000000000
--- a/meta/recipes-bsp/eee-acpi-scripts/files/powerbtn.patch
+++ /dev/null
@@ -1,22 +0,0 @@
----
- actions/power.sh | 3 +++
- events/powerbtn | 2 ++
- 2 files changed, 5 insertions(+)
-
-Upstream-Status: Inappropriate [enable feature]
-
-Index: git/events/powerbtn
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/events/powerbtn 2008-10-08 17:43:35.000000000 +0200
-@@ -0,0 +1,2 @@
-+event=button/power PWRF
-+action=/etc/acpi/actions/power.sh
-Index: git/actions/power.sh
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/actions/power.sh 2008-10-08 17:45:26.000000000 +0200
-@@ -0,0 +1,3 @@
-+#!/bin/sh
-+
-+/sbin/shutdown -h now "Power button pressed"
diff --git a/meta/recipes-bsp/eee-acpi-scripts/files/remove-doc-check.patch b/meta/recipes-bsp/eee-acpi-scripts/files/remove-doc-check.patch
deleted file mode 100644
index efb3dca7ac5..00000000000
--- a/meta/recipes-bsp/eee-acpi-scripts/files/remove-doc-check.patch
+++ /dev/null
@@ -1,60 +0,0 @@
----
- actions/hotkey.sh | 3 ---
- actions/suspend.sh | 3 ---
- actions/vga-toggle.sh | 3 ---
- actions/volume.sh | 3 ---
- 4 files changed, 12 deletions(-)
-
-Upstream-Status: Inappropriate [configuration]
-
-Index: git/eeepc-acpi-scripts/volume.sh
-===================================================================
---- git.orig/eeepc-acpi-scripts/volume.sh 2011-11-29 19:21:55.000000000 +0800
-+++ git/eeepc-acpi-scripts/volume.sh 2011-11-29 19:41:36.000000000 +0800
-@@ -3,12 +3,10 @@
- [ -d /sys/devices/platform/eeepc ] || [ -d /sys/devices/platform/eeepc-wmi ] || exit 0
- # Volume controls
-
--# do nothing if package is removed
- PKG=eeepc-acpi-scripts
- PKG_DIR=/usr/share/acpi-support/$PKG
- FUNC_LIB=$PKG_DIR/lib/functions.sh
- DEFAULT=/etc/default/$PKG
--[ -e "$FUNC_LIB" ] || exit 0
-
- . $FUNC_LIB
- . $PKG_DIR/lib/sound.sh
-Index: git/eeepc-acpi-scripts/hotkey.sh
-===================================================================
---- git.orig/eeepc-acpi-scripts/hotkey.sh 2011-11-29 19:21:55.000000000 +0800
-+++ git/eeepc-acpi-scripts/hotkey.sh 2011-11-29 19:39:51.000000000 +0800
-@@ -1,12 +1,10 @@
- #!/bin/sh
-
- [ -d /sys/devices/platform/eeepc ] || [ -d /sys/devices/platform/eeepc-wmi ] || exit 0
--# do nothing if package is removed
- PKG=eeepc-acpi-scripts
- PKG_DIR=/usr/share/acpi-support/$PKG
- FUNC_LIB=$PKG_DIR/lib/functions.sh
- DEFAULT=/etc/default/$PKG
--[ -e "$FUNC_LIB" ] || exit 0
-
- case $(runlevel) in
- *0|*6)
-Index: git/eeepc-acpi-scripts/vga-toggle.sh
-===================================================================
---- git.orig/eeepc-acpi-scripts/vga-toggle.sh 2011-11-29 19:21:55.000000000 +0800
-+++ git/eeepc-acpi-scripts/vga-toggle.sh 2011-11-29 19:40:24.000000000 +0800
-@@ -1,12 +1,10 @@
- #!/bin/sh
-
- [ -d /sys/devices/platform/eeepc ] || [ -d /sys/devices/platform/eeepc-wmi ] || exit 0
--# do nothing if package is removed
- PKG=eeepc-acpi-scripts
- PKG_DIR=/usr/share/acpi-support/$PKG
- FUNC_LIB=$PKG_DIR/lib/functions.sh
- DEFAULT=/etc/default/$PKG
--[ -e "$FUNC_LIB" ] || exit 0
-
- if [ -e "$DEFAULT" ]; then . "$DEFAULT"; fi
- . $FUNC_LIB
diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi/lib-Makefile-fix-parallel-issue.patch b/meta/recipes-bsp/gnu-efi/gnu-efi/lib-Makefile-fix-parallel-issue.patch
index 1b2ae1ef062..dc00b8fa4d2 100644
--- a/meta/recipes-bsp/gnu-efi/gnu-efi/lib-Makefile-fix-parallel-issue.patch
+++ b/meta/recipes-bsp/gnu-efi/gnu-efi/lib-Makefile-fix-parallel-issue.patch
@@ -1,7 +1,7 @@
-From 0daa354a16aa3cade56ed423d0f8a04cf1c22f9d Mon Sep 17 00:00:00 2001
+From 3ec8c2a70304eabd5760937a4ec3fbc4068a77ed Mon Sep 17 00:00:00 2001
From: Robert Yang <liezhi.yang@windriver.com>
Date: Thu, 23 Apr 2015 01:49:31 -0700
-Subject: [PATCH] lib/Makefile: fix parallel issue
+Subject: [PATCH 2/3] lib/Makefile: fix parallel issue
Fixed:
Assembler messages:
@@ -17,22 +17,22 @@ Upstream-Status: Pending
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
- lib/Makefile | 2 ++
+ lib/Makefile | 2 ++
1 file changed, 2 insertions(+)
diff --git a/lib/Makefile b/lib/Makefile
-index dc4b94a..f64d1ed 100644
+index 048751a..ed39bbb 100644
--- a/lib/Makefile
+++ b/lib/Makefile
-@@ -73,6 +73,8 @@ all: libsubdirs libefi.a
+@@ -74,6 +74,8 @@ all: libsubdirs libefi.a
libsubdirs:
for sdir in $(SUBDIRS); do mkdir -p $$sdir; done
+$(OBJS): libsubdirs
+
libefi.a: $(OBJS)
- $(AR) rv $@ $(OBJS)
+ $(AR) $(ARFLAGS) $@ $(OBJS)
--
-1.7.9.5
+2.7.4
diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch b/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch
index 0110260bd85..a9806cfdf62 100644
--- a/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch
+++ b/meta/recipes-bsp/gnu-efi/gnu-efi/parallel-make-archives.patch
@@ -1,4 +1,4 @@
-From 16865de66db33ca70872199e70d93efccecc8575 Mon Sep 17 00:00:00 2001
+From 48b2cdbcd761105e8ebad412fcbf23db1ac4ef7c Mon Sep 17 00:00:00 2001
From: Saul Wold <sgw@linux.intel.com>
Date: Sun, 9 Mar 2014 15:22:15 +0200
Subject: [PATCH 1/3] Fix parallel make failure for archives
@@ -17,13 +17,15 @@ Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
[Rebased for 3.0.6]
Signed-off-by: California Sullivan <california.l.sullivan@intel.com>
+[Rebased for 3.0.8]
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
---
gnuefi/Makefile | 3 ++-
lib/Makefile | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/gnuefi/Makefile b/gnuefi/Makefile
-index 2a61699..148106e 100644
+index 2a61699..89b560a 100644
--- a/gnuefi/Makefile
+++ b/gnuefi/Makefile
@@ -54,7 +54,8 @@ TARGETS = crt0-efi-$(ARCH).o libgnuefi.a
@@ -32,23 +34,23 @@ index 2a61699..148106e 100644
-libgnuefi.a: $(patsubst %,libgnuefi.a(%),$(OBJS))
+libgnuefi.a: $(OBJS)
-+ $(AR) rv $@ $(OBJS)
++ $(AR) $(ARFLAGS) $@ $(OBJS)
clean:
rm -f $(TARGETS) *~ *.o $(OBJS)
diff --git a/lib/Makefile b/lib/Makefile
-index b8d1ce7..6ef8107 100644
+index 0e6410d..048751a 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -75,7 +75,7 @@ libsubdirs:
for sdir in $(SUBDIRS); do mkdir -p $$sdir; done
libefi.a: $(OBJS)
-- $(AR) rv -U $@ $^
-+ $(AR) rv $@ $(OBJS)
+- $(AR) $(ARFLAGS) $@ $^
++ $(AR) $(ARFLAGS) $@ $(OBJS)
clean:
rm -f libefi.a *~ $(OBJS) */*.o
--
-2.9.4
+2.7.4
diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.6.bb b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.8.bb
index 2a607174802..dba47334420 100644
--- a/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.6.bb
+++ b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.8.bb
@@ -18,8 +18,8 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.bz2 \
file://gcc46-compatibility.patch \
"
-SRC_URI[md5sum] = "46f633758a8a37db9fd6909fe270c26b"
-SRC_URI[sha256sum] = "21515902d80fbea23328a61d70d3d51a47204abd1507ebfa27550a7b9bf22c91"
+SRC_URI[md5sum] = "ae32011cfe6b1c40c0f244b9a49ba181"
+SRC_URI[sha256sum] = "76006d8ea8d67bcf72f35d09d43e9ef6a69400d6d5d4bf64baf1ab7434e2b722"
COMPATIBLE_HOST = "(x86_64.*|i.86.*|aarch64.*|arm.*)-linux"
COMPATIBLE_HOST_armv4 = 'null'
diff --git a/meta/recipes-bsp/grub/files/0001-x86-64-Treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch b/meta/recipes-bsp/grub/files/0001-x86-64-Treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch
new file mode 100644
index 00000000000..61d58c40479
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/0001-x86-64-Treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch
@@ -0,0 +1,76 @@
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From 842c390469e2c2e10b5aa36700324cd3bde25875 Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Sat, 17 Feb 2018 06:47:28 -0800
+Subject: [PATCH] x86-64: Treat R_X86_64_PLT32 as R_X86_64_PC32
+
+Starting from binutils commit bd7ab16b4537788ad53521c45469a1bdae84ad4a:
+
+https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=bd7ab16b4537788ad53521c45469a1bdae84ad4a
+
+x86-64 assembler generates R_X86_64_PLT32, instead of R_X86_64_PC32, for
+32-bit PC-relative branches. Grub2 should treat R_X86_64_PLT32 as
+R_X86_64_PC32.
+
+Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
+Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
+---
+ grub-core/efiemu/i386/loadcore64.c | 1 +
+ grub-core/kern/x86_64/dl.c | 1 +
+ util/grub-mkimagexx.c | 1 +
+ util/grub-module-verifier.c | 1 +
+ 4 files changed, 4 insertions(+)
+
+diff --git a/grub-core/efiemu/i386/loadcore64.c b/grub-core/efiemu/i386/loadcore64.c
+index e49d0b6ff..18facf47f 100644
+--- a/grub-core/efiemu/i386/loadcore64.c
++++ b/grub-core/efiemu/i386/loadcore64.c
+@@ -98,6 +98,7 @@ grub_arch_efiemu_relocate_symbols64 (grub_efiemu_segment_t segs,
+ break;
+
+ case R_X86_64_PC32:
++ case R_X86_64_PLT32:
+ err = grub_efiemu_write_value (addr,
+ *addr32 + rel->r_addend
+ + sym.off
+diff --git a/grub-core/kern/x86_64/dl.c b/grub-core/kern/x86_64/dl.c
+index 440690673..3a73e6e6c 100644
+--- a/grub-core/kern/x86_64/dl.c
++++ b/grub-core/kern/x86_64/dl.c
+@@ -70,6 +70,7 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr,
+ break;
+
+ case R_X86_64_PC32:
++ case R_X86_64_PLT32:
+ {
+ grub_int64_t value;
+ value = ((grub_int32_t) *addr32) + rel->r_addend + sym->st_value -
+diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
+index a2bb05439..39d7efb91 100644
+--- a/util/grub-mkimagexx.c
++++ b/util/grub-mkimagexx.c
+@@ -841,6 +841,7 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections,
+ break;
+
+ case R_X86_64_PC32:
++ case R_X86_64_PLT32:
+ {
+ grub_uint32_t *t32 = (grub_uint32_t *) target;
+ *t32 = grub_host_to_target64 (grub_target_to_host32 (*t32)
+diff --git a/util/grub-module-verifier.c b/util/grub-module-verifier.c
+index 9179285a5..a79271f66 100644
+--- a/util/grub-module-verifier.c
++++ b/util/grub-module-verifier.c
+@@ -19,6 +19,7 @@ struct grub_module_verifier_arch archs[] = {
+ -1
+ }, (int[]){
+ R_X86_64_PC32,
++ R_X86_64_PLT32,
+ -1
+ }
+ },
+--
+2.11.0
+
diff --git a/meta/recipes-bsp/grub/files/gcc8.patch b/meta/recipes-bsp/grub/files/gcc8.patch
new file mode 100644
index 00000000000..fa7331f1b36
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/gcc8.patch
@@ -0,0 +1,74 @@
+From 563b1da6e6ae7af46cc8354cadb5dab416989f0a Mon Sep 17 00:00:00 2001
+From: Michael Chang <mchang@suse.com>
+Date: Mon, 26 Mar 2018 16:52:34 +0800
+Subject: Fix packed-not-aligned error on GCC 8
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+When building with GCC 8, there are several errors regarding packed-not-aligned.
+
+./include/grub/gpt_partition.h:79:1: error: alignment 1 of ‘struct grub_gpt_partentry’ is less than 8 [-Werror=packed-not-aligned]
+
+This patch fixes the build error by cleaning up the ambiguity of placing
+aligned structure in a packed one. In "struct grub_btrfs_time" and "struct
+grub_gpt_part_type", the aligned attribute seems to be superfluous, and also
+has to be packed, to ensure the structure is bit-to-bit mapped to the format
+laid on disk. I think we could blame to copy and paste error here for the
+mistake. In "struct efi_variable", we have to use grub_efi_packed_guid_t, as
+the name suggests. :)
+
+Signed-off-by: Michael Chang <mchang@suse.com>
+Tested-by: Michael Chang <mchang@suse.com>
+Tested-by: Paul Menzel <paulepanter@users.sourceforge.net>
+Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
+
+Upstream-Status: Backport http://git.savannah.gnu.org/cgit/grub.git/commit/?id=563b1da6e6ae7af46cc8354cadb5dab416989f0a
+---
+ grub-core/fs/btrfs.c | 2 +-
+ include/grub/efiemu/runtime.h | 2 +-
+ include/grub/gpt_partition.h | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
+index 4849c1c..be19544 100644
+--- a/grub-core/fs/btrfs.c
++++ b/grub-core/fs/btrfs.c
+@@ -175,7 +175,7 @@ struct grub_btrfs_time
+ {
+ grub_int64_t sec;
+ grub_uint32_t nanosec;
+-} __attribute__ ((aligned (4)));
++} GRUB_PACKED;
+
+ struct grub_btrfs_inode
+ {
+diff --git a/include/grub/efiemu/runtime.h b/include/grub/efiemu/runtime.h
+index 9b6b729..36d2ded 100644
+--- a/include/grub/efiemu/runtime.h
++++ b/include/grub/efiemu/runtime.h
+@@ -29,7 +29,7 @@ struct grub_efiemu_ptv_rel
+
+ struct efi_variable
+ {
+- grub_efi_guid_t guid;
++ grub_efi_packed_guid_t guid;
+ grub_uint32_t namelen;
+ grub_uint32_t size;
+ grub_efi_uint32_t attributes;
+diff --git a/include/grub/gpt_partition.h b/include/grub/gpt_partition.h
+index 1b32f67..9668a68 100644
+--- a/include/grub/gpt_partition.h
++++ b/include/grub/gpt_partition.h
+@@ -28,7 +28,7 @@ struct grub_gpt_part_type
+ grub_uint16_t data2;
+ grub_uint16_t data3;
+ grub_uint8_t data4[8];
+-} __attribute__ ((aligned(8)));
++} GRUB_PACKED;
+ typedef struct grub_gpt_part_type grub_gpt_part_type_t;
+
+ #define GRUB_GPT_PARTITION_TYPE_EMPTY \
+--
+cgit v1.0-41-gc330
+
diff --git a/meta/recipes-bsp/grub/grub-efi_2.02.bb b/meta/recipes-bsp/grub/grub-efi_2.02.bb
index ed27b90fdbc..14fce97ff05 100644
--- a/meta/recipes-bsp/grub/grub-efi_2.02.bb
+++ b/meta/recipes-bsp/grub/grub-efi_2.02.bb
@@ -22,6 +22,12 @@ python __anonymous () {
elif re.match('i.86', target):
grubtarget = 'i386'
grubimage = prefix + "bootia32.efi"
+ elif re.match('aarch64', target):
+ grubtarget = 'arm64'
+ grubimage = prefix + "bootaa64.efi"
+ elif re.match('arm', target):
+ grubtarget = 'arm'
+ grubimage = prefix + "bootarm.efi"
else:
raise bb.parse.SkipRecipe("grub-efi is incompatible with target %s" % target)
d.setVar("GRUB_TARGET", grubtarget)
diff --git a/meta/recipes-bsp/grub/grub2.inc b/meta/recipes-bsp/grub/grub2.inc
index 2ea31f64206..325eca25bbc 100644
--- a/meta/recipes-bsp/grub/grub2.inc
+++ b/meta/recipes-bsp/grub/grub2.inc
@@ -17,7 +17,9 @@ SRC_URI = "https://ftp.gnu.org/gnu/grub/grub-${PV}.tar.gz \
file://autogen.sh-exclude-pc.patch \
file://grub-module-explicitly-keeps-symbole-.module_license.patch \
file://0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch \
- file://fix.build.with.gcc-7.patch \
+ file://fix.build.with.gcc-7.patch \
+ file://gcc8.patch \
+ file://0001-x86-64-Treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch \
"
SRC_URI[md5sum] = "1116d1f60c840e6dbd67abbc99acb45d"
SRC_URI[sha256sum] = "660ee136fbcee08858516ed4de2ad87068bfe1b6b8b37896ce3529ff054a726d"
@@ -31,7 +33,7 @@ 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 = "uboot"
+GRUBPLATFORM_arm = "efi"
GRUBPLATFORM_aarch64 = "efi"
GRUBPLATFORM ??= "pc"
diff --git a/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/cve-2018-10195.patch b/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/cve-2018-10195.patch
new file mode 100644
index 00000000000..dea298634f0
--- /dev/null
+++ b/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/cve-2018-10195.patch
@@ -0,0 +1,28 @@
+Integer overflow in src/zm.c:zsdata() causes crash in sz and can leak information to receiver.
+
+Patch taken from Fedora.
+
+CVE: CVE-2018-10195
+Upstream-Status: Inappropriate (dead upstream)
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff -urN lrzsz-0.12.20/src/zm.c lrzsz-0.12.20.new/src/zm.c
+--- lrzsz-0.12.20/src/zm.c Tue Dec 29 09:48:38 1998
++++ lrzsz-0.12.20.new/src/zm.c Tue Oct 8 12:46:58 2002
+@@ -431,10 +431,12 @@
+ VPRINTF(3,("zsdata: %lu %s", (unsigned long) length,
+ Zendnames[(frameend-ZCRCE)&3]));
+ crc = 0;
+- do {
+- zsendline(*buf); crc = updcrc((0377 & *buf), crc);
+- buf++;
+- } while (--length>0);
++
++ for( ; length; length--) {
++ zsendline(*buf); crc = updcrc((0377 & *buf), crc);
++ buf++;
++ }
++
+ xsendline(ZDLE); xsendline(frameend);
+ crc = updcrc(frameend, crc);
+ \ No newline at end of file
diff --git a/meta/recipes-bsp/lrzsz/lrzsz_0.12.20.bb b/meta/recipes-bsp/lrzsz/lrzsz_0.12.20.bb
index 4b349be32f7..002c774c6d8 100644
--- a/meta/recipes-bsp/lrzsz/lrzsz_0.12.20.bb
+++ b/meta/recipes-bsp/lrzsz/lrzsz_0.12.20.bb
@@ -19,6 +19,7 @@ SRC_URI = "http://www.ohse.de/uwe/releases/lrzsz-${PV}.tar.gz \
file://acdefine.patch \
file://lrzsz_fix_for_automake-1.12.patch \
file://lrzsz-check-locale.h.patch \
+ file://cve-2018-10195.patch \
"
SRC_URI[md5sum] = "b5ce6a74abc9b9eb2af94dffdfd372a4"
diff --git a/meta/recipes-bsp/pciutils/pciutils_3.5.6.bb b/meta/recipes-bsp/pciutils/pciutils_3.6.2.bb
index b18b7da3ed4..413421cd8ae 100644
--- a/meta/recipes-bsp/pciutils/pciutils_3.5.6.bb
+++ b/meta/recipes-bsp/pciutils/pciutils_3.6.2.bb
@@ -11,8 +11,8 @@ DEPENDS = "zlib kmod"
SRC_URI = "${KERNELORG_MIRROR}/software/utils/pciutils/pciutils-${PV}.tar.xz \
file://configure.patch"
-SRC_URI[md5sum] = "8e52278399b7b35fcfc031bc05da80a8"
-SRC_URI[sha256sum] = "f346eeb90cce0910c05b877fe49eadc760fa084c0455fd313e39d4b2c2d4bb21"
+SRC_URI[md5sum] = "77963796d1be4f451b83e6da28ba4f82"
+SRC_URI[sha256sum] = "db452ec986edefd88af0d222d22f6102f8030a8633fdfe846c3ae4bde9bb93f3"
inherit multilib_header pkgconfig
@@ -38,6 +38,8 @@ export MANDIR = "${mandir}"
EXTRA_OEMAKE = "-e MAKEFLAGS= ${PCI_CONF_FLAG}"
+ASNEEDED = ""
+
# The configure script breaks if the HOST variable is set
HOST[unexport] = "1"
diff --git a/meta/recipes-bsp/pcmciautils/pcmciautils-018/lex_sys_types.patch b/meta/recipes-bsp/pcmciautils/pcmciautils-018/lex_sys_types.patch
deleted file mode 100644
index d4c2bed15ca..00000000000
--- a/meta/recipes-bsp/pcmciautils/pcmciautils-018/lex_sys_types.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Include sys/types.h for u_long definition
-
-Fix errors like
-In file included from src/lex_config.l:34:0:
-src/yacc_config.y:45:5: error: unknown type name 'u_long'
- u_long num;
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-Index: pcmciautils-018/src/lex_config.l
-===================================================================
---- pcmciautils-018.orig/src/lex_config.l
-+++ pcmciautils-018/src/lex_config.l
-@@ -22,6 +22,7 @@
- #include <unistd.h>
- #include <string.h>
- #include <syslog.h>
-+#include <sys/types.h>
-
- #ifdef HAS_WORDEXP
- #include <wordexp.h>
diff --git a/meta/recipes-bsp/pcmciautils/pcmciautils-018/makefile_fix.patch b/meta/recipes-bsp/pcmciautils/pcmciautils-018/makefile_fix.patch
deleted file mode 100644
index 7b0ce21194c..00000000000
--- a/meta/recipes-bsp/pcmciautils/pcmciautils-018/makefile_fix.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-Hardcoded paths are bad...
-This lets us use the install from OE's native sysroot
-rebase the patch to 018, removing hardcoded path for true
-as well. Removing of -D in install invocation is a little
-questionable, is it some GNU extention?
-
--Khem Raj <raj.khem@gmail.com>
-
-Index: pcmciautils-018/Makefile
-===================================================================
---- pcmciautils-018.orig/Makefile
-+++ pcmciautils-018/Makefile
-@@ -76,7 +76,7 @@ sbindir = ${exec_prefix}/sbin
- mandir = ${prefix}/usr/share/man
- udevdir = ${prefix}/lib/udev
-
--INSTALL = /usr/bin/install -c
-+INSTALL = install -c
- INSTALL_PROGRAM = ${INSTALL}
- INSTALL_DATA = ${INSTALL} -m 644
- INSTALL_SCRIPT = ${INSTALL_PROGRAM}
-@@ -180,7 +180,7 @@ endif
- # if DEBUG is enabled, then we do not strip or optimize
- ifeq ($(strip $(DEBUG)),true)
- CFLAGS += -O1 -g -DDEBUG -D_GNU_SOURCE
-- STRIPCMD = /bin/true -Since_we_are_debugging
-+ STRIPCMD = true -Since_we_are_debugging
- else
- CFLAGS += $(OPTIMIZATION) -fomit-frame-pointer -D_GNU_SOURCE
- STRIPCMD = $(STRIP) -s --remove-section=.note --remove-section=.comment
-@@ -273,30 +273,32 @@ clean:
-
- install-hotplug:
- $(INSTALL) -d $(DESTDIR)$(hotplugdir)
-- $(INSTALL_PROGRAM) -D hotplug/pcmcia.agent $(DESTDIR)$(hotplugdir)/pcmcia.agent
-- $(INSTALL_PROGRAM) -D hotplug/pcmcia.rc $(DESTDIR)$(hotplugdir)/pcmcia.rc
-+ $(INSTALL_PROGRAM) hotplug/pcmcia.agent $(DESTDIR)$(hotplugdir)/pcmcia.agent
-+ $(INSTALL_PROGRAM) hotplug/pcmcia.rc $(DESTDIR)$(hotplugdir)/pcmcia.rc
-
- uninstall-hotplug:
- - rm -f $(DESTDIR)$(hotplugdir)/pcmcia.agent $(DESTDIR)$(hotplugdir)/pcmcia.rc
-
- install-socket-hotplug:
-- $(INSTALL_PROGRAM) -D hotplug/pcmcia_socket.agent $(DESTDIR)$(hotplugdir)/pcmcia_socket.agent
-- $(INSTALL_PROGRAM) -D hotplug/pcmcia_socket.rc $(DESTDIR)$(hotplugdir)/pcmcia_socket.rc
-+ $(INSTALL_PROGRAM) hotplug/pcmcia_socket.agent $(DESTDIR)$(hotplugdir)/pcmcia_socket.agent
-+ $(INSTALL_PROGRAM) hotplug/pcmcia_socket.rc $(DESTDIR)$(hotplugdir)/pcmcia_socket.rc
-
- uninstall-socket-hotplug:
- - rm -f $(DESTDIR)$(hotplugdir)/pcmcia_socket.agent $(DESTDIR)$(hotplugdir)/pcmcia_socket.rc
-
- install-socket-tools:
-- $(INSTALL_PROGRAM) -D $(PCMCIA_SOCKET_STARTUP) $(DESTDIR)$(udevhelperdir)/$(PCMCIA_SOCKET_STARTUP)
-+ $(INSTALL) -d $(DESTDIR)$(udevhelperdir)
-+ $(INSTALL_PROGRAM) $(PCMCIA_SOCKET_STARTUP) $(DESTDIR)$(udevhelperdir)/$(PCMCIA_SOCKET_STARTUP)
-
- uninstall-socket-tools:
- - rm -f $(DESTDIR)$(udevhelperdir)/$(PCMCIA_SOCKET_STARTUP)
-
- install-tools:
- $(INSTALL) -d $(DESTDIR)$(sbindir)
-- $(INSTALL_PROGRAM) -D $(PCCARDCTL) $(DESTDIR)$(sbindir)/$(PCCARDCTL)
-+ $(INSTALL) -d $(DESTDIR)$(udevhelperdir)
-+ $(INSTALL_PROGRAM) $(PCCARDCTL) $(DESTDIR)$(sbindir)/$(PCCARDCTL)
- $(SYMLINK) $(PCCARDCTL) $(DESTDIR)$(sbindir)/$(LSPCMCIA)
-- $(INSTALL_PROGRAM) -D $(PCMCIA_CHECK_BROKEN_CIS) $(DESTDIR)$(udevhelperdir)/$(PCMCIA_CHECK_BROKEN_CIS)
-+ $(INSTALL_PROGRAM) $(PCMCIA_CHECK_BROKEN_CIS) $(DESTDIR)$(udevhelperdir)/$(PCMCIA_CHECK_BROKEN_CIS)
-
- uninstall-tools:
- - rm -f $(DESTDIR)$(sbindir)/$(PCCARDCTL)
-@@ -305,22 +307,24 @@ uninstall-tools:
-
- install-config:
- $(INSTALL) -d $(DESTDIR)$(pcmciaconfdir)
-- $(INSTALL_DATA) -D config/config.opts $(DESTDIR)$(pcmciaconfdir)/config.opts
-+ $(INSTALL_DATA) config/config.opts $(DESTDIR)$(pcmciaconfdir)/config.opts
- if [ -f config/config.opts.$(ARCH) ]; then \
-- $(INSTALL_DATA) -D config/config.opts.$(ARCH) $(DESTDIR)$(pcmciaconfdir)/config.opts; \
-+ $(INSTALL_DATA) config/config.opts.$(ARCH) $(DESTDIR)$(pcmciaconfdir)/config.opts; \
- fi
-
- uninstall-config:
- # - rm -f $(DESTDIR)$(pcmciaconfdir)/config.opts
-
- install-udev:
-- $(INSTALL_DATA) -D $(UDEV_RULES_FILE) $(DESTDIR)$(udevrulesdir)/60-pcmcia.rules
-+ $(INSTALL) -d $(DESTDIR)$(udevrulesdir)
-+ $(INSTALL_DATA) $(UDEV_RULES_FILE) $(DESTDIR)$(udevrulesdir)/60-pcmcia.rules
-
- uninstall-udev:
- - rm -f $(DESTDIR)$(udevrulesdir)/60-pcmcia.rules
-
- install-man:
-- $(INSTALL_DATA) -D man/man8/pccardctl.8 $(DESTDIR)$(mandir)/man8/pccardctl.8
-+ $(INSTALL) -d $(DESTDIR)$(mandir)/man8
-+ $(INSTALL_DATA) man/man8/pccardctl.8 $(DESTDIR)$(mandir)/man8/pccardctl.8
- $(SYMLINK) pccardctl.8 $(DESTDIR)$(mandir)/man8/lspcmcia.8
-
- uninstall-man:
diff --git a/meta/recipes-bsp/pcmciautils/pcmciautils-018/makefile_race.patch b/meta/recipes-bsp/pcmciautils/pcmciautils-018/makefile_race.patch
deleted file mode 100644
index 4c5eba7951e..00000000000
--- a/meta/recipes-bsp/pcmciautils/pcmciautils-018/makefile_race.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-"make src/lex_config.o"
-
-results in:
-
-src/lex_config.l:35:25: fatal error: yacc_config.h: No such file or directory
-
-so add missing dependency through a missing rule. Also remove a rule which
-doesn't appear to do anything.
-
-RP
-2016/1/31
-
-Upstream-Status: Pending
-
-Index: pcmciautils-018/Makefile
-===================================================================
---- pcmciautils-018.orig/Makefile
-+++ pcmciautils-018/Makefile
-@@ -246,8 +246,8 @@ $(PCMCIA_SOCKET_STARTUP): $(LIBC) src/st
- $(QUIET) $(LD) $(LDFLAGS) -o $@ $(CRT0) src/startup.o src/yacc_config.o src/lex_config.o $(LIB_OBJS) $(ARCH_LIB_OBJS)
- $(QUIET) $(STRIPCMD) $@
-
--yacc_config.o lex_config.o: %.o: %.c
-- $(CC) -c -MD -O -pipe $(CPPFLAGS) $<
-+src/lex_config.o : src/lex_config.c src/yacc_config.h ccdv
-+ $(QUIET) $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
-
- debugtools: ccdv $(CBDUMP) $(CISDUMP)
-
diff --git a/meta/recipes-bsp/pcmciautils/pcmciautils.inc b/meta/recipes-bsp/pcmciautils/pcmciautils.inc
deleted file mode 100644
index 05249805098..00000000000
--- a/meta/recipes-bsp/pcmciautils/pcmciautils.inc
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "Linux kernel userland utilities for the PCMCIA subsystem"
-HOMEPAGE = "https://www.kernel.org/pub/linux/utils/kernel/pcmcia/"
-SECTION = "kernel/userland"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-DEPENDS = "udev sysfsutils flex-native"
-RDEPENDS_${PN} = "udev module-init-tools"
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/pcmcia/${BP}.tar.xz"
-
-S = "${WORKDIR}/pcmciautils-${PV}"
-
-inherit pkgconfig
-
-export HOSTCC = "${BUILD_CC}"
-export etcdir = "${sysconfdir}"
-export sbindir = "${base_sbindir}"
-export pcmciaconfdir = "${sysconfdir}/pcmcia"
-export udevdir = "`pkg-config --variable=udevdir udev`"
-export udevrulesdir = "`pkg-config --variable=udevdir udev`/rules.d"
-export UDEV = "1"
-LD = "${CC}"
-CFLAGS =+ "-I${S}/src"
-CFLAGS =+ "-DPCMCIAUTILS_VERSION=\\"${PV}\\""
-
-EXTRA_OEMAKE = "-e 'STRIP=echo' 'LIB_OBJS=-lc -lsysfs' 'LEX=flex'"
-
-do_install () {
- oe_runmake 'DESTDIR=${D}' install
-}
-
-CONFFILES_${PN} += "${sysconfdir}/pcmcia/config.opts"
diff --git a/meta/recipes-bsp/pcmciautils/pcmciautils_018.bb b/meta/recipes-bsp/pcmciautils/pcmciautils_018.bb
deleted file mode 100644
index bf0f58a7cc6..00000000000
--- a/meta/recipes-bsp/pcmciautils/pcmciautils_018.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require pcmciautils.inc
-
-SRC_URI += "file://makefile_fix.patch \
- file://makefile_race.patch \
- file://lex_sys_types.patch \
-"
-
-SRC_URI[md5sum] = "885431c3cefb76ffdad8cb985134e996"
-SRC_URI[sha256sum] = "57c27be8f04ef4d535bcfa988567316cc57659fe69068327486dab53791e6558"
-
-PR = "r1"
diff --git a/meta/recipes-bsp/u-boot/files/CVE-2018-1000205-1.patch b/meta/recipes-bsp/u-boot/files/CVE-2018-1000205-1.patch
new file mode 100644
index 00000000000..fed3c3dcb9a
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/files/CVE-2018-1000205-1.patch
@@ -0,0 +1,59 @@
+From 7346c1e192d63cd35f99c7e845e53c5d4d0bdc24 Mon Sep 17 00:00:00 2001
+From: Teddy Reed <teddy.reed@gmail.com>
+Date: Sat, 9 Jun 2018 11:45:20 -0400
+Subject: [PATCH] vboot: Do not use hashed-strings offset
+
+The hashed-strings signature property includes two uint32_t values.
+The first is unneeded as there should never be a start offset into the
+strings region. The second, the size, is needed because the added
+signature node appends to this region.
+
+See tools/image-host.c, where a static 0 value is used for the offset.
+
+Signed-off-by: Teddy Reed <teddy.reed@gmail.com>
+Reviewed-by: Simon Glass <sjg@chromium.org>
+
+Upstream-Status: Backport[http://git.denx.de/?p=u-boot.git;a=commit;
+ h=7346c1e192d63cd35f99c7e845e53c5d4d0bdc24]
+
+CVE: CVE-2018-1000205
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ common/image-sig.c | 7 +++++--
+ tools/image-host.c | 1 +
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/common/image-sig.c b/common/image-sig.c
+index 8d2fd10..5a269d3 100644
+--- a/common/image-sig.c
++++ b/common/image-sig.c
+@@ -377,8 +377,11 @@ int fit_config_check_sig(const void *fit, int noffset, int required_keynode,
+ /* Add the strings */
+ strings = fdt_getprop(fit, noffset, "hashed-strings", NULL);
+ if (strings) {
+- fdt_regions[count].offset = fdt_off_dt_strings(fit) +
+- fdt32_to_cpu(strings[0]);
++ /*
++ * The strings region offset must be a static 0x0.
++ * This is set in tool/image-host.c
++ */
++ fdt_regions[count].offset = fdt_off_dt_strings(fit);
+ fdt_regions[count].size = fdt32_to_cpu(strings[1]);
+ count++;
+ }
+diff --git a/tools/image-host.c b/tools/image-host.c
+index 8e43671..be2d59b 100644
+--- a/tools/image-host.c
++++ b/tools/image-host.c
+@@ -135,6 +135,7 @@ static int fit_image_write_sig(void *fit, int noffset, uint8_t *value,
+
+ ret = fdt_setprop(fit, noffset, "hashed-nodes",
+ region_prop, region_proplen);
++ /* This is a legacy offset, it is unused, and must remain 0. */
+ strdata[0] = 0;
+ strdata[1] = cpu_to_fdt32(string_size);
+ if (!ret) {
+--
+2.7.4
+
diff --git a/meta/recipes-bsp/u-boot/files/CVE-2018-1000205-2.patch b/meta/recipes-bsp/u-boot/files/CVE-2018-1000205-2.patch
new file mode 100644
index 00000000000..bb79af1c7b3
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/files/CVE-2018-1000205-2.patch
@@ -0,0 +1,143 @@
+From 72239fc85f3eda078547956608c063ab965e90e9 Mon Sep 17 00:00:00 2001
+From: Teddy Reed <teddy.reed@gmail.com>
+Date: Sat, 9 Jun 2018 11:38:05 -0400
+Subject: [PATCH] vboot: Add FIT_SIGNATURE_MAX_SIZE protection
+
+This adds a new config value FIT_SIGNATURE_MAX_SIZE, which controls the
+max size of a FIT header's totalsize field. The field is checked before
+signature checks are applied to protect from reading past the intended
+FIT regions.
+
+This field is not part of the vboot signature so it should be sanity
+checked. If the field is corrupted then the structure or string region
+reads may have unintended behavior, such as reading from device memory.
+A default value of 256MB is set and intended to support most max storage
+sizes.
+
+Suggested-by: Simon Glass <sjg@chromium.org>
+Signed-off-by: Teddy Reed <teddy.reed@gmail.com>
+Reviewed-by: Simon Glass <sjg@chromium.org>
+
+Upstream-Status: Backport[http://git.denx.de/?p=u-boot.git;a=commit;
+ h=72239fc85f3eda078547956608c063ab965e90e9]
+
+CVE: CVE-2018-1000205
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ Kconfig | 10 ++++++++++
+ common/image-sig.c | 5 +++++
+ test/py/tests/test_vboot.py | 33 +++++++++++++++++++++++++++++++++
+ tools/Makefile | 1 +
+ 4 files changed, 49 insertions(+)
+
+diff --git a/Kconfig b/Kconfig
+index 5a82c95..c8b86cd 100644
+--- a/Kconfig
++++ b/Kconfig
+@@ -267,6 +267,16 @@ config FIT_SIGNATURE
+ format support in this case, enable it using
+ CONFIG_IMAGE_FORMAT_LEGACY.
+
++config FIT_SIGNATURE_MAX_SIZE
++ hex "Max size of signed FIT structures"
++ depends on FIT_SIGNATURE
++ default 0x10000000
++ help
++ This option sets a max size in bytes for verified FIT uImages.
++ A sane value of 256MB protects corrupted DTB structures from overlapping
++ device memory. Assure this size does not extend past expected storage
++ space.
++
+ config FIT_VERBOSE
+ bool "Show verbose messages when FIT images fail"
+ help
+diff --git a/common/image-sig.c b/common/image-sig.c
+index f65d883..8d2fd10 100644
+--- a/common/image-sig.c
++++ b/common/image-sig.c
+@@ -156,6 +156,11 @@ static int fit_image_setup_verify(struct image_sign_info *info,
+ {
+ char *algo_name;
+
++ if (fdt_totalsize(fit) > CONFIG_FIT_SIGNATURE_MAX_SIZE) {
++ *err_msgp = "Total size too large";
++ return 1;
++ }
++
+ if (fit_image_hash_get_algo(fit, noffset, &algo_name)) {
+ *err_msgp = "Can't get hash algo property";
+ return -1;
+diff --git a/test/py/tests/test_vboot.py b/test/py/tests/test_vboot.py
+index ee939f2..3d25ec3 100644
+--- a/test/py/tests/test_vboot.py
++++ b/test/py/tests/test_vboot.py
+@@ -26,6 +26,7 @@ Tests run with both SHA1 and SHA256 hashing.
+
+ import pytest
+ import sys
++import struct
+ import u_boot_utils as util
+
+ @pytest.mark.boardspec('sandbox')
+@@ -105,6 +106,26 @@ def test_vboot(u_boot_console):
+ util.run_and_log(cons, [mkimage, '-F', '-k', tmpdir, '-K', dtb,
+ '-r', fit])
+
++ def replace_fit_totalsize(size):
++ """Replace FIT header's totalsize with something greater.
++
++ The totalsize must be less than or equal to FIT_SIGNATURE_MAX_SIZE.
++ If the size is greater, the signature verification should return false.
++
++ Args:
++ size: The new totalsize of the header
++
++ Returns:
++ prev_size: The previous totalsize read from the header
++ """
++ total_size = 0
++ with open(fit, 'r+b') as handle:
++ handle.seek(4)
++ total_size = handle.read(4)
++ handle.seek(4)
++ handle.write(struct.pack(">I", size))
++ return struct.unpack(">I", total_size)[0]
++
+ def test_with_algo(sha_algo):
+ """Test verified boot with the given hash algorithm.
+
+@@ -146,6 +167,18 @@ def test_vboot(u_boot_console):
+ util.run_and_log(cons, [fit_check_sign, '-f', fit, '-k', tmpdir,
+ '-k', dtb])
+
++ # Replace header bytes
++ bcfg = u_boot_console.config.buildconfig
++ max_size = int(bcfg.get('config_fit_signature_max_size', 0x10000000), 0)
++ existing_size = replace_fit_totalsize(max_size + 1)
++ run_bootm(sha_algo, 'Signed config with bad hash', 'Bad Data Hash', False)
++ cons.log.action('%s: Check overflowed FIT header totalsize' % sha_algo)
++
++ # Replace with existing header bytes
++ replace_fit_totalsize(existing_size)
++ run_bootm(sha_algo, 'signed config', 'dev+', True)
++ cons.log.action('%s: Check default FIT header totalsize' % sha_algo)
++
+ # Increment the first byte of the signature, which should cause failure
+ sig = util.run_and_log(cons, 'fdtget -t bx %s %s value' %
+ (fit, sig_node))
+diff --git a/tools/Makefile b/tools/Makefile
+index 5dd33ed..0c3341e 100644
+--- a/tools/Makefile
++++ b/tools/Makefile
+@@ -133,6 +133,7 @@ ifdef CONFIG_FIT_SIGNATURE
+ # This affects include/image.h, but including the board config file
+ # is tricky, so manually define this options here.
+ HOST_EXTRACFLAGS += -DCONFIG_FIT_SIGNATURE
++HOST_EXTRACFLAGS += -DCONFIG_FIT_SIGNATURE_MAX_SIZE=$(CONFIG_FIT_SIGNATURE_MAX_SIZE)
+ endif
+
+ ifdef CONFIG_SYS_U_BOOT_OFFS
+--
+2.7.4
+
diff --git a/meta/recipes-bsp/u-boot/files/MPC8315ERDB-enable-DHCP.patch b/meta/recipes-bsp/u-boot/files/MPC8315ERDB-enable-DHCP.patch
deleted file mode 100644
index ecaa1796a49..00000000000
--- a/meta/recipes-bsp/u-boot/files/MPC8315ERDB-enable-DHCP.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Enabled dhcp client functionality for Yocto reference
-hardware MPC8315E-RDB.
-
-Upstream-Status: Pending
-
-Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
-
-Index: git/configs/MPC8315ERDB_defconfig
-===================================================================
---- git.orig/configs/MPC8315ERDB_defconfig
-+++ git/configs/MPC8315ERDB_defconfig
-@@ -12,6 +12,7 @@ CONFIG_CMD_PCI=y
- CONFIG_CMD_SATA=y
- CONFIG_CMD_USB=y
- # CONFIG_CMD_SETEXPR is not set
-+CONFIG_CMD_DHCP=y
- CONFIG_CMD_MII=y
- CONFIG_CMD_PING=y
- CONFIG_CMD_DATE=y
diff --git a/meta/recipes-bsp/u-boot/u-boot-common_2018.01.inc b/meta/recipes-bsp/u-boot/u-boot-common_2018.07.inc
index d2073ea0c76..22b44dccc64 100644
--- a/meta/recipes-bsp/u-boot/u-boot-common_2018.01.inc
+++ b/meta/recipes-bsp/u-boot/u-boot-common_2018.07.inc
@@ -1,16 +1,18 @@
HOMEPAGE = "http://www.denx.de/wiki/U-Boot/WebHome"
SECTION = "bootloaders"
+DEPENDS += "flex-native bison-native"
LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://Licenses/README;md5=a2c678cfd4a4d97135585cad908541c6"
+LIC_FILES_CHKSUM = "file://Licenses/README;md5=30503fd321432fc713238f582193b78e"
PE = "1"
# We use the revision in order to avoid having to fetch it from the
# repo during parse
-SRCREV = "f3dd87e0b98999a78e500e8c6d2b063ebadf535a"
+SRCREV = "8c5d4fd0ec222701598a27b26ab7265d4cee45a3"
SRC_URI = "git://git.denx.de/u-boot.git \
- file://MPC8315ERDB-enable-DHCP.patch \
+ file://CVE-2018-1000205-1.patch \
+ file://CVE-2018-1000205-2.patch \
"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-bsp/u-boot/u-boot-fw-utils_2018.01.bb b/meta/recipes-bsp/u-boot/u-boot-fw-utils_2018.07.bb
index 02887a138a4..52c13e75d8d 100644
--- a/meta/recipes-bsp/u-boot/u-boot-fw-utils_2018.01.bb
+++ b/meta/recipes-bsp/u-boot/u-boot-fw-utils_2018.07.bb
@@ -1,7 +1,7 @@
require u-boot-common_${PV}.inc
SUMMARY = "U-Boot bootloader fw_printenv/setenv utilities"
-DEPENDS = "mtd-utils"
+DEPENDS += "mtd-utils"
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'
diff --git a/meta/recipes-bsp/u-boot/u-boot-mkimage_2018.01.bb b/meta/recipes-bsp/u-boot/u-boot-mkimage_2018.07.bb
index 1c008be96e7..08bff1d1614 100644
--- a/meta/recipes-bsp/u-boot/u-boot-mkimage_2018.01.bb
+++ b/meta/recipes-bsp/u-boot/u-boot-mkimage_2018.07.bb
@@ -1,7 +1,7 @@
require u-boot-common_${PV}.inc
SUMMARY = "U-Boot bootloader image creation tool"
-DEPENDS = "openssl"
+DEPENDS += "openssl"
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'
diff --git a/meta/recipes-bsp/u-boot/u-boot.inc b/meta/recipes-bsp/u-boot/u-boot.inc
index c2bcf998402..48fbc572153 100644
--- a/meta/recipes-bsp/u-boot/u-boot.inc
+++ b/meta/recipes-bsp/u-boot/u-boot.inc
@@ -7,8 +7,11 @@ PACKAGE_ARCH = "${MACHINE_ARCH}"
inherit uboot-config uboot-extlinux-config uboot-sign deploy
+DEPENDS += "swig-native python-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 += 'PYTHON=nativepython STAGING_INCDIR=${STAGING_INCDIR_NATIVE} STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE}'
PACKAGECONFIG ??= "openssl"
# u-boot will compile its own tools during the build, with specific
@@ -228,7 +231,7 @@ do_deploy () {
rm -f ${UBOOT_BINARY} ${UBOOT_SYMLINK}
ln -sf ${UBOOT_IMAGE} ${UBOOT_SYMLINK}
ln -sf ${UBOOT_IMAGE} ${UBOOT_BINARY}
- fi
+ fi
if [ -n "${UBOOT_ELF}" ]
then
@@ -260,32 +263,32 @@ do_deploy () {
if [ -n "${SPL_BINARY}" ]
then
- 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
- 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}
- fi
- done
- unset j
- done
- unset i
- else
- install -m 644 ${B}/${SPL_BINARY} ${DEPLOYDIR}/${SPL_IMAGE}
- rm -f ${DEPLOYDIR}/${SPL_BINARYNAME} ${DEPLOYDIR}/${SPL_SYMLINK}
- ln -sf ${SPL_IMAGE} ${DEPLOYDIR}/${SPL_BINARYNAME}
- ln -sf ${SPL_IMAGE} ${DEPLOYDIR}/${SPL_SYMLINK}
- fi
- fi
+ 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
+ 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}
+ fi
+ done
+ unset j
+ done
+ unset i
+ else
+ install -m 644 ${B}/${SPL_BINARY} ${DEPLOYDIR}/${SPL_IMAGE}
+ rm -f ${DEPLOYDIR}/${SPL_BINARYNAME} ${DEPLOYDIR}/${SPL_SYMLINK}
+ ln -sf ${SPL_IMAGE} ${DEPLOYDIR}/${SPL_BINARYNAME}
+ ln -sf ${SPL_IMAGE} ${DEPLOYDIR}/${SPL_SYMLINK}
+ fi
+ fi
if [ -n "${UBOOT_ENV}" ]
diff --git a/meta/recipes-bsp/u-boot/u-boot_2018.01.bb b/meta/recipes-bsp/u-boot/u-boot_2018.07.bb
index 37c21dcaa38..37c21dcaa38 100644
--- a/meta/recipes-bsp/u-boot/u-boot_2018.01.bb
+++ b/meta/recipes-bsp/u-boot/u-boot_2018.07.bb
diff --git a/meta/recipes-bsp/usbutils/usbutils/usb-devices-avoid-dependency-on-bash.patch b/meta/recipes-bsp/usbutils/usbutils/usb-devices-avoid-dependency-on-bash.patch
index a6b241f8549..7edff2614a8 100644
--- a/meta/recipes-bsp/usbutils/usbutils/usb-devices-avoid-dependency-on-bash.patch
+++ b/meta/recipes-bsp/usbutils/usbutils/usb-devices-avoid-dependency-on-bash.patch
@@ -1,30 +1,30 @@
-From 333d5fbbc03481f1aa222bd68c2609db168ae3e0 Mon Sep 17 00:00:00 2001
-From: Paul Eggleton <paul.eggleton@linux.intel.com>
-Date: Thu, 26 Jul 2012 10:37:32 +0100
-Subject: [PATCH] usb-devices: avoid dependency on bash
+Upstream-Status: Backport (https://github.com/gregkh/usbutils/commit/508d1acf42e1bfd470c6bf1a188574c69c20aeed)
+Signed-off-by: Ross Burton <ross.burton@intel.com>
-By virtue of having #!/bin/bash this script declared that it requires
-bash, however manual examination, checkbashisms and tests with dash
-and busybox show that it doesn't contain any bashisms, so change the
-header to avoid the dependency.
+From 1c9162a5b30550aec8fa163906067bc179291b57 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Fri, 27 Jul 2018 15:28:34 +0100
+Subject: [PATCH] usb-devices: use /bin/sh
-Upstream-Status: Pending
+This script doesn't use any bashisms, so change the hashbang to /bin/sh.
-Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+Fixes #73.
+
+Signed-off-by: Ross Burton <ross.burton@intel.com>
---
- usb-devices | 2 +-
+ usb-devices | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/usb-devices b/usb-devices
-index b2052e2..14a5358 100755
+index afb4217..89d1b7d 100755
--- a/usb-devices
+++ b/usb-devices
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
-
- # Copyright: 2009 Greg Kroah-Hartman <greg@kroah.com>
- # 2009 Randy Dunlap <rdunlap@xenotime.net>
+ # SPDX-License-Identifier: GPL-2.0+
+ #
+ # Copyright (c) 2009 Greg Kroah-Hartman <greg@kroah.com>
--
-1.7.9.5
+2.11.0
diff --git a/meta/recipes-bsp/usbutils/usbutils_009.bb b/meta/recipes-bsp/usbutils/usbutils_010.bb
index 3ffc0dd97a7..e6d05b8e87c 100644
--- a/meta/recipes-bsp/usbutils/usbutils_009.bb
+++ b/meta/recipes-bsp/usbutils/usbutils_010.bb
@@ -3,32 +3,30 @@ DESCRIPTION = "Contains the lsusb utility for inspecting the devices connected t
HOMEPAGE = "http://www.linux-usb.org"
SECTION = "base"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+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 = "libusb zlib virtual/libiconv udev"
+DEPENDS = "libusb1 virtual/libiconv udev"
SRC_URI = "${KERNELORG_MIRROR}/linux/utils/usb/usbutils/usbutils-${PV}.tar.gz \
file://usb-devices-avoid-dependency-on-bash.patch \
"
-
-SRC_URI[md5sum] = "b5dbc498b2eb5058f7a57fc6532d0aad"
-SRC_URI[sha256sum] = "e73543293a17c7803994eac97a49e58b377e08e6299ba11aad09794b91340e8b"
+SRC_URI[md5sum] = "5eb2d2d68f9ed6dc3e9659a5988f7ed6"
+SRC_URI[sha256sum] = "881ba47fb2df10c3ba54a4cd6755a90377180890788e476f99d480ea9bc8bb58"
inherit autotools pkgconfig distro_features_check update-alternatives
ALTERNATIVE_${PN} = "lsusb"
ALTERNATIVE_PRIORITY = "100"
-FILES_${PN}-dev += "${datadir}/pkgconfig"
+# 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"
-RDEPENDS_${PN}-ptest = "libboost-system libboost-thread"
PACKAGE_BEFORE_PN =+ "${PN}-python"
FILES_${PN}-python += "${bindir}/lsusb.py"
RDEPENDS_${PN}-python = "python3-core"
-
-do_install_append() {
- sed -i -E '1s,#!.+python,#!${bindir}/python3,' ${D}${bindir}/lsusb.py
-}
diff --git a/meta/recipes-connectivity/avahi/avahi-ui_0.7.bb b/meta/recipes-connectivity/avahi/avahi-ui_0.7.bb
index 5648e386b34..a77653bf55d 100644
--- a/meta/recipes-connectivity/avahi/avahi-ui_0.7.bb
+++ b/meta/recipes-connectivity/avahi/avahi-ui_0.7.bb
@@ -1,31 +1,18 @@
-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"
-
require avahi.inc
inherit distro_features_check
ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-SRC_URI[md5sum] = "d76c59d0882ac6c256d70a2a585362a6"
-SRC_URI[sha256sum] = "57a99b5dfe7fdae794e3d1ee7a62973a368e91e414bd0dfa5d84434de5b14804"
-
DEPENDS += "avahi"
AVAHI_GTK = "gtk3"
S = "${WORKDIR}/avahi-${PV}"
-PACKAGES = "${PN} ${PN}-utils ${PN}-dbg ${PN}-dev ${PN}-staticdev ${PN}-doc avahi-discover"
+PACKAGES += "${PN}-utils avahi-discover"
FILES_${PN} = "${libdir}/libavahi-ui*.so.*"
-FILES_${PN}-dev += "${libdir}/libavahi-ui${SOLIBSDEV}"
-FILES_${PN}-staticdev += "${libdir}/libavahi-ui.a"
-
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 \
@@ -59,4 +46,3 @@ do_install_append () {
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
index ec368de4f4a..11846849f0c 100644
--- a/meta/recipes-connectivity/avahi/avahi.inc
+++ b/meta/recipes-connectivity/avahi/avahi.inc
@@ -13,15 +13,19 @@ 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"
-DEPENDS = "expat libcap libdaemon glib-2.0 intltool-native"
+SRC_URI = "https://github.com/lathiat/avahi/releases/download/v${PV}/avahi-${PV}.tar.gz"
-SRC_URI = "https://github.com/lathiat/avahi/releases/download/v${PV}/avahi-${PV}.tar.gz \
- file://00avahi-autoipd \
- file://99avahi-autoipd \
- file://initscript.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 ?= ""
@@ -31,18 +35,7 @@ PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus"
PACKAGECONFIG[gtk] = "--enable-gtk,--disable-gtk,gtk+"
PACKAGECONFIG[gtk3] = "--enable-gtk3,--disable-gtk3,gtk+3"
-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"
-
-inherit autotools pkgconfig update-rc.d gettext useradd gobject-introspection
+inherit autotools pkgconfig gettext gobject-introspection
EXTRA_OECONF = "--with-avahi-priv-access-group=adm \
--disable-stack-protector \
@@ -73,67 +66,12 @@ do_compile_prepend() {
export GIR_EXTRA_LIBS_PATH="${B}/avahi-gobject/.libs:${B}/avahi-common/.libs:${B}/avahi-client/.libs:${B}/avahi-glib/.libs"
}
-PACKAGES =+ "avahi-daemon libavahi-common libavahi-core libavahi-client avahi-dnsconfd libavahi-glib libavahi-ui 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_libavahi-ui = "${libdir}/libavahi-ui.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}) libavahi-client (= ${EXTENDPKGV})"
-
-RRECOMMENDS_avahi-daemon_append_libc-glibc = " libnss-mdns"
RRECOMMENDS_${PN}_append_libc-glibc = " libnss-mdns"
-CONFFILES_avahi-daemon = "${sysconfdir}/avahi/avahi-daemon.conf"
-
-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"
-
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
-
- 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.7.bb b/meta/recipes-connectivity/avahi/avahi_0.7.bb
index 7c91f10f11f..3d5f334a888 100644
--- a/meta/recipes-connectivity/avahi/avahi_0.7.bb
+++ b/meta/recipes-connectivity/avahi/avahi_0.7.bb
@@ -1,20 +1,80 @@
require avahi.inc
-inherit systemd
+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}) libavahi-client (= ${EXTENDPKGV})"
+
+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"
-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[md5sum] = "d76c59d0882ac6c256d70a2a585362a6"
-SRC_URI[sha256sum] = "57a99b5dfe7fdae794e3d1ee7a62973a368e91e414bd0dfa5d84434de5b14804"
-
-DEPENDS += "intltool-native"
+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
+}
-PACKAGES =+ "libavahi-gobject"
+# 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/0001-Fix-opening-etc-resolv.conf-error.patch b/meta/recipes-connectivity/avahi/files/0001-Fix-opening-etc-resolv.conf-error.patch
new file mode 100644
index 00000000000..11e7e8a9bc7
--- /dev/null
+++ b/meta/recipes-connectivity/avahi/files/0001-Fix-opening-etc-resolv.conf-error.patch
@@ -0,0 +1,40 @@
+From 78967814f5c37ed67f4cf64d70c9f76a03ee89bc Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Wed, 20 Jun 2018 13:57:35 +0800
+Subject: [PATCH] Fix opening /etc/resolv.conf error
+
+Fix to start avahi-daemon after systemd-resolved.service. This is because
+/etc/resolv.conf is a link to /etc/resolv-conf.systemd which in turn is
+a symlink to /run/systemd/resolve/resolv.conf. And /run/systemd/resolve/resolv.conf
+is created by systemd-resolved.service by default in current OE's systemd
+based systems.
+
+This fixes errro like below.
+
+ Failed to open /etc/resolv.conf: Invalid argument
+
+In fact, handling of /etc/resolv.conf is quite distro specific. So this patch
+is marked as OE specific.
+
+Upstream-Status: Inappropriate [OE Specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ avahi-daemon/avahi-daemon.service.in | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/avahi-daemon/avahi-daemon.service.in b/avahi-daemon/avahi-daemon.service.in
+index 548c834..63e28e4 100644
+--- a/avahi-daemon/avahi-daemon.service.in
++++ b/avahi-daemon/avahi-daemon.service.in
+@@ -18,6 +18,7 @@
+ [Unit]
+ Description=Avahi mDNS/DNS-SD Stack
+ Requires=avahi-daemon.socket
++After=systemd-resolved.service
+
+ [Service]
+ Type=dbus
+--
+2.11.0
+
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
new file mode 100644
index 00000000000..871bb2a5f6c
--- /dev/null
+++ b/meta/recipes-connectivity/bind/bind/0001-configure.in-remove-useless-L-use_openssl-lib.patch
@@ -0,0 +1,32 @@
+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-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
index 12150937162..a8d601dcaa7 100644
--- 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
@@ -7,11 +7,11 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
lib/dns/gen.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/lib/dns/gen.c b/lib/dns/gen.c
-index 7a7dafb..51a0435 100644
---- a/lib/dns/gen.c
-+++ b/lib/dns/gen.c
-@@ -148,7 +148,7 @@ static const char copyright[] =
+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
@@ -20,6 +20,3 @@ index 7a7dafb..51a0435 100644
static struct cc {
struct cc *next;
---
-1.9.1
-
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
index 1ed858cd3f7..01874a44076 100644
--- 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
@@ -13,11 +13,11 @@ Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
lib/dns/gen.c | 4 ++++
1 file changed, 4 insertions(+)
-diff --git a/lib/dns/gen.c b/lib/dns/gen.c
-index 51a0435..3d7214f 100644
---- a/lib/dns/gen.c
-+++ b/lib/dns/gen.c
-@@ -148,7 +148,11 @@ static const char copyright[] =
+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
@@ -29,6 +29,3 @@ index 51a0435..3d7214f 100644
static struct cc {
struct cc *next;
---
-1.7.9.5
-
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
new file mode 100644
index 00000000000..75908aa638f
--- /dev/null
+++ b/meta/recipes-connectivity/bind/bind/0001-named-lwresd-V-and-start-log-hide-build-options.patch
@@ -0,0 +1,34 @@
+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/CVE-2018-5740.patch b/meta/recipes-connectivity/bind/bind/CVE-2018-5740.patch
new file mode 100644
index 00000000000..7a2ba7eab62
--- /dev/null
+++ b/meta/recipes-connectivity/bind/bind/CVE-2018-5740.patch
@@ -0,0 +1,72 @@
+Upstream-Status: Backport [https://ftp.isc.org/isc/bind9/9.11.4-P1/patches/CVE-2018-5740]
+
+CVE: CVE-2018-5740
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+diff --git a/CHANGES b/CHANGES
+index 750b600..3d8d655 100644
+--- a/CHANGES
++++ b/CHANGES
+@@ -1,3 +1,9 @@
++ --- 9.11.4-P1 released ---
++
++4997. [security] named could crash during recursive processing
++ of DNAME records when "deny-answer-aliases" was
++ in use. (CVE-2018-5740) [GL #387]
++
+ --- 9.11.4 released ---
+
+ --- 9.11.4rc2 released ---
+diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c
+index 8f674a2..41d1385 100644
+--- a/lib/dns/resolver.c
++++ b/lib/dns/resolver.c
+@@ -6318,6 +6318,7 @@ is_answertarget_allowed(fetchctx_t *fctx, dns_name_t *qname, dns_name_t *rname,
+ unsigned int nlabels;
+ dns_fixedname_t fixed;
+ dns_name_t prefix;
++ int order;
+
+ REQUIRE(rdataset != NULL);
+ REQUIRE(rdataset->type == dns_rdatatype_cname ||
+@@ -6340,17 +6341,25 @@ is_answertarget_allowed(fetchctx_t *fctx, dns_name_t *qname, dns_name_t *rname,
+ tname = &cname.cname;
+ break;
+ case dns_rdatatype_dname:
++ if (dns_name_fullcompare(qname, rname, &order, &nlabels) !=
++ dns_namereln_subdomain)
++ {
++ return (ISC_TRUE);
++ }
+ result = dns_rdata_tostruct(&rdata, &dname, NULL);
+ RUNTIME_CHECK(result == ISC_R_SUCCESS);
+ dns_name_init(&prefix, NULL);
+ tname = dns_fixedname_initname(&fixed);
+- nlabels = dns_name_countlabels(qname) -
+- dns_name_countlabels(rname);
++ nlabels = dns_name_countlabels(rname);
+ dns_name_split(qname, nlabels, &prefix, NULL);
+ result = dns_name_concatenate(&prefix, &dname.dname, tname,
+ NULL);
+- if (result == DNS_R_NAMETOOLONG)
++ if (result == DNS_R_NAMETOOLONG) {
++ if (chainingp != NULL) {
++ *chainingp = ISC_TRUE;
++ }
+ return (ISC_TRUE);
++ }
+ RUNTIME_CHECK(result == ISC_R_SUCCESS);
+ break;
+ default:
+@@ -7071,7 +7080,9 @@ answer_response(fetchctx_t *fctx) {
+ }
+ if ((ardataset->type == dns_rdatatype_cname ||
+ ardataset->type == dns_rdatatype_dname) &&
+- !is_answertarget_allowed(fctx, qname, aname, ardataset,
++ type != ardataset->type &&
++ type != dns_rdatatype_any &&
++ !is_answertarget_allowed(fctx, qname, aname, ardataset,
+ NULL))
+ {
+ return (DNS_R_SERVFAIL);
diff --git a/meta/recipes-connectivity/bind/bind/bind-confgen-build-unix.o-once.patch b/meta/recipes-connectivity/bind/bind/bind-confgen-build-unix.o-once.patch
deleted file mode 100644
index 8bc4ea30f8c..00000000000
--- a/meta/recipes-connectivity/bind/bind/bind-confgen-build-unix.o-once.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 9b40619ff6fddfef2758ba797789f8487f412df3 Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Mon, 16 Feb 2015 00:50:01 -0800
-Subject: [PATCH] confgen: don't build unix.o twice
-
-Fixed:
-unix/os.o: file not recognized: File truncated
-collect2: error: ld returned 1 exit status
-
-This is because os.o was built twice:
-* The implicity rule (depends on unix/os.o)
-* The "make all" in unix subdir (depends on unix/os.o)
-
-Depend on subdirs which is unix only rather than unix/os.o will fix the
-problem.
-
-Upstream-Status: Pending
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-
-Update context(trailing whitespace) for version 9.10.5-P3.
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
----
- bin/confgen/Makefile.in | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/bin/confgen/Makefile.in b/bin/confgen/Makefile.in
-index dca272f..02becce 100644
---- a/bin/confgen/Makefile.in
-+++ b/bin/confgen/Makefile.in
-@@ -74,11 +74,11 @@ rndc-confgen.@O@: rndc-confgen.c
- ddns-confgen.@O@: ddns-confgen.c
- ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -c ${srcdir}/ddns-confgen.c
-
--rndc-confgen@EXEEXT@: rndc-confgen.@O@ util.@O@ keygen.@O@ ${UOBJS} ${CONFDEPLIBS}
-+rndc-confgen@EXEEXT@: rndc-confgen.@O@ util.@O@ keygen.@O@ ${CONFDEPLIBS} $(SUBDIRS)
- export BASEOBJS="rndc-confgen.@O@ util.@O@ keygen.@O@ ${UOBJS}"; \
- ${FINALBUILDCMD}
-
--ddns-confgen@EXEEXT@: ddns-confgen.@O@ util.@O@ keygen.@O@ ${UOBJS} ${CONFDEPLIBS}
-+ddns-confgen@EXEEXT@: ddns-confgen.@O@ util.@O@ keygen.@O@ ${CONFDEPLIBS} $(SUBDIRS)
- export BASEOBJS="ddns-confgen.@O@ util.@O@ keygen.@O@ ${UOBJS}"; \
- ${FINALBUILDCMD}
-
---
-1.7.9.5
-
diff --git a/meta/recipes-connectivity/bind/bind/bind-ensure-searching-for-json-headers-searches-sysr.patch b/meta/recipes-connectivity/bind/bind/bind-ensure-searching-for-json-headers-searches-sysr.patch
index 13df3bb0e9b..37e210e6da9 100644
--- a/meta/recipes-connectivity/bind/bind/bind-ensure-searching-for-json-headers-searches-sysr.patch
+++ b/meta/recipes-connectivity/bind/bind/bind-ensure-searching-for-json-headers-searches-sysr.patch
@@ -31,11 +31,11 @@ Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
configure.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/configure.in b/configure.in
-index c9ef3a601343..17a1f613e9ac 100644
---- a/configure.in
-+++ b/configure.in
-@@ -2139,7 +2139,7 @@ case "$use_libjson" in
+Index: bind-9.11.3/configure.in
+===================================================================
+--- bind-9.11.3.orig/configure.in
++++ bind-9.11.3/configure.in
+@@ -2574,7 +2574,7 @@ case "$use_libjson" in
libjson_libs=""
;;
auto|yes)
@@ -44,6 +44,3 @@ index c9ef3a601343..17a1f613e9ac 100644
do
if test -f "${d}/include/json/json.h"
then
---
-2.4.2
-
diff --git a/meta/recipes-connectivity/bind/bind/dont-test-on-host.patch b/meta/recipes-connectivity/bind/bind/dont-test-on-host.patch
deleted file mode 100644
index b02ecb10617..00000000000
--- a/meta/recipes-connectivity/bind/bind/dont-test-on-host.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Upstream-Status: Pending
-
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-
-Index: bind-9.9.5/bin/Makefile.in
-===================================================================
---- bind-9.9.5.orig/bin/Makefile.in
-+++ bind-9.9.5/bin/Makefile.in
-@@ -19,7 +19,7 @@ srcdir = @srcdir@
- VPATH = @srcdir@
- top_srcdir = @top_srcdir@
-
--SUBDIRS = named rndc dig delv dnssec tools tests nsupdate \
-+SUBDIRS = named rndc dig delv dnssec tools nsupdate \
- check confgen @PYTHON_TOOLS@ @PKCS11_TOOLS@
- TARGETS =
-
diff --git a/meta/recipes-connectivity/bind/bind/use-python3-and-fix-install-lib-path.patch b/meta/recipes-connectivity/bind/bind/use-python3-and-fix-install-lib-path.patch
deleted file mode 100644
index 9829f15881d..00000000000
--- a/meta/recipes-connectivity/bind/bind/use-python3-and-fix-install-lib-path.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Use python3 rather default python which maybe links to python2 for oe. And add
-option for setup.py to install files to right directory.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
----
-diff --git a/bin/python/Makefile.in b/bin/python/Makefile.in
-index a43a3c1..2e727f2 100644
---- a/bin/python/Makefile.in
-+++ b/bin/python/Makefile.in
-@@ -55,9 +55,9 @@ install:: ${TARGETS} installdirs
- ${INSTALL_DATA} ${srcdir}/dnssec-coverage.8 ${DESTDIR}${mandir}/man8
- if test -n "${PYTHON}" ; then \
- if test -n "${DESTDIR}" ; then \
-- ${PYTHON} ${srcdir}/setup.py install --root=${DESTDIR} --prefix=${prefix} ; \
-+ ${PYTHON} ${srcdir}/setup.py install --root=${DESTDIR} --prefix=${prefix} --install-lib=${PYTHON_SITEPACKAGES_DIR} ; \
- else \
-- ${PYTHON} ${srcdir}/setup.py install --prefix=${prefix} ; \
-+ ${PYTHON} ${srcdir}/setup.py install --prefix=${prefix} --install-lib=${PYTHON_SITEPACKAGES_DIR} ; \
- fi \
- fi
-
-diff --git a/configure.in b/configure.in
-index 314bb90..867923e 100644
---- a/configure.in
-+++ b/configure.in
-@@ -227,7 +227,7 @@ AC_ARG_WITH(python,
- [ --with-python=PATH specify path to python interpreter],
- use_python="$withval", use_python="unspec")
-
--python="python python3 python3.5 python3.4 python3.3 python3.2 python2 python2.7"
-+python="python3 python3.5 python3.4 python3.3 python3.2 python2 python2.7"
-
- testargparse='try: import argparse
- except: exit(1)'
diff --git a/meta/recipes-connectivity/bind/bind_9.10.6.bb b/meta/recipes-connectivity/bind/bind_9.11.4.bb
index 8b8835ba803..63d8b0baa84 100644
--- a/meta/recipes-connectivity/bind/bind_9.10.6.bb
+++ b/meta/recipes-connectivity/bind/bind_9.11.4.bb
@@ -3,51 +3,56 @@ HOMEPAGE = "http://www.isc.org/sw/bind/"
SECTION = "console/network"
LICENSE = "ISC & BSD"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=dba46507446198119bcde32a4feaab43"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=6ba7c9fe0c888a943c79c93e6de744fb"
-DEPENDS = "openssl libcap"
+DEPENDS = "openssl libcap zlib"
SRC_URI = "https://ftp.isc.org/isc/bind9/${PV}/${BPN}-${PV}.tar.gz \
file://conf.patch \
- file://make-etc-initd-bind-stop-work.patch \
- file://dont-test-on-host.patch \
- file://generate-rndc-key.sh \
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-confgen-build-unix.o-once.patch \
- file://0001-build-use-pkg-config-to-find-libxml2.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://use-python3-and-fix-install-lib-path.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://CVE-2018-5740.patch \
+"
-SRC_URI[md5sum] = "84e663284b17aee0df1ce6f248b137d7"
-SRC_URI[sha256sum] = "17bbcd2bd7b1d32f5ba4b30d5dbe8a39bce200079048073d1e0d050fdf47e69d"
+SRC_URI[md5sum] = "9b4834d78f30cdb796ce437262272a36"
+SRC_URI[sha256sum] = "595070b031f869f8939656b5a5d11b121211967f15f6afeafa895df745279617"
UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/"
UPSTREAM_CHECK_REGEX = "(?P<pver>9(\.\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=${PYTHON} --with-python-install-dir=${D}/${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-gssapi=no --with-ecdsa=yes --with-eddsa=no \
+ --with-lmdb=no \
--sysconfdir=${sysconfdir}/bind \
- --with-openssl=${STAGING_LIBDIR}/.. \
+ --with-openssl=${STAGING_DIR_HOST}${prefix} \
"
-inherit autotools update-rc.d systemd useradd pkgconfig python3-dir
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3native distutils3-base', '', d)}
-export PYTHON_SITEPACKAGES_DIR
-
-# PACKAGECONFIGs readline and libedit should NOT be set at same time
-PACKAGECONFIG ?= "readline"
-PACKAGECONFIG[httpstats] = "--with-libxml2,--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,,"
+# dhcp needs .la so keep them
+REMOVE_LIBTOOL_LA = "0"
USERADD_PACKAGES = "${PN}"
USERADD_PARAM_${PN} = "--system --home ${localstatedir}/cache/bind --no-create-home \
@@ -58,19 +63,6 @@ INITSCRIPT_PARAMS = "defaults"
SYSTEMD_SERVICE_${PN} = "named.service"
-PARALLEL_MAKE = ""
-
-RDEPENDS_${PN} = "python3-core"
-RDEPENDS_${PN}-dev = ""
-
-PACKAGE_BEFORE_PN += "${PN}-utils"
-FILES_${PN}-utils = "${bindir}/host ${bindir}/dig"
-FILES_${PN}-dev += "${bindir}/isc-config.h"
-FILES_${PN} += "${sbindir}/generate-rndc-key.sh ${PYTHON_SITEPACKAGES_DIR}"
-
-PACKAGE_BEFORE_PN += "${PN}-libs"
-FILES_${PN}-libs = "${libdir}/*.so*"
-
do_install_prepend() {
# clean host path in isc-config.sh before the hardlink created
# by "make install":
@@ -79,6 +71,7 @@ do_install_prepend() {
}
do_install_append() {
+
rm "${D}${bindir}/nslookup"
rm "${D}${mandir}/man1/nslookup.1"
rmdir "${D}${localstatedir}/run"
@@ -88,7 +81,12 @@ do_install_append() {
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"
- sed -i -e '1s,#!.*python3,#! /usr/bin/python3,' ${D}${sbindir}/dnssec-coverage ${D}${sbindir}/dnssec-checkds
+ 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}
@@ -106,8 +104,6 @@ do_install_append() {
install -d ${D}${sysconfdir}/tmpfiles.d
echo "d /run/named 0755 bind bind - -" > ${D}${sysconfdir}/tmpfiles.d/bind.conf
fi
-
- rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/isc/*.pyc
}
CONFFILES_${PN} = " \
@@ -121,3 +117,20 @@ CONFFILES_${PN} = " \
${sysconfdir}/bind/db.root \
"
+PACKAGE_BEFORE_PN += "${PN}-utils"
+FILES_${PN}-utils = "${bindir}/host ${bindir}/dig ${bindir}/mdig"
+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} = "bash"
+RDEPENDS_${PN}-utils = "bash"
+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 ae2a833c0cb..9d9739e952a 100644
--- a/meta/recipes-connectivity/bluez5/bluez5.inc
+++ b/meta/recipes-connectivity/bluez5/bluez5.inc
@@ -42,6 +42,7 @@ 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"
+PACKAGECONFIG[btpclient] = "--enable-btpclient,--disable-btpclient, ell"
SRC_URI = "\
${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.xz \
@@ -50,6 +51,7 @@ SRC_URI = "\
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}"
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 2fde7bc0692..da7140922d9 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,3 +1,4 @@
+From 99ccdbe155028c4c789803a429072675b87d0c3a 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
@@ -14,19 +15,18 @@ configuration. See thread:
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 | 4 ----
- obexd/src/org.bluez.obex.service.in | 4 ++++
- 3 files changed, 6 insertions(+), 6 deletions(-)
- delete mode 100644 obexd/src/org.bluez.obex.service
- create mode 100644 obexd/src/org.bluez.obex.service.in
+ Makefile.obexd | 4 ++--
+ obexd/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 2e33cbc72f2b..d5d858c857b4 100644
+index c462692..0325f66 100644
--- a/Makefile.obexd
+++ b/Makefile.obexd
-@@ -2,12 +2,12 @@
+@@ -1,12 +1,12 @@
if SYSTEMD
systemduserunitdir = @SYSTEMD_USERUNITDIR@
systemduserunit_DATA = obexd/src/obex.service
@@ -39,25 +39,18 @@ index 2e33cbc72f2b..d5d858c857b4 100644
-EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service
+EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service.in
- obex_plugindir = $(libdir)/obex/plugins
+ if OBEX
-diff --git a/obexd/src/org.bluez.obex.service b/obexd/src/org.bluez.obex.service
-deleted file mode 100644
-index a53808884554..000000000000
+diff --git a/obexd/src/org.bluez.obex.service b/obexd/src/org.bluez.obex.service.in
+similarity index 76%
+rename from obexd/src/org.bluez.obex.service
+rename to obexd/src/org.bluez.obex.service.in
+index a538088..9c815f2 100644
--- a/obexd/src/org.bluez.obex.service
-+++ /dev/null
-@@ -1,4 +0,0 @@
--[D-BUS Service]
--Name=org.bluez.obex
--Exec=/bin/false
--SystemdService=dbus-org.bluez.obex.service
-diff --git a/obexd/src/org.bluez.obex.service.in b/obexd/src/org.bluez.obex.service.in
-new file mode 100644
-index 000000000000..9c815f246b77
---- /dev/null
+++ b/obexd/src/org.bluez.obex.service.in
-@@ -0,0 +1,4 @@
-+[D-BUS Service]
-+Name=org.bluez.obex
+@@ -1,4 +1,4 @@
+ [D-BUS Service]
+ Name=org.bluez.obex
+-Exec=/bin/false
+Exec=@libexecdir@/obexd
-+SystemdService=dbus-org.bluez.obex.service
+ SystemdService=dbus-org.bluez.obex.service
diff --git a/meta/recipes-connectivity/bluez5/bluez5/0001-test-gatt-Fix-hung-issue.patch b/meta/recipes-connectivity/bluez5/bluez5/0001-test-gatt-Fix-hung-issue.patch
new file mode 100644
index 00000000000..e90b6a546fd
--- /dev/null
+++ b/meta/recipes-connectivity/bluez5/bluez5/0001-test-gatt-Fix-hung-issue.patch
@@ -0,0 +1,43 @@
+From 61e741654cc2eb167bca212a3bb2ba8f3ba280c1 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <Mingli.Yu@windriver.com>
+Date: Fri, 24 Aug 2018 12:04:03 +0800
+Subject: [PATCH] test-gatt: Fix hung issue
+
+The below test hangs infinitely
+$ unit/test-gatt -p /robustness/unkown-request -d
+/robustness/unkown-request - init
+/robustness/unkown-request - setup
+/robustness/unkown-request - setup complete
+/robustness/unkown-request - run
+ GATT: < 02 17 00 ...
+ bt_gatt_server:MTU exchange complete, with MTU: 23
+ GATT: > 03 00 02 ...
+ PDU: = 03 00 02 ...
+ GATT: < bf 00
+
+Actually, the /robustness/unkown-request test does
+no action.
+
+Upstream-Status: Submitted [https://marc.info/?l=linux-bluetooth&m=153508881804635&w=2]
+
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+---
+ unit/test-gatt.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/unit/test-gatt.c b/unit/test-gatt.c
+index c7e28f8..b57373b 100644
+--- a/unit/test-gatt.c
++++ b/unit/test-gatt.c
+@@ -4463,7 +4463,7 @@ int main(int argc, char *argv[])
+ test_server, service_db_1, NULL,
+ raw_pdu(0x03, 0x00, 0x02),
+ raw_pdu(0xbf, 0x00),
+- raw_pdu(0x01, 0xbf, 0x00, 0x00, 0x06));
++ raw_pdu());
+
+ define_test_server("/robustness/unkown-command",
+ test_server, service_db_1, NULL,
+--
+2.7.4
+
diff --git a/meta/recipes-connectivity/bluez5/bluez5_5.48.bb b/meta/recipes-connectivity/bluez5/bluez5_5.50.bb
index 84a6cd22db1..66271432fea 100644
--- a/meta/recipes-connectivity/bluez5/bluez5_5.48.bb
+++ b/meta/recipes-connectivity/bluez5/bluez5_5.50.bb
@@ -2,8 +2,8 @@ require bluez5.inc
REQUIRED_DISTRO_FEATURES = "bluez5"
-SRC_URI[md5sum] = "c9c853f3c90564cabec75ab35106c355"
-SRC_URI[sha256sum] = "b9a8723072ef66bae7ec301c774902ebcb444c9c5b149b5a199e60a1ba970e90"
+SRC_URI[md5sum] = "8e35c67c81a55d3ad4c9f22280dae178"
+SRC_URI[sha256sum] = "5ffcaae18bbb6155f1591be8c24898dc12f062075a40b538b745bfd477481911"
# noinst programs in Makefile.tools that are conditional on READLINE
# support
@@ -66,4 +66,5 @@ NOINST_TOOLS_BT ?= " \
tools/check-selftest \
tools/gatt-service \
profiles/iap/iapd \
+ ${@bb.utils.contains('PACKAGECONFIG', 'btpclient', 'tools/btpclient', '', d)} \
"
diff --git a/meta/recipes-connectivity/dhcp/dhcp.inc b/meta/recipes-connectivity/dhcp/dhcp.inc
index e94370786ad..3e65e5cf295 100644
--- a/meta/recipes-connectivity/dhcp/dhcp.inc
+++ b/meta/recipes-connectivity/dhcp/dhcp.inc
@@ -8,7 +8,7 @@ easier to administer devices."
HOMEPAGE = "http://www.isc.org/"
LICENSE = "ISC"
-LIC_FILES_CHKSUM = "file://LICENSE;beginline=4;md5=c5c64d696107f84b56fe337d14da1753"
+LIC_FILES_CHKSUM = "file://LICENSE;beginline=4;md5=004a4db50a1e20972e924a8618747c01"
DEPENDS = "openssl bind"
@@ -24,7 +24,7 @@ SRC_URI = "http://ftp.isc.org/isc/dhcp/${PV}/dhcp-${PV}.tar.gz \
UPSTREAM_CHECK_URI = "ftp://ftp.isc.org/isc/dhcp/"
UPSTREAM_CHECK_REGEX = "(?P<pver>\d+\.\d+\.(\d+?))/"
-inherit autotools systemd useradd update-rc.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}"
@@ -48,11 +48,17 @@ 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 \
- --with-libbind=${STAGING_LIBDIR}/ \
--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
@@ -96,8 +102,7 @@ PACKAGES += "dhcp-libs dhcp-server dhcp-server-config dhcp-client dhcp-relay dhc
PACKAGES_remove = "${PN}"
RDEPENDS_${PN}-dev = ""
RDEPENDS_${PN}-staticdev = ""
-
-FILES_${PN}-libs = "${libdir}/libdhcpctl.so.0* ${libdir}/libomapi.so.0*"
+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"
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
index e5b3cf9bc5e..d1b57f0bb41 100644
--- 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
@@ -11,11 +11,11 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
includes/site.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/includes/site.h b/includes/site.h
-index b2f7fd7..280fbb9 100644
---- a/includes/site.h
-+++ b/includes/site.h
-@@ -149,7 +149,8 @@
+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. */
@@ -25,6 +25,3 @@ index b2f7fd7..280fbb9 100644
/* 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
---
-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
index 810c7b6dad1..5b35933a54a 100644
--- a/meta/recipes-connectivity/dhcp/dhcp/0003-link-with-lcrypto.patch
+++ b/meta/recipes-connectivity/dhcp/dhcp/0003-link-with-lcrypto.patch
@@ -18,11 +18,11 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
configure.ac | 4 ++++
1 file changed, 4 insertions(+)
-diff --git a/configure.ac b/configure.ac
-index cdfa352..44fb57e 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -591,6 +591,10 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[void foo() __attribute__((noreturn));
+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)
@@ -33,6 +33,3 @@ index cdfa352..44fb57e 100644
# Solaris needs some libraries for functions
AC_SEARCH_LIBS(socket, [socket])
AC_SEARCH_LIBS(inet_ntoa, [nsl])
---
-1.8.3.1
-
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
index 7d1d8679860..b71c93dd6da 100644
--- 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
@@ -19,82 +19,75 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
server/Makefile.am | 2 +-
6 files changed, 9 insertions(+), 5 deletions(-)
-diff --git a/client/Makefile.am b/client/Makefile.am
-index 2cb83d8..4730bb3 100644
---- a/client/Makefile.am
-+++ b/client/Makefile.am
-@@ -7,11 +7,11 @@ SUBDIRS = . tests
- BINDLIBDIR = @BINDDIR@/lib
-
- AM_CPPFLAGS = -DCLIENT_PATH='"PATH=$(sbindir):/sbin:/bin:/usr/sbin:/usr/bin"' \
-- -DLOCALSTATEDIR='"$(localstatedir)"'
-+ -DLOCALSTATEDIR='"$(localstatedir)"' -I$(top_srcdir)/includes
-
- dist_sysconf_DATA = dhclient.conf.example
- sbin_PROGRAMS = dhclient
--dhclient_SOURCES = clparse.c dhclient.c dhc6.c \
-+dhclient_SOURCES = $(srcdir)/clparse.c $(srcdir)/dhclient.c $(srcdir)/dhc6.c \
- scripts/bsdos scripts/freebsd scripts/linux scripts/macos \
- scripts/netbsd scripts/nextstep scripts/openbsd \
- scripts/solaris scripts/openwrt
-diff --git a/common/Makefile.am b/common/Makefile.am
-index 113aee8..0f24fbb 100644
---- a/common/Makefile.am
-+++ b/common/Makefile.am
+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)
- noinst_LIBRARIES = libdhcp.a
-diff --git a/dhcpctl/Makefile.am b/dhcpctl/Makefile.am
-index ceb0de1..ba8dd8b 100644
---- a/dhcpctl/Makefile.am
-+++ b/dhcpctl/Makefile.am
-@@ -1,5 +1,7 @@
- BINDLIBDIR = @BINDDIR@/lib
+ 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
-diff --git a/omapip/Makefile.am b/omapip/Makefile.am
-index 446a594..dd1afa0 100644
---- a/omapip/Makefile.am
-+++ b/omapip/Makefile.am
-@@ -1,4 +1,5 @@
- BINDLIBDIR = @BINDDIR@/lib
+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
-diff --git a/relay/Makefile.am b/relay/Makefile.am
-index 3060eca..6d652f6 100644
---- a/relay/Makefile.am
-+++ b/relay/Makefile.am
-@@ -1,6 +1,6 @@
- BINDLIBDIR = @BINDDIR@/lib
-
+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/server/Makefile.am b/server/Makefile.am
-index 54feedf..3990b9c 100644
---- a/server/Makefile.am
-+++ b/server/Makefile.am
-@@ -6,7 +6,7 @@ SUBDIRS = . tests
-
- BINDLIBDIR = @BINDDIR@/lib
-
--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
---
-1.8.3.1
-
diff --git a/meta/recipes-connectivity/dhcp/dhcp/0006-site.h-enable-gentle-shutdown.patch b/meta/recipes-connectivity/dhcp/dhcp/0006-site.h-enable-gentle-shutdown.patch
index c62b283d50d..6ef70ccacd1 100644
--- a/meta/recipes-connectivity/dhcp/dhcp/0006-site.h-enable-gentle-shutdown.patch
+++ b/meta/recipes-connectivity/dhcp/dhcp/0006-site.h-enable-gentle-shutdown.patch
@@ -12,11 +12,11 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
includes/site.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/includes/site.h b/includes/site.h
-index 280fbb9..e6c2972 100644
---- a/includes/site.h
-+++ b/includes/site.h
-@@ -296,7 +296,7 @@
+Index: dhcp-4.4.1/includes/site.h
+===================================================================
+--- dhcp-4.4.1.orig/includes/site.h
++++ dhcp-4.4.1/includes/site.h
+@@ -295,7 +295,7 @@
situations. We plan to revisit this feature and may
make non-backwards compatible changes including the
removal of this define. Use at your own risk. */
@@ -25,6 +25,3 @@ index 280fbb9..e6c2972 100644
/* Include old error codes. This is provided in case you
are building an external program similar to omshell for
---
-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
index 43c26ea21c6..feb0754fff4 100644
--- 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
@@ -15,13 +15,13 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
configure.ac | 11 +++++++++++
1 file changed, 11 insertions(+)
-diff --git a/configure.ac b/configure.ac
-index 44fb57e..8e9f509 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -611,6 +611,17 @@ AC_CHECK_FUNCS(strlcat)
- # For HP/UX we need -lipv6 for if_nametoindex, perhaps others.
- AC_SEARCH_LIBS(if_nametoindex, [ipv6])
+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]),
@@ -37,6 +37,26 @@ index 44fb57e..8e9f509 100644
# check for /dev/random (declares HAVE_DEV_RANDOM)
AC_MSG_CHECKING(for random device)
AC_ARG_WITH(randomdev,
---
-1.8.3.1
-
+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/0010-build-shared-libs.patch b/meta/recipes-connectivity/dhcp/dhcp/0010-build-shared-libs.patch
deleted file mode 100644
index f128731c644..00000000000
--- a/meta/recipes-connectivity/dhcp/dhcp/0010-build-shared-libs.patch
+++ /dev/null
@@ -1,208 +0,0 @@
-From 76c370a929e5ab5dbc81c2fbcf4e50f4fbc08ce9 Mon Sep 17 00:00:00 2001
-From: Kai Kang <kai.kang@windriver.com>
-Date: Tue, 15 Aug 2017 15:53:37 +0800
-Subject: [PATCH 10/11] build shared libs
-
-Upstream-Status: Pending
-
-Port patches from Fedora to build shared libs rather than static libs.
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-Rebase to 4.3.6
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- client/Makefile.am | 4 ++--
- common/tests/Makefile.am | 13 +++++--------
- configure.ac | 12 ++----------
- dhcpctl/Makefile.am | 14 ++++++--------
- omapip/Makefile.am | 7 +++----
- relay/Makefile.am | 5 ++---
- server/Makefile.am | 7 +++----
- server/tests/Makefile.am | 7 +++----
- 8 files changed, 26 insertions(+), 43 deletions(-)
-
-diff --git a/client/Makefile.am b/client/Makefile.am
-index 84d8131..e776bf0 100644
---- a/client/Makefile.am
-+++ b/client/Makefile.am
-@@ -15,7 +15,7 @@ dhclient_SOURCES = $(srcdir)/clparse.c $(srcdir)/dhclient.c $(srcdir)/dhc6.c \
- scripts/bsdos scripts/freebsd scripts/linux scripts/macos \
- scripts/netbsd scripts/nextstep scripts/openbsd \
- scripts/solaris scripts/openwrt
--dhclient_LDADD = ../common/libdhcp.a ../omapip/libomapi.a $(BINDLIBDIR)/libirs.a \
-- $(BINDLIBDIR)/libdns.a $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
-+dhclient_LDADD = ../common/libdhcp.a ../omapip/libomapi.la \
-+ -L$(BINDLIBDIR) -lirs -ldns -lisccfg -lisc
- man_MANS = dhclient.8 dhclient-script.8 dhclient.conf.5 dhclient.leases.5
- EXTRA_DIST = $(man_MANS)
-diff --git a/common/tests/Makefile.am b/common/tests/Makefile.am
-index 2f98d22..8745e88 100644
---- a/common/tests/Makefile.am
-+++ b/common/tests/Makefile.am
-@@ -15,26 +15,23 @@ ATF_TESTS += alloc_unittest dns_unittest misc_unittest ns_name_unittest
- alloc_unittest_SOURCES = test_alloc.c $(top_srcdir)/tests/t_api_dhcp.c
- alloc_unittest_LDADD = $(ATF_LDFLAGS)
- alloc_unittest_LDADD += ../libdhcp.a \
-- ../../omapip/libomapi.a $(BINDLIBDIR)/libirs.a \
-- $(BINDLIBDIR)/libdns.a $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
-+ ../../omapip/libomapi.la -L$(BINDLIBDIR) -ldns -lisccfg -lisc
-
- dns_unittest_SOURCES = dns_unittest.c $(top_srcdir)/tests/t_api_dhcp.c
- dns_unittest_LDADD = $(ATF_LDFLAGS)
- dns_unittest_LDADD += ../libdhcp.a \
-- ../../omapip/libomapi.a $(BINDLIBDIR)/libirs.a \
-- $(BINDLIBDIR)/libdns.a $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
-+ ../../omapip/libomapi.la -L$(BINDLIBDIR) -ldns -lisccfg -lisc
-
- misc_unittest_SOURCES = misc_unittest.c $(top_srcdir)/tests/t_api_dhcp.c
- misc_unittest_LDADD = $(ATF_LDFLAGS)
- misc_unittest_LDADD += ../libdhcp.a \
-- ../../omapip/libomapi.a $(BINDLIBDIR)/libirs.a \
-- $(BINDLIBDIR)/libdns.a $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
-+ ../../omapip/libomapi.la -L$(BINDLIBDIR) -ldns -lisccfg -lisc
-
- ns_name_unittest_SOURCES = ns_name_test.c $(top_srcdir)/tests/t_api_dhcp.c
- ns_name_unittest_LDADD = $(ATF_LDFLAGS)
- ns_name_unittest_LDADD += ../libdhcp.a \
-- ../../omapip/libomapi.a $(BINDLIBDIR)/libirs.a \
-- $(BINDLIBDIR)/libdns.a $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
-+ ../../omapip/libomapi.a -L$(BINDLIBDIR) \
-+ -ldns -lisccfg -lisc
-
- check: $(ATF_TESTS)
- @if test $(top_srcdir) != ${top_builddir}; then \
-diff --git a/configure.ac b/configure.ac
-index 8e9f509..bfe988a 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -47,16 +47,8 @@ AM_CONDITIONAL(CROSS_COMPILING, test "$cross_compiling" = "yes")
- # Use this to define _GNU_SOURCE to pull in the IPv6 Advanced Socket API.
- AC_USE_SYSTEM_EXTENSIONS
-
--AC_PROG_RANLIB
--
--AC_PATH_PROG(AR, ar)
--AC_SUBST(AR)
--
--if test "X$AR" = "X"; then
-- AC_MSG_ERROR([
--ar program not found. Please fix your PATH to include the directory in
--which ar resides, or set AR in the environment with the full path to ar.])
--fi
-+# Use libtool to simplify building of shared libraries
-+AC_PROG_LIBTOOL
-
- AC_CONFIG_HEADERS([includes/config.h])
-
-diff --git a/dhcpctl/Makefile.am b/dhcpctl/Makefile.am
-index 9b2486e..784cdf7 100644
---- a/dhcpctl/Makefile.am
-+++ b/dhcpctl/Makefile.am
-@@ -3,19 +3,17 @@ BINDLIBDIR = @BINDDIR@
- AM_CPPFLAGS = -I$(top_srcdir)/includes -I$(top_srcdir)
-
- bin_PROGRAMS = omshell
--lib_LIBRARIES = libdhcpctl.a
-+lib_LTLIBRARIES = libdhcpctl.la
- noinst_PROGRAMS = cltest
- man_MANS = omshell.1 dhcpctl.3
- EXTRA_DIST = $(man_MANS)
-
- omshell_SOURCES = omshell.c
--omshell_LDADD = libdhcpctl.a ../common/libdhcp.a ../omapip/libomapi.a \
-- $(BINDLIBDIR)/libirs.a $(BINDLIBDIR)/libdns.a \
-- $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
-+omshell_LDADD = libdhcpctl.la ../common/libdhcp.a ../omapip/libomapi.la \
-+ -L$(BINDLIBDIR) -lirs -ldns -lisccfg -lisc
-
--libdhcpctl_a_SOURCES = dhcpctl.c callback.c remote.c
-+libdhcpctl_la_SOURCES = dhcpctl.c callback.c remote.c
-
- cltest_SOURCES = cltest.c
--cltest_LDADD = libdhcpctl.a ../common/libdhcp.a ../omapip/libomapi.a \
-- $(BINDLIBDIR)/libirs.a $(BINDLIBDIR)/libdns.a \
-- $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
-+cltest_LDADD = libdhcpctl.la ../common/libdhcp.a ../omapip/libomapi.la \
-+ -L$(BINDLIBDIR) -lirs -ldns -lisccfg -lisc
-diff --git a/omapip/Makefile.am b/omapip/Makefile.am
-index e4a8599..c0c7a1e 100644
---- a/omapip/Makefile.am
-+++ b/omapip/Makefile.am
-@@ -1,10 +1,10 @@
- BINDLIBDIR = @BINDDIR@
- AM_CPPFLAGS = -I$(top_srcdir)/includes
-
--lib_LIBRARIES = libomapi.a
-+lib_LTLIBRARIES = libomapi.la
- noinst_PROGRAMS = svtest
-
--libomapi_a_SOURCES = protocol.c buffer.c alloc.c result.c connection.c \
-+libomapi_la_SOURCES = protocol.c buffer.c alloc.c result.c connection.c \
- errwarn.c listener.c dispatch.c generic.c support.c \
- handle.c message.c convert.c hash.c auth.c inet_addr.c \
- array.c trace.c toisc.c iscprint.c isclib.c
-@@ -13,6 +13,5 @@ man_MANS = omapi.3
- EXTRA_DIST = $(man_MANS)
-
- svtest_SOURCES = test.c
--svtest_LDADD = libomapi.a $(BINDLIBDIR)/libirs.a $(BINDLIBDIR)/libdns.a \
-- $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
-+svtest_LDADD = libomapi.la -L$(BINDLIBDIR) -lirs -ldns -lisccfg -lisc
-
-diff --git a/relay/Makefile.am b/relay/Makefile.am
-index b3bf578..f47009f 100644
---- a/relay/Makefile.am
-+++ b/relay/Makefile.am
-@@ -4,9 +4,8 @@ AM_CPPFLAGS = -DLOCALSTATEDIR='"@localstatedir@"' -I$(top_srcdir)/includes
-
- sbin_PROGRAMS = dhcrelay
- dhcrelay_SOURCES = dhcrelay.c
--dhcrelay_LDADD = ../common/libdhcp.a ../omapip/libomapi.a \
-- $(BINDLIBDIR)/libirs.a $(BINDLIBDIR)/libdns.a \
-- $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
-+dhcrelay_LDADD = ../common/libdhcp.a ../omapip/libomapi.la \
-+ -L$(BINDLIBDIR) -lirs -ldns -lisccfg -lisc
- man_MANS = dhcrelay.8
- EXTRA_DIST = $(man_MANS)
-
-diff --git a/server/Makefile.am b/server/Makefile.am
-index b5d8c2d..d7f876d 100644
---- a/server/Makefile.am
-+++ b/server/Makefile.am
-@@ -15,10 +15,9 @@ dhcpd_SOURCES = dhcpd.c dhcp.c bootp.c confpars.c db.c class.c failover.c \
- dhcpv6.c mdb6.c ldap.c ldap_casa.c leasechain.c ldap_krb_helper.c
-
- dhcpd_CFLAGS = $(LDAP_CFLAGS)
--dhcpd_LDADD = ../common/libdhcp.a ../omapip/libomapi.a \
-- ../dhcpctl/libdhcpctl.a $(BINDLIBDIR)/libirs.a \
-- $(BINDLIBDIR)/libdns.a $(BINDLIBDIR)/libisccfg.a \
-- $(BINDLIBDIR)/libisc.a $(LDAP_LIBS)
-+dhcpd_LDADD = ../common/libdhcp.a ../omapip/libomapi.la \
-+ ../dhcpctl/libdhcpctl.la -L$(BINDLIBDIR) \
-+ -lirs -ldns -lisccfg -lisc $(LDAP_LIBS)
-
- man_MANS = dhcpd.8 dhcpd.conf.5 dhcpd.leases.5
- EXTRA_DIST = $(man_MANS)
-diff --git a/server/tests/Makefile.am b/server/tests/Makefile.am
-index 9821081..de95872 100644
---- a/server/tests/Makefile.am
-+++ b/server/tests/Makefile.am
-@@ -19,10 +19,9 @@ DHCPSRC = ../dhcp.c ../bootp.c ../confpars.c ../db.c ../class.c \
- ../ddns.c ../dhcpleasequery.c ../dhcpv6.c ../mdb6.c \
- ../ldap.c ../ldap_casa.c ../dhcpd.c ../leasechain.c
-
--DHCPLIBS = $(top_builddir)/common/libdhcp.a $(top_builddir)/omapip/libomapi.a \
-- $(top_builddir)/dhcpctl/libdhcpctl.a $(BINDLIBDIR)/libirs.a \
-- $(BINDLIBDIR)/libdns.a $(BINDLIBDIR)/libisccfg.a \
-- $(BINDLIBDIR)/libisc.a
-+DHCPLIBS = $(top_builddir)/common/libdhcp.a $(top_builddir)/omapip/libomapi.la \
-+ $(top_builddir)/dhcpctl/libdhcpctl.la \
-+ -L$(BINDLIBDIR) -lirs -ldns -lisccfg -lisc
-
- ATF_TESTS =
- if HAVE_ATF
---
-1.8.3.1
-
diff --git a/meta/recipes-connectivity/dhcp/dhcp/0011-Moved-the-call-to-isc_app_ctxstart-to-not-get-signal.patch b/meta/recipes-connectivity/dhcp/dhcp/0011-Moved-the-call-to-isc_app_ctxstart-to-not-get-signal.patch
deleted file mode 100644
index 67bb4631ae6..00000000000
--- a/meta/recipes-connectivity/dhcp/dhcp/0011-Moved-the-call-to-isc_app_ctxstart-to-not-get-signal.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 37725f3e22edb50e0ca2d1fff971321a5a4d5112 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 12 Jul 2017 03:05:13 -0400
-Subject: [PATCH 11/11] Moved the call to isc_app_ctxstart() to not get signal
- block by all threads
-
-Signed-off-by: Francis Dupont <fdupont@isc.org>
-
-In https://source.isc.org/git/bind9.git, since the following
-commit applied:
-...
-commit b99bfa184bc9375421b5df915eea7dfac6a68a99
-Author: Evan Hunt <each@isc.org>
-Date: Wed Apr 10 13:49:57 2013 -0700
-
- [master] unify internal and export libraries
-
- 3550. [func] Unified the internal and export versions of the
- BIND libraries, allowing external clients to use
- the same libraries as BIND. [RT #33131]
-...
-(git show b99bfa184bc9375421b5df915eea7dfac6a68a99 -- ./lib/isc/unix/app.c)
-
-In this commit, if bind9 enable threads(ISC_PLATFORM_USETHREADS),
-it blocks signal SIGHUP, SIGINT and SIGTERM in isc__app_ctxstart.
-Which caused dhclient/dhcpd could not be stopped by SIGTERM.
-
-It caused systemd's reboot hung which send SIGTERM by default.
-
-Upstream-Status: Backport [https://source.isc.org/git/dhcp.git]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- omapip/isclib.c | 25 +++++++++++++++----------
- 1 file changed, 15 insertions(+), 10 deletions(-)
-
-diff --git a/omapip/isclib.c b/omapip/isclib.c
-index ce86490..6a04345 100644
---- a/omapip/isclib.c
-+++ b/omapip/isclib.c
-@@ -185,16 +185,6 @@ dhcp_context_create(int flags,
- if (result != ISC_R_SUCCESS)
- goto cleanup;
-
-- result = isc_app_ctxstart(dhcp_gbl_ctx.actx);
-- if (result != ISC_R_SUCCESS)
-- return (result);
-- dhcp_gbl_ctx.actx_started = ISC_TRUE;
--
-- /* Not all OSs support suppressing SIGPIPE through socket
-- * options, so set the sigal action to be ignore. This allows
-- * broken connections to fail gracefully with EPIPE on writes */
-- handle_signal(SIGPIPE, SIG_IGN);
--
- result = isc_taskmgr_createinctx(dhcp_gbl_ctx.mctx,
- dhcp_gbl_ctx.actx,
- 1, 0,
-@@ -217,6 +207,21 @@ dhcp_context_create(int flags,
- result = isc_task_create(dhcp_gbl_ctx.taskmgr, 0, &dhcp_gbl_ctx.task);
- if (result != ISC_R_SUCCESS)
- goto cleanup;
-+
-+ result = isc_app_ctxstart(dhcp_gbl_ctx.actx);
-+ if (result != ISC_R_SUCCESS)
-+ return (result);
-+ dhcp_gbl_ctx.actx_started = ISC_TRUE;
-+
-+ /* Not all OSs support suppressing SIGPIPE through socket
-+ * options, so set the sigal action to be ignore. This allows
-+ * broken connections to fail gracefully with EPIPE on writes */
-+ handle_signal(SIGPIPE, SIG_IGN);
-+
-+ /* Reset handlers installed by isc_app_ctxstart()
-+ * to default for control-c and kill */
-+ handle_signal(SIGINT, SIG_DFL);
-+ handle_signal(SIGTERM, SIG_DFL);
- }
-
- #if defined (NSUPDATE)
---
-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
index 2d3af9db0be..39ba65fbc46 100644
--- 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
@@ -19,11 +19,11 @@ Signed-off-by: Awais Belal <awais_belal@mentor.com>
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/configure.ac b/configure.ac
-index bfe988a..f0459e6 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -608,7 +608,7 @@ AC_ARG_WITH(libxml2,
+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
@@ -32,6 +32,3 @@ index bfe988a..f0459e6 100644
[if test x$with_libxml2 != xauto; then
AC_MSG_FAILURE([*** Cannot find xmlTextWriterStartElement with -lxml2 and libxml2 was requested])
fi])
---
-2.11.1
-
diff --git a/meta/recipes-connectivity/dhcp/dhcp/0013-fixup_use_libbind.patch b/meta/recipes-connectivity/dhcp/dhcp/0013-fixup_use_libbind.patch
new file mode 100644
index 00000000000..fcec010bd01
--- /dev/null
+++ b/meta/recipes-connectivity/dhcp/dhcp/0013-fixup_use_libbind.patch
@@ -0,0 +1,64 @@
+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/CVE-2017-3144.patch b/meta/recipes-connectivity/dhcp/dhcp/CVE-2017-3144.patch
deleted file mode 100644
index 2b2688cb2f6..00000000000
--- a/meta/recipes-connectivity/dhcp/dhcp/CVE-2017-3144.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 8cfdedee369c26d2869b6ec4a64460b5f5a30934 Mon Sep 17 00:00:00 2001
-From: Thomas Markwalder <tmark@isc.org>
-Date: Thu, 7 Dec 2017 11:39:30 -0500
-Subject: [PATCH] [v4_3] Plugs a socket descriptor leak in OMAPI
-
- Merges in rt46767.
-
-Upstream-Status: Backport
-[https://source.isc.org/cgi-bin/gitweb.cgi?p=dhcp.git;a=commitdiff;h=5097bc0559f592683faac1f67bf350e1bddf6ed4]
-
-CVE: CVE-2017-3144
-
-Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- RELNOTES | 7 +++++++
- omapip/buffer.c | 9 +++++++++
- omapip/message.c | 2 +-
- 3 files changed, 17 insertions(+), 1 deletion(-)
-
-diff --git a/RELNOTES b/RELNOTES
-index dd40aaf..3741b80 100644
---- a/RELNOTES
-+++ b/RELNOTES
-@@ -66,6 +66,13 @@ We welcome comments from DHCP users, about this or anything else we do.
- Email Vicky Risk, Product Manager at vicky@isc.org or discuss on
- dhcp-users@lists.isc.org.
-
-+- Plugged a socket descriptor leak in OMAPI, that can occur when there is
-+ data pending to be written to an OMAPI connection, when the connection
-+ is closed by the reader. Thanks to Pavel Zhukov at RedHat for bringing
-+ this issue to our attention and whose patch helped guide us in the right
-+ direction.
-+ [ISc-Bugs #46767]
-+
- Changes since 4.3.6b1
-
- - None
-diff --git a/omapip/buffer.c b/omapip/buffer.c
-index f7fdc32..809034d 100644
---- a/omapip/buffer.c
-+++ b/omapip/buffer.c
-@@ -566,6 +566,15 @@ isc_result_t omapi_connection_writer (omapi_object_t *h)
- omapi_buffer_dereference (&buffer, MDL);
- }
- }
-+
-+ /* If we had data left to write when we're told to disconnect,
-+ * we need recall disconnect, now that we're done writing.
-+ * See rt46767. */
-+ if (c->out_bytes == 0 && c->state == omapi_connection_disconnecting) {
-+ omapi_disconnect (h, 1);
-+ return ISC_R_SHUTTINGDOWN;
-+ }
-+
- return ISC_R_SUCCESS;
- }
-
-diff --git a/omapip/message.c b/omapip/message.c
-index 59ccdc2..21bcfc3 100644
---- a/omapip/message.c
-+++ b/omapip/message.c
-@@ -339,7 +339,7 @@ isc_result_t omapi_message_unregister (omapi_object_t *mo)
- }
-
- #ifdef DEBUG_PROTOCOL
--static const char *omapi_message_op_name(int op) {
-+const char *omapi_message_op_name(int op) {
- switch (op) {
- case OMAPI_OP_OPEN: return "OMAPI_OP_OPEN";
- case OMAPI_OP_REFRESH: return "OMAPI_OP_REFRESH";
---
-2.7.4
-
diff --git a/meta/recipes-connectivity/dhcp/dhcp_4.3.6.bb b/meta/recipes-connectivity/dhcp/dhcp_4.4.1.bb
index cc135493e58..159abbc4056 100644
--- a/meta/recipes-connectivity/dhcp/dhcp_4.3.6.bb
+++ b/meta/recipes-connectivity/dhcp/dhcp_4.4.1.bb
@@ -7,16 +7,15 @@ SRC_URI += "file://0001-define-macro-_PATH_DHCPD_CONF-and-_PATH_DHCLIENT_CON.pat
file://0005-dhcp-client-fix-invoke-dhclient-script-failed-on-Rea.patch \
file://0006-site.h-enable-gentle-shutdown.patch \
file://0007-Add-configure-argument-to-make-the-libxml2-dependenc.patch \
- file://0008-tweak-to-support-external-bind.patch \
file://0009-remove-dhclient-script-bash-dependency.patch \
- file://0010-build-shared-libs.patch \
- file://0011-Moved-the-call-to-isc_app_ctxstart-to-not-get-signal.patch \
file://0012-dhcp-correct-the-intention-for-xml2-lib-search.patch \
- file://CVE-2017-3144.patch \
- "
+ file://0013-fixup_use_libbind.patch \
+"
-SRC_URI[md5sum] = "afa6e9b3eb7539ea048421a82c668adc"
-SRC_URI[sha256sum] = "a41eaf6364f1377fe065d35671d9cf82bbbc8f21207819b2b9f33f652aec6f1b"
+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/iproute2/iproute2.inc b/meta/recipes-connectivity/iproute2/iproute2.inc
index 4fbfec6f08a..b283589063f 100644
--- a/meta/recipes-connectivity/iproute2/iproute2.inc
+++ b/meta/recipes-connectivity/iproute2/iproute2.inc
@@ -9,7 +9,7 @@ LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
file://ip/ip.c;beginline=3;endline=8;md5=689d691d0410a4b64d3899f8d6e31817"
-DEPENDS = "flex-native bison-native iptables elfutils"
+DEPENDS = "flex-native bison-native iptables elfutils libcap"
inherit update-alternatives bash-completion pkgconfig
diff --git a/meta/recipes-connectivity/iproute2/iproute2/0001-iproute2-de-bash-scripts.patch b/meta/recipes-connectivity/iproute2/iproute2/0001-iproute2-de-bash-scripts.patch
deleted file mode 100644
index c3d3fea9c2c..00000000000
--- a/meta/recipes-connectivity/iproute2/iproute2/0001-iproute2-de-bash-scripts.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-Subject: [PATCH] iproute2: de-bash scripts
-
-de-bash these two scripts to make iproute2 not depend on bash.
-
-Upstream-Status: Pending
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- ip/ifcfg | 15 ++++++++-------
- ip/rtpr | 2 +-
- 2 files changed, 9 insertions(+), 8 deletions(-)
-
-diff --git a/ip/ifcfg b/ip/ifcfg
-index 30a2dc4..8677b2e 100644
---- a/ip/ifcfg
-+++ b/ip/ifcfg
-@@ -1,12 +1,13 @@
--#! /bin/bash
-+#! /bin/sh
-
- CheckForwarding () {
-- local sbase fwd
-+ local sbase fwd forwarding
- sbase=/proc/sys/net/ipv4/conf
- fwd=0
- if [ -d $sbase ]; then
- for dir in $sbase/*/forwarding; do
-- fwd=$[$fwd + `cat $dir`]
-+ forwarding=`cat $dir`
-+ fwd=$(($fwd+$forwarding))
- done
- else
- fwd=2
-@@ -127,12 +128,12 @@ fi
- arping -q -A -c 1 -I $dev $ipaddr
- noarp=$?
- ( sleep 2 ;
-- arping -q -U -c 1 -I $dev $ipaddr ) >& /dev/null </dev/null &
-+ arping -q -U -c 1 -I $dev $ipaddr ) > /dev/null 2>&1 </dev/null &
-
--ip route add unreachable 224.0.0.0/24 >& /dev/null
--ip route add unreachable 255.255.255.255 >& /dev/null
-+ip route add unreachable 224.0.0.0/24 > /dev/null 2>&1
-+ip route add unreachable 255.255.255.255 > /dev/null 2>&1
- if [ "`ip link ls $dev | grep -c MULTICAST`" -ge 1 ]; then
-- ip route add 224.0.0.0/4 dev $dev scope global >& /dev/null
-+ ip route add 224.0.0.0/4 dev $dev scope global > /dev/null 2>&1
- fi
-
- if [ $fwd -eq 0 ]; then
-diff --git a/ip/rtpr b/ip/rtpr
-index c3629fd..674198d 100644
---- a/ip/rtpr
-+++ b/ip/rtpr
-@@ -1,4 +1,4 @@
--#! /bin/bash
-+#! /bin/sh
-
- exec tr "[\\\\]" "[
- ]"
---
-2.7.4
-
diff --git a/meta/recipes-connectivity/iproute2/iproute2_4.14.1.bb b/meta/recipes-connectivity/iproute2/iproute2_4.18.0.bb
index 81e2e4a164b..8eed377618f 100644
--- a/meta/recipes-connectivity/iproute2/iproute2_4.14.1.bb
+++ b/meta/recipes-connectivity/iproute2/iproute2_4.18.0.bb
@@ -2,13 +2,12 @@ require iproute2.inc
SRC_URI = "${KERNELORG_MIRROR}/linux/utils/net/${BPN}/${BP}.tar.xz \
file://configure-cross.patch \
- file://0001-iproute2-de-bash-scripts.patch \
file://0001-libc-compat.h-add-musl-workaround.patch \
file://0001-ip-Remove-unneed-header.patch \
"
-SRC_URI[md5sum] = "1075423d7029e02a8f23ed4f42b7e372"
-SRC_URI[sha256sum] = "d43ac068afcc350a448f4581b6e292331ef7e4e7aa746e34981582d5fdb10067"
+SRC_URI[md5sum] = "8b8680e91390c57cab788fbf8e929479"
+SRC_URI[sha256sum] = "a9e6c70c95f513871c5e1f4e452c04fcb3c4d8a05be651bd794cd994a52daa45"
# CFLAGS are computed in Makefile and reference CCOPTS
#
diff --git a/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb b/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb
index 8d2feec7698..d0eb2768d1e 100644
--- a/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb
+++ b/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.10.bb
@@ -17,6 +17,8 @@ SRC_URI[sha256sum] = "1e683c2e7c3921814706d62fbbd3e9cbf493a75fa00255e0e715508d81
S = "${WORKDIR}/nss-mdns-${PV}"
+localstatedir = "/"
+
inherit autotools
EXTRA_OECONF = "--libdir=${base_libdir} --disable-lynx --enable-avahi"
@@ -28,13 +30,16 @@ DEBIANNAME_${PN} = "libnss-mdns"
RDEPENDS_${PN} = "avahi-daemon"
pkg_postinst_${PN} () {
- sed -e '/^hosts:/s/\s*\<mdns\>//' \
- -e 's/\(^hosts:.*\)\(\<files\>\)\(.*\)\(\<dns\>\)\(.*\)/\1\2 mdns4_minimal [NOTFOUND=return]\3\4 mdns\5/' \
- -i $D${sysconfdir}/nsswitch.conf
+ 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 -e '/^hosts:/s/\s*\<mdns\>//' \
- -e '/^hosts:/s/\s*mdns4_minimal\s\+\[NOTFOUND=return\]//' \
- -i $D${sysconfdir}/nsswitch.conf
+ sed '
+ /^hosts:/ !b
+ s/[[:blank:]]\+mdns\(4\|6\)\?\(_minimal\( \[NOTFOUND=return\]\)\?\)\?//g
+ ' -i $D${sysconfdir}/nsswitch.conf
}
diff --git a/meta/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info/multilibfix.patch b/meta/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info/multilibfix.patch
new file mode 100644
index 00000000000..7e97e8ec356
--- /dev/null
+++ b/meta/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info/multilibfix.patch
@@ -0,0 +1,18 @@
+The mobile-broadband-provider-info.pc file is installed into a non-arch directory
+yet contains libdir which can vary depending on which multilib is configured.
+The .pc file does not require libdir so remove this to fix multilib builds.
+
+Upstream-Status: Backport [8109fcd3c7299fae859fb891ff416927581a9955]
+Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
+
+Index: git/mobile-broadband-provider-info.pc.in
+===================================================================
+--- git.orig/mobile-broadband-provider-info.pc.in 2018-08-07 13:09:31.811364063 +0800
++++ git/mobile-broadband-provider-info.pc.in 2018-08-10 17:49:25.645288320 +0800
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ datarootdir = @datarootdir@
+ pkgdatadir=${datarootdir}/@PACKAGE@
+ includedir=@includedir@
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 dbc578e2d84..7f1dd78c14e 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
@@ -7,7 +7,9 @@ SRCREV = "befcbbc9867e742ac16415660b0b7521218a530c"
PV = "20170310"
PE = "1"
-SRC_URI = "git://git.gnome.org/mobile-broadband-provider-info"
+SRC_URI = "git://gitlab.gnome.org/GNOME/mobile-broadband-provider-info.git;protocol=https \
+ file://multilibfix.patch \
+"
S = "${WORKDIR}/git"
inherit autotools
diff --git a/meta/recipes-connectivity/nfs-utils/libnfsidmap/0001-include-sys-types.h-for-getting-u_-typedefs.patch b/meta/recipes-connectivity/nfs-utils/libnfsidmap/0001-include-sys-types.h-for-getting-u_-typedefs.patch
deleted file mode 100644
index 4ac52904401..00000000000
--- a/meta/recipes-connectivity/nfs-utils/libnfsidmap/0001-include-sys-types.h-for-getting-u_-typedefs.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From a5e95a42e7bceddc9ecad06694c1a0588f4bafc8 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 14 Apr 2015 07:22:47 -0700
-Subject: [PATCH] include sys/types.h for getting u_* typedefs
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- cfg.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/cfg.h b/cfg.h
-index d4d4cab..fe49e8f 100644
---- a/cfg.h
-+++ b/cfg.h
-@@ -33,6 +33,7 @@
- #ifndef _CONF_H_
- #define _CONF_H_
-
-+#include <sys/types.h>
- #include "queue.h"
-
- struct conf_list_node {
---
-2.1.4
-
diff --git a/meta/recipes-connectivity/nfs-utils/libnfsidmap/Set_nobody_user_group.patch b/meta/recipes-connectivity/nfs-utils/libnfsidmap/Set_nobody_user_group.patch
deleted file mode 100644
index 4633da919e7..00000000000
--- a/meta/recipes-connectivity/nfs-utils/libnfsidmap/Set_nobody_user_group.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Set nobody user and group
-
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Roy.Li <rongqing.li@windriver.com>
---- a/idmapd.conf
-+++ b/idmapd.conf
-@@ -17,8 +17,8 @@
-
- [Mapping]
-
--#Nobody-User = nobody
--#Nobody-Group = nobody
-+Nobody-User = nobody
-+Nobody-Group = nogroup
-
- [Translation]
-
diff --git a/meta/recipes-connectivity/nfs-utils/libnfsidmap/fix-ac-prereq.patch b/meta/recipes-connectivity/nfs-utils/libnfsidmap/fix-ac-prereq.patch
deleted file mode 100644
index d81c7c5f326..00000000000
--- a/meta/recipes-connectivity/nfs-utils/libnfsidmap/fix-ac-prereq.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
---- a/configure.in
-+++ b/configure.in
-@@ -1,7 +1,7 @@
- # -*- Autoconf -*-
- # Process this file with autoconf to produce a configure script.
-
--AC_PREREQ([2.68])
-+AC_PREREQ([2.65])
- AC_INIT([libnfsidmap],[0.25],[linux-nfs@vger.kernel.org])
- AC_CONFIG_SRCDIR([nfsidmap.h])
- AC_CONFIG_MACRO_DIR([m4])
diff --git a/meta/recipes-connectivity/nfs-utils/libnfsidmap_0.25.bb b/meta/recipes-connectivity/nfs-utils/libnfsidmap_0.25.bb
deleted file mode 100644
index 2565771006a..00000000000
--- a/meta/recipes-connectivity/nfs-utils/libnfsidmap_0.25.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "NFS id mapping library"
-HOMEPAGE = "http://www.citi.umich.edu/projects/nfsv4/linux/"
-SECTION = "libs"
-
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d9c6a2a0ca6017fda7cd905ed2739b37"
-
-SRC_URI = "http://www.citi.umich.edu/projects/nfsv4/linux/libnfsidmap/${BPN}-${PV}.tar.gz \
- file://fix-ac-prereq.patch \
- file://Set_nobody_user_group.patch \
- file://0001-include-sys-types.h-for-getting-u_-typedefs.patch \
- "
-
-SRC_URI[md5sum] = "2ac4893c92716add1a1447ae01df77ab"
-SRC_URI[sha256sum] = "656d245d84400e1030f8f40a5a27da76370690c4a932baf249110f047fe7efcf"
-
-UPSTREAM_CHECK_URI = "http://www.citi.umich.edu/projects/nfsv4/linux/libnfsidmap/"
-
-inherit autotools
-
-EXTRA_OECONF = "--disable-ldap"
-
-do_install_append () {
- install -d ${D}${sysconfdir}/
- install -m 0644 ${WORKDIR}/${BPN}-${PV}/idmapd.conf ${D}${sysconfdir}/idmapd.conf
-}
-
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-configure-Allow-to-explicitly-disable-nfsidmap.patch b/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-configure-Allow-to-explicitly-disable-nfsidmap.patch
deleted file mode 100644
index 26b558c81fe..00000000000
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-configure-Allow-to-explicitly-disable-nfsidmap.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 9b84cff305866abd150cf1a4c6e7e5ebf8a7eb3a Mon Sep 17 00:00:00 2001
-From: Martin Jansa <Martin.Jansa@gmail.com>
-Date: Fri, 15 Nov 2013 23:21:35 +0100
-Subject: [PATCH] configure: Allow to explicitly disable nfsidmap
-
-* keyutils availability is autodetected and builds aren't reproducible
-
-Upstream-Status: Pending
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- configure.ac | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-Index: nfs-utils-2.1.1/configure.ac
-===================================================================
---- nfs-utils-2.1.1.orig/configure.ac
-+++ nfs-utils-2.1.1/configure.ac
-@@ -92,6 +92,12 @@ AC_ARG_ENABLE(nfsv4,
- AC_SUBST(enable_nfsv4)
- AM_CONDITIONAL(CONFIG_NFSV4, [test "$enable_nfsv4" = "yes"])
-
-+AC_ARG_ENABLE(nfsidmap,
-+ [AC_HELP_STRING([--enable-nfsidmap],
-+ [enable support for NFSv4 idmapper @<:@default=yes@:>@])],
-+ enable_nfsidmap=$enableval,
-+ enable_nfsidmap=yes)
-+
- AC_ARG_ENABLE(nfsv41,
- [AC_HELP_STRING([--disable-nfsv41],
- [disable support for NFSv41 @<:@default=no@:>@])],
-@@ -339,7 +345,7 @@ fi
-
- dnl enable nfsidmap when its support by libnfsidmap
- AM_CONDITIONAL(CONFIG_NFSDCLTRACK, [test "$enable_nfsdcltrack" = "yes" ])
--AM_CONDITIONAL(CONFIG_NFSIDMAP, [test "$ac_cv_header_keyutils_h$ac_cv_lib_nfsidmap_nfs4_owner_to_uid" = "yesyes"])
-+AM_CONDITIONAL(CONFIG_NFSIDMAP, [test "$enable_nfsidmap$ac_cv_header_keyutils_h$ac_cv_lib_nfsidmap_nfs4_owner_to_uid" = "yesyesyes"])
-
-
- if test "$knfsd_cv_glibc2" = no; then
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-include-stdint.h-for-UINT16_MAX-definition.patch b/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-include-stdint.h-for-UINT16_MAX-definition.patch
deleted file mode 100644
index 235a2c76fcb..00000000000
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-include-stdint.h-for-UINT16_MAX-definition.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 36b48057bce76dced335d67a2894a420967811c9 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 20 May 2017 14:07:53 -0700
-Subject: [PATCH] include stdint.h for UINT16_MAX definition
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- support/nsm/rpc.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/support/nsm/rpc.c b/support/nsm/rpc.c
-index 4e5f40e..d91c6ea 100644
---- a/support/nsm/rpc.c
-+++ b/support/nsm/rpc.c
-@@ -40,6 +40,7 @@
-
- #include <time.h>
- #include <stdbool.h>
-+#include <stdint.h>
- #include <string.h>
- #include <unistd.h>
- #include <fcntl.h>
---
-2.13.0
-
diff --git a/meta/recipes-connectivity/nfs-utils/files/bugfix-adjust-statd-service-name.patch b/meta/recipes-connectivity/nfs-utils/nfs-utils/bugfix-adjust-statd-service-name.patch
index 822939f0d24..822939f0d24 100644
--- a/meta/recipes-connectivity/nfs-utils/files/bugfix-adjust-statd-service-name.patch
+++ b/meta/recipes-connectivity/nfs-utils/nfs-utils/bugfix-adjust-statd-service-name.patch
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-utils-1.2.3-sm-notify-res_init.patch b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-utils-1.2.3-sm-notify-res_init.patch
deleted file mode 100644
index 89a8a572602..00000000000
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-utils-1.2.3-sm-notify-res_init.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-Fixes errors like
-sm-notify[1070]: DNS resolution of a.b.c.d..com failed; retrying later
-This error will occur anytime sm-notify is run before the network if fully up,
-which is happening more and more with parallel startup systems.
-The res_init() call is simple, safe, quick, and a patch to use it should be
-able to go upstream. Presumably the whole reason sm-notify tries several
-times is to wait for possible changes to the network configuration, but without
-calling res_init() it will never be aware of those changes
-
-Backported drom Fedora
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-
-Index: nfs-utils-2.1.1/utils/statd/sm-notify.c
-===================================================================
---- nfs-utils-2.1.1.orig/utils/statd/sm-notify.c
-+++ nfs-utils-2.1.1/utils/statd/sm-notify.c
-@@ -28,6 +28,9 @@
- #include <netdb.h>
- #include <errno.h>
- #include <grp.h>
-+#include <netinet/in.h>
-+#include <arpa/nameser.h>
-+#include <resolv.h>
-
- #include "conffile.h"
- #include "sockaddr.h"
-@@ -89,6 +92,7 @@ smn_lookup(const char *name)
- };
- int error;
-
-+ res_init();
- error = getaddrinfo(name, NULL, &hint, &ai);
- if (error != 0) {
- xlog(D_GENERAL, "getaddrinfo(3): %s", gai_strerror(error));
diff --git a/meta/recipes-connectivity/nfs-utils/files/nfs-utils-debianize-start-statd.patch b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-utils-debianize-start-statd.patch
index ede0dcefc49..ede0dcefc49 100644
--- a/meta/recipes-connectivity/nfs-utils/files/nfs-utils-debianize-start-statd.patch
+++ b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-utils-debianize-start-statd.patch
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-utils-musl-limits.patch b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-utils-musl-limits.patch
new file mode 100644
index 00000000000..25ca4151555
--- /dev/null
+++ b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-utils-musl-limits.patch
@@ -0,0 +1,133 @@
+Fixed:
+| file.c: In function 'generic_make_pathname':
+| file.c:48:13: error: 'PATH_MAX' undeclared (first use in this function); did you mean 'RAND_MAX'?
+| if (size > PATH_MAX)
+| ^~~~~~~~
+[snip]
+
+Upstream-Status: Pending [https://git.alpinelinux.org/cgit/aports/tree/main/nfs-utils/limits.patch?id=f6734a77d3caee73325f8cc1f77d1b5117a75096]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ support/export/export.c | 1 +
+ support/export/xtab.c | 1 +
+ support/misc/file.c | 1 +
+ support/nfs/xcommon.c | 1 +
+ support/nsm/file.c | 1 +
+ utils/blkmapd/device-discovery.c | 1 +
+ utils/gssd/krb5_util.c | 1 +
+ utils/mountd/cache.c | 1 +
+ utils/mountd/mountd.c | 1 +
+ utils/mountd/rmtab.c | 1 +
+ 10 files changed, 10 insertions(+)
+
+diff --git a/support/export/export.c b/support/export/export.c
+--- a/support/export/export.c
++++ b/support/export/export.c
+@@ -17,6 +17,7 @@
+ #include <stdlib.h>
+ #include <dirent.h>
+ #include <errno.h>
++#include <limits.h>
+ #include "xmalloc.h"
+ #include "nfslib.h"
+ #include "exportfs.h"
+diff --git a/support/export/xtab.c b/support/export/xtab.c
+--- a/support/export/xtab.c
++++ b/support/export/xtab.c
+@@ -18,6 +18,7 @@
+ #include <sys/stat.h>
+ #include <errno.h>
+ #include <libgen.h>
++#include <limits.h>
+
+ #include "nfslib.h"
+ #include "exportfs.h"
+diff --git a/support/misc/file.c b/support/misc/file.c
+--- a/support/misc/file.c
++++ b/support/misc/file.c
+@@ -27,6 +27,7 @@
+ #include <dirent.h>
+ #include <stdlib.h>
+ #include <stdbool.h>
++#include <limits.h>
+
+ #include "xlog.h"
+ #include "misc.h"
+diff --git a/support/nfs/xcommon.c b/support/nfs/xcommon.c
+--- a/support/nfs/xcommon.c
++++ b/support/nfs/xcommon.c
+@@ -16,6 +16,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <limits.h>
+
+ #include "xcommon.h"
+ #include "nls.h" /* _() */
+diff --git a/support/nsm/file.c b/support/nsm/file.c
+--- a/support/nsm/file.c
++++ b/support/nsm/file.c
+@@ -85,6 +85,7 @@
+ #include <fcntl.h>
+ #include <dirent.h>
+ #include <grp.h>
++#include <limits.h>
+
+ #include "xlog.h"
+ #include "nsm.h"
+diff --git a/utils/blkmapd/device-discovery.c b/utils/blkmapd/device-discovery.c
+--- a/utils/blkmapd/device-discovery.c
++++ b/utils/blkmapd/device-discovery.c
+@@ -49,6 +49,7 @@
+ #include <unistd.h>
+ #include <libgen.h>
+ #include <errno.h>
++#include <limits.h>
+ #include <libdevmapper.h>
+
+ #ifdef HAVE_CONFIG_H
+diff --git a/utils/gssd/krb5_util.c b/utils/gssd/krb5_util.c
+--- a/utils/gssd/krb5_util.c
++++ b/utils/gssd/krb5_util.c
+@@ -120,6 +120,7 @@
+ #endif
+ #include <krb5.h>
+ #include <rpc/auth_gss.h>
++#include <limits.h>
+
+ #include "gssd.h"
+ #include "err_util.h"
+diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
+--- a/utils/mountd/cache.c
++++ b/utils/mountd/cache.c
+@@ -26,6 +26,7 @@
+ #include <pwd.h>
+ #include <grp.h>
+ #include <mntent.h>
++#include <limits.h>
+ #include "misc.h"
+ #include "nfslib.h"
+ #include "exportfs.h"
+diff --git a/utils/mountd/mountd.c b/utils/mountd/mountd.c
+--- a/utils/mountd/mountd.c
++++ b/utils/mountd/mountd.c
+@@ -22,6 +22,7 @@
+ #include <fcntl.h>
+ #include <sys/resource.h>
+ #include <sys/wait.h>
++#include <limits.h>
+
+ #include "conffile.h"
+ #include "xmalloc.h"
+diff --git a/utils/mountd/rmtab.c b/utils/mountd/rmtab.c
+--- a/utils/mountd/rmtab.c
++++ b/utils/mountd/rmtab.c
+@@ -16,6 +16,7 @@
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+ #include <netdb.h>
++#include <limits.h>
+
+ #include "misc.h"
+ #include "exportfs.h"
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
new file mode 100644
index 00000000000..a169e6a2226
--- /dev/null
+++ b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfs-utils-musl-res_querydomain.patch
@@ -0,0 +1,22 @@
+Fixed:
+configure: error: res_querydomain needed
+
+Upstream-Status: Pending [https://git.alpinelinux.org/cgit/aports/tree/main/nfs-utils/musl-res_querydomain.patch?id=f6734a77d3caee73325f8cc1f77d1b5117a75096]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+--- a/configure.ac
++++ b/configure.ac
+@@ -401,7 +401,7 @@ if test "$enable_gss" = yes; then
+ fi
+
+ dnl libdnsidmap specific checks
+-AC_CHECK_LIB([resolv], [__res_querydomain], , AC_MSG_ERROR(res_querydomain needed))
++AC_CHECK_LIB([resolv], [res_querydomain], , AC_MSG_ERROR(res_querydomain needed))
+
+ AC_ARG_ENABLE([ldap],
+ [AS_HELP_STRING([--disable-ldap],[Disable support for LDAP @<:default=detect@:>@])])
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils_2.1.1.bb b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.3.1.bb
index 79453ad20cc..6d450c75109 100644
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils_2.1.1.bb
+++ b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.3.1.bb
@@ -8,7 +8,7 @@ LICENSE = "MIT & GPLv2+ & BSD"
LIC_FILES_CHKSUM = "file://COPYING;md5=95f3a93a5c3c7888de623b46ea085a84"
# util-linux for libblkid
-DEPENDS = "libcap libnfsidmap libevent util-linux sqlite3 libtirpc"
+DEPENDS = "libcap libevent util-linux sqlite3 libtirpc"
RDEPENDS_${PN} = "${PN}-client bash"
RRECOMMENDS_${PN} = "kernel-module-nfsd"
@@ -19,8 +19,6 @@ 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://0001-configure-Allow-to-explicitly-disable-nfsidmap.patch \
- file://nfs-utils-1.2.3-sm-notify-res_init.patch \
file://nfsserver \
file://nfscommon \
file://nfs-utils.conf \
@@ -31,11 +29,13 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/nfs-utils/${PV}/nfs-utils-${PV}.tar.x
file://nfs-utils-Do-not-pass-CFLAGS-to-gcc-while-building.patch \
file://nfs-utils-debianize-start-statd.patch \
file://bugfix-adjust-statd-service-name.patch \
- file://0001-include-stdint.h-for-UINT16_MAX-definition.patch \
+ file://nfs-utils-musl-limits.patch \
"
-SRC_URI[md5sum] = "59dfcb2e6254b129f901f40c86086b13"
-SRC_URI[sha256sum] = "0faeb54c70b84e6bd3b9b6901544b1f6add8d246f35c1683e402daf4e0c719ef"
+SRC_URI_append_libc-musl = " file://nfs-utils-musl-res_querydomain.patch"
+
+SRC_URI[md5sum] = "d77b182a9ee396aa6221ac2401ad7046"
+SRC_URI[sha256sum] = "96d06b5a86b185815760d8f04c34fdface8fa8b9949ff256ac05c3ebc08335a5"
# Only kernel-module-nfsd is required here (but can be built-in) - the nfsd module will
# pull in the remainder of the dependencies.
@@ -67,10 +67,11 @@ PACKAGECONFIG ??= "tcp-wrappers \
"
PACKAGECONFIG_remove_libc-musl = "tcp-wrappers"
PACKAGECONFIG[tcp-wrappers] = "--with-tcp-wrappers,--without-tcp-wrappers,tcp-wrappers"
-PACKAGECONFIG[nfsidmap] = "--enable-nfsidmap,--disable-nfsidmap,keyutils"
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"
diff --git a/meta/recipes-connectivity/ofono/ofono_1.22.bb b/meta/recipes-connectivity/ofono/ofono_1.22.bb
deleted file mode 100644
index e57eaa77eb9..00000000000
--- a/meta/recipes-connectivity/ofono/ofono_1.22.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require ofono.inc
-
-SRC_URI = "\
- ${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
- file://ofono \
- file://use-python3.patch \
-"
-SRC_URI[md5sum] = "2a683ab8e98448ad8bc5dc9868d2893e"
-SRC_URI[sha256sum] = "8e34a6696c300c9841b55e8dff640bd3096e49f5dbe55bbebaa69a71676f687e"
diff --git a/meta/recipes-connectivity/ofono/ofono_1.24.bb b/meta/recipes-connectivity/ofono/ofono_1.24.bb
new file mode 100644
index 00000000000..be7d9ea85d7
--- /dev/null
+++ b/meta/recipes-connectivity/ofono/ofono_1.24.bb
@@ -0,0 +1,9 @@
+require ofono.inc
+
+SRC_URI = "\
+ ${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
+ file://ofono \
+ file://use-python3.patch \
+"
+SRC_URI[md5sum] = "be24e80f6551f46fea0c5b5879964d6c"
+SRC_URI[sha256sum] = "9c8e351b7658f4b43f9a4380b731c47d2d7544a89987c48c3f227e73636c87ae"
diff --git a/meta/recipes-connectivity/openssh/openssh/disable-ciphers-not-supported-by-OpenSSL-DES.patch b/meta/recipes-connectivity/openssh/openssh/disable-ciphers-not-supported-by-OpenSSL-DES.patch
deleted file mode 100644
index 8a2d1a0a7c5..00000000000
--- a/meta/recipes-connectivity/openssh/openssh/disable-ciphers-not-supported-by-OpenSSL-DES.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 265eaab8b39d8d8721224a48eefed5bf1696d353 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 18 Apr 2018 21:58:32 +0800
-Subject: [PATCH] disable ciphers not supported by OpenSSL DES
-
-While compiling openssl with option `no-des', it caused the openssh
-build failure
-...
-cipher.c:85:41: error: 'EVP_des_ede3_cbc' undeclared here (not in a function);
-...
-
-OpenSSL configured that way defines OPENSSL_NO_DES to disable des
-
-Suggested by dtucker@
-
-Upstream-Status: Submitted [openssh-unix-dev@mindrot.org]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- cipher.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/cipher.c b/cipher.c
-index c3cd5dc..86558e1 100644
---- a/cipher.c
-+++ b/cipher.c
-@@ -82,7 +82,9 @@ struct sshcipher {
-
- static const struct sshcipher ciphers[] = {
- #ifdef WITH_OPENSSL
-+#ifndef OPENSSL_NO_DES
- { "3des-cbc", 8, 24, 0, 0, CFLAG_CBC, EVP_des_ede3_cbc },
-+#endif
- { "aes128-cbc", 16, 16, 0, 0, CFLAG_CBC, EVP_aes_128_cbc },
- { "aes192-cbc", 16, 24, 0, 0, CFLAG_CBC, EVP_aes_192_cbc },
- { "aes256-cbc", 16, 32, 0, 0, CFLAG_CBC, EVP_aes_256_cbc },
---
-2.7.4
-
diff --git a/meta/recipes-connectivity/openssh/openssh/init b/meta/recipes-connectivity/openssh/openssh/init
index 34ba0f84600..8887e3af130 100644
--- a/meta/recipes-connectivity/openssh/openssh/init
+++ b/meta/recipes-connectivity/openssh/openssh/init
@@ -36,7 +36,7 @@ check_privsep_dir() {
}
check_config() {
- /usr/sbin/sshd -t $SSHD_OPTS || exit 1
+ /usr/sbin/sshd $SSHD_OPTS -t || exit 1
}
export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
@@ -48,19 +48,19 @@ case "$1" in
@LIBEXECDIR@/sshd_check_keys
check_privsep_dir
start-stop-daemon -S -p $PIDFILE -x /usr/sbin/sshd -- $SSHD_OPTS
- echo "done."
+ echo "done."
;;
stop)
- echo -n "Stopping OpenBSD Secure Shell server: sshd"
+ echo -n "Stopping OpenBSD Secure Shell server: sshd"
start-stop-daemon -K -p $PIDFILE -x /usr/sbin/sshd
- echo "."
+ echo "."
;;
reload|force-reload)
check_for_no_start
@LIBEXECDIR@/sshd_check_keys
check_config
- echo -n "Reloading OpenBSD Secure Shell server's configuration"
+ echo -n "Reloading OpenBSD Secure Shell server's configuration"
start-stop-daemon -K -p $PIDFILE -s 1 -x /usr/sbin/sshd
echo "."
;;
@@ -68,7 +68,7 @@ case "$1" in
restart)
@LIBEXECDIR@/sshd_check_keys
check_config
- echo -n "Restarting OpenBSD Secure Shell server: sshd"
+ echo -n "Restarting OpenBSD Secure Shell server: sshd"
start-stop-daemon -K -p $PIDFILE --oknodo -x /usr/sbin/sshd
check_for_no_start
check_privsep_dir
diff --git a/meta/recipes-connectivity/openssh/openssh/ssh_config b/meta/recipes-connectivity/openssh/openssh/ssh_config
index 9e919156d3b..e0d023803eb 100644
--- a/meta/recipes-connectivity/openssh/openssh/ssh_config
+++ b/meta/recipes-connectivity/openssh/openssh/ssh_config
@@ -1,4 +1,4 @@
-# $OpenBSD: ssh_config,v 1.28 2013/09/16 11:35:43 sthen Exp $
+# $OpenBSD: ssh_config,v 1.33 2017/05/07 23:12:57 djm Exp $
# This is the ssh client system-wide configuration file. See
# ssh_config(5) for more information. This file provides defaults for
@@ -31,14 +31,14 @@ Host *
# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask
-# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
+# IdentityFile ~/.ssh/id_ecdsa
+# IdentityFile ~/.ssh/id_ed25519
# Port 22
-# Protocol 2,1
-# Cipher 3des
-# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
-# MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
+# Protocol 2
+# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
+# MACs hmac-md5,hmac-sha1,umac-64@openssh.com
# EscapeChar ~
# Tunnel no
# TunnelDevice any:any
diff --git a/meta/recipes-connectivity/openssh/openssh/sshd_check_keys b/meta/recipes-connectivity/openssh/openssh/sshd_check_keys
index 5463b1a4cb1..1931dc71537 100644
--- a/meta/recipes-connectivity/openssh/openssh/sshd_check_keys
+++ b/meta/recipes-connectivity/openssh/openssh/sshd_check_keys
@@ -56,35 +56,23 @@ while true ; do
esac
done
-# parse location of keys
-HOST_KEY_RSA=$(grep ^HostKey "${sshd_config}" | grep _rsa_ | tail -1 | awk ' { print $2 } ')
-[ -z "${HOST_KEY_RSA}" ] && HOST_KEY_RSA=$(grep HostKey "${sshd_config}" | grep _rsa_ | tail -1 | awk ' { print $2 } ')
-[ -z "${HOST_KEY_RSA}" ] && HOST_KEY_RSA=$SYSCONFDIR/ssh_host_rsa_key
-HOST_KEY_DSA=$(grep ^HostKey "${sshd_config}" | grep _dsa_ | tail -1 | awk ' { print $2 } ')
-[ -z "${HOST_KEY_DSA}" ] && HOST_KEY_DSA=$(grep HostKey "${sshd_config}" | grep _dsa_ | tail -1 | awk ' { print $2 } ')
-[ -z "${HOST_KEY_DSA}" ] && HOST_KEY_DSA=$SYSCONFDIR/ssh_host_dsa_key
-HOST_KEY_ECDSA=$(grep ^HostKey "${sshd_config}" | grep _ecdsa_ | tail -1 | awk ' { print $2 } ')
-[ -z "${HOST_KEY_ECDSA}" ] && HOST_KEY_ECDSA=$(grep HostKey "${sshd_config}" | grep _ecdsa_ | tail -1 | awk ' { print $2 } ')
-[ -z "${HOST_KEY_ECDSA}" ] && HOST_KEY_ECDSA=$SYSCONFDIR/ssh_host_ecdsa_key
-HOST_KEY_ED25519=$(grep ^HostKey "${sshd_config}" | grep _ed25519_ | tail -1 | awk ' { print $2 } ')
-[ -z "${HOST_KEY_ED25519}" ] && HOST_KEY_ED25519=$(grep HostKey "${sshd_config}" | grep _ed25519_ | tail -1 | awk ' { print $2 } ')
-[ -z "${HOST_KEY_ED25519}" ] && HOST_KEY_ED25519=$SYSCONFDIR/ssh_host_ed25519_key
-
-# create keys if necessary
-if [ ! -f $HOST_KEY_RSA ]; then
- echo " generating ssh RSA key..."
- generate_key $HOST_KEY_RSA rsa
-fi
-if [ ! -f $HOST_KEY_ECDSA ]; then
- echo " generating ssh ECDSA key..."
- generate_key $HOST_KEY_ECDSA ecdsa
-fi
-if [ ! -f $HOST_KEY_DSA ]; then
- echo " generating ssh DSA key..."
- generate_key $HOST_KEY_DSA dsa
-fi
-if [ ! -f $HOST_KEY_ED25519 ]; then
- echo " generating ssh ED25519 key..."
- generate_key $HOST_KEY_ED25519 ed25519
-fi
+HOST_KEYS=$(sed -n 's/^[ \t]*HostKey[ \t]\+\(.*\)/\1/p' "${sshd_config}")
+[ -z "${HOST_KEYS}" ] && HOST_KEYS="$SYSCONFDIR/ssh_host_rsa_key $SYSCONFDIR/ssh_host_ecdsa_key $SYSCONFDIR/ssh_host_ed25519_key"
+for key in ${HOST_KEYS} ; do
+ [ -f $key ] && continue
+ case $key in
+ *_rsa_key)
+ echo " generating ssh RSA host key..."
+ generate_key $key rsa
+ ;;
+ *_ecdsa_key)
+ echo " generating ssh ECDSA host key..."
+ generate_key $key ecdsa
+ ;;
+ *_ed25519_key)
+ echo " generating ssh ED25519 host key..."
+ generate_key $key ed25519
+ ;;
+ esac
+done
diff --git a/meta/recipes-connectivity/openssh/openssh/sshd_config b/meta/recipes-connectivity/openssh/openssh/sshd_config
index 31fe5d924e1..15f061b570a 100644
--- a/meta/recipes-connectivity/openssh/openssh/sshd_config
+++ b/meta/recipes-connectivity/openssh/openssh/sshd_config
@@ -1,4 +1,4 @@
-# $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
+# $OpenBSD: sshd_config,v 1.102 2018/02/16 02:32:40 djm Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
@@ -7,7 +7,7 @@
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
-# possible, but leave them commented. Uncommented options change a
+# possible, but leave them commented. Uncommented options override the
# default value.
#Port 22
@@ -15,43 +15,30 @@
#ListenAddress 0.0.0.0
#ListenAddress ::
-# The default requires explicit activation of protocol 1
-Protocol 2
-
-# HostKey for protocol version 1
-#HostKey /etc/ssh/ssh_host_key
-# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
-#HostKey /etc/ssh/ssh_host_dsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
-# Lifetime and size of ephemeral version 1 server key
-#KeyRegenerationInterval 1h
-#ServerKeyBits 1024
-
# Ciphers and keying
#RekeyLimit default none
# Logging
-# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
-#PermitRootLogin yes
+#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
-#RSAAuthentication yes
#PubkeyAuthentication yes
# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
-AuthorizedKeysFile .ssh/authorized_keys
+AuthorizedKeysFile .ssh/authorized_keys
#AuthorizedPrincipalsFile none
@@ -59,11 +46,9 @@ AuthorizedKeysFile .ssh/authorized_keys
#AuthorizedKeysCommandUser nobody
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
-#RhostsRSAAuthentication no
-# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
-# RhostsRSAAuthentication and HostbasedAuthentication
+# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes
@@ -72,7 +57,8 @@ AuthorizedKeysFile .ssh/authorized_keys
#PasswordAuthentication yes
#PermitEmptyPasswords no
-# Change to no to disable s/key passwords
+# Change to yes to enable challenge-response passwords (beware issues with
+# some PAM modules and threads)
ChallengeResponseAuthentication no
# Kerberos options
@@ -111,7 +97,7 @@ ChallengeResponseAuthentication no
Compression no
ClientAliveInterval 15
ClientAliveCountMax 4
-#UseDNS yes
+#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
diff --git a/meta/recipes-connectivity/openssh/openssh_7.6p1.bb b/meta/recipes-connectivity/openssh/openssh_7.8p1+git.bb
index e11e8d77497..f54dfb5de44 100644
--- a/meta/recipes-connectivity/openssh/openssh_7.6p1.bb
+++ b/meta/recipes-connectivity/openssh/openssh_7.8p1+git.bb
@@ -8,11 +8,10 @@ SECTION = "console/network"
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://LICENCE;md5=429658c6612f3a9b1293782366ab29d8"
-# openssl 1.1 patches are proposed at https://github.com/openssh/openssh-portable/pull/48
-DEPENDS = "zlib openssl10"
+DEPENDS = "zlib openssl"
DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
-SRC_URI = "http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${PV}.tar.gz \
+SRC_URI = "git://github.com/openssh/openssh-portable;branch=master \
file://sshd_config \
file://ssh_config \
file://init \
@@ -25,13 +24,13 @@ SRC_URI = "http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${PV}.tar
file://fix-potential-signed-overflow-in-pointer-arithmatic.patch \
file://sshd_check_keys \
file://add-test-support-for-busybox.patch \
- file://disable-ciphers-not-supported-by-OpenSSL-DES.patch \
"
PAM_SRC_URI = "file://sshd"
-SRC_URI[md5sum] = "06a88699018e5fef13d4655abfed1f63"
-SRC_URI[sha256sum] = "a323caeeddfe145baaa0db16e98d784b1fbc7dd436a6bf1f479dfd5cd1d21723"
+SRCREV = "cce8cbe0ed7d1ba3a575310e0b63c193326ae616"
+
+S = "${WORKDIR}/git"
inherit useradd update-rc.d update-alternatives systemd
@@ -46,18 +45,15 @@ SYSTEMD_SERVICE_${PN}-sshd = "sshd.socket"
inherit autotools-brokensep ptest
-# LFS support:
-CFLAGS += "-D__FILE_OFFSET_BITS=64"
-
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=/var/run/sshd \
+ --with-privsep-path=${localstatedir}/run/sshd \
--sysconfdir=${sysconfdir}/ssh \
- --with-xauth=/usr/bin/xauth \
+ --with-xauth=${bindir}/xauth \
--disable-strip \
"
@@ -84,7 +80,8 @@ do_configure_prepend () {
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
+ oe_runmake regress/modpipe regress/setuid-allowed regress/netcat \
+ regress/check-perm regress/mkdtemp
}
do_install_append () {
@@ -110,7 +107,6 @@ do_install_append () {
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_dsa_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
@@ -157,7 +153,6 @@ RPROVIDES_${PN}-sshd = "sshd"
RCONFLICTS_${PN} = "dropbear"
RCONFLICTS_${PN}-sshd = "dropbear"
-RCONFLICTS_${PN}-keygen = "ssh-keygen"
CONFFILES_${PN}-sshd = "${sysconfdir}/ssh/sshd_config"
CONFFILES_${PN}-ssh = "${sysconfdir}/ssh/ssh_config"
@@ -165,3 +160,5 @@ 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/files/environment.d-openssl.sh b/meta/recipes-connectivity/openssl/files/environment.d-openssl.sh
new file mode 100644
index 00000000000..b9cc24a7acf
--- /dev/null
+++ b/meta/recipes-connectivity/openssl/files/environment.d-openssl.sh
@@ -0,0 +1 @@
+export OPENSSL_CONF="$OECORE_NATIVE_SYSROOT/usr/lib/ssl/openssl.cnf"
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/ca.patch b/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/ca.patch
deleted file mode 100644
index fb745e43948..00000000000
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/ca.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Upstream-Status: Backport [debian]
-
-Index: openssl-0.9.8m/apps/CA.pl.in
-===================================================================
---- openssl-0.9.8m.orig/apps/CA.pl.in 2006-04-28 00:28:51.000000000 +0000
-+++ openssl-0.9.8m/apps/CA.pl.in 2010-02-27 00:36:51.000000000 +0000
-@@ -65,6 +65,7 @@
- foreach (@ARGV) {
- if ( /^(-\?|-h|-help)$/ ) {
- print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-signcert|-verify\n";
-+ print STDERR "usage: CA -signcert certfile keyfile|-newcert|-newreq|-newca|-sign|-verify\n";
- exit 0;
- } elsif (/^-newcert$/) {
- # create a certificate
-@@ -165,6 +166,7 @@
- } else {
- print STDERR "Unknown arg $_\n";
- print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify\n";
-+ print STDERR "usage: CA -signcert certfile keyfile|-newcert|-newreq|-newca|-sign|-verify\n";
- exit 1;
- }
- }
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/find.pl b/meta/recipes-connectivity/openssl/openssl-1.0.2o/find.pl
deleted file mode 100644
index 8e1b42c88a0..00000000000
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/find.pl
+++ /dev/null
@@ -1,54 +0,0 @@
-warn "Legacy library @{[(caller(0))[6]]} will be removed from the Perl core distribution in the next major release. Please install it from the CPAN distribution Perl4::CoreLibs. It is being used at @{[(caller)[1]]}, line @{[(caller)[2]]}.\n";
-
-# This library is deprecated and unmaintained. It is included for
-# compatibility with Perl 4 scripts which may use it, but it will be
-# removed in a future version of Perl. Please use the File::Find module
-# instead.
-
-# Usage:
-# require "find.pl";
-#
-# &find('/foo','/bar');
-#
-# sub wanted { ... }
-# where wanted does whatever you want. $dir contains the
-# current directory name, and $_ the current filename within
-# that directory. $name contains "$dir/$_". You are cd'ed
-# to $dir when the function is called. The function may
-# set $prune to prune the tree.
-#
-# For example,
-#
-# find / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune
-#
-# corresponds to this
-#
-# sub wanted {
-# /^\.nfs.*$/ &&
-# (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
-# int(-M _) > 7 &&
-# unlink($_)
-# ||
-# ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &&
-# $dev < 0 &&
-# ($prune = 1);
-# }
-#
-# Set the variable $dont_use_nlink if you're using AFS, since AFS cheats.
-
-use File::Find ();
-
-*name = *File::Find::name;
-*prune = *File::Find::prune;
-*dir = *File::Find::dir;
-*topdir = *File::Find::topdir;
-*topdev = *File::Find::topdev;
-*topino = *File::Find::topino;
-*topmode = *File::Find::topmode;
-*topnlink = *File::Find::topnlink;
-
-sub find {
- &File::Find::find(\&wanted, @_);
-}
-
-1;
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/openssl-util-perlpath.pl-cwd.patch b/meta/recipes-connectivity/openssl/openssl-1.0.2o/openssl-util-perlpath.pl-cwd.patch
deleted file mode 100644
index 065b9b122a6..00000000000
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/openssl-util-perlpath.pl-cwd.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From e427748f3bb5d37e78dc8d70a558c373aa8ababb Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Mon, 19 Sep 2016 22:06:28 -0700
-Subject: [PATCH] util/perlpath.pl: make it work when cwd is not in @INC
-
-Fixed when building on Debian-testing:
-| Can't locate find.pl in @INC (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.2 /usr/local/share/perl/5.22.2 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at perlpath.pl line 7.
-
-The find.pl is added by oe-core, so once openssl/find.pl is removed,
-then this patch can be dropped.
-
-Upstream-Status: Inappropriate [OE-Specific]
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- util/perlpath.pl | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/util/perlpath.pl b/util/perlpath.pl
-index a1f236b..5599892 100755
---- a/util/perlpath.pl
-+++ b/util/perlpath.pl
-@@ -4,6 +4,8 @@
- # line in all scripts that rely on perl.
- #
-
-+BEGIN { unshift @INC, "."; }
-+
- require "find.pl";
-
- $#ARGV == 0 || print STDERR "usage: perlpath newpath (eg /usr/bin)\n";
---
-2.9.0
-
diff --git a/meta/recipes-connectivity/openssl/openssl/0001-Take-linking-flags-from-LDFLAGS-env-var.patch b/meta/recipes-connectivity/openssl/openssl/0001-Take-linking-flags-from-LDFLAGS-env-var.patch
deleted file mode 100644
index 6ce4e47d712..00000000000
--- a/meta/recipes-connectivity/openssl/openssl/0001-Take-linking-flags-from-LDFLAGS-env-var.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 08face4353d80111973aba9c1304c92158cfad0e Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 28 Mar 2017 16:40:12 +0300
-Subject: [PATCH] Take linking flags from LDFLAGS env var
-
-This fixes "No GNU_HASH in the elf binary" issues.
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- Configurations/unix-Makefile.tmpl | 2 +-
- Configure | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
-index c029817..43b769b 100644
---- a/Configurations/unix-Makefile.tmpl
-+++ b/Configurations/unix-Makefile.tmpl
-@@ -173,7 +173,7 @@ CROSS_COMPILE= {- $config{cross_compile_prefix} -}
- CC= $(CROSS_COMPILE){- $target{cc} -}
- CFLAGS={- our $cflags2 = join(" ",(map { "-D".$_} @{$target{defines}}, @{$config{defines}}),"-DOPENSSLDIR=\"\\\"\$(OPENSSLDIR)\\\"\"","-DENGINESDIR=\"\\\"\$(ENGINESDIR)\\\"\"") -} {- $target{cflags} -} {- $config{cflags} -}
- CFLAGS_Q={- $cflags2 =~ s|([\\"])|\\$1|g; $cflags2 -} {- $config{cflags} -}
--LDFLAGS= {- $target{lflags} -}
-+LDFLAGS= {- $target{lflags}." ".$ENV{'LDFLAGS'} -}
- PLIB_LDFLAGS= {- $target{plib_lflags} -}
- EX_LIBS= {- $target{ex_libs} -} {- $config{ex_libs} -}
- LIB_CFLAGS={- $target{shared_cflag} || "" -}
-diff --git a/Configure b/Configure
-index aee7cc3..274d236 100755
---- a/Configure
-+++ b/Configure
-@@ -979,7 +979,7 @@ $config{build_file} = $target{build_file};
- $config{defines} = [];
- $config{cflags} = "";
- $config{ex_libs} = "";
--$config{shared_ldflag} = "";
-+$config{shared_ldflag} = $ENV{'LDFLAGS'};
-
- # Make sure build_scheme is consistent.
- $target{build_scheme} = [ $target{build_scheme} ]
---
-2.11.0
-
diff --git a/meta/recipes-connectivity/openssl/openssl10.inc b/meta/recipes-connectivity/openssl/openssl10.inc
deleted file mode 100644
index 645d64ec85e..00000000000
--- a/meta/recipes-connectivity/openssl/openssl10.inc
+++ /dev/null
@@ -1,285 +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 | SSLeay" dual license
-LICENSE = "openssl"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=f9a8f968107345e0b75aa8c2ecaa7ec8"
-
-DEPENDS = "makedepend-native hostperl-runtime-native"
-DEPENDS_append_class-target = " openssl-native"
-
-PROVIDES += "openssl10"
-
-SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \
- "
-S = "${WORKDIR}/openssl-${PV}"
-
-PACKAGECONFIG ?= "cryptodev-linux"
-PACKAGECONFIG[perl] = ",,,"
-PACKAGECONFIG[cryptodev-linux] = "-DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS,,cryptodev-linux"
-
-TERMIO_libc-musl = "-DTERMIOS"
-TERMIO ?= "-DTERMIO"
-# Avoid binaries being marked as requiring an executable stack since it
-# doesn't(which causes and this causes issues with SELinux
-CFLAG = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', '-DL_ENDIAN', '-DB_ENDIAN', d)} \
- ${TERMIO} ${CFLAGS} -Wall -Wa,--noexecstack"
-
-export DIRS = "crypto ssl apps"
-export EX_LIBS = "-lgcc -ldl"
-export AS = "${CC} -c"
-
-inherit pkgconfig siteinfo multilib_header ptest relative_symlinks
-
-PACKAGES =+ "libcrypto libssl ${PN}-misc openssl-conf"
-FILES_libcrypto = "${libdir}/libcrypto${SOLIBS}"
-FILES_libssl = "${libdir}/libssl${SOLIBS}"
-FILES_${PN} =+ " ${libdir}/ssl/*"
-FILES_${PN}-misc = "${libdir}/ssl/misc"
-RDEPENDS_${PN}-misc = "${@bb.utils.filter('PACKAGECONFIG', 'perl', d)}"
-
-# 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 base openssl package and the libcrypto
-# package since the base openssl package depends on the libcrypto package.
-FILES_openssl-conf = "${sysconfdir}/ssl/openssl.cnf"
-CONFFILES_openssl-conf = "${sysconfdir}/ssl/openssl.cnf"
-RRECOMMENDS_libcrypto += "openssl-conf"
-RDEPENDS_${PN}-ptest += "${PN}-misc make perl perl-module-filehandle bc"
-
-# Remove this to enable SSLv3. SSLv3 is defaulted to disabled due to the POODLE
-# vulnerability
-EXTRA_OECONF = " -no-ssl3"
-
-do_configure_prepend_darwin () {
- sed -i -e '/version-script=openssl\.ld/d' Configure
-}
-
-do_configure () {
- cd util
- perl perlpath.pl ${STAGING_BINDIR_NATIVE}
- cd ..
- ln -sf apps/openssl.pod crypto/crypto.pod ssl/ssl.pod doc/
-
- 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-armeb)
- target=linux-elf-armeb
- ;;
- linux-aarch64*)
- target=linux-aarch64
- ;;
- linux-sh3)
- target=debian-sh3
- ;;
- linux-sh4)
- target=debian-sh4
- ;;
- linux-i486)
- target=debian-i386-i486
- ;;
- linux-i586 | linux-viac3)
- target=debian-i386-i586
- ;;
- linux-i686)
- target=debian-i386-i686/cmov
- ;;
- linux-gnux32-x86_64 | linux-muslx32-x86_64 )
- target=linux-x32
- ;;
- linux-gnu64-x86_64)
- target=linux-x86_64
- ;;
- linux-gnun32-mips*el)
- target=debian-mipsn32el
- ;;
- linux-gnun32-mips*)
- target=debian-mipsn32
- ;;
- linux-mips*64*el)
- target=debian-mips64el
- ;;
- linux-mips*64*)
- target=debian-mips64
- ;;
- linux-mips*el)
- target=debian-mipsel
- ;;
- linux-mips*)
- target=debian-mips
- ;;
- linux-microblaze*|linux-nios2*|linux-gnu*ilp32**)
- target=linux-generic32
- ;;
- linux-powerpc)
- target=linux-ppc
- ;;
- linux-powerpc64)
- target=linux-ppc64
- ;;
- linux-riscv64)
- target=linux-generic64
- ;;
- linux-riscv32)
- target=linux-generic32
- ;;
- linux-supersparc)
- target=linux-sparcv8
- ;;
- linux-sparc)
- target=linux-sparcv8
- ;;
- darwin-i386)
- target=darwin-i386-cc
- ;;
- esac
- # inject machine-specific flags
- sed -i -e "s|^\(\"$target\",\s*\"[^:]\+\):\([^:]\+\)|\1:${CFLAG}|g" Configure
- useprefix=${prefix}
- if [ "x$useprefix" = "x" ]; then
- useprefix=/
- fi
- libdirleaf="$(echo ${libdir} | sed s:$useprefix::)"
- perl ./Configure ${EXTRA_OECONF} shared --prefix=$useprefix --openssldir=${libdir}/ssl --libdir=${libdirleaf} $target
-}
-
-do_compile_prepend_class-target () {
- sed -i 's/\((OPENSSL=\)".*"/\1"openssl"/' Makefile
- oe_runmake depend
- cc_sanitized=`echo "${CC} ${CFLAG}" | sed -e 's,--sysroot=${STAGING_DIR_TARGET},,g' -e 's|${DEBUG_PREFIX_MAP}||g'`
- oe_runmake CC_INFO="${cc_sanitized}"
-}
-
-do_compile () {
- oe_runmake depend
- oe_runmake
-}
-
-do_compile_ptest () {
- # build dependencies for test directory too
- export DIRS="$DIRS test"
- oe_runmake depend
- oe_runmake buildtest
-}
-
-do_install () {
- # Create ${D}/${prefix} to fix parallel issues
- mkdir -p ${D}/${prefix}/
-
- oe_runmake INSTALL_PREFIX="${D}" MANDIR="${mandir}" install
-
- oe_libinstall -so libcrypto ${D}${libdir}
- oe_libinstall -so libssl ${D}${libdir}
-
- install -d ${D}${includedir}
- cp --dereference -R include/openssl ${D}${includedir}
-
- install -Dm 0755 ${WORKDIR}/openssl-c_rehash.sh ${D}${bindir}/c_rehash
- sed -i -e 's,/etc/openssl,${sysconfdir}/ssl,g' ${D}${bindir}/c_rehash
-
- oe_multilib_header openssl/opensslconf.h
- if [ "${@bb.utils.filter('PACKAGECONFIG', 'perl', d)}" ]; then
- sed -i -e '1s,.*,#!${bindir}/env perl,' ${D}${libdir}/ssl/misc/CA.pl
- sed -i -e '1s,.*,#!${bindir}/env perl,' ${D}${libdir}/ssl/misc/tsget
- else
- rm -f ${D}${libdir}/ssl/misc/CA.pl ${D}${libdir}/ssl/misc/tsget
- fi
-
- # Create SSL structure
- install -d ${D}${sysconfdir}/ssl/
- mv ${D}${libdir}/ssl/openssl.cnf \
- ${D}${libdir}/ssl/certs \
- ${D}${libdir}/ssl/private \
- \
- ${D}${sysconfdir}/ssl/
- ln -sf ${sysconfdir}/ssl/certs ${D}${libdir}/ssl/certs
- ln -sf ${sysconfdir}/ssl/private ${D}${libdir}/ssl/private
- ln -sf ${sysconfdir}/ssl/openssl.cnf ${D}${libdir}/ssl/openssl.cnf
-
- # Rename man pages to prefix openssl10-*
- for f in `find ${D}${mandir} -type f`; do
- mv $f $(dirname $f)/openssl10-$(basename $f)
- done
- for f in `find ${D}${mandir} -type l`; do
- ln_f=`readlink $f`
- rm -f $f
- ln -s openssl10-$ln_f $(dirname $f)/openssl10-$(basename $f)
- done
-}
-
-do_install_ptest () {
- cp -r -L Makefile.org Makefile test ${D}${PTEST_PATH}
-
- # Replace the path to native perl with the path to target perl
- sed -i 's,^PERL=.*,PERL=${bindir}/perl,' ${D}${PTEST_PATH}/Makefile
-
- cp Configure config e_os.h ${D}${PTEST_PATH}
- cp -r -L include ${D}${PTEST_PATH}
- ln -sf ${libdir}/libcrypto.a ${D}${PTEST_PATH}
- ln -sf ${libdir}/libssl.a ${D}${PTEST_PATH}
- mkdir -p ${D}${PTEST_PATH}/crypto
- cp crypto/constant_time_locl.h ${D}${PTEST_PATH}/crypto
- cp -r certs ${D}${PTEST_PATH}
- mkdir -p ${D}${PTEST_PATH}/apps
- ln -sf ${libdir}/ssl/misc/CA.sh ${D}${PTEST_PATH}/apps
- ln -sf ${sysconfdir}/ssl/openssl.cnf ${D}${PTEST_PATH}/apps
- ln -sf ${bindir}/openssl ${D}${PTEST_PATH}/apps
- cp apps/server.pem ${D}${PTEST_PATH}/apps
- cp apps/server2.pem ${D}${PTEST_PATH}/apps
- mkdir -p ${D}${PTEST_PATH}/util
- install util/opensslwrap.sh ${D}${PTEST_PATH}/util
- install util/shlib_wrap.sh ${D}${PTEST_PATH}/util
- # Time stamps are relevant for "make alltests", otherwise
- # make may try to recompile binaries. Not only must the
- # binary files be newer than the sources, they also must
- # be more recent than the header files in /usr/include.
- #
- # Using "cp -a" is not sufficient, because do_install
- # does not preserve the original time stamps.
- #
- # So instead of using the original file stamps, we set
- # the current time for all files. Binaries will get
- # modified again later when stripping them, but that's okay.
- touch ${D}${PTEST_PATH}
- find ${D}${PTEST_PATH} -type f -print0 | xargs --verbose -0 touch -r ${D}${PTEST_PATH}
-
- # exclude binary files or the package won't install
- for d in ssltest_old v3ext x509aux; do
- rm -rf ${D}${libdir}/${BPN}/ptest/test/$d
- done
-
- # Remove build host references
- sed -i \
- -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
- -e 's|${DEBUG_PREFIX_MAP}||g' \
- ${D}${PTEST_PATH}/Makefile ${D}${PTEST_PATH}/Configure
-}
-
-do_install_append_class-native() {
- create_wrapper ${D}${bindir}/openssl \
- OPENSSL_CONF=${libdir}/ssl/openssl.cnf \
- SSL_CERT_DIR=${libdir}/ssl/certs \
- SSL_CERT_FILE=${libdir}/ssl/cert.pem \
- OPENSSL_ENGINES=${libdir}/ssl/engines
-}
-
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/0001-Fix-build-with-clang-using-external-assembler.patch b/meta/recipes-connectivity/openssl/openssl10/0001-Fix-build-with-clang-using-external-assembler.patch
index 2270962a6fd..2270962a6fd 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/0001-Fix-build-with-clang-using-external-assembler.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/0001-Fix-build-with-clang-using-external-assembler.patch
diff --git a/meta/recipes-connectivity/openssl/openssl10/0001-allow-manpages-to-be-disabled.patch b/meta/recipes-connectivity/openssl/openssl10/0001-allow-manpages-to-be-disabled.patch
new file mode 100644
index 00000000000..3f7d6499559
--- /dev/null
+++ b/meta/recipes-connectivity/openssl/openssl10/0001-allow-manpages-to-be-disabled.patch
@@ -0,0 +1,31 @@
+From e1c39b80b01d4d18feeadfdc6e45a3e1dd110634 Mon Sep 17 00:00:00 2001
+From: Andre McCurdy <armccurdy@gmail.com>
+Date: Fri, 27 Jul 2018 21:41:06 +0000
+Subject: [PATCH] allow manpages to be disabled
+
+Define OE_DISABLE_MANPAGES (via environment or the make command line)
+to skip creation and installation of manpages.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+---
+ Makefile.org | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.org b/Makefile.org
+index ed98d2a..747d8cb 100644
+--- a/Makefile.org
++++ b/Makefile.org
+@@ -549,7 +549,7 @@ dist:
+ @$(MAKE) SDIRS='$(SDIRS)' clean
+ @$(MAKE) TAR='$(TAR)' TARFLAGS='$(TARFLAGS)' $(DISTTARVARS) tar
+
+-install: all install_docs install_sw
++install: all $(if $(OE_DISABLE_MANPAGES),,install_docs) install_sw
+
+ install_sw:
+ @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
+--
+1.9.1
+
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/0001-openssl-force-soft-link-to-avoid-rare-race.patch b/meta/recipes-connectivity/openssl/openssl10/0001-openssl-force-soft-link-to-avoid-rare-race.patch
index dd1a9b1dd2c..dd1a9b1dd2c 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/0001-openssl-force-soft-link-to-avoid-rare-race.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/0001-openssl-force-soft-link-to-avoid-rare-race.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/Makefiles-ptest.patch b/meta/recipes-connectivity/openssl/openssl10/Makefiles-ptest.patch
index 2122fa1fb48..1b8402af977 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/Makefiles-ptest.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/Makefiles-ptest.patch
@@ -11,18 +11,15 @@ Signed-off-by: Maxin B. John <maxin.john@enea.com>
Upstream-Status: Pending
---
- Makefile.org | 10 +-
- Makefile.org.orig | 7 +-
- test/Makefile | 13 +-
- test/Makefile.orig | 987 +++++++++++++++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 1009 insertions(+), 8 deletions(-)
- create mode 100644 test/Makefile.orig
-
+ Makefile.org | 10 +++++++++-
+ test/Makefile | 13 +++++++++----
+ 2 files changed, 18 insertions(+), 5 deletions(-)
+
diff --git a/Makefile.org b/Makefile.org
index 111fbba..8e7936c 100644
--- a/Makefile.org
+++ b/Makefile.org
-@@ -468,8 +468,16 @@ rehash.time: certs apps
+@@ -467,8 +467,16 @@ rehash.time: certs apps
test: tests
tests: rehash
@@ -41,7 +38,7 @@ index 111fbba..8e7936c 100644
report:
diff --git a/test/Makefile b/test/Makefile
-index a1f7eeb..b2984c4 100644
+index 55a6b50..d46b4d1 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -150,7 +150,7 @@ tests: exe apps $(TESTS)
@@ -55,7 +52,7 @@ index a1f7eeb..b2984c4 100644
test_rmd test_rc2 test_rc4 test_rc5 test_bf test_cast test_aes \
@@ -162,6 +162,11 @@ alltests: \
test_constant_time test_verify_extra test_clienthello test_sslv2conftest \
- test_dtls test_bad_dtls test_fatalerr
+ test_dtls test_bad_dtls test_fatalerr test_x509_time
+alltests:
+ @(for i in $(all-tests); do \
@@ -90,4 +87,3 @@ index a1f7eeb..b2984c4 100644
--
2.15.1
-
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/Use-SHA256-not-MD5-as-default-digest.patch b/meta/recipes-connectivity/openssl/openssl10/Use-SHA256-not-MD5-as-default-digest.patch
index 58c9ee78443..58c9ee78443 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/Use-SHA256-not-MD5-as-default-digest.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/Use-SHA256-not-MD5-as-default-digest.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/configure-musl-target.patch b/meta/recipes-connectivity/openssl/openssl10/configure-musl-target.patch
index f357b3f59fe..f357b3f59fe 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/configure-musl-target.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/configure-musl-target.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/configure-targets.patch b/meta/recipes-connectivity/openssl/openssl10/configure-targets.patch
index 1e015897221..1e015897221 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/configure-targets.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/configure-targets.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/c_rehash-compat.patch b/meta/recipes-connectivity/openssl/openssl10/debian/c_rehash-compat.patch
index 3820e3e306b..3820e3e306b 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/c_rehash-compat.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/debian/c_rehash-compat.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/debian-targets.patch b/meta/recipes-connectivity/openssl/openssl10/debian/debian-targets.patch
index 35d92bedb74..24709f4f06b 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/debian-targets.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/debian/debian-targets.patch
@@ -42,8 +42,8 @@ Index: openssl-1.0.2n/Configure
+"debian-mipsel", "gcc:-DL_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"debian-mipsn32", "mips64-linux-gnuabin32-gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"debian-mipsn32el", "mips64el-linux-gnuabin32-gcc:-DL_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-mips64", "mips64-linux-gnuabi64-gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-mips64el", "mips64el-linux-gnuabi64-gcc:-DL_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-mips64", "mips64-linux-gnuabi64-gcc:-DB_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-mips64el", "mips64el-linux-gnuabi64-gcc:-DL_ENDIAN -DTERMIO ${debian_cflags}::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"debian-netbsd-i386", "gcc:-DL_ENDIAN -DTERMIOS ${debian_cflags} -m486::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"debian-netbsd-m68k", "gcc:-DB_ENDIAN -DTERMIOS ${debian_cflags}::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+"debian-netbsd-sparc", "gcc:-DB_ENDIAN -DTERMIOS ${debian_cflags} -mv8::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/man-dir.patch b/meta/recipes-connectivity/openssl/openssl10/debian/man-dir.patch
index 4085e3b1d7d..4085e3b1d7d 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/man-dir.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/debian/man-dir.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/man-section.patch b/meta/recipes-connectivity/openssl/openssl10/debian/man-section.patch
index 21c1d1a4eb0..21c1d1a4eb0 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/man-section.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/debian/man-section.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/no-rpath.patch b/meta/recipes-connectivity/openssl/openssl10/debian/no-rpath.patch
index 1ccb3b86ee7..1ccb3b86ee7 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/no-rpath.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/debian/no-rpath.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/no-symbolic.patch b/meta/recipes-connectivity/openssl/openssl10/debian/no-symbolic.patch
index cc4408ab7d6..cc4408ab7d6 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/no-symbolic.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/debian/no-symbolic.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/pic.patch b/meta/recipes-connectivity/openssl/openssl10/debian/pic.patch
index bfda3888bfc..bfda3888bfc 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian/pic.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/debian/pic.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian1.0.2/block_digicert_malaysia.patch b/meta/recipes-connectivity/openssl/openssl10/debian1.0.2/block_digicert_malaysia.patch
index c43bcd1c77b..c43bcd1c77b 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian1.0.2/block_digicert_malaysia.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/debian1.0.2/block_digicert_malaysia.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian1.0.2/block_diginotar.patch b/meta/recipes-connectivity/openssl/openssl10/debian1.0.2/block_diginotar.patch
index d81e22cd8dd..d81e22cd8dd 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian1.0.2/block_diginotar.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/debian1.0.2/block_diginotar.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian1.0.2/soname.patch b/meta/recipes-connectivity/openssl/openssl10/debian1.0.2/soname.patch
index 09dd9eaf86b..09dd9eaf86b 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian1.0.2/soname.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/debian1.0.2/soname.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian1.0.2/version-script.patch b/meta/recipes-connectivity/openssl/openssl10/debian1.0.2/version-script.patch
index e404ee3312a..e404ee3312a 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/debian1.0.2/version-script.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/debian1.0.2/version-script.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/engines-install-in-libdir-ssl.patch b/meta/recipes-connectivity/openssl/openssl10/engines-install-in-libdir-ssl.patch
index a5746483e68..a5746483e68 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/engines-install-in-libdir-ssl.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/engines-install-in-libdir-ssl.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/oe-ldflags.patch b/meta/recipes-connectivity/openssl/openssl10/oe-ldflags.patch
index 292e13dc5f6..292e13dc5f6 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/oe-ldflags.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/oe-ldflags.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/openssl-c_rehash.sh b/meta/recipes-connectivity/openssl/openssl10/openssl-c_rehash.sh
index 6620fdcb53f..6620fdcb53f 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/openssl-c_rehash.sh
+++ b/meta/recipes-connectivity/openssl/openssl10/openssl-c_rehash.sh
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/openssl-fix-des.pod-error.patch b/meta/recipes-connectivity/openssl/openssl10/openssl-fix-des.pod-error.patch
index de49729e5ea..de49729e5ea 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/openssl-fix-des.pod-error.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/openssl-fix-des.pod-error.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/openssl_fix_for_x32.patch b/meta/recipes-connectivity/openssl/openssl10/openssl_fix_for_x32.patch
index 0f08a642f61..0f08a642f61 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/openssl_fix_for_x32.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/openssl_fix_for_x32.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/parallel.patch b/meta/recipes-connectivity/openssl/openssl10/parallel.patch
index e5413bf3895..41abf3d6bdb 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/parallel.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/parallel.patch
@@ -13,24 +13,18 @@ Refreshed for 1.0.2i
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
---
- Makefile.org | 14 +-
- Makefile.org.orig | 10 +-
- Makefile.shared | 2 +
- Makefile.shared.orig | 655 ++++++++++++++++++++++++++++++++++++++++++++++++++
- crypto/Makefile | 10 +-
- engines/Makefile | 6 +-
- engines/Makefile.orig | 338 ++++++++++++++++++++++++++
- test/Makefile | 92 +++----
- test/Makefile.orig | 88 ++++---
- 9 files changed, 1108 insertions(+), 107 deletions(-)
- create mode 100644 Makefile.shared.orig
- create mode 100644 engines/Makefile.orig
+ Makefile.org | 14 ++--
+ Makefile.shared | 2 +
+ crypto/Makefile | 10 +--
+ engines/Makefile | 6 +-
+ test/Makefile | 94 +++++++++++-----------
+ 5 files changed, 64 insertions(+), 62 deletions(-)
diff --git a/Makefile.org b/Makefile.org
-index 8e7936c..ed98d2a 100644
+index efcfafb..82eab91 100644
--- a/Makefile.org
+++ b/Makefile.org
-@@ -283,17 +283,17 @@ build_libcrypto: build_crypto build_engines libcrypto.pc
+@@ -282,17 +282,17 @@ build_libcrypto: build_crypto build_engines libcrypto.pc
build_libssl: build_ssl libssl.pc
build_crypto:
@@ -54,7 +48,7 @@ index 8e7936c..ed98d2a 100644
all_testapps: build_libs build_testapps
build_testapps:
-@@ -565,7 +565,7 @@ install_sw:
+@@ -564,7 +564,7 @@ install_sw:
(cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
done;
@@ -64,7 +58,7 @@ index 8e7936c..ed98d2a 100644
do \
if [ -f "$$i" ]; then \
diff --git a/Makefile.shared b/Makefile.shared
-index f6f92e7..8164186 100644
+index bbefb2b..18013a9 100644
--- a/Makefile.shared
+++ b/Makefile.shared
@@ -105,6 +105,7 @@ LINK_SO= \
@@ -84,7 +78,7 @@ index f6f92e7..8164186 100644
ln -s $$prev $$SHLIB$$SHLIB_SUFFIX ); \
fi; \
diff --git a/crypto/Makefile b/crypto/Makefile
-index 17a87f8..29c2dcf 100644
+index 875ea1a..c22b683 100644
--- a/crypto/Makefile
+++ b/crypto/Makefile
@@ -85,11 +85,11 @@ testapps:
@@ -160,7 +154,7 @@ index fe8e9ca..a43d21b 100644
tags:
ctags $(SRC)
diff --git a/test/Makefile b/test/Makefile
-index 40abd60..78d3788 100644
+index 36506cf..c69af8b 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -145,7 +145,7 @@ install:
@@ -172,7 +166,7 @@ index 40abd60..78d3788 100644
apps:
@(cd ..; $(MAKE) DIRS=apps all)
-@@ -444,139 +444,139 @@ BUILD_CMD_STATIC=shlib_target=; \
+@@ -448,142 +448,142 @@ BUILD_CMD_STATIC=shlib_target=; \
link_app.$${shlib_target}
$(RSATEST)$(EXE_EXT): $(RSATEST).o $(DLIBCRYPTO)
@@ -345,7 +339,11 @@ index 40abd60..78d3788 100644
$(FATALERRTEST)$(EXE_EXT): $(FATALERRTEST).o ssltestlib.o $(DLIBSSL) $(DLIBCRYPTO)
@target=$(FATALERRTEST); exobj=ssltestlib.o; $(BUILD_CMD)
-
+
+ $(X509TIMETEST)$(EXE_EXT): $(X509TIMETEST).o
+- @target=$(X509TIMETEST) $(BUILD_CMD)
++ +@target=$(X509TIMETEST) $(BUILD_CMD)
+
$(SSLV2CONFTEST)$(EXE_EXT): $(SSLV2CONFTEST).o
- @target=$(SSLV2CONFTEST) $(BUILD_CMD)
+ +@target=$(SSLV2CONFTEST) $(BUILD_CMD)
@@ -356,7 +354,7 @@ index 40abd60..78d3788 100644
#$(AESTEST).o: $(AESTEST).c
# $(CC) -c $(CFLAGS) -DINTERMEDIATE_VALUE_KAT -DTRACE_KAT_MCT $(AESTEST).c
-@@ -589,7 +589,7 @@ $(DTLSTEST)$(EXE_EXT): $(DTLSTEST).o ssltestlib.o $(DLIBSSL) $(DLIBCRYPTO)
+@@ -596,7 +596,7 @@ $(DTLSTEST)$(EXE_EXT): $(DTLSTEST).o ssltestlib.o $(DLIBSSL) $(DLIBCRYPTO)
# fi
dummytest$(EXE_EXT): dummytest.o $(DLIBCRYPTO)
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/ptest-deps.patch b/meta/recipes-connectivity/openssl/openssl10/ptest-deps.patch
index ef6d17934da..ef6d17934da 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/ptest-deps.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/ptest-deps.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/ptest_makefile_deps.patch b/meta/recipes-connectivity/openssl/openssl10/ptest_makefile_deps.patch
index 4202e61d1e0..4202e61d1e0 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/ptest_makefile_deps.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/ptest_makefile_deps.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/reproducible-cflags.patch b/meta/recipes-connectivity/openssl/openssl10/reproducible-cflags.patch
index 2803cb03938..2803cb03938 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/reproducible-cflags.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/reproducible-cflags.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/reproducible-mkbuildinf.patch b/meta/recipes-connectivity/openssl/openssl10/reproducible-mkbuildinf.patch
index b556731219b..b556731219b 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/reproducible-mkbuildinf.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/reproducible-mkbuildinf.patch
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/run-ptest b/meta/recipes-connectivity/openssl/openssl10/run-ptest
index 3b20fce1ee9..3b20fce1ee9 100755
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/run-ptest
+++ b/meta/recipes-connectivity/openssl/openssl10/run-ptest
diff --git a/meta/recipes-connectivity/openssl/openssl-1.0.2o/shared-libs.patch b/meta/recipes-connectivity/openssl/openssl10/shared-libs.patch
index a7ca0a30783..a7ca0a30783 100644
--- a/meta/recipes-connectivity/openssl/openssl-1.0.2o/shared-libs.patch
+++ b/meta/recipes-connectivity/openssl/openssl10/shared-libs.patch
diff --git a/meta/recipes-connectivity/openssl/openssl10_1.0.2p.bb b/meta/recipes-connectivity/openssl/openssl10_1.0.2p.bb
new file mode 100644
index 00000000000..766110958ec
--- /dev/null
+++ b/meta/recipes-connectivity/openssl/openssl10_1.0.2p.bb
@@ -0,0 +1,360 @@
+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 | SSLeay" dual license
+LICENSE = "openssl"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f475368924827d06d4b416111c8bdb77"
+
+DEPENDS = "hostperl-runtime-native"
+DEPENDS_append_class-target = " openssl-native"
+
+SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \
+ file://run-ptest \
+ file://openssl-c_rehash.sh \
+ file://configure-targets.patch \
+ file://shared-libs.patch \
+ file://oe-ldflags.patch \
+ file://engines-install-in-libdir-ssl.patch \
+ file://debian1.0.2/block_diginotar.patch \
+ file://debian1.0.2/block_digicert_malaysia.patch \
+ file://debian/c_rehash-compat.patch \
+ file://debian/debian-targets.patch \
+ file://debian/man-dir.patch \
+ file://debian/man-section.patch \
+ file://debian/no-rpath.patch \
+ file://debian/no-symbolic.patch \
+ file://debian/pic.patch \
+ file://debian1.0.2/version-script.patch \
+ file://debian1.0.2/soname.patch \
+ file://openssl_fix_for_x32.patch \
+ file://openssl-fix-des.pod-error.patch \
+ file://Makefiles-ptest.patch \
+ file://ptest-deps.patch \
+ file://ptest_makefile_deps.patch \
+ file://configure-musl-target.patch \
+ file://parallel.patch \
+ file://Use-SHA256-not-MD5-as-default-digest.patch \
+ file://0001-Fix-build-with-clang-using-external-assembler.patch \
+ file://0001-openssl-force-soft-link-to-avoid-rare-race.patch \
+ file://0001-allow-manpages-to-be-disabled.patch \
+ "
+
+SRC_URI_append_class-target = " \
+ file://reproducible-cflags.patch \
+ file://reproducible-mkbuildinf.patch \
+ "
+
+SRC_URI_append_class-nativesdk = " \
+ file://environment.d-openssl.sh \
+ "
+
+SRC_URI[md5sum] = "ac5eb30bf5798aa14b1ae6d0e7da58df"
+SRC_URI[sha256sum] = "50a98e07b1a89eb8f6a99477f262df71c6fa7bef77df4dc83025a2845c827d00"
+
+S = "${WORKDIR}/openssl-${PV}"
+
+UPSTREAM_CHECK_REGEX = "openssl-(?P<pver>1\.0.+)\.tar"
+
+inherit pkgconfig siteinfo multilib_header ptest manpages
+
+PACKAGECONFIG ?= "cryptodev-linux"
+PACKAGECONFIG_class-native = ""
+PACKAGECONFIG_class-nativesdk = ""
+
+PACKAGECONFIG[cryptodev-linux] = "-DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS,,cryptodev-linux"
+PACKAGECONFIG[manpages] = ",,,"
+PACKAGECONFIG[perl] = ",,,"
+
+# Remove this to enable SSLv3. SSLv3 is defaulted to disabled due to the POODLE
+# vulnerability
+EXTRA_OECONF = "no-ssl3"
+
+EXTRA_OEMAKE = "${@bb.utils.contains('PACKAGECONFIG', 'manpages', '', 'OE_DISABLE_MANPAGES=1', d)}"
+
+export OE_LDFLAGS = "${LDFLAGS}"
+
+# openssl fails with ccache: https://bugzilla.yoctoproject.org/show_bug.cgi?id=12810
+CCACHE = ""
+
+TERMIO ?= "-DTERMIO"
+TERMIO_libc-musl = "-DTERMIOS"
+
+CFLAG = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', '-DL_ENDIAN', '-DB_ENDIAN', d)} \
+ ${TERMIO} ${CFLAGS} -Wall"
+
+# Avoid binaries being marked as requiring an executable stack since they don't
+# (and it causes issues with SELinux)
+CFLAG += "-Wa,--noexecstack"
+
+CFLAG_append_class-native = " -fPIC"
+
+do_configure () {
+ # The crypto_use_bigint patch means that perl's bignum module needs to be
+ # installed, but some distributions (for example Fedora 23) don't ship it by
+ # default. As the resulting error is very misleading check for bignum before
+ # building.
+ if ! perl -Mbigint -e true; then
+ bbfatal "The perl module 'bignum' was not found but this is required to build openssl. Please install this module (often packaged as perl-bignum) and re-run bitbake."
+ fi
+
+ ln -sf apps/openssl.pod crypto/crypto.pod ssl/ssl.pod doc/
+
+ 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-armeb)
+ target=linux-elf-armeb
+ ;;
+ linux-aarch64*)
+ target=linux-aarch64
+ ;;
+ linux-sh3)
+ target=debian-sh3
+ ;;
+ linux-sh4)
+ target=debian-sh4
+ ;;
+ linux-i486)
+ target=debian-i386-i486
+ ;;
+ linux-i586 | linux-viac3)
+ target=debian-i386-i586
+ ;;
+ linux-i686)
+ target=debian-i386-i686/cmov
+ ;;
+ linux-gnux32-x86_64 | linux-muslx32-x86_64 )
+ target=linux-x32
+ ;;
+ linux-gnu64-x86_64)
+ target=linux-x86_64
+ ;;
+ linux-gnun32-mips*el)
+ target=debian-mipsn32el
+ ;;
+ linux-gnun32-mips*)
+ target=debian-mipsn32
+ ;;
+ linux-mips*64*el)
+ target=debian-mips64el
+ ;;
+ linux-mips*64*)
+ target=debian-mips64
+ ;;
+ linux-mips*el)
+ target=debian-mipsel
+ ;;
+ linux-mips*)
+ target=debian-mips
+ ;;
+ linux-microblaze* | linux-nios2* | linux-gnu*ilp32** | 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-sparcv8
+ ;;
+ esac
+
+ # inject machine-specific flags
+ sed -i -e "s|^\(\"$target\",\s*\"[^:]\+\):\([^:]\+\)|\1:${CFLAG}|g" Configure
+
+ useprefix=${prefix}
+ if [ "x$useprefix" = "x" ]; then
+ useprefix=/
+ fi
+ libdirleaf="$( echo "${libdir}" | sed "s:^$useprefix/*::" )"
+ perl ./Configure ${EXTRA_OECONF} ${PACKAGECONFIG_CONFARGS} shared --prefix=$useprefix --openssldir=${libdir}/ssl --libdir=$libdirleaf $target
+}
+
+do_compile () {
+ oe_runmake depend
+ oe_runmake
+}
+
+do_compile_class-target () {
+ sed -i 's/\((OPENSSL=\)".*"/\1"openssl"/' Makefile
+ oe_runmake depend
+ cc_sanitized=$(echo "${CC} ${CFLAG}" | sed -e 's,--sysroot=${STAGING_DIR_TARGET},,g' -e 's|${DEBUG_PREFIX_MAP}||g' -e 's/[ \t]\+/ /g')
+ oe_runmake CC_INFO="$cc_sanitized"
+}
+
+do_compile_ptest () {
+ oe_runmake buildtest
+}
+
+do_install () {
+ # Create ${D}/${prefix} to fix parallel issues
+ mkdir -p ${D}/${prefix}/
+
+ oe_runmake INSTALL_PREFIX="${D}" MANDIR="${mandir}" install
+
+ oe_libinstall -so libcrypto ${D}${libdir}
+ oe_libinstall -so libssl ${D}${libdir}
+
+ install -d ${D}${includedir}
+ cp --dereference -R include/openssl ${D}${includedir}
+
+ oe_multilib_header openssl/opensslconf.h
+
+ install -Dm 0755 ${WORKDIR}/openssl-c_rehash.sh ${D}${bindir}/c_rehash
+ sed -i -e 's,/etc/openssl,${sysconfdir}/ssl,g' ${D}${bindir}/c_rehash
+
+ if [ "${@bb.utils.filter('PACKAGECONFIG', 'perl', d)}" ]; then
+ sed -i -e '1s,.*,#!${bindir}/env perl,' ${D}${libdir}/ssl/misc/CA.pl
+ sed -i -e '1s,.*,#!${bindir}/env perl,' ${D}${libdir}/ssl/misc/tsget
+ else
+ rm -f ${D}${libdir}/ssl/misc/CA.pl ${D}${libdir}/ssl/misc/tsget
+ fi
+
+ # 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/certs \
+ ${D}${libdir}/ssl/private \
+ ${D}${libdir}/ssl/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', '${sysconfdir}/ssl/certs')} ${D}${libdir}/ssl/certs
+ ln -sf ${@oe.path.relative('${libdir}/ssl', '${sysconfdir}/ssl/private')} ${D}${libdir}/ssl/private
+ ln -sf ${@oe.path.relative('${libdir}/ssl', '${sysconfdir}/ssl/openssl.cnf')} ${D}${libdir}/ssl/openssl.cnf
+
+ # Rename man pages to prefix openssl10-*
+ for f in `find ${D}${mandir} -type f`; do
+ mv $f $(dirname $f)/openssl10-$(basename $f)
+ done
+ for f in `find ${D}${mandir} -type l`; do
+ ln_f=`readlink $f`
+ rm -f $f
+ ln -s openssl10-$ln_f $(dirname $f)/openssl10-$(basename $f)
+ done
+}
+
+do_install_append_class-native () {
+ create_wrapper ${D}${bindir}/openssl \
+ OPENSSL_CONF=${libdir}/ssl/openssl.cnf \
+ SSL_CERT_DIR=${libdir}/ssl/certs \
+ SSL_CERT_FILE=${libdir}/ssl/cert.pem \
+ OPENSSL_ENGINES=${libdir}/ssl/engines
+}
+
+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
+}
+
+do_install_ptest () {
+ cp -r -L Makefile.org Makefile test ${D}${PTEST_PATH}
+
+ # Replace the path to native perl with the path to target perl
+ sed -i 's,^PERL=.*,PERL=${bindir}/perl,' ${D}${PTEST_PATH}/Makefile
+
+ cp Configure config e_os.h ${D}${PTEST_PATH}
+ cp -r -L include ${D}${PTEST_PATH}
+ ln -sf ${libdir}/libcrypto.a ${D}${PTEST_PATH}
+ ln -sf ${libdir}/libssl.a ${D}${PTEST_PATH}
+ mkdir -p ${D}${PTEST_PATH}/crypto
+ cp crypto/constant_time_locl.h ${D}${PTEST_PATH}/crypto
+ cp -r certs ${D}${PTEST_PATH}
+ mkdir -p ${D}${PTEST_PATH}/apps
+ ln -sf ${libdir}/ssl/misc/CA.sh ${D}${PTEST_PATH}/apps
+ ln -sf ${sysconfdir}/ssl/openssl.cnf ${D}${PTEST_PATH}/apps
+ ln -sf ${bindir}/openssl ${D}${PTEST_PATH}/apps
+ cp apps/server.pem ${D}${PTEST_PATH}/apps
+ cp apps/server2.pem ${D}${PTEST_PATH}/apps
+ mkdir -p ${D}${PTEST_PATH}/util
+ install util/opensslwrap.sh ${D}${PTEST_PATH}/util
+ install util/shlib_wrap.sh ${D}${PTEST_PATH}/util
+ # Time stamps are relevant for "make alltests", otherwise
+ # make may try to recompile binaries. Not only must the
+ # binary files be newer than the sources, they also must
+ # be more recent than the header files in /usr/include.
+ #
+ # Using "cp -a" is not sufficient, because do_install
+ # does not preserve the original time stamps.
+ #
+ # So instead of using the original file stamps, we set
+ # the current time for all files. Binaries will get
+ # modified again later when stripping them, but that's okay.
+ touch ${D}${PTEST_PATH}
+ find ${D}${PTEST_PATH} -type f -print0 | xargs --verbose -0 touch -r ${D}${PTEST_PATH}
+
+ # exclude binary files or the package won't install
+ for d in ssltest_old v3ext x509aux; do
+ rm -rf ${D}${libdir}/${BPN}/ptest/test/$d
+ done
+
+ # Remove build host references
+ sed -i \
+ -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
+ -e 's|${DEBUG_PREFIX_MAP}||g' \
+ ${D}${PTEST_PATH}/Makefile ${D}${PTEST_PATH}/Configure
+}
+
+# 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 base openssl package and the libcrypto
+# package since the base openssl package depends on the libcrypto package.
+
+PACKAGES =+ "libcrypto10 libssl10 openssl10-conf ${PN}-engines ${PN}-misc"
+
+FILES_libcrypto10 = "${libdir}/libcrypto${SOLIBS}"
+FILES_libssl10 = "${libdir}/libssl${SOLIBS}"
+FILES_openssl10-conf = "${sysconfdir}/ssl/openssl.cnf"
+FILES_${PN}-engines = "${libdir}/ssl/engines/*.so ${libdir}/engines"
+FILES_${PN}-misc = "${libdir}/ssl/misc"
+FILES_${PN} =+ "${libdir}/ssl/*"
+FILES_${PN}_append_class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/openssl.sh"
+
+CONFFILES_openssl10-conf = "${sysconfdir}/ssl/openssl.cnf"
+
+RRECOMMENDS_libcrypto10 += "openssl10-conf"
+RDEPENDS_${PN}-misc = "${@bb.utils.filter('PACKAGECONFIG', 'perl', d)}"
+RDEPENDS_${PN}-ptest += "${PN}-misc make perl perl-module-filehandle bc"
+
+BBCLASSEXTEND = "native nativesdk"
+PACKAGE_PREPROCESS_FUNCS += "openssl_package_preprocess"
+
+# openssl 1.0 development files and executable binaries clash with openssl 1.1
+# files when installed into target rootfs. So we don't put them into
+# packages, but they continue to be provided via target sysroot for
+# cross-compilation on the host, if some software still depends on openssl 1.0.
+openssl_package_preprocess () {
+ for file in `find ${PKGD} -name *.h -o -name *.pc -o -name *.so`; do
+ rm $file
+ done
+ rm ${PKGD}/usr/bin/openssl
+ rm ${PKGD}/usr/bin/c_rehash
+ rmdir ${PKGD}/usr/bin
+
+}
diff --git a/meta/recipes-connectivity/openssl/openssl_1.0.2o.bb b/meta/recipes-connectivity/openssl/openssl_1.0.2o.bb
deleted file mode 100644
index 413ebf37f4c..00000000000
--- a/meta/recipes-connectivity/openssl/openssl_1.0.2o.bb
+++ /dev/null
@@ -1,64 +0,0 @@
-require openssl10.inc
-
-# For target side versions of openssl enable support for OCF Linux driver
-# if they are available.
-
-CFLAG += "-DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS"
-CFLAG_append_class-native = " -fPIC"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=f475368924827d06d4b416111c8bdb77"
-
-export DIRS = "crypto ssl apps engines"
-export OE_LDFLAGS="${LDFLAGS}"
-
-SRC_URI += "file://find.pl;subdir=openssl-${PV}/util/ \
- file://run-ptest \
- file://openssl-c_rehash.sh \
- file://configure-targets.patch \
- file://shared-libs.patch \
- file://oe-ldflags.patch \
- file://engines-install-in-libdir-ssl.patch \
- file://debian1.0.2/block_diginotar.patch \
- file://debian1.0.2/block_digicert_malaysia.patch \
- file://debian/ca.patch \
- file://debian/c_rehash-compat.patch \
- file://debian/debian-targets.patch \
- file://debian/man-dir.patch \
- file://debian/man-section.patch \
- file://debian/no-rpath.patch \
- file://debian/no-symbolic.patch \
- file://debian/pic.patch \
- file://debian1.0.2/version-script.patch \
- file://debian1.0.2/soname.patch \
- file://openssl_fix_for_x32.patch \
- file://openssl-fix-des.pod-error.patch \
- file://Makefiles-ptest.patch \
- file://ptest-deps.patch \
- file://ptest_makefile_deps.patch \
- file://configure-musl-target.patch \
- file://parallel.patch \
- file://openssl-util-perlpath.pl-cwd.patch \
- file://Use-SHA256-not-MD5-as-default-digest.patch \
- file://0001-Fix-build-with-clang-using-external-assembler.patch \
- file://0001-openssl-force-soft-link-to-avoid-rare-race.patch \
- "
-
-SRC_URI_append_class-target = "\
- file://reproducible-cflags.patch \
- file://reproducible-mkbuildinf.patch \
- "
-SRC_URI[md5sum] = "44279b8557c3247cbe324e2322ecd114"
-SRC_URI[sha256sum] = "ec3f5c9714ba0fd45cb4e087301eb1336c317e0d20b575a125050470e8089e4d"
-
-PACKAGES =+ "${PN}-engines"
-FILES_${PN}-engines = "${libdir}/ssl/engines/*.so ${libdir}/engines"
-
-# The crypto_use_bigint patch means that perl's bignum module needs to be
-# installed, but some distributions (for example Fedora 23) don't ship it by
-# default. As the resulting error is very misleading check for bignum before
-# building.
-do_configure_prepend() {
- if ! perl -Mbigint -e true; then
- bbfatal "The perl module 'bignum' was not found but this is required to build openssl. Please install this module (often packaged as perl-bignum) and re-run bitbake."
- fi
-}
diff --git a/meta/recipes-connectivity/openssl/openssl_1.1.0h.bb b/meta/recipes-connectivity/openssl/openssl_1.1.0h.bb
deleted file mode 100644
index 94b75eb92a8..00000000000
--- a/meta/recipes-connectivity/openssl/openssl_1.1.0h.bb
+++ /dev/null
@@ -1,161 +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 | SSLeay" dual license
-LICENSE = "openssl"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=d57d511030c9d66ef5f5966bee5a7eff"
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI[md5sum] = "5271477e4d93f4ea032b665ef095ff24"
-SRC_URI[sha256sum] = "5835626cde9e99656585fc7aaa2302a73a7e1340bf8c14fd635a62c66802a517"
-
-SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \
- file://run-ptest \
- file://openssl-c_rehash.sh \
- file://0001-Take-linking-flags-from-LDFLAGS-env-var.patch \
- "
-
-S = "${WORKDIR}/openssl-${PV}"
-
-inherit lib_package multilib_header ptest
-
-do_configure () {
- os=${HOST_OS}
- case $os in
- linux-uclibc |\
- linux-uclibceabi |\
- linux-gnueabi |\
- linux-uclibcspe |\
- linux-gnuspe |\
- linux-musl*)
- os=linux
- ;;
- *)
- ;;
- esac
- target="$os-${HOST_ARCH}"
- case $target in
- linux-arm)
- target=linux-armv4
- ;;
- linux-armeb)
- target=linux-armv4
- ;;
- linux-aarch64*)
- target=linux-aarch64
- ;;
- linux-sh3)
- target=linux-generic32
- ;;
- linux-sh4)
- target=linux-generic32
- ;;
- linux-i486)
- target=linux-elf
- ;;
- linux-i586 | linux-viac3)
- target=linux-elf
- ;;
- linux-i686)
- target=linux-elf
- ;;
- linux-gnux32-x86_64)
- target=linux-x32
- ;;
- linux-gnu64-x86_64)
- target=linux-x86_64
- ;;
- linux-mips)
- # specifying TARGET_CC_ARCH prevents openssl from (incorrectly) adding target architecture flags
- target="linux-mips32 ${TARGET_CC_ARCH}"
- ;;
- linux-mipsel)
- target="linux-mips32 ${TARGET_CC_ARCH}"
- ;;
- linux-gnun32-mips*)
- target=linux-mips64
- ;;
- linux-*-mips64 | linux-mips64)
- target=linux64-mips64
- ;;
- linux-*-mips64el | linux-mips64el)
- target=linux64-mips64
- ;;
- linux-microblaze*|linux-nios2*)
- target=linux-generic32
- ;;
- linux-powerpc)
- target=linux-ppc
- ;;
- linux-powerpc64)
- target=linux-ppc64
- ;;
- linux-riscv64)
- target=linux-generic64
- ;;
- linux-riscv32)
- target=linux-generic32
- ;;
- linux-supersparc)
- target=linux-sparcv9
- ;;
- linux-sparc)
- target=linux-sparcv9
- ;;
- darwin-i386)
- target=darwin-i386-cc
- ;;
- esac
- useprefix=${prefix}
- if [ "x$useprefix" = "x" ]; then
- useprefix=/
- fi
- libdirleaf="$(echo ${libdir} | sed s:$useprefix::)"
- perl ./Configure ${EXTRA_OECONF} --prefix=$useprefix --openssldir=${libdir}/ssl-1.1 --libdir=${libdirleaf} $target
-}
-
-#| engines/afalg/e_afalg.c: In function 'eventfd':
-#| engines/afalg/e_afalg.c:110:20: error: '__NR_eventfd' undeclared (first use in this function)
-#| return syscall(__NR_eventfd, n);
-#| ^~~~~~~~~~~~
-EXTRA_OECONF_aarch64 += "no-afalgeng"
-
-#| ./libcrypto.so: undefined reference to `getcontext'
-#| ./libcrypto.so: undefined reference to `setcontext'
-#| ./libcrypto.so: undefined reference to `makecontext'
-EXTRA_OECONF_libc-musl += "-DOPENSSL_NO_ASYNC"
-
-do_install () {
- oe_runmake DESTDIR="${D}" MANDIR="${mandir}" MANSUFFIX=ssl install
- oe_multilib_header openssl/opensslconf.h
-}
-
-do_install_append_class-native () {
- # Install a custom version of c_rehash that can handle sysroots properly.
- # This version is used for example when installing ca-certificates during
- # image creation.
- install -Dm 0755 ${WORKDIR}/openssl-c_rehash.sh ${D}${bindir}/c_rehash
- sed -i -e 's,/etc/openssl,${sysconfdir}/ssl,g' ${D}${bindir}/c_rehash
-}
-
-do_install_ptest() {
- cp -r * ${D}${PTEST_PATH}
-
- # Putting .so files in ptest package will mess up the dependencies of the main openssl package
- # so we rename them to .so.ptest and patch the test accordingly
- mv ${D}${PTEST_PATH}/libcrypto.so ${D}${PTEST_PATH}/libcrypto.so.ptest
- mv ${D}${PTEST_PATH}/libssl.so ${D}${PTEST_PATH}/libssl.so.ptest
- sed -i 's/$target{shared_extension_simple}/".so.ptest"/' ${D}${PTEST_PATH}/test/recipes/90-test_shlibload.t
-}
-
-RDEPENDS_${PN}-ptest += "perl-module-file-spec-functions bash python"
-
-FILES_${PN} =+ " ${libdir}/ssl-1.1/*"
-
-PACKAGES =+ "${PN}-engines"
-FILES_${PN}-engines = "${libdir}/engines-1.1"
-
diff --git a/meta/recipes-connectivity/openssl/openssl_1.1.1.bb b/meta/recipes-connectivity/openssl/openssl_1.1.1.bb
new file mode 100644
index 00000000000..73bcb271601
--- /dev/null
+++ b/meta/recipes-connectivity/openssl/openssl_1.1.1.bb
@@ -0,0 +1,182 @@
+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 | SSLeay" dual license
+LICENSE = "openssl"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d57d511030c9d66ef5f5966bee5a7eff"
+
+DEPENDS = "hostperl-runtime-native"
+
+SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \
+ file://run-ptest \
+ file://openssl-c_rehash.sh \
+ "
+
+SRC_URI_append_class-nativesdk = " \
+ file://environment.d-openssl.sh \
+ "
+
+SRC_URI[md5sum] = "7079eb017429e0ffb9efb42bf80ccb21"
+SRC_URI[sha256sum] = "2836875a0f89c03d0fdf483941512613a50cfb421d6fd94b9f41d7279d586a3d"
+
+inherit lib_package multilib_header ptest
+
+#| ./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"
+
+# This 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=devrandom"
+EXTRA_OECONF_class-nativesdk = "--with-rand-seed=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.
+ perl ./Configure ${EXTRA_OECONF} ${PACKAGECONFIG_CONFARGS} --prefix=$useprefix --openssldir=${libdir}/ssl-1.1 --libdir=${libdir} $target
+}
+
+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}/ssl-1.1/engines
+
+ # Install a custom version of c_rehash that can handle sysroots properly.
+ # This version is used for example when installing ca-certificates during
+ # image creation.
+ install -Dm 0755 ${WORKDIR}/openssl-c_rehash.sh ${D}${bindir}/c_rehash
+ sed -i -e 's,/etc/openssl,${sysconfdir}/ssl,g' ${D}${bindir}/c_rehash
+}
+
+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
+}
+
+do_install_ptest () {
+ cp -r * ${D}${PTEST_PATH}
+}
+
+PRIVATE_LIBS_${PN}-ptest = "libcrypto.so.1.1 libssl.so.1.1"
+
+# 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}-bin = "perl"
+RDEPENDS_${PN}-misc = "perl"
+RDEPENDS_${PN}-ptest += "perl-module-file-spec-functions bash python"
+
+RPROVIDES_openssl-conf = "openssl10-conf"
+RREPLACES_openssl-conf = "openssl10-conf"
+RCONFLICTS_openssl-conf = "openssl10-conf"
+
+BBCLASSEXTEND = "native nativesdk"
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
new file mode 100644
index 00000000000..e53f240543d
--- /dev/null
+++ b/meta/recipes-connectivity/ppp/ppp/ppp-2.4.7-DES-openssl.patch
@@ -0,0 +1,84 @@
+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_2.4.7.bb b/meta/recipes-connectivity/ppp/ppp_2.4.7.bb
index a5f764f6ec0..644cde45628 100644
--- a/meta/recipes-connectivity/ppp/ppp_2.4.7.bb
+++ b/meta/recipes-connectivity/ppp/ppp_2.4.7.bb
@@ -4,7 +4,7 @@ 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"
+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 \
@@ -32,6 +32,7 @@ SRC_URI = "https://download.samba.org/pub/${BPN}/${BP}.tar.gz \
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 = "\
@@ -49,7 +50,7 @@ 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${S}/include"'
+EXTRA_OEMAKE += ' COPTS="${CFLAGS} -I${STAGING_INCDIR}/openssl -I${S}/include"'
do_configure () {
oe_runconf
@@ -80,6 +81,10 @@ do_install_append () {
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"
diff --git a/meta/recipes-connectivity/socat/socat_1.7.3.2.bb b/meta/recipes-connectivity/socat/socat_1.7.3.2.bb
index 4dcb7b4adc7..927df7463ae 100644
--- a/meta/recipes-connectivity/socat/socat_1.7.3.2.bb
+++ b/meta/recipes-connectivity/socat/socat_1.7.3.2.bb
@@ -11,7 +11,6 @@ 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 \
file://Makefile.in-fix-for-parallel-build.patch \
file://0001-define-NETDB_INTERNAL-to-1-if-not-available.patch \
@@ -26,9 +25,23 @@ inherit autotools
EXTRA_AUTORECONF += "--exclude=autoheader"
EXTRA_OECONF += "ac_cv_have_z_modifier=yes \
- ac_cv_header_bsd_libutil_h=no \
+ 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"
PACKAGECONFIG ??= ""
PACKAGECONFIG[tcp-wrappers] = "--enable-libwrap,--disable-libwrap,tcp-wrappers"
diff --git a/meta/recipes-connectivity/wireless-tools/wireless-tools/avoid_strip.patch b/meta/recipes-connectivity/wireless-tools/wireless-tools/avoid_strip.patch
deleted file mode 100644
index f34e243de99..00000000000
--- a/meta/recipes-connectivity/wireless-tools/wireless-tools/avoid_strip.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-wireless_tools: Avoid stripping iwmulticall
-
-Upstream-Status: Inappropriate [other]
- The removed code was from upstream.
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-
-diff -ur wireless_tools.29.orig/Makefile wireless_tools.29/Makefile
---- wireless_tools.29.orig/Makefile 2011-06-18 11:35:12.183907453 -0500
-+++ wireless_tools.29/Makefile 2011-06-18 11:38:09.995907985 -0500
-@@ -135,9 +135,8 @@
-
- macaddr: macaddr.o $(IWLIB)
-
--# Always do symbol stripping here
- iwmulticall: iwmulticall.o
-- $(CC) $(LDFLAGS) -Wl,-s $(XCFLAGS) -o $@ $^ $(LIBS)
-+ $(CC) $(LDFLAGS) $(STRIPFLAGS) $(XCFLAGS) -o $@ $^ $(LIBS)
-
- # It's a kind of magic...
- wireless.h:
diff --git a/meta/recipes-connectivity/wireless-tools/wireless-tools/ldflags.patch b/meta/recipes-connectivity/wireless-tools/wireless-tools/ldflags.patch
deleted file mode 100644
index 6c0d8cbd2e4..00000000000
--- a/meta/recipes-connectivity/wireless-tools/wireless-tools/ldflags.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-wireless-tools: Remove QA warning: No GNU_HASH in the elf binary
-
-Upstream-Status: Inappropriate [other]
- Useful within bitbake environment only.
-
-Signed-off-by: Muhammad Shakeel <muhammad_shakeel@mentor.com>
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- wireless_tools.29.orig/Makefile
-+++ wireless_tools.29/Makefile
-@@ -144,7 +144,7 @@ wireless.h:
-
- # Compilation of the dynamic library
- $(DYNAMIC): $(OBJS:.o=.so)
-- $(CC) -shared -o $@ -Wl,-soname,$@ $(STRIPFLAGS) $(LIBS) -lc $^
-+ $(CC) -shared -o $@ -Wl,-soname,$@ $(LDFLAGS) $(STRIPFLAGS) $(LIBS) -lc $^
-
- # Compilation of the static library
- $(STATIC): $(OBJS:.o=.so)
diff --git a/meta/recipes-connectivity/wireless-tools/wireless-tools/man.patch b/meta/recipes-connectivity/wireless-tools/wireless-tools/man.patch
deleted file mode 100644
index 6a757dae763..00000000000
--- a/meta/recipes-connectivity/wireless-tools/wireless-tools/man.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-Index: wireless_tools.30/Makefile
-===================================================================
---- wireless_tools.30.orig/Makefile 2014-02-01 00:21:04.148463382 -0800
-+++ wireless_tools.30/Makefile 2014-02-01 00:23:35.448072279 -0800
-@@ -76,7 +76,7 @@
- INSTALL_DIR= $(PREFIX)/sbin
- INSTALL_LIB= $(PREFIX)/lib
- INSTALL_INC= $(PREFIX)/include
--INSTALL_MAN= $(PREFIX)/man
-+INSTALL_MAN= $(PREFIX)/share/man
-
- # Various commands
- RM = rm -f
diff --git a/meta/recipes-connectivity/wireless-tools/wireless-tools/remove.ldconfig.call.patch b/meta/recipes-connectivity/wireless-tools/wireless-tools/remove.ldconfig.call.patch
deleted file mode 100644
index 3a22c3f1e70..00000000000
--- a/meta/recipes-connectivity/wireless-tools/wireless-tools/remove.ldconfig.call.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-When /etc/ld.so.cache is writeable by user running bitbake then it creates invalid cache
-(in my case libstdc++.so cannot be found after building zlib(-native) and I have to call
-touch */libstdc++.so && /sbin/ldconfig to fix it.
-
-So remove ldconfig call from make install-libs
-
-Upstream-Status: Inappropriate [disable feature]
-
-diff -uNr wireless_tools.29.orig/Makefile wireless_tools.29/Makefile
---- wireless_tools.29.orig/Makefile 2007-09-18 01:56:46.000000000 +0200
-+++ wireless_tools.29/Makefile 2012-02-15 20:46:41.780763514 +0100
-@@ -163,7 +163,6 @@
- install -m 755 $(DYNAMIC) $(INSTALL_LIB)
- ln -sfn $(DYNAMIC) $(INSTALL_LIB)/$(DYNAMIC_LINK)
- @echo "*** Don't forget to add $(INSTALL_LIB) to /etc/ld.so.conf, and run ldconfig as root. ***"
-- @$(LDCONFIG) || echo "*** Could not run ldconfig ! ***"
-
- # Install the static library
- install-static:: $(STATIC)
diff --git a/meta/recipes-connectivity/wireless-tools/wireless-tools_30.pre9.bb b/meta/recipes-connectivity/wireless-tools/wireless-tools_30.pre9.bb
deleted file mode 100644
index 0a342071e0f..00000000000
--- a/meta/recipes-connectivity/wireless-tools/wireless-tools_30.pre9.bb
+++ /dev/null
@@ -1,50 +0,0 @@
-SUMMARY = "Tools for the Linux Standard Wireless Extension Subsystem"
-HOMEPAGE = "https://hewlettpackard.github.io/wireless-tools/Tools.html"
-LICENSE = "GPLv2 & (LGPLv2.1 | MPL-1.1 | BSD)"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://iwconfig.c;beginline=1;endline=12;md5=cf710eb1795c376eb10ea4ff04649caf \
- file://iwevent.c;beginline=59;endline=72;md5=d66a10026d4394f0a5b1c5587bce4537 \
- file://sample_enc.c;beginline=1;endline=4;md5=838372be07874260b566bae2f6ed33b6"
-SECTION = "base"
-PE = "1"
-
-SRC_URI = "https://hewlettpackard.github.io/wireless-tools/wireless_tools.${PV}.tar.gz \
- file://remove.ldconfig.call.patch \
- file://man.patch \
- file://avoid_strip.patch \
- file://ldflags.patch \
- "
-SRC_URI[md5sum] = "ca91ba7c7eff9bfff6926b1a34a4697d"
-SRC_URI[sha256sum] = "abd9c5c98abf1fdd11892ac2f8a56737544fe101e1be27c6241a564948f34c63"
-
-UPSTREAM_CHECK_URI = "https://hewlettpackard.github.io/wireless-tools/Tools.html"
-UPSTREAM_CHECK_REGEX = "wireless_tools\.(?P<pver>(\d+)(\..*|))\.tar\.gz"
-
-S = "${WORKDIR}/wireless_tools.30"
-
-CFLAGS =+ "-I${S}"
-EXTRA_OEMAKE = "-e 'BUILD_SHARED=y' \
- 'INSTALL_DIR=${D}${base_sbindir}' \
- 'INSTALL_LIB=${D}${libdir}' \
- 'INSTALL_INC=${D}${includedir}' \
- 'INSTALL_MAN=${D}${mandir}'"
-
-do_compile() {
- oe_runmake all libiw.a
-}
-
-do_install() {
- oe_runmake PREFIX=${D} install-iwmulticall install-dynamic install-man install-hdr
- install -d ${D}${sbindir}
- install -m 0755 ifrename ${D}${sbindir}/ifrename
-}
-
-PACKAGES = "libiw libiw-dev libiw-doc ifrename-doc ifrename ${PN} ${PN}-doc ${PN}-dbg"
-
-FILES_libiw = "${libdir}/*.so.*"
-FILES_libiw-dev = "${libdir}/*.a ${libdir}/*.so ${includedir}"
-FILES_libiw-doc = "${mandir}/man7"
-FILES_ifrename = "${sbindir}/ifrename"
-FILES_ifrename-doc = "${mandir}/man8/ifrename.8 ${mandir}/man5/iftab.5"
-FILES_${PN} = "${bindir} ${sbindir}/iw* ${base_sbindir} ${base_bindir} ${sysconfdir}/network"
-FILES_${PN}-doc = "${mandir}"
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple.patch
deleted file mode 100644
index 436520fe64b..00000000000
--- a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple.patch
+++ /dev/null
@@ -1,1025 +0,0 @@
-The WPA2 four-way handshake protocol is vulnerable to replay attacks which can
-result in unauthenticated clients gaining access to the network.
-
-Backport a number of patches from upstream to fix this.
-
-CVE: CVE-2017-13077
-CVE: CVE-2017-13078
-CVE: CVE-2017-13079
-CVE: CVE-2017-13080
-CVE: CVE-2017-13081
-CVE: CVE-2017-13082
-CVE: CVE-2017-13086
-CVE: CVE-2017-13087
-CVE: CVE-2017-13088
-
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From cf4cab804c7afd5c45505528a8d16e46163243a2 Mon Sep 17 00:00:00 2001
-From: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
-Date: Fri, 14 Jul 2017 15:15:35 +0200
-Subject: [PATCH 1/8] hostapd: Avoid key reinstallation in FT handshake
-
-Do not reinstall TK to the driver during Reassociation Response frame
-processing if the first attempt of setting the TK succeeded. This avoids
-issues related to clearing the TX/RX PN that could result in reusing
-same PN values for transmitted frames (e.g., due to CCM nonce reuse and
-also hitting replay protection on the receiver) and accepting replayed
-frames on RX side.
-
-This issue was introduced by the commit
-0e84c25434e6a1f283c7b4e62e483729085b78d2 ('FT: Fix PTK configuration in
-authenticator') which allowed wpa_ft_install_ptk() to be called multiple
-times with the same PTK. While the second configuration attempt is
-needed with some drivers, it must be done only if the first attempt
-failed.
-
-Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
----
- src/ap/ieee802_11.c | 16 +++++++++++++---
- src/ap/wpa_auth.c | 11 +++++++++++
- src/ap/wpa_auth.h | 3 ++-
- src/ap/wpa_auth_ft.c | 10 ++++++++++
- src/ap/wpa_auth_i.h | 1 +
- 5 files changed, 37 insertions(+), 4 deletions(-)
-
-diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
-index 4e04169..333035f 100644
---- a/src/ap/ieee802_11.c
-+++ b/src/ap/ieee802_11.c
-@@ -1841,6 +1841,7 @@ static int add_associated_sta(struct hostapd_data *hapd,
- {
- struct ieee80211_ht_capabilities ht_cap;
- struct ieee80211_vht_capabilities vht_cap;
-+ int set = 1;
-
- /*
- * Remove the STA entry to ensure the STA PS state gets cleared and
-@@ -1848,9 +1849,18 @@ static int add_associated_sta(struct hostapd_data *hapd,
- * FT-over-the-DS, where a station re-associates back to the same AP but
- * skips the authentication flow, or if working with a driver that
- * does not support full AP client state.
-+ *
-+ * Skip this if the STA has already completed FT reassociation and the
-+ * TK has been configured since the TX/RX PN must not be reset to 0 for
-+ * the same key.
- */
-- if (!sta->added_unassoc)
-+ if (!sta->added_unassoc &&
-+ (!(sta->flags & WLAN_STA_AUTHORIZED) ||
-+ !wpa_auth_sta_ft_tk_already_set(sta->wpa_sm))) {
- hostapd_drv_sta_remove(hapd, sta->addr);
-+ wpa_auth_sm_event(sta->wpa_sm, WPA_DRV_STA_REMOVED);
-+ set = 0;
-+ }
-
- #ifdef CONFIG_IEEE80211N
- if (sta->flags & WLAN_STA_HT)
-@@ -1873,11 +1883,11 @@ static int add_associated_sta(struct hostapd_data *hapd,
- sta->flags & WLAN_STA_VHT ? &vht_cap : NULL,
- sta->flags | WLAN_STA_ASSOC, sta->qosinfo,
- sta->vht_opmode, sta->p2p_ie ? 1 : 0,
-- sta->added_unassoc)) {
-+ set)) {
- hostapd_logger(hapd, sta->addr,
- HOSTAPD_MODULE_IEEE80211, HOSTAPD_LEVEL_NOTICE,
- "Could not %s STA to kernel driver",
-- sta->added_unassoc ? "set" : "add");
-+ set ? "set" : "add");
-
- if (sta->added_unassoc) {
- hostapd_drv_sta_remove(hapd, sta->addr);
-diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c
-index 3587086..707971d 100644
---- a/src/ap/wpa_auth.c
-+++ b/src/ap/wpa_auth.c
-@@ -1745,6 +1745,9 @@ int wpa_auth_sm_event(struct wpa_state_machine *sm, enum wpa_event event)
- #else /* CONFIG_IEEE80211R */
- break;
- #endif /* CONFIG_IEEE80211R */
-+ case WPA_DRV_STA_REMOVED:
-+ sm->tk_already_set = FALSE;
-+ return 0;
- }
-
- #ifdef CONFIG_IEEE80211R
-@@ -3250,6 +3253,14 @@ int wpa_auth_sta_wpa_version(struct wpa_state_machine *sm)
- }
-
-
-+int wpa_auth_sta_ft_tk_already_set(struct wpa_state_machine *sm)
-+{
-+ if (!sm || !wpa_key_mgmt_ft(sm->wpa_key_mgmt))
-+ return 0;
-+ return sm->tk_already_set;
-+}
-+
-+
- int wpa_auth_sta_clear_pmksa(struct wpa_state_machine *sm,
- struct rsn_pmksa_cache_entry *entry)
- {
-diff --git a/src/ap/wpa_auth.h b/src/ap/wpa_auth.h
-index 0de8d97..97461b0 100644
---- a/src/ap/wpa_auth.h
-+++ b/src/ap/wpa_auth.h
-@@ -267,7 +267,7 @@ void wpa_receive(struct wpa_authenticator *wpa_auth,
- u8 *data, size_t data_len);
- enum wpa_event {
- WPA_AUTH, WPA_ASSOC, WPA_DISASSOC, WPA_DEAUTH, WPA_REAUTH,
-- WPA_REAUTH_EAPOL, WPA_ASSOC_FT
-+ WPA_REAUTH_EAPOL, WPA_ASSOC_FT, WPA_DRV_STA_REMOVED
- };
- void wpa_remove_ptk(struct wpa_state_machine *sm);
- int wpa_auth_sm_event(struct wpa_state_machine *sm, enum wpa_event event);
-@@ -280,6 +280,7 @@ int wpa_auth_pairwise_set(struct wpa_state_machine *sm);
- int wpa_auth_get_pairwise(struct wpa_state_machine *sm);
- int wpa_auth_sta_key_mgmt(struct wpa_state_machine *sm);
- int wpa_auth_sta_wpa_version(struct wpa_state_machine *sm);
-+int wpa_auth_sta_ft_tk_already_set(struct wpa_state_machine *sm);
- int wpa_auth_sta_clear_pmksa(struct wpa_state_machine *sm,
- struct rsn_pmksa_cache_entry *entry);
- struct rsn_pmksa_cache_entry *
-diff --git a/src/ap/wpa_auth_ft.c b/src/ap/wpa_auth_ft.c
-index 42242a5..e63b99a 100644
---- a/src/ap/wpa_auth_ft.c
-+++ b/src/ap/wpa_auth_ft.c
-@@ -780,6 +780,14 @@ void wpa_ft_install_ptk(struct wpa_state_machine *sm)
- return;
- }
-
-+ if (sm->tk_already_set) {
-+ /* Must avoid TK reconfiguration to prevent clearing of TX/RX
-+ * PN in the driver */
-+ wpa_printf(MSG_DEBUG,
-+ "FT: Do not re-install same PTK to the driver");
-+ return;
-+ }
-+
- /* FIX: add STA entry to kernel/driver here? The set_key will fail
- * most likely without this.. At the moment, STA entry is added only
- * after association has been completed. This function will be called
-@@ -792,6 +800,7 @@ void wpa_ft_install_ptk(struct wpa_state_machine *sm)
-
- /* FIX: MLME-SetProtection.Request(TA, Tx_Rx) */
- sm->pairwise_set = TRUE;
-+ sm->tk_already_set = TRUE;
- }
-
-
-@@ -898,6 +907,7 @@ static int wpa_ft_process_auth_req(struct wpa_state_machine *sm,
-
- sm->pairwise = pairwise;
- sm->PTK_valid = TRUE;
-+ sm->tk_already_set = FALSE;
- wpa_ft_install_ptk(sm);
-
- buflen = 2 + sizeof(struct rsn_mdie) + 2 + sizeof(struct rsn_ftie) +
-diff --git a/src/ap/wpa_auth_i.h b/src/ap/wpa_auth_i.h
-index 72b7eb3..7fd8f05 100644
---- a/src/ap/wpa_auth_i.h
-+++ b/src/ap/wpa_auth_i.h
-@@ -65,6 +65,7 @@ struct wpa_state_machine {
- struct wpa_ptk PTK;
- Boolean PTK_valid;
- Boolean pairwise_set;
-+ Boolean tk_already_set;
- int keycount;
- Boolean Pair;
- struct wpa_key_replay_counter {
---
-2.7.4
-
-From 927f891007c402fefd1ff384645b3f07597c3ede Mon Sep 17 00:00:00 2001
-From: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
-Date: Wed, 12 Jul 2017 16:03:24 +0200
-Subject: [PATCH 2/8] Prevent reinstallation of an already in-use group key
-
-Track the current GTK and IGTK that is in use and when receiving a
-(possibly retransmitted) Group Message 1 or WNM-Sleep Mode Response, do
-not install the given key if it is already in use. This prevents an
-attacker from trying to trick the client into resetting or lowering the
-sequence counter associated to the group key.
-
-Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
----
- src/common/wpa_common.h | 11 +++++
- src/rsn_supp/wpa.c | 116 ++++++++++++++++++++++++++++++------------------
- src/rsn_supp/wpa_i.h | 4 ++
- 3 files changed, 87 insertions(+), 44 deletions(-)
-
-diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h
-index af1d0f0..d200285 100644
---- a/src/common/wpa_common.h
-+++ b/src/common/wpa_common.h
-@@ -217,6 +217,17 @@ struct wpa_ptk {
- size_t tk_len;
- };
-
-+struct wpa_gtk {
-+ u8 gtk[WPA_GTK_MAX_LEN];
-+ size_t gtk_len;
-+};
-+
-+#ifdef CONFIG_IEEE80211W
-+struct wpa_igtk {
-+ u8 igtk[WPA_IGTK_MAX_LEN];
-+ size_t igtk_len;
-+};
-+#endif /* CONFIG_IEEE80211W */
-
- /* WPA IE version 1
- * 00-50-f2:1 (OUI:OUI type)
-diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
-index 3c47879..95bd7be 100644
---- a/src/rsn_supp/wpa.c
-+++ b/src/rsn_supp/wpa.c
-@@ -714,6 +714,15 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
- const u8 *_gtk = gd->gtk;
- u8 gtk_buf[32];
-
-+ /* Detect possible key reinstallation */
-+ if (sm->gtk.gtk_len == (size_t) gd->gtk_len &&
-+ os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) {
-+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
-+ "WPA: Not reinstalling already in-use GTK to the driver (keyidx=%d tx=%d len=%d)",
-+ gd->keyidx, gd->tx, gd->gtk_len);
-+ return 0;
-+ }
-+
- wpa_hexdump_key(MSG_DEBUG, "WPA: Group Key", gd->gtk, gd->gtk_len);
- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
- "WPA: Installing GTK to the driver (keyidx=%d tx=%d len=%d)",
-@@ -748,6 +757,9 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
- }
- os_memset(gtk_buf, 0, sizeof(gtk_buf));
-
-+ sm->gtk.gtk_len = gd->gtk_len;
-+ os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len);
-+
- return 0;
- }
-
-@@ -854,6 +866,48 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm,
- }
-
-
-+#ifdef CONFIG_IEEE80211W
-+static int wpa_supplicant_install_igtk(struct wpa_sm *sm,
-+ const struct wpa_igtk_kde *igtk)
-+{
-+ size_t len = wpa_cipher_key_len(sm->mgmt_group_cipher);
-+ u16 keyidx = WPA_GET_LE16(igtk->keyid);
-+
-+ /* Detect possible key reinstallation */
-+ if (sm->igtk.igtk_len == len &&
-+ os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) {
-+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
-+ "WPA: Not reinstalling already in-use IGTK to the driver (keyidx=%d)",
-+ keyidx);
-+ return 0;
-+ }
-+
-+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
-+ "WPA: IGTK keyid %d pn %02x%02x%02x%02x%02x%02x",
-+ keyidx, MAC2STR(igtk->pn));
-+ wpa_hexdump_key(MSG_DEBUG, "WPA: IGTK", igtk->igtk, len);
-+ if (keyidx > 4095) {
-+ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
-+ "WPA: Invalid IGTK KeyID %d", keyidx);
-+ return -1;
-+ }
-+ if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher),
-+ broadcast_ether_addr,
-+ keyidx, 0, igtk->pn, sizeof(igtk->pn),
-+ igtk->igtk, len) < 0) {
-+ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
-+ "WPA: Failed to configure IGTK to the driver");
-+ return -1;
-+ }
-+
-+ sm->igtk.igtk_len = len;
-+ os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len);
-+
-+ return 0;
-+}
-+#endif /* CONFIG_IEEE80211W */
-+
-+
- static int ieee80211w_set_keys(struct wpa_sm *sm,
- struct wpa_eapol_ie_parse *ie)
- {
-@@ -864,30 +918,14 @@ static int ieee80211w_set_keys(struct wpa_sm *sm,
- if (ie->igtk) {
- size_t len;
- const struct wpa_igtk_kde *igtk;
-- u16 keyidx;
-+
- len = wpa_cipher_key_len(sm->mgmt_group_cipher);
- if (ie->igtk_len != WPA_IGTK_KDE_PREFIX_LEN + len)
- return -1;
-+
- igtk = (const struct wpa_igtk_kde *) ie->igtk;
-- keyidx = WPA_GET_LE16(igtk->keyid);
-- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, "WPA: IGTK keyid %d "
-- "pn %02x%02x%02x%02x%02x%02x",
-- keyidx, MAC2STR(igtk->pn));
-- wpa_hexdump_key(MSG_DEBUG, "WPA: IGTK",
-- igtk->igtk, len);
-- if (keyidx > 4095) {
-- wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
-- "WPA: Invalid IGTK KeyID %d", keyidx);
-- return -1;
-- }
-- if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher),
-- broadcast_ether_addr,
-- keyidx, 0, igtk->pn, sizeof(igtk->pn),
-- igtk->igtk, len) < 0) {
-- wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
-- "WPA: Failed to configure IGTK to the driver");
-+ if (wpa_supplicant_install_igtk(sm, igtk) < 0)
- return -1;
-- }
- }
-
- return 0;
-@@ -2307,7 +2345,7 @@ void wpa_sm_deinit(struct wpa_sm *sm)
- */
- void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
- {
-- int clear_ptk = 1;
-+ int clear_keys = 1;
-
- if (sm == NULL)
- return;
-@@ -2333,11 +2371,11 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
- /* Prepare for the next transition */
- wpa_ft_prepare_auth_request(sm, NULL);
-
-- clear_ptk = 0;
-+ clear_keys = 0;
- }
- #endif /* CONFIG_IEEE80211R */
-
-- if (clear_ptk) {
-+ if (clear_keys) {
- /*
- * IEEE 802.11, 8.4.10: Delete PTK SA on (re)association if
- * this is not part of a Fast BSS Transition.
-@@ -2347,6 +2385,10 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
- os_memset(&sm->ptk, 0, sizeof(sm->ptk));
- sm->tptk_set = 0;
- os_memset(&sm->tptk, 0, sizeof(sm->tptk));
-+ os_memset(&sm->gtk, 0, sizeof(sm->gtk));
-+#ifdef CONFIG_IEEE80211W
-+ os_memset(&sm->igtk, 0, sizeof(sm->igtk));
-+#endif /* CONFIG_IEEE80211W */
- }
-
- #ifdef CONFIG_TDLS
-@@ -2877,6 +2919,10 @@ void wpa_sm_drop_sa(struct wpa_sm *sm)
- os_memset(sm->pmk, 0, sizeof(sm->pmk));
- os_memset(&sm->ptk, 0, sizeof(sm->ptk));
- os_memset(&sm->tptk, 0, sizeof(sm->tptk));
-+ os_memset(&sm->gtk, 0, sizeof(sm->gtk));
-+#ifdef CONFIG_IEEE80211W
-+ os_memset(&sm->igtk, 0, sizeof(sm->igtk));
-+#endif /* CONFIG_IEEE80211W */
- #ifdef CONFIG_IEEE80211R
- os_memset(sm->xxkey, 0, sizeof(sm->xxkey));
- os_memset(sm->pmk_r0, 0, sizeof(sm->pmk_r0));
-@@ -2949,29 +2995,11 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf)
- os_memset(&gd, 0, sizeof(gd));
- #ifdef CONFIG_IEEE80211W
- } else if (subelem_id == WNM_SLEEP_SUBELEM_IGTK) {
-- struct wpa_igtk_kde igd;
-- u16 keyidx;
--
-- os_memset(&igd, 0, sizeof(igd));
-- keylen = wpa_cipher_key_len(sm->mgmt_group_cipher);
-- os_memcpy(igd.keyid, buf + 2, 2);
-- os_memcpy(igd.pn, buf + 4, 6);
--
-- keyidx = WPA_GET_LE16(igd.keyid);
-- os_memcpy(igd.igtk, buf + 10, keylen);
--
-- wpa_hexdump_key(MSG_DEBUG, "Install IGTK (WNM SLEEP)",
-- igd.igtk, keylen);
-- if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher),
-- broadcast_ether_addr,
-- keyidx, 0, igd.pn, sizeof(igd.pn),
-- igd.igtk, keylen) < 0) {
-- wpa_printf(MSG_DEBUG, "Failed to install the IGTK in "
-- "WNM mode");
-- os_memset(&igd, 0, sizeof(igd));
-+ const struct wpa_igtk_kde *igtk;
-+
-+ igtk = (const struct wpa_igtk_kde *) (buf + 2);
-+ if (wpa_supplicant_install_igtk(sm, igtk) < 0)
- return -1;
-- }
-- os_memset(&igd, 0, sizeof(igd));
- #endif /* CONFIG_IEEE80211W */
- } else {
- wpa_printf(MSG_DEBUG, "Unknown element id");
-diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
-index f653ba6..afc9e37 100644
---- a/src/rsn_supp/wpa_i.h
-+++ b/src/rsn_supp/wpa_i.h
-@@ -31,6 +31,10 @@ struct wpa_sm {
- u8 rx_replay_counter[WPA_REPLAY_COUNTER_LEN];
- int rx_replay_counter_set;
- u8 request_counter[WPA_REPLAY_COUNTER_LEN];
-+ struct wpa_gtk gtk;
-+#ifdef CONFIG_IEEE80211W
-+ struct wpa_igtk igtk;
-+#endif /* CONFIG_IEEE80211W */
-
- struct eapol_sm *eapol; /* EAPOL state machine from upper level code */
-
---
-2.7.4
-
-From 8280294e74846ea342389a0cd17215050fa5afe8 Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <j@w1.fi>
-Date: Sun, 1 Oct 2017 12:12:24 +0300
-Subject: [PATCH 3/8] Extend protection of GTK/IGTK reinstallation of WNM-Sleep
- Mode cases
-
-This extends the protection to track last configured GTK/IGTK value
-separately from EAPOL-Key frames and WNM-Sleep Mode frames to cover a
-corner case where these two different mechanisms may get used when the
-GTK/IGTK has changed and tracking a single value is not sufficient to
-detect a possible key reconfiguration.
-
-Signed-off-by: Jouni Malinen <j@w1.fi>
----
- src/rsn_supp/wpa.c | 53 +++++++++++++++++++++++++++++++++++++---------------
- src/rsn_supp/wpa_i.h | 2 ++
- 2 files changed, 40 insertions(+), 15 deletions(-)
-
-diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
-index 95bd7be..7a2c68d 100644
---- a/src/rsn_supp/wpa.c
-+++ b/src/rsn_supp/wpa.c
-@@ -709,14 +709,17 @@ struct wpa_gtk_data {
-
- static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
- const struct wpa_gtk_data *gd,
-- const u8 *key_rsc)
-+ const u8 *key_rsc, int wnm_sleep)
- {
- const u8 *_gtk = gd->gtk;
- u8 gtk_buf[32];
-
- /* Detect possible key reinstallation */
-- if (sm->gtk.gtk_len == (size_t) gd->gtk_len &&
-- os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) {
-+ if ((sm->gtk.gtk_len == (size_t) gd->gtk_len &&
-+ os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) ||
-+ (sm->gtk_wnm_sleep.gtk_len == (size_t) gd->gtk_len &&
-+ os_memcmp(sm->gtk_wnm_sleep.gtk, gd->gtk,
-+ sm->gtk_wnm_sleep.gtk_len) == 0)) {
- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
- "WPA: Not reinstalling already in-use GTK to the driver (keyidx=%d tx=%d len=%d)",
- gd->keyidx, gd->tx, gd->gtk_len);
-@@ -757,8 +760,14 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
- }
- os_memset(gtk_buf, 0, sizeof(gtk_buf));
-
-- sm->gtk.gtk_len = gd->gtk_len;
-- os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len);
-+ if (wnm_sleep) {
-+ sm->gtk_wnm_sleep.gtk_len = gd->gtk_len;
-+ os_memcpy(sm->gtk_wnm_sleep.gtk, gd->gtk,
-+ sm->gtk_wnm_sleep.gtk_len);
-+ } else {
-+ sm->gtk.gtk_len = gd->gtk_len;
-+ os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len);
-+ }
-
- return 0;
- }
-@@ -852,7 +861,7 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm,
- (wpa_supplicant_check_group_cipher(sm, sm->group_cipher,
- gtk_len, gtk_len,
- &gd.key_rsc_len, &gd.alg) ||
-- wpa_supplicant_install_gtk(sm, &gd, key_rsc))) {
-+ wpa_supplicant_install_gtk(sm, &gd, key_rsc, 0))) {
- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
- "RSN: Failed to install GTK");
- os_memset(&gd, 0, sizeof(gd));
-@@ -868,14 +877,18 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm,
-
- #ifdef CONFIG_IEEE80211W
- static int wpa_supplicant_install_igtk(struct wpa_sm *sm,
-- const struct wpa_igtk_kde *igtk)
-+ const struct wpa_igtk_kde *igtk,
-+ int wnm_sleep)
- {
- size_t len = wpa_cipher_key_len(sm->mgmt_group_cipher);
- u16 keyidx = WPA_GET_LE16(igtk->keyid);
-
- /* Detect possible key reinstallation */
-- if (sm->igtk.igtk_len == len &&
-- os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) {
-+ if ((sm->igtk.igtk_len == len &&
-+ os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) ||
-+ (sm->igtk_wnm_sleep.igtk_len == len &&
-+ os_memcmp(sm->igtk_wnm_sleep.igtk, igtk->igtk,
-+ sm->igtk_wnm_sleep.igtk_len) == 0)) {
- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
- "WPA: Not reinstalling already in-use IGTK to the driver (keyidx=%d)",
- keyidx);
-@@ -900,8 +913,14 @@ static int wpa_supplicant_install_igtk(struct wpa_sm *sm,
- return -1;
- }
-
-- sm->igtk.igtk_len = len;
-- os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len);
-+ if (wnm_sleep) {
-+ sm->igtk_wnm_sleep.igtk_len = len;
-+ os_memcpy(sm->igtk_wnm_sleep.igtk, igtk->igtk,
-+ sm->igtk_wnm_sleep.igtk_len);
-+ } else {
-+ sm->igtk.igtk_len = len;
-+ os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len);
-+ }
-
- return 0;
- }
-@@ -924,7 +943,7 @@ static int ieee80211w_set_keys(struct wpa_sm *sm,
- return -1;
-
- igtk = (const struct wpa_igtk_kde *) ie->igtk;
-- if (wpa_supplicant_install_igtk(sm, igtk) < 0)
-+ if (wpa_supplicant_install_igtk(sm, igtk, 0) < 0)
- return -1;
- }
-
-@@ -1574,7 +1593,7 @@ static void wpa_supplicant_process_1_of_2(struct wpa_sm *sm,
- if (wpa_supplicant_rsc_relaxation(sm, key->key_rsc))
- key_rsc = null_rsc;
-
-- if (wpa_supplicant_install_gtk(sm, &gd, key_rsc) ||
-+ if (wpa_supplicant_install_gtk(sm, &gd, key_rsc, 0) ||
- wpa_supplicant_send_2_of_2(sm, key, ver, key_info) < 0)
- goto failed;
- os_memset(&gd, 0, sizeof(gd));
-@@ -2386,8 +2405,10 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
- sm->tptk_set = 0;
- os_memset(&sm->tptk, 0, sizeof(sm->tptk));
- os_memset(&sm->gtk, 0, sizeof(sm->gtk));
-+ os_memset(&sm->gtk_wnm_sleep, 0, sizeof(sm->gtk_wnm_sleep));
- #ifdef CONFIG_IEEE80211W
- os_memset(&sm->igtk, 0, sizeof(sm->igtk));
-+ os_memset(&sm->igtk_wnm_sleep, 0, sizeof(sm->igtk_wnm_sleep));
- #endif /* CONFIG_IEEE80211W */
- }
-
-@@ -2920,8 +2941,10 @@ void wpa_sm_drop_sa(struct wpa_sm *sm)
- os_memset(&sm->ptk, 0, sizeof(sm->ptk));
- os_memset(&sm->tptk, 0, sizeof(sm->tptk));
- os_memset(&sm->gtk, 0, sizeof(sm->gtk));
-+ os_memset(&sm->gtk_wnm_sleep, 0, sizeof(sm->gtk_wnm_sleep));
- #ifdef CONFIG_IEEE80211W
- os_memset(&sm->igtk, 0, sizeof(sm->igtk));
-+ os_memset(&sm->igtk_wnm_sleep, 0, sizeof(sm->igtk_wnm_sleep));
- #endif /* CONFIG_IEEE80211W */
- #ifdef CONFIG_IEEE80211R
- os_memset(sm->xxkey, 0, sizeof(sm->xxkey));
-@@ -2986,7 +3009,7 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf)
-
- wpa_hexdump_key(MSG_DEBUG, "Install GTK (WNM SLEEP)",
- gd.gtk, gd.gtk_len);
-- if (wpa_supplicant_install_gtk(sm, &gd, key_rsc)) {
-+ if (wpa_supplicant_install_gtk(sm, &gd, key_rsc, 1)) {
- os_memset(&gd, 0, sizeof(gd));
- wpa_printf(MSG_DEBUG, "Failed to install the GTK in "
- "WNM mode");
-@@ -2998,7 +3021,7 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf)
- const struct wpa_igtk_kde *igtk;
-
- igtk = (const struct wpa_igtk_kde *) (buf + 2);
-- if (wpa_supplicant_install_igtk(sm, igtk) < 0)
-+ if (wpa_supplicant_install_igtk(sm, igtk, 1) < 0)
- return -1;
- #endif /* CONFIG_IEEE80211W */
- } else {
-diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
-index afc9e37..9a54631 100644
---- a/src/rsn_supp/wpa_i.h
-+++ b/src/rsn_supp/wpa_i.h
-@@ -32,8 +32,10 @@ struct wpa_sm {
- int rx_replay_counter_set;
- u8 request_counter[WPA_REPLAY_COUNTER_LEN];
- struct wpa_gtk gtk;
-+ struct wpa_gtk gtk_wnm_sleep;
- #ifdef CONFIG_IEEE80211W
- struct wpa_igtk igtk;
-+ struct wpa_igtk igtk_wnm_sleep;
- #endif /* CONFIG_IEEE80211W */
-
- struct eapol_sm *eapol; /* EAPOL state machine from upper level code */
---
-2.7.4
-
-From 8f82bc94e8697a9d47fa8774dfdaaede1084912c Mon Sep 17 00:00:00 2001
-From: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
-Date: Fri, 29 Sep 2017 04:22:51 +0200
-Subject: [PATCH 4/8] Prevent installation of an all-zero TK
-
-Properly track whether a PTK has already been installed to the driver
-and the TK part cleared from memory. This prevents an attacker from
-trying to trick the client into installing an all-zero TK.
-
-This fixes the earlier fix in commit
-ad00d64e7d8827b3cebd665a0ceb08adabf15e1e ('Fix TK configuration to the
-driver in EAPOL-Key 3/4 retry case') which did not take into account
-possibility of an extra message 1/4 showing up between retries of
-message 3/4.
-
-Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
----
- src/common/wpa_common.h | 1 +
- src/rsn_supp/wpa.c | 5 ++---
- src/rsn_supp/wpa_i.h | 1 -
- 3 files changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h
-index d200285..1021ccb 100644
---- a/src/common/wpa_common.h
-+++ b/src/common/wpa_common.h
-@@ -215,6 +215,7 @@ struct wpa_ptk {
- size_t kck_len;
- size_t kek_len;
- size_t tk_len;
-+ int installed; /* 1 if key has already been installed to driver */
- };
-
- struct wpa_gtk {
-diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
-index 7a2c68d..0550a41 100644
---- a/src/rsn_supp/wpa.c
-+++ b/src/rsn_supp/wpa.c
-@@ -510,7 +510,6 @@ static void wpa_supplicant_process_1_of_4(struct wpa_sm *sm,
- os_memset(buf, 0, sizeof(buf));
- }
- sm->tptk_set = 1;
-- sm->tk_to_set = 1;
-
- kde = sm->assoc_wpa_ie;
- kde_len = sm->assoc_wpa_ie_len;
-@@ -615,7 +614,7 @@ static int wpa_supplicant_install_ptk(struct wpa_sm *sm,
- enum wpa_alg alg;
- const u8 *key_rsc;
-
-- if (!sm->tk_to_set) {
-+ if (sm->ptk.installed) {
- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
- "WPA: Do not re-install same PTK to the driver");
- return 0;
-@@ -659,7 +658,7 @@ static int wpa_supplicant_install_ptk(struct wpa_sm *sm,
-
- /* TK is not needed anymore in supplicant */
- os_memset(sm->ptk.tk, 0, WPA_TK_MAX_LEN);
-- sm->tk_to_set = 0;
-+ sm->ptk.installed = 1;
-
- if (sm->wpa_ptk_rekey) {
- eloop_cancel_timeout(wpa_sm_rekey_ptk, sm, NULL);
-diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
-index 9a54631..41f371f 100644
---- a/src/rsn_supp/wpa_i.h
-+++ b/src/rsn_supp/wpa_i.h
-@@ -24,7 +24,6 @@ struct wpa_sm {
- struct wpa_ptk ptk, tptk;
- int ptk_set, tptk_set;
- unsigned int msg_3_of_4_ok:1;
-- unsigned int tk_to_set:1;
- u8 snonce[WPA_NONCE_LEN];
- u8 anonce[WPA_NONCE_LEN]; /* ANonce from the last 1/4 msg */
- int renew_snonce;
---
-2.7.4
-
-From 12fac09b437a1dc8a0f253e265934a8aaf4d2f8b Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <j@w1.fi>
-Date: Sun, 1 Oct 2017 12:32:57 +0300
-Subject: [PATCH 5/8] Fix PTK rekeying to generate a new ANonce
-
-The Authenticator state machine path for PTK rekeying ended up bypassing
-the AUTHENTICATION2 state where a new ANonce is generated when going
-directly to the PTKSTART state since there is no need to try to
-determine the PMK again in such a case. This is far from ideal since the
-new PTK would depend on a new nonce only from the supplicant.
-
-Fix this by generating a new ANonce when moving to the PTKSTART state
-for the purpose of starting new 4-way handshake to rekey PTK.
-
-Signed-off-by: Jouni Malinen <j@w1.fi>
----
- src/ap/wpa_auth.c | 24 +++++++++++++++++++++---
- 1 file changed, 21 insertions(+), 3 deletions(-)
-
-diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c
-index 707971d..bf10cc1 100644
---- a/src/ap/wpa_auth.c
-+++ b/src/ap/wpa_auth.c
-@@ -1901,6 +1901,21 @@ SM_STATE(WPA_PTK, AUTHENTICATION2)
- }
-
-
-+static int wpa_auth_sm_ptk_update(struct wpa_state_machine *sm)
-+{
-+ if (random_get_bytes(sm->ANonce, WPA_NONCE_LEN)) {
-+ wpa_printf(MSG_ERROR,
-+ "WPA: Failed to get random data for ANonce");
-+ sm->Disconnect = TRUE;
-+ return -1;
-+ }
-+ wpa_hexdump(MSG_DEBUG, "WPA: Assign new ANonce", sm->ANonce,
-+ WPA_NONCE_LEN);
-+ sm->TimeoutCtr = 0;
-+ return 0;
-+}
-+
-+
- SM_STATE(WPA_PTK, INITPMK)
- {
- u8 msk[2 * PMK_LEN];
-@@ -2458,9 +2473,12 @@ SM_STEP(WPA_PTK)
- SM_ENTER(WPA_PTK, AUTHENTICATION);
- else if (sm->ReAuthenticationRequest)
- SM_ENTER(WPA_PTK, AUTHENTICATION2);
-- else if (sm->PTKRequest)
-- SM_ENTER(WPA_PTK, PTKSTART);
-- else switch (sm->wpa_ptk_state) {
-+ else if (sm->PTKRequest) {
-+ if (wpa_auth_sm_ptk_update(sm) < 0)
-+ SM_ENTER(WPA_PTK, DISCONNECTED);
-+ else
-+ SM_ENTER(WPA_PTK, PTKSTART);
-+ } else switch (sm->wpa_ptk_state) {
- case WPA_PTK_INITIALIZE:
- break;
- case WPA_PTK_DISCONNECT:
---
-2.7.4
-
-From 6c4bed4f47d1960ec04981a9d50e5076aea5223d Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <j@w1.fi>
-Date: Fri, 22 Sep 2017 11:03:15 +0300
-Subject: [PATCH 6/8] TDLS: Reject TPK-TK reconfiguration
-
-Do not try to reconfigure the same TPK-TK to the driver after it has
-been successfully configured. This is an explicit check to avoid issues
-related to resetting the TX/RX packet number. There was already a check
-for this for TPK M2 (retries of that message are ignored completely), so
-that behavior does not get modified.
-
-For TPK M3, the TPK-TK could have been reconfigured, but that was
-followed by immediate teardown of the link due to an issue in updating
-the STA entry. Furthermore, for TDLS with any real security (i.e.,
-ignoring open/WEP), the TPK message exchange is protected on the AP path
-and simple replay attacks are not feasible.
-
-As an additional corner case, make sure the local nonce gets updated if
-the peer uses a very unlikely "random nonce" of all zeros.
-
-Signed-off-by: Jouni Malinen <j@w1.fi>
----
- src/rsn_supp/tdls.c | 38 ++++++++++++++++++++++++++++++++++++--
- 1 file changed, 36 insertions(+), 2 deletions(-)
-
-diff --git a/src/rsn_supp/tdls.c b/src/rsn_supp/tdls.c
-index e424168..9eb9738 100644
---- a/src/rsn_supp/tdls.c
-+++ b/src/rsn_supp/tdls.c
-@@ -112,6 +112,7 @@ struct wpa_tdls_peer {
- u8 tk[16]; /* TPK-TK; assuming only CCMP will be used */
- } tpk;
- int tpk_set;
-+ int tk_set; /* TPK-TK configured to the driver */
- int tpk_success;
- int tpk_in_progress;
-
-@@ -192,6 +193,20 @@ static int wpa_tdls_set_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
- u8 rsc[6];
- enum wpa_alg alg;
-
-+ if (peer->tk_set) {
-+ /*
-+ * This same TPK-TK has already been configured to the driver
-+ * and this new configuration attempt (likely due to an
-+ * unexpected retransmitted frame) would result in clearing
-+ * the TX/RX sequence number which can break security, so must
-+ * not allow that to happen.
-+ */
-+ wpa_printf(MSG_INFO, "TDLS: TPK-TK for the peer " MACSTR
-+ " has already been configured to the driver - do not reconfigure",
-+ MAC2STR(peer->addr));
-+ return -1;
-+ }
-+
- os_memset(rsc, 0, 6);
-
- switch (peer->cipher) {
-@@ -209,12 +224,15 @@ static int wpa_tdls_set_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
- return -1;
- }
-
-+ wpa_printf(MSG_DEBUG, "TDLS: Configure pairwise key for peer " MACSTR,
-+ MAC2STR(peer->addr));
- if (wpa_sm_set_key(sm, alg, peer->addr, -1, 1,
- rsc, sizeof(rsc), peer->tpk.tk, key_len) < 0) {
- wpa_printf(MSG_WARNING, "TDLS: Failed to set TPK to the "
- "driver");
- return -1;
- }
-+ peer->tk_set = 1;
- return 0;
- }
-
-@@ -696,7 +714,7 @@ static void wpa_tdls_peer_clear(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
- peer->cipher = 0;
- peer->qos_info = 0;
- peer->wmm_capable = 0;
-- peer->tpk_set = peer->tpk_success = 0;
-+ peer->tk_set = peer->tpk_set = peer->tpk_success = 0;
- peer->chan_switch_enabled = 0;
- os_memset(&peer->tpk, 0, sizeof(peer->tpk));
- os_memset(peer->inonce, 0, WPA_NONCE_LEN);
-@@ -1159,6 +1177,7 @@ skip_rsnie:
- wpa_tdls_peer_free(sm, peer);
- return -1;
- }
-+ peer->tk_set = 0; /* A new nonce results in a new TK */
- wpa_hexdump(MSG_DEBUG, "TDLS: Initiator Nonce for TPK handshake",
- peer->inonce, WPA_NONCE_LEN);
- os_memcpy(ftie->Snonce, peer->inonce, WPA_NONCE_LEN);
-@@ -1751,6 +1770,19 @@ static int wpa_tdls_addset_peer(struct wpa_sm *sm, struct wpa_tdls_peer *peer,
- }
-
-
-+static int tdls_nonce_set(const u8 *nonce)
-+{
-+ int i;
-+
-+ for (i = 0; i < WPA_NONCE_LEN; i++) {
-+ if (nonce[i])
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
-+
- static int wpa_tdls_process_tpk_m1(struct wpa_sm *sm, const u8 *src_addr,
- const u8 *buf, size_t len)
- {
-@@ -2004,7 +2036,8 @@ skip_rsn:
- peer->rsnie_i_len = kde.rsn_ie_len;
- peer->cipher = cipher;
-
-- if (os_memcmp(peer->inonce, ftie->Snonce, WPA_NONCE_LEN) != 0) {
-+ if (os_memcmp(peer->inonce, ftie->Snonce, WPA_NONCE_LEN) != 0 ||
-+ !tdls_nonce_set(peer->inonce)) {
- /*
- * There is no point in updating the RNonce for every obtained
- * TPK M1 frame (e.g., retransmission due to timeout) with the
-@@ -2020,6 +2053,7 @@ skip_rsn:
- "TDLS: Failed to get random data for responder nonce");
- goto error;
- }
-+ peer->tk_set = 0; /* A new nonce results in a new TK */
- }
-
- #if 0
---
-2.7.4
-
-From 53c5eb58e95004f86e65ee9fbfccbc291b139057 Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <j@w1.fi>
-Date: Fri, 22 Sep 2017 11:25:02 +0300
-Subject: [PATCH 7/8] WNM: Ignore WNM-Sleep Mode Response without pending
- request
-
-Commit 03ed0a52393710be6bdae657d1b36efa146520e5 ('WNM: Ignore WNM-Sleep
-Mode Response if WNM-Sleep Mode has not been used') started ignoring the
-response when no WNM-Sleep Mode Request had been used during the
-association. This can be made tighter by clearing the used flag when
-successfully processing a response. This adds an additional layer of
-protection against unexpected retransmissions of the response frame.
-
-Signed-off-by: Jouni Malinen <j@w1.fi>
----
- wpa_supplicant/wnm_sta.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/wpa_supplicant/wnm_sta.c b/wpa_supplicant/wnm_sta.c
-index 1b3409c..67a07ff 100644
---- a/wpa_supplicant/wnm_sta.c
-+++ b/wpa_supplicant/wnm_sta.c
-@@ -260,7 +260,7 @@ static void ieee802_11_rx_wnmsleep_resp(struct wpa_supplicant *wpa_s,
-
- if (!wpa_s->wnmsleep_used) {
- wpa_printf(MSG_DEBUG,
-- "WNM: Ignore WNM-Sleep Mode Response frame since WNM-Sleep Mode has not been used in this association");
-+ "WNM: Ignore WNM-Sleep Mode Response frame since WNM-Sleep Mode operation has not been requested");
- return;
- }
-
-@@ -299,6 +299,8 @@ static void ieee802_11_rx_wnmsleep_resp(struct wpa_supplicant *wpa_s,
- return;
- }
-
-+ wpa_s->wnmsleep_used = 0;
-+
- if (wnmsleep_ie->status == WNM_STATUS_SLEEP_ACCEPT ||
- wnmsleep_ie->status == WNM_STATUS_SLEEP_EXIT_ACCEPT_GTK_UPDATE) {
- wpa_printf(MSG_DEBUG, "Successfully recv WNM-Sleep Response "
---
-2.7.4
-
-From b372ab0b7daea719749194dc554b26e6367603f2 Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <j@w1.fi>
-Date: Fri, 22 Sep 2017 12:06:37 +0300
-Subject: [PATCH 8/8] FT: Do not allow multiple Reassociation Response frames
-
-The driver is expected to not report a second association event without
-the station having explicitly request a new association. As such, this
-case should not be reachable. However, since reconfiguring the same
-pairwise or group keys to the driver could result in nonce reuse issues,
-be extra careful here and do an additional state check to avoid this
-even if the local driver ends up somehow accepting an unexpected
-Reassociation Response frame.
-
-Signed-off-by: Jouni Malinen <j@w1.fi>
----
- src/rsn_supp/wpa.c | 3 +++
- src/rsn_supp/wpa_ft.c | 8 ++++++++
- src/rsn_supp/wpa_i.h | 1 +
- 3 files changed, 12 insertions(+)
-
-diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
-index 0550a41..2a53c6f 100644
---- a/src/rsn_supp/wpa.c
-+++ b/src/rsn_supp/wpa.c
-@@ -2440,6 +2440,9 @@ void wpa_sm_notify_disassoc(struct wpa_sm *sm)
- #ifdef CONFIG_TDLS
- wpa_tdls_disassoc(sm);
- #endif /* CONFIG_TDLS */
-+#ifdef CONFIG_IEEE80211R
-+ sm->ft_reassoc_completed = 0;
-+#endif /* CONFIG_IEEE80211R */
-
- /* Keys are not needed in the WPA state machine anymore */
- wpa_sm_drop_sa(sm);
-diff --git a/src/rsn_supp/wpa_ft.c b/src/rsn_supp/wpa_ft.c
-index 205793e..d45bb45 100644
---- a/src/rsn_supp/wpa_ft.c
-+++ b/src/rsn_supp/wpa_ft.c
-@@ -153,6 +153,7 @@ static u8 * wpa_ft_gen_req_ies(struct wpa_sm *sm, size_t *len,
- u16 capab;
-
- sm->ft_completed = 0;
-+ sm->ft_reassoc_completed = 0;
-
- buf_len = 2 + sizeof(struct rsn_mdie) + 2 + sizeof(struct rsn_ftie) +
- 2 + sm->r0kh_id_len + ric_ies_len + 100;
-@@ -681,6 +682,11 @@ int wpa_ft_validate_reassoc_resp(struct wpa_sm *sm, const u8 *ies,
- return -1;
- }
-
-+ if (sm->ft_reassoc_completed) {
-+ wpa_printf(MSG_DEBUG, "FT: Reassociation has already been completed for this FT protocol instance - ignore unexpected retransmission");
-+ return 0;
-+ }
-+
- if (wpa_ft_parse_ies(ies, ies_len, &parse) < 0) {
- wpa_printf(MSG_DEBUG, "FT: Failed to parse IEs");
- return -1;
-@@ -781,6 +787,8 @@ int wpa_ft_validate_reassoc_resp(struct wpa_sm *sm, const u8 *ies,
- return -1;
- }
-
-+ sm->ft_reassoc_completed = 1;
-+
- if (wpa_ft_process_gtk_subelem(sm, parse.gtk, parse.gtk_len) < 0)
- return -1;
-
-diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
-index 41f371f..56f88dc 100644
---- a/src/rsn_supp/wpa_i.h
-+++ b/src/rsn_supp/wpa_i.h
-@@ -128,6 +128,7 @@ struct wpa_sm {
- size_t r0kh_id_len;
- u8 r1kh_id[FT_R1KH_ID_LEN];
- int ft_completed;
-+ int ft_reassoc_completed;
- int over_the_ds_in_progress;
- u8 target_ap[ETH_ALEN]; /* over-the-DS target AP */
- int set_ptk_after_assoc;
---
-2.7.4
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple1.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple1.patch
new file mode 100644
index 00000000000..d4d49e7fca1
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple1.patch
@@ -0,0 +1,191 @@
+The WPA2 four-way handshake protocol is vulnerable to replay attacks which can
+result in unauthenticated clients gaining access to the network.
+
+Backport a number of patches from upstream to fix this.
+
+CVE: CVE-2017-13077
+CVE: CVE-2017-13078
+CVE: CVE-2017-13079
+CVE: CVE-2017-13080
+CVE: CVE-2017-13081
+CVE: CVE-2017-13082
+CVE: CVE-2017-13086
+CVE: CVE-2017-13087
+CVE: CVE-2017-13088
+
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From cf4cab804c7afd5c45505528a8d16e46163243a2 Mon Sep 17 00:00:00 2001
+From: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
+Date: Fri, 14 Jul 2017 15:15:35 +0200
+Subject: [PATCH 1/8] hostapd: Avoid key reinstallation in FT handshake
+
+Do not reinstall TK to the driver during Reassociation Response frame
+processing if the first attempt of setting the TK succeeded. This avoids
+issues related to clearing the TX/RX PN that could result in reusing
+same PN values for transmitted frames (e.g., due to CCM nonce reuse and
+also hitting replay protection on the receiver) and accepting replayed
+frames on RX side.
+
+This issue was introduced by the commit
+0e84c25434e6a1f283c7b4e62e483729085b78d2 ('FT: Fix PTK configuration in
+authenticator') which allowed wpa_ft_install_ptk() to be called multiple
+times with the same PTK. While the second configuration attempt is
+needed with some drivers, it must be done only if the first attempt
+failed.
+
+Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
+---
+ src/ap/ieee802_11.c | 16 +++++++++++++---
+ src/ap/wpa_auth.c | 11 +++++++++++
+ src/ap/wpa_auth.h | 3 ++-
+ src/ap/wpa_auth_ft.c | 10 ++++++++++
+ src/ap/wpa_auth_i.h | 1 +
+ 5 files changed, 37 insertions(+), 4 deletions(-)
+
+diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
+index 4e04169..333035f 100644
+--- a/src/ap/ieee802_11.c
++++ b/src/ap/ieee802_11.c
+@@ -1841,6 +1841,7 @@ static int add_associated_sta(struct hostapd_data *hapd,
+ {
+ struct ieee80211_ht_capabilities ht_cap;
+ struct ieee80211_vht_capabilities vht_cap;
++ int set = 1;
+
+ /*
+ * Remove the STA entry to ensure the STA PS state gets cleared and
+@@ -1848,9 +1849,18 @@ static int add_associated_sta(struct hostapd_data *hapd,
+ * FT-over-the-DS, where a station re-associates back to the same AP but
+ * skips the authentication flow, or if working with a driver that
+ * does not support full AP client state.
++ *
++ * Skip this if the STA has already completed FT reassociation and the
++ * TK has been configured since the TX/RX PN must not be reset to 0 for
++ * the same key.
+ */
+- if (!sta->added_unassoc)
++ if (!sta->added_unassoc &&
++ (!(sta->flags & WLAN_STA_AUTHORIZED) ||
++ !wpa_auth_sta_ft_tk_already_set(sta->wpa_sm))) {
+ hostapd_drv_sta_remove(hapd, sta->addr);
++ wpa_auth_sm_event(sta->wpa_sm, WPA_DRV_STA_REMOVED);
++ set = 0;
++ }
+
+ #ifdef CONFIG_IEEE80211N
+ if (sta->flags & WLAN_STA_HT)
+@@ -1873,11 +1883,11 @@ static int add_associated_sta(struct hostapd_data *hapd,
+ sta->flags & WLAN_STA_VHT ? &vht_cap : NULL,
+ sta->flags | WLAN_STA_ASSOC, sta->qosinfo,
+ sta->vht_opmode, sta->p2p_ie ? 1 : 0,
+- sta->added_unassoc)) {
++ set)) {
+ hostapd_logger(hapd, sta->addr,
+ HOSTAPD_MODULE_IEEE80211, HOSTAPD_LEVEL_NOTICE,
+ "Could not %s STA to kernel driver",
+- sta->added_unassoc ? "set" : "add");
++ set ? "set" : "add");
+
+ if (sta->added_unassoc) {
+ hostapd_drv_sta_remove(hapd, sta->addr);
+diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c
+index 3587086..707971d 100644
+--- a/src/ap/wpa_auth.c
++++ b/src/ap/wpa_auth.c
+@@ -1745,6 +1745,9 @@ int wpa_auth_sm_event(struct wpa_state_machine *sm, enum wpa_event event)
+ #else /* CONFIG_IEEE80211R */
+ break;
+ #endif /* CONFIG_IEEE80211R */
++ case WPA_DRV_STA_REMOVED:
++ sm->tk_already_set = FALSE;
++ return 0;
+ }
+
+ #ifdef CONFIG_IEEE80211R
+@@ -3250,6 +3253,14 @@ int wpa_auth_sta_wpa_version(struct wpa_state_machine *sm)
+ }
+
+
++int wpa_auth_sta_ft_tk_already_set(struct wpa_state_machine *sm)
++{
++ if (!sm || !wpa_key_mgmt_ft(sm->wpa_key_mgmt))
++ return 0;
++ return sm->tk_already_set;
++}
++
++
+ int wpa_auth_sta_clear_pmksa(struct wpa_state_machine *sm,
+ struct rsn_pmksa_cache_entry *entry)
+ {
+diff --git a/src/ap/wpa_auth.h b/src/ap/wpa_auth.h
+index 0de8d97..97461b0 100644
+--- a/src/ap/wpa_auth.h
++++ b/src/ap/wpa_auth.h
+@@ -267,7 +267,7 @@ void wpa_receive(struct wpa_authenticator *wpa_auth,
+ u8 *data, size_t data_len);
+ enum wpa_event {
+ WPA_AUTH, WPA_ASSOC, WPA_DISASSOC, WPA_DEAUTH, WPA_REAUTH,
+- WPA_REAUTH_EAPOL, WPA_ASSOC_FT
++ WPA_REAUTH_EAPOL, WPA_ASSOC_FT, WPA_DRV_STA_REMOVED
+ };
+ void wpa_remove_ptk(struct wpa_state_machine *sm);
+ int wpa_auth_sm_event(struct wpa_state_machine *sm, enum wpa_event event);
+@@ -280,6 +280,7 @@ int wpa_auth_pairwise_set(struct wpa_state_machine *sm);
+ int wpa_auth_get_pairwise(struct wpa_state_machine *sm);
+ int wpa_auth_sta_key_mgmt(struct wpa_state_machine *sm);
+ int wpa_auth_sta_wpa_version(struct wpa_state_machine *sm);
++int wpa_auth_sta_ft_tk_already_set(struct wpa_state_machine *sm);
+ int wpa_auth_sta_clear_pmksa(struct wpa_state_machine *sm,
+ struct rsn_pmksa_cache_entry *entry);
+ struct rsn_pmksa_cache_entry *
+diff --git a/src/ap/wpa_auth_ft.c b/src/ap/wpa_auth_ft.c
+index 42242a5..e63b99a 100644
+--- a/src/ap/wpa_auth_ft.c
++++ b/src/ap/wpa_auth_ft.c
+@@ -780,6 +780,14 @@ void wpa_ft_install_ptk(struct wpa_state_machine *sm)
+ return;
+ }
+
++ if (sm->tk_already_set) {
++ /* Must avoid TK reconfiguration to prevent clearing of TX/RX
++ * PN in the driver */
++ wpa_printf(MSG_DEBUG,
++ "FT: Do not re-install same PTK to the driver");
++ return;
++ }
++
+ /* FIX: add STA entry to kernel/driver here? The set_key will fail
+ * most likely without this.. At the moment, STA entry is added only
+ * after association has been completed. This function will be called
+@@ -792,6 +800,7 @@ void wpa_ft_install_ptk(struct wpa_state_machine *sm)
+
+ /* FIX: MLME-SetProtection.Request(TA, Tx_Rx) */
+ sm->pairwise_set = TRUE;
++ sm->tk_already_set = TRUE;
+ }
+
+
+@@ -898,6 +907,7 @@ static int wpa_ft_process_auth_req(struct wpa_state_machine *sm,
+
+ sm->pairwise = pairwise;
+ sm->PTK_valid = TRUE;
++ sm->tk_already_set = FALSE;
+ wpa_ft_install_ptk(sm);
+
+ buflen = 2 + sizeof(struct rsn_mdie) + 2 + sizeof(struct rsn_ftie) +
+diff --git a/src/ap/wpa_auth_i.h b/src/ap/wpa_auth_i.h
+index 72b7eb3..7fd8f05 100644
+--- a/src/ap/wpa_auth_i.h
++++ b/src/ap/wpa_auth_i.h
+@@ -65,6 +65,7 @@ struct wpa_state_machine {
+ struct wpa_ptk PTK;
+ Boolean PTK_valid;
+ Boolean pairwise_set;
++ Boolean tk_already_set;
+ int keycount;
+ Boolean Pair;
+ struct wpa_key_replay_counter {
+--
+2.7.4 \ No newline at end of file
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple2.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple2.patch
new file mode 100644
index 00000000000..501bb4b56b8
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple2.patch
@@ -0,0 +1,267 @@
+The WPA2 four-way handshake protocol is vulnerable to replay attacks which can
+result in unauthenticated clients gaining access to the network.
+
+Backport a number of patches from upstream to fix this.
+
+CVE: CVE-2017-13077
+CVE: CVE-2017-13078
+CVE: CVE-2017-13079
+CVE: CVE-2017-13080
+CVE: CVE-2017-13081
+CVE: CVE-2017-13082
+CVE: CVE-2017-13086
+CVE: CVE-2017-13087
+CVE: CVE-2017-13088
+
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From 927f891007c402fefd1ff384645b3f07597c3ede Mon Sep 17 00:00:00 2001
+From: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
+Date: Wed, 12 Jul 2017 16:03:24 +0200
+Subject: [PATCH 2/8] Prevent reinstallation of an already in-use group key
+
+Track the current GTK and IGTK that is in use and when receiving a
+(possibly retransmitted) Group Message 1 or WNM-Sleep Mode Response, do
+not install the given key if it is already in use. This prevents an
+attacker from trying to trick the client into resetting or lowering the
+sequence counter associated to the group key.
+
+Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
+---
+ src/common/wpa_common.h | 11 +++++
+ src/rsn_supp/wpa.c | 116 ++++++++++++++++++++++++++++++------------------
+ src/rsn_supp/wpa_i.h | 4 ++
+ 3 files changed, 87 insertions(+), 44 deletions(-)
+
+diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h
+index af1d0f0..d200285 100644
+--- a/src/common/wpa_common.h
++++ b/src/common/wpa_common.h
+@@ -217,6 +217,17 @@ struct wpa_ptk {
+ size_t tk_len;
+ };
+
++struct wpa_gtk {
++ u8 gtk[WPA_GTK_MAX_LEN];
++ size_t gtk_len;
++};
++
++#ifdef CONFIG_IEEE80211W
++struct wpa_igtk {
++ u8 igtk[WPA_IGTK_MAX_LEN];
++ size_t igtk_len;
++};
++#endif /* CONFIG_IEEE80211W */
+
+ /* WPA IE version 1
+ * 00-50-f2:1 (OUI:OUI type)
+diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
+index 3c47879..95bd7be 100644
+--- a/src/rsn_supp/wpa.c
++++ b/src/rsn_supp/wpa.c
+@@ -714,6 +714,15 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
+ const u8 *_gtk = gd->gtk;
+ u8 gtk_buf[32];
+
++ /* Detect possible key reinstallation */
++ if (sm->gtk.gtk_len == (size_t) gd->gtk_len &&
++ os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) {
++ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
++ "WPA: Not reinstalling already in-use GTK to the driver (keyidx=%d tx=%d len=%d)",
++ gd->keyidx, gd->tx, gd->gtk_len);
++ return 0;
++ }
++
+ wpa_hexdump_key(MSG_DEBUG, "WPA: Group Key", gd->gtk, gd->gtk_len);
+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
+ "WPA: Installing GTK to the driver (keyidx=%d tx=%d len=%d)",
+@@ -748,6 +757,9 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
+ }
+ os_memset(gtk_buf, 0, sizeof(gtk_buf));
+
++ sm->gtk.gtk_len = gd->gtk_len;
++ os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len);
++
+ return 0;
+ }
+
+@@ -854,6 +866,48 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm,
+ }
+
+
++#ifdef CONFIG_IEEE80211W
++static int wpa_supplicant_install_igtk(struct wpa_sm *sm,
++ const struct wpa_igtk_kde *igtk)
++{
++ size_t len = wpa_cipher_key_len(sm->mgmt_group_cipher);
++ u16 keyidx = WPA_GET_LE16(igtk->keyid);
++
++ /* Detect possible key reinstallation */
++ if (sm->igtk.igtk_len == len &&
++ os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) {
++ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
++ "WPA: Not reinstalling already in-use IGTK to the driver (keyidx=%d)",
++ keyidx);
++ return 0;
++ }
++
++ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
++ "WPA: IGTK keyid %d pn %02x%02x%02x%02x%02x%02x",
++ keyidx, MAC2STR(igtk->pn));
++ wpa_hexdump_key(MSG_DEBUG, "WPA: IGTK", igtk->igtk, len);
++ if (keyidx > 4095) {
++ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
++ "WPA: Invalid IGTK KeyID %d", keyidx);
++ return -1;
++ }
++ if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher),
++ broadcast_ether_addr,
++ keyidx, 0, igtk->pn, sizeof(igtk->pn),
++ igtk->igtk, len) < 0) {
++ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
++ "WPA: Failed to configure IGTK to the driver");
++ return -1;
++ }
++
++ sm->igtk.igtk_len = len;
++ os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len);
++
++ return 0;
++}
++#endif /* CONFIG_IEEE80211W */
++
++
+ static int ieee80211w_set_keys(struct wpa_sm *sm,
+ struct wpa_eapol_ie_parse *ie)
+ {
+@@ -864,30 +918,14 @@ static int ieee80211w_set_keys(struct wpa_sm *sm,
+ if (ie->igtk) {
+ size_t len;
+ const struct wpa_igtk_kde *igtk;
+- u16 keyidx;
++
+ len = wpa_cipher_key_len(sm->mgmt_group_cipher);
+ if (ie->igtk_len != WPA_IGTK_KDE_PREFIX_LEN + len)
+ return -1;
++
+ igtk = (const struct wpa_igtk_kde *) ie->igtk;
+- keyidx = WPA_GET_LE16(igtk->keyid);
+- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, "WPA: IGTK keyid %d "
+- "pn %02x%02x%02x%02x%02x%02x",
+- keyidx, MAC2STR(igtk->pn));
+- wpa_hexdump_key(MSG_DEBUG, "WPA: IGTK",
+- igtk->igtk, len);
+- if (keyidx > 4095) {
+- wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
+- "WPA: Invalid IGTK KeyID %d", keyidx);
+- return -1;
+- }
+- if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher),
+- broadcast_ether_addr,
+- keyidx, 0, igtk->pn, sizeof(igtk->pn),
+- igtk->igtk, len) < 0) {
+- wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
+- "WPA: Failed to configure IGTK to the driver");
++ if (wpa_supplicant_install_igtk(sm, igtk) < 0)
+ return -1;
+- }
+ }
+
+ return 0;
+@@ -2307,7 +2345,7 @@ void wpa_sm_deinit(struct wpa_sm *sm)
+ */
+ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
+ {
+- int clear_ptk = 1;
++ int clear_keys = 1;
+
+ if (sm == NULL)
+ return;
+@@ -2333,11 +2371,11 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
+ /* Prepare for the next transition */
+ wpa_ft_prepare_auth_request(sm, NULL);
+
+- clear_ptk = 0;
++ clear_keys = 0;
+ }
+ #endif /* CONFIG_IEEE80211R */
+
+- if (clear_ptk) {
++ if (clear_keys) {
+ /*
+ * IEEE 802.11, 8.4.10: Delete PTK SA on (re)association if
+ * this is not part of a Fast BSS Transition.
+@@ -2347,6 +2385,10 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
+ os_memset(&sm->ptk, 0, sizeof(sm->ptk));
+ sm->tptk_set = 0;
+ os_memset(&sm->tptk, 0, sizeof(sm->tptk));
++ os_memset(&sm->gtk, 0, sizeof(sm->gtk));
++#ifdef CONFIG_IEEE80211W
++ os_memset(&sm->igtk, 0, sizeof(sm->igtk));
++#endif /* CONFIG_IEEE80211W */
+ }
+
+ #ifdef CONFIG_TDLS
+@@ -2877,6 +2919,10 @@ void wpa_sm_drop_sa(struct wpa_sm *sm)
+ os_memset(sm->pmk, 0, sizeof(sm->pmk));
+ os_memset(&sm->ptk, 0, sizeof(sm->ptk));
+ os_memset(&sm->tptk, 0, sizeof(sm->tptk));
++ os_memset(&sm->gtk, 0, sizeof(sm->gtk));
++#ifdef CONFIG_IEEE80211W
++ os_memset(&sm->igtk, 0, sizeof(sm->igtk));
++#endif /* CONFIG_IEEE80211W */
+ #ifdef CONFIG_IEEE80211R
+ os_memset(sm->xxkey, 0, sizeof(sm->xxkey));
+ os_memset(sm->pmk_r0, 0, sizeof(sm->pmk_r0));
+@@ -2949,29 +2995,11 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf)
+ os_memset(&gd, 0, sizeof(gd));
+ #ifdef CONFIG_IEEE80211W
+ } else if (subelem_id == WNM_SLEEP_SUBELEM_IGTK) {
+- struct wpa_igtk_kde igd;
+- u16 keyidx;
+-
+- os_memset(&igd, 0, sizeof(igd));
+- keylen = wpa_cipher_key_len(sm->mgmt_group_cipher);
+- os_memcpy(igd.keyid, buf + 2, 2);
+- os_memcpy(igd.pn, buf + 4, 6);
+-
+- keyidx = WPA_GET_LE16(igd.keyid);
+- os_memcpy(igd.igtk, buf + 10, keylen);
+-
+- wpa_hexdump_key(MSG_DEBUG, "Install IGTK (WNM SLEEP)",
+- igd.igtk, keylen);
+- if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher),
+- broadcast_ether_addr,
+- keyidx, 0, igd.pn, sizeof(igd.pn),
+- igd.igtk, keylen) < 0) {
+- wpa_printf(MSG_DEBUG, "Failed to install the IGTK in "
+- "WNM mode");
+- os_memset(&igd, 0, sizeof(igd));
++ const struct wpa_igtk_kde *igtk;
++
++ igtk = (const struct wpa_igtk_kde *) (buf + 2);
++ if (wpa_supplicant_install_igtk(sm, igtk) < 0)
+ return -1;
+- }
+- os_memset(&igd, 0, sizeof(igd));
+ #endif /* CONFIG_IEEE80211W */
+ } else {
+ wpa_printf(MSG_DEBUG, "Unknown element id");
+diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
+index f653ba6..afc9e37 100644
+--- a/src/rsn_supp/wpa_i.h
++++ b/src/rsn_supp/wpa_i.h
+@@ -31,6 +31,10 @@ struct wpa_sm {
+ u8 rx_replay_counter[WPA_REPLAY_COUNTER_LEN];
+ int rx_replay_counter_set;
+ u8 request_counter[WPA_REPLAY_COUNTER_LEN];
++ struct wpa_gtk gtk;
++#ifdef CONFIG_IEEE80211W
++ struct wpa_igtk igtk;
++#endif /* CONFIG_IEEE80211W */
+
+ struct eapol_sm *eapol; /* EAPOL state machine from upper level code */
+
+--
+2.7.4 \ No newline at end of file
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple3.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple3.patch
new file mode 100644
index 00000000000..2e226558510
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple3.patch
@@ -0,0 +1,201 @@
+The WPA2 four-way handshake protocol is vulnerable to replay attacks which can
+result in unauthenticated clients gaining access to the network.
+
+Backport a number of patches from upstream to fix this.
+
+CVE: CVE-2017-13077
+CVE: CVE-2017-13078
+CVE: CVE-2017-13079
+CVE: CVE-2017-13080
+CVE: CVE-2017-13081
+CVE: CVE-2017-13082
+CVE: CVE-2017-13086
+CVE: CVE-2017-13087
+CVE: CVE-2017-13088
+
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From 8280294e74846ea342389a0cd17215050fa5afe8 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Sun, 1 Oct 2017 12:12:24 +0300
+Subject: [PATCH 3/8] Extend protection of GTK/IGTK reinstallation of WNM-Sleep
+ Mode cases
+
+This extends the protection to track last configured GTK/IGTK value
+separately from EAPOL-Key frames and WNM-Sleep Mode frames to cover a
+corner case where these two different mechanisms may get used when the
+GTK/IGTK has changed and tracking a single value is not sufficient to
+detect a possible key reconfiguration.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ src/rsn_supp/wpa.c | 53 +++++++++++++++++++++++++++++++++++++---------------
+ src/rsn_supp/wpa_i.h | 2 ++
+ 2 files changed, 40 insertions(+), 15 deletions(-)
+
+diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
+index 95bd7be..7a2c68d 100644
+--- a/src/rsn_supp/wpa.c
++++ b/src/rsn_supp/wpa.c
+@@ -709,14 +709,17 @@ struct wpa_gtk_data {
+
+ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
+ const struct wpa_gtk_data *gd,
+- const u8 *key_rsc)
++ const u8 *key_rsc, int wnm_sleep)
+ {
+ const u8 *_gtk = gd->gtk;
+ u8 gtk_buf[32];
+
+ /* Detect possible key reinstallation */
+- if (sm->gtk.gtk_len == (size_t) gd->gtk_len &&
+- os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) {
++ if ((sm->gtk.gtk_len == (size_t) gd->gtk_len &&
++ os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) ||
++ (sm->gtk_wnm_sleep.gtk_len == (size_t) gd->gtk_len &&
++ os_memcmp(sm->gtk_wnm_sleep.gtk, gd->gtk,
++ sm->gtk_wnm_sleep.gtk_len) == 0)) {
+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
+ "WPA: Not reinstalling already in-use GTK to the driver (keyidx=%d tx=%d len=%d)",
+ gd->keyidx, gd->tx, gd->gtk_len);
+@@ -757,8 +760,14 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
+ }
+ os_memset(gtk_buf, 0, sizeof(gtk_buf));
+
+- sm->gtk.gtk_len = gd->gtk_len;
+- os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len);
++ if (wnm_sleep) {
++ sm->gtk_wnm_sleep.gtk_len = gd->gtk_len;
++ os_memcpy(sm->gtk_wnm_sleep.gtk, gd->gtk,
++ sm->gtk_wnm_sleep.gtk_len);
++ } else {
++ sm->gtk.gtk_len = gd->gtk_len;
++ os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len);
++ }
+
+ return 0;
+ }
+@@ -852,7 +861,7 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm,
+ (wpa_supplicant_check_group_cipher(sm, sm->group_cipher,
+ gtk_len, gtk_len,
+ &gd.key_rsc_len, &gd.alg) ||
+- wpa_supplicant_install_gtk(sm, &gd, key_rsc))) {
++ wpa_supplicant_install_gtk(sm, &gd, key_rsc, 0))) {
+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
+ "RSN: Failed to install GTK");
+ os_memset(&gd, 0, sizeof(gd));
+@@ -868,14 +877,18 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm,
+
+ #ifdef CONFIG_IEEE80211W
+ static int wpa_supplicant_install_igtk(struct wpa_sm *sm,
+- const struct wpa_igtk_kde *igtk)
++ const struct wpa_igtk_kde *igtk,
++ int wnm_sleep)
+ {
+ size_t len = wpa_cipher_key_len(sm->mgmt_group_cipher);
+ u16 keyidx = WPA_GET_LE16(igtk->keyid);
+
+ /* Detect possible key reinstallation */
+- if (sm->igtk.igtk_len == len &&
+- os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) {
++ if ((sm->igtk.igtk_len == len &&
++ os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) ||
++ (sm->igtk_wnm_sleep.igtk_len == len &&
++ os_memcmp(sm->igtk_wnm_sleep.igtk, igtk->igtk,
++ sm->igtk_wnm_sleep.igtk_len) == 0)) {
+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
+ "WPA: Not reinstalling already in-use IGTK to the driver (keyidx=%d)",
+ keyidx);
+@@ -900,8 +913,14 @@ static int wpa_supplicant_install_igtk(struct wpa_sm *sm,
+ return -1;
+ }
+
+- sm->igtk.igtk_len = len;
+- os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len);
++ if (wnm_sleep) {
++ sm->igtk_wnm_sleep.igtk_len = len;
++ os_memcpy(sm->igtk_wnm_sleep.igtk, igtk->igtk,
++ sm->igtk_wnm_sleep.igtk_len);
++ } else {
++ sm->igtk.igtk_len = len;
++ os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len);
++ }
+
+ return 0;
+ }
+@@ -924,7 +943,7 @@ static int ieee80211w_set_keys(struct wpa_sm *sm,
+ return -1;
+
+ igtk = (const struct wpa_igtk_kde *) ie->igtk;
+- if (wpa_supplicant_install_igtk(sm, igtk) < 0)
++ if (wpa_supplicant_install_igtk(sm, igtk, 0) < 0)
+ return -1;
+ }
+
+@@ -1574,7 +1593,7 @@ static void wpa_supplicant_process_1_of_2(struct wpa_sm *sm,
+ if (wpa_supplicant_rsc_relaxation(sm, key->key_rsc))
+ key_rsc = null_rsc;
+
+- if (wpa_supplicant_install_gtk(sm, &gd, key_rsc) ||
++ if (wpa_supplicant_install_gtk(sm, &gd, key_rsc, 0) ||
+ wpa_supplicant_send_2_of_2(sm, key, ver, key_info) < 0)
+ goto failed;
+ os_memset(&gd, 0, sizeof(gd));
+@@ -2386,8 +2405,10 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
+ sm->tptk_set = 0;
+ os_memset(&sm->tptk, 0, sizeof(sm->tptk));
+ os_memset(&sm->gtk, 0, sizeof(sm->gtk));
++ os_memset(&sm->gtk_wnm_sleep, 0, sizeof(sm->gtk_wnm_sleep));
+ #ifdef CONFIG_IEEE80211W
+ os_memset(&sm->igtk, 0, sizeof(sm->igtk));
++ os_memset(&sm->igtk_wnm_sleep, 0, sizeof(sm->igtk_wnm_sleep));
+ #endif /* CONFIG_IEEE80211W */
+ }
+
+@@ -2920,8 +2941,10 @@ void wpa_sm_drop_sa(struct wpa_sm *sm)
+ os_memset(&sm->ptk, 0, sizeof(sm->ptk));
+ os_memset(&sm->tptk, 0, sizeof(sm->tptk));
+ os_memset(&sm->gtk, 0, sizeof(sm->gtk));
++ os_memset(&sm->gtk_wnm_sleep, 0, sizeof(sm->gtk_wnm_sleep));
+ #ifdef CONFIG_IEEE80211W
+ os_memset(&sm->igtk, 0, sizeof(sm->igtk));
++ os_memset(&sm->igtk_wnm_sleep, 0, sizeof(sm->igtk_wnm_sleep));
+ #endif /* CONFIG_IEEE80211W */
+ #ifdef CONFIG_IEEE80211R
+ os_memset(sm->xxkey, 0, sizeof(sm->xxkey));
+@@ -2986,7 +3009,7 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf)
+
+ wpa_hexdump_key(MSG_DEBUG, "Install GTK (WNM SLEEP)",
+ gd.gtk, gd.gtk_len);
+- if (wpa_supplicant_install_gtk(sm, &gd, key_rsc)) {
++ if (wpa_supplicant_install_gtk(sm, &gd, key_rsc, 1)) {
+ os_memset(&gd, 0, sizeof(gd));
+ wpa_printf(MSG_DEBUG, "Failed to install the GTK in "
+ "WNM mode");
+@@ -2998,7 +3021,7 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf)
+ const struct wpa_igtk_kde *igtk;
+
+ igtk = (const struct wpa_igtk_kde *) (buf + 2);
+- if (wpa_supplicant_install_igtk(sm, igtk) < 0)
++ if (wpa_supplicant_install_igtk(sm, igtk, 1) < 0)
+ return -1;
+ #endif /* CONFIG_IEEE80211W */
+ } else {
+diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
+index afc9e37..9a54631 100644
+--- a/src/rsn_supp/wpa_i.h
++++ b/src/rsn_supp/wpa_i.h
+@@ -32,8 +32,10 @@ struct wpa_sm {
+ int rx_replay_counter_set;
+ u8 request_counter[WPA_REPLAY_COUNTER_LEN];
+ struct wpa_gtk gtk;
++ struct wpa_gtk gtk_wnm_sleep;
+ #ifdef CONFIG_IEEE80211W
+ struct wpa_igtk igtk;
++ struct wpa_igtk igtk_wnm_sleep;
+ #endif /* CONFIG_IEEE80211W */
+
+ struct eapol_sm *eapol; /* EAPOL state machine from upper level code */
+--
+2.7.4 \ No newline at end of file
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple4.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple4.patch
new file mode 100644
index 00000000000..6c1948696ef
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple4.patch
@@ -0,0 +1,96 @@
+The WPA2 four-way handshake protocol is vulnerable to replay attacks which can
+result in unauthenticated clients gaining access to the network.
+
+Backport a number of patches from upstream to fix this.
+
+CVE: CVE-2017-13077
+CVE: CVE-2017-13078
+CVE: CVE-2017-13079
+CVE: CVE-2017-13080
+CVE: CVE-2017-13081
+CVE: CVE-2017-13082
+CVE: CVE-2017-13086
+CVE: CVE-2017-13087
+CVE: CVE-2017-13088
+
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From 8f82bc94e8697a9d47fa8774dfdaaede1084912c Mon Sep 17 00:00:00 2001
+From: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
+Date: Fri, 29 Sep 2017 04:22:51 +0200
+Subject: [PATCH 4/8] Prevent installation of an all-zero TK
+
+Properly track whether a PTK has already been installed to the driver
+and the TK part cleared from memory. This prevents an attacker from
+trying to trick the client into installing an all-zero TK.
+
+This fixes the earlier fix in commit
+ad00d64e7d8827b3cebd665a0ceb08adabf15e1e ('Fix TK configuration to the
+driver in EAPOL-Key 3/4 retry case') which did not take into account
+possibility of an extra message 1/4 showing up between retries of
+message 3/4.
+
+Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
+---
+ src/common/wpa_common.h | 1 +
+ src/rsn_supp/wpa.c | 5 ++---
+ src/rsn_supp/wpa_i.h | 1 -
+ 3 files changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h
+index d200285..1021ccb 100644
+--- a/src/common/wpa_common.h
++++ b/src/common/wpa_common.h
+@@ -215,6 +215,7 @@ struct wpa_ptk {
+ size_t kck_len;
+ size_t kek_len;
+ size_t tk_len;
++ int installed; /* 1 if key has already been installed to driver */
+ };
+
+ struct wpa_gtk {
+diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
+index 7a2c68d..0550a41 100644
+--- a/src/rsn_supp/wpa.c
++++ b/src/rsn_supp/wpa.c
+@@ -510,7 +510,6 @@ static void wpa_supplicant_process_1_of_4(struct wpa_sm *sm,
+ os_memset(buf, 0, sizeof(buf));
+ }
+ sm->tptk_set = 1;
+- sm->tk_to_set = 1;
+
+ kde = sm->assoc_wpa_ie;
+ kde_len = sm->assoc_wpa_ie_len;
+@@ -615,7 +614,7 @@ static int wpa_supplicant_install_ptk(struct wpa_sm *sm,
+ enum wpa_alg alg;
+ const u8 *key_rsc;
+
+- if (!sm->tk_to_set) {
++ if (sm->ptk.installed) {
+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
+ "WPA: Do not re-install same PTK to the driver");
+ return 0;
+@@ -659,7 +658,7 @@ static int wpa_supplicant_install_ptk(struct wpa_sm *sm,
+
+ /* TK is not needed anymore in supplicant */
+ os_memset(sm->ptk.tk, 0, WPA_TK_MAX_LEN);
+- sm->tk_to_set = 0;
++ sm->ptk.installed = 1;
+
+ if (sm->wpa_ptk_rekey) {
+ eloop_cancel_timeout(wpa_sm_rekey_ptk, sm, NULL);
+diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
+index 9a54631..41f371f 100644
+--- a/src/rsn_supp/wpa_i.h
++++ b/src/rsn_supp/wpa_i.h
+@@ -24,7 +24,6 @@ struct wpa_sm {
+ struct wpa_ptk ptk, tptk;
+ int ptk_set, tptk_set;
+ unsigned int msg_3_of_4_ok:1;
+- unsigned int tk_to_set:1;
+ u8 snonce[WPA_NONCE_LEN];
+ u8 anonce[WPA_NONCE_LEN]; /* ANonce from the last 1/4 msg */
+ int renew_snonce;
+--
+2.7.4 \ No newline at end of file
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple5.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple5.patch
new file mode 100644
index 00000000000..b262dcac559
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple5.patch
@@ -0,0 +1,81 @@
+The WPA2 four-way handshake protocol is vulnerable to replay attacks which can
+result in unauthenticated clients gaining access to the network.
+
+Backport a number of patches from upstream to fix this.
+
+CVE: CVE-2017-13077
+CVE: CVE-2017-13078
+CVE: CVE-2017-13079
+CVE: CVE-2017-13080
+CVE: CVE-2017-13081
+CVE: CVE-2017-13082
+CVE: CVE-2017-13086
+CVE: CVE-2017-13087
+CVE: CVE-2017-13088
+
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From 12fac09b437a1dc8a0f253e265934a8aaf4d2f8b Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Sun, 1 Oct 2017 12:32:57 +0300
+Subject: [PATCH 5/8] Fix PTK rekeying to generate a new ANonce
+
+The Authenticator state machine path for PTK rekeying ended up bypassing
+the AUTHENTICATION2 state where a new ANonce is generated when going
+directly to the PTKSTART state since there is no need to try to
+determine the PMK again in such a case. This is far from ideal since the
+new PTK would depend on a new nonce only from the supplicant.
+
+Fix this by generating a new ANonce when moving to the PTKSTART state
+for the purpose of starting new 4-way handshake to rekey PTK.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ src/ap/wpa_auth.c | 24 +++++++++++++++++++++---
+ 1 file changed, 21 insertions(+), 3 deletions(-)
+
+diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c
+index 707971d..bf10cc1 100644
+--- a/src/ap/wpa_auth.c
++++ b/src/ap/wpa_auth.c
+@@ -1901,6 +1901,21 @@ SM_STATE(WPA_PTK, AUTHENTICATION2)
+ }
+
+
++static int wpa_auth_sm_ptk_update(struct wpa_state_machine *sm)
++{
++ if (random_get_bytes(sm->ANonce, WPA_NONCE_LEN)) {
++ wpa_printf(MSG_ERROR,
++ "WPA: Failed to get random data for ANonce");
++ sm->Disconnect = TRUE;
++ return -1;
++ }
++ wpa_hexdump(MSG_DEBUG, "WPA: Assign new ANonce", sm->ANonce,
++ WPA_NONCE_LEN);
++ sm->TimeoutCtr = 0;
++ return 0;
++}
++
++
+ SM_STATE(WPA_PTK, INITPMK)
+ {
+ u8 msk[2 * PMK_LEN];
+@@ -2458,9 +2473,12 @@ SM_STEP(WPA_PTK)
+ SM_ENTER(WPA_PTK, AUTHENTICATION);
+ else if (sm->ReAuthenticationRequest)
+ SM_ENTER(WPA_PTK, AUTHENTICATION2);
+- else if (sm->PTKRequest)
+- SM_ENTER(WPA_PTK, PTKSTART);
+- else switch (sm->wpa_ptk_state) {
++ else if (sm->PTKRequest) {
++ if (wpa_auth_sm_ptk_update(sm) < 0)
++ SM_ENTER(WPA_PTK, DISCONNECTED);
++ else
++ SM_ENTER(WPA_PTK, PTKSTART);
++ } else switch (sm->wpa_ptk_state) {
+ case WPA_PTK_INITIALIZE:
+ break;
+ case WPA_PTK_DISCONNECT:
+--
+2.7.4 \ No newline at end of file
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple6.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple6.patch
new file mode 100644
index 00000000000..15183f40c1f
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple6.patch
@@ -0,0 +1,149 @@
+The WPA2 four-way handshake protocol is vulnerable to replay attacks which can
+result in unauthenticated clients gaining access to the network.
+
+Backport a number of patches from upstream to fix this.
+
+CVE: CVE-2017-13077
+CVE: CVE-2017-13078
+CVE: CVE-2017-13079
+CVE: CVE-2017-13080
+CVE: CVE-2017-13081
+CVE: CVE-2017-13082
+CVE: CVE-2017-13086
+CVE: CVE-2017-13087
+CVE: CVE-2017-13088
+
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From 6c4bed4f47d1960ec04981a9d50e5076aea5223d Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Fri, 22 Sep 2017 11:03:15 +0300
+Subject: [PATCH 6/8] TDLS: Reject TPK-TK reconfiguration
+
+Do not try to reconfigure the same TPK-TK to the driver after it has
+been successfully configured. This is an explicit check to avoid issues
+related to resetting the TX/RX packet number. There was already a check
+for this for TPK M2 (retries of that message are ignored completely), so
+that behavior does not get modified.
+
+For TPK M3, the TPK-TK could have been reconfigured, but that was
+followed by immediate teardown of the link due to an issue in updating
+the STA entry. Furthermore, for TDLS with any real security (i.e.,
+ignoring open/WEP), the TPK message exchange is protected on the AP path
+and simple replay attacks are not feasible.
+
+As an additional corner case, make sure the local nonce gets updated if
+the peer uses a very unlikely "random nonce" of all zeros.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ src/rsn_supp/tdls.c | 38 ++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 36 insertions(+), 2 deletions(-)
+
+diff --git a/src/rsn_supp/tdls.c b/src/rsn_supp/tdls.c
+index e424168..9eb9738 100644
+--- a/src/rsn_supp/tdls.c
++++ b/src/rsn_supp/tdls.c
+@@ -112,6 +112,7 @@ struct wpa_tdls_peer {
+ u8 tk[16]; /* TPK-TK; assuming only CCMP will be used */
+ } tpk;
+ int tpk_set;
++ int tk_set; /* TPK-TK configured to the driver */
+ int tpk_success;
+ int tpk_in_progress;
+
+@@ -192,6 +193,20 @@ static int wpa_tdls_set_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
+ u8 rsc[6];
+ enum wpa_alg alg;
+
++ if (peer->tk_set) {
++ /*
++ * This same TPK-TK has already been configured to the driver
++ * and this new configuration attempt (likely due to an
++ * unexpected retransmitted frame) would result in clearing
++ * the TX/RX sequence number which can break security, so must
++ * not allow that to happen.
++ */
++ wpa_printf(MSG_INFO, "TDLS: TPK-TK for the peer " MACSTR
++ " has already been configured to the driver - do not reconfigure",
++ MAC2STR(peer->addr));
++ return -1;
++ }
++
+ os_memset(rsc, 0, 6);
+
+ switch (peer->cipher) {
+@@ -209,12 +224,15 @@ static int wpa_tdls_set_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
+ return -1;
+ }
+
++ wpa_printf(MSG_DEBUG, "TDLS: Configure pairwise key for peer " MACSTR,
++ MAC2STR(peer->addr));
+ if (wpa_sm_set_key(sm, alg, peer->addr, -1, 1,
+ rsc, sizeof(rsc), peer->tpk.tk, key_len) < 0) {
+ wpa_printf(MSG_WARNING, "TDLS: Failed to set TPK to the "
+ "driver");
+ return -1;
+ }
++ peer->tk_set = 1;
+ return 0;
+ }
+
+@@ -696,7 +714,7 @@ static void wpa_tdls_peer_clear(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
+ peer->cipher = 0;
+ peer->qos_info = 0;
+ peer->wmm_capable = 0;
+- peer->tpk_set = peer->tpk_success = 0;
++ peer->tk_set = peer->tpk_set = peer->tpk_success = 0;
+ peer->chan_switch_enabled = 0;
+ os_memset(&peer->tpk, 0, sizeof(peer->tpk));
+ os_memset(peer->inonce, 0, WPA_NONCE_LEN);
+@@ -1159,6 +1177,7 @@ skip_rsnie:
+ wpa_tdls_peer_free(sm, peer);
+ return -1;
+ }
++ peer->tk_set = 0; /* A new nonce results in a new TK */
+ wpa_hexdump(MSG_DEBUG, "TDLS: Initiator Nonce for TPK handshake",
+ peer->inonce, WPA_NONCE_LEN);
+ os_memcpy(ftie->Snonce, peer->inonce, WPA_NONCE_LEN);
+@@ -1751,6 +1770,19 @@ static int wpa_tdls_addset_peer(struct wpa_sm *sm, struct wpa_tdls_peer *peer,
+ }
+
+
++static int tdls_nonce_set(const u8 *nonce)
++{
++ int i;
++
++ for (i = 0; i < WPA_NONCE_LEN; i++) {
++ if (nonce[i])
++ return 1;
++ }
++
++ return 0;
++}
++
++
+ static int wpa_tdls_process_tpk_m1(struct wpa_sm *sm, const u8 *src_addr,
+ const u8 *buf, size_t len)
+ {
+@@ -2004,7 +2036,8 @@ skip_rsn:
+ peer->rsnie_i_len = kde.rsn_ie_len;
+ peer->cipher = cipher;
+
+- if (os_memcmp(peer->inonce, ftie->Snonce, WPA_NONCE_LEN) != 0) {
++ if (os_memcmp(peer->inonce, ftie->Snonce, WPA_NONCE_LEN) != 0 ||
++ !tdls_nonce_set(peer->inonce)) {
+ /*
+ * There is no point in updating the RNonce for every obtained
+ * TPK M1 frame (e.g., retransmission due to timeout) with the
+@@ -2020,6 +2053,7 @@ skip_rsn:
+ "TDLS: Failed to get random data for responder nonce");
+ goto error;
+ }
++ peer->tk_set = 0; /* A new nonce results in a new TK */
+ }
+
+ #if 0
+--
+2.7.4 \ No newline at end of file
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple7.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple7.patch
new file mode 100644
index 00000000000..2e12bc75552
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple7.patch
@@ -0,0 +1,60 @@
+The WPA2 four-way handshake protocol is vulnerable to replay attacks which can
+result in unauthenticated clients gaining access to the network.
+
+Backport a number of patches from upstream to fix this.
+
+CVE: CVE-2017-13077
+CVE: CVE-2017-13078
+CVE: CVE-2017-13079
+CVE: CVE-2017-13080
+CVE: CVE-2017-13081
+CVE: CVE-2017-13082
+CVE: CVE-2017-13086
+CVE: CVE-2017-13087
+CVE: CVE-2017-13088
+
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From 53c5eb58e95004f86e65ee9fbfccbc291b139057 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Fri, 22 Sep 2017 11:25:02 +0300
+Subject: [PATCH 7/8] WNM: Ignore WNM-Sleep Mode Response without pending
+ request
+
+Commit 03ed0a52393710be6bdae657d1b36efa146520e5 ('WNM: Ignore WNM-Sleep
+Mode Response if WNM-Sleep Mode has not been used') started ignoring the
+response when no WNM-Sleep Mode Request had been used during the
+association. This can be made tighter by clearing the used flag when
+successfully processing a response. This adds an additional layer of
+protection against unexpected retransmissions of the response frame.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ wpa_supplicant/wnm_sta.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/wpa_supplicant/wnm_sta.c b/wpa_supplicant/wnm_sta.c
+index 1b3409c..67a07ff 100644
+--- a/wpa_supplicant/wnm_sta.c
++++ b/wpa_supplicant/wnm_sta.c
+@@ -260,7 +260,7 @@ static void ieee802_11_rx_wnmsleep_resp(struct wpa_supplicant *wpa_s,
+
+ if (!wpa_s->wnmsleep_used) {
+ wpa_printf(MSG_DEBUG,
+- "WNM: Ignore WNM-Sleep Mode Response frame since WNM-Sleep Mode has not been used in this association");
++ "WNM: Ignore WNM-Sleep Mode Response frame since WNM-Sleep Mode operation has not been requested");
+ return;
+ }
+
+@@ -299,6 +299,8 @@ static void ieee802_11_rx_wnmsleep_resp(struct wpa_supplicant *wpa_s,
+ return;
+ }
+
++ wpa_s->wnmsleep_used = 0;
++
+ if (wnmsleep_ie->status == WNM_STATUS_SLEEP_ACCEPT ||
+ wnmsleep_ie->status == WNM_STATUS_SLEEP_EXIT_ACCEPT_GTK_UPDATE) {
+ wpa_printf(MSG_DEBUG, "Successfully recv WNM-Sleep Response "
+--
+2.7.4 \ No newline at end of file
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple8.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple8.patch
new file mode 100644
index 00000000000..7f5390c3129
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/key-replay-cve-multiple8.patch
@@ -0,0 +1,99 @@
+The WPA2 four-way handshake protocol is vulnerable to replay attacks which can
+result in unauthenticated clients gaining access to the network.
+
+Backport a number of patches from upstream to fix this.
+
+CVE: CVE-2017-13077
+CVE: CVE-2017-13078
+CVE: CVE-2017-13079
+CVE: CVE-2017-13080
+CVE: CVE-2017-13081
+CVE: CVE-2017-13082
+CVE: CVE-2017-13086
+CVE: CVE-2017-13087
+CVE: CVE-2017-13088
+
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From b372ab0b7daea719749194dc554b26e6367603f2 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Fri, 22 Sep 2017 12:06:37 +0300
+Subject: [PATCH 8/8] FT: Do not allow multiple Reassociation Response frames
+
+The driver is expected to not report a second association event without
+the station having explicitly request a new association. As such, this
+case should not be reachable. However, since reconfiguring the same
+pairwise or group keys to the driver could result in nonce reuse issues,
+be extra careful here and do an additional state check to avoid this
+even if the local driver ends up somehow accepting an unexpected
+Reassociation Response frame.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ src/rsn_supp/wpa.c | 3 +++
+ src/rsn_supp/wpa_ft.c | 8 ++++++++
+ src/rsn_supp/wpa_i.h | 1 +
+ 3 files changed, 12 insertions(+)
+
+diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
+index 0550a41..2a53c6f 100644
+--- a/src/rsn_supp/wpa.c
++++ b/src/rsn_supp/wpa.c
+@@ -2440,6 +2440,9 @@ void wpa_sm_notify_disassoc(struct wpa_sm *sm)
+ #ifdef CONFIG_TDLS
+ wpa_tdls_disassoc(sm);
+ #endif /* CONFIG_TDLS */
++#ifdef CONFIG_IEEE80211R
++ sm->ft_reassoc_completed = 0;
++#endif /* CONFIG_IEEE80211R */
+
+ /* Keys are not needed in the WPA state machine anymore */
+ wpa_sm_drop_sa(sm);
+diff --git a/src/rsn_supp/wpa_ft.c b/src/rsn_supp/wpa_ft.c
+index 205793e..d45bb45 100644
+--- a/src/rsn_supp/wpa_ft.c
++++ b/src/rsn_supp/wpa_ft.c
+@@ -153,6 +153,7 @@ static u8 * wpa_ft_gen_req_ies(struct wpa_sm *sm, size_t *len,
+ u16 capab;
+
+ sm->ft_completed = 0;
++ sm->ft_reassoc_completed = 0;
+
+ buf_len = 2 + sizeof(struct rsn_mdie) + 2 + sizeof(struct rsn_ftie) +
+ 2 + sm->r0kh_id_len + ric_ies_len + 100;
+@@ -681,6 +682,11 @@ int wpa_ft_validate_reassoc_resp(struct wpa_sm *sm, const u8 *ies,
+ return -1;
+ }
+
++ if (sm->ft_reassoc_completed) {
++ wpa_printf(MSG_DEBUG, "FT: Reassociation has already been completed for this FT protocol instance - ignore unexpected retransmission");
++ return 0;
++ }
++
+ if (wpa_ft_parse_ies(ies, ies_len, &parse) < 0) {
+ wpa_printf(MSG_DEBUG, "FT: Failed to parse IEs");
+ return -1;
+@@ -781,6 +787,8 @@ int wpa_ft_validate_reassoc_resp(struct wpa_sm *sm, const u8 *ies,
+ return -1;
+ }
+
++ sm->ft_reassoc_completed = 1;
++
+ if (wpa_ft_process_gtk_subelem(sm, parse.gtk, parse.gtk_len) < 0)
+ return -1;
+
+diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
+index 41f371f..56f88dc 100644
+--- a/src/rsn_supp/wpa_i.h
++++ b/src/rsn_supp/wpa_i.h
+@@ -128,6 +128,7 @@ struct wpa_sm {
+ size_t r0kh_id_len;
+ u8 r1kh_id[FT_R1KH_ID_LEN];
+ int ft_completed;
++ int ft_reassoc_completed;
+ int over_the_ds_in_progress;
+ u8 target_ap[ETH_ALEN]; /* over-the-DS target AP */
+ int set_ptk_after_assoc;
+--
+2.7.4 \ No newline at end of file
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/wpa_supplicant-CVE-2018-14526.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/wpa_supplicant-CVE-2018-14526.patch
new file mode 100644
index 00000000000..e800a410eae
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/wpa_supplicant-CVE-2018-14526.patch
@@ -0,0 +1,44 @@
+wpa_supplicant-2.6: Fix CVE-2018-14526
+
+[No upstream tracking] -- https://w1.fi/security/2018-1/unauthenticated-eapol-key-decryption.txt
+
+wpa: Ignore unauthenticated encrypted EAPOL-Key data
+
+Ignore unauthenticated encrypted EAPOL-Key data in supplicant
+processing. When using WPA2, these are frames that have the Encrypted
+flag set, but not the MIC flag.
+
+When using WPA2, EAPOL-Key frames that had the Encrypted flag set but
+not the MIC flag, had their data field decrypted without first verifying
+the MIC. In case the data field was encrypted using RC4 (i.e., when
+negotiating TKIP as the pairwise cipher), this meant that
+unauthenticated but decrypted data would then be processed. An adversary
+could abuse this as a decryption oracle to recover sensitive information
+in the data field of EAPOL-Key messages (e.g., the group key).
+
+Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/src/rsn_supp/wpa.c?id=3e34cfdff6b192fe337c6fb3f487f73e96582961]
+CVE: CVE-2018-14526
+Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+
+diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
+index 3c47879..6bdf923 100644
+--- a/src/rsn_supp/wpa.c
++++ b/src/rsn_supp/wpa.c
+@@ -2016,6 +2016,17 @@ int wpa_sm_rx_eapol(struct wpa_sm *sm, const u8 *src_addr,
+
+ if ((sm->proto == WPA_PROTO_RSN || sm->proto == WPA_PROTO_OSEN) &&
+ (key_info & WPA_KEY_INFO_ENCR_KEY_DATA)) {
++ /*
++ * Only decrypt the Key Data field if the frame's authenticity
++ * was verified. When using AES-SIV (FILS), the MIC flag is not
++ * set, so this check should only be performed if mic_len != 0
++ * which is the case in this code branch.
++ */
++ if (!(key_info & WPA_KEY_INFO_MIC)) {
++ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
++ "WPA: Ignore EAPOL-Key with encrypted but unauthenticated data");
++ goto out;
++ }
+ if (wpa_supplicant_decrypt_key_data(sm, key, ver, key_data,
+ &key_data_len))
+ goto out;
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.6.bb b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.6.bb
index d6d4206a58b..aa4c4c2da00 100644
--- a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.6.bb
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.6.bb
@@ -24,7 +24,15 @@ SRC_URI = "http://w1.fi/releases/wpa_supplicant-${PV}.tar.gz \
file://wpa_supplicant.conf \
file://wpa_supplicant.conf-sane \
file://99_wpa_supplicant \
- file://key-replay-cve-multiple.patch \
+ file://key-replay-cve-multiple1.patch \
+ file://key-replay-cve-multiple2.patch \
+ file://key-replay-cve-multiple3.patch \
+ file://key-replay-cve-multiple4.patch \
+ file://key-replay-cve-multiple5.patch \
+ file://key-replay-cve-multiple6.patch \
+ file://key-replay-cve-multiple7.patch \
+ file://key-replay-cve-multiple8.patch \
+ file://wpa_supplicant-CVE-2018-14526.patch \
"
SRC_URI[md5sum] = "091569eb4440b7d7f2b4276dbfc03c3c"
SRC_URI[sha256sum] = "b4936d34c4e6cdd44954beba74296d964bc2c9668ecaa5255e499636fe2b1450"
diff --git a/meta/recipes-core/base-files/base-files/profile b/meta/recipes-core/base-files/base-files/profile
index a0620282267..9e4283e0c74 100644
--- a/meta/recipes-core/base-files/base-files/profile
+++ b/meta/recipes-core/base-files/base-files/profile
@@ -20,14 +20,12 @@ if [ -d /etc/profile.d ]; then
unset i
fi
-if command -v resize >/dev/null && command -v tty >/dev/null; then
- # 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) in
- /dev/tty[A-z]*) resize >/dev/null;;
- esac
-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
export PATH PS1 OPIEDIR QPEDIR QTDIR EDITOR TERM
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 1c0863b1c7b..05c05626614 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
@@ -121,6 +121,7 @@ do_install () {
install -m 0644 ${WORKDIR}/usbd ${D}${sysconfdir}/default/usbd
install -m 0644 ${WORKDIR}/profile ${D}${sysconfdir}/profile
sed -i 's#ROOTHOME#${ROOT_HOME}#' ${D}${sysconfdir}/profile
+ sed -i 's#@BINDIR@#${bindir}#g' ${D}${sysconfdir}/profile
install -m 0644 ${WORKDIR}/shells ${D}${sysconfdir}/shells
install -m 0755 ${WORKDIR}/share/dot.profile ${D}${sysconfdir}/skel/.profile
install -m 0755 ${WORKDIR}/share/dot.bashrc ${D}${sysconfdir}/skel/.bashrc
diff --git a/meta/recipes-core/busybox/busybox-inittab_1.27.2.bb b/meta/recipes-core/busybox/busybox-inittab_1.29.2.bb
index a83620e859c..a83620e859c 100644
--- a/meta/recipes-core/busybox/busybox-inittab_1.27.2.bb
+++ b/meta/recipes-core/busybox/busybox-inittab_1.29.2.bb
diff --git a/meta/recipes-core/busybox/busybox.inc b/meta/recipes-core/busybox/busybox.inc
index d1675c37aab..e1fba4243a1 100644
--- a/meta/recipes-core/busybox/busybox.inc
+++ b/meta/recipes-core/busybox/busybox.inc
@@ -3,7 +3,7 @@ DESCRIPTION = "BusyBox combines tiny versions of many common UNIX utilities into
HOMEPAGE = "http://www.busybox.net"
BUGTRACKER = "https://bugs.busybox.net/"
-DEPENDS += "kern-tools-native"
+DEPENDS += "kern-tools-native virtual/crypt"
# bzip2 applet in busybox is based on lightly-modified bzip2 source
# the GPL is version 2 only
@@ -41,12 +41,13 @@ 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)}"
+RDEPENDS_${PN}-syslog = "busybox"
CONFFILES_${PN}-syslog = "${sysconfdir}/syslog-startup.conf"
RCONFLICTS_${PN}-syslog = "rsyslog sysklogd syslog-ng"
CONFFILES_${PN}-mdev = "${sysconfdir}/mdev.conf"
-RRECOMMENDS_${PN} = "${PN}-syslog ${PN}-udhcpc"
+RRECOMMENDS_${PN} = "${PN}-udhcpc"
RDEPENDS_${PN} = "${@["", "busybox-inittab"][(d.getVar('VIRTUAL-RUNTIME_init_manager') == 'busybox')]}"
@@ -208,6 +209,10 @@ do_install () {
sed -i "s:^/usr/bin/:BINDIR/:" busybox.links*
sed -i "s:^/usr/sbin/:SBINDIR/:" busybox.links*
+ # Move arch/link to BINDIR to match coreutils
+ sed -i "s:^BASE_BINDIR/arch:BINDIR/arch:" busybox.links*
+ sed -i "s:^BASE_BINDIR/link:BINDIR/link:" busybox.links*
+
sed -i "s:^BASE_BINDIR/:${base_bindir}/:" busybox.links*
sed -i "s:^BASE_SBINDIR/:${base_sbindir}/:" busybox.links*
sed -i "s:^BINDIR/:${bindir}/:" busybox.links*
@@ -315,20 +320,24 @@ do_install () {
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
+ sed 's,@base_sbindir@,${base_sbindir},g' < ${WORKDIR}/busybox-klogd.service.in \
+ > ${D}${systemd_unitdir}/system/busybox-klogd.service
+ fi
+
if grep -q "CONFIG_SYSLOGD=y" ${B}/.config; then
install -d ${D}${systemd_unitdir}/system
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
+ fi
if [ -f ${WORKDIR}/busybox-syslog.default ] ; then
install -d ${D}${sysconfdir}/default
install -m 0644 ${WORKDIR}/busybox-syslog.default ${D}${sysconfdir}/default/busybox-syslog
fi
fi
- if grep -q "CONFIG_KLOGD=y" ${B}/.config; then
- install -d ${D}${systemd_unitdir}/system
- sed 's,@base_sbindir@,${base_sbindir},g' < ${WORKDIR}/busybox-klogd.service.in \
- > ${D}${systemd_unitdir}/system/busybox-klogd.service
- fi
fi
# Remove the sysvinit specific configuration file for systemd systems to avoid confusion
@@ -363,7 +372,10 @@ python do_package_prepend () {
# Match coreutils
if alt_name == '[':
alt_name = 'lbracket'
- d.appendVar('ALTERNATIVE_%s' % (pn), ' ' + alt_name)
+ if alt_name == 'klogd' or alt_name == 'syslogd':
+ d.appendVar('ALTERNATIVE_%s-syslog' % (pn), ' ' + alt_name)
+ else:
+ 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)
diff --git a/meta/recipes-core/busybox/busybox/CVE-2011-5325.patch b/meta/recipes-core/busybox/busybox/CVE-2011-5325.patch
deleted file mode 100755
index 0926107bea2..00000000000
--- a/meta/recipes-core/busybox/busybox/CVE-2011-5325.patch
+++ /dev/null
@@ -1,481 +0,0 @@
-busybox-1.27.2: Fix CVE-2011-5325
-
-[No upstream tracking] -- https://bugs.busybox.net/show_bug.cgi?id=8411
-
-libarchive: do not extract unsafe symlinks
-
-Prevent unsafe links extracting unless env variable $EXTRACT_UNSAFE_SYMLINKS=1
-is not set. Untarring file with -C DESTDIR parameter could be extracted with
-unwanted symlinks. This doesn't feel right, and IIRC GNU tar doesn't do that.
-Include necessary changes from previous commits.
-
-Upstream-Status: Backport [https://git.busybox.net/busybox/commit/?id=bc9bbeb2b81001e8731cd2ae501c8fccc8d87cc7]
-CVE: CVE-2011-5325
-bug: 8411
-Signed-off-by: Radovan Scasny <radovan.scasny@siemens.com>
-Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
-
-diff --git a/archival/libarchive/Kbuild.src b/archival/libarchive/Kbuild.src
-index 942e755..e1a8a75 100644
---- a/archival/libarchive/Kbuild.src
-+++ b/archival/libarchive/Kbuild.src
-@@ -12,6 +12,8 @@ COMMON_FILES:= \
- data_extract_all.o \
- data_extract_to_stdout.o \
- \
-+ unsafe_symlink_target.o \
-+\
- filter_accept_all.o \
- filter_accept_list.o \
- filter_accept_reject_list.o \
-diff --git a/archival/libarchive/data_extract_all.c b/archival/libarchive/data_extract_all.c
-index 1830ffb..b828b65 100644
---- a/archival/libarchive/data_extract_all.c
-+++ b/archival/libarchive/data_extract_all.c
-@@ -128,10 +128,9 @@ void FAST_FUNC data_extract_all(archive_handle_t *archive_handle)
- res = link(hard_link, dst_name);
- if (res != 0 && !(archive_handle->ah_flags & ARCHIVE_EXTRACT_QUIET)) {
- /* shared message */
-- bb_perror_msg("can't create %slink "
-- "%s to %s", "hard",
-- dst_name,
-- hard_link);
-+ bb_perror_msg("can't create %slink '%s' to '%s'",
-+ "hard", dst_name, hard_link
-+ );
- }
- /* Hardlinks have no separate mode/ownership, skip chown/chmod */
- goto ret;
-@@ -178,15 +177,17 @@ void FAST_FUNC data_extract_all(archive_handle_t *archive_handle)
- case S_IFLNK:
- /* Symlink */
- //TODO: what if file_header->link_target == NULL (say, corrupted tarball?)
-- res = symlink(file_header->link_target, dst_name);
-- if (res != 0
-- && !(archive_handle->ah_flags & ARCHIVE_EXTRACT_QUIET)
-- ) {
-- /* shared message */
-- bb_perror_msg("can't create %slink "
-- "%s to %s", "sym",
-- dst_name,
-- file_header->link_target);
-+ if (!unsafe_symlink_target(file_header->link_target)) {
-+ res = symlink(file_header->link_target, dst_name);
-+ if (res != 0
-+ && !(archive_handle->ah_flags & ARCHIVE_EXTRACT_QUIET)
-+ ) {
-+ /* shared message */
-+ bb_perror_msg("can't create %slink '%s' to '%s'",
-+ "sym",
-+ dst_name, file_header->link_target
-+ );
-+ }
- }
- break;
- case S_IFSOCK:
-diff --git a/archival/libarchive/unsafe_symlink_target.c b/archival/libarchive/unsafe_symlink_target.c
-new file mode 100644
-index 0000000..ee46e28
---- /dev/null
-+++ b/archival/libarchive/unsafe_symlink_target.c
-@@ -0,0 +1,48 @@
-+/* vi: set sw=4 ts=4: */
-+/*
-+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
-+ */
-+#include "libbb.h"
-+#include "bb_archive.h"
-+
-+int FAST_FUNC unsafe_symlink_target(const char *target)
-+{
-+ const char *dot;
-+
-+ if (target[0] == '/') {
-+ const char *var;
-+unsafe:
-+ var = getenv("EXTRACT_UNSAFE_SYMLINKS");
-+ if (var) {
-+ if (LONE_CHAR(var, '1'))
-+ return 0; /* pretend it's safe */
-+ return 1; /* "UNSAFE!" */
-+ }
-+ bb_error_msg("skipping unsafe symlink to '%s' in archive,"
-+ " set %s=1 to extract",
-+ target,
-+ "EXTRACT_UNSAFE_SYMLINKS"
-+ );
-+ /* Prevent further messages */
-+ setenv("EXTRACT_UNSAFE_SYMLINKS", "0", 0);
-+ return 1; /* "UNSAFE!" */
-+ }
-+
-+ dot = target;
-+ for (;;) {
-+ dot = strchr(dot, '.');
-+ if (!dot)
-+ return 0; /* safe target */
-+
-+ /* Is it a path component starting with ".."? */
-+ if ((dot[1] == '.')
-+ && (dot == target || dot[-1] == '/')
-+ /* Is it exactly ".."? */
-+ && (dot[2] == '/' || dot[2] == '\0')
-+ ) {
-+ goto unsafe;
-+ }
-+ /* NB: it can even be trailing ".", should only add 1 */
-+ dot += 1;
-+ }
-+}
-\ No newline at end of file
-diff --git a/archival/unzip.c b/archival/unzip.c
-index 9037262..270e261 100644
---- a/archival/unzip.c
-+++ b/archival/unzip.c
-@@ -335,6 +335,44 @@ static void unzip_create_leading_dirs(const char *fn)
- free(name);
- }
-
-+static void unzip_extract_symlink(zip_header_t *zip, const char *dst_fn)
-+{
-+ char *target;
-+
-+ if (zip->fmt.ucmpsize > 0xfff) /* no funny business please */
-+ bb_error_msg_and_die("bad archive");
-+
-+ if (zip->fmt.method == 0) {
-+ /* Method 0 - stored (not compressed) */
-+ target = xzalloc(zip->fmt.ucmpsize + 1);
-+ xread(zip_fd, target, zip->fmt.ucmpsize);
-+ } else {
-+#if 1
-+ bb_error_msg_and_die("compressed symlink is not supported");
-+#else
-+ transformer_state_t xstate;
-+ init_transformer_state(&xstate);
-+ xstate.mem_output_size_max = zip->fmt.ucmpsize;
-+ /* ...unpack... */
-+ if (!xstate.mem_output_buf)
-+ WTF();
-+ target = xstate.mem_output_buf;
-+ target = xrealloc(target, xstate.mem_output_size + 1);
-+ target[xstate.mem_output_size] = '\0';
-+#endif
-+ }
-+ if (!unsafe_symlink_target(target)) {
-+//TODO: libbb candidate
-+ if (symlink(target, dst_fn)) {
-+ /* shared message */
-+ bb_perror_msg_and_die("can't create %slink '%s' to '%s'",
-+ "sym", dst_fn, target
-+ );
-+ }
-+ }
-+ free(target);
-+}
-+
- static void unzip_extract(zip_header_t *zip, int dst_fd)
- {
- transformer_state_t xstate;
-@@ -813,7 +851,7 @@ int unzip_main(int argc, char **argv)
- }
- check_file:
- /* Extract file */
-- if (stat(dst_fn, &stat_buf) == -1) {
-+ if (lstat(dst_fn, &stat_buf) == -1) {
- /* File does not exist */
- if (errno != ENOENT) {
- bb_perror_msg_and_die("can't stat '%s'", dst_fn);
-@@ -834,6 +872,7 @@ int unzip_main(int argc, char **argv)
- goto do_open_and_extract;
- printf("replace %s? [y]es, [n]o, [A]ll, [N]one, [r]ename: ", dst_fn);
- my_fgets80(key_buf);
-+//TODO: redo lstat + ISREG check! user input could have taken a long time!
-
- switch (key_buf[0]) {
- case 'A':
-@@ -842,7 +881,8 @@ int unzip_main(int argc, char **argv)
- do_open_and_extract:
- unzip_create_leading_dirs(dst_fn);
- #if ENABLE_FEATURE_UNZIP_CDF
-- dst_fd = xopen3(dst_fn, O_WRONLY | O_CREAT | O_TRUNC, file_mode);
-+ if (!S_ISLNK(file_mode))
-+ dst_fd = xopen3(dst_fn, O_WRONLY | O_CREAT | O_TRUNC, file_mode);
- #else
- dst_fd = xopen(dst_fn, O_WRONLY | O_CREAT | O_TRUNC);
- #endif
-@@ -852,10 +892,18 @@ int unzip_main(int argc, char **argv)
- ? " extracting: %s\n"
- : */ " inflating: %s\n", dst_fn);
- }
-- unzip_extract(&zip, dst_fd);
-- if (dst_fd != STDOUT_FILENO) {
-- /* closing STDOUT is potentially bad for future business */
-- close(dst_fd);
-+#if ENABLE_FEATURE_UNZIP_CDF
-+ if (S_ISLNK(file_mode)) {
-+ if (dst_fd != STDOUT_FILENO) /* no -p */
-+ unzip_extract_symlink(&zip, dst_fn);
-+ } else
-+#endif
-+ {
-+ unzip_extract(&zip, dst_fd);
-+ if (dst_fd != STDOUT_FILENO) {
-+ /* closing STDOUT is potentially bad for future business */
-+ close(dst_fd);
-+ };
- }
- break;
-
-diff --git a/coreutils/link.c b/coreutils/link.c
-index ac3ef85..aab249d 100644
---- a/coreutils/link.c
-+++ b/coreutils/link.c
-@@ -32,9 +32,8 @@ int link_main(int argc UNUSED_PARAM, char **argv)
- argv += optind;
- if (link(argv[0], argv[1]) != 0) {
- /* shared message */
-- bb_perror_msg_and_die("can't create %slink "
-- "%s to %s", "hard",
-- argv[1], argv[0]
-+ bb_perror_msg_and_die("can't create %slink '%s' to '%s'",
-+ "hard", argv[1], argv[0]
- );
- }
- return EXIT_SUCCESS;
-diff --git a/include/bb_archive.h b/include/bb_archive.h
-index 2b9c5f0..1e4da3c 100644
---- a/include/bb_archive.h
-+++ b/include/bb_archive.h
-@@ -196,6 +196,7 @@ void seek_by_jump(int fd, off_t amount) FAST_FUNC;
- void seek_by_read(int fd, off_t amount) FAST_FUNC;
-
- const char *strip_unsafe_prefix(const char *str) FAST_FUNC;
-+int unsafe_symlink_target(const char *target) FAST_FUNC;
-
- void data_align(archive_handle_t *archive_handle, unsigned boundary) FAST_FUNC;
- const llist_t *find_list_entry(const llist_t *list, const char *filename) FAST_FUNC;
-diff --git a/libbb/copy_file.c b/libbb/copy_file.c
-index 23c0f83..be90066 100644
---- a/libbb/copy_file.c
-+++ b/libbb/copy_file.c
-@@ -371,7 +371,10 @@ int FAST_FUNC copy_file(const char *source, const char *dest, int flags)
- int r = symlink(lpath, dest);
- free(lpath);
- if (r < 0) {
-- bb_perror_msg("can't create symlink '%s'", dest);
-+ /* shared message */
-+ bb_perror_msg("can't create %slink '%s' to '%s'",
-+ "sym", dest, lpath
-+ );
- return -1;
- }
- if (flags & FILEUTILS_PRESERVE_STATUS)
-diff --git a/testsuite/tar.tests b/testsuite/tar.tests
-index 9f7ce15..b7cd74c 100755
---- a/testsuite/tar.tests
-+++ b/testsuite/tar.tests
-@@ -10,9 +10,6 @@ unset LC_COLLATE
- unset LC_ALL
- umask 022
-
--rm -rf tar.tempdir 2>/dev/null
--mkdir tar.tempdir && cd tar.tempdir || exit 1
--
- # testing "test name" "script" "expected result" "file input" "stdin"
-
- testing "Empty file is not a tarball" '\
-@@ -53,6 +50,7 @@ dd if=/dev/zero bs=512 count=20 2>/dev/null | tar xvf - 2>&1; echo $?
- "" ""
- SKIP=
-
-+mkdir tar.tempdir && cd tar.tempdir || exit 1
- # "tar cf test.tar input input_dir/ input_hard1 input_hard2 input_hard1 input_dir/ input":
- # GNU tar 1.26 records as hardlinks:
- # input_hard2 -> input_hard1
-@@ -64,7 +62,6 @@ SKIP=
- # We also don't use "hrw-r--r--" notation for hardlinks in "tar tv" listing.
- optional FEATURE_TAR_CREATE FEATURE_LS_SORTFILES
- testing "tar hardlinks and repeated files" '\
--rm -rf input_* test.tar 2>/dev/null
- >input_hard1
- ln input_hard1 input_hard2
- mkdir input_dir
-@@ -95,10 +92,11 @@ drwxr-xr-x input_dir
- " \
- "" ""
- SKIP=
-+cd .. || exit 1; rm -rf tar.tempdir 2>/dev/null
-
-+mkdir tar.tempdir && cd tar.tempdir || exit 1
- optional FEATURE_TAR_CREATE FEATURE_LS_SORTFILES
- testing "tar hardlinks mode" '\
--rm -rf input_* test.tar 2>/dev/null
- >input_hard1
- chmod 741 input_hard1
- ln input_hard1 input_hard2
-@@ -128,10 +126,11 @@ Ok: 0
- " \
- "" ""
- SKIP=
-+cd .. || exit 1; rm -rf tar.tempdir 2>/dev/null
-
-+mkdir tar.tempdir && cd tar.tempdir || exit 1
- optional FEATURE_TAR_CREATE FEATURE_LS_SORTFILES
- testing "tar symlinks mode" '\
--rm -rf input_* test.tar 2>/dev/null
- >input_file
- chmod 741 input_file
- ln -s input_file input_soft
-@@ -159,10 +158,11 @@ lrwxrwxrwx input_file
- " \
- "" ""
- SKIP=
-+cd .. || exit 1; rm -rf tar.tempdir 2>/dev/null
-
-+mkdir tar.tempdir && cd tar.tempdir || exit 1
- optional FEATURE_TAR_CREATE FEATURE_TAR_LONG_OPTIONS
- testing "tar --overwrite" "\
--rm -rf input_* test.tar 2>/dev/null
- ln input input_hard
- tar cf test.tar input_hard
- echo WRONG >input
-@@ -174,12 +174,13 @@ Ok
- " \
- "Ok\n" ""
- SKIP=
-+cd .. || exit 1; rm -rf tar.tempdir 2>/dev/null
-
-+mkdir tar.tempdir && cd tar.tempdir || exit 1
- test x"$SKIP_KNOWN_BUGS" = x"" && {
- # Needs to be run under non-root for meaningful test
- optional FEATURE_TAR_CREATE
- testing "tar writing into read-only dir" '\
--rm -rf input_* test.tar 2>/dev/null
- mkdir input_dir
- >input_dir/input_file
- chmod 550 input_dir
-@@ -201,7 +202,9 @@ dr-xr-x--- input_dir
- "" ""
- SKIP=
- }
-+cd .. || exit 1; rm -rf tar.tempdir 2>/dev/null
-
-+mkdir tar.tempdir && cd tar.tempdir || exit 1
- # Had a bug where on extract autodetect first "switched off" -z
- # and then failed to recognize .tgz extension
- optional FEATURE_TAR_CREATE FEATURE_SEAMLESS_GZ GUNZIP
-@@ -217,7 +220,9 @@ Ok
- " \
- "" ""
- SKIP=
-+cd .. || exit 1; rm -rf tar.tempdir 2>/dev/null
-
-+mkdir tar.tempdir && cd tar.tempdir || exit 1
- # Do we detect XZ-compressed data (even w/o .tar.xz or txz extension)?
- # (the uuencoded hello_world.txz contains one empty file named "hello_world")
- optional UUDECODE FEATURE_TAR_AUTODETECT FEATURE_SEAMLESS_XZ
-@@ -236,7 +241,9 @@ AAAEWVo=
- ====
- "
- SKIP=
-+cd .. || exit 1; rm -rf tar.tempdir 2>/dev/null
-
-+mkdir tar.tempdir && cd tar.tempdir || exit 1
- # On extract, everything up to and including last ".." component is stripped
- optional FEATURE_TAR_CREATE
- testing "tar strips /../ on extract" "\
-@@ -255,7 +262,9 @@ Ok
- " \
- "" ""
- SKIP=
-+cd .. || exit 1; rm -rf tar.tempdir 2>/dev/null
-
-+mkdir tar.tempdir && cd tar.tempdir || exit 1
- # attack.tar.bz2 has symlink pointing to a system file
- # followed by a regular file with the same name
- # containing "root::0:0::/root:/bin/sh":
-@@ -270,6 +279,7 @@ optional UUDECODE FEATURE_TAR_AUTODETECT FEATURE_SEAMLESS_BZ2
- testing "tar does not extract into symlinks" "\
- >>/tmp/passwd && uudecode -o input && tar xf input 2>&1 && rm passwd; cat /tmp/passwd; echo \$?
- " "\
-+tar: skipping unsafe symlink to '/tmp/passwd' in archive, set EXTRACT_UNSAFE_SYMLINKS=1 to extract
- 0
- " \
- "" "\
-@@ -281,12 +291,15 @@ l4/V8LDoe90yiWJhOJvIypgEfxdyRThQkBVn/bI=
- ====
- "
- SKIP=
-+cd .. || exit 1; rm -rf tar.tempdir 2>/dev/null
-+
-+mkdir tar.tempdir && cd tar.tempdir || exit 1
- # And same with -k
- optional UUDECODE FEATURE_TAR_AUTODETECT FEATURE_SEAMLESS_BZ2
- testing "tar -k does not extract into symlinks" "\
- >>/tmp/passwd && uudecode -o input && tar xf input -k 2>&1 && rm passwd; cat /tmp/passwd; echo \$?
- " "\
--tar: can't open 'passwd': File exists
-+tar: skipping unsafe symlink to '/tmp/passwd' in archive, set EXTRACT_UNSAFE_SYMLINKS=1 to extract
- 0
- " \
- "" "\
-@@ -298,7 +311,9 @@ l4/V8LDoe90yiWJhOJvIypgEfxdyRThQkBVn/bI=
- ====
- "
- SKIP=
-+cd .. || exit 1; rm -rf tar.tempdir 2>/dev/null
-
-+mkdir tar.tempdir && cd tar.tempdir || exit 1
- optional UNICODE_SUPPORT FEATURE_TAR_GNU_EXTENSIONS FEATURE_SEAMLESS_BZ2 FEATURE_TAR_AUTODETECT
- testing "Pax-encoded UTF8 names and symlinks" '\
- tar xvf ../tar.utf8.tar.bz2 2>&1; echo $?
-@@ -309,17 +324,45 @@ rm -rf etc usr
- ' "\
- etc/ssl/certs/3b2716e5.0
- etc/ssl/certs/EBG_Elektronik_Sertifika_Hizmet_Sağlayıcısı.pem
-+tar: skipping unsafe symlink to '/usr/share/ca-certificates/mozilla/EBG_Elektronik_Sertifika_Hizmet_Sağlayıcısı.crt' in archive, set EXTRACT_UNSAFE_SYMLINKS=1 to extract
- etc/ssl/certs/f80cc7f6.0
- usr/share/ca-certificates/mozilla/EBG_Elektronik_Sertifika_Hizmet_Sağlayıcısı.crt
- 0
- etc/ssl/certs/3b2716e5.0 -> EBG_Elektronik_Sertifika_Hizmet_Sağlayıcısı.pem
--etc/ssl/certs/EBG_Elektronik_Sertifika_Hizmet_Sağlayıcısı.pem -> /usr/share/ca-certificates/mozilla/EBG_Elektronik_Sertifika_Hizmet_Sağlayıcısı.crt
- etc/ssl/certs/f80cc7f6.0 -> EBG_Elektronik_Sertifika_Hizmet_Sağlayıcısı.pem
- " \
- "" ""
- SKIP=
-+cd .. || exit 1; rm -rf tar.tempdir 2>/dev/null
-
--
--cd .. && rm -rf tar.tempdir || exit 1
-+mkdir tar.tempdir && cd tar.tempdir || exit 1
-+optional UUDECODE FEATURE_SEAMLESS_BZ2 FEATURE_TAR_AUTODETECT
-+testing "Symlink attack: create symlink and then write through it" '\
-+exec 2>&1
-+uudecode -o input && tar xvf input; echo $?
-+ls /tmp/bb_test_evilfile
-+ls bb_test_evilfile
-+ls symlink/bb_test_evilfile
-+' "\
-+anything.txt
-+symlink
-+tar: skipping unsafe symlink to '/tmp' in archive, set EXTRACT_UNSAFE_SYMLINKS=1 to extract
-+symlink/bb_test_evilfile
-+0
-+ls: /tmp/bb_test_evilfile: No such file or directory
-+ls: bb_test_evilfile: No such file or directory
-+symlink/bb_test_evilfile
-+" \
-+"" "\
-+begin-base64 644 tar_symlink_attack.tar.bz2
-+QlpoOTFBWSZTWZgs7bQAALT/hMmQAFBAAf+AEMAGJPPv32AAAIAIMAC5thlR
-+omAjAmCMADQT1BqNE0AEwAAjAEwElTKeo9NTR6h6gaeoA0DQNLVdwZZ5iNTk
-+AQwCAV6S00QFJYhrlfFkVCEDEGtgNVqYrI0uK3ggnt30gqk4e1TTQm5QIAKa
-+SJqzRGSFLMmOloHSAcvLiFxxRiQtQZF+qPxbo173ZDISOAoNoPN4PQPhBhKS
-+n8fYaKlioCTzL2oXYczyUUIP4u5IpwoSEwWdtoA=
-+====
-+"
-+SKIP=
-+cd .. || exit 1; rm -rf tar.tempdir 2>/dev/null
-
- exit $FAILCOUNT
diff --git a/meta/recipes-core/busybox/busybox/CVE-2017-15873.patch b/meta/recipes-core/busybox/busybox/CVE-2017-15873.patch
deleted file mode 100644
index 5a027c9bccc..00000000000
--- a/meta/recipes-core/busybox/busybox/CVE-2017-15873.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-busybox-1.27.2: Fix CVE-2017-15873
-
-[No upstream tracking] -- https://bugs.busybox.net/show_bug.cgi?id=10431
-
-bunzip2: fix runCnt overflow
-
-The get_next_block function in archival/libarchive/decompress_bunzip2.c
-in BusyBox 1.27.2 has an Integer Overflow that may lead to a write
-access violation.
-
-Upstream-Status: Backport [https://git.busybox.net/busybox/commit/?id=0402cb32df015d9372578e3db27db47b33d5c7b0]
-CVE: CVE-2017-15873
-bug: 10431
-Signed-off-by: Radovan Scasny <radovan.scasny@siemens.com>
-
-diff --git a/archival/libarchive/decompress_bunzip2.c b/archival/libarchive/decompress_bunzip2.c
-index 7cd18f5..bec89ed 100644
---- a/archival/libarchive/decompress_bunzip2.c
-+++ b/archival/libarchive/decompress_bunzip2.c
-@@ -156,15 +156,15 @@ static unsigned get_bits(bunzip_data *bd, int bits_wanted)
- static int get_next_block(bunzip_data *bd)
- {
- struct group_data *hufGroup;
-- int dbufCount, dbufSize, groupCount, *base, *limit, selector,
-- i, j, runPos, symCount, symTotal, nSelectors, byteCount[256];
-- int runCnt = runCnt; /* for compiler */
-+ int groupCount, *base, *limit, selector,
-+ i, j, symCount, symTotal, nSelectors, byteCount[256];
- uint8_t uc, symToByte[256], mtfSymbol[256], *selectors;
- uint32_t *dbuf;
- unsigned origPtr, t;
-+ unsigned dbufCount, runPos;
-+ unsigned runCnt = runCnt; /* for compiler */
-
- dbuf = bd->dbuf;
-- dbufSize = bd->dbufSize;
- selectors = bd->selectors;
-
- /* In bbox, we are ok with aborting through setjmp which is set up in start_bunzip */
-@@ -187,7 +187,7 @@ static int get_next_block(bunzip_data *bd)
- it didn't actually work. */
- if (get_bits(bd, 1)) return RETVAL_OBSOLETE_INPUT;
- origPtr = get_bits(bd, 24);
-- if ((int)origPtr > dbufSize) return RETVAL_DATA_ERROR;
-+ if (origPtr > bd->dbufSize) return RETVAL_DATA_ERROR;
-
- /* mapping table: if some byte values are never used (encoding things
- like ascii text), the compression code removes the gaps to have fewer
-@@ -435,7 +435,14 @@ static int get_next_block(bunzip_data *bd)
- symbols, but a run of length 0 doesn't mean anything in this
- context). Thus space is saved. */
- runCnt += (runPos << nextSym); /* +runPos if RUNA; +2*runPos if RUNB */
-- if (runPos < dbufSize) runPos <<= 1;
-+//The 32-bit overflow of runCnt wasn't yet seen, but probably can happen.
-+//This would be the fix (catches too large count way before it can overflow):
-+// if (runCnt > bd->dbufSize) {
-+// dbg("runCnt:%u > dbufSize:%u RETVAL_DATA_ERROR",
-+// runCnt, bd->dbufSize);
-+// return RETVAL_DATA_ERROR;
-+// }
-+ if (runPos < bd->dbufSize) runPos <<= 1;
- goto end_of_huffman_loop;
- }
-
-@@ -445,14 +452,15 @@ static int get_next_block(bunzip_data *bd)
- literal used is the one at the head of the mtfSymbol array.) */
- if (runPos != 0) {
- uint8_t tmp_byte;
-- if (dbufCount + runCnt > dbufSize) {
-- dbg("dbufCount:%d+runCnt:%d %d > dbufSize:%d RETVAL_DATA_ERROR",
-- dbufCount, runCnt, dbufCount + runCnt, dbufSize);
-+ if (dbufCount + runCnt > bd->dbufSize) {
-+ dbg("dbufCount:%u+runCnt:%u %u > dbufSize:%u RETVAL_DATA_ERROR",
-+ dbufCount, runCnt, dbufCount + runCnt, bd->dbufSize);
- return RETVAL_DATA_ERROR;
- }
- tmp_byte = symToByte[mtfSymbol[0]];
- byteCount[tmp_byte] += runCnt;
-- while (--runCnt >= 0) dbuf[dbufCount++] = (uint32_t)tmp_byte;
-+ while ((int)--runCnt >= 0)
-+ dbuf[dbufCount++] = (uint32_t)tmp_byte;
- runPos = 0;
- }
-
-@@ -466,7 +474,7 @@ static int get_next_block(bunzip_data *bd)
- first symbol in the mtf array, position 0, would have been handled
- as part of a run above. Therefore 1 unused mtf position minus
- 2 non-literal nextSym values equals -1.) */
-- if (dbufCount >= dbufSize) return RETVAL_DATA_ERROR;
-+ if (dbufCount >= bd->dbufSize) return RETVAL_DATA_ERROR;
- i = nextSym - 1;
- uc = mtfSymbol[i];
-
---
-cgit v0.12
diff --git a/meta/recipes-core/busybox/busybox/busybox-CVE-2017-16544.patch b/meta/recipes-core/busybox/busybox/busybox-CVE-2017-16544.patch
deleted file mode 100644
index fc19ee3356d..00000000000
--- a/meta/recipes-core/busybox/busybox/busybox-CVE-2017-16544.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From c3797d40a1c57352192c6106cc0f435e7d9c11e8 Mon Sep 17 00:00:00 2001
-From: Denys Vlasenko <vda.linux@googlemail.com>
-Date: Tue, 7 Nov 2017 18:09:29 +0100
-Subject: lineedit: do not tab-complete any strings which have control
- characters
-
-function old new delta
-add_match 41 68 +27
-
-CVE: CVE-2017-16544
-Upstream-Status: Backport
-
-Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
----
- libbb/lineedit.c | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/libbb/lineedit.c b/libbb/lineedit.c
-index c0e35bb..56e8140 100644
---- a/libbb/lineedit.c
-+++ b/libbb/lineedit.c
-@@ -645,6 +645,18 @@ static void free_tab_completion_data(void)
-
- static void add_match(char *matched)
- {
-+ unsigned char *p = (unsigned char*)matched;
-+ while (*p) {
-+ /* ESC attack fix: drop any string with control chars */
-+ if (*p < ' '
-+ || (!ENABLE_UNICODE_SUPPORT && *p >= 0x7f)
-+ || (ENABLE_UNICODE_SUPPORT && *p == 0x7f)
-+ ) {
-+ free(matched);
-+ return;
-+ }
-+ p++;
-+ }
- matches = xrealloc_vector(matches, 4, num_matches);
- matches[num_matches] = matched;
- num_matches++;
---
-cgit v0.12
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 582a2589390..76daaf1f02a 100644
--- a/meta/recipes-core/busybox/busybox/busybox-udhcpc-no_deconfig.patch
+++ b/meta/recipes-core/busybox/busybox/busybox-udhcpc-no_deconfig.patch
@@ -31,11 +31,11 @@ Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
networking/udhcp/dhcpc.c | 29 ++++++++++++++++------
1 file changed, 21 insertions(+), 8 deletions(-)
-Index: busybox-1.27.2/networking/udhcp/dhcpc.c
+Index: busybox-1.29.1/networking/udhcp/dhcpc.c
===================================================================
---- busybox-1.27.2.orig/networking/udhcp/dhcpc.c
-+++ busybox-1.27.2/networking/udhcp/dhcpc.c
-@@ -49,6 +49,8 @@ struct tpacket_auxdata {
+--- busybox-1.29.1.orig/networking/udhcp/dhcpc.c
++++ busybox-1.29.1/networking/udhcp/dhcpc.c
+@@ -48,6 +48,8 @@
};
#endif
@@ -44,7 +44,7 @@ Index: busybox-1.27.2/networking/udhcp/dhcpc.c
/* "struct client_config_t client_config" is in bb_common_bufsiz1 */
-@@ -104,8 +106,9 @@ enum {
+@@ -103,8 +105,9 @@
OPT_x = 1 << 18,
OPT_f = 1 << 19,
OPT_B = 1 << 20,
@@ -55,7 +55,7 @@ Index: busybox-1.27.2/networking/udhcp/dhcpc.c
USE_FOR_MMU( OPTBIT_b,)
IF_FEATURE_UDHCPC_ARPING(OPTBIT_a,)
IF_FEATURE_UDHCP_PORT( OPTBIT_P,)
-@@ -1110,7 +1113,8 @@ static void perform_renew(void)
+@@ -1116,7 +1119,8 @@
state = RENEW_REQUESTED;
break;
case RENEW_REQUESTED: /* impatient are we? fine, square 1 */
@@ -65,7 +65,7 @@ Index: busybox-1.27.2/networking/udhcp/dhcpc.c
case REQUESTING:
case RELEASED:
change_listen_mode(LISTEN_RAW);
-@@ -1146,7 +1150,8 @@ static void perform_release(uint32_t server_addr, uint32_t requested_ip)
+@@ -1152,7 +1156,8 @@
* Users requested to be notified in all cases, even if not in one
* of the states above.
*/
@@ -75,16 +75,16 @@ Index: busybox-1.27.2/networking/udhcp/dhcpc.c
change_listen_mode(LISTEN_NONE);
state = RELEASED;
-@@ -1298,7 +1303,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
- /* O,x: list; -T,-t,-A take numeric param */
- IF_UDHCP_VERBOSE(opt_complementary = "vv";)
- IF_LONG_OPTS(applet_long_options = udhcpc_longopts;)
-- opt = getopt32(argv, "CV:H:h:F:i:np:qRr:s:T:+t:+SA:+O:*ox:*fB"
-+ opt = getopt32(argv, "CV:H:h:F:i:np:qRr:s:T:+t:+SA:+O:*ox:*fBD"
+@@ -1265,7 +1270,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"
USE_FOR_MMU("b")
IF_FEATURE_UDHCPC_ARPING("a::")
IF_FEATURE_UDHCP_PORT("P:")
-@@ -1409,6 +1414,10 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
+@@ -1376,6 +1381,10 @@
logmode |= LOGMODE_SYSLOG;
}
@@ -94,8 +94,8 @@ Index: busybox-1.27.2/networking/udhcp/dhcpc.c
+
/* Make sure fd 0,1,2 are open */
bb_sanitize_stdio();
- /* Equivalent of doing a fflush after every \n */
-@@ -1423,7 +1432,8 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
+ /* Create pidfile */
+@@ -1388,7 +1397,8 @@
srand(monotonic_us());
state = INIT_SELECTING;
@@ -105,7 +105,7 @@ Index: busybox-1.27.2/networking/udhcp/dhcpc.c
change_listen_mode(LISTEN_RAW);
packet_num = 0;
timeout = 0;
-@@ -1577,7 +1587,8 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
+@@ -1555,7 +1565,8 @@
}
/* Timed out, enter init state */
bb_error_msg("lease lost, entering init state");
@@ -115,23 +115,29 @@ Index: busybox-1.27.2/networking/udhcp/dhcpc.c
state = INIT_SELECTING;
client_config.first_secs = 0; /* make secs field count from 0 */
/*timeout = 0; - already is */
-@@ -1770,7 +1781,8 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
+@@ -1748,8 +1759,10 @@
+ "(got ARP reply), declining");
send_decline(/*xid,*/ server_addr, packet.yiaddr);
- if (state != REQUESTING)
+- if (state != REQUESTING)
- udhcp_run_script(NULL, "deconfig");
++ if (state != REQUESTING) {
+ if (allow_deconfig)
+ udhcp_run_script(NULL, "deconfig");
++ }
change_listen_mode(LISTEN_RAW);
state = INIT_SELECTING;
client_config.first_secs = 0; /* make secs field count from 0 */
-@@ -1840,7 +1852,8 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
+@@ -1818,8 +1831,10 @@
+ /* return to init state */
bb_error_msg("received %s", "DHCP NAK");
udhcp_run_script(&packet, "nak");
- if (state != REQUESTING)
+- if (state != REQUESTING)
- udhcp_run_script(NULL, "deconfig");
++ if (state != REQUESTING) {
+ if (allow_deconfig)
+ udhcp_run_script(NULL, "deconfig");
++ }
change_listen_mode(LISTEN_RAW);
sleep(3); /* avoid excessive network traffic */
state = INIT_SELECTING;
diff --git a/meta/recipes-core/busybox/busybox/defconfig b/meta/recipes-core/busybox/busybox/defconfig
index fbb5fd852c9..f081f281cca 100644
--- a/meta/recipes-core/busybox/busybox/defconfig
+++ b/meta/recipes-core/busybox/busybox/defconfig
@@ -1,12 +1,12 @@
#
# Automatically generated make config: don't edit
-# Busybox version: 1.27.2
-# Wed Sep 27 08:56:13 2017
+# Busybox version: 1.29.1
+# Thu Jul 19 11:09:46 2018
#
CONFIG_HAVE_DOT_CONFIG=y
#
-# Busybox Settings
+# Settings
#
# CONFIG_DESKTOP is not set
# CONFIG_EXTRA_COMPAT is not set
@@ -78,7 +78,7 @@ CONFIG_NO_DEBUG_LIB=y
# CONFIG_EFENCE is not set
#
-# Busybox Library Tuning
+# Library Tuning
#
# CONFIG_FEATURE_USE_BSS_TAIL is not set
CONFIG_FEATURE_RTMINMAX=y
@@ -90,6 +90,7 @@ 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_EDITING=y
CONFIG_FEATURE_EDITING_MAX_LEN=1024
# CONFIG_FEATURE_EDITING_VI is not set
@@ -321,6 +322,7 @@ CONFIG_TRUE=y
CONFIG_TTY=y
CONFIG_UNAME=y
CONFIG_UNAME_OSNAME="GNU/Linux"
+# CONFIG_BB_ARCH is not set
CONFIG_UNIQ=y
CONFIG_UNLINK=y
CONFIG_USLEEP=y
@@ -393,6 +395,14 @@ CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
CONFIG_WHICH=y
#
+# klibc-utils
+#
+# CONFIG_MINIPS is not set
+# CONFIG_NUKE is not set
+# CONFIG_RESUME is not set
+# CONFIG_RUN_INIT is not set
+
+#
# Editors
#
CONFIG_AWK=y
@@ -468,21 +478,21 @@ CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y
# CONFIG_BOOTCHARTD is not set
# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set
# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set
-CONFIG_HALT=y
-CONFIG_POWEROFF=y
-CONFIG_REBOOT=y
+# CONFIG_HALT is not set
+# CONFIG_POWEROFF is not set
+# CONFIG_REBOOT is not set
# CONFIG_FEATURE_CALL_TELINIT is not set
-CONFIG_TELINIT_PATH=""
+# CONFIG_TELINIT_PATH is not set
# 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=0
+# CONFIG_FEATURE_KILL_DELAY is not set
# 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=""
+# CONFIG_INIT_TERMINAL_TYPE is not set
# CONFIG_FEATURE_INIT_MODIFY_CMDLINE is not set
#
@@ -678,6 +688,10 @@ CONFIG_FEATURE_MOUNT_LOOP=y
CONFIG_FEATURE_MOUNT_LOOP_CREATE=y
# CONFIG_FEATURE_MTAB_SUPPORT is not set
# CONFIG_VOLUMEID is not set
+
+#
+# Filesystem/Volume identification
+#
# CONFIG_FEATURE_VOLUMEID_BCACHE is not set
# CONFIG_FEATURE_VOLUMEID_BTRFS is not set
# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set
@@ -725,6 +739,7 @@ CONFIG_FEATURE_CROND_DIR=""
# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
+# CONFIG_HEXEDIT is not set
# CONFIG_I2CGET is not set
# CONFIG_I2CSET is not set
# CONFIG_I2CDUMP is not set
@@ -807,6 +822,7 @@ CONFIG_MICROCOM=y
# CONFIG_RUNLEVEL is not set
# CONFIG_RX is not set
# CONFIG_SETSID is not set
+# CONFIG_SETFATTR is not set
CONFIG_STRINGS=y
CONFIG_TIME=y
# CONFIG_TIMEOUT is not set
@@ -912,6 +928,8 @@ CONFIG_FEATURE_FANCY_PING=y
CONFIG_ROUTE=y
# CONFIG_SLATTACH is not set
# CONFIG_SSL_CLIENT is not set
+# CONFIG_TC is not set
+# CONFIG_FEATURE_TC_INGRESS is not set
# CONFIG_TCPSVD is not set
# CONFIG_UDPSVD is not set
CONFIG_TELNET=y
@@ -949,13 +967,9 @@ CONFIG_FEATURE_WGET_HTTPS=y
# CONFIG_FEATURE_WGET_OPENSSL is not set
# CONFIG_WHOIS is not set
# CONFIG_ZCIP is not set
-# CONFIG_UDHCPC6 is not set
-# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set
-# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set
-# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set
CONFIG_UDHCPD=y
-# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set
+# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
CONFIG_DHCPD_LEASES_FILE="/var/lib/misc/udhcpd.leases"
CONFIG_DUMPLEASES=y
# CONFIG_DHCPRELAY is not set
@@ -963,6 +977,15 @@ CONFIG_UDHCPC=y
CONFIG_FEATURE_UDHCPC_ARPING=y
CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y
CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
+# CONFIG_UDHCPC6 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC5970 is not set
+
+#
+# Common options for DHCP applets
+#
# CONFIG_FEATURE_UDHCP_PORT is not set
CONFIG_UDHCP_DEBUG=0
# CONFIG_FEATURE_UDHCP_RFC3397 is not set
@@ -1045,6 +1068,7 @@ CONFIG_WATCH=y
# CONFIG_SV is not set
CONFIG_SV_DEFAULT_SERVICE_DIR=""
# CONFIG_SVC is not set
+# CONFIG_SVOK is not set
# CONFIG_SVLOGD is not set
# CONFIG_CHCON is not set
# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
@@ -1134,6 +1158,10 @@ CONFIG_FEATURE_SH_HISTFILESIZE=y
# System Logging Utilities
#
CONFIG_KLOGD=y
+
+#
+# klogd should not be used together with syslog to kernel printk buffer
+#
CONFIG_FEATURE_KLOGD_KLOGCTL=y
CONFIG_LOGGER=y
# CONFIG_LOGREAD is not set
diff --git a/meta/recipes-core/busybox/busybox/init.cfg b/meta/recipes-core/busybox/busybox/init.cfg
index 006d4c633e0..3c1fdd42b63 100644
--- a/meta/recipes-core/busybox/busybox/init.cfg
+++ b/meta/recipes-core/busybox/busybox/init.cfg
@@ -1,3 +1,8 @@
CONFIG_INIT=y
CONFIG_FEATURE_USE_INITTAB=y
-
+CONFIG_HALT=y
+CONFIG_POWEROFF=y
+CONFIG_REBOOT=y
+CONFIG_FEATURE_KILL_DELAY=0
+CONFIG_TELINIT_PATH=""
+CONFIG_INIT_TERMINAL_TYPE=""
diff --git a/meta/recipes-core/busybox/busybox_1.27.2.bb b/meta/recipes-core/busybox/busybox_1.29.2.bb
index 36a6342aaf1..3496a857c4f 100644
--- a/meta/recipes-core/busybox/busybox_1.27.2.bb
+++ b/meta/recipes-core/busybox/busybox_1.29.2.bb
@@ -42,11 +42,8 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
file://rcK \
file://runlevel \
file://makefile-libbb-race.patch \
- file://CVE-2011-5325.patch \
- file://CVE-2017-15873.patch \
- file://busybox-CVE-2017-16544.patch \
"
SRC_URI_append_libc-musl = " file://musl.cfg "
-SRC_URI[tarball.md5sum] = "476186f4bab81781dab2369bfd42734e"
-SRC_URI[tarball.sha256sum] = "9d4be516b61e6480f156b11eb42577a13529f75d3383850bb75c50c285de63df"
+SRC_URI[tarball.md5sum] = "46617af37a39579711d8b36f189cdf1e"
+SRC_URI[tarball.sha256sum] = "67d2fa6e147a45875fe972de62d907ef866fe784c495c363bf34756c444a5d61"
diff --git a/meta/recipes-core/busybox/files/mdev-mount.sh b/meta/recipes-core/busybox/files/mdev-mount.sh
index b4385a157f2..130e9472f3b 100644
--- a/meta/recipes-core/busybox/files/mdev-mount.sh
+++ b/meta/recipes-core/busybox/files/mdev-mount.sh
@@ -25,7 +25,7 @@ case "$ACTION" in
fi
# check for full-disk partition
if [ "${DEVBASE}" = "${MDEV}" ] ; then
- if [ -d /sys/block/${DEVBASE}/${DEVBASE}*1 ] ; then
+ if [ -f /sys/block/${DEVBASE}/${DEVBASE}*1/partition ] ; then
# Partition detected, just quit
exit 0
fi
@@ -43,7 +43,7 @@ case "$ACTION" in
then
MOUNTPOINT="${MDEV_AUTOMOUNT_ROOT}/$MDEV"
mkdir -p "$MOUNTPOINT"
- mount -t auto /dev/$MDEV "$MOUNTPOINT"
+ mount -t auto /dev/$MDEV "$MOUNTPOINT" || rmdir "$MOUNTPOINT"
fi
;;
remove)
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
index 286c2a47539..ba44fbe60f9 100644
--- a/meta/recipes-core/console-tools/console-tools_0.3.2.bb
+++ b/meta/recipes-core/console-tools/console-tools_0.3.2.bb
@@ -1,8 +1,9 @@
+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"
-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."
+DEPENDS = "flex-native bison-native"
PR = "r8"
SRC_URI = "${SOURCEFORGE_MIRROR}/lct/console-tools-${PV}.tar.gz \
@@ -26,8 +27,12 @@ SRC_URI[sha256sum] = "eea6b441672dacd251079fc85ed322e196282e0e66c16303ec64c3a2b1
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/
@@ -35,8 +40,6 @@ do_configure_prepend () {
cp ${WORKDIR}/Makevars ${S}/po/
}
-inherit autotools gettext update-alternatives
-
ALTERNATIVE_PRIORITY = "30"
bindir_progs = "chvt deallocvt fgconsole openvt"
diff --git a/meta/recipes-core/coreutils/coreutils_8.29.bb b/meta/recipes-core/coreutils/coreutils_8.30.bb
index 0b8acc5884f..205ba4a0aa1 100644
--- a/meta/recipes-core/coreutils/coreutils_8.29.bb
+++ b/meta/recipes-core/coreutils/coreutils_8.30.bb
@@ -6,7 +6,7 @@ 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=1c3f9411e1842a062ce5ce9210beee0e"
+ file://src/ls.c;beginline=1;endline=15;md5=dbe356a88b09c29232b083d1ff8ac82a"
DEPENDS = "gmp libcap"
DEPENDS_class-native = ""
@@ -15,18 +15,17 @@ 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-Unset-need_charset_alias-when-building-for-musl.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[md5sum] = "960cfe75a42c9907c71439f8eb436303"
-SRC_URI[sha256sum] = "92d0fa1c311cacefa89853bdb53c62f4110cdfda3820346b59cbd098f40f955e"
+SRC_URI[md5sum] = "ab06d68949758971fe744db66b572816"
+SRC_URI[sha256sum] = "e831b3a86091496cdba720411f9748de81507798f6130adeaef872d206e1b057"
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"
+EXTRA_OECONF_class-nativesdk = "--enable-install-program=arch,hostname"
# acl and xattr are not default features
#
@@ -43,12 +42,12 @@ 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 base64 gets a special treatment and is not included in this
+# [ 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 nice nl nohup nproc od paste pathchk \
- pinky pr printenv printf ptx readlink realpath runcon seq sha1sum sha224sum sha256sum \
- sha384sum sha512sum shred shuf sort split stdbuf sum tac tail tee test timeout\
+ 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 stdbuf 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
@@ -78,7 +77,7 @@ do_install_class-native() {
}
do_install_append() {
- for i in df mktemp base64; do mv ${D}${bindir}/$i ${D}${bindir}/$i.${BPN}; done
+ 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
@@ -97,8 +96,8 @@ 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 mktemp df"
-ALTERNATIVE_${PN}-doc = "base64.1 mktemp.1 df.1 groups.1 kill.1 uptime.1 stat.1 hostname.1"
+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"
@@ -114,6 +113,13 @@ 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}"
diff --git a/meta/recipes-core/dbus/dbus-glib_0.108.bb b/meta/recipes-core/dbus/dbus-glib_0.108.bb
deleted file mode 100644
index 7a9a69e1e95..00000000000
--- a/meta/recipes-core/dbus/dbus-glib_0.108.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-require dbus-glib.inc
-
-SRC_URI[md5sum] = "a66a613705870752ca9786e0359aea97"
-SRC_URI[sha256sum] = "9f340c7e2352e9cdf113893ca77ca9075d9f8d5e81476bf2bf361099383c602c"
diff --git a/meta/recipes-core/dbus/dbus-glib.inc b/meta/recipes-core/dbus/dbus-glib_0.110.bb
index 55f710f857b..b7383bd2a6b 100644
--- a/meta/recipes-core/dbus/dbus-glib.inc
+++ b/meta/recipes-core/dbus/dbus-glib_0.110.bb
@@ -14,6 +14,8 @@ 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
@@ -22,9 +24,7 @@ inherit autotools pkgconfig gettext bash-completion gtk-doc
PACKAGECONFIG ??= ""
PACKAGECONFIG[tests] = "--enable-tests,,,"
-EXTRA_OECONF = "--with-introspect-xml=${STAGING_DATADIR_NATIVE}/dbus/dbus-bus-introspect.xml \
- --with-dbus-binding-tool=${STAGING_BINDIR_NATIVE}/dbus-binding-tool"
-EXTRA_OECONF_class-native = "--with-introspect-xml=${STAGING_DATADIR_NATIVE}/dbus/dbus-bus-introspect.xml"
+EXTRA_OECONF_class-target = "--with-dbus-binding-tool=${STAGING_BINDIR_NATIVE}/dbus-binding-tool"
PACKAGES += "${PN}-tests"
diff --git a/meta/recipes-core/dbus/dbus-test_1.12.2.bb b/meta/recipes-core/dbus/dbus-test_1.12.10.bb
index dce047a134d..25b93951201 100644
--- a/meta/recipes-core/dbus/dbus-test_1.12.2.bb
+++ b/meta/recipes-core/dbus/dbus-test_1.12.10.bb
@@ -17,8 +17,8 @@ SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \
file://clear-guid_from_server-if-send_negotiate_unix_f.patch \
"
-SRC_URI[md5sum] = "3361456cadb99aa6601bed5b48964254"
-SRC_URI[sha256sum] = "272bb5091770b047c8188b926d5e6038fa4fe6745488b2add96b23e2d9a83d88"
+SRC_URI[md5sum] = "c3e12b4206e2a7da39d7cc42567790ef"
+SRC_URI[sha256sum] = "4b693d24976258c3f2fa9cc33ad9288c5fbfa7a16481dbd9a8a429f7aa8cdcf7"
S="${WORKDIR}/dbus-${PV}"
FILESEXTRAPATHS =. "${FILE_DIRNAME}/dbus:"
@@ -75,6 +75,7 @@ do_install_ptest() {
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"
diff --git a/meta/recipes-core/dbus/dbus/run-ptest b/meta/recipes-core/dbus/dbus/run-ptest
index 8a8970ee208..353ba1e9059 100755
--- a/meta/recipes-core/dbus/dbus/run-ptest
+++ b/meta/recipes-core/dbus/dbus/run-ptest
@@ -12,7 +12,7 @@ output() {
export DBUS_TEST_HOMEDIR=./test
export XDG_RUNTIME_DIR=./test
-export LD_LIBRARY_PATH=/usr/lib/dbus-test/ptest/test/.libs
+export LD_LIBRARY_PATH=@PTEST_PATH@/test/.libs
files=`ls test/test-*`
diff --git a/meta/recipes-core/dbus/dbus_1.12.2.bb b/meta/recipes-core/dbus/dbus_1.12.10.bb
index fb5b69aa47b..d71f7f7042e 100644
--- a/meta/recipes-core/dbus/dbus_1.12.2.bb
+++ b/meta/recipes-core/dbus/dbus_1.12.10.bb
@@ -18,8 +18,8 @@ SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \
file://clear-guid_from_server-if-send_negotiate_unix_f.patch \
"
-SRC_URI[md5sum] = "3361456cadb99aa6601bed5b48964254"
-SRC_URI[sha256sum] = "272bb5091770b047c8188b926d5e6038fa4fe6745488b2add96b23e2d9a83d88"
+SRC_URI[md5sum] = "c3e12b4206e2a7da39d7cc42567790ef"
+SRC_URI[sha256sum] = "4b693d24976258c3f2fa9cc33ad9288c5fbfa7a16481dbd9a8a429f7aa8cdcf7"
inherit useradd autotools pkgconfig gettext update-rc.d upstream-version-is-even
@@ -102,7 +102,10 @@ EXTRA_OECONF = "--disable-tests \
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)}"
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd x11', d)} \
+ user-session \
+ "
+
PACKAGECONFIG_class-native = ""
PACKAGECONFIG_class-nativesdk = ""
@@ -153,14 +156,6 @@ do_install() {
do_install_class-native() {
autotools_do_install
- # for dbus-glib-native introspection generation
- install -d ${D}${STAGING_DATADIR_NATIVE}/dbus/
- # N.B. is below install actually required?
- install -m 0644 bus/session.conf ${D}${STAGING_DATADIR_NATIVE}/dbus/session.conf
-
- # dbus-glib-native and dbus-glib need this xml file
- ./bus/dbus-daemon --introspect > ${D}${STAGING_DATADIR_NATIVE}/dbus/dbus-bus-introspect.xml
-
# 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
diff --git a/meta/recipes-core/dropbear/dropbear.inc b/meta/recipes-core/dropbear/dropbear.inc
index b6b436c584d..d92a2f3991c 100644
--- a/meta/recipes-core/dropbear/dropbear.inc
+++ b/meta/recipes-core/dropbear/dropbear.inc
@@ -7,21 +7,19 @@ SECTION = "console/network"
LICENSE = "MIT & BSD-3-Clause & BSD-2-Clause & PD"
LIC_FILES_CHKSUM = "file://LICENSE;md5=a5ec40cafba26fc4396d0b550f824e01"
-DEPENDS = "zlib"
+DEPENDS = "zlib virtual/crypt"
RPROVIDES_${PN} = "ssh sshd"
DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
SRC_URI = "http://matt.ucc.asn.au/dropbear/releases/dropbear-${PV}.tar.bz2 \
+ file://CVE-2018-15599.patch \
file://0001-urandom-xauth-changes-to-options.h.patch \
- file://0003-configure.patch \
- file://0004-fix-2kb-keys.patch \
- file://0007-dropbear-fix-for-x32-abi.patch \
- file://fix-libtomcrypt-libtommath-ordering.patch \
file://init \
file://dropbearkey.service \
file://dropbear@.service \
file://dropbear.socket \
+ file://dropbear.default \
${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} "
PAM_SRC_URI = "file://0005-dropbear-enable-pam.patch \
@@ -52,6 +50,10 @@ PACKAGECONFIG[system-libtom] = "--disable-bundled-libtom,--enable-bundled-libtom
EXTRA_OECONF += "\
${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--enable-pam', '--disable-pam', d)}"
+# This option appends to CFLAGS and LDFLAGS from OE
+# This is causing [textrel] QA warning
+EXTRA_OECONF += "--disable-harden"
+
do_install() {
install -d ${D}${sysconfdir} \
${D}${sysconfdir}/init.d \
@@ -61,6 +63,8 @@ do_install() {
${D}${sbindir} \
${D}${localstatedir}
+ install -m 0644 ${WORKDIR}/dropbear.default ${D}${sysconfdir}/default/dropbear
+
install -m 0755 dropbearmulti ${D}${sbindir}/
ln -s ${sbindir}/dropbearmulti ${D}${bindir}/dbclient
diff --git a/meta/recipes-core/dropbear/dropbear/0001-urandom-xauth-changes-to-options.h.patch b/meta/recipes-core/dropbear/dropbear/0001-urandom-xauth-changes-to-options.h.patch
index dc9d5782e81..684641dcbdb 100644
--- a/meta/recipes-core/dropbear/dropbear/0001-urandom-xauth-changes-to-options.h.patch
+++ b/meta/recipes-core/dropbear/dropbear/0001-urandom-xauth-changes-to-options.h.patch
@@ -2,20 +2,20 @@ Subject: [PATCH 1/6] urandom-xauth-changes-to-options.h
Upstream-Status: Inappropriate [configuration]
---
- options.h | 2 +-
+ default_options.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/options.h b/options.h
-index 7d06322..71a21c2 100644
---- a/options.h
-+++ b/options.h
-@@ -247,7 +247,7 @@ much traffic. */
+diff --git a/default_options.h b/default_options.h
+index 3b75eb8..1fd8082 100644
+--- a/default_options.h
++++ b/default_options.h
+@@ -243,7 +243,7 @@ Homedir is prepended unless path begins with / */
+
/* The command to invoke for xauth when using X11 forwarding.
* "-q" for quiet */
- #ifndef XAUTH_COMMAND
-#define XAUTH_COMMAND "/usr/bin/xauth -q"
+#define XAUTH_COMMAND "xauth -q"
- #endif
+
/* if you want to enable running an sftp server (such as the one included with
--
diff --git a/meta/recipes-core/dropbear/dropbear/0003-configure.patch b/meta/recipes-core/dropbear/dropbear/0003-configure.patch
deleted file mode 100644
index 8469a50eff7..00000000000
--- a/meta/recipes-core/dropbear/dropbear/0003-configure.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 58dd24a80ca0f400d0761afd9ce2b7f684fc9125 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Eric=20B=C3=A9nard?= <eric@eukrea.com>
-Date: Thu, 25 Apr 2013 00:27:25 +0200
-Subject: [PATCH] configure: add a variable to allow openpty check to be cached
-
-Upstream-Status: Submitted [ https://github.com/mkj/dropbear/pull/48 ]
-
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
----
- configure.ac | 11 ++++++++---
- 1 file changed, 8 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 893b904..245408d 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -177,15 +177,20 @@ AC_ARG_ENABLE(openpty,
- AC_MSG_NOTICE(Not using openpty)
- else
- AC_MSG_NOTICE(Using openpty if available)
-- AC_SEARCH_LIBS(openpty, util, [AC_DEFINE(HAVE_OPENPTY,,Have openpty() function)])
-+ AC_SEARCH_LIBS(openpty, util, [dropbear_cv_func_have_openpty=yes])
- fi
- ],
- [
- AC_MSG_NOTICE(Using openpty if available)
-- AC_SEARCH_LIBS(openpty, util, [AC_DEFINE(HAVE_OPENPTY)])
-+ AC_SEARCH_LIBS(openpty, util, [dropbear_cv_func_have_openpty=yes])
- ]
- )
--
-+
-+if test "x$dropbear_cv_func_have_openpty" = "xyes"; then
-+ AC_DEFINE(HAVE_OPENPTY,,Have openpty() function)
-+ no_ptc_check=yes
-+ no_ptmx_check=yes
-+fi
-
- AC_ARG_ENABLE(syslog,
- [ --disable-syslog Don't include syslog support],
---
-2.8.1
-
diff --git a/meta/recipes-core/dropbear/dropbear/0004-fix-2kb-keys.patch b/meta/recipes-core/dropbear/dropbear/0004-fix-2kb-keys.patch
deleted file mode 100644
index 60c6a29d650..00000000000
--- a/meta/recipes-core/dropbear/dropbear/0004-fix-2kb-keys.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Subject: [PATCH 4/6] fix 2kb keys
-
-Upstream-Status: Inappropriate [configuration]
----
- kex.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: dropbear-2017.75/kex.h
-===================================================================
---- dropbear-2017.75.orig/kex.h
-+++ dropbear-2017.75/kex.h
-@@ -106,6 +106,6 @@ int curve25519_donna(unsigned char *out,
- #endif
-
-
--#define MAX_KEXHASHBUF 2000
-+#define MAX_KEXHASHBUF 3000
-
- #endif /* DROPBEAR_KEX_H_ */
diff --git a/meta/recipes-core/dropbear/dropbear/0005-dropbear-enable-pam.patch b/meta/recipes-core/dropbear/dropbear/0005-dropbear-enable-pam.patch
index 539cb12e91d..857681520c7 100644
--- a/meta/recipes-core/dropbear/dropbear/0005-dropbear-enable-pam.patch
+++ b/meta/recipes-core/dropbear/dropbear/0005-dropbear-enable-pam.patch
@@ -3,7 +3,7 @@ From: Jussi Kukkonen <jussi.kukkonen@intel.com>
Date: Wed, 2 Dec 2015 11:36:02 +0200
Subject: Enable pam
-We need modify file option.h besides enabling pam in
+We need modify file default_options.h besides enabling pam in
configure if we want dropbear to support pam.
Upstream-Status: Pending
@@ -11,26 +11,32 @@ Upstream-Status: Pending
Signed-off-by: Xiaofeng Yan <xiaofeng.yan@windriver.com>
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
---
- options.h | 4 ++--
+ default_options.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/options.h b/options.h
-index 94261f6..90bfe2f 100644
---- a/options.h
-+++ b/options.h
-@@ -208,10 +208,10 @@ If you test it please contact the Dropbear author */
+diff --git a/default_options.h b/default_options.h
+index 3b75eb8..8617cd0 100644
+--- a/default_options.h
++++ b/default_options.h
+@@ -179,7 +179,7 @@ group1 in Dropbear server too */
- /* This requires crypt() */
- #ifdef HAVE_CRYPT
--#define ENABLE_SVR_PASSWORD_AUTH
-+/*#define ENABLE_SVR_PASSWORD_AUTH*/
- #endif
- /* PAM requires ./configure --enable-pam */
--/*#define ENABLE_SVR_PAM_AUTH */
-+#define ENABLE_SVR_PAM_AUTH
- #define ENABLE_SVR_PUBKEY_AUTH
+ /* Authentication Types - at least one required.
+ RFC Draft requires pubkey auth, and recommends password */
+-#define DROPBEAR_SVR_PASSWORD_AUTH 1
++#define DROPBEAR_SVR_PASSWORD_AUTH 0
+
+ /* Note: PAM auth is quite simple and only works for PAM modules which just do
+ * a simple "Login: " "Password: " (you can edit the strings in svr-authpam.c).
+@@ -187,7 +187,7 @@ group1 in Dropbear server too */
+ * but there's an interface via a PAM module. It won't work for more complex
+ * PAM challenge/response.
+ * You can't enable both PASSWORD and PAM. */
+-#define DROPBEAR_SVR_PAM_AUTH 0
++#define DROPBEAR_SVR_PAM_AUTH 1
+
+ /* ~/.ssh/authorized_keys authentication */
+ #define DROPBEAR_SVR_PUBKEY_AUTH 1
- /* Whether to take public key options in
--
2.1.4
diff --git a/meta/recipes-core/dropbear/dropbear/0006-dropbear-configuration-file.patch b/meta/recipes-core/dropbear/dropbear/0006-dropbear-configuration-file.patch
index fa4c8d0a671..deed78ffb91 100644
--- a/meta/recipes-core/dropbear/dropbear/0006-dropbear-configuration-file.patch
+++ b/meta/recipes-core/dropbear/dropbear/0006-dropbear-configuration-file.patch
@@ -1,4 +1,7 @@
-Subject: [PATCH 6/6] dropbear configuration file
+From e3a5db1b6d3f6382a15b2266458c26c645a10f18 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <Mingli.Yu@windriver.com>
+Date: Thu, 6 Sep 2018 15:54:00 +0800
+Subject: [PATCH] dropbear configuration file
dropbear: Change the path ("/etc/pam.d/sshd" as default) to find a pam configuration file \
to "/etc/pam.d/dropbear for dropbear when enabling pam supporting"
@@ -7,12 +10,17 @@ Upstream-Status: Inappropriate [configuration]
Signed-off-by: Maxin B. John <maxin.john@enea.com>
Signed-off-by: Xiaofeng Yan <xiaofeng.yan@windriver.com>
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
---
-diff -Naur dropbear-2013.60-orig/svr-authpam.c dropbear-2013.60/svr-authpam.c
---- dropbear-2013.60-orig/svr-authpam.c 2013-10-16 16:34:53.000000000 +0200
-+++ dropbear-2013.60/svr-authpam.c 2013-10-21 17:04:04.969416055 +0200
-@@ -211,7 +211,7 @@
- userData.passwd = password;
+ svr-authpam.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/svr-authpam.c b/svr-authpam.c
+index d201bc9..165ec5c 100644
+--- a/svr-authpam.c
++++ b/svr-authpam.c
+@@ -223,7 +223,7 @@ void svr_auth_pam(int valid_user) {
+ }
/* Init pam */
- if ((rc = pam_start("sshd", NULL, &pamConv, &pamHandlep)) != PAM_SUCCESS) {
@@ -20,3 +28,6 @@ diff -Naur dropbear-2013.60-orig/svr-authpam.c dropbear-2013.60/svr-authpam.c
dropbear_log(LOG_WARNING, "pam_start() failed, rc=%d, %s",
rc, pam_strerror(pamHandlep, rc));
goto cleanup;
+--
+2.7.4
+
diff --git a/meta/recipes-core/dropbear/dropbear/0007-dropbear-fix-for-x32-abi.patch b/meta/recipes-core/dropbear/dropbear/0007-dropbear-fix-for-x32-abi.patch
deleted file mode 100644
index 60b302b5cd7..00000000000
--- a/meta/recipes-core/dropbear/dropbear/0007-dropbear-fix-for-x32-abi.patch
+++ /dev/null
@@ -1,140 +0,0 @@
-Upstream-Status: Pending
-
-The dropbearkey utility built in x32 abi format, when generating ssh
-keys, was getting lost in the infinite loop.
-
-This patch fixes the issue by fixing types of variables and
-parameters of functions used in the code, which were getting
-undesired size, when compiled with the x32 abi toolchain.
-
-2013/05/23
-Received this fix from H J Lu.
-
-Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
-
-# HG changeset patch
-# User H.J. Lu <hjl.tools@gmail.com>
-# Date 1369344079 25200
-# Node ID a10a1c46b857cc8a3923c3bb6d1504aa25b6052f
-# Parent e76614145aea67f66e4a4257685c771efba21aa1
-Typdef mp_digit to unsigned long long for MP_64BIT
-
-When GCC is used with MP_64BIT, we should typedef mp_digit to unsigned
-long long instead of unsigned long since for x32, unsigned long is
-32-bit and unsigned long long is 64-bit and it is safe to use unsigned
-long long for 64-bit integer with GCC.
-
-diff -r e76614145aea -r a10a1c46b857 libtommath/tommath.h
---- a/libtommath/tommath.h Thu Apr 18 22:57:47 2013 +0800
-+++ b/libtommath/tommath.h Thu May 23 14:21:19 2013 -0700
-@@ -73,7 +73,7 @@
- typedef signed long long long64;
- #endif
-
-- typedef unsigned long mp_digit;
-+ typedef unsigned long long mp_digit;
- typedef unsigned long mp_word __attribute__ ((mode(TI)));
-
- #define DIGIT_BIT 60
-# HG changeset patch
-# User H.J. Lu <hjl.tools@gmail.com>
-# Date 1369344241 25200
-# Node ID c7555a4cb7ded3a88409ba85f4027baa7af5f536
-# Parent a10a1c46b857cc8a3923c3bb6d1504aa25b6052f
-Cast to mp_digit when updating *rho
-
-There is
-
-int
-mp_montgomery_setup (mp_int * n, mp_digit * rho)
-
-We should cast to mp_digit instead of unsigned long when updating
-*rho since mp_digit may be unsigned long long and unsigned long long
-may be different from unsigned long, like in x32.
-
-diff -r a10a1c46b857 -r c7555a4cb7de libtommath/bn_mp_montgomery_setup.c
---- a/libtommath/bn_mp_montgomery_setup.c Thu May 23 14:21:19 2013 -0700
-+++ b/libtommath/bn_mp_montgomery_setup.c Thu May 23 14:24:01 2013 -0700
-@@ -48,7 +48,7 @@
- #endif
-
- /* rho = -1/m mod b */
-- *rho = (unsigned long)(((mp_word)1 << ((mp_word) DIGIT_BIT)) - x) & MP_MASK;
-+ *rho = (mp_digit)(((mp_word)1 << ((mp_word) DIGIT_BIT)) - x) & MP_MASK;
-
- return MP_OKAY;
- }
-# HG changeset patch
-# User H.J. Lu <hjl.tools@gmail.com>
-# Date 1369344541 25200
-# Node ID 7c656e7071a6412688b2f30a529a9afac6c7bf5a
-# Parent c7555a4cb7ded3a88409ba85f4027baa7af5f536
-Define LTC_FAST_TYPE to unsigned long long for __x86_64__
-
-We should define LTC_FAST_TYPE to unsigned long long instead of unsigned
-long if __x86_64__ to support x32 where unsigned long long is 64-bit
-and unsigned long is 32-bit.
-
-diff -r c7555a4cb7de -r 7c656e7071a6 libtomcrypt/src/headers/tomcrypt_cfg.h
---- a/libtomcrypt/src/headers/tomcrypt_cfg.h Thu May 23 14:24:01 2013 -0700
-+++ b/libtomcrypt/src/headers/tomcrypt_cfg.h Thu May 23 14:29:01 2013 -0700
-@@ -74,7 +74,7 @@
- #define ENDIAN_LITTLE
- #define ENDIAN_64BITWORD
- #define LTC_FAST
-- #define LTC_FAST_TYPE unsigned long
-+ #define LTC_FAST_TYPE unsigned long long
- #endif
-
- /* detect PPC32 */
-# HG changeset patch
-# User H.J. Lu <hjl.tools@gmail.com>
-# Date 1369344730 25200
-# Node ID a7d4690158fae4ede2c4e5b56233e83730bf38ee
-# Parent 7c656e7071a6412688b2f30a529a9afac6c7bf5a
-Use unsigned long long aas unsigned 64-bit integer for x86-64 GCC
-
-We should use unsigned long long instead of unsigned long as unsigned
-64-bit integer for x86-64 GCC to support x32 where unsigned long is
-32-bit.
-
-diff -r 7c656e7071a6 -r a7d4690158fa libtomcrypt/src/headers/tomcrypt_macros.h
---- a/libtomcrypt/src/headers/tomcrypt_macros.h Thu May 23 14:29:01 2013 -0700
-+++ b/libtomcrypt/src/headers/tomcrypt_macros.h Thu May 23 14:32:10 2013 -0700
-@@ -343,7 +343,7 @@
- /* 64-bit Rotates */
- #if !defined(__STRICT_ANSI__) && defined(__GNUC__) && defined(__x86_64__) && !defined(LTC_NO_ASM)
-
--static inline unsigned long ROL64(unsigned long word, int i)
-+static inline unsigned long long ROL64(unsigned long long word, int i)
- {
- asm("rolq %%cl,%0"
- :"=r" (word)
-@@ -351,7 +351,7 @@
- return word;
- }
-
--static inline unsigned long ROR64(unsigned long word, int i)
-+static inline unsigned long long ROR64(unsigned long long word, int i)
- {
- asm("rorq %%cl,%0"
- :"=r" (word)
-@@ -361,7 +361,7 @@
-
- #ifndef LTC_NO_ROLC
-
--static inline unsigned long ROL64c(unsigned long word, const int i)
-+static inline unsigned long long ROL64c(unsigned long long word, const int i)
- {
- asm("rolq %2,%0"
- :"=r" (word)
-@@ -369,7 +369,7 @@
- return word;
- }
-
--static inline unsigned long ROR64c(unsigned long word, const int i)
-+static inline unsigned long long ROR64c(unsigned long long word, const int i)
- {
- asm("rorq %2,%0"
- :"=r" (word)
-
diff --git a/meta/recipes-core/dropbear/dropbear/CVE-2018-15599.patch b/meta/recipes-core/dropbear/dropbear/CVE-2018-15599.patch
new file mode 100644
index 00000000000..912545c957a
--- /dev/null
+++ b/meta/recipes-core/dropbear/dropbear/CVE-2018-15599.patch
@@ -0,0 +1,236 @@
+From 256e2abb8150f9fea33cd026597dbe70f0379296 Mon Sep 17 00:00:00 2001
+From: Matt Johnston <matt@ucc.asn.au>
+Date: Thu, 23 Aug 2018 23:43:12 +0800
+Subject: [PATCH] Wait to fail invalid usernames
+
+Wait to fail invalid usernames
+
+Upstream-Status: Backport [https://secure.ucc.asn.au/hg/dropbear/rev/5d2d1021ca00]
+CVE: CVE-2018-15599
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+---
+ auth.h | 6 +++---
+ svr-auth.c | 19 +++++--------------
+ svr-authpam.c | 26 ++++++++++++++++++++++----
+ svr-authpasswd.c | 27 ++++++++++++++-------------
+ svr-authpubkey.c | 11 ++++++++++-
+ 5 files changed, 54 insertions(+), 35 deletions(-)
+
+diff --git a/auth.h b/auth.h
+index da498f5..98f5468 100644
+--- a/auth.h
++++ b/auth.h
+@@ -37,9 +37,9 @@ void recv_msg_userauth_request(void);
+ void send_msg_userauth_failure(int partial, int incrfail);
+ void send_msg_userauth_success(void);
+ void send_msg_userauth_banner(const buffer *msg);
+-void svr_auth_password(void);
+-void svr_auth_pubkey(void);
+-void svr_auth_pam(void);
++void svr_auth_password(int valid_user);
++void svr_auth_pubkey(int valid_user);
++void svr_auth_pam(int valid_user);
+
+ #if DROPBEAR_SVR_PUBKEY_OPTIONS_BUILT
+ int svr_pubkey_allows_agentfwd(void);
+diff --git a/svr-auth.c b/svr-auth.c
+index 64d97aa..1f364ca 100644
+--- a/svr-auth.c
++++ b/svr-auth.c
+@@ -149,10 +149,8 @@ void recv_msg_userauth_request() {
+ if (methodlen == AUTH_METHOD_PASSWORD_LEN &&
+ strncmp(methodname, AUTH_METHOD_PASSWORD,
+ AUTH_METHOD_PASSWORD_LEN) == 0) {
+- if (valid_user) {
+- svr_auth_password();
+- goto out;
+- }
++ svr_auth_password(valid_user);
++ goto out;
+ }
+ }
+ #endif
+@@ -164,10 +162,8 @@ void recv_msg_userauth_request() {
+ if (methodlen == AUTH_METHOD_PASSWORD_LEN &&
+ strncmp(methodname, AUTH_METHOD_PASSWORD,
+ AUTH_METHOD_PASSWORD_LEN) == 0) {
+- if (valid_user) {
+- svr_auth_pam();
+- goto out;
+- }
++ svr_auth_pam(valid_user);
++ goto out;
+ }
+ }
+ #endif
+@@ -177,12 +173,7 @@ void recv_msg_userauth_request() {
+ if (methodlen == AUTH_METHOD_PUBKEY_LEN &&
+ strncmp(methodname, AUTH_METHOD_PUBKEY,
+ AUTH_METHOD_PUBKEY_LEN) == 0) {
+- if (valid_user) {
+- svr_auth_pubkey();
+- } else {
+- /* pubkey has no failure delay */
+- send_msg_userauth_failure(0, 0);
+- }
++ svr_auth_pubkey(valid_user);
+ goto out;
+ }
+ #endif
+diff --git a/svr-authpam.c b/svr-authpam.c
+index 05e4f3e..d201bc9 100644
+--- a/svr-authpam.c
++++ b/svr-authpam.c
+@@ -178,13 +178,14 @@ pamConvFunc(int num_msg,
+ * Keyboard interactive would be a lot nicer, but since PAM is synchronous, it
+ * gets very messy trying to send the interactive challenges, and read the
+ * interactive responses, over the network. */
+-void svr_auth_pam() {
++void svr_auth_pam(int valid_user) {
+
+ struct UserDataS userData = {NULL, NULL};
+ struct pam_conv pamConv = {
+ pamConvFunc,
+ &userData /* submitted to pamvConvFunc as appdata_ptr */
+ };
++ const char* printable_user = NULL;
+
+ pam_handle_t* pamHandlep = NULL;
+
+@@ -204,12 +205,23 @@ void svr_auth_pam() {
+
+ password = buf_getstring(ses.payload, &passwordlen);
+
++ /* We run the PAM conversation regardless of whether the username is valid
++ in case the conversation function has an inherent delay.
++ Use ses.authstate.username rather than ses.authstate.pw_name.
++ After PAM succeeds we then check the valid_user flag too */
++
+ /* used to pass data to the PAM conversation function - don't bother with
+ * strdup() etc since these are touched only by our own conversation
+ * function (above) which takes care of it */
+- userData.user = ses.authstate.pw_name;
++ userData.user = ses.authstate.username;
+ userData.passwd = password;
+
++ if (ses.authstate.pw_name) {
++ printable_user = ses.authstate.pw_name;
++ } else {
++ printable_user = "<invalid username>";
++ }
++
+ /* Init pam */
+ if ((rc = pam_start("sshd", NULL, &pamConv, &pamHandlep)) != PAM_SUCCESS) {
+ dropbear_log(LOG_WARNING, "pam_start() failed, rc=%d, %s",
+@@ -242,7 +254,7 @@ void svr_auth_pam() {
+ rc, pam_strerror(pamHandlep, rc));
+ dropbear_log(LOG_WARNING,
+ "Bad PAM password attempt for '%s' from %s",
+- ses.authstate.pw_name,
++ printable_user,
+ svr_ses.addrstring);
+ send_msg_userauth_failure(0, 1);
+ goto cleanup;
+@@ -253,12 +265,18 @@ void svr_auth_pam() {
+ rc, pam_strerror(pamHandlep, rc));
+ dropbear_log(LOG_WARNING,
+ "Bad PAM password attempt for '%s' from %s",
+- ses.authstate.pw_name,
++ printable_user,
+ svr_ses.addrstring);
+ send_msg_userauth_failure(0, 1);
+ goto cleanup;
+ }
+
++ if (!valid_user) {
++ /* PAM auth succeeded but the username isn't allowed in for another reason
++ (checkusername() failed) */
++ send_msg_userauth_failure(0, 1);
++ }
++
+ /* successful authentication */
+ dropbear_log(LOG_NOTICE, "PAM password auth succeeded for '%s' from %s",
+ ses.authstate.pw_name,
+diff --git a/svr-authpasswd.c b/svr-authpasswd.c
+index bdee2aa..69c7d8a 100644
+--- a/svr-authpasswd.c
++++ b/svr-authpasswd.c
+@@ -48,22 +48,14 @@ static int constant_time_strcmp(const char* a, const char* b) {
+
+ /* Process a password auth request, sending success or failure messages as
+ * appropriate */
+-void svr_auth_password() {
++void svr_auth_password(int valid_user) {
+
+ char * passwdcrypt = NULL; /* the crypt from /etc/passwd or /etc/shadow */
+ char * testcrypt = NULL; /* crypt generated from the user's password sent */
+- char * password;
++ char * password = NULL;
+ unsigned int passwordlen;
+-
+ unsigned int changepw;
+
+- passwdcrypt = ses.authstate.pw_passwd;
+-
+-#ifdef DEBUG_HACKCRYPT
+- /* debugging crypt for non-root testing with shadows */
+- passwdcrypt = DEBUG_HACKCRYPT;
+-#endif
+-
+ /* check if client wants to change password */
+ changepw = buf_getbool(ses.payload);
+ if (changepw) {
+@@ -73,12 +65,21 @@ void svr_auth_password() {
+ }
+
+ password = buf_getstring(ses.payload, &passwordlen);
+-
+- /* the first bytes of passwdcrypt are the salt */
+- testcrypt = crypt(password, passwdcrypt);
++ if (valid_user) {
++ /* the first bytes of passwdcrypt are the salt */
++ passwdcrypt = ses.authstate.pw_passwd;
++ testcrypt = crypt(password, passwdcrypt);
++ }
+ m_burn(password, passwordlen);
+ m_free(password);
+
++ /* After we have got the payload contents we can exit if the username
++ is invalid. Invalid users have already been logged. */
++ if (!valid_user) {
++ send_msg_userauth_failure(0, 1);
++ return;
++ }
++
+ if (testcrypt == NULL) {
+ /* crypt() with an invalid salt like "!!" */
+ dropbear_log(LOG_WARNING, "User account '%s' is locked",
+diff --git a/svr-authpubkey.c b/svr-authpubkey.c
+index aa6087c..ff481c8 100644
+--- a/svr-authpubkey.c
++++ b/svr-authpubkey.c
+@@ -79,7 +79,7 @@ static int checkfileperm(char * filename);
+
+ /* process a pubkey auth request, sending success or failure message as
+ * appropriate */
+-void svr_auth_pubkey() {
++void svr_auth_pubkey(int valid_user) {
+
+ unsigned char testkey; /* whether we're just checking if a key is usable */
+ char* algo = NULL; /* pubkey algo */
+@@ -102,6 +102,15 @@ void svr_auth_pubkey() {
+ keybloblen = buf_getint(ses.payload);
+ keyblob = buf_getptr(ses.payload, keybloblen);
+
++ if (!valid_user) {
++ /* Return failure once we have read the contents of the packet
++ required to validate a public key.
++ Avoids blind user enumeration though it isn't possible to prevent
++ testing for user existence if the public key is known */
++ send_msg_userauth_failure(0, 0);
++ goto out;
++ }
++
+ /* check if the key is valid */
+ if (checkpubkey(algo, algolen, keyblob, keybloblen) == DROPBEAR_FAILURE) {
+ send_msg_userauth_failure(0, 0);
diff --git a/meta/recipes-core/dropbear/dropbear/dropbear.default b/meta/recipes-core/dropbear/dropbear/dropbear.default
new file mode 100644
index 00000000000..522453a86c1
--- /dev/null
+++ b/meta/recipes-core/dropbear/dropbear/dropbear.default
@@ -0,0 +1,2 @@
+# Disallow root logins by default
+DROPBEAR_EXTRA_ARGS="-w"
diff --git a/meta/recipes-core/dropbear/dropbear/fix-libtomcrypt-libtommath-ordering.patch b/meta/recipes-core/dropbear/dropbear/fix-libtomcrypt-libtommath-ordering.patch
deleted file mode 100644
index 2b05e1893db..00000000000
--- a/meta/recipes-core/dropbear/dropbear/fix-libtomcrypt-libtommath-ordering.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From f37fa9a41f248fa41dd74a41c66cb41a291c03d2 Mon Sep 17 00:00:00 2001
-From: Andre McCurdy <armccurdy@gmail.com>
-Date: Fri, 16 Sep 2016 12:18:23 -0700
-Subject: [PATCH] fix libtomcrypt/libtommath ordering
-
-To prevent build failures when using system libtom libraries and
-linking with --as-needed, LIBTOM_LIBS should be in the order
--ltomcrypt -ltommath, not the other way around, ie libs should be
-prepended to LIBTOM_LIBS as they are found, not appended.
-
-Note that LIBTOM_LIBS is not used when linking with the bundled
-libtom libs.
-
-Upstream-Status: Backport [ https://github.com/mkj/dropbear/commit/f9e6bc2aecab0f4b5b529e07a92cc63c8a66cd4b ]
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
----
- configure.ac | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 245408d..d624853 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -393,16 +393,16 @@ AC_ARG_ENABLE(bundled-libtom,
- AC_MSG_NOTICE(Forcing bundled libtom*)
- else
- BUNDLED_LIBTOM=0
-- AC_CHECK_LIB(tommath, mp_exptmod, LIBTOM_LIBS="$LIBTOM_LIBS -ltommath",
-+ AC_CHECK_LIB(tommath, mp_exptmod, LIBTOM_LIBS="-ltommath $LIBTOM_LIBS",
- [AC_MSG_ERROR([Missing system libtommath and --disable-bundled-libtom was specified])] )
-- AC_CHECK_LIB(tomcrypt, register_cipher, LIBTOM_LIBS="$LIBTOM_LIBS -ltomcrypt",
-+ AC_CHECK_LIB(tomcrypt, register_cipher, LIBTOM_LIBS="-ltomcrypt $LIBTOM_LIBS",
- [AC_MSG_ERROR([Missing system libtomcrypt and --disable-bundled-libtom was specified])] )
- fi
- ],
- [
- BUNDLED_LIBTOM=0
-- AC_CHECK_LIB(tommath, mp_exptmod, LIBTOM_LIBS="$LIBTOM_LIBS -ltommath", BUNDLED_LIBTOM=1)
-- AC_CHECK_LIB(tomcrypt, register_cipher, LIBTOM_LIBS="$LIBTOM_LIBS -ltomcrypt", BUNDLED_LIBTOM=1)
-+ AC_CHECK_LIB(tommath, mp_exptmod, LIBTOM_LIBS="-ltommath $LIBTOM_LIBS", BUNDLED_LIBTOM=1)
-+ AC_CHECK_LIB(tomcrypt, register_cipher, LIBTOM_LIBS="-ltomcrypt $LIBTOM_LIBS", BUNDLED_LIBTOM=1)
- ]
- )
-
---
-2.8.1
-
diff --git a/meta/recipes-core/dropbear/dropbear/init b/meta/recipes-core/dropbear/dropbear/init
index f6e1c462fab..ffab7a2362b 100755
--- a/meta/recipes-core/dropbear/dropbear/init
+++ b/meta/recipes-core/dropbear/dropbear/init
@@ -17,8 +17,11 @@ NAME=dropbear
DESC="Dropbear SSH server"
PIDFILE=/var/run/dropbear.pid
+# These values may be replaced by those from /etc/default/dropbear
+DROPBEAR_RSAKEY_DIR="/etc/dropbear"
DROPBEAR_PORT=22
DROPBEAR_EXTRA_ARGS=
+DROPBEAR_RSAKEY_ARGS=
NO_START=0
set -e
@@ -28,32 +31,19 @@ test "$NO_START" = "0" || exit 0
test -x "$DAEMON" || exit 0
test ! -h /var/service/dropbear || exit 0
-readonly_rootfs=0
-for flag in `awk '{ if ($2 == "/") { split($4,FLAGS,",") } }; END { for (f in FLAGS) print FLAGS[f] }' </proc/mounts`; do
- case $flag in
- ro)
- readonly_rootfs=1
- ;;
- esac
-done
-
-if [ $readonly_rootfs = "1" ]; then
- mkdir -p /var/lib/dropbear
- DROPBEAR_RSAKEY_DEFAULT="/var/lib/dropbear/dropbear_rsa_host_key"
-else
- DROPBEAR_RSAKEY_DEFAULT="/etc/dropbear/dropbear_rsa_host_key"
-fi
-
test -z "$DROPBEAR_BANNER" || \
DROPBEAR_EXTRA_ARGS="$DROPBEAR_EXTRA_ARGS -b $DROPBEAR_BANNER"
test -n "$DROPBEAR_RSAKEY" || \
- DROPBEAR_RSAKEY=$DROPBEAR_RSAKEY_DEFAULT
+ DROPBEAR_RSAKEY="${DROPBEAR_RSAKEY_DIR}/dropbear_rsa_host_key"
gen_keys() {
if [ -f "$DROPBEAR_RSAKEY" -a ! -s "$DROPBEAR_RSAKEY" ]; then
rm $DROPBEAR_RSAKEY || true
fi
- test -f $DROPBEAR_RSAKEY || dropbearkey -t rsa -f $DROPBEAR_RSAKEY $DROPBEAR_RSAKEY_ARGS
+ if [ ! -f "$DROPBEAR_RSAKEY" ]; then
+ mkdir -p ${DROPBEAR_RSAKEY%/*}
+ dropbearkey -t rsa -f $DROPBEAR_RSAKEY $DROPBEAR_RSAKEY_ARGS
+ fi
}
case "$1" in
diff --git a/meta/recipes-core/dropbear/dropbear_2017.75.bb b/meta/recipes-core/dropbear/dropbear_2017.75.bb
deleted file mode 100644
index cfb0d199b36..00000000000
--- a/meta/recipes-core/dropbear/dropbear_2017.75.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require dropbear.inc
-
-SRC_URI[md5sum] = "e57e9b9d25705dcb073ba15c416424fd"
-SRC_URI[sha256sum] = "6cbc1dcb1c9709d226dff669e5604172a18cf5dbf9a201474d5618ae4465098c"
-
diff --git a/meta/recipes-core/dropbear/dropbear_2018.76.bb b/meta/recipes-core/dropbear/dropbear_2018.76.bb
new file mode 100644
index 00000000000..36a58d5cef9
--- /dev/null
+++ b/meta/recipes-core/dropbear/dropbear_2018.76.bb
@@ -0,0 +1,5 @@
+require dropbear.inc
+
+SRC_URI[md5sum] = "c3912f7fcdcc57c99937e4a79480d2c2"
+SRC_URI[sha256sum] = "f2fb9167eca8cf93456a5fc1d4faf709902a3ab70dd44e352f3acbc3ffdaea65"
+
diff --git a/meta/recipes-core/expat/expat_2.2.5.bb b/meta/recipes-core/expat/expat_2.2.6.bb
index c68a2ef367d..c9e6081a357 100644
--- a/meta/recipes-core/expat/expat_2.2.5.bb
+++ b/meta/recipes-core/expat/expat_2.2.6.bb
@@ -11,8 +11,8 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/expat/expat-${PV}.tar.bz2 \
file://libtool-tag.patch \
"
-SRC_URI[md5sum] = "789e297f547980fc9ecc036f9a070d49"
-SRC_URI[sha256sum] = "d9dc32efba7e74f788fcc4f212a43216fc37cf5f23f4c2339664d473353aedf6"
+SRC_URI[md5sum] = "ca047ae951b40020ac831c28859161b2"
+SRC_URI[sha256sum] = "17b43c2716d521369f82fc2dc70f359860e90fa440bea65b3b85f0b246ea81f2"
inherit autotools lib_package
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 aee96aaa6e7..0ebf138d60a 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,30 +1,30 @@
-From d6501b107940e9f548c89236d773c6d33c15a5c9 Mon Sep 17 00:00:00 2001
+From d250652782b65b071b7cc8f01f2db833df104e0e 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 1/2] Do not ignore return value of write()
+Subject: [PATCH] Do not ignore return value of write()
gcc warns about ignoring return value when compiling
with fortify turned on.
assert when write() fails
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
Upstream-Status: Submitted
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
glib/tests/unix.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/glib/tests/unix.c b/glib/tests/unix.c
-index 3543458..4e7ed85 100644
+index 9d55a6c..a07f945 100644
--- a/glib/tests/unix.c
+++ b/glib/tests/unix.c
@@ -32,14 +32,15 @@ test_pipe (void)
GError *error = NULL;
int pipefd[2];
char buf[1024];
-- ssize_t bytes_read;
-+ ssize_t bytes_read, bytes_written;
+- gssize bytes_read;
++ gssize bytes_read, bytes_written;
gboolean res;
res = g_unix_open_pipe (pipefd, FD_CLOEXEC, &error);
@@ -37,6 +37,3 @@ index 3543458..4e7ed85 100644
memset (buf, 0, sizeof (buf));
bytes_read = read (pipefd[0], buf, sizeof(buf) - 1);
g_assert_cmpint (bytes_read, >, 0);
---
-2.8.0
-
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 561d100209e..97d0aff5d6c 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 80682c171ccb27d01343d4cfcfb4dd49b7863ccc Mon Sep 17 00:00:00 2001
+From 856045927b9ab391165c0ebabf401835f8439eab 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
@@ -8,24 +8,22 @@ renamer does not cope with library packages with files in ${bindir}
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
Upstream-Status: Inappropriate [OE specific]
+
---
gio/Makefile.am | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/gio/Makefile.am b/gio/Makefile.am
-index b7f91cc..4d81cc0 100644
+index e14cad2..bf2bcc7 100644
--- a/gio/Makefile.am
+++ b/gio/Makefile.am
-@@ -702,7 +702,8 @@ gio.def: libgio-2.0.la
+@@ -835,7 +835,8 @@ gio.def: libgio-2.0.la
gio-2.0.lib: libgio-2.0.la gio.def
$(AM_V_GEN) lib.exe -machine:@LIB_EXE_MACHINE_FLAG@ -name:libgio-2.0-$(LT_CURRENT_MINUS_AGE).dll -def:$(builddir)/gio.def -out:$@
--bin_PROGRAMS = gio-querymodules glib-compile-schemas glib-compile-resources gsettings
-+bin_PROGRAMS = glib-compile-schemas glib-compile-resources gsettings
+-bin_PROGRAMS = gio-querymodules glib-compile-schemas glib-compile-resources gsettings gio-launch-desktop
++bin_PROGRAMS = glib-compile-schemas glib-compile-resources gsettings gio-launch-desktop
+libexec_PROGRAMS = gio-querymodules
glib_compile_resources_LDADD = libgio-2.0.la \
$(top_builddir)/gobject/libgobject-2.0.la \
---
-2.1.4
-
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/0001-Test-for-pthread_getname_np-before-using-it.patch b/meta/recipes-core/glib-2.0/glib-2.0/0001-Test-for-pthread_getname_np-before-using-it.patch
deleted file mode 100644
index c6e4966bb8b..00000000000
--- a/meta/recipes-core/glib-2.0/glib-2.0/0001-Test-for-pthread_getname_np-before-using-it.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From f627fe16099a2b08d8b4e9023ae6b4f352451967 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 6 Nov 2016 08:59:08 -0800
-Subject: [PATCH] Test for pthread_getname_np before using it
-
-Its a GNU extention and not all libc implement it
-musl e.g. implements the setname API but not getname
-in any case, it seems to be safer to check for the
-function before using it.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted
-
- config.h.in | 3 +++
- configure.ac | 10 ++++++++++
- glib/tests/thread.c | 2 +-
- 3 files changed, 14 insertions(+), 1 deletion(-)
-
-diff --git a/config.h.in b/config.h.in
-index 2c35ff1..da7ac30 100644
---- a/config.h.in
-+++ b/config.h.in
-@@ -326,6 +326,9 @@
- #undef HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP
-
- /* Have function pthread_setname_np(const char*) */
-+#undef HAVE_PTHREAD_GETNAME_NP
-+
-+/* Have function pthread_setname_np(const char*) */
- #undef HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID
-
- /* Have function pthread_setname_np(pthread_t, const char*) */
-diff --git a/configure.ac b/configure.ac
-index 4309671..209770a 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -2121,6 +2121,16 @@ AS_IF([ test x"$have_threads" = xposix], [
- AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP,1,
- [Have function pthread_cond_timedwait_relative_np])],
- [AC_MSG_RESULT(no)])
-+ dnl gets thread names
-+ AC_MSG_CHECKING(for pthread_getname_np(pthread_t, char*, size_t))
-+ AC_LINK_IFELSE(
-+ [AC_LANG_PROGRAM(
-+ [#include <pthread.h>],
-+ [pthread_getname_np(pthread_self(),"example",0)])],
-+ [AC_MSG_RESULT(yes)
-+ AC_DEFINE(HAVE_PTHREAD_GETNAME_NP,1,
-+ [Have function pthread_setname_np(const char*)])],
-+ [AC_MSG_RESULT(no)])
- dnl Sets thread names on OS X 10.6, iOS 3.2 (and higher)
- AC_MSG_CHECKING(for pthread_setname_np(const char*))
- AC_LINK_IFELSE(
-diff --git a/glib/tests/thread.c b/glib/tests/thread.c
-index 5447836..2f248a6 100644
---- a/glib/tests/thread.c
-+++ b/glib/tests/thread.c
-@@ -174,7 +174,7 @@ test_thread5 (void)
- static gpointer
- thread6_func (gpointer data)
- {
--#ifdef HAVE_PTHREAD_SETNAME_NP_WITH_TID
-+#if defined(HAVE_PTHREAD_SETNAME_NP_WITH_TID) && defined(HAVE_PTHREAD_GETNAME_NP)
- char name[16];
-
- pthread_getname_np (pthread_self(), name, 16);
---
-2.10.2
-
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 b98f933dae3..50781e7892b 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,7 +1,7 @@
-From d762907d33b81cf7469b5696c87f2188d2050afb Mon Sep 17 00:00:00 2001
+From 4b1a6d247c78125096a6ea5ab3cab8a1f000dc23 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 06/10] Enable more tests while cross-compiling
+Subject: [PATCH] Enable more tests while cross-compiling
Upstream disables a few tests while cross-compiling because their build requires
running other built binaries. This usually makes sense but in the cross-compile
@@ -16,10 +16,10 @@ Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
2 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/gio/tests/Makefile.am b/gio/tests/Makefile.am
-index acc1da4..9176640 100644
+index 1f0bed7..8295deb 100644
--- a/gio/tests/Makefile.am
+++ b/gio/tests/Makefile.am
-@@ -516,10 +516,9 @@ test_programs += \
+@@ -550,10 +550,9 @@ test_programs += \
endif
# -----------------------------------------------------------------------------
@@ -32,7 +32,7 @@ index acc1da4..9176640 100644
test_programs += resources
resources_SOURCES = resources.c
nodist_resources_SOURCES = test_resources.c test_resources2.c test_resources2.h
-@@ -543,7 +542,11 @@ if !ENABLE_INSTALLED_TESTS
+@@ -578,7 +577,11 @@ if !ENABLE_INSTALLED_TESTS
libresourceplugin_la_LDFLAGS += -rpath /
endif
@@ -44,7 +44,7 @@ index acc1da4..9176640 100644
test-generated.txt: test1.txt
$(AM_V_GEN) echo "Generated" > $@ && \
-@@ -564,7 +567,6 @@ test.gresource: test.gresource.xml Makefile $(shell $(glib_compile_resources) --
+@@ -599,7 +602,6 @@ test.gresource: test.gresource.xml Makefile $(shell $(glib_compile_resources) --
EXTRA_DIST += test.gresource.xml test1.txt test2.gresource.xml test2.txt test3.gresource.xml test3.txt test4.gresource.xml
CLEANFILES += test-generated.txt test_resources.c test_resources2.[ch] plugin_resources.c test.gresource
@@ -53,10 +53,10 @@ index acc1da4..9176640 100644
BUILT_SOURCES += giotypefuncs.inc
diff --git a/tests/gobject/Makefile.am b/tests/gobject/Makefile.am
-index 656941d..68555ff 100644
+index 0e60987..927d13a 100644
--- a/tests/gobject/Makefile.am
+++ b/tests/gobject/Makefile.am
-@@ -48,10 +48,13 @@ if ENABLE_TIMELOOP
+@@ -51,10 +51,13 @@ if ENABLE_TIMELOOP
installed_test_programs += timeloop-closure
endif
@@ -72,14 +72,9 @@ index 656941d..68555ff 100644
testmarshal.h: stamp-testmarshal.h
@true
-@@ -69,7 +72,6 @@ BUILT_SOURCES += testmarshal.h testmarshal.c
- CLEANFILES += stamp-testmarshal.h
+@@ -71,4 +74,3 @@ testmarshal.c: testmarshal.h testmarshal.list $(glib_genmarshal)
+ BUILT_SOURCES += testmarshal.h testmarshal.c
+ CLEANFILES += stamp-testmarshal.h testmarshal.h testmarshal.c
EXTRA_DIST += testcommon.h testmarshal.list
- BUILT_EXTRA_DIST += testmarshal.h testmarshal.c
-endif # !CROSS_COMPILING
-
- dist-hook: $(BUILT_EXTRA_DIST)
- files='$(BUILT_EXTRA_DIST)'; \
---
-2.14.1
-
+\ No newline at end of file
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/allow-run-media-sdX-drive-mount-if-username-root.patch b/meta/recipes-core/glib-2.0/glib-2.0/allow-run-media-sdX-drive-mount-if-username-root.patch
deleted file mode 100644
index 3d0c008bbe7..00000000000
--- a/meta/recipes-core/glib-2.0/glib-2.0/allow-run-media-sdX-drive-mount-if-username-root.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From c53e94a520b573aa0dcf12903e9563fe8badc34c Mon Sep 17 00:00:00 2001
-From: Marius Avram <marius.avram@intel.com>
-Date: Wed, 27 Aug 2014 12:10:41 +0300
-Subject: [PATCH] Allow /run/media/sdX drive mount if username root
-
-In case that the username logged in the system is root
-the drives are directly mounted in /run/media/sdX and
-not /run/media/<username>/sdX as the function
-g_unix_mount_guess_should_display() expects.
-
-Without this change USB stick mounts are not accesible from
-graphical applications such as the File Manager (pcmanfm).
-
-Upstream-Status: Inappropriate
-
-Signed-off-by: Marius Avram <marius.avram@intel.com>
----
- gio/gunixmounts.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/gio/gunixmounts.c b/gio/gunixmounts.c
-index 4999354..f6c1472 100644
---- a/gio/gunixmounts.c
-+++ b/gio/gunixmounts.c
-@@ -2136,6 +2136,11 @@ g_unix_mount_guess_should_display (GUnixMountEntry *mount_entry)
- mount_path[sizeof ("/run/media/") - 1 + user_name_len] == '/')
- is_in_runtime_dir = TRUE;
-
-+ /* Allow no username in path in /run/media if current user is root */
-+ if (strcmp(user_name, "root") == 0 &&
-+ strncmp (mount_path, "/run/media/", sizeof("run/media")) == 0)
-+ is_in_runtime_dir = TRUE;
-+
- if (is_in_runtime_dir || g_str_has_prefix (mount_path, "/media/"))
- {
- char *path;
---
-1.7.9.5
-
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/ptest-paths.patch b/meta/recipes-core/glib-2.0/glib-2.0/ptest-paths.patch
deleted file mode 100644
index f3be02770cb..00000000000
--- a/meta/recipes-core/glib-2.0/glib-2.0/ptest-paths.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-Instead of writing the temporary mapping files in the mappedfile test to the
-user runtime directory, write them to $TMP. The runtime directory may not
-currently exist if the test is executed on a non-desktop system and the test
-doesn't attempt to create the directory structure.
-
-Upstream-Status: Pending
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/glib/tests/mappedfile.c b/glib/tests/mappedfile.c
-index 40e0e60..27a24be 100644
---- a/glib/tests/mappedfile.c
-+++ b/glib/tests/mappedfile.c
-@@ -81,7 +81,7 @@ test_writable (void)
- const gchar *new = "abcdefghijklmnopqrstuvxyz";
- gchar *tmp_copy_path;
-
-- tmp_copy_path = g_build_filename (g_get_user_runtime_dir (), "glib-test-4096-random-bytes", NULL);
-+ tmp_copy_path = g_build_filename (g_get_tmp_dir (), "glib-test-4096-random-bytes", NULL);
-
- g_file_get_contents (g_test_get_filename (G_TEST_DIST, "4096-random-bytes", NULL), &contents, &len, &error);
- g_assert_no_error (error);
-@@ -125,7 +125,7 @@ test_writable_fd (void)
- int fd;
- gchar *tmp_copy_path;
-
-- tmp_copy_path = g_build_filename (g_get_user_runtime_dir (), "glib-test-4096-random-bytes", NULL);
-+ tmp_copy_path = g_build_filename (g_get_tmp_dir (), "glib-test-4096-random-bytes", NULL);
-
- g_file_get_contents (g_test_get_filename (G_TEST_DIST, "4096-random-bytes", NULL), &contents, &len, &error);
- g_assert_no_error (error);
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 65d5b43f9b6..f9794d3dd28 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,3 +1,8 @@
+From 8326961841f4d16c7239e747de11e3817c35cfd2 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
+
Instead of hard-coding GIO_MODULE_PATH when glib is built, use dladdr() to
determine where libglib.so is and use that path to calculate GIO_MODULES_DIR.
@@ -8,12 +13,13 @@ Signed-off-by: Ross Burton <ross.burton@intel.com>
Port patch to 2.48
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+
---
gio/giomodule.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/gio/giomodule.c b/gio/giomodule.c
-index da7c167..cc0bc7c 100644
+index 36c0cef..912e490 100644
--- a/gio/giomodule.c
+++ b/gio/giomodule.c
@@ -40,6 +40,8 @@
@@ -25,7 +31,7 @@ index da7c167..cc0bc7c 100644
#endif
#include <glib/gstdio.h>
-@@ -1036,7 +1038,15 @@ get_gio_module_dir (void)
+@@ -1099,7 +1101,15 @@ get_gio_module_dir (void)
#endif
g_free (install_dir);
#else
@@ -42,6 +48,3 @@ index da7c167..cc0bc7c 100644
#endif
}
---
-2.1.4
-
diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.54.3.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.58.0.bb
index faf594569d6..6ebf1d25994 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0_2.54.3.bb
+++ b/meta/recipes-core/glib-2.0/glib-2.0_2.58.0.bb
@@ -7,18 +7,15 @@ SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}"
SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
file://configure-libtool.patch \
file://run-ptest \
- file://ptest-paths.patch \
file://uclibc_musl_translation.patch \
- file://allow-run-media-sdX-drive-mount-if-username-root.patch \
file://0001-Remove-the-warning-about-deprecated-paths-in-schemas.patch \
file://Enable-more-tests-while-cross-compiling.patch \
file://0001-Install-gio-querymodules-as-libexec_PROGRAM.patch \
file://0001-Do-not-ignore-return-value-of-write.patch \
- file://0001-Test-for-pthread_getname_np-before-using-it.patch \
file://0010-Do-not-hardcode-python-path-into-various-tools.patch \
"
SRC_URI_append_class-native = " file://relocate-modules.patch"
-SRC_URI[md5sum] = "16e886ad677bf07b7d48eb8188bcf759"
-SRC_URI[sha256sum] = "963fdc6685dc3da8e5381dfb9f15ca4b5709b28be84d9d05a9bb8e446abac0a8"
+SRC_URI[md5sum] = "9b5d21c802f55bf37171c4fbfe7d32d1"
+SRC_URI[sha256sum] = "c0f4ce0730b4f95c47b711613b5406a887c2ee13ea6d25930d72a4fa7fdb77f6"
diff --git a/meta/recipes-core/glib-2.0/glib.inc b/meta/recipes-core/glib-2.0/glib.inc
index f645ed6f0cf..6dab19283c8 100644
--- a/meta/recipes-core/glib-2.0/glib.inc
+++ b/meta/recipes-core/glib-2.0/glib.inc
@@ -39,8 +39,9 @@ PACKAGECONFIG ??= "system-pcre libmount"
PACKAGECONFIG[system-pcre] = "--with-pcre=system,--with-pcre=internal,libpcre"
PACKAGECONFIG[libmount] = "--enable-libmount,--disable-libmount,util-linux"
PACKAGECONFIG[manpages] = "--enable-man --with-xml-catalog=${STAGING_ETCDIR_NATIVE}/xml/catalog.xml, --disable-man, libxslt-native xmlto-native"
+PACKAGECONFIG[libelf] = "--enable-libelf,--disable-libelf,elfutils"
-CORECONF = "--disable-dtrace --disable-fam --disable-libelf --disable-systemtap"
+CORECONF = "--disable-dtrace --disable-fam --disable-systemtap"
PRINTF = "--enable-included-printf=no"
PRINTF_darwin = "--enable-included-printf=yes"
@@ -86,10 +87,10 @@ ARM_INSTRUCTION_SET_armv5 = "arm"
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 can tell it to use a fake msgfmt.
+# 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"
-CACHED_CONFIGUREVARS_append_class-native = " ac_cv_path_MSGFMT=/bin/false"
+DEPENDS_append_class-native = " gettext-native"
EXEEXT = ""
EXEEXT_mingw32 = ".exe"
@@ -116,7 +117,7 @@ do_install_append () {
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}
+ # keeps glib-2.0-native from depending on DISTRO_FEATURES
if [ -f ${D}${datadir}/installed-tests/glib/gdbus-serialization.test ]; then
if ${@bb.utils.contains("DISTRO_FEATURES", "x11", "false", "true", d)}; then
rm ${D}${datadir}/installed-tests/glib/gdbus-serialization.test
diff --git a/meta/recipes-core/glib-networking/glib-networking_2.54.1.bb b/meta/recipes-core/glib-networking/glib-networking_2.54.1.bb
index 2a6f8af2b46..5d17a824f08 100644
--- a/meta/recipes-core/glib-networking/glib-networking_2.54.1.bb
+++ b/meta/recipes-core/glib-networking/glib-networking_2.54.1.bb
@@ -1,6 +1,6 @@
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 = "http://git.gnome.org/browse/glib-networking/"
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/glib-networking/"
BUGTRACKER = "http://bugzilla.gnome.org"
LICENSE = "LGPLv2"
diff --git a/meta/recipes-core/glibc/cross-localedef-native_2.27.bb b/meta/recipes-core/glibc/cross-localedef-native_2.28.bb
index 5e92eb71d55..a05b94e3b33 100644
--- a/meta/recipes-core/glibc/cross-localedef-native_2.27.bb
+++ b/meta/recipes-core/glibc/cross-localedef-native_2.28.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "http://www.gnu.org/software/libc/libc.html"
SECTION = "libs"
LICENSE = "LGPL-2.1"
-LIC_FILES_CHKSUM = "file://LICENSES;md5=e9a558e243b36d3209f380deb394b213 \
+LIC_FILES_CHKSUM = "file://LICENSES;md5=cfc0ed77a9f62fa62eded042ebe31d72 \
file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \
file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
@@ -21,21 +21,20 @@ SRCBRANCH ?= "release/${PV}/master"
GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+(\.(?!90)\d+)*)"
-SRCREV_glibc ?= "df3ff4e49d4ee3cbbdaeb0b1cb5dc2344c08be98"
-SRCREV_localedef ?= "de5bdbd5e76b5403a4151b9b9f958b6cca36b3e7"
+SRCREV_glibc ?= "3c03baca37fdcb52c3881e653ca392bba7a99c2b"
+SRCREV_localedef ?= "c328777219ccc480be3112cf807217ca6b570b64"
SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
git://github.com/kraj/localedef;branch=master;name=localedef;destsuffix=git/localedef \
- file://0015-timezone-re-written-tzselect-as-posix-sh.patch \
- file://0016-Remove-bash-dependency-for-nscd-init-script.patch \
- file://0017-eglibc-Cross-building-and-testing-instructions.patch \
- file://0018-eglibc-Help-bootstrap-cross-toolchain.patch \
- file://0019-eglibc-Clear-cache-lines-on-ppc8xx.patch \
- file://0020-eglibc-Resolve-__fpscr_values-on-SH4.patch \
- file://0021-eglibc-Install-PIC-archives.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://archive-path.patch \
+ file://0029-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch \
"
# Makes for a rather long rev (22 characters), but...
#
diff --git a/meta/recipes-core/glibc/glibc-initial.inc b/meta/recipes-core/glibc/glibc-initial.inc
index b86e2fb2db5..acd0d6b1dc5 100644
--- a/meta/recipes-core/glibc/glibc-initial.inc
+++ b/meta/recipes-core/glibc/glibc-initial.inc
@@ -1,4 +1,4 @@
-DEPENDS = "linux-libc-headers virtual/${TARGET_PREFIX}gcc-initial libgcc-initial"
+DEPENDS = "linux-libc-headers virtual/${TARGET_PREFIX}gcc-initial libgcc-initial make-native bison-native"
PROVIDES = "virtual/${TARGET_PREFIX}libc-initial"
PACKAGES = ""
@@ -13,9 +13,9 @@ do_configure () {
cfgscript=`python3 -c "import os; print(os.path.relpath('${S}', '.'))"`/configure
$cfgscript --host=${TARGET_SYS} --build=${BUILD_SYS} \
--prefix=/usr \
- --without-cvs --disable-sanity-checks \
+ --disable-sanity-checks \
--with-headers=${STAGING_DIR_TARGET}${includedir} \
- --enable-hacker-mode --enable-addons
+ --enable-hacker-mode
}
do_compile () {
diff --git a/meta/recipes-core/glibc/glibc-initial_2.27.bb b/meta/recipes-core/glibc/glibc-initial_2.28.bb
index e86770e12d4..e86770e12d4 100644
--- a/meta/recipes-core/glibc/glibc-initial_2.27.bb
+++ b/meta/recipes-core/glibc/glibc-initial_2.28.bb
diff --git a/meta/recipes-core/glibc/glibc-ld.inc b/meta/recipes-core/glibc/glibc-ld.inc
index c1d635dc8df..bb167b32bc5 100644
--- a/meta/recipes-core/glibc/glibc-ld.inc
+++ b/meta/recipes-core/glibc/glibc-ld.inc
@@ -1,43 +1,15 @@
-def ld_append_if_tune_exists(d, infos, dict):
- tune = d.getVar("DEFAULTTUNE") or ""
- libdir = d.getVar("base_libdir") or ""
- if tune in dict:
- infos['ldconfig'].add('{"' + libdir + '/' + dict[tune][0] + '",' + dict[tune][1] + ' }')
- infos['lddrewrite'].add(libdir+'/'+dict[tune][0])
+inherit linuxloader
-def glibc_dl_info(d):
- ld_info_all = {
- "mipsarch": ["ld.so.1", "FLAG_ELF_LIBC6"],
- "mipsarchr6": ["ld-linux-mipsn8.so.1", "FLAG_ELF_LIBC6"],
- "powerpc": ["ld.so.1", "FLAG_ELF_LIBC6"],
- "powerpc-nf": ["ld.so.1", "FLAG_ELF_LIBC6"],
- "powerpc64": ["ld64.so.1", "FLAG_ELF_LIBC6"],
- "powerpc64-nf": ["ld64.so.1", "FLAG_ELF_LIBC6"],
- "core2-32": ["ld-linux.so.2", "FLAG_ELF_LIBC6"],
- "core2-64": ["ld-linux-x86-64.so.2", "FLAG_ELF_LIBC6"],
- "x86": ["ld-linux.so.2", "FLAG_ELF_LIBC6"],
- "x86-64": ["ld-linux-x86-64.so.2", "FLAG_ELF_LIBC6"],
- "i586": ["ld-linux.so.2", "FLAG_ELF_LIBC6"],
- "corei7-32": ["ld-linux.so.2", "FLAG_ELF_LIBC6"],
- "corei7-64": ["ld-linux-x86-64.so.2", "FLAG_ELF_LIBC6"],
- }
+GLIBC_GETLOADER = "${@get_linuxloader(d)}"
+def glibc_dl_info(d):
infos = {'ldconfig':set(), 'lddrewrite':set()}
- ld_append_if_tune_exists(d, infos, ld_info_all)
- #DEFAULTTUNE_MULTILIB_ORIGINAL
- original_tune=d.getVar("DEFAULTTUNE_MULTILIB_ORIGINAL")
- if original_tune:
- localdata = bb.data.createCopy(d)
- localdata.setVar("DEFAULTTUNE", original_tune)
- ld_append_if_tune_exists(localdata, infos, ld_info_all)
+ loaders = all_multilib_tune_values(d, "GLIBC_GETLOADER").split()
+ for loader in loaders:
+ infos['ldconfig'].add('{"' + loader + '",' + "FLAG_ELF_LIBC6" + ' }')
+ infos['lddrewrite'].add(loader)
- variants = d.getVar("MULTILIB_VARIANTS") or ""
- for item in variants.split():
- localdata = bb.data.createCopy(d)
- overrides = localdata.getVar("OVERRIDES", False) + ":virtclass-multilib-" + item
- localdata.setVar("OVERRIDES", overrides)
- ld_append_if_tune_exists(localdata, infos, ld_info_all)
infos['ldconfig'] = ','.join(infos['ldconfig'])
infos['lddrewrite'] = ' '.join(infos['lddrewrite'])
return infos
diff --git a/meta/recipes-core/glibc/glibc-locale.inc b/meta/recipes-core/glibc/glibc-locale.inc
index b3cb10b87a2..1b676dc26e7 100644
--- a/meta/recipes-core/glibc/glibc-locale.inc
+++ b/meta/recipes-core/glibc/glibc-locale.inc
@@ -21,13 +21,13 @@ RDEPENDS_localedef += "glibc"
# to decrease initial boot time and avoid localedef being killed by the OOM
# killer which used to effectively break i18n on machines with < 128MB RAM.
-# default to disabled
+# default to disabled
ENABLE_BINARY_LOCALE_GENERATION ?= "0"
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
-BINARY_LOCALE_ARCHES ?= "arm.* aarch64 i[3-6]86 x86_64 powerpc mips mips64"
+BINARY_LOCALE_ARCHES ?= "arm.* aarch64 i[3-6]86 x86_64 powerpc mips mips64 riscv32 riscv64"
# set "1" to use cross-localedef for locale generation
# set "0" for qemu emulation of native localedef for locale generation
@@ -74,23 +74,22 @@ LOCALETREESRC = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/glibc-stash-locale"
do_install () {
mkdir -p ${D}${bindir} ${D}${datadir} ${D}${libdir}
if [ -n "$(ls ${LOCALETREESRC}/${bindir})" ]; then
- cp -fpPR ${LOCALETREESRC}/${bindir}/* ${D}${bindir}
+ cp -R --no-dereference --preserve=mode,links ${LOCALETREESRC}/${bindir}/* ${D}${bindir}
fi
if [ -n "$(ls ${LOCALETREESRC}/${localedir})" ]; then
mkdir -p ${D}${localedir}
- cp -fpPR ${LOCALETREESRC}/${localedir}/* ${D}${localedir}
+ cp -R --no-dereference --preserve=mode,links ${LOCALETREESRC}/${localedir}/* ${D}${localedir}
fi
if [ -e ${LOCALETREESRC}/${libdir}/gconv ]; then
- cp -fpPR ${LOCALETREESRC}/${libdir}/gconv ${D}${libdir}
+ cp -R --no-dereference --preserve=mode,links ${LOCALETREESRC}/${libdir}/gconv ${D}${libdir}
fi
if [ -e ${LOCALETREESRC}/${datadir}/i18n ]; then
- cp -fpPR ${LOCALETREESRC}/${datadir}/i18n ${D}${datadir}
+ cp -R --no-dereference --preserve=mode,links ${LOCALETREESRC}/${datadir}/i18n ${D}${datadir}
fi
if [ -e ${LOCALETREESRC}/${datadir}/locale ]; then
- cp -fpPR ${LOCALETREESRC}/${datadir}/locale ${D}${datadir}
+ cp -R --no-dereference --preserve=mode,links ${LOCALETREESRC}/${datadir}/locale ${D}${datadir}
fi
- chown root:root -R ${D}
- cp -fpPR ${LOCALETREESRC}/SUPPORTED ${WORKDIR}
+ cp -R --no-dereference --preserve=mode,links ${LOCALETREESRC}/SUPPORTED ${WORKDIR}
}
inherit libc-package
diff --git a/meta/recipes-core/glibc/glibc-locale_2.27.bb b/meta/recipes-core/glibc/glibc-locale_2.28.bb
index f7702e0358c..f7702e0358c 100644
--- a/meta/recipes-core/glibc/glibc-locale_2.27.bb
+++ b/meta/recipes-core/glibc/glibc-locale_2.28.bb
diff --git a/meta/recipes-core/glibc/glibc-mtrace_2.27.bb b/meta/recipes-core/glibc/glibc-mtrace_2.28.bb
index 0b69bad46a3..0b69bad46a3 100644
--- a/meta/recipes-core/glibc/glibc-mtrace_2.27.bb
+++ b/meta/recipes-core/glibc/glibc-mtrace_2.28.bb
diff --git a/meta/recipes-core/glibc/glibc-package.inc b/meta/recipes-core/glibc/glibc-package.inc
index ff45dfe35ad..a98ae1a29c9 100644
--- a/meta/recipes-core/glibc/glibc-package.inc
+++ b/meta/recipes-core/glibc/glibc-package.inc
@@ -1,6 +1,6 @@
INHIBIT_SYSROOT_STRIP = "1"
-PACKAGES = "${PN}-dbg catchsegv sln nscd ldd tzcode glibc-thread-db ${PN}-pic libcidn libmemusage libsegfault ${PN}-pcprofile libsotruss ${PN} ${PN}-utils glibc-extra-nss ${PN}-dev ${PN}-staticdev ${PN}-doc"
+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"
# The ld.so in this glibc supports the GNU_HASH
RPROVIDES_${PN} = "eglibc rtld(GNU_HASH)"
@@ -14,7 +14,7 @@ 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}/libcrypt*.so.* ${base_libdir}/libcrypt-*.so ${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"
+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"
libc_baselibs_append_aarch64 = " /lib/ld-linux-aarch64*.so.1"
INSANE_SKIP_${PN}_append_aarch64 = " libdir"
@@ -23,12 +23,14 @@ 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"
FILES_SOLIBSDEV = "${libdir}/lib*${SOLIBSDEV}"
-FILES_${PN}-dev += "${bindir}/rpcgen ${libdir}/*_nonshared.a ${base_libdir}/*_nonshared.a ${base_libdir}/*.o ${datadir}/aclocal"
+FILES_${PN}-dev += "${libdir}/*_nonshared.a ${base_libdir}/*_nonshared.a ${base_libdir}/*.o ${datadir}/aclocal"
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 \
${sysconfdir}/nscd.conf ${sysconfdir}/default/volatiles/98_nscd ${localstatedir}/db/nscd"
@@ -51,7 +53,7 @@ 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, rpcgen, ..."
+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"
@@ -59,19 +61,17 @@ inherit libc-common multilib_header
do_install_append () {
rm -f ${D}${sysconfdir}/localtime
- rm -rf ${D}${localstatedir}
# remove empty glibc dir
if [ -d ${D}${libexecdir} ]; then
rmdir --ignore-fail-on-non-empty ${D}${libexecdir}
fi
- oe_multilib_header bits/syscall.h bits/long-double.h
+ oe_multilib_header bits/syscall.h bits/long-double.h bits/floatn.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
fi
- rm -rf ${D}${includedir}/rpcsvc/rquota*
# 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
@@ -96,6 +96,7 @@ do_install_append () {
install -d ${D}${localstatedir}/db/nscd
install -m 0755 ${S}/nscd/nscd.init ${D}${sysconfdir}/init.d/nscd
install -m 0755 ${S}/nscd/nscd.conf ${D}${sysconfdir}/nscd.conf
+ install -m 0755 ${WORKDIR}/makedbs.sh ${D}${localstatedir}/db
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
@@ -137,7 +138,6 @@ do_install_append_armeb () {
}
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/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
@@ -207,10 +207,11 @@ do_poststash_install_cleanup () {
rm -rf ${D}/${localedir}
rm -rf ${D}${datadir}/locale
if [ "${libdir}" != "${exec_prefix}/lib" ]; then
- if [ -d ${D}${exec_prefix}/lib/locale ] ; then
- rm -rf ${D}${exec_prefix}/lib/locale
+ if [ -d ${D}${exec_prefix}/lib ]; then
# error out if directory isn't empty
- rm -f ${D}${exec_prefix}/lib
+ # this dir should only contain locale dir
+ # which has been deleted in the previous step
+ rmdir ${D}${exec_prefix}/lib
fi
fi
}
diff --git a/meta/recipes-core/glibc/glibc-scripts_2.27.bb b/meta/recipes-core/glibc/glibc-scripts_2.28.bb
index 5a89bd8022a..5a89bd8022a 100644
--- a/meta/recipes-core/glibc/glibc-scripts_2.27.bb
+++ b/meta/recipes-core/glibc/glibc-scripts_2.28.bb
diff --git a/meta/recipes-core/glibc/glibc.inc b/meta/recipes-core/glibc/glibc.inc
index ce1222be687..e6737073699 100644
--- a/meta/recipes-core/glibc/glibc.inc
+++ b/meta/recipes-core/glibc/glibc.inc
@@ -6,18 +6,6 @@ STAGINGCC = "gcc-cross-initial-${TARGET_ARCH}"
STAGINGCC_class-nativesdk = "gcc-crosssdk-initial-${SDK_SYS}"
PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:"
-python () {
- opt_effective = "-O"
- for opt in d.getVar('SELECTED_OPTIMIZATION').split():
- if opt in ("-O0", "-O", "-O1", "-O2", "-O3", "-Os"):
- opt_effective = opt
- if opt_effective == "-O0":
- bb.fatal("%s can't be built with %s, try -O1 instead" % (d.getVar('PN'), opt_effective))
- if opt_effective in ("-O", "-O1", "-Os"):
- bb.note("%s doesn't build cleanly with %s, adding -Wno-error to SELECTED_OPTIMIZATION" % (d.getVar('PN'), opt_effective))
- d.appendVar("SELECTED_OPTIMIZATION", " -Wno-error")
-}
-
# siteconfig.bbclass runs configure which needs a working compiler
# For the compiler to work we need a working libc yet libc isn't
# in the sysroots directory at this point. This means the libc.so
@@ -33,12 +21,8 @@ siteconfig_do_siteconfig_gencache_prepend = " \
# nptl needs unwind support in gcc, which can't be built without glibc.
DEPENDS = "virtual/${TARGET_PREFIX}gcc-initial libgcc-initial linux-libc-headers virtual/${TARGET_PREFIX}libc-initial"
-# nptl needs libgcc but dlopens it, so our shlibs code doesn't detect this
-#RDEPENDS_${PN} += "${@['','libgcc']['nptl' in '${GLIBC_ADDONS}']}"
-CRYPTPROVIDES = "virtual/crypt"
-CRYPTPROVIDES_class-nativesdk = ""
-PROVIDES = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc ${CRYPTPROVIDES}"
+PROVIDES = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc"
PROVIDES += "virtual/libintl virtual/libiconv"
inherit autotools texinfo distro_features_check systemd
@@ -80,8 +64,6 @@ do_configure_prepend() {
sed -e "s#@BASH@#/bin/sh#" -i ${S}/elf/ldd.bash.in
}
-GLIBC_ADDONS ?= "nptl,libidn"
-
# Enable backtrace from abort()
do_configure_append_arm () {
echo "CFLAGS-abort.c = -fasynchronous-unwind-tables" >> ${B}/configparms
diff --git a/meta/recipes-core/glibc/glibc/0001-Linux-gethostid-Check-for-NULL-value-from-gethostbyn.patch b/meta/recipes-core/glibc/glibc/0001-Linux-gethostid-Check-for-NULL-value-from-gethostbyn.patch
new file mode 100644
index 00000000000..3cf3266ba1d
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0001-Linux-gethostid-Check-for-NULL-value-from-gethostbyn.patch
@@ -0,0 +1,38 @@
+From e7d22db29cfdd2f1fb97a70a76fa53d151569945 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <Mingli.Yu@windriver.com>
+Date: Thu, 20 Sep 2018 12:41:13 +0200
+Subject: [PATCH] Linux gethostid: Check for NULL value from gethostbyname_r [BZ #23679]
+
+A NULL value can happen with certain gethostbyname_r failures.
+
+(cherry picked from commit 1214ba06e6771acb953a190091b0f6055c64fd25)
+
+Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=1214ba06e6771acb953a190091b0f6055c64fd25]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ sysdeps/unix/sysv/linux/gethostid.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/sysdeps/unix/sysv/linux/gethostid.c b/sysdeps/unix/sysv/linux/gethostid.c
+index 2e20f034dc..ee0190e7f9 100644
+--- a/sysdeps/unix/sysv/linux/gethostid.c
++++ b/sysdeps/unix/sysv/linux/gethostid.c
+@@ -102,12 +102,12 @@ gethostid (void)
+ {
+ int ret = __gethostbyname_r (hostname, &hostbuf,
+ tmpbuf.data, tmpbuf.length, &hp, &herr);
+- if (ret == 0)
++ if (ret == 0 && hp != NULL)
+ break;
+ else
+ {
+ /* Enlarge the buffer on ERANGE. */
+- if (herr == NETDB_INTERNAL && errno == ERANGE)
++ if (ret != 0 && herr == NETDB_INTERNAL && errno == ERANGE)
+ {
+ if (!scratch_buffer_grow (&tmpbuf))
+ return 0;
+--
+2.17.1
+
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
index 86234c9d2ee..14089350d92 100644
--- 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
@@ -1,7 +1,7 @@
-From bd91b60ce6ff01f49b173b6b45e23ce94911b2a6 Mon Sep 17 00:00:00 2001
+From 70fd60e2a8f40a160736cb9b268dfa6508aa55a7 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/27] nativesdk-glibc: Look for host system ld.so.cache as
+Subject: [PATCH 01/30] nativesdk-glibc: Look for host system ld.so.cache as
well
Upstream-Status: Inappropriate [embedded specific]
@@ -31,10 +31,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/elf/dl-load.c b/elf/dl-load.c
-index 7554a99b5a..a73d11a62f 100644
+index c51e4b3718..44bbb69dc4 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
-@@ -2007,6 +2007,14 @@ _dl_map_object (struct link_map *loader, const char *name,
+@@ -2085,6 +2085,14 @@ _dl_map_object (struct link_map *loader, const char *name,
}
}
@@ -49,7 +49,7 @@ index 7554a99b5a..a73d11a62f 100644
#ifdef USE_LDCONFIG
if (fd == -1
&& (__glibc_likely ((mode & __RTLD_SECURE) == 0)
-@@ -2065,14 +2073,6 @@ _dl_map_object (struct link_map *loader, const char *name,
+@@ -2143,14 +2151,6 @@ _dl_map_object (struct link_map *loader, const char *name,
}
#endif
@@ -65,5 +65,5 @@ index 7554a99b5a..a73d11a62f 100644
if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_LIBS))
_dl_debug_printf ("\n");
--
-2.16.1
+2.18.0
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
index 899481f0570..382915e840f 100644
--- 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
@@ -1,7 +1,7 @@
-From 50736f7fc1fdc9e1f7c05f1fec75c977d9be9228 Mon Sep 17 00:00:00 2001
+From f0dd22dfdbf822afc674724c35cc462cfafbc186 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/27] nativesdk-glibc: Fix buffer overrun with a relocated
+Subject: [PATCH 02/30] nativesdk-glibc: Fix buffer overrun with a relocated
SDK
When ld-linux-*.so.2 is relocated to a path that is longer than the
@@ -22,10 +22,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 12 insertions(+)
diff --git a/elf/dl-load.c b/elf/dl-load.c
-index a73d11a62f..62e3eee478 100644
+index 44bbb69dc4..74e2e5e962 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
-@@ -1707,7 +1707,19 @@ open_path (const char *name, size_t namelen, int mode,
+@@ -1785,7 +1785,19 @@ open_path (const char *name, size_t namelen, int mode,
given on the command line when rtld is run directly. */
return -1;
@@ -46,5 +46,5 @@ index a73d11a62f..62e3eee478 100644
{
struct r_search_path_elem *this_dir = *dirs;
--
-2.16.1
+2.18.0
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
index 03f99916fa6..f83e8192e20 100644
--- 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
@@ -1,7 +1,7 @@
-From 695e1cbff6ee6db3435c33e55311c67adf44476d Mon Sep 17 00:00:00 2001
+From 5962ca897efe965745e193c12041693c9e07dd24 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/27] nativesdk-glibc: Raise the size of arrays containing dl
+Subject: [PATCH 03/30] nativesdk-glibc: Raise the size of arrays containing dl
paths
This patch puts the dynamic loader path in the binaries, SYSTEM_DIRS strings
@@ -41,10 +41,10 @@ index 6ee5153ff9..37a5f701fa 100644
_dl_cache_libcmp (const char *p1, const char *p2)
{
diff --git a/elf/dl-load.c b/elf/dl-load.c
-index 62e3eee478..6ddba73650 100644
+index 74e2e5e962..8f19186e1c 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
-@@ -109,8 +109,8 @@ static size_t max_capstrlen attribute_relro;
+@@ -110,8 +110,8 @@ static size_t max_capstrlen attribute_relro;
gen-trusted-dirs.awk. */
#include "trusted-dirs.h"
@@ -81,10 +81,10 @@ index fbdd814edf..9f4d8d69b1 100644
a platform. */
static int
diff --git a/elf/rtld.c b/elf/rtld.c
-index 453f56eb15..08e0c4c94b 100644
+index 1b0c74739f..a70a62d31e 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
-@@ -128,6 +128,7 @@ dso_name_valid_for_suid (const char *p)
+@@ -130,6 +130,7 @@ dso_name_valid_for_suid (const char *p)
}
return *p != '\0';
}
@@ -92,7 +92,7 @@ index 453f56eb15..08e0c4c94b 100644
/* LD_AUDIT variable contents. Must be processed before the
audit_list below. */
-@@ -1000,12 +1001,12 @@ of this helper program; chances are you did not intend to run this program.\n\
+@@ -1001,12 +1002,12 @@ 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\
@@ -108,7 +108,7 @@ index 453f56eb15..08e0c4c94b 100644
++_dl_skip_args;
--_dl_argc;
diff --git a/iconv/gconv_conf.c b/iconv/gconv_conf.c
-index d6cf9d2a3e..9fcf970144 100644
+index f173cde71b..5c3205026f 100644
--- a/iconv/gconv_conf.c
+++ b/iconv/gconv_conf.c
@@ -36,7 +36,7 @@
@@ -136,5 +136,5 @@ index cf43f1cf3b..7f07adde53 100644
# define add_system_dir(dir) add_dir (dir)
#endif
--
-2.16.1
+2.18.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
index f9d70c2a095..a0957e6a7ba 100644
--- 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
@@ -1,7 +1,7 @@
-From 2bafdbd7067794c6a24e5e85608c0ec4638c5667 Mon Sep 17 00:00:00 2001
+From ee17ca0a6b122466c484301ea9fe029dc7e5498f 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/27] nativesdk-glibc: Allow 64 bit atomics for x86
+Subject: [PATCH 04/30] 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.
@@ -30,5 +30,5 @@ index 272da5dd8f..409c759f14 100644
#define ATOMIC_EXCHANGE_USES_CAS 0
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/relocate-locales.patch b/meta/recipes-core/glibc/glibc/0005-nativesdk-glibc-Make-relocatable-install-for-locales.patch
index 2aea37f5cad..56ff398753c 100644
--- a/meta/recipes-core/glibc/glibc/relocate-locales.patch
+++ b/meta/recipes-core/glibc/glibc/0005-nativesdk-glibc-Make-relocatable-install-for-locales.patch
@@ -1,12 +1,24 @@
+From 7195d203c6986ccdb39053933b703391ccc6854a 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/30] 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 872cadb5..da14fa39 100644
+index 872cadb5b9..dd651e07f5 100644
--- a/locale/findlocale.c
+++ b/locale/findlocale.c
@@ -56,7 +56,7 @@ struct __locale_data *const _nl_C[] attribute_hidden =
@@ -27,8 +39,21 @@ index 872cadb5..da14fa39 100644
}
else
/* We really have to load some data. First see whether the name is
+diff --git a/locale/loadarchive.c b/locale/loadarchive.c
+index 516d30d8d1..9bfbe1a5dd 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 68822a63..537bc351 100644
+index 68822a6319..537bc35149 100644
--- a/locale/localeinfo.h
+++ b/locale/localeinfo.h
@@ -325,7 +325,7 @@ _nl_lookup_word (locale_t l, int category, int item)
@@ -40,16 +65,6 @@ index 68822a63..537bc351 100644
/* Load the locale data for CATEGORY from the file specified by *NAME.
If *NAME is "", use environment variables as specified by POSIX, and
-diff --git a/locale/loadarchive.c b/locale/loadarchive.c
-index 516d30d8..792b37fb 100644
---- a/locale/loadarchive.c
-+++ b/locale/loadarchive.c
-@@ -42,7 +43,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. */
+--
+2.18.0
+
diff --git a/meta/recipes-core/glibc/glibc/0005-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch b/meta/recipes-core/glibc/glibc/0006-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch
index ad9106eefa1..1e712d5eba1 100644
--- a/meta/recipes-core/glibc/glibc/0005-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch
+++ b/meta/recipes-core/glibc/glibc/0006-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch
@@ -1,31 +1,31 @@
-From 661adfe9c220d10617bf6bb283827471c3956b01 Mon Sep 17 00:00:00 2001
+From b28e06d87a43e6aacff5624aaec75106599edec8 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 05/27] fsl e500/e5500/e6500/603e fsqrt implementation
+Subject: [PATCH 06/30] 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 +++++++++++++++++++++
- sysdeps/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 ++++++++++++++++
- .../sysv/linux/powerpc/powerpc32/603e/fpu/Implies | 1 +
- .../linux/powerpc/powerpc32/e300c3/fpu/Implies | 2 +
- .../linux/powerpc/powerpc32/e500mc/fpu/Implies | 1 +
- .../sysv/linux/powerpc/powerpc32/e5500/fpu/Implies | 1 +
- .../sysv/linux/powerpc/powerpc32/e6500/fpu/Implies | 1 +
- .../sysv/linux/powerpc/powerpc64/e5500/fpu/Implies | 1 +
- .../sysv/linux/powerpc/powerpc64/e6500/fpu/Implies | 1 +
+ 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
@@ -1580,5 +1580,5 @@ index 0000000000..04ff8cc181
@@ -0,0 +1 @@
+powerpc/powerpc64/e6500/fpu
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0006-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
index a3d50fd0540..251e9dd4b16 100644
--- a/meta/recipes-core/glibc/glibc/0006-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
@@ -1,7 +1,7 @@
-From 615598fcca64461a71d84f756d75374f02d914ad Mon Sep 17 00:00:00 2001
+From fd2bd3037ef49f67f12659b6aaba02f76e131a24 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 06/27] readlib: Add OECORE_KNOWN_INTERPRETER_NAMES to known
+Subject: [PATCH 07/30] readlib: Add OECORE_KNOWN_INTERPRETER_NAMES to known
names
This bolts in a hook for OE to pass its own version of interpreter
@@ -29,5 +29,5 @@ index 573c01476c..d8c7412287 100644
static struct known_names known_libs[] =
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0007-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
index 1234df0a099..67439c4b879 100644
--- a/meta/recipes-core/glibc/glibc/0007-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
@@ -1,7 +1,7 @@
-From 804b73ae295bdfda29341e89f2d0c1b99492dc9a Mon Sep 17 00:00:00 2001
+From b696fe0c6147afc375ae573063a92a53857248eb 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 07/27] ppc/sqrt: Fix undefined reference to `__sqrt_finite'
+Subject: [PATCH 08/30] 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'
@@ -204,5 +204,5 @@ index 26fa067abf..9d175122a8 100644
}
+strong_alias (__ieee754_sqrtf, __sqrtf_finite)
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0008-__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
index 1b436475142..1d27a56c79a 100644
--- a/meta/recipes-core/glibc/glibc/0008-__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
@@ -1,7 +1,7 @@
-From 1a53084249d9dae1ef4281246efc899c8f9d63ed Mon Sep 17 00:00:00 2001
+From 324aa1ffbf85ebd06b54f228604d6651895c1eea 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 08/27] __ieee754_sqrt{,f} are now inline functions and call
+Subject: [PATCH 09/30] __ieee754_sqrt{,f} are now inline functions and call
out __slow versions
Upstream-Status: Pending
@@ -383,5 +383,5 @@ index 9d175122a8..10de1f0cc3 100644
+
strong_alias (__ieee754_sqrtf, __sqrtf_finite)
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0009-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
index ea498569b3c..6b2bf65cac2 100644
--- a/meta/recipes-core/glibc/glibc/0009-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
@@ -1,7 +1,7 @@
-From 48262b6dda935278a40374ddf0080ab6cc999582 Mon Sep 17 00:00:00 2001
+From f6581da98bef982c888061fa06092c03f3c6c708 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 09/27] Quote from bug 1443 which explains what the patch does
+Subject: [PATCH 10/30] Quote from bug 1443 which explains what the patch does
:
We build some random program and link it with -lust. When we run it,
@@ -45,7 +45,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h
-index 8a00eab5e3..623edcb1bd 100644
+index 1a4fd3f17b..a02c47571a 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,
@@ -58,5 +58,5 @@ index 8a00eab5e3..623edcb1bd 100644
case R_ARM_TLS_TPOFF32:
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0010-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
index 17513185da1..dfe2fe4b831 100644
--- a/meta/recipes-core/glibc/glibc/0010-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
@@ -1,7 +1,7 @@
-From 72ea5410909aef6b6aee70e7f9a88d534583aa00 Mon Sep 17 00:00:00 2001
+From 635d4a48c331b5ccc9165a6f622091845a5245b0 Mon Sep 17 00:00:00 2001
From: Ting Liu <b28495@freescale.com>
Date: Wed, 19 Dec 2012 04:39:57 -0600
-Subject: [PATCH 10/27] eglibc: run libm-err-tab.pl with specific dirs in ${S}
+Subject: [PATCH 11/30] 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
@@ -32,5 +32,5 @@ index c2756640a7..1b5bb16a96 100644
touch $@
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0011-__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
index 1e70b2a30ef..3fcaedd8ef0 100644
--- a/meta/recipes-core/glibc/glibc/0011-__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
@@ -1,7 +1,7 @@
-From 8ae998a10b24545e0c12f1f3d8be97b191178204 Mon Sep 17 00:00:00 2001
+From 11991e14957063b0e5fa366d836f42dd6d3e10cd 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 11/27] __ieee754_sqrt{,f} are now inline functions and call
+Subject: [PATCH 12/30] __ieee754_sqrt{,f} are now inline functions and call
out __slow versions
Upstream-Status: Pending
@@ -57,5 +57,5 @@ index 812653558f..10de1f0cc3 100644
#endif
{
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0012-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
index c35b759a283..32796354a0f 100644
--- a/meta/recipes-core/glibc/glibc/0012-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
@@ -1,7 +1,7 @@
-From 4f9f39761909e67bd6d29b970b7165863e33e565 Mon Sep 17 00:00:00 2001
+From 36b0c04436f6ec7dc270d387cb036b5361544618 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 12/27] sysdeps/gnu/configure.ac: handle correctly
+Subject: [PATCH 13/30] sysdeps/gnu/configure.ac: handle correctly
$libc_cv_rootsbindir
Upstream-Status:Pending
@@ -38,5 +38,5 @@ index 634fe4de2a..3db1697f4f 100644
;;
esac
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0013-Add-unused-attribute.patch b/meta/recipes-core/glibc/glibc/0014-Add-unused-attribute.patch
index 62c65253dd4..cfc044506b2 100644
--- a/meta/recipes-core/glibc/glibc/0013-Add-unused-attribute.patch
+++ b/meta/recipes-core/glibc/glibc/0014-Add-unused-attribute.patch
@@ -1,7 +1,7 @@
-From bba7a647b636618d5fd083e904f995f7736b9168 Mon Sep 17 00:00:00 2001
+From f1969e4c95e810280edf5e11c8a6f32b3a56e2fb 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 13/27] Add unused attribute
+Subject: [PATCH 14/30] Add unused attribute
Helps in avoiding gcc warning when header is is included in
a source file which does not use both functions
@@ -30,5 +30,5 @@ index 123e2a62ce..63cc83ec84 100644
{
int slash_count = 0;
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0014-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
index 66911285a9c..217a3f60884 100644
--- a/meta/recipes-core/glibc/glibc/0014-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
@@ -1,7 +1,7 @@
-From 62f44ce3dd01a257cf67116e355492cb1659a917 Mon Sep 17 00:00:00 2001
+From be9965d0e53db1d7fe9419710a84c75526a18cc0 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 14/27] 'yes' within the path sets wrong config variables
+Subject: [PATCH 15/30] '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
@@ -259,5 +259,5 @@ index f9cba6e15d..b21f72f1e4 100644
], 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.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0015-timezone-re-written-tzselect-as-posix-sh.patch b/meta/recipes-core/glibc/glibc/0016-timezone-re-written-tzselect-as-posix-sh.patch
index 66bf4fdabdd..719193cbf99 100644
--- a/meta/recipes-core/glibc/glibc/0015-timezone-re-written-tzselect-as-posix-sh.patch
+++ b/meta/recipes-core/glibc/glibc/0016-timezone-re-written-tzselect-as-posix-sh.patch
@@ -1,7 +1,7 @@
-From ac240fb01f6470ac207968adfbe20ccc93b16f8b Mon Sep 17 00:00:00 2001
+From 60694f7ed69c8b711ffe37ce157032e85f60347b 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 15/27] timezone: re-written tzselect as posix sh
+Subject: [PATCH 16/30] timezone: re-written tzselect as posix sh
To avoid the bash dependency.
@@ -41,5 +41,5 @@ index d2c3a6d1dd..089679f306 100755
# Output one argument as-is to standard output.
# Safer than 'echo', which can mishandle '\' or leading '-'.
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0016-Remove-bash-dependency-for-nscd-init-script.patch b/meta/recipes-core/glibc/glibc/0017-Remove-bash-dependency-for-nscd-init-script.patch
index 0b1ee968713..e1a0d4918a2 100644
--- a/meta/recipes-core/glibc/glibc/0016-Remove-bash-dependency-for-nscd-init-script.patch
+++ b/meta/recipes-core/glibc/glibc/0017-Remove-bash-dependency-for-nscd-init-script.patch
@@ -1,7 +1,7 @@
-From 790b133ff2bc5b77ed8533b8999abc65ed0da02b Mon Sep 17 00:00:00 2001
+From 0d6e36d38569ec716331c48a2187b391f5680363 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 16/27] Remove bash dependency for nscd init script
+Subject: [PATCH 17/30] 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.
@@ -71,5 +71,5 @@ index a882da7d8b..b02986ec15 100644
;;
esac
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0017-eglibc-Cross-building-and-testing-instructions.patch b/meta/recipes-core/glibc/glibc/0018-eglibc-Cross-building-and-testing-instructions.patch
index fd821323d79..fa8d127f7ad 100644
--- a/meta/recipes-core/glibc/glibc/0017-eglibc-Cross-building-and-testing-instructions.patch
+++ b/meta/recipes-core/glibc/glibc/0018-eglibc-Cross-building-and-testing-instructions.patch
@@ -1,15 +1,15 @@
-From 897430bbb65a0f22284d7957206b5fd4efd6607f Mon Sep 17 00:00:00 2001
+From 448222134c9a0b147c4598f288ccc9d045b873c4 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 17/27] eglibc: Cross building and testing instructions
+Subject: [PATCH 18/30] 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 +++++++++++++++++++++++++++
+ 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
@@ -615,5 +615,5 @@ index 0000000000..b67b468466
+ simply place copies of these libraries in the top GLIBC build
+ directory.
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0018-eglibc-Help-bootstrap-cross-toolchain.patch b/meta/recipes-core/glibc/glibc/0019-eglibc-Help-bootstrap-cross-toolchain.patch
index 80d547c80d1..c7e8bd2ee95 100644
--- a/meta/recipes-core/glibc/glibc/0018-eglibc-Help-bootstrap-cross-toolchain.patch
+++ b/meta/recipes-core/glibc/glibc/0019-eglibc-Help-bootstrap-cross-toolchain.patch
@@ -1,7 +1,7 @@
-From fcfa19b69e8749477022161a808a201807ef72ec Mon Sep 17 00:00:00 2001
+From 6b8ee1ae86f8b9a49f751ab211002c83744356a6 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 18/27] eglibc: Help bootstrap cross toolchain
+Subject: [PATCH 19/30] eglibc: Help bootstrap cross toolchain
Taken from EGLIBC, r1484 + r1525
@@ -29,7 +29,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
create mode 100644 include/stubs-bootstrap.h
diff --git a/Makefile b/Makefile
-index bea4e27f8d..8c83cfadc6 100644
+index d3f25a525a..ab383867e2 100644
--- a/Makefile
+++ b/Makefile
@@ -70,9 +70,18 @@ subdir-dirs = include
@@ -52,7 +52,7 @@ index bea4e27f8d..8c83cfadc6 100644
ifeq (yes,$(build-shared))
headers += gnu/lib-names.h
endif
-@@ -152,6 +161,16 @@ others: $(common-objpfx)testrun.sh
+@@ -195,6 +204,16 @@ others: $(common-objpfx)testrun.sh
subdir-stubs := $(foreach dir,$(subdirs),$(common-objpfx)$(dir)/stubs)
@@ -69,7 +69,7 @@ index bea4e27f8d..8c83cfadc6 100644
ifndef abi-variants
installed-stubs = $(inst_includedir)/gnu/stubs.h
else
-@@ -178,6 +197,7 @@ $(inst_includedir)/gnu/stubs.h: $(+force)
+@@ -221,6 +240,7 @@ $(inst_includedir)/gnu/stubs.h: $(+force)
install-others-nosubdir: $(installed-stubs)
endif
@@ -96,5 +96,5 @@ index 0000000000..1d2b669aff
+ EGLIBC subdir 'stubs' make targets, on every .o file in EGLIBC, but
+ an empty stubs.h like this will do fine for GCC. */
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0019-eglibc-Clear-cache-lines-on-ppc8xx.patch b/meta/recipes-core/glibc/glibc/0020-eglibc-Clear-cache-lines-on-ppc8xx.patch
index 17bfe4fe840..d3f4b6a3190 100644
--- a/meta/recipes-core/glibc/glibc/0019-eglibc-Clear-cache-lines-on-ppc8xx.patch
+++ b/meta/recipes-core/glibc/glibc/0020-eglibc-Clear-cache-lines-on-ppc8xx.patch
@@ -1,7 +1,7 @@
-From c6f2db0d7c5c65bfa19766a0e1ce8210111f9c7d Mon Sep 17 00:00:00 2001
+From 617ca176291df82c29d8c78e92ba8edcb38a2fe2 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 19/27] eglibc: Clear cache lines on ppc8xx
+Subject: [PATCH 20/30] eglibc: Clear cache lines on ppc8xx
2007-06-13 Nathan Sidwell <nathan@codesourcery.com>
Mark Shinwell <shinwell@codesourcery.com>
@@ -79,5 +79,5 @@ index f2ad0c355d..3e6773795e 100644
break;
#ifndef SHARED
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0021-eglibc-Install-PIC-archives.patch b/meta/recipes-core/glibc/glibc/0021-eglibc-Install-PIC-archives.patch
deleted file mode 100644
index 530f4e10871..00000000000
--- a/meta/recipes-core/glibc/glibc/0021-eglibc-Install-PIC-archives.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-From c1beab8a11985f96f5eb644e7103d343b705afc6 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 18 Mar 2015 01:57:01 +0000
-Subject: [PATCH 21/27] eglibc: Install PIC archives
-
-Forward port from eglibc
-
-2008-02-07 Joseph Myers <joseph@codesourcery.com>
-
- * Makerules (install-extras, install-map): New variables.
- (installed-libcs): Add libc_pic.a.
- (install-lib): Include _pic.a files for versioned shared
- libraries.
- (install-map-nosubdir, install-extras-nosubdir): Add rules for
- installing extra files.
- (install-no-libc.a-nosubdir): Depend on install-map-nosubdir and
- install-extras-nosubdir.
-
-2008-04-01 Maxim Kuvyrkov <maxim@codesourcery.com>
-
- * Makerules (install-lib): Don't install libpthread_pic.a.
- (install-map): Don't install libpthread_pic.map.
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Makerules | 42 ++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 40 insertions(+), 2 deletions(-)
-
-diff --git a/Makerules b/Makerules
-index ef6abeac6d..eeaa667f49 100644
---- a/Makerules
-+++ b/Makerules
-@@ -778,6 +778,9 @@ ifeq ($(build-shared),yes)
- $(common-objpfx)libc.so: $(common-objpfx)libc.map
- endif
- common-generated += libc.so libc_pic.os
-+ifndef subdir
-+install-extras := soinit.o sofini.o
-+endif
- ifdef libc.so-version
- $(common-objpfx)libc.so$(libc.so-version): $(common-objpfx)libc.so
- $(make-link)
-@@ -1029,6 +1032,7 @@ endif
-
- install: check-install-supported
-
-+installed-libcs := $(installed-libcs) $(inst_libdir)/libc_pic.a
- install: $(installed-libcs)
- $(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib $(+force)
- $(make-target-directory)
-@@ -1057,6 +1061,22 @@ versioned := $(strip $(foreach so,$(install-lib.so),\
- install-lib.so-versioned := $(filter $(versioned), $(install-lib.so))
- install-lib.so-unversioned := $(filter-out $(versioned), $(install-lib.so))
-
-+# Install the _pic.a files for versioned libraries, and corresponding
-+# .map files.
-+# libpthread_pic.a breaks mklibs, so don't install it and its map.
-+install-lib := $(install-lib) $(install-lib.so-versioned:%.so=%_pic.a)
-+install-lib := $(filter-out libpthread_pic.a,$(install-lib))
-+# Despite having a soname libhurduser and libmachuser do not use symbol
-+# versioning, so don't install the corresponding .map files.
-+ifeq ($(build-shared),yes)
-+install-map := $(patsubst %.so,%.map,\
-+ $(foreach L,$(install-lib.so-versioned),$(notdir $L)))
-+install-map := $(filter-out libhurduser.map libmachuser.map libpthread.map,$(install-map))
-+ifndef subdir
-+install-map := $(install-map) libc.map
-+endif
-+endif
-+
- # For versioned libraries, we install three files:
- # $(inst_libdir)/libfoo.so -- for linking, symlink or ld script
- # $(inst_slibdir)/libfoo.so.NN -- for loading by SONAME, symlink
-@@ -1311,9 +1331,22 @@ $(addprefix $(inst_includedir)/,$(headers-nonh)): $(inst_includedir)/%: \
- endif # headers-nonh
- endif # headers
-
-+ifdef install-map
-+$(addprefix $(inst_libdir)/,$(patsubst lib%.map,lib%_pic.map,$(install-map))): \
-+ $(inst_libdir)/lib%_pic.map: $(common-objpfx)lib%.map $(+force)
-+ $(do-install)
-+endif
-+
-+ifdef install-extras
-+$(addprefix $(inst_libdir)/libc_pic/,$(install-extras)): \
-+ $(inst_libdir)/libc_pic/%.o: $(elf-objpfx)%.os $(+force)
-+ $(do-install)
-+endif
-+
- .PHONY: install-bin-nosubdir install-bin-script-nosubdir \
- install-rootsbin-nosubdir install-sbin-nosubdir install-lib-nosubdir \
-- install-data-nosubdir install-headers-nosubdir
-+ install-data-nosubdir install-headers-nosubdir install-map-nosubdir \
-+ install-extras-nosubdir
- install-bin-nosubdir: $(addprefix $(inst_bindir)/,$(install-bin))
- install-bin-script-nosubdir: $(addprefix $(inst_bindir)/,$(install-bin-script))
- install-rootsbin-nosubdir: \
-@@ -1326,6 +1359,10 @@ install-data-nosubdir: $(addprefix $(inst_datadir)/,$(install-data))
- install-headers-nosubdir: $(addprefix $(inst_includedir)/,$(headers))
- install-others-nosubdir: $(install-others)
- install-others-programs-nosubdir: $(install-others-programs)
-+install-map-nosubdir: $(addprefix $(inst_libdir)/,\
-+ $(patsubst lib%.map,lib%_pic.map,$(install-map)))
-+install-extras-nosubdir: $(addprefix $(inst_libdir)/libc_pic/,\
-+ $(install-extras))
-
- # We need all the `-nosubdir' targets so that `install' in the parent
- # doesn't depend on several things which each iterate over the subdirs.
-@@ -1335,7 +1372,8 @@ install-%:: install-%-nosubdir ;
-
- .PHONY: install install-no-libc.a-nosubdir
- install-no-libc.a-nosubdir: install-headers-nosubdir install-data-nosubdir \
-- install-lib-nosubdir install-others-nosubdir
-+ install-lib-nosubdir install-others-nosubdir \
-+ install-map-nosubdir install-extras-nosubdir
- ifeq ($(build-programs),yes)
- install-no-libc.a-nosubdir: install-bin-nosubdir install-bin-script-nosubdir \
- install-rootsbin-nosubdir install-sbin-nosubdir \
---
-2.16.1
-
diff --git a/meta/recipes-core/glibc/glibc/0020-eglibc-Resolve-__fpscr_values-on-SH4.patch b/meta/recipes-core/glibc/glibc/0021-eglibc-Resolve-__fpscr_values-on-SH4.patch
index 09f76707584..881bd911fc8 100644
--- a/meta/recipes-core/glibc/glibc/0020-eglibc-Resolve-__fpscr_values-on-SH4.patch
+++ b/meta/recipes-core/glibc/glibc/0021-eglibc-Resolve-__fpscr_values-on-SH4.patch
@@ -1,7 +1,7 @@
-From 577085016bb926a687abec145557fe8cb8f5af0e Mon Sep 17 00:00:00 2001
+From 78e379d65f4fc810fb095a97c4f36f0b79bb5e01 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 18 Mar 2015 00:55:53 +0000
-Subject: [PATCH 20/27] eglibc: Resolve __fpscr_values on SH4
+Subject: [PATCH 21/30] eglibc: Resolve __fpscr_values on SH4
2010-09-29 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Andrew Stubbs <ams@codesourcery.com>
@@ -52,5 +52,5 @@ index c4e28ffb98..648bae03d5 100644
+weak_alias (___fpscr_values, __fpscr_values)
+
--
-2.16.1
+2.18.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
index a629ce141a0..04a5be7fcbe 100644
--- 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
@@ -1,24 +1,24 @@
-From e019fe6a2b410db6043e21803f497b5cbdd90a83 Mon Sep 17 00:00:00 2001
+From 3e24f9d63aef5561b80fc7c345ce61943910e69b 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/27] eglibc: Forward port cross locale generation support
+Subject: [PATCH 22/30] 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/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/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 ----------------------
+ 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
@@ -91,7 +91,7 @@ index 0000000000..9fad357db1
+ [LC_ALL] = sizeof ("LC_ALL") - 1
+ };
diff --git a/locale/localeinfo.h b/locale/localeinfo.h
-index 68822a6319..fa36123776 100644
+index 537bc35149..73ba20d695 100644
--- a/locale/localeinfo.h
+++ b/locale/localeinfo.h
@@ -224,7 +224,7 @@ __libc_tsd_define (extern, locale_t, LOCALE)
@@ -562,5 +562,5 @@ index e4de907e1f..b5d8f5c17d 100644
# define WEAK_POSTLOAD(postload) weak_extern (postload)
#else
--
-2.16.1
+2.18.0
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
index ae708ef83e7..092e90e5e3d 100644
--- 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
@@ -1,7 +1,7 @@
-From 9d71526be21abe68dd8ca3a5a219445851bbc2f4 Mon Sep 17 00:00:00 2001
+From 24f3fbd925b6af96c4369184528028b144b51310 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/27] Define DUMMY_LOCALE_T if not defined
+Subject: [PATCH 23/30] Define DUMMY_LOCALE_T if not defined
This is a hack to fix building the locale bits on an older
CentOs 5.X machine
@@ -28,5 +28,5 @@ index 9956cd8446..04342f3644 100644
#define PACKAGE _libc_intl_domainname
#ifndef VERSION
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0024-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch b/meta/recipes-core/glibc/glibc/0024-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch
index 42ff667811b..c78b4a3325a 100644
--- a/meta/recipes-core/glibc/glibc/0024-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch
+++ b/meta/recipes-core/glibc/glibc/0024-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch
@@ -1,7 +1,7 @@
-From 03873af286f1dab1062f598d6deb774ce513421d Mon Sep 17 00:00:00 2001
+From 9f02a73c41782688f43e01bc2adbba09fc83b51e Mon Sep 17 00:00:00 2001
From: Mark Hatle <mark.hatle@windriver.com>
Date: Thu, 18 Aug 2016 14:07:58 -0500
-Subject: [PATCH 24/27] elf/dl-deps.c: Make _dl_build_local_scope breadth first
+Subject: [PATCH 24/30] elf/dl-deps.c: Make _dl_build_local_scope breadth first
According to the ELF specification:
@@ -24,10 +24,10 @@ Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/elf/dl-deps.c b/elf/dl-deps.c
-index c975fcffd7..6ee58c74e0 100644
+index 9d9b1ba7f2..8414028c58 100644
--- a/elf/dl-deps.c
+++ b/elf/dl-deps.c
-@@ -72,13 +72,19 @@ _dl_build_local_scope (struct link_map **list, struct link_map *map)
+@@ -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;
@@ -52,5 +52,5 @@ index c975fcffd7..6ee58c74e0 100644
}
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0025-locale-fix-hard-coded-reference-to-gcc-E.patch b/meta/recipes-core/glibc/glibc/0025-locale-fix-hard-coded-reference-to-gcc-E.patch
index 7f5d1421d3c..5eb1a019a49 100644
--- a/meta/recipes-core/glibc/glibc/0025-locale-fix-hard-coded-reference-to-gcc-E.patch
+++ b/meta/recipes-core/glibc/glibc/0025-locale-fix-hard-coded-reference-to-gcc-E.patch
@@ -1,7 +1,7 @@
-From 56dab024751941c07eb479f47ef6682e2168c86a Mon Sep 17 00:00:00 2001
+From 985b3d9e9b3f99f5a23c0c68e8657e311ca6f42d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Rosen?= <jeremy.rosen@smile.fr>
Date: Mon, 22 Aug 2016 16:09:25 +0200
-Subject: [PATCH 25/27] locale: fix hard-coded reference to gcc -E
+Subject: [PATCH 25/30] locale: fix hard-coded reference to gcc -E
When new version of compilers are published, they may not be compatible with
older versions of software. This is particularly common when software is built
@@ -34,5 +34,5 @@ index 30d3f2f195..e97653017c 100644
sub cstrlen {
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0026-reset-dl_load_write_lock-after-forking.patch b/meta/recipes-core/glibc/glibc/0026-reset-dl_load_write_lock-after-forking.patch
index eca1193dd37..ad10b3c715a 100644
--- a/meta/recipes-core/glibc/glibc/0026-reset-dl_load_write_lock-after-forking.patch
+++ b/meta/recipes-core/glibc/glibc/0026-reset-dl_load_write_lock-after-forking.patch
@@ -1,7 +1,7 @@
-From 847d37d5a34e4bf294de4ba98de3668950e28bc7 Mon Sep 17 00:00:00 2001
+From c26abfc71ef461ef4980f57a35870b68826bd619 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 27 Jan 2018 10:05:07 -0800
-Subject: [PATCH 26/27] reset dl_load_write_lock after forking
+Subject: [PATCH 26/30] reset dl_load_write_lock after forking
The patch in this Bugzilla entry was requested by a customer:
@@ -20,10 +20,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
-index 846fa49ef2..f87506f398 100644
+index ec56a827eb..0f48933ff1 100644
--- a/sysdeps/nptl/fork.c
+++ b/sysdeps/nptl/fork.c
-@@ -194,9 +194,9 @@ __libc_fork (void)
+@@ -130,9 +130,9 @@ __libc_fork (void)
_IO_list_resetlock ();
}
@@ -33,8 +33,8 @@ index 846fa49ef2..f87506f398 100644
-
+ __rtld_lock_initialize (GL(dl_load_write_lock));
/* Run the handlers registered for the child. */
- while (allp != NULL)
- {
+ __run_fork_handlers (atfork_run_child);
+ }
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0027-Acquire-ld.so-lock-before-switching-to-malloc_atfork.patch b/meta/recipes-core/glibc/glibc/0027-Acquire-ld.so-lock-before-switching-to-malloc_atfork.patch
index 9ec234bd51b..1ad14b7fc3a 100644
--- a/meta/recipes-core/glibc/glibc/0027-Acquire-ld.so-lock-before-switching-to-malloc_atfork.patch
+++ b/meta/recipes-core/glibc/glibc/0027-Acquire-ld.so-lock-before-switching-to-malloc_atfork.patch
@@ -1,7 +1,7 @@
-From 94225ab4bcc1613531558a632270b5edce779bc9 Mon Sep 17 00:00:00 2001
+From c3e04a90dd762cad4ee9bd7564d74e052781be5c Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 27 Jan 2018 10:08:04 -0800
-Subject: [PATCH 27/27] Acquire ld.so lock before switching to malloc_atfork
+Subject: [PATCH 27/30] Acquire ld.so lock before switching to malloc_atfork
The patch is from
https://sourceware.org/bugzilla/show_bug.cgi?id=4578
@@ -28,11 +28,11 @@ Signed-off-by: Yuanjie Huang <yuanjie.huang@windriver.com>
Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- sysdeps/nptl/fork.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
+ sysdeps/nptl/fork.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
-index f87506f398..225e7b51f8 100644
+index 0f48933ff1..eef3f9669b 100644
--- a/sysdeps/nptl/fork.c
+++ b/sysdeps/nptl/fork.c
@@ -25,6 +25,7 @@
@@ -43,22 +43,20 @@ index f87506f398..225e7b51f8 100644
#include <stdio-lock.h>
#include <atomic.h>
#include <nptl/pthreadP.h>
-@@ -60,6 +61,10 @@ __libc_fork (void)
- but our current fork implementation is not. */
+@@ -56,6 +57,9 @@ __libc_fork (void)
bool multiple_threads = THREAD_GETMEM (THREAD_SELF, header.multiple_threads);
+ __run_fork_handlers (atfork_run_prepare);
+ /* grab ld.so lock BEFORE switching to malloc_atfork */
+ __rtld_lock_lock_recursive (GL(dl_load_lock));
+ __rtld_lock_lock_recursive (GL(dl_load_write_lock));
-+
- /* Run all the registered preparation handlers. In reverse order.
- While doing this we build up a list of all the entries. */
- struct fork_handler *runp;
-@@ -246,6 +251,10 @@ __libc_fork (void)
- allp = allp->next;
- }
-+
+ /* If we are not running multiple threads, we do not have to
+ preserve lock state. If fork runs from a signal handler, only
+@@ -150,6 +154,9 @@ __libc_fork (void)
+
+ /* Run the handlers registered for the parent. */
+ __run_fork_handlers (atfork_run_parent);
+ /* unlock ld.so last, because we locked it first */
+ __rtld_lock_unlock_recursive (GL(dl_load_write_lock));
+ __rtld_lock_unlock_recursive (GL(dl_load_lock));
@@ -66,5 +64,5 @@ index f87506f398..225e7b51f8 100644
return pid;
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0028-bits-siginfo-consts.h-enum-definition-for-TRAP_HWBKP.patch b/meta/recipes-core/glibc/glibc/0028-bits-siginfo-consts.h-enum-definition-for-TRAP_HWBKP.patch
index 436c84778e6..8f0b05694f9 100644
--- a/meta/recipes-core/glibc/glibc/0028-bits-siginfo-consts.h-enum-definition-for-TRAP_HWBKP.patch
+++ b/meta/recipes-core/glibc/glibc/0028-bits-siginfo-consts.h-enum-definition-for-TRAP_HWBKP.patch
@@ -1,8 +1,8 @@
-From af3054b3856379d353a779801678f330e1b58c9a Mon Sep 17 00:00:00 2001
-Message-Id: <af3054b3856379d353a779801678f330e1b58c9a.1490183611.git.panand@redhat.com>
+From 55cc59b7da97b80cd26027656a252082b09aa2bb Mon Sep 17 00:00:00 2001
From: Pratyush Anand <panand@redhat.com>
Date: Wed, 22 Mar 2017 17:02:38 +0530
-Subject: [PATCH] bits/siginfo-consts.h: enum definition for TRAP_HWBKPT is missing
+Subject: [PATCH 28/30] bits/siginfo-consts.h: enum definition for TRAP_HWBKPT
+ is missing
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -29,7 +29,7 @@ Upstream-Status: Submitted [https://sourceware.org/bugzilla/show_bug.cgi?id=2128
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/bits/siginfo-consts.h b/bits/siginfo-consts.h
-index a58ac4b..8448fac 100644
+index 7464c1882b..298314527a 100644
--- a/bits/siginfo-consts.h
+++ b/bits/siginfo-consts.h
@@ -106,8 +106,12 @@ enum
@@ -47,10 +47,10 @@ index a58ac4b..8448fac 100644
# endif
diff --git a/sysdeps/unix/sysv/linux/bits/siginfo-consts.h b/sysdeps/unix/sysv/linux/bits/siginfo-consts.h
-index 525840c..57a9edb 100644
+index 193bd9c471..3fe852bc5f 100644
--- a/sysdeps/unix/sysv/linux/bits/siginfo-consts.h
+++ b/sysdeps/unix/sysv/linux/bits/siginfo-consts.h
-@@ -137,8 +137,12 @@ enum
+@@ -141,8 +141,12 @@ enum
{
TRAP_BRKPT = 1, /* Process breakpoint. */
# define TRAP_BRKPT TRAP_BRKPT
@@ -65,5 +65,5 @@ index 525840c..57a9edb 100644
# endif
--
-2.7.4
+2.18.0
diff --git a/meta/recipes-core/glibc/glibc/0029-Replace-strncpy-with-memccpy-to-fix-Wstringop-trunca.patch b/meta/recipes-core/glibc/glibc/0029-Replace-strncpy-with-memccpy-to-fix-Wstringop-trunca.patch
deleted file mode 100644
index fa29f4165b8..00000000000
--- a/meta/recipes-core/glibc/glibc/0029-Replace-strncpy-with-memccpy-to-fix-Wstringop-trunca.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 113e0516fbd3ce18253f0423762416d4c4b38fb0 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 22 Mar 2018 17:57:37 -0700
-Subject: [PATCH 29/29] Replace strncpy with memccpy to fix
- -Wstringop-truncation.
-
- * nis/nss_nisplus/nisplus-parser.c: Replace strncpy with memcpy to
- avoid -Wstringop-truncation.
----
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Submitted [https://sourceware.org/ml/libc-alpha/2018-03/msg00531.html]
-
- nis/nss_nisplus/nisplus-parser.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/nis/nss_nisplus/nisplus-parser.c b/nis/nss_nisplus/nisplus-parser.c
-index 8dc021e73d..b53284f889 100644
---- a/nis/nss_nisplus/nisplus-parser.c
-+++ b/nis/nss_nisplus/nisplus-parser.c
-@@ -87,7 +87,7 @@ _nss_nisplus_parse_pwent (nis_result *result, struct passwd *pw,
- if (len >= room_left)
- goto no_more_room;
-
-- strncpy (first_unused, numstr, len);
-+ memcpy (first_unused, numstr, len);
- first_unused[len] = '\0';
- numstr = first_unused;
- }
-@@ -103,7 +103,7 @@ _nss_nisplus_parse_pwent (nis_result *result, struct passwd *pw,
- if (len >= room_left)
- goto no_more_room;
-
-- strncpy (first_unused, numstr, len);
-+ memcpy (first_unused, numstr, len);
- first_unused[len] = '\0';
- numstr = first_unused;
- }
---
-2.16.2
-
diff --git a/meta/recipes-core/glibc/glibc/0029-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch b/meta/recipes-core/glibc/glibc/0029-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch
new file mode 100644
index 00000000000..8bdd4668063
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0029-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch
@@ -0,0 +1,90 @@
+From 5a6f019ded549faaf42478f6f96428dc7c20606e 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 29/30] 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 | 13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+Index: git/locale/programs/locarchive.c
+===================================================================
+--- git.orig/locale/programs/locarchive.c
++++ git/locale/programs/locarchive.c
+@@ -340,12 +340,24 @@ enlarge_archive (struct locarhandle *ah,
+ 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
+@@ -551,6 +563,8 @@ enlarge_archive (struct locarhandle *ah,
+
+ /* Add the information for the new one. */
+ *ah = new_ah;
++ free(archivefname);
++ free(fname);
+ }
+
+
+@@ -569,10 +583,13 @@ open_archive (struct locarhandle *ah, bo
+ /* 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 +602,7 @@ open_archive (struct locarhandle *ah, bo
+ 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/0030-plural_c_no_preprocessor_lines.patch b/meta/recipes-core/glibc/glibc/0030-intl-Emit-no-lines-in-bison-generated-files.patch
index 6f03e1c62d3..f0a950aca97 100644
--- a/meta/recipes-core/glibc/glibc/0030-plural_c_no_preprocessor_lines.patch
+++ b/meta/recipes-core/glibc/glibc/0030-intl-Emit-no-lines-in-bison-generated-files.patch
@@ -1,16 +1,26 @@
+From 959f3fc8743cbb3b13c3be11ee359f139f5be8c7 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 30/30] 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 2219717..a203780 100644
+index 672edf1b38..d31888d013 100644
--- a/intl/Makefile
+++ b/intl/Makefile
-@@ -151,7 +151,7 @@ $(objpfx)tst-gettext6.out: $(objpfx)tst-gettext.out
+@@ -155,7 +155,7 @@ $(objpfx)tst-gettext6.out: $(objpfx)tst-gettext.out
CPPFLAGS += -D'LOCALEDIR="$(localedir)"' \
-D'LOCALE_ALIAS_PATH="$(localedir)"'
@@ -19,3 +29,6 @@ index 2219717..a203780 100644
$(inst_localedir)/locale.alias: locale.alias $(+force)
$(do-install)
+--
+2.18.0
+
diff --git a/meta/recipes-core/glibc/glibc/0031-nativesdk-deprecate-libcrypt.patch b/meta/recipes-core/glibc/glibc/0031-nativesdk-deprecate-libcrypt.patch
deleted file mode 100644
index a9132ed3d24..00000000000
--- a/meta/recipes-core/glibc/glibc/0031-nativesdk-deprecate-libcrypt.patch
+++ /dev/null
@@ -1,419 +0,0 @@
-Background information:
-
-https://sourceware.org/ml/libc-alpha/2017-08/msg01257.html
-https://fedoraproject.org/wiki/Changes/Replace_glibc_libcrypt_with_libxcrypt
-
-Upstream-Status: Submitted [libc-alpha@sourceware.org]
-Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-
-From: Zack Weinberg <zackw@panix.com>
-Subject: [PATCH] Deprecate libcrypt and don't build it by default
-
-Back in June, Björn Esser proposed to add OpenBSD-compatible bcrypt
-support to our implementation of crypt(3), and Zack Weinberg replied
-that it might actually make more sense to _remove_ libcrypt from
-glibc, freeing up libcrypt.so.1 and crypt.h to be provided by a
-separate project that could move faster. (For instance, libxcrypt:
-https://github.com/besser82/libxcrypt)
-
-This patch disables build and installation of libcrypt by default. It
-can be re-enabled with --enable-obsolete-crypt to configure. Unlike
-libnsl, we do *not* install a runtime shared library; that's left to
-the replacement. (Unlike the SunRPC situation, I think we can
-probably drop this code altogether in a release or two.)
-
-The function prototypes for crypt and encrypt are removed from
-unistd.h, and the function prototype for setkey is removed from
-stdlib.h; they do *not* come back with --enable-obsolete-crypt. This
-means glibc no longer provides the POSIX CRYPT option, and the macro
-_XOPEN_CRYPT is also removed from unistd.h to indicate that.
-(_SC_XOPEN_CRYPT is still defined, but sysconf(_SC_XOPEN_CRYPT) will
-return -1 at runtime.) These functions are also unconditionally
-removed from conform/data/{stdlib,unistd}.h-data.
-
- * posix/unistd.h (_XOPEN_CRYPT, crypt, encrypt): Don't declare.
- * stdlib/stdlib.h (setkey): Don't declare.
-
- * configure.ac (--enable-obsolete-crypt): New configure option.
- * configure: Regenerate.
- * config.make.in (build-obsolete-crypt): New makefile variable.
- * crypt/Banner: Delete file.
- * crypt/Makefile: Don't build anything unless
- $(build-obsolete-crypt) is 'yes'.
- * sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile: Only add things
- to libcrypt-sysdep_routines when $(build-obsolete-crypt) is 'yes'.
- * sysdeps/sparc/sparc64/multiarch/Makefile: Likewise.
- * sysdeps/unix/sysv/linux/arm/Makefile: Likewise.
-
- * conform/Makefile: Only include libcrypt.a in linknamespace tests
- when $(build-obsolete-crypt) is 'yes'.
- * conform/data/stdlib.h-data (setkey): Don't expect.
- * conform/data/unistd.h-data (crypt, encrypt): Don't expect.
- * elf/Makefile: Only perform various tests of libcrypt.so/libcrypt.a
- when $(build-obsolete-crypt) is 'yes'.
- * elf/tst-linkall-static.c: Don't include crypt.h when USE_CRYPT
- is false.
----
- NEWS | 18 ++++++++++++++++++
- config.make.in | 1 +
- configure | 13 +++++++++++++
- configure.ac | 8 ++++++++
- conform/Makefile | 14 ++++++++++----
- conform/data/stdlib.h-data | 3 ---
- conform/data/unistd.h-data | 6 ------
- crypt/Makefile | 5 +++++
- elf/Makefile | 16 ++++++++++++----
- elf/tst-linkall-static.c | 2 ++
- posix/unistd.h | 16 ----------------
- stdlib/stdlib.h | 6 ------
- sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile | 2 ++
- sysdeps/sparc/sparc64/multiarch/Makefile | 2 ++
- sysdeps/unix/sysv/linux/arm/Makefile | 2 ++
- 15 files changed, 75 insertions(+), 39 deletions(-)
-
-diff --git a/config.make.in b/config.make.in
-index 9e5e24b2c6..8fe610d04d 100644
---- a/config.make.in
-+++ b/config.make.in
-@@ -82,6 +82,7 @@ mach-interface-list = @mach_interface_list@
-
- experimental-malloc = @experimental_malloc@
-
-+build-obsolete-crypt = @build_obsolete_crypt@
- nss-crypt = @libc_cv_nss_crypt@
- static-nss-crypt = @libc_cv_static_nss_crypt@
-
-diff --git a/configure b/configure
-index 7a8bd3f817..46f6bd7f86 100755
---- a/configure
-+++ b/configure
-@@ -672,6 +672,7 @@ base_machine
- have_tunables
- build_pt_chown
- build_nscd
-+build_obsolete_crypt
- build_obsolete_nsl
- link_obsolete_rpc
- libc_cv_static_nss_crypt
-@@ -782,6 +783,7 @@ enable_experimental_malloc
- enable_nss_crypt
- enable_obsolete_rpc
- enable_obsolete_nsl
-+enable_obsolete_crypt
- enable_systemtap
- enable_build_nscd
- enable_nscd
-@@ -1453,6 +1455,7 @@ Optional Features:
- link-time usage
- --enable-obsolete-nsl build and install the obsolete libnsl library and
- depending NSS modules
-+ --enable-obsolete-crypt build and install the obsolete libcrypt library
- --enable-systemtap enable systemtap static probe points [default=no]
- --disable-build-nscd disable building and installing the nscd daemon
- --disable-nscd library functions will not contact the nscd daemon
-@@ -3632,6 +3635,16 @@ if test "$build_obsolete_nsl" = yes; then
-
- fi
-
-+# Check whether --enable-obsolete-crypt was given.
-+if test "${enable_obsolete_crypt+set}" = set; then :
-+ enableval=$enable_obsolete_crypt; build_obsolete_crypt=$enableval
-+else
-+ build_obsolete_crypt=no
-+fi
-+
-+
-+
-+
- # Check whether --enable-systemtap was given.
- if test "${enable_systemtap+set}" = set; then :
- enableval=$enable_systemtap; systemtap=$enableval
-diff --git a/configure.ac b/configure.ac
-index ca1282a6b3..0142353740 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -378,6 +378,14 @@ if test "$build_obsolete_nsl" = yes; then
- AC_DEFINE(LINK_OBSOLETE_NSL)
- fi
-
-+AC_ARG_ENABLE([obsolete-crypt],
-+ AC_HELP_STRING([--enable-obsolete-crypt],
-+ [build and install the obsolete libcrypt library]),
-+ [build_obsolete_crypt=$enableval],
-+ [build_obsolete_crypt=no])
-+AC_SUBST(build_obsolete_crypt)
-+
-+
- AC_ARG_ENABLE([systemtap],
- [AS_HELP_STRING([--enable-systemtap],
- [enable systemtap static probe points @<:@default=no@:>@])],
-diff --git a/conform/Makefile b/conform/Makefile
-index 864fdeca21..5ef474fb24 100644
---- a/conform/Makefile
-+++ b/conform/Makefile
-@@ -193,22 +193,28 @@ linknamespace-libs-thr = $(linknamespace-libs-isoc) \
- $(common-objpfx)rt/librt.a $(static-thread-library)
- linknamespace-libs-posix = $(linknamespace-libs-thr) \
- $(common-objpfx)dlfcn/libdl.a
--linknamespace-libs-xsi = $(linknamespace-libs-posix) \
-- $(common-objpfx)crypt/libcrypt.a
-+linknamespace-libs-xsi = $(linknamespace-libs-posix)
- linknamespace-libs-ISO = $(linknamespace-libs-isoc)
- linknamespace-libs-ISO99 = $(linknamespace-libs-isoc)
- linknamespace-libs-ISO11 = $(linknamespace-libs-isoc)
--linknamespace-libs-XPG4 = $(linknamespace-libs-isoc) \
-- $(common-objpfx)crypt/libcrypt.a
-+linknamespace-libs-XPG4 = $(linknamespace-libs-isoc)
- linknamespace-libs-XPG42 = $(linknamespace-libs-XPG4)
- linknamespace-libs-POSIX = $(linknamespace-libs-thr)
- linknamespace-libs-UNIX98 = $(linknamespace-libs-xsi)
- linknamespace-libs-XOPEN2K = $(linknamespace-libs-xsi)
- linknamespace-libs-POSIX2008 = $(linknamespace-libs-posix)
- linknamespace-libs-XOPEN2K8 = $(linknamespace-libs-xsi)
-+
-+ifeq ($(build-obsolete-crypt),yes)
-+linknamespace-libs-xsi += $(common-objpfx)crypt/libcrypt.a
-+linknamespace-libs-XPG4 += $(common-objpfx)crypt/libcrypt.a
-+endif
-+
- linknamespace-libs = $(foreach std,$(conformtest-standards),\
- $(linknamespace-libs-$(std)))
-
-+
-+
- $(linknamespace-symlist-stdlibs-tests): $(objpfx)symlist-stdlibs-%: \
- $(linknamespace-libs)
- LC_ALL=C $(READELF) -W -s $(linknamespace-libs-$*) > $@; \
-diff --git a/conform/data/stdlib.h-data b/conform/data/stdlib.h-data
-index d8fcccc2fb..6913828196 100644
---- a/conform/data/stdlib.h-data
-+++ b/conform/data/stdlib.h-data
-@@ -149,9 +149,6 @@ function {unsigned short int*} seed48 (unsigned short int[3])
- #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined XPG4 && !defined XPG42 && !defined UNIX98
- function int setenv (const char*, const char*, int)
- #endif
--#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
--function void setkey (const char*)
--#endif
- #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined XPG4 && !defined POSIX && !defined POSIX2008
- function {char*} setstate (char*)
- #endif
-diff --git a/conform/data/unistd.h-data b/conform/data/unistd.h-data
-index ddf4f25132..aa070528e8 100644
---- a/conform/data/unistd.h-data
-+++ b/conform/data/unistd.h-data
-@@ -437,9 +437,6 @@ function int chroot (const char*)
- function int chown (const char*, uid_t, gid_t)
- function int close (int)
- function size_t confstr (int, char*, size_t)
--#if !defined POSIX && !defined POSIX2008
--function {char*} crypt (const char*, const char*)
--#endif
- #if defined XPG4 || defined XPG42 || defined UNIX98
- function {char*} ctermid (char*)
- function {char*} cuserid (char*)
-@@ -449,9 +446,6 @@ allow cuserid
- #endif
- function int dup (int)
- function int dup2 (int, int)
--#if !defined POSIX && !defined POSIX2008
--function void encrypt (char[64], int)
--#endif
- function int execl (const char*, const char*, ...)
- function int execle (const char*, const char*, ...)
- function int execlp (const char*, const char*, ...)
-diff --git a/crypt/Makefile b/crypt/Makefile
-index 303800df73..024ec2c6ab 100644
---- a/crypt/Makefile
-+++ b/crypt/Makefile
-@@ -22,6 +22,8 @@ subdir := crypt
-
- include ../Makeconfig
-
-+ifeq ($(build-obsolete-crypt),yes)
-+
- headers := crypt.h
-
- extra-libs := libcrypt
-@@ -52,9 +54,11 @@ tests += md5test sha256test sha512test
- # machine over a minute.
- xtests = md5test-giant
- endif
-+endif
-
- include ../Rules
-
-+ifeq ($(build-obsolete-crypt),yes)
- ifneq ($(nss-crypt),yes)
- md5-routines := md5 $(filter md5%,$(libcrypt-sysdep_routines))
- sha256-routines := sha256 $(filter sha256%,$(libcrypt-sysdep_routines))
-@@ -71,3 +75,4 @@ $(addprefix $(objpfx),$(tests)): $(objpfx)libcrypt.so
- else
- $(addprefix $(objpfx),$(tests)): $(objpfx)libcrypt.a
- endif
-+endif
-diff --git a/elf/Makefile b/elf/Makefile
-index 2a432d8bee..366f7b80ec 100644
---- a/elf/Makefile
-+++ b/elf/Makefile
-@@ -385,15 +385,19 @@ $(objpfx)tst-_dl_addr_inside_object: $(objpfx)dl-addr-obj.os
- CFLAGS-tst-_dl_addr_inside_object.c += $(PIE-ccflag)
- endif
-
--# By default tst-linkall-static should try to use crypt routines to test
--# static libcrypt use.
--CFLAGS-tst-linkall-static.c += -DUSE_CRYPT=1
-+ifeq ($(build-obsolete-crypt),yes)
-+# If the libcrypt library is being built, tst-linkall-static should
-+# try to use crypt routines to test static libcrypt use.
-+CFLAGS-tst-linkall-static.c = -DUSE_CRYPT=1
- # However, if we are using NSS crypto and we don't have a static
- # library, then we exclude the use of crypt functions in the test.
- # We similarly exclude libcrypt.a from the static link (see below).
- ifeq (yesno,$(nss-crypt)$(static-nss-crypt))
- CFLAGS-tst-linkall-static.c += -UUSE_CRYPT -DUSE_CRYPT=0
- endif
-+else
-+CFLAGS-tst-linkall-static.c = -DUSE_CRYPT=0
-+endif
-
- include ../Rules
-
-@@ -1113,8 +1117,10 @@ localplt-built-dso := $(addprefix $(common-objpfx),\
- rt/librt.so \
- dlfcn/libdl.so \
- resolv/libresolv.so \
-- crypt/libcrypt.so \
- )
-+ifeq ($(build-obsolete-crypt),yes)
-+localplt-built-dso += $(addprefix $(common-objpfx), crypt/libcrypt.so)
-+endif
- ifeq ($(build-mathvec),yes)
- localplt-built-dso += $(addprefix $(common-objpfx), mathvec/libmvec.so)
- endif
-@@ -1395,6 +1401,7 @@ $(objpfx)tst-linkall-static: \
- $(common-objpfx)resolv/libanl.a \
- $(static-thread-library)
-
-+ifeq ($(build-obsolete-crypt),yes)
- # If we are using NSS crypto and we have the ability to link statically
- # then we include libcrypt.a, otherwise we leave out libcrypt.a and
- # link as much as we can into the tst-linkall-static test. This assumes
-@@ -1410,6 +1417,7 @@ ifeq (no,$(nss-crypt))
- $(objpfx)tst-linkall-static: \
- $(common-objpfx)crypt/libcrypt.a
- endif
-+endif
-
- # The application depends on the DSO, and the DSO loads the plugin.
- # The plugin also depends on the DSO. This creates the circular
-diff --git a/elf/tst-linkall-static.c b/elf/tst-linkall-static.c
-index e8df38f74e..0ffae7c723 100644
---- a/elf/tst-linkall-static.c
-+++ b/elf/tst-linkall-static.c
-@@ -18,7 +18,9 @@
-
- #include <math.h>
- #include <pthread.h>
-+#if USE_CRYPT
- #include <crypt.h>
-+#endif
- #include <resolv.h>
- #include <dlfcn.h>
- #include <utmp.h>
-diff --git a/posix/unistd.h b/posix/unistd.h
-index 4d149f9945..e75ce4d4ec 100644
---- a/posix/unistd.h
-+++ b/posix/unistd.h
-@@ -107,9 +107,6 @@ __BEGIN_DECLS
- /* The X/Open Unix extensions are available. */
- #define _XOPEN_UNIX 1
-
--/* Encryption is present. */
--#define _XOPEN_CRYPT 1
--
- /* The enhanced internationalization capabilities according to XPG4.2
- are present. */
- #define _XOPEN_ENH_I18N 1
-@@ -1118,20 +1115,7 @@ ssize_t copy_file_range (int __infd, __off64_t *__pinoff,
- extern int fdatasync (int __fildes);
- #endif /* Use POSIX199309 */
-
--
--/* XPG4.2 specifies that prototypes for the encryption functions must
-- be defined here. */
- #ifdef __USE_XOPEN
--/* Encrypt at most 8 characters from KEY using salt to perturb DES. */
--extern char *crypt (const char *__key, const char *__salt)
-- __THROW __nonnull ((1, 2));
--
--/* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt
-- block in place. */
--extern void encrypt (char *__glibc_block, int __edflag)
-- __THROW __nonnull ((1));
--
--
- /* Swab pairs bytes in the first N bytes of the area pointed to by
- FROM and copy the result to TO. The value of TO must not be in the
- range [FROM - N + 1, FROM - 1]. If N is odd the first byte in FROM
-diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
-index 6b1ead31e0..8e23e93557 100644
---- a/stdlib/stdlib.h
-+++ b/stdlib/stdlib.h
-@@ -958,12 +958,6 @@ extern int getsubopt (char **__restrict __optionp,
- #endif
-
-
--#ifdef __USE_XOPEN
--/* Setup DES tables according KEY. */
--extern void setkey (const char *__key) __THROW __nonnull ((1));
--#endif
--
--
- /* X/Open pseudo terminal handling. */
-
- #ifdef __USE_XOPEN2KXSI
-diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile b/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile
-index a6d08f3a00..d8b8297fb0 100644
---- a/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile
-+++ b/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile
-@@ -1,6 +1,8 @@
- ifeq ($(subdir),crypt)
-+ifeq ($(build-obsolete-crypt),yes)
- libcrypt-sysdep_routines += md5-crop sha256-crop sha512-crop
- endif
-+endif
-
- ifeq ($(subdir),locale)
- localedef-aux += md5-crop
-diff --git a/sysdeps/sparc/sparc64/multiarch/Makefile b/sysdeps/sparc/sparc64/multiarch/Makefile
-index eaf758e7aa..0198f9886f 100644
---- a/sysdeps/sparc/sparc64/multiarch/Makefile
-+++ b/sysdeps/sparc/sparc64/multiarch/Makefile
-@@ -1,6 +1,8 @@
- ifeq ($(subdir),crypt)
-+ifeq ($(build-obsolete-crypt),yes)
- libcrypt-sysdep_routines += md5-crop sha256-crop sha512-crop
- endif
-+endif
-
- ifeq ($(subdir),locale)
- localedef-aux += md5-crop
-diff --git a/sysdeps/unix/sysv/linux/arm/Makefile b/sysdeps/unix/sysv/linux/arm/Makefile
-index 4adc35de04..6cab4f3a31 100644
---- a/sysdeps/unix/sysv/linux/arm/Makefile
-+++ b/sysdeps/unix/sysv/linux/arm/Makefile
-@@ -19,8 +19,10 @@ endif
- # Add a syscall function to each library that needs one.
-
- ifeq ($(subdir),crypt)
-+ifeq ($(build-obsolete-crypt),yes)
- libcrypt-sysdep_routines += libc-do-syscall
- endif
-+endif
-
- ifeq ($(subdir),rt)
- librt-sysdep_routines += libc-do-syscall
---
-2.16.0
-
diff --git a/meta/recipes-core/glibc/glibc/0031-sysdeps-ieee754-prevent-maybe-uninitialized-errors.patch b/meta/recipes-core/glibc/glibc/0031-sysdeps-ieee754-prevent-maybe-uninitialized-errors.patch
new file mode 100644
index 00000000000..b02c4ec94f1
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0031-sysdeps-ieee754-prevent-maybe-uninitialized-errors.patch
@@ -0,0 +1,95 @@
+From c6cc5a6ef46837e341fe271b5ffa6def23810082 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Fri, 14 Sep 2018 23:23:03 +0000
+Subject: [PATCH] sysdeps/ieee754: prevent maybe-uninitialized errors
+
+* with -O included in BUILD_OPTIMIZATION when DEBUG_BUILD
+ is used, nativesdk-glibc fails with:
+../sysdeps/ieee754/ldbl-96/e_jnl.c: In function '__ieee754_jnl':
+../sysdeps/ieee754/ldbl-96/e_jnl.c:146:20: error: 'temp' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+ b = invsqrtpi * temp / sqrtl (x);
+ ~~~~~~~~~~^~~~~~
+../sysdeps/ieee754/ldbl-96/e_jnl.c: In function '__ieee754_ynl':
+../sysdeps/ieee754/ldbl-96/e_jnl.c:375:16: error: 'temp' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+ b = invsqrtpi * temp / sqrtl (x);
+ ~~~~~~~~~~^~~~~~
+
+* work around the issue instead of removing -O like we do with
+ SELECTED_OPTIMIZATION
+
+Upstream-Status: Submitted [https://www.sourceware.org/ml/libc-alpha/2018-09/msg00299.html]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ sysdeps/ieee754/dbl-64/e_jn.c | 2 ++
+ sysdeps/ieee754/ldbl-128/e_jnl.c | 4 ++++
+ sysdeps/ieee754/ldbl-96/e_jnl.c | 4 ++++
+ 3 files changed, 10 insertions(+)
+
+diff --git a/sysdeps/ieee754/dbl-64/e_jn.c b/sysdeps/ieee754/dbl-64/e_jn.c
+index 9181b22bb8..74a6b5f149 100644
+--- a/sysdeps/ieee754/dbl-64/e_jn.c
++++ b/sysdeps/ieee754/dbl-64/e_jn.c
+@@ -108,6 +108,7 @@ __ieee754_jn (int n, double x)
+ case 1: temp = -c + s; break;
+ case 2: temp = -c - s; break;
+ case 3: temp = c - s; break;
++ default: temp = 0; // just to prevent error: 'temp' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+ }
+ b = invsqrtpi * temp / sqrt (x);
+ }
+@@ -315,6 +316,7 @@ __ieee754_yn (int n, double x)
+ case 1: temp = -s - c; break;
+ case 2: temp = -s + c; break;
+ case 3: temp = s + c; break;
++ default: temp = 0; // just to prevent error: 'temp' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+ }
+ b = invsqrtpi * temp / sqrt (x);
+ }
+diff --git a/sysdeps/ieee754/ldbl-128/e_jnl.c b/sysdeps/ieee754/ldbl-128/e_jnl.c
+index 7739eec291..b6a1275464 100644
+--- a/sysdeps/ieee754/ldbl-128/e_jnl.c
++++ b/sysdeps/ieee754/ldbl-128/e_jnl.c
+@@ -149,6 +149,8 @@ __ieee754_jnl (int n, _Float128 x)
+ case 3:
+ temp = c - s;
+ break;
++ default:
++ temp = 0; // just to prevent error: 'temp' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+ }
+ b = invsqrtpi * temp / sqrtl (x);
+ }
+@@ -385,6 +387,8 @@ __ieee754_ynl (int n, _Float128 x)
+ case 3:
+ temp = s + c;
+ break;
++ default:
++ temp = 0; // just to prevent error: 'temp' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+ }
+ b = invsqrtpi * temp / sqrtl (x);
+ }
+diff --git a/sysdeps/ieee754/ldbl-96/e_jnl.c b/sysdeps/ieee754/ldbl-96/e_jnl.c
+index 394921f564..2263b02203 100644
+--- a/sysdeps/ieee754/ldbl-96/e_jnl.c
++++ b/sysdeps/ieee754/ldbl-96/e_jnl.c
+@@ -142,6 +142,8 @@ __ieee754_jnl (int n, long double x)
+ case 3:
+ temp = c - s;
+ break;
++ default:
++ temp = 0; // just to prevent error: 'temp' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+ }
+ b = invsqrtpi * temp / sqrtl (x);
+ }
+@@ -371,6 +373,8 @@ __ieee754_ynl (int n, long double x)
+ case 3:
+ temp = s + c;
+ break;
++ default:
++ temp = 0; // just to prevent error: 'temp' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+ }
+ b = invsqrtpi * temp / sqrtl (x);
+ }
+--
+2.17.1
+
diff --git a/meta/recipes-core/glibc/glibc/0032-soft-fp-ignore-maybe-uninitialized.patch b/meta/recipes-core/glibc/glibc/0032-soft-fp-ignore-maybe-uninitialized.patch
new file mode 100644
index 00000000000..4d56e55296e
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0032-soft-fp-ignore-maybe-uninitialized.patch
@@ -0,0 +1,72 @@
+From 0efa7fd1c800277d5323d05cb245c0536fe9ce22 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Sun, 16 Sep 2018 12:39:22 +0000
+Subject: [PATCH] soft-fp: ignore maybe-uninitialized
+
+* with -O it fails with:
+
+In file included from ../soft-fp/soft-fp.h:318,
+ from ../sysdeps/ieee754/soft-fp/s_fdiv.c:28:
+../sysdeps/ieee754/soft-fp/s_fdiv.c: In function '__fdiv':
+../soft-fp/op-2.h:98:25: error: 'R_f1' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+ X##_f0 = (X##_f1 << (_FP_W_TYPE_SIZE - (N)) | X##_f0 >> (N) \
+ ^~
+../sysdeps/ieee754/soft-fp/s_fdiv.c:38:14: note: 'R_f1' was declared here
+ FP_DECL_D (R);
+ ^
+../soft-fp/op-2.h:37:36: note: in definition of macro '_FP_FRAC_DECL_2'
+ _FP_W_TYPE X##_f0 _FP_ZERO_INIT, X##_f1 _FP_ZERO_INIT
+ ^
+../soft-fp/double.h:95:24: note: in expansion of macro '_FP_DECL'
+ # define FP_DECL_D(X) _FP_DECL (2, X)
+ ^~~~~~~~
+../sysdeps/ieee754/soft-fp/s_fdiv.c:38:3: note: in expansion of macro 'FP_DECL_D'
+ FP_DECL_D (R);
+ ^~~~~~~~~
+../soft-fp/op-2.h:101:17: error: 'R_f0' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+ : (X##_f0 << (_FP_W_TYPE_SIZE - (N))) != 0)); \
+ ^~
+../sysdeps/ieee754/soft-fp/s_fdiv.c:38:14: note: 'R_f0' was declared here
+ FP_DECL_D (R);
+ ^
+../soft-fp/op-2.h:37:14: note: in definition of macro '_FP_FRAC_DECL_2'
+ _FP_W_TYPE X##_f0 _FP_ZERO_INIT, X##_f1 _FP_ZERO_INIT
+ ^
+../soft-fp/double.h:95:24: note: in expansion of macro '_FP_DECL'
+ # define FP_DECL_D(X) _FP_DECL (2, X)
+ ^~~~~~~~
+../sysdeps/ieee754/soft-fp/s_fdiv.c:38:3: note: in expansion of macro 'FP_DECL_D'
+ FP_DECL_D (R);
+ ^~~~~~~~~
+
+Upstream-Status: Submitted [https://www.sourceware.org/ml/libc-alpha/2018-09/msg00300.html]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ soft-fp/op-2.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/soft-fp/op-2.h b/soft-fp/op-2.h
+index 6020d663d4..6672337949 100644
+--- a/soft-fp/op-2.h
++++ b/soft-fp/op-2.h
+@@ -92,6 +92,8 @@
+ X##_f1 = 0; \
+ }))
+
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+ #define _FP_FRAC_SRS_2(X, N, sz) \
+ (void) (((N) < _FP_W_TYPE_SIZE) \
+ ? ({ \
+@@ -109,6 +111,7 @@
+ | X##_f0) != 0)); \
+ X##_f1 = 0; \
+ }))
++#pragma GCC diagnostic pop
+
+ #define _FP_FRAC_ADDI_2(X, I) \
+ __FP_FRAC_ADDI_2 (X##_f1, X##_f0, I)
+--
+2.17.1
+
diff --git a/meta/recipes-core/glibc/glibc/archive-path.patch b/meta/recipes-core/glibc/glibc/archive-path.patch
deleted file mode 100644
index b0d3158cfe4..00000000000
--- a/meta/recipes-core/glibc/glibc/archive-path.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-localedef --add-to-archive uses a hard-coded locale path which 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>
-
-diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c
-index ca332a34..6b7ba9b2 100644
---- a/locale/programs/locarchive.c
-+++ b/locale/programs/locarchive.c
-@@ -569,10 +569,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 +588,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/etc/ld.so.conf b/meta/recipes-core/glibc/glibc/etc/ld.so.conf
index e69de29bb2d..83327c01bf5 100644
--- a/meta/recipes-core/glibc/glibc/etc/ld.so.conf
+++ b/meta/recipes-core/glibc/glibc/etc/ld.so.conf
@@ -0,0 +1 @@
+include /etc/ld.so.conf.d/*.conf
diff --git a/meta/recipes-core/glibc/glibc/makedbs.sh b/meta/recipes-core/glibc/glibc/makedbs.sh
new file mode 100755
index 00000000000..7d51a673521
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/makedbs.sh
@@ -0,0 +1,177 @@
+#!/bin/sh
+
+#
+# Make passwd.db, group.db, etc.
+#
+
+VAR_DB=/var/db
+
+# Use make if available
+if [ -x /usr/bin/make -o -x /bin/make ]; then
+ make -C $VAR_DB
+ exit 0
+fi
+
+# No make available, do it in hard way
+
+# passwd.db
+if [ -e /etc/passwd ]; then
+target=$VAR_DB/passwd.db
+echo -n "passwd... "
+awk 'BEGIN { FS=":"; OFS=":" } \
+ /^[ \t]*$$/ { next } \
+ /^[ \t]*#/ { next } \
+ /^[^#]/ { printf ".%s ", $$1; print; \
+ printf "=%s ", $$3; print }' /etc/passwd | \
+makedb --quiet -o $target -
+echo "done."
+fi
+
+# group.db
+if [ -e /etc/group ]; then
+target=$VAR_DB/group.db
+echo -n "group... "
+awk 'BEGIN { FS=":"; OFS=":" } \
+ /^[ \t]*$$/ { next } \
+ /^[ \t]*#/ { next } \
+ /^[^#]/ { printf ".%s ", $$1; print; \
+ printf "=%s ", $$3; print; \
+ if ($$4 != "") { \
+ split($$4, grmems, ","); \
+ for (memidx in grmems) { \
+ mem=grmems[memidx]; \
+ if (members[mem] == "") \
+ members[mem]=$$3; \
+ else \
+ members[mem]=members[mem] "," $$3; \
+ } \
+ delete grmems; } } \
+ END { for (mem in members) \
+ printf ":%s %s %s\n", mem, mem, members[mem]; }' /etc/group | \
+makedb --quiet -o $target -
+echo "done."
+fi
+
+# ethers.db
+if [ -e /etc/ethers ]; then
+target=$VAR_DB/ethers.db
+echo -n "ethers... "
+awk '/^[ \t]*$$/ { next } \
+ /^[ \t]*#/ { next } \
+ /^[^#]/ { printf ".%s ", $$1; print; \
+ printf "=%s ", $$2; print }' /etc/ethers | \
+makedb --quiet -o $target -
+echo "done."
+fi
+
+# protocols.db
+if [ -e /etc/protocols ]; then
+target=$VAR_DB/protocols.db
+echo -n "protocols... "
+awk '/^[ \t]*$$/ { next } \
+ /^[ \t]*#/ { next } \
+ /^[^#]/ { printf ".%s ", $$1; print; \
+ printf "=%s ", $$2; print; \
+ for (i = 3; i <= NF && !($$i ~ /^#/); ++i) \
+ { printf ".%s ", $$i; print } }' /etc/protocols | \
+makedb --quiet -o $target -
+echo "done."
+fi
+
+# rpc.db
+if [ -e /etc/rpc ]; then
+target=$VAR_DB/rpc.db
+echo -n "rpc... "
+awk '/^[ \t]*$$/ { next } \
+ /^[ \t]*#/ { next } \
+ /^[^#]/ { printf ".%s ", $$1; print; \
+ printf "=%s ", $$2; print; \
+ for (i = 3; i <= NF && !($$i ~ /^#/); ++i) \
+ { printf ".%s ", $$i; print } }' /etc/rpc | \
+makedb --quiet -o $target -
+echo "done."
+fi
+
+# services.db
+if [ -e /etc/services ]; then
+target=$VAR_DB/services.db
+echo -n "services... "
+awk 'BEGIN { FS="[ \t/]+" } \
+ /^[ \t]*$$/ { next } \
+ /^[ \t]*#/ { next } \
+ /^[^#]/ { sub(/[ \t]*#.*$$/, "");\
+ printf ":%s/%s ", $$1, $$3; print; \
+ printf ":%s/ ", $$1; print; \
+ printf "=%s/%s ", $$2, $$3; print; \
+ printf "=%s/ ", $$2; print; \
+ for (i = 4; i <= NF && !($$i ~ /^#/); ++i) \
+ { printf ":%s/%s ", $$i, $$3; print; \
+ printf ":%s/ ", $$i; print } }' /etc/services | \
+makedb --quiet -o $target -
+echo "done."
+fi
+
+# shadow.db
+if [ -e /etc/shadow ]; then
+target=$VAR_DB/shadow.db
+echo -n "shadow... "
+awk 'BEGIN { FS=":"; OFS=":" } \
+ /^[ \t]*$$/ { next } \
+ /^[ \t]*#/ { next } \
+ /^[^#]/ { printf ".%s ", $$1; print }' /etc/shadow | \
+(umask 077 && makedb --quiet -o $target -)
+echo "done."
+if chgrp shadow $target 2>/dev/null; then
+ chmod g+r $target
+else
+ chown 0 $target; chgrp 0 $target; chmod 600 $target;
+ echo
+ echo "Warning: The shadow password database $target"
+ echo "has been set to be readable only by root. You may want"
+ echo "to make it readable by the \`shadow' group depending"
+ echo "on your configuration."
+ echo
+fi
+fi
+
+# gshadow.db
+if [ -e /etc/gshadow ]; then
+target=$VAR_DB/gshadow.db
+echo -n "gshadow... "
+awk 'BEGIN { FS=":"; OFS=":" } \
+ /^[ \t]*$$/ { next } \
+ /^[ \t]*#/ { next } \
+ /^[^#]/ { printf ".%s ", $$1; print }' /etc/gshadow | \
+(umask 077 && makedb --quiet -o $target -)
+echo "done."
+if chgrp shadow $target 2>/dev/null; then
+ chmod g+r $target
+else
+ chown 0 $target; chgrp 0 $target; chmod 600 $target
+ echo
+ echo "Warning: The shadow group database $target"
+ echo "has been set to be readable only by root. You may want"
+ echo "to make it readable by the \`shadow' group depending"
+ echo "on your configuration."
+ echo
+fi
+fi
+
+# netgroup.db
+if [ -e /etc/netgroup ]; then
+target=$VAR_DB/netgroup.db
+echo -n "netgroup... "
+awk 'BEGIN { ini=1 } \
+ /^[ \t]*$$/ { next } \
+ /^[ \t]*#/ { next } \
+ /^[^#]/ { if (sub(/[ \t]*\\$$/, " ") == 0) end="\n"; \
+ else end=""; \
+ gsub(/[ \t]+/, " "); \
+ sub(/^[ \t]*/, ""); \
+ if (ini == 0) printf "%s%s", $$0, end; \
+ else printf ".%s %s%s", $$1, $$0, end; \
+ ini=end == "" ? 0 : 1; } \
+ END { if (ini==0) printf "\n" }' /etc/netgroup | \
+makedb --quiet -o $target
+echo "done."
+fi
diff --git a/meta/recipes-core/glibc/glibc_2.27.bb b/meta/recipes-core/glibc/glibc_2.28.bb
index c814798bbd1..804b7891ecc 100644
--- a/meta/recipes-core/glibc/glibc_2.27.bb
+++ b/meta/recipes-core/glibc/glibc_2.28.bb
@@ -1,13 +1,13 @@
require glibc.inc
-LIC_FILES_CHKSUM = "file://LICENSES;md5=e9a558e243b36d3209f380deb394b213 \
+LIC_FILES_CHKSUM = "file://LICENSES;md5=cfc0ed77a9f62fa62eded042ebe31d72 \
file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \
file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
-DEPENDS += "gperf-native bison-native"
+DEPENDS += "gperf-native bison-native make-native"
-SRCREV ?= "df3ff4e49d4ee3cbbdaeb0b1cb5dc2344c08be98"
+SRCREV ?= "3c03baca37fdcb52c3881e653ca392bba7a99c2b"
SRCBRANCH ?= "release/${PV}/master"
@@ -17,25 +17,25 @@ UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+(\.(?!90)\d+)*)"
SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
file://etc/ld.so.conf \
file://generate-supported.mk \
+ file://makedbs.sh \
\
${NATIVESDKFIXES} \
- file://0005-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch \
- file://0006-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch \
- file://0007-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch \
- file://0008-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch \
- file://0009-Quote-from-bug-1443-which-explains-what-the-patch-do.patch \
- file://0010-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch \
- file://0011-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch \
- file://0012-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch \
- file://0013-Add-unused-attribute.patch \
- file://0014-yes-within-the-path-sets-wrong-config-variables.patch \
- file://0015-timezone-re-written-tzselect-as-posix-sh.patch \
- file://0016-Remove-bash-dependency-for-nscd-init-script.patch \
- file://0017-eglibc-Cross-building-and-testing-instructions.patch \
- file://0018-eglibc-Help-bootstrap-cross-toolchain.patch \
- file://0019-eglibc-Clear-cache-lines-on-ppc8xx.patch \
- file://0020-eglibc-Resolve-__fpscr_values-on-SH4.patch \
- file://0021-eglibc-Install-PIC-archives.patch \
+ 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-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch \
@@ -43,8 +43,11 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
file://0026-reset-dl_load_write_lock-after-forking.patch \
file://0027-Acquire-ld.so-lock-before-switching-to-malloc_atfork.patch \
file://0028-bits-siginfo-consts.h-enum-definition-for-TRAP_HWBKP.patch \
- file://0029-Replace-strncpy-with-memccpy-to-fix-Wstringop-trunca.patch \
- file://0030-plural_c_no_preprocessor_lines.patch \
+ file://0029-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch \
+ file://0030-intl-Emit-no-lines-in-bison-generated-files.patch \
+ file://0031-sysdeps-ieee754-prevent-maybe-uninitialized-errors.patch \
+ file://0032-soft-fp-ignore-maybe-uninitialized.patch \
+ file://0001-Linux-gethostid-Check-for-NULL-value-from-gethostbyn.patch \
"
NATIVESDKFIXES ?= ""
@@ -53,8 +56,7 @@ NATIVESDKFIXES_class-nativesdk = "\
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://relocate-locales.patch \
- file://0031-nativesdk-deprecate-libcrypt.patch \
+ file://0005-nativesdk-glibc-Make-relocatable-install-for-locales.patch \
"
S = "${WORKDIR}/git"
@@ -76,18 +78,16 @@ COMPATIBLE_HOST_libc-musl_class-target = "null"
GLIBCPIE ??= ""
EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
- --without-cvs --disable-profile \
+ --disable-profile \
--disable-debug --without-gd \
--enable-clocale=gnu \
- --enable-add-ons=libidn \
--with-headers=${STAGING_INCDIR} \
--without-selinux \
- --enable-obsolete-rpc \
- --enable-obsolete-nsl \
--enable-tunables \
--enable-bind-now \
--enable-stack-protector=strong \
--enable-stackguard-randomization \
+ --disable-crypt \
${GLIBCPIE} \
${GLIBC_EXTRA_OECONF}"
@@ -113,22 +113,10 @@ do_configure () {
CPPFLAGS="" oe_runconf
}
-rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
- yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
- rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
-
do_compile () {
# -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
unset LDFLAGS
base_do_compile
- (
- cd ${S}/sunrpc/rpcsvc
- for r in ${rpcsvc}; do
- h=`echo $r|sed -e's,\.x$,.h,'`
- rm -f $h
- ${B}/sunrpc/cross-rpcgen -h $r -o $h || bbwarn "${PN}: unable to generate header for $r"
- done
- )
echo "Adjust ldd script"
if [ -n "${RTLDLIST}" ]
then
diff --git a/meta/recipes-core/ifupdown/ifupdown_0.8.16.bb b/meta/recipes-core/ifupdown/ifupdown_0.8.16.bb
index 5654528ae87..e9f3a2aee9b 100644
--- a/meta/recipes-core/ifupdown/ifupdown_0.8.16.bb
+++ b/meta/recipes-core/ifupdown/ifupdown_0.8.16.bb
@@ -6,7 +6,7 @@ the file /etc/network/interfaces."
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-SRC_URI = "git://anonscm.debian.org/git/collab-maint/ifupdown.git \
+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 \
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 db2f58dfb93..22738622419 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
@@ -22,8 +22,8 @@ IMAGE_FSTYPES = "wic.vmdk"
inherit core-image module-base setuptools3
-SRCREV ?= "14d62d5c14e3552f2aeabdbd80d1504bb2c6ed64"
-SRC_URI = "git://git.yoctoproject.org/poky;branch=sumo \
+SRCREV ?= "5694f06b6eff6c36a4c7a3fd03a32b87998d379c"
+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 \
@@ -59,8 +59,10 @@ fakeroot do_populate_poky_src () {
cp ${WORKDIR}/README_VirtualBox_Toaster.txt ${IMAGE_ROOTFS}/home/builder/
# Create a symlink, needed for out-of-tree kernel modules build
- rm -f ${IMAGE_ROOTFS}/lib/modules/${KERNEL_VERSION}/build
- lnr ${IMAGE_ROOTFS}${KERNEL_SRC_PATH} ${IMAGE_ROOTFS}/lib/modules/${KERNEL_VERSION}/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
diff --git a/meta/recipes-core/images/core-image-minimal-initramfs.bb b/meta/recipes-core/images/core-image-minimal-initramfs.bb
index 6de860e43a8..7df8ab1ebd8 100644
--- a/meta/recipes-core/images/core-image-minimal-initramfs.bb
+++ b/meta/recipes-core/images/core-image-minimal-initramfs.bb
@@ -27,7 +27,5 @@ inherit core-image
IMAGE_ROOTFS_SIZE = "8192"
IMAGE_ROOTFS_EXTRA_SPACE = "0"
-BAD_RECOMMENDATIONS += "busybox-syslog"
-
# Use the same restriction as initramfs-live-install
COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
diff --git a/meta/recipes-core/images/core-image-tiny-initramfs.bb b/meta/recipes-core/images/core-image-tiny-initramfs.bb
index 51d08a0cd1c..0eca6d9944c 100644
--- a/meta/recipes-core/images/core-image-tiny-initramfs.bb
+++ b/meta/recipes-core/images/core-image-tiny-initramfs.bb
@@ -5,6 +5,8 @@ first 'init' program more efficiently. core-image-tiny-initramfs doesn't \
actually generate an image but rather generates boot and rootfs artifacts \
that can subsequently be picked up by external image generation tools such as wic."
+VIRTUAL-RUNTIME_dev_manager ?= "busybox-mdev"
+
PACKAGE_INSTALL = "initramfs-live-boot-tiny packagegroup-core-boot dropbear ${VIRTUAL-RUNTIME_base-utils} ${VIRTUAL-RUNTIME_dev_manager} base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}"
# Do not pollute the initrd image with rootfs features
@@ -23,8 +25,6 @@ inherit core-image
IMAGE_ROOTFS_SIZE = "8192"
IMAGE_ROOTFS_EXTRA_SPACE = "0"
-BAD_RECOMMENDATIONS += "busybox-syslog"
-
# Use the same restriction as initramfs-live-install
COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
diff --git a/meta/recipes-core/initrdscripts/files/init-install.sh b/meta/recipes-core/initrdscripts/files/init-install.sh
index 28e8f09d19d..e71579631b5 100644
--- a/meta/recipes-core/initrdscripts/files/init-install.sh
+++ b/meta/recipes-core/initrdscripts/files/init-install.sh
@@ -302,6 +302,8 @@ if [ -f /etc/grub.d/00_header -a $grub_version -ne 0 ] ; then
GRUBCFG="/boot/grub/grub.cfg"
mkdir -p $(dirname $GRUBCFG)
cat >$GRUBCFG <<_EOF
+timeout=5
+default=0
menuentry "Linux" {
search --no-floppy --fs-uuid $boot_uuid --set root
linux /$kernel root=PARTUUID=$root_part_uuid $rootwait rw $5 $3 $4 quiet
diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh b/meta/recipes-core/initrdscripts/files/init-live.sh
index 46cab6cc77a..65183d7eec3 100644
--- a/meta/recipes-core/initrdscripts/files/init-live.sh
+++ b/meta/recipes-core/initrdscripts/files/init-live.sh
@@ -95,8 +95,11 @@ boot_live_root() {
# Move the mount points of some filesystems over to
# the corresponding directories under the real root filesystem.
for dir in `awk '/\/dev.* \/run\/media/{print $2}' /proc/mounts`; do
- mkdir -p ${ROOT_MOUNT}/media/${dir##*/}
- mount -n --move $dir ${ROOT_MOUNT}/media/${dir##*/}
+ # Parse any OCT or HEX encoded chars such as spaces
+ # in the mount points to actual ASCII chars
+ dir=`printf $dir`
+ mkdir -p "${ROOT_MOUNT}/media/${dir##*/}"
+ mount -n --move "$dir" "${ROOT_MOUNT}/media/${dir##*/}"
done
mount -n --move /proc ${ROOT_MOUNT}/proc
mount -n --move /sys ${ROOT_MOUNT}/sys
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/init b/meta/recipes-core/initrdscripts/initramfs-framework/init
index 37527a840af..3c7e09422de 100755
--- a/meta/recipes-core/initrdscripts/initramfs-framework/init
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/init
@@ -84,7 +84,7 @@ mount -t sysfs sysfs /sys
# populate bootparam environment
for p in `cat /proc/cmdline`; do
opt=`echo $p | cut -d'=' -f1`
- opt=`echo $opt | tr '.-' '__'`
+ opt=`echo $opt | sed -e 'y/.-/__/'`
if [ "`echo $p | cut -d'=' -f1`" = "$p" ]; then
eval "bootparam_${opt}=true"
else
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/nfsrootfs b/meta/recipes-core/initrdscripts/initramfs-framework/nfsrootfs
new file mode 100644
index 00000000000..e67ee4c25d3
--- /dev/null
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/nfsrootfs
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+nfsrootfs_enabled() {
+ if [ ${bootparam_root} != "/dev/nfs" ] || [ -z ${bootparam_nfsroot} ]; then
+ return 1
+ fi
+ return 0
+}
+
+nfsrootfs_run() {
+ local nfs_opts
+ local location
+ local flags
+ local server_ip
+
+ nfs_opts=""
+ if [ "${bootparam_nfsroot#*,}" != "${bootparam_nfsroot}" ]; then
+ nfs_opts="-o ${bootparam_nfsroot#*,}"
+ fi
+
+ location="${bootparam_nfsroot%%,*}"
+ if [ "${location#*:}" = "${location}" ]; then
+ # server-ip not given. Get server ip from ip option
+ server_ip=""
+ if [ "${bootparam_ip#*:}" != "${bootparam_ip}" ]; then
+ server_ip=$(echo "$bootparam_ip" | cut -d: -f2)
+ fi
+
+ if [ -z "$server_ip" ]; then
+ fatal "Server IP is not set. Update ip or nfsroot options."
+ fi
+ location=${server_ip}:${location}
+ fi
+
+ flags="-o nolock"
+ if [ -n "$bootparam_ro" ] && ! echo "$bootparam_rootflags" | grep -w -q "ro"; then
+ if [ -n "$bootparam_rootflags" ]; then
+ bootparam_rootflags="$bootparam_rootflags,"
+ fi
+ bootparam_rootflags="${bootparam_rootflags}ro"
+ fi
+ if [ -n "$bootparam_rootflags" ]; then
+ flags="$flags -o $bootparam_rootflags"
+ fi
+
+ mount -t nfs ${flags} ${nfs_opts} ${location} ${ROOTFS_DIR}
+}
+
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/udev b/meta/recipes-core/initrdscripts/initramfs-framework/udev
index 79c88678236..87551ff4a9b 100644
--- a/meta/recipes-core/initrdscripts/initramfs-framework/udev
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/udev
@@ -6,6 +6,7 @@ udev_shutdown_hook_handler() {
status=$1
module=$2
if [ "$status" = "pre" ] && [ "$module" = "finish" ]; then
+ udevadm settle
killall `basename $_UDEV_DAEMON` 2>/dev/null
fi
}
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
index 75d965f0691..660343eafa2 100644
--- a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
@@ -2,6 +2,7 @@ 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}"
PR = "r4"
@@ -9,6 +10,7 @@ inherit allarch
SRC_URI = "file://init \
file://exec \
+ file://nfsrootfs \
file://rootfs \
file://finish \
file://mdev \
@@ -24,6 +26,7 @@ do_install() {
# base
install -m 0755 ${WORKDIR}/init ${D}/init
+ install -m 0755 ${WORKDIR}/nfsrootfs ${D}/init.d/85-nfsrootfs
install -m 0755 ${WORKDIR}/rootfs ${D}/init.d/90-rootfs
install -m 0755 ${WORKDIR}/finish ${D}/init.d/99-finish
@@ -53,6 +56,7 @@ PACKAGES = "${PN}-base \
initramfs-module-mdev \
initramfs-module-udev \
initramfs-module-e2fs \
+ initramfs-module-nfsrootfs \
initramfs-module-rootfs \
initramfs-module-debug \
"
@@ -83,6 +87,10 @@ SUMMARY_initramfs-module-e2fs = "initramfs support for ext4/ext3/ext2 filesystem
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-rootfs = "initramfs support for locating and mounting the root partition"
RDEPENDS_initramfs-module-rootfs = "${PN}-base"
FILES_initramfs-module-rootfs = "/init.d/90-rootfs"
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 f588a1077bf..cc842ae8b71 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
@@ -6,6 +6,7 @@ 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}"
S = "${WORKDIR}"
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 9222d57c1ae..48fc0c4a769 100644
--- a/meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb
@@ -8,6 +8,7 @@ PR = "r9"
S = "${WORKDIR}"
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
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 78a61cde25f..523138cff36 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
@@ -2,6 +2,7 @@ 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}"
PR = "r4"
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 04e90cd302c..56898e824f3 100644
--- a/meta/recipes-core/initrdscripts/initramfs-module-install_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-module-install_1.0.bb
@@ -2,6 +2,7 @@ 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}"
# The same restriction as grub
COMPATIBLE_HOST = '(x86_64.*|i.86.*|arm.*|aarch64.*)-(linux.*|freebsd.*)'
diff --git a/meta/recipes-core/initscripts/initscripts-1.0/mountnfs.sh b/meta/recipes-core/initscripts/initscripts-1.0/mountnfs.sh
index fe6c19605f3..be9f5970fa7 100755
--- a/meta/recipes-core/initscripts/initscripts-1.0/mountnfs.sh
+++ b/meta/recipes-core/initscripts/initscripts-1.0/mountnfs.sh
@@ -67,9 +67,12 @@ if test "$rpcbind" = yes
then
if test -x /usr/sbin/rpcbind
then
- echo -n "Starting rpcbind... "
- start-stop-daemon --start --quiet --exec /usr/sbin/rpcbind
- sleep 2
+ service rpcbind status > /dev/null
+ if [ $? != 0 ]; then
+ echo -n "Starting rpcbind..."
+ start-stop-daemon --start --quiet --exec /usr/sbin/rpcbind
+ sleep 2
+ fi
fi
fi
diff --git a/meta/recipes-core/libcgroup/libcgroup/CVE-2018-14348.patch b/meta/recipes-core/libcgroup/libcgroup/CVE-2018-14348.patch
new file mode 100644
index 00000000000..d133703dec8
--- /dev/null
+++ b/meta/recipes-core/libcgroup/libcgroup/CVE-2018-14348.patch
@@ -0,0 +1,37 @@
+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_0.41.bb b/meta/recipes-core/libcgroup/libcgroup_0.41.bb
index 7ddc81e9b7a..92d7261b0da 100644
--- a/meta/recipes-core/libcgroup/libcgroup_0.41.bb
+++ b/meta/recipes-core/libcgroup/libcgroup_0.41.bb
@@ -11,7 +11,8 @@ inherit autotools pkgconfig
DEPENDS = "bison-native flex-native"
-SRC_URI = "${SOURCEFORGE_MIRROR}/project/libcg/${BPN}/v0.41/${BPN}-${PV}.tar.bz2"
+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"
diff --git a/meta/recipes-core/libxcrypt/libxcrypt_4.0.0.bb b/meta/recipes-core/libxcrypt/libxcrypt_4.1.1.bb
index a1be4be7eff..61ea22e4ea1 100644
--- a/meta/recipes-core/libxcrypt/libxcrypt_4.0.0.bb
+++ b/meta/recipes-core/libxcrypt/libxcrypt_4.1.1.bb
@@ -3,16 +3,17 @@ 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=d1cc18f512ded3bd6000f3729f31be08 \
+LIC_FILES_CHKSUM ?= "file://LICENSING;md5=cb3ca4cabd2447a37bf186fad6f79852 \
file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
"
-inherit autotools
+inherit autotools pkgconfig
-SRCREV ?= "215b32aa4e0b255c3356a96bd6d257661bad73ca"
+SRCREV ?= "21b455b68baad279e6a3936faced16c5e5634376"
SRCBRANCH ?= "master"
-SRC_URI = "git://github.com/besser82/libxcrypt.git;branch=${SRCBRANCH}"
+SRC_URI = "git://github.com/besser82/libxcrypt.git;branch=${SRCBRANCH} \
+ "
PROVIDES = "virtual/crypt"
@@ -23,9 +24,4 @@ S = "${WORKDIR}/git"
BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE} -std=gnu99"
TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${includedir}"
-python () {
- if not bb.data.inherits_class('nativesdk', d):
- raise bb.parse.SkipRecipe("Recipe only applies in nativesdk case for now")
-}
-
BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-core/libxml/libxml2/0001-Fix-infinite-loop-in-LZMA-decompression.patch b/meta/recipes-core/libxml/libxml2/0001-Fix-infinite-loop-in-LZMA-decompression.patch
new file mode 100644
index 00000000000..16c229574c4
--- /dev/null
+++ b/meta/recipes-core/libxml/libxml2/0001-Fix-infinite-loop-in-LZMA-decompression.patch
@@ -0,0 +1,55 @@
+From 28a9dc642ffd759df1e48be247a114f440a6c16e Mon Sep 17 00:00:00 2001
+From: Nick Wellnhofer <wellnhofer@aevum.de>
+Date: Mon, 30 Jul 2018 13:14:11 +0200
+Subject: [PATCH] Fix infinite loop in LZMA decompression
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Check the liblzma error code more thoroughly to avoid infinite loops.
+
+Closes: https://gitlab.gnome.org/GNOME/libxml2/issues/13
+Closes: https://bugzilla.gnome.org/show_bug.cgi?id=794914
+
+This is CVE-2018-9251 and CVE-2018-14567.
+
+Thanks to Dongliang Mu and Simon Wörner for the reports.
+
+CVE: CVE-2018-9251
+CVE: CVE-2018-14567
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/commit/2240fbf5912054af025fb6e01e26375100275e74]
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ xzlib.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/xzlib.c b/xzlib.c
+index a839169..0ba88cf 100644
+--- a/xzlib.c
++++ b/xzlib.c
+@@ -562,6 +562,10 @@ xz_decomp(xz_statep state)
+ "internal error: inflate stream corrupt");
+ return -1;
+ }
++ /*
++ * FIXME: Remapping a couple of error codes and falling through
++ * to the LZMA error handling looks fragile.
++ */
+ if (ret == Z_MEM_ERROR)
+ ret = LZMA_MEM_ERROR;
+ if (ret == Z_DATA_ERROR)
+@@ -587,6 +591,11 @@ xz_decomp(xz_statep state)
+ xz_error(state, LZMA_PROG_ERROR, "compression error");
+ return -1;
+ }
++ if ((state->how != GZIP) &&
++ (ret != LZMA_OK) && (ret != LZMA_STREAM_END)) {
++ xz_error(state, ret, "lzma error");
++ return -1;
++ }
+ } while (strm->avail_out && ret != LZMA_STREAM_END);
+
+ /* update available output and crc check value */
+--
+2.7.4
+
diff --git a/meta/recipes-core/libxml/libxml2/ansidecl.patch b/meta/recipes-core/libxml/libxml2/ansidecl.patch
deleted file mode 100644
index 1085c680b61..00000000000
--- a/meta/recipes-core/libxml/libxml2/ansidecl.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Sadly cmake is broken. If it sees this reference and ansidecl is present, it will add a
-dependency upon it, even if HAVE_ANSIDEC_H is never set.
-
-The easiest solution is to remove these lines, otherwise recipes like libzypp can have a
-dependency on the ansidecl.h header via cmake. This can lead to odd results if the
-header is removed (clean binutils) and then the code is recompiled.
-
-RP 2012/7/10
-
-Upstream-Status: Inappropriate [its really a cmake bug]
-
-diff --git a/configure.ac b/configure.ac
-index 0260281..fdb58e9 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -484 +483,0 @@ AC_CHECK_HEADERS([time.h])
--AC_CHECK_HEADERS([ansidecl.h])
-diff --git a/include/libxml/xmlversion.h.in b/include/libxml/xmlversion.h.in
-index b173be9..d10f975 100644
---- a/include/libxml/xmlversion.h.in
-+++ b/include/libxml/xmlversion.h.in
-@@ -413,3 +412,0 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
--#ifdef HAVE_ANSIDECL_H
--#include <ansidecl.h>
--#endif
diff --git a/meta/recipes-core/libxml/libxml2/fix-CVE-2017-8872.patch b/meta/recipes-core/libxml/libxml2/fix-CVE-2017-8872.patch
new file mode 100644
index 00000000000..b34479f318f
--- /dev/null
+++ b/meta/recipes-core/libxml/libxml2/fix-CVE-2017-8872.patch
@@ -0,0 +1,38 @@
+From b4bee17b158e289e5c4c9045e64e5374ccafe068 Mon Sep 17 00:00:00 2001
+From: Salvatore Bonaccorso <carnil@debian.org>
+Date: Tue, 3 Jul 2018 15:54:03 +0800
+Subject: [PATCH] Out-of-bounds read in htmlParseTryOrFinish (CVE-2017-8872)
+
+https://bugzilla.gnome.org/show_bug.cgi?id=775200
+Fixes bug 775200.
+
+Signed-off-by: Salvatore Bonaccorso <carnil@debian.org>
+
+Upstream-Status: Submitted
+https://bug775200.bugzilla-attachments.gnome.org/attachment.cgi?id=366193
+CVE: CVE-2017-8872
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ parser.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/parser.c b/parser.c
+index ca9fde2..fb4c889 100644
+--- a/parser.c
++++ b/parser.c
+@@ -12464,7 +12464,11 @@ xmlHaltParser(xmlParserCtxtPtr ctxt) {
+ }
+ ctxt->input->cur = BAD_CAST"";
+ ctxt->input->base = ctxt->input->cur;
+- ctxt->input->end = ctxt->input->cur;
++ ctxt->input->end = ctxt->input->cur;
++ if (ctxt->input->buf)
++ xmlBufEmpty (ctxt->input->buf->buffer);
++ else
++ ctxt->input->length = 0;
+ }
+ }
+
+--
+2.7.4
+
diff --git a/meta/recipes-core/libxml/libxml2/fix-CVE-2018-14404.patch b/meta/recipes-core/libxml/libxml2/fix-CVE-2018-14404.patch
new file mode 100644
index 00000000000..21668e25ad2
--- /dev/null
+++ b/meta/recipes-core/libxml/libxml2/fix-CVE-2018-14404.patch
@@ -0,0 +1,45 @@
+libxml2-2.9.8: Fix CVE-2018-14404
+
+[No upstream tracking] -- https://gitlab.gnome.org/GNOME/libxml2/issues/5
+ -- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901817
+ -- https://bugzilla.redhat.com/show_bug.cgi?id=1595985
+
+xpath: Fix nullptr deref with XPath logic ops
+
+If the XPath stack is corrupted, for example by a misbehaving extension
+function, the "and" and "or" XPath operators could dereference NULL
+pointers. Check that the XPath stack isn't empty and optimize the
+logic operators slightly.
+
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/commit/a436374994c47b12d5de1b8b1d191a098fa23594]
+CVE: CVE-2018-14404
+Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+
+diff --git a/xpath.c b/xpath.c
+index f440696..75cac5c 100644
+--- a/xpath.c
++++ b/xpath.c
+@@ -13297,9 +13297,8 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op)
+ return(0);
+ }
+ xmlXPathBooleanFunction(ctxt, 1);
+- arg1 = valuePop(ctxt);
+- arg1->boolval &= arg2->boolval;
+- valuePush(ctxt, arg1);
++ if (ctxt->value != NULL)
++ ctxt->value->boolval &= arg2->boolval;
+ xmlXPathReleaseObject(ctxt->context, arg2);
+ return (total);
+ case XPATH_OP_OR:
+@@ -13323,9 +13322,8 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op)
+ return(0);
+ }
+ xmlXPathBooleanFunction(ctxt, 1);
+- arg1 = valuePop(ctxt);
+- arg1->boolval |= arg2->boolval;
+- valuePush(ctxt, arg1);
++ if (ctxt->value != NULL)
++ ctxt->value->boolval |= arg2->boolval;
+ xmlXPathReleaseObject(ctxt->context, arg2);
+ return (total);
+ case XPATH_OP_EQUAL:
diff --git a/meta/recipes-core/libxml/libxml2/runtest.patch b/meta/recipes-core/libxml/libxml2/runtest.patch
index cb171d5b362..544dc05834b 100644
--- a/meta/recipes-core/libxml/libxml2/runtest.patch
+++ b/meta/recipes-core/libxml/libxml2/runtest.patch
@@ -6,8 +6,8 @@ Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
Upstream-Status: Backport
diff -uNr a/Makefile.am b/Makefile.am
---- a/Makefile.am 2017-08-28 15:01:14.000000000 +0200
-+++ b/Makefile.am 2017-09-05 08:06:05.752287323 +0200
+--- a/Makefile.am 2017-12-02 09:58:10.000000000 +0100
++++ b/Makefile.am 2018-03-20 08:27:34.360505864 +0100
@@ -202,6 +202,15 @@
#testOOM_DEPENDENCIES = $(DEPS)
#testOOM_LDADD= $(LDADDS)
@@ -24,10 +24,9 @@ diff -uNr a/Makefile.am b/Makefile.am
runtests: runtest$(EXEEXT) testrecurse$(EXEEXT) testapi$(EXEEXT) \
testchar$(EXEEXT) testdict$(EXEEXT) runxmlconf$(EXEEXT)
[ -d test ] || $(LN_S) $(srcdir)/test .
-
diff -uNr a/runsuite.c b/runsuite.c
---- a/runsuite.c 2013-04-12 16:17:11.462823238 +0200
-+++ b/runsuite.c 2013-04-17 14:07:24.352693211 +0200
+--- a/runsuite.c 2016-06-07 12:04:14.000000000 +0200
++++ b/runsuite.c 2018-03-20 08:27:57.478817247 +0100
@@ -1162,6 +1162,7 @@
if (logfile != NULL)
@@ -37,17 +36,19 @@ diff -uNr a/runsuite.c b/runsuite.c
}
#else /* !SCHEMAS */
diff -uNr a/runtest.c b/runtest.c
---- a/runtest.c 2013-04-16 13:19:15.087997290 +0200
-+++ b/runtest.c 2013-04-17 14:08:29.529949655 +0200
-@@ -4386,6 +4386,7 @@
- err++;
- }
+--- a/runtest.c 2017-11-13 22:00:17.000000000 +0100
++++ b/runtest.c 2018-03-20 08:28:50.859047551 +0100
+@@ -4496,7 +4496,8 @@
}
+
+ xmlCharEncCloseFunc(ebcdicHandler);
+-
++
+ printf("%s: %s\n", (err == 0) ? "PASS" : "FAIL", tst->desc);
return(err);
}
-@@ -4455,6 +4456,7 @@
+@@ -4573,6 +4574,7 @@
xmlCleanupParser();
xmlMemoryDump();
@@ -56,8 +57,8 @@ diff -uNr a/runtest.c b/runtest.c
}
diff -uNr a/runxmlconf.c b/runxmlconf.c
---- a/runxmlconf.c 2013-04-16 12:53:49.900982990 +0200
-+++ b/runxmlconf.c 2013-04-17 14:09:21.111778104 +0200
+--- a/runxmlconf.c 2016-06-07 12:04:14.000000000 +0200
++++ b/runxmlconf.c 2018-03-20 08:29:17.944862893 +0100
@@ -595,6 +595,7 @@
if (logfile != NULL)
@@ -67,9 +68,9 @@ diff -uNr a/runxmlconf.c b/runxmlconf.c
}
diff -uNr a/testapi.c b/testapi.c
---- a/testapi.c 2013-04-12 16:16:57.763417659 +0200
-+++ b/testapi.c 2013-04-17 14:10:28.876924881 +0200
-@@ -1245,49 +1245,91 @@
+--- a/testapi.c 2018-01-25 07:39:15.000000000 +0100
++++ b/testapi.c 2018-03-20 09:08:35.323980145 +0100
+@@ -1246,49 +1246,91 @@
testlibxml2(void)
{
int test_ret = 0;
@@ -200,9 +201,19 @@ diff -uNr a/testapi.c b/testapi.c
return(test_ret);
}
+diff -uNr a/testdict.c b/testdict.c
+--- a/testdict.c 2016-06-07 12:04:14.000000000 +0200
++++ b/testdict.c 2018-03-20 08:59:16.864275812 +0100
+@@ -440,5 +440,6 @@
+ clean_strings();
+ xmlCleanupParser();
+ xmlMemoryDump();
++ printf("%s: testdict\n\n", (ret == 0) ? "PASS" : "FAIL");
+ return(ret);
+ }
diff -uNr a/testchar.c b/testchar.c
---- a/testchar.c 2013-04-17 10:50:30.250147418 +0200
-+++ b/testchar.c 2013-04-18 16:11:28.455733800 +0200
+--- a/testchar.c 2016-06-07 12:04:14.000000000 +0200
++++ b/testchar.c 2018-03-20 09:11:20.383573912 +0100
@@ -23,7 +23,7 @@
char document1[100] = "<doc>XXXX</doc>";
char document2[100] = "<doc foo='XXXX'/>";
@@ -222,7 +233,7 @@ diff -uNr a/testchar.c b/testchar.c
"Failed to detect invalid char for Byte 0x%02X: %c\n",
i, i);
+ return(1);
-+ }
++ }
}
else if ((i == '<') || (i == '&')) {
@@ -230,8 +241,8 @@ diff -uNr a/testchar.c b/testchar.c
+ if ((lastError == 0) || (res != NULL)) {
fprintf(stderr,
"Failed to detect illegal char %c for Byte 0x%02X\n", i, i);
-+ return(1);
-+ }
++ return(1);
++ }
}
else if (((i < 0x20) || (i >= 0x80)) &&
(i != 0x9) && (i != 0xA) && (i != 0xD)) {
@@ -239,8 +250,8 @@ diff -uNr a/testchar.c b/testchar.c
+ if ((lastError != XML_ERR_INVALID_CHAR) && (res != NULL)) {
fprintf(stderr,
"Failed to detect invalid char for Byte 0x%02X\n", i);
-+ return(1);
-+ }
++ return(1);
++ }
}
else if (res == NULL) {
fprintf(stderr,
@@ -250,7 +261,7 @@ diff -uNr a/testchar.c b/testchar.c
if (res != NULL)
xmlFreeDoc(res);
}
-+ return(0);
++ return(0);
}
-static void testDocumentRangeByte2(xmlParserCtxtPtr ctxt, char *document,
@@ -268,7 +279,7 @@ diff -uNr a/testchar.c b/testchar.c
"Failed to detect invalid char for Bytes 0x%02X 0x%02X\n",
i, j);
+ return(1);
-+ }
++ }
}
/*
@@ -282,7 +293,7 @@ diff -uNr a/testchar.c b/testchar.c
"Failed to detect invalid char for Bytes 0x%02X 0x%02X\n",
i, j);
+ return(1);
-+ }
++ }
}
/*
@@ -296,7 +307,7 @@ diff -uNr a/testchar.c b/testchar.c
"Failed to detect invalid char for Bytes 0x%02X 0x%02X\n",
i, j);
+ return(1);
-+ }
++ }
}
/*
@@ -310,7 +321,7 @@ diff -uNr a/testchar.c b/testchar.c
"Failed to detect invalid char for Bytes 0x%02X 0x%02X 0x00\n",
i, j);
+ return(1);
-+ }
++ }
}
/*
@@ -318,13 +329,13 @@ diff -uNr a/testchar.c b/testchar.c
else if ((lastError != 0) || (res == NULL)) {
fprintf(stderr,
"Failed to parse document for Bytes 0x%02X 0x%02X\n", i, j);
-+ return(1);
++ return(1);
}
if (res != NULL)
xmlFreeDoc(res);
}
}
-+ return(0);
++ return(0);
}
/**
@@ -438,20 +449,20 @@ diff -uNr a/testchar.c b/testchar.c
+ if (lastError != XML_ERR_INVALID_CHAR) {
fprintf(stderr,
"Failed to detect invalid char for Byte 0x%02X\n", i);
-+ return(1);
-+ }
++ return(1);
++ }
} else if (i == 0xD) {
- if ((c != 0xA) || (len != 1))
+ if ((c != 0xA) || (len != 1)) {
fprintf(stderr, "Failed to convert char for Byte 0x%02X\n", i);
+ return(1);
-+ }
++ }
} else if ((c != i) || (len != 1)) {
fprintf(stderr, "Failed to parse char for Byte 0x%02X\n", i);
-+ return(1);
++ return(1);
}
}
-+ return(0);
++ return(0);
}
-static void testCharRangeByte2(xmlParserCtxtPtr ctxt, char *data) {
@@ -468,8 +479,8 @@ diff -uNr a/testchar.c b/testchar.c
fprintf(stderr,
"Failed to detect invalid char for Bytes 0x%02X 0x%02X\n",
i, j);
-+ return(1);
-+ }
++ return(1);
++ }
}
/*
@@ -482,8 +493,8 @@ diff -uNr a/testchar.c b/testchar.c
fprintf(stderr,
"Failed to detect invalid char for Bytes 0x%02X 0x%02X: %d\n",
i, j, c);
-+ return(1);
-+ }
++ return(1);
++ }
}
/*
@@ -496,8 +507,8 @@ diff -uNr a/testchar.c b/testchar.c
fprintf(stderr,
"Failed to detect invalid char for Bytes 0x%02X 0x%02X: %d\n",
i, j, c);
-+ return(1);
-+ }
++ return(1);
++ }
}
/*
@@ -510,8 +521,8 @@ diff -uNr a/testchar.c b/testchar.c
fprintf(stderr,
"Failed to detect invalid char for Bytes 0x%02X 0x%02X 0x00\n",
i, j);
-+ return(1);
-+ }
++ return(1);
++ }
}
/*
@@ -531,7 +542,7 @@ diff -uNr a/testchar.c b/testchar.c
}
}
}
-+ return(0);
++ return(0);
}
-static void testCharRangeByte3(xmlParserCtxtPtr ctxt, char *data) {
@@ -549,7 +560,7 @@ diff -uNr a/testchar.c b/testchar.c
"Failed to detect invalid char for Bytes 0x%02X 0x%02X 0x%02X 0x%02X\n",
i, j, K, data[3]);
+ return(1);
-+ }
++ }
}
/*
@@ -562,7 +573,7 @@ diff -uNr a/testchar.c b/testchar.c
"Failed to detect invalid char for Bytes 0x%02X 0x%02X 0x%02X\n",
i, j, K);
+ return(1);
-+ }
++ }
}
/*
@@ -576,7 +587,7 @@ diff -uNr a/testchar.c b/testchar.c
"Failed to detect invalid char for Bytes 0x%02X 0x%02X 0x%02X\n",
i, j, K);
+ return(1);
-+ }
++ }
}
/*
@@ -590,7 +601,7 @@ diff -uNr a/testchar.c b/testchar.c
"Failed to detect invalid char 0x%04X for Bytes 0x%02X 0x%02X 0x%02X\n",
value, i, j, K);
+ return(1);
-+ }
++ }
}
/*
@@ -598,7 +609,7 @@ diff -uNr a/testchar.c b/testchar.c
fprintf(stderr,
"Failed to parse char for Bytes 0x%02X 0x%02X 0x%02X\n",
i, j, K);
-+ return(1);
++ return(1);
}
/*
@@ -606,12 +617,12 @@ diff -uNr a/testchar.c b/testchar.c
fprintf(stderr,
"Failed to parse char for Bytes 0x%02X 0x%02X 0x%02X: expect %d got %d\n",
i, j, data[2], value, c);
-+ return(1);
++ return(1);
}
}
}
}
-+ return(0);
++ return(0);
}
-static void testCharRangeByte4(xmlParserCtxtPtr ctxt, char *data) {
@@ -629,7 +640,7 @@ diff -uNr a/testchar.c b/testchar.c
"Failed to detect invalid char for Bytes 0x%02X 0x%02X 0x%02X 0x%02X\n",
i, j, K, data[3]);
+ return(1);
-+ }
++ }
}
/*
@@ -643,7 +654,7 @@ diff -uNr a/testchar.c b/testchar.c
"Failed to detect invalid char for Bytes 0x%02X 0x%02X 0x%02X 0x%02X\n",
i, j, K, L);
+ return(1);
-+ }
++ }
}
/*
@@ -657,7 +668,7 @@ diff -uNr a/testchar.c b/testchar.c
"Failed to detect invalid char for Bytes 0x%02X 0x%02X 0x%02X 0x%02X\n",
i, j, K, L);
+ return(1);
-+ }
++ }
}
/*
@@ -671,7 +682,7 @@ diff -uNr a/testchar.c b/testchar.c
"Failed to detect invalid char 0x%04X for Bytes 0x%02X 0x%02X 0x%02X 0x%02X\n",
value, i, j, K, L);
+ return(1);
-+ }
++ }
}
/*
@@ -679,7 +690,7 @@ diff -uNr a/testchar.c b/testchar.c
fprintf(stderr,
"Failed to parse char for Bytes 0x%02X 0x%02X 0x%02X\n",
i, j, K);
-+ return(1);
++ return(1);
}
/*
@@ -687,13 +698,13 @@ diff -uNr a/testchar.c b/testchar.c
fprintf(stderr,
"Failed to parse char for Bytes 0x%02X 0x%02X 0x%02X: expect %d got %d\n",
i, j, data[2], value, c);
-+ return(1);
++ return(1);
}
}
}
}
}
-+ return(0);
++ return(0);
}
/**
@@ -722,13 +733,13 @@ diff -uNr a/testchar.c b/testchar.c
XML_CHAR_ENCODING_NONE);
if (buf == NULL) {
fprintf(stderr, "Failed to allocate input buffer\n");
-+ test_ret = 1;
++ test_ret = 1;
goto error;
}
input = xmlNewInputStream(ctxt);
if (input == NULL) {
xmlFreeParserInputBuffer(buf);
-+ test_ret = 1;
++ test_ret = 1;
goto error;
}
input->filename = NULL;
@@ -777,20 +788,10 @@ diff -uNr a/testchar.c b/testchar.c
/*
* Cleanup function for the XML library.
-diff -uNr a/testdict.c b/testdict.c
---- a/testdict.c 2013-04-16 15:08:42.971177193 +0200
-+++ b/testdict.c 2013-04-18 15:59:00.699482439 +0200
-@@ -440,5 +440,6 @@
- clean_strings();
- xmlCleanupParser();
- xmlMemoryDump();
-+ printf("%s: testdict\n\n", (ret == 0) ? "PASS" : "FAIL");
- return(ret);
- }
diff -uNr a/testlimits.c b/testlimits.c
---- a/testlimits.c 2013-04-12 16:16:36.180354177 +0200
-+++ b/testlimits.c 2013-04-17 14:03:17.203092987 +0200
-@@ -1630,5 +1630,6 @@
+--- a/testlimits.c 2016-11-07 09:41:40.000000000 +0100
++++ b/testlimits.c 2018-03-20 08:59:38.965581280 +0100
+@@ -1634,5 +1634,6 @@
xmlCleanupParser();
xmlMemoryDump();
@@ -798,8 +799,8 @@ diff -uNr a/testlimits.c b/testlimits.c
return(ret);
}
diff -uNr a/testrecurse.c b/testrecurse.c
---- a/testrecurse.c 2013-04-16 13:19:49.366536295 +0200
-+++ b/testrecurse.c 2013-04-17 14:06:27.367091622 +0200
+--- a/testrecurse.c 2017-10-26 09:54:40.000000000 +0200
++++ b/testrecurse.c 2018-03-20 09:00:46.781628749 +0100
@@ -892,6 +892,7 @@
err++;
}
diff --git a/meta/recipes-core/libxml/libxml2_2.9.7.bb b/meta/recipes-core/libxml/libxml2_2.9.8.bb
index 2fb90a68a8f..f01cb2cd348 100644
--- a/meta/recipes-core/libxml/libxml2_2.9.7.bb
+++ b/meta/recipes-core/libxml/libxml2_2.9.8.bb
@@ -14,17 +14,19 @@ 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;name=testtar \
file://libxml-64bit.patch \
- file://ansidecl.patch \
file://runtest.patch \
file://run-ptest \
file://python-sitepackages-dir.patch \
file://libxml-m4-use-pkgconfig.patch \
file://0001-Make-ptest-run-the-python-tests-if-python-is-enabled.patch \
file://fix-execution-of-ptests.patch \
+ file://fix-CVE-2017-8872.patch \
+ file://fix-CVE-2018-14404.patch \
+ file://0001-Fix-infinite-loop-in-LZMA-decompression.patch \
"
-SRC_URI[libtar.md5sum] = "896608641a08b465098a40ddf51cefba"
-SRC_URI[libtar.sha256sum] = "f63c5e7d30362ed28b38bfa1ac6313f9a80230720b7fb6c80575eeab3ff5900c"
+SRC_URI[libtar.md5sum] = "b786e353e2aa1b872d70d5d1ca0c740d"
+SRC_URI[libtar.sha256sum] = "0b74e51595654f958148759cfef0993114ddccccbb6f31aee018f3558e8e2732"
SRC_URI[testtar.md5sum] = "ae3d1ebe000a3972afa104ca7f0e1b4a"
SRC_URI[testtar.sha256sum] = "96151685cec997e1f9f3387e3626d61e6284d4d6e66e0e440c209286c03e9cc7"
@@ -44,7 +46,12 @@ RDEPENDS_${PN}-ptest += "make ${@bb.utils.contains('PACKAGECONFIG', 'python', 'l
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"
+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}"
diff --git a/meta/recipes-core/meta/buildtools-tarball.bb b/meta/recipes-core/meta/buildtools-tarball.bb
index d98a9c901ce..7ab790709c6 100644
--- a/meta/recipes-core/meta/buildtools-tarball.bb
+++ b/meta/recipes-core/meta/buildtools-tarball.bb
@@ -10,6 +10,8 @@ TOOLCHAIN_HOST_TASK ?= "\
nativesdk-python3-modules \
nativesdk-python3-misc \
nativesdk-python3-git \
+ nativesdk-python3-testtools \
+ nativesdk-python3-subunit \
nativesdk-ncurses-terminfo-base \
nativesdk-chrpath \
nativesdk-tar \
@@ -21,6 +23,7 @@ TOOLCHAIN_HOST_TASK ?= "\
nativesdk-wget \
nativesdk-ca-certificates \
nativesdk-texinfo \
+ nativesdk-libnss-nis \
"
MULTIMACH_TARGET_SYS = "${SDK_ARCH}-nativesdk${SDK_VENDOR}-${SDK_OS}"
diff --git a/meta/recipes-core/meta/dummy-sdk-package.inc b/meta/recipes-core/meta/dummy-sdk-package.inc
index ed83dd77dab..eafcb823ab2 100644
--- a/meta/recipes-core/meta/dummy-sdk-package.inc
+++ b/meta/recipes-core/meta/dummy-sdk-package.inc
@@ -1,6 +1,8 @@
SUMMARY = "Dummy packages which handle excluding packages from the sdk, e.g. ensuring perl is excluded from buildtools"
LICENSE = "MIT"
+PACKAGE_ARCH = "all"
+
inherit allarch
python() {
diff --git a/meta/recipes-core/meta/meta-environment.bb b/meta/recipes-core/meta/meta-environment.bb
index 09f757a087c..da1230bead8 100644
--- a/meta/recipes-core/meta/meta-environment.bb
+++ b/meta/recipes-core/meta/meta-environment.bb
@@ -56,7 +56,7 @@ create_sdk_files() {
# Add version information
toolchain_create_sdk_version ${SDK_OUTPUT}/${SDKPATH}/version-${REAL_MULTIMACH_TARGET_SYS}
- toolchain_create_post_relocate_script ${SDK_OUTPUT}/${SDKPATH}/post-relocate-setup.sh
+ toolchain_create_post_relocate_script ${SDK_OUTPUT}/${SDKPATH}/post-relocate-setup.sh ${SDKPATH}
}
do_install() {
diff --git a/meta/recipes-core/meta/uninative-tarball.bb b/meta/recipes-core/meta/uninative-tarball.bb
index 38c3a314e16..e0cb9ffee0d 100644
--- a/meta/recipes-core/meta/uninative-tarball.bb
+++ b/meta/recipes-core/meta/uninative-tarball.bb
@@ -12,8 +12,11 @@ TOOLCHAIN_HOST_TASK = "\
nativesdk-glibc-gconv-iso8859-1 \
nativesdk-glibc-gconv-utf-16 \
nativesdk-glibc-gconv-cp1252 \
+ nativesdk-glibc-gconv-euc-jp \
+ nativesdk-glibc-gconv-libjis \
nativesdk-patchelf \
nativesdk-libxcrypt \
+ nativesdk-libnss-nis \
"
INHIBIT_DEFAULT_DEPS = "1"
diff --git a/meta/recipes-core/musl/libssp-nonshared.bb b/meta/recipes-core/musl/libssp-nonshared.bb
new file mode 100644
index 00000000000..458eafef52b
--- /dev/null
+++ b/meta/recipes-core/musl/libssp-nonshared.bb
@@ -0,0 +1,39 @@
+# Copyright (C) 2018 Khem Raj <raj.khem@gmail.com>
+# 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"
+SECTION = "libs"
+
+SRC_URI = "file://ssp-local.c"
+
+PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:"
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+STAGINGCC = "gcc-cross-initial-${TARGET_ARCH}"
+STAGINGCC_class-nativesdk = "gcc-crosssdk-initial-${SDK_SYS}"
+
+DEPENDS = "virtual/${TARGET_PREFIX}binutils \
+ virtual/${TARGET_PREFIX}gcc-initial \
+"
+
+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
+}
+do_install() {
+ install -Dm 0644 ${B}/libssp_nonshared.a ${D}${base_libdir}/libssp_nonshared.a
+}
+#
+# We will skip parsing for non-musl systems
+#
+COMPATIBLE_HOST = ".*-musl.*"
+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
new file mode 100644
index 00000000000..8f51afa2c19
--- /dev/null
+++ b/meta/recipes-core/musl/libssp-nonshared/ssp-local.c
@@ -0,0 +1,45 @@
+/* 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/musl-utils.bb b/meta/recipes-core/musl/musl-utils.bb
index 74b846df595..dd0ce330613 100644
--- a/meta/recipes-core/musl/musl-utils.bb
+++ b/meta/recipes-core/musl/musl-utils.bb
@@ -13,6 +13,8 @@ PV = "20170421"
SRCREV = "fb5630138ccabbbc14a19d372096a04e42573c7d"
SRC_URI = "git://github.com/boltlinux/musl-utils"
+UPSTREAM_CHECK_COMMITS = "1"
+
inherit autotools
S = "${WORKDIR}/git"
diff --git a/meta/recipes-core/musl/musl.inc b/meta/recipes-core/musl/musl.inc
index ba9b1a046cd..319709b3cb0 100644
--- a/meta/recipes-core/musl/musl.inc
+++ b/meta/recipes-core/musl/musl.inc
@@ -9,7 +9,7 @@ standards-conformance and safety."
HOMEPAGE = "http://www.musl-libc.org/"
LICENSE = "MIT"
SECTION = "libs"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=2b9032093c4765e49ae85ddeba29afff"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=8a4bb28f771c817fe57d3a7c4240e3aa"
PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:"
diff --git a/meta/recipes-core/musl/musl_git.bb b/meta/recipes-core/musl/musl_git.bb
index 9f8c5126e85..0d8f8eb2a49 100644
--- a/meta/recipes-core/musl/musl_git.bb
+++ b/meta/recipes-core/musl/musl_git.bb
@@ -2,10 +2,11 @@
# Released under the MIT license (see COPYING.MIT for the terms)
require musl.inc
+inherit linuxloader
-SRCREV = "55df09bfccbfe21fc9dd7d8f94550c0ff25ace04"
+SRCREV = "c50985d5c8e316c5c464f352e79eeebfed1121a9"
-PV = "1.1.19+git${SRCPV}"
+PV = "1.1.20+git${SRCPV}"
# mirror is at git://github.com/kraj/musl.git
@@ -22,7 +23,9 @@ DEPENDS = "virtual/${TARGET_PREFIX}binutils \
libgcc-initial \
linux-libc-headers \
bsd-headers \
+ libssp-nonshared \
"
+GLIBC_LDSO = "${@get_glibc_loader(d)}"
export CROSS_COMPILE="${TARGET_PREFIX}"
@@ -59,13 +62,27 @@ do_install() {
install -d ${D}${bindir}
rm -f ${D}${bindir}/ldd
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
}
-RDEPENDS_${PN}-dev += "linux-libc-headers-dev bsd-headers-dev"
+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} \
+ "
+
+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)"
diff --git a/meta/recipes-core/ncurses/files/0001-tic-hang.patch b/meta/recipes-core/ncurses/files/0001-tic-hang.patch
index 4a970561d70..f98a943e5ce 100644
--- a/meta/recipes-core/ncurses/files/0001-tic-hang.patch
+++ b/meta/recipes-core/ncurses/files/0001-tic-hang.patch
@@ -1,6 +1,6 @@
-From a95590f676209832fe0b27226e6de3cb50e2b97c Mon Sep 17 00:00:00 2001
+From 168ba7a681be73ac024438e33e14fde1d5aea97d Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 16 Aug 2017 14:31:51 +0800
+Date: Fri, 30 Mar 2018 10:02:24 +0800
Subject: [PATCH 1/2] tic hang
Upstream-Status: Inappropriate [configuration]
@@ -10,34 +10,34 @@ loop when processing the original file.
Signed-off-by: anonymous
-Rebase to 6.0+20170715
+Rebase to 6.1
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
misc/terminfo.src | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/misc/terminfo.src b/misc/terminfo.src
-index ee3fab3..176d593 100644
+index 84f4810..6b385ec 100644
--- a/misc/terminfo.src
+++ b/misc/terminfo.src
-@@ -5177,12 +5177,11 @@ konsole-xf3x|KDE console window with keyboard for XFree86 3.x xterm,
- # The value for kbs reflects local customization rather than the settings used
- # for XFree86 xterm.
+@@ -5562,12 +5562,11 @@ konsole-xf3x|KDE console window with keyboard for XFree86 3.x xterm,
+ # The value for kbs (see konsole-vt100) reflects local customization rather
+ # than the settings used for XFree86 xterm.
konsole-xf4x|KDE console window with keyboard for XFree86 4.x xterm,
- kend=\EOF, khome=\EOH, use=konsole+pcfkeys,
- use=konsole-vt100,
--# Konsole does not implement shifted cursor-keys.
+-
-konsole+pcfkeys|konsole subset of xterm+pcfkeys,
-- kLFT@, kRIT@, kcbt=\E[Z, kind@, kri@, kDN@, kUP@, use=xterm+pcc2,
-- use=xterm+pcf0,
+- kcbt=\E[Z, use=xterm+pcc2, use=xterm+pcf0,
+- use=xterm+pce2,
+ kend=\EOF, kf1=\EOP, kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R,
+ kf16=\EO2S, kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~,
+ kf2=\EOQ, kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~,
+ kf23=\E[23;2~, kf24=\E[24;2~, kf3=\EOR, kf4=\EOS,
+ khome=\EOH, use=konsole-vt100,
+
+ # Obsolete: vt100.keymap
# KDE's "vt100" keyboard has no relationship to any terminal that DEC made, but
- # it is still useful for deriving the other entries.
- konsole-vt100|KDE console window with vt100 (sic) keyboard,
--
1.8.3.1
diff --git a/meta/recipes-core/ncurses/files/0002-configure-reproducible.patch b/meta/recipes-core/ncurses/files/0002-configure-reproducible.patch
index c47ce6a8cb6..572195611e1 100644
--- a/meta/recipes-core/ncurses/files/0002-configure-reproducible.patch
+++ b/meta/recipes-core/ncurses/files/0002-configure-reproducible.patch
@@ -1,4 +1,4 @@
-From 939c994f3756c2d6d3cab2e6a04d05fa7c2b1d56 Mon Sep 17 00:00:00 2001
+From 2a53c03ffa90f0050a949fc5920f0df3e668ff42 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
@@ -10,7 +10,7 @@ build problems" in 2015.
Upstream-Status: Pending
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
-Rebase to Rebase to 6.0+20170715
+Rebase to 6.1
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
@@ -18,10 +18,10 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure b/configure
-index 7d7d2c1..f444354 100755
+index adead92..fa4fdb7 100755
--- a/configure
+++ b/configure
-@@ -4458,7 +4458,7 @@ if test "${cf_cv_ar_flags+set}" = set; then
+@@ -4503,7 +4503,7 @@ if test "${cf_cv_ar_flags+set}" = set; then
else
cf_cv_ar_flags=unknown
diff --git a/meta/recipes-core/ncurses/ncurses.inc b/meta/recipes-core/ncurses/ncurses.inc
index 01e41d5f735..99fc47869ea 100644
--- a/meta/recipes-core/ncurses/ncurses.inc
+++ b/meta/recipes-core/ncurses/ncurses.inc
@@ -87,6 +87,7 @@ ncurses_configure() {
--disable-rpath-hack \
${EXCONFIG_ARGS} \
--with-manpage-format=normal \
+ --disable-stripping \
"$@" || return 1
cd ..
}
diff --git a/meta/recipes-core/ncurses/ncurses_6.0+20171125.bb b/meta/recipes-core/ncurses/ncurses_6.1+20180630.bb
index 6c4b96f4283..38faf7af289 100644
--- a/meta/recipes-core/ncurses/ncurses_6.0+20171125.bb
+++ b/meta/recipes-core/ncurses/ncurses_6.1+20180630.bb
@@ -5,7 +5,7 @@ SRC_URI += "file://0001-tic-hang.patch \
file://config.cache \
"
# commit id corresponds to the revision in package version
-SRCREV = "5d849e836052459901cfe0b85a0b2939ff8d2b2a"
+SRCREV = "d3b29180ae4360d7ab7a41a15e963299fdb72e33"
S = "${WORKDIR}/git"
EXTRA_OECONF += "--with-abi-version=5"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+(\+\d+)*)"
diff --git a/meta/recipes-core/newlib/libgloss/fix-rs6000-crt0.patch b/meta/recipes-core/newlib/libgloss/fix-rs6000-crt0.patch
new file mode 100644
index 00000000000..c220fb84373
--- /dev/null
+++ b/meta/recipes-core/newlib/libgloss/fix-rs6000-crt0.patch
@@ -0,0 +1,41 @@
+Upstream-Status: Inappropriate [OE-Specific]
+
+Make install tries to perform install for all variants, but some of them use the same
+name for crt0 in specific, so performing all of them results in an error during
+do_install, we simply modify the name of the objects so the installation can proceed
+and leave it to the user to select which object files to use.
+
+Signed-off-by: Alejandro Enedino Hernandez Samaniego <alejandr@xilinx.com>
+
+Index: newlib-3.0.0/libgloss/rs6000/Makefile.in
+===================================================================
+--- newlib-3.0.0.orig/libgloss/rs6000/Makefile.in
++++ newlib-3.0.0/libgloss/rs6000/Makefile.in
+@@ -358,7 +358,7 @@ install-sim:
+ set -e; for x in ${SIM_CRT0} ${SIM_BSP} ${SIM_SCRIPTS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done
+
+ install-mvme:
+- set -e; for x in ${MVME_CRT0} ${MVME_BSP} ${MVME_SCRIPTS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done
++ set -e; for x in ${MVME_CRT0} ${MVME_BSP} ${MVME_SCRIPTS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/mvme-$$x; done
+
+ install-solaris:
+ set -e; for x in ${SOLARIS_CRT0} ${SOLARIS_BSP} ${SOLARIS_SCRIPTS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done
+@@ -367,15 +367,15 @@ install-linux:
+ set -e; for x in ${LINUX_CRT0} ${LINUX_BSP} ${LINUX_SCRIPTS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done
+
+ install-yellowknife:
+- set -e; for x in ${YELLOWKNIFE_CRT0} ${YELLOWKNIFE_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done
++ set -e; for x in ${YELLOWKNIFE_CRT0} ${YELLOWKNIFE_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/yellowknife-$$x; done
+ set -e; for x in ${YELLOWKNIFE_SCRIPTS}; do ${INSTALL_DATA} $(srcdir)/$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done
+
+ install-ads:
+- set -e; for x in ${ADS_CRT0} ${ADS_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done
++ set -e; for x in ${ADS_CRT0} ${ADS_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/ads-$$x; done
+ set -e; for x in ${ADS_SCRIPTS}; do ${INSTALL_DATA} $(srcdir)/$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done
+
+ install-mbx:
+- set -e; for x in ${MBX_CRT0} ${MBX_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done
++ set -e; for x in ${MBX_CRT0} ${MBX_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/mbx-$$x; done
+ set -e; for x in ${MBX_SCRIPTS} ${MBX_SPECS}; do ${INSTALL_DATA} $(srcdir)/$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done
+
+ install-xil:
diff --git a/meta/recipes-core/newlib/libgloss/fix_makefile_include_arm_h.patch b/meta/recipes-core/newlib/libgloss/fix_makefile_include_arm_h.patch
new file mode 100644
index 00000000000..7645be7314b
--- /dev/null
+++ b/meta/recipes-core/newlib/libgloss/fix_makefile_include_arm_h.patch
@@ -0,0 +1,30 @@
+Upstream-Status: Inappropriate [OE-Specific]
+
+When trying to build libgloss for an arm target, the build system
+complains about missing some include files:
+
+| fatal error: acle-compiat.h: No such file or directory
+| #include "acle-compat.h"
+| ^~~~~~~~~~~~~~~
+| compilation terminated.
+
+These include files come from the newlib source, but since we
+are building libgloss separately from newlib, libgloss is unaware
+of where they are, this patch fixes the INCLUDES so the build system
+can find such files.
+
+Signed-off-by: Alejandro Enedino Hernandez Samaniego <alejandr@xilinx.com>
+
+Index: newlib-3.0.0/libgloss/config/default.mh
+===================================================================
+--- newlib-3.0.0.orig/libgloss/config/default.mh
++++ newlib-3.0.0/libgloss/config/default.mh
+@@ -1,7 +1,7 @@
+ NEWLIB_CFLAGS = `if [ -d ${objroot}/newlib ]; then echo -I${objroot}/newlib/targ-include -I${srcroot}/newlib/libc/include; fi`
+ NEWLIB_LDFLAGS = `if [ -d ${objroot}/newlib ]; then echo -B${objroot}/newlib/ -L${objroot}/newlib/; fi`
+
+-INCLUDES = -I. -I$(srcdir)/..
++INCLUDES = -I. -I$(srcdir)/.. -I$(srcdir)/../newlib/libc/machine/arm
+ # Note that when building the library, ${MULTILIB} is not the way multilib
+ # options are passed; they're passed in $(CFLAGS).
+ CFLAGS_FOR_TARGET = -O2 -g ${MULTILIB} ${INCLUDES} ${NEWLIB_CFLAGS}
diff --git a/meta/recipes-core/newlib/libgloss_3.0.0.bb b/meta/recipes-core/newlib/libgloss_3.0.0.bb
new file mode 100644
index 00000000000..c9ed30d9882
--- /dev/null
+++ b/meta/recipes-core/newlib/libgloss_3.0.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
new file mode 100644
index 00000000000..c97c7c276be
--- /dev/null
+++ b/meta/recipes-core/newlib/newlib.inc
@@ -0,0 +1,58 @@
+SUMMARY = "Newlib is a C library intended for use on embedded systems"
+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"
+LIC_FILES_CHKSUM = " \
+ file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
+ file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
+ file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
+ file://COPYING.LIBGLOSS;md5=73f5c98779aea7dba4a6c94a74ab0ae2 \
+ file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+ file://COPYING.NEWLIB;md5=956a4b1487f7677cdcceeee8f05a21f0 \
+ file://newlib/libc/posix/COPYRIGHT;md5=103468ff1982be840fdf4ee9f8b51bbf \
+ file://newlib/libc/sys/linux/linuxthreads/LICENSE;md5=73640207fbc79b198c7ffd4ad4d97aa0 \
+ "
+
+SRC_URI = "ftp://sourceware.org/pub/newlib/newlib-${PV}.tar.gz"
+SRC_URI[md5sum] = "81ec873108b8593c586f91ca65963952"
+SRC_URI[sha256sum] = "c8566335ee74e5fcaeb8595b4ebd0400c4b043d6acb3263ecb1314f8f5501332"
+
+INHIBIT_DEFAULT_DEPS = "1"
+DEPENDS = "virtual/${TARGET_PREFIX}gcc-initial"
+
+PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:"
+STAGINGCC = "gcc-cross-initial-${TARGET_ARCH}"
+STAGINGCC_class-nativesdk = "gcc-crosssdk-initial-${SDK_SYS}"
+
+S = "${WORKDIR}/newlib-${PV}"
+B = "${WORKDIR}/build"
+
+## disable stdlib
+TARGET_CC_ARCH_append = " -nostdlib"
+
+EXTRA_OECONF = " \
+ --build=${BUILD_SYS} \
+ --target=${TARGET_SYS} \
+ --host=${HOST_SYS} \
+ --prefix=${prefix} \
+ --exec-prefix=${exec_prefix} \
+ --bindir=${bindir} \
+ --libdir=${libdir} \
+ --includedir=${includedir} \
+ --enable-languages=c \
+ --with-newlib \
+ --with-gnu-as \
+ --with-gnu-ld \
+ --disable-multilib \
+ "
+
+do_configure[cleandirs] = "${B}"
+
+do_install() {
+ oe_runmake install DESTDIR='${D}'
+}
+
+COMPATIBLE_HOST_libc-musl_class-target = "null"
+COMPATIBLE_HOST_libc-glibc_class-target = "null"
diff --git a/meta/recipes-core/newlib/newlib_3.0.0.bb b/meta/recipes-core/newlib/newlib_3.0.0.bb
new file mode 100644
index 00000000000..09238fe006b
--- /dev/null
+++ b/meta/recipes-core/newlib/newlib_3.0.0.bb
@@ -0,0 +1,19 @@
+require newlib.inc
+
+PROVIDES += "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc virtual/libiconv virtual/libintl"
+
+do_configure() {
+ ${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 f9887047561..bf4f815a10d 100644
--- a/meta/recipes-core/os-release/os-release.bb
+++ b/meta/recipes-core/os-release/os-release.bb
@@ -1,7 +1,7 @@
inherit allarch
SUMMARY = "Operating system identification"
-DESCRIPTION = "The /etc/os-release file contains operating system identification data."
+DESCRIPTION = "The /usr/lib/os-release file contains operating system identification data."
LICENSE = "MIT"
INHIBIT_DEFAULT_DEPS = "1"
@@ -42,6 +42,9 @@ python do_compile () {
do_compile[vardeps] += "${OS_RELEASE_FIELDS}"
do_install () {
- install -d ${D}${sysconfdir}
- install -m 0644 os-release ${D}${sysconfdir}/
+ install -d ${D}${libdir} ${D}${sysconfdir}
+ install -m 0644 os-release ${D}${libdir}/
+ lnr ${D}${libdir}/os-release ${D}${sysconfdir}/os-release
}
+
+FILES_${PN} += "${libdir}/os-release"
diff --git a/meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch b/meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch
new file mode 100644
index 00000000000..342fcc6231b
--- /dev/null
+++ b/meta/recipes-core/ovmf/ovmf/0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch
@@ -0,0 +1,71 @@
+From 9fce4bab014b9aa618060eba13d6dd04b0fa1b70 Mon Sep 17 00:00:00 2001
+From: Laszlo Ersek <lersek@redhat.com>
+Date: Fri, 2 Mar 2018 17:11:52 +0100
+Subject: [PATCH 1/4] BaseTools/header.makefile: add "-Wno-stringop-truncation"
+
+gcc-8 (which is part of Fedora 28) enables the new warning
+"-Wstringop-truncation" in "-Wall". This warning is documented in detail
+at <https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html>; the
+introduction says
+
+> Warn for calls to bounded string manipulation functions such as strncat,
+> strncpy, and stpncpy that may either truncate the copied string or leave
+> the destination unchanged.
+
+It breaks the BaseTools build with:
+
+> EfiUtilityMsgs.c: In function 'PrintMessage':
+> EfiUtilityMsgs.c:484:9: error: 'strncat' output may be truncated copying
+> between 0 and 511 bytes from a string of length 511
+> [-Werror=stringop-truncation]
+> strncat (Line, Line2, MAX_LINE_LEN - strlen (Line) - 1);
+> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+> EfiUtilityMsgs.c:469:9: error: 'strncat' output may be truncated copying
+> between 0 and 511 bytes from a string of length 511
+> [-Werror=stringop-truncation]
+> strncat (Line, Line2, MAX_LINE_LEN - strlen (Line) - 1);
+> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+> EfiUtilityMsgs.c:511:5: error: 'strncat' output may be truncated copying
+> between 0 and 511 bytes from a string of length 511
+> [-Werror=stringop-truncation]
+> strncat (Line, Line2, MAX_LINE_LEN - strlen (Line) - 1);
+> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The right way to fix the warning would be to implement string concat with
+snprintf(). However, Microsoft does not appear to support snprintf()
+before VS2015
+<https://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010>,
+so we just have to shut up the warning. The strncat() calls flagged above
+are valid BTW.
+
+Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+Cc: Cole Robinson <crobinso@redhat.com>
+Cc: Liming Gao <liming.gao@intel.com>
+Cc: Paolo Bonzini <pbonzini@redhat.com>
+Cc: Yonghong Zhu <yonghong.zhu@intel.com>
+Contributed-under: TianoCore Contribution Agreement 1.1
+Signed-off-by: Laszlo Ersek <lersek@redhat.com>
+Reviewed-by: Liming Gao <liming.gao@intel.com>
+---
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Backport
+
+ BaseTools/Source/C/Makefiles/header.makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: git/BaseTools/Source/C/Makefiles/header.makefile
+===================================================================
+--- git.orig/BaseTools/Source/C/Makefiles/header.makefile
++++ git/BaseTools/Source/C/Makefiles/header.makefile
+@@ -47,9 +47,9 @@ INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT)
+ BUILD_CPPFLAGS += $(INCLUDE) -O2
+ ifeq ($(DARWIN),Darwin)
+ # assume clang or clang compatible flags on OS X
+-BUILD_CFLAGS += -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -c -g
++BUILD_CFLAGS += -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-self-assign -Wno-unused-result -nostdlib -c -g
+ else
+-BUILD_CFLAGS += -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-unused-result -nostdlib -c -g
++BUILD_CFLAGS += -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-unused-result -nostdlib -c -g
+ endif
+ BUILD_LFLAGS = $(LDFLAGS)
+ BUILD_CXXFLAGS += -Wno-unused-result
diff --git a/meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch b/meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch
new file mode 100644
index 00000000000..a076665c339
--- /dev/null
+++ b/meta/recipes-core/ovmf/ovmf/0002-BaseTools-header.makefile-add-Wno-restrict.patch
@@ -0,0 +1,102 @@
+From 86dbdac5a25bd23deb4a0e0a97b527407e02184d Mon Sep 17 00:00:00 2001
+From: Laszlo Ersek <lersek@redhat.com>
+Date: Fri, 2 Mar 2018 17:11:52 +0100
+Subject: [PATCH 2/4] BaseTools/header.makefile: add "-Wno-restrict"
+
+gcc-8 (which is part of Fedora 28) enables the new warning
+"-Wrestrict" in "-Wall". This warning is documented in detail
+at <https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html>; the
+introduction says
+
+> Warn when an object referenced by a restrict-qualified parameter (or, in
+> C++, a __restrict-qualified parameter) is aliased by another argument,
+> or when copies between such objects overlap.
+
+It breaks the BaseTools build (in the Brotli compression library) with:
+
+> In function 'ProcessCommandsInternal',
+> inlined from 'ProcessCommands' at dec/decode.c:1828:10:
+> dec/decode.c:1781:9: error: 'memcpy' accessing between 17 and 2147483631
+> bytes at offsets 16 and 16 overlaps between 17 and 2147483631 bytes at
+> offset 16 [-Werror=restrict]
+> memcpy(copy_dst + 16, copy_src + 16, (size_t)(i - 16));
+> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+> In function 'ProcessCommandsInternal',
+> inlined from 'SafeProcessCommands' at dec/decode.c:1833:10:
+> dec/decode.c:1781:9: error: 'memcpy' accessing between 17 and 2147483631
+> bytes at offsets 16 and 16 overlaps between 17 and 2147483631 bytes at
+> offset 16 [-Werror=restrict]
+> memcpy(copy_dst + 16, copy_src + 16, (size_t)(i - 16));
+> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Paolo Bonzini <pbonzini@redhat.com> analyzed the Brotli source in detail,
+and concluded that the warning is a false positive:
+
+> This seems safe to me, because it's preceded by:
+>
+> uint8_t* copy_dst = &s->ringbuffer[pos];
+> uint8_t* copy_src = &s->ringbuffer[src_start];
+> int dst_end = pos + i;
+> int src_end = src_start + i;
+> if (src_end > pos && dst_end > src_start) {
+> /* Regions intersect. */
+> goto CommandPostWrapCopy;
+> }
+>
+> If [src_start, src_start + i) and [pos, pos + i) don't intersect, then
+> neither do [src_start + 16, src_start + i) and [pos + 16, pos + i).
+>
+> The if seems okay:
+>
+> (src_start + i > pos && pos + i > src_start)
+>
+> which can be rewritten to:
+>
+> (pos < src_start + i && src_start < pos + i)
+>
+> Then the numbers are in one of these two orders:
+>
+> pos <= src_start < pos + i <= src_start + i
+> src_start <= pos < src_start + i <= pos + i
+>
+> These two would be allowed by the "if", but they can only happen if pos
+> == src_start so they degenerate to the same two orders above:
+>
+> pos <= src_start < src_start + i <= pos + i
+> src_start <= pos < pos + i <= src_start + i
+>
+> So it is a false positive in GCC.
+
+Disable the warning for now.
+
+Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+Cc: Cole Robinson <crobinso@redhat.com>
+Cc: Liming Gao <liming.gao@intel.com>
+Cc: Paolo Bonzini <pbonzini@redhat.com>
+Cc: Yonghong Zhu <yonghong.zhu@intel.com>
+Reported-by: Cole Robinson <crobinso@redhat.com>
+Contributed-under: TianoCore Contribution Agreement 1.1
+Signed-off-by: Laszlo Ersek <lersek@redhat.com>
+Reviewed-by: Liming Gao <liming.gao@intel.com>
+---
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Backport
+ BaseTools/Source/C/Makefiles/header.makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: git/BaseTools/Source/C/Makefiles/header.makefile
+===================================================================
+--- git.orig/BaseTools/Source/C/Makefiles/header.makefile
++++ git/BaseTools/Source/C/Makefiles/header.makefile
+@@ -47,9 +47,9 @@ INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT)
+ BUILD_CPPFLAGS += $(INCLUDE) -O2
+ ifeq ($(DARWIN),Darwin)
+ # assume clang or clang compatible flags on OS X
+-BUILD_CFLAGS += -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-self-assign -Wno-unused-result -nostdlib -c -g
++BUILD_CFLAGS += -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-self-assign -Wno-unused-result -nostdlib -c -g
+ else
+-BUILD_CFLAGS += -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-unused-result -nostdlib -c -g
++BUILD_CFLAGS += -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-unused-result -nostdlib -c -g
+ endif
+ BUILD_LFLAGS = $(LDFLAGS)
+ BUILD_CXXFLAGS += -Wno-unused-result
diff --git a/meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch b/meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch
new file mode 100644
index 00000000000..920723e3268
--- /dev/null
+++ b/meta/recipes-core/ovmf/ovmf/0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch
@@ -0,0 +1,53 @@
+From 6866325dd9c17412e555974dde41f9631224db52 Mon Sep 17 00:00:00 2001
+From: Laszlo Ersek <lersek@redhat.com>
+Date: Wed, 7 Mar 2018 10:17:28 +0100
+Subject: [PATCH 3/4] BaseTools/header.makefile: revert gcc-8 "-Wno-xxx"
+ options on OSX
+
+I recently added the gcc-8 specific "-Wno-stringop-truncation" and
+"-Wno-restrict" options to BUILD_CFLAGS, both for "Darwin" (XCODE5 /
+clang, OSX) and otherwise (gcc, Linux / Cygwin).
+
+I also regression-tested the change with gcc-4.8 on Linux -- gcc-4.8 does
+not know either of the (gcc-8 specific) "-Wno-stringop-truncation" and
+"-Wno-restrict" options, yet the build completed fine (by GCC design).
+
+Regarding OSX, my expectation was that
+
+- XCODE5 / clang would either recognize these warnings options (because
+ clang does recognize most -W options of gcc),
+
+- or, similarly to gcc, clang would simply ignore the "-Wno-xxx" flags
+ that it didn't recognize.
+
+Neither is the case; the new flags have broken the BaseTools build on OSX.
+Revert them (for OSX only).
+
+Cc: Liming Gao <liming.gao@intel.com>
+Cc: Yonghong Zhu <yonghong.zhu@intel.com>
+Reported-by: Liming Gao <liming.gao@intel.com>
+Fixes: 1d212a83df0eaf32a6f5d4159beb2d77832e0231
+Fixes: 9222154ae7b3eef75ae88cdb56158256227cb929
+Contributed-under: TianoCore Contribution Agreement 1.1
+Signed-off-by: Laszlo Ersek <lersek@redhat.com>
+Reviewed-by: Liming Gao <liming.gao@intel.com>
+Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+---
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Backport
+ BaseTools/Source/C/Makefiles/header.makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: git/BaseTools/Source/C/Makefiles/header.makefile
+===================================================================
+--- git.orig/BaseTools/Source/C/Makefiles/header.makefile
++++ git/BaseTools/Source/C/Makefiles/header.makefile
+@@ -47,7 +47,7 @@ INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT)
+ BUILD_CPPFLAGS += $(INCLUDE) -O2
+ ifeq ($(DARWIN),Darwin)
+ # assume clang or clang compatible flags on OS X
+-BUILD_CFLAGS += -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-self-assign -Wno-unused-result -nostdlib -c -g
++BUILD_CFLAGS += -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -c -g
+ else
+ BUILD_CFLAGS += -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict -Wno-unused-result -nostdlib -c -g
+ endif
diff --git a/meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch b/meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch
new file mode 100644
index 00000000000..7ad7cdf0ce7
--- /dev/null
+++ b/meta/recipes-core/ovmf/ovmf/0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch
@@ -0,0 +1,66 @@
+From dfb42a5bff78d9239a80731e337855234badef3e Mon Sep 17 00:00:00 2001
+From: Laszlo Ersek <lersek@redhat.com>
+Date: Fri, 2 Mar 2018 17:11:52 +0100
+Subject: [PATCH 4/4] BaseTools/GenVtf: silence false "stringop-overflow"
+ warning with memcpy()
+
+gcc-8 (which is part of Fedora 28) enables the new warning
+"-Wstringop-overflow" in "-Wall". This warning is documented in detail at
+<https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html>; the
+introduction says
+
+> Warn for calls to string manipulation functions such as memcpy and
+> strcpy that are determined to overflow the destination buffer.
+
+It breaks the BaseTools build with:
+
+> GenVtf.c: In function 'ConvertVersionInfo':
+> GenVtf.c:132:7: error: 'strncpy' specified bound depends on the length
+> of the source argument [-Werror=stringop-overflow=]
+> strncpy (TemStr + 4 - Length, Str, Length);
+> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+> GenVtf.c:130:14: note: length computed here
+> Length = strlen(Str);
+> ^~~~~~~~~~~
+
+It is a false positive because, while the bound equals the length of the
+source argument, the destination pointer is moved back towards the
+beginning of the destination buffer by the same amount (and this amount is
+range-checked first, so we can't precede the start of the dest buffer).
+
+Replace both strncpy() calls with memcpy().
+
+Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+Cc: Cole Robinson <crobinso@redhat.com>
+Cc: Liming Gao <liming.gao@intel.com>
+Cc: Paolo Bonzini <pbonzini@redhat.com>
+Cc: Yonghong Zhu <yonghong.zhu@intel.com>
+Reported-by: Cole Robinson <crobinso@redhat.com>
+Contributed-under: TianoCore Contribution Agreement 1.1
+Signed-off-by: Laszlo Ersek <lersek@redhat.com>
+Reviewed-by: Liming Gao <liming.gao@intel.com>
+---
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Backport
+ BaseTools/Source/C/GenVtf/GenVtf.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/BaseTools/Source/C/GenVtf/GenVtf.c b/BaseTools/Source/C/GenVtf/GenVtf.c
+index 2ae9a7be2c..0cd33e71e9 100644
+--- a/BaseTools/Source/C/GenVtf/GenVtf.c
++++ b/BaseTools/Source/C/GenVtf/GenVtf.c
+@@ -129,9 +129,9 @@ Returns:
+ } else {
+ Length = strlen(Str);
+ if (Length < 4) {
+- strncpy (TemStr + 4 - Length, Str, Length);
++ memcpy (TemStr + 4 - Length, Str, Length);
+ } else {
+- strncpy (TemStr, Str + Length - 4, 4);
++ memcpy (TemStr, Str + Length - 4, 4);
+ }
+
+ sscanf (
+--
+2.17.0
+
diff --git a/meta/recipes-core/ovmf/ovmf_git.bb b/meta/recipes-core/ovmf/ovmf_git.bb
index 8750b3c528d..d2ecb619d99 100644
--- a/meta/recipes-core/ovmf/ovmf_git.bb
+++ b/meta/recipes-core/ovmf/ovmf_git.bb
@@ -19,6 +19,10 @@ SRC_URI = "git://github.com/tianocore/edk2.git;branch=master \
file://0004-ovmf-enable-long-path-file.patch \
file://VfrCompile-increase-path-length-limit.patch \
file://no-stack-protector-all-archs.patch \
+ file://0001-BaseTools-header.makefile-add-Wno-stringop-truncatio.patch \
+ file://0002-BaseTools-header.makefile-add-Wno-restrict.patch \
+ file://0003-BaseTools-header.makefile-revert-gcc-8-Wno-xxx-optio.patch \
+ file://0004-BaseTools-GenVtf-silence-false-stringop-overflow-war.patch \
"
UPSTREAM_VERSION_UNKNOWN = "1"
@@ -35,11 +39,11 @@ SRC_URI[openssl.sha256sum] = "57be8618979d80c910728cfc99369bf97b2a1abd8f366ab6eb
inherit deploy
-PARALLEL_MAKE_class-native = ""
+PARALLEL_MAKE = ""
S = "${WORKDIR}/git"
-DEPENDS_class-native="util-linux-native iasl-native ossp-uuid-native qemu-native"
+DEPENDS_class-native="util-linux-native iasl-native qemu-native"
DEPENDS_class-target="ovmf-native"
diff --git a/meta/recipes-core/packagegroups/packagegroup-base.bb b/meta/recipes-core/packagegroups/packagegroup-base.bb
index bb192aed29e..442201c9efa 100644
--- a/meta/recipes-core/packagegroups/packagegroup-base.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-base.bb
@@ -289,7 +289,7 @@ RRECOMMENDS_packagegroup-base-ipsec = "\
#
SUMMARY_packagegroup-base-wifi = "WiFi support"
RDEPENDS_packagegroup-base-wifi = "\
- ${VIRTUAL-RUNTIME_wireless-tools} \
+ iw \
wpa-supplicant"
RRECOMMENDS_packagegroup-base-wifi = "\
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-boot.bb b/meta/recipes-core/packagegroups/packagegroup-core-boot.bb
index 76cd7fc4ebf..8dc445dc8f6 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-boot.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-boot.bb
@@ -46,4 +46,5 @@ RDEPENDS_${PN} = "\
${MACHINE_ESSENTIAL_EXTRA_RDEPENDS}"
RRECOMMENDS_${PN} = "\
+ ${VIRTUAL-RUNTIME_base-utils-syslog} \
${MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS}"
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 43fc599c738..f5b2d69cefc 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bb
@@ -13,7 +13,7 @@ RDEPENDS_${PN} = "\
${LIBC_DEPENDENCIES} \
"
-RRECOMMENDS_${PN} = "\
+RRECOMMENDS_${PN}_mingw32 = "\
libssp \
libssp-dev \
"
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb b/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb
index fa0e363d863..520d907714a 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb
@@ -18,7 +18,6 @@ PROFILE_TOOLS_SYSTEMD = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'sys
RRECOMMENDS_${PN} = "\
${PERF} \
- trace-cmd \
blktrace \
${PROFILE_TOOLS_X} \
${PROFILE_TOOLS_SYSTEMD} \
@@ -34,6 +33,7 @@ PERF_libc-musl = ""
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"
@@ -45,6 +45,7 @@ LTTNGTOOLS_libc-musl = ""
LTTNGTOOLS_riscv64 = ""
LTTNGMODULES = "lttng-modules"
+LTTNGMODULES_riscv64 = ""
BABELTRACE = "babeltrace"
@@ -59,6 +60,7 @@ VALGRIND_armv5 = ""
VALGRIND_armv6 = ""
VALGRIND_armeb = ""
VALGRIND_aarch64 = ""
+VALGRIND_riscv64 = ""
VALGRIND_linux-gnux32 = ""
RDEPENDS_${PN} = "\
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb b/meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb
index b8e507073ae..643219852dd 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb
@@ -15,6 +15,10 @@ KEXECTOOLS ?= "kexec"
KEXECTOOLS_e5500-64b ?= ""
KEXECTOOLS_microblaze ?= ""
KEXECTOOLS_nios2 ?= ""
+KEXECTOOLS_riscv64 ?= ""
+
+GSTEXAMPLES ?= "gst-examples"
+GSTEXAMPLES_riscv64 = ""
X11GLTOOLS = "\
mesa-demos \
@@ -25,8 +29,7 @@ X11GLTOOLS = "\
"
X11TOOLS = "\
- fstests \
- gst-examples \
+ ${GSTEXAMPLES} \
x11perf \
xrestop \
xwininfo \
diff --git a/meta/recipes-core/packagegroups/packagegroup-go-sdk-target.bb b/meta/recipes-core/packagegroups/packagegroup-go-sdk-target.bb
index 7d2ccbda225..5afb490aace 100644
--- a/meta/recipes-core/packagegroups/packagegroup-go-sdk-target.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-go-sdk-target.bb
@@ -7,3 +7,5 @@ RDEPENDS_${PN} = " \
go-runtime-dev \
go-runtime-staticdev \
"
+
+COMPATIBLE_HOST = "^(?!riscv64).*"
diff --git a/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb b/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb
index adb0c56c3a5..9a6721ce031 100644
--- a/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb
@@ -76,24 +76,26 @@ RDEPENDS_packagegroup-self-hosted-sdk = "\
intltool \
ldd \
less \
- libssp \
- libssp-dev \
- libssp-staticdev \
libstdc++ \
libstdc++-dev \
libtool \
make \
- mktemp \
perl-module-re \
perl-module-text-wrap \
pkgconfig \
quilt \
sed \
"
-# glibc-utils: for rpcgen
+RDEPENDS_packagegroup-self-hosted-sdk_append_mingw32 = "\
+ libssp \
+ libssp-dev \
+ libssp-staticdev \
+ "
+# rpcsvc-proto: for rpcgen
RDEPENDS_packagegroup-self-hosted-sdk_append_libc-glibc = "\
glibc-gconv-ibm850 \
glibc-utils \
+ rpcsvc-proto \
"
RDEPENDS_packagegroup-self-hosted-debug = " \
gdb \
@@ -185,8 +187,6 @@ RDEPENDS_packagegroup-self-hosted-graphics = "\
libgl-dev \
libglu \
libglu-dev \
- libsdl \
- libsdl-dev \
libx11-dev \
adwaita-icon-theme \
xdg-utils \
diff --git a/meta/recipes-core/psplash/psplash_git.bb b/meta/recipes-core/psplash/psplash_git.bb
index aab2c0360de..3ad1ef48157 100644
--- a/meta/recipes-core/psplash/psplash_git.bb
+++ b/meta/recipes-core/psplash/psplash_git.bb
@@ -73,6 +73,8 @@ ALTERNATIVE_LINK_NAME[psplash] = "${bindir}/psplash"
python do_compile () {
import shutil
+ import subprocess
+ import shlex
# Build a separate executable for each splash image
workdir = d.getVar('WORKDIR')
@@ -82,8 +84,7 @@ python do_compile () {
outputfiles = d.getVar('SPLASH_INSTALL').split()
for localfile, outputfile in zip(localfiles, outputfiles):
if localfile.endswith(".png"):
- outp = oe.utils.getstatusoutput('%s %s POKY' % (convertscript, os.path.join(workdir, localfile)))
- print(outp[1])
+ subprocess.call(shlex.split('%s %s POKY' % (convertscript, os.path.join(workdir, localfile))))
fbase = os.path.splitext(localfile)[0]
shutil.copyfile("%s-img.h" % fbase, destfile)
else:
diff --git a/meta/recipes-core/systemd/systemd-boot_237.bb b/meta/recipes-core/systemd/systemd-boot_239.bb
index afd3848f294..7fe420c2622 100644
--- a/meta/recipes-core/systemd/systemd-boot_237.bb
+++ b/meta/recipes-core/systemd/systemd-boot_239.bb
@@ -3,9 +3,8 @@ FILESEXTRAPATHS =. "${FILE_DIRNAME}/systemd:"
DEPENDS = "intltool-native libcap util-linux gnu-efi gperf-native"
-SRC_URI += "file://0003-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch \
- file://0027-remove-nobody-user-group-checking.patch \
- file://0001-Also-check-i386-i586-and-i686-for-ia32.patch \
+SRC_URI += "file://0002-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch \
+ file://0006-remove-nobody-user-group-checking.patch \
file://0001-Fix-to-run-efi_cc-and-efi_ld-correctly-when-cross-co.patch \
"
diff --git a/meta/recipes-core/systemd/systemd-serialgetty.bb b/meta/recipes-core/systemd/systemd-serialgetty.bb
index d67a3c91b4a..65a931f418d 100644
--- a/meta/recipes-core/systemd/systemd-serialgetty.bb
+++ b/meta/recipes-core/systemd/systemd-serialgetty.bb
@@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=80
PR = "r5"
-SERIAL_CONSOLE ?= "115200 ttyS0"
+SERIAL_CONSOLES ?= "115200;ttyS0"
SRC_URI = "file://serial-getty@.service"
diff --git a/meta/recipes-core/systemd/systemd.inc b/meta/recipes-core/systemd/systemd.inc
index 5fa48e7ab1f..736e0a0ea02 100644
--- a/meta/recipes-core/systemd/systemd.inc
+++ b/meta/recipes-core/systemd/systemd.inc
@@ -14,7 +14,7 @@ LICENSE = "GPLv2 & LGPLv2.1"
LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
-SRCREV = "46659f7deb962f55c728e70597e37c2a3ab6326d"
+SRCREV = "de7436b02badc82200dc127ff190b8155769b8e7"
SRC_URI = "git://github.com/systemd/systemd.git;protocol=git"
diff --git a/meta/recipes-core/systemd/systemd/0001-Also-check-i386-i586-and-i686-for-ia32.patch b/meta/recipes-core/systemd/systemd/0001-Also-check-i386-i586-and-i686-for-ia32.patch
deleted file mode 100644
index 877bb1c65c3..00000000000
--- a/meta/recipes-core/systemd/systemd/0001-Also-check-i386-i586-and-i686-for-ia32.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 3e8c19bb1bbc4493c591f75c00c1fefe3b1c8a69 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Tue, 27 Feb 2018 20:42:41 -0800
-Subject: [PATCH] Also check i386, i586 and i686 for ia32
-
-Upstream-Status: Pending
-
-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 28cb8b60e..489531a43 100644
---- a/meson.build
-+++ b/meson.build
-@@ -1217,7 +1217,7 @@ conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
- if get_option('efi')
- efi_arch = host_machine.cpu_family()
-
-- if efi_arch == 'x86'
-+ if efi_arch == 'x86' or efi_arch == 'i386' or efi_arch == 'i586' or efi_arch == 'i686'
- EFI_MACHINE_TYPE_NAME = 'ia32'
- gnu_efi_arch = 'ia32'
- elif efi_arch == 'x86_64'
---
-2.13.0
-
diff --git a/meta/recipes-core/systemd/systemd/0001-Remove-fstack-protector-flags-to-workaround-musl-bui.patch b/meta/recipes-core/systemd/systemd/0001-Remove-fstack-protector-flags-to-workaround-musl-bui.patch
index e913e3f7b55..d745800ced3 100644
--- a/meta/recipes-core/systemd/systemd/0001-Remove-fstack-protector-flags-to-workaround-musl-bui.patch
+++ b/meta/recipes-core/systemd/systemd/0001-Remove-fstack-protector-flags-to-workaround-musl-bui.patch
@@ -1,6 +1,6 @@
-From e361f6b4aefae57efff7e457df8db4d1067bec23 Mon Sep 17 00:00:00 2001
+From 9e3816bcaa36e1a11647ca0cf4f8044449c77fe0 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
-Date: Wed, 28 Feb 2018 21:50:23 -0800
+Date: Mon, 2 Jul 2018 15:28:22 +0800
Subject: [PATCH] Remove fstack-protector flags to workaround musl build
Remove fstack-protector and fstack-protector-strong flags to fix
@@ -8,7 +8,7 @@ the following build failure for qemux86 and qemuppc with musl.
undefined reference to `__stack_chk_fail_local'
-Upstream-Status: Inappropriate [OE Specific]
+Upstream-Status: Inappropriate [musl Specific]
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
@@ -16,18 +16,18 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
1 file changed, 2 deletions(-)
diff --git a/meson.build b/meson.build
-index 7610ab12b..591b9cbab 100644
+index f432ea072..a734a295c 100644
--- a/meson.build
+++ b/meson.build
-@@ -329,8 +329,6 @@ foreach arg : ['-Wextra',
- '-fdiagnostics-show-option',
- '-fno-strict-aliasing',
- '-fvisibility=hidden',
-- '-fstack-protector',
-- '-fstack-protector-strong',
- '--param=ssp-buffer-size=4',
- ]
- if cc.has_argument(arg)
+@@ -333,8 +333,6 @@ possible_cc_flags = [
+ '-fdiagnostics-show-option',
+ '-fno-strict-aliasing',
+ '-fvisibility=hidden',
+- '-fstack-protector',
+- '-fstack-protector-strong',
+ '--param=ssp-buffer-size=4',
+ ]
+
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0001-Use-getenv-when-secure-versions-are-not-available.patch b/meta/recipes-core/systemd/systemd/0001-Use-getenv-when-secure-versions-are-not-available.patch
index f4c15e1c466..03f6ead1317 100644
--- a/meta/recipes-core/systemd/systemd/0001-Use-getenv-when-secure-versions-are-not-available.patch
+++ b/meta/recipes-core/systemd/systemd/0001-Use-getenv-when-secure-versions-are-not-available.patch
@@ -1,7 +1,7 @@
-From b1192a6e171413291d9d64fafc04773c6bbc9cab Mon Sep 17 00:00:00 2001
+From 6dd136512896979feb6883a16226d640a7e5ca74 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
Date: Fri, 23 Feb 2018 10:04:48 +0800
-Subject: [PATCH 01/31] Use getenv when secure versions are not available
+Subject: [PATCH 01/19] Use getenv when secure versions are not available
musl doesnt implement secure version, so we default
to it if configure does not detect a secure implementation
@@ -16,10 +16,10 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/basic/missing.h b/src/basic/missing.h
-index 1280e6c41..39c1fb700 100644
+index 71a07d057..0e33abb9f 100644
--- a/src/basic/missing.h
+++ b/src/basic/missing.h
-@@ -605,7 +605,7 @@ struct btrfs_ioctl_quota_ctl_args {
+@@ -592,7 +592,7 @@ struct btrfs_ioctl_quota_ctl_args {
# if HAVE___SECURE_GETENV
# define secure_getenv __secure_getenv
# else
@@ -29,5 +29,5 @@ index 1280e6c41..39c1fb700 100644
#endif
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0002-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 c3f4b393459..e24e7f83fc0 100644
--- a/meta/recipes-core/systemd/systemd/0002-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,7 +1,7 @@
-From c93eb6cdec03f5e243e59e95dc49273fcb90e7c1 Mon Sep 17 00:00:00 2001
+From 87dd61be2e28e78ce4f9f173794812e6c2d904d1 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
-Date: Fri, 23 Feb 2018 10:23:40 +0800
-Subject: [PATCH 02/31] binfmt: Don't install dependency links at install time
+Date: Wed, 27 Jun 2018 16:01:22 +0800
+Subject: [PATCH 1/9] 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
@@ -23,10 +23,10 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
3 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/units/meson.build b/units/meson.build
-index 814ee7885..49ace0d0f 100644
+index e4ac6ced6..698734e44 100644
--- a/units/meson.build
+++ b/units/meson.build
-@@ -60,8 +60,7 @@ units = [
+@@ -46,8 +46,7 @@ units = [
['poweroff.target', '',
'runlevel0.target'],
['printer.target', ''],
@@ -36,7 +36,7 @@ index 814ee7885..49ace0d0f 100644
['proc-sys-fs-binfmt_misc.mount', 'ENABLE_BINFMT'],
['reboot.target', '',
'runlevel6.target ctrl-alt-del.target'],
-@@ -144,8 +143,7 @@ in_units = [
+@@ -130,8 +129,7 @@ in_units = [
['systemd-ask-password-console.service', ''],
['systemd-ask-password-wall.service', ''],
['systemd-backlight@.service', 'ENABLE_BACKLIGHT'],
@@ -58,18 +58,18 @@ index 30a6bc991..4231f3b70 100644
+[Install]
+WantedBy=sysinit.target
diff --git a/units/systemd-binfmt.service.in b/units/systemd-binfmt.service.in
-index df9396d89..0687f4648 100644
+index e940c7c9a..6be7f5cc9 100644
--- a/units/systemd-binfmt.service.in
+++ b/units/systemd-binfmt.service.in
-@@ -13,6 +13,7 @@ Documentation=man:systemd-binfmt.service(8) man:binfmt.d(5)
- Documentation=https://www.kernel.org/doc/Documentation/binfmt_misc.txt
+@@ -14,6 +14,7 @@ Documentation=https://www.kernel.org/doc/html/latest/admin-guide/binfmt-misc.htm
+ Documentation=https://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
DefaultDependencies=no
Conflicts=shutdown.target
+Wants=proc-sys-fs-binfmt_misc.automount
After=proc-sys-fs-binfmt_misc.automount
Before=sysinit.target shutdown.target
ConditionPathIsReadWrite=/proc/sys/
-@@ -27,3 +28,6 @@ Type=oneshot
+@@ -28,3 +29,6 @@ Type=oneshot
RemainAfterExit=yes
ExecStart=@rootlibexecdir@/systemd-binfmt
TimeoutSec=90s
@@ -77,5 +77,5 @@ index df9396d89..0687f4648 100644
+[Install]
+WantedBy=sysinit.target
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0001-core-device.c-Change-the-default-device-timeout-to-2.patch b/meta/recipes-core/systemd/systemd/0001-core-device.c-Change-the-default-device-timeout-to-2.patch
index b7b1ea08861..fd7bf3fcf64 100644
--- a/meta/recipes-core/systemd/systemd/0001-core-device.c-Change-the-default-device-timeout-to-2.patch
+++ b/meta/recipes-core/systemd/systemd/0001-core-device.c-Change-the-default-device-timeout-to-2.patch
@@ -1,7 +1,9 @@
-From 9820c165a9e559cf851e3beb60fad2571de4ded2 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 14 Dec 2015 04:09:19 +0000
+From 2925c0c3b6ce4056622b86c1c61ee14add430790 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Thu, 28 Jun 2018 10:56:29 +0800
Subject: [PATCH] core/device.c: Change the default device timeout to 240 sec.
+ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8
+ Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -10,16 +12,16 @@ Upstream-Status: Inappropriate [Specific case QEMU/AB]
Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
src/core/device.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/core/device.c b/src/core/device.c
-index 77601c552..98bf49ba2 100644
+index a2d00a0fb..f26e55ebb 100644
--- a/src/core/device.c
+++ b/src/core/device.c
-@@ -112,7 +112,7 @@ static void device_init(Unit *u) {
+@@ -95,7 +95,7 @@ static void device_init(Unit *u) {
* indefinitely for plugged in devices, something which cannot
* happen for the other units since their operations time out
* anyway. */
@@ -27,7 +29,7 @@ index 77601c552..98bf49ba2 100644
+ u->job_running_timeout = (240 * USEC_PER_SEC);
u->ignore_on_isolate = true;
- }
+
--
-2.16.1
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0001-login-use-parse_uid-when-unmounting-user-runtime-dir.patch b/meta/recipes-core/systemd/systemd/0001-login-use-parse_uid-when-unmounting-user-runtime-dir.patch
new file mode 100644
index 00000000000..ba08e34558a
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0001-login-use-parse_uid-when-unmounting-user-runtime-dir.patch
@@ -0,0 +1,110 @@
+From 86d18f3b09ec984ef3732567af992adb2dc77a8a Mon Sep 17 00:00:00 2001
+From: Yu Watanabe <watanabe.yu+github@gmail.com>
+Date: Mon, 9 Jul 2018 14:05:20 +0900
+Subject: [PATCH] login: use parse_uid() when unmounting user runtime directory
+
+When unmounting user runtime directory, only UID is necessary,
+and the corresponding user may not exist anymore.
+This makes first try to parse the input by parse_uid(), and only if it
+fails, prase the input by get_user_creds().
+
+Fixes #9541.
+
+Upstream-Status: Backport
+---
+ src/login/user-runtime-dir.c | 57 ++++++++++++++++++++++++++++----------------
+ 1 file changed, 36 insertions(+), 21 deletions(-)
+
+diff --git a/src/login/user-runtime-dir.c b/src/login/user-runtime-dir.c
+index 1bb26c99e..de4061c75 100644
+--- a/src/login/user-runtime-dir.c
++++ b/src/login/user-runtime-dir.c
+@@ -111,8 +111,22 @@ static int user_remove_runtime_path(const char *runtime_path) {
+ return r;
+ }
+
+-static int do_mount(const char *runtime_path, uid_t uid, gid_t gid) {
++static int do_mount(const char *user) {
++ char runtime_path[sizeof("/run/user") + DECIMAL_STR_MAX(uid_t)];
+ size_t runtime_dir_size;
++ uid_t uid;
++ gid_t gid;
++ int r;
++
++ r = get_user_creds(&user, &uid, &gid, NULL, NULL);
++ if (r < 0)
++ return log_error_errno(r,
++ r == -ESRCH ? "No such user \"%s\"" :
++ r == -ENOMSG ? "UID \"%s\" is invalid or has an invalid main group"
++ : "Failed to look up user \"%s\": %m",
++ user);
++
++ xsprintf(runtime_path, "/run/user/" UID_FMT, uid);
+
+ assert_se(gather_configuration(&runtime_dir_size) == 0);
+
+@@ -120,16 +134,30 @@ static int do_mount(const char *runtime_path, uid_t uid, gid_t gid) {
+ return user_mkdir_runtime_path(runtime_path, uid, gid, runtime_dir_size);
+ }
+
+-static int do_umount(const char *runtime_path) {
++static int do_umount(const char *user) {
++ char runtime_path[sizeof("/run/user") + DECIMAL_STR_MAX(uid_t)];
++ uid_t uid;
++ int r;
++
++ /* The user may be already removed. So, first try to parse the string by parse_uid(),
++ * and if it fails, fallback to get_user_creds().*/
++ if (parse_uid(user, &uid) < 0) {
++ r = get_user_creds(&user, &uid, NULL, NULL, NULL);
++ if (r < 0)
++ return log_error_errno(r,
++ r == -ESRCH ? "No such user \"%s\"" :
++ r == -ENOMSG ? "UID \"%s\" is invalid or has an invalid main group"
++ : "Failed to look up user \"%s\": %m",
++ user);
++ }
++
++ xsprintf(runtime_path, "/run/user/" UID_FMT, uid);
++
+ log_debug("Will remove %s", runtime_path);
+ return user_remove_runtime_path(runtime_path);
+ }
+
+ int main(int argc, char *argv[]) {
+- const char *user;
+- uid_t uid;
+- gid_t gid;
+- char runtime_path[sizeof("/run/user") + DECIMAL_STR_MAX(uid_t)];
+ int r;
+
+ log_parse_environment();
+@@ -146,23 +174,10 @@ int main(int argc, char *argv[]) {
+
+ umask(0022);
+
+- user = argv[2];
+- r = get_user_creds(&user, &uid, &gid, NULL, NULL);
+- if (r < 0) {
+- log_error_errno(r,
+- r == -ESRCH ? "No such user \"%s\"" :
+- r == -ENOMSG ? "UID \"%s\" is invalid or has an invalid main group"
+- : "Failed to look up user \"%s\": %m",
+- user);
+- return EXIT_FAILURE;
+- }
+-
+- xsprintf(runtime_path, "/run/user/" UID_FMT, uid);
+-
+ if (streq(argv[1], "start"))
+- r = do_mount(runtime_path, uid, gid);
++ r = do_mount(argv[2]);
+ else if (streq(argv[1], "stop"))
+- r = do_umount(runtime_path);
++ r = do_umount(argv[2]);
+ else
+ assert_not_reached("Unknown verb!");
+
+--
+2.11.0
+
diff --git a/meta/recipes-core/systemd/systemd/0001-sd-bus-make-BUS_DEFAULT_TIMEOUT-configurable.patch b/meta/recipes-core/systemd/systemd/0001-sd-bus-make-BUS_DEFAULT_TIMEOUT-configurable.patch
new file mode 100644
index 00000000000..45c9b5b1e3b
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0001-sd-bus-make-BUS_DEFAULT_TIMEOUT-configurable.patch
@@ -0,0 +1,175 @@
+From 5b75a72ee968c9666b5f2ea313720b6c383cb4c2 Mon Sep 17 00:00:00 2001
+From: Yu Watanabe <watanabe.yu+github@gmail.com>
+Date: Fri, 13 Jul 2018 17:38:47 +0900
+Subject: [PATCH] sd-bus: make BUS_DEFAULT_TIMEOUT configurable
+
+This adds sd_bus_{get,set}_method_call_timeout().
+If the timeout is not set or set to 0, then the timeout value is
+parsed from $SYSTEMD_BUS_TIMEOUT= environment variable. If the
+environment variable is not set, then built-in timeout is used.
+---
+ doc/ENVIRONMENT.md | 5 +++++
+ src/libsystemd/libsystemd.sym | 5 +++++
+ src/libsystemd/sd-bus/bus-internal.h | 9 ++++----
+ src/libsystemd/sd-bus/bus-message.c | 7 +++++--
+ src/libsystemd/sd-bus/sd-bus.c | 40 ++++++++++++++++++++++++++++++++++--
+ src/systemd/sd-bus.h | 3 +++
+ 6 files changed, 61 insertions(+), 8 deletions(-)
+
+Upstream-Status: Backport
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+
+diff --git a/doc/ENVIRONMENT.md b/doc/ENVIRONMENT.md
+index 85d26fe28c..641a03d5d7 100644
+--- a/doc/ENVIRONMENT.md
++++ b/doc/ENVIRONMENT.md
+@@ -37,6 +37,11 @@ All tools:
+ useful for debugging, in order to test generators and other code against
+ specific kernel command lines.
+
++* `$SYSTEMD_BUS_TIMEOUT=SECS` — specifies the maximum time to wait for method call
++ completion. If no time unit is specified, assumes seconds. The usual other units
++ are understood, too (us, ms, s, min, h, d, w, month, y). If it is not set or set
++ to 0, then the built-in default is used.
++
+ systemctl:
+
+ * `$SYSTEMCTL_FORCE_BUS=1` — if set, do not connect to PID1's private D-Bus
+diff --git a/src/libsystemd/libsystemd.sym b/src/libsystemd/libsystemd.sym
+index 1eec17db50..006dbc9c3f 100644
+--- a/src/libsystemd/libsystemd.sym
++++ b/src/libsystemd/libsystemd.sym
+@@ -570,3 +570,8 @@ global:
+ sd_event_source_set_destroy_callback;
+ sd_event_source_get_destroy_callback;
+ } LIBSYSTEMD_238;
++
++LIBSYSTEMD_240 {
++ sd_bus_set_method_call_timeout;
++ sd_bus_get_method_call_timeout;
++} LIBSYSTEMD_239;
+diff --git a/src/libsystemd/sd-bus/bus-internal.h b/src/libsystemd/sd-bus/bus-internal.h
+index 2087ef8eeb..4864b1e911 100644
+--- a/src/libsystemd/sd-bus/bus-internal.h
++++ b/src/libsystemd/sd-bus/bus-internal.h
+@@ -319,6 +319,9 @@ struct sd_bus {
+
+ int *inotify_watches;
+ size_t n_inotify_watches;
++
++ /* zero means use value specified by $SYSTEMD_BUS_TIMEOUT= environment variable or built-in default */
++ usec_t method_call_timeout;
+ };
+
+ /* For method calls we time-out at 25s, like in the D-Bus reference implementation */
+@@ -336,8 +339,7 @@ struct sd_bus {
+
+ #define BUS_CONTAINER_DEPTH 128
+
+-/* Defined by the specification as maximum size of an array in
+- * bytes */
++/* Defined by the specification as maximum size of an array in bytes */
+ #define BUS_ARRAY_MAX_SIZE 67108864
+
+ #define BUS_FDS_MAX 1024
+@@ -388,8 +390,7 @@ void bus_close_io_fds(sd_bus *b);
+ _slash = streq((prefix), "/") ? NULL : strrchr((prefix), '/'))
+
+ /* If we are invoking callbacks of a bus object, ensure unreffing the
+- * bus from the callback doesn't destroy the object we are working
+- * on */
++ * bus from the callback doesn't destroy the object we are working on */
+ #define BUS_DONT_DESTROY(bus) \
+ _cleanup_(sd_bus_unrefp) _unused_ sd_bus *_dont_destroy_##bus = sd_bus_ref(bus)
+
+diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c
+index 8d92bc2002..dffe70a665 100644
+--- a/src/libsystemd/sd-bus/bus-message.c
++++ b/src/libsystemd/sd-bus/bus-message.c
+@@ -5809,8 +5809,11 @@ int bus_message_remarshal(sd_bus *bus, sd_bus_message **m) {
+ return r;
+
+ timeout = (*m)->timeout;
+- if (timeout == 0 && !((*m)->header->flags & BUS_MESSAGE_NO_REPLY_EXPECTED))
+- timeout = BUS_DEFAULT_TIMEOUT;
++ if (timeout == 0 && !((*m)->header->flags & BUS_MESSAGE_NO_REPLY_EXPECTED)) {
++ r = sd_bus_get_method_call_timeout(bus, &timeout);
++ if (r < 0)
++ return r;
++ }
+
+ r = sd_bus_message_seal(n, BUS_MESSAGE_COOKIE(*m), timeout);
+ if (r < 0)
+diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c
+index 089b51a6d9..945490ebf7 100644
+--- a/src/libsystemd/sd-bus/sd-bus.c
++++ b/src/libsystemd/sd-bus/sd-bus.c
+@@ -1611,8 +1611,11 @@ static int bus_seal_message(sd_bus *b, sd_bus_message *m, usec_t timeout) {
+ return 0;
+ }
+
+- if (timeout == 0)
+- timeout = BUS_DEFAULT_TIMEOUT;
++ if (timeout == 0) {
++ r = sd_bus_get_method_call_timeout(b, &timeout);
++ if (r < 0)
++ return r;
++ }
+
+ if (!m->sender && b->patch_sender) {
+ r = sd_bus_message_set_sender(m, b->patch_sender);
+@@ -4075,3 +4078,36 @@ _public_ int sd_bus_get_n_queued_write(sd_bus *bus, uint64_t *ret) {
+ *ret = bus->wqueue_size;
+ return 0;
+ }
++
++_public_ int sd_bus_set_method_call_timeout(sd_bus *bus, uint64_t usec) {
++ assert_return(bus, -EINVAL);
++ assert_return(bus = bus_resolve(bus), -ENOPKG);
++
++ bus->method_call_timeout = usec;
++ return 0;
++}
++
++_public_ int sd_bus_get_method_call_timeout(sd_bus *bus, uint64_t *ret) {
++ const char *e;
++ usec_t usec;
++
++ assert_return(bus, -EINVAL);
++ assert_return(bus = bus_resolve(bus), -ENOPKG);
++ assert_return(ret, -EINVAL);
++
++ if (bus->method_call_timeout != 0) {
++ *ret = bus->method_call_timeout;
++ return 0;
++ }
++
++ e = secure_getenv("SYSTEMD_BUS_TIMEOUT");
++ if (e && parse_sec(e, &usec) >= 0 && usec != 0) {
++ /* Save the parsed value to avoid multiple parsing. To change the timeout value,
++ * use sd_bus_set_method_call_timeout() instead of setenv(). */
++ *ret = bus->method_call_timeout = usec;
++ return 0;
++ }
++
++ *ret = bus->method_call_timeout = BUS_DEFAULT_TIMEOUT;
++ return 0;
++}
+diff --git a/src/systemd/sd-bus.h b/src/systemd/sd-bus.h
+index 54c4b1ca83..c9fd254834 100644
+--- a/src/systemd/sd-bus.h
++++ b/src/systemd/sd-bus.h
+@@ -206,6 +206,9 @@ sd_event *sd_bus_get_event(sd_bus *bus);
+ int sd_bus_get_n_queued_read(sd_bus *bus, uint64_t *ret);
+ int sd_bus_get_n_queued_write(sd_bus *bus, uint64_t *ret);
+
++int sd_bus_set_method_call_timeout(sd_bus *bus, uint64_t usec);
++int sd_bus_get_method_call_timeout(sd_bus *bus, uint64_t *ret);
++
+ int sd_bus_add_filter(sd_bus *bus, sd_bus_slot **slot, sd_bus_message_handler_t callback, void *userdata);
+ int sd_bus_add_match(sd_bus *bus, sd_bus_slot **slot, const char *match, sd_bus_message_handler_t callback, void *userdata);
+ int sd_bus_add_match_async(sd_bus *bus, sd_bus_slot **slot, const char *match, sd_bus_message_handler_t callback, sd_bus_message_handler_t install_callback, void *userdata);
+--
+2.11.0
+
diff --git a/meta/recipes-core/systemd/systemd/0022-don-t-use-glibc-specific-qsort_r.patch b/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch
index a5f74421ac4..8e0d669e832 100644
--- a/meta/recipes-core/systemd/systemd/0022-don-t-use-glibc-specific-qsort_r.patch
+++ b/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch
@@ -1,21 +1,99 @@
-From d343757d629402c70ca8e5eaa551deaf175c96f3 Mon Sep 17 00:00:00 2001
+From d74a4de6daea5a511c2b5636bbb552c15b3a4ad9 Mon Sep 17 00:00:00 2001
From: Emil Renner Berthing <systemd@esmil.dk>
Date: Thu, 18 Sep 2014 15:24:56 +0200
-Subject: [PATCH 22/31] don't use glibc-specific qsort_r
+Subject: [PATCH] don't use glibc-specific qsort_r
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [musl specific]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- src/hwdb/hwdb.c | 18 +++++++++++-------
- src/udev/udevadm-hwdb.c | 16 ++++++++++------
- 2 files changed, 21 insertions(+), 13 deletions(-)
+ src/basic/format-table.c | 27 ++++++++++++++++-----------
+ src/basic/util.h | 7 -------
+ src/hwdb/hwdb.c | 18 +++++++++++-------
+ src/udev/udevadm-hwdb.c | 16 ++++++++++------
+ 4 files changed, 37 insertions(+), 31 deletions(-)
+diff --git a/src/basic/format-table.c b/src/basic/format-table.c
+index 94e796d1ca..9b3f35c29a 100644
+--- a/src/basic/format-table.c
++++ b/src/basic/format-table.c
+@@ -745,29 +745,29 @@ static int cell_data_compare(TableData *a, size_t index_a, TableData *b, size_t
+ return 0;
+ }
+
+-static int table_data_compare(const void *x, const void *y, void *userdata) {
++static Table *user_table;
++static int table_data_compare(const void *x, const void *y) {
+ const size_t *a = x, *b = y;
+- Table *t = userdata;
+ size_t i;
+ int r;
+
+- assert(t);
+- assert(t->sort_map);
++ assert(user_table);
++ assert(user_table->sort_map);
+
+ /* Make sure the header stays at the beginning */
+- if (*a < t->n_columns && *b < t->n_columns)
++ if (*a < user_table->n_columns && *b < user_table->n_columns)
+ return 0;
+- if (*a < t->n_columns)
++ if (*a < user_table->n_columns)
+ return -1;
+- if (*b < t->n_columns)
++ if (*b < user_table->n_columns)
+ return 1;
+
+ /* Order other lines by the sorting map */
+- for (i = 0; i < t->n_sort_map; i++) {
++ for (i = 0; i < user_table->n_sort_map; i++) {
+ TableData *d, *dd;
+
+- d = t->data[*a + t->sort_map[i]];
+- dd = t->data[*b + t->sort_map[i]];
++ d = user_table->data[*a + user_table->sort_map[i]];
++ dd = user_table->data[*b + user_table->sort_map[i]];
+
+ r = cell_data_compare(d, *a, dd, *b);
+ if (r != 0)
+@@ -960,7 +960,12 @@ int table_print(Table *t, FILE *f) {
+ for (i = 0; i < n_rows; i++)
+ sorted[i] = i * t->n_columns;
+
+- qsort_r_safe(sorted, n_rows, sizeof(size_t), table_data_compare, t);
++ if (n_rows <= 1)
++ return 0;
++ assert(sorted);
++ user_table = t;
++ qsort(sorted, n_rows, sizeof(size_t), table_data_compare);
++ user_table = NULL;
+ }
+
+ if (t->display_map)
+diff --git a/src/basic/util.h b/src/basic/util.h
+index 9699d228f9..40eaf518cb 100644
+--- a/src/basic/util.h
++++ b/src/basic/util.h
+@@ -105,13 +105,6 @@ static inline void qsort_safe(void *base, size_t nmemb, size_t size, comparison_
+ qsort_safe((p), (n), sizeof((p)[0]), (__compar_fn_t) _func_); \
+ })
+
+-static inline void qsort_r_safe(void *base, size_t nmemb, size_t size, int (*compar)(const void*, const void*, void*), void *userdata) {
+- if (nmemb <= 1)
+- return;
+-
+- assert(base);
+- qsort_r(base, nmemb, size, compar, userdata);
+-}
+
+ /**
+ * Normal memcpy requires src to be nonnull. We do nothing if n is 0.
diff --git a/src/hwdb/hwdb.c b/src/hwdb/hwdb.c
-index 4540260f9..81aca7a9b 100644
+index 317cad8a67..701d59a1eb 100644
--- a/src/hwdb/hwdb.c
+++ b/src/hwdb/hwdb.c
-@@ -152,13 +152,12 @@ static void trie_free(struct trie *trie) {
+@@ -135,13 +135,12 @@ static void trie_free(struct trie *trie) {
DEFINE_TRIVIAL_CLEANUP_FUNC(struct trie*, trie_free);
@@ -33,7 +111,7 @@ index 4540260f9..81aca7a9b 100644
}
static int trie_node_add_value(struct trie *trie, struct trie_node *node,
-@@ -183,7 +182,10 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
+@@ -166,7 +165,10 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
.value_off = v,
};
@@ -45,7 +123,7 @@ index 4540260f9..81aca7a9b 100644
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.
-@@ -208,7 +210,9 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
+@@ -191,7 +193,9 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
node->values[node->values_count].file_priority = file_priority;
node->values[node->values_count].line_number = line_number;
node->values_count++;
@@ -57,10 +135,10 @@ index 4540260f9..81aca7a9b 100644
}
diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c
-index ab5dc7ab6..c777e30ab 100644
+index 02408a4285..491d367d12 100644
--- a/src/udev/udevadm-hwdb.c
+++ b/src/udev/udevadm-hwdb.c
-@@ -130,13 +130,13 @@ static void trie_node_cleanup(struct trie_node *node) {
+@@ -114,13 +114,13 @@ static void trie_node_cleanup(struct trie_node *node) {
free(node);
}
@@ -78,7 +156,7 @@ index ab5dc7ab6..c777e30ab 100644
}
static int trie_node_add_value(struct trie *trie, struct trie_node *node,
-@@ -157,7 +157,9 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
+@@ -141,7 +141,9 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
.value_off = v,
};
@@ -89,7 +167,7 @@ index ab5dc7ab6..c777e30ab 100644
if (val) {
/* replace existing earlier key with new value */
val->value_off = v;
-@@ -174,7 +176,9 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
+@@ -158,7 +160,9 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
node->values[node->values_count].key_off = k;
node->values[node->values_count].value_off = v;
node->values_count++;
@@ -101,5 +179,5 @@ index ab5dc7ab6..c777e30ab 100644
}
--
-2.13.0
+2.18.0
diff --git a/meta/recipes-core/systemd/systemd/0003-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
index 28f1b217e0f..1d7f5230a96 100644
--- a/meta/recipes-core/systemd/systemd/0003-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
@@ -1,8 +1,8 @@
-From 8b9d194e956848e0d1fb35ef2fba714b2691ebe6 Mon Sep 17 00:00:00 2001
+From 6e62be87a2722fbe531310a1b052c1301bdf06fb Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
-Date: Wed, 28 Feb 2018 20:47:49 -0800
-Subject: [PATCH 03/31] use lnr wrapper instead of looking for --relative
- option for ln
+Date: Wed, 27 Jun 2018 16:09:24 +0800
+Subject: [PATCH 2/9] 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.
@@ -18,15 +18,15 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
3 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/meson.build b/meson.build
-index 36a62d280..7347ea880 100644
+index 04331dd41..6d5edcb4e 100644
--- a/meson.build
+++ b/meson.build
-@@ -570,10 +570,6 @@ endforeach
+@@ -558,10 +558,6 @@ endforeach
conf.set_quoted('TELINIT', get_option('telinit-path'))
-if run_command('ln', '--relative', '--help').returncode() != 0
-- error('ln does not support --relative')
+- error('ln does not support --relative (added in coreutils 8.16)')
-endif
-
############################################################
@@ -60,5 +60,5 @@ index 70f7172ae..a42666aac 100755
+ lnr "$unitpath" "$dir"
+fi
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0003-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch b/meta/recipes-core/systemd/systemd/0003-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch
new file mode 100644
index 00000000000..115fb33c301
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0003-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch
@@ -0,0 +1,40 @@
+From e965e748c7030df0709e63128db2f023540a06ba Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 12 Sep 2015 18:53:31 +0000
+Subject: [PATCH 03/19] comparison_fn_t is glibc specific, use raw signature in
+ function pointer
+
+make it work with musl where comparison_fn_t is not provided
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/basic/util.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/basic/util.h b/src/basic/util.h
+index 40eaf518c..c58392397 100644
+--- a/src/basic/util.h
++++ b/src/basic/util.h
+@@ -77,7 +77,7 @@ void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size,
+ * that only if nmemb > 0.
+ */
+ static inline void* bsearch_safe(const void *key, const void *base,
+- size_t nmemb, size_t size, comparison_fn_t compar) {
++ size_t nmemb, size_t size, int (*compar)(const void *, const void *)) {
+ if (nmemb <= 0)
+ return NULL;
+
+@@ -89,7 +89,7 @@ static inline void* bsearch_safe(const void *key, const void *base,
+ * Normal qsort requires base to be nonnull. Here were require
+ * that only if nmemb > 0.
+ */
+-static inline void qsort_safe(void *base, size_t nmemb, size_t size, comparison_fn_t compar) {
++static inline void qsort_safe(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)) {
+ if (nmemb <= 1)
+ return;
+
+--
+2.11.0
+
diff --git a/meta/recipes-core/systemd/systemd/0004-implment-systemd-sysv-install-for-OE.patch b/meta/recipes-core/systemd/systemd/0003-implment-systemd-sysv-install-for-OE.patch
index 83fdb530bfc..6c595ae733d 100644
--- a/meta/recipes-core/systemd/systemd/0004-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 70d456fb21de2a80697fa364f08475339d6396c1 Mon Sep 17 00:00:00 2001
+From 0fcb6e646401205e17cc6c129441a49023c62cef 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 04/31] implment systemd-sysv-install for OE
+Subject: [PATCH 3/9] implment systemd-sysv-install for OE
Use update-rc.d for enabling/disabling and status command
to check the status of the sysv service
@@ -14,10 +14,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/systemctl/systemd-sysv-install.SKELETON b/src/systemctl/systemd-sysv-install.SKELETON
-index a53a3e622..5d877b06e 100755
+index 8c16cf999..9f078a121 100755
--- a/src/systemctl/systemd-sysv-install.SKELETON
+++ b/src/systemctl/systemd-sysv-install.SKELETON
-@@ -30,17 +30,17 @@ case "$1" in
+@@ -32,17 +32,17 @@ case "$1" in
enable)
# call the command to enable SysV init script $NAME here
# (consider optional $ROOT)
@@ -39,5 +39,5 @@ index a53a3e622..5d877b06e 100755
*)
usage ;;
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0013-add-fallback-parse_printf_format-implementation.patch b/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch
index 9c9278d3f3b..7652a2d8ccc 100644
--- a/meta/recipes-core/systemd/systemd/0013-add-fallback-parse_printf_format-implementation.patch
+++ b/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch
@@ -1,29 +1,29 @@
-From 580d23cf0b32e36a8fb96710336ffef432b3c7ce Mon Sep 17 00:00:00 2001
+From 582af7ec13131dfcc620ed81de7b211914c4cb03 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
-Date: Wed, 28 Feb 2018 21:10:58 -0800
-Subject: [PATCH] add fallback parse_printf_format implementation
+Date: Fri, 29 Jun 2018 13:43:49 +0800
+Subject: [PATCH 04/19] add fallback parse_printf_format implementation
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [musl specific]
Signed-off-by: Emil Renner Berthing <systemd@esmil.dk>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
meson.build | 1 +
- src/basic/meson.build | 4 +
+ src/basic/meson.build | 5 +
src/basic/parse-printf-format.c | 273 ++++++++++++++++++++++++++++++++++++++++
src/basic/parse-printf-format.h | 57 +++++++++
src/basic/stdio-util.h | 2 +-
src/journal/journal-send.c | 2 +-
- 6 files changed, 337 insertions(+), 2 deletions(-)
+ 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 94a16712b..4eabaafe8 100644
+index e045b9224..8c16bc979 100644
--- a/meson.build
+++ b/meson.build
-@@ -620,6 +620,7 @@ foreach header : ['crypt.h',
+@@ -598,6 +598,7 @@ foreach header : ['crypt.h',
'linux/btrfs.h',
'linux/memfd.h',
'linux/vm_sockets.h',
@@ -32,20 +32,21 @@ index 94a16712b..4eabaafe8 100644
'valgrind/memcheck.h',
'valgrind/valgrind.h',
diff --git a/src/basic/meson.build b/src/basic/meson.build
-index 44cd31ecb..435c6ee02 100644
+index 31625b178..0c27528e7 100644
--- a/src/basic/meson.build
+++ b/src/basic/meson.build
-@@ -310,6 +310,10 @@ endforeach
+@@ -302,6 +302,11 @@ foreach item : [['af', af_list_txt, 'af', ''],
+ endforeach
basic_sources += [missing_h] + generated_gperf_headers
-
++
+if conf.get('HAVE_PRINTF_H') != 1
+ basic_sources += [files('parse-printf-format.c')]
+endif
+
- libbasic = static_library(
- 'basic',
- basic_sources,
+ 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 000000000..49437e544
@@ -389,12 +390,12 @@ index 000000000..47be7522d
+
+#endif /* HAVE_PRINTF_H */
diff --git a/src/basic/stdio-util.h b/src/basic/stdio-util.h
-index dbfafba26..8038380d6 100644
+index 73c03274c..30192cd71 100644
--- a/src/basic/stdio-util.h
+++ b/src/basic/stdio-util.h
-@@ -20,12 +20,12 @@
- along with systemd; If not, see <http://www.gnu.org/licenses/>.
- ***/
+@@ -1,12 +1,12 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ #pragma once
-#include <printf.h>
#include <stdarg.h>
@@ -404,13 +405,13 @@ index dbfafba26..8038380d6 100644
#include "macro.h"
+#include "parse-printf-format.h"
- #define xsprintf(buf, fmt, ...) \
- assert_message_se((size_t) snprintf(buf, ELEMENTSOF(buf), fmt, __VA_ARGS__) < ELEMENTSOF(buf), "xsprintf: " #buf "[] must be big enough")
+ #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 73329ba02..70bb9e0e8 100644
+index a0621524a..65bcbcd2e 100644
--- a/src/journal/journal-send.c
+++ b/src/journal/journal-send.c
-@@ -20,7 +20,6 @@
+@@ -2,7 +2,6 @@
#include <errno.h>
#include <fcntl.h>
@@ -418,7 +419,7 @@ index 73329ba02..70bb9e0e8 100644
#include <stddef.h>
#include <sys/socket.h>
#include <sys/un.h>
-@@ -39,6 +38,7 @@
+@@ -21,6 +20,7 @@
#include "stdio-util.h"
#include "string-util.h"
#include "util.h"
@@ -427,5 +428,5 @@ index 73329ba02..70bb9e0e8 100644
#define SNDBUF_SIZE (8*1024*1024)
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0005-rules-whitelist-hd-devices.patch b/meta/recipes-core/systemd/systemd/0004-rules-whitelist-hd-devices.patch
index e4421c826fa..7e37cbc2c12 100644
--- a/meta/recipes-core/systemd/systemd/0005-rules-whitelist-hd-devices.patch
+++ b/meta/recipes-core/systemd/systemd/0004-rules-whitelist-hd-devices.patch
@@ -1,7 +1,7 @@
-From 7b5b34993002b4418ba8a3c2ae661a7337fd8ed0 Mon Sep 17 00:00:00 2001
+From 5d8128f3832fd11fd046d1d1ad86c4ee7bc1dff0 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 9 Nov 2016 19:41:13 -0800
-Subject: [PATCH 05/31] rules: whitelist hd* devices
+Subject: [PATCH 4/9] 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
@@ -16,7 +16,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules
-index 0de8cf3a1..d3f58f153 100644
+index 8ddb7577c..811e948ad 100644
--- a/rules/60-persistent-storage.rules
+++ b/rules/60-persistent-storage.rules
@@ -7,7 +7,7 @@ ACTION=="remove", GOTO="persistent_storage_end"
@@ -29,5 +29,5 @@ index 0de8cf3a1..d3f58f153 100644
# ignore partitions that span the entire disk
TEST=="whole_disk", GOTO="persistent_storage_end"
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0006-Make-root-s-home-directory-configurable.patch b/meta/recipes-core/systemd/systemd/0005-Make-root-s-home-directory-configurable.patch
index 5ba966168a2..c13708728e2 100644
--- a/meta/recipes-core/systemd/systemd/0006-Make-root-s-home-directory-configurable.patch
+++ b/meta/recipes-core/systemd/systemd/0005-Make-root-s-home-directory-configurable.patch
@@ -1,7 +1,7 @@
-From 9d63227420f0c4f093c1c2066eafe2b6152070cf Mon Sep 17 00:00:00 2001
+From 8b82663aeeedf9ca58e3b97116b4c4da5229e0f5 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
-Date: Fri, 23 Feb 2018 13:47:37 +0800
-Subject: [PATCH 06/31] Make root's home directory configurable
+Date: Wed, 27 Jun 2018 16:46:45 +0800
+Subject: [PATCH 5/9] Make root's home directory configurable
OpenEmbedded has a configurable home directory for root. Allow
systemd to be built using its idea of what root's home directory
@@ -16,15 +16,15 @@ Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
- meson.build | 8 ++++++++
+ meson.build | 7 +++++++
meson_options.txt | 2 ++
- 2 files changed, 10 insertions(+)
+ 2 files changed, 9 insertions(+)
diff --git a/meson.build b/meson.build
-index 7347ea880..918101d6b 100644
+index 6d5edcb4e..323146fe1 100644
--- a/meson.build
+++ b/meson.build
-@@ -94,6 +94,11 @@ if rootlibdir == ''
+@@ -89,6 +89,11 @@ if rootlibdir == ''
rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
endif
@@ -36,7 +36,7 @@ index 7347ea880..918101d6b 100644
# Dirs of external packages
pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
-@@ -205,6 +210,7 @@ conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
+@@ -210,6 +215,7 @@ conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
conf.set_quoted('LIBDIR', libdir)
conf.set_quoted('ROOTLIBDIR', rootlibdir)
@@ -44,7 +44,7 @@ index 7347ea880..918101d6b 100644
conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
conf.set_quoted('BOOTLIBDIR', bootlibdir)
conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
-@@ -221,6 +227,7 @@ substs.set('prefix', prefixdir)
+@@ -228,6 +234,7 @@ substs.set('prefix', prefixdir)
substs.set('exec_prefix', prefixdir)
substs.set('libdir', libdir)
substs.set('rootlibdir', rootlibdir)
@@ -52,19 +52,11 @@ index 7347ea880..918101d6b 100644
substs.set('includedir', includedir)
substs.set('pkgsysconfdir', pkgsysconfdir)
substs.set('bindir', bindir)
-@@ -2705,6 +2712,7 @@ status = [
- 'include directory: @0@'.format(includedir),
- 'lib directory: @0@'.format(libdir),
- 'rootlib directory: @0@'.format(rootlibdir),
-+ 'roothome directory: @0@'.format(roothomedir),
- 'SysV init scripts: @0@'.format(sysvinit_path),
- 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
- 'PAM modules directory: @0@'.format(pamlibdir),
diff --git a/meson_options.txt b/meson_options.txt
-index 39822d6cd..0b24f0e0f 100644
+index 16c1f2b2f..aa9a33368 100644
--- a/meson_options.txt
+++ b/meson_options.txt
-@@ -22,6 +22,8 @@ option('rootlibdir', type : 'string',
+@@ -9,6 +9,8 @@ option('rootlibdir', type : 'string',
description : '''[/usr]/lib/x86_64-linux-gnu or such''')
option('rootprefix', type : 'string',
description : '''override the root prefix''')
@@ -72,7 +64,7 @@ index 39822d6cd..0b24f0e0f 100644
+ description : '''override the root home directory''')
option('link-udev-shared', type : 'boolean',
description : 'link systemd-udev and its helpers to libsystemd-shared.so')
-
+ option('link-systemctl-shared', type: 'boolean',
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0005-include-gshadow-only-if-ENABLE_GSHADOW-is-1.patch b/meta/recipes-core/systemd/systemd/0005-include-gshadow-only-if-ENABLE_GSHADOW-is-1.patch
new file mode 100644
index 00000000000..6d5faf5fedb
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0005-include-gshadow-only-if-ENABLE_GSHADOW-is-1.patch
@@ -0,0 +1,29 @@
+From a2c4d46944892174930135672508389a04e191f0 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Fri, 29 Jun 2018 13:53:29 +0800
+Subject: [PATCH 05/19] include gshadow only if ENABLE_GSHADOW is 1
+
+Upstream-Status: Inappropriate [musl]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/basic/user-util.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/basic/user-util.h b/src/basic/user-util.h
+index b74f16885..f9c1e29c4 100644
+--- a/src/basic/user-util.h
++++ b/src/basic/user-util.h
+@@ -2,7 +2,9 @@
+ #pragma once
+
+ #include <grp.h>
++#if ENABLE_GSHADOW
+ #include <gshadow.h>
++#endif
+ #include <pwd.h>
+ #include <shadow.h>
+ #include <stdbool.h>
+--
+2.11.0
+
diff --git a/meta/recipes-core/systemd/systemd/0006-remove-nobody-user-group-checking.patch b/meta/recipes-core/systemd/systemd/0006-remove-nobody-user-group-checking.patch
new file mode 100644
index 00000000000..eb6eb8bfebb
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0006-remove-nobody-user-group-checking.patch
@@ -0,0 +1,63 @@
+From 5199ae5dec9b8a9c9e20477d5090f1732735fbe2 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Thu, 28 Jun 2018 09:38:12 +0800
+Subject: [PATCH 6/9] remove nobody user/group checking
+
+Upstream-Status: Inappropriate [OE Specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ meson.build | 37 -------------------------------------
+ 1 file changed, 37 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 323146fe1..3bb087fef 100644
+--- a/meson.build
++++ b/meson.build
+@@ -681,43 +681,6 @@ substs.set('containeruidbasemax', container_uid_base_max)
+ nobody_user = get_option('nobody-user')
+ nobody_group = get_option('nobody-group')
+
+-getent_result = run_command('getent', 'passwd', '65534')
+-if getent_result.returncode() == 0
+- name = getent_result.stdout().split(':')[0]
+- if name != nobody_user
+- warning('\n' +
+- 'The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
+- 'Your build will result in an user table setup that is incompatible with the local system.')
+- endif
+-endif
+-id_result = run_command('id', '-u', nobody_user)
+-if id_result.returncode() == 0
+- id = id_result.stdout().to_int()
+- if id != 65534
+- warning('\n' +
+- 'The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
+- 'Your build will result in an user table setup that is incompatible with the local system.')
+- endif
+-endif
+-
+-getent_result = run_command('getent', 'group', '65534')
+-if getent_result.returncode() == 0
+- name = getent_result.stdout().split(':')[0]
+- if name != nobody_group
+- warning('\n' +
+- 'The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
+- 'Your build will result in an group table setup that is incompatible with the local system.')
+- endif
+-endif
+-id_result = run_command('id', '-g', nobody_group)
+-if id_result.returncode() == 0
+- id = id_result.stdout().to_int()
+- if id != 65534
+- warning('\n' +
+- 'The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
+- 'Your build will result in an group table setup that is incompatible with the local system.')
+- endif
+-endif
+ if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
+ warning('\n' +
+ 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
+--
+2.11.0
+
diff --git a/meta/recipes-core/systemd/systemd/0014-src-basic-missing.h-check-for-missing-strndupa.patch b/meta/recipes-core/systemd/systemd/0006-src-basic-missing.h-check-for-missing-strndupa.patch
index 9f62cbbe690..107a7943982 100644
--- a/meta/recipes-core/systemd/systemd/0014-src-basic-missing.h-check-for-missing-strndupa.patch
+++ b/meta/recipes-core/systemd/systemd/0006-src-basic-missing.h-check-for-missing-strndupa.patch
@@ -1,11 +1,11 @@
-From 33be9052315cc4ec8e929fa238e1f0cc0161ad07 Mon Sep 17 00:00:00 2001
+From 03fd19fc87573276e0d359260c8fe591f5f0216a Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
-Date: Wed, 28 Feb 2018 21:15:28 -0800
-Subject: [PATCH] src/basic/missing.h: check for missing strndupa
+Date: Fri, 29 Jun 2018 16:34:50 +0800
+Subject: [PATCH 06/19] src/basic/missing.h: check for missing strndupa
include missing.h for definition of strndupa
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [musl specific]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
@@ -13,29 +13,29 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
meson.build | 1 +
src/basic/missing.h | 11 +++++++++++
src/basic/mkdir.c | 1 +
+ src/basic/pager.c | 1 +
src/basic/parse-util.c | 1 +
src/basic/procfs-util.c | 1 +
- src/shared/pager.c | 1 +
src/shared/uid-range.c | 1 +
7 files changed, 17 insertions(+)
diff --git a/meson.build b/meson.build
-index 4eabaafe8..12811b3f3 100644
+index 8c16bc979..a734a295c 100644
--- a/meson.build
+++ b/meson.build
-@@ -525,6 +525,7 @@ foreach ident : [
- ['bpf', '''#include <sys/syscall.h>
+@@ -503,6 +503,7 @@ foreach ident : [
#include <unistd.h>'''],
['explicit_bzero' , '''#include <string.h>'''],
+ ['reallocarray', '''#include <malloc.h>'''],
+ ['strndupa' , '''#include <string.h>'''],
]
have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
diff --git a/src/basic/missing.h b/src/basic/missing.h
-index 84d6d9167..07a8c8364 100644
+index 0e33abb9f..02397f1b6 100644
--- a/src/basic/missing.h
+++ b/src/basic/missing.h
-@@ -1187,6 +1187,17 @@ struct input_mask {
+@@ -1184,6 +1184,17 @@ struct input_mask {
typedef int32_t key_serial_t;
#endif
@@ -54,22 +54,34 @@ index 84d6d9167..07a8c8364 100644
#define KEYCTL_JOIN_SESSION_KEYRING 1
#endif
diff --git a/src/basic/mkdir.c b/src/basic/mkdir.c
-index de4746c86..d51518a5a 100644
+index 6ab1b4422..77c3e0863 100644
--- a/src/basic/mkdir.c
+++ b/src/basic/mkdir.c
-@@ -30,6 +30,7 @@
- #include "path-util.h"
+@@ -13,6 +13,7 @@
#include "stat-util.h"
+ #include "stdio-util.h"
#include "user-util.h"
+#include "missing.h"
- int mkdir_safe_internal(const char *path, mode_t mode, uid_t uid, gid_t gid, bool follow_symlink, mkdir_func_t _mkdir) {
+ 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/pager.c b/src/basic/pager.c
+index f24126111..8223bff02 100644
+--- a/src/basic/pager.c
++++ b/src/basic/pager.c
+@@ -21,6 +21,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "terminal-util.h"
++#include "missing.h"
+
+ static pid_t pager_pid = 0;
+
diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c
-index 2c22753de..97533721d 100644
+index 6becf8587..52576f536 100644
--- a/src/basic/parse-util.c
+++ b/src/basic/parse-util.c
-@@ -33,6 +33,7 @@
+@@ -17,6 +17,7 @@
#include "parse-util.h"
#include "process-util.h"
#include "string-util.h"
@@ -78,10 +90,10 @@ index 2c22753de..97533721d 100644
int parse_boolean(const char *v) {
assert(v);
diff --git a/src/basic/procfs-util.c b/src/basic/procfs-util.c
-index 9bb42cc7b..23bbd9e67 100644
+index a159e344b..ebc427d6b 100644
--- a/src/basic/procfs-util.c
+++ b/src/basic/procfs-util.c
-@@ -9,6 +9,7 @@
+@@ -11,6 +11,7 @@
#include "procfs-util.h"
#include "stdio-util.h"
#include "string-util.h"
@@ -89,23 +101,11 @@ index 9bb42cc7b..23bbd9e67 100644
int procfs_tasks_get_limit(uint64_t *ret) {
_cleanup_free_ char *value = NULL;
-diff --git a/src/shared/pager.c b/src/shared/pager.c
-index 75db3c985..84f06bf7d 100644
---- a/src/shared/pager.c
-+++ b/src/shared/pager.c
-@@ -39,6 +39,7 @@
- #include "string-util.h"
- #include "strv.h"
- #include "terminal-util.h"
-+#include "missing.h"
-
- static pid_t pager_pid = 0;
-
diff --git a/src/shared/uid-range.c b/src/shared/uid-range.c
-index c38b7cc98..8ec6bf08d 100644
+index 434ce6ff4..37093ab7b 100644
--- a/src/shared/uid-range.c
+++ b/src/shared/uid-range.c
-@@ -25,6 +25,7 @@
+@@ -8,6 +8,7 @@
#include "macro.h"
#include "uid-range.h"
#include "user-util.h"
@@ -114,5 +114,5 @@ index c38b7cc98..8ec6bf08d 100644
static bool uid_range_intersect(UidRange *range, uid_t start, uid_t nr) {
assert(range);
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0017-Include-netinet-if_ether.h.patch b/meta/recipes-core/systemd/systemd/0007-Include-netinet-if_ether.h.patch
index a09cfddaa8c..2df8cf95fdf 100644
--- a/meta/recipes-core/systemd/systemd/0017-Include-netinet-if_ether.h.patch
+++ b/meta/recipes-core/systemd/systemd/0007-Include-netinet-if_ether.h.patch
@@ -1,14 +1,14 @@
-From f2b0173cd9807864db1ef3b102abaa76ef37e506 Mon Sep 17 00:00:00 2001
+From aab90d0dfa934d33879eaec1a878e93b201d33f1 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
-Date: Wed, 28 Feb 2018 21:19:12 -0800
-Subject: [PATCH 17/31] Include netinet/if_ether.h
+Date: Fri, 29 Jun 2018 16:44:43 +0800
+Subject: [PATCH 07/19] 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 {
^~~~~~
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [musl specific]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
@@ -17,14 +17,15 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
src/network/netdev/tuntap.c | 1 +
src/network/networkd-brvlan.c | 1 +
src/udev/net/ethtool-util.c | 1 +
+ src/udev/net/ethtool-util.h | 1 +
src/udev/udev-builtin-net_setup_link.c | 1 +
- 5 files changed, 5 insertions(+)
+ 6 files changed, 6 insertions(+)
diff --git a/src/libsystemd/sd-netlink/netlink-types.c b/src/libsystemd/sd-netlink/netlink-types.c
-index 0ee7d6f0d..ef75893a6 100644
+index c93fe9cb4..2013d06e1 100644
--- a/src/libsystemd/sd-netlink/netlink-types.c
+++ b/src/libsystemd/sd-netlink/netlink-types.c
-@@ -21,6 +21,7 @@
+@@ -3,6 +3,7 @@
#include <netinet/in.h>
#include <stdint.h>
#include <sys/socket.h>
@@ -33,10 +34,10 @@ index 0ee7d6f0d..ef75893a6 100644
#include <linux/rtnetlink.h>
#include <linux/genetlink.h>
diff --git a/src/network/netdev/tuntap.c b/src/network/netdev/tuntap.c
-index 4fc9b610a..628c61c57 100644
+index 21fb7ab06..0afe5170c 100644
--- a/src/network/netdev/tuntap.c
+++ b/src/network/netdev/tuntap.c
-@@ -20,6 +20,7 @@
+@@ -2,6 +2,7 @@
#include <errno.h>
#include <fcntl.h>
@@ -45,10 +46,10 @@ index 4fc9b610a..628c61c57 100644
#include <net/if.h>
#include <netinet/if_ether.h>
diff --git a/src/network/networkd-brvlan.c b/src/network/networkd-brvlan.c
-index 99dd41629..90407c9d8 100644
+index 8e8a618e2..52d523a67 100644
--- a/src/network/networkd-brvlan.c
+++ b/src/network/networkd-brvlan.c
-@@ -19,6 +19,7 @@
+@@ -4,6 +4,7 @@
***/
#include <netinet/in.h>
@@ -57,29 +58,39 @@ index 99dd41629..90407c9d8 100644
#include <stdbool.h>
diff --git a/src/udev/net/ethtool-util.c b/src/udev/net/ethtool-util.c
-index 9bdaef8d9..948f89cf8 100644
+index 4bb4216ac..5f7383483 100644
--- a/src/udev/net/ethtool-util.c
+++ b/src/udev/net/ethtool-util.c
-@@ -18,6 +18,7 @@
- along with systemd; If not, see <http://www.gnu.org/licenses/>.
- ***/
+@@ -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/udev/net/ethtool-util.h b/src/udev/net/ethtool-util.h
+index 064bf4d2b..ee0d4fb2a 100644
+--- a/src/udev/net/ethtool-util.h
++++ b/src/udev/net/ethtool-util.h
+@@ -3,6 +3,7 @@
+
+
+ #include <macro.h>
++#include <netinet/if_ether.h>
+ #include <linux/ethtool.h>
+
+ #include "missing.h"
diff --git a/src/udev/udev-builtin-net_setup_link.c b/src/udev/udev-builtin-net_setup_link.c
-index 40158e0af..b24b3fce8 100644
+index 8bed6399a..a3a96959b 100644
--- a/src/udev/udev-builtin-net_setup_link.c
+++ b/src/udev/udev-builtin-net_setup_link.c
-@@ -18,6 +18,7 @@
- along with systemd; If not, see <http://www.gnu.org/licenses/>.
- ***/
+@@ -1,5 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+#include <netinet/if_ether.h>
#include "alloc-util.h"
#include "link-config.h"
#include "log.h"
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0007-Revert-rules-remove-firmware-loading-rules.patch b/meta/recipes-core/systemd/systemd/0007-Revert-rules-remove-firmware-loading-rules.patch
deleted file mode 100644
index bb12d30a41d..00000000000
--- a/meta/recipes-core/systemd/systemd/0007-Revert-rules-remove-firmware-loading-rules.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 35d6d384e83ac38077603611bb791969ef95fe68 Mon Sep 17 00:00:00 2001
-From: Jonathan Liu <net147@gmail.com>
-Date: Thu, 19 Mar 2015 15:01:29 +1100
-Subject: [PATCH 07/31] Revert "rules: remove firmware loading rules"
-
-This reverts commit 70e7d754ddb356fb1a2942b262f8cee9650e2a19.
-Userspace firmware loading support is needed for Linux < 3.7.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Jonathan Liu <net147@gmail.com>
----
- rules/50-firmware.rules | 3 +++
- 1 file changed, 3 insertions(+)
- create mode 100644 rules/50-firmware.rules
-
-diff --git a/rules/50-firmware.rules b/rules/50-firmware.rules
-new file mode 100644
-index 000000000..f0ae68451
---- /dev/null
-+++ b/rules/50-firmware.rules
-@@ -0,0 +1,3 @@
-+# do not edit this file, it will be overwritten on update
-+
-+SUBSYSTEM=="firmware", ACTION=="add", RUN{builtin}="firmware"
---
-2.13.0
-
diff --git a/meta/recipes-core/systemd/systemd/0012-rules-watch-metadata-changes-in-ide-devices.patch b/meta/recipes-core/systemd/systemd/0007-rules-watch-metadata-changes-in-ide-devices.patch
index 720786371c7..a5f65e66bd5 100644
--- a/meta/recipes-core/systemd/systemd/0012-rules-watch-metadata-changes-in-ide-devices.patch
+++ b/meta/recipes-core/systemd/systemd/0007-rules-watch-metadata-changes-in-ide-devices.patch
@@ -1,7 +1,7 @@
-From 406a4c8692316e8c7e14c78f9a802689be304a95 Mon Sep 17 00:00:00 2001
+From 9302b72e5e69512aaa7106197b00c55baeb35b3c Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Fri, 17 Nov 2017 09:46:00 +0800
-Subject: [PATCH 12/31] rules: watch metadata changes in ide devices
+Subject: [PATCH 7/9] 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
@@ -39,5 +39,5 @@ index 343fc06f8..b5237dac4 100644
-ACTION!="remove", SUBSYSTEM=="block", KERNEL=="loop*|nvme*|sd*|vd*|xvd*|pmem*|mmcblk*", OPTIONS+="watch"
+ACTION!="remove", SUBSYSTEM=="block", KERNEL=="loop*|nvme*|sd*|vd*|xvd*|pmem*|mmcblk*|hd*", OPTIONS+="watch"
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0019-Do-not-enable-nss-tests-if-nss-systemd-is-not-enable.patch b/meta/recipes-core/systemd/systemd/0008-Do-not-enable-nss-tests-if-nss-systemd-is-not-enable.patch
index 16b21a06837..abecdc764b7 100644
--- a/meta/recipes-core/systemd/systemd/0019-Do-not-enable-nss-tests-if-nss-systemd-is-not-enable.patch
+++ b/meta/recipes-core/systemd/systemd/0008-Do-not-enable-nss-tests-if-nss-systemd-is-not-enable.patch
@@ -1,7 +1,7 @@
-From f5f313915d78bc43eb96e2aafb8ce3cda304c277 Mon Sep 17 00:00:00 2001
+From b6ba596fd1313a162cdc2eb88161dcf24d19ede7 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 26 Feb 2018 17:27:56 +0800
-Subject: [PATCH 19/31] Do not enable nss tests if nss-systemd is not enabled
+Date: Thu, 28 Jun 2018 10:10:02 +0800
+Subject: [PATCH 8/9] Do not enable nss tests if nss-systemd is not enabled
Upstream-Status: Pending
@@ -12,18 +12,18 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/test/meson.build b/src/test/meson.build
-index 1db8aa107..df3a1f5c5 100644
+index 7da7e3a22..7b7c257ff 100644
--- a/src/test/meson.build
+++ b/src/test/meson.build
-@@ -646,7 +646,7 @@ tests += [
+@@ -645,7 +645,7 @@ tests += [
[['src/test/test-nss.c'],
[],
[libdl],
- '', 'manual'],
+ 'ENABLE_NSS_SYSTEMD', 'manual'],
- ]
- ############################################################
+ [['src/test/test-umount.c',
+ 'src/core/mount-setup.c',
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0008-Revert-udev-remove-userspace-firmware-loading-suppor.patch b/meta/recipes-core/systemd/systemd/0008-Revert-udev-remove-userspace-firmware-loading-suppor.patch
deleted file mode 100644
index 15d7e0290a6..00000000000
--- a/meta/recipes-core/systemd/systemd/0008-Revert-udev-remove-userspace-firmware-loading-suppor.patch
+++ /dev/null
@@ -1,377 +0,0 @@
-From 5cce7626f33e92f624ac06b613125813fb47d445 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Wed, 28 Feb 2018 21:05:39 -0800
-Subject: [PATCH 08/31] Revert "udev: remove userspace firmware loading
- support"
-
-This reverts commit be2ea723b1d023b3d385d3b791ee4607cbfb20ca.
-Userspace firmware loading support is needed for Linux < 3.7.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Jonathan Liu <net147@gmail.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- README | 4 +-
- TODO | 1 +
- meson.build | 9 +++
- meson_options.txt | 2 +
- rules/meson.build | 4 +
- src/udev/meson.build | 4 +
- src/udev/udev-builtin-firmware.c | 154 +++++++++++++++++++++++++++++++++++++++
- src/udev/udev-builtin.c | 3 +
- src/udev/udev.h | 6 ++
- src/udev/udevd.c | 12 +++
- 10 files changed, 197 insertions(+), 2 deletions(-)
- create mode 100644 src/udev/udev-builtin-firmware.c
-
-diff --git a/README b/README
-index 8807e5cfe..bfd7a35de 100644
---- a/README
-+++ b/README
-@@ -58,8 +58,8 @@ REQUIREMENTS:
- Legacy hotplug slows down the system and confuses udev:
- CONFIG_UEVENT_HELPER_PATH=""
-
-- Userspace firmware loading is not supported and should
-- be disabled in the kernel:
-+ Userspace firmware loading is deprecated, will go away, and
-+ sometimes causes problems:
- CONFIG_FW_LOADER_USER_HELPER=n
-
- Some udev rules and virtualization detection relies on it:
-diff --git a/TODO b/TODO
-index a77028c7b..39e72d7ec 100644
---- a/TODO
-+++ b/TODO
-@@ -783,6 +783,7 @@ Features:
- * initialize the hostname from the fs label of /, if /etc/hostname does not exist?
-
- * udev:
-+ - remove src/udev/udev-builtin-firmware.c (CONFIG_FW_LOADER_USER_HELPER=n)
- - move to LGPL
- - kill scsi_id
- - add trigger --subsystem-match=usb/usb_device device
-diff --git a/meson.build b/meson.build
-index 918101d6b..9c25022a4 100644
---- a/meson.build
-+++ b/meson.build
-@@ -72,6 +72,12 @@ conf.set10('HAVE_SYSV_COMPAT', have,
- description : 'SysV init scripts and rcN.d links are supported')
- m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
-
-+firmware_path = get_option('firmware-path')
-+have = firmware_path != ''
-+conf.set10('HAVE_FIRMWARE', have,
-+ description : 'Userspace firmware loading is supported')
-+m4_defines += have ? ['-DHAVE_FIRMWARE'] : []
-+
- # join_paths ignore the preceding arguments if an absolute component is
- # encountered, so this should canonicalize various paths when they are
- # absolute or relative.
-@@ -178,6 +184,7 @@ conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysc
- conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
- conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
- conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
-+conf.set_quoted('FIRMWARE_PATH', firmware_path)
- conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
- conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
- conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
-@@ -258,6 +265,7 @@ substs.set('SYSTEMCTL', join_paths(rootbin
- substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
- substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
- substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
-+substs.set('FIRMWARE_PATH', firmware_path)
- substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
- substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
-
-@@ -2715,6 +2723,7 @@ status = [
- 'roothome directory: @0@'.format(roothomedir),
- 'SysV init scripts: @0@'.format(sysvinit_path),
- 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
-+ 'firmware path: @0@'.format(firmware_path),
- 'PAM modules directory: @0@'.format(pamlibdir),
- 'PAM configuration directory: @0@'.format(pamconfdir),
- 'RPM macros directory: @0@'.format(rpmmacrosdir),
-diff --git a/meson_options.txt b/meson_options.txt
-index 0b24f0e0f..92d25fa35 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -108,6 +108,8 @@ option('tmpfiles', type : 'boolean',
- description : 'support for tmpfiles.d')
- option('importd', type : 'combo', choices : ['auto', 'true', 'false'],
- description : 'install the systemd-importd daemon')
-+option('firmware-path', type : 'string', value : '',
-+ description : 'Firmware search path')
- option('hwdb', type : 'boolean',
- description : 'support for the hardware database')
- option('rfkill', type : 'boolean',
-diff --git a/rules/meson.build b/rules/meson.build
-index e253b9f59..5eee5fbca 100644
---- a/rules/meson.build
-+++ b/rules/meson.build
-@@ -41,6 +41,10 @@ rules = files('''
- install_data(rules,
- install_dir : udevrulesdir)
-
-+if conf.get('HAVE_FIRMWARE') == 1
-+ install_data('50-firmware.rules', install_dir : udevrulesdir)
-+endif
-+
- all_rules = rules
-
- rules_in = '''
-diff --git a/src/udev/meson.build b/src/udev/meson.build
-index de2fd2d9c..b6b0ca006 100644
---- a/src/udev/meson.build
-+++ b/src/udev/meson.build
-@@ -67,6 +67,10 @@ if conf.get('HAVE_ACL') == 1
- sd_login_c]
- endif
-
-+if conf.get('HAVE_FIRMWARE') == 1
-+ libudev_core_sources += ['udev-builtin-firmware.c']
-+endif
-+
- ############################################################
-
- generate_keyboard_keys_list = find_program('generate-keyboard-keys-list.sh')
-diff --git a/src/udev/udev-builtin-firmware.c b/src/udev/udev-builtin-firmware.c
-new file mode 100644
-index 000000000..bd8c2fb96
---- /dev/null
-+++ b/src/udev/udev-builtin-firmware.c
-@@ -0,0 +1,154 @@
-+/*
-+ * firmware - Kernel firmware loader
-+ *
-+ * Copyright (C) 2009 Piter Punk <piterpunk@slackware.com>
-+ * Copyright (C) 2009-2011 Kay Sievers <kay@vrfy.org>
-+ *
-+ * This program is free software; you can 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:*
-+ */
-+
-+#include <unistd.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <stdio.h>
-+#include <getopt.h>
-+#include <errno.h>
-+#include <stdbool.h>
-+#include <sys/utsname.h>
-+#include <sys/stat.h>
-+
-+#include "udev.h"
-+
-+static bool set_loading(struct udev *udev, char *loadpath, const char *state) {
-+ FILE *ldfile;
-+
-+ ldfile = fopen(loadpath, "we");
-+ if (ldfile == NULL) {
-+ log_error("error: can not open '%s'", loadpath);
-+ return false;
-+ };
-+ fprintf(ldfile, "%s\n", state);
-+ fclose(ldfile);
-+ return true;
-+}
-+
-+static bool copy_firmware(struct udev *udev, const char *source, const char *target, size_t size) {
-+ char *buf;
-+ FILE *fsource = NULL, *ftarget = NULL;
-+ bool ret = false;
-+
-+ buf = malloc(size);
-+ if (buf == NULL) {
-+ log_error("No memory available to load firmware file");
-+ return false;
-+ }
-+
-+ log_debug("writing '%s' (%zi) to '%s'", source, size, target);
-+
-+ fsource = fopen(source, "re");
-+ if (fsource == NULL)
-+ goto exit;
-+ ftarget = fopen(target, "we");
-+ if (ftarget == NULL)
-+ goto exit;
-+ if (fread(buf, size, 1, fsource) != 1)
-+ goto exit;
-+ if (fwrite(buf, size, 1, ftarget) == 1)
-+ ret = true;
-+exit:
-+ if (ftarget != NULL)
-+ fclose(ftarget);
-+ if (fsource != NULL)
-+ fclose(fsource);
-+ free(buf);
-+ return ret;
-+}
-+
-+static int builtin_firmware(struct udev_device *dev, int argc, char *argv[], bool test) {
-+ struct udev *udev = udev_device_get_udev(dev);
-+ static const char *searchpath[] = { FIRMWARE_PATH };
-+ char loadpath[UTIL_PATH_SIZE];
-+ char datapath[UTIL_PATH_SIZE];
-+ char fwpath[UTIL_PATH_SIZE];
-+ const char *firmware;
-+ FILE *fwfile = NULL;
-+ struct utsname kernel;
-+ struct stat statbuf;
-+ unsigned int i;
-+ int rc = EXIT_SUCCESS;
-+
-+ firmware = udev_device_get_property_value(dev, "FIRMWARE");
-+ if (firmware == NULL) {
-+ log_error("firmware parameter missing");
-+ rc = EXIT_FAILURE;
-+ goto exit;
-+ }
-+
-+ /* lookup firmware file */
-+ uname(&kernel);
-+ for (i = 0; i < ELEMENTSOF(searchpath); i++) {
-+ strscpyl(fwpath, sizeof(fwpath), searchpath[i], kernel.release, "/", firmware, NULL);
-+ fwfile = fopen(fwpath, "re");
-+ if (fwfile != NULL)
-+ break;
-+
-+ strscpyl(fwpath, sizeof(fwpath), searchpath[i], firmware, NULL);
-+ fwfile = fopen(fwpath, "re");
-+ if (fwfile != NULL)
-+ break;
-+ }
-+
-+ strscpyl(loadpath, sizeof(loadpath), udev_device_get_syspath(dev), "/loading", NULL);
-+
-+ if (fwfile == NULL) {
-+ log_debug("did not find firmware file '%s'", firmware);
-+ rc = EXIT_FAILURE;
-+ /*
-+ * Do not cancel the request in the initrd, the real root might have
-+ * the firmware file and the 'coldplug' run in the real root will find
-+ * this pending request and fulfill or cancel it.
-+ * */
-+ if (!in_initrd())
-+ set_loading(udev, loadpath, "-1");
-+ goto exit;
-+ }
-+
-+ if (stat(fwpath, &statbuf) < 0 || statbuf.st_size == 0) {
-+ if (!in_initrd())
-+ set_loading(udev, loadpath, "-1");
-+ rc = EXIT_FAILURE;
-+ goto exit;
-+ }
-+
-+ if (!set_loading(udev, loadpath, "1"))
-+ goto exit;
-+
-+ strscpyl(datapath, sizeof(datapath), udev_device_get_syspath(dev), "/data", NULL);
-+ if (!copy_firmware(udev, fwpath, datapath, statbuf.st_size)) {
-+ log_error("error sending firmware '%s' to device", firmware);
-+ set_loading(udev, loadpath, "-1");
-+ rc = EXIT_FAILURE;
-+ goto exit;
-+ };
-+
-+ set_loading(udev, loadpath, "0");
-+exit:
-+ if (fwfile)
-+ fclose(fwfile);
-+ return rc;
-+}
-+
-+const struct udev_builtin udev_builtin_firmware = {
-+ .name = "firmware",
-+ .cmd = builtin_firmware,
-+ .help = "kernel firmware loader",
-+ .run_once = true,
-+};
-diff --git a/src/udev/udev-builtin.c b/src/udev/udev-builtin.c
-index db2b6874f..ccd88638c 100644
---- a/src/udev/udev-builtin.c
-+++ b/src/udev/udev-builtin.c
-@@ -32,6 +32,9 @@ static const struct udev_builtin *builtins[] = {
- [UDEV_BUILTIN_BLKID] = &udev_builtin_blkid,
- #endif
- [UDEV_BUILTIN_BTRFS] = &udev_builtin_btrfs,
-+#if HAVE_FIRMWARE
-+ [UDEV_BUILTIN_FIRMWARE] = &udev_builtin_firmware,
-+#endif
- [UDEV_BUILTIN_HWDB] = &udev_builtin_hwdb,
- [UDEV_BUILTIN_INPUT_ID] = &udev_builtin_input_id,
- [UDEV_BUILTIN_KEYBOARD] = &udev_builtin_keyboard,
-diff --git a/src/udev/udev.h b/src/udev/udev.h
-index ea11c2d29..c47dd3d88 100644
---- a/src/udev/udev.h
-+++ b/src/udev/udev.h
-@@ -151,6 +151,9 @@ enum udev_builtin_cmd {
- UDEV_BUILTIN_BLKID,
- #endif
- UDEV_BUILTIN_BTRFS,
-+#if HAVE_FIRMWARE
-+ UDEV_BUILTIN_FIRMWARE,
-+#endif
- UDEV_BUILTIN_HWDB,
- UDEV_BUILTIN_INPUT_ID,
- UDEV_BUILTIN_KEYBOARD,
-@@ -179,6 +182,9 @@ struct udev_builtin {
- extern const struct udev_builtin udev_builtin_blkid;
- #endif
- extern const struct udev_builtin udev_builtin_btrfs;
-+#if HAVE_FIRMWARE
-+extern const struct udev_builtin udev_builtin_firmware;
-+#endif
- extern const struct udev_builtin udev_builtin_hwdb;
- extern const struct udev_builtin udev_builtin_input_id;
- extern const struct udev_builtin udev_builtin_keyboard;
-diff --git a/src/udev/udevd.c b/src/udev/udevd.c
-index 5c757d513..2f3313007 100644
---- a/src/udev/udevd.c
-+++ b/src/udev/udevd.c
-@@ -127,6 +127,9 @@ struct event {
- bool is_block;
- sd_event_source *timeout_warning;
- sd_event_source *timeout;
-+#if HAVE_FIRMWARE
-+ bool nodelay;
-+#endif
- };
-
- static void event_queue_cleanup(Manager *manager, enum event_state type);
-@@ -609,6 +612,10 @@ static int event_queue_insert(Manager *manager, struct udev_device *dev) {
- event->devnum = udev_device_get_devnum(dev);
- event->is_block = streq("block", udev_device_get_subsystem(dev));
- event->ifindex = udev_device_get_ifindex(dev);
-+#if HAVE_FIRMWARE
-+ if (streq(udev_device_get_subsystem(dev), "firmware"))
-+ event->nodelay = true;
-+#endif
-
- log_debug("seq %llu queued, '%s' '%s'", udev_device_get_seqnum(dev),
- udev_device_get_action(dev), udev_device_get_subsystem(dev));
-@@ -692,6 +699,11 @@ static bool is_devpath_busy(Manager *manager, struct event *event) {
- return true;
- }
-
-+#if HAVE_FIRMWARE
-+ /* allow to bypass the dependency tracking */
-+ if (event->nodelay)
-+ continue;
-+#endif
- /* parent device event found */
- if (event->devpath[common] == '/') {
- event->delaying_seqnum = loop_event->seqnum;
---
-2.13.0
-
diff --git a/meta/recipes-core/systemd/systemd/0015-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch b/meta/recipes-core/systemd/systemd/0008-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
index 450947667b3..bee5fb65119 100644
--- a/meta/recipes-core/systemd/systemd/0015-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
+++ b/meta/recipes-core/systemd/systemd/0008-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
@@ -1,7 +1,7 @@
-From b45cf4923c7e1f1165925e9b4d7db2108faf2eae Mon Sep 17 00:00:00 2001
-From: Emil Renner Berthing <systemd@esmil.dk>
-Date: Mon, 23 Oct 2017 10:50:14 -0700
-Subject: [PATCH 15/31] don't fail if GLOB_BRACE and GLOB_ALTDIRFUNC is not
+From 848e711d719a6d987bc7d14183e1c7b1f1c91c56 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Fri, 29 Jun 2018 17:10:29 +0800
+Subject: [PATCH 08/19] don't fail if GLOB_BRACE and GLOB_ALTDIRFUNC is not
defined
If the standard library doesn't provide brace
@@ -11,20 +11,21 @@ Dont use GNU GLOB extentions on non-glibc systems
Conditionalize use of GLOB_ALTDIRFUNC
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [musl specific]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
- src/basic/glob-util.c | 20 +++++++++++++++++---
- src/test/test-glob-util.c | 17 +++++++++++++++--
- src/tmpfiles/tmpfiles.c | 8 ++++++++
- 3 files changed, 40 insertions(+), 5 deletions(-)
+ src/basic/glob-util.c | 13 +++++++++++--
+ src/test/test-glob-util.c | 15 +++++++++++++++
+ src/tmpfiles/tmpfiles.c | 10 ++++++++++
+ 3 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/src/basic/glob-util.c b/src/basic/glob-util.c
-index 6e80a1e23..312bb3fd1 100644
+index 9fac676f2..8adb9559e 100644
--- a/src/basic/glob-util.c
+++ b/src/basic/glob-util.c
-@@ -28,13 +28,18 @@
+@@ -10,6 +10,11 @@
#include "macro.h"
#include "path-util.h"
#include "strv.h"
@@ -34,17 +35,17 @@ index 6e80a1e23..312bb3fd1 100644
+#define GLOB_BRACE 0
+#endif
+ static void closedir_wrapper(void* v) {
+ (void) closedir(v);
+@@ -18,6 +23,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));
--
- if (!pglob->gl_closedir)
- pglob->gl_closedir = (void (*)(void *)) closedir;
- if (!pglob->gl_readdir)
-@@ -45,10 +50,13 @@ int safe_glob(const char *path, int flags, glob_t *pglob) {
+
+@@ -31,10 +37,13 @@ int safe_glob(const char *path, int flags, glob_t *pglob) {
pglob->gl_lstat = lstat;
if (!pglob->gl_stat)
pglob->gl_stat = stat;
@@ -60,24 +61,11 @@ index 6e80a1e23..312bb3fd1 100644
if (k == GLOB_NOMATCH)
return -ENOENT;
if (k == GLOB_NOSPACE)
-@@ -61,6 +69,12 @@ int safe_glob(const char *path, int flags, glob_t *pglob) {
- return 0;
- }
-
-+/* Don't fail if the standard library
-+ * doesn't provide brace expansion */
-+#ifndef GLOB_BRACE
-+#define GLOB_BRACE 0
-+#endif
-+
- int glob_exists(const char *path) {
- _cleanup_globfree_ glob_t g = {};
- int k;
diff --git a/src/test/test-glob-util.c b/src/test/test-glob-util.c
-index bd2f8fcfd..a10c77427 100644
+index d78d6223c..f5943b26d 100644
--- a/src/test/test-glob-util.c
+++ b/src/test/test-glob-util.c
-@@ -30,6 +30,11 @@
+@@ -12,6 +12,11 @@
#include "glob-util.h"
#include "macro.h"
#include "rm-rf.h"
@@ -89,23 +77,21 @@ index bd2f8fcfd..a10c77427 100644
static void test_glob_exists(void) {
char name[] = "/tmp/test-glob_exists.XXXXXX";
-@@ -52,25 +57,33 @@ static void test_glob_exists(void) {
- static void test_glob_no_dot(void) {
- char template[] = "/tmp/test-glob-util.XXXXXXX";
+@@ -40,11 +45,13 @@ static void test_glob_no_dot(void) {
const char *fn;
--
+
_cleanup_globfree_ glob_t g = {
+#ifdef GLOB_ALTDIRFUNC
- .gl_closedir = (void (*)(void *)) closedir,
+ .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;
+ int r;
+@@ -52,11 +59,19 @@ static void test_glob_no_dot(void) {
assert_se(mkdtemp(template));
fn = strjoina(template, "/*");
@@ -126,25 +112,35 @@ index bd2f8fcfd..a10c77427 100644
(void) rm_rf(template, REMOVE_ROOT|REMOVE_PHYSICAL);
diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
-index 38cbb739c..88cc543f0 100644
+index 927de35f3..5f0283da5 100644
--- a/src/tmpfiles/tmpfiles.c
+++ b/src/tmpfiles/tmpfiles.c
-@@ -76,6 +76,12 @@
- #include "umask-util.h"
+@@ -60,6 +60,12 @@
#include "user-util.h"
#include "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
-@@ -1288,7 +1294,9 @@ static int item_do_children(Item *i, const char *path, action_t action) {
+ * properly owned directories beneath /tmp, /var/tmp, /run, which are
+@@ -1345,7 +1351,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;
+@@ -1365,7 +1373,9 @@ static int glob_item(Item *i, action_t action) {
- static int glob_item(Item *i, action_t action, bool recursive) {
+ 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,
@@ -153,5 +149,5 @@ index 38cbb739c..88cc543f0 100644
int r = 0, k;
char **fn;
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0028-add-missing-FTW_-macros-for-musl.patch b/meta/recipes-core/systemd/systemd/0009-add-missing-FTW_-macros-for-musl.patch
index 9ec3137b09c..95287cce10e 100644
--- a/meta/recipes-core/systemd/systemd/0028-add-missing-FTW_-macros-for-musl.patch
+++ b/meta/recipes-core/systemd/systemd/0009-add-missing-FTW_-macros-for-musl.patch
@@ -1,13 +1,13 @@
-From 03cdd33be62db4c72a7fcf21b61d0d056c23c6a9 Mon Sep 17 00:00:00 2001
+From acc2c08082795802011e3c5f8626d63210021489 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
Date: Wed, 28 Feb 2018 21:36:32 -0800
-Subject: [PATCH 28/31] add missing FTW_ macros for musl
+Subject: [PATCH 09/19] add missing FTW_ macros for musl
This is to avoid build failures like below for musl.
locale-util.c:296:24: error: 'FTW_STOP' undeclared
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [musl specific]
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
@@ -15,10 +15,10 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
1 file changed, 20 insertions(+)
diff --git a/src/basic/missing.h b/src/basic/missing.h
-index 1aee3346a..5b9fde692 100644
+index 02397f1b6..6dc750eba 100644
--- a/src/basic/missing.h
+++ b/src/basic/missing.h
-@@ -207,6 +207,26 @@ struct sockaddr_vm {
+@@ -189,6 +189,26 @@ struct sockaddr_vm {
#define BTRFS_QGROUP_LEVEL_SHIFT 48
#endif
@@ -46,5 +46,5 @@ index 1aee3346a..5b9fde692 100644
#define BTRFS_IOC_QGROUP_ASSIGN _IOW(BTRFS_IOCTL_MAGIC, 41, \
struct btrfs_ioctl_qgroup_assign_args)
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0029-nss-mymachines-Build-conditionally-when-ENABLE_MYHOS.patch b/meta/recipes-core/systemd/systemd/0009-nss-mymachines-Build-conditionally-when-ENABLE_MYHOS.patch
index 517249f434a..a635fa91d8a 100644
--- a/meta/recipes-core/systemd/systemd/0029-nss-mymachines-Build-conditionally-when-ENABLE_MYHOS.patch
+++ b/meta/recipes-core/systemd/systemd/0009-nss-mymachines-Build-conditionally-when-ENABLE_MYHOS.patch
@@ -1,7 +1,7 @@
-From 5845c82d1016a3e3f2696180d5ac91b46950540a Mon Sep 17 00:00:00 2001
+From f9625b5f3fd5dac3f3591dbeeb24dc9d6fda790d Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
Date: Tue, 27 Feb 2018 12:56:21 +0800
-Subject: [PATCH 29/31] nss-mymachines: Build conditionally when
+Subject: [PATCH 9/9] nss-mymachines: Build conditionally when
ENABLE_MYHOSTNAME is set
Fixes build failures when building with --disable-myhostname
@@ -15,10 +15,10 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/meson.build b/meson.build
-index 1b947adac..1ed4dde72 100644
+index 3bb087fef..73bd70b0b 100644
--- a/meson.build
+++ b/meson.build
-@@ -1351,12 +1351,15 @@ test_dlopen = executable(
+@@ -1371,12 +1371,15 @@ test_dlopen = executable(
link_with : [libbasic],
dependencies : [libdl])
@@ -39,5 +39,5 @@ index 1b947adac..1ed4dde72 100644
module = tuple[0]
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0009-remove-duplicate-include-uchar.h.patch b/meta/recipes-core/systemd/systemd/0009-remove-duplicate-include-uchar.h.patch
deleted file mode 100644
index 1b14369ce29..00000000000
--- a/meta/recipes-core/systemd/systemd/0009-remove-duplicate-include-uchar.h.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From ffdf9cb6ba0d932b81933d824f23a878c313a8d4 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 22 Feb 2016 05:59:01 +0000
-Subject: [PATCH 09/31] remove duplicate include uchar.h
-
-missing.h already includes it
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
----
- src/basic/escape.h | 1 -
- src/basic/utf8.h | 1 -
- 2 files changed, 2 deletions(-)
-
-diff --git a/src/basic/escape.h b/src/basic/escape.h
-index de89f43a8..9921ccbbd 100644
---- a/src/basic/escape.h
-+++ b/src/basic/escape.h
-@@ -24,7 +24,6 @@
- #include <stddef.h>
- #include <stdint.h>
- #include <sys/types.h>
--#include <uchar.h>
-
- #include "string-util.h"
- #include "missing.h"
-diff --git a/src/basic/utf8.h b/src/basic/utf8.h
-index b0a7485ae..fa06d2906 100644
---- a/src/basic/utf8.h
-+++ b/src/basic/utf8.h
-@@ -23,7 +23,6 @@
- #include <stdbool.h>
- #include <stddef.h>
- #include <stdint.h>
--#include <uchar.h>
-
- #include "macro.h"
- #include "missing.h"
---
-2.13.0
-
diff --git a/meta/recipes-core/systemd/systemd/0010-check-for-uchar.h-in-meson.build.patch b/meta/recipes-core/systemd/systemd/0010-check-for-uchar.h-in-meson.build.patch
deleted file mode 100644
index 9a44b5484b0..00000000000
--- a/meta/recipes-core/systemd/systemd/0010-check-for-uchar.h-in-meson.build.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From ea4caaa1c6a6dc682bb04548ab05c5c73d0b45d6 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 26 Feb 2018 15:34:52 +0800
-Subject: [PATCH 10/31] check for uchar.h in meson.build
-
-Use #if HAVE_UCHAR_H to include uchar.h conditionally.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- meson.build | 1 +
- src/basic/missing.h | 2 ++
- 2 files changed, 3 insertions(+)
-
-diff --git a/meson.build b/meson.build
-index 9c25022a4..94a16712b 100644
---- a/meson.build
-+++ b/meson.build
-@@ -623,6 +623,7 @@ foreach header : ['crypt.h',
- 'sys/auxv.h',
- 'valgrind/memcheck.h',
- 'valgrind/valgrind.h',
-+ 'uchar.h',
- ]
-
- conf.set10('HAVE_' + header.underscorify().to_upper(),
-diff --git a/src/basic/missing.h b/src/basic/missing.h
-index 39c1fb700..84d6d9167 100644
---- a/src/basic/missing.h
-+++ b/src/basic/missing.h
-@@ -38,7 +38,9 @@
- #include <sys/resource.h>
- #include <sys/socket.h>
- #include <sys/syscall.h>
-+#if HAVE_UCHAR_H
- #include <uchar.h>
-+#endif
- #include <unistd.h>
-
- #if HAVE_AUDIT
---
-2.13.0
-
diff --git a/meta/recipes-core/systemd/systemd/0011-socket-util-don-t-fail-if-libc-doesn-t-support-IDN.patch b/meta/recipes-core/systemd/systemd/0010-socket-util-don-t-fail-if-libc-doesn-t-support-IDN.patch
index b0923d15f81..16547981d26 100644
--- a/meta/recipes-core/systemd/systemd/0011-socket-util-don-t-fail-if-libc-doesn-t-support-IDN.patch
+++ b/meta/recipes-core/systemd/systemd/0010-socket-util-don-t-fail-if-libc-doesn-t-support-IDN.patch
@@ -1,23 +1,22 @@
-From 60dd411e9756fc2b14c0e061ad803782b4aee874 Mon Sep 17 00:00:00 2001
+From a0bd587300744dbb8e9cfbb043233670ce781c98 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 26 Feb 2018 15:46:05 +0800
-Subject: [PATCH 11/31] socket-util: don't fail if libc doesn't support IDN
+Date: Mon, 2 Jul 2018 13:22:41 +0800
+Subject: [PATCH 10/19] socket-util: don't fail if libc doesn't support IDN
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [musl specific]
Signed-off-by: Emil Renner Berthing <systemd@esmil.dk>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
src/basic/socket-util.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c
-index 2c70cade1..67aedadd4 100644
+index a913102e1..0d0154805 100644
--- a/src/basic/socket-util.c
+++ b/src/basic/socket-util.c
-@@ -50,6 +50,16 @@
+@@ -32,6 +32,16 @@
#include "utf8.h"
#include "util.h"
@@ -32,8 +31,8 @@ index 2c70cade1..67aedadd4 100644
+#endif
+
#if ENABLE_IDN
- # define IDN_FLAGS (NI_IDN|NI_IDN_USE_STD3_ASCII_RULES)
+ # define IDN_FLAGS NI_IDN
#else
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0016-src-basic-missing.h-check-for-missing-__compar_fn_t-.patch b/meta/recipes-core/systemd/systemd/0011-src-basic-missing.h-check-for-missing-__compar_fn_t-.patch
index 53037ea6d71..1a22ffd9e98 100644
--- a/meta/recipes-core/systemd/systemd/0016-src-basic-missing.h-check-for-missing-__compar_fn_t-.patch
+++ b/meta/recipes-core/systemd/systemd/0011-src-basic-missing.h-check-for-missing-__compar_fn_t-.patch
@@ -1,24 +1,25 @@
-From efc57856f961c1f3bf016c511c53d990db8abdff Mon Sep 17 00:00:00 2001
-From: Emil Renner Berthing <systemd@esmil.dk>
-Date: Mon, 23 Oct 2017 11:31:03 -0700
-Subject: [PATCH 16/31] src/basic/missing.h: check for missing __compar_fn_t
+From 045f205fd21e5e380edf813de04fcfbf5a487219 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 2 Jul 2018 13:28:25 +0800
+Subject: [PATCH 11/19] src/basic/missing.h: check for missing __compar_fn_t
typedef
include missing.h for missing __compar_fn_t
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [musl specific]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
src/basic/missing.h | 5 +++++
src/basic/strbuf.c | 1 +
2 files changed, 6 insertions(+)
diff --git a/src/basic/missing.h b/src/basic/missing.h
-index 07a8c8364..1aee3346a 100644
+index 6dc750eba..cd1cc109f 100644
--- a/src/basic/missing.h
+++ b/src/basic/missing.h
-@@ -1162,6 +1162,11 @@ struct input_mask {
+@@ -1179,6 +1179,11 @@ struct input_mask {
#define RENAME_NOREPLACE (1 << 0)
#endif
@@ -31,17 +32,17 @@ index 07a8c8364..1aee3346a 100644
#define KCMP_FILE 0
#endif
diff --git a/src/basic/strbuf.c b/src/basic/strbuf.c
-index 8befffa66..bcb860f95 100644
+index e2ed776a0..4d3ebec4c 100644
--- a/src/basic/strbuf.c
+++ b/src/basic/strbuf.c
-@@ -24,6 +24,7 @@
-
+@@ -7,6 +7,7 @@
#include "alloc-util.h"
#include "strbuf.h"
+ #include "util.h"
+#include "missing.h"
/*
* Strbuf stores given strings in a single continuous allocated memory
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0030-fix-missing-of-__register_atfork-for-non-glibc-build.patch b/meta/recipes-core/systemd/systemd/0012-fix-missing-of-__register_atfork-for-non-glibc-build.patch
index 7f0b4bf818e..d41bc4a0da8 100644
--- a/meta/recipes-core/systemd/systemd/0030-fix-missing-of-__register_atfork-for-non-glibc-build.patch
+++ b/meta/recipes-core/systemd/systemd/0012-fix-missing-of-__register_atfork-for-non-glibc-build.patch
@@ -1,9 +1,9 @@
-From b7eacdf0388f930fc5271bdecfa46612c71dd65c Mon Sep 17 00:00:00 2001
+From 1fadf805cb391e3bcbd9a0286a9e4b7adb9e7427 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
-Date: Tue, 27 Feb 2018 13:27:47 +0800
-Subject: [PATCH 30/31] fix missing of __register_atfork for non-glibc builds
+Date: Mon, 2 Jul 2018 13:34:09 +0800
+Subject: [PATCH 12/19] fix missing of __register_atfork for non-glibc builds
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [musl specific]
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
@@ -11,10 +11,10 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
1 file changed, 7 insertions(+)
diff --git a/src/basic/process-util.c b/src/basic/process-util.c
-index dc7c9ef9e..85ce8a0cc 100644
+index 0a4f917cb..3543bc045 100644
--- a/src/basic/process-util.c
+++ b/src/basic/process-util.c
-@@ -39,6 +39,9 @@
+@@ -22,6 +22,9 @@
#if HAVE_VALGRIND_VALGRIND_H
#include <valgrind/valgrind.h>
#endif
@@ -24,7 +24,7 @@ index dc7c9ef9e..85ce8a0cc 100644
#include "alloc-util.h"
#include "architecture.h"
-@@ -1112,11 +1115,15 @@ void reset_cached_pid(void) {
+@@ -1150,11 +1153,15 @@ void reset_cached_pid(void) {
cached_pid = CACHED_PID_UNSET;
}
@@ -39,7 +39,7 @@ index dc7c9ef9e..85ce8a0cc 100644
+#endif
pid_t getpid_cached(void) {
- pid_t current_value;
+ static bool installed = false;
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0026-Use-uintmax_t-for-handling-rlim_t.patch b/meta/recipes-core/systemd/systemd/0013-Use-uintmax_t-for-handling-rlim_t.patch
index 46d75ada75f..69b3c151216 100644
--- a/meta/recipes-core/systemd/systemd/0026-Use-uintmax_t-for-handling-rlim_t.patch
+++ b/meta/recipes-core/systemd/systemd/0013-Use-uintmax_t-for-handling-rlim_t.patch
@@ -1,7 +1,7 @@
-From 88c48ea84db6fda19dfaeb64545fccf8fa0525ec Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 27 Oct 2017 13:00:41 -0700
-Subject: [PATCH 26/31] Use uintmax_t for handling rlim_t
+From a0ac0cfd90af6431c64d1b276f422a2092d569b3 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 2 Jul 2018 13:44:21 +0800
+Subject: [PATCH 13/19] 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
@@ -15,9 +15,10 @@ execute.c:3446:36: error: format '%lu' expects argument of type 'long unsigned i
| prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max);
| ~~~~~~~~~~~~~~~~~~~~~~
-Upstream-Status: Submitted [https://github.com/systemd/systemd/pull/7199]
+Upstream-Status: Denied [https://github.com/systemd/systemd/pull/7199]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
src/basic/format-util.h | 8 --------
src/basic/rlimit-util.c | 8 ++++----
@@ -25,10 +26,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
3 files changed, 8 insertions(+), 16 deletions(-)
diff --git a/src/basic/format-util.h b/src/basic/format-util.h
-index d9a78f781..9a1bc21d7 100644
+index 160550cd6..61245d1e3 100644
--- a/src/basic/format-util.h
+++ b/src/basic/format-util.h
-@@ -61,14 +61,6 @@
+@@ -43,14 +43,6 @@
# define PRI_TIMEX "li"
#endif
@@ -44,10 +45,10 @@ index d9a78f781..9a1bc21d7 100644
# define DEV_FMT "%" PRIu64
#elif SIZEOF_DEV_T == 4
diff --git a/src/basic/rlimit-util.c b/src/basic/rlimit-util.c
-index 00648211d..df3d9ecc1 100644
+index be1ba615e..e328ce499 100644
--- a/src/basic/rlimit-util.c
+++ b/src/basic/rlimit-util.c
-@@ -286,13 +286,13 @@ int rlimit_format(const struct rlimit *rl, char **ret) {
+@@ -299,13 +299,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)
@@ -66,24 +67,24 @@ index 00648211d..df3d9ecc1 100644
if (!s)
return -ENOMEM;
diff --git a/src/core/execute.c b/src/core/execute.c
-index 0df3971df..aabdddb68 100644
+index 8ac69d1a0..efedf3842 100644
--- a/src/core/execute.c
+++ b/src/core/execute.c
-@@ -3991,10 +3991,10 @@ void exec_context_dump(ExecContext *c, FILE* f, const char *prefix) {
+@@ -3976,10 +3976,10 @@ 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, "%s%s: " RLIM_FMT "\n",
+- fprintf(f, "Limit%s%s: " RLIM_FMT "\n",
- prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max);
-- fprintf(f, "%s%sSoft: " RLIM_FMT "\n",
+- fprintf(f, "Limit%s%sSoft: " RLIM_FMT "\n",
- prefix, rlimit_to_string(i), c->rlimit[i]->rlim_cur);
-+ fprintf(f, "%s%s: %ju\n",
++ fprintf(f, "Limit%s%s: %ju\n",
+ prefix, rlimit_to_string(i), (uintmax_t)c->rlimit[i]->rlim_max);
-+ fprintf(f, "%s%sSoft: %ju\n",
++ fprintf(f, "Limit%s%sSoft: %ju\n",
+ prefix, rlimit_to_string(i), (uintmax_t)c->rlimit[i]->rlim_cur);
}
if (c->ioprio_set) {
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0031-fix-missing-ULONG_LONG_MAX-definition-in-case-of-mus.patch b/meta/recipes-core/systemd/systemd/0014-fix-missing-ULONG_LONG_MAX-definition-in-case-of-mus.patch
index 319c4b65fc7..258a631cad8 100644
--- a/meta/recipes-core/systemd/systemd/0031-fix-missing-ULONG_LONG_MAX-definition-in-case-of-mus.patch
+++ b/meta/recipes-core/systemd/systemd/0014-fix-missing-ULONG_LONG_MAX-definition-in-case-of-mus.patch
@@ -1,9 +1,9 @@
-From adcd7e426fcd80e754274a730221d1a1f49dbc21 Mon Sep 17 00:00:00 2001
+From cb59b3af54fb3bbd4d8264fef919810af8d08d16 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
Date: Tue, 27 Feb 2018 14:01:30 +0800
-Subject: [PATCH 31/31] fix missing ULONG_LONG_MAX definition in case of musl
+Subject: [PATCH 14/19] fix missing ULONG_LONG_MAX definition in case of musl
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [musl]
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
@@ -11,10 +11,10 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
1 file changed, 4 insertions(+)
diff --git a/src/basic/missing.h b/src/basic/missing.h
-index 5b9fde692..a922f1346 100644
+index cd1cc109f..144058a1a 100644
--- a/src/basic/missing.h
+++ b/src/basic/missing.h
-@@ -72,6 +72,10 @@ struct sockaddr_vm {
+@@ -54,6 +54,10 @@ struct sockaddr_vm {
};
#endif /* !HAVE_LINUX_VM_SOCKETS_H */
@@ -26,5 +26,5 @@ index 5b9fde692..a922f1346 100644
#define RLIMIT_RTTIME 15
#endif
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0020-test-hexdecoct.c-Include-missing.h-for-strndupa.patch b/meta/recipes-core/systemd/systemd/0015-test-hexdecoct.c-Include-missing.h-for-strndupa.patch
index ad49cfe8f75..c7ca9cd4bd1 100644
--- a/meta/recipes-core/systemd/systemd/0020-test-hexdecoct.c-Include-missing.h-for-strndupa.patch
+++ b/meta/recipes-core/systemd/systemd/0015-test-hexdecoct.c-Include-missing.h-for-strndupa.patch
@@ -1,9 +1,9 @@
-From d63d2fedcd80e58ee53655aeaf2836d4b0a14652 Mon Sep 17 00:00:00 2001
+From b11109ecc41110c518a98b6ac39611ff86477021 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 23 Oct 2017 12:33:22 -0700
-Subject: [PATCH 20/31] test-hexdecoct.c: Include missing.h for strndupa
+Subject: [PATCH 15/19] test-hexdecoct.c: Include missing.h for strndupa
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [musl specific]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
@@ -12,10 +12,10 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
1 file changed, 1 insertion(+)
diff --git a/src/test/test-hexdecoct.c b/src/test/test-hexdecoct.c
-index 3e25a0bac..ab3e508f1 100644
+index da9f3008b..7ff2dfe0c 100644
--- a/src/test/test-hexdecoct.c
+++ b/src/test/test-hexdecoct.c
-@@ -24,6 +24,7 @@
+@@ -6,6 +6,7 @@
#include "hexdecoct.h"
#include "macro.h"
#include "string-util.h"
@@ -24,5 +24,5 @@ index 3e25a0bac..ab3e508f1 100644
static void test_hexchar(void) {
assert_se(hexchar(0xa) == 'a');
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0021-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch b/meta/recipes-core/systemd/systemd/0016-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch
index 9c8aeca9a54..c06a3706e9f 100644
--- a/meta/recipes-core/systemd/systemd/0021-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch
+++ b/meta/recipes-core/systemd/systemd/0016-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch
@@ -1,10 +1,10 @@
-From dfea4b98844795a0cd14fdaf40c67df389dbd27e Mon Sep 17 00:00:00 2001
+From c4bbf3efefffe0a4efadbf4e3f0adb54d76fe0e7 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 21/31] test-sizeof.c: Disable tests for missing typedefs in
+Subject: [PATCH 16/19] test-sizeof.c: Disable tests for missing typedefs in
musl
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [musl specific]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
@@ -13,10 +13,10 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
1 file changed, 4 insertions(+)
diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c
-index aed6db842..0de6fa63c 100644
+index 7a1e496ed..386b314d5 100644
--- a/src/test/test-sizeof.c
+++ b/src/test/test-sizeof.c
-@@ -50,8 +50,10 @@ int main(void) {
+@@ -40,8 +40,10 @@ int main(void) {
info(unsigned);
info(long unsigned);
info(long long unsigned);
@@ -27,7 +27,7 @@ index aed6db842..0de6fa63c 100644
info(float);
info(double);
-@@ -61,7 +63,9 @@ int main(void) {
+@@ -59,7 +61,9 @@ int main(void) {
info(ssize_t);
info(time_t);
info(usec_t);
@@ -38,5 +38,5 @@ index aed6db842..0de6fa63c 100644
info(uid_t);
info(gid_t);
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0023-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch b/meta/recipes-core/systemd/systemd/0017-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
index 09c2b5c109b..8e47c6f50a2 100644
--- a/meta/recipes-core/systemd/systemd/0023-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
+++ b/meta/recipes-core/systemd/systemd/0017-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
@@ -1,7 +1,7 @@
-From 7b802ada1207ed00ed3867b9804dd0f316641b9b Mon Sep 17 00:00:00 2001
+From 91bb4f5c9c11464468e8d3fa4746d98d59997264 Mon Sep 17 00:00:00 2001
From: Andre McCurdy <armccurdy@gmail.com>
Date: Tue, 10 Oct 2017 14:33:30 -0700
-Subject: [PATCH 23/31] don't pass AT_SYMLINK_NOFOLLOW flag to faccessat()
+Subject: [PATCH 17/19] 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:
@@ -22,7 +22,7 @@ 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: Pending
+Upstream-Status: Inappropriate [musl specific]
Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
---
@@ -31,10 +31,10 @@ Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
2 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/src/basic/fs-util.h b/src/basic/fs-util.h
-index 4dba1ea56..9c4b02ecc 100644
+index 28566773c..14b864cc5 100644
--- a/src/basic/fs-util.h
+++ b/src/basic/fs-util.h
-@@ -50,7 +50,27 @@ int fchmod_umask(int fd, mode_t mode);
+@@ -32,7 +32,27 @@ int fchmod_opath(int fd, mode_t m);
int fd_warn_permissions(const char *path, int fd);
@@ -64,10 +64,10 @@ index 4dba1ea56..9c4b02ecc 100644
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 3c25aa534..574ca71c7 100644
+index 89d7a7d59..34b4ad53a 100644
--- a/src/shared/base-filesystem.c
+++ b/src/shared/base-filesystem.c
-@@ -71,7 +71,7 @@ int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
+@@ -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 ++) {
@@ -76,7 +76,7 @@ index 3c25aa534..574ca71c7 100644
continue;
if (table[i].target) {
-@@ -79,7 +79,7 @@ int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
+@@ -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) {
@@ -85,7 +85,7 @@ index 3c25aa534..574ca71c7 100644
continue;
/* check if a specific file exists at the target path */
-@@ -90,7 +90,7 @@ int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
+@@ -72,7 +72,7 @@ int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
if (!p)
return log_oom();
@@ -95,5 +95,5 @@ index 3c25aa534..574ca71c7 100644
}
--
-2.13.0
+2.11.0
diff --git a/meta/recipes-core/systemd/systemd/0018-Define-glibc-compatible-basename-for-non-glibc-syste.patch b/meta/recipes-core/systemd/systemd/0018-Define-glibc-compatible-basename-for-non-glibc-syste.patch
new file mode 100644
index 00000000000..1bd0d602a51
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0018-Define-glibc-compatible-basename-for-non-glibc-syste.patch
@@ -0,0 +1,34 @@
+From 97fed07132533a1b2bce9c60e305a5d09aee2e9b 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 18/19] 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 7f41465cc..cee8a5d43 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.11.0
+
diff --git a/meta/recipes-core/systemd/systemd/0018-check-for-missing-canonicalize_file_name.patch b/meta/recipes-core/systemd/systemd/0018-check-for-missing-canonicalize_file_name.patch
deleted file mode 100644
index ab7edf5ca4a..00000000000
--- a/meta/recipes-core/systemd/systemd/0018-check-for-missing-canonicalize_file_name.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 690eeef9590c7ef1d9d2c31d8c1d5d8071da8c4c Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 26 Feb 2018 17:21:11 +0800
-Subject: [PATCH 18/31] check for missing canonicalize_file_name
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- meson.build | 2 ++
- src/basic/missing_syscall.h | 6 ++++++
- 2 files changed, 8 insertions(+)
-
-diff --git a/meson.build b/meson.build
-index 12811b3f3..f6515e97c 100644
---- a/meson.build
-+++ b/meson.build
-@@ -520,6 +520,8 @@ foreach ident : [
- ['kcmp', '''#include <linux/kcmp.h>'''],
- ['keyctl', '''#include <sys/types.h>
- #include <keyutils.h>'''],
-+ ['canonicalize_file_name', '''#define _GNU_SOURCE
-+ #include <stdlib.h>'''],
- ['copy_file_range', '''#include <sys/syscall.h>
- #include <unistd.h>'''],
- ['bpf', '''#include <sys/syscall.h>
-diff --git a/src/basic/missing_syscall.h b/src/basic/missing_syscall.h
-index c938d0d97..308b9472b 100644
---- a/src/basic/missing_syscall.h
-+++ b/src/basic/missing_syscall.h
-@@ -31,6 +31,12 @@ static inline int pivot_root(const char *new_root, const char *put_old) {
- }
- #endif
-
-+#if !HAVE_CANONICALIZE_FILE_NAME
-+static inline char *canonicalize_file_name(const char *path) {
-+ return realpath(path, NULL);
-+}
-+#endif
-+
- /* ======================================================================= */
-
- #if !HAVE_MEMFD_CREATE
---
-2.13.0
-
diff --git a/meta/recipes-core/systemd/systemd/0019-Do-not-disable-buffering-when-writing-to-oom_score_a.patch b/meta/recipes-core/systemd/systemd/0019-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
new file mode 100644
index 00000000000..942f4c09180
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0019-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
@@ -0,0 +1,39 @@
+From 8440348bcac34249cdf6ac2dcae9ac66d3c727db 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 19/19] 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>
+---
+ 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 3543bc045..d0572e034 100644
+--- a/src/basic/process-util.c
++++ b/src/basic/process-util.c
+@@ -1473,7 +1473,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[] = {
+--
+2.11.0
+
diff --git a/meta/recipes-core/systemd/systemd/0020-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch b/meta/recipes-core/systemd/systemd/0020-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
new file mode 100644
index 00000000000..5c78cabbaf8
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0020-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
@@ -0,0 +1,62 @@
+From dd53dc9b9542cbd2c39a39096941dfed70d06506 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 20/20] 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 65bcbcd2e..aef80dd8f 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 ec359ac13..d2aa86cea 100644
+--- a/src/libsystemd/sd-bus/bus-error.c
++++ b/src/libsystemd/sd-bus/bus-error.c
+@@ -362,7 +362,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.11.0
+
diff --git a/meta/recipes-core/systemd/systemd/0001-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch b/meta/recipes-core/systemd/systemd/0021-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch
index 2cffc426edb..668f273208c 100644
--- a/meta/recipes-core/systemd/systemd/0001-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch
+++ b/meta/recipes-core/systemd/systemd/0021-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch
@@ -9,7 +9,7 @@ even without being listed in the sym file
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
-Upstream-Status: Pending [ Conditional on master needing this, 234 does need it ]
+Upstream-Status: Pending [ Conditional on master needing this, 239 does need it ]
src/libsystemd/sd-bus/bus-error.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta/recipes-core/systemd/systemd/0022-build-sys-Detect-whether-struct-statx-is-defined-in-.patch b/meta/recipes-core/systemd/systemd/0022-build-sys-Detect-whether-struct-statx-is-defined-in-.patch
new file mode 100644
index 00000000000..962463f0b87
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0022-build-sys-Detect-whether-struct-statx-is-defined-in-.patch
@@ -0,0 +1,109 @@
+From 75720bff62a84896e9a0654afc7cf9408cf89a38 Mon Sep 17 00:00:00 2001
+From: Filipe Brandenburger <filbranden@google.com>
+Date: Sun, 15 Jul 2018 22:43:35 -0700
+Subject: [PATCH] build-sys: Detect whether struct statx is defined in
+ sys/stat.h
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Starting with glibc 2.27.9000-36.fc29, include file sys/stat.h will have a
+definition for struct statx, in which case include file linux/stat.h should be
+avoided, in order to prevent a duplicate definition.
+
+ In file included from ../src/basic/missing.h:18,
+ from ../src/basic/util.h:28,
+ from ../src/basic/hashmap.h:10,
+ from ../src/shared/bus-util.h:12,
+ from ../src/libsystemd/sd-bus/bus-creds.c:11:
+ /usr/include/linux/stat.h:99:8: error: redefinition of ‘struct statx’
+ struct statx {
+ ^~~~~
+ In file included from /usr/include/sys/stat.h:446,
+ from ../src/basic/util.h:19,
+ from ../src/basic/hashmap.h:10,
+ from ../src/shared/bus-util.h:12,
+ from ../src/libsystemd/sd-bus/bus-creds.c:11:
+ /usr/include/bits/statx.h:36:8: note: originally defined here
+ struct statx
+ ^~~~~
+
+Extend our meson.build to look for struct statx when only sys/stat.h is
+included and, in that case, do not include linux/stat.h anymore.
+
+Tested that systemd builds correctly when using a glibc version that includes a
+definition for struct statx.
+
+glibc Fedora RPM update:
+https://src.fedoraproject.org/rpms/glibc/c/28cb5d31fc1e5887912283c889689c47076278ae
+
+glibc upstream commit:
+https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=fd70af45528d59a00eb3190ef6706cb299488fcd
+---
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+ meson.build | 5 +++++
+ src/basic/missing.h | 5 ++++-
+ src/basic/xattr-util.c | 1 -
+ 3 files changed, 9 insertions(+), 2 deletions(-)
+
+Index: git/meson.build
+===================================================================
+--- git.orig/meson.build
++++ git/meson.build
+@@ -432,6 +432,7 @@ decl_headers = '''
+ #include <sys/stat.h>
+ '''
+ # FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
++# FIXME: these should use -D_GNU_SOURCE, since that is defined at build time
+
+ foreach decl : ['char16_t',
+ 'char32_t',
+@@ -446,6 +447,10 @@ foreach decl : ['char16_t',
+ conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
+ endforeach
+
++conf.set10('HAVE_STRUCT_STATX_IN_SYS_STAT_H', cc.sizeof('struct statx', prefix : '''
++#include <sys/stat.h>
++''', args : '-D_GNU_SOURCE') > 0)
++
+ foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
+ ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
+ ['IFLA_VRF_TABLE', 'linux/if_link.h'],
+Index: git/src/basic/missing.h
+===================================================================
+--- git.orig/src/basic/missing.h
++++ git/src/basic/missing.h
+@@ -15,7 +15,6 @@
+ #include <linux/neighbour.h>
+ #include <linux/oom.h>
+ #include <linux/rtnetlink.h>
+-#include <linux/stat.h>
+ #include <net/ethernet.h>
+ #include <stdlib.h>
+ #include <sys/resource.h>
+@@ -25,6 +24,10 @@
+ #include <uchar.h>
+ #include <unistd.h>
+
++#if !HAVE_STRUCT_STATX_IN_SYS_STAT_H
++#include <linux/stat.h>
++#endif
++
+ #if HAVE_AUDIT
+ #include <libaudit.h>
+ #endif
+Index: git/src/basic/xattr-util.c
+===================================================================
+--- git.orig/src/basic/xattr-util.c
++++ git/src/basic/xattr-util.c
+@@ -2,7 +2,6 @@
+
+ #include <errno.h>
+ #include <fcntl.h>
+-#include <linux/stat.h>
+ #include <stdint.h>
+ #include <stdlib.h>
+ #include <string.h>
diff --git a/meta/recipes-core/systemd/systemd/0023-resolvconf-fixes-for-the-compatibility-interface.patch b/meta/recipes-core/systemd/systemd/0023-resolvconf-fixes-for-the-compatibility-interface.patch
new file mode 100644
index 00000000000..2f3e776aa08
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0023-resolvconf-fixes-for-the-compatibility-interface.patch
@@ -0,0 +1,58 @@
+systemd-239: fixes for the compatibility interface
+
+[No upstream tracking] -- https://github.com/systemd/systemd/issues/9423
+
+resolvconf-compat: use compat_main() when called as `resolvconf`,
+since the interface is closer to that of `systemd-resolve`.
+
+Use a heap allocated string to set arg_ifname, since a stack allocated
+one would be lost after the function returns. (This last one broke the
+case where an interface name was suffixed with a dot, such as in
+`resolvconf -a tap0.dhcp`.)
+
+Tested:
+ $ build/resolvconf -a nonexistent.abc </etc/resolv.conf
+ Unknown interface 'nonexistent': No such device
+
+Upstream-Status: Backport [https://github.com/systemd/systemd/commit/5a01b3f35d7b6182c78b6973db8d99bdabd4f9c3]
+bug: 9423
+Signed-off-by: Simon Ausserlechner <simon.ausserlechner@siemens.com>
+
+diff --git a/src/resolve/resolvconf-compat.c b/src/resolve/resolvconf-compat.c
+index d7e68003e..072345894 100644
+--- a/src/resolve/resolvconf-compat.c
++++ b/src/resolve/resolvconf-compat.c
+@@ -53,6 +53,8 @@ static int parse_nameserver(const char *string) {
+
+ if (strv_push(&arg_set_dns, word) < 0)
+ return log_oom();
++
++ word = NULL;
+ }
+
+ return 0;
+@@ -202,7 +204,7 @@ int resolvconf_parse_argv(int argc, char *argv[]) {
+
+ dot = strchr(argv[optind], '.');
+ if (dot) {
+- iface = strndupa(argv[optind], dot - argv[optind]);
++ iface = strndup(argv[optind], dot - argv[optind]);
+ log_debug("Ignoring protocol specifier '%s'.", dot + 1);
+ } else
+ iface = argv[optind];
+diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c
+index e96c13fea..e9e395e3e 100644
+--- a/src/resolve/resolvectl.c
++++ b/src/resolve/resolvectl.c
+@@ -3092,7 +3092,7 @@ int main(int argc, char **argv) {
+ goto finish;
+ }
+
+- if (streq(program_invocation_short_name, "systemd-resolve"))
++ if (STR_IN_SET(program_invocation_short_name, "systemd-resolve", "resolvconf"))
+ r = compat_main(argc, argv, bus);
+ else
+ r = native_main(argc, argv, bus);
+--
+2.11.0
+
diff --git a/meta/recipes-core/systemd/systemd/0024-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch b/meta/recipes-core/systemd/systemd/0024-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch
deleted file mode 100644
index fe7e623ff1f..00000000000
--- a/meta/recipes-core/systemd/systemd/0024-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 76c71aa889155f29be1d5d2b74a2c4faa5909c8c Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 12 Sep 2015 18:53:31 +0000
-Subject: [PATCH 24/31] comparison_fn_t is glibc specific, use raw signature in
- function pointer
-
-make it work with musl where comparison_fn_t is not provided
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/basic/util.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/basic/util.h b/src/basic/util.h
-index 9d1b10756..12db53a93 100644
---- a/src/basic/util.h
-+++ b/src/basic/util.h
-@@ -95,7 +95,7 @@ void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size,
- * Normal qsort requires base to be nonnull. Here were require
- * that only if nmemb > 0.
- */
--static inline void qsort_safe(void *base, size_t nmemb, size_t size, comparison_fn_t compar) {
-+static inline void qsort_safe(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)) {
- if (nmemb <= 1)
- return;
-
---
-2.13.0
-
diff --git a/meta/recipes-core/systemd/systemd/0025-Define-_PATH_WTMPX-and-_PATH_UTMPX-if-not-defined.patch b/meta/recipes-core/systemd/systemd/0025-Define-_PATH_WTMPX-and-_PATH_UTMPX-if-not-defined.patch
deleted file mode 100644
index 9376a8f750c..00000000000
--- a/meta/recipes-core/systemd/systemd/0025-Define-_PATH_WTMPX-and-_PATH_UTMPX-if-not-defined.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From a0b1496322f4d7ce83f4fbfd2a90b91d0721f643 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 24 Oct 2017 23:08:24 -0700
-Subject: [PATCH 25/31] Define _PATH_WTMPX and _PATH_UTMPX if not defined
-
-Musl needs these defines
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/shared/utmp-wtmp.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/src/shared/utmp-wtmp.c b/src/shared/utmp-wtmp.c
-index cab1cd6a2..f5eedac18 100644
---- a/src/shared/utmp-wtmp.c
-+++ b/src/shared/utmp-wtmp.c
-@@ -28,6 +28,7 @@
- #include <sys/time.h>
- #include <sys/utsname.h>
- #include <unistd.h>
-+#include <utmp.h>
- #include <utmpx.h>
-
- #include "alloc-util.h"
-@@ -42,6 +43,13 @@
- #include "util.h"
- #include "utmp-wtmp.h"
-
-+#if defined _PATH_UTMP && !defined _PATH_UTMPX
-+# define _PATH_UTMPX _PATH_UTMP
-+#endif
-+#if defined _PATH_WTMP && !defined _PATH_WTMPX
-+# define _PATH_WTMPX _PATH_WTMP
-+#endif
-+
- int utmp_get_runlevel(int *runlevel, int *previous) {
- struct utmpx *found, lookup = { .ut_type = RUN_LVL };
- int r;
---
-2.13.0
-
diff --git a/meta/recipes-core/systemd/systemd/0027-remove-nobody-user-group-checking.patch b/meta/recipes-core/systemd/systemd/0027-remove-nobody-user-group-checking.patch
deleted file mode 100644
index 42f59b08295..00000000000
--- a/meta/recipes-core/systemd/systemd/0027-remove-nobody-user-group-checking.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 5354eb767d1eba2ec41eb273f6b657f4a630ca8a Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Tue, 9 Jan 2018 14:45:46 +0800
-Subject: [PATCH 27/31] remove nobody user/group checking
-
-Upstream-Status: Inappropriate [OE Specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- meson.build | 37 -------------------------------------
- 1 file changed, 37 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index f6515e97c..1b947adac 100644
---- a/meson.build
-+++ b/meson.build
-@@ -700,43 +700,6 @@ substs.set('containeruidbasemax', container_uid_base_max)
- nobody_user = get_option('nobody-user')
- nobody_group = get_option('nobody-group')
-
--getent_result = run_command('getent', 'passwd', '65534')
--if getent_result.returncode() == 0
-- name = getent_result.stdout().split(':')[0]
-- if name != nobody_user
-- message('WARNING:\n' +
-- ' The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
-- ' Your build will result in an user table setup that is incompatible with the local system.')
-- endif
--endif
--id_result = run_command('id', '-u', nobody_user)
--if id_result.returncode() == 0
-- id = id_result.stdout().to_int()
-- if id != 65534
-- message('WARNING:\n' +
-- ' The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
-- ' Your build will result in an user table setup that is incompatible with the local system.')
-- endif
--endif
--
--getent_result = run_command('getent', 'group', '65534')
--if getent_result.returncode() == 0
-- name = getent_result.stdout().split(':')[0]
-- if name != nobody_group
-- message('WARNING:\n' +
-- ' The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
-- ' Your build will result in an group table setup that is incompatible with the local system.')
-- endif
--endif
--id_result = run_command('id', '-g', nobody_group)
--if id_result.returncode() == 0
-- id = id_result.stdout().to_int()
-- if id != 65534
-- message('WARNING:\n' +
-- ' The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
-- ' Your build will result in an group table setup that is incompatible with the local system.')
-- endif
--endif
- if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
- message('WARNING:\n' +
- ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
---
-2.13.0
-
diff --git a/meta/recipes-core/systemd/systemd/0032-memfd.patch b/meta/recipes-core/systemd/systemd/0032-memfd.patch
deleted file mode 100644
index f7cfd60a3fb..00000000000
--- a/meta/recipes-core/systemd/systemd/0032-memfd.patch
+++ /dev/null
@@ -1,272 +0,0 @@
-missing_syscall: when adding syscall replacements, use different names (
-
-#8229)
-
-In meson.build we check that functions are available using:
- meson.get_compiler('c').has_function('foo')
-which checks the following:
-- if __stub_foo or __stub___foo are defined, return false
-- if foo is declared (a pointer to the function can be taken), return true
-- otherwise check for __builtin_memfd_create
-
-_stub is documented by glibc as
- It defines a symbol '__stub_FUNCTION' for each function
- in the C library which is a stub, meaning it will fail
- every time called, usually setting errno to ENOSYS.
-
-So if __stub is defined, we know we don't want to use the glibc version, but
-this doesn't tell us if the name itself is defined or not. If it _is_ defined,
-and we define our replacement as an inline static function, we get an error:
-
-In file included from ../src/basic/missing.h:1358:0,
- from ../src/basic/util.h:47,
- from ../src/basic/calendarspec.h:29,
- from ../src/basic/calendarspec.c:34:
-../src/basic/missing_syscall.h:65:19: error: static declaration of 'memfd_create' follows non-static declaration
- static inline int memfd_create(const char *name, unsigned int flags) {
- ^~~~~~~~~~~~
-.../usr/include/bits/mman-shared.h:46:5: note: previous declaration of 'memfd_create' was here
- int memfd_create (const char *__name, unsigned int __flags) __THROW;
- ^~~~~~~~~~~~
-
-To avoid this problem, call our inline functions different than glibc,
-and use a #define to map the official name to our replacement.
-
-Fixes #8099.
-
-v2:
-- use "missing_" as the prefix instead of "_"
-
-v3:
-- rebase and update for statx()
-
- Unfortunately "statx" is also present in "struct statx", so the define
- causes issues. Work around this by using a typedef.
-
-I checked that systemd compiles with current glibc
-(glibc-devel-2.26-24.fc27.x86_64) if HAVE_MEMFD_CREATE, HAVE_GETTID,
-HAVE_PIVOT_ROOT, HAVE_SETNS, HAVE_RENAMEAT2, HAVE_KCMP, HAVE_KEYCTL,
-HAVE_COPY_FILE_RANGE, HAVE_BPF, HAVE_STATX are forced to 0.
-
-Setting HAVE_NAME_TO_HANDLE_AT to 0 causes an issue, but it's not because of
-the define, but because of struct file_handle.
-
-
-backport https://github.com/systemd/systemd/commit/5187dd2c403caf92d09f3491e41f1ceb3f10491f
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Backport [https://github.com/systemd/systemd/issues/8099]
-Index: git/src/basic/missing_syscall.h
-===================================================================
---- git.orig/src/basic/missing_syscall.h
-+++ git/src/basic/missing_syscall.h
-@@ -26,9 +26,11 @@
- #include <sys/types.h>
-
- #if !HAVE_PIVOT_ROOT
--static inline int pivot_root(const char *new_root, const char *put_old) {
-+static inline int missing_pivot_root(const char *new_root, const char *put_old) {
- return syscall(SYS_pivot_root, new_root, put_old);
- }
-+
-+# define pivot_root missing_pivot_root
- #endif
-
- #if !HAVE_CANONICALIZE_FILE_NAME
-@@ -68,7 +70,7 @@ static inline char *canonicalize_file_na
- # endif
- # endif
-
--static inline int memfd_create(const char *name, unsigned int flags) {
-+static inline int missing_memfd_create(const char *name, unsigned int flags) {
- # ifdef __NR_memfd_create
- return syscall(__NR_memfd_create, name, flags);
- # else
-@@ -76,6 +78,8 @@ static inline int memfd_create(const cha
- return -1;
- # endif
- }
-+
-+# define memfd_create missing_memfd_create
- #endif
-
- /* ======================================================================= */
-@@ -115,7 +119,7 @@ static inline int memfd_create(const cha
- # endif
- # endif
-
--static inline int getrandom(void *buffer, size_t count, unsigned flags) {
-+static inline int missing_getrandom(void *buffer, size_t count, unsigned flags) {
- # ifdef __NR_getrandom
- return syscall(__NR_getrandom, buffer, count, flags);
- # else
-@@ -123,14 +127,18 @@ static inline int getrandom(void *buffer
- return -1;
- # endif
- }
-+
-+# define getrandom missing_getrandom
- #endif
-
- /* ======================================================================= */
-
- #if !HAVE_GETTID
--static inline pid_t gettid(void) {
-+static inline pid_t missing_gettid(void) {
- return (pid_t) syscall(SYS_gettid);
- }
-+
-+# define gettid missing_gettid
- #endif
-
- /* ======================================================================= */
-@@ -158,7 +166,7 @@ struct file_handle {
- unsigned char f_handle[0];
- };
-
--static inline int name_to_handle_at(int fd, const char *name, struct file_handle *handle, int *mnt_id, int flags) {
-+static inline int missing_name_to_handle_at(int fd, const char *name, struct file_handle *handle, int *mnt_id, int flags) {
- # ifdef __NR_name_to_handle_at
- return syscall(__NR_name_to_handle_at, fd, name, handle, mnt_id, flags);
- # else
-@@ -166,6 +174,8 @@ static inline int name_to_handle_at(int
- return -1;
- # endif
- }
-+
-+# define name_to_handle_at missing_name_to_handle_at
- #endif
-
- /* ======================================================================= */
-@@ -183,7 +193,7 @@ static inline int name_to_handle_at(int
- # endif
- # endif
-
--static inline int setns(int fd, int nstype) {
-+static inline int missing_setns(int fd, int nstype) {
- # ifdef __NR_setns
- return syscall(__NR_setns, fd, nstype);
- # else
-@@ -191,6 +201,8 @@ static inline int setns(int fd, int nsty
- return -1;
- # endif
- }
-+
-+# define setns missing_setns
- #endif
-
- /* ======================================================================= */
-@@ -236,7 +248,7 @@ static inline pid_t raw_getpid(void) {
- # endif
- # endif
-
--static inline int renameat2(int oldfd, const char *oldname, int newfd, const char *newname, unsigned flags) {
-+static inline int missing_renameat2(int oldfd, const char *oldname, int newfd, const char *newname, unsigned flags) {
- # ifdef __NR_renameat2
- return syscall(__NR_renameat2, oldfd, oldname, newfd, newname, flags);
- # else
-@@ -244,12 +256,14 @@ static inline int renameat2(int oldfd, c
- return -1;
- # endif
- }
-+
-+# define renameat2 missing_renameat2
- #endif
-
- /* ======================================================================= */
-
- #if !HAVE_KCMP
--static inline int kcmp(pid_t pid1, pid_t pid2, int type, unsigned long idx1, unsigned long idx2) {
-+static inline int missing_kcmp(pid_t pid1, pid_t pid2, int type, unsigned long idx1, unsigned long idx2) {
- # ifdef __NR_kcmp
- return syscall(__NR_kcmp, pid1, pid2, type, idx1, idx2);
- # else
-@@ -257,36 +271,44 @@ static inline int kcmp(pid_t pid1, pid_t
- return -1;
- # endif
- }
-+
-+# define kcmp missing_kcmp
- #endif
-
- /* ======================================================================= */
-
- #if !HAVE_KEYCTL
--static inline long keyctl(int cmd, unsigned long arg2, unsigned long arg3, unsigned long arg4,unsigned long arg5) {
-+static inline long missing_keyctl(int cmd, unsigned long arg2, unsigned long arg3, unsigned long arg4,unsigned long arg5) {
- # ifdef __NR_keyctl
- return syscall(__NR_keyctl, cmd, arg2, arg3, arg4, arg5);
- # else
- errno = ENOSYS;
- return -1;
- # endif
-+
-+# define keyctl missing_keyctl
- }
-
--static inline key_serial_t add_key(const char *type, const char *description, const void *payload, size_t plen, key_serial_t ringid) {
-+static inline key_serial_t missing_add_key(const char *type, const char *description, const void *payload, size_t plen, key_serial_t ringid) {
- # ifdef __NR_add_key
- return syscall(__NR_add_key, type, description, payload, plen, ringid);
- # else
- errno = ENOSYS;
- return -1;
- # endif
-+
-+# define add_key missing_add_key
- }
-
--static inline key_serial_t request_key(const char *type, const char *description, const char * callout_info, key_serial_t destringid) {
-+static inline key_serial_t missing_request_key(const char *type, const char *description, const char * callout_info, key_serial_t destringid) {
- # ifdef __NR_request_key
- return syscall(__NR_request_key, type, description, callout_info, destringid);
- # else
- errno = ENOSYS;
- return -1;
- # endif
-+
-+# define request_key missing_request_key
- }
- #endif
-
-@@ -313,10 +335,10 @@ static inline key_serial_t request_key(c
- # endif
- # endif
-
--static inline ssize_t copy_file_range(int fd_in, loff_t *off_in,
-- int fd_out, loff_t *off_out,
-- size_t len,
-- unsigned int flags) {
-+static inline ssize_t missing_copy_file_range(int fd_in, loff_t *off_in,
-+ int fd_out, loff_t *off_out,
-+ size_t len,
-+ unsigned int flags) {
- # ifdef __NR_copy_file_range
- return syscall(__NR_copy_file_range, fd_in, off_in, fd_out, off_out, len, flags);
- # else
-@@ -324,6 +346,8 @@ static inline ssize_t copy_file_range(in
- return -1;
- # endif
- }
-+
-+# define copy_file_range missing_copy_file_range
- #endif
-
- /* ======================================================================= */
-@@ -351,7 +375,7 @@ static inline ssize_t copy_file_range(in
-
- union bpf_attr;
-
--static inline int bpf(int cmd, union bpf_attr *attr, size_t size) {
-+static inline int missing_bpf(int cmd, union bpf_attr *attr, size_t size) {
- #ifdef __NR_bpf
- return (int) syscall(__NR_bpf, cmd, attr, size);
- #else
-@@ -360,6 +384,7 @@ static inline int bpf(int cmd, union bpf
- #endif
- }
-
-+# define bpf missing_bpf
- #endif
-
- /* ======================================================================= */
diff --git a/meta/recipes-core/systemd/systemd_237.bb b/meta/recipes-core/systemd/systemd_239.bb
index 1d04796f39b..194efb5b946 100644
--- a/meta/recipes-core/systemd/systemd_237.bb
+++ b/meta/recipes-core/systemd/systemd_239.bb
@@ -4,7 +4,7 @@ PROVIDES = "udev"
PE = "1"
-DEPENDS = "kmod intltool-native gperf-native acl readline libcap libcgroup util-linux"
+DEPENDS = "intltool-native gperf-native libcap util-linux"
SECTION = "base/shell"
@@ -17,42 +17,47 @@ REQUIRED_DISTRO_FEATURES = "systemd"
SRC_URI += "file://touchscreen.rules \
file://00-create-volatile.conf \
file://init \
- file://0001-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch \
- file://0001-Use-getenv-when-secure-versions-are-not-available.patch \
- file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
- file://0003-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch \
- file://0004-implment-systemd-sysv-install-for-OE.patch \
- file://0005-rules-whitelist-hd-devices.patch \
- file://0006-Make-root-s-home-directory-configurable.patch \
- file://0007-Revert-rules-remove-firmware-loading-rules.patch \
- file://0008-Revert-udev-remove-userspace-firmware-loading-suppor.patch \
- file://0009-remove-duplicate-include-uchar.h.patch \
- file://0010-check-for-uchar.h-in-meson.build.patch \
- file://0011-socket-util-don-t-fail-if-libc-doesn-t-support-IDN.patch \
- file://0012-rules-watch-metadata-changes-in-ide-devices.patch \
- file://0013-add-fallback-parse_printf_format-implementation.patch \
- file://0014-src-basic-missing.h-check-for-missing-strndupa.patch \
- file://0015-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch \
- file://0016-src-basic-missing.h-check-for-missing-__compar_fn_t-.patch \
- file://0017-Include-netinet-if_ether.h.patch \
- file://0018-check-for-missing-canonicalize_file_name.patch \
- file://0019-Do-not-enable-nss-tests-if-nss-systemd-is-not-enable.patch \
- file://0020-test-hexdecoct.c-Include-missing.h-for-strndupa.patch \
- file://0021-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch \
- file://0022-don-t-use-glibc-specific-qsort_r.patch \
- file://0023-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch \
- file://0024-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch \
- file://0025-Define-_PATH_WTMPX-and-_PATH_UTMPX-if-not-defined.patch \
- file://0026-Use-uintmax_t-for-handling-rlim_t.patch \
- file://0027-remove-nobody-user-group-checking.patch \
- file://0028-add-missing-FTW_-macros-for-musl.patch \
- file://0029-nss-mymachines-Build-conditionally-when-ENABLE_MYHOS.patch \
- file://0030-fix-missing-of-__register_atfork-for-non-glibc-build.patch \
- file://0031-fix-missing-ULONG_LONG_MAX-definition-in-case-of-mus.patch \
- file://0032-memfd.patch \
+ 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-Make-root-s-home-directory-configurable.patch \
+ file://0006-remove-nobody-user-group-checking.patch \
+ file://0007-rules-watch-metadata-changes-in-ide-devices.patch \
+ file://0008-Do-not-enable-nss-tests-if-nss-systemd-is-not-enable.patch \
+ file://0009-nss-mymachines-Build-conditionally-when-ENABLE_MYHOS.patch \
+ file://0001-login-use-parse_uid-when-unmounting-user-runtime-dir.patch \
+ file://0001-sd-bus-make-BUS_DEFAULT_TIMEOUT-configurable.patch \
+ file://0022-build-sys-Detect-whether-struct-statx-is-defined-in-.patch \
+ file://0023-resolvconf-fixes-for-the-compatibility-interface.patch \
"
SRC_URI_append_qemuall = " file://0001-core-device.c-Change-the-default-device-timeout-to-2.patch"
+# patches made for musl are only applied on TCLIBC is musl
+SRC_URI += "${SRC_URI_MUSL}"
+SRC_URI_MUSL = "file://0001-Use-getenv-when-secure-versions-are-not-available.patch \
+ file://0002-don-t-use-glibc-specific-qsort_r.patch \
+ file://0003-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch \
+ file://0004-add-fallback-parse_printf_format-implementation.patch \
+ file://0005-include-gshadow-only-if-ENABLE_GSHADOW-is-1.patch \
+ file://0006-src-basic-missing.h-check-for-missing-strndupa.patch \
+ file://0007-Include-netinet-if_ether.h.patch \
+ file://0008-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch \
+ file://0009-add-missing-FTW_-macros-for-musl.patch \
+ file://0010-socket-util-don-t-fail-if-libc-doesn-t-support-IDN.patch \
+ file://0011-src-basic-missing.h-check-for-missing-__compar_fn_t-.patch \
+ file://0012-fix-missing-of-__register_atfork-for-non-glibc-build.patch \
+ file://0013-Use-uintmax_t-for-handling-rlim_t.patch \
+ file://0014-fix-missing-ULONG_LONG_MAX-definition-in-case-of-mus.patch \
+ file://0015-test-hexdecoct.c-Include-missing.h-for-strndupa.patch \
+ file://0016-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch \
+ file://0017-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch \
+ file://0018-Define-glibc-compatible-basename-for-non-glibc-syste.patch \
+ file://0019-Do-not-disable-buffering-when-writing-to-oom_score_a.patch \
+ file://0020-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch \
+ file://0021-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch \
+ "
+
# Workaround undefined reference to `__stack_chk_fail_local' on qemux86 and qemuppc for musl
SRC_URI_append_libc-musl_qemux86 = " file://0001-Remove-fstack-protector-flags-to-workaround-musl-bui.patch"
SRC_URI_append_libc-musl_qemuppc = " file://0001-Remove-fstack-protector-flags-to-workaround-musl-bui.patch"
@@ -67,12 +72,15 @@ PACKAGECONFIG ??= " \
${@bb.utils.filter('DISTRO_FEATURES', 'efi ldconfig pam selinux usrmerge', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'rfkill', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \
+ acl \
backlight \
binfmt \
firstboot \
+ gshadow \
hibernate \
hostnamed \
ima \
+ kmod \
localed \
logind \
machined \
@@ -93,6 +101,7 @@ PACKAGECONFIG ??= " \
"
PACKAGECONFIG_remove_libc-musl = " \
+ gshadow \
localed \
myhostname \
nss \
@@ -108,6 +117,7 @@ PACKAGECONFIG_remove_libc-musl = " \
# 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"
@@ -120,6 +130,7 @@ 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[gshadow] = "-Dgshadow=true,-Dgshadow=false"
PACKAGECONFIG[hibernate] = "-Dhibernate=true,-Dhibernate=false"
PACKAGECONFIG[hostnamed] = "-Dhostnamed=true,-Dhostnamed=false"
PACKAGECONFIG[ima] = "-Dima=true,-Dima=false"
@@ -128,6 +139,7 @@ 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"
@@ -141,6 +153,7 @@ PACKAGECONFIG[networkd] = "-Dnetworkd=true,-Dnetworkd=false"
PACKAGECONFIG[nss] = "-Dnss-systemd=true,-Dnss-systemd=false"
PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam,${PAM_PLUGINS}"
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"
@@ -151,9 +164,11 @@ 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[time-epoch] = "-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"
@@ -175,11 +190,10 @@ EXTRA_OEMESON += "-Dlink-udev-shared=false"
EXTRA_OEMESON += "-Dnobody-user=nobody \
-Dnobody-group=nobody \
- -Droothomedir=${ROOTHOME} \
+ -Droothomedir=${ROOT_HOME} \
-Drootlibdir=${rootlibdir} \
-Drootprefix=${rootprefix} \
-Dsysvrcnd-path=${sysconfdir} \
- -Dfirmware-path=${nonarch_base_libdir}/firmware \
"
# Hardcode target binary paths to avoid using paths from sysroot
@@ -308,7 +322,7 @@ USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'networkd', '--sys
USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'coredump', '--system -d / -M --shell /bin/nologin systemd-coredump;', '', 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', 'polkit', '--system --no-create-home --user-group --home-dir ${sysconfdir}/polkit-1 polkitd;', '', d)}"
-GROUPADD_PARAM_${PN} = "-r lock; -r systemd-journal"
+GROUPADD_PARAM_${PN} = "-r systemd-journal"
USERADD_PARAM_${PN}-extra-utils += "--system -d / -M --shell /bin/nologin systemd-bus-proxy;"
FILES_${PN}-analyze = "${bindir}/systemd-analyze"
@@ -371,6 +385,7 @@ FILES_${PN}-container = "${sysconfdir}/dbus-1/system.d/org.freedesktop.import1.c
${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 \
@@ -426,6 +441,14 @@ CONFFILES_${PN} = "${sysconfdir}/machine-id \
${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 \
@@ -450,6 +473,7 @@ FILES_${PN} = " ${base_bindir}/* \
${bindir}/coredumpctl \
${bindir}/localectl \
${bindir}/hostnamectl \
+ ${bindir}/resolvectl \
${bindir}/timedatectl \
${bindir}/bootctl \
${bindir}/kernel-install \
@@ -472,17 +496,19 @@ FILES_${PN} = " ${base_bindir}/* \
${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 udev (= ${EXTENDPKGV}) util-linux-agetty"
+RDEPENDS_${PN} += "kmod dbus util-linux-mount 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 \
- util-linux-fsck e2fsprogs-e2fsck \
+ e2fsprogs-e2fsck \
kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 \
os-release \
"
@@ -530,34 +556,7 @@ python __anonymous() {
d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
}
-# TODO:
-# u-a for runlevel and telinit
-
-ALTERNATIVE_${PN} = "init halt reboot shutdown poweroff runlevel resolv-conf"
-
-ALTERNATIVE_TARGET[init] = "${rootlibexecdir}/systemd/systemd"
-ALTERNATIVE_LINK_NAME[init] = "${base_sbindir}/init"
-ALTERNATIVE_PRIORITY[init] ?= "300"
-
-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"
+ALTERNATIVE_${PN} = "resolv-conf"
ALTERNATIVE_TARGET[resolv-conf] = "${sysconfdir}/resolv-conf.systemd"
ALTERNATIVE_LINK_NAME[resolv-conf] = "${sysconfdir}/resolv.conf"
@@ -578,9 +577,13 @@ pkg_prerm_${PN} () {
PACKAGE_WRITE_DEPS += "qemu-native"
pkg_postinst_udev-hwdb () {
if test -n "$D"; then
- ${@qemu_run_binary(d, '$D', '${base_bindir}/udevadm')} hwdb --update \
- --root $D
- chown root:root $D${sysconfdir}/udev/hwdb.bin
+ if ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'true','false', d)}; then
+ ${@qemu_run_binary(d, '$D', '${base_bindir}/udevadm')} hwdb --update \
+ --root $D
+ chown root:root $D${sysconfdir}/udev/hwdb.bin
+ else
+ $INTERCEPT_DIR/postinst_intercept delay_to_first_boot ${PKG} mlprefix=${MLPREFIX}
+ fi
else
udevadm hwdb --update
fi
diff --git a/meta/recipes-core/sysvinit/sysvinit-2.88dsf/0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch b/meta/recipes-core/sysvinit/sysvinit-2.88dsf/0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch
new file mode 100644
index 00000000000..2575b59b5eb
--- /dev/null
+++ b/meta/recipes-core/sysvinit/sysvinit-2.88dsf/0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch
@@ -0,0 +1,71 @@
+From 29c7a529d3bb0c1e20239f885e74c5036f1a908c 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 defines in glibc
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Pending
+---
+ src/bootlogd.c | 3 +++
+ src/bootlogd.o | Bin 58448 -> 60376 bytes
+ src/dowall.c | 3 +++
+ src/shutdown.c | 4 +++-
+ 4 files changed, 9 insertions(+), 1 deletion(-)
+
+Index: sysvinit-2.88dsf/src/bootlogd.c
+===================================================================
+--- sysvinit-2.88dsf.orig/src/bootlogd.c
++++ sysvinit-2.88dsf/src/bootlogd.c
+@@ -53,6 +53,9 @@
+ #ifdef __linux__
+ #include <sys/mount.h>
+ #endif
++#ifdef __GLIBC__
++#include <sys/sysmacros.h>
++#endif
+
+ char *Version = "@(#) bootlogd 2.86 03-Jun-2004 miquels@cistron.nl";
+
+Index: sysvinit-2.88dsf/src/dowall.c
+===================================================================
+--- sysvinit-2.88dsf.orig/src/dowall.c
++++ sysvinit-2.88dsf/src/dowall.c
+@@ -37,6 +37,9 @@
+ #include <signal.h>
+ #include <setjmp.h>
+ #include <paths.h>
++#ifdef __GLIBC__
++#include <sys/sysmacros.h>
++#endif
+
+ #ifndef _PATH_DEV
+ # define _PATH_DEV "/dev/"
+Index: sysvinit-2.88dsf/src/shutdown.c
+===================================================================
+--- sysvinit-2.88dsf.orig/src/shutdown.c
++++ sysvinit-2.88dsf/src/shutdown.c
+@@ -57,7 +57,9 @@
+ #include "reboot.h"
+ #include "initreq.h"
+ #include "init.h"
+-
++#ifdef __GLIBC__
++#include <sys/sysmacros.h>
++#endif
+
+ char *Version = "@(#) shutdown 2.86-1 31-Jul-2004 miquels@cistron.nl";
+
+Index: sysvinit-2.88dsf/src/mountpoint.c
+===================================================================
+--- sysvinit-2.88dsf.orig/src/mountpoint.c
++++ sysvinit-2.88dsf/src/mountpoint.c
+@@ -32,6 +32,9 @@
+ #include <stdarg.h>
+ #include <getopt.h>
+ #include <stdio.h>
++#ifdef __GLIBC__
++#include <sys/sysmacros.h>
++#endif
+
+ int dostat(char *path, struct stat *st, int do_lstat, int quiet)
+ {
diff --git a/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb b/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb
index 5b9c422cafa..8585a418ab8 100644
--- a/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb
+++ b/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb
@@ -53,8 +53,15 @@ EOF
}
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 [ "x$D" = "x" ] && [ -e /proc/consoles ]; then
+if [ -e /proc/consoles ]; then
tmp="${SERIAL_CONSOLES_CHECK}"
for i in $tmp
do
@@ -68,11 +75,7 @@ if [ "x$D" = "x" ] && [ -e /proc/consoles ]; then
done
kill -HUP 1
else
- if [ "${SERIAL_CONSOLES_CHECK}" = "" ]; then
- exit 0
- else
- exit 1
- fi
+ exit 1
fi
}
diff --git a/meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb b/meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb
index ad65819b2de..a21e7e46f73 100644
--- a/meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb
+++ b/meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb
@@ -15,6 +15,7 @@ SRC_URI = "${SAVANNAH_GNU_MIRROR}/sysvinit/sysvinit-${PV}.tar.bz2 \
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 \
@@ -29,7 +30,7 @@ S = "${WORKDIR}/sysvinit-${PV}"
B = "${S}/src"
inherit update-alternatives distro_features_check
-DEPENDS_append = " update-rc.d-native base-passwd"
+DEPENDS_append = " update-rc.d-native base-passwd virtual/crypt"
REQUIRED_DISTRO_FEATURES = "sysvinit"
diff --git a/meta/recipes-core/udev/eudev_3.2.5.bb b/meta/recipes-core/udev/eudev_3.2.5.bb
index 88ad8f1b375..efd62c6495a 100644
--- a/meta/recipes-core/udev/eudev_3.2.5.bb
+++ b/meta/recipes-core/udev/eudev_3.2.5.bb
@@ -30,6 +30,7 @@ CONFLICT_DISTRO_FEATURES = "systemd"
EXTRA_OECONF = " \
--sbindir=${base_sbindir} \
--with-rootlibdir=${base_libdir} \
+ --with-rootlibexecdir=${nonarch_base_libdir}/udev \
--with-rootprefix= \
"
@@ -64,7 +65,7 @@ PACKAGES =+ "libudev"
PACKAGES =+ "eudev-hwdb"
-FILES_${PN} += "${libexecdir} ${base_libdir}/udev ${bindir}/udevadm"
+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 \
@@ -80,8 +81,12 @@ RPROVIDES_eudev-hwdb += "udev-hwdb"
PACKAGE_WRITE_DEPS += "qemu-native"
pkg_postinst_eudev-hwdb () {
if test -n "$D"; then
- ${@qemu_run_binary(d, '$D', '${bindir}/udevadm')} hwdb --update --root $D
- chown root:root $D${sysconfdir}/udev/hwdb.bin
+ if ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'true','false', d)}; then
+ ${@qemu_run_binary(d, '$D', '${bindir}/udevadm')} hwdb --update --root $D
+ chown root:root $D${sysconfdir}/udev/hwdb.bin
+ else
+ $INTERCEPT_DIR/postinst_intercept delay_to_first_boot ${PKG} mlprefix=${MLPREFIX}
+ fi
else
udevadm hwdb --update
fi
diff --git a/meta/recipes-core/udev/udev-extraconf/mount.sh b/meta/recipes-core/udev/udev-extraconf/mount.sh
index d760328a09f..067d4e2a16f 100644
--- a/meta/recipes-core/udev/udev-extraconf/mount.sh
+++ b/meta/recipes-core/udev/udev-extraconf/mount.sh
@@ -4,10 +4,28 @@
#
# Attempt to mount any added block devices and umount any removed devices
+BASE_INIT="`readlink "@base_sbindir@/init"`"
+INIT_SYSTEMD="@systemd_unitdir@/systemd"
+
+if [ "x$BASE_INIT" = "x$INIT_SYSTEMD" ];then
+ # systemd as init uses systemd-mount to mount block devices
+ MOUNT="/usr/bin/systemd-mount"
+ UMOUNT="/usr/bin/systemd-umount"
+
+ if [ -x $MOUNT ] && [ -x $UMOUNT ];
+ then
+ logger "Using systemd-mount to finish mount"
+ else
+ logger "Linux init is using systemd, so please install systemd-mount to finish mount"
+ exit 1
+ fi
+else
+ MOUNT="/bin/mount"
+ UMOUNT="/bin/umount"
+fi
-MOUNT="/bin/mount"
PMOUNT="/usr/bin/pmount"
-UMOUNT="/bin/umount"
+
for line in `grep -h -v ^# /etc/udev/mount.blacklist /etc/udev/mount.blacklist.d/*`
do
if [ ` expr match "$DEVNAME" "$line" ` -gt 0 ];
@@ -17,7 +35,35 @@ do
fi
done
-automount() {
+automount_systemd() {
+ name="`basename "$DEVNAME"`"
+
+ [ -d "/run/media/$name" ] || mkdir -p "/run/media/$name"
+
+ MOUNT="$MOUNT -o silent"
+
+ # If filesystemtype is vfat, change the ownership group to 'disk', and
+ # grant it with w/r/x permissions.
+ case $ID_FS_TYPE in
+ vfat|fat)
+ MOUNT="$MOUNT -o umask=007,gid=`awk -F':' '/^disk/{print $3}' /etc/group`"
+ ;;
+ # TODO
+ *)
+ ;;
+ esac
+
+ if ! $MOUNT --no-block -t auto $DEVNAME "/run/media/$name"
+ then
+ #logger "mount.sh/automount" "$MOUNT -t auto $DEVNAME \"/run/media/$name\" failed!"
+ rm_dir "/run/media/$name"
+ else
+ logger "mount.sh/automount" "Auto-mount of [/run/media/$name] successful"
+ touch "/tmp/.automount-$name"
+ fi
+}
+
+automount() {
name="`basename "$DEVNAME"`"
! test -d "/run/media/$name" && mkdir -p "/run/media/$name"
@@ -26,7 +72,7 @@ automount() {
then
MOUNT="$MOUNT -o silent"
fi
-
+
# If filesystem type is vfat, change the ownership group to 'disk', and
# grant it with w/r/x permissions.
case $ID_FS_TYPE in
@@ -68,23 +114,26 @@ if [ "$ACTION" = "add" ] && [ -n "$DEVNAME" ] && [ -n "$ID_FS_TYPE" -o "$media_t
elif [ -x $MOUNT ]; then
$MOUNT $DEVNAME 2> /dev/null
fi
-
+
# If the device isn't mounted at this point, it isn't
# configured in fstab (note the root filesystem can show up as
# /dev/root in /proc/mounts, so check the device number too)
- if expr $MAJOR "*" 256 + $MINOR != `stat -c %d /`; then
- grep -q "^$DEVNAME " /proc/mounts || automount
- fi
+ if expr $MAJOR "*" 256 + $MINOR != `stat -c %d /`; then
+ if [ "`basename $MOUNT`" = "systemd-mount" ];then
+ grep -q "^$DEVNAME " /proc/mounts || automount_systemd
+ else
+ grep -q "^$DEVNAME " /proc/mounts || automount
+ fi
+ fi
fi
-
if [ "$ACTION" = "remove" ] || [ "$ACTION" = "change" ] && [ -x "$UMOUNT" ] && [ -n "$DEVNAME" ]; then
- for mnt in `cat /proc/mounts | grep "$DEVNAME" | cut -f 2 -d " " `
- do
- $UMOUNT $mnt
- done
-
- # Remove empty directories from auto-mounter
- name="`basename "$DEVNAME"`"
- test -e "/tmp/.automount-$name" && rm_dir "/run/media/$name"
+ for mnt in `cat /proc/mounts | grep "$DEVNAME" | cut -f 2 -d " " `
+ do
+ $UMOUNT $mnt
+ done
+
+ # Remove empty directories from auto-mounter
+ name="`basename "$DEVNAME"`"
+ test -e "/tmp/.automount-$name" && rm_dir "/run/media/$name"
fi
diff --git a/meta/recipes-core/udev/udev-extraconf_1.1.bb b/meta/recipes-core/udev/udev-extraconf_1.1.bb
index 43a1cff731e..90f933d981f 100644
--- a/meta/recipes-core/udev/udev-extraconf_1.1.bb
+++ b/meta/recipes-core/udev/udev-extraconf_1.1.bb
@@ -29,6 +29,9 @@ do_install() {
install -d ${D}${sysconfdir}/udev/scripts/
install -m 0755 ${WORKDIR}/mount.sh ${D}${sysconfdir}/udev/scripts/mount.sh
+ sed -i 's|@systemd_unitdir@|${systemd_unitdir}|g' ${D}${sysconfdir}/udev/scripts/mount.sh
+ sed -i 's|@base_sbindir@|${base_sbindir}|g' ${D}${sysconfdir}/udev/scripts/mount.sh
+
install -m 0755 ${WORKDIR}/network.sh ${D}${sysconfdir}/udev/scripts
}
diff --git a/meta/recipes-core/update-rc.d/update-rc.d/add-verbose.patch b/meta/recipes-core/update-rc.d/update-rc.d/add-verbose.patch
deleted file mode 100644
index fb443ff15e6..00000000000
--- a/meta/recipes-core/update-rc.d/update-rc.d/add-verbose.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-Upstream-Status: Pending
-
---- update-rc.d/update-rc.d.org 2005-01-03 00:30:47.000000000 +0200
-+++ update-rc.d/update-rc.d 2007-12-01 19:41:08.000000000 +0200
-@@ -19,6 +19,7 @@
- notreally=0
- force=0
- dostart=0
-+verbose=0
-
- usage()
- {
-@@ -28,6 +29,7 @@
- update-rc.d [-n] [-r <root>] [-s] <basename> start|stop NN runlvl [runlvl] [...] .
- -n: not really
- -f: force
-+ -v: verbose
- -r: alternate root path (default is /)
- -s: invoke start methods if appropriate to current runlevel
- EOF
-@@ -69,7 +71,7 @@
- lev=`echo $2 | cut -d/ -f1`
- nn=`echo $2 | cut -d/ -f2`
- fn="${etcd}${lev}.d/${startstop}${nn}${bn}"
-- echo " $fn -> ../init.d/$bn"
-+ [ $verbose -eq 1 ] && echo " $fn -> ../init.d/$bn"
- if [ $notreally -eq 0 ]; then
- mkdir -p `dirname $fn`
- ln -s ../init.d/$bn $fn
-@@ -89,7 +91,7 @@
- exit 0
- fi
-
-- echo " Adding system startup for $initd/$bn ..."
-+ echo " Adding system startup for $initd/$bn."
-
- for i in $startlinks; do
- dolink S $i
-@@ -105,6 +107,10 @@
- shift
- continue
- ;;
-+ -v) verbose=1
-+ shift
-+ continue
-+ ;;
- -f) force=1
- shift
- continue
diff --git a/meta/recipes-core/update-rc.d/update-rc.d/check-if-symlinks-are-valid.patch b/meta/recipes-core/update-rc.d/update-rc.d/check-if-symlinks-are-valid.patch
deleted file mode 100644
index 075171a5a38..00000000000
--- a/meta/recipes-core/update-rc.d/update-rc.d/check-if-symlinks-are-valid.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-Check if symlinks are valid
-
-When using root option and $initd/$bn is a symlink, the script would fail because
-the symlink points to a path on target. For example:
-
-/path/to/target/rootfs/etc/init.d/syslog -> /etc/init.d/syslog.busybox
-
-Hence, [ -f /path/to/target/rootfs/etc/init.d/syslog ] condition would return
-false.
-
-This patch adds the posibility to check whether the file the symlink points to
-actually exists in rootfs path and then continue.
-
-Upstream-Status: Pending
-
-Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
-Signed-off-by: Christopher Larson <chris_larson@mentor.com>
-
-Index: git/update-rc.d
-===================================================================
---- git.orig/update-rc.d
-+++ git/update-rc.d
-@@ -147,13 +147,34 @@ fi
- bn=$1
- shift
-
-+sn=$initd/$bn
-+if [ -L "$sn" -a -n "$root" ]; then
-+ if which readlink >/dev/null; then
-+ while true; do
-+ linksn="$(readlink "$sn")"
-+ if [ -z "$linksn" ]; then
-+ break
-+ fi
-+
-+ sn="$linksn"
-+ case "$sn" in
-+ /*) sn="$root$sn" ;;
-+ *) sn="$initd/$sn" ;;
-+ esac
-+ done
-+ else
-+ echo "update-rc.d: readlink tool not present, cannot check whether \
-+ $sn symlink points to a valid file." >&2
-+ fi
-+fi
-+
- if [ $1 != "remove" ]; then
-- if [ ! -f "$initd/$bn" ]; then
-+ if [ ! -f "$sn" ]; then
- echo "update-rc.d: $initd/$bn: file does not exist" >&2
- exit 1
- fi
- else
-- if [ -f "$initd/$bn" ]; then
-+ if [ -f "$sn" ]; then
- if [ $force -eq 1 ]; then
- echo "update-rc.d: $initd/$bn exists during rc.d purge (continuing)" >&2
- else
diff --git a/meta/recipes-core/update-rc.d/update-rc.d/fix-to-handle-priority-numbers-correctly.patch b/meta/recipes-core/update-rc.d/update-rc.d/fix-to-handle-priority-numbers-correctly.patch
deleted file mode 100644
index 85bc234a275..00000000000
--- a/meta/recipes-core/update-rc.d/update-rc.d/fix-to-handle-priority-numbers-correctly.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Upstream-Status: Pending
-
-Fix to handle priority numbers correctly.
-Previously, if the priority number is '08' or '09', for example,
-the script cannot handle them correctly as these numbers are treated
-as octal numbers.
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- update-rc.d | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/update-rc.d b/update-rc.d
-index ec50d15..c70b859 100644
---- a/update-rc.d
-+++ b/update-rc.d
-@@ -205,7 +205,7 @@ case $1 in
- exit 1
- fi
- shift
-- NN=`printf %02d $1`
-+ NN=`printf %02d $(expr $1 + 0)`
- shift
- while [ "x$1" != "x." ]; do
- if [ $# -eq 0 ]; then
---
-1.7.9.5
-
diff --git a/meta/recipes-core/update-rc.d/update-rc.d_0.7.bb b/meta/recipes-core/update-rc.d/update-rc.d_0.8.bb
index 76d4312d881..baa21aeae13 100644
--- a/meta/recipes-core/update-rc.d/update-rc.d_0.7.bb
+++ b/meta/recipes-core/update-rc.d/update-rc.d_0.8.bb
@@ -6,16 +6,9 @@ SECTION = "base"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://update-rc.d;beginline=5;endline=15;md5=148a48321b10eb37c1fa3ee02b940a75"
-PR = "r5"
+SRC_URI = "git://git.yoctoproject.org/update-rc.d"
+SRCREV = "22e0692898c3e7ceedc8eb5ff4ec8e0b9c340b2d"
-# Revision corresponding to tag update-rc.d_0.7
-SRCREV = "eca680ddf28d024954895f59a241a622dd575c11"
-
-SRC_URI = "git://github.com/philb/update-rc.d.git \
- file://add-verbose.patch \
- file://check-if-symlinks-are-valid.patch \
- file://fix-to-handle-priority-numbers-correctly.patch \
- "
UPSTREAM_CHECK_COMMITS = "1"
S = "${WORKDIR}/git"
@@ -30,4 +23,4 @@ do_install() {
install -m 0755 ${S}/update-rc.d ${D}${sbindir}/update-rc.d
}
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-core/util-linux/util-linux.inc b/meta/recipes-core/util-linux/util-linux.inc
index 157416df48d..c2e02e847a8 100644
--- a/meta/recipes-core/util-linux/util-linux.inc
+++ b/meta/recipes-core/util-linux/util-linux.inc
@@ -35,7 +35,7 @@ PACKAGES =+ "util-linux-agetty util-linux-fdisk util-linux-cfdisk util-linux-sfd
util-linux-lsblk util-linux-mkfs.cramfs util-linux-fstrim \
util-linux-partx util-linux-hwclock util-linux-mountpoint \
util-linux-findfs util-linux-getopt util-linux-sulogin util-linux-prlimit \
- util-linux-ionice util-linux-switch-root"
+ util-linux-ionice util-linux-switch-root util-linux-unshare"
PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'pylibmount', 'util-linux-pylibmount', '', d)}"
PACKAGES =+ "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'util-linux-runuser util-linux-su', '', d)}"
@@ -46,7 +46,7 @@ SHARED_EXTRA_OECONF = "--disable-use-tty-group \
--enable-kill --enable-last --enable-mesg --enable-partx \
--enable-raw --enable-rfkill --disable-login \
--disable-vipw --disable-newgrp --disable-chfn-chsh \
- --enable-write --enable-mount \
+ --enable-write --enable-mount --enable-unshare \
--enable-libuuid --enable-libblkid --enable-fsck \
--disable-minix --disable-bfs --without-udev \
usrsbin_execdir='${sbindir}' \
@@ -75,7 +75,7 @@ FILES_${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/libmount/pylibmount.la"
FILES_util-linux-agetty = "${base_sbindir}/agetty"
FILES_util-linux-fdisk = "${base_sbindir}/fdisk.${BPN}"
-FILES_util-linux-fstrim = "${base_sbindir}/fstrim"
+FILES_util-linux-fstrim = "${base_sbindir}/fstrim.${BPN}"
FILES_util-linux-cfdisk = "${base_sbindir}/cfdisk"
FILES_util-linux-sfdisk = "${sbindir}/sfdisk"
FILES_util-linux-swaponoff = "${base_sbindir}/swapon.${BPN} ${base_sbindir}/swapoff.${BPN}"
@@ -86,7 +86,7 @@ FILES_util-linux-umount = "${base_bindir}/umount.${BPN}"
FILES_util-linux-readprofile = "${sbindir}/readprofile.${BPN}"
FILES_util-linux-uuidgen = "${bindir}/uuidgen"
FILES_util-linux-uuidd = "${sbindir}/uuidd"
-FILES_util-linux-rfkill = "${base_bindir}/rfkill*"
+FILES_util-linux-rfkill = "${sbindir}/rfkill*"
FILES_util-linux-partx = "${sbindir}/partx"
FILES_util-linux-hwclock = "${base_sbindir}/hwclock.${BPN}"
FILES_util-linux-findfs = "${sbindir}/findfs"
@@ -113,6 +113,7 @@ FILES_util-linux-sulogin = "${base_sbindir}/sulogin*"
FILES_util-linux-mountpoint = "${base_bindir}/mountpoint.${BPN}"
FILES_util-linux-switch-root = "${base_sbindir}/switch_root.${BPN}"
+FILES_util-linux-unshare = "${bindir}/unshare.${BPN}"
# Util-linux' blkid replaces the e2fsprogs one
FILES_util-linux-blkid = "${base_sbindir}/blkid*"
@@ -157,7 +158,7 @@ do_install () {
sbinprogs="agetty ctrlaltdel cfdisk vipw vigr"
sbinprogs_a="pivot_root hwclock mkswap mkfs.minix fsck.minix losetup swapon swapoff fdisk fsck blkid blockdev fstrim sulogin switch_root nologin"
- binprogs_a="dmesg getopt kill more umount mount login rfkill su mountpoint"
+ binprogs_a="dmesg getopt kill more umount mount login su mountpoint"
if [ "${base_sbindir}" != "${sbindir}" ]; then
mkdir -p ${D}${base_sbindir}
@@ -205,8 +206,8 @@ do_install_append_class-native () {
ALTERNATIVE_PRIORITY = "80"
ALTERNATIVE_${PN} = "dmesg kill more mkswap blockdev pivot_root switch_root"
-ALTERNATIVE_${PN} += "hexdump last lastb logger mesg renice wall"
-ALTERNATIVE_${PN} += "setsid chrt flock utmpdump eject nologin taskset"
+ALTERNATIVE_${PN} += "hexdump last lastb logger mesg renice wall unshare"
+ALTERNATIVE_${PN} += "setsid chrt flock utmpdump eject nologin taskset fallocate"
ALTERNATIVE_LINK_NAME[dmesg] = "${base_bindir}/dmesg"
ALTERNATIVE_LINK_NAME[kill] = "${base_bindir}/kill"
@@ -216,6 +217,8 @@ ALTERNATIVE_LINK_NAME[blockdev] = "${base_sbindir}/blockdev"
ALTERNATIVE_LINK_NAME[pivot_root] = "${base_sbindir}/pivot_root"
ALTERNATIVE_LINK_NAME[switch_root] = "${base_sbindir}/switch_root"
ALTERNATIVE_LINK_NAME[eject] = "${bindir}/eject"
+ALTERNATIVE_LINK_NAME[unshare] = "${bindir}/unshare"
+ALTERNATIVE_LINK_NAME[fallocate] = "${bindir}/fallocate"
ALTERNATIVE_LINK_NAME[nologin] = "${base_sbindir}/nologin"
ALTERNATIVE_${PN}-doc = "mountpoint.1 last.1 lastb.1 mesg.1 wall.1 nologin.8 sulogin.8 utmpdump.1 rfkill.8 kill.1 libblkid.3 blkid.8 findfs.8 fsck.8 uuid.3 eject.1 logger.1"
@@ -244,6 +247,9 @@ ALTERNATIVE_LINK_NAME[hwclock] = "${base_sbindir}/hwclock"
ALTERNATIVE_util-linux-fdisk = "fdisk"
ALTERNATIVE_LINK_NAME[fdisk] = "${base_sbindir}/fdisk"
+ALTERNATIVE_util-linux-fstrim = "fstrim"
+ALTERNATIVE_LINK_NAME[fstrim] = "${base_sbindir}/fstrim"
+
ALTERNATIVE_util-linux-agetty = "getty"
ALTERNATIVE_LINK_NAME[getty] = "${base_sbindir}/getty"
ALTERNATIVE_TARGET[getty] = "${base_sbindir}/agetty"
@@ -272,7 +278,6 @@ ALTERNATIVE_LINK_NAME[blkid] = "${base_sbindir}/blkid"
ALTERNATIVE_util-linux-rfkill = "rfkill"
ALTERNATIVE_LINK_NAME[rfkill] = "${sbindir}/rfkill"
-ALTERNATIVE_TARGET[rfkill] = "${base_bindir}/rfkill"
ALTERNATIVE_util-linux-getopt = "getopt"
ALTERNATIVE_LINK_NAME[getopt] = "${base_bindir}/getopt"
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 46d4d376507..748b6ef0969 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
@@ -5,15 +5,16 @@ Revert run.sh script accordingly to serialize running tests
Signed-off-by: Tudor Florea <tudor.florea@enea.com>
Upstream-Status: Inappropriate
-diff -ruN a/configure.ac b/configure.ac
---- a/configure.ac 2014-05-27 12:37:42.119772658 +0200
-+++ b/configure.ac 2014-05-27 12:41:46.225573272 +0200
-@@ -10,7 +10,7 @@
+Index: util-linux-2.32/configure.ac
+===================================================================
+--- util-linux-2.32.orig/configure.ac
++++ util-linux-2.32/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.
AC_USE_SYSTEM_EXTENSIONS
--AM_INIT_AUTOMAKE([-Wall foreign 1.10 tar-pax dist-bzip2 no-dist-gzip dist-xz -Wno-portability subdir-objects])
-+AM_INIT_AUTOMAKE([-Wall foreign 1.10 tar-pax dist-bzip2 no-dist-gzip dist-xz -Wno-portability subdir-objects serial-tests])
-
+-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])
+
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_2.31.bb b/meta/recipes-core/util-linux/util-linux_2.32.1.bb
index 7f7a78ef60e..a616d85bb2f 100644
--- a/meta/recipes-core/util-linux/util-linux_2.31.bb
+++ b/meta/recipes-core/util-linux/util-linux_2.32.1.bb
@@ -1,4 +1,4 @@
-MAJOR_VERSION = "2.31"
+MAJOR_VERSION = "2.32"
require util-linux.inc
# To support older hosts, we need to patch and/or revert
@@ -15,16 +15,14 @@ SRC_URI += "file://configure-sbindir.patch \
file://display_testname_for_subtest.patch \
file://avoid_parallel_tests.patch \
"
-SRC_URI[md5sum] = "5b6821c403c3cc6e7775f74df1882a20"
-SRC_URI[sha256sum] = "f9be7cdcf4fc5c5064a226599acdda6bdf3d86c640152ba01ea642d91108dc8a"
+SRC_URI[md5sum] = "9e5b1b8c1dc99455bdb6b462cf9436d9"
+SRC_URI[sha256sum] = "86e6707a379c7ff5489c218cfaf1e3464b0b95acf7817db0bc5f179e356a67b2"
CACHED_CONFIGUREVARS += "scanf_cv_alloc_modifier=ms"
EXTRA_OECONF_class-native = "${SHARED_EXTRA_OECONF} \
- --disable-fallocate \
--disable-use-tty-group \
"
EXTRA_OECONF_class-nativesdk = "${SHARED_EXTRA_OECONF} \
- --disable-fallocate \
--disable-use-tty-group \
"
diff --git a/meta/recipes-devtools/autoconf-archive/autoconf-archive_2016.09.16.bb b/meta/recipes-devtools/autoconf-archive/autoconf-archive_2018.03.13.bb
index 89d57ac0792..7d62e52ab80 100644
--- a/meta/recipes-devtools/autoconf-archive/autoconf-archive_2016.09.16.bb
+++ b/meta/recipes-devtools/autoconf-archive/autoconf-archive_2018.03.13.bb
@@ -2,12 +2,12 @@ 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=d32239bcb673463ab874e80d47fae504 \
+LIC_FILES_CHKSUM = "file://COPYING;md5=11cc2d3ee574f9d6b7ee797bdce4d423 \
file://COPYING.EXCEPTION;md5=fdef168ebff3bc2f13664c365a5fb515"
SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz"
-SRC_URI[md5sum] = "bf19d4cddce260b3c3e1d51d42509071"
-SRC_URI[sha256sum] = "e8f2efd235f842bad2f6938bf4a72240a5e5fcd248e8444335e63beb60fabd82"
+SRC_URI[md5sum] = "46b13a5936372297b6d49980327a3c35"
+SRC_URI[sha256sum] = "6175f90d9fa64c4d939bdbb3e8511ae0ee2134863a2c7bf8d9733819efa6e159"
inherit autotools allarch
diff --git a/meta/recipes-devtools/autoconf/autoconf.inc b/meta/recipes-devtools/autoconf/autoconf.inc
index df81bc61079..b82af5a5fa8 100644
--- a/meta/recipes-devtools/autoconf/autoconf.inc
+++ b/meta/recipes-devtools/autoconf/autoconf.inc
@@ -10,24 +10,49 @@ 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-stat \
- perl-module-file-find \
perl-module-getopt-long \
perl-module-io-file \
perl-module-posix \
- perl-module-data-dumper \
+ perl-module-thread-queue \
+ perl-module-threads \
"
RDEPENDS_${PN}_class-native = "m4-native gnu-config-native"
-RDEPENDS_${PN}_class-nativesdk = "nativesdk-m4 nativesdk-gnu-config"
+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-stat \
+ nativesdk-perl-module-getopt-long \
+ nativesdk-perl-module-io-file \
+ nativesdk-perl-module-posix \
+ nativesdk-perl-module-thread-queue \
+ nativesdk-perl-module-threads \
+ "
SRC_URI = "${GNU_MIRROR}/autoconf/autoconf-${PV}.tar.gz \
file://program_prefix.patch"
diff --git a/meta/recipes-devtools/automake/automake/0001-automake-Add-default-libtool_tag-to-cppasm.patch b/meta/recipes-devtools/automake/automake/0001-automake-Add-default-libtool_tag-to-cppasm.patch
index 1221f130679..deb1d03503d 100644
--- a/meta/recipes-devtools/automake/automake/0001-automake-Add-default-libtool_tag-to-cppasm.patch
+++ b/meta/recipes-devtools/automake/automake/0001-automake-Add-default-libtool_tag-to-cppasm.patch
@@ -1,4 +1,4 @@
-From 25a8ac30486798d23f516722d73eb622e6264f28 Mon Sep 17 00:00:00 2001
+From b3c6e1971786cd93a2e3017c92bfbfe96baaf2f7 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 26 Jul 2017 11:19:56 -0700
Subject: [PATCH] automake: Add default libtool_tag to cppasm.
@@ -6,19 +6,19 @@ Subject: [PATCH] automake: Add default libtool_tag to cppasm.
* bin/automake.in (register_language): Define default libtool tag to be CC
since CPPASCOMPILE is using CC to call assembler
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
Upstream-Status: Submitted
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
bin/automake.in | 1 +
1 file changed, 1 insertion(+)
-Index: automake-1.15.1/bin/automake.in
-===================================================================
---- automake-1.15.1.orig/bin/automake.in
-+++ automake-1.15.1/bin/automake.in
-@@ -831,6 +831,7 @@ register_language ('name' => 'cppasm',
- 'compiler' => 'CPPASCOMPILE',
+diff --git a/bin/automake.in b/bin/automake.in
+index 3a66965..08ba09a 100644
+--- a/bin/automake.in
++++ b/bin/automake.in
+@@ -898,6 +898,7 @@ register_language ('name' => 'cppasm',
+ 'libtool_tag' => 'CC',
'compile_flag' => '-c',
'output_flag' => '-o',
+ 'libtool_tag' => 'CC',
diff --git a/meta/recipes-devtools/automake/automake/0001-build-fix-race-in-parallel-builds.patch b/meta/recipes-devtools/automake/automake/0001-build-fix-race-in-parallel-builds.patch
new file mode 100644
index 00000000000..591fce1bf16
--- /dev/null
+++ b/meta/recipes-devtools/automake/automake/0001-build-fix-race-in-parallel-builds.patch
@@ -0,0 +1,65 @@
+From 592eb55b248a765abfc796fccb68baa3d53745ac Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 26 Jul 2018 00:58:12 -0700
+Subject: [PATCH] build: fix race in parallel builds
+
+The automake-$(APIVERSION) is a hardlink of automake, if it is
+created later than update_mans executing, there is a failure
+[snip]
+|: && mkdir -p doc && ./pre-inst-env /usr/bin/env perl
+../automake-1.16.1/doc/help2man --output=doc/aclocal-1.16.1
+aclocal-1.16
+|help2man: can't get `--help' info from aclocal-1.16
+|Try `--no-discard-stderr' if option outputs to stderr
+Makefile:3693: recipe for target 'doc/aclocal-1.16.1' failed
+[snip]
+
+The automake_script is required by update_mans and update_mans
+invokes automake-$(APIVERSION) rather than automake to generate
+doc, so we should assign `automake-$(APIVERSION)' to automake_script.
+
+The same reason to tweak aclocal_script.
+
+* bin/local.mk: correct automake_script/aclocal_script
+
+Upstream-Status: Submitted [automake-patches@gnu.org]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ Makefile.in | 4 ++--
+ bin/local.mk | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index c3e934c..7cddb8d 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -691,8 +691,8 @@ bin_SCRIPTS = bin/automake bin/aclocal
+ # Used by maintainer checks and such.
+ automake_in = $(srcdir)/bin/automake.in
+ aclocal_in = $(srcdir)/bin/aclocal.in
+-automake_script = bin/automake
+-aclocal_script = bin/aclocal
++automake_script = bin/automake-$(APIVERSION)
++aclocal_script = bin/aclocal-$(APIVERSION)
+ AUTOMAKESOURCES = $(automake_in) $(aclocal_in)
+ info_TEXINFOS = doc/automake.texi doc/automake-history.texi
+ doc_automake_TEXINFOS = doc/fdl.texi
+diff --git a/bin/local.mk b/bin/local.mk
+index 97b38db..058ca99 100644
+--- a/bin/local.mk
++++ b/bin/local.mk
+@@ -31,8 +31,8 @@ CLEANFILES += \
+ # Used by maintainer checks and such.
+ automake_in = $(srcdir)/%D%/automake.in
+ aclocal_in = $(srcdir)/%D%/aclocal.in
+-automake_script = %D%/automake
+-aclocal_script = %D%/aclocal
++automake_script = %D%/automake-$(APIVERSION)
++aclocal_script = %D%/aclocal-$(APIVERSION)
+
+ AUTOMAKESOURCES = $(automake_in) $(aclocal_in)
+ TAGS_FILES += $(AUTOMAKESOURCES)
+--
+2.7.4
+
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
index 96b5a3d6b2a..1592c02cb95 100644
--- 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
@@ -1,4 +1,4 @@
-From 41e06b7a354774913dcd2e32a35440e407843357 Mon Sep 17 00:00:00 2001
+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
@@ -15,24 +15,24 @@ 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 ++-
- t/wrap/aclocal.in | 3 ++-
- t/wrap/automake.in | 3 ++-
- 4 files changed, 8 insertions(+), 4 deletions(-)
+ bin/aclocal.in | 3 ++-
+ bin/automake.in | 3 ++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
-Index: automake-1.15.1/bin/aclocal.in
-===================================================================
---- automake-1.15.1.orig/bin/aclocal.in
-+++ automake-1.15.1/bin/aclocal.in
+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@
-@@ -33,6 +33,7 @@ BEGIN
+@@ -32,6 +32,7 @@ BEGIN
}
use strict;
@@ -40,17 +40,17 @@ Index: automake-1.15.1/bin/aclocal.in
use Automake::Config;
use Automake::General;
-Index: automake-1.15.1/bin/automake.in
-===================================================================
---- automake-1.15.1.orig/bin/automake.in
-+++ automake-1.15.1/bin/automake.in
+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";
+@@ -28,6 +28,7 @@ eval 'case $# in 0) exec @PERL@ -S "$0";; *) exec @PERL@ -S "$0" "$@";; esac'
package Automake;
use strict;
@@ -58,39 +58,3 @@ Index: automake-1.15.1/bin/automake.in
BEGIN
{
-Index: automake-1.15.1/t/wrap/aclocal.in
-===================================================================
---- automake-1.15.1.orig/t/wrap/aclocal.in
-+++ automake-1.15.1/t/wrap/aclocal.in
-@@ -1,4 +1,4 @@
--#!@PERL@ -w
-+#!@PERL@
- # @configure_input@
-
- # Copyright (C) 2012-2017 Free Software Foundation, Inc.
-@@ -19,6 +19,7 @@
- BEGIN
- {
- use strict;
-+ use warnings;
- @Aclocal::perl_libdirs = ('@abs_top_srcdir@/lib');
- unshift @Aclocal::perl_libdirs, '@abs_top_builddir@/lib'
- if '@srcdir@' ne '.';
-Index: automake-1.15.1/t/wrap/automake.in
-===================================================================
---- automake-1.15.1.orig/t/wrap/automake.in
-+++ automake-1.15.1/t/wrap/automake.in
-@@ -1,4 +1,4 @@
--#!@PERL@ -w
-+#!@PERL@
- # @configure_input@
-
- # Copyright (C) 2012-2017 Free Software Foundation, Inc.
-@@ -19,6 +19,7 @@
- BEGIN
- {
- use strict;
-+ use warnings;
- @Automake::perl_libdirs = ('@abs_top_srcdir@/lib');
- unshift @Automake::perl_libdirs, '@abs_top_builddir@/lib'
- if '@srcdir@' ne '.';
diff --git a/meta/recipes-devtools/automake/automake/buildtest.patch b/meta/recipes-devtools/automake/automake/buildtest.patch
index c32cd1fb11e..b88b9e86938 100644
--- a/meta/recipes-devtools/automake/automake/buildtest.patch
+++ b/meta/recipes-devtools/automake/automake/buildtest.patch
@@ -1,13 +1,25 @@
+From a860b28069785aa5bf2fa9b671287de9af5004ff Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B6rn=20Stenberg?= <bjst@enea.com>
+Date: Wed, 19 Dec 2012 17:18:27 +0100
+Subject: [PATCH] Add a new distro feature "ptest".
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
Split "check-TESTS" into a buildtest and runtest target, so that they can
be run separately.
Signed-off-by: Björn Stenberg <bjst@enea.com>
Upstream-Status: Pending
-Index: automake-1.15.1/lib/am/check.am
-===================================================================
---- automake-1.15.1.orig/lib/am/check.am
-+++ automake-1.15.1/lib/am/check.am
+---
+ lib/am/check.am | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/lib/am/check.am b/lib/am/check.am
+index e0db651..de137fa 100644
+--- a/lib/am/check.am
++++ b/lib/am/check.am
@@ -41,7 +41,7 @@ am__tty_colors = { \
fi; \
}
diff --git a/meta/recipes-devtools/automake/automake/new_rt_path_for_test-driver.patch b/meta/recipes-devtools/automake/automake/new_rt_path_for_test-driver.patch
index 2c6594f523e..1f717223348 100644
--- a/meta/recipes-devtools/automake/automake/new_rt_path_for_test-driver.patch
+++ b/meta/recipes-devtools/automake/automake/new_rt_path_for_test-driver.patch
@@ -1,22 +1,32 @@
-Set relative to top_builddir path in Makefile to access test-driver
+From f78dfa39139d528c94d72f27994f337f2fd3b6bd Mon Sep 17 00:00:00 2001
+From: Adrian Calianu <adrian.calianu@enea.com>
+Date: Thu, 25 Feb 2016 16:08:04 +0100
+Subject: [PATCH] Set relative to top_builddir path in Makefile to access
+ test-driver
Signed-off-by: Adrian Calianu <adrian.calianu@enea.com>
Upstream-Status: Pending
Bug-Report: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19042
+---
+ bin/automake.in | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/bin/automake.in b/bin/automake.in
+index a52a489..8377d20 100644
--- a/bin/automake.in
+++ b/bin/automake.in
-@@ -272,6 +272,9 @@
+@@ -324,6 +324,9 @@ my $config_aux_dir_set_in_configure_ac = 0;
# $AM_CONFIG_AUX_DIR is prefixed with $(top_srcdir), so it can be used
# in Makefiles.
my $am_config_aux_dir = '';
+# Directory used at runtime like running test-driver that should not
+# depend on $(top_srcdir)
+my $am_config_rt_aux_dir = '';
-
+
# Directory to search for AC_LIBSOURCE files, as set by AC_CONFIG_LIBOBJ_DIR
# in configure.ac.
-@@ -4700,7 +4703,7 @@
+@@ -4854,7 +4857,7 @@ sub handle_per_suffix_test
{
require_conf_file ("parallel-tests", FOREIGN, 'test-driver');
define_variable ("${pfx}LOG_DRIVER",
@@ -25,7 +35,7 @@ Bug-Report: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19042
INTERNAL);
}
my $driver = '$(' . $pfx . 'LOG_DRIVER)';
-@@ -7284,6 +7287,10 @@
+@@ -7440,6 +7443,10 @@ sub locate_aux_dir ()
$am_config_aux_dir =
'$(top_srcdir)' . ($config_aux_dir eq '.' ? "" : "/$config_aux_dir");
$am_config_aux_dir =~ s,/*$,,;
@@ -34,3 +44,5 @@ Bug-Report: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19042
+ '$(top_builddir)' . ($config_aux_dir eq '.' ? "" : "/$config_aux_dir");
+ $am_config_rt_aux_dir =~ s,/*$,,;
}
+
+
diff --git a/meta/recipes-devtools/automake/automake/performance.patch b/meta/recipes-devtools/automake/automake/performance.patch
index 3e6d5694dc3..a8ba6592fa2 100644
--- a/meta/recipes-devtools/automake/automake/performance.patch
+++ b/meta/recipes-devtools/automake/automake/performance.patch
@@ -1,15 +1,24 @@
+From cd47c328cb53546891bb3dc7c9b2c54ed01cc6d1 Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Mon, 7 Dec 2015 18:28:05 +0000
+Subject: [PATCH] automake: Remove delays in configure scripts using automake
+
By default automake puts "sleep 1" into the start of configure scripts
-which adds pointless delays to them. Rather than do this, lets just assume
+which adds pointless delays to them. Rather than do this, lets just assume
our systems are sane.
RP
2015/12/7
Upstream-Status: Inappropriate
-Index: automake-1.15/m4/sanity.m4
-===================================================================
---- automake-1.15.orig/m4/sanity.m4
-+++ automake-1.15/m4/sanity.m4
+---
+ m4/sanity.m4 | 55 -------------------------------------------------------
+ 1 file changed, 55 deletions(-)
+
+diff --git a/m4/sanity.m4 b/m4/sanity.m4
+index eaac218..bfdfe88 100644
+--- a/m4/sanity.m4
++++ b/m4/sanity.m4
@@ -23,60 +23,5 @@ case $srcdir in
AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
esac
diff --git a/meta/recipes-devtools/automake/automake/python-libdir.patch b/meta/recipes-devtools/automake/automake/python-libdir.patch
index 2a48b133eb1..ee1f725f764 100644
--- a/meta/recipes-devtools/automake/automake/python-libdir.patch
+++ b/meta/recipes-devtools/automake/automake/python-libdir.patch
@@ -1,7 +1,7 @@
-From 472a3d36c97ef7535f05d6c185edcbc22b0074c4 Mon Sep 17 00:00:00 2001
+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 1/4] automake: Update for python.m4 to respect libdir
+Subject: [PATCH] automake: Update for python.m4 to respect libdir
Upstream-Status: Inappropriate [embedded specific]
@@ -17,10 +17,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 7 insertions(+), 20 deletions(-)
diff --git a/m4/python.m4 b/m4/python.m4
-index 5b2c695..ed19261 100644
+index 63c0a0e..7bbd2d2 100644
--- a/m4/python.m4
+++ b/m4/python.m4
-@@ -91,12 +91,13 @@ AC_DEFUN([AM_PATH_PYTHON],
+@@ -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])
@@ -36,7 +36,7 @@ index 5b2c695..ed19261 100644
AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
dnl At times (like when building shared libraries) you may want
-@@ -141,14 +142,7 @@ except ImportError:
+@@ -144,14 +145,7 @@ except ImportError:
else
am_py_prefix=$prefix
fi
@@ -52,7 +52,7 @@ index 5b2c695..ed19261 100644
case $am_cv_python_pythondir in
$am_py_prefix*)
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
-@@ -158,7 +152,7 @@ sys.stdout.write(sitedir)"`
+@@ -161,7 +155,7 @@ sys.stdout.write(sitedir)"`
case $am_py_prefix in
/usr|/System*) ;;
*)
@@ -61,7 +61,7 @@ index 5b2c695..ed19261 100644
;;
esac
;;
-@@ -183,14 +177,7 @@ sys.stdout.write(sitedir)"`
+@@ -186,14 +180,7 @@ sys.stdout.write(sitedir)"`
else
am_py_exec_prefix=$exec_prefix
fi
@@ -77,7 +77,7 @@ index 5b2c695..ed19261 100644
case $am_cv_python_pyexecdir in
$am_py_exec_prefix*)
am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
-@@ -200,7 +187,7 @@ sys.stdout.write(sitedir)"`
+@@ -203,7 +190,7 @@ sys.stdout.write(sitedir)"`
case $am_py_exec_prefix in
/usr|/System*) ;;
*)
@@ -86,6 +86,3 @@ index 5b2c695..ed19261 100644
;;
esac
;;
---
-2.8.1
-
diff --git a/meta/recipes-devtools/automake/automake_1.15.1.bb b/meta/recipes-devtools/automake/automake_1.16.1.bb
index 4f9b616b664..d82eed3c606 100644
--- a/meta/recipes-devtools/automake/automake_1.15.1.bb
+++ b/meta/recipes-devtools/automake/automake_1.16.1.bb
@@ -25,10 +25,11 @@ SRC_URI += "file://python-libdir.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] = "95df3f2d6eb8f81e70b8cb63a93c8853"
-SRC_URI[sha256sum] = "988e32527abe052307d21c8ca000aa238b914df363a617e38f4fb89f5abf6260"
+SRC_URI[md5sum] = "83cc2463a4080efd46a72ba2c9f6b8f5"
+SRC_URI[sha256sum] = "608a97523f97db32f1f5d5615c98ca69326ced2054c9f82e65bade7fc4c9dea8"
PERL = "${USRBINPATH}/perl"
PERL_class-native = "${USRBINPATH}/env perl"
diff --git a/meta/recipes-devtools/binutils/binutils-2.30.inc b/meta/recipes-devtools/binutils/binutils-2.31.inc
index 9c883acc528..76add0fe4b1 100644
--- a/meta/recipes-devtools/binutils/binutils-2.30.inc
+++ b/meta/recipes-devtools/binutils/binutils-2.31.inc
@@ -18,7 +18,7 @@ BINUPV = "${@binutils_branch_version(d)}"
UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)"
-SRCREV ?= "caa839fba66600a6c36d3639906ed9110b79c307"
+SRCREV ?= "4568e49ff799192fea4f66063fe13e2b871ec75a"
BINUTILS_GIT_URI ?= "git://sourceware.org/git/binutils-gdb.git;branch=binutils-${BINUPV}-branch;protocol=git"
SRC_URI = "\
${BINUTILS_GIT_URI} \
@@ -35,6 +35,12 @@ SRC_URI = "\
file://0013-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch \
file://0014-Detect-64-bit-MIPS-targets.patch \
file://0015-sync-with-OE-libtool-changes.patch \
+ file://0016-add-i386pep-emulation-for-x86_64.patch \
+ file://0017-improve-check-for-input-file-matching-output-file.patch \
+ file://0018-Refactored-location-where-GOT-information-is-collect.patch \
+ file://0019-Improved-robustness.-Return-FALSE-in-case-of-NULL-po.patch \
+ file://0020-Make-sure-global-symbol-is-not-an-indirect-or-warnin.patch \
+ file://0021-PLT-information-was-still-being-generated-when-symbo.patch \
"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-devtools/binutils/binutils-cross-canadian_2.30.bb b/meta/recipes-devtools/binutils/binutils-cross-canadian_2.31.bb
index 5dbaa030178..5dbaa030178 100644
--- a/meta/recipes-devtools/binutils/binutils-cross-canadian_2.30.bb
+++ b/meta/recipes-devtools/binutils/binutils-cross-canadian_2.31.bb
diff --git a/meta/recipes-devtools/binutils/binutils-cross_2.30.bb b/meta/recipes-devtools/binutils/binutils-cross_2.31.bb
index fbd1f7d25a5..fbd1f7d25a5 100644
--- a/meta/recipes-devtools/binutils/binutils-cross_2.30.bb
+++ b/meta/recipes-devtools/binutils/binutils-cross_2.31.bb
diff --git a/meta/recipes-devtools/binutils/binutils-crosssdk_2.30.bb b/meta/recipes-devtools/binutils/binutils-crosssdk_2.31.bb
index 37f4d6d2e92..37f4d6d2e92 100644
--- a/meta/recipes-devtools/binutils/binutils-crosssdk_2.30.bb
+++ b/meta/recipes-devtools/binutils/binutils-crosssdk_2.31.bb
diff --git a/meta/recipes-devtools/binutils/binutils.inc b/meta/recipes-devtools/binutils/binutils.inc
index 37813dd864f..81ecbb50cc1 100644
--- a/meta/recipes-devtools/binutils/binutils.inc
+++ b/meta/recipes-devtools/binutils/binutils.inc
@@ -38,6 +38,9 @@ FILES_${PN}-dev = " \
# Rather than duplicating multiple entries for these, make one
# list and reuse it.
+LDGOLD_ALTS ?= "ld.gold dwp"
+LDGOLD_ALTS_riscv64 = ""
+
USE_ALTERNATIVES_FOR = " \
addr2line \
ar \
@@ -47,7 +50,7 @@ USE_ALTERNATIVES_FOR = " \
gprof \
ld \
ld.bfd \
- ld.gold dwp \
+ ${LDGOLD_ALTS} \
nm \
objcopy \
objdump \
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 2df836057de..6bdb407b1ec 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,4 +1,4 @@
-From 2e1b5e24a6759de7f73aa6060a574848d9131b5a Mon Sep 17 00:00:00 2001
+From 4a99f058030c86794bb96b582a7dbd631f963b06 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
@@ -18,10 +18,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/ld/genscripts.sh b/ld/genscripts.sh
-index 8732422b3a..1f257e99ca 100755
+index 370b22269d..a5c367aa8f 100755
--- a/ld/genscripts.sh
+++ b/ld/genscripts.sh
-@@ -277,6 +277,7 @@ DATA_ALIGNMENT_u="${DATA_ALIGNMENT_u-${DATA_ALIGNMENT_r}}"
+@@ -279,6 +279,7 @@ DATA_ALIGNMENT_u="${DATA_ALIGNMENT_u-${DATA_ALIGNMENT_r}}"
LD_FLAG=r
DATA_ALIGNMENT=${DATA_ALIGNMENT_r}
DEFAULT_DATA_ALIGNMENT="ALIGN(${SEGMENT_SIZE})"
@@ -29,7 +29,7 @@ index 8732422b3a..1f257e99ca 100755
( echo "/* Script for ld -r: link without relocation */"
. ${CUSTOMIZER_SCRIPT}
. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
-@@ -285,10 +286,12 @@ DEFAULT_DATA_ALIGNMENT="ALIGN(${SEGMENT_SIZE})"
+@@ -287,10 +288,12 @@ DEFAULT_DATA_ALIGNMENT="ALIGN(${SEGMENT_SIZE})"
LD_FLAG=u
DATA_ALIGNMENT=${DATA_ALIGNMENT_u}
CONSTRUCTING=" "
@@ -43,7 +43,7 @@ index 8732422b3a..1f257e99ca 100755
DATA_ALIGNMENT=${DATA_ALIGNMENT_}
RELOCATING=" "
diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc
-index 9787ab5dac..0c8a93c2c8 100644
+index 444aef2942..afa99f736d 100644
--- a/ld/scripttempl/elf.sc
+++ b/ld/scripttempl/elf.sc
@@ -139,8 +139,8 @@ if test -z "$DATA_SEGMENT_ALIGN"; then
@@ -58,5 +58,5 @@ index 9787ab5dac..0c8a93c2c8 100644
if test -z "$PLT"; then
IPLT=".iplt ${RELOCATING-0} : { *(.iplt) }"
--
-2.16.1
+2.18.0
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 bac7fb2d1ac..0208213832d 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,4 +1,4 @@
-From 58ddf38fa53abb48b69dd76e398c73451ad1a5eb Mon Sep 17 00:00:00 2001
+From 6e78b1c88c040a742b7af82542ac7eb92eddda3d 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
@@ -19,14 +19,14 @@ RP 2017/01/30
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- ld/genscripts.sh | 23 -----------------------
- 1 file changed, 23 deletions(-)
+ ld/genscripts.sh | 25 -------------------------
+ 1 file changed, 25 deletions(-)
diff --git a/ld/genscripts.sh b/ld/genscripts.sh
-index 1f257e99ca..1583b73a2b 100755
+index a5c367aa8f..6cc9eed976 100755
--- a/ld/genscripts.sh
+++ b/ld/genscripts.sh
-@@ -189,29 +189,6 @@ append_to_lib_path()
+@@ -189,31 +189,6 @@ append_to_lib_path()
fi
}
@@ -44,10 +44,12 @@ index 1f257e99ca..1583b73a2b 100755
- # because 64bit libraries may be in both places, depending on
- # cross-development setup method (e.g.: /usr/s390x-linux/lib64
- # vs. /usr/s390-linux/lib64)
-- case "${NATIVE}:${LIBPATH_SUFFIX}:${TOOL_LIB}" in
-- :* | *::* | *:*:*${LIBPATH_SUFFIX}) ;;
-- *) libs="${exec_prefix}/${target_alias}/lib${LIBPATH_SUFFIX}" ;;
-- esac
+- for libpath_suffix in ${LIBPATH_SUFFIX}; do
+- case "${NATIVE}:${libpath_suffix}:${TOOL_LIB}" in
+- :* | *::* | *:*:*${libpath_suffix}) ;;
+- *) libs="${exec_prefix}/${target_alias}/lib${libpath_suffix}" ;;
+- esac
+- done
- libs="${exec_prefix}/${TOOL_LIB}/lib ${libs}"
- fi
- append_to_lib_path ${libs}
@@ -57,5 +59,5 @@ index 1f257e99ca..1583b73a2b 100755
libs=${NATIVE_LIB_DIRS}
if [ "x${NATIVE}" = "xyes" ] ; then
--
-2.16.1
+2.18.0
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
index 306afe70187..15193c10a65 100644
--- 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
@@ -1,4 +1,4 @@
-From 5089be88f670bcadf7db0e778894f900b2c05d7b Mon Sep 17 00:00:00 2001
+From 4c6fd8f5eb9bc7c0d02f1a98ad86e395d4d2ab3b 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
@@ -14,10 +14,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/configure b/configure
-index 2d615a9996..c4ad45c06c 100755
+index 08dd35c3ea..815e74ddb7 100755
--- a/configure
+++ b/configure
-@@ -3835,7 +3835,7 @@ case "${target}" in
+@@ -3855,7 +3855,7 @@ case "${target}" in
nvptx*-*-*)
noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc"
;;
@@ -27,10 +27,10 @@ index 2d615a9996..c4ad45c06c 100755
sh*-*-elf)
;;
diff --git a/gprof/configure b/gprof/configure
-index 1e25102976..6b43bf2b18 100755
+index 447cea7884..a730e20509 100755
--- a/gprof/configure
+++ b/gprof/configure
-@@ -5874,6 +5874,11 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+@@ -6162,6 +6162,11 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
lt_cv_deplibs_check_method=pass_all
;;
@@ -43,5 +43,5 @@ index 1e25102976..6b43bf2b18 100755
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.16.1
+2.18.0
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 3e29c5815a8..bf1c1be27d7 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,4 +1,4 @@
-From a0e893ea094c48fa803046ffa89e31907aee0597 Mon Sep 17 00:00:00 2001
+From 48ad5292b10408d4e5d5739022753a7183a1cbb3 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
@@ -12,7 +12,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/ld/Makefile.am b/ld/Makefile.am
-index 6243c12528..3c5d6c8202 100644
+index d86ad0940c..c95b0ef025 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -57,7 +57,7 @@ endif
@@ -25,10 +25,10 @@ index 6243c12528..3c5d6c8202 100644
EMUL = @EMUL@
EMULATION_OFILES = @EMULATION_OFILES@
diff --git a/ld/Makefile.in b/ld/Makefile.in
-index 760c037f9d..6dea692869 100644
+index 4792b2b013..789df2d01b 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
-@@ -446,7 +446,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
+@@ -563,7 +563,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
@@ -38,5 +38,5 @@ index 760c037f9d..6dea692869 100644
BFDDIR = $(BASEDIR)/bfd
INCDIR = $(BASEDIR)/include
--
-2.16.1
+2.18.0
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 2f49969371f..1f589718ed0 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,4 +1,4 @@
-From 518abb195d0eb47d8eef581d7fd0a5fd9fa73f7d Mon Sep 17 00:00:00 2001
+From 79e53510b1f9e16a21db312698fb1c1c442481e7 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
@@ -15,10 +15,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 4 insertions(+)
diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
-index c0925fc9b9..7d7670a89f 100644
+index 1ad9d6b6fa..6a025a45b4 100644
--- a/ld/emultempl/elf32.em
+++ b/ld/emultempl/elf32.em
-@@ -1470,6 +1470,8 @@ fragment <<EOF
+@@ -1471,6 +1471,8 @@ fragment <<EOF
&& command_line.rpath == NULL)
{
path = (const char *) getenv ("LD_RUN_PATH");
@@ -27,7 +27,7 @@ index c0925fc9b9..7d7670a89f 100644
if (path
&& gld${EMULATION_NAME}_search_needed (path, &n, force))
break;
-@@ -1750,6 +1752,8 @@ gld${EMULATION_NAME}_before_allocation (void)
+@@ -1751,6 +1753,8 @@ gld${EMULATION_NAME}_before_allocation (void)
rpath = command_line.rpath;
if (rpath == NULL)
rpath = (const char *) getenv ("LD_RUN_PATH");
@@ -37,5 +37,5 @@ index c0925fc9b9..7d7670a89f 100644
for (abfd = link_info.input_bfds; abfd; abfd = abfd->link.next)
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
--
-2.16.1
+2.18.0
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
index 333e2ee1760..8550df0cb03 100644
--- a/meta/recipes-devtools/binutils/binutils/0006-Use-libtool-2.4.patch
+++ b/meta/recipes-devtools/binutils/binutils/0006-Use-libtool-2.4.patch
@@ -1,4 +1,4 @@
-From fad053cc59baa6277182b0fc90415a214060ba99 Mon Sep 17 00:00:00 2001
+From 11f6d2889725ad592ab789534ca9b858073df4d1 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
@@ -9,27 +9,27 @@ Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- bfd/configure | 1318 +++++++++++++++++------
+ bfd/configure | 1322 ++++++++++++++-----
bfd/configure.ac | 2 +-
- binutils/configure | 1316 +++++++++++++++++------
- gas/configure | 1314 +++++++++++++++++------
- gprof/configure | 1321 +++++++++++++++++------
- ld/configure | 1691 +++++++++++++++++++++--------
- libtool.m4 | 1080 +++++++++++++------
- ltmain.sh | 2925 +++++++++++++++++++++++++++++++++-----------------
+ binutils/configure | 1320 ++++++++++++++-----
+ gas/configure | 1320 ++++++++++++++-----
+ gprof/configure | 1327 ++++++++++++++-----
+ ld/configure | 1695 ++++++++++++++++++------
+ libtool.m4 | 1080 +++++++++++-----
+ ltmain.sh | 2925 ++++++++++++++++++++++++++++--------------
ltoptions.m4 | 2 +-
ltversion.m4 | 12 +-
lt~obsolete.m4 | 2 +-
- opcodes/configure | 1318 +++++++++++++++++------
+ opcodes/configure | 1322 ++++++++++++++-----
opcodes/configure.ac | 2 +-
- zlib/configure | 1316 +++++++++++++++++------
- 14 files changed, 9926 insertions(+), 3693 deletions(-)
+ zlib/configure | 1320 ++++++++++++++-----
+ 14 files changed, 9948 insertions(+), 3703 deletions(-)
-diff --git a/bfd/configure b/bfd/configure
-index 6c2b24ebe3..5fdd723b7f 100755
---- a/bfd/configure
-+++ b/bfd/configure
-@@ -672,6 +672,9 @@ OTOOL
+Index: git/bfd/configure
+===================================================================
+--- git.orig/bfd/configure
++++ git/bfd/configure
+@@ -704,6 +704,9 @@ OTOOL
LIPO
NMEDIT
DSYMUTIL
@@ -39,7 +39,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
OBJDUMP
LN_S
NM
-@@ -785,6 +788,7 @@ enable_static
+@@ -822,6 +825,7 @@ enable_static
with_pic
enable_fast_install
with_gnu_ld
@@ -47,7 +47,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
enable_libtool_lock
enable_plugins
enable_largefile
-@@ -1461,6 +1465,8 @@ Optional Packages:
+@@ -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]
@@ -56,7 +56,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
--with-mmap try using mmap for BFD input files if available
--with-separate-debug-dir=DIR
Look for global separate debug info in DIR
-@@ -5393,8 +5399,8 @@ esac
+@@ -5693,8 +5699,8 @@ esac
@@ -67,7 +67,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
-@@ -5434,7 +5440,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -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.
@@ -76,7 +76,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
ECHO='print -r --'
elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -6120,8 +6126,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -6420,8 +6426,8 @@ $as_echo_n "checking whether the shell u
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
@@ -87,13 +87,13 @@ index 6c2b24ebe3..5fdd723b7f 100755
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
&& xsi_shell=yes
-@@ -6170,6 +6176,80 @@ esac
+@@ -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 test "${lt_cv_to_host_file_cmd+set}" = set; then :
++if ${lt_cv_to_host_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $host in
@@ -140,7 +140,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
+
+{ $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 :
++if ${lt_cv_to_tool_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ #assume ordinary cross tools, or native build.
@@ -167,8 +167,8 @@ index 6c2b24ebe3..5fdd723b7f 100755
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
$as_echo_n "checking for $LD option to reload object files... " >&6; }
- if test "${lt_cv_ld_reload_flag+set}" = set; then :
-@@ -6186,6 +6266,11 @@ case $reload_flag in
+ 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
@@ -180,7 +180,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
darwin*)
if test "$GCC" = yes; then
reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6354,7 +6439,8 @@ mingw* | pw32*)
+@@ -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
@@ -190,7 +190,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
lt_cv_file_magic_cmd='$OBJDUMP -f'
fi
;;
-@@ -6508,6 +6594,21 @@ esac
+@@ -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; }
@@ -212,7 +212,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -6521,11 +6622,164 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6823,9 +6924,162 @@ test -z "$deplibs_check_method" && depli
@@ -226,8 +226,6 @@ index 6c2b24ebe3..5fdd723b7f 100755
+
+
+
-
-
if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
@@ -235,7 +233,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
+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 :
++if ${ac_cv_prog_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DLLTOOL"; then
@@ -247,7 +245,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
+ 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
++ 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
@@ -275,7 +273,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
+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 :
++if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
@@ -287,7 +285,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
+ 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
++ 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
@@ -335,7 +333,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
+
+{ $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 :
++if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_sharedlib_from_linklib_cmd='unknown'
@@ -378,17 +376,17 @@ index 6c2b24ebe3..5fdd723b7f 100755
+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 test "${ac_cv_prog_AR+set}" = set; then :
-@@ -6541,7 +6795,7 @@ do
+ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ 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
-@@ -6561,11 +6815,15 @@ $as_echo "no" >&6; }
+@@ -6861,11 +7115,15 @@ $as_echo "no" >&6; }
fi
@@ -406,17 +404,17 @@ index 6c2b24ebe3..5fdd723b7f 100755
+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 test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
-@@ -6581,7 +6839,7 @@ do
+ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ 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
-@@ -6600,6 +6858,10 @@ else
+@@ -6900,6 +7158,10 @@ else
$as_echo "no" >&6; }
fi
@@ -427,7 +425,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
if test "x$ac_ct_AR" = x; then
AR="false"
else
-@@ -6611,16 +6873,72 @@ ac_tool_warned=yes ;;
+@@ -6911,16 +7173,72 @@ ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
fi
@@ -449,16 +447,16 @@ index 6c2b24ebe3..5fdd723b7f 100755
+
+
+
-+
+
+{ $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 :
++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 ()
+{
@@ -491,11 +489,11 @@ index 6c2b24ebe3..5fdd723b7f 100755
+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
@@ -504,7 +502,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
-@@ -6962,8 +7280,8 @@ esac
+@@ -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
@@ -515,7 +513,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
# Handle CRLF in mingw tool chain
opt_cr=
-@@ -6999,6 +7317,7 @@ for ac_symprfx in "" "_"; do
+@@ -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
@@ -523,7 +521,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
# Check to see that the pipe works correctly.
pipe_works=no
-@@ -7040,6 +7359,18 @@ _LT_EOF
+@@ -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
@@ -542,7 +540,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
#ifdef __cplusplus
extern "C" {
#endif
-@@ -7051,7 +7382,7 @@ _LT_EOF
+@@ -7351,7 +7682,7 @@ _LT_EOF
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
@@ -551,7 +549,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
const char *name;
void *address;
}
-@@ -7077,8 +7408,8 @@ static const void *lt_preloaded_setup() {
+@@ -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
@@ -562,7 +560,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
LIBS="conftstm.$ac_objext"
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -7088,8 +7419,8 @@ _LT_EOF
+@@ -7388,8 +7719,8 @@ _LT_EOF
test $ac_status = 0; } && test -s conftest${ac_exeext}; then
pipe_works=yes
fi
@@ -573,7 +571,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
else
echo "cannot find nm_test_func in $nlist" >&5
fi
-@@ -7126,6 +7457,16 @@ else
+@@ -7426,6 +7757,20 @@ else
$as_echo "ok" >&6; }
fi
@@ -587,20 +585,17 @@ index 6c2b24ebe3..5fdd723b7f 100755
+
+
+
++
++
++
++
-@@ -7142,6 +7483,45 @@ fi
+@@ -7445,6 +7790,41 @@ fi
-+
-+
-+
-+
-+
-+
-+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
@@ -627,16 +622,19 @@ index 6c2b24ebe3..5fdd723b7f 100755
+ *)
+ { $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
++ 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; }
++
++
++
-
-@@ -7353,6 +7733,123 @@ esac
+ # Check whether --enable-libtool-lock was given.
+@@ -7653,6 +8033,123 @@ esac
need_locks="$enable_libtool_lock"
@@ -645,7 +643,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
+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 :
++if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MANIFEST_TOOL"; then
@@ -657,7 +655,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
+ 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
++ 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
@@ -685,7 +683,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
+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 :
++if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_MANIFEST_TOOL"; then
@@ -697,7 +695,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
+ 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
++ 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
@@ -735,7 +733,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
+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 :
++if ${lt_cv_path_mainfest_tool+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_path_mainfest_tool=no
@@ -760,7 +758,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
case $host_os in
rhapsody* | darwin*)
-@@ -7916,6 +8413,8 @@ _LT_EOF
+@@ -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
@@ -769,7 +767,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
cat > conftest.c << _LT_EOF
int main() { return 0;}
_LT_EOF
-@@ -8080,7 +8579,8 @@ fi
+@@ -8380,7 +8879,8 @@ fi
LIBTOOL_DEPS="$ltmain"
# Always use our own libtool.
@@ -779,7 +777,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
-@@ -8169,7 +8669,7 @@ aix3*)
+@@ -8469,7 +8969,7 @@ aix3*)
esac
# Global variables:
@@ -788,7 +786,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
can_build_shared=yes
# All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -8467,8 +8967,6 @@ fi
+@@ -8767,8 +9267,6 @@ fi
lt_prog_compiler_pic=
lt_prog_compiler_static=
@@ -797,7 +795,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
if test "$GCC" = yes; then
lt_prog_compiler_wl='-Wl,'
-@@ -8634,6 +9132,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8934,6 +9432,12 @@ $as_echo_n "checking for $compiler optio
lt_prog_compiler_pic='--shared'
lt_prog_compiler_static='--static'
;;
@@ -810,7 +808,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
-@@ -8696,7 +9200,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8996,7 +9500,7 @@ $as_echo_n "checking for $compiler optio
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
case $cc_basename in
@@ -819,7 +817,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
lt_prog_compiler_wl='-Qoption ld ';;
*)
lt_prog_compiler_wl='-Wl,';;
-@@ -8753,13 +9257,17 @@ case $host_os in
+@@ -9053,13 +9557,17 @@ case $host_os in
lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
;;
esac
@@ -832,7 +830,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
+{ $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 :
++if ${lt_cv_prog_compiler_pic+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
@@ -843,7 +841,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
#
# Check to make sure the PIC flag actually works.
-@@ -8820,6 +9328,11 @@ fi
+@@ -9120,6 +9628,11 @@ fi
@@ -855,7 +853,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
#
# Check to make sure the static flag actually works.
#
-@@ -9170,7 +9683,8 @@ _LT_EOF
+@@ -9470,7 +9983,8 @@ _LT_EOF
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
@@ -865,7 +863,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -9269,12 +9783,12 @@ _LT_EOF
+@@ -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'
@@ -880,7 +878,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
fi
;;
esac
-@@ -9288,8 +9802,8 @@ _LT_EOF
+@@ -9588,8 +10102,8 @@ _LT_EOF
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
@@ -891,7 +889,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
fi
;;
-@@ -9307,8 +9821,8 @@ _LT_EOF
+@@ -9607,8 +10121,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -902,7 +900,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
else
ld_shlibs=no
fi
-@@ -9354,8 +9868,8 @@ _LT_EOF
+@@ -9654,8 +10168,8 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -913,7 +911,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
else
ld_shlibs=no
fi
-@@ -9485,7 +9999,13 @@ _LT_EOF
+@@ -9785,7 +10299,13 @@ _LT_EOF
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -921,14 +919,14 @@ index 6c2b24ebe3..5fdd723b7f 100755
+ 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 :
++ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-@@ -9498,22 +10018,29 @@ main ()
+@@ -9798,22 +10318,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -971,7 +969,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -9525,7 +10052,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9825,7 +10352,13 @@ if test -z "$aix_libpath"; then aix_libp
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -979,14 +977,14 @@ index 6c2b24ebe3..5fdd723b7f 100755
+ 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 :
++ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-@@ -9538,22 +10071,29 @@ main ()
+@@ -9838,22 +10371,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -1029,7 +1027,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
-@@ -9598,20 +10138,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9898,20 +10438,63 @@ if test -z "$aix_libpath"; then aix_libp
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
@@ -1107,7 +1105,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
;;
darwin* | rhapsody*)
-@@ -9672,7 +10255,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9972,7 +10555,7 @@ if test -z "$aix_libpath"; then aix_libp
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
@@ -1116,7 +1114,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
-@@ -9680,7 +10263,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9980,7 +10563,7 @@ if test -z "$aix_libpath"; then aix_libp
hpux9*)
if test "$GCC" = yes; then
@@ -1125,7 +1123,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
else
archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
fi
-@@ -9696,7 +10279,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9996,7 +10579,7 @@ if test -z "$aix_libpath"; then aix_libp
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -1134,7 +1132,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
-@@ -9720,10 +10303,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -10020,10 +10603,10 @@ if test -z "$aix_libpath"; then aix_libp
archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
@@ -1147,7 +1145,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
;;
esac
else
-@@ -9802,23 +10385,36 @@ fi
+@@ -10102,23 +10685,36 @@ fi
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
@@ -1162,7 +1160,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
+ # 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 :
++if ${lt_cv_irix_exported_symbol+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ save_LDFLAGS="$LDFLAGS"
@@ -1192,7 +1190,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
else
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -9903,7 +10499,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -10203,7 +10799,7 @@ rm -f core conftest.err conftest.$ac_obj
osf4* | osf5*) # as osf3* with the addition of -msym flag
if test "$GCC" = yes; then
allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -1201,7 +1199,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
allow_undefined_flag=' -expect_unresolved \*'
-@@ -9922,9 +10518,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -10222,9 +10818,9 @@ rm -f core conftest.err conftest.$ac_obj
no_undefined_flag=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
@@ -1213,7 +1211,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
-@@ -10500,8 +11096,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10800,8 +11396,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -1225,7 +1223,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -10534,13 +11131,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -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
@@ -1298,7 +1296,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -10632,7 +11287,7 @@ haiku*)
+@@ -10932,7 +11587,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -1307,7 +1305,16 @@ index 6c2b24ebe3..5fdd723b7f 100755
hardcode_into_libs=yes
;;
-@@ -11472,10 +12127,10 @@ else
+@@ -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))
@@ -1320,7 +1327,16 @@ index 6c2b24ebe3..5fdd723b7f 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11578,10 +12233,10 @@ else
+@@ -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))
@@ -1333,7 +1349,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -14172,7 +14827,7 @@ SHARED_LDFLAGS=
+@@ -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
@@ -1342,7 +1358,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
fi
# More hacks to build DLLs on Windows.
-@@ -16879,13 +17534,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -17139,13 +17794,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_
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"`'
@@ -1363,7 +1379,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -16900,14 +17562,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -17160,14 +17822,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$l
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"`'
@@ -1382,7 +1398,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -16940,12 +17605,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -17200,12 +17865,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcod
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"`'
@@ -1396,7 +1412,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -17000,8 +17665,13 @@ reload_flag \
+@@ -17260,8 +17925,13 @@ reload_flag \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
@@ -1410,7 +1426,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
STRIP \
RANLIB \
CC \
-@@ -17011,12 +17681,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -17271,12 +17941,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 \
@@ -1426,7 +1442,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
DSYMUTIL \
NMEDIT \
LIPO \
-@@ -17032,7 +17704,6 @@ no_undefined_flag \
+@@ -17292,7 +17964,6 @@ no_undefined_flag \
hardcode_libdir_flag_spec \
hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
@@ -1434,7 +1450,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
exclude_expsyms \
include_expsyms \
file_list_spec \
-@@ -17068,6 +17739,7 @@ module_cmds \
+@@ -17328,6 +17999,7 @@ module_cmds \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
@@ -1442,7 +1458,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
-@@ -17847,7 +18519,8 @@ $as_echo X"$file" |
+@@ -18116,7 +18788,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,
@@ -1452,7 +1468,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
-@@ -17950,19 +18623,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -18219,19 +18892,42 @@ SP2NL=$lt_lt_SP2NL
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
@@ -1496,7 +1512,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
# A symbol stripping program.
STRIP=$lt_STRIP
-@@ -17992,6 +18688,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -18261,6 +18957,12 @@ global_symbol_to_c_name_address=$lt_lt_c
# 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
@@ -1509,7 +1525,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
# The name of the directory that contains temporary libtool files.
objdir=$objdir
-@@ -18001,6 +18703,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -18270,6 +18972,9 @@ MAGIC_CMD=$MAGIC_CMD
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
@@ -1519,7 +1535,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
-@@ -18115,12 +18820,12 @@ with_gcc=$GCC
+@@ -18384,12 +19089,12 @@ with_gcc=$GCC
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
@@ -1535,7 +1551,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
-@@ -18207,9 +18912,6 @@ inherit_rpath=$inherit_rpath
+@@ -18476,9 +19181,6 @@ inherit_rpath=$inherit_rpath
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=$link_all_deplibs
@@ -1545,7 +1561,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
-@@ -18225,6 +18927,9 @@ include_expsyms=$lt_include_expsyms
+@@ -18494,6 +19196,9 @@ include_expsyms=$lt_include_expsyms
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
@@ -1555,7 +1571,7 @@ index 6c2b24ebe3..5fdd723b7f 100755
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
-@@ -18257,210 +18962,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -18526,210 +19231,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?
@@ -1757,15 +1773,9 @@ index 6c2b24ebe3..5fdd723b7f 100755
-_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 ()\
@@ -1923,17 +1933,20 @@ index 6c2b24ebe3..5fdd723b7f 100755
+ { $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
-+
-+
+
+- 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"
-diff --git a/bfd/configure.ac b/bfd/configure.ac
-index 2342f3faea..a6451fccda 100644
---- a/bfd/configure.ac
-+++ b/bfd/configure.ac
-@@ -254,7 +254,7 @@ changequote(,)dnl
+Index: git/bfd/configure.ac
+===================================================================
+--- git.orig/bfd/configure.ac
++++ git/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
@@ -1942,11 +1955,11 @@ index 2342f3faea..a6451fccda 100644
fi
# More hacks to build DLLs on Windows.
-diff --git a/binutils/configure b/binutils/configure
-index 5d9c9105a7..a65b2b4518 100755
---- a/binutils/configure
-+++ b/binutils/configure
-@@ -659,8 +659,11 @@ OTOOL
+Index: git/binutils/configure
+===================================================================
+--- git.orig/binutils/configure
++++ git/binutils/configure
+@@ -688,8 +688,11 @@ OTOOL
LIPO
NMEDIT
DSYMUTIL
@@ -1958,7 +1971,7 @@ index 5d9c9105a7..a65b2b4518 100755
OBJDUMP
LN_S
NM
-@@ -772,6 +775,7 @@ enable_static
+@@ -806,6 +809,7 @@ enable_static
with_pic
enable_fast_install
with_gnu_ld
@@ -1966,7 +1979,7 @@ index 5d9c9105a7..a65b2b4518 100755
enable_libtool_lock
enable_plugins
enable_largefile
-@@ -1444,6 +1448,8 @@ Optional Packages:
+@@ -1482,6 +1486,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]
@@ -1975,7 +1988,7 @@ index 5d9c9105a7..a65b2b4518 100755
--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
-@@ -5160,8 +5166,8 @@ esac
+@@ -5453,8 +5459,8 @@ esac
@@ -1986,7 +1999,7 @@ index 5d9c9105a7..a65b2b4518 100755
-@@ -5201,7 +5207,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -5494,7 +5500,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.
@@ -1995,7 +2008,7 @@ index 5d9c9105a7..a65b2b4518 100755
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
ECHO='print -r --'
elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -5887,8 +5893,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -6180,8 +6186,8 @@ $as_echo_n "checking whether the shell u
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
@@ -2006,13 +2019,13 @@ index 5d9c9105a7..a65b2b4518 100755
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
&& xsi_shell=yes
-@@ -5937,6 +5943,80 @@ esac
+@@ -6230,6 +6236,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 :
++if ${lt_cv_to_host_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $host in
@@ -2059,7 +2072,7 @@ index 5d9c9105a7..a65b2b4518 100755
+
+{ $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 :
++if ${lt_cv_to_tool_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ #assume ordinary cross tools, or native build.
@@ -2086,8 +2099,8 @@ index 5d9c9105a7..a65b2b4518 100755
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
$as_echo_n "checking for $LD option to reload object files... " >&6; }
- if test "${lt_cv_ld_reload_flag+set}" = set; then :
-@@ -5953,6 +6033,11 @@ case $reload_flag in
+ if ${lt_cv_ld_reload_flag+:} false; then :
+@@ -6246,6 +6326,11 @@ case $reload_flag in
esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
@@ -2099,7 +2112,7 @@ index 5d9c9105a7..a65b2b4518 100755
darwin*)
if test "$GCC" = yes; then
reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6121,7 +6206,8 @@ mingw* | pw32*)
+@@ -6414,7 +6499,8 @@ mingw* | pw32*)
lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
lt_cv_file_magic_cmd='func_win32_libid'
else
@@ -2109,7 +2122,7 @@ index 5d9c9105a7..a65b2b4518 100755
lt_cv_file_magic_cmd='$OBJDUMP -f'
fi
;;
-@@ -6275,6 +6361,21 @@ esac
+@@ -6568,6 +6654,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; }
@@ -2131,7 +2144,7 @@ index 5d9c9105a7..a65b2b4518 100755
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -6290,9 +6391,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6583,9 +6684,162 @@ test -z "$deplibs_check_method" && depli
@@ -2150,7 +2163,7 @@ index 5d9c9105a7..a65b2b4518 100755
+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 :
++if ${ac_cv_prog_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DLLTOOL"; then
@@ -2162,7 +2175,7 @@ index 5d9c9105a7..a65b2b4518 100755
+ 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
++ 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
@@ -2190,7 +2203,7 @@ index 5d9c9105a7..a65b2b4518 100755
+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 :
++if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
@@ -2202,7 +2215,7 @@ index 5d9c9105a7..a65b2b4518 100755
+ 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
++ 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
@@ -2250,7 +2263,7 @@ index 5d9c9105a7..a65b2b4518 100755
+
+{ $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 :
++if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_sharedlib_from_linklib_cmd='unknown'
@@ -2295,17 +2308,17 @@ index 5d9c9105a7..a65b2b4518 100755
+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 test "${ac_cv_prog_AR+set}" = set; then :
-@@ -6308,7 +6562,7 @@ do
+ if ${ac_cv_prog_AR+:} false; then :
+@@ -6601,7 +6855,7 @@ do
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
+ 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
-@@ -6328,11 +6582,15 @@ $as_echo "no" >&6; }
+@@ -6621,11 +6875,15 @@ $as_echo "no" >&6; }
fi
@@ -2323,17 +2336,17 @@ index 5d9c9105a7..a65b2b4518 100755
+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 test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
-@@ -6348,7 +6606,7 @@ do
+ if ${ac_cv_prog_ac_ct_AR+:} false; then :
+@@ -6641,7 +6899,7 @@ do
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
+ 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
-@@ -6367,6 +6625,10 @@ else
+@@ -6660,6 +6918,10 @@ else
$as_echo "no" >&6; }
fi
@@ -2344,7 +2357,7 @@ index 5d9c9105a7..a65b2b4518 100755
if test "x$ac_ct_AR" = x; then
AR="false"
else
-@@ -6378,12 +6640,10 @@ ac_tool_warned=yes ;;
+@@ -6671,12 +6933,10 @@ ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
fi
@@ -2359,13 +2372,13 @@ index 5d9c9105a7..a65b2b4518 100755
-@@ -6395,6 +6655,64 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
+@@ -6688,6 +6948,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 test "${lt_cv_ar_at_file+set}" = set; then :
++if ${lt_cv_ar_at_file+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ar_at_file=no
@@ -2424,7 +2437,7 @@ index 5d9c9105a7..a65b2b4518 100755
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
-@@ -6729,8 +7047,8 @@ esac
+@@ -7022,8 +7340,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
@@ -2435,7 +2448,7 @@ index 5d9c9105a7..a65b2b4518 100755
# Handle CRLF in mingw tool chain
opt_cr=
-@@ -6766,6 +7084,7 @@ for ac_symprfx in "" "_"; do
+@@ -7059,6 +7377,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
@@ -2443,7 +2456,7 @@ index 5d9c9105a7..a65b2b4518 100755
# Check to see that the pipe works correctly.
pipe_works=no
-@@ -6807,6 +7126,18 @@ _LT_EOF
+@@ -7100,6 +7419,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
@@ -2462,7 +2475,7 @@ index 5d9c9105a7..a65b2b4518 100755
#ifdef __cplusplus
extern "C" {
#endif
-@@ -6818,7 +7149,7 @@ _LT_EOF
+@@ -7111,7 +7442,7 @@ _LT_EOF
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
@@ -2471,7 +2484,7 @@ index 5d9c9105a7..a65b2b4518 100755
const char *name;
void *address;
}
-@@ -6844,8 +7175,8 @@ static const void *lt_preloaded_setup() {
+@@ -7137,8 +7468,8 @@ static const void *lt_preloaded_setup()
_LT_EOF
# Now try linking the two files.
mv conftest.$ac_objext conftstm.$ac_objext
@@ -2482,7 +2495,7 @@ index 5d9c9105a7..a65b2b4518 100755
LIBS="conftstm.$ac_objext"
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -6855,8 +7186,8 @@ _LT_EOF
+@@ -7148,8 +7479,8 @@ _LT_EOF
test $ac_status = 0; } && test -s conftest${ac_exeext}; then
pipe_works=yes
fi
@@ -2493,7 +2506,7 @@ index 5d9c9105a7..a65b2b4518 100755
else
echo "cannot find nm_test_func in $nlist" >&5
fi
-@@ -6893,6 +7224,21 @@ else
+@@ -7186,6 +7517,18 @@ else
$as_echo "ok" >&6; }
fi
@@ -2509,18 +2522,13 @@ index 5d9c9105a7..a65b2b4518 100755
+
+
+
-+
-+
-+
-@@ -6908,6 +7254,40 @@ fi
+@@ -7207,6 +7550,43 @@ fi
-+
-+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
@@ -2547,16 +2555,21 @@ index 5d9c9105a7..a65b2b4518 100755
+ *)
+ { $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
++ 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; }
-
-
-
-@@ -7120,6 +7500,123 @@ esac
++
++
++
++
++
+ # Check whether --enable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then :
+ enableval=$enable_libtool_lock;
+@@ -7413,6 +7793,123 @@ esac
need_locks="$enable_libtool_lock"
@@ -2565,7 +2578,7 @@ index 5d9c9105a7..a65b2b4518 100755
+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 :
++if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MANIFEST_TOOL"; then
@@ -2577,7 +2590,7 @@ index 5d9c9105a7..a65b2b4518 100755
+ 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
++ 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
@@ -2605,7 +2618,7 @@ index 5d9c9105a7..a65b2b4518 100755
+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 :
++if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_MANIFEST_TOOL"; then
@@ -2617,7 +2630,7 @@ index 5d9c9105a7..a65b2b4518 100755
+ 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
++ 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
@@ -2655,7 +2668,7 @@ index 5d9c9105a7..a65b2b4518 100755
+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 :
++if ${lt_cv_path_mainfest_tool+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_path_mainfest_tool=no
@@ -2680,7 +2693,7 @@ index 5d9c9105a7..a65b2b4518 100755
case $host_os in
rhapsody* | darwin*)
-@@ -7683,6 +8180,8 @@ _LT_EOF
+@@ -7976,6 +8473,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
@@ -2689,7 +2702,7 @@ index 5d9c9105a7..a65b2b4518 100755
cat > conftest.c << _LT_EOF
int main() { return 0;}
_LT_EOF
-@@ -7878,7 +8377,8 @@ fi
+@@ -8171,7 +8670,8 @@ fi
LIBTOOL_DEPS="$ltmain"
# Always use our own libtool.
@@ -2699,7 +2712,7 @@ index 5d9c9105a7..a65b2b4518 100755
-@@ -7967,7 +8467,7 @@ aix3*)
+@@ -8260,7 +8760,7 @@ aix3*)
esac
# Global variables:
@@ -2708,7 +2721,7 @@ index 5d9c9105a7..a65b2b4518 100755
can_build_shared=yes
# All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -8265,8 +8765,6 @@ fi
+@@ -8558,8 +9058,6 @@ fi
lt_prog_compiler_pic=
lt_prog_compiler_static=
@@ -2717,7 +2730,7 @@ index 5d9c9105a7..a65b2b4518 100755
if test "$GCC" = yes; then
lt_prog_compiler_wl='-Wl,'
-@@ -8432,6 +8930,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8725,6 +9223,12 @@ $as_echo_n "checking for $compiler optio
lt_prog_compiler_pic='--shared'
lt_prog_compiler_static='--static'
;;
@@ -2730,7 +2743,7 @@ index 5d9c9105a7..a65b2b4518 100755
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
-@@ -8494,7 +8998,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8787,7 +9291,7 @@ $as_echo_n "checking for $compiler optio
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
case $cc_basename in
@@ -2739,7 +2752,7 @@ index 5d9c9105a7..a65b2b4518 100755
lt_prog_compiler_wl='-Qoption ld ';;
*)
lt_prog_compiler_wl='-Wl,';;
-@@ -8551,13 +9055,17 @@ case $host_os in
+@@ -8844,13 +9348,17 @@ case $host_os in
lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
;;
esac
@@ -2752,7 +2765,7 @@ index 5d9c9105a7..a65b2b4518 100755
+{ $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 :
++if ${lt_cv_prog_compiler_pic+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
@@ -2763,7 +2776,7 @@ index 5d9c9105a7..a65b2b4518 100755
#
# Check to make sure the PIC flag actually works.
-@@ -8618,6 +9126,11 @@ fi
+@@ -8911,6 +9419,11 @@ fi
@@ -2775,7 +2788,7 @@ index 5d9c9105a7..a65b2b4518 100755
#
# Check to make sure the static flag actually works.
#
-@@ -8968,7 +9481,8 @@ _LT_EOF
+@@ -9261,7 +9774,8 @@ _LT_EOF
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
@@ -2785,7 +2798,7 @@ index 5d9c9105a7..a65b2b4518 100755
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -9067,12 +9581,12 @@ _LT_EOF
+@@ -9360,12 +9874,12 @@ _LT_EOF
whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
hardcode_libdir_flag_spec=
hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -2800,7 +2813,7 @@ index 5d9c9105a7..a65b2b4518 100755
fi
;;
esac
-@@ -9086,8 +9600,8 @@ _LT_EOF
+@@ -9379,8 +9893,8 @@ _LT_EOF
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
@@ -2811,7 +2824,7 @@ index 5d9c9105a7..a65b2b4518 100755
fi
;;
-@@ -9105,8 +9619,8 @@ _LT_EOF
+@@ -9398,8 +9912,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -2822,7 +2835,7 @@ index 5d9c9105a7..a65b2b4518 100755
else
ld_shlibs=no
fi
-@@ -9152,8 +9666,8 @@ _LT_EOF
+@@ -9445,8 +9959,8 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -2833,7 +2846,7 @@ index 5d9c9105a7..a65b2b4518 100755
else
ld_shlibs=no
fi
-@@ -9283,7 +9797,13 @@ _LT_EOF
+@@ -9576,7 +10090,13 @@ _LT_EOF
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -2841,14 +2854,14 @@ index 5d9c9105a7..a65b2b4518 100755
+ 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 :
++ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-@@ -9296,22 +9816,29 @@ main ()
+@@ -9589,22 +10109,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -2891,7 +2904,7 @@ index 5d9c9105a7..a65b2b4518 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -9323,7 +9850,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9616,7 +10143,13 @@ if test -z "$aix_libpath"; then aix_libp
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -2899,14 +2912,14 @@ index 5d9c9105a7..a65b2b4518 100755
+ 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 :
++ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-@@ -9336,22 +9869,29 @@ main ()
+@@ -9629,22 +10162,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -2949,7 +2962,7 @@ index 5d9c9105a7..a65b2b4518 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
-@@ -9396,20 +9936,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9689,20 +10229,63 @@ if test -z "$aix_libpath"; then aix_libp
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
@@ -3027,7 +3040,7 @@ index 5d9c9105a7..a65b2b4518 100755
;;
darwin* | rhapsody*)
-@@ -9470,7 +10053,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9763,7 +10346,7 @@ if test -z "$aix_libpath"; then aix_libp
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
@@ -3036,7 +3049,7 @@ index 5d9c9105a7..a65b2b4518 100755
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
-@@ -9478,7 +10061,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9771,7 +10354,7 @@ if test -z "$aix_libpath"; then aix_libp
hpux9*)
if test "$GCC" = yes; then
@@ -3045,7 +3058,7 @@ index 5d9c9105a7..a65b2b4518 100755
else
archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
fi
-@@ -9494,7 +10077,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9787,7 +10370,7 @@ if test -z "$aix_libpath"; then aix_libp
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -3054,7 +3067,7 @@ index 5d9c9105a7..a65b2b4518 100755
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
-@@ -9518,10 +10101,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9811,10 +10394,10 @@ if test -z "$aix_libpath"; then aix_libp
archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
@@ -3067,7 +3080,7 @@ index 5d9c9105a7..a65b2b4518 100755
;;
esac
else
-@@ -9600,23 +10183,36 @@ fi
+@@ -9893,23 +10476,36 @@ fi
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
@@ -3082,7 +3095,7 @@ index 5d9c9105a7..a65b2b4518 100755
+ # 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 :
++if ${lt_cv_irix_exported_symbol+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ save_LDFLAGS="$LDFLAGS"
@@ -3112,7 +3125,7 @@ index 5d9c9105a7..a65b2b4518 100755
else
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -9701,7 +10297,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9994,7 +10590,7 @@ rm -f core conftest.err conftest.$ac_obj
osf4* | osf5*) # as osf3* with the addition of -msym flag
if test "$GCC" = yes; then
allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -3121,7 +3134,7 @@ index 5d9c9105a7..a65b2b4518 100755
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
allow_undefined_flag=' -expect_unresolved \*'
-@@ -9720,9 +10316,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -10013,9 +10609,9 @@ rm -f core conftest.err conftest.$ac_obj
no_undefined_flag=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
@@ -3133,7 +3146,7 @@ index 5d9c9105a7..a65b2b4518 100755
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
-@@ -10298,8 +10894,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10591,8 +11187,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -3145,7 +3158,7 @@ index 5d9c9105a7..a65b2b4518 100755
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -10332,13 +10929,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10625,13 +11222,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
@@ -3218,7 +3231,7 @@ index 5d9c9105a7..a65b2b4518 100755
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -10430,7 +11085,7 @@ haiku*)
+@@ -10723,7 +11378,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -3227,7 +3240,16 @@ index 5d9c9105a7..a65b2b4518 100755
hardcode_into_libs=yes
;;
-@@ -11270,10 +11925,10 @@ else
+@@ -11519,7 +12174,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11522 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11563,10 +12218,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))
@@ -3240,7 +3262,16 @@ index 5d9c9105a7..a65b2b4518 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11376,10 +12031,10 @@ else
+@@ -11625,7 +12280,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11628 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11669,10 +12324,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))
@@ -3253,7 +3284,7 @@ index 5d9c9105a7..a65b2b4518 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -15446,13 +16101,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -15731,13 +16386,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_
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"`'
@@ -3274,7 +3305,7 @@ index 5d9c9105a7..a65b2b4518 100755
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -15467,14 +16129,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -15752,14 +16414,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$l
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"`'
@@ -3293,7 +3324,7 @@ index 5d9c9105a7..a65b2b4518 100755
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -15507,12 +16172,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -15792,12 +16457,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcod
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"`'
@@ -3307,7 +3338,7 @@ index 5d9c9105a7..a65b2b4518 100755
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -15567,8 +16232,13 @@ reload_flag \
+@@ -15852,8 +16517,13 @@ reload_flag \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
@@ -3321,7 +3352,7 @@ index 5d9c9105a7..a65b2b4518 100755
STRIP \
RANLIB \
CC \
-@@ -15578,12 +16248,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -15863,12 +16533,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 \
@@ -3337,7 +3368,7 @@ index 5d9c9105a7..a65b2b4518 100755
DSYMUTIL \
NMEDIT \
LIPO \
-@@ -15599,7 +16271,6 @@ no_undefined_flag \
+@@ -15884,7 +16556,6 @@ no_undefined_flag \
hardcode_libdir_flag_spec \
hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
@@ -3345,7 +3376,7 @@ index 5d9c9105a7..a65b2b4518 100755
exclude_expsyms \
include_expsyms \
file_list_spec \
-@@ -15635,6 +16306,7 @@ module_cmds \
+@@ -15920,6 +16591,7 @@ module_cmds \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
@@ -3353,7 +3384,7 @@ index 5d9c9105a7..a65b2b4518 100755
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
-@@ -16392,7 +17064,8 @@ $as_echo X"$file" |
+@@ -16686,7 +17358,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,
@@ -3363,7 +3394,7 @@ index 5d9c9105a7..a65b2b4518 100755
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
-@@ -16495,19 +17168,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -16789,19 +17462,42 @@ SP2NL=$lt_lt_SP2NL
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
@@ -3407,7 +3438,7 @@ index 5d9c9105a7..a65b2b4518 100755
# A symbol stripping program.
STRIP=$lt_STRIP
-@@ -16537,6 +17233,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -16831,6 +17527,12 @@ global_symbol_to_c_name_address=$lt_lt_c
# 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
@@ -3420,7 +3451,7 @@ index 5d9c9105a7..a65b2b4518 100755
# The name of the directory that contains temporary libtool files.
objdir=$objdir
-@@ -16546,6 +17248,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -16840,6 +17542,9 @@ MAGIC_CMD=$MAGIC_CMD
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
@@ -3430,7 +3461,7 @@ index 5d9c9105a7..a65b2b4518 100755
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
-@@ -16660,12 +17365,12 @@ with_gcc=$GCC
+@@ -16954,12 +17659,12 @@ with_gcc=$GCC
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
@@ -3446,7 +3477,7 @@ index 5d9c9105a7..a65b2b4518 100755
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
-@@ -16752,9 +17457,6 @@ inherit_rpath=$inherit_rpath
+@@ -17046,9 +17751,6 @@ inherit_rpath=$inherit_rpath
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=$link_all_deplibs
@@ -3456,7 +3487,7 @@ index 5d9c9105a7..a65b2b4518 100755
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
-@@ -16770,6 +17472,9 @@ include_expsyms=$lt_include_expsyms
+@@ -17064,6 +17766,9 @@ include_expsyms=$lt_include_expsyms
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
@@ -3466,7 +3497,7 @@ index 5d9c9105a7..a65b2b4518 100755
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
-@@ -16802,210 +17507,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -17096,210 +17801,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?
@@ -3668,15 +3699,9 @@ index 5d9c9105a7..a65b2b4518 100755
-_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 ()\
@@ -3834,17 +3859,20 @@ index 5d9c9105a7..a65b2b4518 100755
+ { $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
-+
-+
+
+- 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"
-diff --git a/gas/configure b/gas/configure
-index fbac8f44d5..a40ac2144f 100755
---- a/gas/configure
-+++ b/gas/configure
-@@ -650,8 +650,11 @@ OTOOL
+Index: git/gas/configure
+===================================================================
+--- git.orig/gas/configure
++++ git/gas/configure
+@@ -681,8 +681,11 @@ OTOOL
LIPO
NMEDIT
DSYMUTIL
@@ -3856,7 +3884,7 @@ index fbac8f44d5..a40ac2144f 100755
OBJDUMP
LN_S
NM
-@@ -763,6 +766,7 @@ enable_static
+@@ -799,6 +802,7 @@ enable_static
with_pic
enable_fast_install
with_gnu_ld
@@ -3864,7 +3892,16 @@ index fbac8f44d5..a40ac2144f 100755
enable_libtool_lock
enable_plugins
enable_largefile
-@@ -4921,8 +4925,8 @@ esac
+@@ -1482,6 +1486,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
+@@ -5269,8 +5275,8 @@ esac
@@ -3875,7 +3912,7 @@ index fbac8f44d5..a40ac2144f 100755
-@@ -4962,7 +4966,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -5310,7 +5316,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.
@@ -3884,7 +3921,7 @@ index fbac8f44d5..a40ac2144f 100755
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
ECHO='print -r --'
elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -5648,8 +5652,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -5996,8 +6002,8 @@ $as_echo_n "checking whether the shell u
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
@@ -3895,13 +3932,13 @@ index fbac8f44d5..a40ac2144f 100755
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
&& xsi_shell=yes
-@@ -5698,6 +5702,80 @@ esac
+@@ -6046,6 +6052,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 :
++if ${lt_cv_to_host_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $host in
@@ -3948,7 +3985,7 @@ index fbac8f44d5..a40ac2144f 100755
+
+{ $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 :
++if ${lt_cv_to_tool_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ #assume ordinary cross tools, or native build.
@@ -3975,8 +4012,8 @@ index fbac8f44d5..a40ac2144f 100755
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
$as_echo_n "checking for $LD option to reload object files... " >&6; }
- if test "${lt_cv_ld_reload_flag+set}" = set; then :
-@@ -5714,6 +5792,11 @@ case $reload_flag in
+ if ${lt_cv_ld_reload_flag+:} false; then :
+@@ -6062,6 +6142,11 @@ case $reload_flag in
esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
@@ -3988,7 +4025,7 @@ index fbac8f44d5..a40ac2144f 100755
darwin*)
if test "$GCC" = yes; then
reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -5882,7 +5965,8 @@ mingw* | pw32*)
+@@ -6230,7 +6315,8 @@ mingw* | pw32*)
lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
lt_cv_file_magic_cmd='func_win32_libid'
else
@@ -3998,7 +4035,7 @@ index fbac8f44d5..a40ac2144f 100755
lt_cv_file_magic_cmd='$OBJDUMP -f'
fi
;;
-@@ -6036,6 +6120,21 @@ esac
+@@ -6384,6 +6470,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; }
@@ -4020,7 +4057,7 @@ index fbac8f44d5..a40ac2144f 100755
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -6051,9 +6150,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6399,9 +6500,162 @@ test -z "$deplibs_check_method" && depli
@@ -4034,12 +4071,14 @@ index fbac8f44d5..a40ac2144f 100755
+
+
+
-+if test -n "$ac_tool_prefix"; then
+ 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 :
++if ${ac_cv_prog_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DLLTOOL"; then
@@ -4051,7 +4090,7 @@ index fbac8f44d5..a40ac2144f 100755
+ 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
++ 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
@@ -4079,7 +4118,7 @@ index fbac8f44d5..a40ac2144f 100755
+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 :
++if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
@@ -4091,7 +4130,7 @@ index fbac8f44d5..a40ac2144f 100755
+ 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
++ 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
@@ -4139,7 +4178,7 @@ index fbac8f44d5..a40ac2144f 100755
+
+{ $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 :
++if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_sharedlib_from_linklib_cmd='unknown'
@@ -4175,26 +4214,24 @@ index fbac8f44d5..a40ac2144f 100755
+
+
+
- if test -n "$ac_tool_prefix"; then
-- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
--set dummy ${ac_tool_prefix}ar; ac_word=$2
++if test -n "$ac_tool_prefix"; then
+ 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 test "${ac_cv_prog_AR+set}" = set; then :
-@@ -6069,7 +6321,7 @@ do
+ if ${ac_cv_prog_AR+:} false; then :
+@@ -6417,7 +6671,7 @@ do
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
+ 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
-@@ -6089,11 +6341,15 @@ $as_echo "no" >&6; }
+@@ -6437,11 +6691,15 @@ $as_echo "no" >&6; }
fi
@@ -4212,17 +4249,17 @@ index fbac8f44d5..a40ac2144f 100755
+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 test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
-@@ -6109,7 +6365,7 @@ do
+ if ${ac_cv_prog_ac_ct_AR+:} false; then :
+@@ -6457,7 +6715,7 @@ do
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
+ 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
-@@ -6128,6 +6384,10 @@ else
+@@ -6476,6 +6734,10 @@ else
$as_echo "no" >&6; }
fi
@@ -4233,7 +4270,7 @@ index fbac8f44d5..a40ac2144f 100755
if test "x$ac_ct_AR" = x; then
AR="false"
else
-@@ -6139,12 +6399,10 @@ ac_tool_warned=yes ;;
+@@ -6487,12 +6749,10 @@ ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
fi
@@ -4248,13 +4285,13 @@ index fbac8f44d5..a40ac2144f 100755
-@@ -6156,6 +6414,64 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
+@@ -6504,6 +6764,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 test "${lt_cv_ar_at_file+set}" = set; then :
++if ${lt_cv_ar_at_file+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ar_at_file=no
@@ -4313,7 +4350,7 @@ index fbac8f44d5..a40ac2144f 100755
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
-@@ -6490,8 +6806,8 @@ esac
+@@ -6838,8 +7156,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
@@ -4324,7 +4361,7 @@ index fbac8f44d5..a40ac2144f 100755
# Handle CRLF in mingw tool chain
opt_cr=
-@@ -6527,6 +6843,7 @@ for ac_symprfx in "" "_"; do
+@@ -6875,6 +7193,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
@@ -4332,7 +4369,7 @@ index fbac8f44d5..a40ac2144f 100755
# Check to see that the pipe works correctly.
pipe_works=no
-@@ -6568,6 +6885,18 @@ _LT_EOF
+@@ -6916,6 +7235,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
@@ -4351,7 +4388,7 @@ index fbac8f44d5..a40ac2144f 100755
#ifdef __cplusplus
extern "C" {
#endif
-@@ -6579,7 +6908,7 @@ _LT_EOF
+@@ -6927,7 +7258,7 @@ _LT_EOF
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
@@ -4360,7 +4397,7 @@ index fbac8f44d5..a40ac2144f 100755
const char *name;
void *address;
}
-@@ -6605,8 +6934,8 @@ static const void *lt_preloaded_setup() {
+@@ -6953,8 +7284,8 @@ static const void *lt_preloaded_setup()
_LT_EOF
# Now try linking the two files.
mv conftest.$ac_objext conftstm.$ac_objext
@@ -4371,7 +4408,7 @@ index fbac8f44d5..a40ac2144f 100755
LIBS="conftstm.$ac_objext"
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -6616,8 +6945,8 @@ _LT_EOF
+@@ -6964,8 +7295,8 @@ _LT_EOF
test $ac_status = 0; } && test -s conftest${ac_exeext}; then
pipe_works=yes
fi
@@ -4382,7 +4419,7 @@ index fbac8f44d5..a40ac2144f 100755
else
echo "cannot find nm_test_func in $nlist" >&5
fi
-@@ -6654,6 +6983,21 @@ else
+@@ -7002,6 +7333,19 @@ else
$as_echo "ok" >&6; }
fi
@@ -4399,17 +4436,13 @@ index fbac8f44d5..a40ac2144f 100755
+
+
+
-+
-+
-@@ -6669,6 +7013,40 @@ fi
+@@ -7022,6 +7366,42 @@ fi
-+
-+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
@@ -4436,16 +4469,20 @@ index fbac8f44d5..a40ac2144f 100755
+ *)
+ { $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
++ 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; }
++
++
++
++
-
-
-@@ -6881,6 +7259,123 @@ esac
+ # Check whether --enable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then :
+@@ -7229,6 +7609,123 @@ esac
need_locks="$enable_libtool_lock"
@@ -4454,7 +4491,7 @@ index fbac8f44d5..a40ac2144f 100755
+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 :
++if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MANIFEST_TOOL"; then
@@ -4466,7 +4503,7 @@ index fbac8f44d5..a40ac2144f 100755
+ 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
++ 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
@@ -4494,7 +4531,7 @@ index fbac8f44d5..a40ac2144f 100755
+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 :
++if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_MANIFEST_TOOL"; then
@@ -4506,7 +4543,7 @@ index fbac8f44d5..a40ac2144f 100755
+ 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
++ 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
@@ -4544,7 +4581,7 @@ index fbac8f44d5..a40ac2144f 100755
+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 :
++if ${lt_cv_path_mainfest_tool+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_path_mainfest_tool=no
@@ -4569,7 +4606,7 @@ index fbac8f44d5..a40ac2144f 100755
case $host_os in
rhapsody* | darwin*)
-@@ -7444,6 +7939,8 @@ _LT_EOF
+@@ -7792,6 +8289,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
@@ -4578,7 +4615,7 @@ index fbac8f44d5..a40ac2144f 100755
cat > conftest.c << _LT_EOF
int main() { return 0;}
_LT_EOF
-@@ -7639,7 +8136,8 @@ fi
+@@ -7987,7 +8486,8 @@ fi
LIBTOOL_DEPS="$ltmain"
# Always use our own libtool.
@@ -4588,7 +4625,7 @@ index fbac8f44d5..a40ac2144f 100755
-@@ -7728,7 +8226,7 @@ aix3*)
+@@ -8076,7 +8576,7 @@ aix3*)
esac
# Global variables:
@@ -4597,7 +4634,7 @@ index fbac8f44d5..a40ac2144f 100755
can_build_shared=yes
# All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -8026,8 +8524,6 @@ fi
+@@ -8374,8 +8874,6 @@ fi
lt_prog_compiler_pic=
lt_prog_compiler_static=
@@ -4606,7 +4643,7 @@ index fbac8f44d5..a40ac2144f 100755
if test "$GCC" = yes; then
lt_prog_compiler_wl='-Wl,'
-@@ -8193,6 +8689,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8541,6 +9039,12 @@ $as_echo_n "checking for $compiler optio
lt_prog_compiler_pic='--shared'
lt_prog_compiler_static='--static'
;;
@@ -4619,7 +4656,7 @@ index fbac8f44d5..a40ac2144f 100755
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
-@@ -8255,7 +8757,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8603,7 +9107,7 @@ $as_echo_n "checking for $compiler optio
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
case $cc_basename in
@@ -4628,7 +4665,7 @@ index fbac8f44d5..a40ac2144f 100755
lt_prog_compiler_wl='-Qoption ld ';;
*)
lt_prog_compiler_wl='-Wl,';;
-@@ -8312,13 +8814,17 @@ case $host_os in
+@@ -8660,13 +9164,17 @@ case $host_os in
lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
;;
esac
@@ -4641,7 +4678,7 @@ index fbac8f44d5..a40ac2144f 100755
+{ $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 :
++if ${lt_cv_prog_compiler_pic+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
@@ -4652,7 +4689,7 @@ index fbac8f44d5..a40ac2144f 100755
#
# Check to make sure the PIC flag actually works.
-@@ -8379,6 +8885,11 @@ fi
+@@ -8727,6 +9235,11 @@ fi
@@ -4664,7 +4701,7 @@ index fbac8f44d5..a40ac2144f 100755
#
# Check to make sure the static flag actually works.
#
-@@ -8729,7 +9240,8 @@ _LT_EOF
+@@ -9077,7 +9590,8 @@ _LT_EOF
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
@@ -4674,7 +4711,7 @@ index fbac8f44d5..a40ac2144f 100755
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -8828,12 +9340,12 @@ _LT_EOF
+@@ -9176,12 +9690,12 @@ _LT_EOF
whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
hardcode_libdir_flag_spec=
hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -4689,7 +4726,7 @@ index fbac8f44d5..a40ac2144f 100755
fi
;;
esac
-@@ -8847,8 +9359,8 @@ _LT_EOF
+@@ -9195,8 +9709,8 @@ _LT_EOF
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
@@ -4700,7 +4737,7 @@ index fbac8f44d5..a40ac2144f 100755
fi
;;
-@@ -8866,8 +9378,8 @@ _LT_EOF
+@@ -9214,8 +9728,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -4711,7 +4748,7 @@ index fbac8f44d5..a40ac2144f 100755
else
ld_shlibs=no
fi
-@@ -8913,8 +9425,8 @@ _LT_EOF
+@@ -9261,8 +9775,8 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -4722,7 +4759,7 @@ index fbac8f44d5..a40ac2144f 100755
else
ld_shlibs=no
fi
-@@ -9044,7 +9556,13 @@ _LT_EOF
+@@ -9392,7 +9906,13 @@ _LT_EOF
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -4730,14 +4767,14 @@ index fbac8f44d5..a40ac2144f 100755
+ 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 :
++ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-@@ -9057,22 +9575,29 @@ main ()
+@@ -9405,22 +9925,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -4780,7 +4817,7 @@ index fbac8f44d5..a40ac2144f 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -9084,7 +9609,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9432,7 +9959,13 @@ if test -z "$aix_libpath"; then aix_libp
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -4788,14 +4825,14 @@ index fbac8f44d5..a40ac2144f 100755
+ 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 :
++ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-@@ -9097,22 +9628,29 @@ main ()
+@@ -9445,22 +9978,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -4838,7 +4875,7 @@ index fbac8f44d5..a40ac2144f 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
-@@ -9157,20 +9695,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9505,20 +10045,63 @@ if test -z "$aix_libpath"; then aix_libp
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
@@ -4916,7 +4953,7 @@ index fbac8f44d5..a40ac2144f 100755
;;
darwin* | rhapsody*)
-@@ -9231,7 +9812,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9579,7 +10162,7 @@ if test -z "$aix_libpath"; then aix_libp
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
@@ -4925,7 +4962,7 @@ index fbac8f44d5..a40ac2144f 100755
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
-@@ -9239,7 +9820,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9587,7 +10170,7 @@ if test -z "$aix_libpath"; then aix_libp
hpux9*)
if test "$GCC" = yes; then
@@ -4934,7 +4971,7 @@ index fbac8f44d5..a40ac2144f 100755
else
archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
fi
-@@ -9255,7 +9836,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9603,7 +10186,7 @@ if test -z "$aix_libpath"; then aix_libp
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -4943,7 +4980,7 @@ index fbac8f44d5..a40ac2144f 100755
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
-@@ -9279,10 +9860,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9627,10 +10210,10 @@ if test -z "$aix_libpath"; then aix_libp
archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
@@ -4956,7 +4993,7 @@ index fbac8f44d5..a40ac2144f 100755
;;
esac
else
-@@ -9361,23 +9942,36 @@ fi
+@@ -9709,23 +10292,36 @@ fi
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
@@ -4971,7 +5008,7 @@ index fbac8f44d5..a40ac2144f 100755
+ # 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 :
++if ${lt_cv_irix_exported_symbol+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ save_LDFLAGS="$LDFLAGS"
@@ -5001,7 +5038,7 @@ index fbac8f44d5..a40ac2144f 100755
else
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -9462,7 +10056,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9810,7 +10406,7 @@ rm -f core conftest.err conftest.$ac_obj
osf4* | osf5*) # as osf3* with the addition of -msym flag
if test "$GCC" = yes; then
allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -5010,7 +5047,7 @@ index fbac8f44d5..a40ac2144f 100755
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
allow_undefined_flag=' -expect_unresolved \*'
-@@ -9481,9 +10075,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9829,9 +10425,9 @@ rm -f core conftest.err conftest.$ac_obj
no_undefined_flag=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
@@ -5022,7 +5059,7 @@ index fbac8f44d5..a40ac2144f 100755
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
-@@ -10059,8 +10653,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10407,8 +11003,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -5034,7 +5071,7 @@ index fbac8f44d5..a40ac2144f 100755
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -10093,13 +10688,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10441,13 +11038,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
@@ -5107,7 +5144,7 @@ index fbac8f44d5..a40ac2144f 100755
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -10191,7 +10844,7 @@ haiku*)
+@@ -10539,7 +11194,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -5116,7 +5153,16 @@ index fbac8f44d5..a40ac2144f 100755
hardcode_into_libs=yes
;;
-@@ -11031,10 +11684,10 @@ else
+@@ -11335,7 +11990,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11338 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11379,10 +12034,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))
@@ -5129,7 +5175,16 @@ index fbac8f44d5..a40ac2144f 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11137,10 +11790,10 @@ else
+@@ -11441,7 +12096,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11444 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11485,10 +12140,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))
@@ -5142,7 +5197,7 @@ index fbac8f44d5..a40ac2144f 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -15437,13 +16090,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -15803,13 +16458,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_
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"`'
@@ -5163,7 +5218,7 @@ index fbac8f44d5..a40ac2144f 100755
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -15458,14 +16118,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -15824,14 +16486,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$l
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"`'
@@ -5182,7 +5237,7 @@ index fbac8f44d5..a40ac2144f 100755
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -15498,12 +16161,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -15864,12 +16529,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcod
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"`'
@@ -5196,7 +5251,7 @@ index fbac8f44d5..a40ac2144f 100755
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -15558,8 +16221,13 @@ reload_flag \
+@@ -15924,8 +16589,13 @@ reload_flag \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
@@ -5210,7 +5265,7 @@ index fbac8f44d5..a40ac2144f 100755
STRIP \
RANLIB \
CC \
-@@ -15569,12 +16237,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -15935,12 +16605,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 \
@@ -5226,7 +5281,7 @@ index fbac8f44d5..a40ac2144f 100755
DSYMUTIL \
NMEDIT \
LIPO \
-@@ -15590,7 +16260,6 @@ no_undefined_flag \
+@@ -15956,7 +16628,6 @@ no_undefined_flag \
hardcode_libdir_flag_spec \
hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
@@ -5234,7 +5289,7 @@ index fbac8f44d5..a40ac2144f 100755
exclude_expsyms \
include_expsyms \
file_list_spec \
-@@ -15626,6 +16295,7 @@ module_cmds \
+@@ -15992,6 +16663,7 @@ module_cmds \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
@@ -5242,7 +5297,7 @@ index fbac8f44d5..a40ac2144f 100755
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
-@@ -16390,7 +17060,8 @@ $as_echo X"$file" |
+@@ -16765,7 +17437,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,
@@ -5252,7 +5307,7 @@ index fbac8f44d5..a40ac2144f 100755
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
-@@ -16493,19 +17164,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -16868,19 +17541,42 @@ SP2NL=$lt_lt_SP2NL
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
@@ -5296,7 +5351,7 @@ index fbac8f44d5..a40ac2144f 100755
# A symbol stripping program.
STRIP=$lt_STRIP
-@@ -16535,6 +17229,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -16910,6 +17606,12 @@ global_symbol_to_c_name_address=$lt_lt_c
# 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
@@ -5309,7 +5364,7 @@ index fbac8f44d5..a40ac2144f 100755
# The name of the directory that contains temporary libtool files.
objdir=$objdir
-@@ -16544,6 +17244,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -16919,6 +17621,9 @@ MAGIC_CMD=$MAGIC_CMD
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
@@ -5319,7 +5374,7 @@ index fbac8f44d5..a40ac2144f 100755
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
-@@ -16658,12 +17361,12 @@ with_gcc=$GCC
+@@ -17033,12 +17738,12 @@ with_gcc=$GCC
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
@@ -5335,7 +5390,7 @@ index fbac8f44d5..a40ac2144f 100755
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
-@@ -16750,9 +17453,6 @@ inherit_rpath=$inherit_rpath
+@@ -17125,9 +17830,6 @@ inherit_rpath=$inherit_rpath
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=$link_all_deplibs
@@ -5345,7 +5400,7 @@ index fbac8f44d5..a40ac2144f 100755
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
-@@ -16768,6 +17468,9 @@ include_expsyms=$lt_include_expsyms
+@@ -17143,6 +17845,9 @@ include_expsyms=$lt_include_expsyms
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
@@ -5355,7 +5410,7 @@ index fbac8f44d5..a40ac2144f 100755
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
-@@ -16800,210 +17503,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -17175,210 +17880,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?
@@ -5557,15 +5612,9 @@ index fbac8f44d5..a40ac2144f 100755
-_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 ()\
@@ -5723,17 +5772,20 @@ index fbac8f44d5..a40ac2144f 100755
+ { $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
-+
-+
+
+- 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"
-diff --git a/gprof/configure b/gprof/configure
-index 6b43bf2b18..245ee48bc3 100755
---- a/gprof/configure
-+++ b/gprof/configure
-@@ -631,8 +631,11 @@ OTOOL
+Index: git/gprof/configure
+===================================================================
+--- git.orig/gprof/configure
++++ git/gprof/configure
+@@ -662,8 +662,11 @@ OTOOL
LIPO
NMEDIT
DSYMUTIL
@@ -5745,7 +5797,7 @@ index 6b43bf2b18..245ee48bc3 100755
OBJDUMP
LN_S
NM
-@@ -744,6 +747,7 @@ enable_static
+@@ -780,6 +783,7 @@ enable_static
with_pic
enable_fast_install
with_gnu_ld
@@ -5753,7 +5805,7 @@ index 6b43bf2b18..245ee48bc3 100755
enable_libtool_lock
enable_plugins
enable_largefile
-@@ -1402,6 +1406,8 @@ Optional Packages:
+@@ -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]
@@ -5762,7 +5814,7 @@ index 6b43bf2b18..245ee48bc3 100755
Some influential environment variables:
CC C compiler command
-@@ -4836,8 +4842,8 @@ esac
+@@ -5124,8 +5130,8 @@ esac
@@ -5773,7 +5825,7 @@ index 6b43bf2b18..245ee48bc3 100755
-@@ -4877,7 +4883,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -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.
@@ -5782,7 +5834,7 @@ index 6b43bf2b18..245ee48bc3 100755
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
ECHO='print -r --'
elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -5563,8 +5569,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -5851,8 +5857,8 @@ $as_echo_n "checking whether the shell u
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
@@ -5793,13 +5845,13 @@ index 6b43bf2b18..245ee48bc3 100755
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
&& xsi_shell=yes
-@@ -5613,6 +5619,80 @@ esac
+@@ -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 :
++if ${lt_cv_to_host_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $host in
@@ -5846,7 +5898,7 @@ index 6b43bf2b18..245ee48bc3 100755
+
+{ $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 :
++if ${lt_cv_to_tool_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ #assume ordinary cross tools, or native build.
@@ -5873,8 +5925,8 @@ index 6b43bf2b18..245ee48bc3 100755
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
$as_echo_n "checking for $LD option to reload object files... " >&6; }
- if test "${lt_cv_ld_reload_flag+set}" = set; then :
-@@ -5629,6 +5709,11 @@ case $reload_flag in
+ 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
@@ -5886,7 +5938,7 @@ index 6b43bf2b18..245ee48bc3 100755
darwin*)
if test "$GCC" = yes; then
reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -5797,7 +5882,8 @@ mingw* | pw32*)
+@@ -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
@@ -5896,7 +5948,7 @@ index 6b43bf2b18..245ee48bc3 100755
lt_cv_file_magic_cmd='$OBJDUMP -f'
fi
;;
-@@ -5874,11 +5960,6 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+@@ -6162,11 +6248,6 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
lt_cv_deplibs_check_method=pass_all
;;
@@ -5908,7 +5960,7 @@ index 6b43bf2b18..245ee48bc3 100755
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)$'
-@@ -5956,6 +6037,21 @@ esac
+@@ -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; }
@@ -5930,7 +5982,7 @@ index 6b43bf2b18..245ee48bc3 100755
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -5971,9 +6067,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6259,9 +6355,162 @@ test -z "$deplibs_check_method" && depli
@@ -5944,12 +5996,14 @@ index 6b43bf2b18..245ee48bc3 100755
+
+
+
-+if test -n "$ac_tool_prefix"; then
+ 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 :
++if ${ac_cv_prog_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DLLTOOL"; then
@@ -5961,7 +6015,7 @@ index 6b43bf2b18..245ee48bc3 100755
+ 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
++ 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
@@ -5989,7 +6043,7 @@ index 6b43bf2b18..245ee48bc3 100755
+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 :
++if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
@@ -6001,7 +6055,7 @@ index 6b43bf2b18..245ee48bc3 100755
+ 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
++ 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
@@ -6049,7 +6103,7 @@ index 6b43bf2b18..245ee48bc3 100755
+
+{ $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 :
++if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_sharedlib_from_linklib_cmd='unknown'
@@ -6085,26 +6139,24 @@ index 6b43bf2b18..245ee48bc3 100755
+
+
+
- if test -n "$ac_tool_prefix"; then
-- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
--set dummy ${ac_tool_prefix}ar; ac_word=$2
++if test -n "$ac_tool_prefix"; then
+ 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 test "${ac_cv_prog_AR+set}" = set; then :
-@@ -5989,7 +6238,7 @@ do
+ if ${ac_cv_prog_AR+:} false; then :
+@@ -6277,7 +6526,7 @@ do
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
+ 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
-@@ -6009,11 +6258,15 @@ $as_echo "no" >&6; }
+@@ -6297,11 +6546,15 @@ $as_echo "no" >&6; }
fi
@@ -6122,17 +6174,17 @@ index 6b43bf2b18..245ee48bc3 100755
+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 test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
-@@ -6029,7 +6282,7 @@ do
+ if ${ac_cv_prog_ac_ct_AR+:} false; then :
+@@ -6317,7 +6570,7 @@ do
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
+ 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
-@@ -6048,6 +6301,10 @@ else
+@@ -6336,6 +6589,10 @@ else
$as_echo "no" >&6; }
fi
@@ -6143,7 +6195,7 @@ index 6b43bf2b18..245ee48bc3 100755
if test "x$ac_ct_AR" = x; then
AR="false"
else
-@@ -6059,12 +6316,10 @@ ac_tool_warned=yes ;;
+@@ -6347,16 +6604,72 @@ ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
fi
@@ -6155,16 +6207,20 @@ index 6b43bf2b18..245ee48bc3 100755
-test -z "$AR_FLAGS" && AR_FLAGS=cru
+: ${AR=ar}
+: ${AR_FLAGS=cru}
-
-
-
-@@ -6076,6 +6331,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 test "${lt_cv_ar_at_file+set}" = set; then :
++if ${lt_cv_ar_at_file+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ar_at_file=no
@@ -6174,7 +6230,7 @@ index 6b43bf2b18..245ee48bc3 100755
+int
+main ()
+{
-+
+
+ ;
+ return 0;
+}
@@ -6200,30 +6256,23 @@ index 6b43bf2b18..245ee48bc3 100755
+ fi
+ fi
+ rm -f conftest.* libconftest.a
-+
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
-+
+
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
-+
-+
-+
-+
-+
-+
-+
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
- set dummy ${ac_tool_prefix}strip; ac_word=$2
-@@ -6410,8 +6723,8 @@ esac
+
+
+
+@@ -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
@@ -6234,7 +6283,7 @@ index 6b43bf2b18..245ee48bc3 100755
# Handle CRLF in mingw tool chain
opt_cr=
-@@ -6447,6 +6760,7 @@ for ac_symprfx in "" "_"; do
+@@ -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
@@ -6242,7 +6291,7 @@ index 6b43bf2b18..245ee48bc3 100755
# Check to see that the pipe works correctly.
pipe_works=no
-@@ -6488,6 +6802,18 @@ _LT_EOF
+@@ -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
@@ -6261,7 +6310,7 @@ index 6b43bf2b18..245ee48bc3 100755
#ifdef __cplusplus
extern "C" {
#endif
-@@ -6499,7 +6825,7 @@ _LT_EOF
+@@ -6787,7 +7113,7 @@ _LT_EOF
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
@@ -6270,7 +6319,7 @@ index 6b43bf2b18..245ee48bc3 100755
const char *name;
void *address;
}
-@@ -6525,8 +6851,8 @@ static const void *lt_preloaded_setup() {
+@@ -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
@@ -6281,7 +6330,7 @@ index 6b43bf2b18..245ee48bc3 100755
LIBS="conftstm.$ac_objext"
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -6536,8 +6862,8 @@ _LT_EOF
+@@ -6824,8 +7150,8 @@ _LT_EOF
test $ac_status = 0; } && test -s conftest${ac_exeext}; then
pipe_works=yes
fi
@@ -6292,7 +6341,7 @@ index 6b43bf2b18..245ee48bc3 100755
else
echo "cannot find nm_test_func in $nlist" >&5
fi
-@@ -6574,6 +6900,18 @@ else
+@@ -6862,6 +7188,17 @@ else
$as_echo "ok" >&6; }
fi
@@ -6307,19 +6356,14 @@ index 6b43bf2b18..245ee48bc3 100755
+
+
+
-+
-@@ -6590,6 +6928,43 @@ fi
+@@ -6883,6 +7220,44 @@ fi
+
-+
-+
-+
-+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
@@ -6346,16 +6390,21 @@ index 6b43bf2b18..245ee48bc3 100755
+ *)
+ { $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
++ 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; }
-
-
-
-@@ -6801,6 +7176,123 @@ esac
++
++
++
++
++
+ # Check whether --enable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then :
+ enableval=$enable_libtool_lock;
+@@ -7089,6 +7464,123 @@ esac
need_locks="$enable_libtool_lock"
@@ -6364,7 +6413,7 @@ index 6b43bf2b18..245ee48bc3 100755
+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 :
++if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MANIFEST_TOOL"; then
@@ -6376,7 +6425,7 @@ index 6b43bf2b18..245ee48bc3 100755
+ 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
++ 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
@@ -6404,7 +6453,7 @@ index 6b43bf2b18..245ee48bc3 100755
+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 :
++if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_MANIFEST_TOOL"; then
@@ -6416,7 +6465,7 @@ index 6b43bf2b18..245ee48bc3 100755
+ 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
++ 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
@@ -6454,7 +6503,7 @@ index 6b43bf2b18..245ee48bc3 100755
+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 :
++if ${lt_cv_path_mainfest_tool+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_path_mainfest_tool=no
@@ -6479,7 +6528,7 @@ index 6b43bf2b18..245ee48bc3 100755
case $host_os in
rhapsody* | darwin*)
-@@ -7364,6 +7856,8 @@ _LT_EOF
+@@ -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
@@ -6488,7 +6537,7 @@ index 6b43bf2b18..245ee48bc3 100755
cat > conftest.c << _LT_EOF
int main() { return 0;}
_LT_EOF
-@@ -7559,7 +8053,8 @@ fi
+@@ -7847,7 +8341,8 @@ fi
LIBTOOL_DEPS="$ltmain"
# Always use our own libtool.
@@ -6498,7 +6547,7 @@ index 6b43bf2b18..245ee48bc3 100755
-@@ -7648,7 +8143,7 @@ aix3*)
+@@ -7936,7 +8431,7 @@ aix3*)
esac
# Global variables:
@@ -6507,7 +6556,7 @@ index 6b43bf2b18..245ee48bc3 100755
can_build_shared=yes
# All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -7946,8 +8441,6 @@ fi
+@@ -8234,8 +8729,6 @@ fi
lt_prog_compiler_pic=
lt_prog_compiler_static=
@@ -6516,7 +6565,7 @@ index 6b43bf2b18..245ee48bc3 100755
if test "$GCC" = yes; then
lt_prog_compiler_wl='-Wl,'
-@@ -8113,6 +8606,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8401,6 +8894,12 @@ $as_echo_n "checking for $compiler optio
lt_prog_compiler_pic='--shared'
lt_prog_compiler_static='--static'
;;
@@ -6529,7 +6578,7 @@ index 6b43bf2b18..245ee48bc3 100755
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
-@@ -8175,7 +8674,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8463,7 +8962,7 @@ $as_echo_n "checking for $compiler optio
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
case $cc_basename in
@@ -6538,7 +6587,7 @@ index 6b43bf2b18..245ee48bc3 100755
lt_prog_compiler_wl='-Qoption ld ';;
*)
lt_prog_compiler_wl='-Wl,';;
-@@ -8232,13 +8731,17 @@ case $host_os in
+@@ -8520,13 +9019,17 @@ case $host_os in
lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
;;
esac
@@ -6551,7 +6600,7 @@ index 6b43bf2b18..245ee48bc3 100755
+{ $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 :
++if ${lt_cv_prog_compiler_pic+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
@@ -6562,7 +6611,7 @@ index 6b43bf2b18..245ee48bc3 100755
#
# Check to make sure the PIC flag actually works.
-@@ -8299,6 +8802,11 @@ fi
+@@ -8587,6 +9090,11 @@ fi
@@ -6574,7 +6623,7 @@ index 6b43bf2b18..245ee48bc3 100755
#
# Check to make sure the static flag actually works.
#
-@@ -8649,7 +9157,8 @@ _LT_EOF
+@@ -8937,7 +9445,8 @@ _LT_EOF
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
@@ -6584,7 +6633,7 @@ index 6b43bf2b18..245ee48bc3 100755
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -8748,12 +9257,12 @@ _LT_EOF
+@@ -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'
@@ -6599,7 +6648,7 @@ index 6b43bf2b18..245ee48bc3 100755
fi
;;
esac
-@@ -8767,8 +9276,8 @@ _LT_EOF
+@@ -9055,8 +9564,8 @@ _LT_EOF
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
@@ -6610,7 +6659,7 @@ index 6b43bf2b18..245ee48bc3 100755
fi
;;
-@@ -8786,8 +9295,8 @@ _LT_EOF
+@@ -9074,8 +9583,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -6621,7 +6670,7 @@ index 6b43bf2b18..245ee48bc3 100755
else
ld_shlibs=no
fi
-@@ -8833,8 +9342,8 @@ _LT_EOF
+@@ -9121,8 +9630,8 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -6632,7 +6681,7 @@ index 6b43bf2b18..245ee48bc3 100755
else
ld_shlibs=no
fi
-@@ -8964,7 +9473,13 @@ _LT_EOF
+@@ -9252,7 +9761,13 @@ _LT_EOF
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -6640,14 +6689,14 @@ index 6b43bf2b18..245ee48bc3 100755
+ 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 :
++ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-@@ -8977,22 +9492,29 @@ main ()
+@@ -9265,22 +9780,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -6690,7 +6739,7 @@ index 6b43bf2b18..245ee48bc3 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -9004,7 +9526,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9292,7 +9814,13 @@ if test -z "$aix_libpath"; then aix_libp
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -6698,14 +6747,14 @@ index 6b43bf2b18..245ee48bc3 100755
+ 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 :
++ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-@@ -9017,22 +9545,29 @@ main ()
+@@ -9305,22 +9833,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -6748,7 +6797,7 @@ index 6b43bf2b18..245ee48bc3 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
-@@ -9077,20 +9612,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9365,20 +9900,63 @@ if test -z "$aix_libpath"; then aix_libp
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
@@ -6826,7 +6875,7 @@ index 6b43bf2b18..245ee48bc3 100755
;;
darwin* | rhapsody*)
-@@ -9151,7 +9729,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9439,7 +10017,7 @@ if test -z "$aix_libpath"; then aix_libp
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
@@ -6835,7 +6884,7 @@ index 6b43bf2b18..245ee48bc3 100755
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
-@@ -9159,7 +9737,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9447,7 +10025,7 @@ if test -z "$aix_libpath"; then aix_libp
hpux9*)
if test "$GCC" = yes; then
@@ -6844,7 +6893,7 @@ index 6b43bf2b18..245ee48bc3 100755
else
archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
fi
-@@ -9175,7 +9753,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9463,7 +10041,7 @@ if test -z "$aix_libpath"; then aix_libp
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -6853,7 +6902,7 @@ index 6b43bf2b18..245ee48bc3 100755
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
-@@ -9199,10 +9777,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9487,10 +10065,10 @@ if test -z "$aix_libpath"; then aix_libp
archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
@@ -6866,7 +6915,7 @@ index 6b43bf2b18..245ee48bc3 100755
;;
esac
else
-@@ -9281,23 +9859,36 @@ fi
+@@ -9569,23 +10147,36 @@ fi
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
@@ -6881,7 +6930,7 @@ index 6b43bf2b18..245ee48bc3 100755
+ # 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 :
++if ${lt_cv_irix_exported_symbol+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ save_LDFLAGS="$LDFLAGS"
@@ -6911,7 +6960,7 @@ index 6b43bf2b18..245ee48bc3 100755
else
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -9382,7 +9973,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9670,7 +10261,7 @@ rm -f core conftest.err conftest.$ac_obj
osf4* | osf5*) # as osf3* with the addition of -msym flag
if test "$GCC" = yes; then
allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -6920,7 +6969,7 @@ index 6b43bf2b18..245ee48bc3 100755
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
allow_undefined_flag=' -expect_unresolved \*'
-@@ -9401,9 +9992,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9689,9 +10280,9 @@ rm -f core conftest.err conftest.$ac_obj
no_undefined_flag=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
@@ -6932,7 +6981,7 @@ index 6b43bf2b18..245ee48bc3 100755
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
-@@ -9979,8 +10570,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10267,8 +10858,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -6944,7 +6993,7 @@ index 6b43bf2b18..245ee48bc3 100755
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -10013,13 +10605,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -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
@@ -7017,7 +7066,7 @@ index 6b43bf2b18..245ee48bc3 100755
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -10111,7 +10761,7 @@ haiku*)
+@@ -10399,7 +11049,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -7026,7 +7075,16 @@ index 6b43bf2b18..245ee48bc3 100755
hardcode_into_libs=yes
;;
-@@ -10951,10 +11601,10 @@ else
+@@ -11195,7 +11845,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11193 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -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))
@@ -7039,7 +7097,16 @@ index 6b43bf2b18..245ee48bc3 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11057,10 +11707,10 @@ else
+@@ -11301,7 +11951,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11299 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -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))
@@ -7052,7 +7119,7 @@ index 6b43bf2b18..245ee48bc3 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -13005,13 +13655,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -13314,13 +13964,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_
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"`'
@@ -7073,7 +7140,7 @@ index 6b43bf2b18..245ee48bc3 100755
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -13026,14 +13683,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -13335,14 +13992,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$l
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"`'
@@ -7092,7 +7159,7 @@ index 6b43bf2b18..245ee48bc3 100755
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -13066,12 +13726,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -13375,12 +14035,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcod
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"`'
@@ -7106,7 +7173,7 @@ index 6b43bf2b18..245ee48bc3 100755
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -13126,8 +13786,13 @@ reload_flag \
+@@ -13435,8 +14095,13 @@ reload_flag \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
@@ -7120,7 +7187,7 @@ index 6b43bf2b18..245ee48bc3 100755
STRIP \
RANLIB \
CC \
-@@ -13137,12 +13802,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -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 \
@@ -7136,7 +7203,7 @@ index 6b43bf2b18..245ee48bc3 100755
DSYMUTIL \
NMEDIT \
LIPO \
-@@ -13158,7 +13825,6 @@ no_undefined_flag \
+@@ -13467,7 +14134,6 @@ no_undefined_flag \
hardcode_libdir_flag_spec \
hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
@@ -7144,7 +7211,7 @@ index 6b43bf2b18..245ee48bc3 100755
exclude_expsyms \
include_expsyms \
file_list_spec \
-@@ -13194,6 +13860,7 @@ module_cmds \
+@@ -13503,6 +14169,7 @@ module_cmds \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
@@ -7152,7 +7219,7 @@ index 6b43bf2b18..245ee48bc3 100755
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
-@@ -13950,7 +14617,8 @@ $as_echo X"$file" |
+@@ -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,
@@ -7162,7 +7229,7 @@ index 6b43bf2b18..245ee48bc3 100755
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
-@@ -14053,19 +14721,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -14371,19 +15039,42 @@ SP2NL=$lt_lt_SP2NL
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
@@ -7206,7 +7273,7 @@ index 6b43bf2b18..245ee48bc3 100755
# A symbol stripping program.
STRIP=$lt_STRIP
-@@ -14095,6 +14786,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -14413,6 +15104,12 @@ global_symbol_to_c_name_address=$lt_lt_c
# 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
@@ -7219,7 +7286,7 @@ index 6b43bf2b18..245ee48bc3 100755
# The name of the directory that contains temporary libtool files.
objdir=$objdir
-@@ -14104,6 +14801,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -14422,6 +15119,9 @@ MAGIC_CMD=$MAGIC_CMD
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
@@ -7229,7 +7296,7 @@ index 6b43bf2b18..245ee48bc3 100755
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
-@@ -14218,12 +14918,12 @@ with_gcc=$GCC
+@@ -14536,12 +15236,12 @@ with_gcc=$GCC
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
@@ -7245,7 +7312,7 @@ index 6b43bf2b18..245ee48bc3 100755
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
-@@ -14310,9 +15010,6 @@ inherit_rpath=$inherit_rpath
+@@ -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
@@ -7255,7 +7322,7 @@ index 6b43bf2b18..245ee48bc3 100755
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
-@@ -14328,6 +15025,9 @@ include_expsyms=$lt_include_expsyms
+@@ -14646,6 +15343,9 @@ include_expsyms=$lt_include_expsyms
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
@@ -7265,7 +7332,7 @@ index 6b43bf2b18..245ee48bc3 100755
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
-@@ -14360,210 +15060,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -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?
@@ -7467,15 +7534,9 @@ index 6b43bf2b18..245ee48bc3 100755
-_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 ()\
@@ -7633,17 +7694,20 @@ index 6b43bf2b18..245ee48bc3 100755
+ { $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
-+
-+
+
+- 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"
-diff --git a/ld/configure b/ld/configure
-index 0cc6e8a50f..db8b998722 100755
---- a/ld/configure
-+++ b/ld/configure
-@@ -655,8 +655,11 @@ OTOOL
+Index: git/ld/configure
+===================================================================
+--- git.orig/ld/configure
++++ git/ld/configure
+@@ -687,8 +687,11 @@ OTOOL
LIPO
NMEDIT
DSYMUTIL
@@ -7655,7 +7719,7 @@ index 0cc6e8a50f..db8b998722 100755
OBJDUMP
LN_S
NM
-@@ -778,6 +781,7 @@ enable_static
+@@ -815,6 +818,7 @@ enable_static
with_pic
enable_fast_install
with_gnu_ld
@@ -7663,7 +7727,7 @@ index 0cc6e8a50f..db8b998722 100755
enable_libtool_lock
enable_plugins
enable_largefile
-@@ -1464,6 +1468,8 @@ Optional Packages:
+@@ -1507,6 +1511,8 @@ Optional Packages:
--with-pic try to use only PIC/non-PIC objects [default=use
both]
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
@@ -7672,7 +7736,7 @@ index 0cc6e8a50f..db8b998722 100755
--with-lib-path=dir1:dir2... set default LIB_PATH
--with-sysroot=DIR Search for usr/lib et al within DIR.
-@@ -5658,8 +5664,8 @@ esac
+@@ -5959,8 +5965,8 @@ esac
@@ -7683,7 +7747,7 @@ index 0cc6e8a50f..db8b998722 100755
-@@ -5699,7 +5705,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -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.
@@ -7692,7 +7756,7 @@ index 0cc6e8a50f..db8b998722 100755
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
ECHO='print -r --'
elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -6385,8 +6391,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -6686,8 +6692,8 @@ $as_echo_n "checking whether the shell u
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
@@ -7703,13 +7767,13 @@ index 0cc6e8a50f..db8b998722 100755
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
&& xsi_shell=yes
-@@ -6435,6 +6441,80 @@ esac
+@@ -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 test "${lt_cv_to_host_file_cmd+set}" = set; then :
++if ${lt_cv_to_host_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $host in
@@ -7756,7 +7820,7 @@ index 0cc6e8a50f..db8b998722 100755
+
+{ $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 :
++if ${lt_cv_to_tool_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ #assume ordinary cross tools, or native build.
@@ -7783,8 +7847,8 @@ index 0cc6e8a50f..db8b998722 100755
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
$as_echo_n "checking for $LD option to reload object files... " >&6; }
- if test "${lt_cv_ld_reload_flag+set}" = set; then :
-@@ -6451,6 +6531,11 @@ case $reload_flag in
+ 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
@@ -7796,7 +7860,7 @@ index 0cc6e8a50f..db8b998722 100755
darwin*)
if test "$GCC" = yes; then
reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6619,7 +6704,8 @@ mingw* | pw32*)
+@@ -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
@@ -7806,7 +7870,7 @@ index 0cc6e8a50f..db8b998722 100755
lt_cv_file_magic_cmd='$OBJDUMP -f'
fi
;;
-@@ -6773,6 +6859,21 @@ esac
+@@ -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; }
@@ -7828,7 +7892,7 @@ index 0cc6e8a50f..db8b998722 100755
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -6788,9 +6889,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -7089,9 +7190,162 @@ test -z "$deplibs_check_method" && depli
@@ -7847,7 +7911,7 @@ index 0cc6e8a50f..db8b998722 100755
+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 :
++if ${ac_cv_prog_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DLLTOOL"; then
@@ -7859,7 +7923,7 @@ index 0cc6e8a50f..db8b998722 100755
+ 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
++ 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
@@ -7887,7 +7951,7 @@ index 0cc6e8a50f..db8b998722 100755
+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 :
++if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
@@ -7899,7 +7963,7 @@ index 0cc6e8a50f..db8b998722 100755
+ 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
++ 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
@@ -7947,7 +8011,7 @@ index 0cc6e8a50f..db8b998722 100755
+
+{ $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 :
++if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_sharedlib_from_linklib_cmd='unknown'
@@ -7992,17 +8056,17 @@ index 0cc6e8a50f..db8b998722 100755
+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 test "${ac_cv_prog_AR+set}" = set; then :
-@@ -6806,7 +7060,7 @@ do
+ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ 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
-@@ -6826,11 +7080,15 @@ $as_echo "no" >&6; }
+@@ -7127,11 +7381,15 @@ $as_echo "no" >&6; }
fi
@@ -8020,17 +8084,17 @@ index 0cc6e8a50f..db8b998722 100755
+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 test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
-@@ -6846,7 +7104,7 @@ do
+ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ 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
-@@ -6865,6 +7123,10 @@ else
+@@ -7166,6 +7424,10 @@ else
$as_echo "no" >&6; }
fi
@@ -8041,7 +8105,7 @@ index 0cc6e8a50f..db8b998722 100755
if test "x$ac_ct_AR" = x; then
AR="false"
else
-@@ -6876,12 +7138,12 @@ ac_tool_warned=yes ;;
+@@ -7177,12 +7439,11 @@ ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
fi
@@ -8054,17 +8118,16 @@ index 0cc6e8a50f..db8b998722 100755
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
-+
-@@ -6891,6 +7153,62 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
+@@ -7193,6 +7454,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 test "${lt_cv_ar_at_file+set}" = set; then :
++if ${lt_cv_ar_at_file+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ar_at_file=no
@@ -8118,10 +8181,11 @@ index 0cc6e8a50f..db8b998722 100755
+
+
+
-
++
if test -n "$ac_tool_prefix"; then
-@@ -7227,8 +7545,8 @@ esac
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+@@ -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
@@ -8132,7 +8196,7 @@ index 0cc6e8a50f..db8b998722 100755
# Handle CRLF in mingw tool chain
opt_cr=
-@@ -7264,6 +7582,7 @@ for ac_symprfx in "" "_"; do
+@@ -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
@@ -8140,7 +8204,7 @@ index 0cc6e8a50f..db8b998722 100755
# Check to see that the pipe works correctly.
pipe_works=no
-@@ -7305,6 +7624,18 @@ _LT_EOF
+@@ -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
@@ -8159,7 +8223,7 @@ index 0cc6e8a50f..db8b998722 100755
#ifdef __cplusplus
extern "C" {
#endif
-@@ -7316,7 +7647,7 @@ _LT_EOF
+@@ -7617,7 +7948,7 @@ _LT_EOF
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
@@ -8168,7 +8232,7 @@ index 0cc6e8a50f..db8b998722 100755
const char *name;
void *address;
}
-@@ -7342,8 +7673,8 @@ static const void *lt_preloaded_setup() {
+@@ -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
@@ -8179,7 +8243,7 @@ index 0cc6e8a50f..db8b998722 100755
LIBS="conftstm.$ac_objext"
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -7353,8 +7684,8 @@ _LT_EOF
+@@ -7654,8 +7985,8 @@ _LT_EOF
test $ac_status = 0; } && test -s conftest${ac_exeext}; then
pipe_works=yes
fi
@@ -8190,7 +8254,7 @@ index 0cc6e8a50f..db8b998722 100755
else
echo "cannot find nm_test_func in $nlist" >&5
fi
-@@ -7391,6 +7722,19 @@ else
+@@ -7692,6 +8023,13 @@ else
$as_echo "ok" >&6; }
fi
@@ -8201,16 +8265,10 @@ index 0cc6e8a50f..db8b998722 100755
+ nm_file_list_spec='@'
+fi
+
-+
-+
-+
-+
-+
-+
-@@ -7404,6 +7748,42 @@ fi
+@@ -7713,6 +8051,48 @@ fi
@@ -8218,6 +8276,7 @@ index 0cc6e8a50f..db8b998722 100755
+
+
+
++
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
@@ -8244,16 +8303,21 @@ index 0cc6e8a50f..db8b998722 100755
+ *)
+ { $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
++ 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; }
-
-
-
-@@ -7618,6 +7998,123 @@ esac
++
++
++
++
++
+ # Check whether --enable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then :
+ enableval=$enable_libtool_lock;
+@@ -7919,6 +8299,123 @@ esac
need_locks="$enable_libtool_lock"
@@ -8262,7 +8326,7 @@ index 0cc6e8a50f..db8b998722 100755
+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 :
++if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MANIFEST_TOOL"; then
@@ -8274,7 +8338,7 @@ index 0cc6e8a50f..db8b998722 100755
+ 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
++ 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
@@ -8302,7 +8366,7 @@ index 0cc6e8a50f..db8b998722 100755
+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 :
++if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_MANIFEST_TOOL"; then
@@ -8314,7 +8378,7 @@ index 0cc6e8a50f..db8b998722 100755
+ 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
++ 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
@@ -8352,7 +8416,7 @@ index 0cc6e8a50f..db8b998722 100755
+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 :
++if ${lt_cv_path_mainfest_tool+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_path_mainfest_tool=no
@@ -8377,7 +8441,7 @@ index 0cc6e8a50f..db8b998722 100755
case $host_os in
rhapsody* | darwin*)
-@@ -8181,6 +8678,8 @@ _LT_EOF
+@@ -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
@@ -8386,7 +8450,7 @@ index 0cc6e8a50f..db8b998722 100755
cat > conftest.c << _LT_EOF
int main() { return 0;}
_LT_EOF
-@@ -8249,6 +8748,16 @@ done
+@@ -8550,6 +9049,16 @@ done
@@ -8403,7 +8467,7 @@ index 0cc6e8a50f..db8b998722 100755
# Set options
-@@ -8377,7 +8886,8 @@ fi
+@@ -8678,7 +9187,8 @@ fi
LIBTOOL_DEPS="$ltmain"
# Always use our own libtool.
@@ -8413,7 +8477,7 @@ index 0cc6e8a50f..db8b998722 100755
-@@ -8466,7 +8976,7 @@ aix3*)
+@@ -8767,7 +9277,7 @@ aix3*)
esac
# Global variables:
@@ -8422,7 +8486,7 @@ index 0cc6e8a50f..db8b998722 100755
can_build_shared=yes
# All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -8764,8 +9274,6 @@ fi
+@@ -9065,8 +9575,6 @@ fi
lt_prog_compiler_pic=
lt_prog_compiler_static=
@@ -8431,7 +8495,7 @@ index 0cc6e8a50f..db8b998722 100755
if test "$GCC" = yes; then
lt_prog_compiler_wl='-Wl,'
-@@ -8931,6 +9439,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -9232,6 +9740,12 @@ $as_echo_n "checking for $compiler optio
lt_prog_compiler_pic='--shared'
lt_prog_compiler_static='--static'
;;
@@ -8444,7 +8508,7 @@ index 0cc6e8a50f..db8b998722 100755
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
-@@ -8993,7 +9507,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -9294,7 +9808,7 @@ $as_echo_n "checking for $compiler optio
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
case $cc_basename in
@@ -8453,7 +8517,7 @@ index 0cc6e8a50f..db8b998722 100755
lt_prog_compiler_wl='-Qoption ld ';;
*)
lt_prog_compiler_wl='-Wl,';;
-@@ -9050,13 +9564,17 @@ case $host_os in
+@@ -9351,13 +9865,17 @@ case $host_os in
lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
;;
esac
@@ -8466,7 +8530,7 @@ index 0cc6e8a50f..db8b998722 100755
+{ $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 :
++if ${lt_cv_prog_compiler_pic+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
@@ -8477,7 +8541,7 @@ index 0cc6e8a50f..db8b998722 100755
#
# Check to make sure the PIC flag actually works.
-@@ -9117,6 +9635,11 @@ fi
+@@ -9418,6 +9936,11 @@ fi
@@ -8489,7 +8553,7 @@ index 0cc6e8a50f..db8b998722 100755
#
# Check to make sure the static flag actually works.
#
-@@ -9467,7 +9990,8 @@ _LT_EOF
+@@ -9768,7 +10291,8 @@ _LT_EOF
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
@@ -8499,7 +8563,7 @@ index 0cc6e8a50f..db8b998722 100755
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -9566,12 +10090,12 @@ _LT_EOF
+@@ -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'
@@ -8514,7 +8578,7 @@ index 0cc6e8a50f..db8b998722 100755
fi
;;
esac
-@@ -9585,8 +10109,8 @@ _LT_EOF
+@@ -9886,8 +10410,8 @@ _LT_EOF
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
@@ -8525,7 +8589,7 @@ index 0cc6e8a50f..db8b998722 100755
fi
;;
-@@ -9604,8 +10128,8 @@ _LT_EOF
+@@ -9905,8 +10429,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -8536,7 +8600,7 @@ index 0cc6e8a50f..db8b998722 100755
else
ld_shlibs=no
fi
-@@ -9651,8 +10175,8 @@ _LT_EOF
+@@ -9952,8 +10476,8 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -8547,7 +8611,7 @@ index 0cc6e8a50f..db8b998722 100755
else
ld_shlibs=no
fi
-@@ -9782,7 +10306,13 @@ _LT_EOF
+@@ -10083,7 +10607,13 @@ _LT_EOF
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -8555,14 +8619,14 @@ index 0cc6e8a50f..db8b998722 100755
+ 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 :
++ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-@@ -9795,22 +10325,29 @@ main ()
+@@ -10096,22 +10626,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -8605,7 +8669,7 @@ index 0cc6e8a50f..db8b998722 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -9822,7 +10359,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -10123,7 +10660,13 @@ if test -z "$aix_libpath"; then aix_libp
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -8613,14 +8677,14 @@ index 0cc6e8a50f..db8b998722 100755
+ 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 :
++ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-@@ -9835,22 +10378,29 @@ main ()
+@@ -10136,22 +10679,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -8663,11 +8727,10 @@ index 0cc6e8a50f..db8b998722 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
-@@ -9894,21 +10444,64 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
- # When not using gcc, we currently assume that we are using
+@@ -10196,20 +10746,63 @@ if test -z "$aix_libpath"; then aix_libp
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
-- # no search path for DLLs.
+ # no search path for DLLs.
- hardcode_libdir_flag_spec=' '
- allow_undefined_flag=unsupported
- # Tell ltmain to make .lib files, not .a files.
@@ -8682,7 +8745,6 @@ index 0cc6e8a50f..db8b998722 100755
- 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
@@ -8743,7 +8805,7 @@ index 0cc6e8a50f..db8b998722 100755
;;
darwin* | rhapsody*)
-@@ -9969,7 +10562,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -10270,7 +10863,7 @@ if test -z "$aix_libpath"; then aix_libp
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
@@ -8752,7 +8814,7 @@ index 0cc6e8a50f..db8b998722 100755
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
-@@ -9977,7 +10570,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -10278,7 +10871,7 @@ if test -z "$aix_libpath"; then aix_libp
hpux9*)
if test "$GCC" = yes; then
@@ -8761,7 +8823,7 @@ index 0cc6e8a50f..db8b998722 100755
else
archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
fi
-@@ -9993,7 +10586,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -10294,7 +10887,7 @@ if test -z "$aix_libpath"; then aix_libp
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -8770,7 +8832,7 @@ index 0cc6e8a50f..db8b998722 100755
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
-@@ -10017,10 +10610,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -10318,10 +10911,10 @@ if test -z "$aix_libpath"; then aix_libp
archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
@@ -8783,7 +8845,7 @@ index 0cc6e8a50f..db8b998722 100755
;;
esac
else
-@@ -10099,23 +10692,36 @@ fi
+@@ -10400,23 +10993,36 @@ fi
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
@@ -8798,7 +8860,7 @@ index 0cc6e8a50f..db8b998722 100755
+ # 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 :
++if ${lt_cv_irix_exported_symbol+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ save_LDFLAGS="$LDFLAGS"
@@ -8828,7 +8890,7 @@ index 0cc6e8a50f..db8b998722 100755
else
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -10200,7 +10806,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -10501,7 +11107,7 @@ rm -f core conftest.err conftest.$ac_obj
osf4* | osf5*) # as osf3* with the addition of -msym flag
if test "$GCC" = yes; then
allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -8837,7 +8899,7 @@ index 0cc6e8a50f..db8b998722 100755
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
allow_undefined_flag=' -expect_unresolved \*'
-@@ -10219,9 +10825,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -10520,9 +11126,9 @@ rm -f core conftest.err conftest.$ac_obj
no_undefined_flag=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
@@ -8849,7 +8911,7 @@ index 0cc6e8a50f..db8b998722 100755
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
-@@ -10797,8 +11403,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -11098,8 +11704,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -8861,7 +8923,7 @@ index 0cc6e8a50f..db8b998722 100755
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -10831,13 +11438,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -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
@@ -8934,7 +8996,7 @@ index 0cc6e8a50f..db8b998722 100755
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -10929,7 +11594,7 @@ haiku*)
+@@ -11230,7 +11895,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -8943,7 +9005,16 @@ index 0cc6e8a50f..db8b998722 100755
hardcode_into_libs=yes
;;
-@@ -11769,10 +12434,10 @@ else
+@@ -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))
@@ -8956,7 +9027,16 @@ index 0cc6e8a50f..db8b998722 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11875,10 +12540,10 @@ else
+@@ -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))
@@ -8969,7 +9049,7 @@ index 0cc6e8a50f..db8b998722 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -12270,6 +12935,7 @@ $RM -r conftest*
+@@ -12571,6 +13236,7 @@ $RM -r conftest*
# Allow CC to be a program name with arguments.
lt_save_CC=$CC
@@ -8977,7 +9057,7 @@ index 0cc6e8a50f..db8b998722 100755
lt_save_LD=$LD
lt_save_GCC=$GCC
GCC=$GXX
-@@ -12287,6 +12953,7 @@ $RM -r conftest*
+@@ -12588,6 +13254,7 @@ $RM -r conftest*
fi
test -z "${LDCXX+set}" || LD=$LDCXX
CC=${CXX-"c++"}
@@ -8985,7 +9065,7 @@ index 0cc6e8a50f..db8b998722 100755
compiler=$CC
compiler_CXX=$CC
for cc_temp in $compiler""; do
-@@ -12569,7 +13236,13 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
+@@ -12870,7 +13537,13 @@ $as_echo_n "checking whether the $compil
allow_undefined_flag_CXX='-berok'
# Determine the default libpath from the value encoded in an empty
# executable.
@@ -8993,14 +9073,14 @@ index 0cc6e8a50f..db8b998722 100755
+ if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
-+ if test "${lt_cv_aix_libpath__CXX+set}" = set; then :
++ 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
-@@ -12582,22 +13255,29 @@ main ()
+@@ -12883,22 +13556,29 @@ main ()
_ACEOF
if ac_fn_cxx_try_link "$LINENO"; then :
@@ -9043,7 +9123,7 @@ index 0cc6e8a50f..db8b998722 100755
hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
-@@ -12610,7 +13290,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -12911,7 +13591,13 @@ if test -z "$aix_libpath"; then aix_libp
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -9051,14 +9131,14 @@ index 0cc6e8a50f..db8b998722 100755
+ if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
-+ if test "${lt_cv_aix_libpath__CXX+set}" = set; then :
++ 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
-@@ -12623,22 +13309,29 @@ main ()
+@@ -12924,22 +13610,29 @@ main ()
_ACEOF
if ac_fn_cxx_try_link "$LINENO"; then :
@@ -9101,7 +9181,7 @@ index 0cc6e8a50f..db8b998722 100755
hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
-@@ -12681,29 +13374,75 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -12982,29 +13675,75 @@ if test -z "$aix_libpath"; then aix_libp
;;
cygwin* | mingw* | pw32* | cegcc*)
@@ -9200,7 +9280,7 @@ index 0cc6e8a50f..db8b998722 100755
darwin* | rhapsody*)
-@@ -12809,7 +13548,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -13110,7 +13849,7 @@ if test -z "$aix_libpath"; then aix_libp
;;
*)
if test "$GXX" = yes; then
@@ -9209,7 +9289,7 @@ index 0cc6e8a50f..db8b998722 100755
else
# FIXME: insert proper C++ library support
ld_shlibs_CXX=no
-@@ -12880,10 +13619,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -13181,10 +13920,10 @@ if test -z "$aix_libpath"; then aix_libp
archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
ia64*)
@@ -9222,7 +9302,7 @@ index 0cc6e8a50f..db8b998722 100755
;;
esac
fi
-@@ -12924,9 +13663,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -13225,9 +13964,9 @@ if test -z "$aix_libpath"; then aix_libp
*)
if test "$GXX" = yes; then
if test "$with_gnu_ld" = no; then
@@ -9234,7 +9314,7 @@ index 0cc6e8a50f..db8b998722 100755
fi
fi
link_all_deplibs_CXX=yes
-@@ -12996,20 +13735,20 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -13297,20 +14036,20 @@ if test -z "$aix_libpath"; then aix_libp
prelink_cmds_CXX='tpldir=Template.dir~
rm -rf $tpldir~
$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
@@ -9259,7 +9339,7 @@ index 0cc6e8a50f..db8b998722 100755
;;
*) # Version 6 and above use weak symbols
archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-@@ -13204,7 +13943,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -13505,7 +14244,7 @@ if test -z "$aix_libpath"; then aix_libp
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'
;;
*)
@@ -9268,7 +9348,7 @@ index 0cc6e8a50f..db8b998722 100755
;;
esac
-@@ -13250,7 +13989,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -13551,7 +14290,7 @@ if test -z "$aix_libpath"; then aix_libp
solaris*)
case $cc_basename in
@@ -9277,7 +9357,7 @@ index 0cc6e8a50f..db8b998722 100755
# Sun C++ 4.2, 5.x and Centerline C++
archive_cmds_need_lc_CXX=yes
no_undefined_flag_CXX=' -zdefs'
-@@ -13291,9 +14030,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -13592,9 +14331,9 @@ if test -z "$aix_libpath"; then aix_libp
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
@@ -9289,7 +9369,7 @@ index 0cc6e8a50f..db8b998722 100755
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
-@@ -13428,6 +14167,13 @@ private:
+@@ -13729,6 +14468,13 @@ private:
};
_LT_EOF
@@ -9303,7 +9383,7 @@ index 0cc6e8a50f..db8b998722 100755
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
-@@ -13441,7 +14187,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+@@ -13742,7 +14488,7 @@ if { { eval echo "\"\$as_me\":${as_linen
pre_test_object_deps_done=no
for p in `eval "$output_verbose_link_cmd"`; do
@@ -9312,7 +9392,7 @@ index 0cc6e8a50f..db8b998722 100755
-L* | -R* | -l*)
# Some compilers place space between "-{L,R}" and the path.
-@@ -13450,13 +14196,22 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+@@ -13751,13 +14497,22 @@ if { { eval echo "\"\$as_me\":${as_linen
test $p = "-R"; then
prev=$p
continue
@@ -9339,7 +9419,7 @@ index 0cc6e8a50f..db8b998722 100755
# Internal compiler library paths should come after those
# provided the user. The postdeps already come after the
# user supplied libs so there is no need to process them.
-@@ -13476,8 +14231,10 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+@@ -13777,8 +14532,10 @@ if { { eval echo "\"\$as_me\":${as_linen
postdeps_CXX="${postdeps_CXX} ${prev}${p}"
fi
fi
@@ -9350,7 +9430,7 @@ index 0cc6e8a50f..db8b998722 100755
*.$objext)
# This assumes that the test object file only shows up
# once in the compiler output.
-@@ -13513,6 +14270,7 @@ else
+@@ -13814,6 +14571,7 @@ else
fi
$RM -f confest.$objext
@@ -9358,7 +9438,7 @@ index 0cc6e8a50f..db8b998722 100755
# PORTME: override above test on systems where it is broken
case $host_os in
-@@ -13548,7 +14306,7 @@ linux*)
+@@ -13849,7 +14607,7 @@ linux*)
solaris*)
case $cc_basename in
@@ -9367,7 +9447,7 @@ index 0cc6e8a50f..db8b998722 100755
# The more standards-conforming stlport4 library is
# incompatible with the Cstd library. Avoid specifying
# it if it's in CXXFLAGS. Ignore libCrun as
-@@ -13613,8 +14371,6 @@ fi
+@@ -13914,8 +14672,6 @@ fi
lt_prog_compiler_pic_CXX=
lt_prog_compiler_static_CXX=
@@ -9376,7 +9456,7 @@ index 0cc6e8a50f..db8b998722 100755
# C++ specific cases for pic, static, wl, etc.
if test "$GXX" = yes; then
-@@ -13719,6 +14475,11 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -14020,6 +14776,11 @@ $as_echo_n "checking for $compiler optio
;;
esac
;;
@@ -9388,7 +9468,7 @@ index 0cc6e8a50f..db8b998722 100755
dgux*)
case $cc_basename in
ec++*)
-@@ -13871,7 +14632,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -14172,7 +14933,7 @@ $as_echo_n "checking for $compiler optio
;;
solaris*)
case $cc_basename in
@@ -9397,7 +9477,7 @@ index 0cc6e8a50f..db8b998722 100755
# Sun C++ 4.2, 5.x and Centerline C++
lt_prog_compiler_pic_CXX='-KPIC'
lt_prog_compiler_static_CXX='-Bstatic'
-@@ -13936,10 +14697,17 @@ case $host_os in
+@@ -14237,10 +14998,17 @@ case $host_os in
lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
;;
esac
@@ -9407,7 +9487,7 @@ index 0cc6e8a50f..db8b998722 100755
+{ $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_CXX+set}" = set; then :
++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
@@ -9418,7 +9498,7 @@ index 0cc6e8a50f..db8b998722 100755
#
# Check to make sure the PIC flag actually works.
-@@ -13997,6 +14765,8 @@ fi
+@@ -14298,6 +15066,8 @@ fi
@@ -9427,7 +9507,7 @@ index 0cc6e8a50f..db8b998722 100755
#
# Check to make sure the static flag actually works.
#
-@@ -14174,6 +14944,7 @@ fi
+@@ -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'
@@ -9435,7 +9515,7 @@ index 0cc6e8a50f..db8b998722 100755
case $host_os in
aix[4-9]*)
# If we're using GNU nm, then we don't want the "-C" option.
-@@ -14188,15 +14959,20 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
+@@ -14489,15 +15260,20 @@ $as_echo_n "checking whether the $compil
;;
pw32*)
export_symbols_cmds_CXX="$ltdll_cmds"
@@ -9461,7 +9541,7 @@ index 0cc6e8a50f..db8b998722 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
$as_echo "$ld_shlibs_CXX" >&6; }
-@@ -14459,8 +15235,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -14760,8 +15536,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -9473,7 +9553,7 @@ index 0cc6e8a50f..db8b998722 100755
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -14492,13 +15269,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -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
@@ -9546,7 +9626,7 @@ index 0cc6e8a50f..db8b998722 100755
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -14589,7 +15424,7 @@ haiku*)
+@@ -14890,7 +15725,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -9555,7 +9635,7 @@ index 0cc6e8a50f..db8b998722 100755
hardcode_into_libs=yes
;;
-@@ -15048,6 +15883,7 @@ fi
+@@ -15349,6 +16184,7 @@ fi
fi # test -n "$compiler"
CC=$lt_save_CC
@@ -9563,7 +9643,7 @@ index 0cc6e8a50f..db8b998722 100755
LDCXX=$LD
LD=$lt_save_LD
GCC=$lt_save_GCC
-@@ -18083,13 +18919,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -18444,13 +19280,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_
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"`'
@@ -9584,7 +9664,7 @@ index 0cc6e8a50f..db8b998722 100755
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -18104,14 +18947,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -18465,14 +19308,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$l
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"`'
@@ -9603,7 +9683,7 @@ index 0cc6e8a50f..db8b998722 100755
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -18144,12 +18990,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -18505,12 +19351,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcod
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"`'
@@ -9617,7 +9697,7 @@ index 0cc6e8a50f..db8b998722 100755
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -18188,8 +19034,8 @@ old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote
+@@ -18549,8 +19395,8 @@ old_archive_cmds_CXX='`$ECHO "$old_archi
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"`'
@@ -9627,7 +9707,7 @@ index 0cc6e8a50f..db8b998722 100755
lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
-@@ -18216,12 +19062,12 @@ hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_
+@@ -18577,12 +19423,12 @@ hardcode_shlibpath_var_CXX='`$ECHO "$har
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"`'
@@ -9641,7 +9721,7 @@ index 0cc6e8a50f..db8b998722 100755
file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
-@@ -18259,8 +19105,13 @@ reload_flag \
+@@ -18620,8 +19466,13 @@ reload_flag \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
@@ -9655,7 +9735,7 @@ index 0cc6e8a50f..db8b998722 100755
STRIP \
RANLIB \
CC \
-@@ -18270,12 +19121,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -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 \
@@ -9671,7 +9751,7 @@ index 0cc6e8a50f..db8b998722 100755
DSYMUTIL \
NMEDIT \
LIPO \
-@@ -18291,7 +19144,6 @@ no_undefined_flag \
+@@ -18652,7 +19505,6 @@ no_undefined_flag \
hardcode_libdir_flag_spec \
hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
@@ -9679,7 +9759,7 @@ index 0cc6e8a50f..db8b998722 100755
exclude_expsyms \
include_expsyms \
file_list_spec \
-@@ -18313,8 +19165,8 @@ LD_CXX \
+@@ -18674,8 +19526,8 @@ LD_CXX \
reload_flag_CXX \
compiler_CXX \
lt_prog_compiler_no_builtin_flag_CXX \
@@ -9689,7 +9769,7 @@ index 0cc6e8a50f..db8b998722 100755
lt_prog_compiler_static_CXX \
lt_cv_prog_compiler_c_o_CXX \
export_dynamic_flag_spec_CXX \
-@@ -18326,7 +19178,6 @@ no_undefined_flag_CXX \
+@@ -18687,7 +19539,6 @@ no_undefined_flag_CXX \
hardcode_libdir_flag_spec_CXX \
hardcode_libdir_flag_spec_ld_CXX \
hardcode_libdir_separator_CXX \
@@ -9697,7 +9777,7 @@ index 0cc6e8a50f..db8b998722 100755
exclude_expsyms_CXX \
include_expsyms_CXX \
file_list_spec_CXX \
-@@ -18360,6 +19211,7 @@ module_cmds \
+@@ -18721,6 +19572,7 @@ module_cmds \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
@@ -9705,7 +9785,7 @@ index 0cc6e8a50f..db8b998722 100755
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
-@@ -18374,7 +19226,8 @@ archive_expsym_cmds_CXX \
+@@ -18735,7 +19587,8 @@ archive_expsym_cmds_CXX \
module_cmds_CXX \
module_expsym_cmds_CXX \
export_symbols_cmds_CXX \
@@ -9715,7 +9795,7 @@ index 0cc6e8a50f..db8b998722 100755
case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
*[\\\\\\\`\\"\\\$]*)
eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-@@ -19167,7 +20020,8 @@ $as_echo X"$file" |
+@@ -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,
@@ -9725,7 +9805,7 @@ index 0cc6e8a50f..db8b998722 100755
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
-@@ -19270,19 +20124,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -19642,19 +20496,42 @@ SP2NL=$lt_lt_SP2NL
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
@@ -9769,7 +9849,7 @@ index 0cc6e8a50f..db8b998722 100755
# A symbol stripping program.
STRIP=$lt_STRIP
-@@ -19312,6 +20189,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -19684,6 +20561,12 @@ global_symbol_to_c_name_address=$lt_lt_c
# 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
@@ -9782,7 +9862,7 @@ index 0cc6e8a50f..db8b998722 100755
# The name of the directory that contains temporary libtool files.
objdir=$objdir
-@@ -19321,6 +20204,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -19693,6 +20576,9 @@ MAGIC_CMD=$MAGIC_CMD
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
@@ -9792,7 +9872,7 @@ index 0cc6e8a50f..db8b998722 100755
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
-@@ -19435,12 +20321,12 @@ with_gcc=$GCC
+@@ -19807,12 +20693,12 @@ with_gcc=$GCC
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
@@ -9808,7 +9888,7 @@ index 0cc6e8a50f..db8b998722 100755
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
-@@ -19527,9 +20413,6 @@ inherit_rpath=$inherit_rpath
+@@ -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
@@ -9818,7 +9898,7 @@ index 0cc6e8a50f..db8b998722 100755
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
-@@ -19545,6 +20428,9 @@ include_expsyms=$lt_include_expsyms
+@@ -19917,6 +20800,9 @@ include_expsyms=$lt_include_expsyms
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
@@ -9828,7 +9908,7 @@ index 0cc6e8a50f..db8b998722 100755
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
-@@ -19591,210 +20477,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -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?
@@ -10030,15 +10110,9 @@ index 0cc6e8a50f..db8b998722 100755
-_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 ()\
@@ -10196,13 +10270,16 @@ index 0cc6e8a50f..db8b998722 100755
+ { $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
-+
-+
+
+- 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"
-@@ -19822,12 +20667,12 @@ with_gcc=$GCC_CXX
+@@ -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
@@ -10218,7 +10295,7 @@ index 0cc6e8a50f..db8b998722 100755
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static_CXX
-@@ -19914,9 +20759,6 @@ inherit_rpath=$inherit_rpath_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
@@ -10228,7 +10305,7 @@ index 0cc6e8a50f..db8b998722 100755
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols_CXX
-@@ -19932,6 +20774,9 @@ include_expsyms=$lt_include_expsyms_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
@@ -10238,10 +10315,10 @@ index 0cc6e8a50f..db8b998722 100755
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec_CXX
-diff --git a/libtool.m4 b/libtool.m4
-index 24d13f3440..e45fdc6998 100644
---- a/libtool.m4
-+++ b/libtool.m4
+Index: git/libtool.m4
+===================================================================
+--- git.orig/libtool.m4
++++ git/libtool.m4
@@ -1,7 +1,8 @@
# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
#
@@ -10281,7 +10358,7 @@ index 24d13f3440..e45fdc6998 100644
AC_SUBST(LIBTOOL)dnl
_LT_SETUP
-@@ -166,10 +169,13 @@ _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+@@ -166,10 +169,13 @@ _LT_DECL([], [exeext], [0], [Executable
dnl
m4_require([_LT_FILEUTILS_DEFAULTS])dnl
m4_require([_LT_CHECK_SHELL_FEATURES])dnl
@@ -10304,7 +10381,7 @@ index 24d13f3440..e45fdc6998 100644
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
+@@ -632,7 +638,7 @@ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_
m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
configured by $[0], generated by m4_PACKAGE_STRING.
@@ -10360,7 +10437,7 @@ index 24d13f3440..e45fdc6998 100644
+# 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_PROGRAM,[
+-AC_LINK_IFELSE([AC_LANG_SOURCE([AC_LANG_PROGRAM])],[
-lt_aix_libpath_sed='
- /Import File Strings/,/^$/ {
- /^0/ {
@@ -10409,7 +10486,7 @@ index 24d13f3440..e45fdc6998 100644
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])
+@@ -1161,6 +1177,39 @@ _LT_DECL([], [ECHO], [1], [An echo progr
])# _LT_PROG_ECHO_BACKSLASH
@@ -10662,7 +10739,7 @@ index 24d13f3440..e45fdc6998 100644
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -3174,7 +3336,11 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -3174,7 +3336,11 @@ test -z "$deplibs_check_method" && depli
_LT_DECL([], [deplibs_check_method], [1],
[Method to check whether dependent libraries are shared objects])
_LT_DECL([], [file_magic_cmd], [1],
@@ -10790,7 +10867,7 @@ index 24d13f3440..e45fdc6998 100644
const char *name;
void *address;
}
-@@ -3510,15 +3750,15 @@ static const void *lt_preloaded_setup() {
+@@ -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
@@ -10824,7 +10901,7 @@ index 24d13f3440..e45fdc6998 100644
_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
[Take the output of nm and produce a listing of raw symbols and C names])
_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
-@@ -3561,6 +3808,8 @@ _LT_DECL([global_symbol_to_c_name_address],
+@@ -3561,6 +3808,8 @@ _LT_DECL([global_symbol_to_c_name_addres
_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])
@@ -10909,7 +10986,7 @@ index 24d13f3440..e45fdc6998 100644
#
# Check to make sure the static flag actually works.
#
-@@ -4213,6 +4477,7 @@ _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+@@ -4213,6 +4477,7 @@ _LT_TAGDECL([link_static_flag], [lt_prog
m4_defun([_LT_LINKER_SHLIBS],
[AC_REQUIRE([LT_PATH_LD])dnl
AC_REQUIRE([LT_PATH_NM])dnl
@@ -11156,7 +11233,7 @@ index 24d13f3440..e45fdc6998 100644
# implicitly export all symbols.
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-- AC_LINK_IFELSE(int foo(void) {},
+- 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"
@@ -11231,7 +11308,7 @@ index 24d13f3440..e45fdc6998 100644
if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
(test "X$CXX" != "Xg++"))) ; then
-@@ -5487,6 +5818,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -5487,6 +5818,7 @@ if test "$_lt_caught_CXX_error" != yes;
# Allow CC to be a program name with arguments.
lt_save_CC=$CC
@@ -11239,7 +11316,7 @@ index 24d13f3440..e45fdc6998 100644
lt_save_LD=$LD
lt_save_GCC=$GCC
GCC=$GXX
-@@ -5504,6 +5836,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -5504,6 +5836,7 @@ if test "$_lt_caught_CXX_error" != yes;
fi
test -z "${LDCXX+set}" || LD=$LDCXX
CC=${CXX-"c++"}
@@ -11247,7 +11324,7 @@ index 24d13f3440..e45fdc6998 100644
compiler=$CC
_LT_TAGVAR(compiler, $1)=$CC
_LT_CC_BASENAME([$compiler])
-@@ -5667,7 +6000,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -5667,7 +6000,7 @@ if test "$_lt_caught_CXX_error" != yes;
_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
# Determine the default libpath from the value encoded in an empty
# executable.
@@ -11256,7 +11333,7 @@ index 24d13f3440..e45fdc6998 100644
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -5679,7 +6012,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -5679,7 +6012,7 @@ if test "$_lt_caught_CXX_error" != yes;
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -11265,7 +11342,7 @@ index 24d13f3440..e45fdc6998 100644
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
# -berok will link without error, but may produce a broken library.
-@@ -5721,29 +6054,75 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -5721,29 +6054,75 @@ if test "$_lt_caught_CXX_error" != yes;
;;
cygwin* | mingw* | pw32* | cegcc*)
@@ -11364,7 +11441,7 @@ index 24d13f3440..e45fdc6998 100644
darwin* | rhapsody*)
_LT_DARWIN_LINKER_FEATURES($1)
;;
-@@ -5818,7 +6197,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -5818,7 +6197,7 @@ if test "$_lt_caught_CXX_error" != yes;
;;
*)
if test "$GXX" = yes; then
@@ -11373,7 +11450,7 @@ index 24d13f3440..e45fdc6998 100644
else
# FIXME: insert proper C++ library support
_LT_TAGVAR(ld_shlibs, $1)=no
-@@ -5889,10 +6268,10 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -5889,10 +6268,10 @@ if test "$_lt_caught_CXX_error" != yes;
_LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
ia64*)
@@ -11386,7 +11463,7 @@ index 24d13f3440..e45fdc6998 100644
;;
esac
fi
-@@ -5933,9 +6312,9 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -5933,9 +6312,9 @@ if test "$_lt_caught_CXX_error" != yes;
*)
if test "$GXX" = yes; then
if test "$with_gnu_ld" = no; then
@@ -11398,7 +11475,7 @@ index 24d13f3440..e45fdc6998 100644
fi
fi
_LT_TAGVAR(link_all_deplibs, $1)=yes
-@@ -6005,20 +6384,20 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -6005,20 +6384,20 @@ if test "$_lt_caught_CXX_error" != yes;
_LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
rm -rf $tpldir~
$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
@@ -11423,7 +11500,7 @@ index 24d13f3440..e45fdc6998 100644
;;
*) # Version 6 and above use weak symbols
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-@@ -6213,7 +6592,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -6213,7 +6592,7 @@ if test "$_lt_caught_CXX_error" != yes;
_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'
;;
*)
@@ -11432,7 +11509,7 @@ index 24d13f3440..e45fdc6998 100644
;;
esac
-@@ -6259,7 +6638,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -6259,7 +6638,7 @@ if test "$_lt_caught_CXX_error" != yes;
solaris*)
case $cc_basename in
@@ -11441,7 +11518,7 @@ index 24d13f3440..e45fdc6998 100644
# Sun C++ 4.2, 5.x and Centerline C++
_LT_TAGVAR(archive_cmds_need_lc,$1)=yes
_LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-@@ -6300,9 +6679,9 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -6300,9 +6679,9 @@ if test "$_lt_caught_CXX_error" != yes;
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
@@ -11453,7 +11530,7 @@ index 24d13f3440..e45fdc6998 100644
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
-@@ -6431,6 +6810,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -6431,6 +6810,7 @@ if test "$_lt_caught_CXX_error" != yes;
fi # test -n "$compiler"
CC=$lt_save_CC
@@ -11661,7 +11738,7 @@ index 24d13f3440..e45fdc6998 100644
])# _LT_LANG_RC_CONFIG
-@@ -7101,6 +7536,15 @@ _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+@@ -7101,6 +7536,15 @@ _LT_DECL([], [OBJDUMP], [1], [An object
AC_SUBST([OBJDUMP])
])
@@ -11688,7 +11765,7 @@ index 24d13f3440..e45fdc6998 100644
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
&& xsi_shell=yes
-@@ -7234,206 +7678,162 @@ _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+@@ -7234,206 +7678,162 @@ _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn
])# _LT_CHECK_SHELL_FEATURES
@@ -11786,6 +11863,31 @@ index 24d13f3440..e45fdc6998 100644
-{
- 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"`
+-}
+# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
+# ------------------------------------------------------
+# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
@@ -11802,23 +11904,22 @@ index 24d13f3440..e45fdc6998 100644
+test 0 -eq $? || _lt_function_replace_fail=:
+])
--_LT_EOF
-- ;;
-- *) # Bourne compatible functions.
-- cat << \_LT_EOF >> "$cfgfile"
+-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.
--# 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_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 ()
-{
-- # 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
+- 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_REPLACE_SHELLFNS
+# -------------------------
@@ -11842,45 +11943,24 @@ index 24d13f3440..e45fdc6998 100644
+ esac
+ func_basename_result="${1##*/}"])
--# func_basename file
--func_basename ()
--{
-- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
--}
+-# sed scripts:
+-my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
+-my_sed_long_arg='1s/^-[[^=]]*=//'
+ _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} ;;
@@ -11928,9 +12008,7 @@ index 24d13f3440..e45fdc6998 100644
+ 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" \
@@ -11944,14 +12022,17 @@ index 24d13f3440..e45fdc6998 100644
+ test 0 -eq $? || _lt_function_replace_fail=:
+fi
--case $lt_shell_append in
-- yes)
-- cat << \_LT_EOF >> "$cfgfile"
+-_LT_EOF
+-esac
+if test x"$_lt_function_replace_fail" = x":"; then
+ AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
+fi
+])
+-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 ()
@@ -12037,10 +12118,10 @@ index 24d13f3440..e45fdc6998 100644
+_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
+Index: git/ltmain.sh
+===================================================================
+--- git.orig/ltmain.sh
++++ git/ltmain.sh
@@ -1,10 +1,9 @@
-# Generated from ltmain.m4sh.
@@ -12470,31 +12551,7 @@ index 9503ec85d7..70e856e065 100644
+$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
+}
@@ -12524,9 +12581,7 @@ index 9503ec85d7..70e856e065 100644
+ shift; set dummy --mode uninstall ${1+"$@"}; shift
+ ;;
+esac
-
-- # Parse non-mode specific arguments:
-- while test "$#" -gt 0; do
++
+
+
+# Option defaults:
@@ -12542,8 +12597,34 @@ index 9503ec85d7..70e856e065 100644
+opt_verbose=:
+opt_silent=false
+opt_verbose=false
-+
-+
+
+- # 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
+# Parse options once, thoroughly. This comes as soon as possible in the
+# script to make things like `--version' happen as quickly as we can.
+{
@@ -12787,13 +12868,13 @@ index 9503ec85d7..70e856e065 100644
- fi
-}
-
-+ # Darwin sucks
-+ eval std_shrext=\"$shrext_cmds\"
-
+-
-## ----------- ##
-## Main. ##
-## ----------- ##
--
++ # Darwin sucks
++ eval std_shrext=\"$shrext_cmds\"
+
-$opt_help || {
- # Sanity checks first:
- func_check_version_match
@@ -13514,7 +13595,7 @@ index 9503ec85d7..70e856e065 100644
"")
# 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:
+@@ -1659,8 +2327,8 @@ This mode accepts the following addition
-o OUTPUT-FILE set the output file name to OUTPUT-FILE
-no-suppress do not suppress compiler output for multiple passes
@@ -13525,7 +13606,7 @@ index 9503ec85d7..70e856e065 100644
-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."
+@@ -1804,7 +2472,7 @@ Otherwise, only FILE itself is deleted u
;;
*)
@@ -13627,7 +13708,7 @@ index 9503ec85d7..70e856e065 100644
+ 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"
@@ -13647,7 +13728,7 @@ index 9503ec85d7..70e856e065 100644
+ else
+ sysroot_cmd=
+ fi
-+
+
+ # Remove sysroot references
+ if $opt_dry_run; then
+ for lib in $libs; do
@@ -14059,7 +14140,7 @@ index 9503ec85d7..70e856e065 100644
lt_${my_prefix}_LTX_preloaded_symbols[] =
{\
{ \"$my_originator\", (void *) 0 },"
-@@ -2736,7 +3493,7 @@ static const void *lt_preloaded_setup() {
+@@ -2736,7 +3493,7 @@ static const void *lt_preloaded_setup()
for arg in $LTCFLAGS; do
case $arg in
-pie | -fpie | -fPIE) ;;
@@ -14588,7 +14669,7 @@ index 9503ec85d7..70e856e065 100644
*/
EOF
cat <<"EOF"
-@@ -3462,22 +4272,13 @@ int setenv (const char *, const char *, int);
+@@ -3462,22 +4272,13 @@ int setenv (const char *, const char *,
if (stale) { free ((void *) stale); stale = 0; } \
} while (0)
@@ -14615,7 +14696,7 @@ index 9503ec85d7..70e856e065 100644
void *xmalloc (size_t num);
char *xstrdup (const char *string);
-@@ -3487,7 +4288,10 @@ char *chase_symlinks (const char *pathspec);
+@@ -3487,7 +4288,10 @@ char *chase_symlinks (const char *pathsp
int make_executable (const char *path);
int check_executable (const char *path);
char *strendzap (char *str, const char *pat);
@@ -14943,7 +15024,7 @@ index 9503ec85d7..70e856e065 100644
vfprintf (stderr, message, ap);
fprintf (stderr, ".\n");
-@@ -3988,20 +4832,32 @@ lt_error_core (int exit_status, const char *mode,
+@@ -3988,20 +4832,32 @@ lt_error_core (int exit_status, const ch
}
void
@@ -14981,7 +15062,7 @@ index 9503ec85d7..70e856e065 100644
{
#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)
+@@ -4049,9 +4905,9 @@ lt_extend_str (const char *orig_value, c
void
lt_update_exe_path (const char *name, const char *value)
{
@@ -14994,7 +15075,7 @@ index 9503ec85d7..70e856e065 100644
if (name && *name && value && *value)
{
-@@ -4070,9 +4926,9 @@ lt_update_exe_path (const char *name, const char *value)
+@@ -4070,9 +4926,9 @@ lt_update_exe_path (const char *name, co
void
lt_update_lib_path (const char *name, const char *value)
{
@@ -17267,10 +17348,10 @@ index 9503ec85d7..70e856e065 100644
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
+Index: git/ltoptions.m4
+===================================================================
+--- git.orig/ltoptions.m4
++++ git/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.
@@ -17280,10 +17361,10 @@ index 5ef12ced2a..17cfd51c0b 100644
# 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
+Index: git/ltversion.m4
+===================================================================
+--- git.orig/ltversion.m4
++++ git/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.
@@ -17308,10 +17389,10 @@ index bf87f77132..9c7b5d4118 100644
_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
+Index: git/lt~obsolete.m4
+===================================================================
+--- git.orig/lt~obsolete.m4
++++ git/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.
@@ -17321,11 +17402,11 @@ index bf92b5e079..c573da90c5 100644
# These exist entirely to fool aclocal when bootstrapping libtool.
#
-diff --git a/opcodes/configure b/opcodes/configure
-index 4f29887098..2127d39288 100755
---- a/opcodes/configure
-+++ b/opcodes/configure
-@@ -650,6 +650,9 @@ OTOOL
+Index: git/opcodes/configure
+===================================================================
+--- git.orig/opcodes/configure
++++ git/opcodes/configure
+@@ -681,6 +681,9 @@ OTOOL
LIPO
NMEDIT
DSYMUTIL
@@ -17335,7 +17416,7 @@ index 4f29887098..2127d39288 100755
OBJDUMP
LN_S
NM
-@@ -763,6 +766,7 @@ enable_static
+@@ -799,6 +802,7 @@ enable_static
with_pic
enable_fast_install
with_gnu_ld
@@ -17343,7 +17424,7 @@ index 4f29887098..2127d39288 100755
enable_libtool_lock
enable_targets
enable_werror
-@@ -1423,6 +1427,8 @@ Optional Packages:
+@@ -1463,6 +1467,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]
@@ -17352,7 +17433,7 @@ index 4f29887098..2127d39288 100755
Some influential environment variables:
CC C compiler command
-@@ -5115,8 +5121,8 @@ esac
+@@ -5404,8 +5410,8 @@ esac
@@ -17363,7 +17444,7 @@ index 4f29887098..2127d39288 100755
-@@ -5156,7 +5162,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -5445,7 +5451,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.
@@ -17372,7 +17453,7 @@ index 4f29887098..2127d39288 100755
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
ECHO='print -r --'
elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -5842,8 +5848,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -6131,8 +6137,8 @@ $as_echo_n "checking whether the shell u
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
@@ -17383,13 +17464,13 @@ index 4f29887098..2127d39288 100755
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
&& xsi_shell=yes
-@@ -5892,6 +5898,80 @@ esac
+@@ -6181,6 +6187,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 :
++if ${lt_cv_to_host_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $host in
@@ -17436,7 +17517,7 @@ index 4f29887098..2127d39288 100755
+
+{ $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 :
++if ${lt_cv_to_tool_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ #assume ordinary cross tools, or native build.
@@ -17463,8 +17544,8 @@ index 4f29887098..2127d39288 100755
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
$as_echo_n "checking for $LD option to reload object files... " >&6; }
- if test "${lt_cv_ld_reload_flag+set}" = set; then :
-@@ -5908,6 +5988,11 @@ case $reload_flag in
+ if ${lt_cv_ld_reload_flag+:} false; then :
+@@ -6197,6 +6277,11 @@ case $reload_flag in
esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
@@ -17476,7 +17557,7 @@ index 4f29887098..2127d39288 100755
darwin*)
if test "$GCC" = yes; then
reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6076,7 +6161,8 @@ mingw* | pw32*)
+@@ -6365,7 +6450,8 @@ mingw* | pw32*)
lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
lt_cv_file_magic_cmd='func_win32_libid'
else
@@ -17486,7 +17567,7 @@ index 4f29887098..2127d39288 100755
lt_cv_file_magic_cmd='$OBJDUMP -f'
fi
;;
-@@ -6230,6 +6316,21 @@ esac
+@@ -6519,6 +6605,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; }
@@ -17508,7 +17589,7 @@ index 4f29887098..2127d39288 100755
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -6243,11 +6344,164 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6534,9 +6635,162 @@ test -z "$deplibs_check_method" && depli
@@ -17522,8 +17603,6 @@ index 4f29887098..2127d39288 100755
+
+
+
-
-
if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
@@ -17531,7 +17610,7 @@ index 4f29887098..2127d39288 100755
+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 :
++if ${ac_cv_prog_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DLLTOOL"; then
@@ -17543,7 +17622,7 @@ index 4f29887098..2127d39288 100755
+ 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
++ 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
@@ -17571,7 +17650,7 @@ index 4f29887098..2127d39288 100755
+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 :
++if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
@@ -17583,7 +17662,7 @@ index 4f29887098..2127d39288 100755
+ 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
++ 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
@@ -17631,7 +17710,7 @@ index 4f29887098..2127d39288 100755
+
+{ $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 :
++if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_sharedlib_from_linklib_cmd='unknown'
@@ -17674,17 +17753,17 @@ index 4f29887098..2127d39288 100755
+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 test "${ac_cv_prog_AR+set}" = set; then :
-@@ -6263,7 +6517,7 @@ do
+ if ${ac_cv_prog_AR+:} false; then :
+@@ -6552,7 +6806,7 @@ do
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
+ 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
-@@ -6283,11 +6537,15 @@ $as_echo "no" >&6; }
+@@ -6572,11 +6826,15 @@ $as_echo "no" >&6; }
fi
@@ -17702,17 +17781,17 @@ index 4f29887098..2127d39288 100755
+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 test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
-@@ -6303,7 +6561,7 @@ do
+ if ${ac_cv_prog_ac_ct_AR+:} false; then :
+@@ -6592,7 +6850,7 @@ do
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
+ 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
-@@ -6322,6 +6580,10 @@ else
+@@ -6611,6 +6869,10 @@ else
$as_echo "no" >&6; }
fi
@@ -17723,7 +17802,7 @@ index 4f29887098..2127d39288 100755
if test "x$ac_ct_AR" = x; then
AR="false"
else
-@@ -6333,16 +6595,72 @@ ac_tool_warned=yes ;;
+@@ -6622,12 +6884,11 @@ ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
fi
@@ -17736,19 +17815,16 @@ index 4f29887098..2127d39288 100755
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
+
+
+
+@@ -6638,6 +6899,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 test "${lt_cv_ar_at_file+set}" = set; then :
++if ${lt_cv_ar_at_file+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ar_at_file=no
@@ -17758,7 +17834,7 @@ index 4f29887098..2127d39288 100755
+int
+main ()
+{
-
++
+ ;
+ return 0;
+}
@@ -17784,23 +17860,29 @@ index 4f29887098..2127d39288 100755
+ fi
+ fi
+ rm -f conftest.* libconftest.a
-
++
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
++
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
-
++
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
++
++
++
++
++
++
-
-
-@@ -6684,8 +7002,8 @@ esac
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+@@ -6973,8 +7291,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
@@ -17811,7 +17893,7 @@ index 4f29887098..2127d39288 100755
# Handle CRLF in mingw tool chain
opt_cr=
-@@ -6721,6 +7039,7 @@ for ac_symprfx in "" "_"; do
+@@ -7010,6 +7328,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
@@ -17819,7 +17901,7 @@ index 4f29887098..2127d39288 100755
# Check to see that the pipe works correctly.
pipe_works=no
-@@ -6762,6 +7081,18 @@ _LT_EOF
+@@ -7051,6 +7370,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
@@ -17838,7 +17920,7 @@ index 4f29887098..2127d39288 100755
#ifdef __cplusplus
extern "C" {
#endif
-@@ -6773,7 +7104,7 @@ _LT_EOF
+@@ -7062,7 +7393,7 @@ _LT_EOF
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
@@ -17847,7 +17929,7 @@ index 4f29887098..2127d39288 100755
const char *name;
void *address;
}
-@@ -6799,8 +7130,8 @@ static const void *lt_preloaded_setup() {
+@@ -7088,8 +7419,8 @@ static const void *lt_preloaded_setup()
_LT_EOF
# Now try linking the two files.
mv conftest.$ac_objext conftstm.$ac_objext
@@ -17858,7 +17940,7 @@ index 4f29887098..2127d39288 100755
LIBS="conftstm.$ac_objext"
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -6810,8 +7141,8 @@ _LT_EOF
+@@ -7099,8 +7430,8 @@ _LT_EOF
test $ac_status = 0; } && test -s conftest${ac_exeext}; then
pipe_works=yes
fi
@@ -17869,7 +17951,7 @@ index 4f29887098..2127d39288 100755
else
echo "cannot find nm_test_func in $nlist" >&5
fi
-@@ -6848,6 +7179,16 @@ else
+@@ -7137,6 +7468,14 @@ else
$as_echo "ok" >&6; }
fi
@@ -17881,12 +17963,10 @@ index 4f29887098..2127d39288 100755
+fi
+
+
-+
-+
-@@ -6864,6 +7205,45 @@ fi
+@@ -7158,6 +7497,47 @@ fi
@@ -17894,9 +17974,6 @@ index 4f29887098..2127d39288 100755
+
+
+
-+
-+
-+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
@@ -17923,16 +18000,21 @@ index 4f29887098..2127d39288 100755
+ *)
+ { $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
++ 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; }
-
-
-
-@@ -7075,6 +7455,123 @@ esac
++
++
++
++
++
+ # Check whether --enable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then :
+ enableval=$enable_libtool_lock;
+@@ -7364,6 +7744,123 @@ esac
need_locks="$enable_libtool_lock"
@@ -17941,7 +18023,7 @@ index 4f29887098..2127d39288 100755
+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 :
++if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MANIFEST_TOOL"; then
@@ -17953,7 +18035,7 @@ index 4f29887098..2127d39288 100755
+ 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
++ 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
@@ -17981,7 +18063,7 @@ index 4f29887098..2127d39288 100755
+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 :
++if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_MANIFEST_TOOL"; then
@@ -17993,7 +18075,7 @@ index 4f29887098..2127d39288 100755
+ 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
++ 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
@@ -18031,7 +18113,7 @@ index 4f29887098..2127d39288 100755
+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 :
++if ${lt_cv_path_mainfest_tool+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_path_mainfest_tool=no
@@ -18056,7 +18138,7 @@ index 4f29887098..2127d39288 100755
case $host_os in
rhapsody* | darwin*)
-@@ -7638,6 +8135,8 @@ _LT_EOF
+@@ -7927,6 +8424,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
@@ -18065,7 +18147,7 @@ index 4f29887098..2127d39288 100755
cat > conftest.c << _LT_EOF
int main() { return 0;}
_LT_EOF
-@@ -7803,7 +8302,8 @@ fi
+@@ -8092,7 +8591,8 @@ fi
LIBTOOL_DEPS="$ltmain"
# Always use our own libtool.
@@ -18075,7 +18157,7 @@ index 4f29887098..2127d39288 100755
-@@ -7892,7 +8392,7 @@ aix3*)
+@@ -8181,7 +8681,7 @@ aix3*)
esac
# Global variables:
@@ -18084,7 +18166,7 @@ index 4f29887098..2127d39288 100755
can_build_shared=yes
# All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -8190,8 +8690,6 @@ fi
+@@ -8479,8 +8979,6 @@ fi
lt_prog_compiler_pic=
lt_prog_compiler_static=
@@ -18093,7 +18175,7 @@ index 4f29887098..2127d39288 100755
if test "$GCC" = yes; then
lt_prog_compiler_wl='-Wl,'
-@@ -8357,6 +8855,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8646,6 +9144,12 @@ $as_echo_n "checking for $compiler optio
lt_prog_compiler_pic='--shared'
lt_prog_compiler_static='--static'
;;
@@ -18106,7 +18188,7 @@ index 4f29887098..2127d39288 100755
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
-@@ -8419,7 +8923,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8708,7 +9212,7 @@ $as_echo_n "checking for $compiler optio
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
case $cc_basename in
@@ -18115,7 +18197,7 @@ index 4f29887098..2127d39288 100755
lt_prog_compiler_wl='-Qoption ld ';;
*)
lt_prog_compiler_wl='-Wl,';;
-@@ -8476,13 +8980,17 @@ case $host_os in
+@@ -8765,13 +9269,17 @@ case $host_os in
lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
;;
esac
@@ -18128,7 +18210,7 @@ index 4f29887098..2127d39288 100755
+{ $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 :
++if ${lt_cv_prog_compiler_pic+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
@@ -18139,7 +18221,7 @@ index 4f29887098..2127d39288 100755
#
# Check to make sure the PIC flag actually works.
-@@ -8543,6 +9051,11 @@ fi
+@@ -8832,6 +9340,11 @@ fi
@@ -18151,7 +18233,7 @@ index 4f29887098..2127d39288 100755
#
# Check to make sure the static flag actually works.
#
-@@ -8893,7 +9406,8 @@ _LT_EOF
+@@ -9182,7 +9695,8 @@ _LT_EOF
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
@@ -18161,7 +18243,7 @@ index 4f29887098..2127d39288 100755
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -8992,12 +9506,12 @@ _LT_EOF
+@@ -9281,12 +9795,12 @@ _LT_EOF
whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
hardcode_libdir_flag_spec=
hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -18176,7 +18258,7 @@ index 4f29887098..2127d39288 100755
fi
;;
esac
-@@ -9011,8 +9525,8 @@ _LT_EOF
+@@ -9300,8 +9814,8 @@ _LT_EOF
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
@@ -18187,7 +18269,7 @@ index 4f29887098..2127d39288 100755
fi
;;
-@@ -9030,8 +9544,8 @@ _LT_EOF
+@@ -9319,8 +9833,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -18198,7 +18280,7 @@ index 4f29887098..2127d39288 100755
else
ld_shlibs=no
fi
-@@ -9077,8 +9591,8 @@ _LT_EOF
+@@ -9366,8 +9880,8 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -18209,7 +18291,7 @@ index 4f29887098..2127d39288 100755
else
ld_shlibs=no
fi
-@@ -9208,7 +9722,13 @@ _LT_EOF
+@@ -9497,7 +10011,13 @@ _LT_EOF
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -18217,14 +18299,14 @@ index 4f29887098..2127d39288 100755
+ 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 :
++ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-@@ -9221,22 +9741,29 @@ main ()
+@@ -9510,22 +10030,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -18267,7 +18349,7 @@ index 4f29887098..2127d39288 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -9248,7 +9775,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9537,7 +10064,13 @@ if test -z "$aix_libpath"; then aix_libp
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -18275,14 +18357,14 @@ index 4f29887098..2127d39288 100755
+ 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 :
++ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-@@ -9261,22 +9794,29 @@ main ()
+@@ -9550,22 +10083,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -18325,7 +18407,7 @@ index 4f29887098..2127d39288 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
-@@ -9321,20 +9861,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9610,20 +10150,63 @@ if test -z "$aix_libpath"; then aix_libp
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
@@ -18403,7 +18485,7 @@ index 4f29887098..2127d39288 100755
;;
darwin* | rhapsody*)
-@@ -9395,7 +9978,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9684,7 +10267,7 @@ if test -z "$aix_libpath"; then aix_libp
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
@@ -18412,7 +18494,7 @@ index 4f29887098..2127d39288 100755
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
-@@ -9403,7 +9986,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9692,7 +10275,7 @@ if test -z "$aix_libpath"; then aix_libp
hpux9*)
if test "$GCC" = yes; then
@@ -18421,7 +18503,7 @@ index 4f29887098..2127d39288 100755
else
archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
fi
-@@ -9419,7 +10002,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9708,7 +10291,7 @@ if test -z "$aix_libpath"; then aix_libp
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -18430,7 +18512,7 @@ index 4f29887098..2127d39288 100755
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
-@@ -9443,10 +10026,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9732,10 +10315,10 @@ if test -z "$aix_libpath"; then aix_libp
archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
@@ -18443,7 +18525,7 @@ index 4f29887098..2127d39288 100755
;;
esac
else
-@@ -9525,23 +10108,36 @@ fi
+@@ -9814,23 +10397,36 @@ fi
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
@@ -18458,7 +18540,7 @@ index 4f29887098..2127d39288 100755
+ # 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 :
++if ${lt_cv_irix_exported_symbol+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ save_LDFLAGS="$LDFLAGS"
@@ -18488,7 +18570,7 @@ index 4f29887098..2127d39288 100755
else
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -9626,7 +10222,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9915,7 +10511,7 @@ rm -f core conftest.err conftest.$ac_obj
osf4* | osf5*) # as osf3* with the addition of -msym flag
if test "$GCC" = yes; then
allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -18497,7 +18579,7 @@ index 4f29887098..2127d39288 100755
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
allow_undefined_flag=' -expect_unresolved \*'
-@@ -9645,9 +10241,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9934,9 +10530,9 @@ rm -f core conftest.err conftest.$ac_obj
no_undefined_flag=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
@@ -18509,7 +18591,7 @@ index 4f29887098..2127d39288 100755
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
-@@ -10223,8 +10819,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10512,8 +11108,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -18521,7 +18603,7 @@ index 4f29887098..2127d39288 100755
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -10257,13 +10854,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10546,13 +11143,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
@@ -18594,7 +18676,7 @@ index 4f29887098..2127d39288 100755
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -10355,7 +11010,7 @@ haiku*)
+@@ -10644,7 +11299,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -18603,7 +18685,16 @@ index 4f29887098..2127d39288 100755
hardcode_into_libs=yes
;;
-@@ -11195,10 +11850,10 @@ else
+@@ -11440,7 +12095,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11443 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11484,10 +12139,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))
@@ -18616,7 +18707,16 @@ index 4f29887098..2127d39288 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11301,10 +11956,10 @@ else
+@@ -11546,7 +12201,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 11549 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -11590,10 +12245,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))
@@ -18629,7 +18729,7 @@ index 4f29887098..2127d39288 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -12543,7 +13198,7 @@ if test "$enable_shared" = "yes"; then
+@@ -12831,7 +13486,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
@@ -18638,7 +18738,7 @@ index 4f29887098..2127d39288 100755
fi
case "${host}" in
-@@ -13520,13 +14175,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -13807,13 +14462,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_
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"`'
@@ -18659,7 +18759,7 @@ index 4f29887098..2127d39288 100755
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -13541,14 +14203,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -13828,14 +14490,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$l
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"`'
@@ -18678,7 +18778,7 @@ index 4f29887098..2127d39288 100755
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -13581,12 +14246,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -13868,12 +14533,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcod
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"`'
@@ -18692,7 +18792,7 @@ index 4f29887098..2127d39288 100755
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -13641,8 +14306,13 @@ reload_flag \
+@@ -13928,8 +14593,13 @@ reload_flag \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
@@ -18706,7 +18806,7 @@ index 4f29887098..2127d39288 100755
STRIP \
RANLIB \
CC \
-@@ -13652,12 +14322,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -13939,12 +14609,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 \
@@ -18722,7 +18822,7 @@ index 4f29887098..2127d39288 100755
DSYMUTIL \
NMEDIT \
LIPO \
-@@ -13673,7 +14345,6 @@ no_undefined_flag \
+@@ -13960,7 +14632,6 @@ no_undefined_flag \
hardcode_libdir_flag_spec \
hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
@@ -18730,7 +18830,7 @@ index 4f29887098..2127d39288 100755
exclude_expsyms \
include_expsyms \
file_list_spec \
-@@ -13709,6 +14380,7 @@ module_cmds \
+@@ -13996,6 +14667,7 @@ module_cmds \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
@@ -18738,7 +18838,7 @@ index 4f29887098..2127d39288 100755
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
-@@ -14465,7 +15137,8 @@ $as_echo X"$file" |
+@@ -14761,7 +15433,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,
@@ -18748,7 +18848,7 @@ index 4f29887098..2127d39288 100755
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
-@@ -14568,19 +15241,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -14864,19 +15537,42 @@ SP2NL=$lt_lt_SP2NL
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
@@ -18792,7 +18892,7 @@ index 4f29887098..2127d39288 100755
# A symbol stripping program.
STRIP=$lt_STRIP
-@@ -14610,6 +15306,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -14906,6 +15602,12 @@ global_symbol_to_c_name_address=$lt_lt_c
# 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
@@ -18805,7 +18905,7 @@ index 4f29887098..2127d39288 100755
# The name of the directory that contains temporary libtool files.
objdir=$objdir
-@@ -14619,6 +15321,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -14915,6 +15617,9 @@ MAGIC_CMD=$MAGIC_CMD
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
@@ -18815,7 +18915,7 @@ index 4f29887098..2127d39288 100755
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
-@@ -14733,12 +15438,12 @@ with_gcc=$GCC
+@@ -15029,12 +15734,12 @@ with_gcc=$GCC
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
@@ -18831,7 +18931,7 @@ index 4f29887098..2127d39288 100755
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
-@@ -14825,9 +15530,6 @@ inherit_rpath=$inherit_rpath
+@@ -15121,9 +15826,6 @@ inherit_rpath=$inherit_rpath
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=$link_all_deplibs
@@ -18841,7 +18941,7 @@ index 4f29887098..2127d39288 100755
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
-@@ -14843,6 +15545,9 @@ include_expsyms=$lt_include_expsyms
+@@ -15139,6 +15841,9 @@ include_expsyms=$lt_include_expsyms
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
@@ -18851,7 +18951,7 @@ index 4f29887098..2127d39288 100755
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
-@@ -14875,210 +15580,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -15171,210 +15876,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?
@@ -19053,15 +19153,9 @@ index 4f29887098..2127d39288 100755
-_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 ()\
@@ -19219,17 +19313,20 @@ index 4f29887098..2127d39288 100755
+ { $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
-+
-+
+
+- 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"
-diff --git a/opcodes/configure.ac b/opcodes/configure.ac
-index b07f3f3629..5a32d9b1fc 100644
---- a/opcodes/configure.ac
-+++ b/opcodes/configure.ac
-@@ -167,7 +167,7 @@ changequote(,)dnl
+Index: git/opcodes/configure.ac
+===================================================================
+--- git.orig/opcodes/configure.ac
++++ git/opcodes/configure.ac
+@@ -166,7 +166,7 @@ changequote(,)dnl
x=`sed -n -e 's/^[ ]*PICFLAG[ ]*=[ ]*//p' < ../libiberty/Makefile | sed -n '$p'`
changequote([,])dnl
if test -n "$x"; then
@@ -19238,11 +19335,11 @@ index b07f3f3629..5a32d9b1fc 100644
fi
case "${host}" in
-diff --git a/zlib/configure b/zlib/configure
-index dc2d9ed383..ed9a492f5c 100755
---- a/zlib/configure
-+++ b/zlib/configure
-@@ -614,8 +614,11 @@ OTOOL
+Index: git/zlib/configure
+===================================================================
+--- git.orig/zlib/configure
++++ git/zlib/configure
+@@ -646,8 +646,11 @@ OTOOL
LIPO
NMEDIT
DSYMUTIL
@@ -19254,7 +19351,7 @@ index dc2d9ed383..ed9a492f5c 100755
OBJDUMP
LN_S
NM
-@@ -737,6 +740,7 @@ enable_static
+@@ -774,6 +777,7 @@ enable_static
with_pic
enable_fast_install
with_gnu_ld
@@ -19262,7 +19359,7 @@ index dc2d9ed383..ed9a492f5c 100755
enable_libtool_lock
enable_host_shared
'
-@@ -1385,6 +1389,8 @@ Optional Packages:
+@@ -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]
@@ -19271,7 +19368,7 @@ index dc2d9ed383..ed9a492f5c 100755
Some influential environment variables:
CC C compiler command
-@@ -3910,8 +3916,8 @@ esac
+@@ -4147,8 +4153,8 @@ esac
@@ -19282,7 +19379,7 @@ index dc2d9ed383..ed9a492f5c 100755
-@@ -3951,7 +3957,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -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.
@@ -19291,7 +19388,7 @@ index dc2d9ed383..ed9a492f5c 100755
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
ECHO='print -r --'
elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -4767,8 +4773,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -5004,8 +5010,8 @@ $as_echo_n "checking whether the shell u
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
@@ -19302,13 +19399,13 @@ index dc2d9ed383..ed9a492f5c 100755
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
&& xsi_shell=yes
-@@ -4817,6 +4823,80 @@ esac
+@@ -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 test "${lt_cv_to_host_file_cmd+set}" = set; then :
++if ${lt_cv_to_host_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $host in
@@ -19355,7 +19452,7 @@ index dc2d9ed383..ed9a492f5c 100755
+
+{ $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 :
++if ${lt_cv_to_tool_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ #assume ordinary cross tools, or native build.
@@ -19382,8 +19479,8 @@ index dc2d9ed383..ed9a492f5c 100755
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
$as_echo_n "checking for $LD option to reload object files... " >&6; }
- if test "${lt_cv_ld_reload_flag+set}" = set; then :
-@@ -4833,6 +4913,11 @@ case $reload_flag in
+ 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
@@ -19395,7 +19492,7 @@ index dc2d9ed383..ed9a492f5c 100755
darwin*)
if test "$GCC" = yes; then
reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -5001,7 +5086,8 @@ mingw* | pw32*)
+@@ -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
@@ -19405,7 +19502,7 @@ index dc2d9ed383..ed9a492f5c 100755
lt_cv_file_magic_cmd='$OBJDUMP -f'
fi
;;
-@@ -5155,6 +5241,21 @@ esac
+@@ -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; }
@@ -19427,7 +19524,7 @@ index dc2d9ed383..ed9a492f5c 100755
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -5168,11 +5269,165 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -5407,9 +5508,163 @@ test -z "$deplibs_check_method" && depli
@@ -19441,8 +19538,6 @@ index dc2d9ed383..ed9a492f5c 100755
+
+
+
-
-
if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
@@ -19450,7 +19545,7 @@ index dc2d9ed383..ed9a492f5c 100755
+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 :
++if ${ac_cv_prog_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DLLTOOL"; then
@@ -19462,7 +19557,7 @@ index dc2d9ed383..ed9a492f5c 100755
+ 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
++ 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
@@ -19490,7 +19585,7 @@ index dc2d9ed383..ed9a492f5c 100755
+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 :
++if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
@@ -19502,7 +19597,7 @@ index dc2d9ed383..ed9a492f5c 100755
+ 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
++ 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
@@ -19550,7 +19645,7 @@ index dc2d9ed383..ed9a492f5c 100755
+
+{ $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 :
++if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_sharedlib_from_linklib_cmd='unknown'
@@ -19594,17 +19689,17 @@ index dc2d9ed383..ed9a492f5c 100755
+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 test "${ac_cv_prog_AR+set}" = set; then :
-@@ -5188,7 +5443,7 @@ do
+ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ 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
-@@ -5208,11 +5463,15 @@ $as_echo "no" >&6; }
+@@ -5445,11 +5700,15 @@ $as_echo "no" >&6; }
fi
@@ -19622,17 +19717,17 @@ index dc2d9ed383..ed9a492f5c 100755
+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 test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
-@@ -5228,7 +5487,7 @@ do
+ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ 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
-@@ -5247,6 +5506,10 @@ else
+@@ -5484,6 +5743,10 @@ else
$as_echo "no" >&6; }
fi
@@ -19643,7 +19738,7 @@ index dc2d9ed383..ed9a492f5c 100755
if test "x$ac_ct_AR" = x; then
AR="false"
else
-@@ -5258,16 +5521,72 @@ ac_tool_warned=yes ;;
+@@ -5495,12 +5758,10 @@ ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
fi
@@ -19655,20 +19750,16 @@ index dc2d9ed383..ed9a492f5c 100755
-test -z "$AR_FLAGS" && AR_FLAGS=cru
+: ${AR=ar}
+: ${AR_FLAGS=cru}
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
+
+
+
+@@ -5512,6 +5773,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 test "${lt_cv_ar_at_file+set}" = set; then :
++if ${lt_cv_ar_at_file+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ar_at_file=no
@@ -19678,7 +19769,7 @@ index dc2d9ed383..ed9a492f5c 100755
+int
+main ()
+{
-
++
+ ;
+ return 0;
+}
@@ -19704,23 +19795,30 @@ index dc2d9ed383..ed9a492f5c 100755
+ fi
+ fi
+ rm -f conftest.* libconftest.a
-
++
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
++
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
-
++
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
-
-
-
-@@ -5609,8 +5928,8 @@ esac
++
++
++
++
++
++
++
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+@@ -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
@@ -19731,7 +19829,7 @@ index dc2d9ed383..ed9a492f5c 100755
# Handle CRLF in mingw tool chain
opt_cr=
-@@ -5646,6 +5965,7 @@ for ac_symprfx in "" "_"; do
+@@ -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
@@ -19739,7 +19837,7 @@ index dc2d9ed383..ed9a492f5c 100755
# Check to see that the pipe works correctly.
pipe_works=no
-@@ -5687,6 +6007,18 @@ _LT_EOF
+@@ -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
@@ -19758,7 +19856,7 @@ index dc2d9ed383..ed9a492f5c 100755
#ifdef __cplusplus
extern "C" {
#endif
-@@ -5698,7 +6030,7 @@ _LT_EOF
+@@ -5935,7 +6267,7 @@ _LT_EOF
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
@@ -19767,7 +19865,7 @@ index dc2d9ed383..ed9a492f5c 100755
const char *name;
void *address;
}
-@@ -5724,8 +6056,8 @@ static const void *lt_preloaded_setup() {
+@@ -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
@@ -19778,7 +19876,7 @@ index dc2d9ed383..ed9a492f5c 100755
LIBS="conftstm.$ac_objext"
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -5735,8 +6067,8 @@ _LT_EOF
+@@ -5972,8 +6304,8 @@ _LT_EOF
test $ac_status = 0; } && test -s conftest${ac_exeext}; then
pipe_works=yes
fi
@@ -19789,7 +19887,7 @@ index dc2d9ed383..ed9a492f5c 100755
else
echo "cannot find nm_test_func in $nlist" >&5
fi
-@@ -5773,6 +6105,19 @@ else
+@@ -6010,6 +6342,18 @@ else
$as_echo "ok" >&6; }
fi
@@ -19805,17 +19903,13 @@ index dc2d9ed383..ed9a492f5c 100755
+
+
+
-+
-@@ -5790,6 +6135,41 @@ fi
+@@ -6031,6 +6375,42 @@ fi
-+
-+
-+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
@@ -19842,16 +19936,20 @@ index dc2d9ed383..ed9a492f5c 100755
+ *)
+ { $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
++ 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; }
++
++
++
++
-
-
-@@ -6004,6 +6384,123 @@ esac
+ # Check whether --enable-libtool-lock was given.
+ if test "${enable_libtool_lock+set}" = set; then :
+@@ -6241,6 +6621,123 @@ esac
need_locks="$enable_libtool_lock"
@@ -19860,7 +19958,7 @@ index dc2d9ed383..ed9a492f5c 100755
+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 :
++if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MANIFEST_TOOL"; then
@@ -19872,7 +19970,7 @@ index dc2d9ed383..ed9a492f5c 100755
+ 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
++ 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
@@ -19900,7 +19998,7 @@ index dc2d9ed383..ed9a492f5c 100755
+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 :
++if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_MANIFEST_TOOL"; then
@@ -19912,7 +20010,7 @@ index dc2d9ed383..ed9a492f5c 100755
+ 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
++ 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
@@ -19950,7 +20048,7 @@ index dc2d9ed383..ed9a492f5c 100755
+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 :
++if ${lt_cv_path_mainfest_tool+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_path_mainfest_tool=no
@@ -19975,7 +20073,7 @@ index dc2d9ed383..ed9a492f5c 100755
case $host_os in
rhapsody* | darwin*)
-@@ -6570,6 +7067,8 @@ _LT_EOF
+@@ -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
@@ -19984,7 +20082,7 @@ index dc2d9ed383..ed9a492f5c 100755
cat > conftest.c << _LT_EOF
int main() { return 0;}
_LT_EOF
-@@ -7033,7 +7532,8 @@ fi
+@@ -7269,7 +7768,8 @@ fi
LIBTOOL_DEPS="$ltmain"
# Always use our own libtool.
@@ -19994,7 +20092,7 @@ index dc2d9ed383..ed9a492f5c 100755
-@@ -7122,7 +7622,7 @@ aix3*)
+@@ -7358,7 +7858,7 @@ aix3*)
esac
# Global variables:
@@ -20003,7 +20101,7 @@ index dc2d9ed383..ed9a492f5c 100755
can_build_shared=yes
# All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -7420,8 +7920,6 @@ fi
+@@ -7656,8 +8156,6 @@ fi
lt_prog_compiler_pic=
lt_prog_compiler_static=
@@ -20012,7 +20110,7 @@ index dc2d9ed383..ed9a492f5c 100755
if test "$GCC" = yes; then
lt_prog_compiler_wl='-Wl,'
-@@ -7587,6 +8085,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -7823,6 +8321,12 @@ $as_echo_n "checking for $compiler optio
lt_prog_compiler_pic='--shared'
lt_prog_compiler_static='--static'
;;
@@ -20025,7 +20123,7 @@ index dc2d9ed383..ed9a492f5c 100755
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
-@@ -7649,7 +8153,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -7885,7 +8389,7 @@ $as_echo_n "checking for $compiler optio
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
case $cc_basename in
@@ -20034,7 +20132,7 @@ index dc2d9ed383..ed9a492f5c 100755
lt_prog_compiler_wl='-Qoption ld ';;
*)
lt_prog_compiler_wl='-Wl,';;
-@@ -7706,13 +8210,17 @@ case $host_os in
+@@ -7942,13 +8446,17 @@ case $host_os in
lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
;;
esac
@@ -20047,7 +20145,7 @@ index dc2d9ed383..ed9a492f5c 100755
+{ $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 :
++if ${lt_cv_prog_compiler_pic+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
@@ -20058,7 +20156,7 @@ index dc2d9ed383..ed9a492f5c 100755
#
# Check to make sure the PIC flag actually works.
-@@ -7773,6 +8281,11 @@ fi
+@@ -8009,6 +8517,11 @@ fi
@@ -20070,7 +20168,7 @@ index dc2d9ed383..ed9a492f5c 100755
#
# Check to make sure the static flag actually works.
#
-@@ -8123,7 +8636,8 @@ _LT_EOF
+@@ -8359,7 +8872,8 @@ _LT_EOF
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
@@ -20080,7 +20178,7 @@ index dc2d9ed383..ed9a492f5c 100755
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -8222,12 +8736,12 @@ _LT_EOF
+@@ -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'
@@ -20095,7 +20193,7 @@ index dc2d9ed383..ed9a492f5c 100755
fi
;;
esac
-@@ -8241,8 +8755,8 @@ _LT_EOF
+@@ -8477,8 +8991,8 @@ _LT_EOF
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
@@ -20106,7 +20204,7 @@ index dc2d9ed383..ed9a492f5c 100755
fi
;;
-@@ -8260,8 +8774,8 @@ _LT_EOF
+@@ -8496,8 +9010,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -20117,7 +20215,7 @@ index dc2d9ed383..ed9a492f5c 100755
else
ld_shlibs=no
fi
-@@ -8307,8 +8821,8 @@ _LT_EOF
+@@ -8543,8 +9057,8 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -20128,7 +20226,7 @@ index dc2d9ed383..ed9a492f5c 100755
else
ld_shlibs=no
fi
-@@ -8438,7 +8952,13 @@ _LT_EOF
+@@ -8674,7 +9188,13 @@ _LT_EOF
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -20136,14 +20234,14 @@ index dc2d9ed383..ed9a492f5c 100755
+ 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 :
++ 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
+ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
fi
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-@@ -8454,22 +8974,29 @@ main ()
+@@ -8690,22 +9210,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -20186,7 +20284,7 @@ index dc2d9ed383..ed9a492f5c 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -8481,7 +9008,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8717,7 +9244,13 @@ if test -z "$aix_libpath"; then aix_libp
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -20194,14 +20292,14 @@ index dc2d9ed383..ed9a492f5c 100755
+ 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 :
++ 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
+ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
fi
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-@@ -8497,22 +9030,29 @@ main ()
+@@ -8733,22 +9266,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -20244,7 +20342,7 @@ index dc2d9ed383..ed9a492f5c 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
-@@ -8557,20 +9097,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8793,20 +9333,63 @@ if test -z "$aix_libpath"; then aix_libp
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
@@ -20322,7 +20420,7 @@ index dc2d9ed383..ed9a492f5c 100755
;;
darwin* | rhapsody*)
-@@ -8631,7 +9214,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8867,7 +9450,7 @@ if test -z "$aix_libpath"; then aix_libp
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
@@ -20331,7 +20429,7 @@ index dc2d9ed383..ed9a492f5c 100755
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
-@@ -8639,7 +9222,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8875,7 +9458,7 @@ if test -z "$aix_libpath"; then aix_libp
hpux9*)
if test "$GCC" = yes; then
@@ -20340,7 +20438,7 @@ index dc2d9ed383..ed9a492f5c 100755
else
archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
fi
-@@ -8655,7 +9238,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8891,7 +9474,7 @@ if test -z "$aix_libpath"; then aix_libp
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -20349,7 +20447,7 @@ index dc2d9ed383..ed9a492f5c 100755
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
-@@ -8679,10 +9262,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8915,10 +9498,10 @@ if test -z "$aix_libpath"; then aix_libp
archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
@@ -20362,7 +20460,7 @@ index dc2d9ed383..ed9a492f5c 100755
;;
esac
else
-@@ -8761,26 +9344,39 @@ fi
+@@ -8997,26 +9580,39 @@ fi
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
@@ -20377,13 +20475,13 @@ index dc2d9ed383..ed9a492f5c 100755
+ # 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 :
++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
+ 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. */
@@ -20410,7 +20508,7 @@ index dc2d9ed383..ed9a492f5c 100755
else
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -8865,7 +9461,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9101,7 +9697,7 @@ rm -f core conftest.err conftest.$ac_obj
osf4* | osf5*) # as osf3* with the addition of -msym flag
if test "$GCC" = yes; then
allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -20419,7 +20517,7 @@ index dc2d9ed383..ed9a492f5c 100755
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
allow_undefined_flag=' -expect_unresolved \*'
-@@ -8884,9 +9480,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9120,9 +9716,9 @@ rm -f core conftest.err conftest.$ac_obj
no_undefined_flag=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
@@ -20431,7 +20529,7 @@ index dc2d9ed383..ed9a492f5c 100755
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
-@@ -9462,8 +10058,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -9698,8 +10294,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -20443,7 +20541,7 @@ index dc2d9ed383..ed9a492f5c 100755
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -9496,13 +10093,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -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
@@ -20516,7 +20614,7 @@ index dc2d9ed383..ed9a492f5c 100755
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -9594,7 +10249,7 @@ haiku*)
+@@ -9830,7 +10485,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -20525,7 +20623,16 @@ index dc2d9ed383..ed9a492f5c 100755
hardcode_into_libs=yes
;;
-@@ -10452,10 +11107,10 @@ else
+@@ -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))
@@ -20538,7 +20645,16 @@ index dc2d9ed383..ed9a492f5c 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -10558,10 +11213,10 @@ else
+@@ -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))
@@ -20551,7 +20667,7 @@ index dc2d9ed383..ed9a492f5c 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11992,13 +12647,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -12266,13 +12921,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_
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"`'
@@ -20572,7 +20688,7 @@ index dc2d9ed383..ed9a492f5c 100755
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -12013,14 +12675,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -12287,14 +12949,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$l
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"`'
@@ -20591,7 +20707,7 @@ index dc2d9ed383..ed9a492f5c 100755
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -12053,12 +12718,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -12327,12 +12992,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcod
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"`'
@@ -20605,7 +20721,7 @@ index dc2d9ed383..ed9a492f5c 100755
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -12113,8 +12778,13 @@ reload_flag \
+@@ -12387,8 +13052,13 @@ reload_flag \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
@@ -20619,7 +20735,7 @@ index dc2d9ed383..ed9a492f5c 100755
STRIP \
RANLIB \
CC \
-@@ -12124,12 +12794,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -12398,12 +13068,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 \
@@ -20635,7 +20751,7 @@ index dc2d9ed383..ed9a492f5c 100755
DSYMUTIL \
NMEDIT \
LIPO \
-@@ -12145,7 +12817,6 @@ no_undefined_flag \
+@@ -12419,7 +13091,6 @@ no_undefined_flag \
hardcode_libdir_flag_spec \
hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
@@ -20643,7 +20759,7 @@ index dc2d9ed383..ed9a492f5c 100755
exclude_expsyms \
include_expsyms \
file_list_spec \
-@@ -12181,6 +12852,7 @@ module_cmds \
+@@ -12455,6 +13126,7 @@ module_cmds \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
@@ -20651,7 +20767,7 @@ index dc2d9ed383..ed9a492f5c 100755
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
-@@ -12770,7 +13442,8 @@ $as_echo X"$file" |
+@@ -13053,7 +13725,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,
@@ -20661,7 +20777,7 @@ index dc2d9ed383..ed9a492f5c 100755
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
-@@ -12873,19 +13546,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -13156,19 +13829,42 @@ SP2NL=$lt_lt_SP2NL
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
@@ -20705,7 +20821,7 @@ index dc2d9ed383..ed9a492f5c 100755
# A symbol stripping program.
STRIP=$lt_STRIP
-@@ -12915,6 +13611,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -13198,6 +13894,12 @@ global_symbol_to_c_name_address=$lt_lt_c
# 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
@@ -20718,7 +20834,7 @@ index dc2d9ed383..ed9a492f5c 100755
# The name of the directory that contains temporary libtool files.
objdir=$objdir
-@@ -12924,6 +13626,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -13207,6 +13909,9 @@ MAGIC_CMD=$MAGIC_CMD
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
@@ -20728,7 +20844,7 @@ index dc2d9ed383..ed9a492f5c 100755
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
-@@ -13038,12 +13743,12 @@ with_gcc=$GCC
+@@ -13321,12 +14026,12 @@ with_gcc=$GCC
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
@@ -20744,7 +20860,7 @@ index dc2d9ed383..ed9a492f5c 100755
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
-@@ -13130,9 +13835,6 @@ inherit_rpath=$inherit_rpath
+@@ -13413,9 +14118,6 @@ inherit_rpath=$inherit_rpath
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=$link_all_deplibs
@@ -20754,7 +20870,7 @@ index dc2d9ed383..ed9a492f5c 100755
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
-@@ -13148,6 +13850,9 @@ include_expsyms=$lt_include_expsyms
+@@ -13431,6 +14133,9 @@ include_expsyms=$lt_include_expsyms
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
@@ -20764,7 +20880,7 @@ index dc2d9ed383..ed9a492f5c 100755
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
-@@ -13180,210 +13885,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -13463,210 +14168,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?
@@ -20966,15 +21082,9 @@ index dc2d9ed383..ed9a492f5c 100755
-_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 ()\
@@ -21132,12 +21242,12 @@ index dc2d9ed383..ed9a492f5c 100755
+ { $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
-+
-+
+
+- 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"
---
-2.16.1
-
diff --git a/meta/recipes-devtools/binutils/binutils/0007-Add-the-armv5e-architecture-to-binutils.patch b/meta/recipes-devtools/binutils/binutils/0007-Add-the-armv5e-architecture-to-binutils.patch
index 4a5127380f9..18ef6bb7ffc 100644
--- a/meta/recipes-devtools/binutils/binutils/0007-Add-the-armv5e-architecture-to-binutils.patch
+++ b/meta/recipes-devtools/binutils/binutils/0007-Add-the-armv5e-architecture-to-binutils.patch
@@ -1,4 +1,4 @@
-From 697903256e09533778baa8af66402c44d70219d9 Mon Sep 17 00:00:00 2001
+From ef50d848d983f81e4a86dd3eef4933e3579336f1 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 01:37:10 +0000
Subject: [PATCH 07/15] Add the armv5e architecture to binutils
@@ -19,10 +19,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+)
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
-index ec50420518..a25d1721af 100644
+index 3f5384e1c7..8d5bc145af 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
-@@ -26195,6 +26195,7 @@ static const struct arm_arch_option_table arm_archs[] =
+@@ -26294,6 +26294,7 @@ static const struct arm_arch_option_table arm_archs[] =
ARM_ARCH_OPT ("armv4t", ARM_ARCH_V4T, FPU_ARCH_FPA),
ARM_ARCH_OPT ("armv4txm", ARM_ARCH_V4TxM, FPU_ARCH_FPA),
ARM_ARCH_OPT ("armv5", ARM_ARCH_V5, FPU_ARCH_VFP),
@@ -31,5 +31,5 @@ index ec50420518..a25d1721af 100644
ARM_ARCH_OPT ("armv5txm", ARM_ARCH_V5TxM, FPU_ARCH_VFP),
ARM_ARCH_OPT ("armv5te", ARM_ARCH_V5TE, FPU_ARCH_VFP),
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-devtools/binutils/binutils/0008-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch b/meta/recipes-devtools/binutils/binutils/0008-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch
index 939be67b586..6999ed9c94a 100644
--- a/meta/recipes-devtools/binutils/binutils/0008-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch
+++ b/meta/recipes-devtools/binutils/binutils/0008-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch
@@ -1,4 +1,4 @@
-From 622d66634eb2e509d4126f5bdcab26de367241a1 Mon Sep 17 00:00:00 2001
+From ca25d55cef8398bad508c2b2be29aea5aa3c4d26 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 08/15] don't let the distro compiler point to the wrong
@@ -31,5 +31,5 @@ index ed1b334c36..d4ffd8b57b 100644
if test -n "${target_header_dir}"; then \
${mkinstalldirs} $(DESTDIR)$(libdir)/$(MULTIOSDIR); \
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-devtools/binutils/binutils/0009-warn-for-uses-of-system-directories-when-cross-linki.patch b/meta/recipes-devtools/binutils/binutils/0009-warn-for-uses-of-system-directories-when-cross-linki.patch
index e75104722bc..9a9e319621d 100644
--- a/meta/recipes-devtools/binutils/binutils/0009-warn-for-uses-of-system-directories-when-cross-linki.patch
+++ b/meta/recipes-devtools/binutils/binutils/0009-warn-for-uses-of-system-directories-when-cross-linki.patch
@@ -1,4 +1,4 @@
-From 27e38ee92c24fca86b1c3f6ef156a1892dd06bfd Mon Sep 17 00:00:00 2001
+From a3667059fc0d52d890b505bed0e5050ea3d7002e 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 09/15] warn for uses of system directories when cross linking
@@ -55,7 +55,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
ld/configure | 16 ++++++++++++++++
ld/configure.ac | 10 ++++++++++
ld/ld.h | 8 ++++++++
- ld/ld.texinfo | 12 ++++++++++++
+ ld/ld.texi | 12 ++++++++++++
ld/ldfile.c | 17 +++++++++++++++++
ld/ldlex.h | 2 ++
ld/ldmain.c | 2 ++
@@ -63,10 +63,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
9 files changed, 86 insertions(+)
diff --git a/ld/config.in b/ld/config.in
-index a846743da6..df3cd5fb60 100644
+index d93c9b0830..5da2742bea 100644
--- a/ld/config.in
+++ b/ld/config.in
-@@ -27,6 +27,9 @@
+@@ -31,6 +31,9 @@
language is requested. */
#undef ENABLE_NLS
@@ -77,10 +77,10 @@ index a846743da6..df3cd5fb60 100644
#undef EXTRA_SHLIB_EXTENSION
diff --git a/ld/configure b/ld/configure
-index db8b998722..489ead5c13 100755
+index 2b291f0da8..facc386563 100755
--- a/ld/configure
+++ b/ld/configure
-@@ -789,6 +789,7 @@ with_lib_path
+@@ -826,6 +826,7 @@ with_lib_path
enable_targets
enable_64_bit_bfd
with_sysroot
@@ -88,7 +88,7 @@ index db8b998722..489ead5c13 100755
enable_gold
enable_got
enable_compressed_debug_sections
-@@ -1448,6 +1449,8 @@ Optional Features:
+@@ -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)
@@ -97,7 +97,7 @@ index db8b998722..489ead5c13 100755
--enable-gold[=ARG] build gold [ARG={default,yes,no}]
--enable-got=<type> GOT handling scheme (target, single, negative,
multigot)
-@@ -16315,6 +16318,19 @@ fi
+@@ -16618,6 +16621,19 @@ fi
@@ -118,10 +118,10 @@ index db8b998722..489ead5c13 100755
if test "${enable_gold+set}" = set; then :
enableval=$enable_gold; case "${enableval}" in
diff --git a/ld/configure.ac b/ld/configure.ac
-index bada1b50b0..d074a3820b 100644
+index d10c553650..9f1b57b120 100644
--- a/ld/configure.ac
+++ b/ld/configure.ac
-@@ -95,6 +95,16 @@ AC_SUBST(use_sysroot)
+@@ -94,6 +94,16 @@ AC_SUBST(use_sysroot)
AC_SUBST(TARGET_SYSTEM_ROOT)
AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
@@ -157,11 +157,11 @@ index ba914b921e..9df17dab6c 100644
/* Big or little endian as set on command line. */
enum endian_enum endian;
-diff --git a/ld/ld.texinfo b/ld/ld.texinfo
-index c89915f1aa..df430837e2 100644
---- a/ld/ld.texinfo
-+++ b/ld/ld.texinfo
-@@ -2498,6 +2498,18 @@ string identifying the original linked file does not change.
+diff --git a/ld/ld.texi b/ld/ld.texi
+index b9fe2324da..43486605e0 100644
+--- a/ld/ld.texi
++++ b/ld/ld.texi
+@@ -2479,6 +2479,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.
@@ -181,7 +181,7 @@ index c89915f1aa..df430837e2 100644
@c man end
diff --git a/ld/ldfile.c b/ld/ldfile.c
-index 6532a57d96..f943f0b2e5 100644
+index a72ff13526..dc5148f748 100644
--- a/ld/ldfile.c
+++ b/ld/ldfile.c
@@ -116,6 +116,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline)
@@ -209,10 +209,10 @@ index 6532a57d96..f943f0b2e5 100644
/* Try to open a BFD for a lang_input_statement. */
diff --git a/ld/ldlex.h b/ld/ldlex.h
-index 140ed1d9da..9965cbc04f 100644
+index 04d6fd5f96..d7df005bb2 100644
--- a/ld/ldlex.h
+++ b/ld/ldlex.h
-@@ -147,6 +147,8 @@ enum option_values
+@@ -148,6 +148,8 @@ enum option_values
OPTION_REQUIRE_DEFINED_SYMBOL,
OPTION_ORPHAN_HANDLING,
OPTION_FORCE_GROUP_ALLOCATION,
@@ -222,10 +222,10 @@ index 140ed1d9da..9965cbc04f 100644
/* The initial parser states. */
diff --git a/ld/ldmain.c b/ld/ldmain.c
-index c473ed24c3..adae0b4610 100644
+index f31eeb29c3..25f8497888 100644
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
-@@ -261,6 +261,8 @@ main (int argc, char **argv)
+@@ -268,6 +268,8 @@ main (int argc, char **argv)
command_line.warn_mismatch = TRUE;
command_line.warn_search_mismatch = TRUE;
command_line.check_section_addresses = -1;
@@ -235,10 +235,10 @@ index c473ed24c3..adae0b4610 100644
/* 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 f2191602d4..bccb3bdeef 100644
+index 86a033a383..4a40d48020 100644
--- a/ld/lexsup.c
+++ b/ld/lexsup.c
-@@ -538,6 +538,14 @@ static const struct ld_option ld_options[] =
+@@ -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 },
@@ -253,8 +253,8 @@ index f2191602d4..bccb3bdeef 100644
};
#define OPTION_COUNT ARRAY_SIZE (ld_options)
-@@ -1568,6 +1576,14 @@ parse_args (unsigned argc, char **argv)
- einfo (_("%P%F: invalid argument to option"
+@@ -1577,6 +1585,14 @@ parse_args (unsigned argc, char **argv)
+ einfo (_("%F%P: invalid argument to option"
" \"--orphan-handling\"\n"));
break;
+
@@ -269,5 +269,5 @@ index f2191602d4..bccb3bdeef 100644
}
--
-2.16.1
+2.18.0
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
index 33dfff9bd70..8fc00ff4567 100644
--- 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
@@ -1,4 +1,4 @@
-From e205ae05c41a8cc8d47708f0a3b6f740e2bf2526 Mon Sep 17 00:00:00 2001
+From 9e1d8f9a657a8bd48048c2ea6407cf60b723bd68 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 10/15] Fix rpath in libtool when sysroot is enabled
@@ -48,5 +48,5 @@ index 70e856e065..11ee684ccc 100644
if test -z "$hardcode_libdirs"; then
hardcode_libdirs="$libdir"
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-devtools/binutils/binutils/0011-Change-default-emulation-for-mips64-linux.patch b/meta/recipes-devtools/binutils/binutils/0011-Change-default-emulation-for-mips64-linux.patch
index 80fcbc11949..2e93b129ddc 100644
--- a/meta/recipes-devtools/binutils/binutils/0011-Change-default-emulation-for-mips64-linux.patch
+++ b/meta/recipes-devtools/binutils/binutils/0011-Change-default-emulation-for-mips64-linux.patch
@@ -1,4 +1,4 @@
-From 7978c1299021033c35c29c94e0997235f7ede248 Mon Sep 17 00:00:00 2001
+From 2d2e2fcdd9646849716ee99d8d3e5d72ae8889bc 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 11/15] Change default emulation for mips64*-*-linux
@@ -14,10 +14,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/bfd/config.bfd b/bfd/config.bfd
-index f04a993f06..8777f96bd2 100644
+index 6391f35684..8a11c0680a 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
-@@ -1189,12 +1189,12 @@ case "${targ}" in
+@@ -913,12 +913,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*)
@@ -35,10 +35,10 @@ index f04a993f06..8777f96bd2 100644
mips*el-*-linux*)
targ_defvec=mips_elf32_trad_le_vec
diff --git a/ld/configure.tgt b/ld/configure.tgt
-index 6183a85b3d..1d78465590 100644
+index fad8b2e5c8..7fb2168503 100644
--- a/ld/configure.tgt
+++ b/ld/configure.tgt
-@@ -535,11 +535,11 @@ mips*el-*-vxworks*) targ_emul=elf32elmipvxworks
+@@ -464,11 +464,11 @@ mips*el-*-vxworks*) targ_emul=elf32elmipvxworks
mips*-*-vxworks*) targ_emul=elf32ebmipvxworks
targ_extra_emuls="elf32elmipvxworks" ;;
mips*-*-windiss) targ_emul=elf32mipswindiss ;;
@@ -55,5 +55,5 @@ index 6183a85b3d..1d78465590 100644
mips*el-*-linux-*) targ_emul=elf32ltsmip
targ_extra_emuls="elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip"
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-devtools/binutils/binutils/0012-Add-support-for-Netlogic-XLP.patch b/meta/recipes-devtools/binutils/binutils/0012-Add-support-for-Netlogic-XLP.patch
index 1fefb680f81..4d64bd53f81 100644
--- a/meta/recipes-devtools/binutils/binutils/0012-Add-support-for-Netlogic-XLP.patch
+++ b/meta/recipes-devtools/binutils/binutils/0012-Add-support-for-Netlogic-XLP.patch
@@ -1,4 +1,4 @@
-From 3b40bf584615f794b85fd50d4d0a5c0a1d2ee7bf Mon Sep 17 00:00:00 2001
+From 96ff7570c29f792c466a933529fefda9b8e97994 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 12/15] Add support for Netlogic XLP
@@ -34,10 +34,10 @@ Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
14 files changed, 61 insertions(+), 21 deletions(-)
diff --git a/bfd/aoutx.h b/bfd/aoutx.h
-index eec9c4ad2a..3bf0a71e63 100644
+index 023843b0be..46246fec2d 100644
--- a/bfd/aoutx.h
+++ b/bfd/aoutx.h
-@@ -814,6 +814,7 @@ NAME (aout, machine_type) (enum bfd_architecture arch,
+@@ -798,6 +798,7 @@ NAME (aout, machine_type) (enum bfd_architecture arch,
case bfd_mach_mipsisa64r6:
case bfd_mach_mips_sb1:
case bfd_mach_mips_xlr:
@@ -46,10 +46,10 @@ index eec9c4ad2a..3bf0a71e63 100644
arch_flags = M_MIPS2;
break;
diff --git a/bfd/archures.c b/bfd/archures.c
-index e83c57a2f3..3016ea1bae 100644
+index 282e983086..b38b05d132 100644
--- a/bfd/archures.c
+++ b/bfd/archures.c
-@@ -201,6 +201,7 @@ DESCRIPTION
+@@ -183,6 +183,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'. *}
@@ -58,10 +58,10 @@ index e83c57a2f3..3016ea1bae 100644
.#define bfd_mach_mipsisa32r2 33
.#define bfd_mach_mipsisa32r3 34
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
-index 42991e7848..27abc5d5a8 100644
+index 93745bd3fd..326e9e49ed 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
-@@ -2062,6 +2062,7 @@ enum bfd_architecture
+@@ -2054,6 +2054,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'. */
@@ -70,10 +70,10 @@ index 42991e7848..27abc5d5a8 100644
#define bfd_mach_mipsisa32r2 33
#define bfd_mach_mipsisa32r3 34
diff --git a/bfd/config.bfd b/bfd/config.bfd
-index 8777f96bd2..7b80bda8c9 100644
+index 8a11c0680a..c882421343 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
-@@ -1172,6 +1172,11 @@ case "${targ}" in
+@@ -896,6 +896,11 @@ case "${targ}" in
targ_defvec=mips_elf32_le_vec
targ_selvecs="mips_elf32_be_vec mips_elf64_be_vec mips_elf64_le_vec"
;;
@@ -110,10 +110,10 @@ index cb50c64371..2b9d1d6ecf 100644
/* 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 285401367d..14ebb5f175 100644
+index d91942301c..5d1bd3f0b1 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
-@@ -6806,6 +6806,9 @@ _bfd_elf_mips_mach (flagword flags)
+@@ -6805,6 +6805,9 @@ _bfd_elf_mips_mach (flagword flags)
case E_MIPS_MACH_IAMR2:
return bfd_mach_mips_interaptiv_mr2;
@@ -123,7 +123,7 @@ index 285401367d..14ebb5f175 100644
default:
switch (flags & EF_MIPS_ARCH)
{
-@@ -11963,6 +11966,10 @@ mips_set_isa_flags (bfd *abfd)
+@@ -12003,6 +12006,10 @@ mips_set_isa_flags (bfd *abfd)
val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_OCTEON2;
break;
@@ -134,7 +134,7 @@ index 285401367d..14ebb5f175 100644
case bfd_mach_mipsisa32:
val = E_MIPS_ARCH_32;
break;
-@@ -13936,6 +13943,7 @@ static const struct mips_mach_extension mips_mach_extensions[] =
+@@ -13992,6 +13999,7 @@ static const struct mips_mach_extension mips_mach_extensions[] =
{ bfd_mach_mips_octeonp, bfd_mach_mips_octeon },
{ bfd_mach_mips_octeon, bfd_mach_mipsisa64r2 },
{ bfd_mach_mips_loongson_3a, bfd_mach_mipsisa64r2 },
@@ -143,10 +143,10 @@ index 285401367d..14ebb5f175 100644
/* MIPS64 extensions. */
{ bfd_mach_mipsisa64r2, bfd_mach_mipsisa64 },
diff --git a/binutils/readelf.c b/binutils/readelf.c
-index ae1cda9a7b..fed0387a94 100644
+index 2b78db219b..7a7178925f 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
-@@ -3370,6 +3370,7 @@ get_machine_flags (Filedata * filedata, unsigned e_flags, unsigned e_machine)
+@@ -3403,6 +3403,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;
@@ -155,7 +155,7 @@ index ae1cda9a7b..fed0387a94 100644
/* 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 c135131b59..d8fbda8e31 100644
+index 59df787155..48537226c0 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -552,6 +552,7 @@ static int mips_32bitmode = 0;
@@ -174,7 +174,7 @@ index c135131b59..d8fbda8e31 100644
)
/* Whether the processor uses hardware interlocks to protect reads
-@@ -19737,7 +19739,7 @@ static const struct mips_cpu_info mips_cpu_info_table[] =
+@@ -19778,7 +19780,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. */
@@ -184,10 +184,10 @@ index c135131b59..d8fbda8e31 100644
/* MIPS 64 Release 6 */
{ "i6400", 0, ASE_MSA, ISA_MIPS64R6, CPU_MIPS64R6},
diff --git a/gas/configure b/gas/configure
-index a40ac2144f..65a6995243 100755
+index 134278fa25..2fdca147a1 100755
--- a/gas/configure
+++ b/gas/configure
-@@ -12989,6 +12989,9 @@ _ACEOF
+@@ -13336,6 +13336,9 @@ _ACEOF
mipsisa64r6 | mipsisa64r6el)
mips_cpu=mips64r6
;;
@@ -198,7 +198,7 @@ index a40ac2144f..65a6995243 100755
mips_cpu=r3900
;;
diff --git a/include/elf/mips.h b/include/elf/mips.h
-index 9de0b4e175..74fc4f7e55 100644
+index 4e2cde3279..c329f38929 100644
--- a/include/elf/mips.h
+++ b/include/elf/mips.h
@@ -290,6 +290,7 @@ END_RELOC_NUMBERS (R_MIPS_maxext)
@@ -210,10 +210,10 @@ index 9de0b4e175..74fc4f7e55 100644
#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 5eea72f139..90f6d57e15 100644
+index 1ab1780567..74f457b579 100644
--- a/include/opcode/mips.h
+++ b/include/opcode/mips.h
-@@ -1259,6 +1259,8 @@ static const unsigned int mips_isa_table[] = {
+@@ -1262,6 +1262,8 @@ static const unsigned int mips_isa_table[] = {
#define INSN_XLR 0x00000020
/* Imagination interAptiv MR2. */
#define INSN_INTERAPTIV_MR2 0x04000000
@@ -222,7 +222,7 @@ index 5eea72f139..90f6d57e15 100644
/* DSP ASE */
#define ASE_DSP 0x00000001
-@@ -1365,6 +1367,7 @@ static const unsigned int mips_isa_table[] = {
+@@ -1373,6 +1375,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' */
@@ -230,7 +230,7 @@ index 5eea72f139..90f6d57e15 100644
/* Return true if the given CPU is included in INSN_* mask MASK. */
-@@ -1445,6 +1448,9 @@ cpu_is_member (int cpu, unsigned int mask)
+@@ -1453,6 +1456,9 @@ cpu_is_member (int cpu, unsigned int mask)
return ((mask & INSN_ISA_MASK) == INSN_ISA32R6)
|| ((mask & INSN_ISA_MASK) == INSN_ISA64R6);
@@ -241,10 +241,10 @@ index 5eea72f139..90f6d57e15 100644
return FALSE;
}
diff --git a/ld/configure.tgt b/ld/configure.tgt
-index 1d78465590..307e787b64 100644
+index 7fb2168503..a1db7adfe2 100644
--- a/ld/configure.tgt
+++ b/ld/configure.tgt
-@@ -521,6 +521,8 @@ mips*el-sde-elf* | mips*el-mti-elf* | mips*el-img-elf*)
+@@ -450,6 +450,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" ;;
@@ -254,10 +254,10 @@ index 1d78465590..307e787b64 100644
targ_extra_emuls="elf32lr5900"
targ_extra_libpath=$targ_extra_emuls ;;
diff --git a/opcodes/mips-dis.c b/opcodes/mips-dis.c
-index 984fcbb802..95b107d216 100644
+index bbf21328e8..38e487c16f 100644
--- a/opcodes/mips-dis.c
+++ b/opcodes/mips-dis.c
-@@ -655,13 +655,11 @@ const struct mips_arch_choice mips_arch_choices[] =
+@@ -656,13 +656,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 },
@@ -277,10 +277,10 @@ index 984fcbb802..95b107d216 100644
/* 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 180d613c93..65b7b8cc23 100644
+index 1cbcbc6abc..e1fbdc89de 100644
--- a/opcodes/mips-opc.c
+++ b/opcodes/mips-opc.c
-@@ -328,6 +328,7 @@ decode_mips_operand (const char *p)
+@@ -329,6 +329,7 @@ decode_mips_operand (const char *p)
#define IOCT3 INSN_OCTEON3
#define XLR INSN_XLR
#define IAMR2 INSN_INTERAPTIV_MR2
@@ -288,7 +288,7 @@ index 180d613c93..65b7b8cc23 100644
#define IVIRT ASE_VIRT
#define IVIRT64 ASE_VIRT64
-@@ -966,6 +967,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -974,6 +975,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 },
@@ -296,7 +296,7 @@ index 180d613c93..65b7b8cc23 100644
/* 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 },
-@@ -998,12 +1000,13 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -1006,12 +1008,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 },
@@ -311,7 +311,7 @@ index 180d613c93..65b7b8cc23 100644
/* 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 },
-@@ -1075,6 +1078,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -1083,6 +1086,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 },
@@ -319,7 +319,7 @@ index 180d613c93..65b7b8cc23 100644
{"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 },
-@@ -1090,6 +1094,8 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -1098,6 +1102,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 },
@@ -328,7 +328,7 @@ index 180d613c93..65b7b8cc23 100644
{"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 },
-@@ -1243,9 +1249,9 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -1251,9 +1257,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 },
@@ -341,7 +341,7 @@ index 180d613c93..65b7b8cc23 100644
{"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 },
-@@ -1410,7 +1416,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -1418,7 +1424,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 },
@@ -350,7 +350,7 @@ index 180d613c93..65b7b8cc23 100644
{"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 },
-@@ -1455,10 +1461,13 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -1463,10 +1469,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 },
@@ -366,7 +366,7 @@ index 180d613c93..65b7b8cc23 100644
{"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 },
-@@ -1508,7 +1517,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -1516,7 +1525,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 },
@@ -375,7 +375,7 @@ index 180d613c93..65b7b8cc23 100644
{"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 },
-@@ -1945,9 +1954,9 @@ const struct mips_opcode mips_builtin_opcodes[] =
+@@ -1953,9 +1962,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 },
@@ -389,5 +389,5 @@ index 180d613c93..65b7b8cc23 100644
{"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.16.1
+2.18.0
diff --git a/meta/recipes-devtools/binutils/binutils/0013-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch b/meta/recipes-devtools/binutils/binutils/0013-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch
index c3e1b13841c..c9ffdada910 100644
--- a/meta/recipes-devtools/binutils/binutils/0013-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch
+++ b/meta/recipes-devtools/binutils/binutils/0013-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch
@@ -1,4 +1,4 @@
-From 27ec22ca3cd56cfdf060d2e1f414bedce269b322 Mon Sep 17 00:00:00 2001
+From d45455db35db5693c5efe0e1b384295e4c0db998 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 13/15] fix the incorrect assembling for ppc wait mnemonic
@@ -11,10 +11,10 @@ Upstream-Status: Pending
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
-index bb17f26c2e..dbdd762b4e 100644
+index 4a0fca5f0a..49f72fc35c 100644
--- a/opcodes/ppc-opc.c
+++ b/opcodes/ppc-opc.c
-@@ -5338,7 +5338,6 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+@@ -5351,7 +5351,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}},
@@ -22,7 +22,7 @@ index bb17f26c2e..dbdd762b4e 100644
{"lwepx", X(31,31), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
-@@ -5392,7 +5391,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+@@ -5405,7 +5404,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}},
@@ -32,5 +32,5 @@ index bb17f26c2e..dbdd762b4e 100644
{"dcbstep", XRT(31,63,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-devtools/binutils/binutils/0014-Detect-64-bit-MIPS-targets.patch b/meta/recipes-devtools/binutils/binutils/0014-Detect-64-bit-MIPS-targets.patch
index cf3690f25d8..6197df6d5a9 100644
--- a/meta/recipes-devtools/binutils/binutils/0014-Detect-64-bit-MIPS-targets.patch
+++ b/meta/recipes-devtools/binutils/binutils/0014-Detect-64-bit-MIPS-targets.patch
@@ -1,4 +1,4 @@
-From 7dfbd6889d868a09d695dd2736104848c1a9c9c3 Mon Sep 17 00:00:00 2001
+From 9af90cfc35ff1fe78755578861473039836c467a 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 14/15] Detect 64-bit MIPS targets
@@ -46,5 +46,5 @@ index 8aef22a318..7030026ffa 100644
targ_obj=mips
targ_machine=EM_MIPS
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-devtools/binutils/binutils/0015-sync-with-OE-libtool-changes.patch b/meta/recipes-devtools/binutils/binutils/0015-sync-with-OE-libtool-changes.patch
index 8c9fd237e7b..7dc8ba8c376 100644
--- a/meta/recipes-devtools/binutils/binutils/0015-sync-with-OE-libtool-changes.patch
+++ b/meta/recipes-devtools/binutils/binutils/0015-sync-with-OE-libtool-changes.patch
@@ -1,4 +1,4 @@
-From 298804f430939d6cc94b09732ee93e64c5e6be18 Mon Sep 17 00:00:00 2001
+From f9e26bd29b5f017ea1307b51b5036063bff78600 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@intel.com>
Date: Mon, 6 Mar 2017 23:33:27 -0800
Subject: [PATCH 15/15] sync with OE libtool changes
@@ -85,5 +85,5 @@ index 11ee684ccc..3b19ac1532 100644
elif test -n "$runpath_var"; then
case "$finalize_perm_rpath " in
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-devtools/binutils/binutils/0016-add-i386pep-emulation-for-x86_64.patch b/meta/recipes-devtools/binutils/binutils/0016-add-i386pep-emulation-for-x86_64.patch
new file mode 100644
index 00000000000..9f20784eba0
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0016-add-i386pep-emulation-for-x86_64.patch
@@ -0,0 +1,41 @@
+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.
+
+Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
+
+Upstream-Status: Inappropriate [OE configuration specific]
+---
+diff --git a/bfd/config.bfd b/bfd/config.bfd
+index c882421..dc705b6 100644
+--- a/bfd/config.bfd
++++ b/bfd/config.bfd
+@@ -688,7 +688,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 a1db7ad..65a984a 100644
+--- a/ld/configure.tgt
++++ b/ld/configure.tgt
+@@ -253,8 +253,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 ;;
diff --git a/meta/recipes-devtools/binutils/binutils/0017-improve-check-for-input-file-matching-output-file.patch b/meta/recipes-devtools/binutils/binutils/0017-improve-check-for-input-file-matching-output-file.patch
new file mode 100644
index 00000000000..265e52633b8
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0017-improve-check-for-input-file-matching-output-file.patch
@@ -0,0 +1,59 @@
+From 2a50366ded329bfb39d387253450c9d5302c3503 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Tue, 14 Aug 2018 12:22:35 +0100
+Subject: [PATCH] as.c: Improve check for input file matching output file.
+
+When the assembler reports that the input and output are the same, report the
+file names involved, in order to help debugging. Also do not equate two files
+are the same if the have the same inode value but reside on different file
+systems.
+
+Upstream-Status: Backport
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ gas/as.c | 27 ++++++++++++++++++++-------
+ 2 files changed, 20 insertions(+), 7 deletions(-)
+
+diff --git a/gas/as.c b/gas/as.c
+index b2a908a..3105d06 100644
+--- a/gas/as.c
++++ b/gas/as.c
+@@ -1259,14 +1259,27 @@ main (int argc, char ** argv)
+ {
+ struct stat sib;
+
+- if (stat (argv[i], &sib) == 0)
++ /* Check that the input file and output file are different. */
++ if (stat (argv[i], &sib) == 0
++ && sib.st_ino == sob.st_ino
++ /* POSIX emulating systems may support stat() but if the
++ underlying file system does not support a file serial number
++ of some kind then they will return 0 for the inode. So
++ two files with an inode of 0 may not actually be the same.
++ On real POSIX systems no ordinary file will ever have an
++ inode of 0. */
++ && sib.st_ino != 0
++ /* Different files may have the same inode number if they
++ reside on different devices, so check the st_dev field as
++ well. */
++ && sib.st_dev == sob.st_dev)
+ {
+- if (sib.st_ino == sob.st_ino && sib.st_ino != 0)
+- {
+- /* Don't let as_fatal remove the output file! */
+- out_file_name = NULL;
+- as_fatal (_("The input and output files must be distinct"));
+- }
++ const char *saved_out_file_name = out_file_name;
++
++ /* Don't let as_fatal remove the output file! */
++ out_file_name = NULL;
++ as_fatal (_("The input '%s' and output '%s' files are the same"),
++ argv[i], saved_out_file_name);
+ }
+ }
+ }
+--
+2.7.4
+
diff --git a/meta/recipes-devtools/binutils/binutils/0018-Refactored-location-where-GOT-information-is-collect.patch b/meta/recipes-devtools/binutils/binutils/0018-Refactored-location-where-GOT-information-is-collect.patch
new file mode 100644
index 00000000000..d41339a9a66
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0018-Refactored-location-where-GOT-information-is-collect.patch
@@ -0,0 +1,201 @@
+From d930affa2d475d1cc6792f1e6d56bef3d6c617db Mon Sep 17 00:00:00 2001
+From: Cupertino Miranda <cmiranda@synopsys.com>
+Date: Fri, 2 Mar 2018 17:16:21 +0100
+Subject: [PATCH] Refactored location where GOT information is collected.
+
+Change location where GOT information is collected for ARC target, avoiding
+posible use conflicts of the previous .got field in the symbols hash_entry.
+
+bfd/
+2018-03-01 Cupertino Miranda <cmiranda@synopsys.com>
+
+ * arc-got.h (get_got_entry_list_for_symbol): Changed.
+ * ef32-arc.c (struct elf_arc_link_hash_entry): Moved and changed.
+ (elf_arc_link_hash_newfunc): Changed.
+ (arc_elf_link_hash_table_create): Removed old initializations.
+ (elf_arc_relocate_section, elf_arc_finish_dynamic_symbol): Changed.
+
+Signed-off-by: Cupertino Miranda <cmiranda@synopsys.com>
+Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
+[Romain: rebase on top of 2.31]
+Signed-off-by: Romain Naour <romain.naour@gmail.com>
+
+Upstream-Status: Pending
+---
+ bfd/arc-got.h | 6 +++--
+ bfd/elf32-arc.c | 77 +++++++++++++++++++++++++++++++--------------------------
+ 2 files changed, 46 insertions(+), 37 deletions(-)
+
+diff --git a/bfd/arc-got.h b/bfd/arc-got.h
+index a86061bcb38..81ce88fe21a 100644
+--- a/bfd/arc-got.h
++++ b/bfd/arc-got.h
+@@ -156,9 +156,11 @@ get_got_entry_list_for_symbol (bfd *abfd,
+ unsigned long r_symndx,
+ struct elf_link_hash_entry *h)
+ {
+- if (h != NULL)
++ struct elf_arc_link_hash_entry *h1 =
++ ((struct elf_arc_link_hash_entry *) h);
++ if (h1 != NULL)
+ {
+- return &h->got.glist;
++ return &h1->got_ents;
+ }
+ else
+ {
+diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
+index a48ef0ca15f..ab84de43815 100644
+--- a/bfd/elf32-arc.c
++++ b/bfd/elf32-arc.c
+@@ -160,6 +160,18 @@ struct arc_relocation_data
+ const char * symbol_name;
+ };
+
++/* ARC ELF linker hash entry. */
++struct elf_arc_link_hash_entry
++{
++ struct elf_link_hash_entry root;
++
++ /* Track dynamic relocs copied for this symbol. */
++ struct elf_dyn_relocs *dyn_relocs;
++
++ struct got_entry *got_ents;
++};
++
++
+ /* Should be included at this location due to static declarations
+ defined before this point. */
+ #include "arc-got.h"
+@@ -281,15 +293,6 @@ struct arc_reloc_map
+ unsigned char elf_reloc_val;
+ };
+
+-/* ARC ELF linker hash entry. */
+-struct elf_arc_link_hash_entry
+-{
+- struct elf_link_hash_entry root;
+-
+- /* Track dynamic relocs copied for this symbol. */
+- struct elf_dyn_relocs *dyn_relocs;
+-};
+-
+ /* ARC ELF linker hash table. */
+ struct elf_arc_link_hash_table
+ {
+@@ -301,28 +304,28 @@ elf_arc_link_hash_newfunc (struct bfd_hash_entry *entry,
+ struct bfd_hash_table *table,
+ const char *string)
+ {
++ struct elf_arc_link_hash_entry * ret =
++ (struct elf_arc_link_hash_entry *) entry;
++
+ /* Allocate the structure if it has not already been allocated by a
+ subclass. */
+- if (entry == NULL)
+- {
+- entry = (struct bfd_hash_entry *)
+- bfd_hash_allocate (table,
+- sizeof (struct elf_arc_link_hash_entry));
+- if (entry == NULL)
+- return entry;
+- }
++ if (ret == NULL)
++ ret = (struct elf_arc_link_hash_entry *)
++ bfd_hash_allocate (table, sizeof (struct elf_arc_link_hash_entry));
++ if (ret == NULL)
++ return (struct bfd_hash_entry *) ret;
+
+ /* Call the allocation method of the superclass. */
+- entry = _bfd_elf_link_hash_newfunc (entry, table, string);
+- if (entry != NULL)
++ ret = ((struct elf_arc_link_hash_entry *)
++ _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret,
++ table, string));
++ if (ret != NULL)
+ {
+- struct elf_arc_link_hash_entry *eh;
+-
+- eh = (struct elf_arc_link_hash_entry *) entry;
+- eh->dyn_relocs = NULL;
++ ret->dyn_relocs = NULL;
++ ret->got_ents = NULL;
+ }
+
+- return entry;
++ return (struct bfd_hash_entry *) ret;
+ }
+
+ /* Destroy an ARC ELF linker hash table. */
+@@ -352,11 +355,6 @@ arc_elf_link_hash_table_create (bfd *abfd)
+ return NULL;
+ }
+
+- ret->elf.init_got_refcount.refcount = 0;
+- ret->elf.init_got_refcount.glist = NULL;
+- ret->elf.init_got_offset.offset = 0;
+- ret->elf.init_got_offset.glist = NULL;
+-
+ ret->elf.root.hash_table_free = elf_arc_link_hash_table_free;
+
+ return &ret->elf.root;
+@@ -1615,10 +1613,14 @@ elf_arc_relocate_section (bfd * output_bfd,
+ while (h->root.type == bfd_link_hash_indirect
+ || h->root.type == bfd_link_hash_warning)
+ {
+- struct elf_link_hash_entry *h_old = h;
++ struct elf_arc_link_hash_entry *ah_old =
++ (struct elf_arc_link_hash_entry *) h;
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
+- if (h->got.glist == 0 && h_old->got.glist != h->got.glist)
+- h->got.glist = h_old->got.glist;
++ struct elf_arc_link_hash_entry *ah =
++ (struct elf_arc_link_hash_entry *) h;
++
++ if (ah->got_ents == 0 && ah_old->got_ents != ah->got_ents)
++ ah->got_ents = ah_old->got_ents;
+ }
+
+ /* TODO: Need to validate what was the intention. */
+@@ -1636,6 +1638,8 @@ elf_arc_relocate_section (bfd * output_bfd,
+
+ if (is_reloc_for_GOT (howto) && !bfd_link_pic (info))
+ {
++ struct elf_arc_link_hash_entry *ah =
++ (struct elf_arc_link_hash_entry *) h;
+ /* TODO: Change it to use arc_do_relocation with
+ ARC_32 reloc. Try to use ADD_RELA macro. */
+ bfd_vma relocation =
+@@ -1645,8 +1649,8 @@ elf_arc_relocate_section (bfd * output_bfd,
+ + reloc_data.sym_section->output_section->vma)
+ : 0);
+
+- BFD_ASSERT (h->got.glist);
+- bfd_vma got_offset = h->got.glist->offset;
++ BFD_ASSERT (ah->got_ents);
++ bfd_vma got_offset = ah->got_ents->offset;
+ bfd_put_32 (output_bfd, relocation,
+ htab->sgot->contents + got_offset);
+ }
+@@ -1958,6 +1962,7 @@ elf_arc_check_relocs (bfd * abfd,
+ else /* Global one. */
+ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+
++
+ switch (r_type)
+ {
+ case R_ARC_32:
+@@ -2404,7 +2409,9 @@ elf_arc_finish_dynamic_symbol (bfd * output_bfd,
+ create respective dynamic relocs. */
+ /* TODO: Make function to get list and not access the list directly. */
+ /* TODO: Move function to relocate_section create this relocs eagerly. */
+- create_got_dynrelocs_for_got_info (&h->got.glist,
++ struct elf_arc_link_hash_entry *ah =
++ (struct elf_arc_link_hash_entry *) h;
++ create_got_dynrelocs_for_got_info (&ah->got_ents,
+ output_bfd,
+ info,
+ h);
+--
+2.14.4
+
diff --git a/meta/recipes-devtools/binutils/binutils/0019-Improved-robustness.-Return-FALSE-in-case-of-NULL-po.patch b/meta/recipes-devtools/binutils/binutils/0019-Improved-robustness.-Return-FALSE-in-case-of-NULL-po.patch
new file mode 100644
index 00000000000..6a58ee06ac7
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0019-Improved-robustness.-Return-FALSE-in-case-of-NULL-po.patch
@@ -0,0 +1,38 @@
+From 955176bd999fe80c5b937ab8786665079e35c387 Mon Sep 17 00:00:00 2001
+From: Cupertino Miranda <cmiranda@synopsys.com>
+Date: Fri, 2 Mar 2018 17:33:48 +0100
+Subject: [PATCH] Improved robustness. Return FALSE in case of NULL pointer.
+
+bfd/
+2018-03-01 Cupertino Miranda <cmiranda@synopsys.com>
+
+ * elf32-arc.c (elf_arc_finish_dynamic_symbol) Return FALSE in case
+ arc_htab is NULL.
+
+Signed-off-by: Cupertino Miranda <cmiranda@synopsys.com>
+Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
+[Romain: rebase on top of 2.31]
+Signed-off-by: Romain Naour <romain.naour@gmail.com>
+
+Upstream-Status: Pending
+---
+ bfd/elf32-arc.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
+index ab84de43815..33fc72cff6e 100644
+--- a/bfd/elf32-arc.c
++++ b/bfd/elf32-arc.c
+@@ -2420,6 +2420,9 @@ elf_arc_finish_dynamic_symbol (bfd * output_bfd,
+ {
+ struct elf_arc_link_hash_table *arc_htab = elf_arc_hash_table (info);
+
++ if(arc_htab == NULL)
++ return FALSE;
++
+ if (h->dynindx == -1
+ || (h->root.type != bfd_link_hash_defined
+ && h->root.type != bfd_link_hash_defweak)
+--
+2.14.4
+
diff --git a/meta/recipes-devtools/binutils/binutils/0020-Make-sure-global-symbol-is-not-an-indirect-or-warnin.patch b/meta/recipes-devtools/binutils/binutils/0020-Make-sure-global-symbol-is-not-an-indirect-or-warnin.patch
new file mode 100644
index 00000000000..01e42c03bb1
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0020-Make-sure-global-symbol-is-not-an-indirect-or-warnin.patch
@@ -0,0 +1,46 @@
+From 9d09ce14b4eef2b56f24660fd69a44acd45128b2 Mon Sep 17 00:00:00 2001
+From: Cupertino Miranda <cmiranda@synopsys.com>
+Date: Fri, 2 Mar 2018 17:38:14 +0100
+Subject: [PATCH] Make sure global symbol is not an indirect or warning.
+
+Problem identified in the context of glibc with latest upstream binutils.
+Dynamic symbol space was being reserved but, no actual information for the
+symbol was being set. Data for the symbol was kept initialized with -1.
+No easy test case was possible to be created.
+
+bfd/
+2018-03-01 Cupertino Miranda <cmiranda@synopsys.com>
+
+ * elf32-arc.c (elf_arc_check_relocs): Changed.
+
+Signed-off-by: Cupertino Miranda <cmiranda@synopsys.com>
+Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
+[Romain: rebase on top of 2.31]
+Signed-off-by: Romain Naour <romain.naour@gmail.com>
+
+Upstream-Status: Pending
+---
+ bfd/elf32-arc.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
+index 33fc72cff6e..9b72c5b4f4f 100644
+--- a/bfd/elf32-arc.c
++++ b/bfd/elf32-arc.c
+@@ -1960,7 +1960,12 @@ elf_arc_check_relocs (bfd * abfd,
+ if (r_symndx < symtab_hdr->sh_info) /* Is a local symbol. */
+ h = NULL;
+ else /* Global one. */
+- h = sym_hashes[r_symndx - symtab_hdr->sh_info];
++ {
++ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
++ while (h->root.type == bfd_link_hash_indirect
++ || h->root.type == bfd_link_hash_warning)
++ h = (struct elf_link_hash_entry *) h->root.u.i.link;
++ }
+
+
+ switch (r_type)
+--
+2.14.4
+
diff --git a/meta/recipes-devtools/binutils/binutils/0021-PLT-information-was-still-being-generated-when-symbo.patch b/meta/recipes-devtools/binutils/binutils/0021-PLT-information-was-still-being-generated-when-symbo.patch
new file mode 100644
index 00000000000..9e942399c0c
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0021-PLT-information-was-still-being-generated-when-symbo.patch
@@ -0,0 +1,40 @@
+From e4861c68067cb2166b4c2bb9c052abeb6ad9aaa1 Mon Sep 17 00:00:00 2001
+From: Cupertino Miranda <cmiranda@synopsys.com>
+Date: Fri, 2 Mar 2018 17:44:29 +0100
+Subject: [PATCH] PLT information was still being generated when symbol was
+ forced_local.
+
+A change upstream reveiled this issue, triggering an assert when linking glibc.
+
+bfd/
+2018-03-01 Cupertino Miranda <cmiranda@synopsys.com>
+
+ * elf32-arc.c (elf_arc_check_relocs): Changed.
+
+Signed-off-by: Cupertino Miranda <cmiranda@synopsys.com>
+Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
+[Romain: rebase on top of 2.31]
+Signed-off-by: Romain Naour <romain.naour@gmail.com>
+
+Upstream-Status: Pending
+---
+ bfd/elf32-arc.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
+index 9b72c5b4f4f..b40b463d34d 100644
+--- a/bfd/elf32-arc.c
++++ b/bfd/elf32-arc.c
+@@ -2041,7 +2041,8 @@ elf_arc_check_relocs (bfd * abfd,
+ if (h == NULL)
+ continue;
+ else
+- h->needs_plt = 1;
++ if(h->forced_local == 0)
++ h->needs_plt = 1;
+ }
+
+ /* Add info to the symbol got_entry_list. */
+--
+2.14.4
+
diff --git a/meta/recipes-devtools/binutils/binutils_2.30.bb b/meta/recipes-devtools/binutils/binutils_2.31.bb
index 51a9748906a..51a9748906a 100644
--- a/meta/recipes-devtools/binutils/binutils_2.30.bb
+++ b/meta/recipes-devtools/binutils/binutils_2.31.bb
diff --git a/meta/recipes-devtools/bison/bison/gnulib.patch b/meta/recipes-devtools/bison/bison/gnulib.patch
new file mode 100644
index 00000000000..7eaf0ce0fa9
--- /dev/null
+++ b/meta/recipes-devtools/bison/bison/gnulib.patch
@@ -0,0 +1,21 @@
+Fix gnulib issues found with glibc 2.28 libio.h removal
+
+see
+https://lists.gnu.org/r/bug-gnulib/2018-03/msg00000.html
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: bison-3.0.4/lib/fseterr.c
+===================================================================
+--- bison-3.0.4.orig/lib/fseterr.c
++++ bison-3.0.4/lib/fseterr.c
+@@ -29,7 +29,7 @@ fseterr (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->_flags |= _IO_ERR_SEEN;
+ #elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin */
+ fp_->_flags |= __SERR;
diff --git a/meta/recipes-devtools/bison/bison_3.0.4.bb b/meta/recipes-devtools/bison/bison_3.0.4.bb
index 58728f5021f..cc155f0fbe3 100644
--- a/meta/recipes-devtools/bison/bison_3.0.4.bb
+++ b/meta/recipes-devtools/bison/bison_3.0.4.bb
@@ -14,6 +14,7 @@ SRC_URI = "${GNU_MIRROR}/bison/bison-${PV}.tar.xz \
file://dont-depend-on-help2man.patch.patch \
file://0001-src-local.mk-fix-parallel-issue.patch \
file://add-with-bisonlocaledir.patch \
+ file://gnulib.patch \
"
# No point in hardcoding path to m4, just use PATH
diff --git a/meta/recipes-devtools/bootchart2/bootchart2/0001-Fixed-Missing-default-value-for-BOOTLOG_DEST.patch b/meta/recipes-devtools/bootchart2/bootchart2/0001-Fixed-Missing-default-value-for-BOOTLOG_DEST.patch
deleted file mode 100644
index 118814a8074..00000000000
--- a/meta/recipes-devtools/bootchart2/bootchart2/0001-Fixed-Missing-default-value-for-BOOTLOG_DEST.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 2225ab2038bfe50f16f972e39d89bcd0bd7767f5 Mon Sep 17 00:00:00 2001
-From: Steffen Pankratz <kratz00@gmx.de>
-Date: Tue, 9 Feb 2016 13:49:42 +0100
-Subject: [PATCH] Fixed: Missing default value for BOOTLOG_DEST
-
-Upstream-Status: Backport
-
-BUILDLOG_DEST seems to be a typo or mix-up which was introduced with 281d1df80884bf2969c509ec60ee8a6593524fe8
-
-Signed-off-by: Peter Liu <peter.x.liu@external.atlascopco.com>
----
- bootchartd.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/bootchartd.in b/bootchartd.in
-index f58ab9e..30af677 100755
---- a/bootchartd.in
-+++ b/bootchartd.in
-@@ -37,7 +37,7 @@ PATH="/sbin:/bin:/usr/sbin:/usr/bin:$PATH"
-
- # Defaults, in case we can't find our configuration
- SAMPLE_HZ=50
--BUILDLOG_DEST=/var/log/bootchart.tgz
-+BOOTLOG_DEST=/var/log/bootchart.tgz
- AUTO_RENDER="no"
- AUTO_RENDER_DIR="/var/log"
- AUTO_RENDER_FORMAT="png"
---
-1.9.1
-
diff --git a/meta/recipes-devtools/bootchart2/bootchart2_0.14.8.bb b/meta/recipes-devtools/bootchart2/bootchart2_0.14.8.bb
index b3c889b0a85..396d0ec0a10 100644
--- a/meta/recipes-devtools/bootchart2/bootchart2_0.14.8.bb
+++ b/meta/recipes-devtools/bootchart2/bootchart2_0.14.8.bb
@@ -92,12 +92,12 @@ UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+(\.\d+)*)"
SRC_URI = "git://github.com/xrmx/bootchart.git \
file://bootchartd_stop.sh \
- file://0001-Fixed-Missing-default-value-for-BOOTLOG_DEST.patch \
file://0001-collector-Allocate-space-on-heap-for-chunks.patch \
"
S = "${WORKDIR}/git"
-SRCREV = "48e0071048564c6af75ab969e842d6dec808da09"
+SRCREV = "331ada031f1d65f6d934d918f896e1c708c64bf7"
+PV .= "+git${SRCPV}"
inherit systemd update-rc.d python3native update-alternatives
diff --git a/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-Add-LDFLAGS-when-building-libbtrfsutil.so.patch b/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-Add-LDFLAGS-when-building-libbtrfsutil.so.patch
new file mode 100644
index 00000000000..a8fcfc0f73c
--- /dev/null
+++ b/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-Add-LDFLAGS-when-building-libbtrfsutil.so.patch
@@ -0,0 +1,35 @@
+From eecc48ecad359cd4fab650ce49cfe57e99d1859d Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 17 May 2018 12:21:31 +0300
+Subject: [PATCH] Add LDFLAGS when building libbtrfsutil.so and python
+ bindings.
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
+---
+ Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 10f0e3b0..1697794c 100644
+--- a/Makefile
++++ b/Makefile
+@@ -402,7 +402,7 @@ libbtrfsutil/%.o: libbtrfsutil/%.c
+
+ libbtrfsutil.so.$(libbtrfsutil_version): $(libbtrfsutil_objects)
+ @echo " [LD] $@"
+- $(Q)$(CC) $(LIBBTRFSUTIL_CFLAGS) $(libbtrfsutil_objects) \
++ $(Q)$(CC) $(LIBBTRFSUTIL_CFLAGS) $(LDFLAGS) $(libbtrfsutil_objects) \
+ -shared -Wl,-soname,libbtrfsutil.so.$(libbtrfsutil_major) -o $@
+
+ libbtrfsutil.a: $(libbtrfsutil_objects)
+@@ -417,7 +417,7 @@ ifeq ($(PYTHON_BINDINGS),1)
+ libbtrfsutil_python: libbtrfsutil.so.$(libbtrfsutil_major) libbtrfsutil.so libbtrfsutil/btrfsutil.h
+ @echo " [PY] libbtrfsutil"
+ $(Q)cd libbtrfsutil/python; \
+- CFLAGS= LDFLAGS= $(PYTHON) setup.py $(SETUP_PY_Q) build_ext -i build
++ CFLAGS= $(PYTHON) setup.py $(SETUP_PY_Q) build_ext -i build
+
+ .PHONY: libbtrfsutil_python
+ endif
diff --git a/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-Add-a-possibility-to-specify-where-python-modules-ar.patch b/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-Add-a-possibility-to-specify-where-python-modules-ar.patch
new file mode 100644
index 00000000000..5846f04d1a9
--- /dev/null
+++ b/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-Add-a-possibility-to-specify-where-python-modules-ar.patch
@@ -0,0 +1,25 @@
+From d3adfc21c9cc264bd191722f102963cbc4794259 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 23 May 2018 21:20:35 +0300
+Subject: [PATCH] Add a possibility to specify where python modules are
+ installed
+
+Upstream-Status: Inappropriate [oe-core specific to solve multilib use case]
+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 1697794c..8ab38818 100644
+--- a/Makefile
++++ b/Makefile
+@@ -651,7 +651,7 @@ endif
+ ifeq ($(PYTHON_BINDINGS),1)
+ install_python: libbtrfsutil_python
+ $(Q)cd libbtrfsutil/python; \
+- $(PYTHON) setup.py install --skip-build $(if $(DESTDIR),--root $(DESTDIR)) --prefix $(prefix)
++ $(PYTHON) setup.py install --skip-build $(if $(DESTDIR),--root $(DESTDIR)) --prefix $(prefix) --install-lib=$(PYTHON_SITEPACKAGES_DIR)
+
+ .PHONY: install_python
+ endif
diff --git a/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-Fix-build-with-musl-missing-header-include-for-dev_t.patch b/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-Fix-build-with-musl-missing-header-include-for-dev_t.patch
deleted file mode 100644
index 790676b9cbf..00000000000
--- a/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-Fix-build-with-musl-missing-header-include-for-dev_t.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From bc35c4caebb57cc8b96c30c25432b12ca8dc18d5 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 6 Oct 2017 15:03:49 +0300
-Subject: [PATCH] Fix build with musl (missing header include for dev_t).
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- convert/source-fs.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/convert/source-fs.h b/convert/source-fs.h
-index 23f3356..6fd770f 100644
---- a/convert/source-fs.h
-+++ b/convert/source-fs.h
-@@ -20,6 +20,7 @@
- #include "kerncompat.h"
- #include <linux/kdev_t.h>
- #include <pthread.h>
-+#include <sys/types.h>
-
- #define CONV_IMAGE_SUBVOL_OBJECTID BTRFS_FIRST_FREE_OBJECTID
-
---
-2.14.1
-
diff --git a/meta/recipes-devtools/btrfs-tools/btrfs-tools_4.13.3.bb b/meta/recipes-devtools/btrfs-tools/btrfs-tools_4.17.1.bb
index bc157e26776..6b53fbcd7fe 100644
--- a/meta/recipes-devtools/btrfs-tools/btrfs-tools_4.13.3.bb
+++ b/meta/recipes-devtools/btrfs-tools/btrfs-tools_4.17.1.bb
@@ -10,22 +10,23 @@ 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 = "util-linux attr e2fsprogs lzo acl python3-setuptools-native"
DEPENDS_append_class-target = " udev"
RDEPENDS_${PN} = "libgcc"
-SRCREV = "a7a1ea0f4f2a1d6eeeb3d106e062c7f1034f16d4"
+SRCREV = "7faaca0d9f78f7162ae603231f693dd8e1af2a41"
SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git \
file://0001-Makefile-build-mktables-using-native-gcc.patch \
- file://0001-Fix-build-with-musl-missing-header-include-for-dev_t.patch \
+ file://0001-Add-LDFLAGS-when-building-libbtrfsutil.so.patch \
+ file://0001-Add-a-possibility-to-specify-where-python-modules-ar.patch \
"
-RECIPE_NO_UPDATE_REASON = "Waiting for resolution of https://github.com/kdave/btrfs-progs/issues/109"
-inherit autotools-brokensep pkgconfig manpages
+inherit autotools-brokensep pkgconfig manpages distutils3-base
CLEANBROKEN = "1"
PACKAGECONFIG[manpages] = "--enable-documentation, --disable-documentation, asciidoc-native xmlto-native"
+EXTRA_OECONF = " --disable-zstd"
EXTRA_OECONF_append_libc-musl = " --disable-backtrace "
do_configure_prepend() {
@@ -36,4 +37,8 @@ do_configure_prepend() {
S = "${WORKDIR}/git"
+do_install_append() {
+ oe_runmake 'DESTDIR=${D}' 'PYTHON_SITEPACKAGES_DIR=${PYTHON_SITEPACKAGES_DIR}' install_python
+}
+
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/ccache/ccache_3.3.5.bb b/meta/recipes-devtools/ccache/ccache_3.3.5.bb
deleted file mode 100644
index 929f0f12767..00000000000
--- a/meta/recipes-devtools/ccache/ccache_3.3.5.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require ccache.inc
-
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=dae379a85bb6e9d594773e0aa64876f6"
-
-SRC_URI[md5sum] = "eee58db7cce892febddb989308dc568f"
-SRC_URI[sha256sum] = "190576a6e938760ec8113523e6fd380141117303e90766cc4802e770422b30c6"
-
-SRC_URI += " \
- file://0002-dev.mk.in-fix-file-name-too-long.patch \
- file://Revert-Create-man-page-in-the-make-install-from-git-.patch \
-"
diff --git a/meta/recipes-devtools/ccache/ccache_3.4.2.bb b/meta/recipes-devtools/ccache/ccache_3.4.2.bb
new file mode 100644
index 00000000000..72309348b2e
--- /dev/null
+++ b/meta/recipes-devtools/ccache/ccache_3.4.2.bb
@@ -0,0 +1,11 @@
+require ccache.inc
+
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://LICENSE.adoc;md5=2722abeaf1750dbf175b9491112374e1"
+
+SRC_URI[md5sum] = "9e048f88f3897125864f9a5e1abfb72d"
+SRC_URI[sha256sum] = "18a8b14367d63d3d37fb6c33cba60e1b7fcd7a63d608df97c9771ae0d234fee2"
+
+SRC_URI += " \
+ file://0002-dev.mk.in-fix-file-name-too-long.patch \
+"
diff --git a/meta/recipes-devtools/ccache/files/0002-dev.mk.in-fix-file-name-too-long.patch b/meta/recipes-devtools/ccache/files/0002-dev.mk.in-fix-file-name-too-long.patch
index 3f01c69b2a8..68c2371fb31 100644
--- a/meta/recipes-devtools/ccache/files/0002-dev.mk.in-fix-file-name-too-long.patch
+++ b/meta/recipes-devtools/ccache/files/0002-dev.mk.in-fix-file-name-too-long.patch
@@ -1,4 +1,4 @@
-From 71bd0082c6edcf73f054a8a4fa34bd8dd4de7cd7 Mon Sep 17 00:00:00 2001
+From 7dab2995ed8eeccd7b0acd79668bc28f3a2427d5 Mon Sep 17 00:00:00 2001
From: Robert Yang <liezhi.yang@windriver.com>
Date: Wed, 16 Sep 2015 19:45:40 -0700
Subject: [PATCH] dev.mk.in: fix file name too long
@@ -10,14 +10,15 @@ to fix the problem.
Upstream-Status: Pending
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+
---
- dev.mk.in | 2 +-
+ dev.mk.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: ccache-3.3.4/dev.mk.in
-===================================================================
---- ccache-3.3.4.orig/dev.mk.in
-+++ ccache-3.3.4/dev.mk.in
+diff --git a/dev.mk.in b/dev.mk.in
+index 91b0a57..583ade0 100644
+--- a/dev.mk.in
++++ b/dev.mk.in
@@ -1,7 +1,7 @@
# GNU make syntax reigns in this file.
@@ -25,5 +26,5 @@ Index: ccache-3.3.4/dev.mk.in
-all_cppflags += -MD -MP -MF .deps/$(subst .._,,$(subst /,_,$<)).d
+all_cppflags += -MD -MP -MF .deps/$(subst .._,,$(subst /,_,$(subst $(srcdir)/,,$<))).d
+ A2X = a2x
ASCIIDOC = asciidoc
- CPPCHECK = cppcheck
diff --git a/meta/recipes-devtools/ccache/files/Revert-Create-man-page-in-the-make-install-from-git-.patch b/meta/recipes-devtools/ccache/files/Revert-Create-man-page-in-the-make-install-from-git-.patch
deleted file mode 100644
index f0208b9dc23..00000000000
--- a/meta/recipes-devtools/ccache/files/Revert-Create-man-page-in-the-make-install-from-git-.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 94fabcdda5c7e54ccdbc1f0aeccb26ce30e61226 Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Mon, 18 Jul 2016 19:53:00 -0700
-Subject: [PATCH] Revert "Create man page in the make-install-from-git-repo
- case"
-
-This reverts commit b86784902d28defd5e475c8922de594787df4541.
-
-We dont' have asciidoc, so revert it.
-
-Upstream-Status: Inappropriate [OE-Core specific]
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index d474f2a..c6cdc04 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -76,7 +76,7 @@ ccache$(EXEEXT): $(ccache_objs) $(extra_libs)
- $(CC) $(all_cflags) -o $@ $(ccache_objs) $(LDFLAGS) $(extra_libs) $(LIBS)
-
- .PHONY: install
--install: all $(srcdir)/ccache.1
-+install: all
- $(installcmd) -d $(DESTDIR)$(bindir)
- $(installcmd) -m 755 ccache$(EXEEXT) $(DESTDIR)$(bindir)
- $(installcmd) -d $(DESTDIR)$(mandir)/man1
---
-2.9.0
-
diff --git a/meta/recipes-devtools/chrpath/chrpath_0.16.bb b/meta/recipes-devtools/chrpath/chrpath_0.16.bb
index b61eef9c8b1..8de88505768 100644
--- a/meta/recipes-devtools/chrpath/chrpath_0.16.bb
+++ b/meta/recipes-devtools/chrpath/chrpath_0.16.bb
@@ -7,14 +7,12 @@ BUGTRACKER = "http://alioth.debian.org/tracker/?atid=412807&group_id=31052"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
-SRC_URI = "https://alioth.debian.org/frs/download.php/file/3979/chrpath-0.16.tar.gz \
+SRC_URI = "${DEBIAN_MIRROR}/main/c/${BPN}/${BPN}_${PV}.orig.tar.gz \
file://standarddoc.patch"
SRC_URI[md5sum] = "2bf8d1d1ee345fc8a7915576f5649982"
SRC_URI[sha256sum] = "bb0d4c54bac2990e1bdf8132f2c9477ae752859d523e141e72b3b11a12c26e7b"
-UPSTREAM_CHECK_URI = "http://alioth.debian.org/frs/?group_id=31052"
-
inherit autotools
# We don't have a staged chrpath-native for ensuring our binary is
diff --git a/meta/recipes-devtools/cmake/cmake-native_3.10.3.bb b/meta/recipes-devtools/cmake/cmake-native_3.12.2.bb
index e55e8b1cf69..9a1390f96df 100644
--- a/meta/recipes-devtools/cmake/cmake-native_3.10.3.bb
+++ b/meta/recipes-devtools/cmake/cmake-native_3.12.2.bb
@@ -3,9 +3,12 @@ inherit native
DEPENDS += "bzip2-replacement-native expat-native xz-native zlib-native curl-native"
-SRC_URI += "\
- file://cmlibarchive-disable-ext2fs.patch \
-"
+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}"
@@ -33,6 +36,15 @@ do_compile() {
do_install() {
oe_runmake 'DESTDIR=${D}' install
+
+ # The following codes are here because eSDK needs to provide compatibilty
+ # for SDK. That is, eSDK could also be used like traditional SDK.
+ mkdir -p ${D}${datadir}/cmake
+ install -m 644 ${WORKDIR}/OEToolchainConfig.cmake ${D}${datadir}/cmake/
+ mkdir -p ${D}${base_prefix}/environment-setup.d
+ install -m 644 ${WORKDIR}/environment.d-cmake.sh ${D}${base_prefix}/environment-setup.d/cmake.sh
}
do_compile[progress] = "percent"
+
+SYSROOT_DIRS_NATIVE += "${datadir}/cmake ${base_prefix}/environment-setup.d"
diff --git a/meta/recipes-devtools/cmake/cmake.inc b/meta/recipes-devtools/cmake/cmake.inc
index 9357079df4e..09e28b73ddd 100644
--- a/meta/recipes-devtools/cmake/cmake.inc
+++ b/meta/recipes-devtools/cmake/cmake.inc
@@ -6,19 +6,19 @@ HOMEPAGE = "http://www.cmake.org/"
BUGTRACKER = "http://public.kitware.com/Bug/my_view_page.php"
SECTION = "console/utils"
LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://Copyright.txt;md5=79b5b78197c74d5c5f9c7ccadeee4e8c \
+LIC_FILES_CHKSUM = "file://Copyright.txt;md5=f61f5f859bc5ddba2b050eb10335e013 \
file://Source/cmake.h;md5=4494dee184212fc89c469c3acd555a14;beginline=1;endline=3 \
"
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://support-oe-qt4-tools-names.patch \
- file://qt4-fail-silent.patch \
- file://cmake-Prevent-the-detection-of-Qt5.patch \
- "
+ 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] = "1c38c67295ca696aeafd8c059d748b38"
-SRC_URI[sha256sum] = "0c3a1dcf0be03e40cf4f341dda79c96ffb6c35ae35f2f911845b72dab3559cf8"
+SRC_URI[md5sum] = "6e7c550cfa1c2e216b35903dc70d80af"
+SRC_URI[sha256sum] = "0f97485799e51a7070cc11494f3e02349b0fc3a24cc12b082e737bf67a0581a4"
UPSTREAM_CHECK_REGEX = "cmake-(?P<pver>\d+(\.\d+)+)\.tar"
diff --git a/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch b/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch
new file mode 100644
index 00000000000..f6907208702
--- /dev/null
+++ b/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch
@@ -0,0 +1,47 @@
+From 71085723f8028b3e1c4029fc1abe1243ac49ffc6 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 1/5] CMakeDetermineSystem: use oe environment vars to load
+ default toolchain file in sdk
+Organization: O.S. Systems Software LTDA.
+
+Passing the toolchain by:
+
+ - shell aliases does not work if cmake is called by a script
+ - unconditionally by a wrapper script causes cmake to believe it is
+ configuring things when it is not (for example, `cmake --build` breaks).
+
+The OE_CMAKE_TOOLCHAIN_FILE variable is only used as a default if no
+toolchain is explicitly specified.
+
+Setting the CMAKE_TOOLCHAIN_FILE cmake variable is marked as cached
+because '-D' options are cache entries themselves.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Cody P Schafer <dev@codyps.com>
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ Modules/CMakeDetermineSystem.cmake | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/Modules/CMakeDetermineSystem.cmake b/Modules/CMakeDetermineSystem.cmake
+index 600d5580e..32d7f1945 100644
+--- a/Modules/CMakeDetermineSystem.cmake
++++ b/Modules/CMakeDetermineSystem.cmake
+@@ -82,6 +82,13 @@ else()
+ endif()
+ endif()
+
++if(NOT DEFINED CMAKE_TOOLCHAIN_FILE)
++ if(DEFINED ENV{OE_CMAKE_TOOLCHAIN_FILE})
++ set(CMAKE_TOOLCHAIN_FILE "$ENV{OE_CMAKE_TOOLCHAIN_FILE}" CACHE FILEPATH "toolchain file")
++ message(STATUS "Toolchain file defaulted to '${CMAKE_TOOLCHAIN_FILE}'")
++ endif()
++endif()
++
+ # if a toolchain file is used, the user wants to cross compile.
+ # in this case read the toolchain file and keep the CMAKE_HOST_SYSTEM_*
+ # variables around so they can be used in CMakeLists.txt.
+--
+2.18.0
+
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
new file mode 100644
index 00000000000..6f788ada00b
--- /dev/null
+++ b/meta/recipes-devtools/cmake/cmake/0002-cmake-Prevent-the-detection-of-Qt5.patch
@@ -0,0 +1,122 @@
+From 7a1f4e724f9c68498f401244c2938e784a2e6fbd 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 2/5] 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/AutogenTest.cmake | 2 +-
+ Tests/QtAutogen/MacOsFW/CMakeLists.txt | 2 +-
+ Tests/RunCMake/CMakeLists.txt | 2 +-
+ Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake | 2 +-
+ 7 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/Source/QtDialog/CMakeLists.txt b/Source/QtDialog/CMakeLists.txt
+index 330b74729..e7709dee6 100644
+--- a/Source/QtDialog/CMakeLists.txt
++++ b/Source/QtDialog/CMakeLists.txt
+@@ -6,7 +6,7 @@ if(POLICY CMP0020)
+ cmake_policy(SET CMP0020 NEW) # Drop when CMake >= 2.8.11 required
+ endif()
+ 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 b8b724ed8..63f6bb6d2 100644
+--- a/Tests/CMakeLists.txt
++++ b/Tests/CMakeLists.txt
+@@ -1322,7 +1322,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
+ 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 ad74961d9..a9dd74b15 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/AutogenTest.cmake b/Tests/QtAutogen/AutogenTest.cmake
+index 8c0a14fca..e9923b21a 100644
+--- a/Tests/QtAutogen/AutogenTest.cmake
++++ b/Tests/QtAutogen/AutogenTest.cmake
+@@ -22,7 +22,7 @@ if (QT_TEST_VERSION STREQUAL 4)
+ endmacro()
+
+ elseif(QT_TEST_VERSION STREQUAL 5)
+- find_package(Qt5Widgets REQUIRED)
++ #find_package(Qt5Widgets REQUIRED)
+
+ set(QT_QTCORE_TARGET Qt5::Core)
+ set(QT_QTGUI_TARGET Qt5::Widgets)
+diff --git a/Tests/QtAutogen/MacOsFW/CMakeLists.txt b/Tests/QtAutogen/MacOsFW/CMakeLists.txt
+index 26d201926..e48e1c8de 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("../AutogenTest.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 637c5c2cb..c0376effc 100644
+--- a/Tests/RunCMake/CMakeLists.txt
++++ b/Tests/RunCMake/CMakeLists.txt
+@@ -291,7 +291,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 4fccdc418..b76e1e531 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)
+--
+2.18.0
+
diff --git a/meta/recipes-devtools/cmake/cmake/support-oe-qt4-tools-names.patch b/meta/recipes-devtools/cmake/cmake/0003-cmake-support-OpenEmbedded-Qt4-tool-binary-names.patch
index 68415547639..55cf47188ad 100644
--- a/meta/recipes-devtools/cmake/cmake/support-oe-qt4-tools-names.patch
+++ b/meta/recipes-devtools/cmake/cmake/0003-cmake-support-OpenEmbedded-Qt4-tool-binary-names.patch
@@ -1,7 +1,8 @@
-From 10b8b523869124d2fc8cd98d9e028c0bcffd61b1 Mon Sep 17 00:00:00 2001
+From c783ceeef485c23e13c3d9f0418719cb0e0b86ee 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 1/2] cmake: support OpenEmbedded Qt4 tool binary names
+Subject: [PATCH 3/5] cmake: support OpenEmbedded Qt4 tool binary names
+Organization: O.S. Systems Software LTDA.
The FindQt4 module looks for Qt4 binaries to be able to gather the
paths used for compilation and also to be using during other processes
@@ -18,16 +19,16 @@ The patch was slightly adapted in order to match cmake 3.2.2:
Instead of find_program, _find_qt4_program is now used.
Signed-off-by: Moritz Blume <moritz.blume@bmw-carit.de>
-
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---
Modules/FindQt4.cmake | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/Modules/FindQt4.cmake b/Modules/FindQt4.cmake
-index c67d0be..0cf169b 100644
+index 847a798af..7ad981879 100644
--- a/Modules/FindQt4.cmake
+++ b/Modules/FindQt4.cmake
-@@ -516,7 +516,7 @@ endfunction()
+@@ -517,7 +517,7 @@ endfunction()
set(QT4_INSTALLED_VERSION_TOO_OLD FALSE)
@@ -36,7 +37,7 @@ index c67d0be..0cf169b 100644
_qt4_find_qmake("${_QT4_QMAKE_NAMES}" QT_QMAKE_EXECUTABLE QTVERSION)
if (QT_QMAKE_EXECUTABLE AND
-@@ -1142,12 +1142,12 @@ if (QT_QMAKE_EXECUTABLE AND
+@@ -1135,12 +1135,12 @@ if (QT_QMAKE_EXECUTABLE AND
_find_qt4_program(QT_MOC_EXECUTABLE Qt4::moc moc-qt4 moc4 moc)
_find_qt4_program(QT_UIC_EXECUTABLE Qt4::uic uic-qt4 uic4 uic)
_find_qt4_program(QT_UIC3_EXECUTABLE Qt4::uic3 uic3)
@@ -54,5 +55,5 @@ index c67d0be..0cf169b 100644
_find_qt4_program(QT_LINGUIST_EXECUTABLE Qt4::linguist linguist-qt4 linguist4 linguist)
--
-2.7.4
+2.18.0
diff --git a/meta/recipes-devtools/cmake/cmake/qt4-fail-silent.patch b/meta/recipes-devtools/cmake/cmake/0004-Fail-silently-if-system-Qt-installation-is-broken.patch
index 80fc277fa26..a59c680454e 100644
--- a/meta/recipes-devtools/cmake/cmake/qt4-fail-silent.patch
+++ b/meta/recipes-devtools/cmake/cmake/0004-Fail-silently-if-system-Qt-installation-is-broken.patch
@@ -1,4 +1,8 @@
-Fail silently if system Qt installation is broken
+From 9516fc4260f701c6d9db0c341bb36480362e1747 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 4/5] Fail silently if system Qt installation is broken
+Organization: O.S. Systems Software LTDA.
Fixes a regression in behaviour from 2.8.10 to 2.8.11 resulting in the
following error if the system Qt installation is broken:
@@ -18,15 +22,16 @@ Another set_property was introduced which had to be included
within the if(QT_QTCORE_FOUND) statement.
Signed-off-by: Moritz Blume <moritz.blume@bmw-carit.de>
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---
Modules/FindQt4.cmake | 39 ++++++++++++++++++++-------------------
1 file changed, 20 insertions(+), 19 deletions(-)
diff --git a/Modules/FindQt4.cmake b/Modules/FindQt4.cmake
-index 6704769..9048e35 100644
+index 7ad981879..8b6f43cda 100644
--- a/Modules/FindQt4.cmake
+++ b/Modules/FindQt4.cmake
-@@ -1000,25 +1000,26 @@ if (QT_QMAKE_EXECUTABLE AND
+@@ -987,25 +987,26 @@ if (QT_QMAKE_EXECUTABLE AND
endif()
endmacro()
@@ -73,5 +78,5 @@ index 6704769..9048e35 100644
foreach(QT_MODULE ${QT_MODULES})
_QT4_ADJUST_LIB_VARS(${QT_MODULE})
--
-1.9.1
+2.18.0
diff --git a/meta/recipes-devtools/cmake/cmake/cmlibarchive-disable-ext2fs.patch b/meta/recipes-devtools/cmake/cmake/0005-Disable-use-of-ext2fs-ext2_fs.h-by-cmake-s-internal-.patch
index bf3671259e5..23ce8e9e4a8 100644
--- a/meta/recipes-devtools/cmake/cmake/cmlibarchive-disable-ext2fs.patch
+++ b/meta/recipes-devtools/cmake/cmake/0005-Disable-use-of-ext2fs-ext2_fs.h-by-cmake-s-internal-.patch
@@ -1,4 +1,9 @@
-Disable use of ext2fs/ext2_fs.h by cmake's internal libarchive copy
+From 0df8d46d14c371f21c327966a553c4c187a8acfe 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
+ libarchive copy
+Organization: O.S. Systems Software LTDA.
We don't want to add a dependency on e2fsprogs-native for cmake-native,
and we don't use CPack so just disable this functionality.
@@ -6,10 +11,16 @@ and we don't use CPack so just disable this functionality.
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
--- a/Utilities/cmlibarchive/CMakeLists.txt
+++ b/Utilities/cmlibarchive/CMakeLists.txt
-@@ -237,12 +237,8 @@ LA_CHECK_INCLUDE_FILE("copyfile.h" HAVE_COPYFILE_H)
+@@ -400,12 +400,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)
@@ -24,3 +35,6 @@ Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
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
+
diff --git a/meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake b/meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake
index dc8477ea345..8a0fb4cb12e 100644
--- a/meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake
+++ b/meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake
@@ -3,6 +3,7 @@ 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} $ENV{OECORE_NATIVE_SYSROOT} )
set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
@@ -10,6 +11,8 @@ set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )
set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY )
+set(CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX "$ENV{OE_CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX}")
+
# Set CMAKE_SYSTEM_PROCESSOR from the sysroot name (assuming processor-distro-os).
if ($ENV{SDKTARGETSYSROOT} MATCHES "/sysroots/([a-zA-Z0-9_-]+)-.+-.+")
set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_MATCH_1})
diff --git a/meta/recipes-devtools/cmake/cmake/cmake-Prevent-the-detection-of-Qt5.patch b/meta/recipes-devtools/cmake/cmake/cmake-Prevent-the-detection-of-Qt5.patch
deleted file mode 100644
index 88b7e947418..00000000000
--- a/meta/recipes-devtools/cmake/cmake/cmake-Prevent-the-detection-of-Qt5.patch
+++ /dev/null
@@ -1,215 +0,0 @@
-From 875c11dbf87d1258ad7d3697a40d605d503e5673 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/QtAutoUicInterface/CMakeLists.txt | 2 +-
- Tests/QtAutogen/CMakeLists.txt | 2 +-
- Tests/QtAutogen/macosFW/CMakeLists.txt | 2 +-
- Tests/QtAutogen/mocDepends/CMakeLists.txt | 2 +-
- Tests/QtAutogenRerun/CMakeLists.txt | 4 ++--
- Tests/QtAutogenRerun/mocPlugin/CMakeLists.txt | 2 +-
- Tests/QtAutogenRerun/mocRerun/CMakeLists.txt | 2 +-
- Tests/QtAutogenRerun/rccDepends/CMakeLists.txt | 2 +-
- Tests/RunCMake/CMakeLists.txt | 2 +-
- Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake | 2 +-
- 13 files changed, 15 insertions(+), 15 deletions(-)
-
-diff --git a/Source/QtDialog/CMakeLists.txt b/Source/QtDialog/CMakeLists.txt
-index b38797bca..b5fbfc5fa 100644
---- a/Source/QtDialog/CMakeLists.txt
-+++ b/Source/QtDialog/CMakeLists.txt
-@@ -6,7 +6,7 @@ if(POLICY CMP0020)
- cmake_policy(SET CMP0020 NEW) # Drop when CMake >= 2.8.11 required
- endif()
- 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 533788a44..32ef03c55 100644
---- a/Tests/CMakeLists.txt
-+++ b/Tests/CMakeLists.txt
-@@ -1260,7 +1260,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
- 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_test(NAME Qt5Autogen COMMAND ${CMAKE_CTEST_COMMAND}
-diff --git a/Tests/Qt4And5Automoc/CMakeLists.txt b/Tests/Qt4And5Automoc/CMakeLists.txt
-index ad74961d9..a9dd74b15 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/QtAutoUicInterface/CMakeLists.txt b/Tests/QtAutoUicInterface/CMakeLists.txt
-index a5c2d99b2..2d640e4a3 100644
---- a/Tests/QtAutoUicInterface/CMakeLists.txt
-+++ b/Tests/QtAutoUicInterface/CMakeLists.txt
-@@ -14,7 +14,7 @@ else()
- if (NOT QT_TEST_VERSION STREQUAL 5)
- message(SEND_ERROR "Invalid Qt version specified.")
- endif()
-- find_package(Qt5Widgets REQUIRED)
-+ #find_package(Qt5Widgets REQUIRED)
-
- set(QT_CORE_TARGET Qt5::Core)
- set(QT_GUI_TARGET Qt5::Widgets)
-diff --git a/Tests/QtAutogen/CMakeLists.txt b/Tests/QtAutogen/CMakeLists.txt
-index dff9d0c66..c6e8fc3f5 100644
---- a/Tests/QtAutogen/CMakeLists.txt
-+++ b/Tests/QtAutogen/CMakeLists.txt
-@@ -23,7 +23,7 @@ else()
- if (NOT QT_TEST_VERSION STREQUAL 5)
- message(SEND_ERROR "Invalid Qt version specified.")
- endif()
-- find_package(Qt5Widgets REQUIRED)
-+ #find_package(Qt5Widgets REQUIRED)
-
- set(QT_QTCORE_TARGET Qt5::Core)
-
-diff --git a/Tests/QtAutogen/macosFW/CMakeLists.txt b/Tests/QtAutogen/macosFW/CMakeLists.txt
-index 114d9bac0..157fe0aaa 100644
---- a/Tests/QtAutogen/macosFW/CMakeLists.txt
-+++ b/Tests/QtAutogen/macosFW/CMakeLists.txt
-@@ -1,7 +1,7 @@
- cmake_minimum_required(VERSION 3.8)
- project(macos-fw-test)
-
--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/QtAutogen/mocDepends/CMakeLists.txt b/Tests/QtAutogen/mocDepends/CMakeLists.txt
-index 8217b8dbf..86bb7bc7f 100644
---- a/Tests/QtAutogen/mocDepends/CMakeLists.txt
-+++ b/Tests/QtAutogen/mocDepends/CMakeLists.txt
-@@ -10,7 +10,7 @@ else()
- message(SEND_ERROR "Invalid Qt version specified.")
- endif()
-
-- find_package(Qt5Core REQUIRED)
-+ #find_package(Qt5Core REQUIRED)
- set(QT_CORE_TARGET Qt5::Core)
- endif()
-
-diff --git a/Tests/QtAutogenRerun/CMakeLists.txt b/Tests/QtAutogenRerun/CMakeLists.txt
-index e72c1912e..d7e6884ce 100644
---- a/Tests/QtAutogenRerun/CMakeLists.txt
-+++ b/Tests/QtAutogenRerun/CMakeLists.txt
-@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.9)
- cmake_policy(SET CMP0071 NEW)
- project(QtAutogenRerun)
-
--# Tell find_package(Qt5) where to find Qt.
-+# Tell #find_package(Qt5) where to find Qt.
- if(QT_QMAKE_EXECUTABLE)
- get_filename_component(Qt_BIN_DIR "${QT_QMAKE_EXECUTABLE}" PATH)
- get_filename_component(Qt_PREFIX_DIR "${Qt_BIN_DIR}" PATH)
-@@ -23,7 +23,7 @@ else()
- if (NOT QT_TEST_VERSION STREQUAL 5)
- message(SEND_ERROR "Invalid Qt version specified.")
- endif()
-- find_package(Qt5Widgets REQUIRED)
-+ #find_package(Qt5Widgets REQUIRED)
-
- set(QT_QTCORE_TARGET Qt5::Core)
-
-diff --git a/Tests/QtAutogenRerun/mocPlugin/CMakeLists.txt b/Tests/QtAutogenRerun/mocPlugin/CMakeLists.txt
-index b7cc5e9ff..e1d109953 100644
---- a/Tests/QtAutogenRerun/mocPlugin/CMakeLists.txt
-+++ b/Tests/QtAutogenRerun/mocPlugin/CMakeLists.txt
-@@ -9,7 +9,7 @@ set(CMAKE_AUTOMOC_DEPEND_FILTERS
- if (NOT QT_TEST_VERSION STREQUAL 5)
- message(SEND_ERROR "Invalid Qt version specified.")
- endif()
--find_package(Qt5Widgets REQUIRED)
-+#find_package(Qt5Widgets REQUIRED)
-
- if(Qt5_POSITION_INDEPENDENT_CODE AND CMAKE_CXX_COMPILE_OPTIONS_PIC)
- add_definitions(${CMAKE_CXX_COMPILE_OPTIONS_PIC})
-diff --git a/Tests/QtAutogenRerun/mocRerun/CMakeLists.txt b/Tests/QtAutogenRerun/mocRerun/CMakeLists.txt
-index bafd9cf48..43ec933d2 100644
---- a/Tests/QtAutogenRerun/mocRerun/CMakeLists.txt
-+++ b/Tests/QtAutogenRerun/mocRerun/CMakeLists.txt
-@@ -10,7 +10,7 @@ else()
- message(SEND_ERROR "Invalid Qt version specified.")
- endif()
-
-- find_package(Qt5Core REQUIRED)
-+ #find_package(Qt5Core REQUIRED)
- set(QT_CORE_TARGET Qt5::Core)
- endif()
-
-diff --git a/Tests/QtAutogenRerun/rccDepends/CMakeLists.txt b/Tests/QtAutogenRerun/rccDepends/CMakeLists.txt
-index 291592e7d..40cd52868 100644
---- a/Tests/QtAutogenRerun/rccDepends/CMakeLists.txt
-+++ b/Tests/QtAutogenRerun/rccDepends/CMakeLists.txt
-@@ -9,7 +9,7 @@ else()
- message(SEND_ERROR "Invalid Qt version specified.")
- endif()
-
-- find_package(Qt5Core REQUIRED)
-+ #find_package(Qt5Core REQUIRED)
- set(QT_CORE_TARGET Qt5::Core)
- endif()
-
-diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
-index 29325ff0a..d30d01e78 100644
---- a/Tests/RunCMake/CMakeLists.txt
-+++ b/Tests/RunCMake/CMakeLists.txt
-@@ -274,7 +274,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 4fccdc418..b76e1e531 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)
---
-2.15.1
-
diff --git a/meta/recipes-devtools/cmake/cmake/environment.d-cmake.sh b/meta/recipes-devtools/cmake/cmake/environment.d-cmake.sh
index 0eb56b66fa1..7bdb19fb6ce 100644
--- a/meta/recipes-devtools/cmake/cmake/environment.d-cmake.sh
+++ b/meta/recipes-devtools/cmake/cmake/environment.d-cmake.sh
@@ -1 +1,2 @@
-alias cmake="cmake -DCMAKE_TOOLCHAIN_FILE=$OECORE_NATIVE_SYSROOT/usr/share/cmake/OEToolchainConfig.cmake"
+export OE_CMAKE_TOOLCHAIN_FILE="$OECORE_NATIVE_SYSROOT/usr/share/cmake/OEToolchainConfig.cmake"
+export OE_CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX="`echo $OECORE_BASELIB | sed -e s/lib//`"
diff --git a/meta/recipes-devtools/cmake/cmake_3.10.3.bb b/meta/recipes-devtools/cmake/cmake_3.12.2.bb
index 3f8fd7a9975..e0457677e86 100644
--- a/meta/recipes-devtools/cmake/cmake_3.10.3.bb
+++ b/meta/recipes-devtools/cmake/cmake_3.12.2.bb
@@ -6,7 +6,9 @@ DEPENDS += "curl expat zlib libarchive xz ncurses bzip2"
SRC_URI_append_class-nativesdk = " \
file://OEToolchainConfig.cmake \
- file://environment.d-cmake.sh"
+ 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 () {
@@ -44,7 +46,8 @@ do_install_append_class-nativesdk() {
FILES_${PN}_append_class-nativesdk = " ${SDKPATHNATIVE}"
-FILES_${PN} += "${datadir}/cmake-${CMAKE_MAJOR_VERSION}"
+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/createrepo-c/createrepo-c_git.bb b/meta/recipes-devtools/createrepo-c/createrepo-c_git.bb
index 31761368b72..2960811048e 100644
--- a/meta/recipes-devtools/createrepo-c/createrepo-c_git.bb
+++ b/meta/recipes-devtools/createrepo-c/createrepo-c_git.bb
@@ -9,8 +9,8 @@ SRC_URI = "git://github.com/rpm-software-management/createrepo_c \
file://0001-Correctly-install-the-shared-library.patch \
"
-PV = "0.10.0+git${SRCPV}"
-SRCREV = "748891ff8ee524c2d37926c608cd2794f88013f3"
+PV = "0.11.1+git${SRCPV}"
+SRCREV = "434a40babdde57ab405e9a1085a30e9575ea0c92"
S = "${WORKDIR}/git"
@@ -21,7 +21,7 @@ inherit cmake pkgconfig bash-completion distutils3-base
EXTRA_OECMAKE = " -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DPYTHON_DESIRED=3"
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
# Direct createrepo to read rpm configuration from our sysroot, not the one it was compiled in
do_install_append_class-native() {
@@ -29,3 +29,8 @@ do_install_append_class-native() {
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/desktop-file-utils/desktop-file-utils-native_0.23.bb b/meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.23.bb
index 54daabef56c..6446f47189d 100644
--- a/meta/recipes-devtools/desktop-file-utils/desktop-file-utils-native_0.23.bb
+++ b/meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.23.bb
@@ -1,18 +1,19 @@
SECTION = "console/utils"
SUMMARY = "Command line utilities for working with *.desktop files"
HOMEPAGE = "http://www.freedesktop.org/wiki/Software/desktop-file-utils"
-LICENSE = "GPLv2"
+LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-DEPENDS = "glib-2.0-native"
-
-SRC_URI = "http://freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-${PV}.tar.xz"
+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] = "599133d51cc9a41bfec186414906b6f1"
SRC_URI[sha256sum] = "6c094031bdec46c9f621708f919084e1cb5294e2c5b1e4c883b3e70cb8903385"
-inherit autotools native
+DEPENDS = "glib-2.0"
-S = "${WORKDIR}/desktop-file-utils-${PV}"
+inherit autotools pkgconfig
EXTRA_OECONF += "ac_cv_prog_EMACS=no"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/diffstat/diffstat/avoid-check-user-break-cc.patch b/meta/recipes-devtools/diffstat/diffstat/avoid-check-user-break-cc.patch
new file mode 100644
index 00000000000..811faa48daa
--- /dev/null
+++ b/meta/recipes-devtools/diffstat/diffstat/avoid-check-user-break-cc.patch
@@ -0,0 +1,32 @@
+From 1046593aacb74ff888a0d68c0ff89b20c4bc9ed4 Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Tue, 15 May 2018 17:17:01 +0800
+Subject: [PATCH] diffstat: fix wrong evaluation of CC
+
+Upstream-Status: Inappropriate [oe specific]
+
+m4 function CF_CC_ENV_FLAGS checks whether variable CC contains options '-I', '-U'
+and '-D'. It is not suitable for oe that option such as '-D_FORTIFY_SOURCE=2' may
+be included in CC. And then CC will be wrongly filtered.
+
+So comment out CF_CC_ENV_FLAGS from function CF_PROG_CC.
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+---
+ aclocal.m4 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/aclocal.m4 b/aclocal.m4
+index 9281aa8..dd57b7a 100644
+--- a/aclocal.m4
++++ b/aclocal.m4
+@@ -1239,7 +1239,7 @@ CF_GCC_VERSION
+ CF_ACVERSION_CHECK(2.52,
+ [AC_PROG_CC_STDC],
+ [CF_ANSI_CC_REQD])
+-CF_CC_ENV_FLAGS
++dnl CF_CC_ENV_FLAGS
+ ])dnl
+ dnl ---------------------------------------------------------------------------
+ dnl CF_PROG_GROFF version: 3 updated: 2018/01/07 13:16:19
diff --git a/meta/recipes-devtools/diffstat/diffstat_1.61.bb b/meta/recipes-devtools/diffstat/diffstat_1.62.bb
index f8b7b06cf24..93d77797c95 100644
--- a/meta/recipes-devtools/diffstat/diffstat_1.61.bb
+++ b/meta/recipes-devtools/diffstat/diffstat_1.62.bb
@@ -9,10 +9,11 @@ LIC_FILES_CHKSUM = "file://install-sh;endline=42;md5=b3549726c1022bee09c174c72a0
SRC_URI = "http://invisible-mirror.net/archives/${BPN}/${BP}.tgz \
file://run-ptest \
+ file://avoid-check-user-break-cc.patch \
"
-SRC_URI[md5sum] = "c048a32d55d8bd6724f382baf41f325f"
-SRC_URI[sha256sum] = "25359e0c27183f997b36c9202583b5dc2df390c20e22a92606af4bf7856a55ee"
+SRC_URI[md5sum] = "91e106bb34cb097750db7ddc0ba1d8fc"
+SRC_URI[sha256sum] = "7f09183644ed77a156b15346bbad4e89c93543e140add9dab18747e30522591f"
S = "${WORKDIR}/diffstat-${PV}"
diff --git a/meta/recipes-devtools/distcc/distcc_3.2.bb b/meta/recipes-devtools/distcc/distcc_3.3.2.bb
index ff0e22f9b4d..0d069631653 100644
--- a/meta/recipes-devtools/distcc/distcc_3.2.bb
+++ b/meta/recipes-devtools/distcc/distcc_3.3.2.bb
@@ -14,18 +14,19 @@ PACKAGECONFIG[popt] = "--without-included-popt,--with-included-popt,popt"
RRECOMMENDS_${PN} = "avahi-daemon"
-SRC_URI = "git://github.com/akuster/distcc.git;branch=${PV} \
+SRC_URI = "git://github.com/distcc/distcc.git \
file://separatebuilddir.patch \
- file://0001-zeroconf-Include-fcntl.h.patch \
file://default \
file://distccmon-gnome.desktop \
file://distcc \
file://distcc.service"
-SRCREV = "d8b18df3e9dcbe4f092bed565835d3975e99432c"
+SRCREV = "8600f0857dac55ea393dc11a860948692d215fc8"
S = "${WORKDIR}/git"
inherit autotools pkgconfig update-rc.d useradd systemd
+ASNEEDED = ""
+
EXTRA_OECONF += "--disable-Werror PYTHON='' --disable-pump-mode"
USERADD_PACKAGES = "${PN}"
@@ -40,7 +41,9 @@ INITSCRIPT_NAME = "distcc"
SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE_${PN} = "distcc.service"
-do_install_append() {
+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/
@@ -59,9 +62,10 @@ PACKAGES += "distcc-distmon-gnome"
FILES_${PN} = " ${sysconfdir} \
${bindir}/distcc \
- ${bindir}/lsdistcc \
+ ${bindir}/lsdistcc \
${bindir}/distccd \
${bindir}/distccmon-text \
+ ${sbindir}/update-distcc-symlinks \
${systemd_unitdir}/system/distcc.service"
FILES_distcc-distmon-gnome = " ${bindir}/distccmon-gnome \
${datadir}/distcc"
diff --git a/meta/recipes-devtools/distcc/files/0001-zeroconf-Include-fcntl.h.patch b/meta/recipes-devtools/distcc/files/0001-zeroconf-Include-fcntl.h.patch
deleted file mode 100644
index b17ec9c9599..00000000000
--- a/meta/recipes-devtools/distcc/files/0001-zeroconf-Include-fcntl.h.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 8331fc4759d809512f404e7a27f817ad6d616450 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 13 Apr 2015 18:00:33 -0700
-Subject: [PATCH] zeroconf: Include fcntl.h
-
-We need it for getting deinitions for O_* e.g. O_CREAT
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/zeroconf.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/zeroconf.c b/src/zeroconf.c
-index 414ddc4..31bd33f 100644
---- a/src/zeroconf.c
-+++ b/src/zeroconf.c
-@@ -33,6 +33,7 @@
- #include <unistd.h>
- #include <stdlib.h>
- #include <limits.h>
-+#include <fcntl.h>
-
- #include <avahi-common/domain.h>
- #include <avahi-common/error.h>
---
-2.1.4
-
diff --git a/meta/recipes-devtools/distcc/files/default b/meta/recipes-devtools/distcc/files/default
index 63c4159b9d1..e5ca68b8561 100644
--- a/meta/recipes-devtools/distcc/files/default
+++ b/meta/recipes-devtools/distcc/files/default
@@ -16,9 +16,9 @@ STARTDISTCC="true"
#
# ALLOWEDNETS="127.0.0.1"
-ALLOWEDNETS="192.168.7.0/24"
+ALLOWEDNETS="127.0.0.1"
#
# OPTIONS is used for the systemd service file
#
-OPTIONS="--allow 192.168.7.0/24"
+OPTIONS="--allow 127.0.0.1 --make-me-a-botnet"
diff --git a/meta/recipes-devtools/dmidecode/dmidecode_3.1.bb b/meta/recipes-devtools/dmidecode/dmidecode_3.1.bb
index f83281e2359..b423fda6d24 100644
--- a/meta/recipes-devtools/dmidecode/dmidecode_3.1.bb
+++ b/meta/recipes-devtools/dmidecode/dmidecode_3.1.bb
@@ -9,6 +9,10 @@ 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
}
diff --git a/meta/recipes-devtools/dnf/dnf_2.7.5.bb b/meta/recipes-devtools/dnf/dnf_2.7.5.bb
index b88ddb445a7..df60d731b69 100644
--- a/meta/recipes-devtools/dnf/dnf_2.7.5.bb
+++ b/meta/recipes-devtools/dnf/dnf_2.7.5.bb
@@ -72,3 +72,4 @@ SYSTEMD_SERVICE_${PN} = "dnf-makecache.service dnf-makecache.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/dwarfsrcfiles/dwarfsrcfiles.bb b/meta/recipes-devtools/dwarfsrcfiles/dwarfsrcfiles.bb
index c59a006edae..2c843a9342b 100644
--- a/meta/recipes-devtools/dwarfsrcfiles/dwarfsrcfiles.bb
+++ b/meta/recipes-devtools/dwarfsrcfiles/dwarfsrcfiles.bb
@@ -1,4 +1,4 @@
-SUMMARY = "A small utility for printing debig source file locations embedded in binaries"
+SUMMARY = "A small utility for printing debug source file locations embedded in binaries"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://../dwarfsrcfiles.c;md5=31483894e453a77acbb67847565f1b5c;beginline=1;endline=8"
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc b/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc
index 81d90a134c5..a54a11c3546 100644
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc
+++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc
@@ -9,7 +9,7 @@ LICENSE_e2fsprogs-mke2fs = "GPLv2"
LICENSE_e2fsprogs-fsck = "GPLv2"
LICENSE_e2fsprogs-tune2fs = "GPLv2"
LICENSE_e2fsprogs-badblocks = "GPLv2"
-LIC_FILES_CHKSUM = "file://NOTICE;md5=b48f21d765b875bd10400975d12c1ca2 \
+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 \
file://lib/uuid/uuid.h.in;beginline=1;endline=32;md5=dbb8079e114a5f841934b99e59c8820a \
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-libext2fs-fix-build-failure-in-swapfs.c-on-big-endia.patch b/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-libext2fs-fix-build-failure-in-swapfs.c-on-big-endia.patch
deleted file mode 100644
index ff1284edc46..00000000000
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-libext2fs-fix-build-failure-in-swapfs.c-on-big-endia.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From ae6603206176b771c9ed1f82569f68fc1257f014 Mon Sep 17 00:00:00 2001
-From: Theodore Ts'o <tytso@mit.edu>
-Date: Wed, 3 Jan 2018 01:32:02 -0500
-Subject: [PATCH] libext2fs: fix build failure in swapfs.c on big-endian
- systems
-
-Addresses-Debian-Bug: #886119
-
-Reported-by: James Clarke <jrtc27@debian.org>
-Signed-off-by: Theodore Ts'o <tytso@mit.edu>
----
-Upstream-Status: Backport
-
- lib/ext2fs/swapfs.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/lib/ext2fs/swapfs.c b/lib/ext2fs/swapfs.c
-index 6e5cff97..b13dc422 100644
---- a/lib/ext2fs/swapfs.c
-+++ b/lib/ext2fs/swapfs.c
-@@ -19,6 +19,7 @@
-
- #include "ext2_fs.h"
- #include "ext2fs.h"
-+#include "ext2fsP.h"
- #include <ext2fs/ext2_ext_attr.h>
-
- #ifdef WORDS_BIGENDIAN
-@@ -358,7 +359,7 @@ void ext2fs_swap_inode_full(ext2_filsys fs, struct ext2_inode_large *t,
- if (inode_includes(inode_size, i_projid))
- t->i_projid = ext2fs_swab16(f->i_projid);
- /* catch new static fields added after i_projid */
-- EXT2FS_BUILD_BUG_ON(sizeof(ext2_inode_large) != 160);
-+ EXT2FS_BUILD_BUG_ON(sizeof(struct ext2_inode_large) != 160);
-
- i = sizeof(struct ext2_inode) + extra_isize + sizeof(__u32);
- if (bufsize < (int) i)
---
-2.16.1
-
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs/Revert-mke2fs-enable-the-metadata_csum-and-64bit-fea.patch b/meta/recipes-devtools/e2fsprogs/e2fsprogs/Revert-mke2fs-enable-the-metadata_csum-and-64bit-fea.patch
index 38e1bdb3d86..d7e09b6be9e 100644
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs/Revert-mke2fs-enable-the-metadata_csum-and-64bit-fea.patch
+++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs/Revert-mke2fs-enable-the-metadata_csum-and-64bit-fea.patch
@@ -19,16 +19,16 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
misc/mke2fs.conf.in | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-Index: git/misc/mke2fs.conf.in
-===================================================================
---- git.orig/misc/mke2fs.conf.in
-+++ git/misc/mke2fs.conf.in
+diff --git a/misc/mke2fs.conf.in b/misc/mke2fs.conf.in
+index 01e35cf..25105b3 100644
+--- a/misc/mke2fs.conf.in
++++ b/misc/mke2fs.conf.in
@@ -11,8 +11,9 @@
features = has_journal
}
ext4 = {
-- features = has_journal,extent,huge_file,flex_bg,uninit_bg,64bit,dir_nlink,extra_isize
-+ features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize
+- features = has_journal,extent,huge_file,flex_bg,metadata_csum,64bit,dir_nlink,extra_isize
++ features = has_journal,extent,huge_file,flex_bg,metadata_csum,dir_nlink,extra_isize
inode_size = 256
+ auto_64-bit_support = 1
}
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs/ptest.patch b/meta/recipes-devtools/e2fsprogs/e2fsprogs/ptest.patch
index 7c4bb39fd71..64a791dfab5 100644
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs/ptest.patch
+++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs/ptest.patch
@@ -1,10 +1,10 @@
Upstream-Status: Inappropriate
-Index: git/tests/Makefile.in
-===================================================================
---- git.orig/tests/Makefile.in
-+++ git/tests/Makefile.in
-@@ -18,7 +18,7 @@ test_one: $(srcdir)/test_one.in Makefile
+diff --git a/tests/Makefile.in b/tests/Makefile.in
+index 8c4d204..e021af3 100644
+--- a/tests/Makefile.in
++++ b/tests/Makefile.in
+@@ -19,7 +19,7 @@ test_one: $(srcdir)/test_one.in Makefile mke2fs.conf
@echo "#!/bin/sh" > test_one
@echo "HTREE=y" >> test_one
@echo "QUOTA=y" >> test_one
@@ -13,20 +13,20 @@ Index: git/tests/Makefile.in
@echo "DIFF_OPTS=@UNI_DIFF_OPTS@" >> test_one
@echo "SIZEOF_TIME_T=@SIZEOF_TIME_T@" >> test_one
@echo "DD=@DD@" >>test_one
-@@ -28,7 +28,7 @@ test_one: $(srcdir)/test_one.in Makefile
- test_script: test_one test_script.in Makefile mke2fs.conf
+@@ -30,7 +30,7 @@ test_script: test_one test_script.in Makefile mke2fs.conf
@echo "Creating test_script..."
+ @[ -f test_script ] && chmod u+w test_script || true
@echo "#!/bin/sh" > test_script
- @echo "SRCDIR=@srcdir@" >> test_script
+ @echo "SRCDIR=${prefix}${libdir}/e2fsprogs/ptest/test" >> test_script
@cat $(srcdir)/test_script.in >> test_script
- @chmod +x test_script
+ @chmod +x-w test_script
-Index: git/tests/test_config
-===================================================================
---- git.orig/tests/test_config
-+++ git/tests/test_config
-@@ -3,24 +3,24 @@
+diff --git a/tests/test_config b/tests/test_config
+index 1f146ca..52c453f 100644
+--- a/tests/test_config
++++ b/tests/test_config
+@@ -3,16 +3,16 @@
#
unset LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME PAGER
@@ -40,8 +40,6 @@ Index: git/tests/test_config
-E2IMAGE_EXE="../misc/e2image"
-DEBUGFS="$USE_VALGRIND ../debugfs/debugfs"
-DEBUGFS_EXE="../debugfs/debugfs"
--TEST_BITS="../debugfs/debugfs"
--RESIZE2FS_EXE="../resize/resize2fs"
+FSCK="$USE_VALGRIND e2fsck"
+MKE2FS="$USE_VALGRIND mke2fs"
+DUMPE2FS="$USE_VALGRIND dumpe2fs"
@@ -49,28 +47,37 @@ Index: git/tests/test_config
+CHATTR="$USE_VALGRIND chattr"
+LSATTR="$USE_VALGRIND lsattr"
+E2IMAGE="$USE_VALGRIND e2image"
-+E2IMAGE_EXE="/sbin/e2image"
++E2IMAGE_EXE=/sbin/e2image"
+DEBUGFS="$USE_VALGRIND debugfs"
+DEBUGFS_EXE="/sbin/debugfs"
-+TEST_BITS="/sbin/debugfs"
+ TEST_BITS="test_data.tmp"
+ if [ ! -s $TEST_BITS ]; then
+ # create a non-sparse test file if possible, since debugfs may be
+@@ -21,14 +21,14 @@ if [ ! -s $TEST_BITS ]; then
+ dd if=/dev/urandom of=$TEST_BITS bs=128k count=1 > /dev/null 2>&1 ||
+ TEST_BITS="$DEFBUGFS_EXE"
+ fi
+-RESIZE2FS_EXE="../resize/resize2fs"
+RESIZE2FS_EXE="/sbin/resize2fs"
RESIZE2FS="$USE_VALGRIND $RESIZE2FS_EXE"
-E2UNDO_EXE="../misc/e2undo"
+E2UNDO_EXE="/sbin/e2undo"
E2UNDO="$USE_VALGRIND $E2UNDO_EXE"
+-E2MMPSTATUS="$USE_VALGRIND ../misc/dumpe2fs -m"
-TEST_REL=../tests/progs/test_rel
-TEST_ICOUNT=../tests/progs/test_icount
-CRCSUM=../tests/progs/crcsum
++E2MMPSTATUS="$USE_VALGRIND dumpe2fs -m"
+TEST_REL=./progs/test_rel
+TEST_ICOUNT=./progs/test_icount
+CRCSUM=./progs/crcsum
CLEAN_OUTPUT="sed -f $cmd_dir/filter.sed"
LD_LIBRARY_PATH=../lib:../lib/ext2fs:../lib/e2p:../lib/et:../lib/ss:${LD_LIBRARY_PATH}
DYLD_LIBRARY_PATH=../lib:../lib/ext2fs:../lib/e2p:../lib/et:../lib/ss:${DYLD_LIBRARY_PATH}
-Index: git/tests/test_script.in
-===================================================================
---- git.orig/tests/test_script.in
-+++ git/tests/test_script.in
+diff --git a/tests/test_script.in b/tests/test_script.in
+index 9959e30..442999d 100644
+--- a/tests/test_script.in
++++ b/tests/test_script.in
@@ -39,7 +39,7 @@ for i; do
done
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.43.8.bb b/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.44.3.bb
index 56abb3b5d31..d7391ee6df6 100644
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.43.8.bb
+++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.44.3.bb
@@ -6,14 +6,13 @@ SRC_URI += "file://remove.ldconfig.call.patch \
file://Revert-mke2fs-enable-the-metadata_csum-and-64bit-fea.patch \
file://mkdir_p.patch \
file://0001-misc-create_inode.c-set-dir-s-mode-correctly.patch \
- file://0001-libext2fs-fix-build-failure-in-swapfs.c-on-big-endia.patch \
"
SRC_URI_append_class-native = " file://e2fsprogs-fix-missing-check-for-permission-denied.patch \
file://quiet-debugfs.patch \
"
-SRCREV = "af2eac481cf426c05ae12b946396980e16c8ab19"
+SRCREV = "85e53f42f98d5334914de01e972e9ed44bccd0a5"
UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+\.\d+(\.\d+)*)$"
EXTRA_OECONF += "--libdir=${base_libdir} --sbindir=${base_sbindir} \
@@ -75,6 +74,12 @@ 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"
@@ -83,8 +88,8 @@ PACKAGES =+ "libcomerr libss libe2p libext2fs"
FILES_e2fsprogs-resize2fs = "${base_sbindir}/resize2fs*"
FILES_e2fsprogs-e2fsck = "${base_sbindir}/e2fsck ${base_sbindir}/fsck.ext*"
-FILES_e2fsprogs-mke2fs = "${base_sbindir}/mke2fs ${base_sbindir}/mkfs.ext* ${sysconfdir}/mke2fs.conf"
-FILES_e2fsprogs-tune2fs = "${base_sbindir}/tune2fs ${base_sbindir}/e2label"
+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.*"
@@ -100,6 +105,13 @@ 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_${PN}-ptest += "${PN} ${PN}-tune2fs coreutils procps bash"
do_compile_ptest() {
diff --git a/meta/recipes-devtools/elfutils/elfutils_0.170.bb b/meta/recipes-devtools/elfutils/elfutils_0.173.bb
index 14ac22ee643..2fec73dbdbe 100644
--- a/meta/recipes-devtools/elfutils/elfutils_0.170.bb
+++ b/meta/recipes-devtools/elfutils/elfutils_0.173.bb
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
DEPENDS = "libtool bzip2 zlib virtual/libintl"
DEPENDS_append_libc-musl = " argp-standalone fts "
# The Debian patches below are from:
-# http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.168-0.2.debian.tar.xz
+# http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.170-0.5.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 \
@@ -16,19 +16,24 @@ SRC_URI = "https://sourceware.org/elfutils/ftp/${PV}/${BP}.tar.bz2 \
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://debian/hppa_backend.diff \
- file://debian/arm_backend.diff \
- file://debian/mips_backend.patch \
- file://debian/mips_readelf_w.patch \
+ file://0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch \
+ file://debian/0001-hppa_backend.patch \
+ file://debian/0001-arm_backend.patch \
+ file://debian/0001-mips_backend.patch \
+ file://debian/0001-testsuite-ignore-elflint.patch \
+ file://debian/0001-mips_readelf_w.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://0001-Use-fallthrough-attribute.patch \
- file://0001-Ensure-that-packed-structs-follow-the-gcc-memory-lay.patch \
+ file://debian/ignore_strmerge.diff \
+ file://debian/0001-fix-gcc7-ftbfs.patch \
+ file://debian/0001-disable_werror.patch \
+ file://CVE-2018-16062.patch \
"
SRC_URI_append_libc-musl = " file://0008-build-Provide-alternatives-for-glibc-assumptions-hel.patch"
-SRC_URI[md5sum] = "03599aee98c9b726c7a732a2dd0245d5"
-SRC_URI[sha256sum] = "1f844775576b79bdc9f9c717a50058d08620323c1e935458223a12f249c9e066"
+
+SRC_URI[md5sum] = "35decb1ebfb90d565e4c411bee4185cc"
+SRC_URI[sha256sum] = "b76d8c133f68dad46250f5c223482c8299d454a69430d9aa5c19123345a000ff"
inherit autotools gettext
diff --git a/meta/recipes-devtools/elfutils/files/0001-Ensure-that-packed-structs-follow-the-gcc-memory-lay.patch b/meta/recipes-devtools/elfutils/files/0001-Ensure-that-packed-structs-follow-the-gcc-memory-lay.patch
deleted file mode 100644
index cf4d1dfe75b..00000000000
--- a/meta/recipes-devtools/elfutils/files/0001-Ensure-that-packed-structs-follow-the-gcc-memory-lay.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 732913a8c35c7b25c0cbf6903cab1ad6b602b525 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 22 Mar 2018 22:44:03 -0700
-Subject: [PATCH] Ensure that packed structs follow the gcc memory layout
-
-Partial backport of
-https://sourceware.org/git/?p=elfutils.git;a=commit;h=17d7194d291bf91d130b78e06cbe27b290e0376d
-
-Helps fixing alignment errors e.g.
-linux-core-note.c:116:1: error: alignment 2 of 'struct m68k_prstatus
-' is less than 4 [-Werror=packed-not-aligned]
- ;
- ^
-
-Upstream-Status: Backport [https://sourceware.org/git/?p=elfutils.git;a=commit;h=17d7194d291bf91d130b78e06cbe27b290e0376d]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- backends/linux-core-note.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/backends/linux-core-note.c b/backends/linux-core-note.c
-index 5f06c896..9faae4c3 100644
---- a/backends/linux-core-note.c
-+++ b/backends/linux-core-note.c
-@@ -111,7 +111,7 @@ struct EBLHOOK(prstatus)
- FIELD (INT, pr_fpvalid);
- }
- #ifdef ALIGN_PRSTATUS
-- __attribute__ ((packed, aligned (ALIGN_PRSTATUS)))
-+ attribute_packed __attribute__ ((aligned (ALIGN_PRSTATUS)))
- #endif
- ;
-
diff --git a/meta/recipes-devtools/elfutils/files/0001-Use-fallthrough-attribute.patch b/meta/recipes-devtools/elfutils/files/0001-Use-fallthrough-attribute.patch
deleted file mode 100644
index 5e2155b3c66..00000000000
--- a/meta/recipes-devtools/elfutils/files/0001-Use-fallthrough-attribute.patch
+++ /dev/null
@@ -1,791 +0,0 @@
-From 5cb883f67d00a63531ef195c242763d36b1905ca Mon Sep 17 00:00:00 2001
-From: Joshua Watt <Joshua.Watt@garmin.com>
-Date: Fri, 9 Feb 2018 12:46:38 -0600
-Subject: [PATCH] Use fallthrough attribute
-
-Use __attribute__ ((fallthrough)) to indicate switch case fall through
-instead of a comment. This ensure that the fallthrough warning is not
-triggered even if the file is pre-processed (hence stripping the
-comments) before it is compiled.
-
-The actual fallback implementation is hidden behind a FALLBACK macro in
-case the compiler doesn't support it.
-
-Finally, the -Wimplict-fallthrough warning was upgraded to only allow
-the attribute to satisfy it; a comment alone is no longer sufficient.
-
-Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
-
-Upstream-Status: Submitted [1]
-
-[1] https://sourceware.org/ml/elfutils-devel/2018-q1/msg00027.html
----
- backends/aarch64_retval.c | 2 +-
- backends/alpha_retval.c | 4 ++--
- backends/arm_regs.c | 2 +-
- backends/arm_retval.c | 2 +-
- backends/i386_regs.c | 2 +-
- backends/i386_retval.c | 4 ++--
- backends/ia64_retval.c | 2 +-
- backends/linux-core-note.c | 2 +-
- backends/m68k_retval.c | 4 ++--
- backends/mips_retval.c | 4 ++--
- backends/parisc_retval.c | 5 +++--
- backends/ppc64_retval.c | 6 +++---
- backends/ppc_regs.c | 2 +-
- backends/ppc_retval.c | 4 ++--
- backends/s390_retval.c | 4 ++--
- backends/sh_retval.c | 2 +-
- backends/sparc_retval.c | 2 +-
- backends/tilegx_retval.c | 4 ++--
- backends/x86_64_regs.c | 2 +-
- backends/x86_64_retval.c | 2 +-
- config/eu.am | 4 +++-
- configure.ac | 6 ++++++
- lib/eu-config.h | 7 +++++++
- libcpu/i386_disasm.c | 2 +-
- libcpu/i386_parse.c | 4 ++--
- libdw/cfi.c | 4 ++--
- libdw/dwarf_frame_register.c | 2 +-
- libdwfl/dwfl_report_elf.c | 2 +-
- libdwfl/frame_unwind.c | 2 +-
- libebl/eblobjnote.c | 2 +-
- libelf/elf32_updatenull.c | 2 +-
- libelf/elf_begin.c | 4 ++--
- libelf/elf_cntl.c | 2 +-
- src/addr2line.c | 2 +-
- src/elfcompress.c | 2 +-
- src/elflint.c | 8 ++++----
- src/objdump.c | 2 +-
- src/readelf.c | 8 ++++----
- src/strings.c | 2 +-
- tests/backtrace.c | 2 +-
- tests/elfstrmerge.c | 3 ++-
- 41 files changed, 75 insertions(+), 58 deletions(-)
-
-diff --git a/backends/aarch64_retval.c b/backends/aarch64_retval.c
-index 68de307..1308340 100644
---- a/backends/aarch64_retval.c
-+++ b/backends/aarch64_retval.c
-@@ -292,7 +292,7 @@ aarch64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- assert (count > 0);
- if (count <= 4)
- return pass_hfa (locp, base_size, count);
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case 1:
- /* Not a HFA. */
-diff --git a/backends/alpha_retval.c b/backends/alpha_retval.c
-index 53dbfa4..d9bae3b 100644
---- a/backends/alpha_retval.c
-+++ b/backends/alpha_retval.c
-@@ -85,7 +85,7 @@ alpha_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = DWARF_TAG_OR_RETURN (typedie);
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_base_type:
- case DW_TAG_enumeration_type:
-@@ -131,7 +131,7 @@ alpha_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- }
- }
-
-- /* Else fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_structure_type:
- case DW_TAG_class_type:
-diff --git a/backends/arm_regs.c b/backends/arm_regs.c
-index 4ee1039..418c931 100644
---- a/backends/arm_regs.c
-+++ b/backends/arm_regs.c
-@@ -81,7 +81,7 @@ arm_register_info (Ebl *ebl __attribute__ ((unused)),
- * but gcc maps FPA registers here
- */
- regno += 96 - 16;
-- /* Fall through. */
-+ FALLTHROUGH;
- case 96 + 0 ... 96 + 7:
- *setname = "FPA";
- *type = DW_ATE_float;
-diff --git a/backends/arm_retval.c b/backends/arm_retval.c
-index 8687eab..313e4eb 100644
---- a/backends/arm_retval.c
-+++ b/backends/arm_retval.c
-@@ -90,7 +90,7 @@ arm_return_value_location_ (Dwarf_Die *functypedie, const Dwarf_Op **locp,
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = DWARF_TAG_OR_RETURN (typedie);
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_base_type:
- case DW_TAG_enumeration_type:
-diff --git a/backends/i386_regs.c b/backends/i386_regs.c
-index fd963a6..7ec93bb 100644
---- a/backends/i386_regs.c
-+++ b/backends/i386_regs.c
-@@ -92,7 +92,7 @@ i386_register_info (Ebl *ebl __attribute__ ((unused)),
- case 5:
- case 8:
- *type = DW_ATE_address;
-- /* Fallthrough */
-+ FALLTHROUGH;
- case 0 ... 3:
- case 6 ... 7:
- name[0] = 'e';
-diff --git a/backends/i386_retval.c b/backends/i386_retval.c
-index 4aa646f..32fec72 100644
---- a/backends/i386_retval.c
-+++ b/backends/i386_retval.c
-@@ -85,7 +85,7 @@ i386_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = DWARF_TAG_OR_RETURN (typedie);
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_base_type:
- case DW_TAG_enumeration_type:
-@@ -123,7 +123,7 @@ i386_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- if (size <= 8)
- return nloc_intregpair;
- }
-- /* Fallthrough */
-+ FALLTHROUGH;
-
- case DW_TAG_structure_type:
- case DW_TAG_class_type:
-diff --git a/backends/ia64_retval.c b/backends/ia64_retval.c
-index dcd5f28..03ea4d8 100644
---- a/backends/ia64_retval.c
-+++ b/backends/ia64_retval.c
-@@ -260,7 +260,7 @@ ia64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = DWARF_TAG_OR_RETURN (typedie);
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_base_type:
- case DW_TAG_enumeration_type:
-diff --git a/backends/linux-core-note.c b/backends/linux-core-note.c
-index 67638d7..5f06c89 100644
---- a/backends/linux-core-note.c
-+++ b/backends/linux-core-note.c
-@@ -226,7 +226,7 @@ EBLHOOK(core_note) (const GElf_Nhdr *nhdr, const char *name,
- if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
- break;
- /* Buggy old Linux kernels didn't terminate "LINUX". */
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case sizeof "LINUX":
- if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
-diff --git a/backends/m68k_retval.c b/backends/m68k_retval.c
-index c68ed02..a653ba3 100644
---- a/backends/m68k_retval.c
-+++ b/backends/m68k_retval.c
-@@ -92,7 +92,7 @@ m68k_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = DWARF_TAG_OR_RETURN (typedie);
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_base_type:
- case DW_TAG_enumeration_type:
-@@ -135,7 +135,7 @@ m68k_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- if (size <= 8)
- return nloc_intregpair;
- }
-- /* Fallthrough */
-+ FALLTHROUGH;
- case DW_TAG_structure_type:
- case DW_TAG_class_type:
- case DW_TAG_union_type:
-diff --git a/backends/mips_retval.c b/backends/mips_retval.c
-index 57487bb..c6e1ffe 100644
---- a/backends/mips_retval.c
-+++ b/backends/mips_retval.c
-@@ -306,7 +306,7 @@ mips_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_base_type:
- case DW_TAG_enumeration_type:
-@@ -389,7 +389,7 @@ mips_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- }
- }
-
-- /* Fallthrough to handle large types */
-+ FALLTHROUGH; /* Fallthrough to handle large types */
-
- case DW_TAG_array_type:
- large:
-diff --git a/backends/parisc_retval.c b/backends/parisc_retval.c
-index df7ec3a..1f1e91a 100644
---- a/backends/parisc_retval.c
-+++ b/backends/parisc_retval.c
-@@ -116,7 +116,7 @@ parisc_return_value_location_ (Dwarf_Die *functypedie, const Dwarf_Op **locp, in
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = dwarf_tag (typedie);
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_base_type:
- case DW_TAG_enumeration_type:
-@@ -167,6 +167,7 @@ parisc_return_value_location_ (Dwarf_Die *functypedie, const Dwarf_Op **locp, in
-
- /* Else fall through. */
- }
-+ FALLTHROUGH;
-
- case DW_TAG_structure_type:
- case DW_TAG_class_type:
-@@ -189,7 +190,7 @@ parisc_return_value_location_ (Dwarf_Die *functypedie, const Dwarf_Op **locp, in
- *locp = loc_aggregate;
- return nloc_aggregate;
- #endif
-- /* fall through. */
-+ FALLTHROUGH;
- }
- }
-
-diff --git a/backends/ppc64_retval.c b/backends/ppc64_retval.c
-index a251983..eb1c11e 100644
---- a/backends/ppc64_retval.c
-+++ b/backends/ppc64_retval.c
-@@ -96,7 +96,7 @@ ppc64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = DWARF_TAG_OR_RETURN (typedie);
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_base_type:
- case DW_TAG_enumeration_type:
-@@ -141,7 +141,7 @@ ppc64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- return nloc_intreg;
- }
-
-- /* Else fall through. */
-+ FALLTHROUGH;
- case DW_TAG_structure_type:
- case DW_TAG_class_type:
- case DW_TAG_union_type:
-@@ -161,7 +161,7 @@ ppc64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- return nloc_vmxreg;
- }
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_string_type:
- if (dwarf_aggregate_size (typedie, &size) == 0 && size <= 8)
-diff --git a/backends/ppc_regs.c b/backends/ppc_regs.c
-index c2d5011..43d2534 100644
---- a/backends/ppc_regs.c
-+++ b/backends/ppc_regs.c
-@@ -140,7 +140,7 @@ ppc_register_info (Ebl *ebl __attribute__ ((unused)),
- case 100:
- if (*bits == 32)
- return stpcpy (name, "mq") + 1 - name;
-- /* Fallthrough */
-+ FALLTHROUGH;
- case 102 ... 107:
- name[0] = 's';
- name[1] = 'p';
-diff --git a/backends/ppc_retval.c b/backends/ppc_retval.c
-index b14a99f..39b42da 100644
---- a/backends/ppc_retval.c
-+++ b/backends/ppc_retval.c
-@@ -108,7 +108,7 @@ ppc_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = DWARF_TAG_OR_RETURN (typedie);
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_base_type:
- case DW_TAG_enumeration_type:
-@@ -172,7 +172,7 @@ ppc_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- return nloc_intregquad;
- }
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_structure_type:
- case DW_TAG_class_type:
-diff --git a/backends/s390_retval.c b/backends/s390_retval.c
-index a927d46..2043f98 100644
---- a/backends/s390_retval.c
-+++ b/backends/s390_retval.c
-@@ -87,7 +87,7 @@ s390_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = DWARF_TAG_OR_RETURN (typedie);
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_base_type:
- case DW_TAG_enumeration_type:
-@@ -127,7 +127,7 @@ s390_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- return size <= asize ? nloc_intreg : nloc_intregpair;
- }
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_structure_type:
- case DW_TAG_class_type:
-diff --git a/backends/sh_retval.c b/backends/sh_retval.c
-index d44f260..33d7d96 100644
---- a/backends/sh_retval.c
-+++ b/backends/sh_retval.c
-@@ -84,7 +84,7 @@ sh_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = DWARF_TAG_OR_RETURN (typedie);
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_base_type:
- case DW_TAG_enumeration_type:
-diff --git a/backends/sparc_retval.c b/backends/sparc_retval.c
-index e1b1775..fb81cdc 100644
---- a/backends/sparc_retval.c
-+++ b/backends/sparc_retval.c
-@@ -91,7 +91,7 @@ sparc_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = DWARF_TAG_OR_RETURN (typedie);
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_base_type:
- case DW_TAG_enumeration_type:
-diff --git a/backends/tilegx_retval.c b/backends/tilegx_retval.c
-index db81a20..7f7d24b 100644
---- a/backends/tilegx_retval.c
-+++ b/backends/tilegx_retval.c
-@@ -79,7 +79,7 @@ tilegx_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = DWARF_TAG_OR_RETURN (typedie);
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_base_type:
- case DW_TAG_enumeration_type:
-@@ -113,7 +113,7 @@ tilegx_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- return nloc_intreg;
- }
-
-- /* Else fall through. */
-+ FALLTHROUGH;
- case DW_TAG_structure_type:
- case DW_TAG_class_type:
- case DW_TAG_union_type:
-diff --git a/backends/x86_64_regs.c b/backends/x86_64_regs.c
-index 8430440..ef987da 100644
---- a/backends/x86_64_regs.c
-+++ b/backends/x86_64_regs.c
-@@ -87,7 +87,7 @@ x86_64_register_info (Ebl *ebl __attribute__ ((unused)),
-
- case 6 ... 7:
- *type = DW_ATE_address;
-- /* Fallthrough */
-+ FALLTHROUGH;
- case 0 ... 5:
- name[0] = 'r';
- name[1] = baseregs[regno][0];
-diff --git a/backends/x86_64_retval.c b/backends/x86_64_retval.c
-index b3799ae..f9114cb 100644
---- a/backends/x86_64_retval.c
-+++ b/backends/x86_64_retval.c
-@@ -100,7 +100,7 @@ x86_64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
- typedie = dwarf_formref_die (attr, &die_mem);
- tag = DWARF_TAG_OR_RETURN (typedie);
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_TAG_base_type:
- case DW_TAG_enumeration_type:
-diff --git a/config/eu.am b/config/eu.am
-index 8fe1e25..b6ec581 100644
---- a/config/eu.am
-+++ b/config/eu.am
-@@ -62,7 +62,9 @@ NULL_DEREFERENCE_WARNING=
- endif
-
- if HAVE_IMPLICIT_FALLTHROUGH_WARNING
--IMPLICIT_FALLTHROUGH_WARNING=-Wimplicit-fallthrough
-+# Use strict fallthrough. Only __attribute__((fallthrough)) will prevent the
-+# warning
-+IMPLICIT_FALLTHROUGH_WARNING=-Wimplicit-fallthrough=5
- else
- IMPLICIT_FALLTHROUGH_WARNING=
- endif
-diff --git a/configure.ac b/configure.ac
-index 1f1856d..698efbb 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -360,6 +360,12 @@ CFLAGS="$old_CFLAGS"])
- AM_CONDITIONAL(HAVE_IMPLICIT_FALLTHROUGH_WARNING,
- [test "x$ac_cv_implicit_fallthrough" != "xno"])
-
-+# Assume the fallthrough attribute is supported if -Wimplict-fallthrough is supported
-+if test "$ac_cv_implicit_fallthrough" = "yes"; then
-+ AC_DEFINE([HAVE_FALLTHROUGH], [1],
-+ [Defined if __attribute__((fallthrough)) is supported])
-+fi
-+
- dnl Check if we have argp available from our libc
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
-diff --git a/lib/eu-config.h b/lib/eu-config.h
-index 400cdc6..e8d4ec2 100644
---- a/lib/eu-config.h
-+++ b/lib/eu-config.h
-@@ -186,5 +186,12 @@ asm (".section predict_data, \"aw\"; .previous\n"
- # define COMPAT_VERSION(name, version, prefix) error "should use #ifdef SYMBOL_VERSIONING"
- #endif
-
-+#ifndef FALLTHROUGH
-+# ifdef HAVE_FALLTHROUGH
-+# define FALLTHROUGH __attribute__ ((fallthrough))
-+# else
-+# define FALLTHROUGH ((void) 0)
-+# endif
-+#endif
-
- #endif /* eu-config.h */
-diff --git a/libcpu/i386_disasm.c b/libcpu/i386_disasm.c
-index 60fd6d4..837a3a8 100644
---- a/libcpu/i386_disasm.c
-+++ b/libcpu/i386_disasm.c
-@@ -819,7 +819,7 @@ i386_disasm (Ebl *ebl __attribute__((unused)),
- ++param_start;
- break;
- }
-- /* Fallthrough */
-+ FALLTHROUGH;
- default:
- str = "";
- assert (! "INVALID not handled");
-diff --git a/libcpu/i386_parse.c b/libcpu/i386_parse.c
-index ef1ac35..6fa7ce3 100644
---- a/libcpu/i386_parse.c
-+++ b/libcpu/i386_parse.c
-@@ -1047,7 +1047,7 @@ yytnamerr (char *yyres, const char *yystr)
- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
-- /* Fall through. */
-+ FALLTHROUGH;
- default:
- if (yyres)
- yyres[yyn] = *yyp;
-@@ -2042,7 +2042,7 @@ yyabortlab:
- yyexhaustedlab:
- yyerror (YY_("memory exhausted"));
- yyresult = 2;
-- /* Fall through. */
-+ FALLTHROUGH;
- #endif
-
- yyreturn:
-diff --git a/libdw/cfi.c b/libdw/cfi.c
-index daa845f..341e055 100644
---- a/libdw/cfi.c
-+++ b/libdw/cfi.c
-@@ -138,7 +138,7 @@ execute_cfi (Dwarf_CFI *cache,
-
- case DW_CFA_advance_loc1:
- operand = *program++;
-- /* Fallthrough */
-+ FALLTHROUGH;
- case DW_CFA_advance_loc + 0 ... DW_CFA_advance_loc + CFI_PRIMARY_MAX:
- advance_loc:
- loc += operand * cie->code_alignment_factor;
-@@ -301,7 +301,7 @@ execute_cfi (Dwarf_CFI *cache,
-
- case DW_CFA_restore_extended:
- get_uleb128 (operand, program, end);
-- /* Fallthrough */
-+ FALLTHROUGH;
- case DW_CFA_restore + 0 ... DW_CFA_restore + CFI_PRIMARY_MAX:
-
- if (unlikely (abi_cfi) && likely (opcode == DW_CFA_restore))
-diff --git a/libdw/dwarf_frame_register.c b/libdw/dwarf_frame_register.c
-index 37e8e91..d0159fb 100644
---- a/libdw/dwarf_frame_register.c
-+++ b/libdw/dwarf_frame_register.c
-@@ -62,7 +62,7 @@ dwarf_frame_register (Dwarf_Frame *fs, int regno, Dwarf_Op *ops_mem,
- /* Use the default rule for registers not yet mentioned in CFI. */
- if (fs->cache->default_same_value)
- goto same_value;
-- /*FALLTHROUGH*/
-+ FALLTHROUGH;
- case reg_undefined:
- /* The value is known to be unavailable. */
- break;
-diff --git a/libdwfl/dwfl_report_elf.c b/libdwfl/dwfl_report_elf.c
-index 6950a37..3fc9384 100644
---- a/libdwfl/dwfl_report_elf.c
-+++ b/libdwfl/dwfl_report_elf.c
-@@ -174,7 +174,7 @@ __libdwfl_elf_address_range (Elf *elf, GElf_Addr base, bool add_p_vaddr,
- /* An assigned base address is meaningless for these. */
- base = 0;
- add_p_vaddr = true;
-- /* Fallthrough. */
-+ FALLTHROUGH;
- case ET_DYN:
- default:;
- size_t phnum;
-diff --git a/libdwfl/frame_unwind.c b/libdwfl/frame_unwind.c
-index 4dc9c43..eaea495 100644
---- a/libdwfl/frame_unwind.c
-+++ b/libdwfl/frame_unwind.c
-@@ -442,7 +442,7 @@ expr_eval (Dwfl_Frame *state, Dwarf_Frame *frame, const Dwarf_Op *ops,
- }
- if (val1 == 0)
- break;
-- /* FALLTHRU */
-+ FALLTHROUGH;
- case DW_OP_skip:;
- Dwarf_Word offset = op->offset + 1 + 2 + (int16_t) op->number;
- const Dwarf_Op *found = bsearch ((void *) (uintptr_t) offset, ops, nops,
-diff --git a/libebl/eblobjnote.c b/libebl/eblobjnote.c
-index f80a1a5..ca4f155 100644
---- a/libebl/eblobjnote.c
-+++ b/libebl/eblobjnote.c
-@@ -223,7 +223,7 @@ ebl_object_note (Ebl *ebl, const char *name, uint32_t type,
- free (buf);
- break;
- }
-- /* FALLTHROUGH */
-+ FALLTHROUGH;
-
- default:
- /* Unknown type. */
-diff --git a/libelf/elf32_updatenull.c b/libelf/elf32_updatenull.c
-index a51bf70..5351518 100644
---- a/libelf/elf32_updatenull.c
-+++ b/libelf/elf32_updatenull.c
-@@ -232,7 +232,7 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum)
- __libelf_seterrno (ELF_E_GROUP_NOT_REL);
- return -1;
- }
-- /* FALLTHROUGH */
-+ FALLTHROUGH;
- case SHT_SYMTAB_SHNDX:
- sh_entsize = elf_typesize (32, ELF_T_WORD, 1);
- break;
-diff --git a/libelf/elf_begin.c b/libelf/elf_begin.c
-index 6f85038..6de206a 100644
---- a/libelf/elf_begin.c
-+++ b/libelf/elf_begin.c
-@@ -582,7 +582,7 @@ read_unmmaped_file (int fildes, off_t offset, size_t maxsize, Elf_Cmd cmd,
- ? sizeof (Elf32_Ehdr) : sizeof (Elf64_Ehdr)))
- return file_read_elf (fildes, NULL, mem.header, offset, maxsize, cmd,
- parent);
-- /* FALLTHROUGH */
-+ FALLTHROUGH;
-
- default:
- break;
-@@ -1097,7 +1097,7 @@ elf_begin (int fildes, Elf_Cmd cmd, Elf *ref)
- retval = NULL;
- break;
- }
-- /* FALLTHROUGH */
-+ FALLTHROUGH;
-
- case ELF_C_READ:
- case ELF_C_READ_MMAP:
-diff --git a/libelf/elf_cntl.c b/libelf/elf_cntl.c
-index ab13ffb..fd68178 100644
---- a/libelf/elf_cntl.c
-+++ b/libelf/elf_cntl.c
-@@ -62,7 +62,7 @@ elf_cntl (Elf *elf, Elf_Cmd cmd)
- result = -1;
- break;
- }
-- /* FALLTHROUGH */
-+ FALLTHROUGH;
-
- case ELF_C_FDDONE:
- /* Mark the file descriptor as not usable. */
-diff --git a/src/addr2line.c b/src/addr2line.c
-index ba414a7..444ee52 100644
---- a/src/addr2line.c
-+++ b/src/addr2line.c
-@@ -618,7 +618,7 @@ handle_address (const char *string, Dwfl *dwfl)
- case 1:
- addr = 0;
- j = i;
-- /* Fallthrough */
-+ FALLTHROUGH;
- case 2:
- if (string[j] != '\0')
- break;
-diff --git a/src/elfcompress.c b/src/elfcompress.c
-index 8e0d5c5..25378a4 100644
---- a/src/elfcompress.c
-+++ b/src/elfcompress.c
-@@ -149,7 +149,7 @@ parse_opt (int key, char *arg __attribute__ ((unused)),
- N_("Only one input file allowed together with '-o'"));
- /* We only use this for checking the number of arguments, we don't
- actually want to consume them. */
-- /* Fallthrough */
-+ FALLTHROUGH;
- default:
- return ARGP_ERR_UNKNOWN;
- }
-diff --git a/src/elflint.c b/src/elflint.c
-index 51e53c2..df1b3a0 100644
---- a/src/elflint.c
-+++ b/src/elflint.c
-@@ -1764,7 +1764,7 @@ section [%2d] '%s': entry %zu: pointer does not match address of section [%2d] '
- if (dyn->d_tag < DT_ADDRRNGLO || dyn->d_tag > DT_ADDRRNGHI)
- /* Value is no pointer. */
- break;
-- /* FALLTHROUGH */
-+ FALLTHROUGH;
-
- case DT_AUXILIARY:
- case DT_FILTER:
-@@ -3993,7 +3993,7 @@ section [%2zu] '%s': merge flag set but entry size is zero\n"),
- case SHT_NOBITS:
- if (is_debuginfo)
- break;
-- /* Fallthrough */
-+ FALLTHROUGH;
- default:
- ERROR (gettext ("\
- section [%2zu] '%s' has unexpected type %d for an executable section\n"),
-@@ -4137,7 +4137,7 @@ section [%2zu] '%s': ELF header says this is the section header string table but
- ERROR (gettext ("\
- section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"),
- cnt, section_name (ebl, cnt));
-- /* FALLTHROUGH */
-+ FALLTHROUGH;
- case SHT_SYMTAB:
- check_symtab (ebl, ehdr, shdr, cnt);
- break;
-@@ -4336,7 +4336,7 @@ section [%2d] '%s': unknown core file note type %" PRIu32
- if (nhdr.n_namesz == sizeof "Linux"
- && !memcmp (data->d_buf + name_offset, "Linux", sizeof "Linux"))
- break;
-- /* Fallthrough */
-+ FALLTHROUGH;
- default:
- if (shndx == 0)
- ERROR (gettext ("\
-diff --git a/src/objdump.c b/src/objdump.c
-index 860cfac..0dd9a6a 100644
---- a/src/objdump.c
-+++ b/src/objdump.c
-@@ -223,7 +223,7 @@ parse_opt (int key, char *arg,
- }
- /* We only use this for checking the number of arguments, we don't
- actually want to consume them. */
-- /* Fallthrough */
-+ FALLTHROUGH;
- default:
- return ARGP_ERR_UNKNOWN;
- }
-diff --git a/src/readelf.c b/src/readelf.c
-index 346eccd..6a27e7e 100644
---- a/src/readelf.c
-+++ b/src/readelf.c
-@@ -465,7 +465,7 @@ parse_opt (int key, char *arg,
- print_string_sections = true;
- break;
- }
-- /* Fall through. */
-+ FALLTHROUGH;
- case 'x':
- add_dump_section (arg, false);
- any_control_option = true;
-@@ -6029,7 +6029,7 @@ attr_callback (Dwarf_Attribute *attrp, void *arg)
- dwarf_form_name (form), (uintmax_t) num);
- return DWARF_CB_OK;
- }
-- /* else fallthrough */
-+ FALLTHROUGH;
-
- /* These cases always take a loclistptr and no constant. */
- case DW_AT_location:
-@@ -6195,7 +6195,7 @@ attr_callback (Dwarf_Attribute *attrp, void *arg)
- print_block (block.length, block.data);
- break;
- }
-- /* Fall through. */
-+ FALLTHROUGH;
-
- case DW_AT_location:
- case DW_AT_data_location:
-@@ -9227,7 +9227,7 @@ handle_auxv_note (Ebl *ebl, Elf *core, GElf_Word descsz, GElf_Off desc_pos)
- printf (" %s\n", name);
- break;
- }
-- /* Fall through */
-+ FALLTHROUGH;
- case 'x': /* hex */
- case 'p': /* address */
- case 's': /* address of string */
-diff --git a/src/strings.c b/src/strings.c
-index d214356..03d0f13 100644
---- a/src/strings.c
-+++ b/src/strings.c
-@@ -246,7 +246,7 @@ parse_opt (int key, char *arg,
- case 'b':
- case 'B':
- big_endian = true;
-- /* FALLTHROUGH */
-+ FALLTHROUGH;
-
- case 'l':
- case 'L':
-diff --git a/tests/backtrace.c b/tests/backtrace.c
-index 21abe8a..f5dd761 100644
---- a/tests/backtrace.c
-+++ b/tests/backtrace.c
-@@ -127,7 +127,7 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc,
- assert (symname2 == NULL || strcmp (symname2, "jmp") != 0);
- break;
- }
-- /* FALLTHRU */
-+ FALLTHROUGH;
- case 4:
- /* Some simple frame unwinders get this wrong and think sigusr2
- is calling itself again. Allow it and just pretend there is
-diff --git a/tests/elfstrmerge.c b/tests/elfstrmerge.c
-index 8d5b53c..62c549d 100644
---- a/tests/elfstrmerge.c
-+++ b/tests/elfstrmerge.c
-@@ -578,7 +578,8 @@ main (int argc, char **argv)
- break;
-
- case SHT_DYNAMIC:
-- /* Fallthrough. There are string indexes in here, but
-+ FALLTHROUGH;
-+ /* There are string indexes in here, but
- they (should) point to a allocated string table,
- which we don't alter. */
- default:
---
-2.14.3
-
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 28c57f236cc..4c62dc511ce 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 0a69a26c9f7487daca900db87cd1195857a4603f Mon Sep 17 00:00:00 2001
+From c9c6d2414651dbf163dc4963c3c3d6f5cacef898 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 1/7] dso link change
@@ -35,10 +35,10 @@ index 2b1c0dc..9305b84 100644
endif
libebl = ../libebl/libebl.a
diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 3735084..528615d 100644
+index b45ecdc..dd256fb 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
-@@ -400,7 +400,7 @@ libdw = ../libdw/libdw.a -lz $(zip_LIBS) $(libelf) $(libebl) -ldl
+@@ -436,7 +436,7 @@ libdw = ../libdw/libdw.a -lz $(zip_LIBS) $(libelf) $(libebl) -ldl
libelf = ../libelf/libelf.a -lz
libasm = ../libasm/libasm.a
else
@@ -48,5 +48,5 @@ index 3735084..528615d 100644
libasm = ../libasm/libasm.so
endif
--
-1.8.3.1
+2.7.4
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 fb0b060b4bd..c342053aace 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 7672e363468271b4c63ff58770c5aac15ab8f722 Mon Sep 17 00:00:00 2001
+From 74629016e76343a4bf39915c9192b6bf26a57c2d 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
@@ -9,15 +9,14 @@ where indirect libraries may be not found by linker
| /mnt/a/oe/build/tmp/work/riscv64-bec-linux/elfutils/0.170-r0/recipe-sysroot/usr/lib/libbz2.so.1: error adding symbols: DSO missing from command line
| collect2: error: ld returned 1 exit status
+Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
-Upstream-Status: Pending
-
- src/Makefile.am | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ src/Makefile.am | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am
-index e03bc32..9b7e853 100644
+index 9305b84..9b7e853 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -39,11 +39,11 @@ EXTRA_DIST += make-debug-archive.in
@@ -35,5 +34,5 @@ index e03bc32..9b7e853 100644
libelf = ../libelf/libelf.so
endif
--
-2.14.2
+2.7.4
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
new file mode 100644
index 00000000000..1bdb5116981
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/files/0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch
@@ -0,0 +1,46 @@
+From 3393a2e544818f0bd1887c13f28a76ad60c2df98 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
+
+The one which actually saves the data is data_list.data.d.d_buf, so check it
+before free rawdata_base.
+
+This can fix a segmentation fault when prelink libqb_1.0.3:
+prelink: /usr/lib/libqb.so.0.18.2: Symbol section index outside of section numbers
+
+The segmentation fault happens when prelink call elf_end().
+
+Upstream-Status: Submitted [https://sourceware.org/ml/elfutils-devel/2018-q3/msg00085.html]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ libelf/elf_end.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/libelf/elf_end.c b/libelf/elf_end.c
+index 160f0b8..5280a70 100644
+--- a/libelf/elf_end.c
++++ b/libelf/elf_end.c
+@@ -160,14 +160,16 @@ elf_end (Elf *elf)
+ architecture doesn't require overly stringent
+ alignment the raw data buffer is the same as the
+ one used for presenting to the caller. */
+- if (scn->data_base != scn->rawdata_base)
++ if ((scn->data_base != scn->rawdata_base)
++ && (scn->data_list.data.d.d_buf != NULL))
+ free (scn->data_base);
+
+ /* The section data is allocated if we couldn't mmap
+ the file. Or if we had to decompress. */
+- if (elf->map_address == NULL
++ if ((elf->map_address == NULL
+ || scn->rawdata_base == scn->zdata_base
+ || (scn->flags & ELF_F_MALLOCED) != 0)
++ && (scn->data_list.data.d.d_buf != NULL))
+ free (scn->rawdata_base);
+
+ /* Free the list of data buffers for the section.
+--
+2.7.4
+
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 2f718eb8278..86d26bdf355 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 e98670f7c7b4c73fb65534949716fd8d043960d5 Mon Sep 17 00:00:00 2001
+From 9fd4bb05d3f2b7eaf9fe441bee26d3b1878d7cc7 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 2/7] Fix elf_cvt_gunhash if dest and src are same.
@@ -38,5 +38,5 @@ index 6faf113..04d9ca1 100644
/* Now the 64 bit words. */
Elf64_Xword *dest64 = (Elf64_Xword *) &dest32[4];
--
-1.8.3.1
+2.7.4
diff --git a/meta/recipes-devtools/elfutils/files/0003-fixheadercheck.patch b/meta/recipes-devtools/elfutils/files/0003-fixheadercheck.patch
index 7c49fced10d..d1c8e4143e5 100644
--- a/meta/recipes-devtools/elfutils/files/0003-fixheadercheck.patch
+++ b/meta/recipes-devtools/elfutils/files/0003-fixheadercheck.patch
@@ -1,4 +1,4 @@
-From 565d5935abf5b58773f9c8385c00189221980d98 Mon Sep 17 00:00:00 2001
+From 04fb3f65ec186df5231dd0c21780a55dcc03c868 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 3/7] fixheadercheck
@@ -21,7 +21,7 @@ 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 d83c0b3..a51bf70 100644
+index 3e9ef61..5351518 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)
@@ -36,5 +36,5 @@ index d83c0b3..a51bf70 100644
__libelf_seterrno (ELF_E_INVALID_ALIGN);
return -1;
--
-1.8.3.1
+2.7.4
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
index d893ad68f6f..bf3a645bc63 100644
--- 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
@@ -1,4 +1,4 @@
-From bb7ed11950101798aae82f7fda8b3dcb05f755c5 Mon Sep 17 00:00:00 2001
+From dbc88349b9eed4268db951df2c3a8387f75a32e7 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 4/7] Disable the test to convert euc-jp
@@ -40,5 +40,5 @@ index a503646..299f1eb 100644
}]])],
[am_cv_func_iconv_works=yes],
--
-1.8.3.1
+2.7.4
diff --git a/meta/recipes-devtools/elfutils/files/0005-fix-a-stack-usage-warning.patch b/meta/recipes-devtools/elfutils/files/0005-fix-a-stack-usage-warning.patch
index 22a01cfa71d..e2966cbea4d 100644
--- a/meta/recipes-devtools/elfutils/files/0005-fix-a-stack-usage-warning.patch
+++ b/meta/recipes-devtools/elfutils/files/0005-fix-a-stack-usage-warning.patch
@@ -1,4 +1,4 @@
-From dd6dbf6af396519380f48c0ef1ce6cf4dd77f6d7 Mon Sep 17 00:00:00 2001
+From 4d7ea681932556ad881f6841de90d0bfff56f8d7 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Tue, 15 Aug 2017 17:25:16 +0800
Subject: [PATCH 5/7] fix a stack-usage warning
@@ -18,10 +18,10 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/backends/ppc_initreg.c b/backends/ppc_initreg.c
-index 69d623b..de41dec 100644
+index 3e4432f..59c2d97 100644
--- a/backends/ppc_initreg.c
+++ b/backends/ppc_initreg.c
-@@ -93,7 +93,7 @@ ppc_set_initial_registers_tid (pid_t tid __attribute__ ((unused)),
+@@ -94,7 +94,7 @@ ppc_set_initial_registers_tid (pid_t tid __attribute__ ((unused)),
return false;
}
const size_t gprs = sizeof (user_regs.r.gpr) / sizeof (*user_regs.r.gpr);
@@ -31,5 +31,5 @@ index 69d623b..de41dec 100644
dwarf_regs[gpr] = user_regs.r.gpr[gpr];
if (! setfunc (0, gprs, dwarf_regs, arg))
--
-1.8.3.1
+2.7.4
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 5f29a037596..40b8544fa51 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 e57ad47fc8549353ca80c23b9b4f38f31fde13e5 Mon Sep 17 00:00:00 2001
+From b4ec05953f78af26bcd7de45a5bbc5f138d023da 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 6/7] Fix build on aarch64/musl
@@ -57,5 +57,5 @@ index efcabaf..062bb9e 100644
# include <sys/ptrace.h>
/* Deal with old glibc defining user_pt_regs instead of user_regs_struct. */
--
-1.8.3.1
+2.7.4
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
index 224770478d6..bba420e3495 100644
--- 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
@@ -1,6 +1,6 @@
-From 1e91c1d4e37c05cf95058b4b3c3f352d72886f58 Mon Sep 17 00:00:00 2001
+From 8eb100b2e51be5d473b0748a223e2e7f61ec606c Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Tue, 15 Aug 2017 17:31:38 +0800
+Date: Fri, 29 Jun 2018 15:14:28 +0800
Subject: [PATCH 7/7] Fix control path where we have str as uninitialized
string
@@ -21,7 +21,7 @@ note: 'str' was declared here
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
-Rebase to 0.170
+Rebase to 0.172
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
@@ -29,17 +29,17 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
1 file changed, 1 insertion(+)
diff --git a/libcpu/i386_disasm.c b/libcpu/i386_disasm.c
-index 831afbe..60fd6d4 100644
+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 */
+ FALLTHROUGH;
default:
+ str = "";
assert (! "INVALID not handled");
}
}
--
-1.8.3.1
+2.7.4
diff --git a/meta/recipes-devtools/elfutils/files/0008-build-Provide-alternatives-for-glibc-assumptions-hel.patch b/meta/recipes-devtools/elfutils/files/0008-build-Provide-alternatives-for-glibc-assumptions-hel.patch
index a42ce7b3585..e88f2c069c0 100644
--- a/meta/recipes-devtools/elfutils/files/0008-build-Provide-alternatives-for-glibc-assumptions-hel.patch
+++ b/meta/recipes-devtools/elfutils/files/0008-build-Provide-alternatives-for-glibc-assumptions-hel.patch
@@ -1,16 +1,15 @@
-From ef0981744669149a00dd0439a54dac30de7b56a7 Mon Sep 17 00:00:00 2001
+From 207be05c44da5c4c31179a34660e176145ff8d4b Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 16 Aug 2017 10:06:26 +0800
+Date: Mon, 2 Jul 2018 09:52:23 +0800
Subject: [PATCH] build: Provide alternatives for glibc assumptions helps
compiling it on musl
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Rebase to 0.170
+Rebase to 0.172
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
---
Makefile.am | 2 +-
lib/color.c | 3 ++-
@@ -24,10 +23,9 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
libcpu/i386_parse.c | 2 +-
libdw/Makefile.am | 3 ++-
libdw/libdw_alloc.c | 2 +-
- libdwfl/dwfl_build_id_find_elf.c | 3 ++-
+ libdwfl/dwfl_build_id_find_elf.c | 1 +
libdwfl/dwfl_error.c | 4 +++-
libdwfl/dwfl_module_getdwarf.c | 1 +
- libdwfl/find-debuginfo.c | 2 +-
libdwfl/libdwfl_crc32_file.c | 9 +++++++++
libdwfl/linux-kernel-modules.c | 1 +
libebl/eblopenbackend.c | 2 +-
@@ -75,16 +73,15 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
tests/getsrc_die.c | 2 +-
tests/line2addr.c | 2 +-
tests/low_high_pc.c | 2 +-
- tests/md5-sha1-test.c | 2 +-
tests/rdwrmmap.c | 2 +-
tests/saridx.c | 2 +-
tests/sectiondump.c | 2 +-
tests/varlocs.c | 2 +-
tests/vdsosyms.c | 2 +-
- 69 files changed, 95 insertions(+), 64 deletions(-)
+ 67 files changed, 92 insertions(+), 61 deletions(-)
diff --git a/Makefile.am b/Makefile.am
-index 2ff444e7..41f77df8 100644
+index 2ff444e..41f77df 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -28,7 +28,7 @@ pkginclude_HEADERS = version.h
@@ -97,7 +94,7 @@ index 2ff444e7..41f77df8 100644
EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING \
COPYING COPYING-GPLV2 COPYING-LGPLV3
diff --git a/lib/color.c b/lib/color.c
-index f62389d5..a2a84b46 100644
+index f62389d..a2a84b4 100644
--- a/lib/color.c
+++ b/lib/color.c
@@ -32,13 +32,14 @@
@@ -117,7 +114,7 @@ index f62389d5..a2a84b46 100644
/* Prototype for option handler. */
static error_t parse_opt (int key, char *arg, struct argp_state *state);
diff --git a/lib/fixedsizehash.h b/lib/fixedsizehash.h
-index dac2a5f5..43016fc3 100644
+index dac2a5f..43016fc 100644
--- a/lib/fixedsizehash.h
+++ b/lib/fixedsizehash.h
@@ -30,7 +30,6 @@
@@ -129,7 +126,7 @@ index dac2a5f5..43016fc3 100644
#include <system.h>
diff --git a/lib/system.h b/lib/system.h
-index 92033355..1a601319 100644
+index 9203335..1a60131 100644
--- a/lib/system.h
+++ b/lib/system.h
@@ -50,6 +50,16 @@
@@ -150,7 +147,7 @@ index 92033355..1a601319 100644
#ifndef MAX
#define MAX(m, n) ((m) < (n) ? (n) : (m))
diff --git a/lib/xmalloc.c b/lib/xmalloc.c
-index 0cde384f..217b0541 100644
+index 0cde384..217b054 100644
--- a/lib/xmalloc.c
+++ b/lib/xmalloc.c
@@ -30,7 +30,7 @@
@@ -163,7 +160,7 @@ index 0cde384f..217b0541 100644
#include <stddef.h>
#include <stdlib.h>
diff --git a/libasm/asm_end.c b/libasm/asm_end.c
-index ced24f50..4ad918c4 100644
+index ced24f5..4ad918c 100644
--- a/libasm/asm_end.c
+++ b/libasm/asm_end.c
@@ -32,7 +32,7 @@
@@ -176,7 +173,7 @@ index ced24f50..4ad918c4 100644
#include <stdio.h>
#include <stdlib.h>
diff --git a/libasm/asm_newscn.c b/libasm/asm_newscn.c
-index ddbb25df..74a598d9 100644
+index ddbb25d..74a598d 100644
--- a/libasm/asm_newscn.c
+++ b/libasm/asm_newscn.c
@@ -32,7 +32,7 @@
@@ -189,7 +186,7 @@ index ddbb25df..74a598d9 100644
#include <stdlib.h>
#include <string.h>
diff --git a/libcpu/i386_gendis.c b/libcpu/i386_gendis.c
-index aae5eae6..6d760165 100644
+index aae5eae..6d76016 100644
--- a/libcpu/i386_gendis.c
+++ b/libcpu/i386_gendis.c
@@ -31,7 +31,7 @@
@@ -202,10 +199,10 @@ index aae5eae6..6d760165 100644
#include <stdio.h>
#include <stdlib.h>
diff --git a/libcpu/i386_lex.c b/libcpu/i386_lex.c
-index ba5f4aa5..b1e41916 100644
+index facdf71..f13842f 100644
--- a/libcpu/i386_lex.c
+++ b/libcpu/i386_lex.c
-@@ -577,7 +577,7 @@ char *i386_text;
+@@ -571,7 +571,7 @@ char *i386_text;
#endif
#include <ctype.h>
@@ -215,7 +212,7 @@ index ba5f4aa5..b1e41916 100644
#include <libeu.h>
diff --git a/libcpu/i386_parse.c b/libcpu/i386_parse.c
-index 6fa7ce3d..bb270061 100644
+index 3c5058a..bf402d6 100644
--- a/libcpu/i386_parse.c
+++ b/libcpu/i386_parse.c
@@ -107,7 +107,7 @@
@@ -228,10 +225,10 @@ index 6fa7ce3d..bb270061 100644
#include <libintl.h>
#include <math.h>
diff --git a/libdw/Makefile.am b/libdw/Makefile.am
-index ff8c291e..89e792aa 100644
+index 41df4f3..e6b275f 100644
--- a/libdw/Makefile.am
+++ b/libdw/Makefile.am
-@@ -105,7 +105,8 @@ am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os)
+@@ -107,7 +107,8 @@ 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
@@ -242,7 +239,7 @@ index ff8c291e..89e792aa 100644
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/libdw/libdw_alloc.c b/libdw/libdw_alloc.c
-index 28a8cf6e..29aeb3f7 100644
+index d6af23a..deb724c 100644
--- a/libdw/libdw_alloc.c
+++ b/libdw/libdw_alloc.c
@@ -31,7 +31,7 @@
@@ -255,7 +252,7 @@ index 28a8cf6e..29aeb3f7 100644
#include <stdlib.h>
#include "libdwP.h"
diff --git a/libdwfl/dwfl_build_id_find_elf.c b/libdwfl/dwfl_build_id_find_elf.c
-index ee0c1646..b06ab596 100644
+index cc6c3f6..b06ab59 100644
--- a/libdwfl/dwfl_build_id_find_elf.c
+++ b/libdwfl/dwfl_build_id_find_elf.c
@@ -31,6 +31,7 @@
@@ -266,17 +263,8 @@ index ee0c1646..b06ab596 100644
#include <inttypes.h>
#include <fcntl.h>
#include <unistd.h>
-@@ -99,7 +100,7 @@ __libdwfl_open_by_build_id (Dwfl_Module *mod, bool debug, char **file_name,
- {
- if (*file_name != NULL)
- free (*file_name);
-- *file_name = canonicalize_file_name (name);
-+ *file_name = realpath (name, NULL);
- if (*file_name == NULL)
- {
- *file_name = name;
diff --git a/libdwfl/dwfl_error.c b/libdwfl/dwfl_error.c
-index 7bcf61cc..c345797a 100644
+index 7bcf61c..c345797 100644
--- a/libdwfl/dwfl_error.c
+++ b/libdwfl/dwfl_error.c
@@ -140,6 +140,7 @@ __libdwfl_seterrno (Dwfl_Error error)
@@ -298,7 +286,7 @@ index 7bcf61cc..c345797a 100644
return elf_errmsg (error & 0xffff);
case OTHER_ERROR (LIBDW):
diff --git a/libdwfl/dwfl_module_getdwarf.c b/libdwfl/dwfl_module_getdwarf.c
-index 9775aced..511c4a6a 100644
+index af6838a..c079d6a 100644
--- a/libdwfl/dwfl_module_getdwarf.c
+++ b/libdwfl/dwfl_module_getdwarf.c
@@ -35,6 +35,7 @@
@@ -309,21 +297,8 @@ index 9775aced..511c4a6a 100644
#include "../libdw/libdwP.h" /* DWARF_E_* values are here. */
#include "../libelf/libelfP.h"
#include "system.h"
-diff --git a/libdwfl/find-debuginfo.c b/libdwfl/find-debuginfo.c
-index 6d5a42a6..9267788d 100644
---- a/libdwfl/find-debuginfo.c
-+++ b/libdwfl/find-debuginfo.c
-@@ -389,7 +389,7 @@ dwfl_standard_find_debuginfo (Dwfl_Module *mod,
- /* If FILE_NAME is a symlink, the debug file might be associated
- with the symlink target name instead. */
-
-- char *canon = canonicalize_file_name (file_name);
-+ char *canon = realpath (file_name, NULL);
- if (canon != NULL && strcmp (file_name, canon))
- fd = find_debuginfo_in_path (mod, canon,
- debuglink_file, debuglink_crc,
diff --git a/libdwfl/libdwfl_crc32_file.c b/libdwfl/libdwfl_crc32_file.c
-index f849128d..6f0aca1b 100644
+index f849128..6f0aca1 100644
--- a/libdwfl/libdwfl_crc32_file.c
+++ b/libdwfl/libdwfl_crc32_file.c
@@ -29,6 +29,15 @@
@@ -343,7 +318,7 @@ index f849128d..6f0aca1b 100644
#define crc32 __libdwfl_crc32
#include <libdwflP.h>
diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c
-index 9d0fef2c..9fc09b88 100644
+index 9d0fef2..9fc09b8 100644
--- a/libdwfl/linux-kernel-modules.c
+++ b/libdwfl/linux-kernel-modules.c
@@ -40,6 +40,7 @@
@@ -355,7 +330,7 @@ index 9d0fef2c..9fc09b88 100644
#include <errno.h>
#include <stdio.h>
diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c
-index 53713963..2e66dfdd 100644
+index 8b063f4..9bdeead 100644
--- a/libebl/eblopenbackend.c
+++ b/libebl/eblopenbackend.c
@@ -32,7 +32,7 @@
@@ -368,7 +343,7 @@ index 53713963..2e66dfdd 100644
#include <dwarf.h>
#include <stdlib.h>
diff --git a/libelf/elf.h b/libelf/elf.h
-index 5cf2b934..990b3afb 100644
+index f774898..be277d0 100644
--- a/libelf/elf.h
+++ b/libelf/elf.h
@@ -21,7 +21,9 @@
@@ -382,9 +357,9 @@ index 5cf2b934..990b3afb 100644
/* Standard ELF types. */
-@@ -3705,6 +3707,8 @@ enum
- #define R_BPF_NONE 0 /* No reloc */
- #define R_BPF_MAP_FD 1 /* Map fd to pointer */
+@@ -3912,6 +3914,8 @@ enum
+ #define R_METAG_TLS_LE_HI16 60
+ #define R_METAG_TLS_LE_LO16 61
-__END_DECLS
+#ifdef __cplusplus
@@ -393,7 +368,7 @@ index 5cf2b934..990b3afb 100644
#endif /* elf.h */
diff --git a/libelf/libelf.h b/libelf/libelf.h
-index 547c0f50..dd78799e 100644
+index 547c0f5..dd78799 100644
--- a/libelf/libelf.h
+++ b/libelf/libelf.h
@@ -29,6 +29,7 @@
@@ -405,7 +380,7 @@ index 547c0f50..dd78799e 100644
#include <sys/types.h>
diff --git a/libelf/libelfP.h b/libelf/libelfP.h
-index 7ee6625a..58408997 100644
+index ca805ac..47f25c2 100644
--- a/libelf/libelfP.h
+++ b/libelf/libelfP.h
@@ -32,6 +32,7 @@
@@ -417,7 +392,7 @@ index 7ee6625a..58408997 100644
#include <errno.h>
#include <stdbool.h>
diff --git a/src/addr2line.c b/src/addr2line.c
-index 444ee52c..9596fa67 100644
+index 5acafa0..a4920b3 100644
--- a/src/addr2line.c
+++ b/src/addr2line.c
@@ -23,7 +23,7 @@
@@ -430,7 +405,7 @@ index 444ee52c..9596fa67 100644
#include <inttypes.h>
#include <libdwfl.h>
diff --git a/src/ar.c b/src/ar.c
-index ec32cee5..4efd729c 100644
+index 818115b..2166f1b 100644
--- a/src/ar.c
+++ b/src/ar.c
@@ -22,7 +22,7 @@
@@ -443,7 +418,7 @@ index ec32cee5..4efd729c 100644
#include <gelf.h>
#include <libintl.h>
diff --git a/src/arlib.c b/src/arlib.c
-index e0839aab..1143658f 100644
+index e0839aa..1143658 100644
--- a/src/arlib.c
+++ b/src/arlib.c
@@ -21,7 +21,7 @@
@@ -456,7 +431,7 @@ index e0839aab..1143658f 100644
#include <inttypes.h>
#include <libintl.h>
diff --git a/src/arlib2.c b/src/arlib2.c
-index 553fc57b..46443d0e 100644
+index 553fc57..46443d0 100644
--- a/src/arlib2.c
+++ b/src/arlib2.c
@@ -20,7 +20,7 @@
@@ -469,7 +444,7 @@ index 553fc57b..46443d0e 100644
#include <limits.h>
#include <string.h>
diff --git a/src/elfcmp.c b/src/elfcmp.c
-index 50464207..cff183fa 100644
+index 5046420..cff183f 100644
--- a/src/elfcmp.c
+++ b/src/elfcmp.c
@@ -23,7 +23,7 @@
@@ -482,7 +457,7 @@ index 50464207..cff183fa 100644
#include <locale.h>
#include <libintl.h>
diff --git a/src/elflint.c b/src/elflint.c
-index df1b3a03..67d8d134 100644
+index 0a26d97..e45fb39 100644
--- a/src/elflint.c
+++ b/src/elflint.c
@@ -24,7 +24,7 @@
@@ -495,7 +470,7 @@ index df1b3a03..67d8d134 100644
#include <gelf.h>
#include <inttypes.h>
diff --git a/src/findtextrel.c b/src/findtextrel.c
-index 8f1e239a..71463af3 100644
+index 8f1e239..71463af 100644
--- a/src/findtextrel.c
+++ b/src/findtextrel.c
@@ -23,7 +23,7 @@
@@ -508,7 +483,7 @@ index 8f1e239a..71463af3 100644
#include <gelf.h>
#include <libdw.h>
diff --git a/src/nm.c b/src/nm.c
-index 969c6d35..3113c04c 100644
+index 969c6d3..3113c04 100644
--- a/src/nm.c
+++ b/src/nm.c
@@ -26,7 +26,7 @@
@@ -521,7 +496,7 @@ index 969c6d35..3113c04c 100644
#include <gelf.h>
#include <inttypes.h>
diff --git a/src/objdump.c b/src/objdump.c
-index 0dd9a6aa..9c8bf149 100644
+index 0dd9a6a..9c8bf14 100644
--- a/src/objdump.c
+++ b/src/objdump.c
@@ -21,7 +21,7 @@
@@ -534,7 +509,7 @@ index 0dd9a6aa..9c8bf149 100644
#include <inttypes.h>
#include <libintl.h>
diff --git a/src/ranlib.c b/src/ranlib.c
-index cc0ee233..ae851e40 100644
+index cc0ee23..ae851e4 100644
--- a/src/ranlib.c
+++ b/src/ranlib.c
@@ -24,7 +24,7 @@
@@ -547,10 +522,10 @@ index cc0ee233..ae851e40 100644
#include <gelf.h>
#include <libintl.h>
diff --git a/src/readelf.c b/src/readelf.c
-index 6a27e7e0..4759a965 100644
+index f185897..6623e93 100644
--- a/src/readelf.c
+++ b/src/readelf.c
-@@ -25,7 +25,7 @@
+@@ -24,7 +24,7 @@
#include <ctype.h>
#include <dwarf.h>
#include <errno.h>
@@ -560,7 +535,7 @@ index 6a27e7e0..4759a965 100644
#include <gelf.h>
#include <inttypes.h>
diff --git a/src/size.c b/src/size.c
-index ad8dbcbb..fd83be06 100644
+index ad8dbcb..fd83be0 100644
--- a/src/size.c
+++ b/src/size.c
@@ -21,7 +21,7 @@
@@ -573,7 +548,7 @@ index ad8dbcbb..fd83be06 100644
#include <gelf.h>
#include <inttypes.h>
diff --git a/src/stack.c b/src/stack.c
-index 6f2ff69f..6da0243d 100644
+index 52ae3a8..0fda285 100644
--- a/src/stack.c
+++ b/src/stack.c
@@ -18,7 +18,7 @@
@@ -586,7 +561,7 @@ index 6f2ff69f..6da0243d 100644
#include <inttypes.h>
#include <stdio.h>
diff --git a/src/strings.c b/src/strings.c
-index 03d0f133..5c311cbd 100644
+index 03d0f13..5c311cb 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -25,7 +25,7 @@
@@ -599,7 +574,7 @@ index 03d0f133..5c311cbd 100644
#include <gelf.h>
#include <inttypes.h>
diff --git a/src/strip.c b/src/strip.c
-index c7830ec6..0d7f148d 100644
+index 773ed54..ff05f46 100644
--- a/src/strip.c
+++ b/src/strip.c
@@ -24,7 +24,7 @@
@@ -612,7 +587,7 @@ index c7830ec6..0d7f148d 100644
#include <fnmatch.h>
#include <gelf.h>
diff --git a/src/unstrip.c b/src/unstrip.c
-index 50749093..3d4f9525 100644
+index f368e69..5ca83d0 100644
--- a/src/unstrip.c
+++ b/src/unstrip.c
@@ -31,7 +31,7 @@
@@ -625,7 +600,7 @@ index 50749093..3d4f9525 100644
#include <fnmatch.h>
#include <libintl.h>
diff --git a/tests/addrscopes.c b/tests/addrscopes.c
-index 791569f5..54f4311b 100644
+index 791569f..54f4311 100644
--- a/tests/addrscopes.c
+++ b/tests/addrscopes.c
@@ -25,7 +25,7 @@
@@ -638,7 +613,7 @@ index 791569f5..54f4311b 100644
diff --git a/tests/allregs.c b/tests/allregs.c
-index 286f7e3c..c9de0897 100644
+index 286f7e3..c9de089 100644
--- a/tests/allregs.c
+++ b/tests/allregs.c
@@ -21,7 +21,7 @@
@@ -651,7 +626,7 @@ index 286f7e3c..c9de0897 100644
#include <argp.h>
#include <assert.h>
diff --git a/tests/backtrace-data.c b/tests/backtrace-data.c
-index a387d8ff..955c27d1 100644
+index a387d8f..955c27d 100644
--- a/tests/backtrace-data.c
+++ b/tests/backtrace-data.c
@@ -27,7 +27,7 @@
@@ -664,10 +639,10 @@ index a387d8ff..955c27d1 100644
#include <dwarf.h>
#if defined(__x86_64__) && defined(__linux__)
diff --git a/tests/backtrace-dwarf.c b/tests/backtrace-dwarf.c
-index 2dc8a9a2..24ca7fb0 100644
+index 7ff826c..246650b 100644
--- a/tests/backtrace-dwarf.c
+++ b/tests/backtrace-dwarf.c
-@@ -22,7 +22,7 @@
+@@ -21,7 +21,7 @@
#include <stdio_ext.h>
#include <locale.h>
#include <errno.h>
@@ -675,9 +650,9 @@ index 2dc8a9a2..24ca7fb0 100644
+#include <err.h>
#include <unistd.h>
#include <sys/types.h>
- #include <sys/wait.h>
+ #include ELFUTILS_HEADER(dwfl)
diff --git a/tests/backtrace.c b/tests/backtrace.c
-index f5dd761f..a93a8f03 100644
+index f5dd761..a93a8f0 100644
--- a/tests/backtrace.c
+++ b/tests/backtrace.c
@@ -24,7 +24,7 @@
@@ -690,7 +665,7 @@ index f5dd761f..a93a8f03 100644
#include <dwarf.h>
#ifdef __linux__
diff --git a/tests/buildid.c b/tests/buildid.c
-index 87c18773..2953e6bb 100644
+index 87c1877..2953e6b 100644
--- a/tests/buildid.c
+++ b/tests/buildid.c
@@ -23,7 +23,7 @@
@@ -703,7 +678,7 @@ index 87c18773..2953e6bb 100644
#include <stdlib.h>
#include <sys/types.h>
diff --git a/tests/debugaltlink.c b/tests/debugaltlink.c
-index 6d97d500..ee7e559e 100644
+index 6d97d50..ee7e559 100644
--- a/tests/debugaltlink.c
+++ b/tests/debugaltlink.c
@@ -23,7 +23,7 @@
@@ -716,7 +691,7 @@ index 6d97d500..ee7e559e 100644
#include <stdlib.h>
#include <sys/types.h>
diff --git a/tests/debuglink.c b/tests/debuglink.c
-index 935d1029..741cb814 100644
+index 935d102..741cb81 100644
--- a/tests/debuglink.c
+++ b/tests/debuglink.c
@@ -21,7 +21,7 @@
@@ -729,7 +704,7 @@ index 935d1029..741cb814 100644
#include <stdlib.h>
#include <sys/types.h>
diff --git a/tests/deleted.c b/tests/deleted.c
-index 6be35bc2..01907113 100644
+index 6be35bc..0190711 100644
--- a/tests/deleted.c
+++ b/tests/deleted.c
@@ -21,7 +21,7 @@
@@ -742,7 +717,7 @@ index 6be35bc2..01907113 100644
#ifdef __linux__
#include <sys/prctl.h>
diff --git a/tests/dwfl-addr-sect.c b/tests/dwfl-addr-sect.c
-index 21e470a3..1ea1e3b2 100644
+index 21e470a..1ea1e3b 100644
--- a/tests/dwfl-addr-sect.c
+++ b/tests/dwfl-addr-sect.c
@@ -23,7 +23,7 @@
@@ -755,7 +730,7 @@ index 21e470a3..1ea1e3b2 100644
#include <argp.h>
#include ELFUTILS_HEADER(dwfl)
diff --git a/tests/dwfl-bug-addr-overflow.c b/tests/dwfl-bug-addr-overflow.c
-index aa8030e1..02c8bef9 100644
+index aa8030e..02c8bef 100644
--- a/tests/dwfl-bug-addr-overflow.c
+++ b/tests/dwfl-bug-addr-overflow.c
@@ -20,7 +20,7 @@
@@ -768,7 +743,7 @@ index aa8030e1..02c8bef9 100644
#include ELFUTILS_HEADER(dwfl)
diff --git a/tests/dwfl-bug-fd-leak.c b/tests/dwfl-bug-fd-leak.c
-index 689cdd79..5973da39 100644
+index 689cdd7..5973da3 100644
--- a/tests/dwfl-bug-fd-leak.c
+++ b/tests/dwfl-bug-fd-leak.c
@@ -24,7 +24,7 @@
@@ -781,7 +756,7 @@ index 689cdd79..5973da39 100644
#include <dwarf.h>
diff --git a/tests/dwfl-bug-getmodules.c b/tests/dwfl-bug-getmodules.c
-index 1ee989f8..fd62e653 100644
+index 1ee989f..fd62e65 100644
--- a/tests/dwfl-bug-getmodules.c
+++ b/tests/dwfl-bug-getmodules.c
@@ -18,7 +18,7 @@
@@ -794,7 +769,7 @@ index 1ee989f8..fd62e653 100644
static const Dwfl_Callbacks callbacks =
{
diff --git a/tests/dwfl-report-elf-align.c b/tests/dwfl-report-elf-align.c
-index a4e97d3c..f471587c 100644
+index a4e97d3..f471587 100644
--- a/tests/dwfl-report-elf-align.c
+++ b/tests/dwfl-report-elf-align.c
@@ -20,7 +20,7 @@
@@ -807,7 +782,7 @@ index a4e97d3c..f471587c 100644
#include <string.h>
#include <stdlib.h>
diff --git a/tests/dwfllines.c b/tests/dwfllines.c
-index 90379dd2..cbdf6c4c 100644
+index 90379dd..cbdf6c4 100644
--- a/tests/dwfllines.c
+++ b/tests/dwfllines.c
@@ -27,7 +27,7 @@
@@ -820,7 +795,7 @@ index 90379dd2..cbdf6c4c 100644
int
main (int argc, char *argv[])
diff --git a/tests/dwflmodtest.c b/tests/dwflmodtest.c
-index 0027f96b..e68d3bca 100644
+index 0027f96..e68d3bc 100644
--- a/tests/dwflmodtest.c
+++ b/tests/dwflmodtest.c
@@ -23,7 +23,7 @@
@@ -833,7 +808,7 @@ index 0027f96b..e68d3bca 100644
#include <argp.h>
#include ELFUTILS_HEADER(dwfl)
diff --git a/tests/dwflsyms.c b/tests/dwflsyms.c
-index 49ac3346..cf078301 100644
+index 49ac334..cf07830 100644
--- a/tests/dwflsyms.c
+++ b/tests/dwflsyms.c
@@ -25,7 +25,7 @@
@@ -846,7 +821,7 @@ index 49ac3346..cf078301 100644
static const char *
diff --git a/tests/early-offscn.c b/tests/early-offscn.c
-index 924cb9ef..6f60d5a3 100644
+index 924cb9e..6f60d5a 100644
--- a/tests/early-offscn.c
+++ b/tests/early-offscn.c
@@ -19,7 +19,7 @@
@@ -859,7 +834,7 @@ index 924cb9ef..6f60d5a3 100644
#include <gelf.h>
#include <stdio.h>
diff --git a/tests/ecp.c b/tests/ecp.c
-index 38a6859e..743cea5d 100644
+index 38a6859..743cea5 100644
--- a/tests/ecp.c
+++ b/tests/ecp.c
@@ -20,7 +20,7 @@
@@ -872,7 +847,7 @@ index 38a6859e..743cea5d 100644
#include <gelf.h>
#include <stdlib.h>
diff --git a/tests/find-prologues.c b/tests/find-prologues.c
-index ba8ae371..76f5f047 100644
+index ba8ae37..76f5f04 100644
--- a/tests/find-prologues.c
+++ b/tests/find-prologues.c
@@ -25,7 +25,7 @@
@@ -885,7 +860,7 @@ index ba8ae371..76f5f047 100644
#include <fnmatch.h>
diff --git a/tests/funcretval.c b/tests/funcretval.c
-index 8d19d117..c8aaa93d 100644
+index 8d19d11..c8aaa93 100644
--- a/tests/funcretval.c
+++ b/tests/funcretval.c
@@ -25,7 +25,7 @@
@@ -898,7 +873,7 @@ index 8d19d117..c8aaa93d 100644
#include <fnmatch.h>
diff --git a/tests/funcscopes.c b/tests/funcscopes.c
-index 9c901858..dbccb89e 100644
+index 9c90185..dbccb89 100644
--- a/tests/funcscopes.c
+++ b/tests/funcscopes.c
@@ -25,7 +25,7 @@
@@ -911,7 +886,7 @@ index 9c901858..dbccb89e 100644
#include <fnmatch.h>
diff --git a/tests/getsrc_die.c b/tests/getsrc_die.c
-index 055aede0..9c394dd0 100644
+index 055aede..9c394dd 100644
--- a/tests/getsrc_die.c
+++ b/tests/getsrc_die.c
@@ -19,7 +19,7 @@
@@ -924,7 +899,7 @@ index 055aede0..9c394dd0 100644
#include <inttypes.h>
#include <libelf.h>
diff --git a/tests/line2addr.c b/tests/line2addr.c
-index e0d65d3d..9bf0023b 100644
+index e0d65d3..9bf0023 100644
--- a/tests/line2addr.c
+++ b/tests/line2addr.c
@@ -26,7 +26,7 @@
@@ -937,7 +912,7 @@ index e0d65d3d..9bf0023b 100644
static void
diff --git a/tests/low_high_pc.c b/tests/low_high_pc.c
-index d0f43023..8da4fbdf 100644
+index 5c6b343..fa0c158 100644
--- a/tests/low_high_pc.c
+++ b/tests/low_high_pc.c
@@ -25,7 +25,7 @@
@@ -949,21 +924,8 @@ index d0f43023..8da4fbdf 100644
#include <string.h>
#include <fnmatch.h>
-diff --git a/tests/md5-sha1-test.c b/tests/md5-sha1-test.c
-index d50355e9..3c41f40b 100644
---- a/tests/md5-sha1-test.c
-+++ b/tests/md5-sha1-test.c
-@@ -19,7 +19,7 @@
- #endif
-
- #include <string.h>
--#include <error.h>
-+#include <err.h>
-
- #include "md5.h"
- #include "sha1.h"
diff --git a/tests/rdwrmmap.c b/tests/rdwrmmap.c
-index 6f027dfe..1ce5e6ed 100644
+index 6f027df..1ce5e6e 100644
--- a/tests/rdwrmmap.c
+++ b/tests/rdwrmmap.c
@@ -19,7 +19,7 @@
@@ -976,7 +938,7 @@ index 6f027dfe..1ce5e6ed 100644
#include <fcntl.h>
#include <unistd.h>
diff --git a/tests/saridx.c b/tests/saridx.c
-index 8a450d82..b3878013 100644
+index 8a450d8..b387801 100644
--- a/tests/saridx.c
+++ b/tests/saridx.c
@@ -17,7 +17,7 @@
@@ -989,7 +951,7 @@ index 8a450d82..b3878013 100644
#include <gelf.h>
#include <stdio.h>
diff --git a/tests/sectiondump.c b/tests/sectiondump.c
-index 3033fedc..8e888db3 100644
+index 3033fed..8e888db 100644
--- a/tests/sectiondump.c
+++ b/tests/sectiondump.c
@@ -18,7 +18,7 @@
@@ -1002,7 +964,7 @@ index 3033fedc..8e888db3 100644
#include <gelf.h>
#include <inttypes.h>
diff --git a/tests/varlocs.c b/tests/varlocs.c
-index c3fba89e..e043ea2c 100644
+index f4a711c..1d89a61 100644
--- a/tests/varlocs.c
+++ b/tests/varlocs.c
@@ -25,7 +25,7 @@
@@ -1015,7 +977,7 @@ index c3fba89e..e043ea2c 100644
#include <sys/types.h>
#include <sys/stat.h>
diff --git a/tests/vdsosyms.c b/tests/vdsosyms.c
-index b876c10b..afb28232 100644
+index b876c10..afb2823 100644
--- a/tests/vdsosyms.c
+++ b/tests/vdsosyms.c
@@ -18,7 +18,7 @@
@@ -1027,3 +989,6 @@ index b876c10b..afb28232 100644
#include <inttypes.h>
#include <stdio.h>
#include <string.h>
+--
+2.7.4
+
diff --git a/meta/recipes-devtools/elfutils/files/CVE-2018-16062.patch b/meta/recipes-devtools/elfutils/files/CVE-2018-16062.patch
new file mode 100644
index 00000000000..cfeb1ca13c6
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/files/CVE-2018-16062.patch
@@ -0,0 +1,79 @@
+From 29e31978ba51c1051743a503ee325b5ebc03d7e9 Mon Sep 17 00:00:00 2001
+From: Mark Wielaard <mark@klomp.org>
+Date: Sat, 18 Aug 2018 13:27:48 +0200
+Subject: [PATCH] libdw, readelf: Make sure there is enough data to read full
+ aranges header.
+
+dwarf_getaranges didn't check if there was enough data left to read both
+the address and segment size. readelf didn't check there was enough data
+left to read the segment size.
+
+https://sourceware.org/bugzilla/show_bug.cgi?id=23541
+
+CVE: CVE-2018-16062
+Upstream-Status: Backport
+
+Signed-off-by: Mark Wielaard <mark@klomp.org>
+---
+ libdw/ChangeLog | 5 +++++
+ libdw/dwarf_getaranges.c | 4 ++++
+ src/ChangeLog | 5 +++++
+ src/readelf.c | 2 ++
+ 4 files changed, 16 insertions(+)
+
+diff --git a/libdw/ChangeLog b/libdw/ChangeLog
+index cb4f34e..472d922 100644
+--- a/libdw/ChangeLog
++++ b/libdw/ChangeLog
+@@ -1,3 +1,8 @@
++2018-08-18 Mark Wielaard <mark@klomp.org>
++
++ * dwarf_getaranges.c (dwarf_getaranges.c): Make sure there is enough
++ data to read the address and segment size.
++
+ 2018-06-28 Mark Wielaard <mark@klomp.org>
+
+ * dwarf_next_cfi.c (dwarf_next_cfi): Check whether length is zero.
+diff --git a/libdw/dwarf_getaranges.c b/libdw/dwarf_getaranges.c
+index bff9c86..de5b81b 100644
+--- a/libdw/dwarf_getaranges.c
++++ b/libdw/dwarf_getaranges.c
+@@ -148,6 +148,10 @@ dwarf_getaranges (Dwarf *dbg, Dwarf_Aranges **aranges, size_t *naranges)
+ length_bytes, &offset, IDX_debug_info, 4))
+ goto fail;
+
++ /* Next up two bytes for address and segment size. */
++ if (readp + 2 > readendp)
++ goto invalid;
++
+ unsigned int address_size = *readp++;
+ if (unlikely (address_size != 4 && address_size != 8))
+ goto invalid;
+diff --git a/src/ChangeLog b/src/ChangeLog
+index 8c89f83..2f9f774 100644
+--- a/src/ChangeLog
++++ b/src/ChangeLog
+@@ -1,3 +1,8 @@
++2018-08-18 Mark Wielaard <mark@klomp.org>
++
++ * readelf.c (print_debug_aranges_section): Make sure there is enough
++ data to read the header segment size.
++
+ 2018-06-25 Mark Wielaard <mark@klomp.org>
+
+ * readelf.c (print_decoded_line_section): Use dwarf_next_lines
+diff --git a/src/readelf.c b/src/readelf.c
+index 7b5707f..7b488ac 100644
+--- a/src/readelf.c
++++ b/src/readelf.c
+@@ -5447,6 +5447,8 @@ print_debug_aranges_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
+ goto next_table;
+ }
+
++ if (readp + 1 > readendp)
++ goto invalid_data;
+ unsigned int segment_size = *readp++;
+ printf (gettext (" Segment size: %6" PRIu64 "\n\n"),
+ (uint64_t) segment_size);
+--
+2.9.3
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
index e0291b4cf30..8c48f4d1b18 100644
--- 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
@@ -1,3 +1,6 @@
+Upstream-Status: Pending [from debian]
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
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
@@ -8,10 +11,6 @@ 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: Backport [from debian]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
---
backends/mips_init.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/meta/recipes-devtools/elfutils/files/debian/arm_backend.diff b/meta/recipes-devtools/elfutils/files/debian/0001-arm_backend.patch
index 50f4b059e3e..4ed81194b35 100644
--- a/meta/recipes-devtools/elfutils/files/debian/arm_backend.diff
+++ b/meta/recipes-devtools/elfutils/files/debian/0001-arm_backend.patch
@@ -1,8 +1,28 @@
-Upstream-Status: Backport [from debian]
+From a95f370bc2690c150c46f215543de278469900eb Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Fri, 29 Jun 2018 15:42:39 +0800
+Subject: [PATCH] arm_backend
+
+Upstream-Status: Pending [from debian]
+arm_backend.diff and rebase to 0.172
+
+http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.170-0.5.debian.tar.xz
+
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
-Index: b/backends/arm_init.c
-===================================================================
+diff --git a/backends/arm_init.c b/backends/arm_init.c
+index f2b1b11..1b71f16 100644
--- a/backends/arm_init.c
+++ b/backends/arm_init.c
@@ -35,20 +35,31 @@
@@ -38,7 +58,7 @@ Index: b/backends/arm_init.c
/* We handle it. */
eh->name = "ARM";
arm_init_reloc (eh);
-@@ -60,7 +71,10 @@ arm_init (Elf *elf __attribute__ ((unuse
+@@ -60,7 +71,10 @@ arm_init (Elf *elf __attribute__ ((unused)),
HOOK (eh, core_note);
HOOK (eh, auxv_info);
HOOK (eh, check_object_attribute);
@@ -50,8 +70,8 @@ Index: b/backends/arm_init.c
HOOK (eh, abi_cfi);
HOOK (eh, check_reloc_target_type);
HOOK (eh, symbol_type_name);
-Index: b/backends/arm_regs.c
-===================================================================
+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 @@
@@ -62,7 +82,7 @@ Index: b/backends/arm_regs.c
#include <dwarf.h>
#define BACKEND arm_
-@@ -76,6 +77,9 @@ arm_register_info (Ebl *ebl __attribute_
+@@ -76,6 +77,9 @@ arm_register_info (Ebl *ebl __attribute__ ((unused)),
break;
case 16 + 0 ... 16 + 7:
@@ -70,9 +90,9 @@ Index: b/backends/arm_regs.c
+ * but gcc maps FPA registers here
+ */
regno += 96 - 16;
- /* Fall through. */
+ FALLTHROUGH;
case 96 + 0 ... 96 + 7:
-@@ -87,11 +91,139 @@ arm_register_info (Ebl *ebl __attribute_
+@@ -87,11 +91,139 @@ arm_register_info (Ebl *ebl __attribute__ ((unused)),
namelen = 2;
break;
@@ -212,8 +232,8 @@ Index: b/backends/arm_regs.c
*setname = "VFP";
*type = DW_ATE_float;
*bits = 64;
-Index: b/backends/arm_retval.c
-===================================================================
+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[] =
@@ -242,7 +262,7 @@ Index: b/backends/arm_retval.c
{
/* 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 *fu
+@@ -98,6 +106,21 @@ arm_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
else
return -1;
}
@@ -264,7 +284,7 @@ Index: b/backends/arm_retval.c
if (size <= 16)
{
intreg:
-@@ -106,6 +129,7 @@ arm_return_value_location (Dwarf_Die *fu
+@@ -106,6 +129,7 @@ arm_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
}
aggregate:
@@ -272,7 +292,7 @@ Index: b/backends/arm_retval.c
*locp = loc_aggregate;
return nloc_aggregate;
}
-@@ -125,3 +149,18 @@ arm_return_value_location (Dwarf_Die *fu
+@@ -125,3 +149,18 @@ arm_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
DWARF and might be valid. */
return -2;
}
@@ -291,11 +311,26 @@ Index: b/backends/arm_retval.c
+ return arm_return_value_location_ (functypedie, locp, 0);
+}
+
-Index: b/libelf/elf.h
-===================================================================
+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 6c9f61e..6d82fef 100644
--- a/libelf/elf.h
+++ b/libelf/elf.h
-@@ -2593,6 +2593,9 @@ enum
+@@ -2692,6 +2692,9 @@ enum
#define EF_ARM_EABI_VER4 0x04000000
#define EF_ARM_EABI_VER5 0x05000000
@@ -305,7 +340,7 @@ Index: b/libelf/elf.h
/* Additional symbol types for Thumb. */
#define STT_ARM_TFUNC STT_LOPROC /* A Thumb function. */
#define STT_ARM_16BIT STT_HIPROC /* A Thumb label. */
-@@ -2610,12 +2613,19 @@ enum
+@@ -2709,12 +2712,19 @@ enum
/* Processor specific values for the Phdr p_type field. */
#define PT_ARM_EXIDX (PT_LOPROC + 1) /* ARM unwind segment. */
@@ -325,7 +360,7 @@ Index: b/libelf/elf.h
/* AArch64 relocs. */
-@@ -2908,6 +2918,7 @@ enum
+@@ -3007,6 +3017,7 @@ enum
TLS block (LDR, STR). */
#define R_ARM_TLS_IE12GP 111 /* 12 bit GOT entry relative
to GOT origin (LDR). */
@@ -333,22 +368,119 @@ Index: b/libelf/elf.h
#define R_ARM_ME_TOO 128 /* Obsolete. */
#define R_ARM_THM_TLS_DESCSEQ 129
#define R_ARM_THM_TLS_DESCSEQ16 129
-Index: b/backends/libebl_arm.h
-===================================================================
---- /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
-Index: b/tests/run-allregs.sh
-===================================================================
+diff --git a/tests/run-addrcfi.sh b/tests/run-addrcfi.sh
+index fd89d02..462d7c5 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 7ddd452..a31dba4 100755
--- a/tests/run-allregs.sh
+++ b/tests/run-allregs.sh
@@ -2672,7 +2672,28 @@ integer registers:
@@ -468,11 +600,11 @@ Index: b/tests/run-allregs.sh
EOF
# See run-readelf-mixed-corenote.sh for instructions to regenerate
-Index: b/tests/run-readelf-mixed-corenote.sh
-===================================================================
+diff --git a/tests/run-readelf-mixed-corenote.sh b/tests/run-readelf-mixed-corenote.sh
+index 86171c4..018612f 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 0x27
+@@ -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
@@ -490,114 +622,6 @@ Index: b/tests/run-readelf-mixed-corenote.sh
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
-Index: b/tests/run-addrcfi.sh
-===================================================================
---- a/tests/run-addrcfi.sh
-+++ b/tests/run-addrcfi.sh
-@@ -3554,6 +3554,38 @@ dwarf_cfi_addrframe (.eh_frame): no matc
- 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 matc
- 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
+--
+2.7.4
+
diff --git a/meta/recipes-devtools/elfutils/files/debian/0001-disable_werror.patch b/meta/recipes-devtools/elfutils/files/debian/0001-disable_werror.patch
new file mode 100644
index 00000000000..0f32b8742c1
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/files/debian/0001-disable_werror.patch
@@ -0,0 +1,35 @@
+From 5d45565e71ddab3d7848077b61eb0ca73c0bcbcc Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Fri, 29 Jun 2018 16:01:14 +0800
+Subject: [PATCH] disable -Werror as it tends to break with new gcc versions
+
+Bug-Debian: https://bugs.debian.org/886004
+Last-Update: 2018-01-01
+
+Signed-off-by: Helmut Grohne <helmut@subdivi.de>
+
+Upstream-Status: Pending [from debian]
+mdisable_werror.patc and rebase to 0.172
+
+http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.170-0.5.debian.tar.xz
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ config/eu.am | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/config/eu.am b/config/eu.am
+index c2cc349..99b368e 100644
+--- a/config/eu.am
++++ b/config/eu.am
+@@ -73,7 +73,6 @@ AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
+ -Wold-style-definition -Wstrict-prototypes \
+ $(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,) \
+--
+2.7.4
+
diff --git a/meta/recipes-devtools/elfutils/files/debian/0001-fix-gcc7-ftbfs.patch b/meta/recipes-devtools/elfutils/files/debian/0001-fix-gcc7-ftbfs.patch
new file mode 100644
index 00000000000..26869a3a7dd
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/files/debian/0001-fix-gcc7-ftbfs.patch
@@ -0,0 +1,57 @@
+From 91c0a0da2a8932f163d57db5d9d847bed6822502 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Fri, 29 Jun 2018 15:59:57 +0800
+Subject: [PATCH] fix gcc7 ftbfs
+
+Upstream-Status: Pending [from debian]
+fix-gcc7-ftbfs.diff and rebase to 0.172
+
+http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.170-0.5.debian.tar.xz
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ backends/mips_retval.c | 1 +
+ backends/parisc_retval.c | 1 +
+ src/ar.c | 2 +-
+ 3 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/backends/mips_retval.c b/backends/mips_retval.c
+index 57487bb..e7973a8 100644
+--- a/backends/mips_retval.c
++++ b/backends/mips_retval.c
+@@ -390,6 +390,7 @@ mips_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
+ }
+
+ /* Fallthrough to handle large types */
++ /* Fall through. */
+
+ case DW_TAG_array_type:
+ large:
+diff --git a/backends/parisc_retval.c b/backends/parisc_retval.c
+index df7ec3a..988e1fe 100644
+--- a/backends/parisc_retval.c
++++ b/backends/parisc_retval.c
+@@ -167,6 +167,7 @@ parisc_return_value_location_ (Dwarf_Die *functypedie, const Dwarf_Op **locp, in
+
+ /* Else fall through. */
+ }
++ /* Fall through. */
+
+ case DW_TAG_structure_type:
+ case DW_TAG_class_type:
+diff --git a/src/ar.c b/src/ar.c
+index 818115b..c77e9f4 100644
+--- a/src/ar.c
++++ b/src/ar.c
+@@ -1073,7 +1073,7 @@ do_oper_delete (const char *arfname, char **argv, int argc,
+ static bool
+ no0print (bool ofmt, char *buf, int bufsize, long int val)
+ {
+- char tmpbuf[bufsize + 1];
++ char tmpbuf[bufsize + 1 + 4];
+ int ret = snprintf (tmpbuf, sizeof (tmpbuf), ofmt ? "%-*lo" : "%-*ld",
+ bufsize, val);
+ if (ret >= (int) sizeof (tmpbuf))
+--
+2.7.4
+
diff --git a/meta/recipes-devtools/elfutils/files/debian/hppa_backend.diff b/meta/recipes-devtools/elfutils/files/debian/0001-hppa_backend.patch
index 56f852a414e..2c5d4fa4ba7 100644
--- a/meta/recipes-devtools/elfutils/files/debian/hppa_backend.diff
+++ b/meta/recipes-devtools/elfutils/files/debian/0001-hppa_backend.patch
@@ -1,10 +1,84 @@
-Upstream-Status: Backport [from debian]
+From c510c6c8523246dd79c6ea28d1646b153c23e491 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Fri, 29 Jun 2018 15:39:46 +0800
+Subject: [PATCH] hppa_backend
+
+Upstream-Status: Pending [from debian]
+hppa_backend.diff and rebase to 0.172
+
+http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.170-0.5.debian.tar.xz
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ backends/Makefile.am | 9 +-
+ 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 | 112 ++++++++++++++++++++++++
+ libelf/elf.h | 11 +++
+ 8 files changed, 711 insertions(+), 3 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
-Index: elfutils-0.170/backends/parisc_init.c
-===================================================================
+diff --git a/backends/Makefile.am b/backends/Makefile.am
+index 80aa00e..1e4b8e9 100644
+--- a/backends/Makefile.am
++++ b/backends/Makefile.am
+@@ -33,16 +33,16 @@ 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
++ tilegx m68k bpf riscv 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_m68k_pic.a libebl_bpf_pic.a libebl_riscv_pic.a \
++ libebl_parisc_pic.a
+ noinst_LIBRARIES = $(libebl_pic)
+ noinst_DATA = $(libebl_pic:_pic.a=.so)
+
+-
+ libelf = ../libelf/libelf.so
+ libdw = ../libdw/libdw.so
+ libeu = ../lib/libeu.a
+@@ -135,6 +135,9 @@ riscv_SRCS = riscv_init.c riscv_symbol.c
+ libebl_riscv_pic_a_SOURCES = $(riscv_SRCS)
+ am_libebl_riscv_pic_a_OBJECTS = $(riscv_SRCS:.c=.os)
+
++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)
+
+ libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw) $(libeu)
+ @rm -f $(@:.so=.map)
+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
-+++ elfutils-0.170/backends/parisc_init.c
++++ b/backends/parisc_init.c
@@ -0,0 +1,73 @@
+/* Initialization of PA-RISC specific backend library.
+ Copyright (C) 2002, 2005, 2006 Red Hat, Inc.
@@ -79,10 +153,11 @@ Index: elfutils-0.170/backends/parisc_init.c
+
+ return MODVERSION;
+}
-Index: elfutils-0.170/backends/parisc_regs.c
-===================================================================
+diff --git a/backends/parisc_regs.c b/backends/parisc_regs.c
+new file mode 100644
+index 0000000..3895f8e
--- /dev/null
-+++ elfutils-0.170/backends/parisc_regs.c
++++ b/backends/parisc_regs.c
@@ -0,0 +1,159 @@
+/* Register names and numbers for PA-RISC DWARF.
+ Copyright (C) 2005, 2006 Red Hat, Inc.
@@ -243,10 +318,11 @@ Index: elfutils-0.170/backends/parisc_regs.c
+ name[namelen++] = '\0';
+ return namelen;
+}
-Index: elfutils-0.170/backends/parisc_reloc.def
-===================================================================
+diff --git a/backends/parisc_reloc.def b/backends/parisc_reloc.def
+new file mode 100644
+index 0000000..1f875ba
--- /dev/null
-+++ elfutils-0.170/backends/parisc_reloc.def
++++ b/backends/parisc_reloc.def
@@ -0,0 +1,128 @@
+/* List the relocation types for PA-RISC. -*- C -*-
+ Copyright (C) 2005 Red Hat, Inc.
@@ -376,10 +452,11 @@ Index: elfutils-0.170/backends/parisc_reloc.def
+RELOC_TYPE (TLS_DTPMOD64, DYN)
+
+#define NO_RELATIVE_RELOC 1
-Index: elfutils-0.170/backends/parisc_retval.c
-===================================================================
+diff --git a/backends/parisc_retval.c b/backends/parisc_retval.c
+new file mode 100644
+index 0000000..df7ec3a
--- /dev/null
-+++ elfutils-0.170/backends/parisc_retval.c
++++ b/backends/parisc_retval.c
@@ -0,0 +1,213 @@
+/* Function return value location for Linux/PA-RISC ABI.
+ Copyright (C) 2005 Red Hat, Inc.
@@ -594,10 +671,11 @@ Index: elfutils-0.170/backends/parisc_retval.c
+ return parisc_return_value_location_ (functypedie, locp, 1);
+}
+
-Index: elfutils-0.170/backends/parisc_symbol.c
-===================================================================
+diff --git a/backends/parisc_symbol.c b/backends/parisc_symbol.c
+new file mode 100644
+index 0000000..d111a76
--- /dev/null
-+++ elfutils-0.170/backends/parisc_symbol.c
++++ b/backends/parisc_symbol.c
@@ -0,0 +1,112 @@
+/* PA-RISC specific symbolic name handling.
+ Copyright (C) 2002, 2005 Red Hat, Inc.
@@ -711,54 +789,11 @@ Index: elfutils-0.170/backends/parisc_symbol.c
+ return ELF_T_NUM;
+ }
+}
-Index: elfutils-0.170/backends/libebl_parisc.h
-===================================================================
---- /dev/null
-+++ elfutils-0.170/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
-Index: elfutils-0.170/backends/Makefile.am
-===================================================================
---- elfutils-0.170.orig/backends/Makefile.am
-+++ elfutils-0.170/backends/Makefile.am
-@@ -33,12 +33,12 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I
-
-
- modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \
-- tilegx m68k bpf
-+ tilegx m68k bpf 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_m68k_pic.a libebl_bpf_pic.a libebl_parisc_pic.a
- noinst_LIBRARIES = $(libebl_pic)
- noinst_DATA = $(libebl_pic:_pic.a=.so)
-
-@@ -124,6 +124,9 @@ cpu_bpf = ../libcpu/libcpu_bpf.a
- libebl_bpf_pic_a_SOURCES = $(bpf_SRCS)
- am_libebl_bpf_pic_a_OBJECTS = $(bpf_SRCS:.c=.os)
-
-+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)
-
- libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw) $(libeu)
- @rm -f $(@:.so=.map)
-Index: elfutils-0.170/libelf/elf.h
-===================================================================
---- elfutils-0.170.orig/libelf/elf.h
-+++ elfutils-0.170/libelf/elf.h
-@@ -2056,16 +2056,24 @@ enum
+diff --git a/libelf/elf.h b/libelf/elf.h
+index f774898..6c9f61e 100644
+--- a/libelf/elf.h
++++ b/libelf/elf.h
+@@ -2153,16 +2153,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. */
@@ -783,7 +818,7 @@ Index: elfutils-0.170/libelf/elf.h
#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. */
-@@ -2074,6 +2082,7 @@ enum
+@@ -2171,6 +2179,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. */
@@ -791,7 +826,7 @@ Index: elfutils-0.170/libelf/elf.h
#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. */
-@@ -2099,6 +2108,8 @@ enum
+@@ -2196,6 +2205,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. */
@@ -800,3 +835,6 @@ Index: elfutils-0.170/libelf/elf.h
#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/mips_backend.patch b/meta/recipes-devtools/elfutils/files/debian/0001-mips_backend.patch
index 2e0e54b0c7f..d04da72cc5d 100644
--- a/meta/recipes-devtools/elfutils/files/debian/mips_backend.patch
+++ b/meta/recipes-devtools/elfutils/files/debian/0001-mips_backend.patch
@@ -1,11 +1,13 @@
-From 46d0d0ca718093486eeeedf1b44134e9e29b56f7 Mon Sep 17 00:00:00 2001
+From 59ffb86bda845a68d3686afa7bc784131df678f7 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 16 Aug 2017 09:18:59 +0800
-Subject: [PATCH] mips backends
+Date: Fri, 29 Jun 2018 15:45:58 +0800
+Subject: [PATCH] mips_backend
-Upstream-Status: Backport [from debian]
+Upstream-Status: Pending [from debian]
+mips_backend.diff and rebase to 0.172
+
+http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.170-0.5.debian.tar.xz
-Rebase to 0.170
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
backends/Makefile.am | 8 +-
@@ -23,25 +25,26 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
create mode 100644 backends/mips_symbol.c
diff --git a/backends/Makefile.am b/backends/Makefile.am
-index 7f1f5d4..91baf6e 100644
+index 1e4b8e9..e7bccf8 100644
--- a/backends/Makefile.am
+++ b/backends/Makefile.am
-@@ -33,12 +33,12 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \
+@@ -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 parisc
-+ tilegx m68k bpf parisc mips
+- tilegx m68k bpf riscv parisc
++ tilegx m68k bpf riscv 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_parisc_pic.a
-+ libebl_m68k_pic.a libebl_bpf_pic.a libebl_parisc_pic.a libebl_mips_pic.a
+ libebl_m68k_pic.a libebl_bpf_pic.a libebl_riscv_pic.a \
+- libebl_parisc_pic.a
++ libebl_parisc_pic.a libebl_mips_pic.a
noinst_LIBRARIES = $(libebl_pic)
noinst_DATA = $(libebl_pic:_pic.a=.so)
-@@ -128,6 +128,10 @@ parisc_SRCS = parisc_init.c parisc_symbol.c parisc_regs.c parisc_retval.c
+@@ -139,6 +139,10 @@ 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)
@@ -698,7 +701,7 @@ index 0000000..ba465fe
+ }
+}
diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c
-index 1f81477..5371396 100644
+index 8b063f4..5405b0c 100644
--- a/libebl/eblopenbackend.c
+++ b/libebl/eblopenbackend.c
@@ -72,6 +72,8 @@ static const struct
@@ -711,5 +714,5 @@ index 1f81477..5371396 100644
{ "m32", "elf_m32", "m32", 3, EM_M32, 0, 0 },
{ "m68k", "elf_m68k", "m68k", 4, EM_68K, ELFCLASS32, ELFDATA2MSB },
--
-1.8.3.1
+2.7.4
diff --git a/meta/recipes-devtools/elfutils/files/debian/0001-mips_readelf_w.patch b/meta/recipes-devtools/elfutils/files/debian/0001-mips_readelf_w.patch
new file mode 100644
index 00000000000..f3ab3da8d2a
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/files/debian/0001-mips_readelf_w.patch
@@ -0,0 +1,39 @@
+From a188ea1ada6b990b72b91266ae02da058dcd9523 Mon Sep 17 00:00:00 2001
+From: Kurt Roeckx <kurt@roeckx.be>
+Date: Fri, 29 Jun 2018 15:49:32 +0800
+Subject: [PATCH] Make readelf -w output debug information on mips
+
+Bug-Debian: http://bugs.debian.org/662041
+Forwarded: not-needed
+
+Upstreams wants a change where this is handled by a hook that needs
+to be filled in by the backend for the arch.
+
+Signed-off-by: Kurt Roeckx <kurt@roeckx.be>
+
+Upstream-Status: Pending [from debian]
+mips_readelf_w.patch and rebase to 0.172
+
+http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.170-0.5.debian.tar.xz
+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 f185897..0db197c 100644
+--- a/src/readelf.c
++++ b/src/readelf.c
+@@ -10979,7 +10979,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/0001-testsuite-ignore-elflint.patch b/meta/recipes-devtools/elfutils/files/debian/0001-testsuite-ignore-elflint.patch
new file mode 100644
index 00000000000..f4c6f40fc5e
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/files/debian/0001-testsuite-ignore-elflint.patch
@@ -0,0 +1,57 @@
+From fe7613a3b9f2443cc11917826348d4521f267c96 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Fri, 29 Jun 2018 15:48:33 +0800
+Subject: [PATCH] testsuite ignore elflint
+
+On many architectures this test fails because binaries/libs produced by
+binutils don't pass elflint. However elfutils shouldn't FTBFS because of this.
+
+So we run the tests on all archs to see what breaks, but if it breaks we ignore
+the result (exitcode 77 means: this test was skipped).
+
+Upstream-Status: Pending [from debian]
+testsuite-ignore-elflint.diff and rebase to 0.172
+
+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/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
index b17498f5fa6..4bdb1ff3cf5 100644
--- 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
@@ -1,12 +1,12 @@
+Upstream-Status: Pending [from debian]
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
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: Backport [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/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
index 2a5f8628d9b..d27ce6dc9c4 100644
--- 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
@@ -1,3 +1,6 @@
+Upstream-Status: Pending [from debian]
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
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
@@ -12,9 +15,6 @@ 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: Backport [from debian]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
libelf/gelf_getrel.c | 25 +++++++++++++++++++++++--
libelf/gelf_getrela.c | 25 +++++++++++++++++++++++--
@@ -203,7 +203,7 @@ Index: b/src/strip.c
===================================================================
--- a/src/strip.c
+++ b/src/strip.c
-@@ -532,6 +532,23 @@ handle_elf (int fd, Elf *elf, const char
+@@ -598,6 +598,23 @@ handle_elf (int fd, Elf *elf, const char
goto fail;
}
diff --git a/meta/recipes-devtools/elfutils/files/debian/ignore_strmerge.diff b/meta/recipes-devtools/elfutils/files/debian/ignore_strmerge.diff
new file mode 100644
index 00000000000..55513eeddc4
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/files/debian/ignore_strmerge.diff
@@ -0,0 +1,14 @@
+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/mips_readelf_w.patch b/meta/recipes-devtools/elfutils/files/debian/mips_readelf_w.patch
deleted file mode 100644
index 790930cf359..00000000000
--- a/meta/recipes-devtools/elfutils/files/debian/mips_readelf_w.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From: Kurt Roeckx <kurt@roeckx.be>
-Subject: Make readelf -w output debug information on mips
-Bug-Debian: http://bugs.debian.org/662041
-Forwarded: not-needed
-
-Upstreams wants a change where this is handled by a hook that needs
-to be filled in by the backend for the arch.
-
-Upstream-Status: Backport [from debian]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
-Index: b/src/readelf.c
-===================================================================
---- a/src/readelf.c
-+++ b/src/readelf.c
-@@ -8343,7 +8343,8 @@ print_debug (Dwfl_Module *dwflmod, Ebl *
- 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
- {
diff --git a/meta/recipes-devtools/fdisk/gptfdisk_1.0.3.bb b/meta/recipes-devtools/fdisk/gptfdisk_1.0.4.bb
index 4d617e3e46f..4426a795e2a 100644
--- a/meta/recipes-devtools/fdisk/gptfdisk_1.0.3.bb
+++ b/meta/recipes-devtools/fdisk/gptfdisk_1.0.4.bb
@@ -7,8 +7,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
DEPENDS = "util-linux popt ncurses"
SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${PV}/${BP}.tar.gz"
-SRC_URI[md5sum] = "07b625a583b66c8c5840be5923f3e3fe"
-SRC_URI[sha256sum] = "89fd5aec35c409d610a36cb49c65b442058565ed84042f767bba614b8fc91b5c"
+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+[\.\-_]*)+)/"
diff --git a/meta/recipes-devtools/file/file/0001-Add-P-prompt-into-Usage-info.patch b/meta/recipes-devtools/file/file/0001-Add-P-prompt-into-Usage-info.patch
deleted file mode 100644
index 8a16b2cf735..00000000000
--- a/meta/recipes-devtools/file/file/0001-Add-P-prompt-into-Usage-info.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 08abf944b2bff27b6dd325dd15b4861cebef113a Mon Sep 17 00:00:00 2001
-From: Junling Zheng <zhengjunling@huawei.com>
-Date: Wed, 8 Apr 2015 03:26:57 +0000
-Subject: [PATCH] Add -P prompt into Usage info
-
-Currently, Usage info doesn't include -P prompt, add it:
-
-root@arma9el:~# file
-Usage: file [-bcEhikLlNnprsvz0] [--apple] [--mime-encoding] [--mime-type]
- [-e testname] [-F separator] [-f namefile] [-m magicfiles]
- [-P parameter=limits] file ...
- file -C [-m magicfiles]
- file [--help]
-
-Upstream-Status: Submitted
-
-Signed-off-by: Junling Zheng <zhengjunling@huawei.com>
----
- src/file.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/file.c b/src/file.c
-index 2b15e21..e5a957b 100644
---- a/src/file.c
-+++ b/src/file.c
-@@ -76,8 +76,8 @@ int getopt_long(int argc, char * const *argv, const char *optstring, const struc
- # define USAGE \
- "Usage: %s [" FILE_FLAGS \
- "] [--apple] [--extension] [--mime-encoding] [--mime-type]\n" \
-- " [-e testname] [-F separator] [-f namefile] [-m magicfiles] " \
-- "file ...\n" \
-+ " [-e testname] [-F separator] [-f namefile] [-m magicfiles]\n " \
-+ " [-P parameter=limits] file ...\n" \
- " %s -C [-m magicfiles]\n" \
- " %s [--help]\n"
-
---
-1.8.3.4
-
diff --git a/meta/recipes-devtools/file/file_5.32.bb b/meta/recipes-devtools/file/file_5.34.bb
index 5e159251267..6612b71000e 100644
--- a/meta/recipes-devtools/file/file_5.32.bb
+++ b/meta/recipes-devtools/file/file_5.34.bb
@@ -16,10 +16,9 @@ UPSTREAM_CHECK_GITTAGREGEX = "FILE(?P<pver>(?!6_23).+)"
SRC_URI = "git://github.com/file/file.git \
file://debian-742262.patch \
- file://0001-Add-P-prompt-into-Usage-info.patch \
"
-SRCREV = "d474e35513940dbca039b510b4de705b44f5bd9c"
+SRCREV = "315cef2f699da3c31a54bd3c6c6070680fbaf1f5"
S = "${WORKDIR}/git"
inherit autotools
diff --git a/meta/recipes-devtools/gcc/gcc-7.3.inc b/meta/recipes-devtools/gcc/gcc-7.3.inc
index d968c322d21..c7c88f12e49 100644
--- a/meta/recipes-devtools/gcc/gcc-7.3.inc
+++ b/meta/recipes-devtools/gcc/gcc-7.3.inc
@@ -32,7 +32,6 @@ 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://0008-c99-snprintf.patch \
file://0009-gcc-poison-system-directories.patch \
file://0010-gcc-poison-dir-extend.patch \
file://0011-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch \
@@ -72,6 +71,7 @@ SRC_URI = "\
file://0045-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch \
file://0047-sync-gcc-stddef.h-with-musl.patch \
file://0048-gcc-Enable-static-PIE.patch \
+ file://0049-gcc-override-TARGET_LIBC_PROVIDES_SSP.patch \
file://fix-segmentation-fault-precompiled-hdr.patch \
file://no-sse-fix-test-case-failures.patch \
${BACKPORTS} \
@@ -79,6 +79,8 @@ SRC_URI = "\
BACKPORTS = "\
file://0001-Fix-internal-compiler-error-in-testcase.patch \
file://0001-PR-rtl-optimization-83030.patch \
+ file://0001-Fix-ppc64le-build-Partial-backport-r256656.patch \
+ file://0001-PR-c-80290-memory-hog-with-std-pair.patch \
"
SRC_URI[md5sum] = "be2da21680f27624f3a87055c4ba5af2"
@@ -93,10 +95,12 @@ FORTRAN = ""
JAVA = ""
LTO = "--enable-lto"
+SSP ?= "--disable-libssp"
+SSP_mingw32 = "--enable-libssp"
EXTRA_OECONF_BASE = "\
${LTO} \
- --enable-libssp \
+ ${SSP} \
--enable-libitm \
--disable-bootstrap \
--disable-libmudflap \
@@ -118,9 +122,10 @@ EXTRA_OECONF_INITIAL = "\
--with-system-zlib \
--disable-lto \
--disable-plugin \
+ --enable-linker-build-id \
--enable-decimal-float=no \
--without-isl \
- gcc_cv_libc_provides_ssp=yes \
+ --disable-libssp \
"
EXTRA_OECONF_PATHS = "\
diff --git a/meta/recipes-devtools/gcc/gcc-7.3/0001-Fix-ppc64le-build-Partial-backport-r256656.patch b/meta/recipes-devtools/gcc/gcc-7.3/0001-Fix-ppc64le-build-Partial-backport-r256656.patch
new file mode 100644
index 00000000000..cfb70e1ecd7
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-7.3/0001-Fix-ppc64le-build-Partial-backport-r256656.patch
@@ -0,0 +1,37 @@
+From aa65a43516da1d48011ef621ed5988289711d99b Mon Sep 17 00:00:00 2001
+From: marxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Fri, 29 Jun 2018 09:31:30 +0000
+Subject: [PATCH] Partial backport r256656
+
+2018-06-29 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2018-01-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
+
+ * lex.c (search_line_fast): Remove illegal coercion of an
+ unaligned pointer value to vector pointer type and replace with
+ use of __builtin_vec_vsx_ld () built-in function, which operates
+ on unaligned pointer values.
+
+Upstream-Status: Backport
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ libcpp/lex.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletion(-)
+
+diff --git a/libcpp/lex.c b/libcpp/lex.c
+index 097c78002cbb..e0fb9e822c44 100644
+--- a/libcpp/lex.c
++++ b/libcpp/lex.c
+@@ -568,7 +568,7 @@ search_line_fast (const uchar *s, const uchar *end ATTRIBUTE_UNUSED)
+ {
+ vc m_nl, m_cr, m_bs, m_qm;
+
+- data = *((const vc *)s);
++ data = __builtin_vec_vsx_ld (0, s);
+ s += 16;
+
+ m_nl = (vc) __builtin_vec_cmpeq(data, repl_nl);
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/gcc/gcc-7.3/0001-PR-c-80290-memory-hog-with-std-pair.patch b/meta/recipes-devtools/gcc/gcc-7.3/0001-PR-c-80290-memory-hog-with-std-pair.patch
new file mode 100644
index 00000000000..603a29afecf
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-7.3/0001-PR-c-80290-memory-hog-with-std-pair.patch
@@ -0,0 +1,58 @@
+From 8c014bceeca6a558519e86b16a8142accc41e94f Mon Sep 17 00:00:00 2001
+From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Thu, 28 Jun 2018 00:25:21 +0000
+Subject: [PATCH] PR c++/80290 - memory-hog with std::pair.
+
+ * pt.c (type_unification_real): Skip non-dependent conversion
+ check for a nested list argument.
+ (braced_init_depth): New.
+
+Upstream-Status: Backport
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ gcc/cp/pt.c | 22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
+
+diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
+index 79cfd0129226..71077a3b0498 100644
+--- a/gcc/cp/pt.c
++++ b/gcc/cp/pt.c
+@@ -19242,6 +19242,24 @@ try_array_deduction (tree tparms, tree targs, tree parm)
+ /*nondeduced*/false, array_deduction_r);
+ }
+
++/* Returns how many levels of { } INIT contains. */
++
++static int
++braced_init_depth (tree init)
++{
++ if (!init || !BRACE_ENCLOSED_INITIALIZER_P (init))
++ return 0;
++ unsigned i; tree val;
++ unsigned max = 0;
++ FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (init), i, val)
++ {
++ unsigned elt_d = braced_init_depth (val);
++ if (elt_d > max)
++ max = elt_d;
++ }
++ return max + 1;
++}
++
+ /* Most parms like fn_type_unification.
+
+ If SUBR is 1, we're being called recursively (to unify the
+@@ -19478,6 +19496,10 @@ type_unification_real (tree tparms,
+
+ if (uses_template_parms (parm))
+ continue;
++ /* Workaround for c++/80290: avoid combinatorial explosion on
++ deeply nested braced init-lists. */
++ if (braced_init_depth (arg) > 2)
++ continue;
+ if (check_non_deducible_conversion (parm, arg, strict, flags,
+ explain_p))
+ return 1;
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/gcc/gcc-7.3/0008-c99-snprintf.patch b/meta/recipes-devtools/gcc/gcc-7.3/0008-c99-snprintf.patch
deleted file mode 100644
index ebd562b63fd..00000000000
--- a/meta/recipes-devtools/gcc/gcc-7.3/0008-c99-snprintf.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 732f10eead61830a8aee1bf38cce892da25c35b1 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:49:03 +0400
-Subject: [PATCH 08/47] c99-snprintf
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- libstdc++-v3/include/c_std/cstdio | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libstdc++-v3/include/c_std/cstdio b/libstdc++-v3/include/c_std/cstdio
-index 43969892aa2..12148457909 100644
---- a/libstdc++-v3/include/c_std/cstdio
-+++ b/libstdc++-v3/include/c_std/cstdio
-@@ -144,7 +144,7 @@ namespace std
- using ::vsprintf;
- } // namespace std
-
--#if _GLIBCXX_USE_C99_STDIO
-+#if _GLIBCXX_USE_C99_STDIO || defined(__UCLIBC__)
-
- #undef snprintf
- #undef vfscanf
---
-2.12.2
-
diff --git a/meta/recipes-devtools/gcc/gcc-7.3/0049-gcc-override-TARGET_LIBC_PROVIDES_SSP.patch b/meta/recipes-devtools/gcc/gcc-7.3/0049-gcc-override-TARGET_LIBC_PROVIDES_SSP.patch
new file mode 100644
index 00000000000..7c53c95c3a3
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-7.3/0049-gcc-override-TARGET_LIBC_PROVIDES_SSP.patch
@@ -0,0 +1,204 @@
+From 9815bd97561c778ee0bc0c17f245e88e66570111 Mon Sep 17 00:00:00 2001
+From: sandra <sandra@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Wed, 1 Nov 2017 02:14:19 +0000
+Subject: [PATCH] 2017-10-31 Sandra Loosemore <sandra@codesourcery.com>
+
+ gcc/
+ * configure.ac (--enable-libssp): New.
+ (gcc_cv_libc_provides_ssp): Check for explicit setting before
+ trying to determine target-specific default. Adjust indentation.
+ * configure: Regenerated.
+ * doc/install.texi (Configuration): Expand --disable-libssp
+ documentation.
+
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@254288 138bc75d-0d04-0410-961f-82ee72b054a4
+---
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Backport [https://patchwork.ozlabs.org/patch/823049/]
+
+ gcc/ChangeLog | 9 +++++++++
+ gcc/configure | 26 +++++++++++++++++++++++---
+ gcc/configure.ac | 24 ++++++++++++++++++++----
+ gcc/doc/install.texi | 3 ++-
+ 4 files changed, 54 insertions(+), 8 deletions(-)
+
+Index: gcc-7.3.0/gcc/configure.ac
+===================================================================
+--- gcc-7.3.0.orig/gcc/configure.ac
++++ gcc-7.3.0/gcc/configure.ac
+@@ -5719,10 +5719,25 @@ if test x$gcc_cv_solaris_crts = xyes; th
+ [Define if the system-provided CRTs are present on Solaris.])
+ fi
+
++AC_ARG_ENABLE(libssp,
++[AS_HELP_STRING([--enable-libssp], [enable linking against libssp])],
++[case "${enableval}" in
++ yes|no)
++ ;;
++ *)
++ AC_MSG_ERROR([unknown libssp setting $enableval])
++ ;;
++esac], [])
++
+ # Test for stack protector support in target C library.
+ AC_CACHE_CHECK(__stack_chk_fail in target C library,
+- gcc_cv_libc_provides_ssp,
+- [gcc_cv_libc_provides_ssp=no
++ gcc_cv_libc_provides_ssp,
++ [gcc_cv_libc_provides_ssp=no
++ if test "x$enable_libssp" = "xno"; then
++ gcc_cv_libc_provides_ssp=yes
++ elif test "x$enable_libssp" = "xyes"; then
++ gcc_cv_libc_provides_ssp=no
++ else
+ case "$target" in
+ *-*-musl*)
+ # All versions of musl provide stack protector
+@@ -5759,8 +5774,9 @@ AC_CACHE_CHECK(__stack_chk_fail in targe
+ AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
+ [echo "no __stack_chk_fail on this target"])
+ ;;
+- *) gcc_cv_libc_provides_ssp=no ;;
+- esac])
++ *) gcc_cv_libc_provides_ssp=no ;;
++ esac
++ fi])
+
+ if test x$gcc_cv_libc_provides_ssp = xyes; then
+ AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
+Index: gcc-7.3.0/gcc/doc/install.texi
+===================================================================
+--- gcc-7.3.0.orig/gcc/doc/install.texi
++++ gcc-7.3.0/gcc/doc/install.texi
+@@ -1658,7 +1658,8 @@ not be built.
+
+ @item --disable-libssp
+ Specify that the run-time libraries for stack smashing protection
+-should not be built.
++should not be built or linked against. On many targets library support
++is provided by the C library instead.
+
+ @item --disable-libquadmath
+ Specify that the GCC quad-precision math library should not be built.
+Index: gcc-7.3.0/gcc/configure
+===================================================================
+--- gcc-7.3.0.orig/gcc/configure
++++ gcc-7.3.0/gcc/configure
+@@ -940,6 +940,7 @@ enable_fix_cortex_a53_843419
+ with_glibc_version
+ enable_gnu_unique_object
+ enable_linker_build_id
++enable_libssp
+ enable_default_ssp
+ with_long_double_128
+ with_gc
+@@ -1679,6 +1680,7 @@ Optional Features:
+ extension on glibc systems
+ --enable-linker-build-id
+ compiler will always pass --build-id to linker
++ --enable-libssp enable linking against libssp
+ --enable-default-ssp enable Stack Smashing Protection as default
+ --enable-maintainer-mode
+ enable make rules and dependencies not useful (and
+@@ -18450,7 +18452,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 18436 "configure"
++#line 18455 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -18556,7 +18558,7 @@ else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+-#line 18542 "configure"
++#line 18561 "configure"
+ #include "confdefs.h"
+
+ #if HAVE_DLFCN_H
+@@ -25234,6 +25236,7 @@ $as_echo "#define HAVE_AS_SPARC5_VIS4 1"
+
+ fi
+
++
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for SPARC6 instructions" >&5
+ $as_echo_n "checking assembler for SPARC6 instructions... " >&6; }
+ if test "${gcc_cv_as_sparc_sparc6+set}" = set; then :
+@@ -25270,6 +25273,7 @@ $as_echo "#define HAVE_AS_SPARC6 1" >>co
+
+ fi
+
++
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for LEON instructions" >&5
+ $as_echo_n "checking assembler for LEON instructions... " >&6; }
+ if test "${gcc_cv_as_sparc_leon+set}" = set; then :
+@@ -28947,6 +28951,18 @@ $as_echo "#define HAVE_SOLARIS_CRTS 1" >
+
+ fi
+
++# Check whether --enable-libssp was given.
++if test "${enable_libssp+set}" = set; then :
++ enableval=$enable_libssp; case "${enableval}" in
++ yes|no)
++ ;;
++ *)
++ as_fn_error "unknown libssp setting $enableval" "$LINENO" 5
++ ;;
++esac
++fi
++
++
+ # Test for stack protector support in target C library.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking __stack_chk_fail in target C library" >&5
+ $as_echo_n "checking __stack_chk_fail in target C library... " >&6; }
+@@ -28954,6 +28970,11 @@ if test "${gcc_cv_libc_provides_ssp+set}
+ $as_echo_n "(cached) " >&6
+ else
+ gcc_cv_libc_provides_ssp=no
++ if test "x$enable_libssp" = "xno"; then
++ gcc_cv_libc_provides_ssp=yes
++ elif test "x$enable_libssp" = "xyes"; then
++ gcc_cv_libc_provides_ssp=no
++ else
+ case "$target" in
+ *-*-musl*)
+ # All versions of musl provide stack protector
+@@ -29001,8 +29022,9 @@ else
+ fi
+
+ ;;
+- *) gcc_cv_libc_provides_ssp=no ;;
++ *) gcc_cv_libc_provides_ssp=no ;;
+ esac
++ fi
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_libc_provides_ssp" >&5
+ $as_echo "$gcc_cv_libc_provides_ssp" >&6; }
+@@ -29037,18 +29059,15 @@ fi
+
+
+ # Test for <sys/sdt.h> on the target.
+-
+-{ $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
++#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
+-#
+-#$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
+-#
++# AC_DEFINE(HAVE_SYS_SDT_H, 1,
++# [Define if your target C library provides sys/sdt.h])
+ #fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_sys_sdt_h" >&5
+-$as_echo "$have_sys_sdt_h" >&6; }
++#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/meta/recipes-devtools/gcc/gcc-8.2.inc b/meta/recipes-devtools/gcc/gcc-8.2.inc
new file mode 100644
index 00000000000..866a77558b4
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2.inc
@@ -0,0 +1,127 @@
+require gcc-common.inc
+
+# Third digit in PV should be incremented after a minor release
+
+PV = "8.2.0"
+
+# BINV should be incremented to a revision after a minor gcc release
+
+BINV = "8.2.0"
+
+FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc-8.2:${FILE_DIRNAME}/gcc-8.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 \
+"
+
+#RELEASE = "8.0.1-RC-20180427"
+BASEURI ?= "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.xz"
+#SRCREV = "f7cf798b73fd1a07098f9a490deec1e2a36e0bed"
+#BASEURI ?= "git://github.com/gcc-mirror/gcc;branch=gcc-6-branch;protocol=git"
+#BASEURI ?= "http://mirrors.concertpass.com/gcc/snapshots/${RELEASE}/gcc-${RELEASE}.tar.xz"
+
+SRC_URI = "\
+ ${BASEURI} \
+ file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \
+ file://0003-gcc-poison-system-directories.patch \
+ file://0005-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch \
+ file://0006-64-bit-multilib-hack.patch \
+ file://0007-optional-libstdc.patch \
+ file://0008-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch \
+ file://0009-COLLECT_GCC_OPTIONS.patch \
+ file://0010-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch \
+ file://0011-fortran-cross-compile-hack.patch \
+ file://0012-cpp-honor-sysroot.patch \
+ file://0013-MIPS64-Default-to-N64-ABI.patch \
+ file://0014-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch \
+ file://0015-gcc-Fix-argument-list-too-long-error.patch \
+ file://0016-Disable-sdt.patch \
+ file://0017-libtool.patch \
+ file://0018-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch \
+ file://0019-Use-the-multilib-config-files-from-B-instead-of-usin.patch \
+ file://0020-Avoid-using-libdir-from-.la-which-usually-points-to-.patch \
+ file://0021-export-CPP.patch \
+ file://0022-Disable-the-MULTILIB_OSDIRNAMES-and-other-multilib-o.patch \
+ file://0023-Ensure-target-gcc-headers-can-be-included.patch \
+ file://0024-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch \
+ file://0025-Don-t-search-host-directory-during-relink-if-inst_pr.patch \
+ file://0026-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch \
+ file://0027-aarch64-Add-support-for-musl-ldso.patch \
+ file://0028-libcc1-fix-libcc1-s-install-path-and-rpath.patch \
+ file://0029-handle-sysroot-support-for-nativesdk-gcc.patch \
+ file://0030-Search-target-sysroot-gcc-version-specific-dirs-with.patch \
+ file://0031-Fix-various-_FOR_BUILD-and-related-variables.patch \
+ file://0032-nios2-Define-MUSL_DYNAMIC_LINKER.patch \
+ file://0033-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch \
+ file://0034-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch \
+ file://0035-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch \
+ file://0036-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch \
+ file://0037-sync-gcc-stddef.h-with-musl.patch \
+ file://0038-fix-segmentation-fault-in-precompiled-header-generat.patch \
+ file://0039-Fix-for-testsuite-failure.patch \
+ file://0040-Re-introduce-spe-commandline-options.patch \
+ file://0041-ARC-fix-spec-gen.patch \
+ ${BACKPORTS} \
+"
+BACKPORTS = "\
+"
+SRC_URI[md5sum] = "4ab282f414676496483b3e1793d07862"
+SRC_URI[sha256sum] = "196c3c04ba2613f893283977e6011b2345d1cd1af9abeac58e916b1aab3e0080"
+
+S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}"
+#S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/git"
+#S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/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-8.2/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch b/meta/recipes-devtools/gcc/gcc-8.2/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
new file mode 100644
index 00000000000..423fe28e114
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
@@ -0,0 +1,42 @@
+From b752fb2b6d6f6da68da5386b96abf0d74cd4bbe6 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/39] gcc-4.3.1: ARCH_FLAGS_FOR_TARGET
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Inappropriate [embedded specific]
+---
+ configure | 2 +-
+ configure.ac | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure b/configure
+index 69c99e99cca..517fb70192e 100755
+--- a/configure
++++ b/configure
+@@ -7511,7 +7511,7 @@ fi
+ # for target_alias and gcc doesn't manage it consistently.
+ target_configargs="--cache-file=./config.cache ${target_configargs}"
+
+-FLAGS_FOR_TARGET=
++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
+ case " $target_configdirs " in
+ *" newlib "*)
+ case " $target_configargs " in
+diff --git a/configure.ac b/configure.ac
+index a1edc369a27..f8c254f1fac 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -3100,7 +3100,7 @@ fi
+ # for target_alias and gcc doesn't manage it consistently.
+ target_configargs="--cache-file=./config.cache ${target_configargs}"
+
+-FLAGS_FOR_TARGET=
++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
+ case " $target_configdirs " in
+ *" newlib "*)
+ case " $target_configargs " in
+--
+2.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0003-gcc-poison-system-directories.patch b/meta/recipes-devtools/gcc/gcc-8.2/0003-gcc-poison-system-directories.patch
new file mode 100644
index 00000000000..05138976c3b
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0003-gcc-poison-system-directories.patch
@@ -0,0 +1,194 @@
+From 48c670d2678e0323d88eb72205e039f393cabe05 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 03/39] gcc: poison-system-directories
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Inappropriate [distribution: codesourcery]
+---
+ 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 | 19 +++++++++++++++++++
+ 7 files changed, 66 insertions(+)
+
+diff --git a/gcc/common.opt b/gcc/common.opt
+index d6ef85928f3..7b29efe3882 100644
+--- a/gcc/common.opt
++++ b/gcc/common.opt
+@@ -679,6 +679,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 5bccb408016..1c784a8276b 100644
+--- a/gcc/config.in
++++ b/gcc/config.in
+@@ -194,6 +194,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 5c345ce0fd7..cafd05fd150 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -953,6 +953,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
+@@ -1696,6 +1697,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
+@@ -29715,6 +29718,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 65dbf1f2f80..dd5b38195ce 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -6341,6 +6341,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 255149fcfb8..cb71b60fe3c 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -303,6 +303,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 -Wredundant-decls -Wrestrict -Wno-return-local-addr @gol
+ -Wreturn-type -Wsequence-point -Wshadow -Wno-shadow-ivar @gol
+@@ -5712,6 +5713,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 a716f708259..02b3cd39fc2 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -1037,6 +1037,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:%{!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 " CHKP_SPEC " \
+ %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
+diff --git a/gcc/incpath.c b/gcc/incpath.c
+index b11c6a57939..e3b7a21966f 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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0005-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch b/meta/recipes-devtools/gcc/gcc-8.2/0005-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
new file mode 100644
index 00000000000..8b1b9769a40
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0005-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
@@ -0,0 +1,73 @@
+From ae3fe6e5e50937de6e4223ca90810187372a8cf5 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 05/39] 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 517fb70192e..acd2b97df40 100755
+--- a/configure
++++ b/configure
+@@ -6772,6 +6772,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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0006-64-bit-multilib-hack.patch b/meta/recipes-devtools/gcc/gcc-8.2/0006-64-bit-multilib-hack.patch
new file mode 100644
index 00000000000..0dce95c890f
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0006-64-bit-multilib-hack.patch
@@ -0,0 +1,85 @@
+From 89af3b7399313b337f06c19cc2d787aa16d27711 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 06/39] 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
+complete customisation of the library directories.
+
+This patch is a partial solution to allow any custom directories to be passed into gcc
+and handled correctly. It forces gcc to use the base_libdir (which is the current
+directory, "."). We need to do this for each multilib that is configured as we don't
+know which compiler options may be being passed into the compiler. Since we have a compiler
+per mulitlib at this point that isn't an issue.
+
+The one problem is the target compiler is only going to work for the default multlilib at
+this point. Ideally we'd figure out which multilibs were being enabled with which paths
+and be able to patch these entries with a complete set of correct paths but this we
+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.
+
+RP 15/8/11
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Elvis Dowson <elvis.dowson@gmail.com>
+
+Upstream-Status: Pending
+---
+ gcc/config/i386/t-linux64 | 6 ++----
+ gcc/config/mips/t-linux64 | 10 +++-------
+ gcc/config/rs6000/t-linux64 | 5 ++---
+ 3 files changed, 7 insertions(+), 14 deletions(-)
+
+diff --git a/gcc/config/i386/t-linux64 b/gcc/config/i386/t-linux64
+index 8ea0faff369..266c6008004 100644
+--- a/gcc/config/i386/t-linux64
++++ b/gcc/config/i386/t-linux64
+@@ -32,7 +32,5 @@
+ #
+ comma=,
+ MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG))
+-MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS)))
+-MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu)
+-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu)
+-MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32)
++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 c017b7d04c5..126892cf40b 100644
+--- a/gcc/config/mips/t-linux64
++++ b/gcc/config/mips/t-linux64
+@@ -17,10 +17,6 @@
+ # <http://www.gnu.org/licenses/>.
+
+ MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64
+-MULTILIB_DIRNAMES = n32 32 64
+-MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el)
+-MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft)
+-MULTILIB_OSDIRNAMES = \
+- ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
+- ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
+- ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
++MULTILIB_DIRNAMES = . . .
++MULTILIB_OSDIRNAMES = ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir))
++
+diff --git a/gcc/config/rs6000/t-linux64 b/gcc/config/rs6000/t-linux64
+index 0faa2a02df4..13fd8ca971e 100644
+--- a/gcc/config/rs6000/t-linux64
++++ b/gcc/config/rs6000/t-linux64
+@@ -26,10 +26,9 @@
+ # MULTILIB_OSDIRNAMES according to what is found on the target.
+
+ MULTILIB_OPTIONS := m64/m32
+-MULTILIB_DIRNAMES := 64 32
++MULTILIB_DIRNAMES := . .
+ MULTILIB_EXTRA_OPTS :=
+-MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu)
+-MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu)
++MULTILIB_OSDIRNAMES := ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir))
+
+ rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.c
+ $(COMPILE) $<
+--
+2.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0007-optional-libstdc.patch b/meta/recipes-devtools/gcc/gcc-8.2/0007-optional-libstdc.patch
new file mode 100644
index 00000000000..721ea03fadd
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0007-optional-libstdc.patch
@@ -0,0 +1,125 @@
+From fb7df63e9548c29b70601d642a1850fc455f8565 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 07/39] 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 5013501b232..6312f2c8f90 100644
+--- a/gcc/c-family/c.opt
++++ b/gcc/c-family/c.opt
+@@ -1900,6 +1900,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 443a1746da3..e9b51be62ef 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 cb71b60fe3c..b0d481e3a30 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -211,6 +211,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 -Wliteral-suffix -Wmultiple-inheritance @gol
+@@ -509,7 +512,7 @@ Objective-C and Objective-C++ Dialects}.
+ -s -static -static-pie -static-libgcc -static-libstdc++ @gol
+ -static-libasan -static-libtsan -static-liblsan -static-libubsan @gol
+ -static-libmpx -static-libmpxwrappers @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}}
+
+@@ -12331,6 +12334,33 @@ library subroutines.
+ constructors are called; @pxref{Collect2,,@code{collect2}, gccint,
+ GNU Compiler Collection (GCC) Internals}.)
+
++@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 02b3cd39fc2..8cd27a5dad5 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -1047,6 +1047,7 @@ proper position among the other output files. */
+ %(mflib) " STACK_SPLIT_SPEC "\
+ %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} " SANITIZER_SPEC " \
+ %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\
++ %{!nostdlib++:}\
+ %{!nostdlib:%{!nostartfiles:%E}} %{T*} \n%(post_link) }}}}}}"
+ #endif
+
+--
+2.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0008-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch b/meta/recipes-devtools/gcc/gcc-8.2/0008-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch
new file mode 100644
index 00000000000..a76b7f735b7
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0008-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch
@@ -0,0 +1,59 @@
+From 11eb97efccb90b830c84ed077a25b1a15ad3335b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Mar 2013 09:14:20 +0400
+Subject: [PATCH 08/39] gcc: disable MASK_RELAX_PIC_CALLS bit
+
+The new feature added after 4.3.3
+"http://www.pubbs.net/200909/gcc/94048-patch-add-support-for-rmipsjalr.html"
+will cause cc1plus eat up all the system memory when build webkit-gtk.
+The function mips_get_pic_call_symbol keeps on recursively calling itself.
+Disable this feature to walk aside the bug.
+
+Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Inappropriate [configuration]
+---
+ gcc/configure | 7 -------
+ gcc/configure.ac | 7 -------
+ 2 files changed, 14 deletions(-)
+
+diff --git a/gcc/configure b/gcc/configure
+index cafd05fd150..19ba051d673 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -27553,13 +27553,6 @@ $as_echo_n "checking assembler and linker for explicit JALR relocation... " >&6;
+ rm -f conftest.*
+ fi
+ fi
+- if test $gcc_cv_as_ld_jalr_reloc = yes; then
+- if test x$target_cpu_default = x; then
+- target_cpu_default=MASK_RELAX_PIC_CALLS
+- else
+- target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
+- fi
+- fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_ld_jalr_reloc" >&5
+ $as_echo "$gcc_cv_as_ld_jalr_reloc" >&6; }
+
+diff --git a/gcc/configure.ac b/gcc/configure.ac
+index dd5b38195ce..066dfe19bb6 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -4798,13 +4798,6 @@ x:
+ rm -f conftest.*
+ fi
+ fi
+- if test $gcc_cv_as_ld_jalr_reloc = yes; then
+- if test x$target_cpu_default = x; then
+- target_cpu_default=MASK_RELAX_PIC_CALLS
+- else
+- target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
+- fi
+- fi
+ AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
+
+ AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
+--
+2.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0009-COLLECT_GCC_OPTIONS.patch b/meta/recipes-devtools/gcc/gcc-8.2/0009-COLLECT_GCC_OPTIONS.patch
new file mode 100644
index 00000000000..3abece0da7c
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0009-COLLECT_GCC_OPTIONS.patch
@@ -0,0 +1,38 @@
+From e19d25847f08eeb5ef26a031fa5eff732bfd0d43 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 09/39] 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 8cd27a5dad5..d355d65583a 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -4677,6 +4677,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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0010-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch b/meta/recipes-devtools/gcc/gcc-8.2/0010-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch
new file mode 100644
index 00000000000..5785b589347
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0010-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch
@@ -0,0 +1,96 @@
+From 265cb883c310f3bb7e49fd13b81362476fbeb6c1 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 10/39] 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,
+gcc-cross-intermediate, gcc-cross, gcc-runtime, and also the sdk build.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+
+While compiling gcc-crosssdk-initial-x86_64 on some host, there is
+occasionally failure that test the existance of default.h doesn't
+work, the reason is tm_include_list='** defaults.h' rather than
+tm_include_list='** ./defaults.h'
+
+So we add the test condition for this situation.
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ gcc/Makefile.in | 2 +-
+ gcc/configure | 4 ++--
+ gcc/configure.ac | 4 ++--
+ gcc/mkconfig.sh | 4 ++--
+ 4 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/gcc/Makefile.in b/gcc/Makefile.in
+index 20bee0494b1..1367136bfac 100644
+--- a/gcc/Makefile.in
++++ b/gcc/Makefile.in
+@@ -538,7 +538,7 @@ TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@
+ TARGET_SYSTEM_ROOT_DEFINE = @TARGET_SYSTEM_ROOT_DEFINE@
+
+ xmake_file=@xmake_file@
+-tmake_file=@tmake_file@
++tmake_file=@tmake_file@ ./t-oe
+ TM_ENDIAN_CONFIG=@TM_ENDIAN_CONFIG@
+ TM_MULTILIB_CONFIG=@TM_MULTILIB_CONFIG@
+ TM_MULTILIB_EXCEPTIONS_CONFIG=@TM_MULTILIB_EXCEPTIONS_CONFIG@
+diff --git a/gcc/configure b/gcc/configure
+index 19ba051d673..a575839c1b2 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -12158,8 +12158,8 @@ for f in $tm_file; do
+ tm_include_list="${tm_include_list} $f"
+ ;;
+ defaults.h )
+- tm_file_list="${tm_file_list} \$(srcdir)/$f"
+- tm_include_list="${tm_include_list} $f"
++ tm_file_list="${tm_file_list} ./$f"
++ tm_include_list="${tm_include_list} ./$f"
+ ;;
+ * )
+ tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
+diff --git a/gcc/configure.ac b/gcc/configure.ac
+index 066dfe19bb6..676116a6d96 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -1922,8 +1922,8 @@ for f in $tm_file; do
+ tm_include_list="${tm_include_list} $f"
+ ;;
+ defaults.h )
+- tm_file_list="${tm_file_list} \$(srcdir)/$f"
+- tm_include_list="${tm_include_list} $f"
++ tm_file_list="${tm_file_list} ./$f"
++ tm_include_list="${tm_include_list} ./$f"
+ ;;
+ * )
+ tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
+diff --git a/gcc/mkconfig.sh b/gcc/mkconfig.sh
+index 0f75c863c0b..68d8d6613cf 100644
+--- a/gcc/mkconfig.sh
++++ b/gcc/mkconfig.sh
+@@ -77,7 +77,7 @@ if [ -n "$HEADERS" ]; then
+ if [ $# -ge 1 ]; then
+ echo '#ifdef IN_GCC' >> ${output}T
+ for file in "$@"; do
+- if test x"$file" = x"defaults.h"; then
++ if test x"$file" = x"./defaults.h" -o x"$file" = x"defaults.h"; then
+ postpone_defaults_h="yes"
+ else
+ echo "# include \"$file\"" >> ${output}T
+@@ -106,7 +106,7 @@ esac
+
+ # If we postponed including defaults.h, add the #include now.
+ if test x"$postpone_defaults_h" = x"yes"; then
+- echo "# include \"defaults.h\"" >> ${output}T
++ echo "# include \"./defaults.h\"" >> ${output}T
+ fi
+
+ # Add multiple inclusion protection guard, part two.
+--
+2.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0011-fortran-cross-compile-hack.patch b/meta/recipes-devtools/gcc/gcc-8.2/0011-fortran-cross-compile-hack.patch
new file mode 100644
index 00000000000..fe0fb7d5317
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0011-fortran-cross-compile-hack.patch
@@ -0,0 +1,46 @@
+From 71cba188d47b6ae9d9b87261eb4bc9eb68ae355d 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 11/39] 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 91fce8fecd0..6747f86eb98 100755
+--- a/libgfortran/configure
++++ b/libgfortran/configure
+@@ -12883,7 +12883,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 bf6d3634dda..9dbe43cc616 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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0012-cpp-honor-sysroot.patch b/meta/recipes-devtools/gcc/gcc-8.2/0012-cpp-honor-sysroot.patch
new file mode 100644
index 00000000000..961f96f11e5
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0012-cpp-honor-sysroot.patch
@@ -0,0 +1,54 @@
+From b3e8e7e8ae106e3207e9edc3d23dcce1464b755f 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 12/39] 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 f0802b8915c..f324d299849 100644
+--- a/gcc/cp/lang-specs.h
++++ b/gcc/cp/lang-specs.h
+@@ -64,5 +64,5 @@ along with GCC; see the file COPYING3. If not see
+ {".ii", "@c++-cpp-output", 0, 0, 0},
+ {"@c++-cpp-output",
+ "%{!M:%{!MM:%{!E:\
+- 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 d355d65583a..570cdc00034 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -1343,7 +1343,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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0013-MIPS64-Default-to-N64-ABI.patch b/meta/recipes-devtools/gcc/gcc-8.2/0013-MIPS64-Default-to-N64-ABI.patch
new file mode 100644
index 00000000000..8ef8806b217
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0013-MIPS64-Default-to-N64-ABI.patch
@@ -0,0 +1,57 @@
+From 0f3629978cd7c98614e87d4fd190b89864221631 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 13/39] 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 8741dd1e3b2..2ffcb39d85f 100644
+--- a/gcc/config.gcc
++++ b/gcc/config.gcc
+@@ -2137,29 +2137,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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0014-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch b/meta/recipes-devtools/gcc/gcc-8.2/0014-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
new file mode 100644
index 00000000000..043bb9dd22d
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0014-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
@@ -0,0 +1,248 @@
+From 53f1c382b1366c5621c8edead9c766950c290fd9 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 14/39] Define GLIBC_DYNAMIC_LINKER and UCLIBC_DYNAMIC_LINKER
+ relative to SYSTEMLIBS_DIR
+
+This patch defines GLIBC_DYNAMIC_LINKER and UCLIBC_DYNAMIC_LINKER
+relative to SYSTEMLIBS_DIR which can be set in generated headers
+This breaks the assumption of hardcoded multilib in gcc
+Change is only for the supported architectures in OE including
+SH, sparc, alpha for possible future support (if any)
+
+Removes the do_headerfix task in metadata
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Inappropriate [OE configuration]
+---
+ gcc/config/alpha/linux-elf.h | 4 ++--
+ gcc/config/arm/linux-eabi.h | 4 ++--
+ gcc/config/arm/linux-elf.h | 2 +-
+ gcc/config/i386/linux.h | 2 +-
+ gcc/config/i386/linux64.h | 6 +++---
+ gcc/config/linux.h | 8 ++++----
+ gcc/config/mips/linux.h | 12 ++++++------
+ gcc/config/riscv/linux.h | 2 +-
+ gcc/config/rs6000/linux64.h | 16 ++++++----------
+ gcc/config/sh/linux.h | 2 +-
+ gcc/config/sparc/linux.h | 2 +-
+ gcc/config/sparc/linux64.h | 4 ++--
+ 12 files changed, 30 insertions(+), 34 deletions(-)
+
+diff --git a/gcc/config/alpha/linux-elf.h b/gcc/config/alpha/linux-elf.h
+index 36b74dc1993..02373578af8 100644
+--- 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
+ #define EXTRA_SPECS \
+ { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+-#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux.so.2"
++#define UCLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-uClibc.so.0"
+ #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 8585fde3d41..b3af68cac57 100644
+--- a/gcc/config/arm/linux-eabi.h
++++ b/gcc/config/arm/linux-eabi.h
+@@ -62,8 +62,8 @@
+ GLIBC_DYNAMIC_LINKER_DEFAULT and TARGET_DEFAULT_FLOAT_ABI. */
+
+ #undef GLIBC_DYNAMIC_LINKER
+-#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
+-#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
++#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT SYSTEMLIBS_DIR "ld-linux.so.3"
++#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT SYSTEMLIBS_DIR "ld-linux-armhf.so.3"
+ #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 cfcd9cb1a5c..a798e987ecb 100644
+--- a/gcc/config/arm/linux-elf.h
++++ b/gcc/config/arm/linux-elf.h
+@@ -60,7 +60,7 @@
+
+ #define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux.so.2"
+
+ #define LINUX_TARGET_LINK_SPEC "%{h*} \
+ %{static:-Bstatic} \
+diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h
+index 69f97f15b0d..71bc31d9231 100644
+--- 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
+ <http://www.gnu.org/licenses/>. */
+
+ #define GNU_USER_LINK_EMULATION "elf_i386"
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux.so.2"
+
+ #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 f2d913e30ac..8725f33d8a5 100644
+--- 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
+ #define GNU_USER_LINK_EMULATION64 "elf_x86_64"
+ #define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64"
+
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
+-#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
++#define GLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-linux-x86-64.so.2"
++#define GLIBC_DYNAMIC_LINKERX32 SYSTEMLIBS_DIR "ld-linux-x32.so.2"
+
+ #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 2ea4ff92c1d..487b0c0923b 100644
+--- a/gcc/config/linux.h
++++ b/gcc/config/linux.h
+@@ -81,10 +81,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ GLIBC_DYNAMIC_LINKER must be defined for each target using them, or
+ GLIBC_DYNAMIC_LINKER32 and GLIBC_DYNAMIC_LINKER64 for targets
+ supporting both 32-bit and 64-bit compilation. */
+-#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKERX32 "/lib/ldx32-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld64-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKERX32 SYSTEMLIBS_DIR "ldx32-uClibc.so.0"
+ #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 2dfd0c18b90..12057c51b5e 100644
+--- 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
+ #define GNU_USER_LINK_EMULATIONN32 "elf32%{EB:b}%{EL:l}tsmipn32"
+
+ #define GLIBC_DYNAMIC_LINKER32 \
+- "%{mnan=2008:/lib/ld-linux-mipsn8.so.1;:/lib/ld.so.1}"
++ "%{mnan=2008:" SYSTEMLIBS_DIR "ld-linux-mipsn8.so.1;:" SYSTEMLIBS_DIR "ld.so.1}"
+ #define GLIBC_DYNAMIC_LINKER64 \
+- "%{mnan=2008:/lib64/ld-linux-mipsn8.so.1;:/lib64/ld.so.1}"
++ "%{mnan=2008:" SYSTEMLIBS_DIR "ld-linux-mipsn8.so.1;:" SYSTEMLIBS_DIR "ld.so.1}"
+ #define GLIBC_DYNAMIC_LINKERN32 \
+- "%{mnan=2008:/lib32/ld-linux-mipsn8.so.1;:/lib32/ld.so.1}"
++ "%{mnan=2008:" SYSTEMLIBS_DIR "ld-linux-mipsn8.so.1;:" SYSTEMLIBS_DIR "ld.so.1}"
+
+ #undef UCLIBC_DYNAMIC_LINKER32
+ #define UCLIBC_DYNAMIC_LINKER32 \
+- "%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
++ "%{mnan=2008:" SYSTEMLIBS_DIR "ld-uClibc-mipsn8.so.0;:" SYSTEMLIBS_DIR "ld-uClibc.so.0}"
+ #undef UCLIBC_DYNAMIC_LINKER64
+ #define UCLIBC_DYNAMIC_LINKER64 \
+- "%{mnan=2008:/lib/ld64-uClibc-mipsn8.so.0;:/lib/ld64-uClibc.so.0}"
++ "%{mnan=2008:" SYSTEMLIBS_DIR "ld64-uClibc-mipsn8.so.0;:" SYSTEMLIBS_DIR "ld64-uClibc.so.0}"
+ #define UCLIBC_DYNAMIC_LINKERN32 \
+- "%{mnan=2008:/lib32/ld-uClibc-mipsn8.so.0;:/lib32/ld-uClibc.so.0}"
++ "%{mnan=2008:" SYSTEMLIBS_DIR "ld-uClibc-mipsn8.so.0;:" SYSTEMLIBS_DIR "ld-uClibc.so.0}"
+
+ #undef MUSL_DYNAMIC_LINKER32
+ #define MUSL_DYNAMIC_LINKER32 \
+diff --git a/gcc/config/riscv/linux.h b/gcc/config/riscv/linux.h
+index aa8a28d5d..ebf9551c9 100644
+--- a/gcc/config/riscv/linux.h
++++ b/gcc/config/riscv/linux.h
+@@ -22,7 +22,7 @@ along with GCC; see the file COPYING3.
+ GNU_USER_TARGET_OS_CPP_BUILTINS(); \
+ } while (0)
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-riscv" XLEN_SPEC "-" ABI_SPEC ".so.1"
++#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux-riscv" XLEN_SPEC "-" ABI_SPEC ".so.1"
+
+ #define MUSL_ABI_SUFFIX \
+ "%{mabi=ilp32:-sf}" \
+diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h
+index 90fe6566255..55695dadd91 100644
+--- a/gcc/config/rs6000/linux64.h
++++ b/gcc/config/rs6000/linux64.h
+@@ -420,16 +420,11 @@ extern int dot_symbols;
+ #undef LINK_OS_DEFAULT_SPEC
+ #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
+
+-#define GLIBC_DYNAMIC_LINKER32 "%(dynamic_linker_prefix)/lib/ld.so.1"
+-
++#define GLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld.so.1"
+ #ifdef LINUX64_DEFAULT_ABI_ELFv2
+-#define GLIBC_DYNAMIC_LINKER64 \
+-"%{mabi=elfv1:%(dynamic_linker_prefix)/lib64/ld64.so.1;" \
+-":%(dynamic_linker_prefix)/lib64/ld64.so.2}"
++#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv1:" SYSTEMLIBS_DIR "ld64.so.1;:" SYSTEMLIBS_DIR "ld64.so.2}"
+ #else
+-#define GLIBC_DYNAMIC_LINKER64 \
+-"%{mabi=elfv2:%(dynamic_linker_prefix)/lib64/ld64.so.2;" \
+-":%(dynamic_linker_prefix)/lib64/ld64.so.1}"
++#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv2:" SYSTEMLIBS_DIR "ld64.so.2;:" SYSTEMLIBS_DIR "ld64.so.1}"
+ #endif
+
+ #define MUSL_DYNAMIC_LINKER32 \
+@@ -437,8 +432,9 @@ extern int dot_symbols;
+ #define MUSL_DYNAMIC_LINKER64 \
+ "/lib/ld-musl-powerpc64" MUSL_DYNAMIC_LINKER_E "%{msoft-float:-sf}.so.1"
+
+-#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld64-uClibc.so.0"
++
+ #if DEFAULT_LIBC == LIBC_UCLIBC
+ #define CHOOSE_DYNAMIC_LINKER(G, U, M) \
+ "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
+diff --git a/gcc/config/sh/linux.h b/gcc/config/sh/linux.h
+index 6d2ccd012ba..ec78a89ce15 100644
+--- 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
+ "/lib/ld-musl-sh" MUSL_DYNAMIC_LINKER_E MUSL_DYNAMIC_LINKER_FP \
+ "%{mfdpic:-fdpic}.so.1"
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux.so.2"
+
+ #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 9fb03af0fe9..401fddbbb22 100644
+--- a/gcc/config/sparc/linux.h
++++ b/gcc/config/sparc/linux.h
+@@ -83,7 +83,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. */
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux.so.2"
+
+ #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 c1fe42165b7..26a79bfa2e3 100644
+--- 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
+ When the -shared link option is used a final link is not being
+ done. */
+
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-linux.so.2"
+
+ #ifdef SPARC_BI_ARCH
+
+--
+2.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0015-gcc-Fix-argument-list-too-long-error.patch b/meta/recipes-devtools/gcc/gcc-8.2/0015-gcc-Fix-argument-list-too-long-error.patch
new file mode 100644
index 00000000000..4bff84285b0
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0015-gcc-Fix-argument-list-too-long-error.patch
@@ -0,0 +1,40 @@
+From 2e75a14cd60227e036790184f0eb400abc3c870b 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 15/39] 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 1367136bfac..71a8275c39f 100644
+--- a/gcc/Makefile.in
++++ b/gcc/Makefile.in
+@@ -3538,7 +3538,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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0016-Disable-sdt.patch b/meta/recipes-devtools/gcc/gcc-8.2/0016-Disable-sdt.patch
new file mode 100644
index 00000000000..81975462001
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0016-Disable-sdt.patch
@@ -0,0 +1,113 @@
+From 423d87ac47d21e399d759d7ff3b638f0c721a7df 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 16/39] 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 a575839c1b2..872338f29b6 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -29296,12 +29296,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 676116a6d96..55046e68926 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -5957,15 +5957,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 c9dbaa139d5..c64a77d152b 100755
+--- a/libstdc++-v3/configure
++++ b/libstdc++-v3/configure
+@@ -21786,11 +21786,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 0ef96270c9c..afe55a1b215 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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0017-libtool.patch b/meta/recipes-devtools/gcc/gcc-8.2/0017-libtool.patch
new file mode 100644
index 00000000000..0caa1ce160f
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0017-libtool.patch
@@ -0,0 +1,42 @@
+From c8b11e96b11910b2d4df6ae8104466e3303d933f 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 17/39] libtool
+
+libstdc++ from gcc-runtime gets created with -rpath=/usr/lib/../lib for qemux86-64
+when running on am x86_64 build host.
+
+This patch stops this speading to libdir in the libstdc++.la file within libtool.
+Arguably, it shouldn't be passing this into libtool in the first place but
+for now this resolves the nastiest problems this causes.
+
+func_normal_abspath would resolve an empty path to `pwd` so we need
+to filter the zero case.
+
+RP 2012/8/24
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ ltmain.sh | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/ltmain.sh b/ltmain.sh
+index 9503ec85d70..0121fba707f 100644
+--- a/ltmain.sh
++++ b/ltmain.sh
+@@ -6359,6 +6359,10 @@ func_mode_link ()
+ func_warning "ignoring multiple \`-rpath's for a libtool library"
+
+ install_libdir="$1"
++ if test -n "$install_libdir"; then
++ func_normal_abspath "$install_libdir"
++ install_libdir=$func_normal_abspath_result
++ fi
+
+ oldlibs=
+ if test -z "$rpath"; then
+--
+2.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0018-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch b/meta/recipes-devtools/gcc/gcc-8.2/0018-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch
new file mode 100644
index 00000000000..643cc671bad
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0018-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch
@@ -0,0 +1,43 @@
+From 7dbba844a59bdf6e7d724f8bfa7927246cb7af8f 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 18/39] 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
+the option is not passed to linker when chosing march=armv4
+This patch redefines this in linux-eabi.h and reinserts it
+for eabi defaulting toolchains.
+
+We might want to send it upstream.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+---
+ gcc/config/arm/linux-eabi.h | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
+index b3af68cac57..330b6e13c5f 100644
+--- a/gcc/config/arm/linux-eabi.h
++++ b/gcc/config/arm/linux-eabi.h
+@@ -88,10 +88,14 @@
+ #define MUSL_DYNAMIC_LINKER \
+ "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
+
++/* For armv4 we pass --fix-v4bx to linker to support EABI */
++#undef TARGET_FIX_V4BX_SPEC
++#define TARGET_FIX_V4BX_SPEC "%{mcpu=arm8|mcpu=arm810|mcpu=strongarm*|march=armv4: --fix-v4bx}"
++
+ /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
+ use the GNU/Linux version, not the generic BPABI version. */
+ #undef LINK_SPEC
+-#define LINK_SPEC EABI_LINK_SPEC \
++#define LINK_SPEC TARGET_FIX_V4BX_SPEC EABI_LINK_SPEC \
+ LINUX_OR_ANDROID_LD (LINUX_TARGET_LINK_SPEC, \
+ LINUX_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC)
+
+--
+2.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0019-Use-the-multilib-config-files-from-B-instead-of-usin.patch b/meta/recipes-devtools/gcc/gcc-8.2/0019-Use-the-multilib-config-files-from-B-instead-of-usin.patch
new file mode 100644
index 00000000000..084918652e3
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0019-Use-the-multilib-config-files-from-B-instead-of-usin.patch
@@ -0,0 +1,102 @@
+From 117140acd3c383f620ff75894276001c7405dcce 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 19/39] 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,
+gcc-cross-intermediate, gcc-cross, gcc-runtime, and also the sdk build.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
+
+Upstream-Status: Inappropriate [configuration]
+---
+ gcc/configure | 22 ++++++++++++++++++----
+ gcc/configure.ac | 22 ++++++++++++++++++----
+ 2 files changed, 36 insertions(+), 8 deletions(-)
+
+diff --git a/gcc/configure b/gcc/configure
+index 872338f29b6..cfcadc93a01 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -12138,10 +12138,20 @@ done
+ tmake_file_=
+ for f in ${tmake_file}
+ do
+- if test -f ${srcdir}/config/$f
+- then
+- tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
+- fi
++ case $f in
++ */t-linux64 )
++ if test -f ./config/$f
++ then
++ tmake_file_="${tmake_file_} ./config/$f"
++ fi
++ ;;
++ * )
++ if test -f ${srcdir}/config/$f
++ then
++ tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
++ fi
++ ;;
++ esac
+ done
+ tmake_file="${tmake_file_}"
+
+@@ -12152,6 +12162,10 @@ tm_file_list="options.h"
+ tm_include_list="options.h insn-constants.h"
+ for f in $tm_file; do
+ case $f in
++ */linux64.h )
++ tm_file_list="${tm_file_list} ./config/$f"
++ tm_include_list="${tm_include_list} ./config/$f"
++ ;;
+ ./* )
+ f=`echo $f | sed 's/^..//'`
+ tm_file_list="${tm_file_list} $f"
+diff --git a/gcc/configure.ac b/gcc/configure.ac
+index 55046e68926..44b90478f55 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -1902,10 +1902,20 @@ done
+ tmake_file_=
+ for f in ${tmake_file}
+ do
+- if test -f ${srcdir}/config/$f
+- then
+- tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
+- fi
++ case $f in
++ */t-linux64 )
++ if test -f ./config/$f
++ then
++ tmake_file_="${tmake_file_} ./config/$f"
++ fi
++ ;;
++ * )
++ if test -f ${srcdir}/config/$f
++ then
++ tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
++ fi
++ ;;
++ esac
+ done
+ tmake_file="${tmake_file_}"
+
+@@ -1916,6 +1926,10 @@ tm_file_list="options.h"
+ tm_include_list="options.h insn-constants.h"
+ for f in $tm_file; do
+ case $f in
++ */linux64.h )
++ tm_file_list="${tm_file_list} ./config/$f"
++ tm_include_list="${tm_include_list} ./config/$f"
++ ;;
+ ./* )
+ f=`echo $f | sed 's/^..//'`
+ tm_file_list="${tm_file_list} $f"
+--
+2.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0020-Avoid-using-libdir-from-.la-which-usually-points-to-.patch b/meta/recipes-devtools/gcc/gcc-8.2/0020-Avoid-using-libdir-from-.la-which-usually-points-to-.patch
new file mode 100644
index 00000000000..911fe8521cc
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0020-Avoid-using-libdir-from-.la-which-usually-points-to-.patch
@@ -0,0 +1,31 @@
+From a7266111a5ba2d146c979e86ff84f6b807ca5fdc 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 20/39] Avoid using libdir from .la which usually points to a
+ host path
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Jonathan Liu <net147@gmail.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ ltmain.sh | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/ltmain.sh b/ltmain.sh
+index 0121fba707f..52bdbdb5f9c 100644
+--- a/ltmain.sh
++++ b/ltmain.sh
+@@ -5628,6 +5628,9 @@ func_mode_link ()
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
++ # Instead of using libdir from .la which usually points to a host path,
++ # use the path the .la is contained in.
++ libdir="$abs_ladir"
+ dir="$libdir"
+ absdir="$libdir"
+ fi
+--
+2.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0021-export-CPP.patch b/meta/recipes-devtools/gcc/gcc-8.2/0021-export-CPP.patch
new file mode 100644
index 00000000000..2e6b411062f
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0021-export-CPP.patch
@@ -0,0 +1,53 @@
+From c8599fc3b5781b319707c9c0f1b0a1ef7cddb027 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 21/39] 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 2bf83b72265..1af45580086 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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0022-Disable-the-MULTILIB_OSDIRNAMES-and-other-multilib-o.patch b/meta/recipes-devtools/gcc/gcc-8.2/0022-Disable-the-MULTILIB_OSDIRNAMES-and-other-multilib-o.patch
new file mode 100644
index 00000000000..17c581f11ed
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0022-Disable-the-MULTILIB_OSDIRNAMES-and-other-multilib-o.patch
@@ -0,0 +1,42 @@
+From 5e2ee46c720b6ce03a18da70dd4e0917c258ab0b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 20 Feb 2015 10:21:55 +0000
+Subject: [PATCH 22/39] Disable the MULTILIB_OSDIRNAMES and other multilib
+ options.
+
+Hard coding the MULTILIB_OSDIRNAMES with ../lib64 is causing problems on
+systems where the libdir is NOT set to /lib64. This is allowed by the
+ABI, as
+long as the dynamic loader is present in /lib.
+
+We simply want to use the default rules in gcc to find and configure the
+normal libdir.
+
+Upstream-Status: Inappropriate[OE-Specific]
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gcc/config/aarch64/t-aarch64-linux | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/gcc/config/aarch64/t-aarch64-linux b/gcc/config/aarch64/t-aarch64-linux
+index b9897785a89..7d06f0d0edb 100644
+--- a/gcc/config/aarch64/t-aarch64-linux
++++ b/gcc/config/aarch64/t-aarch64-linux
+@@ -21,8 +21,8 @@
+ LIB1ASMSRC = aarch64/lib1funcs.asm
+ LIB1ASMFUNCS = _aarch64_sync_cache_range
+
+-AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be)
+-MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu)
+-MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu)
++#AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be)
++#MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu)
++#MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu)
+
+-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)
+--
+2.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0023-Ensure-target-gcc-headers-can-be-included.patch b/meta/recipes-devtools/gcc/gcc-8.2/0023-Ensure-target-gcc-headers-can-be-included.patch
new file mode 100644
index 00000000000..4d4da1a5241
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0023-Ensure-target-gcc-headers-can-be-included.patch
@@ -0,0 +1,98 @@
+From 73766424a2f71b1810fb8afdd863028855d87e5a 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 23/39] 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(-)
+
+diff --git a/gcc/Makefile.in b/gcc/Makefile.in
+index 71a8275c39f..5ae693fb06c 100644
+--- a/gcc/Makefile.in
++++ b/gcc/Makefile.in
+@@ -614,6 +614,7 @@ libexecdir = @libexecdir@
+
+ # Directory in which the compiler finds libraries etc.
+ libsubdir = $(libdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix)
++libsubdir_target = gcc/$(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
+@@ -2870,6 +2871,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/cppdefault.c b/gcc/cppdefault.c
+index b36a979d5ba..e2e187dedaf 100644
+--- a/gcc/cppdefault.c
++++ b/gcc/cppdefault.c
+@@ -59,6 +59,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/gcc/defaults.h b/gcc/defaults.h
+index 78a08a33f12..c8851277674 100644
+--- a/gcc/defaults.h
++++ b/gcc/defaults.h
+@@ -1451,4 +1451,13 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ #define DWARF_GNAT_ENCODINGS_DEFAULT DWARF_GNAT_ENCODINGS_GDB
+ #endif
+
++/* Default prefixes to attach to command names. */
++
++#ifndef STANDARD_STARTFILE_PREFIX_1
++#define STANDARD_STARTFILE_PREFIX_1 "/lib/"
++#endif
++#ifndef STANDARD_STARTFILE_PREFIX_2
++#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib/"
++#endif
++
+ #endif /* ! GCC_DEFAULTS_H */
+diff --git a/gcc/gcc.c b/gcc/gcc.c
+index 570cdc00034..3fb64d453f1 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -1464,13 +1464,6 @@ static const char *gcc_libexec_prefix;
+
+ /* Default prefixes to attach to command names. */
+
+-#ifndef STANDARD_STARTFILE_PREFIX_1
+-#define STANDARD_STARTFILE_PREFIX_1 "/lib/"
+-#endif
+-#ifndef STANDARD_STARTFILE_PREFIX_2
+-#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib/"
+-#endif
+-
+ #ifdef CROSS_DIRECTORY_STRUCTURE /* Don't use these prefixes for a cross compiler. */
+ #undef MD_EXEC_PREFIX
+ #undef MD_STARTFILE_PREFIX
+--
+2.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0024-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch b/meta/recipes-devtools/gcc/gcc-8.2/0024-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch
new file mode 100644
index 00000000000..67b47f4ec07
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0024-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch
@@ -0,0 +1,54 @@
+From 57beef69396f6c187014b8e61cdc966218479d07 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 24/39] 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 803b292cce5..b47842eb590 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 c8f38be5835..4fab7cec3ea 100644
+--- a/libatomic/Makefile.in
++++ b/libatomic/Makefile.in
+@@ -335,7 +335,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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0025-Don-t-search-host-directory-during-relink-if-inst_pr.patch b/meta/recipes-devtools/gcc/gcc-8.2/0025-Don-t-search-host-directory-during-relink-if-inst_pr.patch
new file mode 100644
index 00000000000..d8b35bbbeee
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0025-Don-t-search-host-directory-during-relink-if-inst_pr.patch
@@ -0,0 +1,38 @@
+From fd96c9b35c592f1bdd32bc5ae669157473e44063 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 25/39] 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 52bdbdb5f9c..82bcec39f05 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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0026-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch b/meta/recipes-devtools/gcc/gcc-8.2/0026-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch
new file mode 100644
index 00000000000..d3ab5aa9ce0
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0026-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch
@@ -0,0 +1,29 @@
+From c2e400afe8c514357859fca88af4d3e1fcbfe2ff 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 26/39] Use SYSTEMLIBS_DIR replacement instead of hardcoding
+ base_libdir
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ 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 bf1327e98cc..64436183bc8 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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0027-aarch64-Add-support-for-musl-ldso.patch b/meta/recipes-devtools/gcc/gcc-8.2/0027-aarch64-Add-support-for-musl-ldso.patch
new file mode 100644
index 00000000000..9e5ce8a60ba
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0027-aarch64-Add-support-for-musl-ldso.patch
@@ -0,0 +1,28 @@
+From a2cc175769fd8255750eaecae64e3d1f9c38d48f 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 27/39] aarch64: Add support for musl ldso
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ 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 64436183bc8..ba156676026 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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0028-libcc1-fix-libcc1-s-install-path-and-rpath.patch b/meta/recipes-devtools/gcc/gcc-8.2/0028-libcc1-fix-libcc1-s-install-path-and-rpath.patch
new file mode 100644
index 00000000000..2673f4e36b7
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0028-libcc1-fix-libcc1-s-install-path-and-rpath.patch
@@ -0,0 +1,54 @@
+From a8a8a02788ff98f253ce0b33adcb0e661d24b1e3 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 28/39] 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 6ecb66b4365..634cce3c2a9 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 47be10025ad..8d5481d87bd 100644
+--- a/libcc1/Makefile.in
++++ b/libcc1/Makefile.in
+@@ -303,8 +303,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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0029-handle-sysroot-support-for-nativesdk-gcc.patch b/meta/recipes-devtools/gcc/gcc-8.2/0029-handle-sysroot-support-for-nativesdk-gcc.patch
new file mode 100644
index 00000000000..727bb0da3b9
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0029-handle-sysroot-support-for-nativesdk-gcc.patch
@@ -0,0 +1,213 @@
+From 3bb74495e45e0e798daae5556497e688b8fc4eef 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 29/39] 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 e2e187dedaf..2faba2b1d63 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 4a0186d1cf2..29e5d9da0dc 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 3fb64d453f1..cd0c7fbe961 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -248,6 +248,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;
+@@ -519,6 +521,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.
+@@ -1487,10 +1490,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
+@@ -1498,9 +1501,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
+@@ -5849,6 +5852,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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0030-Search-target-sysroot-gcc-version-specific-dirs-with.patch b/meta/recipes-devtools/gcc/gcc-8.2/0030-Search-target-sysroot-gcc-version-specific-dirs-with.patch
new file mode 100644
index 00000000000..33566dffa89
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0030-Search-target-sysroot-gcc-version-specific-dirs-with.patch
@@ -0,0 +1,102 @@
+From f5cc8cd0c44092dc487106ade27e011c1f584ada 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 30/39] 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 cd0c7fbe961..f6f3aa077c8 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -2527,7 +2527,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);
+ }
+
+@@ -2539,6 +2539,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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0031-Fix-various-_FOR_BUILD-and-related-variables.patch b/meta/recipes-devtools/gcc/gcc-8.2/0031-Fix-various-_FOR_BUILD-and-related-variables.patch
new file mode 100644
index 00000000000..dabc0059643
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0031-Fix-various-_FOR_BUILD-and-related-variables.patch
@@ -0,0 +1,137 @@
+From 93b4e1d3a0f8417118d1c48fcd1ce51996e1420b 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 31/39] 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 1af45580086..8966453c32c 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; \
+@@ -169,6 +170,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.
+@@ -186,6 +190,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; \
+@@ -753,6 +758,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 abd2bc2fb89..5822b260404 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; \
+@@ -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; \
+diff --git a/gcc/Makefile.in b/gcc/Makefile.in
+index 5ae693fb06c..02ee0aa72f4 100644
+--- a/gcc/Makefile.in
++++ b/gcc/Makefile.in
+@@ -801,7 +801,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 cfcadc93a01..2f6b4f72ef3 100755
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -11797,7 +11797,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 44b90478f55..9f8a51fc9bd 100644
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -1708,7 +1708,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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0032-nios2-Define-MUSL_DYNAMIC_LINKER.patch b/meta/recipes-devtools/gcc/gcc-8.2/0032-nios2-Define-MUSL_DYNAMIC_LINKER.patch
new file mode 100644
index 00000000000..6dd9d542346
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0032-nios2-Define-MUSL_DYNAMIC_LINKER.patch
@@ -0,0 +1,28 @@
+From 99f3e3b427996ac579d95e68440a0bd7af7ef0fc 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 32/39] nios2: Define MUSL_DYNAMIC_LINKER
+
+Signed-off-by: Marek Vasut <marex@denx.de>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ 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 4729105626d..36181eb7b85 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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0033-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch b/meta/recipes-devtools/gcc/gcc-8.2/0033-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch
new file mode 100644
index 00000000000..05a6b0a1dc9
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0033-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch
@@ -0,0 +1,87 @@
+From 84b55ab2f68710a583d4ec810ea8b3b68576f8aa 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 33/39] 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 487b0c0923b..4769d089538 100644
+--- a/gcc/config/linux.h
++++ b/gcc/config/linux.h
+@@ -182,6 +182,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 01b40c762f6..e7c5e92215c 100644
+--- a/gcc/config/rs6000/linux.h
++++ b/gcc/config/rs6000/linux.h
+@@ -92,6 +92,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 55695dadd91..60f1ee24985 100644
+--- a/gcc/config/rs6000/linux64.h
++++ b/gcc/config/rs6000/linux64.h
+@@ -473,6 +473,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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0034-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch b/meta/recipes-devtools/gcc/gcc-8.2/0034-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch
new file mode 100644
index 00000000000..7a69ea2806b
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0034-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch
@@ -0,0 +1,125 @@
+From faf35e26740461fe1a1da5433d5a0169a663e3b5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 Apr 2016 20:03:28 +0000
+Subject: [PATCH 34/39] libgcc: Add knob to use ldbl-128 on ppc
+
+musl does not support ldbl 128 so we can not assume
+that linux as a whole supports ldbl-128 bits, instead
+act upon configure option passed to gcc and assume no
+on musl and yes otherwise if no option is passed since
+default behaviour is to assume ldbl128 it does not
+change the defaults
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ libgcc/Makefile.in | 1 +
+ libgcc/config/rs6000/t-linux | 5 ++++-
+ libgcc/configure | 18 ++++++++++++++++++
+ libgcc/configure.ac | 12 ++++++++++++
+ 4 files changed, 35 insertions(+), 1 deletion(-)
+ mode change 100644 => 100755 libgcc/configure
+
+diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in
+index dd8cee99fd3..b5f478af382 100644
+--- a/libgcc/Makefile.in
++++ b/libgcc/Makefile.in
+@@ -48,6 +48,7 @@ unwind_header = @unwind_header@
+ md_unwind_header = @md_unwind_header@
+ sfp_machine_header = @sfp_machine_header@
+ thread_header = @thread_header@
++with_ldbl128 = @with_ldbl128@
+
+ host_noncanonical = @host_noncanonical@
+ real_host_noncanonical = @real_host_noncanonical@
+diff --git a/libgcc/config/rs6000/t-linux b/libgcc/config/rs6000/t-linux
+index 4f6d4c4a4d2..c50dd94a2da 100644
+--- a/libgcc/config/rs6000/t-linux
++++ b/libgcc/config/rs6000/t-linux
+@@ -1,3 +1,6 @@
+ SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-glibc.ver
+
+-HOST_LIBGCC2_CFLAGS += -mlong-double-128 -mno-minimal-toc
++ifeq ($(with_ldbl128),yes)
++HOST_LIBGCC2_CFLAGS += -mlong-double-128
++endif
++HOST_LIBGCC2_CFLAGS += -mno-minimal-toc
+diff --git a/libgcc/configure b/libgcc/configure
+old mode 100644
+new mode 100755
+index b2f3f870844..ed806587c17
+--- a/libgcc/configure
++++ b/libgcc/configure
+@@ -619,6 +619,7 @@ build_vendor
+ build_cpu
+ build
+ with_aix_soname
++with_ldbl128
+ enable_vtable_verify
+ enable_shared
+ libgcc_topdir
+@@ -668,6 +669,7 @@ with_cross_host
+ with_ld
+ enable_shared
+ enable_vtable_verify
++with_long_double_128
+ with_aix_soname
+ enable_version_specific_runtime_libs
+ with_slibdir
+@@ -1329,6 +1331,7 @@ Optional Packages:
+ --with-target-subdir=SUBDIR Configuring in a subdirectory for target
+ --with-cross-host=HOST Configuring with a cross compiler
+ --with-ld arrange to use the specified ld (full pathname)
++ --with-long-double-128 use 128-bit long double by default
+ --with-aix-soname=aix|svr4|both
+ shared library versioning (aka "SONAME") variant to
+ provide on AIX
+@@ -2213,6 +2216,21 @@ fi
+
+
+
++# Check whether --with-long-double-128 was given.
++if test "${with_long_double_128+set}" = set; then :
++ withval=$with_long_double_128; with_ldbl128="$with_long_double_128"
++else
++ case "${host}" in
++ power*-*-musl*)
++ with_ldbl128="no";;
++ *) with_ldbl128="yes";;
++ esac
++
++fi
++
++
++
++
+ # Check whether --with-aix-soname was given.
+ if test "${with_aix_soname+set}" = set; then :
+ withval=$with_aix_soname; case "${host}:${enable_shared}" in
+diff --git a/libgcc/configure.ac b/libgcc/configure.ac
+index b59aa746afc..42220a263c5 100644
+--- a/libgcc/configure.ac
++++ b/libgcc/configure.ac
+@@ -78,6 +78,18 @@ AC_ARG_ENABLE(vtable-verify,
+ [enable_vtable_verify=no])
+ AC_SUBST(enable_vtable_verify)
+
++AC_ARG_WITH(long-double-128,
++[AS_HELP_STRING([--with-long-double-128],
++ [use 128-bit long double by default])],
++ with_ldbl128="$with_long_double_128",
++[case "${host}" in
++ power*-*-musl*)
++ with_ldbl128="no";;
++ *) with_ldbl128="yes";;
++ esac
++])
++AC_SUBST(with_ldbl128)
++
+ AC_ARG_WITH(aix-soname,
+ [AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
+ [shared library versioning (aka "SONAME") variant to provide on AIX])],
+--
+2.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0035-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch b/meta/recipes-devtools/gcc/gcc-8.2/0035-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch
new file mode 100644
index 00000000000..5e416e010d3
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0035-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch
@@ -0,0 +1,29 @@
+From 775c7fafcbfebed2d4bd8a6a011f18f70f3b59d3 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 35/39] 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 7e60b621a2d..ea22ede3361 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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0036-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch b/meta/recipes-devtools/gcc/gcc-8.2/0036-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch
new file mode 100644
index 00000000000..8def33a17dc
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0036-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch
@@ -0,0 +1,86 @@
+From b7faeed60261d7b75f2db3823926de1650ef64bc Mon Sep 17 00:00:00 2001
+From: Szabolcs Nagy <nsz@port70.net>
+Date: Sat, 24 Oct 2015 20:09:53 +0000
+Subject: [PATCH 36/39] 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.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ 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 6a2141e48db..455fccbdd50 100644
+--- a/gcc/config/i386/i386.c
++++ b/gcc/config/i386/i386.c
+@@ -36490,10 +36490,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 86953db2743..e0476272810 100644
+--- a/libgcc/config/i386/cpuinfo.c
++++ b/libgcc/config/i386/cpuinfo.c
+@@ -482,7 +482,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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0037-sync-gcc-stddef.h-with-musl.patch b/meta/recipes-devtools/gcc/gcc-8.2/0037-sync-gcc-stddef.h-with-musl.patch
new file mode 100644
index 00000000000..f8a7f41ab16
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0037-sync-gcc-stddef.h-with-musl.patch
@@ -0,0 +1,91 @@
+From 602abaab15ffb60bf1797187a71b485042c56360 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 37/39] 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
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ gcc/ginclude/stddef.h | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h
+index 31b96a7e5e1..438a3ce7c56 100644
+--- a/gcc/ginclude/stddef.h
++++ b/gcc/ginclude/stddef.h
+@@ -134,6 +134,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
+@@ -143,10 +144,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 */
+@@ -184,6 +187,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
+@@ -200,6 +204,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__) && (__FreeBSD__ >= 5)) \
+ || defined(__DragonFly__) \
+ || defined(__FreeBSD_kernel__)
+@@ -235,6 +240,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. */
+
+@@ -264,6 +270,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
+@@ -279,6 +286,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
+@@ -344,6 +352,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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0038-fix-segmentation-fault-in-precompiled-header-generat.patch b/meta/recipes-devtools/gcc/gcc-8.2/0038-fix-segmentation-fault-in-precompiled-header-generat.patch
new file mode 100644
index 00000000000..224d2ae6d3a
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0038-fix-segmentation-fault-in-precompiled-header-generat.patch
@@ -0,0 +1,60 @@
+From 00694849632dee23741925c6104df134f6bff747 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 38/39] 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 37c365a3560..63480048db6 100644
+--- a/libcpp/lex.c
++++ b/libcpp/lex.c
+@@ -3279,11 +3279,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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0039-Fix-for-testsuite-failure.patch b/meta/recipes-devtools/gcc/gcc-8.2/0039-Fix-for-testsuite-failure.patch
new file mode 100644
index 00000000000..f35163099c3
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0039-Fix-for-testsuite-failure.patch
@@ -0,0 +1,258 @@
+From d151a62c252749643c850a08d1335321e5b75d42 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 39/39] 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 3fbdc881dda..6b4d9d1252a 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.17.0
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0040-Re-introduce-spe-commandline-options.patch b/meta/recipes-devtools/gcc/gcc-8.2/0040-Re-introduce-spe-commandline-options.patch
new file mode 100644
index 00000000000..8afa0102da0
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0040-Re-introduce-spe-commandline-options.patch
@@ -0,0 +1,41 @@
+From 8fb8f773e117ee70be00bb0da5f343fe110da5c4 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 40/40] 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 ace8a477550..d6a8f825d88 100644
+--- a/gcc/config/rs6000/rs6000.opt
++++ b/gcc/config/rs6000/rs6000.opt
+@@ -365,6 +365,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.17.1
+
diff --git a/meta/recipes-devtools/gcc/gcc-8.2/0041-ARC-fix-spec-gen.patch b/meta/recipes-devtools/gcc/gcc-8.2/0041-ARC-fix-spec-gen.patch
new file mode 100644
index 00000000000..cbd5e41ab11
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-8.2/0041-ARC-fix-spec-gen.patch
@@ -0,0 +1,44 @@
+From 892142379c6b99fe8c3ebdfe0b79e2a435228c1d Mon Sep 17 00:00:00 2001
+From: claziss <claziss@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Mon, 17 Sep 2018 08:52:10 +0000
+Subject: [PATCH] [ARC] Update LINK_EH_SPEC linker spec.
+
+With no trailing space in LINK_EH_SPEC linker spec gets generated as:
+------------------------>8---------------------
+%{!r:--build-id} --eh-frame-hdr%{h*} ...
+------------------------>8---------------------
+
+or even worse if hash style is added:
+------------------------>8---------------------
+%{!r:--build-id} --eh-frame-hdr--hash-style=sysv %{h*} ...
+------------------------>8---------------------
+
+Now if that spec is really used by LD then it fails inevitably
+saying that it doesn't know option "--eh-frame-hdr--hash-style=sysv".
+
+2018-09-17 Alexey Brodkin <abrodkin@synopsys.com>
+
+ * config/arc/linux.h (LINK_EH_SPEC): Add missing space.
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264361 138bc75d-0d04-0410-961f-82ee72b054a4
+
+Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
+
+Upstream-Status: Backport[https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=892142379c6b]
+---
+ gcc/config/arc/linux.h | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletion(-)
+
+diff --git a/gcc/config/arc/linux.h b/gcc/config/arc/linux.h
+index 96d548eae341..62ebe4de0fc7 100644
+--- a/gcc/config/arc/linux.h
++++ b/gcc/config/arc/linux.h
+@@ -98,7 +98,7 @@ along with GCC; see the file COPYING3. If not see
+ Signalize that because we have fde-glibc, we don't need all C shared libs
+ linked against -lgcc_s. */
+ #undef LINK_EH_SPEC
+-#define LINK_EH_SPEC "--eh-frame-hdr"
++#define LINK_EH_SPEC "--eh-frame-hdr "
+ #endif
+
+ #undef SUBTARGET_CPP_SPEC
diff --git a/meta/recipes-devtools/gcc/gcc-common.inc b/meta/recipes-devtools/gcc/gcc-common.inc
index aa3b53e64cd..00fec0bb6e4 100644
--- a/meta/recipes-devtools/gcc/gcc-common.inc
+++ b/meta/recipes-devtools/gcc/gcc-common.inc
@@ -46,7 +46,7 @@ def get_long_double_setting(bb, d):
if d.getVar('TRANSLATED_TARGET_ARCH') in [ 'powerpc', 'powerpc64' ] and d.getVar('TCLIBC') in [ 'glibc' ]:
return "--with-long-double-128"
else:
- return "--without-long-double-128"
+ return "--without-long-double-128 libgcc_cv_powerpc_float128=no"
return ""
def get_gcc_multiarch_setting(bb, d):
diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian_8.2.bb b/meta/recipes-devtools/gcc/gcc-cross-canadian_8.2.bb
new file mode 100644
index 00000000000..bf53c5cd787
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-cross-canadian_8.2.bb
@@ -0,0 +1,5 @@
+require recipes-devtools/gcc/gcc-${PV}.inc
+require gcc-cross-canadian.inc
+
+
+
diff --git a/meta/recipes-devtools/gcc/gcc-cross-initial_8.2.bb b/meta/recipes-devtools/gcc/gcc-cross-initial_8.2.bb
new file mode 100644
index 00000000000..4c73e5ce613
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-cross-initial_8.2.bb
@@ -0,0 +1,2 @@
+require recipes-devtools/gcc/gcc-cross_${PV}.bb
+require gcc-cross-initial.inc
diff --git a/meta/recipes-devtools/gcc/gcc-cross.inc b/meta/recipes-devtools/gcc/gcc-cross.inc
index 1e184a60db2..95f5968fd4a 100644
--- a/meta/recipes-devtools/gcc/gcc-cross.inc
+++ b/meta/recipes-devtools/gcc/gcc-cross.inc
@@ -35,6 +35,7 @@ EXTRA_OECONF += "\
DEPENDS_remove_libc-baremetal := "virtual/${TARGET_PREFIX}libc-for-gcc"
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} \
diff --git a/meta/recipes-devtools/gcc/gcc-cross_8.2.bb b/meta/recipes-devtools/gcc/gcc-cross_8.2.bb
new file mode 100644
index 00000000000..b43cca0c526
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-cross_8.2.bb
@@ -0,0 +1,3 @@
+require recipes-devtools/gcc/gcc-${PV}.inc
+require gcc-cross.inc
+
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk-initial_8.2.bb b/meta/recipes-devtools/gcc/gcc-crosssdk-initial_8.2.bb
new file mode 100644
index 00000000000..fd90e1140f1
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-crosssdk-initial_8.2.bb
@@ -0,0 +1,3 @@
+require recipes-devtools/gcc/gcc-cross-initial_${PV}.bb
+require gcc-crosssdk-initial.inc
+
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk_8.2.bb b/meta/recipes-devtools/gcc/gcc-crosssdk_8.2.bb
new file mode 100644
index 00000000000..40a6c4feff8
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-crosssdk_8.2.bb
@@ -0,0 +1,2 @@
+require recipes-devtools/gcc/gcc-cross_${PV}.bb
+require gcc-crosssdk.inc
diff --git a/meta/recipes-devtools/gcc/gcc-runtime.inc b/meta/recipes-devtools/gcc/gcc-runtime.inc
index 7629fa56ff6..9e7e7c5b3d6 100644
--- a/meta/recipes-devtools/gcc/gcc-runtime.inc
+++ b/meta/recipes-devtools/gcc/gcc-runtime.inc
@@ -17,13 +17,16 @@ EXTRA_OECONF_PATHS = "\
EXTRA_OECONF_append_linuxstdbase = " --enable-clocale=gnu"
RUNTIMELIBITM = "libitm"
+RUNTIMELIBITM_arc = ""
RUNTIMELIBITM_mipsarch = ""
RUNTIMELIBITM_nios2 = ""
RUNTIMELIBITM_microblaze = ""
RUNTIMELIBITM_riscv32 = ""
RUNTIMELIBITM_riscv64 = ""
+RUNTIMELIBSSP ?= ""
+RUNTIMELIBSSP_mingw32 ?= "libssp"
-RUNTIMETARGET = "libssp libstdc++-v3 libgomp libatomic ${RUNTIMELIBITM} \
+RUNTIMETARGET = "${RUNTIMELIBSSP} libstdc++-v3 libgomp libatomic ${RUNTIMELIBITM} \
${@bb.utils.contains_any('FORTRAN', [',fortran',',f77'], 'libquadmath', '', d)} \
"
RUNTIMETARGET_append_x86 = " libmpx"
diff --git a/meta/recipes-devtools/gcc/gcc-runtime_8.2.bb b/meta/recipes-devtools/gcc/gcc-runtime_8.2.bb
new file mode 100644
index 00000000000..fe787174e8a
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-runtime_8.2.bb
@@ -0,0 +1,10 @@
+require recipes-devtools/gcc/gcc-${PV}.inc
+require gcc-runtime.inc
+
+# Disable ifuncs for libatomic on arm conflicts -march/-mcpu
+EXTRA_OECONF_append_arm = " libat_cv_have_ifunc=no "
+
+FILES_libgomp-dev += "\
+ ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/openacc.h \
+"
+
diff --git a/meta/recipes-devtools/gcc/gcc-sanitizers.inc b/meta/recipes-devtools/gcc/gcc-sanitizers.inc
index 3b7e0028f2b..e5e84526fa6 100644
--- a/meta/recipes-devtools/gcc/gcc-sanitizers.inc
+++ b/meta/recipes-devtools/gcc/gcc-sanitizers.inc
@@ -94,6 +94,7 @@ FILES_liblsan += "${libdir}/liblsan.so.*"
FILES_liblsan-dev += "\
${libdir}/liblsan.so \
${libdir}/liblsan.la \
+ ${libdir}/liblsan_preinit.o \
"
FILES_liblsan-staticdev += "${libdir}/liblsan.a"
diff --git a/meta/recipes-devtools/gcc/gcc-sanitizers_8.2.bb b/meta/recipes-devtools/gcc/gcc-sanitizers_8.2.bb
new file mode 100644
index 00000000000..f3c7058114e
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-sanitizers_8.2.bb
@@ -0,0 +1,7 @@
+require recipes-devtools/gcc/gcc-${PV}.inc
+require gcc-sanitizers.inc
+
+# Building with thumb enabled on armv4t armv5t fails with
+# sanitizer_linux.s:5749: Error: lo register required -- `ldr ip,[sp],#8'
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
diff --git a/meta/recipes-devtools/gcc/gcc-source_8.2.bb b/meta/recipes-devtools/gcc/gcc-source_8.2.bb
new file mode 100644
index 00000000000..b890fa33ea5
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-source_8.2.bb
@@ -0,0 +1,4 @@
+require recipes-devtools/gcc/gcc-${PV}.inc
+require recipes-devtools/gcc/gcc-source.inc
+
+EXCLUDE_FROM_WORLD = "1"
diff --git a/meta/recipes-devtools/gcc/gcc-target.inc b/meta/recipes-devtools/gcc/gcc-target.inc
index b6e31f5d937..bc2236fed02 100644
--- a/meta/recipes-devtools/gcc/gcc-target.inc
+++ b/meta/recipes-devtools/gcc/gcc-target.inc
@@ -9,13 +9,17 @@ EXTRA_OECONF_PATHS = "\
EXTRA_OECONF_append_linuxstdbase = " --enable-clocale=gnu"
-# ARMv6+ adds atomic instructions that affect the ABI in libraries built
-# with TUNE_CCARGS in gcc-runtime. Make the compiler default to a
-# compatible architecture. armv6 and armv7a cover the minimum tune
-# features used in OE.
-EXTRA_OECONF_append_armv6 = " --with-arch=armv6"
-EXTRA_OECONF_append_armv7a = " --with-arch=armv7-a"
-EXTRA_OECONF_append_armv7ve = " --with-arch=armv7-a"
+# 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
+# specific). For example, for ARM, ARMv6+ adds atomic instructions that may
+# affect the ABI in the gcc-runtime libs. Since we can't rely on gcc on the
+# target to always be passed -march etc, its built-in default needs to be safe.
+
+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}"
# 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
diff --git a/meta/recipes-devtools/gcc/gcc_8.2.bb b/meta/recipes-devtools/gcc/gcc_8.2.bb
new file mode 100644
index 00000000000..7d935905886
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc_8.2.bb
@@ -0,0 +1,14 @@
+require recipes-devtools/gcc/gcc-${PV}.inc
+require gcc-target.inc
+
+# Building with thumb enabled on armv4t armv5t fails with
+# | gcc-4.8.1-r0/gcc-4.8.1/gcc/cp/decl.c:7438:(.text.unlikely+0x2fa): relocation truncated to fit: R_ARM_THM_CALL against symbol `fancy_abort(char const*, int, char const*)' defined in .glue_7 section in linker stubs
+# | gcc-4.8.1-r0/gcc-4.8.1/gcc/cp/decl.c:7442:(.text.unlikely+0x318): additional relocation overflows omitted from the output
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
+
+ARMFPARCHEXT_armv6 = "${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"
+ARMFPARCHEXT_armv7a = "${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"
+ARMFPARCHEXT_armv7ve = "${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/gcc/libgcc-common.inc b/meta/recipes-devtools/gcc/libgcc-common.inc
index 848a476207b..d959566c3f0 100644
--- a/meta/recipes-devtools/gcc/libgcc-common.inc
+++ b/meta/recipes-devtools/gcc/libgcc-common.inc
@@ -47,8 +47,13 @@ do_install () {
do_install_append_libc-baremetal () {
rmdir ${D}${base_libdir}
}
+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 = ""
BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/gcc/libgcc-initial_8.2.bb b/meta/recipes-devtools/gcc/libgcc-initial_8.2.bb
new file mode 100644
index 00000000000..19f253fce85
--- /dev/null
+++ b/meta/recipes-devtools/gcc/libgcc-initial_8.2.bb
@@ -0,0 +1,2 @@
+require recipes-devtools/gcc/gcc-${PV}.inc
+require libgcc-initial.inc
diff --git a/meta/recipes-devtools/gcc/libgcc_8.2.bb b/meta/recipes-devtools/gcc/libgcc_8.2.bb
new file mode 100644
index 00000000000..a5152f28e9b
--- /dev/null
+++ b/meta/recipes-devtools/gcc/libgcc_8.2.bb
@@ -0,0 +1,2 @@
+require recipes-devtools/gcc/gcc-${PV}.inc
+require libgcc.inc
diff --git a/meta/recipes-devtools/gcc/libgfortran_8.2.bb b/meta/recipes-devtools/gcc/libgfortran_8.2.bb
new file mode 100644
index 00000000000..71dd8b4bdcd
--- /dev/null
+++ b/meta/recipes-devtools/gcc/libgfortran_8.2.bb
@@ -0,0 +1,3 @@
+require recipes-devtools/gcc/gcc-${PV}.inc
+require libgfortran.inc
+
diff --git a/meta/recipes-devtools/gdb/gdb-8.0.1.inc b/meta/recipes-devtools/gdb/gdb-8.2.inc
index 4a5299b73f6..dfb0059123e 100644
--- a/meta/recipes-devtools/gdb/gdb-8.0.1.inc
+++ b/meta/recipes-devtools/gdb/gdb-8.2.inc
@@ -15,10 +15,9 @@ SRC_URI = "http://ftp.gnu.org/gnu/gdb/gdb-${PV}.tar.xz \
file://0008-Use-exorted-definitions-of-SIGRTMIN.patch \
file://0009-Change-order-of-CFLAGS.patch \
file://0010-resolve-restrict-keyword-conflict.patch \
- file://package_devel_gdb_patches_120-sigprocmask-invalid-call.patch \
- file://0012-Unbreak-GDBserver-build-for-x32.patch \
- file://gdb-Fix-ia64-defining-TRAP_HWBKPT-before-including-g.patch \
+ file://0011-Fix-invalid-sigprocmask-call.patch \
+ file://gdbserver-ctrl-c-handling.patch \
"
-SRC_URI[md5sum] = "48cac527e6f3018b865ece021e9723ac"
-SRC_URI[sha256sum] = "3dbd5f93e36ba2815ad0efab030dcd0c7b211d7b353a40a53f4c02d7d56295e3"
+SRC_URI[md5sum] = "b5a49dbff00d9a87fbe114d14b3101c0"
+SRC_URI[sha256sum] = "c3a441a29c7c89720b734e5a9c6289c0a06be7e0c76ef538f7bbcef389347c39"
diff --git a/meta/recipes-devtools/gdb/gdb-common.inc b/meta/recipes-devtools/gdb/gdb-common.inc
index 039577b8e22..fa64939f268 100644
--- a/meta/recipes-devtools/gdb/gdb-common.inc
+++ b/meta/recipes-devtools/gdb/gdb-common.inc
@@ -1,7 +1,7 @@
SUMMARY = "GNU debugger"
HOMEPAGE = "http://www.gnu.org/software/gdb/"
SECTION = "devel"
-DEPENDS = "expat zlib ncurses virtual/libiconv ${LTTNGUST}"
+DEPENDS = "expat zlib ncurses virtual/libiconv ${LTTNGUST} bison-native"
LTTNGUST = "lttng-ust"
LTTNGUST_aarch64 = ""
@@ -20,7 +20,7 @@ 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-tui --disable-x --disable-werror \
+EXTRA_OECONF = "--disable-gdbtk --disable-x --disable-werror \
--with-curses --disable-multilib --disable-sim \
--without-lzma --without-guile \
${GDBPROPREFIX} ${EXPAT} \
@@ -36,6 +36,8 @@ PACKAGECONFIG ??= "readline"
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"
GDBPROPREFIX = "--program-prefix=''"
diff --git a/meta/recipes-devtools/gdb/gdb-cross-canadian_8.0.1.bb b/meta/recipes-devtools/gdb/gdb-cross-canadian_8.2.bb
index 301035940c3..301035940c3 100644
--- a/meta/recipes-devtools/gdb/gdb-cross-canadian_8.0.1.bb
+++ b/meta/recipes-devtools/gdb/gdb-cross-canadian_8.2.bb
diff --git a/meta/recipes-devtools/gdb/gdb-cross_8.0.1.bb b/meta/recipes-devtools/gdb/gdb-cross_8.2.bb
index 50cf159fdb5..50cf159fdb5 100644
--- a/meta/recipes-devtools/gdb/gdb-cross_8.0.1.bb
+++ b/meta/recipes-devtools/gdb/gdb-cross_8.2.bb
diff --git a/meta/recipes-devtools/gdb/gdb/0001-include-sys-types.h-for-mode_t.patch b/meta/recipes-devtools/gdb/gdb/0001-include-sys-types.h-for-mode_t.patch
index 4f06d46d706..2c8783e192e 100644
--- a/meta/recipes-devtools/gdb/gdb/0001-include-sys-types.h-for-mode_t.patch
+++ b/meta/recipes-devtools/gdb/gdb/0001-include-sys-types.h-for-mode_t.patch
@@ -1,30 +1,29 @@
-From 91da0458b333249eb9c2f4c1f1e53fa4bc085cc9 Mon Sep 17 00:00:00 2001
+From 6ae0fb9b49047cef338262e30273f63139fd1261 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 19 Jan 2016 18:18:52 -0800
-Subject: [PATCH 01/10] include sys/types.h for mode_t
+Subject: [PATCH 01/11] include sys/types.h for mode_t
mode_t is used in target.h, so we need to include sys/types.h to get the
defintion
+Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
-Upstream-Status: Pending
-
gdb/gdbserver/target.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/gdb/gdbserver/target.h b/gdb/gdbserver/target.h
-index 3cc2bc4bab..e6b19b06b9 100644
+index fce54e05ad..278cee78a8 100644
--- a/gdb/gdbserver/target.h
+++ b/gdb/gdbserver/target.h
-@@ -28,6 +28,7 @@
- #include "target/waitstatus.h"
+@@ -29,6 +29,7 @@
#include "mem-break.h"
#include "btrace-common.h"
+ #include <vector>
+#include <sys/types.h>
struct emit_ops;
struct buffer;
--
-2.13.1
+2.18.0
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
index 83c4dded3bd..60479e54101 100644
--- 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
@@ -1,7 +1,7 @@
-From 9ce61f97b7758794f06894e934fbb256ff62163e Mon Sep 17 00:00:00 2001
+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/10] make man install relative to DESTDIR
+Subject: [PATCH 02/11] make man install relative to DESTDIR
Upstream-Status: Pending
@@ -11,7 +11,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sim/common/Makefile.in b/sim/common/Makefile.in
-index 3944956b5d..aa355e8347 100644
+index 227e4cfbc2..8c3457e0bd 100644
--- a/sim/common/Makefile.in
+++ b/sim/common/Makefile.in
@@ -35,7 +35,7 @@ tooldir = $(libdir)/$(target_alias)
@@ -24,5 +24,5 @@ index 3944956b5d..aa355e8347 100644
includedir = @includedir@
--
-2.13.1
+2.18.0
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
index 6f7955be134..cf54c74c093 100644
--- 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
@@ -1,7 +1,7 @@
-From ca0ef06b7320912df350e730e63f9bafdaa6ea70 Mon Sep 17 00:00:00 2001
+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/10] mips-linux-nat: Define _ABIO32 if not defined
+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
@@ -9,29 +9,27 @@ 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>
---
-Upstream-Status: Pending
-
- gdb/mips-linux-nat.c | 5 +++++
- 1 file changed, 5 insertions(+)
+ 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 8041d84be7..f2df1b9907 100644
+index 32835c16b2..68a7587af2 100644
--- a/gdb/mips-linux-nat.c
+++ b/gdb/mips-linux-nat.c
-@@ -47,6 +47,11 @@
+@@ -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
-+
- /* Assume that we have PTRACE_GETREGS et al. support. If we do not,
- we'll clear this and use PTRACE_PEEKUSER instead. */
- static int have_ptrace_regsets = 1;
+
+ class mips_linux_nat_target final : public linux_nat_trad_target
+ {
--
-2.13.1
+2.18.0
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
index 357db25ec13..bbe0020bf3a 100644
--- 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
@@ -1,7 +1,7 @@
-From 0f6d71118ca914002fcad78d2c8a518223d06bfb Mon Sep 17 00:00:00 2001
+From 1dd5c44474b01d84de60faded960fef4a0a87e41 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 04/10] ppc/ptrace: Define pt_regs uapi_pt_regs on !GLIBC
+Subject: [PATCH 04/11] ppc/ptrace: Define pt_regs uapi_pt_regs on !GLIBC
systems
Upstream-Status: Pending
@@ -13,7 +13,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 12 insertions(+)
diff --git a/gdb/gdbserver/linux-ppc-low.c b/gdb/gdbserver/linux-ppc-low.c
-index 33a9feb12c..1a9141faef 100644
+index 47428c1529..841a5e02b9 100644
--- a/gdb/gdbserver/linux-ppc-low.c
+++ b/gdb/gdbserver/linux-ppc-low.c
@@ -21,7 +21,13 @@
@@ -28,10 +28,10 @@ index 33a9feb12c..1a9141faef 100644
+# undef pt_regs
+#endif
- #include "nat/ppc-linux.h"
- #include "linux-ppc-tdesc.h"
+ #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 5837ea1767..7233929192 100644
+index 3d4d4fdc56..5b93af8d3a 100644
--- a/gdb/nat/ppc-linux.h
+++ b/gdb/nat/ppc-linux.h
@@ -18,7 +18,13 @@
@@ -49,5 +49,5 @@ index 5837ea1767..7233929192 100644
/* This sometimes isn't defined. */
--
-2.13.1
+2.18.0
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
index cb1b7abd071..f840cafe2eb 100644
--- 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
@@ -1,7 +1,7 @@
-From 60ac68f601885ea6480229a5c8a89a0257da376c Mon Sep 17 00:00:00 2001
+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/10] Add support for Renesas SH (sh4) architecture.
+Subject: [PATCH 05/11] Add support for Renesas SH (sh4) architecture.
gdb (7.4-1~cvs20111117.2) experimental; urgency=low
.
@@ -15,35 +15,35 @@ 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 | 54 ++--
- gdb/sh-tdep.h | 49 ++++
+ 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, 618 insertions(+), 29 deletions(-)
+ 11 files changed, 617 insertions(+), 29 deletions(-)
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
-index 8be73ba423..e287ff6a2e 100644
+index c76a4e4394..921fdadb49 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
-@@ -2638,6 +2638,8 @@ ALLDEPFILES = \
+@@ -2326,6 +2326,8 @@ ALLDEPFILES = \
+ sh-nbsd-nat.c \
sh-nbsd-tdep.c \
sh-tdep.c \
- sh64-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 d74fd04934..be12de1446 100644
+index 23a2f16399..39a886ec53 100644
--- a/gdb/configure.host
+++ b/gdb/configure.host
-@@ -150,6 +150,7 @@ powerpc*-*-linux*) gdb_host=linux ;;
+@@ -153,6 +153,7 @@ riscv*-*-linux*) gdb_host=linux ;;
s390*-*-linux*) gdb_host=linux ;;
@@ -52,7 +52,7 @@ index d74fd04934..be12de1446 100644
gdb_host=nbsd ;;
sh*-*-openbsd*) gdb_host=nbsd ;;
diff --git a/gdb/sh-linux-tdep.c b/gdb/sh-linux-tdep.c
-index c5c745d218..84e539aad3 100644
+index db93967910..4109c549e8 100644
--- a/gdb/sh-linux-tdep.c
+++ b/gdb/sh-linux-tdep.c
@@ -18,14 +18,37 @@
@@ -600,7 +600,7 @@ index c5c745d218..84e539aad3 100644
/* GNU/Linux uses SVR4-style shared libraries. */
diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c
-index 2c2b26847d..14f5281ed4 100644
+index fe64cf979a..4417114cd0 100644
--- a/gdb/sh-tdep.c
+++ b/gdb/sh-tdep.c
@@ -21,6 +21,9 @@
@@ -613,15 +613,7 @@ index 2c2b26847d..14f5281ed4 100644
#include "frame.h"
#include "frame-base.h"
#include "frame-unwind.h"
-@@ -35,6 +38,7 @@
- #include "arch-utils.h"
- #include "floatformat.h"
- #include "regcache.h"
-+#include "regset.h"
- #include "doublest.h"
- #include "osabi.h"
- #include "reggroups.h"
-@@ -68,23 +72,6 @@ static const char *const sh_cc_enum[] = {
+@@ -66,23 +69,6 @@ static const char *const sh_cc_enum[] = {
static const char *sh_active_calling_convention = sh_cc_gcc;
@@ -645,7 +637,7 @@ index 2c2b26847d..14f5281ed4 100644
static int
sh_is_renesas_calling_convention (struct type *func_type)
{
-@@ -1052,7 +1039,7 @@ sh_treat_as_flt_p (struct type *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. */
@@ -654,7 +646,7 @@ index 2c2b26847d..14f5281ed4 100644
return 1;
/* Otherwise it's not treated as float. */
return 0;
-@@ -1102,7 +1089,7 @@ sh_push_dummy_call_fpu (struct gdbarch *gdbarch,
+@@ -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++)
{
@@ -663,7 +655,7 @@ index 2c2b26847d..14f5281ed4 100644
len = TYPE_LENGTH (type);
val = sh_justify_value_in_reg (gdbarch, args[argnum], len);
-@@ -1828,7 +1815,7 @@ sh_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
+@@ -1834,7 +1820,7 @@ sh_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
reg->how = DWARF2_FRAME_REG_UNDEFINED;
}
@@ -672,7 +664,7 @@ index 2c2b26847d..14f5281ed4 100644
sh_alloc_frame_cache (void)
{
struct sh_frame_cache *cache;
-@@ -1855,7 +1842,7 @@ sh_alloc_frame_cache (void)
+@@ -1861,7 +1847,7 @@ sh_alloc_frame_cache (void)
return cache;
}
@@ -681,7 +673,7 @@ index 2c2b26847d..14f5281ed4 100644
sh_frame_cache (struct frame_info *this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
-@@ -1922,9 +1909,9 @@ sh_frame_cache (struct frame_info *this_frame, void **this_cache)
+@@ -1928,9 +1914,9 @@ sh_frame_cache (struct frame_info *this_frame, void **this_cache)
return cache;
}
@@ -694,7 +686,7 @@ index 2c2b26847d..14f5281ed4 100644
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
struct sh_frame_cache *cache = sh_frame_cache (this_frame, this_cache);
-@@ -1938,7 +1925,7 @@ sh_frame_prev_register (struct frame_info *this_frame,
+@@ -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))
@@ -703,7 +695,7 @@ index 2c2b26847d..14f5281ed4 100644
if (regnum < SH_NUM_REGS && cache->saved_regs[regnum] != -1)
return frame_unwind_got_memory (this_frame, regnum,
-@@ -2247,8 +2234,8 @@ sh_return_in_first_hidden_param_p (struct gdbarch *gdbarch,
+@@ -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)
{
@@ -711,9 +703,9 @@ index 2c2b26847d..14f5281ed4 100644
struct gdbarch_tdep *tdep;
+ struct gdbarch *gdbarch;
- /* SH5 is handled entirely in sh64-tdep.c. */
- if (info.bfd_arch_info->mach == bfd_mach_sh5)
-@@ -2264,6 +2251,18 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
+ /* 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);
@@ -732,7 +724,7 @@ index 2c2b26847d..14f5281ed4 100644
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);
-@@ -2418,10 +2417,11 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
+@@ -2422,10 +2420,11 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
break;
}
@@ -746,7 +738,7 @@ index 2c2b26847d..14f5281ed4 100644
frame_unwind_append_unwinder (gdbarch, &sh_frame_unwind);
diff --git a/gdb/sh-tdep.h b/gdb/sh-tdep.h
-index d15ef050e0..c4642cefa4 100644
+index 59acd35b88..be3f998d84 100644
--- a/gdb/sh-tdep.h
+++ b/gdb/sh-tdep.h
@@ -21,6 +21,12 @@
@@ -829,7 +821,7 @@ index d15ef050e0..c4642cefa4 100644
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 e07e5543f2..f5e60e1002 100644
+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] {
@@ -918,5 +910,5 @@ index 756606880f..1205a9bc9c 100644
static int count = 0;
--
-2.13.1
+2.18.0
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
index 8b139581012..9ae3ee62bec 100644
--- 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
@@ -1,7 +1,7 @@
-From 5c92ebd5e117e4cf118c984171e0703dfcfb8cd8 Mon Sep 17 00:00:00 2001
+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/10] Dont disable libreadline.a when using --disable-static
+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
@@ -19,7 +19,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/Makefile.def b/Makefile.def
-index 0d13f037d0..8bcd86e13f 100644
+index 75063b6d12..c27bbe4d28 100644
--- a/Makefile.def
+++ b/Makefile.def
@@ -105,7 +105,8 @@ host_modules= { module= libiconv;
@@ -33,7 +33,7 @@ index 0d13f037d0..8bcd86e13f 100644
host_modules= { module= sim; };
host_modules= { module= texinfo; no_install= true; };
diff --git a/Makefile.in b/Makefile.in
-index 3acb83b8de..e348907128 100644
+index 7814fe745f..3b0dc7cbb0 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -25470,7 +25470,7 @@ configure-readline:
@@ -46,5 +46,5 @@ index 3acb83b8de..e348907128 100644
@endif readline
--
-2.13.1
+2.18.0
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
index 33b4c30eef4..808f4bfa145 100644
--- a/meta/recipes-devtools/gdb/gdb/0007-use-asm-sgidefs.h.patch
+++ b/meta/recipes-devtools/gdb/gdb/0007-use-asm-sgidefs.h.patch
@@ -1,7 +1,7 @@
-From 12a0b8d81e1fda6ba98abdce8d6f09f9555ebcf5 Mon Sep 17 00:00:00 2001
+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/10] use <asm/sgidefs.h>
+Subject: [PATCH 07/11] use <asm/sgidefs.h>
Build fix for MIPS with musl libc
@@ -19,7 +19,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c
-index f2df1b9907..d24664cb56 100644
+index 68a7587af2..2b77221372 100644
--- a/gdb/mips-linux-nat.c
+++ b/gdb/mips-linux-nat.c
@@ -31,7 +31,7 @@
@@ -32,5 +32,5 @@ index f2df1b9907..d24664cb56 100644
#include <asm/ptrace.h>
#include "inf-ptrace.h"
--
-2.13.1
+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
index 4f64dea2549..d32352b8131 100644
--- 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
@@ -1,7 +1,7 @@
-From d3f240b38eed7cd08f6c50ea896572f1327b437a Mon Sep 17 00:00:00 2001
+From d97878b272bd7c4993f4205983ae8b7ecddbcf82 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 08/10] Use exorted definitions of SIGRTMIN
+Subject: [PATCH 08/11] Use exorted definitions of SIGRTMIN
Define W_STOPCODE if not defined already
@@ -20,10 +20,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
-index 8b29245c3d..f424ae9711 100644
+index 64015e7520..acf950c38b 100644
--- a/gdb/linux-nat.c
+++ b/gdb/linux-nat.c
-@@ -5021,6 +5021,6 @@ lin_thread_get_thread_signals (sigset_t *set)
+@@ -4724,6 +4724,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. */
@@ -33,7 +33,7 @@ index 8b29245c3d..f424ae9711 100644
+ sigaddset (set, SIGRTMIN + 1);
}
diff --git a/gdb/nat/linux-nat.h b/gdb/nat/linux-nat.h
-index 7dd18fefff..35137ab34f 100644
+index a90a124d3a..4f3e681962 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);
@@ -46,5 +46,5 @@ index 7dd18fefff..35137ab34f 100644
+
#endif /* LINUX_NAT_H */
--
-2.13.1
+2.18.0
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
index 0c103ef3f69..bc4bc26835b 100644
--- a/meta/recipes-devtools/gdb/gdb/0009-Change-order-of-CFLAGS.patch
+++ b/meta/recipes-devtools/gdb/gdb/0009-Change-order-of-CFLAGS.patch
@@ -1,7 +1,7 @@
-From 3f54036b891054072b3e43ea8daaa57aa367b2e0 Mon Sep 17 00:00:00 2001
+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/10] Change order of CFLAGS
+Subject: [PATCH 09/11] Change order of CFLAGS
Lets us override Werror if need be
@@ -13,10 +13,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
-index 01dfdc0b89..f6aebef464 100644
+index f2f8a084bd..9528db1364 100644
--- a/gdb/gdbserver/Makefile.in
+++ b/gdb/gdbserver/Makefile.in
-@@ -140,7 +140,7 @@ CPPFLAGS = @CPPFLAGS@
+@@ -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)
@@ -26,5 +26,5 @@ index 01dfdc0b89..f6aebef464 100644
# LDFLAGS is specifically reserved for setting from the command line
# when running make.
--
-2.13.1
+2.18.0
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
index c9507109b9f..809d52f250b 100644
--- a/meta/recipes-devtools/gdb/gdb/0010-resolve-restrict-keyword-conflict.patch
+++ b/meta/recipes-devtools/gdb/gdb/0010-resolve-restrict-keyword-conflict.patch
@@ -1,7 +1,7 @@
-From 3ead0dd143521b0ba69c9e753bc4a236f9445ad9 Mon Sep 17 00:00:00 2001
+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/10] resolve restrict keyword conflict
+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'
@@ -15,7 +15,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
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 d535a6a48b..7c34d5a1aa 100644
+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
@@ -44,5 +44,5 @@ index d535a6a48b..7c34d5a1aa 100644
_GL_CXXALIASWARN (gettimeofday);
# if defined __cplusplus && defined GNULIB_NAMESPACE
--
-2.13.1
+2.18.0
diff --git a/meta/recipes-devtools/gdb/gdb/package_devel_gdb_patches_120-sigprocmask-invalid-call.patch b/meta/recipes-devtools/gdb/gdb/0011-Fix-invalid-sigprocmask-call.patch
index c5484f789dd..bce025c391d 100644
--- a/meta/recipes-devtools/gdb/gdb/package_devel_gdb_patches_120-sigprocmask-invalid-call.patch
+++ b/meta/recipes-devtools/gdb/gdb/0011-Fix-invalid-sigprocmask-call.patch
@@ -1,7 +1,10 @@
-From 56893a61aa4f0270fa8d1197b9848247f90fce0d Mon Sep 17 00:00:00 2001
+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] Fix invalid sigprocmask call
+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
@@ -20,18 +23,19 @@ gdb/ChangeLog:
* 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>
- gdb/ChangeLog | 5 +++++
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
gdb/common/signals-state-save-restore.c | 2 +-
- 2 files changed, 6 insertions(+), 1 deletion(-)
+ 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 d11a9ae..734335c 100644
+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 (void)
+@@ -41,7 +41,7 @@ save_original_signals_state (bool quiet)
int i;
int res;
@@ -41,5 +45,5 @@ index d11a9ae..734335c 100644
perror_with_name (("sigprocmask"));
--
-2.6.4
+2.18.0
diff --git a/meta/recipes-devtools/gdb/gdb/0012-Unbreak-GDBserver-build-for-x32.patch b/meta/recipes-devtools/gdb/gdb/0012-Unbreak-GDBserver-build-for-x32.patch
deleted file mode 100644
index 18a3ce3d631..00000000000
--- a/meta/recipes-devtools/gdb/gdb/0012-Unbreak-GDBserver-build-for-x32.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From 3e1e401053ea5f02a9e9c65abddd31a03baa1bd1 Mon Sep 17 00:00:00 2001
-From: Yao Qi <yao.qi@linaro.org>
-Date: Fri, 29 Dec 2017 12:57:25 +0800
-Subject: [PATCH] Unbreak GDBserver build for x32
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-When I verify my target description changes, I build GDB and GDBserver for
-x32, but it failed.
-
-/../../binutils-gdb/gdb/gdbserver/linux-amd64-ipa.c
-../../../binutils-gdb/gdb/gdbserver/linux-amd64-ipa.c: In function ‘const target_desc* get_ipa_tdesc(int)’:
-../../../binutils-gdb/gdb/gdbserver/linux-amd64-ipa.c:184:10: error: ‘X86_TDESC_AVX512’ was not declared in this scope
- case X86_TDESC_AVX512:
- ^
-../../../binutils-gdb/gdb/gdbserver/linux-amd64-ipa.c:185:14: error: ‘tdesc_x32_avx512_linux’ was not declared in this scope
- return tdesc_x32_avx512_linux;
- ^
-../../../binutils-gdb/gdb/gdbserver/linux-amd64-ipa.c: In function ‘void initialize_low_tracepoint()’:
-../../../binutils-gdb/gdb/gdbserver/linux-amd64-ipa.c:282:36: error: ‘init_registers_x32_avx512_linux’ was not declared in this scope
- init_registers_x32_avx512_linux ();
- ^
-
-ipa_x32_linux_regobj use to be there, but removed by
-22049425ce40324139be82d9a6ec518c46b65815 by mistake.
-
-gdb/gdbserver:
-
-2017-08-04 Yao Qi <yao.qi@linaro.org>
-
- * configure.srv (ipa_x32_linux_regobj): New.
- * linux-amd64-ipa.c (get_ipa_tdesc): Use X86_TDESC_AVX_AVX512
- instead of X86_TDESC_AVX512.
- (initialize_low_tracepoint): Call
- init_registers_x32_avx_avx512_linux.
-
-Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=f02fd7745d003d65fd3b981618e07b874b721d79]
-
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- ChangeLog | 8 ++++++++
- gdb/gdbserver/configure.srv | 1 +
- gdb/gdbserver/linux-amd64-ipa.c | 6 +++---
- 3 files changed, 12 insertions(+), 3 deletions(-)
-
-diff --git a/ChangeLog b/ChangeLog
-index 4ac2d63..b5b8228 100644
---- a/ChangeLog
-+++ b/ChangeLog
-@@ -1,3 +1,11 @@
-+ 2017-08-04 Yao Qi <yao.qi@linaro.org>
-+
-+ * configure.srv (ipa_x32_linux_regobj): New.
-+ * linux-amd64-ipa.c (get_ipa_tdesc): Use X86_TDESC_AVX_AVX512
-+ instead of X86_TDESC_AVX512.
-+ (initialize_low_tracepoint): Call
-+ init_registers_x32_avx_avx512_linux.
-+
- 2017-04-13 Andrew Jenner <andrew@codesourcery.com>
-
- * config.sub: Sync with master version in config project.
-diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
-index d00d9e2..56951c8 100644
---- a/gdb/gdbserver/configure.srv
-+++ b/gdb/gdbserver/configure.srv
-@@ -31,6 +31,7 @@ srv_amd64_linux_regobj="amd64-linux.o amd64-avx-linux.o amd64-avx-avx512-linux.o
-
- ipa_i386_linux_regobj="i386-linux-ipa.o i386-avx-linux-ipa.o i386-avx-mpx-linux-ipa.o i386-avx-avx512-linux-ipa.o i386-avx-mpx-avx512-pku-linux-ipa.o i386-mpx-linux-ipa.o i386-mmx-linux-ipa.o"
- ipa_amd64_linux_regobj="amd64-linux-ipa.o amd64-avx-linux-ipa.o amd64-avx-mpx-linux-ipa.o amd64-avx-avx512-linux-ipa.o amd64-avx-mpx-avx512-pku-linux-ipa.o amd64-mpx-linux-ipa.o"
-+ipa_x32_linux_regobj="x32-linux-ipa.o x32-avx-linux-ipa.o x32-avx-avx512-linux-ipa.o"
- ipa_ppc_linux_regobj="powerpc-32l-ipa.o powerpc-altivec32l-ipa.o powerpc-cell32l-ipa.o powerpc-vsx32l-ipa.o powerpc-isa205-32l-ipa.o powerpc-isa205-altivec32l-ipa.o powerpc-isa205-vsx32l-ipa.o powerpc-e500l-ipa.o powerpc-64l-ipa.o powerpc-altivec64l-ipa.o powerpc-cell64l-ipa.o powerpc-vsx64l-ipa.o powerpc-isa205-64l-ipa.o powerpc-isa205-altivec64l-ipa.o powerpc-isa205-vsx64l-ipa.o"
-
- srv_i386_32bit_xmlfiles="i386/32bit-core.xml i386/32bit-sse.xml i386/32bit-avx.xml i386/32bit-avx512.xml i386/32bit-mpx.xml i386/32bit-pkeys.xml"
-diff --git a/gdb/gdbserver/linux-amd64-ipa.c b/gdb/gdbserver/linux-amd64-ipa.c
-index 67f36c2..683339b 100644
---- a/gdb/gdbserver/linux-amd64-ipa.c
-+++ b/gdb/gdbserver/linux-amd64-ipa.c
-@@ -181,8 +181,8 @@ get_ipa_tdesc (int idx)
- return tdesc_x32_linux;
- case X86_TDESC_AVX:
- return tdesc_x32_avx_linux;
-- case X86_TDESC_AVX512:
-- return tdesc_x32_avx512_linux;
-+ case X86_TDESC_AVX_AVX512:
-+ return tdesc_x32_avx_avx512_linux;
- default:
- break;
- }
-@@ -279,7 +279,7 @@ initialize_low_tracepoint (void)
- #if defined __ILP32__
- init_registers_x32_linux ();
- init_registers_x32_avx_linux ();
-- init_registers_x32_avx512_linux ();
-+ init_registers_x32_avx_avx512_linux ();
- #else
- init_registers_amd64_linux ();
- init_registers_amd64_avx_linux ();
---
-2.7.4
-
diff --git a/meta/recipes-devtools/gdb/gdb/gdb-Fix-ia64-defining-TRAP_HWBKPT-before-including-g.patch b/meta/recipes-devtools/gdb/gdb/gdb-Fix-ia64-defining-TRAP_HWBKPT-before-including-g.patch
deleted file mode 100644
index ef97de77722..00000000000
--- a/meta/recipes-devtools/gdb/gdb/gdb-Fix-ia64-defining-TRAP_HWBKPT-before-including-g.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From b033a9663053eed87cb572397176747b88e9a699 Mon Sep 17 00:00:00 2001
-From: James Clarke <jrtc27@jrtc27.com>
-Date: Fri, 19 Jan 2018 17:22:49 +0000
-Subject: [PATCH] gdb: Fix ia64 defining TRAP_HWBKPT before including
- gdb_wait.h
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-On ia64, gdb_wait.h eventually includes siginfo-consts-arch.h, which
-contains an enum with TRAP_HWBKPT, along with a #define. Thus we cannot
-define TRAP_HWBKPT to 4 beforehand, and so gdb_wait.h must be included
-earlier; include it from linux-ptrace.h so it can never come afterwards.
-
-gdb/ChangeLog:
-
- * nat/linux-ptrace.c: Remove unnecessary reinclusion of
- gdb_ptrace.h, and move including gdb_wait.h ...
- * nat/linux-ptrace.h: ... to here.
-
-Upstream-Status: Accepted [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=5a6c3296a7a90694ad4042f6256f3da6d4fa4ee8]
-
-Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>
----
- gdb/nat/linux-ptrace.c | 2 --
- gdb/nat/linux-ptrace.h | 1 +
- 2 files changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/gdb/nat/linux-ptrace.c b/gdb/nat/linux-ptrace.c
-index 3265b16..559c2de 100644
---- a/gdb/nat/linux-ptrace.c
-+++ b/gdb/nat/linux-ptrace.c
-@@ -21,8 +21,6 @@
- #include "linux-procfs.h"
- #include "linux-waitpid.h"
- #include "buffer.h"
--#include "gdb_wait.h"
--#include "gdb_ptrace.h"
- #ifdef HAVE_SYS_PROCFS_H
- #include <sys/procfs.h>
- #endif
-diff --git a/gdb/nat/linux-ptrace.h b/gdb/nat/linux-ptrace.h
-index 5954945..6faa89b 100644
---- a/gdb/nat/linux-ptrace.h
-+++ b/gdb/nat/linux-ptrace.h
-@@ -21,6 +21,7 @@
- struct buffer;
-
- #include "nat/gdb_ptrace.h"
-+#include "gdb_wait.h"
-
- #ifdef __UCLIBC__
- #if !(defined(__UCLIBC_HAS_MMU__) || defined(__ARCH_HAS_MMU__))
---
-2.7.4
-
diff --git a/meta/recipes-devtools/gdb/gdb/gdbserver-ctrl-c-handling.patch b/meta/recipes-devtools/gdb/gdb/gdbserver-ctrl-c-handling.patch
new file mode 100644
index 00000000000..dffb0dd81fc
--- /dev/null
+++ b/meta/recipes-devtools/gdb/gdb/gdbserver-ctrl-c-handling.patch
@@ -0,0 +1,26 @@
++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_8.0.1.bb b/meta/recipes-devtools/gdb/gdb_8.2.bb
index ea8fef122c0..c6eac84dd8e 100644
--- a/meta/recipes-devtools/gdb/gdb_8.0.1.bb
+++ b/meta/recipes-devtools/gdb/gdb_8.2.bb
@@ -6,6 +6,8 @@ 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 \
"
@@ -24,4 +26,4 @@ EOF
chmod +x ${WORKDIR}/python
fi
}
-CFLAGS_append_libc-musl = " -Drpl_gettimeofday=gettimeofday"
+CPPFLAGS_append_libc-musl = " -Drpl_gettimeofday=gettimeofday -Drpl_stat=stat"
diff --git a/meta/recipes-devtools/git/git.inc b/meta/recipes-devtools/git/git.inc
index dd9d792c5c2..26a22ac1e84 100644
--- a/meta/recipes-devtools/git/git.inc
+++ b/meta/recipes-devtools/git/git.inc
@@ -52,13 +52,6 @@ perl_native_fixup () {
-e 's#${libdir}/perl-native/#${libdir}/#' \
${@d.getVar("PERLTOOLS").replace(' /',d.getVar('D') + '/')}
- # ${libdir} is not applicable here, perl-native files are always
- # installed to /usr/lib on both 32/64 bits targets.
-
- mkdir -p ${D}${libdir}
- mv ${D}${exec_prefix}/lib/perl-native/perl ${D}${libdir}
- rmdir -p ${D}${exec_prefix}/lib/perl-native || true
-
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
@@ -72,8 +65,7 @@ perl_native_fixup () {
# 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}${libdir}/perl/site_perl/*/Git/SVN*
- sed -i -e '/SVN/d' ${D}${libdir}/perl/site_perl/*/auto/Git/.packlist
+ ${D}${datadir}/perl5/Git/SVN*
fi
}
@@ -124,7 +116,7 @@ PACKAGES =+ "${PN}-perltools"
FILES_${PN}-perltools += " \
${PERLTOOLS} \
${libdir}/perl \
- ${datadir}/perl \
+ ${datadir}/perl5 \
"
RDEPENDS_${PN}-perltools = "${PN} perl perl-module-file-path findutils"
diff --git a/meta/recipes-devtools/git/git_2.16.1.bb b/meta/recipes-devtools/git/git_2.16.1.bb
deleted file mode 100644
index 9dc4eba88cb..00000000000
--- a/meta/recipes-devtools/git/git_2.16.1.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] = "37467da8e79e72f28598d667f219f75e"
-SRC_URI[tarball.sha256sum] = "56cfa48af2b289bba172ca0a47c29f0083f5846cf4759978b70988e4f07fc9fd"
-SRC_URI[manpages.md5sum] = "5587407f3c28446af12fde3f3131ba34"
-SRC_URI[manpages.sha256sum] = "d499e825f429d76862be415f579c20cc26b046573a3a39237acaf9682cb71be7"
diff --git a/meta/recipes-devtools/git/git_2.18.0.bb b/meta/recipes-devtools/git/git_2.18.0.bb
new file mode 100644
index 00000000000..72b43a7d51f
--- /dev/null
+++ b/meta/recipes-devtools/git/git_2.18.0.bb
@@ -0,0 +1,11 @@
+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] = "3f210b2dd1613d90ded3b8732b052025"
+SRC_URI[tarball.sha256sum] = "94faf2c0b02a7920b0b46f4961d8e9cad08e81418614102898a55f980fa3e7e4"
+SRC_URI[manpages.md5sum] = "8251512320568a049192a8219c51e905"
+SRC_URI[manpages.sha256sum] = "6cf38ab3ad43ccdcd6a73ffdcf2a016d56ab6b4b240a574b0bb96f520a04ff55"
diff --git a/meta/recipes-devtools/glide/glide_0.13.1.bb b/meta/recipes-devtools/glide/glide_0.13.1.bb
index 1a5b145cf36..ba076d2bb7f 100644
--- a/meta/recipes-devtools/glide/glide_0.13.1.bb
+++ b/meta/recipes-devtools/glide/glide_0.13.1.bb
@@ -13,3 +13,23 @@ 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"
diff --git a/meta/recipes-devtools/gnu-config/gnu-config/musl-support.patch b/meta/recipes-devtools/gnu-config/gnu-config/musl-support.patch
deleted file mode 100644
index 3147435a6e5..00000000000
--- a/meta/recipes-devtools/gnu-config/gnu-config/musl-support.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-support musl
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Index: gnu-config-20120814/config.sub
-===================================================================
---- gnu-config-20120814.orig/config.sub 2012-09-18 02:27:45.000000000 -0700
-+++ gnu-config-20120814/config.sub 2014-03-26 00:34:19.955996709 -0700
-@@ -123,6 +123,7 @@
- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
- case $maybe_os in
- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-+ linux-musl* | \
- linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
- knetbsd*-gnu* | netbsd*-gnu* | \
- kopensolaris*-gnu* | \
-@@ -1365,6 +1366,7 @@
- | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-uclibc* \
-+ | -linux-musl* \
- | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
diff --git a/meta/recipes-devtools/gnu-config/gnu-config_20120814.bb b/meta/recipes-devtools/gnu-config/gnu-config_20120814.bb
deleted file mode 100644
index 3d428b9b78f..00000000000
--- a/meta/recipes-devtools/gnu-config/gnu-config_20120814.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-SUMMARY = "gnu-configize"
-DESCRIPTION = "Tool that installs the GNU config.guess / config.sub into a directory tree"
-SECTION = "devel"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://config.guess;endline=39;md5=b79a4663475f4d724846463277817e0d"
-
-DEPENDS_class-native = "hostperl-runtime-native"
-
-INHIBIT_DEFAULT_DEPS = "1"
-
-
-SRC_URI = "http://downloads.yoctoproject.org/releases/gnu-config/gnu-config-${PV}.tar.bz2 \
- file://musl-support.patch \
- file://gnu-configize.in"
-
-SRC_URI[md5sum] = "bcfca5a2bb39edad4aae5a65efc84094"
-SRC_URI[sha256sum] = "44f99a8e76f3e8e4fec0bb5ad4762f8e44366168554ce66cb85afbe2ed3efd8b"
-
-CLEANBROKEN = "1"
-
-do_compile[noexec] = "1"
-
-do_install () {
- install -d ${D}${datadir}/gnu-config \
- ${D}${bindir}
- cat ${WORKDIR}/gnu-configize.in | \
- sed -e 's,@gnu-configdir@,${datadir}/gnu-config,g' \
- -e 's,@autom4te_perllibdir@,${datadir}/autoconf,g' > ${D}${bindir}/gnu-configize
- # In the native case we want the system perl as perl-native can't have built yet
- if [ "${PN}" != "gnu-config-native" -a "${PN}" != "nativesdk-gnu-config" ]; then
- sed -i -e 's,/usr/bin/env,${bindir}/env,g' ${D}${bindir}/gnu-configize
- fi
- chmod 755 ${D}${bindir}/gnu-configize
- install -m 0644 config.guess config.sub ${D}${datadir}/gnu-config/
-}
-
-PACKAGES = "${PN}"
-FILES_${PN} = "${bindir} ${datadir}/gnu-config"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/gnu-config/gnu-config_git.bb b/meta/recipes-devtools/gnu-config/gnu-config_git.bb
index 8de81381276..4745f19ceee 100644
--- a/meta/recipes-devtools/gnu-config/gnu-config_git.bb
+++ b/meta/recipes-devtools/gnu-config/gnu-config_git.bb
@@ -2,14 +2,14 @@ SUMMARY = "gnu-configize"
DESCRIPTION = "Tool that installs the GNU config.guess / config.sub into a directory tree"
SECTION = "devel"
LICENSE = "GPL-3.0-with-autoconf-exception"
-LIC_FILES_CHKSUM = "file://config.guess;beginline=7;endline=27;md5=9bac8b1743c2240ae07cce6e546ac2f2"
+LIC_FILES_CHKSUM = "file://config.guess;beginline=7;endline=27;md5=b75d42f59f706ea56d6a8e00216fca6a"
DEPENDS_class-native = "hostperl-runtime-native"
INHIBIT_DEFAULT_DEPS = "1"
-SRCREV = "b576fa87c140b824466ef1638e945e87dc5c0343"
-PV = "20150728+git${SRCPV}"
+SRCREV = "30d53fc428ea42af9d6f4d355db0022e3918a824"
+PV = "20180713+git${SRCPV}"
SRC_URI = "git://git.savannah.gnu.org/config.git \
file://gnu-configize.in"
diff --git a/meta/recipes-devtools/go/go-1.10.inc b/meta/recipes-devtools/go/go-1.10.inc
index 1d5958a68c1..1df0fc5b6ab 100644
--- a/meta/recipes-devtools/go/go-1.10.inc
+++ b/meta/recipes-devtools/go/go-1.10.inc
@@ -1,7 +1,7 @@
require go-common.inc
GO_BASEVERSION = "1.10"
-GO_MINOR = ".1"
+GO_MINOR = ".3"
PV .= "${GO_MINOR}"
FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/go-${GO_BASEVERSION}:"
@@ -20,6 +20,5 @@ SRC_URI += "\
SRC_URI_append_libc-musl = " file://0009-ld-replace-glibc-dynamic-linker-with-musl.patch"
-SRC_URI[main.md5sum] = "d55e8b2c6272ab1abf5e4e6cdaaca680"
-SRC_URI[main.sha256sum] = "589449ff6c3ccbff1d391d4e7ab5bb5d5643a5a41a04c99315e55c16bbf73ddc"
-
+SRC_URI[main.md5sum] = "d15dfb264105c5e84fbe33f4a4aa5021"
+SRC_URI[main.sha256sum] = "567b1cc66c9704d1c019c50bef946272e911ec6baf244310f87f4e678be155f2"
diff --git a/meta/recipes-devtools/go/go-1.9.inc b/meta/recipes-devtools/go/go-1.9.inc
index 2823304b7ce..329cee061c9 100644
--- a/meta/recipes-devtools/go/go-1.9.inc
+++ b/meta/recipes-devtools/go/go-1.9.inc
@@ -1,7 +1,7 @@
require go-common.inc
GO_BASEVERSION = "1.9"
-GO_MINOR = ".4"
+GO_MINOR = ".7"
PV .= "${GO_MINOR}"
FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/go-${GO_BASEVERSION}:"
@@ -22,5 +22,5 @@ SRC_URI += "\
"
SRC_URI_append_libc-musl = " file://set-external-linker.patch"
-SRC_URI[main.md5sum] = "6816441fd6680c63865cdd5cb8bc1960"
-SRC_URI[main.sha256sum] = "0573a8df33168977185aa44173305e5a0450f55213600e94541604b75d46dc06"
+SRC_URI[main.md5sum] = "3c2cf876ed6612a022574a565206c6ea"
+SRC_URI[main.sha256sum] = "582814fa45e8ecb0859a208e517b48aa0ad951e3b36c7fff203d834e0ef27722"
diff --git a/meta/recipes-devtools/go/go-dep_0.4.1.bb b/meta/recipes-devtools/go/go-dep_0.4.1.bb
deleted file mode 100644
index d82e6372058..00000000000
--- a/meta/recipes-devtools/go/go-dep_0.4.1.bb
+++ /dev/null
@@ -1,20 +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 \
- "
-
-# Points to 0.4.1 tag
-SRCREV = "37d9ea0ac16f0e0a05afc3b60e1ac8c364b6c329"
-
-inherit go
-
-GO_INSTALL = "${GO_IMPORT}/cmd/dep"
-
-RDEPENDS_${PN}-dev += "bash"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/go/go-dep_0.5.0.bb b/meta/recipes-devtools/go/go-dep_0.5.0.bb
new file mode 100644
index 00000000000..f0ce60a8ec6
--- /dev/null
+++ b/meta/recipes-devtools/go/go-dep_0.5.0.bb
@@ -0,0 +1,30 @@
+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 \
+ "
+
+# Points to 0.5.0 tag
+SRCREV = "224a564abe296670b692fe08bb63a3e4c4ad7978"
+
+inherit go
+
+GO_INSTALL = "${GO_IMPORT}/cmd/dep"
+
+RDEPENDS_${PN}-dev += "bash"
+
+BBCLASSEXTEND = "native nativesdk"
+
+# for x86 ends with textrel in ${PN}
+# http://errors.yoctoproject.org/Errors/Details/185630/
+# ERROR: QA Issue: ELF binary '/work/i586-oe-linux/go-dep/0.4.1-r0/packages-split/go-dep/usr/bin/dep' has relocations in .text [textrel]
+INSANE_SKIP_${PN} += "textrel"
+
+# for aarch64 ends with textrel in ${PN}-ptest
+# http://errors.yoctoproject.org/Errors/Details/185632/
+# ERROR: QA Issue: ELF binary '/work/aarch64-oe-linux/go-dep/0.4.1-r0/packages-split/go-dep-ptest/usr/lib/go-dep/ptest/github.com/golang/dep/cmd/dep/dep.test' has relocations in .text [textrel]
+INSANE_SKIP_${PN}-ptest += "textrel"
diff --git a/meta/recipes-devtools/go/go-native.inc b/meta/recipes-devtools/go/go-native.inc
index b76fb0825e4..207708745e0 100644
--- a/meta/recipes-devtools/go/go-native.inc
+++ b/meta/recipes-devtools/go/go-native.inc
@@ -1,7 +1,3 @@
-# Use immediate assingment here to get the original (/usr/lib)
-# instead of the one rewritten by native.bbclass.
-nonstaging_libdir := "${libdir}"
-
inherit native
SRC_URI_append = " https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz;name=bootstrap;subdir=go1.4"
@@ -20,7 +16,7 @@ do_configure() {
}
do_compile() {
- export GOROOT_FINAL="${nonstaging_libdir}/go"
+ export GOROOT_FINAL="${libdir_native}/go"
export GOROOT_BOOTSTRAP="${WORKDIR}/go1.4/go"
cd src
diff --git a/meta/recipes-devtools/go/go_1.9.bb b/meta/recipes-devtools/go/go_1.9.bb
index ec5a314e7d6..7da7897cf5e 100644
--- a/meta/recipes-devtools/go/go_1.9.bb
+++ b/meta/recipes-devtools/go/go_1.9.bb
@@ -15,3 +15,10 @@ do_compile() {
./make.bash
cd ${B}
}
+
+# for aarch64 ends with textrel in ${PN}
+# http://errors.yoctoproject.org/Errors/Details/185634/
+# ERROR: QA Issue: ELF binary '/work/aarch64-oe-linux/go/1.9.7-r0/packages-split/go/usr/lib/go/bin/go' has relocations in .text
+# ELF binary '/work/aarch64-oe-linux/go/1.9.7-r0/packages-split/go/usr/lib/go/pkg/tool/linux_arm64/trace' has relocations in .text
+# ELF binary '/work/aarch64-oe-linux/go/1.9.7-r0/packages-split/go/usr/lib/go/pkg/tool/linux_arm64/pprof' has relocations in .text [textrel]
+INSANE_SKIP_${PN} += "textrel"
diff --git a/meta/recipes-devtools/help2man/help2man-native_1.47.5.bb b/meta/recipes-devtools/help2man/help2man-native_1.47.6.bb
index 2dd6d38828a..794d308cb76 100644
--- a/meta/recipes-devtools/help2man/help2man-native_1.47.5.bb
+++ b/meta/recipes-devtools/help2man/help2man-native_1.47.6.bb
@@ -6,8 +6,8 @@ DEPENDS = "autoconf-native automake-native"
SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz"
-SRC_URI[md5sum] = "1c886063c9e0ab463906de804596aa2f"
-SRC_URI[sha256sum] = "7ca60b2519fdbe97f463fe2df66a6188d18b514bfd44127d985f0234ee2461b1"
+SRC_URI[md5sum] = "7424901e6eca8af372d2ad62be5cf659"
+SRC_URI[sha256sum] = "d91b0295b72a638e4a564f643e4e6d1928779131f628c00f356c13bf336de46f"
inherit autotools native
diff --git a/meta/recipes-devtools/i2c-tools/i2c-tools_4.0.bb b/meta/recipes-devtools/i2c-tools/i2c-tools_4.0.bb
index 01ac47f611a..fe3247d82e8 100644
--- a/meta/recipes-devtools/i2c-tools/i2c-tools_4.0.bb
+++ b/meta/recipes-devtools/i2c-tools/i2c-tools_4.0.bb
@@ -14,6 +14,8 @@ SRC_URI = "${KERNELORG_MIRROR}/software/utils/i2c-tools/${BP}.tar.gz \
SRC_URI[md5sum] = "d92a288d70f306d3895e3a7e9c14c9aa"
SRC_URI[sha256sum] = "5b60daf6f011de0acb61de57dba62f2054bb39f19961d67e0c91610f071ca403"
+inherit update-alternatives
+
EXTRA_OEMAKE = "bindir=${bindir} sbindir=${sbindir} \
incdir=${includedir} libdir=${libdir} \
mandir=${mandir} \
@@ -34,3 +36,10 @@ RDEPENDS_${PN}-misc = "${PN} perl perl-module-posix \
perl-module-constant perl-module-file-basename \
perl-module-fcntl perl-module-strict perl-module-vars \
"
+
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE_${PN} = "i2cdetect i2cdump i2cget i2cset"
+ALTERNATIVE_LINK_NAME[i2cdetect] = "${sbindir}/i2cdetect"
+ALTERNATIVE_LINK_NAME[i2cdump] = "${sbindir}/i2cdump"
+ALTERNATIVE_LINK_NAME[i2cget] = "${sbindir}/i2cget"
+ALTERNATIVE_LINK_NAME[i2cset] = "${sbindir}/i2cset"
diff --git a/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-setup.sh b/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-setup.sh
index 04808265781..25250b7c0e2 100644
--- a/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-setup.sh
+++ b/meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-setup.sh
@@ -20,11 +20,6 @@
# SOFTWARE.
#
-# Setup environment
-for env_setup_script in `ls $1/environment-setup-*`; do
- . $env_setup_script
-done
-
# ICECC_PATH will have been found icecc-env.sh
if [ -z "$ICECC_PATH" ]; then
exit 0
diff --git a/meta/recipes-devtools/icon-naming-utils/icon-naming-utils_0.8.90.bb b/meta/recipes-devtools/icon-naming-utils/icon-naming-utils_0.8.90.bb
deleted file mode 100644
index 6b356b0d44d..00000000000
--- a/meta/recipes-devtools/icon-naming-utils/icon-naming-utils_0.8.90.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "Enables backwards compatibility with current desktop icon themes"
-DESCRIPTION = "A Perl script used for maintaining backwards \
-compatibility with current desktop icon themes, while migrating to the \
-names specified in the Icon Naming Specification. The Icon Naming \
-Utilities map the icon names used by the GNOME and KDE desktops to the \
-icon names proposed in the Icon Naming Specification, and generate the \
-icon files appropriate to the desktop environment you use. The Icon \
-Naming Specification provides a standard list of common icon contexts \
-and names that can be used to make icon themes work in a desktop \
-environment or application that implements the naming specification. "
-LICENSE = "GPLv2"
-DEPENDS = "libxml-simple-perl-native"
-PR = "r5"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-SRC_URI = "http://tango.freedesktop.org/releases/icon-naming-utils-${PV}.tar.gz"
-SRC_URI[md5sum] = "2c5c7a418e5eb3268f65e21993277fba"
-SRC_URI[sha256sum] = "044ab2199ed8c6a55ce36fd4fcd8b8021a5e21f5bab028c0a7cdcf52a5902e1c"
-
-inherit autotools allarch perlnative
-
-do_configure_append() {
- # Make sure we use our nativeperl wrapper.
- sed -i -e "1s:#!.*:#!/usr/bin/env nativeperl:" ${S}/icon-name-mapping.pl.in
-}
-
-FILES_${PN} += "${datadir}/dtds"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/json-c/json-c_0.13.bb b/meta/recipes-devtools/json-c/json-c_0.13.1.bb
index 06319de3239..5b10e682978 100644
--- a/meta/recipes-devtools/json-c/json-c_0.13.bb
+++ b/meta/recipes-devtools/json-c/json-c_0.13.1.bb
@@ -4,18 +4,17 @@ 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[md5sum] = "11fc5d90c77375e5fc8401e8b9efbf21"
-SRC_URI[sha256sum] = "0316780be9ad16c42d7c26b015a784fd5df4b0909fef0aba51cfb13e492ac24d"
+SRC_URI = "https://s3.amazonaws.com/json-c_releases/releases/${BP}.tar.gz"
+SRC_URI[md5sum] = "04969ad59cc37bddd83741a08b98f350"
+SRC_URI[sha256sum] = "b87e608d4d3f7bfdd36ef78d56d53c74e66ab278d318b71e6002a369d36f4873"
UPSTREAM_CHECK_REGEX = "json-c-(?P<pver>\d+(\.\d+)+).tar"
# json-c releases page is fetching the list of releases in some weird XML format
# from https://s3.amazonaws.com/json-c_releases and processes it with javascript :-/
#UPSTREAM_CHECK_URI = "https://s3.amazonaws.com/json-c_releases/releases/index.html"
-RECIPE_UPSTREAM_VERSION = "0.13"
-RECIPE_UPSTREAM_DATE = "Dec 07, 2017"
-CHECK_DATE = "Jan 31, 2018"
+RECIPE_UPSTREAM_VERSION = "0.13.1"
+RECIPE_UPSTREAM_DATE = "Mar 04, 2018"
+CHECK_DATE = "May 02, 2018"
RPROVIDES_${PN} = "libjson"
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 b2683104686..522bf3a0e96 100644
--- a/meta/recipes-devtools/libtool/libtool-cross_2.4.6.bb
+++ b/meta/recipes-devtools/libtool/libtool-cross_2.4.6.bb
@@ -13,11 +13,19 @@ do_configure_prepend () {
rm -f ${STAGING_DATADIR}/aclocal/lt*.m4
}
+#
+# ccache may or may not be INHERITED, we remove references to it so the sstate
+# artefact works on a machine where its not present. libtool-cross isn't used
+# heavily so any performance issue is minor.
+# Find references to LTCC="ccache xxx-gcc" and CC="ccache xxx-gcc"
+#
do_install () {
install -d ${D}${bindir_crossscripts}/
install -m 0755 ${HOST_SYS}-libtool ${D}${bindir_crossscripts}/${HOST_SYS}-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
diff --git a/meta/recipes-devtools/libtool/libtool/multilib.patch b/meta/recipes-devtools/libtool/libtool/multilib.patch
new file mode 100644
index 00000000000..018f0666520
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/multilib.patch
@@ -0,0 +1,23 @@
+Without this patch /usr/bin/libtoolize is different for each multilib
+since their host-triplets are different, despite there being no difference in
+the functionality of libtoolize itself.
+
+Ugly, but just patch this out. This fixes issues where libtool and
+libXX-libtool couldn't be installed into the same system.
+
+Upstream-Status: Inappropriate
+RP 2018/7/30
+
+Index: libtool-2.4.6/libtoolize.in
+===================================================================
+--- libtool-2.4.6.orig/libtoolize.in
++++ libtool-2.4.6/libtoolize.in
+@@ -113,7 +113,7 @@ You must 'cd' to the top directory of yo
+ When reporting a bug, please describe a test case to reproduce it and
+ include the following information:
+
+- host-triplet: @host_triplet@
++ host-triplet <redacted>
+ version: $progname (GNU @PACKAGE@) @VERSION@
+ automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
+ autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q`
diff --git a/meta/recipes-devtools/libtool/libtool_2.4.6.bb b/meta/recipes-devtools/libtool/libtool_2.4.6.bb
index b02620b4b41..f5fdd00e5ee 100644
--- a/meta/recipes-devtools/libtool/libtool_2.4.6.bb
+++ b/meta/recipes-devtools/libtool/libtool_2.4.6.bb
@@ -1,5 +1,7 @@
require libtool-${PV}.inc
+SRC_URI += "file://multilib.patch"
+
RDEPENDS_${PN} += "bash"
#
@@ -26,3 +28,7 @@ do_install_append () {
-e "s@${HOSTTOOLS_DIR}/@@g" \
-i ${D}${bindir}/libtool
}
+
+inherit multilib_script
+
+MULTILIB_SCRIPTS = "${PN}:${bindir}/libtool"
diff --git a/meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch b/meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch
index 21d2f81b580..6a9283323c8 100644
--- a/meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch
+++ b/meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch
@@ -1,4 +1,4 @@
-From 2f8ea767afdaa440c6368040630e1b3ea6a0977a Mon Sep 17 00:00:00 2001
+From aeccf16eaccdd80e4d5ecaa51673ce4b2bac1130 Mon Sep 17 00:00:00 2001
From: Martin Kelly <mkelly@xevo.com>
Date: Fri, 19 May 2017 00:22:57 -0700
Subject: [PATCH 2/2] llvm: allow env override of exe path
@@ -8,16 +8,19 @@ 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.
+To let it work in multilib environment, we need to provide a knob to supply
+multilib dirname as well
+
+Upstream-Status: Inappropriate [OE-Specific]
+
Signed-off-by: Martin Kelly <mkelly@xevo.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
-Upstream-Status: Pending
-
- tools/llvm-config/llvm-config.cpp | 7 +++++++
- 1 file changed, 7 insertions(+)
+ tools/llvm-config/llvm-config.cpp | 17 ++++++++++++++++-
+ 1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp
-index 08b096afb05..d8d7742744e 100644
+index 08b096afb05..360cc5abf4e 100644
--- a/tools/llvm-config/llvm-config.cpp
+++ b/tools/llvm-config/llvm-config.cpp
@@ -225,6 +225,13 @@ Typical components:\n\
@@ -34,6 +37,36 @@ index 08b096afb05..d8d7742744e 100644
// 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;
+@@ -306,12 +313,20 @@ int main(int argc, char **argv) {
+ std::string ActivePrefix, ActiveBinDir, ActiveIncludeDir, ActiveLibDir,
+ ActiveCMakeDir;
+ std::string ActiveIncludeOption;
++ // Hack for Yocto: we need to override the multilib path when we are using
++ // llvm-config from within a target sysroot.
++ std::string Multilibdir = std::getenv("YOCTO_ALTERNATE_MULTILIB_NAME");
++ if (Multilibdir.empty()) {
++ Multilibdir = "/lib" LLVM_LIBDIR_SUFFIX;
++ }
++
+ if (IsInDevelopmentTree) {
+ ActiveIncludeDir = std::string(LLVM_SRC_ROOT) + "/include";
+ ActivePrefix = CurrentExecPrefix;
+
+ // CMake organizes the products differently than a normal prefix style
+ // layout.
++
+ switch (DevelopmentTreeLayout) {
+ case CMakeStyle:
+ ActiveBinDir = ActiveObjRoot + "/bin";
+@@ -336,7 +351,7 @@ int main(int argc, char **argv) {
+ SmallString<256> path(StringRef(LLVM_TOOLS_INSTALL_DIR));
+ sys::fs::make_absolute(ActivePrefix, path);
+ ActiveBinDir = path.str();
+- ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;
++ ActiveLibDir = ActivePrefix + Multilibdir;
+ ActiveCMakeDir = ActiveLibDir + "/cmake/llvm";
+ ActiveIncludeOption = "-I" + ActiveIncludeDir;
+ }
--
-2.16.1
+2.18.0
diff --git a/meta/recipes-devtools/llvm/llvm_git.bb b/meta/recipes-devtools/llvm/llvm_git.bb
index 77c095d9a33..727876303d6 100644
--- a/meta/recipes-devtools/llvm/llvm_git.bb
+++ b/meta/recipes-devtools/llvm/llvm_git.bb
@@ -19,10 +19,10 @@ PROVIDES += "llvm${PV}"
LLVM_RELEASE = "${PV}"
LLVM_DIR = "llvm${LLVM_RELEASE}"
-SRCREV = "089d4c0c490687db6c75f1d074e99c4d42936a50"
+SRCREV = "5136df4d089a086b70d452160ad5451861269498"
PV = "6.0"
BRANCH = "release_60"
-PATCH_VERSION = "0"
+PATCH_VERSION = "1"
SRC_URI = "git://github.com/llvm-mirror/llvm.git;branch=${BRANCH};protocol=http \
file://0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch \
file://0002-llvm-allow-env-override-of-exe-path.patch \
@@ -44,14 +44,13 @@ def get_llvm_arch(bb, d, arch_var):
else:
raise bb.parse.SkipRecipe("Cannot map '%s' to a supported LLVM architecture" % a)
-def get_llvm_target_arch(bb, d):
- return get_llvm_arch(bb, d, 'TARGET_ARCH')
+def get_llvm_host_arch(bb, d):
+ return get_llvm_arch(bb, d, 'HOST_ARCH')
+
#
# Default to build all OE-Core supported target arches (user overridable).
#
-LLVM_TARGETS ?= "${@get_llvm_target_arch(bb, d)}"
-LLVM_TARGETS_prepend_x86 = "AMDGPU;"
-LLVM_TARGETS_prepend_x86-64 = "AMDGPU;"
+LLVM_TARGETS ?= "AMDGPU;${@get_llvm_host_arch(bb, d)}"
ARM_INSTRUCTION_SET_armv5 = "arm"
ARM_INSTRUCTION_SET_armv4t = "arm"
@@ -64,17 +63,19 @@ EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \
-DLLVM_ENABLE_FFI=ON \
-DFFI_INCLUDE_DIR=$(pkg-config --variable=includedir libffi) \
-DLLVM_OPTIMIZED_TABLEGEN=ON \
- -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS}" \
+ -DLLVM_TARGETS_TO_BUILD='${LLVM_TARGETS}' \
-G Ninja"
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 = "\
-DCMAKE_CROSSCOMPILING:BOOL=ON \
-DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen${PV} \
+ -DLLVM_CONFIG_PATH=${STAGING_BINDIR_NATIVE}/llvm-config${PV} \
"
do_configure_prepend() {
@@ -85,15 +86,15 @@ do_configure_prepend() {
}
do_compile() {
- NINJA_STATUS="[%p] " ninja -v ${PARALLEL_MAKE}
+ ninja -v ${PARALLEL_MAKE}
}
do_compile_class-native() {
- NINJA_STATUS="[%p] " ninja -v ${PARALLEL_MAKE} llvm-config llvm-tblgen
+ ninja -v ${PARALLEL_MAKE} llvm-config llvm-tblgen
}
do_install() {
- NINJA_STATUS="[%p] " DESTDIR=${LLVM_INSTALL_DIR} ninja -v install
+ DESTDIR=${LLVM_INSTALL_DIR} ninja -v install
install -D -m 0755 ${B}/bin/llvm-config ${D}${libdir}/${LLVM_DIR}/llvm-config
install -d ${D}${bindir}/${LLVM_DIR}
diff --git a/meta/recipes-devtools/m4/m4-1.4.18.inc b/meta/recipes-devtools/m4/m4-1.4.18.inc
index ee8bee446bb..a6cef6f3285 100644
--- a/meta/recipes-devtools/m4/m4-1.4.18.inc
+++ b/meta/recipes-devtools/m4/m4-1.4.18.inc
@@ -9,6 +9,7 @@ inherit autotools texinfo
SRC_URI = "${GNU_MIRROR}/m4/m4-${PV}.tar.gz \
file://ac_config_links.patch \
file://remove-gets.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"
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
new file mode 100644
index 00000000000..72e7ae20804
--- /dev/null
+++ b/meta/recipes-devtools/m4/m4/m4-1.4.18-glibc-change-work-around.patch
@@ -0,0 +1,129 @@
+update for glibc libio.h removal in 2.28+
+
+see
+https://src.fedoraproject.org/rpms/m4/c/814d592134fad36df757f9a61422d164ea2c6c9b?branch=master
+
+Upstream-Status: Pending
+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/meson/meson_0.44.1.bb b/meta/recipes-devtools/meson/meson.inc
index 6a81dab2650..b7fb3e698a1 100644
--- a/meta/recipes-devtools/meson/meson_0.44.1.bb
+++ b/meta/recipes-devtools/meson/meson.inc
@@ -4,18 +4,25 @@ SUMMARY = "A high performance build system"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://COPYING;md5=3b83ef96387f14655fc854ddc3c6bd57"
-SRC_URI = "https://github.com/mesonbuild/meson/releases/download/${PV}/${BP}.tar.gz \
+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://0001-Linker-rules-move-cross_args-in-front-of-output_args.patch \
file://0003-native_bindir.patch \
+ file://gi-flags.patch \
+ file://gtkdoc-flags.patch \
"
-SRC_URI[md5sum] = "82b1198bf714b5a4da84bfe8376c79cc"
-SRC_URI[sha256sum] = "2ea1a721574adb23160b6481191bcc1173f374e02b0ff3bb0ae85d988d97e4fa"
+SRC_URI[sha256sum] = "92d8afd921751261e36151643464efd3394162f69efbe8cd53e0a66b1cf395eb"
+SRC_URI[md5sum] = "31bda3519d8c0eb3438267268a78085e"
+
+SRC_URI_append_class-native = "file://0002-Make-CPU-family-warnings-fatal.patch \
+ file://0001-Support-building-allarch-recipes-again.patch \
+ "
+
UPSTREAM_CHECK_URI = "https://github.com/mesonbuild/meson/releases"
inherit setuptools3
RDEPENDS_${PN} = "ninja python3-core python3-modules"
-BBCLASSEXTEND = "native"
+FILES_${PN} += "${datadir}/polkit-1"
diff --git a/meta/recipes-devtools/meson/meson/0001-Support-building-allarch-recipes-again.patch b/meta/recipes-devtools/meson/meson/0001-Support-building-allarch-recipes-again.patch
new file mode 100644
index 00000000000..f6dd2309168
--- /dev/null
+++ b/meta/recipes-devtools/meson/meson/0001-Support-building-allarch-recipes-again.patch
@@ -0,0 +1,28 @@
+From d80d02a3ca6e21fa3d055c88c05234c2eb4db128 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
+
+This registers "allarch" as a known CPU family.
+
+Upstream-Status: Inappropriate [OE specific]
+Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
+---
+ mesonbuild/environment.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
+index a0580a2..712b1e8 100644
+--- a/mesonbuild/environment.py
++++ b/mesonbuild/environment.py
+@@ -73,6 +73,7 @@ from .compilers import (
+ build_filename = 'meson.build'
+
+ known_cpu_families = (
++ 'allarch',
+ 'aarch64',
+ 'arm',
+ 'e2k',
+--
+2.12.0
+
diff --git a/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch b/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch
index 1912e94358e..7ffd6c54cb0 100644
--- a/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch
+++ b/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch
@@ -1,7 +1,7 @@
-From c5692cac9c555664281377a82bf8b1e46934f437 Mon Sep 17 00:00:00 2001
+From 3ac4e58c5494bd7e603a325b5b5c2b8075849fee 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 1/3] gtkdoc: fix issues that arise when cross-compiling
+Subject: [PATCH] gtkdoc: fix issues that arise when cross-compiling
Specifically:
1) Make it possible to specify a wrapper for executing binaries
@@ -21,10 +21,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
2 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
-index 56765a5..4f7fe30 100644
+index cb69641..727eb6a 100644
--- a/mesonbuild/modules/gnome.py
+++ b/mesonbuild/modules/gnome.py
-@@ -769,6 +769,10 @@ This will become a hard error in the future.''')
+@@ -792,6 +792,10 @@ This will become a hard error in the future.''')
'--mode=' + mode]
if namespace:
args.append('--namespace=' + namespace)
@@ -35,53 +35,28 @@ index 56765a5..4f7fe30 100644
args += self._unpack_args('--htmlargs=', 'html_args', kwargs)
args += self._unpack_args('--scanargs=', 'scan_args', kwargs)
args += self._unpack_args('--scanobjsargs=', 'scanobjs_args', kwargs)
-@@ -796,14 +800,22 @@ This will become a hard error in the future.''')
- raise MesonException(
- 'Gir include dirs should be include_directories().')
- cflags.update(get_include_args(inc_dirs))
-+
-+ cross_c_args = " ".join(state.environment.cross_info.config["properties"].get('c_args', ""))
-+ cross_link_args = " ".join(state.environment.cross_info.config["properties"].get('c_link_args', ""))
-+
- if cflags:
-- args += ['--cflags=%s' % ' '.join(cflags)]
-+ args += ['--cflags=%s %s' % (cross_c_args,' '.join(cflags))]
- if ldflags:
-- args += ['--ldflags=%s' % ' '.join(ldflags)]
-+ args += ['--ldflags=%s %s' % (cross_link_args, ' '.join(ldflags))]
- compiler = state.environment.coredata.compilers.get('c')
-- if compiler:
-+ cross_compiler = state.environment.coredata.cross_compilers.get('c')
-+ if compiler and not state.environment.is_cross_build():
- args += ['--cc=%s' % ' '.join(compiler.get_exelist())]
- args += ['--ld=%s' % ' '.join(compiler.get_linker_exelist())]
-+ elif cross_compiler and state.environment.is_cross_build():
-+ args += ['--cc=%s' % ' '.join(cross_compiler.get_exelist())]
-+ args += ['--ld=%s' % ' '.join(cross_compiler.get_linker_exelist())]
-
- return args
-
diff --git a/mesonbuild/scripts/gtkdochelper.py b/mesonbuild/scripts/gtkdochelper.py
-index 4406b28..b846827 100644
+index 948dc5a..9c5bd19 100644
--- a/mesonbuild/scripts/gtkdochelper.py
+++ b/mesonbuild/scripts/gtkdochelper.py
-@@ -44,13 +44,14 @@ parser.add_argument('--ignore-headers', dest='ignore_headers', default='')
+@@ -45,6 +45,7 @@ parser.add_argument('--ignore-headers', dest='ignore_headers', default='')
parser.add_argument('--namespace', dest='namespace', default='')
parser.add_argument('--mode', dest='mode', default='')
parser.add_argument('--installdir', dest='install_dir')
+parser.add_argument('--gtkdoc-exe-wrapper', dest='gtkdoc_exe_wrapper')
- def gtkdoc_run_check(cmd, cwd):
- # Put stderr into stdout since we want to print it out anyway.
+ def gtkdoc_run_check(cmd, cwd, library_paths=None):
+ if library_paths is None:
+@@ -64,7 +65,7 @@ def gtkdoc_run_check(cmd, cwd, library_paths=None):
# This preserves the order of messages.
- p, out = Popen_safe(cmd, cwd=cwd, stderr=subprocess.STDOUT)[0:2]
+ p, out = Popen_safe(cmd, cwd=cwd, env=env, stderr=subprocess.STDOUT)[0:2]
if p.returncode != 0:
- err_msg = ["{!r} failed with status {:d}".format(cmd[0], p.returncode)]
+ err_msg = ["{!r} failed with status {:d}".format(cmd, p.returncode)]
if out:
err_msg.append(out)
raise MesonException('\n'.join(err_msg))
-@@ -58,7 +59,7 @@ def gtkdoc_run_check(cmd, cwd):
+@@ -74,7 +75,7 @@ def gtkdoc_run_check(cmd, cwd, library_paths=None):
def build_gtkdoc(source_root, build_root, doc_subdir, src_subdirs,
main_file, module,
html_args, scan_args, fixxref_args, mkdb_args,
@@ -90,7 +65,7 @@ index 4406b28..b846827 100644
html_assets, content_files, ignore_headers, namespace,
expand_content_files, mode):
print("Building documentation for %s" % module)
-@@ -111,6 +112,9 @@ def build_gtkdoc(source_root, build_root, doc_subdir, src_subdirs,
+@@ -135,6 +136,9 @@ def build_gtkdoc(source_root, build_root, doc_subdir, src_subdirs,
if gobject_typesfile:
scanobjs_cmd = ['gtkdoc-scangobj'] + scanobjs_args + ['--types=' + gobject_typesfile,
'--module=' + module,
@@ -99,8 +74,8 @@ index 4406b28..b846827 100644
+ '--ld=' + ld,
'--cflags=' + cflags,
'--ldflags=' + ldflags,
- '--ld=' + ld]
-@@ -207,6 +211,7 @@ def run(args):
+ '--cc=' + cc,
+@@ -238,6 +242,7 @@ def run(args):
mkdbargs,
options.gobject_typesfile,
scanobjsargs,
@@ -108,6 +83,3 @@ index 4406b28..b846827 100644
options.ld,
options.cc,
options.ldflags,
---
-2.15.0
-
diff --git a/meta/recipes-devtools/meson/meson/0002-Make-CPU-family-warnings-fatal.patch b/meta/recipes-devtools/meson/meson/0002-Make-CPU-family-warnings-fatal.patch
new file mode 100644
index 00000000000..ca56a6a8bff
--- /dev/null
+++ b/meta/recipes-devtools/meson/meson/0002-Make-CPU-family-warnings-fatal.patch
@@ -0,0 +1,36 @@
+From 2e8553fc01e62ebc4faa240bf20984a8a0ac7387 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
+
+Upstream-Status: Inappropriate [OE specific]
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+---
+ mesonbuild/environment.py | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
+index d29a77f..267acf9 100644
+--- a/mesonbuild/environment.py
++++ b/mesonbuild/environment.py
+@@ -239,9 +239,7 @@ def detect_cpu_family(compilers):
+ return 'x86_64'
+
+ 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))
++ raise EnvironmentException('Unknown CPU family %s, see https://wiki.yoctoproject.org/wiki/Meson/UnknownCPU for directions.' % trial)
+
+ return trial
+
+@@ -1014,7 +1012,7 @@ class CrossBuildInfo:
+ raise EnvironmentException('Malformed value in cross file variable %s.' % entry)
+
+ if entry == 'cpu_family' and res not in known_cpu_families:
+- mlog.warning('Unknown CPU family %s, please report this at https://github.com/mesonbuild/meson/issues/new' % value)
++ raise EnvironmentException('Unknown CPU family %s, see https://wiki.yoctoproject.org/wiki/Meson/UnknownCPU for directions.' % value)
+
+ if self.ok_type(res):
+ self.config[s][entry] = res
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
index ded42d14f7f..f32267d0c41 100644
--- 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
@@ -1,7 +1,7 @@
-From 972667e0d789a6969a5d79249404f3539f891810 Mon Sep 17 00:00:00 2001
+From 0b860cb8a22ae876b6088939dbabca216bc29431 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 1/2] gobject-introspection: determine g-ir-scanner and
+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
@@ -16,19 +16,19 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
-index 4f7fe30..9610cf6 100644
+index b29bab9..dc4c401 100644
--- a/mesonbuild/modules/gnome.py
+++ b/mesonbuild/modules/gnome.py
-@@ -390,8 +390,6 @@ class GnomeModule(ExtensionModule):
+@@ -393,8 +393,6 @@ class GnomeModule(ExtensionModule):
raise MesonException('Gir takes one argument')
if kwargs.get('install_dir'):
raise MesonException('install_dir is not supported with generate_gir(), see "install_dir_gir" and "install_dir_typelib"')
-- giscanner = find_program('g-ir-scanner', 'Gir')
-- gicompiler = find_program('g-ir-compiler', 'Gir')
+- giscanner = self.interpreter.find_program_impl('g-ir-scanner')
+- gicompiler = self.interpreter.find_program_impl('g-ir-compiler')
girtarget = args[0]
while hasattr(girtarget, 'held_object'):
girtarget = girtarget.held_object
-@@ -402,6 +400,8 @@ class GnomeModule(ExtensionModule):
+@@ -405,6 +403,8 @@ class GnomeModule(ExtensionModule):
self.gir_dep = PkgConfigDependency('gobject-introspection-1.0',
state.environment,
{'native': True})
@@ -37,6 +37,3 @@ index 4f7fe30..9610cf6 100644
pkgargs = self.gir_dep.get_compile_args()
except Exception:
raise MesonException('gobject-introspection dependency was not found, gir cannot be generated.')
---
-2.15.0
-
diff --git a/meta/recipes-devtools/meson/meson/0003-native_bindir.patch b/meta/recipes-devtools/meson/meson/0003-native_bindir.patch
index af5e6a190bf..da477454cb6 100644
--- a/meta/recipes-devtools/meson/meson/0003-native_bindir.patch
+++ b/meta/recipes-devtools/meson/meson/0003-native_bindir.patch
@@ -1,7 +1,7 @@
-From ffa72eac56558aa4171dd70ac1e9c27a07338fa2 Mon Sep 17 00:00:00 2001
+From e762d85c823adfefc27ba6128c7b997aa50166ce 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 4/4] native_bindir
+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
@@ -17,15 +17,15 @@ Upstream-Status: Inappropriate [OE specific]
Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
---
- mesonbuild/dependencies/base.py | 16 ++++++++++------
+ mesonbuild/dependencies/base.py | 19 +++++++++++--------
mesonbuild/dependencies/ui.py | 6 +++---
- 2 files changed, 13 insertions(+), 9 deletions(-)
+ 2 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py
-index bf79bc5..c9fd08c 100644
+index 6d3678f..90fdb80 100644
--- a/mesonbuild/dependencies/base.py
+++ b/mesonbuild/dependencies/base.py
-@@ -131,7 +131,7 @@ class Dependency:
+@@ -146,7 +146,7 @@ class Dependency:
def need_threads(self):
return False
@@ -34,7 +34,7 @@ index bf79bc5..c9fd08c 100644
raise DependencyException('{!r} is not a pkgconfig dependency'.format(self.name))
def get_configtool_variable(self, variable_name):
-@@ -150,7 +150,7 @@ class InternalDependency(Dependency):
+@@ -183,7 +183,7 @@ class InternalDependency(Dependency):
self.sources = sources
self.ext_deps = ext_deps
@@ -43,33 +43,47 @@ index bf79bc5..c9fd08c 100644
raise DependencyException('Method "get_pkgconfig_variable()" is '
'invalid for an internal dependency')
-@@ -425,10 +425,14 @@ class PkgConfigDependency(ExternalDependency):
+@@ -523,15 +523,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() + "-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):
- if not env:
+ if env is None:
+ fenv = env
env = os.environ
-- p, out = Popen_safe([self.pkgbin] + args, env=env)[0:2]
-+ if use_native:
-+ pkgbin = [self.pkgbin + "-native"]
-+ else:
-+ pkgbin = [self.pkgbin]
-+ p, out = Popen_safe(pkgbin + args, env=env)[0:2]
- return p.returncode, out.strip()
+@@ -540,7 +543,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):
-@@ -522,7 +526,7 @@ class PkgConfigDependency(ExternalDependency):
- # linkers such as MSVC, so prepend them.
- self.link_args = ['-L' + lp for lp in libpaths] + self.link_args
+@@ -718,7 +721,7 @@ class PkgConfigDependency(ExternalDependency):
+ (self.name, out_raw))
+ self.link_args, self.raw_link_args = self._search_libs(out, out_raw)
- def get_pkgconfig_variable(self, variable_name, kwargs):
+ def get_pkgconfig_variable(self, variable_name, kwargs, use_native=False):
options = ['--variable=' + variable_name, self.name]
if 'define_variable' in kwargs:
-@@ -535,7 +539,7 @@ class PkgConfigDependency(ExternalDependency):
+@@ -731,7 +734,7 @@ class PkgConfigDependency(ExternalDependency):
options = ['--define-variable=' + '='.join(definition)] + options
@@ -79,10 +93,10 @@ index bf79bc5..c9fd08c 100644
if ret != 0:
if self.required:
diff --git a/mesonbuild/dependencies/ui.py b/mesonbuild/dependencies/ui.py
-index 1db518c..4ed1d04 100644
+index 197d22c..c683d21 100644
--- a/mesonbuild/dependencies/ui.py
+++ b/mesonbuild/dependencies/ui.py
-@@ -239,7 +239,7 @@ class QtBaseDependency(ExternalDependency):
+@@ -285,7 +285,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
@@ -91,7 +105,7 @@ index 1db518c..4ed1d04 100644
if prefix:
self.bindir = os.path.join(prefix, 'bin')
-@@ -359,7 +359,7 @@ class Qt4Dependency(QtBaseDependency):
+@@ -427,7 +427,7 @@ class Qt4Dependency(QtBaseDependency):
applications = ['moc', 'uic', 'rcc', 'lupdate', 'lrelease']
for application in applications:
try:
@@ -100,15 +114,12 @@ index 1db518c..4ed1d04 100644
except MesonException:
pass
-@@ -369,7 +369,7 @@ class Qt5Dependency(QtBaseDependency):
+@@ -437,7 +437,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)
-
- # There are three different ways of depending on SDL2:
---
-2.15.1
-
+ 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/gi-flags.patch b/meta/recipes-devtools/meson/meson/gi-flags.patch
new file mode 100644
index 00000000000..9a4c2961911
--- /dev/null
+++ b/meta/recipes-devtools/meson/meson/gi-flags.patch
@@ -0,0 +1,35 @@
+Pass the correct cflags/ldflags to the gobject-introspection tools.
+
+Upstream-Status: Submitted [https://github.com/mesonbuild/meson/pull/4261]
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
+index cb69641e..bb4449a0 100644
+--- a/mesonbuild/modules/gnome.py
++++ b/mesonbuild/modules/gnome.py
+@@ -579,7 +579,10 @@ class GnomeModule(ExtensionModule):
+ external_ldflags += list(dep_external_ldflags)
+ scan_command += ['--cflags-begin']
+ scan_command += cflags
+- scan_command += state.environment.coredata.get_external_args(lang)
++ if state.environment.is_cross_build():
++ scan_command += state.environment.cross_info.config["properties"].get(lang + '_args', "")
++ else:
++ scan_command += state.environment.coredata.get_external_args(lang)
+ scan_command += ['--cflags-end']
+ # need to put our output directory first as we need to use the
+ # generated libraries instead of any possibly installed system/prefix
+@@ -614,7 +614,12 @@ class GnomeModule(ExtensionModule):
+ scan_command.append('-L' + d)
+ scan_command += ['--library', libname]
+
+- for link_arg in state.environment.coredata.get_external_link_args(lang):
++ if state.environment.is_cross_build():
++ link_args = state.environment.cross_info.config["properties"].get(lang + '_link_args', "")
++ else:
++ link_args = state.environment.coredata.get_external_link_args(lang)
++
++ for link_arg in link_args:
+ if link_arg.startswith('-L'):
+ scan_command.append(link_arg)
+ scan_command += list(external_ldflags)
diff --git a/meta/recipes-devtools/meson/meson/gtkdoc-flags.patch b/meta/recipes-devtools/meson/meson/gtkdoc-flags.patch
new file mode 100644
index 00000000000..ecf3489bbe5
--- /dev/null
+++ b/meta/recipes-devtools/meson/meson/gtkdoc-flags.patch
@@ -0,0 +1,44 @@
+Ensure that in a cross compile only the target flags are passed to gtk-doc, and
+not the native flags.
+
+Upstream-Status: Submitted [https://github.com/mesonbuild/meson/pull/4261]
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
+index 4af33304..8751f53c 100644
+--- a/mesonbuild/modules/gnome.py
++++ b/mesonbuild/modules/gnome.py
+@@ -851,17 +851,30 @@ This will become a hard error in the future.''')
+ if not isinstance(incd.held_object, (str, build.IncludeDirs)):
+ raise MesonException(
+ 'Gir include dirs should be include_directories().')
++
+ cflags.update(get_include_args(inc_dirs))
+- cflags.update(state.environment.coredata.get_external_args('c'))
++ if state.environment.is_cross_build():
++ cflags.update(state.environment.cross_info.config["properties"].get('c_args', ""))
++ else:
++ cflags.update(state.environment.coredata.get_external_args('c'))
++
+ ldflags = OrderedSet()
+ ldflags.update(internal_ldflags)
+- ldflags.update(state.environment.coredata.get_external_link_args('c'))
++ if state.environment.is_cross_build():
++ ldflags.update(state.environment.cross_info.config["properties"].get('c_link_args', ""))
++ else:
++ ldflags.update(state.environment.coredata.get_external_link_args('c'))
+ ldflags.update(external_ldflags)
++
+ if cflags:
+ args += ['--cflags=%s' % ' '.join(cflags)]
+ if ldflags:
+ args += ['--ldflags=%s' % ' '.join(ldflags)]
+- compiler = state.environment.coredata.compilers.get('c')
++
++ if state.environment.is_cross_build():
++ compiler = state.environment.coredata.cross_compilers.get('c')
++ else:
++ compiler = state.environment.coredata.compilers.get('c')
+ if compiler:
+ args += ['--cc=%s' % ' '.join(compiler.get_exelist())]
+ args += ['--ld=%s' % ' '.join(compiler.get_linker_exelist())]
diff --git a/meta/recipes-devtools/meson/meson/meson-setup.py b/meta/recipes-devtools/meson/meson/meson-setup.py
new file mode 100755
index 00000000000..a9749eae9d4
--- /dev/null
+++ b/meta/recipes-devtools/meson/meson/meson-setup.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python3
+
+import os
+import sys
+
+def bail(msg):
+ print(msg, file=sys.stderr)
+ sys.exit(1)
+
+_MARKER = '@@'
+def transform_line(line):
+ # Substitute any special markers of this form:
+ # @@ENV@@
+ # with the value of ENV, split into meson array syntax.
+ start = line.find(_MARKER)
+ if start == -1:
+ return line
+
+ end = line.rfind(_MARKER)
+ if end == start:
+ return line
+
+ # Lookup value of the env var.
+ var = line[start+len(_MARKER):end]
+ try:
+ val = os.environ[var]
+ except KeyError:
+ bail('cannot generate meson.cross; env var %s not set' % var)
+
+ # Transform into meson array.
+ val = ["'%s'" % x for x in val.split()]
+ val = ', '.join(val)
+ val = '[%s]' % val
+
+ before = line[:start]
+ after = line[end+len(_MARKER):]
+
+ return '%s%s%s' % (before, val, after)
+
+# Make sure this is really an SDK extraction environment.
+try:
+ sysroot = os.environ['OECORE_NATIVE_SYSROOT']
+except KeyError:
+ bail('OECORE_NATIVE_SYSROOT env var must be set')
+
+cross_file = os.path.join(sysroot, 'usr/share/meson/meson.cross')
+tmp_cross_file = '%s.tmp' % cross_file
+
+# Read through and transform the current meson.cross.
+lines = []
+with open(cross_file, 'r') as f:
+ for line in f:
+ lines.append(transform_line(line))
+
+# Write the transformed result to a tmp file and atomically rename it. In case
+# we crash during the file write, we don't want an invalid meson.cross file.
+with open(tmp_cross_file, 'w') as f:
+ for line in lines:
+ f.write(line)
+ f.flush()
+ os.fdatasync(f.fileno())
+os.rename(tmp_cross_file, cross_file)
diff --git a/meta/recipes-devtools/meson/meson/meson-wrapper b/meta/recipes-devtools/meson/meson/meson-wrapper
new file mode 100755
index 00000000000..b2e00da513f
--- /dev/null
+++ b/meta/recipes-devtools/meson/meson/meson-wrapper
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+if [ -z "$OECORE_NATIVE_SYSROOT" ]; then
+ echo "OECORE_NATIVE_SYSROOT not set; are you in a Yocto SDK environment?" >&2
+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.
+unset CC CXX CPP LD AR NM STRIP
+
+exec "$OECORE_NATIVE_SYSROOT/usr/bin/meson.real" \
+ --cross-file "$OECORE_NATIVE_SYSROOT/usr/share/meson/meson.cross" \
+ "$@"
diff --git a/meta/recipes-devtools/meson/meson_0.47.2.bb b/meta/recipes-devtools/meson/meson_0.47.2.bb
new file mode 100644
index 00000000000..897fa148d94
--- /dev/null
+++ b/meta/recipes-devtools/meson/meson_0.47.2.bb
@@ -0,0 +1,3 @@
+include meson.inc
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/meson/nativesdk-meson_0.47.2.bb b/meta/recipes-devtools/meson/nativesdk-meson_0.47.2.bb
new file mode 100644
index 00000000000..53503aa9988
--- /dev/null
+++ b/meta/recipes-devtools/meson/nativesdk-meson_0.47.2.bb
@@ -0,0 +1,74 @@
+include meson.inc
+
+inherit nativesdk
+
+SRC_URI += "file://meson-setup.py \
+ file://meson-wrapper"
+
+def meson_array(var, d):
+ return "', '".join(d.getVar(var).split()).join(("'", "'"))
+
+# both are required but not used by meson
+MESON_SDK_ENDIAN = "bogus-endian"
+MESON_TARGET_ENDIAN = "bogus-endian"
+
+MESON_TOOLCHAIN_ARGS = "${BUILDSDK_CC_ARCH}${TOOLCHAIN_OPTIONS}"
+MESON_C_ARGS = "${MESON_TOOLCHAIN_ARGS} ${BUILDSDK_CFLAGS}"
+MESON_CPP_ARGS = "${MESON_TOOLCHAIN_ARGS} ${BUILDSDK_CXXFLAGS}"
+MESON_LINK_ARGS = "${MESON_TOOLCHAIN_ARGS} ${BUILDSDK_LDFLAGS}"
+
+# This 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.
+addtask write_config before do_install
+do_write_config[vardeps] += "MESON_C_ARGS MESON_CPP_ARGS MESON_LINK_ARGS CC CXX LD AR NM STRIP READELF"
+do_write_config() {
+ # This needs to be Py to split the args into single-element lists
+ cat >${WORKDIR}/meson.cross <<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_SDK_ENDIAN}'
+EOF
+}
+
+do_install_append() {
+ install -d ${D}${datadir}/meson
+ install -m 0644 ${WORKDIR}/meson.cross ${D}${datadir}/meson/
+
+ 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-core \
+ nativesdk-python3-misc \
+ nativesdk-python3-modules \
+ "
+
+FILES_${PN} += "${datadir}/meson ${SDKPATHNATIVE}"
diff --git a/meta/recipes-devtools/mtd/mtd-utils/0001-Revert-Return-correct-error-number-in-ubi_get_vol_in.patch b/meta/recipes-devtools/mtd/mtd-utils/0001-Revert-Return-correct-error-number-in-ubi_get_vol_in.patch
new file mode 100644
index 00000000000..4ece56b9cec
--- /dev/null
+++ b/meta/recipes-devtools/mtd/mtd-utils/0001-Revert-Return-correct-error-number-in-ubi_get_vol_in.patch
@@ -0,0 +1,92 @@
+From 0f833ac73ad631248826386e2918d8571ecf0347 Mon Sep 17 00:00:00 2001
+From: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
+Date: Sat, 9 Jun 2018 16:45:22 +0200
+Subject: [PATCH] Revert "Return correct error number in ubi_get_vol_info1"
+
+This reverts commit dede98ffb706676309488d7cc660f569548d5930.
+
+The original commit tried to fix a descrepancy between the implementation
+and the documentation by making the implementation comply.
+
+When making the change, it was overlooked, that ubinfo and ubirename were
+written against the implementation instead of the behaviour specified by
+the documentation. So were further internal functions like
+ubi_get_vol_info1_nm which further breaks ubirmvol.
+
+A report with an outline of a resulting problem can be read on
+the mailing list:
+
+http://lists.infradead.org/pipermail/linux-mtd/2018-June/081562.html
+
+From the report:
+
+steps to reproduce: have mtd-utils 2.0.1 or 2.0.2
+
+0. make a bunch of ubi volumes in sequential order
+
+ubimkvol /dev/ubi0 -s 64KiB -N test1
+ubimkvol /dev/ubi0 -s 64KiB -N test2
+ubimkvol /dev/ubi0 -s 64KiB -N test3
+ubimkvol /dev/ubi0 -s 64KiB -N test4
+..
+
+1. delete the test1 volume, making a hole in the volume table
+
+ubirmvol /dev/ubi0 -N test1
+
+2. try an affected tool (i.e. "ubirmvol /dev/ubi0 -N test4" )
+
+ |root at mr24:/# ubirmvol /dev/ubi0 -N test4
+ |ubirmvol: error!: cannot find UBI volume "test4"
+ | error 19 (No such device)
+
+or "ubinfo -a"
+
+ | root at mr24:/# ubinfo -a
+ | UBI version: 1
+ | Count of UBI devices: 1
+ | UBI control device major/minor: 10:59
+ | Present UBI devices: ubi0
+ |
+ | ubi0
+ | Volumes count: 11
+ | Logical eraseblock size: 15872 bytes, 15.5 KiB
+ | Total amount of logical eraseblocks: 1952 (30982144 bytes, 29.5 MiB)
+ | Amount of available logical eraseblocks: 75 (1190400 bytes, 1.1 MiB)
+ | Maximum count of volumes 92
+ | Count of bad physical eraseblocks: 0
+ | Count of reserved physical eraseblocks: 40
+ | Current maximum erase counter value: 984
+ | Minimum input/output unit size: 512 bytes
+ | Character device major/minor: 251:0
+ | ubinfo: error!: libubi failed to probe volume 5 on ubi0
+ | error 19 (No such device)
+ | Present volumes: 0, 1, 2, 3, 4root at mr24:/#
+
+Reported-by: Christian Lamparter <chunkeey@gmail.com>
+Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
+Upstream-Status: Accepted [http://git.infradead.org/mtd-utils.git/commit/0f833ac73ad631248826386e2918d8571ecf0347]
+---
+ lib/libubi.c | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/lib/libubi.c b/lib/libubi.c
+index b50e68a..978b433 100644
+--- a/lib/libubi.c
++++ b/lib/libubi.c
+@@ -1240,11 +1240,8 @@ int ubi_get_vol_info1(libubi_t desc, int dev_num, int vol_id,
+ info->dev_num = dev_num;
+ info->vol_id = vol_id;
+
+- if (vol_get_major(lib, dev_num, vol_id, &info->major, &info->minor)) {
+- if (errno == ENOENT)
+- errno = ENODEV;
++ if (vol_get_major(lib, dev_num, vol_id, &info->major, &info->minor))
+ return -1;
+- }
+
+ ret = vol_read_data(lib->vol_type, dev_num, vol_id, buf, 50);
+ if (ret < 0)
+--
+2.14.4
+
diff --git a/meta/recipes-devtools/mtd/mtd-utils_git.bb b/meta/recipes-devtools/mtd/mtd-utils_git.bb
index d09d6330228..f53c6c1122d 100644
--- a/meta/recipes-devtools/mtd/mtd-utils_git.bb
+++ b/meta/recipes-devtools/mtd/mtd-utils_git.bb
@@ -8,16 +8,20 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
inherit autotools pkgconfig update-alternatives
DEPENDS = "zlib lzo e2fsprogs util-linux"
+RDEPENDS_mtd-utils-tests += "bash"
-PV = "2.0.1+${SRCPV}"
+PV = "2.0.2+${SRCPV}"
-SRCREV = "9c6173559f95e939e66efb2ec3193d6f3618cf69"
+SRCREV = "bc63d36e39f389c8c17f6a8e9db47f2acc884659"
SRC_URI = "git://git.infradead.org/mtd-utils.git \
file://add-exclusion-to-mkfs-jffs2-git-2.patch \
+ file://0001-Revert-Return-correct-error-number-in-ubi_get_vol_in.patch \
"
S = "${WORKDIR}/git/"
+EXTRA_OECONF += "--enable-install-tests"
+
# xattr support creates an additional compile-time dependency on acl because
# the sys/acl.h header is needed. libacl is not needed and thus enabling xattr
# regardless whether acl is enabled or disabled in the distro should be okay.
@@ -28,20 +32,38 @@ 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}'"
-ALTERNATIVE_${PN} = "flash_eraseall"
+# 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_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"
+ALTERNATIVE_LINK_NAME[ubirmvol] = "${sbindir}/ubirmvol"
+ALTERNATIVE_LINK_NAME[ubirsvol] = "${sbindir}/ubirsvol"
+ALTERNATIVE_LINK_NAME[ubiupdatevol] = "${sbindir}/ubiupdatevol"
ALTERNATIVE_LINK_NAME[flash_eraseall] = "${sbindir}/flash_eraseall"
-# Use higher priority than busybox's flash_eraseall (created when built with CONFIG_FLASH_ERASEALL)
-ALTERNATIVE_PRIORITY[flash_eraseall] = "100"
+ALTERNATIVE_LINK_NAME[flash_lock] = "${sbindir}/flash_lock"
+ALTERNATIVE_LINK_NAME[flash_unlock] = "${sbindir}/flash_unlock"
+ALTERNATIVE_LINK_NAME[flashcp] = "${sbindir}/flashcp"
do_install () {
oe_runmake install DESTDIR=${D} SBINDIR=${sbindir} MANDIR=${mandir} INCLUDEDIR=${includedir}
}
-PACKAGES =+ "mtd-utils-jffs2 mtd-utils-ubifs mtd-utils-misc"
+PACKAGES =+ "mtd-utils-jffs2 mtd-utils-ubifs mtd-utils-misc mtd-utils-tests"
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/0001-remove-LOCK_NB-to-use-blocking-request.patch b/meta/recipes-devtools/mtools/mtools/0001-remove-LOCK_NB-to-use-blocking-request.patch
new file mode 100644
index 00000000000..47385a582bf
--- /dev/null
+++ b/meta/recipes-devtools/mtools/mtools/0001-remove-LOCK_NB-to-use-blocking-request.patch
@@ -0,0 +1,44 @@
+From 5bdbfe0a63fed48104b17412854b26ee2275869a Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Wed, 22 Aug 2018 16:54:39 +0800
+Subject: [PATCH] remove LOCK_NB to use blocking request
+
+While invoking mtools frequently, the unblocking request
+caused race issue. Here is an example of syslinux
+[snip]
+dd if=/dev/zero of=floppy.img bs=1024 count=144
+losetup /dev/loop1 floppy.img
+mkdosfs /dev/loop1
+syslinux -i /dev/loop1
+|plain floppy: device "/proc/6351/fd/3" busy (Resource temporarily unavailable):
+|Cannot initialize 'S:'
+|Bad target s:/ldlinux.sys
+[snip]
+
+The idea is from:
+https://bugzilla.redhat.com/show_bug.cgi?id=1235016
+https://groups.google.com/a/chromium.org/forum/#!msg/chromium-os-dev/bRPUCFHoBTQ/ZjB8kjjx1vUJ
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ lockdev.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lockdev.h b/lockdev.h
+index 4467bc2..5a135ad 100644
+--- a/lockdev.h
++++ b/lockdev.h
+@@ -43,7 +43,7 @@ int lock_dev(int fd, int mode, struct device *dev)
+ return 0;
+
+ #if (defined(HAVE_FLOCK) && defined (LOCK_EX) && defined(LOCK_NB))
+- if (flock(fd, (mode ? LOCK_EX : LOCK_SH)|LOCK_NB) < 0)
++ if (flock(fd, (mode ? LOCK_EX : LOCK_SH)) < 0)
+ #else /* FLOCK */
+
+ #if (defined(HAVE_LOCKF) && defined(F_TLOCK))
+--
+2.7.4
+
diff --git a/meta/recipes-devtools/mtools/mtools/clang_UNUSED.patch b/meta/recipes-devtools/mtools/mtools/clang_UNUSED.patch
new file mode 100644
index 00000000000..6bb9d6a3dae
--- /dev/null
+++ b/meta/recipes-devtools/mtools/mtools/clang_UNUSED.patch
@@ -0,0 +1,17 @@
+Undefine UNUSED macros with clang
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Index: mtools-4.0.18/sysincludes.h
+===================================================================
+--- mtools-4.0.18.orig/sysincludes.h
++++ mtools-4.0.18/sysincludes.h
+@@ -101,7 +101,7 @@ typedef void *caddr_t;
+ #if defined __GNUC__ && defined __STDC__
+ /* gcc -traditional doesn't have PACKED, UNUSED and NORETURN */
+ # define PACKED __attribute__ ((packed))
+-# if __GNUC__ == 2 && __GNUC_MINOR__ > 6 || __GNUC__ >= 3
++# if (__GNUC__ == 2 && __GNUC_MINOR__ > 6 || __GNUC__ >= 3) && !defined(__clang__)
+ /* gcc 2.6.3 doesn't have "unused" */ /* mool */
+ # define UNUSED(x) x __attribute__ ((unused));x
+ # define UNUSEDP __attribute__ ((unused))
diff --git a/meta/recipes-devtools/mtools/mtools_4.0.18.bb b/meta/recipes-devtools/mtools/mtools_4.0.18.bb
index dcd32ed94c0..3c31aca3ad2 100644
--- a/meta/recipes-devtools/mtools/mtools_4.0.18.bb
+++ b/meta/recipes-devtools/mtools/mtools_4.0.18.bb
@@ -31,6 +31,8 @@ SRC_URI = "${GNU_MIRROR}/mtools/mtools-${PV}.tar.bz2 \
file://mtools-makeinfo.patch \
file://no-x11.gplv3.patch \
file://0001-Continue-even-if-fs-size-is-not-divisible-by-sectors.patch \
+ file://0001-remove-LOCK_NB-to-use-blocking-request.patch \
+ file://clang_UNUSED.patch \
"
SRC_URI_append_class-native = " file://disable-hardcoded-configs.patch"
diff --git a/meta/recipes-devtools/nasm/nasm/0001-Verify-that-we-are-not-reading-past-end-of-a-buffer.patch b/meta/recipes-devtools/nasm/nasm/0001-Verify-that-we-are-not-reading-past-end-of-a-buffer.patch
new file mode 100644
index 00000000000..a56a08b5a82
--- /dev/null
+++ b/meta/recipes-devtools/nasm/nasm/0001-Verify-that-we-are-not-reading-past-end-of-a-buffer.patch
@@ -0,0 +1,65 @@
+From c5785fdf1d660eaefb9711284414262d0cfe8843 Mon Sep 17 00:00:00 2001
+From: Adam Majer <amajer@suse.de>
+Date: Fri, 17 Aug 2018 14:48:17 +0800
+Subject: [PATCH] Verify that we are not reading past end of a buffer
+
+Simple reproducer is just,
+
+ ret &d:ep
+
+which triggers a buffer overread due to parsing of an invalid
+segment override.
+
+Signed-off-by: Adam Majer <amajer@suse.de>
+
+Upstream-Status: Submitted [https://bugzilla.nasm.us/show_bug.cgi?id=3392447]
+CVE: CVE-2018-8883
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ include/opflags.h | 2 +-
+ include/tables.h | 1 +
+ x86/regs.pl | 3 ++-
+ 3 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/include/opflags.h b/include/opflags.h
+index ef2838c1..8d4b6b1e 100644
+--- a/include/opflags.h
++++ b/include/opflags.h
+@@ -166,7 +166,7 @@
+ #define REG_CLASS_BND GEN_REG_CLASS(9)
+
+ #define is_class(class, op) (!((opflags_t)(class) & ~(opflags_t)(op)))
+-#define is_reg_class(class, reg) is_class((class), nasm_reg_flags[(reg)])
++#define is_reg_class(class, reg) is_class((class), ((reg) < nasm_reg_flags_size ? nasm_reg_flags[(reg)] : 0))
+
+ #define IS_SREG(reg) is_reg_class(REG_SREG, (reg))
+ #define IS_FSGS(reg) is_reg_class(REG_FSGS, (reg))
+diff --git a/include/tables.h b/include/tables.h
+index 24a665e2..458752ce 100644
+--- a/include/tables.h
++++ b/include/tables.h
+@@ -64,6 +64,7 @@ extern const char * const nasm_reg_names[];
+ typedef uint64_t opflags_t;
+ typedef uint16_t decoflags_t;
+ extern const opflags_t nasm_reg_flags[];
++extern const size_t nasm_reg_flags_size;
+ /* regvals.c */
+ extern const int nasm_regvals[];
+
+diff --git a/x86/regs.pl b/x86/regs.pl
+index 3a1b56f5..cb5cea68 100755
+--- a/x86/regs.pl
++++ b/x86/regs.pl
+@@ -158,7 +158,8 @@ if ( $fmt eq 'h' ) {
+ printf " %-15s /* %-5s */\n",
+ $regs{$reg}.',', $reg;
+ }
+- print "};\n";
++ print "};\n\n";
++ print "const size_t nasm_reg_flags_size = sizeof(nasm_reg_flags) / sizeof(opflags_t);\n";
+ } elsif ( $fmt eq 'vc' ) {
+ # Output regvals.c
+ print "/* automatically generated from $file - do not edit */\n\n";
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/nasm/nasm/0001-assemble-Check-global-line-limit.patch b/meta/recipes-devtools/nasm/nasm/0001-assemble-Check-global-line-limit.patch
new file mode 100644
index 00000000000..682d4c72771
--- /dev/null
+++ b/meta/recipes-devtools/nasm/nasm/0001-assemble-Check-global-line-limit.patch
@@ -0,0 +1,50 @@
+From 7a46d6b9e3a1d8a0ab0d816ef1bf194ad285e082 Mon Sep 17 00:00:00 2001
+From: "Chang S. Bae" <chang.seok.bae@intel.com>
+Date: Fri, 17 Aug 2018 14:26:03 +0800
+Subject: [PATCH] assemble: Check global line limit
+
+Without the limit, the while loop opens to semi-infinite
+that will exhaustively consume the heap space. Also, the
+index value gets into the garbage.
+
+https://bugzilla.nasm.us/show_bug.cgi?id=3392474
+
+Reported-by : Dongliang Mu <mudongliangabcd@gmail.com>
+Signed-off-by: Chang S. Bae <chang.seok.bae@intel.com>
+Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
+
+Upstream-Status: Backport from upstream [http://repo.or.cz/nasm.git]
+CVE: CVE-2018-10316
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ asm/nasm.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/asm/nasm.c b/asm/nasm.c
+index 8497ec9..81f6cee 100644
+--- a/asm/nasm.c
++++ b/asm/nasm.c
+@@ -99,6 +99,8 @@ static char outname[FILENAME_MAX];
+ static char listname[FILENAME_MAX];
+ static char errname[FILENAME_MAX];
+ static int globallineno; /* for forward-reference tracking */
++#define GLOBALLINENO_MAX INT32_MAX
++
+ /* static int pass = 0; */
+ const struct ofmt *ofmt = &OF_DEFAULT;
+ const struct ofmt_alias *ofmt_alias = NULL;
+@@ -1360,7 +1362,10 @@ static void assemble_file(char *fname, StrList **depend_ptr)
+ location.offset = offs = get_curr_offs();
+
+ while ((line = preproc->getline())) {
+- globallineno++;
++ if (globallineno++ == GLOBALLINENO_MAX)
++ nasm_error(ERR_FATAL,
++ "overall line number reaches the maximum %d\n",
++ GLOBALLINENO_MAX);
+
+ /*
+ * Here we parse our directives; this is not handled by the
+--
+2.7.4
+
diff --git a/meta/recipes-devtools/nasm/nasm/0001-fix-CVE-2018-8882.patch b/meta/recipes-devtools/nasm/nasm/0001-fix-CVE-2018-8882.patch
new file mode 100644
index 00000000000..bc706c3f152
--- /dev/null
+++ b/meta/recipes-devtools/nasm/nasm/0001-fix-CVE-2018-8882.patch
@@ -0,0 +1,30 @@
+From 33438037e00ec750bff020578b1a5b6f75f60555 Mon Sep 17 00:00:00 2001
+From: Adam Majer <amajer@suse.de>
+Date: Fri, 17 Aug 2018 14:41:02 +0800
+Subject: [PATCH] fix CVE-2018-8882
+
+https://bugzilla.nasm.us/show_bug.cgi?id=3392445
+
+Upstream-Status: Submitted [https://bugzilla.nasm.us/show_bug.cgi?id=3392445]
+CVE: CVE-2018-8882
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ asm/float.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/asm/float.c b/asm/float.c
+index dcf69fea..2965d3db 100644
+--- a/asm/float.c
++++ b/asm/float.c
+@@ -608,6 +608,8 @@ static void ieee_shr(fp_limb *mant, int i)
+ if (offs)
+ for (j = MANT_LIMBS-1; j >= offs; j--)
+ mant[j] = mant[j-offs];
++ } else if (MANT_LIMBS-1-offs < 0) {
++ j = MANT_LIMBS-1;
+ } else {
+ n = mant[MANT_LIMBS-1-offs] >> sr;
+ for (j = MANT_LIMBS-1; j > offs; j--) {
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/nasm/nasm_2.13.03.bb b/meta/recipes-devtools/nasm/nasm_2.13.03.bb
index 236d7e5e36f..6a02df48544 100644
--- a/meta/recipes-devtools/nasm/nasm_2.13.03.bb
+++ b/meta/recipes-devtools/nasm/nasm_2.13.03.bb
@@ -5,6 +5,9 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=90904486f8fbf1861cf42752e1a39efe"
SRC_URI = "http://www.nasm.us/pub/nasm/releasebuilds/${PV}/nasm-${PV}.tar.bz2 \
file://0001-asmlib-Drop-pure-function-attribute-from-seg_init.patch \
+ file://0001-assemble-Check-global-line-limit.patch \
+ file://0001-fix-CVE-2018-8882.patch \
+ file://0001-Verify-that-we-are-not-reading-past-end-of-a-buffer.patch \
"
SRC_URI[md5sum] = "0c581d482f39d5111879ca9601938f74"
diff --git a/meta/recipes-devtools/opkg/opkg-keyrings_1.0.bb b/meta/recipes-devtools/opkg/opkg-keyrings_1.0.bb
index 18d6abdded1..a20e316a3d1 100644
--- a/meta/recipes-devtools/opkg/opkg-keyrings_1.0.bb
+++ b/meta/recipes-devtools/opkg/opkg-keyrings_1.0.bb
@@ -35,14 +35,6 @@ FILES_${PN} = "${datadir}/opkg/keyrings"
# We need 'opkg-key' to run the postinst script
RDEPENDS_${PN} = "opkg"
-pkg_postinst_${PN} () {
-#! /bin/sh
-set -e
-
-if [ x"$D" = "x" ]; then
- # On target
- opkg-key populate
-else
- exit 1
-fi
+pkg_postinst_ontarget_${PN} () {
+opkg-key populate
}
diff --git a/meta/recipes-devtools/opkg/opkg/0001-remove_maintainer_scripts-use-strict-matching.patch b/meta/recipes-devtools/opkg/opkg/0001-remove_maintainer_scripts-use-strict-matching.patch
new file mode 100644
index 00000000000..ec160290be5
--- /dev/null
+++ b/meta/recipes-devtools/opkg/opkg/0001-remove_maintainer_scripts-use-strict-matching.patch
@@ -0,0 +1,56 @@
+From 55c4ad666e76281bdd0db55fa6f4ab2744fea7e4 Mon Sep 17 00:00:00 2001
+From: Alejandro del Castillo <alejandro.delcastillo@ni.com>
+Date: Tue, 4 Sep 2018 18:06:00 -0500
+Subject: [PATCH] remove_maintainer_scripts: use strict matching
+
+The function is using a glob to select which metadata files needs to be
+deleted during package removal, on the info_dir. However, the glob may
+match metadata files from packages with similar names. For example,
+during removal of package glibc-binary-localedata-de-at, the current
+logic was also removing the metadata for
+glibc-binary-localedata-de-at.iso-8859-1. Add check for an exact match
+before deletion.
+
+Fixes bugzilla: 12905
+
+Upstream-Status: Submitted [https://groups.google.com/forum/#!topic/opkg-devel/Fr40Yt0NBno]
+Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
+---
+ libopkg/opkg_remove.c | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/libopkg/opkg_remove.c b/libopkg/opkg_remove.c
+index 82125fa..3936628 100644
+--- a/libopkg/opkg_remove.c
++++ b/libopkg/opkg_remove.c
+@@ -137,7 +137,7 @@ void remove_maintainer_scripts(pkg_t * pkg)
+ {
+ unsigned int i;
+ int err;
+- char *globpattern;
++ char *globpattern, *filename, *lastdot;
+ glob_t globbuf;
+
+ if (opkg_config->noaction)
+@@ -151,8 +151,16 @@ void remove_maintainer_scripts(pkg_t * pkg)
+ return;
+
+ for (i = 0; i < globbuf.gl_pathc; i++) {
+- opkg_msg(INFO, "Deleting %s.\n", globbuf.gl_pathv[i]);
+- unlink(globbuf.gl_pathv[i]);
++ filename = xstrdup(basename(globbuf.gl_pathv[i]));
++ lastdot = strrchr(filename, '.');
++ *lastdot = '\0';
++ // Only delete files that match the package name (the glob may match files
++ // with similar names)
++ if (!strcmp(filename, pkg->name)) {
++ opkg_msg(INFO, "Deleting %s.\n", globbuf.gl_pathv[i]);
++ unlink(globbuf.gl_pathv[i]);
++ }
++ free(filename);
+ }
+ globfree(&globbuf);
+ }
+--
+2.18.0
+
diff --git a/meta/recipes-devtools/opkg/opkg/opkg-configure.service b/meta/recipes-devtools/opkg/opkg/opkg-configure.service
deleted file mode 100644
index 432c3ddc28a..00000000000
--- a/meta/recipes-devtools/opkg/opkg/opkg-configure.service
+++ /dev/null
@@ -1,17 +0,0 @@
-[Unit]
-Description=Opkg first boot configure
-DefaultDependencies=no
-After=systemd-remount-fs.service systemd-tmpfiles-setup.service tmp.mount
-Before=sysinit.target
-
-[Service]
-Type=oneshot
-EnvironmentFile=-@SYSCONFDIR@/default/postinst
-ExecStart=-@BASE_BINDIR@/sh -c " if [ $POSTINST_LOGGING = '1' ]; then @BINDIR@/opkg configure > $LOGFILE 2>&1; else @BINDIR@/opkg configure; fi"
-ExecStartPost=@BASE_BINDIR@/systemctl --no-reload disable opkg-configure.service
-StandardOutput=syslog
-RemainAfterExit=No
-
-[Install]
-WantedBy=basic.target
-WantedBy=sysinit.target
diff --git a/meta/recipes-devtools/opkg/opkg_0.3.6.bb b/meta/recipes-devtools/opkg/opkg_0.3.6.bb
index 70f20af7398..6ebd58b967c 100644
--- a/meta/recipes-devtools/opkg/opkg_0.3.6.bb
+++ b/meta/recipes-devtools/opkg/opkg_0.3.6.bb
@@ -12,9 +12,9 @@ DEPENDS = "libarchive"
PE = "1"
SRC_URI = "http://downloads.yoctoproject.org/releases/${BPN}/${BPN}-${PV}.tar.gz \
- file://opkg-configure.service \
file://opkg.conf \
file://0001-opkg_conf-create-opkg.lock-in-run-instead-of-var-run.patch \
+ file://0001-remove_maintainer_scripts-use-strict-matching.patch \
"
SRC_URI[md5sum] = "79e04307f6f54db431c251772d7d987c"
@@ -22,8 +22,6 @@ SRC_URI[sha256sum] = "f607f0e61be8cf8a3bbd0d2dccd9ec9e9b6c21dd4307b671c600d6eeaf
inherit autotools pkgconfig systemd
-SYSTEMD_SERVICE_${PN} = "opkg-configure.service"
-
target_localstatedir := "${localstatedir}"
OPKGLIBDIR = "${target_localstatedir}/lib"
@@ -46,16 +44,6 @@ do_install_append () {
# We need to create the lock directory
install -d ${D}${OPKGLIBDIR}/opkg
-
- if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)};then
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/opkg-configure.service ${D}${systemd_unitdir}/system/
- sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
- -e 's,@SYSCONFDIR@,${sysconfdir},g' \
- -e 's,@BINDIR@,${bindir},g' \
- -e 's,@SYSTEMD_UNITDIR@,${systemd_unitdir},g' \
- ${D}${systemd_unitdir}/system/opkg-configure.service
- fi
}
RDEPENDS_${PN} = "${VIRTUAL-RUNTIME_update-alternatives} opkg-arch-config libarchive"
@@ -68,7 +56,6 @@ RPROVIDES_${PN} = "opkg-collateral"
PACKAGES =+ "libopkg"
FILES_libopkg = "${libdir}/*.so.* ${OPKGLIBDIR}/opkg/"
-FILES_${PN} += "${systemd_unitdir}/system/"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/ossp-uuid/ossp-uuid/0001-Change-library-name.patch b/meta/recipes-devtools/ossp-uuid/ossp-uuid/0001-Change-library-name.patch
deleted file mode 100644
index ed67c501cb0..00000000000
--- a/meta/recipes-devtools/ossp-uuid/ossp-uuid/0001-Change-library-name.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From: Piotr Roszatycki <dexter@debian.org>
-Date: Wed, 27 Jan 2010 16:53:11 +0100
-Subject: [PATCH] Change library name
-
-The soname was changed to ossp-uuid to prevend the name clash with e2fsprogs's
-uuid library.
----
- Makefile.in | 6 +++---
- perl/Makefile.PL | 12 ++++++------
- php/config.m4 | 2 +-
- uuid-config.in | 2 +-
- uuid.pc.in | 4 ++--
- 5 files changed, 13 insertions(+), 13 deletions(-)
-
-----
-Upstream-Status: Inappropriate [not author]
-
-This patch is from debian ossp-uuid 1.6.2 integration.
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-
-diff --git a/Makefile.in b/Makefile.in
-index d28f4be..c2ba99d 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -62,13 +62,13 @@ PERL = @PERL@
- PHP = @PHP@
- PG_CONFIG = @PG_CONFIG@
-
--LIB_NAME = libuuid.la
-+LIB_NAME = libossp-uuid.la
- LIB_OBJS = uuid.lo uuid_md5.lo uuid_sha1.lo uuid_prng.lo uuid_mac.lo uuid_time.lo uuid_ui64.lo uuid_ui128.lo uuid_str.lo
-
--DCE_NAME = libuuid_dce.la
-+DCE_NAME = libossp-uuid_dce.la
- DCE_OBJS = uuid_dce.lo $(LIB_OBJS)
-
--CXX_NAME = libuuid++.la
-+CXX_NAME = libossp-uuid++.la
- CXX_OBJS = uuid++.lo $(LIB_OBJS)
-
- PRG_NAME = uuid
-diff --git a/perl/Makefile.PL b/perl/Makefile.PL
-index 92f4494..9c6fee6 100644
---- a/perl/Makefile.PL
-+++ b/perl/Makefile.PL
-@@ -33,9 +33,9 @@ use Config;
- use ExtUtils::MakeMaker;
-
- # determine source directory
--my ($srcdir) = map { my $d = $_; $d =~ s/\/libuuid\.la$//; $d }
-- grep { -f $_ } ("../libuuid.la", glob("../*/libuuid.la"))
-- or die "no source directory found (where libuuid.la is located)";
-+my ($srcdir) = map { my $d = $_; $d =~ s/\/libossp-uuid\.la$//; $d }
-+ grep { -f $_ } ("../libossp-uuid.la", glob("../*/libossp-uuid.la"))
-+ or die "no source directory found (where libossp-uuid.la is located)";
-
- # determine extra build options
- my $compat = 0;
-@@ -47,15 +47,15 @@ WriteMakefile(
- VERSION_FROM => 'uuid.pm',
- ABSTRACT_FROM => 'uuid.pod',
- PREREQ_PM => {},
-- LIBS => [ "-L$srcdir/.libs -L$srcdir -luuid" ],
-+ LIBS => [ "-L$srcdir/.libs -L$srcdir -lossp-uuid" ],
- DEFINE => '',
- INC => "-I. -I$srcdir",
- PM => { 'uuid.pm' => '$(INST_LIBDIR)/uuid.pm',
- 'uuid.pod' => '$(INST_LIBDIR)/uuid.pod',
- ($compat ? ('uuid_compat.pm' => '$(INST_LIBDIR)/../Data/UUID.pm') : ()),
- ($compat ? ('uuid_compat.pod' => '$(INST_LIBDIR)/../Data/UUID.pod') : ()), },
-- MAN3PODS => { 'uuid.pod' => '$(INST_MAN3DIR)/OSSP::uuid.3',
-- ($compat ? ('uuid_compat.pod' => '$(INST_MAN3DIR)/Data::UUID.3') : ()), },
-+ MAN3PODS => { 'uuid.pod' => '$(INST_MAN3DIR)/OSSP::uuid.3pm',
-+ ($compat ? ('uuid_compat.pod' => '$(INST_MAN3DIR)/Data::UUID.3pm') : ()), },
- TYPEMAPS => [ 'uuid.tm' ],
- test => { TESTS => 'uuid.ts' . ($compat ? ' uuid_compat.ts' : '') },
- NO_META => 1,
-diff --git a/php/config.m4 b/php/config.m4
-index 5091b96..969b457 100644
---- a/php/config.m4
-+++ b/php/config.m4
-@@ -34,7 +34,7 @@ if test "$PHP_UUID" != "no"; then
- PHP_NEW_EXTENSION(uuid, uuid.c, $ext_shared)
- AC_DEFINE(HAVE_UUID, 1, [Have OSSP uuid library])
- PHP_ADD_LIBPATH([..], )
-- PHP_ADD_LIBRARY([uuid],, UUID_SHARED_LIBADD)
-+ PHP_ADD_LIBRARY([ossp-uuid],, UUID_SHARED_LIBADD)
- PHP_ADD_INCLUDE([..])
- PHP_SUBST(UUID_SHARED_LIBADD)
-
-diff --git a/uuid-config.in b/uuid-config.in
-index 8d2a063..5b58812 100644
---- a/uuid-config.in
-+++ b/uuid-config.in
-@@ -121,7 +121,7 @@ do
- output_extra="$output_extra $uuid_ldflags"
- ;;
- --libs)
-- output="$output -luuid"
-+ output="$output -lossp-uuid"
- output_extra="$output_extra $uuid_libs"
- ;;
- * )
-diff --git a/uuid.pc.in b/uuid.pc.in
-index c76ad1e..de00c2f 100644
---- a/uuid.pc.in
-+++ b/uuid.pc.in
-@@ -36,7 +36,7 @@ Name: OSSP uuid
- Description: Universally Unique Identifier (UUID) Library
- Version: @UUID_VERSION_RAW@
- URL: http://www.ossp.org/pkg/lib/uuid/
--Cflags: -I${includedir}
--Libs: -L${libdir} -luuid
-+Cflags: -I${includedir}/ossp
-+Libs: -L${libdir} -lossp-uuid
- Libs.private: @LIBS@
-
---
diff --git a/meta/recipes-devtools/ossp-uuid/ossp-uuid/0002-uuid-preserve-m-option-status-in-v-option-handling.patch b/meta/recipes-devtools/ossp-uuid/ossp-uuid/0002-uuid-preserve-m-option-status-in-v-option-handling.patch
deleted file mode 100644
index 804a62731df..00000000000
--- a/meta/recipes-devtools/ossp-uuid/ossp-uuid/0002-uuid-preserve-m-option-status-in-v-option-handling.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From: Marco Nenciarini <marco.nenciarini@devise.it>
-Date: Wed, 27 Jan 2010 19:46:21 +0100
-Subject: [PATCH] uuid: preserve -m option status in -v option handling
-
-Bug: 531396
----
- uuid_cli.c | 19 ++++++++++---------
- 1 files changed, 10 insertions(+), 9 deletions(-)
-
-----
-Upstream-Status: Inappropriate [not author]
-
-This patch is from debian ossp-uuid 1.6.2 integration.
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-
-diff --git a/uuid_cli.c b/uuid_cli.c
-index d1b0b11..14a67fe 100644
---- a/uuid_cli.c
-+++ b/uuid_cli.c
-@@ -140,11 +140,12 @@ int main(int argc, char *argv[])
- i = strtol(optarg, &p, 10);
- if (*p != '\0')
- usage("invalid argument to option 'v'");
-+ version &= ~(UUID_MAKE_V1|UUID_MAKE_V3|UUID_MAKE_V4|UUID_MAKE_V5);
- switch (i) {
-- case 1: version = UUID_MAKE_V1; break;
-- case 3: version = UUID_MAKE_V3; break;
-- case 4: version = UUID_MAKE_V4; break;
-- case 5: version = UUID_MAKE_V5; break;
-+ case 1: version |= UUID_MAKE_V1; break;
-+ case 3: version |= UUID_MAKE_V3; break;
-+ case 4: version |= UUID_MAKE_V4; break;
-+ case 5: version |= UUID_MAKE_V5; break;
- default:
- usage("invalid version on option 'v'");
- break;
-@@ -213,10 +214,10 @@ int main(int argc, char *argv[])
- }
- else {
- /* encoding */
-- if ( (version == UUID_MAKE_V1 && argc != 0)
-- || (version == UUID_MAKE_V3 && argc != 2)
-- || (version == UUID_MAKE_V4 && argc != 0)
-- || (version == UUID_MAKE_V5 && argc != 2))
-+ if ( (version & UUID_MAKE_V1 && argc != 0)
-+ || (version & UUID_MAKE_V3 && argc != 2)
-+ || (version & UUID_MAKE_V4 && argc != 0)
-+ || (version & UUID_MAKE_V5 && argc != 2))
- usage("invalid number of arguments");
- if ((rc = uuid_create(&uuid)) != UUID_RC_OK)
- error(1, "uuid_create: %s", uuid_error(rc));
-@@ -232,7 +233,7 @@ int main(int argc, char *argv[])
- if ((rc = uuid_load(uuid, "nil")) != UUID_RC_OK)
- error(1, "uuid_load: %s", uuid_error(rc));
- }
-- if (version == UUID_MAKE_V3 || version == UUID_MAKE_V5) {
-+ if (version & UUID_MAKE_V3 || version & UUID_MAKE_V5) {
- if ((rc = uuid_create(&uuid_ns)) != UUID_RC_OK)
- error(1, "uuid_create: %s", uuid_error(rc));
- if ((rc = uuid_load(uuid_ns, argv[0])) != UUID_RC_OK) {
---
diff --git a/meta/recipes-devtools/ossp-uuid/ossp-uuid/0003-Fix-whatis-entries.patch b/meta/recipes-devtools/ossp-uuid/ossp-uuid/0003-Fix-whatis-entries.patch
deleted file mode 100644
index 13cbb598964..00000000000
--- a/meta/recipes-devtools/ossp-uuid/ossp-uuid/0003-Fix-whatis-entries.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From: Marco Nenciarini <marco.nenciarini@devise.it>
-Date: Tue, 2 Feb 2010 12:16:49 +0100
-Subject: [PATCH] Fix whatis entries
-
-Fix whatis entry of uuid.1, uuid.3ossp and uuid++.3ossp manpages
----
- uuid++.pod | 2 +-
- uuid.pod | 2 +-
- uuid_cli.pod | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-----
-Upstream-Status: Inappropriate [not author]
-
-This patch is from debian ossp-uuid 1.6.2 integration.
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-
-diff --git a/uuid++.pod b/uuid++.pod
-index 8b5a4b1..89c5efb 100644
---- a/uuid++.pod
-+++ b/uuid++.pod
-@@ -31,7 +31,7 @@
-
- =head1 NAME
-
--B<OSSP uuid> - B<Universally Unique Identifier> (C++ API)
-+B<uuid++> - B<Universally Unique Identifier> (C++ API)
-
- =head1 VERSION
-
-diff --git a/uuid.pod b/uuid.pod
-index 4ad3742..0179a46 100644
---- a/uuid.pod
-+++ b/uuid.pod
-@@ -31,7 +31,7 @@
-
- =head1 NAME
-
--B<OSSP uuid> - B<Universally Unique Identifier>
-+B<uuid> - B<Universally Unique Identifier>
-
- =head1 VERSION
-
-diff --git a/uuid_cli.pod b/uuid_cli.pod
-index ddec6bb..df9dc83 100644
---- a/uuid_cli.pod
-+++ b/uuid_cli.pod
-@@ -31,7 +31,7 @@
-
- =head1 NAME
-
--B<OSSP uuid> - B<Universally Unique Identifier Command-Line Tool>
-+B<uuid> - B<Universally Unique Identifier Command-Line Tool>
-
- =head1 VERSION
-
---
diff --git a/meta/recipes-devtools/ossp-uuid/ossp-uuid/0004-fix-data-uuid-from-string.patch b/meta/recipes-devtools/ossp-uuid/ossp-uuid/0004-fix-data-uuid-from-string.patch
deleted file mode 100644
index bc5e111ee54..00000000000
--- a/meta/recipes-devtools/ossp-uuid/ossp-uuid/0004-fix-data-uuid-from-string.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-Description: Support dash-less args to from_string.
-Author: Tim Retout <diocles@debian.org>
-Bug-Debian: http://bugs.debian.org/635607
-
-The module Data::GUID depends on Data::UUID supporting this behaviour.
-
-----
-Upstream-Status: Inappropriate [not author]
-
-This patch is from debian ossp-uuid 1.6.2 integration.
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-
---- a/perl/uuid_compat.pm
-+++ b/perl/uuid_compat.pm
-@@ -93,7 +93,9 @@
- $uuid->import('str',
- $str =~ /^0x/
- ? join '-', unpack('x2 a8 a4 a4 a4 a12', $str)
-- : $str
-+ : $str =~ /-/
-+ ? $str
-+ : join '-', unpack('A8 A4 A4 A4 A12', $str)
- );
- return $uuid->export('bin');
- }
---- a/perl/uuid_compat.ts
-+++ b/perl/uuid_compat.ts
-@@ -28,7 +28,7 @@
- ## uuid_compat.ts: Data::UUID Backward Compatibility Perl API (Perl test suite part)
- ##
-
--use Test::More tests => 14;
-+use Test::More tests => 16;
-
- BEGIN {
- use_ok('Data::UUID');
-@@ -53,3 +53,5 @@
- ok($uuid8 = $ug->from_string("6ba7b811-9dad-11d1-80b4-00c04fd430c8"));
- ok($ug->compare($uuid7, $uuid8) == 0);
-
-+ok($uuid9 = $ug->from_string("6ba7b8119dad11d180b400c04fd430c8"));
-+ok($ug->compare($uuid7, $uuid9) == 0);
diff --git a/meta/recipes-devtools/ossp-uuid/ossp-uuid/install-pc.patch b/meta/recipes-devtools/ossp-uuid/ossp-uuid/install-pc.patch
deleted file mode 100644
index 63b80f6a14f..00000000000
--- a/meta/recipes-devtools/ossp-uuid/ossp-uuid/install-pc.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-uuid.pc is generated at build time so should be installed from the current
-directory, and not $S.
-
-Upstream-Status: Pending [should be submitted]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-Index: uuid-1.6.2/Makefile.in
-===================================================================
---- uuid-1.6.2.orig/Makefile.in 2012-11-13 16:58:28.624156000 +0000
-+++ uuid-1.6.2/Makefile.in 2012-11-13 17:05:24.224158670 +0000
-@@ -232,7 +232,7 @@
- $(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(mandir)/man1
- $(SHTOOL) install -c -m 755 uuid-config $(DESTDIR)$(bindir)/
- $(SHTOOL) install -c -m 644 $(S)/uuid-config.1 $(DESTDIR)$(mandir)/man1/
-- $(SHTOOL) install -c -m 644 $(S)/uuid.pc $(DESTDIR)$(libdir)/pkgconfig/
-+ $(SHTOOL) install -c -m 644 uuid.pc $(DESTDIR)$(libdir)/pkgconfig/
- $(SHTOOL) install -c -m 644 uuid.h $(DESTDIR)$(includedir)/
- -@if [ ".$(WITH_DCE)" = .yes ]; then \
- echo "$(SHTOOL) install -c -m 644 $(S)/uuid_dce.h $(DESTDIR)$(includedir)/"; \
diff --git a/meta/recipes-devtools/ossp-uuid/ossp-uuid/ldflags.patch b/meta/recipes-devtools/ossp-uuid/ossp-uuid/ldflags.patch
deleted file mode 100644
index 4dfc1370c18..00000000000
--- a/meta/recipes-devtools/ossp-uuid/ossp-uuid/ldflags.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Obey LDFLAGS
-
-Signed-off-by: Christopher Larson <chris_larson@mentor.com>
-Upstream-Status: Pending
-
---- uuid-1.6.2.orig/Makefile.in
-+++ uuid-1.6.2/Makefile.in
-@@ -113,15 +113,15 @@ all: $(TARGETS)
- @$(LIBTOOL) --mode=compile $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $<
-
- $(LIB_NAME): $(LIB_OBJS)
-- @$(LIBTOOL) --mode=link $(CC) -o $(LIB_NAME) $(LIB_OBJS) -rpath $(libdir) \
-+ @$(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $(LIB_NAME) $(LIB_OBJS) -rpath $(libdir) \
- -version-info `$(SHTOOL) version -l c -d libtool $(S)/uuid_vers.h`
-
- $(DCE_NAME): $(DCE_OBJS)
-- @$(LIBTOOL) --mode=link $(CC) -o $(DCE_NAME) $(DCE_OBJS) -rpath $(libdir) \
-+ @$(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $(DCE_NAME) $(DCE_OBJS) -rpath $(libdir) \
- -version-info `$(SHTOOL) version -l c -d libtool $(S)/uuid_vers.h`
-
- $(CXX_NAME): $(CXX_OBJS)
-- @$(LIBTOOL) --mode=link $(CXX) -o $(CXX_NAME) $(CXX_OBJS) -rpath $(libdir) \
-+ @$(LIBTOOL) --mode=link $(CXX) $(LDFLAGS) -o $(CXX_NAME) $(CXX_OBJS) -rpath $(libdir) \
- -version-info `$(SHTOOL) version -l c -d libtool $(S)/uuid_vers.h`
-
- $(PRG_NAME): $(PRG_OBJS) $(LIB_NAME)
diff --git a/meta/recipes-devtools/ossp-uuid/ossp-uuid/libtool-tag.patch b/meta/recipes-devtools/ossp-uuid/ossp-uuid/libtool-tag.patch
deleted file mode 100644
index 7f601afab59..00000000000
--- a/meta/recipes-devtools/ossp-uuid/ossp-uuid/libtool-tag.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Repect LIBTOOLFLAGS
-
-This add a knob that can be controlled from env to set generic options
-for libtool
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Index: uuid-1.6.2/Makefile.in
-===================================================================
---- uuid-1.6.2.orig/Makefile.in
-+++ uuid-1.6.2/Makefile.in
-@@ -56,7 +56,7 @@ RM = rm -f
- CP = cp
- RMDIR = rmdir
- SHTOOL = $(S)/shtool
--LIBTOOL = @LIBTOOL@
-+LIBTOOL = @LIBTOOL@ $(LIBTOOLFLAGS)
- TRUE = true
- POD2MAN = pod2man
- PERL = @PERL@
diff --git a/meta/recipes-devtools/ossp-uuid/ossp-uuid/uuid-libtool.patch b/meta/recipes-devtools/ossp-uuid/ossp-uuid/uuid-libtool.patch
deleted file mode 100644
index 4bc91b86ee5..00000000000
--- a/meta/recipes-devtools/ossp-uuid/ossp-uuid/uuid-libtool.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Remove hardcoded libtool name, fall back to generated name
-
-Upstream-Status: Inappropriate [no upstream]
-The project appears to no longer be accepting changes.
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-
-diff -ur uuid-1.6.2.orig/Makefile.in uuid-1.6.2/Makefile.in
---- uuid-1.6.2.orig/Makefile.in 2012-05-14 14:37:19.579672930 -0500
-+++ uuid-1.6.2/Makefile.in 2012-05-14 14:37:49.112733787 -0500
-@@ -32,6 +32,7 @@
- VPATH = @srcdir@
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
-+top_builddir = @top_builddir@
- S = $(srcdir)
- C = .
-
-@@ -55,7 +56,7 @@
- CP = cp
- RMDIR = rmdir
- SHTOOL = $(S)/shtool
--LIBTOOL = $(C)/libtool
-+LIBTOOL = @LIBTOOL@
- TRUE = true
- POD2MAN = pod2man
- PERL = @PERL@
diff --git a/meta/recipes-devtools/ossp-uuid/ossp-uuid/uuid-nostrip.patch b/meta/recipes-devtools/ossp-uuid/ossp-uuid/uuid-nostrip.patch
deleted file mode 100644
index d806b5fb70b..00000000000
--- a/meta/recipes-devtools/ossp-uuid/ossp-uuid/uuid-nostrip.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-We don't want anything stripped
-
-Upstream-Status: Inappropriate [no upstream]
-The project appears to no longer be accepting changes.
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-
-diff -ur uuid-1.6.2.orig/Makefile.in uuid-1.6.2/Makefile.in
---- uuid-1.6.2.orig/Makefile.in 2012-05-14 14:42:42.225789456 -0500
-+++ uuid-1.6.2/Makefile.in 2012-05-14 15:03:03.119733400 -0500
-@@ -254,7 +254,7 @@
- -@if [ ".$(WITH_CXX)" = .yes ]; then \
- $(LIBTOOL) --mode=install $(SHTOOL) install -c -m 644 $(CXX_NAME) $(DESTDIR)$(libdir)/; \
- fi
-- @$(LIBTOOL) --mode=install $(SHTOOL) install -c -s -m 755 uuid $(DESTDIR)$(bindir)/
-+ @$(LIBTOOL) --mode=install $(SHTOOL) install -c -m 755 uuid $(DESTDIR)$(bindir)/
- $(SHTOOL) install -c -m 644 $(S)/uuid.1 $(DESTDIR)$(mandir)/man1/
- -@if [ ".$(WITH_PERL)" = .yes ]; then \
- (cd $(S)/perl && $(MAKE) $(MFLAGS) install DESTDIR=$(DESTDIR)); \
diff --git a/meta/recipes-devtools/ossp-uuid/ossp-uuid_1.6.2.bb b/meta/recipes-devtools/ossp-uuid/ossp-uuid_1.6.2.bb
deleted file mode 100644
index 5d9ca790e98..00000000000
--- a/meta/recipes-devtools/ossp-uuid/ossp-uuid_1.6.2.bb
+++ /dev/null
@@ -1,66 +0,0 @@
-SUMMARY = "Universally Unique Identifier (UUID) library"
-DESCRIPTION = "OSSP uuid is a ISO-C:1999 application programming interface \
-(API) and corresponding command line interface (CLI) for the generation of \
-DCE 1.1, ISO/IEC 11578:1996 and RFC 4122 compliant Universally Unique \
-Identifier (UUID). It supports DCE 1.1 variant UUIDs of version 1 (time \
-and node based), version 3 (name based, MD5), version 4 (random number \
-based) and version 5 (name based, SHA-1)."
-DESCRIPTION_uuid = "This package contains a tool to create Universally \
-Unique Identifiers (UUID) from the command-line."
-
-HOMEPAGE = "http://www.ossp.org/pkg/lib/uuid/"
-SECTION = "libs"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://README;beginline=30;endline=55;md5=b394fadb039bbfca6ad9d9d769ee960e \
- file://uuid_md5.c;beginline=1;endline=28;md5=9c1f4b2218546deae24c91be1dcf00dd"
-
-PR = "r2"
-UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/o/ossp-uuid/"
-
-SRC_URI = "http://snapshot.debian.org/archive/debian/20160728T043443Z/pool/main/o/${BPN}/${BPN}_${PV}.orig.tar.gz \
- file://0001-Change-library-name.patch \
- file://0002-uuid-preserve-m-option-status-in-v-option-handling.patch \
- file://0003-Fix-whatis-entries.patch \
- file://0004-fix-data-uuid-from-string.patch \
- file://uuid-libtool.patch \
- file://uuid-nostrip.patch \
- file://install-pc.patch \
- file://ldflags.patch \
- file://libtool-tag.patch \
- "
-SRC_URI[md5sum] = "5db0d43a9022a6ebbbc25337ae28942f"
-SRC_URI[sha256sum] = "11a615225baa5f8bb686824423f50e4427acd3f70d394765bdff32801f0fd5b0"
-
-S = "${WORKDIR}/uuid-${PV}"
-
-inherit autotools update-alternatives
-
-EXTRA_OECONF = "--without-dce --without-cxx --without-perl --without-perl-compat --without-php --without-pgsql"
-EXTRA_OECONF = "--includedir=${includedir}/ossp"
-EXTRA_OEMAKE_class-target = "LIBTOOLFLAGS='--tag=CC'"
-
-do_configure_prepend() {
- # This package has a completely custom aclocal.m4, which should be acinclude.m4.
- if [ ! -e ${S}/acinclude.m4 ]; then
- mv ${S}/aclocal.m4 ${S}/acinclude.m4
- fi
-
- rm -f ${S}/libtool.m4
-}
-
-do_install_append() {
- mkdir -p ${D}${includedir}/ossp
- mv ${D}${libdir}/pkgconfig/uuid.pc ${D}${libdir}/pkgconfig/ossp-uuid.pc
-}
-
-PACKAGES =+ "uuid"
-FILES_uuid = "${bindir}/uuid"
-FILES_${PN} = "${libdir}/libossp-uuid.so.16*"
-FILES_${PN}-dev += "${bindir}/uuid-config"
-
-BBCLASSEXTEND = "native nativesdk"
-
-ALTERNATIVE_${PN}-doc = "uuid.3"
-ALTERNATIVE_PRIORITY_${PN}-doc = "200"
-ALTERNATIVE_LINK_NAME[uuid.3] = "${mandir}/man3/uuid.3"
diff --git a/meta/recipes-devtools/patch/patch/0001-Fix-swapping-fake-lines-in-pch_swap.patch b/meta/recipes-devtools/patch/patch/0001-Fix-swapping-fake-lines-in-pch_swap.patch
new file mode 100644
index 00000000000..049149eb9e5
--- /dev/null
+++ b/meta/recipes-devtools/patch/patch/0001-Fix-swapping-fake-lines-in-pch_swap.patch
@@ -0,0 +1,36 @@
+From 9c986353e420ead6e706262bf204d6e03322c300 Mon Sep 17 00:00:00 2001
+From: Andreas Gruenbacher <agruen@gnu.org>
+Date: Fri, 17 Aug 2018 13:35:40 +0200
+Subject: [PATCH] Fix swapping fake lines in pch_swap
+
+* src/pch.c (pch_swap): Fix swapping p_bfake and p_efake when there is a
+blank line in the middle of a context-diff hunk: that empty line stays
+in the middle of the hunk and isn't swapped.
+
+Fixes: https://savannah.gnu.org/bugs/index.php?53133
+Signed-off-by: Andreas Gruenbacher <agruen@gnu.org>
+
+Upstream-Status: Backport [https://git.savannah.gnu.org/git/patch.git]
+CVE: CVE-2018-6952
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
+---
+ src/pch.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/pch.c b/src/pch.c
+index e92bc64..a500ad9 100644
+--- a/src/pch.c
++++ b/src/pch.c
+@@ -2122,7 +2122,7 @@ pch_swap (void)
+ }
+ if (p_efake >= 0) { /* fix non-freeable ptr range */
+ if (p_efake <= i)
+- n = p_end - i + 1;
++ n = p_end - p_ptrn_lines;
+ else
+ n = -i;
+ p_efake += n;
+--
+2.10.2
+
diff --git a/meta/recipes-devtools/patch/patch_2.7.6.bb b/meta/recipes-devtools/patch/patch_2.7.6.bb
index 823486dd0af..85b0db73335 100644
--- a/meta/recipes-devtools/patch/patch_2.7.6.bb
+++ b/meta/recipes-devtools/patch/patch_2.7.6.bb
@@ -5,6 +5,7 @@ SRC_URI += "file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
file://0002-Fix-segfault-with-mangled-rename-patch.patch \
file://0003-Allow-input-files-to-be-missing-for-ed-style-patches.patch \
file://0004-Fix-arbitrary-command-execution-in-ed-style-patches-.patch \
+ file://0001-Fix-swapping-fake-lines-in-pch_swap.patch \
"
SRC_URI[md5sum] = "4c68cee989d83c87b00a3860bcd05600"
diff --git a/meta/recipes-devtools/pax-utils/pax-utils_1.2.2.bb b/meta/recipes-devtools/pax-utils/pax-utils_1.2.2.bb
deleted file mode 100644
index 9635a5e7082..00000000000
--- a/meta/recipes-devtools/pax-utils/pax-utils_1.2.2.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "Security-focused ELF files checking tool"
-DESCRIPTION = "This is a small set of various PaX aware and related \
-utilities for ELF binaries. It can check ELF binary files and running \
-processes for issues that might be relevant when using ELF binaries \
-along with PaX, such as non-PIC code or executable stack and heap."
-HOMEPAGE = "http://www.gentoo.org/proj/en/hardened/pax-utils.xml"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
-
-SRC_URI = "https://dev.gentoo.org/~vapier/dist/pax-utils-${PV}.tar.xz"
-SRC_URI[md5sum] = "a580468318f0ff42edf4a8cd314cc942"
-SRC_URI[sha256sum] = "7f4a7f8db6b4743adde7582fa48992ad01776796fcde030683732f56221337d9"
-
-RDEPENDS_${PN} += "bash"
-
-export GNULIB_OVERRIDES_WINT_T = "0"
-
-do_configure_prepend() {
- touch ${S}/NEWS ${S}/AUTHORS ${S}/ChangeLog ${S}/README
-}
-
-do_install() {
- oe_runmake PREFIX=${D}${prefix} DESTDIR=${D} install
-}
-
-BBCLASSEXTEND = "native"
-
-inherit autotools pkgconfig
-
-PACKAGECONFIG ??= ""
-
-PACKAGECONFIG[libcap] = "--with-caps, --without-caps, libcap"
-PACKAGECONFIG[libseccomp] = "--with-seccomp, --without-seccomp, libseccomp"
-PACKAGECONFIG[pyelftools] = "--with-python, --without-python,, pyelftools"
-
-EXTRA_OECONF += "--enable-largefile"
diff --git a/meta/recipes-devtools/perl/liberror-perl_0.17025.bb b/meta/recipes-devtools/perl/liberror-perl_0.17026.bb
index f6dc30d0774..6f42b472983 100644
--- a/meta/recipes-devtools/perl/liberror-perl_0.17025.bb
+++ b/meta/recipes-devtools/perl/liberror-perl_0.17026.bb
@@ -13,8 +13,8 @@ DEPENDS += "perl"
SRC_URI = "http://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Error-${PV}.tar.gz"
-SRC_URI[md5sum] = "1a2ee7f0dc44f9ee76661a16bbbc0c48"
-SRC_URI[sha256sum] = "6c9f474ad3d4fe0cabff6b6be532cb1dd348245986d4a6b600ad921d5cfdefaf"
+SRC_URI[md5sum] = "0dcd94640f617df02b6d6c1e4e92018c"
+SRC_URI[sha256sum] = "37590a962cd73ae03470e1ff16459a6cbc5273fc57626b8981dab9c2433155d9"
S = "${WORKDIR}/Error-${PV}"
diff --git a/meta/recipes-devtools/perl/liburi-perl_1.73.bb b/meta/recipes-devtools/perl/liburi-perl_1.74.bb
index 49238f3df53..a7cfa0fbe3c 100644
--- a/meta/recipes-devtools/perl/liburi-perl_1.73.bb
+++ b/meta/recipes-devtools/perl/liburi-perl_1.74.bb
@@ -13,8 +13,8 @@ DEPENDS += "perl"
SRC_URI = "http://www.cpan.org/authors/id/E/ET/ETHER/URI-${PV}.tar.gz"
-SRC_URI[md5sum] = "37d44a08e599aa945b32a9434ffe00a5"
-SRC_URI[sha256sum] = "cca7ab4a6f63f3ccaacae0f2e1337e8edf84137e73f18548ec7d659f23efe413"
+SRC_URI[md5sum] = "892f7183b178af40f205ba37128225db"
+SRC_URI[sha256sum] = "a9c254f45f89cb1dd946b689dfe433095404532a4543bdaab0b71ce0fdcdd53d"
S = "${WORKDIR}/URI-${PV}"
diff --git a/meta/recipes-devtools/perl/libxml-parser-perl_2.44.bb b/meta/recipes-devtools/perl/libxml-parser-perl_2.44.bb
index c5e0ae67697..95af4d1de65 100644
--- a/meta/recipes-devtools/perl/libxml-parser-perl_2.44.bb
+++ b/meta/recipes-devtools/perl/libxml-parser-perl_2.44.bb
@@ -18,8 +18,15 @@ 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 's:--sysroot=.*\(\s\|$\):--sysroot=${STAGING_DIR_TARGET} :g' -i Makefile Expat/Makefile
+ 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
diff --git a/meta/recipes-devtools/perl/libxml-simple-perl_2.24.bb b/meta/recipes-devtools/perl/libxml-simple-perl_2.25.bb
index f9d00d2e28f..53788d55858 100644
--- a/meta/recipes-devtools/perl/libxml-simple-perl_2.24.bb
+++ b/meta/recipes-devtools/perl/libxml-simple-perl_2.25.bb
@@ -7,13 +7,13 @@ 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+"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=23477e18a0d04392cdf44ae70e49b495"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=cf206df8c9fe775f1d4c484386491eac"
DEPENDS += "libxml-parser-perl"
SRC_URI = "http://www.cpan.org/modules/by-module/XML/XML-Simple-${PV}.tar.gz"
-SRC_URI[md5sum] = "1cd2e8e3421160c42277523d5b2f4dd2"
-SRC_URI[sha256sum] = "9a14819fd17c75fbb90adcec0446ceab356cab0ccaff870f2e1659205dc2424f"
+SRC_URI[md5sum] = "bb841dce889a26c89a1c2739970e9fbc"
+SRC_URI[sha256sum] = "531fddaebea2416743eb5c4fdfab028f502123d9a220405a4100e68fc480dbf8"
S = "${WORKDIR}/XML-Simple-${PV}"
@@ -21,4 +21,15 @@ EXTRA_PERLFLAGS = "-I ${PERLHOSTLIB}"
inherit cpan ptest-perl
+RDEPENDS_${PN} += " \
+ libxml-namespacesupport-perl \
+ libxml-parser-perl \
+ libxml-sax-perl \
+"
+
+RDEPENDS_${PN}-ptest += " \
+ perl-module-file-temp \
+ perl-module-test-more \
+"
+
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/perl/perl-native_5.24.1.bb b/meta/recipes-devtools/perl/perl-native_5.24.4.bb
index a9ab17d16cf..81d3fd48980 100644
--- a/meta/recipes-devtools/perl/perl-native_5.24.1.bb
+++ b/meta/recipes-devtools/perl/perl-native_5.24.4.bb
@@ -16,10 +16,11 @@ SRC_URI += "\
file://perl-PathTools-don-t-filter-out-blib-from-INC.patch \
file://0001-Configure-Remove-fstack-protector-strong-for-native-.patch \
file://perl-5.26.1-guard_old_libcrypt_fix.patch \
+ file://0001-ExtUtils-MM_Unix.pm-fix-race-issues.patch \
"
-SRC_URI[md5sum] = "af6a84c7c3e2b8b269c105a5db2f6d53"
-SRC_URI[sha256sum] = "03a77bac4505c270f1890ece75afc7d4b555090b41aa41ea478747e23b2afb3f"
+SRC_URI[md5sum] = "04622bc4d3941dc7eb571c52b7c02993"
+SRC_URI[sha256sum] = "7f080287ff64750270689843ae945f02159a33cb8f2fc910248c15befba5db84"
inherit native
@@ -135,3 +136,5 @@ EOF
# Fix the path in sstate
SSTATE_SCAN_FILES += "*.pm *.pod *.h *.pl *.sh"
+
+PACKAGES_DYNAMIC_class-native = "^perl-module-.*native$"
diff --git a/meta/recipes-devtools/perl/perl-ptest.inc b/meta/recipes-devtools/perl/perl-ptest.inc
index 6a7a2d7cb32..8d46448566b 100644
--- a/meta/recipes-devtools/perl/perl-ptest.inc
+++ b/meta/recipes-devtools/perl/perl-ptest.inc
@@ -50,7 +50,7 @@ python populate_packages_prepend() {
'${PN}-ptest%s', '%s', recursive=True, match_path=True)
}
-RDEPENDS_${PN}-ptest += "${PN}-modules ${PN}-doc ${PN}-misc sed libssp"
+RDEPENDS_${PN}-ptest += "${PN}-modules ${PN}-doc ${PN}-misc sed"
# The perl-ptest package contains Perl internal modules and generating file
# dependencies for it causes problems.
diff --git a/meta/recipes-devtools/perl/perl-rdepends_5.24.1.inc b/meta/recipes-devtools/perl/perl-rdepends_5.24.4.inc
index 10e3c0429f1..10e3c0429f1 100644
--- a/meta/recipes-devtools/perl/perl-rdepends_5.24.1.inc
+++ b/meta/recipes-devtools/perl/perl-rdepends_5.24.4.inc
diff --git a/meta/recipes-devtools/perl/perl/0001-ExtUtils-MM_Unix.pm-fix-race-issues.patch b/meta/recipes-devtools/perl/perl/0001-ExtUtils-MM_Unix.pm-fix-race-issues.patch
new file mode 100644
index 00000000000..a43fbba0b60
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl/0001-ExtUtils-MM_Unix.pm-fix-race-issues.patch
@@ -0,0 +1,52 @@
+From 40702abf3156fa92ef70ee5d445fe52dd6cfbc7d Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Thu, 20 Sep 2018 18:48:48 +0800
+Subject: [PATCH] ExtUtils/MM_Unix.pm: fix race issues
+
+Fixed a race issue when compile libhtml-parser-perl and others who use MakeMaker:
+[snip]
+chmod 755 blib/arch/auto/HTML/Parser/Parser.so
+chmod 644 "Parser.bs"
+[snip]
+
+The rule INST_DYNAMIC removes '.bs' file which are generated by BOOTSTRAP, but
+the have no dependencies, so there is a race issue:
+
+BOOTSTRAP:
+ touch foo.bs
+ chmod 755 foo.bs
+
+INST_DYNAMIC:
+ rm -fr foo.bs
+
+The error would happen when INST_DYNAMIC removes foo.bs after BOOTSTRAP touched
+it but before chmod on it.
+
+Upstream-Status: Backport [https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/commit/44e95e717372abe2b0a6ee55de4b686760b65360]
+
+Note, This is not a real backport, upstream has totally refactored it in one
+patch, please see the link above, it's not a good idea to backport such a big
+patch, I just referred it to fix the problem in a simple way. I mark it as
+backport is because we can drop the patch after upgrade perl to 5.26 or 5.28.
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.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 95d9761..9cabe2d 100644
+--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
++++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
+@@ -933,7 +933,7 @@ OTHERLDFLAGS = '.$ld_opt.$otherldflags.'
+ INST_DYNAMIC_DEP = '.$inst_dynamic_dep.'
+ INST_DYNAMIC_FIX = '.$ld_fix.'
+
+-$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exists $(EXPORT_LIST) $(PERL_ARCHIVEDEP) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP)
++$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exists $(EXPORT_LIST) $(PERL_ARCHIVEDEP) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP) $(BOOTSTRAP)
+ ');
+ if ($armaybe ne ':'){
+ $ldfrom = 'tmp$(LIB_EXT)';
+--
+2.7.4
+
diff --git a/meta/recipes-devtools/perl/perl/CVE-2017-12883.patch b/meta/recipes-devtools/perl/perl/CVE-2017-12883.patch
deleted file mode 100644
index 5c1805f9e7d..00000000000
--- a/meta/recipes-devtools/perl/perl/CVE-2017-12883.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 40b3cdad3649334585cee8f4630ec9a025e62be6 Mon Sep 17 00:00:00 2001
-From: Karl Williamson <khw@cpan.org>
-Date: Fri, 25 Aug 2017 11:33:58 -0600
-Subject: [PATCH] PATCH: [perl #131598]
-
-The cause of this is that the vFAIL macro uses RExC_parse, and that
-variable has just been changed in preparation for code after the vFAIL.
-The solution is to not change RExC_parse until after the vFAIL.
-
-This is a case where the macro hides stuff that can bite you.
-
-(cherry picked from commit 2be4edede4ae226e2eebd4eff28cedd2041f300f)
-
-Upstream-Status: Backport
-CVE: CVE-2017-12833
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
----
- regcomp.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-Index: perl-5.24.1/regcomp.c
-===================================================================
---- perl-5.24.1.orig/regcomp.c
-+++ perl-5.24.1/regcomp.c
-@@ -11918,14 +11918,16 @@ S_grok_bslash_N(pTHX_ RExC_state_t *pREx
- }
- sv_catpv(substitute_parse, ")");
-
-- RExC_parse = RExC_start = RExC_adjusted_start = SvPV(substitute_parse,
-- len);
-+ len = SvCUR(substitute_parse);
-
- /* Don't allow empty number */
- if (len < (STRLEN) 8) {
- RExC_parse = endbrace;
- vFAIL("Invalid hexadecimal number in \\N{U+...}");
- }
-+
-+ RExC_parse = RExC_start = RExC_adjusted_start
-+ = SvPV_nolen(substitute_parse);
- RExC_end = RExC_parse + len;
-
- /* The values are Unicode, and therefore not subject to recoding, but
diff --git a/meta/recipes-devtools/perl/perl/CVE-2018-12015.patch b/meta/recipes-devtools/perl/perl/CVE-2018-12015.patch
new file mode 100644
index 00000000000..a33deaff6a8
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl/CVE-2018-12015.patch
@@ -0,0 +1,48 @@
+From ae65651eab053fc6dc4590dbb863a268215c1fc5 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
+Date: Fri, 8 Jun 2018 11:45:40 +0100
+Subject: [PATCH] [PATCH] Remove existing files before overwriting them
+
+Archive should extract only the latest same-named entry.
+Extracted regular file should not be writtent into existing block
+device (or any other one).
+
+https://rt.cpan.org/Ticket/Display.html?id=125523
+
+CVE: CVE-2018-12015
+Upstream-Status: Backport [https://github.com/jib/archive-tar-new/commit/ae65651eab053fc6dc4590dbb863a268215c1fc5]
+
+Signed-off-by: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
+Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
+---
+ lib/Archive/Tar.pm | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+diff --git a/cpan/Archive-Tar/lib/Archive/Tar.pm b/cpan/Archive-Tar/lib/Archive/Tar.pm
+index 6244369..a83975f 100644
+--- a/cpan/Archive-Tar/lib/Archive/Tar.pm
++++ b/cpan/Archive-Tar/lib/Archive/Tar.pm
+@@ -845,6 +845,20 @@ sub _extract_file {
+ return;
+ }
+
++ ### If a file system already contains a block device with the same name as
++ ### the being extracted regular file, we would write the file's content
++ ### to the block device. So remove the existing file (block device) now.
++ ### If an archive contains multiple same-named entries, the last one
++ ### should replace the previous ones. So remove the old file now.
++ ### If the old entry is a symlink to a file outside of the CWD, the new
++ ### entry would create a file there. This is CVE-2018-12015
++ ### <https://rt.cpan.org/Ticket/Display.html?id=125523>.
++ if (-l $full || -e _) {
++ if (!unlink $full) {
++ $self->_error( qq[Could not remove old file '$full': $!] );
++ return;
++ }
++ }
+ if( length $entry->type && $entry->is_file ) {
+ my $fh = IO::File->new;
+ $fh->open( '>' . $full ) or (
+--
+2.13.3
+
diff --git a/meta/recipes-devtools/perl/perl/Makefile.SH.patch b/meta/recipes-devtools/perl/perl/Makefile.SH.patch
index c1db335e0d6..e4c3426b7fb 100644
--- a/meta/recipes-devtools/perl/perl/Makefile.SH.patch
+++ b/meta/recipes-devtools/perl/perl/Makefile.SH.patch
@@ -12,10 +12,10 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Makefile.SH | 147 ++++++++++++++++++++++++++++--------------------------------
1 file changed, 68 insertions(+), 79 deletions(-)
-Index: perl-5.24.1/Makefile.SH
+Index: perl-5.24.4/Makefile.SH
===================================================================
---- perl-5.24.1.orig/Makefile.SH
-+++ perl-5.24.1/Makefile.SH
+--- perl-5.24.4.orig/Makefile.SH
++++ perl-5.24.4/Makefile.SH
@@ -48,10 +48,10 @@ case "$useshrplib" in
true)
# Prefix all runs of 'miniperl' and 'perl' with
@@ -271,9 +271,9 @@ Index: perl-5.24.1/Makefile.SH
$(MINIPERL) autodoc.pl
pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST
-@@ -1089,7 +1099,7 @@ pod/perl5241delta.pod: pod/perldelta.pod
- $(RMS) pod/perl5241delta.pod
- $(LNS) perldelta.pod pod/perl5241delta.pod
+@@ -1089,7 +1099,7 @@ pod/perl5244delta.pod: pod/perldelta.pod
+ $(RMS) pod/perl5244delta.pod
+ $(LNS) perldelta.pod pod/perl5244delta.pod
-extra.pods: $(MINIPERL_EXE)
+extra.pods:
diff --git a/meta/recipes-devtools/perl/perl/config.sh b/meta/recipes-devtools/perl/perl/config.sh
index ac0484ca64e..b1b5834c71a 100644
--- a/meta/recipes-devtools/perl/perl/config.sh
+++ b/meta/recipes-devtools/perl/perl/config.sh
@@ -14,7 +14,7 @@
: Configure command line arguments.
config_arg0='Configure'
-config_args='-des -Doptimize=-O2 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Open Embedded -Dinstallprefix=@EXECPREFIX@ -Dprefix=@EXECPREFIX@ -Dvendorprefix=@EXECPREFIX@ -Dsiteprefix=@EXECPREFIX@ -Dotherlibdirs=@LIBDIR@/perl/5.24.1 -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Ud_dosuid -Dd_semctl_semun -Ui_db -Ui_ndbm -Ui_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl -Ubincompat5005 -Uversiononly -Dpager=@USRBIN@/less -isr'
+config_args='-des -Doptimize=-O2 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Open Embedded -Dinstallprefix=@EXECPREFIX@ -Dprefix=@EXECPREFIX@ -Dvendorprefix=@EXECPREFIX@ -Dsiteprefix=@EXECPREFIX@ -Dotherlibdirs=@LIBDIR@/perl/5.24.4 -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Ud_dosuid -Dd_semctl_semun -Ui_db -Ui_ndbm -Ui_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl -Ubincompat5005 -Uversiononly -Dpager=@USRBIN@/less -isr'
config_argc=28
config_arg1='-des'
config_arg2='-Doptimize=-O2'
@@ -26,7 +26,7 @@ config_arg7='-Dinstallprefix=@EXECPREFIX@'
config_arg8='-Dprefix=@EXECPREFIX@'
config_arg9='-Dvendorprefix=@EXECPREFIX@'
config_arg10='-Dsiteprefix=@EXECPREFIX@'
-config_arg11='-Dotherlibdirs=@LIBDIR@/perl/5.24.1'
+config_arg11='-Dotherlibdirs=@LIBDIR@/perl/5.24.4'
config_arg12='-Duseshrplib'
config_arg13='-Dusethreads'
config_arg14='-Duseithreads'
@@ -64,13 +64,13 @@ alignbytes='8'
ansi2knr=''
aphostname=''
api_revision='5'
-api_subversion='1'
+api_subversion='4'
api_version='24'
-api_versionstring='5.24.1'
+api_versionstring='5.24.4'
ar='ar'
-archlib='@LIBDIR@/perl/5.24.1/@ARCH@-thread-multi'
-archlibexp='@STAGINGDIR@@LIBDIR@/perl/5.24.1/@ARCH@-thread-multi'
-archlib_exp='@LIBDIR@/perl/5.24.1/@ARCH@-thread-multi'
+archlib='@LIBDIR@/perl/5.24.4/@ARCH@-thread-multi'
+archlibexp='@STAGINGDIR@@LIBDIR@/perl/5.24.4/@ARCH@-thread-multi'
+archlib_exp='@LIBDIR@/perl/5.24.4/@ARCH@-thread-multi'
archname64=''
archname='@ARCH@-thread-multi'
archobjs=''
@@ -88,7 +88,7 @@ castflags='0'
cat='cat'
cc='gcc'
cccdlflags='-fPIC'
-ccdlflags='-Wl,-E -Wl,-rpath,@LIBDIR@/perl/5.24.1/@ARCH@-thread-multi/CORE'
+ccdlflags='-Wl,-E -Wl,-rpath,@LIBDIR@/perl/5.24.4/@ARCH@-thread-multi/CORE'
ccflags='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2'
ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
ccname='gcc'
@@ -838,7 +838,7 @@ inc_version_list_init='0'
incpath=''
inews=''
initialinstalllocation='@USRBIN@'
-installarchlib='@LIBDIR@/perl/5.24.1/@ARCH@-thread-multi'
+installarchlib='@LIBDIR@/perl/5.24.4/@ARCH@-thread-multi'
installbin='@USRBIN@'
installhtml1dir=''
installhtml3dir=''
@@ -846,23 +846,23 @@ installman1dir=''
installman3dir=''
installprefix='@EXECPREFIX@'
installprefixexp='@EXECPREFIX@'
-installprivlib='@LIBDIR@/perl/5.24.1'
+installprivlib='@LIBDIR@/perl/5.24.4'
installscript='@USRBIN@'
-installsitearch='@LIBDIR@/perl/site_perl/5.24.1/@ARCH@-thread-multi'
+installsitearch='@LIBDIR@/perl/site_perl/5.24.4/@ARCH@-thread-multi'
installsitebin='@USRBIN@'
installsitehtml1dir=''
installsitehtml3dir=''
-installsitelib='@LIBDIR@/perl/site_perl/5.24.1'
+installsitelib='@LIBDIR@/perl/site_perl/5.24.4'
installsiteman1dir=''
installsiteman3dir=''
installsitescript='@USRBIN@'
installstyle='lib/perl'
installusrbinperl='define'
-installvendorarch='@LIBDIR@/perl/vendor_perl/5.24.1/@ARCH@-thread-multi'
+installvendorarch='@LIBDIR@/perl/vendor_perl/5.24.4/@ARCH@-thread-multi'
installvendorbin='@USRBIN@'
installvendorhtml1dir=''
installvendorhtml3dir=''
-installvendorlib='@LIBDIR@/perl/vendor_perl/5.24.1'
+installvendorlib='@LIBDIR@/perl/vendor_perl/5.24.4'
installvendorman1dir=''
installvendorman3dir=''
installvendorscript='@USRBIN@'
@@ -965,7 +965,7 @@ optimize='-O2'
orderlib='false'
osname='linux'
osvers='3.19.5-yocto-standard'
-otherlibdirs='@LIBDIR@/perl/5.24.1'
+otherlibdirs='@LIBDIR@/perl/5.24.4'
package='perl'
pager='/usr/bin/less -isr'
passcat='cat /etc/passwd'
@@ -986,8 +986,8 @@ pmake=''
pr=''
prefix='@EXECPREFIX@'
prefixexp='@EXECPREFIX@'
-privlib='@LIBDIR@/perl/5.24.1'
-privlibexp='@LIBDIR@/perl/5.24.1'
+privlib='@LIBDIR@/perl/5.24.4'
+privlibexp='@LIBDIR@/perl/5.24.4'
procselfexe='"/proc/self/exe"'
prototype='define'
ptrsize='8'
@@ -1053,17 +1053,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 31, 0'
sig_size='69'
signal_t='void'
-sitearch='@LIBDIR@/perl/site_perl/5.24.1/@ARCH@-thread-multi'
-sitearchexp='@LIBDIR@/perl/site_perl/5.24.1/@ARCH@-thread-multi'
+sitearch='@LIBDIR@/perl/site_perl/5.24.4/@ARCH@-thread-multi'
+sitearchexp='@LIBDIR@/perl/site_perl/5.24.4/@ARCH@-thread-multi'
sitebin='@USRBIN@'
sitebinexp='@USRBIN@'
sitehtml1dir=''
sitehtml1direxp=''
sitehtml3dir=''
sitehtml3direxp=''
-sitelib='@LIBDIR@/perl/site_perl/5.24.1'
+sitelib='@LIBDIR@/perl/site_perl/5.24.4'
sitelib_stem='@LIBDIR@/perl/site_perl'
-sitelibexp='@LIBDIR@/perl/site_perl/5.24.1'
+sitelibexp='@LIBDIR@/perl/site_perl/5.24.4'
siteman1dir=''
siteman1direxp=''
siteman3dir=''
@@ -1102,7 +1102,7 @@ stdio_stream_array=''
strerror_r_proto='REENTRANT_PROTO_B_IBW'
strings='@INCLUDEDIR@/string.h'
submit=''
-subversion='1'
+subversion='4'
sysman='@EXECPREFIX@/share/man/man1'
sysroot=''
tail=''
@@ -1182,17 +1182,17 @@ uvtype='unsigned long'
uvuformat='"lu"'
uvxformat='"lx"'
vaproto='define'
-vendorarch='@LIBDIR@/perl/vendor_perl/5.24.1/@ARCH@-thread-multi'
-vendorarchexp='@LIBDIR@/perl/vendor_perl/5.24.1/@ARCH@-thread-multi'
+vendorarch='@LIBDIR@/perl/vendor_perl/5.24.4/@ARCH@-thread-multi'
+vendorarchexp='@LIBDIR@/perl/vendor_perl/5.24.4/@ARCH@-thread-multi'
vendorbin='@USRBIN@'
vendorbinexp='@USRBIN@'
vendorhtml1dir=' '
vendorhtml1direxp=''
vendorhtml3dir=' '
vendorhtml3direxp=''
-vendorlib='@LIBDIR@/perl/vendor_perl/5.24.1'
+vendorlib='@LIBDIR@/perl/vendor_perl/5.24.4'
vendorlib_stem='@LIBDIR@/perl/vendor_perl'
-vendorlibexp='@LIBDIR@/perl/vendor_perl/5.24.1'
+vendorlibexp='@LIBDIR@/perl/vendor_perl/5.24.4'
vendorman1dir=' '
vendorman1direxp=''
vendorman3dir=' '
@@ -1201,8 +1201,8 @@ vendorprefix='@EXECPREFIX@'
vendorprefixexp='@EXECPREFIX@'
vendorscript='@USRBIN@'
vendorscriptexp='@USRBIN@'
-version='5.24.1'
-version_patchlevel_string='version 24 subversion 1'
+version='5.24.4'
+version_patchlevel_string='version 24 subversion 4'
versiononly='undef'
vi=''
xlibpth='@LIBDIR@/386 @BASELIBDIR@386'
@@ -1212,10 +1212,10 @@ zcat=''
zip='zip'
PERL_REVISION=5
PERL_VERSION=24
-PERL_SUBVERSION=1
+PERL_SUBVERSION=4
PERL_API_REVISION=5
PERL_API_VERSION=24
-PERL_API_SUBVERSION=1
+PERL_API_SUBVERSION=4
PERL_PATCHLEVEL=''
PERL_CONFIG_SH=true
: Variables propagated from previous config.sh file.
diff --git a/meta/recipes-devtools/perl/perl_5.24.1.bb b/meta/recipes-devtools/perl/perl_5.24.4.bb
index 53a426289ad..cc5aae9fd02 100644
--- a/meta/recipes-devtools/perl/perl_5.24.1.bb
+++ b/meta/recipes-devtools/perl/perl_5.24.4.bb
@@ -64,7 +64,8 @@ SRC_URI += " \
file://perl-fix-conflict-between-skip_all-and-END.patch \
file://perl-test-customized.patch \
file://perl-5.26.1-guard_old_libcrypt_fix.patch \
- file://CVE-2017-12883.patch \
+ file://CVE-2018-12015.patch \
+ file://0001-ExtUtils-MM_Unix.pm-fix-race-issues.patch \
"
# Fix test case issues
@@ -73,8 +74,8 @@ SRC_URI_append_class-target = " \
file://test/ext-DynaLoader-t-DynaLoader.t-fix-calling-dl_findfil.patch \
"
-SRC_URI[md5sum] = "af6a84c7c3e2b8b269c105a5db2f6d53"
-SRC_URI[sha256sum] = "03a77bac4505c270f1890ece75afc7d4b555090b41aa41ea478747e23b2afb3f"
+SRC_URI[md5sum] = "04622bc4d3941dc7eb571c52b7c02993"
+SRC_URI[sha256sum] = "7f080287ff64750270689843ae945f02159a33cb8f2fc910248c15befba5db84"
inherit perlnative siteinfo
@@ -145,7 +146,6 @@ do_configure() {
-e "s,\(i_fcntl=\)'undef',\1'define',g" \
-e "s,\(h_fcntl=\)'false',\1'true',g" \
-e "s,-fstack-protector,-fno-stack-protector,g" \
- -e "s,-lnsl,,g" \
config.sh-${TARGET_ARCH}-${TARGET_OS}
fi
@@ -158,6 +158,7 @@ do_configure() {
-e "s,@BASELIBDIR@,${base_libdir},g" \
-e "s,@EXECPREFIX@,${exec_prefix},g" \
-e 's,@USRBIN@,${bindir},g' \
+ -e "s,-lnsl,,g" \
config.sh-${TARGET_ARCH}-${TARGET_OS}
case "${TARGET_ARCH}" in
@@ -339,8 +340,8 @@ python split_perl_packages () {
d.setVar(d.expand("RRECOMMENDS_${PN}-modules"), ' '.join(packages))
}
-PACKAGES_DYNAMIC += "^perl-module-.*"
-PACKAGES_DYNAMIC_class-nativesdk += "^nativesdk-perl-module-.*"
+PACKAGES_DYNAMIC += "^perl-module-.*(?<!\-native)$"
+PACKAGES_DYNAMIC_class-nativesdk = "^nativesdk-perl-module-.*"
RPROVIDES_perl-lib = "perl-lib"
diff --git a/meta/recipes-devtools/pkgconf/pkgconf_1.4.2.bb b/meta/recipes-devtools/pkgconf/pkgconf_1.5.3.bb
index ea7b6660219..415478d5cf9 100644
--- a/meta/recipes-devtools/pkgconf/pkgconf_1.4.2.bb
+++ b/meta/recipes-devtools/pkgconf/pkgconf_1.5.3.bb
@@ -21,10 +21,10 @@ SRC_URI = "\
file://pkg-config-native.in \
file://pkg-config-esdk.in \
"
-SRC_URI[md5sum] = "678d242b4eef1754bba6a58642af10bb"
-SRC_URI[sha256sum] = "bab39371d4ab972be1d539a8b10b6cc21f8eafc97f617102e667e82bd32eb234"
+SRC_URI[md5sum] = "c21743bca14c882c0f282746168a5edc"
+SRC_URI[sha256sum] = "d3468308553c94389dadfd10c4d1067269052b5364276a9d24a643c88485f715"
-inherit autotools update-alternatives
+inherit autotools
EXTRA_OECONF += "--with-pkg-config-dir='${libdir}/pkgconfig:${datadir}/pkgconfig'"
@@ -46,8 +46,6 @@ do_install_append_class-native () {
install -m755 ${B}/pkg-config-esdk ${D}${bindir}/pkg-config-esdk
}
-ALTERNATIVE_${PN} = "pkg-config"
-
# 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.
diff --git a/meta/recipes-devtools/prelink/prelink_git.bb b/meta/recipes-devtools/prelink/prelink_git.bb
index 0f6d16e0056..3f2a2e227d6 100644
--- a/meta/recipes-devtools/prelink/prelink_git.bb
+++ b/meta/recipes-devtools/prelink/prelink_git.bb
@@ -9,7 +9,7 @@ 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 = "05aeafd053e56356ec8c62f4bb8f7b95bae192f3"
+SRCREV = "a853a5d715d84eec93aa68e8f2df26b7d860f5b2"
PV = "1.0+git${SRCPV}"
#
@@ -27,11 +27,12 @@ FILES_${PN}-cron = "${sysconfdir}/cron.daily ${sysconfdir}/default"
PACKAGES =+ "${PN}-cron"
-SRC_URI = "git://git.yoctoproject.org/prelink-cross.git;branch=cross_prelink \
+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://macros.prelink \
+"
UPSTREAM_CHECK_COMMITS = "1"
TARGET_OS_ORIG := "${TARGET_OS}"
diff --git a/meta/recipes-devtools/pseudo/pseudo_git.bb b/meta/recipes-devtools/pseudo/pseudo_git.bb
index 9103d491128..79e0b6bd21a 100644
--- a/meta/recipes-devtools/pseudo/pseudo_git.bb
+++ b/meta/recipes-devtools/pseudo/pseudo_git.bb
@@ -8,7 +8,7 @@ SRC_URI = "git://git.yoctoproject.org/pseudo \
file://toomanyfiles.patch \
"
-SRCREV = "fddbe854c9db058d5a05830d3bcdd4233d95ee2e"
+SRCREV = "6294b344e5140f5467e6860f45a174440015304e"
S = "${WORKDIR}/git"
PV = "1.9.0+git${SRCPV}"
diff --git a/meta/recipes-devtools/python-numpy/python-numpy.inc b/meta/recipes-devtools/python-numpy/python-numpy.inc
index 284f21368da..1b51f7baaf2 100644
--- a/meta/recipes-devtools/python-numpy/python-numpy.inc
+++ b/meta/recipes-devtools/python-numpy/python-numpy.inc
@@ -10,8 +10,8 @@ SRC_URI = "https://github.com/${SRCNAME}/${SRCNAME}/releases/download/v${PV}/${S
file://fix_shebang_f2py.patch \
file://0001-npy_cpu-Add-riscv-support.patch \
${CONFIGFILESURI} "
-SRC_URI[md5sum] = "e39878fafb11828983aeec583dda4a06"
-SRC_URI[sha256sum] = "ddbcda194f49e0cf0663fa8131cb9d7a3b876d14dea0047d3c5fdfaf20adbb40"
+SRC_URI[md5sum] = "e3189ee851c3a0e2e6e4c6e80a711ec8"
+SRC_URI[sha256sum] = "1b4a02758fb68a65ea986d808867f1d6383219c234aef553a8741818e795b529"
UPSTREAM_CHECK_URI = "https://github.com/numpy/numpy/releases"
UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar"
@@ -77,6 +77,8 @@ CONFIGFILESURI_riscv64 = " \
S = "${WORKDIR}/numpy-${PV}"
+CLEANBROKEN = "1"
+
# Make the build fail and replace *config.h with proper one
# This is a ugly, ugly hack - Koen
do_compile_prepend_class-target() {
diff --git a/meta/recipes-devtools/python-numpy/python-numpy_1.14.2.bb b/meta/recipes-devtools/python-numpy/python-numpy_1.14.5.bb
index 50137895ca1..50137895ca1 100644
--- a/meta/recipes-devtools/python-numpy/python-numpy_1.14.2.bb
+++ b/meta/recipes-devtools/python-numpy/python-numpy_1.14.5.bb
diff --git a/meta/recipes-devtools/python-numpy/python3-numpy_1.14.2.bb b/meta/recipes-devtools/python-numpy/python3-numpy_1.14.5.bb
index 915e6f8c2b3..915e6f8c2b3 100644
--- a/meta/recipes-devtools/python-numpy/python3-numpy_1.14.2.bb
+++ b/meta/recipes-devtools/python-numpy/python3-numpy_1.14.5.bb
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
new file mode 100644
index 00000000000..4b179218804
--- /dev/null
+++ b/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch
@@ -0,0 +1,34 @@
+From 019422d19c6401fa8f45b1311ecd31bb087c809d 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
+
+If var-NO_FETCH_BUILD is set, do not allow to fetch code from
+internet by easy_install.
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ setuptools/command/easy_install.py | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
+index 85ee40f..7eb9d2a 100755
+--- a/setuptools/command/easy_install.py
++++ b/setuptools/command/easy_install.py
+@@ -637,6 +637,11 @@ class easy_install(Command):
+ os.path.exists(tmpdir) and rmtree(rmtree_safe(tmpdir))
+
+ def easy_install(self, spec, deps=False):
++ if os.environ.get('NO_FETCH_BUILD', None):
++ log.error("ERROR: Do not try to fetch `%s' for building. "
++ "Please add its native recipe to DEPENDS." % spec)
++ return None
++
+ if not self.editable:
+ self.install_site_py()
+
+--
+2.7.4
+
diff --git a/meta/recipes-devtools/python/python-extras.inc b/meta/recipes-devtools/python/python-extras.inc
new file mode 100644
index 00000000000..b5e11b711a8
--- /dev/null
+++ b/meta/recipes-devtools/python/python-extras.inc
@@ -0,0 +1,12 @@
+SUMMARY = "Useful extra bits for Python - things that should be in the standard library"
+HOMEPAGE = "https://pypi.python.org/pypi/extras/"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6d108f338b2f68fe48ac366c4650bd8b"
+
+inherit pypi
+
+SRC_URI[md5sum] = "3a63ad60cf8f0186c9e3a02f55ec5b14"
+SRC_URI[sha256sum] = "132e36de10b9c91d5d4cc620160a476e0468a88f16c9431817a6729611a81b4e"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/python/python-git.inc b/meta/recipes-devtools/python/python-git.inc
index 8d376939600..7ccf1686fd1 100644
--- a/meta/recipes-devtools/python/python-git.inc
+++ b/meta/recipes-devtools/python/python-git.inc
@@ -12,8 +12,8 @@ PYPI_PACKAGE = "GitPython"
inherit pypi
-SRC_URI[md5sum] = "7a94ee1b923fb772a2a0c6649430a17c"
-SRC_URI[sha256sum] = "ad61bc25deadb535b047684d06f3654c001d9415e1971e51c9c20f5b510076e9"
+SRC_URI[md5sum] = "cee43a39a1468084d49d1c49fb675204"
+SRC_URI[sha256sum] = "8237dc5bfd6f1366abeee5624111b9d6879393d84745a507de0fda86043b65a8"
DEPENDS = "${PYTHON_PN}-gitdb"
diff --git a/meta/recipes-devtools/python/python-gitdb.inc b/meta/recipes-devtools/python/python-gitdb.inc
index 2d5292e5d49..789ab959fd3 100644
--- a/meta/recipes-devtools/python/python-gitdb.inc
+++ b/meta/recipes-devtools/python/python-gitdb.inc
@@ -8,8 +8,8 @@ inherit pypi
PYPI_PACKAGE = "gitdb2"
-SRC_URI[md5sum] = "d5217eb94ebd36fcec62b929d1f72b00"
-SRC_URI[sha256sum] = "b60e29d4533e5e25bb50b7678bbc187c8f6bcff1344b4f293b2ba55c85795f09"
+SRC_URI[md5sum] = "6e21f5795a204f7afecb0a72fff66932"
+SRC_URI[sha256sum] = "bb4c85b8a58531c51373c89f92163b92f30f81369605a67cd52d1fc21246c044"
DEPENDS = "${PYTHON_PN}-async ${PYTHON_PN}-setuptools-native ${PYTHON_PN}-smmap"
diff --git a/meta/recipes-devtools/python/python-native_2.7.14.bb b/meta/recipes-devtools/python/python-native_2.7.15.bb
index 7c491fa3e02..7c491fa3e02 100644
--- a/meta/recipes-devtools/python/python-native_2.7.14.bb
+++ b/meta/recipes-devtools/python/python-native_2.7.15.bb
diff --git a/meta/recipes-devtools/python/python-pbr.inc b/meta/recipes-devtools/python/python-pbr.inc
new file mode 100644
index 00000000000..5a295c5f33c
--- /dev/null
+++ b/meta/recipes-devtools/python/python-pbr.inc
@@ -0,0 +1,15 @@
+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"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1dece7821bf3fd70fe1309eaa37d52a2"
+
+SRC_URI[md5sum] = "6619780896ca81c7cd19c6e2f439b6c9"
+SRC_URI[sha256sum] = "1b8be50d938c9bb75d0eaf7eda111eec1bf6dc88a62a6412e33bf077457e0f45"
+
+inherit pypi
+
+RDEPENDS_${PN} += "${PYTHON_PN}-pip"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-scons-native_3.0.1.bb b/meta/recipes-devtools/python/python-scons-native_3.0.1.bb
index dae89ab5d28..68b63c93579 100644
--- a/meta/recipes-devtools/python/python-scons-native_3.0.1.bb
+++ b/meta/recipes-devtools/python/python-scons-native_3.0.1.bb
@@ -4,5 +4,5 @@ DEPENDS = "python-native"
RDEPENDS_${PN} = ""
do_install_append() {
- create_wrapper ${D}${bindir}/scons SCONS_LIB_DIR='${STAGING_DIR_HOST}/${PYTHON_SITEPACKAGES_DIR}'
+ create_wrapper ${D}${bindir}/scons SCONS_LIB_DIR='${STAGING_DIR_HOST}/${PYTHON_SITEPACKAGES_DIR}' PYTHONNOUSERSITE='1'
}
diff --git a/meta/recipes-devtools/python/python-setuptools.inc b/meta/recipes-devtools/python/python-setuptools.inc
index 74706bf0452..315ba313965 100644
--- a/meta/recipes-devtools/python/python-setuptools.inc
+++ b/meta/recipes-devtools/python/python-setuptools.inc
@@ -2,27 +2,19 @@ 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[md5sum] = "379642a4f17214071fdc1894255d8d11"
-SRC_URI[sha256sum] = "94dc566247f35009ed42c0f4422f2b4f0a032fab1372c8308b864c8f26d93388"
+SRC_URI_append_class-native = " file://0001-conditionally-do-not-fetch-code-by-easy_install.patch"
-DEPENDS += "${PYTHON_PN}"
-DEPENDS_class-native += "${PYTHON_PN}-native"
-DEPENDS_class-nativesdk += "nativesdk-${PYTHON_PN}"
+SRC_URI[md5sum] = "260630ae1a64bafa39dcc53404d63829"
+SRC_URI[sha256sum] = "012adb8e25fbfd64c652e99e7bab58799a3aaf05d39ab38561f69190a909015f"
-DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${PYTHON_SITEPACKAGES_DIR} \
- --script-dir=${bindir}"
+DEPENDS += "${PYTHON_PN}"
-RDEPENDS_${PN}_class-native = "\
- ${PYTHON_PN}-distutils \
- ${PYTHON_PN}-compression \
-"
RDEPENDS_${PN} = "\
${PYTHON_PN}-compile \
${PYTHON_PN}-compression \
@@ -40,7 +32,6 @@ RDEPENDS_${PN} = "\
${PYTHON_PN}-unittest \
${PYTHON_PN}-xml \
"
-
do_install_prepend() {
install -d ${D}${PYTHON_SITEPACKAGES_DIR}
}
diff --git a/meta/recipes-devtools/python/python-setuptools_39.0.0.bb b/meta/recipes-devtools/python/python-setuptools_40.0.0.bb
index cf9440495bd..cf9440495bd 100644
--- a/meta/recipes-devtools/python/python-setuptools_39.0.0.bb
+++ b/meta/recipes-devtools/python/python-setuptools_40.0.0.bb
diff --git a/meta/recipes-devtools/python/python-subunit.inc b/meta/recipes-devtools/python/python-subunit.inc
new file mode 100644
index 00000000000..afaaa51fa58
--- /dev/null
+++ b/meta/recipes-devtools/python/python-subunit.inc
@@ -0,0 +1,14 @@
+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
new file mode 100644
index 00000000000..1011c98a321
--- /dev/null
+++ b/meta/recipes-devtools/python/python-testtools.inc
@@ -0,0 +1,27 @@
+SUMMARY = "Extensions to the Python standard library unit testing framework"
+HOMEPAGE = "https://pypi.python.org/pypi/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"
+
+DEPENDS += " \
+ ${PYTHON_PN}-pbr \
+ "
+
+# Satisfy setup.py 'setup_requires'
+DEPENDS += " \
+ ${PYTHON_PN}-pbr-native \
+ "
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-extras \
+ ${PYTHON_PN}-pbr \
+ ${PYTHON_PN}-six \
+ "
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/python/python.inc b/meta/recipes-devtools/python/python.inc
index 979b601bf1b..901acd02196 100644
--- a/meta/recipes-devtools/python/python.inc
+++ b/meta/recipes-devtools/python/python.inc
@@ -5,12 +5,12 @@ 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=f741e51de91d4eeea5930b9c3c7fa69d"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f257cc14f81685691652a3d3e1b5d754"
SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz"
-SRC_URI[md5sum] = "1f6db41ad91d9eb0a6f0c769b8613c5b"
-SRC_URI[sha256sum] = "71ffb26e09e78650e424929b2b457b9c912ac216576e6bd9e7d204ed03296a66"
+SRC_URI[md5sum] = "a80ae3cc478460b922242f43a1b4094d"
+SRC_URI[sha256sum] = "22d9b1ac5b26135ad2b8c2901a9413537e08749a753356ee913c84dbd2df5574"
# python recipe is actually python 2.x
# also, exclude pre-releases for both python 2.x and 3.x
@@ -33,6 +33,12 @@ EXTRA_OECONF = "\
${PYTHONLSBOPTS} \
"
+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' \
diff --git a/meta/recipes-devtools/python/python/create_manifest2.py b/meta/recipes-devtools/python/python/create_manifest2.py
index e7450452ba5..87999991d73 100644
--- a/meta/recipes-devtools/python/python/create_manifest2.py
+++ b/meta/recipes-devtools/python/python/create_manifest2.py
@@ -37,6 +37,7 @@ 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'
@@ -45,7 +46,7 @@ for p in sys.path:
nativelibfolder=p[:p.find(pivot)+len(pivot)]
# Empty dict to hold the whole manifest
-new_manifest = {}
+new_manifest = collections.OrderedDict()
# Check for repeated files, folders and wildcards
allfiles=[]
@@ -63,7 +64,7 @@ def isFolder(value):
# Read existing JSON manifest
with open('python2-manifest.json') as manifest:
- old_manifest=json.load(manifest)
+ old_manifest = json.load(manifest, object_pairs_hook=collections.OrderedDict)
# First pass to get core-package functionality, because we base everything on the fact that core is actually working
@@ -124,18 +125,19 @@ for key in old_manifest:
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]={}
- new_manifest[key]['files']=[]
+ 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')
- new_manifest[key]['summary']=old_manifest[key]['summary']
+ 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', 'dev']
+ 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]
@@ -274,4 +276,4 @@ for key in new_manifest:
# Create the manifest from the data structure that was built
with open('python2-manifest.json.new','w') as outfile:
- json.dump(new_manifest,outfile,sort_keys=True, indent=4, separators=(',', ': '))
+ json.dump(new_manifest,outfile, indent=4)
diff --git a/meta/recipes-devtools/python/python/multilib.patch b/meta/recipes-devtools/python/python/multilib.patch
index 1116dd518e4..d24bc15f013 100644
--- a/meta/recipes-devtools/python/python/multilib.patch
+++ b/meta/recipes-devtools/python/python/multilib.patch
@@ -11,7 +11,7 @@ Index: Python-2.7.14/configure.ac
+AC_SUBST(LIB)
+AC_MSG_CHECKING(LIB)
-+LIB=`basename ${libdir}`
++LIB="SEDMELIBLEAF"
+AC_MSG_RESULT($LIB)
AC_SUBST(LIBRARY)
diff --git a/meta/recipes-devtools/python/python/python2-manifest.json b/meta/recipes-devtools/python/python/python2-manifest.json
index 723e5138e20..260fa6f80d2 100644
--- a/meta/recipes-devtools/python/python/python2-manifest.json
+++ b/meta/recipes-devtools/python/python/python2-manifest.json
@@ -1,1047 +1,1046 @@
{
- "2to3": {
+ "tests": {
+ "summary": "Python test suite",
+ "rdepends": [
+ "core",
+ "modules"
+ ],
"files": [
- "${bindir}/2to3",
- "${libdir}/python2.7/lib2to3"
- ],
+ "${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"
- ],
- "summary": "Python automated Python 2 to 3 code translator"
- },
- "argparse": {
+ ],
"files": [
- "${libdir}/python2.7/argparse.py"
- ],
+ "${bindir}/2to3",
+ "${libdir}/python2.7/lib2to3"
+ ]
+ },
+ "argparse": {
+ "summary": "Python command line argument parser",
"rdepends": [
- "codecs",
- "core",
- "lang",
+ "codecs",
+ "core",
+ "lang",
"textutils"
- ],
- "summary": "Python command line argument parser"
- },
- "audio": {
+ ],
"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"
- ],
+ "${libdir}/python2.7/argparse.py"
+ ]
+ },
+ "audio": {
+ "summary": "Python Audio Handling",
"rdepends": [
- "core",
- "crypt",
- "fcntl",
- "io",
+ "core",
+ "crypt",
+ "fcntl",
+ "io",
"math"
- ],
- "summary": "Python Audio Handling"
- },
+ ],
+ "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": {
- "files": [
- "${libdir}/python2.7/bsddb",
- "${libdir}/python2.7/lib-dynload/_bsddb.so"
- ],
+ "summary": "Python bindings for the Berkeley Database",
"rdepends": [
"core"
- ],
- "summary": "Python bindings for the Berkeley Database"
- },
- "codecs": {
+ ],
"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"
- ],
+ "${libdir}/python2.7/bsddb",
+ "${libdir}/python2.7/lib-dynload/_bsddb.so"
+ ]
+ },
+ "codecs": {
+ "summary": "Python codec",
"rdepends": [
- "core",
- "io",
+ "core",
+ "io",
"lang"
- ],
- "summary": "Python codec"
- },
+ ],
+ "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": {
- "files": [
- "${libdir}/python2.7/compileall.py",
- "${libdir}/python2.7/py_compile.py"
- ],
+ "summary": "Python bytecode compilation support",
"rdepends": [
"core"
- ],
- "summary": "Python bytecode compilation support"
- },
- "compiler": {
+ ],
"files": [
- "${libdir}/python2.7/compiler"
- ],
+ "${libdir}/python2.7/compileall.py",
+ "${libdir}/python2.7/py_compile.py"
+ ]
+ },
+ "compiler": {
+ "summary": "Python compiler support",
"rdepends": [
- "core",
- "io",
+ "core",
+ "io",
"lang"
- ],
- "summary": "Python compiler support"
- },
- "compression": {
+ ],
"files": [
- "${libdir}/python2.7/gzip.py",
- "${libdir}/python2.7/lib-dynload/bz2.so",
- "${libdir}/python2.7/tarfile.py",
- "${libdir}/python2.7/zipfile.py"
- ],
+ "${libdir}/python2.7/compiler"
+ ]
+ },
+ "compression": {
+ "summary": "Python high-level compression support",
"rdepends": [
- "core",
- "io",
- "shell",
- "unixadmin",
+ "core",
+ "io",
+ "shell",
+ "unixadmin",
"zlib"
- ],
- "summary": "Python high-level compression support"
- },
- "contextlib": {
+ ],
"files": [
- "${libdir}/python2.7/contextlib.py"
- ],
+ "${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",
+ "core",
"lang"
- ],
- "summary": "Python utilities for with-statementcontexts."
- },
- "core": {
+ ],
"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/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"
- ],
- "rdepends": [],
- "summary": "Python interpreter and core modules"
- },
+ ]
+ },
"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/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"
- ],
- "summary": "Python basic cryptographic and hashing support"
- },
- "ctypes": {
+ ],
"files": [
- "${libdir}/python2.7/ctypes",
- "${libdir}/python2.7/lib-dynload/_ctypes.so",
+ "${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"
- ],
- "summary": "Python C types support"
- },
- "curses": {
+ ],
"files": [
- "${libdir}/python2.7/curses",
- "${libdir}/python2.7/lib-dynload/_curses.so",
+ "${libdir}/python2.7/curses",
+ "${libdir}/python2.7/lib-dynload/_curses.so",
"${libdir}/python2.7/lib-dynload/_curses_panel.so"
- ],
- "rdepends": [
- "core"
- ],
- "summary": "Python curses support"
- },
+ ]
+ },
"datetime": {
- "files": [
- "${libdir}/python2.7/_strptime.py",
- "${libdir}/python2.7/calendar.py",
- "${libdir}/python2.7/lib-dynload/datetime.so"
- ],
+ "summary": "Python calendar and time support",
"rdepends": [
- "codecs",
- "core",
+ "codecs",
+ "core",
"lang"
- ],
- "summary": "Python calendar and time support"
- },
- "db": {
+ ],
"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"
- ],
+ "${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",
+ "bsddb",
+ "core",
"gdbm"
- ],
- "summary": "Python file-based database support"
- },
- "debugger": {
+ ],
"files": [
- "${libdir}/python2.7/bdb.py",
- "${libdir}/python2.7/pdb.py"
- ],
+ "${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",
+ "core",
+ "io",
+ "lang",
+ "pprint",
"shell"
- ],
- "summary": "Python debugger"
- },
+ ],
+ "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",
+ "${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": {
- "files": [
- "${libdir}/python2.7/difflib.py"
- ],
+ "summary": "Python helpers for computing deltas between objects",
"rdepends": [
- "core",
+ "core",
"lang"
- ],
- "summary": "Python helpers for computing deltas between objects"
- },
- "distutils": {
+ ],
"files": [
- "${libdir}/python2.7/config",
- "${libdir}/python2.7/distutils"
- ],
- "rdepends": [
- "core"
- ],
- "summary": "Python Distribution Utilities"
- },
+ "${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"
- ],
- "rdepends": [
- "core",
- "crypt",
- "debugger",
- "difflib",
- "fcntl",
- "io",
- "lang",
- "math",
- "pprint",
- "shell",
- "unittest"
- ],
- "summary": "Python framework for running examples in docstrings"
- },
+ ]
+ },
"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/email",
"${libdir}/python2.7/imaplib.py"
- ],
- "rdepends": [
- "contextlib",
- "core",
- "crypt",
- "fcntl",
- "io",
- "lang",
- "math",
- "netclient",
- "pickle",
- "subprocess",
- "textutils"
- ],
- "summary": "Python email support"
- },
+ ]
+ },
"fcntl": {
+ "summary": "Python's fcntl interface",
+ "rdepends": [
+ "core"
+ ],
"files": [
"${libdir}/python2.7/lib-dynload/fcntl.so"
- ],
+ ]
+ },
+ "gdbm": {
+ "summary": "Python GNU database support",
"rdepends": [
"core"
- ],
- "summary": "Python's fcntl interface"
- },
- "gdbm": {
+ ],
"files": [
"${libdir}/python2.7/lib-dynload/gdbm.so"
- ],
+ ]
+ },
+ "hotshot": {
+ "summary": "Python hotshot performance profiler",
"rdepends": [
"core"
- ],
- "summary": "Python GNU database support"
- },
- "hotshot": {
+ ],
"files": [
- "${libdir}/python2.7/hotshot",
+ "${libdir}/python2.7/hotshot",
"${libdir}/python2.7/lib-dynload/_hotshot.so"
- ],
+ ]
+ },
+ "html": {
+ "summary": "Python HTML processing support",
"rdepends": [
"core"
- ],
- "summary": "Python hotshot performance profiler"
- },
- "html": {
+ ],
"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/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"
- ],
- "summary": "Python HTML processing support"
- },
- "idle": {
+ ],
"files": [
- "${bindir}/idle",
+ "${bindir}/idle",
"${libdir}/python2.7/idlelib"
- ],
+ ]
+ },
+ "image": {
+ "summary": "Python graphical image handling",
"rdepends": [
"core"
- ],
- "summary": "Python Integrated Development Environment"
- },
- "image": {
+ ],
"files": [
- "${libdir}/python2.7/colorsys.py",
+ "${libdir}/python2.7/colorsys.py",
"${libdir}/python2.7/imghdr.py"
- ],
- "rdepends": [
- "core"
- ],
- "summary": "Python graphical image handling"
- },
+ ]
+ },
"io": {
- "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"
- ],
- "rdepends": [
- "contextlib",
- "core",
- "crypt",
- "fcntl",
- "lang",
- "math",
- "netclient",
+ "summary": "Python low-level I/O",
+ "rdepends": [
+ "contextlib",
+ "core",
+ "crypt",
+ "fcntl",
+ "lang",
+ "math",
+ "netclient",
"textutils"
- ],
- "summary": "Python low-level I/O"
- },
+ ],
+ "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": {
- "files": [
- "${libdir}/python2.7/json",
- "${libdir}/python2.7/lib-dynload/_json.so"
- ],
+ "summary": "Python JSON support",
"rdepends": [
"core"
- ],
- "summary": "Python JSON support"
- },
- "lang": {
+ ],
"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"
- ],
+ "${libdir}/python2.7/json",
+ "${libdir}/python2.7/lib-dynload/_json.so"
+ ]
+ },
+ "lang": {
+ "summary": "Python low-level language support",
"rdepends": [
"core"
- ],
- "summary": "Python low-level language support"
- },
+ ],
+ "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": {
- "files": [
- "${libdir}/python2.7/logging"
- ],
+ "summary": "Python logging support",
"rdepends": [
- "core",
- "io",
+ "core",
+ "io",
"threading"
- ],
- "summary": "Python logging support"
- },
+ ],
+ "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"
- ],
- "rdepends": [
- "codecs",
- "contextlib",
- "core",
- "crypt",
- "datetime",
- "email",
- "fcntl",
- "io",
- "lang",
- "math",
- "mime",
- "netclient",
- "textutils"
- ],
- "summary": "Python mailbox format support"
- },
+ ]
+ },
"math": {
- "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"
- ],
+ "summary": "Python math support",
"rdepends": [
- "core",
+ "core",
"crypt"
- ],
- "summary": "Python math support"
- },
+ ],
+ "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/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"
- ],
- "rdepends": [
- "contextlib",
- "core",
- "crypt",
- "fcntl",
- "io",
- "lang",
- "math",
- "netclient",
- "textutils"
- ],
- "summary": "Python MIME handling APIs"
- },
+ ]
+ },
"mmap": {
- "files": [
- "${libdir}/python2.7/lib-dynload/mmap.so"
- ],
+ "summary": "Python memory-mapped file support",
"rdepends": [
"core"
- ],
- "summary": "Python memory-mapped file support"
- },
+ ],
+ "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",
+ "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": {
- "files": [
- "${libdir}/python2.7/lib-dynload/_multiprocessing.so",
- "${libdir}/python2.7/multiprocessing"
- ],
+ "summary": "Python multiprocessing support",
"rdepends": [
- "core",
- "fcntl",
- "io",
- "pickle",
- "subprocess",
+ "core",
+ "fcntl",
+ "io",
+ "pickle",
+ "subprocess",
"threading"
- ],
- "summary": "Python multiprocessing support"
- },
- "netclient": {
+ ],
"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"
- ],
- "rdepends": [
- "codecs",
- "contextlib",
- "core",
- "crypt",
- "ctypes",
- "datetime",
- "email",
- "fcntl",
- "io",
- "lang",
- "math",
- "mime",
- "pickle",
- "subprocess",
- "textutils",
+ "${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"
- ],
- "summary": "Python Internet Protocol clients"
- },
+ ],
+ "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/BaseHTTPServer.py",
+ "${libdir}/python2.7/CGIHTTPServer.py",
+ "${libdir}/python2.7/SimpleHTTPServer.py",
+ "${libdir}/python2.7/SocketServer.py",
"${libdir}/python2.7/cgi.py"
- ],
- "rdepends": [
- "compression",
- "contextlib",
- "core",
- "crypt",
- "fcntl",
- "io",
- "lang",
- "math",
- "mime",
- "netclient",
- "shell",
- "textutils",
- "threading",
- "unixadmin",
- "zlib"
- ],
- "summary": "Python Internet Protocol servers"
- },
+ ]
+ },
"numbers": {
- "files": [
- "${libdir}/python2.7/decimal.py",
- "${libdir}/python2.7/fractions.py",
- "${libdir}/python2.7/numbers.py"
- ],
+ "summary": "Python number APIs",
"rdepends": [
- "codecs",
- "core",
- "lang",
- "math",
+ "codecs",
+ "core",
+ "lang",
+ "math",
"threading"
- ],
- "summary": "Python number APIs"
- },
- "pickle": {
+ ],
"files": [
- "${libdir}/python2.7/lib-dynload/cPickle.so",
- "${libdir}/python2.7/pickle.py",
- "${libdir}/python2.7/pickletools.py",
- "${libdir}/python2.7/shelve.py"
- ],
+ "${libdir}/python2.7/decimal.py",
+ "${libdir}/python2.7/fractions.py",
+ "${libdir}/python2.7/numbers.py"
+ ]
+ },
+ "pickle": {
+ "summary": "Python serialisation/persistence support",
"rdepends": [
- "core",
+ "core",
"io"
- ],
- "summary": "Python serialisation/persistence support"
- },
- "pkgutil": {
+ ],
"files": [
- "${libdir}/python2.7/pkgutil.py"
- ],
+ "${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"
- ],
- "summary": "Python package extension utility support"
- },
+ ],
+ "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",
- "datetime",
+ "core",
"io"
- ],
- "summary": "Generate and parse Mac OS X .plist files"
- },
- "pprint": {
+ ],
"files": [
"${libdir}/python2.7/pprint.py"
- ],
- "rdepends": [
- "core",
- "io"
- ],
- "summary": "Python pretty-print support"
- },
+ ]
+ },
"profile": {
- "files": [
- "${libdir}/python2.7/cProfile.py",
- "${libdir}/python2.7/lib-dynload/_lsprof.so",
- "${libdir}/python2.7/profile.py",
- "${libdir}/python2.7/pstats.py"
- ],
+ "summary": "Python basic performance profiling support",
"rdepends": [
- "codecs",
- "core",
- "lang",
- "resource",
+ "codecs",
+ "core",
+ "lang",
+ "resource",
"textutils"
- ],
- "summary": "Python basic performance profiling support"
- },
- "pydoc": {
+ ],
"files": [
- "${bindir}/pydoc",
- "${libdir}/python2.7/pydoc.py",
- "${libdir}/python2.7/pydoc_data"
- ],
+ "${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",
+ "codecs",
+ "core",
+ "lang",
"pkgutil"
- ],
- "summary": "Python interactive help support"
- },
+ ],
+ "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"
- ],
- "summary": "Python Regular Expression APIs"
- },
- "resource": {
+ ],
"files": [
"${libdir}/python2.7/lib-dynload/resource.so"
- ],
- "rdepends": [
- "core"
- ],
- "summary": "Python resource control interface"
- },
+ ]
+ },
"robotparser": {
- "files": [
- "${libdir}/python2.7/robotparser.py"
- ],
+ "summary": "Python robots.txt parser",
"rdepends": [
- "contextlib",
- "core",
- "io",
- "lang",
- "netclient",
+ "contextlib",
+ "core",
+ "io",
+ "lang",
+ "netclient",
"textutils"
- ],
- "summary": "Python robots.txt parser"
- },
- "runpy": {
+ ],
"files": [
- "${libdir}/python2.7/runpy.py"
- ],
+ "${libdir}/python2.7/robotparser.py"
+ ]
+ },
+ "runpy": {
+ "summary": "Python helper for locating/executing scripts in module namespace",
"rdepends": [
- "core",
+ "core",
"pkgutil"
- ],
- "summary": "Python helper for locating/executing scripts in module namespace"
- },
- "shell": {
+ ],
"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"
- ],
+ "${libdir}/python2.7/runpy.py"
+ ]
+ },
+ "shell": {
+ "summary": "Python shell-like functionality",
"rdepends": [
- "compression",
- "core",
- "io",
- "unixadmin",
+ "compression",
+ "core",
+ "io",
+ "unixadmin",
"zlib"
- ],
- "summary": "Python shell-like functionality"
- },
+ ],
+ "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": {
- "files": [
- "${bindir}/smtpd.py",
- "${libdir}/python2.7/asynchat.py",
- "${libdir}/python2.7/asyncore.py",
- "${libdir}/python2.7/smtpd.py"
- ],
+ "summary": "Python Simple Mail Transport Daemon",
"rdepends": [
- "core",
- "fcntl",
- "io",
+ "core",
+ "fcntl",
+ "io",
"lang"
- ],
- "summary": "Python Simple Mail Transport Daemon"
- },
+ ],
+ "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/lib-dynload/_sqlite3.so",
+ "${libdir}/python2.7/sqlite3"
+ ]
+ },
+ "stringold": {
+ "summary": "Python string APIs [deprecated]",
"rdepends": [
"core"
- ],
- "summary": "Python Sqlite3 database support"
- },
- "sqlite3-tests": {
- "files": [
- "${libdir}/python2.7/sqlite3/test"
- ],
- "rdepends": [
- "core",
- "tests"
- ],
- "summary": "Python Sqlite3 database support tests"
- },
- "stringold": {
+ ],
"files": [
"${libdir}/python2.7/stringold.py"
- ],
- "rdepends": [
- "core"
- ],
- "summary": "Python string APIs [deprecated]"
- },
+ ]
+ },
"subprocess": {
+ "summary": "Python subprocess support",
+ "rdepends": [
+ "core",
+ "fcntl",
+ "io",
+ "pickle",
+ "threading"
+ ],
"files": [
"${libdir}/python2.7/subprocess.py"
- ],
- "rdepends": [
- "core",
- "fcntl",
- "io",
- "pickle"
- ],
- "summary": "Python subprocess support"
- },
+ ]
+ },
"syslog": {
- "files": [
- "${libdir}/python2.7/lib-dynload/syslog.so"
- ],
+ "summary": "Python syslog interface",
"rdepends": [
"core"
- ],
- "summary": "Python syslog interface"
- },
- "terminal": {
+ ],
"files": [
- "${libdir}/python2.7/pty.py",
- "${libdir}/python2.7/tty.py"
- ],
+ "${libdir}/python2.7/lib-dynload/syslog.so"
+ ]
+ },
+ "terminal": {
+ "summary": "Python terminal controlling support",
"rdepends": [
- "core",
+ "core",
"io"
- ],
- "summary": "Python terminal controlling support"
- },
- "tests": {
+ ],
"files": [
- "${libdir}/python2.7/test"
- ],
- "rdepends": [
- "core"
- ],
- "summary": "Python tests"
- },
+ "${libdir}/python2.7/pty.py",
+ "${libdir}/python2.7/tty.py"
+ ]
+ },
"textutils": {
- "files": [
- "${libdir}/python2.7/csv.py",
- "${libdir}/python2.7/lib-dynload/_csv.so",
- "${libdir}/python2.7/optparse.py",
- "${libdir}/python2.7/textwrap.py"
- ],
+ "summary": "Python option parsin",
"rdepends": [
- "codecs",
- "core",
- "io",
+ "codecs",
+ "core",
+ "io",
"lang"
- ],
- "summary": "Python option parsin"
- },
+ ],
+ "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/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"
- ],
- "summary": "Python threading & synchronization support"
- },
- "tkinter": {
+ ],
"files": [
"${libdir}/python2.7/lib-tk"
- ],
- "rdepends": [
- "core"
- ],
- "summary": "Python Tcl/Tk bindings"
- },
+ ]
+ },
"unittest": {
- "files": [
- "${libdir}/python2.7/unittest"
- ],
+ "summary": "Python unit testing framework",
"rdepends": [
- "core",
- "difflib",
- "io",
- "lang",
- "pprint",
+ "core",
+ "difflib",
+ "io",
+ "lang",
+ "pprint",
"shell"
- ],
- "summary": "Python unit testing framework"
- },
- "unixadmin": {
+ ],
"files": [
- "${libdir}/python2.7/getpass.py",
- "${libdir}/python2.7/lib-dynload/grp.so",
- "${libdir}/python2.7/lib-dynload/nis.so"
- ],
+ "${libdir}/python2.7/unittest"
+ ]
+ },
+ "unixadmin": {
+ "summary": "Python Unix administration support",
"rdepends": [
- "core",
+ "core",
"io"
- ],
- "summary": "Python Unix administration support"
- },
- "xml": {
+ ],
"files": [
- "${libdir}/python2.7/lib-dynload/_elementtree.so",
- "${libdir}/python2.7/lib-dynload/pyexpat.so",
- "${libdir}/python2.7/xml"
- ],
+ "${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"
- ],
- "summary": "Python basic XML support"
- },
+ ],
+ "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/DocXMLRPCServer.py",
"${libdir}/python2.7/SimpleXMLRPCServer.py"
- ],
- "rdepends": [
- "codecs",
- "compression",
- "contextlib",
- "core",
- "crypt",
- "datetime",
- "fcntl",
- "io",
- "lang",
- "math",
- "mime",
- "netclient",
- "netserver",
- "pkgutil",
- "pydoc",
- "textutils",
- "threading",
- "xml",
- "zlib"
- ],
- "summary": "Python XML-RPC support"
- },
+ ]
+ },
"zlib": {
- "files": [
- "${libdir}/python2.7/lib-dynload/zlib.so"
- ],
+ "summary": "Python zlib compression support",
"rdepends": [
"core"
- ],
- "summary": "Python zlib compression support"
+ ],
+ "files": [
+ "${libdir}/python2.7/lib-dynload/zlib.so"
+ ]
}
-}
+} \ No newline at end of file
diff --git a/meta/recipes-devtools/python/python3-dbus_1.2.6.bb b/meta/recipes-devtools/python/python3-dbus_1.2.8.bb
index 19cbae91a48..c9bf8df42d5 100644
--- a/meta/recipes-devtools/python/python3-dbus_1.2.6.bb
+++ b/meta/recipes-devtools/python/python3-dbus_1.2.8.bb
@@ -8,15 +8,16 @@ DEPENDS = "expat dbus dbus-glib virtual/libintl"
SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.gz \
"
-RSRC_URI[md5sum] = "1ce1ddf2582060f8f971652ea54cc17e"
-SRC_URI[sha256sum] = "32f29c17172cdb9cb61c68b1f1a71dfe7351506fc830869029c47449bd04faeb"
+SRC_URI[md5sum] = "7379db774c10904f27e7e2743d90fb43"
+SRC_URI[sha256sum] = "abf12bbb765e300bf8e2a1b2f32f85949eab06998dbda127952c31cb63957b6f"
S = "${WORKDIR}/dbus-python-${PV}"
inherit distutils3-base autotools pkgconfig
-PACKAGECONFIG ?= ""
-PACKAGECONFIG[docs] = "--enable-html-docs,--disable-html-docs,python3-docutils-native"
-PACKAGECONFIG[api-docs] = "--enable-api-docs,--disable-api-docs,python3-docutils-native python3-epydoc-native"
+# 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"
diff --git a/meta/recipes-devtools/python/python3-extras_1.0.0.bb b/meta/recipes-devtools/python/python3-extras_1.0.0.bb
new file mode 100644
index 00000000000..76f87f26409
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-extras_1.0.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-extras.inc
diff --git a/meta/recipes-devtools/python/python3-git_2.1.8.bb b/meta/recipes-devtools/python/python3-git_2.1.11.bb
index ac320fa56bb..ac320fa56bb 100644
--- a/meta/recipes-devtools/python/python3-git_2.1.8.bb
+++ b/meta/recipes-devtools/python/python3-git_2.1.11.bb
diff --git a/meta/recipes-devtools/python/python3-gitdb_2.0.3.bb b/meta/recipes-devtools/python/python3-gitdb_2.0.4.bb
index fe158327cbe..fe158327cbe 100644
--- a/meta/recipes-devtools/python/python3-gitdb_2.0.3.bb
+++ b/meta/recipes-devtools/python/python3-gitdb_2.0.4.bb
diff --git a/meta/recipes-devtools/python/python3-native_3.5.5.bb b/meta/recipes-devtools/python/python3-native_3.5.6.bb
index 962ccfcc4c5..d5953cf4bbe 100644
--- a/meta/recipes-devtools/python/python3-native_3.5.5.bb
+++ b/meta/recipes-devtools/python/python3-native_3.5.6.bb
@@ -1,13 +1,10 @@
-require recipes-devtools/python/python.inc
+require recipes-devtools/python/python3.inc
-PR = "${INC_PR}.0"
-PYTHON_MAJMIN = "3.5"
DISTRO_SRC_URI ?= "file://sitecustomize.py"
DISTRO_SRC_URI_linuxstdbase = ""
SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
file://12-distutils-prefix-is-inside-staging-area.patch \
file://python-config.patch \
-file://0001-cross-compile-support.patch \
file://030-fixup-include-dirs.patch \
file://070-dont-clean-ipkg-install.patch \
file://080-distutils-dont_adjust_files.patch \
@@ -16,7 +13,6 @@ file://150-fix-setupterm.patch \
file://python-3.3-multilib.patch \
file://03-fix-tkinter-detection.patch \
file://avoid_warning_about_tkinter.patch \
-file://shutil-follow-symlink-fix.patch \
file://0001-h2py-Fix-issue-13032-where-it-fails-with-UnicodeDeco.patch \
file://sysroot-include-headers.patch \
file://unixccompiler.patch \
@@ -25,18 +21,14 @@ file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch \
file://setup.py-check-cross_compiling-when-get-FLAGS.patch \
file://0001-Do-not-use-the-shell-version-of-python-config-that-w.patch \
file://support_SOURCE_DATE_EPOCH_in_py_compile.patch \
+file://regen-all.patch \
+file://0001-Issue-28043-SSLContext-has-improved-default-settings.patch \
+file://0002-bpo-29136-Add-TLS-1.3-cipher-suites-and-OP_NO_TLSv1_.patch \
+file://0003-bpo-32947-Fixes-for-TLS-1.3-and-OpenSSL-1.1.1-GH-876.patch \
+file://0004-bpo-33570-TLS-1.3-ciphers-for-OpenSSL-1.1.1-GH-6976.patch \
+file://0005-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-2305.patch \
"
-SRC_URI[md5sum] = "f3763edf9824d5d3a15f5f646083b6e0"
-SRC_URI[sha256sum] = "063d2c3b0402d6191b90731e0f735c64830e7522348aeb7ed382a83165d45009"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b6ec515b22618f55fa07276b897bacea"
-
-# exclude pre-releases for both python 2.x and 3.x
-UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
-
-S = "${WORKDIR}/Python-${PV}"
-
EXTRANATIVEPATH += "bzip2-native"
DEPENDS = "openssl-native bzip2-replacement-native zlib-native readline-native sqlite3-native gdbm-native"
@@ -52,9 +44,6 @@ EXTRA_OEMAKE = '\
ARCH=${TARGET_ARCH} \
'
-# No ctypes option for python 3
-PYTHONLSBOPTS = ""
-
do_configure_append() {
autoreconf --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi
sed -i -e 's,#define HAVE_GETRANDOM 1,/\* #undef HAVE_GETRANDOM \*/,' ${B}/pyconfig.h
@@ -62,9 +51,9 @@ do_configure_append() {
# Regenerate all of the generated files
# This ensures that pgen and friends get created during the compile phase
+#
do_compile_prepend() {
- # Has to be done ahead of other regen- targets due to https://bugs.python.org/issue33080
- oe_runmake regen-importlib
+ # Assuming https://bugs.python.org/issue33080 has been addressed in Makefile.
oe_runmake regen-all
}
diff --git a/meta/recipes-devtools/python/python3-pbr_4.2.0.bb b/meta/recipes-devtools/python/python3-pbr_4.2.0.bb
new file mode 100644
index 00000000000..97e7361b169
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pbr_4.2.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-pbr.inc
diff --git a/meta/recipes-devtools/python/python3-pip_18.0.bb b/meta/recipes-devtools/python/python3-pip_18.0.bb
new file mode 100644
index 00000000000..3fcdb8014ac
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pip_18.0.bb
@@ -0,0 +1,30 @@
+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=593c6cd9d639307226978cbcae61ad4b"
+
+DEPENDS += "python3 python3-setuptools-native"
+
+SRC_URI[md5sum] = "52f75ceb21e96c258f289859a2996b60"
+SRC_URI[sha256sum] = "a0e11645ee37c90b40c46d607070c4fd583e2cd46231b1c06e389c5e814eed76"
+
+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 \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pip_9.0.2.bb b/meta/recipes-devtools/python/python3-pip_9.0.2.bb
deleted file mode 100644
index 53fd6dcf274..00000000000
--- a/meta/recipes-devtools/python/python3-pip_9.0.2.bb
+++ /dev/null
@@ -1,48 +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=25fba45109565f87de20bae85bc39452"
-
-DEPENDS += "python3 python3-setuptools-native"
-
-SRC_URI[md5sum] = "2fddd680422326b9d1fbf56112cf341d"
-SRC_URI[sha256sum] = "88110a224e9d30e5d76592a0b2130ef10e7e67a6426e8617bb918fffbfe91fe5"
-
-inherit pypi distutils3
-
-DISTUTILS_INSTALL_ARGS += "--install-lib=${D}${PYTHON_SITEPACKAGES_DIR}"
-
-do_install_prepend() {
- install -d ${D}${PYTHON_SITEPACKAGES_DIR}
-}
-
-# Use setuptools site.py instead, avoid shared state issue
-do_install_append() {
- rm ${D}${PYTHON_SITEPACKAGES_DIR}/site.py
- rm ${D}${PYTHON_SITEPACKAGES_DIR}/__pycache__/site.cpython-*.pyc
-
- # Install as pip3 and leave pip2 as default
- rm ${D}/${bindir}/pip
-
- # Installed eggs need to be passed directly to the interpreter via a pth file
- echo "./${PYPI_PACKAGE}-${PV}-py${PYTHON_BASEVERSION}.egg" > ${D}${PYTHON_SITEPACKAGES_DIR}/${PYPI_PACKAGE}-${PV}.pth
-
- # Make sure we use /usr/bin/env python3
- for PYTHSCRIPT in `grep -rIl ${bindir} ${D}${bindir}/pip3*`; do
- sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
- done
-}
-
-RDEPENDS_${PN} = "\
- python3-compile \
- python3-io \
- python3-html \
- python3-json \
- python3-netserver \
- python3-setuptools \
- python3-unixadmin \
- python3-xmlrpc \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pygobject_3.28.1.bb b/meta/recipes-devtools/python/python3-pygobject_3.28.3.bb
index 97286f4e80d..313af227b62 100644
--- a/meta/recipes-devtools/python/python3-pygobject_3.28.1.bb
+++ b/meta/recipes-devtools/python/python3-pygobject_3.28.3.bb
@@ -12,8 +12,8 @@ SRC_URI = " \
http://ftp.gnome.org/pub/GNOME/sources/${SRCNAME}/${@gnome_verdir("${PV}")}/${SRCNAME}-${PV}.tar.xz \
"
-SRC_URI[md5sum] = "612e9e2863d117d810e78672f7bc3ad6"
-SRC_URI[sha256sum] = "42312b4a5015571fa0a4f2d201005da46b71c251ea2625bc95702d071c4ff895"
+SRC_URI[md5sum] = "3bac63c86bb963aa401f97859464aa90"
+SRC_URI[sha256sum] = "3dd3e21015d06e00482ea665fc1733b77e754a6ab656a5db5d7f7bfaf31ad0b0"
S = "${WORKDIR}/${SRCNAME}-${PV}"
diff --git a/meta/recipes-devtools/python/python3-setuptools_39.0.0.bb b/meta/recipes-devtools/python/python3-setuptools_40.0.0.bb
index 0dc1ed86227..0dc1ed86227 100644
--- a/meta/recipes-devtools/python/python3-setuptools_39.0.0.bb
+++ b/meta/recipes-devtools/python/python3-setuptools_40.0.0.bb
diff --git a/meta/recipes-devtools/python/python3-subunit_1.3.0.bb b/meta/recipes-devtools/python/python3-subunit_1.3.0.bb
new file mode 100644
index 00000000000..2ece4451dfa
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-subunit_1.3.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-subunit.inc
diff --git a/meta/recipes-devtools/python/python3-testtools_2.3.0.bb b/meta/recipes-devtools/python/python3-testtools_2.3.0.bb
new file mode 100644
index 00000000000..896ecee65c5
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-testtools_2.3.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-testtools.inc
diff --git a/meta/recipes-devtools/python/python3.inc b/meta/recipes-devtools/python/python3.inc
new file mode 100644
index 00000000000..f565b3f1714
--- /dev/null
+++ b/meta/recipes-devtools/python/python3.inc
@@ -0,0 +1,43 @@
+SUMMARY = "The Python Programming Language"
+HOMEPAGE = "http://www.python.org"
+LICENSE = "PSFv2"
+SECTION = "devel/python"
+
+# TODO Remove this when we upgrade
+INC_PR = "r1"
+PR = "${INC_PR}.0"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b6ec515b22618f55fa07276b897bacea"
+
+# TODO consolidate patch set
+SRC_URI[md5sum] = "f5a99f765e765336a3ebbb2a24ca2be3"
+SRC_URI[sha256sum] = "f55cde04f521f273c7cba08912921cc5642cfc15ca7b22d5829f0aff4371155f"
+
+# 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.5"
+PYTHON_BINABI = "${PYTHON_MAJMIN}m"
+
+S = "${WORKDIR}/Python-${PV}"
+
+inherit autotools bluetooth 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)} \
+"
+
+PACKAGECONFIG[bluetooth] = ",ac_cv_header_bluetooth_bluetooth_h=no ac_cv_header_bluetooth_h=no,${BLUEZ}"
+
+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/python3/0001-Issue-28043-SSLContext-has-improved-default-settings.patch b/meta/recipes-devtools/python/python3/0001-Issue-28043-SSLContext-has-improved-default-settings.patch
new file mode 100644
index 00000000000..321b4afa12c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Issue-28043-SSLContext-has-improved-default-settings.patch
@@ -0,0 +1,272 @@
+From 758e7463c104f71b810c8588166747eeab6148d7 Mon Sep 17 00:00:00 2001
+From: Christian Heimes <christian@python.org>
+Date: Sat, 10 Sep 2016 22:43:48 +0200
+Subject: [PATCH 1/4] Issue 28043: SSLContext has improved default settings
+
+The options OP_NO_COMPRESSION, OP_CIPHER_SERVER_PREFERENCE, OP_SINGLE_DH_USE, OP_SINGLE_ECDH_USE, OP_NO_SSLv2 (except for PROTOCOL_SSLv2), and OP_NO_SSLv3 (except for PROTOCOL_SSLv3) are set by default. The initial cipher suite list contains only HIGH ciphers, no NULL ciphers and MD5 ciphers (except for PROTOCOL_SSLv2).
+
+Upstream-Status: Backport
+[https://github.com/python/cpython/commit/358cfd426ccc0fcd6a7940d306602138e76420ae]
+
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+---
+ Doc/library/ssl.rst | 9 ++++++-
+ Lib/ssl.py | 30 +++++----------------
+ Lib/test/test_ssl.py | 62 +++++++++++++++++++++++---------------------
+ Modules/_ssl.c | 31 ++++++++++++++++++++++
+ 4 files changed, 78 insertions(+), 54 deletions(-)
+
+diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst
+index a2f008346b..14f2d68217 100644
+--- a/Doc/library/ssl.rst
++++ b/Doc/library/ssl.rst
+@@ -1151,7 +1151,14 @@ to speed up repeated connections from the same clients.
+
+ .. versionchanged:: 3.5.3
+
+- :data:`PROTOCOL_TLS` is the default value.
++ The context is created with secure default values. The options
++ :data:`OP_NO_COMPRESSION`, :data:`OP_CIPHER_SERVER_PREFERENCE`,
++ :data:`OP_SINGLE_DH_USE`, :data:`OP_SINGLE_ECDH_USE`,
++ :data:`OP_NO_SSLv2` (except for :data:`PROTOCOL_SSLv2`),
++ and :data:`OP_NO_SSLv3` (except for :data:`PROTOCOL_SSLv3`) are
++ set by default. The initial cipher suite list contains only ``HIGH``
++ ciphers, no ``NULL`` ciphers and no ``MD5`` ciphers (except for
++ :data:`PROTOCOL_SSLv2`).
+
+
+ :class:`SSLContext` objects have the following methods and attributes:
+diff --git a/Lib/ssl.py b/Lib/ssl.py
+index e1913904f3..4d302a78fa 100644
+--- a/Lib/ssl.py
++++ b/Lib/ssl.py
+@@ -446,32 +446,16 @@ def create_default_context(purpose=Purpose.SERVER_AUTH, *, cafile=None,
+ if not isinstance(purpose, _ASN1Object):
+ raise TypeError(purpose)
+
++ # SSLContext sets OP_NO_SSLv2, OP_NO_SSLv3, OP_NO_COMPRESSION,
++ # OP_CIPHER_SERVER_PREFERENCE, OP_SINGLE_DH_USE and OP_SINGLE_ECDH_USE
++ # by default.
+ context = SSLContext(PROTOCOL_TLS)
+
+- # SSLv2 considered harmful.
+- context.options |= OP_NO_SSLv2
+-
+- # SSLv3 has problematic security and is only required for really old
+- # clients such as IE6 on Windows XP
+- context.options |= OP_NO_SSLv3
+-
+- # disable compression to prevent CRIME attacks (OpenSSL 1.0+)
+- context.options |= getattr(_ssl, "OP_NO_COMPRESSION", 0)
+-
+ if purpose == Purpose.SERVER_AUTH:
+ # verify certs and host name in client mode
+ context.verify_mode = CERT_REQUIRED
+ context.check_hostname = True
+ elif purpose == Purpose.CLIENT_AUTH:
+- # Prefer the server's ciphers by default so that we get stronger
+- # encryption
+- context.options |= getattr(_ssl, "OP_CIPHER_SERVER_PREFERENCE", 0)
+-
+- # Use single use keys in order to improve forward secrecy
+- context.options |= getattr(_ssl, "OP_SINGLE_DH_USE", 0)
+- context.options |= getattr(_ssl, "OP_SINGLE_ECDH_USE", 0)
+-
+- # disallow ciphers with known vulnerabilities
+ context.set_ciphers(_RESTRICTED_SERVER_CIPHERS)
+
+ if cafile or capath or cadata:
+@@ -497,12 +481,10 @@ def _create_unverified_context(protocol=PROTOCOL_TLS, *, cert_reqs=None,
+ if not isinstance(purpose, _ASN1Object):
+ raise TypeError(purpose)
+
++ # SSLContext sets OP_NO_SSLv2, OP_NO_SSLv3, OP_NO_COMPRESSION,
++ # OP_CIPHER_SERVER_PREFERENCE, OP_SINGLE_DH_USE and OP_SINGLE_ECDH_USE
++ # by default.
+ context = SSLContext(protocol)
+- # SSLv2 considered harmful.
+- context.options |= OP_NO_SSLv2
+- # SSLv3 has problematic security and is only required for really old
+- # clients such as IE6 on Windows XP
+- context.options |= OP_NO_SSLv3
+
+ if cert_reqs is not None:
+ context.verify_mode = cert_reqs
+diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
+index ffb7314f57..f91af7bd05 100644
+--- a/Lib/test/test_ssl.py
++++ b/Lib/test/test_ssl.py
+@@ -73,6 +73,12 @@ NULLBYTECERT = data_file("nullbytecert.pem")
+ DHFILE = data_file("dh1024.pem")
+ BYTES_DHFILE = os.fsencode(DHFILE)
+
++# Not defined in all versions of OpenSSL
++OP_NO_COMPRESSION = getattr(ssl, "OP_NO_COMPRESSION", 0)
++OP_SINGLE_DH_USE = getattr(ssl, "OP_SINGLE_DH_USE", 0)
++OP_SINGLE_ECDH_USE = getattr(ssl, "OP_SINGLE_ECDH_USE", 0)
++OP_CIPHER_SERVER_PREFERENCE = getattr(ssl, "OP_CIPHER_SERVER_PREFERENCE", 0)
++
+
+ def handle_error(prefix):
+ exc_format = ' '.join(traceback.format_exception(*sys.exc_info()))
+@@ -839,8 +845,9 @@ class ContextTests(unittest.TestCase):
+ ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
+ # OP_ALL | OP_NO_SSLv2 | OP_NO_SSLv3 is the default value
+ default = (ssl.OP_ALL | ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3)
+- if not IS_LIBRESSL and ssl.OPENSSL_VERSION_INFO >= (1, 1, 0):
+- default |= ssl.OP_NO_COMPRESSION
++ # SSLContext also enables these by default
++ default |= (OP_NO_COMPRESSION | OP_CIPHER_SERVER_PREFERENCE |
++ OP_SINGLE_DH_USE | OP_SINGLE_ECDH_USE)
+ self.assertEqual(default, ctx.options)
+ ctx.options |= ssl.OP_NO_TLSv1
+ self.assertEqual(default | ssl.OP_NO_TLSv1, ctx.options)
+@@ -1205,16 +1212,29 @@ class ContextTests(unittest.TestCase):
+ stats["x509"] += 1
+ self.assertEqual(ctx.cert_store_stats(), stats)
+
++ def _assert_context_options(self, ctx):
++ self.assertEqual(ctx.options & ssl.OP_NO_SSLv2, ssl.OP_NO_SSLv2)
++ if OP_NO_COMPRESSION != 0:
++ self.assertEqual(ctx.options & OP_NO_COMPRESSION,
++ OP_NO_COMPRESSION)
++ if OP_SINGLE_DH_USE != 0:
++ self.assertEqual(ctx.options & OP_SINGLE_DH_USE,
++ OP_SINGLE_DH_USE)
++ if OP_SINGLE_ECDH_USE != 0:
++ self.assertEqual(ctx.options & OP_SINGLE_ECDH_USE,
++ OP_SINGLE_ECDH_USE)
++ if OP_CIPHER_SERVER_PREFERENCE != 0:
++ self.assertEqual(ctx.options & OP_CIPHER_SERVER_PREFERENCE,
++ OP_CIPHER_SERVER_PREFERENCE)
++
+ def test_create_default_context(self):
+ ctx = ssl.create_default_context()
++
+ self.assertEqual(ctx.protocol, ssl.PROTOCOL_SSLv23)
+ self.assertEqual(ctx.verify_mode, ssl.CERT_REQUIRED)
+ self.assertTrue(ctx.check_hostname)
+- self.assertEqual(ctx.options & ssl.OP_NO_SSLv2, ssl.OP_NO_SSLv2)
+- self.assertEqual(
+- ctx.options & getattr(ssl, "OP_NO_COMPRESSION", 0),
+- getattr(ssl, "OP_NO_COMPRESSION", 0),
+- )
++ self._assert_context_options(ctx)
++
+
+ with open(SIGNING_CA) as f:
+ cadata = f.read()
+@@ -1222,40 +1242,24 @@ class ContextTests(unittest.TestCase):
+ cadata=cadata)
+ self.assertEqual(ctx.protocol, ssl.PROTOCOL_SSLv23)
+ self.assertEqual(ctx.verify_mode, ssl.CERT_REQUIRED)
+- self.assertEqual(ctx.options & ssl.OP_NO_SSLv2, ssl.OP_NO_SSLv2)
+- self.assertEqual(
+- ctx.options & getattr(ssl, "OP_NO_COMPRESSION", 0),
+- getattr(ssl, "OP_NO_COMPRESSION", 0),
+- )
++ self._assert_context_options(ctx)
+
+ ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
+ self.assertEqual(ctx.protocol, ssl.PROTOCOL_SSLv23)
+ self.assertEqual(ctx.verify_mode, ssl.CERT_NONE)
+- self.assertEqual(ctx.options & ssl.OP_NO_SSLv2, ssl.OP_NO_SSLv2)
+- self.assertEqual(
+- ctx.options & getattr(ssl, "OP_NO_COMPRESSION", 0),
+- getattr(ssl, "OP_NO_COMPRESSION", 0),
+- )
+- self.assertEqual(
+- ctx.options & getattr(ssl, "OP_SINGLE_DH_USE", 0),
+- getattr(ssl, "OP_SINGLE_DH_USE", 0),
+- )
+- self.assertEqual(
+- ctx.options & getattr(ssl, "OP_SINGLE_ECDH_USE", 0),
+- getattr(ssl, "OP_SINGLE_ECDH_USE", 0),
+- )
++ self._assert_context_options(ctx)
+
+ def test__create_stdlib_context(self):
+ ctx = ssl._create_stdlib_context()
+ self.assertEqual(ctx.protocol, ssl.PROTOCOL_SSLv23)
+ self.assertEqual(ctx.verify_mode, ssl.CERT_NONE)
+ self.assertFalse(ctx.check_hostname)
+- self.assertEqual(ctx.options & ssl.OP_NO_SSLv2, ssl.OP_NO_SSLv2)
++ self._assert_context_options(ctx)
+
+ ctx = ssl._create_stdlib_context(ssl.PROTOCOL_TLSv1)
+ self.assertEqual(ctx.protocol, ssl.PROTOCOL_TLSv1)
+ self.assertEqual(ctx.verify_mode, ssl.CERT_NONE)
+- self.assertEqual(ctx.options & ssl.OP_NO_SSLv2, ssl.OP_NO_SSLv2)
++ self._assert_context_options(ctx)
+
+ ctx = ssl._create_stdlib_context(ssl.PROTOCOL_TLSv1,
+ cert_reqs=ssl.CERT_REQUIRED,
+@@ -1263,12 +1267,12 @@ class ContextTests(unittest.TestCase):
+ self.assertEqual(ctx.protocol, ssl.PROTOCOL_TLSv1)
+ self.assertEqual(ctx.verify_mode, ssl.CERT_REQUIRED)
+ self.assertTrue(ctx.check_hostname)
+- self.assertEqual(ctx.options & ssl.OP_NO_SSLv2, ssl.OP_NO_SSLv2)
++ self._assert_context_options(ctx)
+
+ ctx = ssl._create_stdlib_context(purpose=ssl.Purpose.CLIENT_AUTH)
+ self.assertEqual(ctx.protocol, ssl.PROTOCOL_SSLv23)
+ self.assertEqual(ctx.verify_mode, ssl.CERT_NONE)
+- self.assertEqual(ctx.options & ssl.OP_NO_SSLv2, ssl.OP_NO_SSLv2)
++ self._assert_context_options(ctx)
+
+ def test_check_hostname(self):
+ ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
+diff --git a/Modules/_ssl.c b/Modules/_ssl.c
+index 86482677ae..0d5c121d2c 100644
+--- a/Modules/_ssl.c
++++ b/Modules/_ssl.c
+@@ -2330,6 +2330,7 @@ _ssl__SSLContext_impl(PyTypeObject *type, int proto_version)
+ PySSLContext *self;
+ long options;
+ SSL_CTX *ctx = NULL;
++ int result;
+ #if defined(SSL_MODE_RELEASE_BUFFERS)
+ unsigned long libver;
+ #endif
+@@ -2393,8 +2394,38 @@ _ssl__SSLContext_impl(PyTypeObject *type, int proto_version)
+ options |= SSL_OP_NO_SSLv2;
+ if (proto_version != PY_SSL_VERSION_SSL3)
+ options |= SSL_OP_NO_SSLv3;
++ /* Minimal security flags for server and client side context.
++ * Client sockets ignore server-side parameters. */
++#ifdef SSL_OP_NO_COMPRESSION
++ options |= SSL_OP_NO_COMPRESSION;
++#endif
++#ifdef SSL_OP_CIPHER_SERVER_PREFERENCE
++ options |= SSL_OP_CIPHER_SERVER_PREFERENCE;
++#endif
++#ifdef SSL_OP_SINGLE_DH_USE
++ options |= SSL_OP_SINGLE_DH_USE;
++#endif
++#ifdef SSL_OP_SINGLE_ECDH_USE
++ options |= SSL_OP_SINGLE_ECDH_USE;
++#endif
+ SSL_CTX_set_options(self->ctx, options);
+
++ /* A bare minimum cipher list without completly broken cipher suites.
++ * It's far from perfect but gives users a better head start. */
++ if (proto_version != PY_SSL_VERSION_SSL2) {
++ result = SSL_CTX_set_cipher_list(ctx, "HIGH:!aNULL:!eNULL:!MD5");
++ } else {
++ /* SSLv2 needs MD5 */
++ result = SSL_CTX_set_cipher_list(ctx, "HIGH:!aNULL:!eNULL");
++ }
++ if (result == 0) {
++ Py_DECREF(self);
++ ERR_clear_error();
++ PyErr_SetString(PySSLErrorObject,
++ "No cipher can be selected.");
++ return NULL;
++ }
++
+ #if defined(SSL_MODE_RELEASE_BUFFERS)
+ /* Set SSL_MODE_RELEASE_BUFFERS. This potentially greatly reduces memory
+ usage for no cost at all. However, don't do this for OpenSSL versions
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/python/python3/0001-cross-compile-support.patch b/meta/recipes-devtools/python/python3/0001-cross-compile-support.patch
deleted file mode 100644
index 7cd7e3b4906..00000000000
--- a/meta/recipes-devtools/python/python3/0001-cross-compile-support.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From ecde3ea170999a9ef734e8af4d7c25be5ba81697 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 31 Mar 2017 15:42:46 +0300
-Subject: [PATCH] cross-compile support
-
-We cross compile python. This patch uses tools from host/native
-python instead of in-tree tools
-
--Khem
-
-Rebased on 3.5.4
-
-Upstream-Status: Inappropriate[Configuration Specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-Signed-off-by: Derek Straka <derek@asterius.io>
----
- Makefile.pre.in | 14 ++++++++------
- 1 file changed, 8 insertions(+), 6 deletions(-)
-
-diff --git a/Makefile.pre.in b/Makefile.pre.in
-index 144c1f8629..f252ac2417 100644
---- a/Makefile.pre.in
-+++ b/Makefile.pre.in
-@@ -223,6 +223,7 @@ LIBOBJS= @LIBOBJS@
-
- PYTHON= python$(EXE)
- BUILDPYTHON= python$(BUILDEXE)
-+HOSTPYTHON= $(BUILDPYTHON)
-
- PYTHON_FOR_REGEN=@PYTHON_FOR_REGEN@
- PYTHON_FOR_BUILD=@PYTHON_FOR_BUILD@
-@@ -277,6 +278,7 @@ LIBFFI_INCLUDEDIR= @LIBFFI_INCLUDEDIR@
- ##########################################################################
- # Parser
- PGEN= Parser/pgen$(EXE)
-+HOSTPGEN= $(PGEN)$(EXE)
-
- PSRCS= \
- Parser/acceler.c \
-@@ -478,7 +480,7 @@ build_all_generate_profile:
-
- run_profile_task:
- : # FIXME: can't run for a cross build
-- $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK) || true
-+ $(LLVM_PROF_FILE) $(RUNSHARED) $(HOSTPYTHON) $(PROFILE_TASK) || true
-
- build_all_merge_profile:
- $(LLVM_PROF_MERGER)
-@@ -772,7 +774,7 @@ regen-grammar: $(PGEN)
- # 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
-
-@@ -978,7 +980,7 @@ $(LIBRARY_OBJS) $(MODOBJS) Programs/python.o: $(PYTHON_HEADERS)
- ######################################################################
-
- TESTOPTS= $(EXTRATESTOPTS)
--TESTPYTHON= $(RUNSHARED) ./$(BUILDPYTHON) $(TESTPYTHONOPTS)
-+TESTPYTHON= $(RUNSHARED) $(HOSTPYTHON) $(TESTPYTHONOPTS)
- TESTRUNNER= $(TESTPYTHON) $(srcdir)/Tools/scripts/run_tests.py
- TESTTIMEOUT= 3600
-
-@@ -1470,7 +1472,7 @@ frameworkinstallstructure: $(LDLIBRARY)
- fi; \
- done
- $(LN) -fsn include/python$(LDVERSION) $(DESTDIR)$(prefix)/Headers
-- sed 's/%VERSION%/'"`$(RUNSHARED) ./$(BUILDPYTHON) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(prefix)/Resources/Info.plist
-+ sed 's/%VERSION%/'"`$(RUNSHARED) $(HOSTPYTHON) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(prefix)/Resources/Info.plist
- $(LN) -fsn $(VERSION) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current
- $(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/$(PYTHONFRAMEWORK)
- $(LN) -fsn Versions/Current/Headers $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers
-@@ -1543,7 +1545,7 @@ Python/dtoa.o: Python/dtoa.c
-
- # Run reindent on the library
- reindent:
-- ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/reindent.py -r $(srcdir)/Lib
-+ $(HOSTPYTHON) $(srcdir)/Tools/scripts/reindent.py -r $(srcdir)/Lib
-
- # Rerun configure with the same options as it was run last time,
- # provided the config.status script exists
-@@ -1678,7 +1680,7 @@ funny:
-
- # Perform some verification checks on any modified files.
- patchcheck: @DEF_MAKE_RULE@
-- $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/patchcheck.py
-+ $(RUNSHARED) $(HOSTPYTHON) $(srcdir)/Tools/scripts/patchcheck.py
-
- # Dependencies
-
---
-2.11.0
-
diff --git a/meta/recipes-devtools/python/python3/0002-Makefile-add-target-to-split-profile-generation.patch b/meta/recipes-devtools/python/python3/0002-Makefile-add-target-to-split-profile-generation.patch
new file mode 100644
index 00000000000..2b4ba316e45
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0002-Makefile-add-target-to-split-profile-generation.patch
@@ -0,0 +1,40 @@
+From 98586d6dc598e40b8b821b0dde57599e188a7ca4 Mon Sep 17 00:00:00 2001
+From: Anuj Mittal <anuj.mittal@intel.com>
+Date: Tue, 7 Aug 2018 16:43:17 +0800
+Subject: [PATCH 2/2] Makefile: add target to split profile generation
+
+We don't want to have profile task invoked from here and want to use
+qemu-user instead. Split the profile-opt task so qemu can be invoked
+once binaries have been built with instrumentation and then we can go
+ahead and build again using the profile data generated.
+
+Upstream-Status: Inappropriate [OE-specific]
+
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+---
+ Makefile.pre.in | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/Makefile.pre.in b/Makefile.pre.in
+index 84bc3ff..017a2c4 100644
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -469,13 +469,12 @@ profile-opt:
+ $(MAKE) profile-removal
+ $(MAKE) build_all_generate_profile
+ $(MAKE) profile-removal
+- @echo "Running code to generate profile data (this can take a while):"
+- $(MAKE) run_profile_task
+- $(MAKE) build_all_merge_profile
++
++clean_and_use_profile:
+ @echo "Rebuilding with profile guided optimizations:"
+ $(MAKE) clean
+ $(MAKE) build_all_use_profile
+ $(MAKE) profile-removal
+
+ build_all_generate_profile:
+ $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(EXTRA_CFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LIBS="$(LIBS)"
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/python/python3/0002-bpo-29136-Add-TLS-1.3-cipher-suites-and-OP_NO_TLSv1_.patch b/meta/recipes-devtools/python/python3/0002-bpo-29136-Add-TLS-1.3-cipher-suites-and-OP_NO_TLSv1_.patch
new file mode 100644
index 00000000000..d48cad7586b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0002-bpo-29136-Add-TLS-1.3-cipher-suites-and-OP_NO_TLSv1_.patch
@@ -0,0 +1,227 @@
+From e950ea68dab006944af194c9910b8f2341d1437d Mon Sep 17 00:00:00 2001
+From: Christian Heimes <christian@python.org>
+Date: Thu, 7 Sep 2017 20:23:52 -0700
+Subject: [PATCH] bpo-29136: Add TLS 1.3 cipher suites and OP_NO_TLSv1_3
+ (GH-1363) (#3444)
+
+* bpo-29136: Add TLS 1.3 support
+
+TLS 1.3 introduces a new, distinct set of cipher suites. The TLS 1.3
+cipher suites don't overlap with cipher suites from TLS 1.2 and earlier.
+Since Python sets its own set of permitted ciphers, TLS 1.3 handshake
+will fail as soon as OpenSSL 1.1.1 is released. Let's enable the common
+AES-GCM and ChaCha20 suites.
+
+Additionally the flag OP_NO_TLSv1_3 is added. It defaults to 0 (no op) with
+OpenSSL prior to 1.1.1. This allows applications to opt-out from TLS 1.3
+now.
+
+Signed-off-by: Christian Heimes <christian@python.org>.
+(cherry picked from commit cb5b68abdeb1b1d56c581d5b4d647018703d61e3)
+
+Upstream-Status: Backport
+[https://github.com/python/cpython/commit/cb5b68abdeb1b1d56c581d5b4d647018703d61e3]
+
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+---
+ Doc/library/ssl.rst | 21 ++++++++++++++
+ Lib/ssl.py | 7 +++++
+ Lib/test/test_ssl.py | 29 ++++++++++++++++++-
+ .../2017-09-04-16-39-49.bpo-29136.vSn1oR.rst | 1 +
+ Modules/_ssl.c | 13 +++++++++
+ 5 files changed, 70 insertions(+), 1 deletion(-)
+ create mode 100644 Misc/NEWS.d/next/Library/2017-09-04-16-39-49.bpo-29136.vSn1oR.rst
+
+diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst
+index 14f2d68217..29c5e94cf6 100644
+--- a/Doc/library/ssl.rst
++++ b/Doc/library/ssl.rst
+@@ -285,6 +285,11 @@ purposes.
+
+ 3DES was dropped from the default cipher string.
+
++ .. versionchanged:: 3.7
++
++ TLS 1.3 cipher suites TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384,
++ and TLS_CHACHA20_POLY1305_SHA256 were added to the default cipher string.
++
+
+ Random generation
+ ^^^^^^^^^^^^^^^^^
+@@ -719,6 +724,16 @@ Constants
+
+ .. versionadded:: 3.4
+
++.. data:: OP_NO_TLSv1_3
++
++ Prevents a TLSv1.3 connection. This option is only applicable in conjunction
++ with :const:`PROTOCOL_TLS`. It prevents the peers from choosing TLSv1.3 as
++ the protocol version. TLS 1.3 is available with OpenSSL 1.1.1 or later.
++ When Python has been compiled against an older version of OpenSSL, the
++ flag defaults to *0*.
++
++ .. versionadded:: 3.7
++
+ .. data:: OP_CIPHER_SERVER_PREFERENCE
+
+ Use the server's cipher ordering preference, rather than the client's.
+@@ -783,6 +798,12 @@ Constants
+
+ .. versionadded:: 3.3
+
++.. data:: HAS_TLSv1_3
++
++ Whether the OpenSSL library has built-in support for the TLS 1.3 protocol.
++
++ .. versionadded:: 3.7
++
+ .. data:: CHANNEL_BINDING_TYPES
+
+ List of supported TLS channel binding types. Strings in this list
+diff --git a/Lib/ssl.py b/Lib/ssl.py
+index 4d302a78fa..f233e72e1f 100644
+--- a/Lib/ssl.py
++++ b/Lib/ssl.py
+@@ -122,6 +122,7 @@ _import_symbols('OP_')
+ _import_symbols('ALERT_DESCRIPTION_')
+ _import_symbols('SSL_ERROR_')
+ _import_symbols('VERIFY_')
++from _ssl import HAS_SNI, HAS_ECDH, HAS_NPN, HAS_ALPN, HAS_TLSv1_3
+
+ from _ssl import HAS_SNI, HAS_ECDH, HAS_NPN, HAS_ALPN
+
+@@ -162,6 +163,7 @@ else:
+ # (OpenSSL's default setting is 'DEFAULT:!aNULL:!eNULL')
+ # Enable a better set of ciphers by default
+ # This list has been explicitly chosen to:
++# * TLS 1.3 ChaCha20 and AES-GCM cipher suites
+ # * Prefer cipher suites that offer perfect forward secrecy (DHE/ECDHE)
+ # * Prefer ECDHE over DHE for better performance
+ # * Prefer AEAD over CBC for better performance and security
+@@ -173,6 +175,8 @@ else:
+ # * Disable NULL authentication, NULL encryption, 3DES and MD5 MACs
+ # for security reasons
+ _DEFAULT_CIPHERS = (
++ 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:'
++ 'TLS13-AES-128-GCM-SHA256:'
+ 'ECDH+AESGCM:ECDH+CHACHA20:DH+AESGCM:DH+CHACHA20:ECDH+AES256:DH+AES256:'
+ 'ECDH+AES128:DH+AES:ECDH+HIGH:DH+HIGH:RSA+AESGCM:RSA+AES:RSA+HIGH:'
+ '!aNULL:!eNULL:!MD5:!3DES'
+@@ -180,6 +184,7 @@ _DEFAULT_CIPHERS = (
+
+ # Restricted and more secure ciphers for the server side
+ # This list has been explicitly chosen to:
++# * TLS 1.3 ChaCha20 and AES-GCM cipher suites
+ # * Prefer cipher suites that offer perfect forward secrecy (DHE/ECDHE)
+ # * Prefer ECDHE over DHE for better performance
+ # * Prefer AEAD over CBC for better performance and security
+@@ -190,6 +195,8 @@ _DEFAULT_CIPHERS = (
+ # * Disable NULL authentication, NULL encryption, MD5 MACs, DSS, RC4, and
+ # 3DES for security reasons
+ _RESTRICTED_SERVER_CIPHERS = (
++ 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:'
++ 'TLS13-AES-128-GCM-SHA256:'
+ 'ECDH+AESGCM:ECDH+CHACHA20:DH+AESGCM:DH+CHACHA20:ECDH+AES256:DH+AES256:'
+ 'ECDH+AES128:DH+AES:ECDH+HIGH:DH+HIGH:RSA+AESGCM:RSA+AES:RSA+HIGH:'
+ '!aNULL:!eNULL:!MD5:!DSS:!RC4:!3DES'
+diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
+index f91af7bd05..1acc12ec2d 100644
+--- a/Lib/test/test_ssl.py
++++ b/Lib/test/test_ssl.py
+@@ -150,6 +150,13 @@ class BasicSocketTests(unittest.TestCase):
+ ssl.OP_NO_COMPRESSION
+ self.assertIn(ssl.HAS_SNI, {True, False})
+ self.assertIn(ssl.HAS_ECDH, {True, False})
++ ssl.OP_NO_SSLv2
++ ssl.OP_NO_SSLv3
++ ssl.OP_NO_TLSv1
++ ssl.OP_NO_TLSv1_3
++ if ssl.OPENSSL_VERSION_INFO >= (1, 0, 1):
++ ssl.OP_NO_TLSv1_1
++ ssl.OP_NO_TLSv1_2
+
+ def test_str_for_enums(self):
+ # Make sure that the PROTOCOL_* constants have enum-like string
+@@ -3028,12 +3035,33 @@ else:
+ self.assertEqual(s.version(), 'TLSv1')
+ self.assertIs(s.version(), None)
+
++ @unittest.skipUnless(ssl.HAS_TLSv1_3,
++ "test requires TLSv1.3 enabled OpenSSL")
++ def test_tls1_3(self):
++ context = ssl.SSLContext(ssl.PROTOCOL_TLS)
++ context.load_cert_chain(CERTFILE)
++ # disable all but TLS 1.3
++ context.options |= (
++ ssl.OP_NO_TLSv1 | ssl.OP_NO_TLSv1_1 | ssl.OP_NO_TLSv1_2
++ )
++ with ThreadedEchoServer(context=context) as server:
++ with context.wrap_socket(socket.socket()) as s:
++ s.connect((HOST, server.port))
++ self.assertIn(s.cipher()[0], [
++ 'TLS13-AES-256-GCM-SHA384',
++ 'TLS13-CHACHA20-POLY1305-SHA256',
++ 'TLS13-AES-128-GCM-SHA256',
++ ])
++
+ @unittest.skipUnless(ssl.HAS_ECDH, "test requires ECDH-enabled OpenSSL")
+ def test_default_ecdh_curve(self):
+ # Issue #21015: elliptic curve-based Diffie Hellman key exchange
+ # should be enabled by default on SSL contexts.
+ context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
+ context.load_cert_chain(CERTFILE)
++ # TLSv1.3 defaults to PFS key agreement and no longer has KEA in
++ # cipher name.
++ context.options |= ssl.OP_NO_TLSv1_3
+ # Prior to OpenSSL 1.0.0, ECDH ciphers have to be enabled
+ # explicitly using the 'ECCdraft' cipher alias. Otherwise,
+ # our default cipher list should prefer ECDH-based ciphers
+@@ -3394,7 +3422,6 @@ else:
+ s.sendfile(file)
+ self.assertEqual(s.recv(1024), TEST_DATA)
+
+-
+ def test_main(verbose=False):
+ if support.verbose:
+ import warnings
+diff --git a/Misc/NEWS.d/next/Library/2017-09-04-16-39-49.bpo-29136.vSn1oR.rst b/Misc/NEWS.d/next/Library/2017-09-04-16-39-49.bpo-29136.vSn1oR.rst
+new file mode 100644
+index 0000000000..e76997ef83
+--- /dev/null
++++ b/Misc/NEWS.d/next/Library/2017-09-04-16-39-49.bpo-29136.vSn1oR.rst
+@@ -0,0 +1 @@
++Add TLS 1.3 cipher suites and OP_NO_TLSv1_3.
+diff --git a/Modules/_ssl.c b/Modules/_ssl.c
+index 0d5c121d2c..c71d89607c 100644
+--- a/Modules/_ssl.c
++++ b/Modules/_ssl.c
+@@ -4842,6 +4842,11 @@ PyInit__ssl(void)
+ #if HAVE_TLSv1_2
+ PyModule_AddIntConstant(m, "OP_NO_TLSv1_1", SSL_OP_NO_TLSv1_1);
+ PyModule_AddIntConstant(m, "OP_NO_TLSv1_2", SSL_OP_NO_TLSv1_2);
++#endif
++#ifdef SSL_OP_NO_TLSv1_3
++ PyModule_AddIntConstant(m, "OP_NO_TLSv1_3", SSL_OP_NO_TLSv1_3);
++#else
++ PyModule_AddIntConstant(m, "OP_NO_TLSv1_3", 0);
+ #endif
+ PyModule_AddIntConstant(m, "OP_CIPHER_SERVER_PREFERENCE",
+ SSL_OP_CIPHER_SERVER_PREFERENCE);
+@@ -4890,6 +4895,14 @@ PyInit__ssl(void)
+ Py_INCREF(r);
+ PyModule_AddObject(m, "HAS_ALPN", r);
+
++#if defined(TLS1_3_VERSION) && !defined(OPENSSL_NO_TLS1_3)
++ r = Py_True;
++#else
++ r = Py_False;
++#endif
++ Py_INCREF(r);
++ PyModule_AddObject(m, "HAS_TLSv1_3", r);
++
+ /* Mappings for error codes */
+ err_codes_to_names = PyDict_New();
+ err_names_to_codes = PyDict_New();
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/python/python3/0003-bpo-32947-Fixes-for-TLS-1.3-and-OpenSSL-1.1.1-GH-876.patch b/meta/recipes-devtools/python/python3/0003-bpo-32947-Fixes-for-TLS-1.3-and-OpenSSL-1.1.1-GH-876.patch
new file mode 100644
index 00000000000..56d591d1b52
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0003-bpo-32947-Fixes-for-TLS-1.3-and-OpenSSL-1.1.1-GH-876.patch
@@ -0,0 +1,173 @@
+From 170a614904febd14ff6cfd7a75c9bccc114b3948 Mon Sep 17 00:00:00 2001
+From: Christian Heimes <christian@python.org>
+Date: Tue, 14 Aug 2018 16:56:32 +0200
+Subject: [PATCH] bpo-32947: Fixes for TLS 1.3 and OpenSSL 1.1.1 (GH-8761)
+
+Backport of TLS 1.3 related fixes from 3.7.
+
+Misc fixes and workarounds for compatibility with OpenSSL 1.1.1 from git
+master and TLS 1.3 support. With OpenSSL 1.1.1, Python negotiates TLS 1.3 by
+default. Some test cases only apply to TLS 1.2.
+
+OpenSSL 1.1.1 has added a new option OP_ENABLE_MIDDLEBOX_COMPAT for TLS
+1.3. The feature is enabled by default for maximum compatibility with
+broken middle boxes. Users should be able to disable the hack and CPython's test suite needs
+it to verify default options
+
+Signed-off-by: Christian Heimes <christian@python.org>
+
+Upstream-Status: Backport
+[https://github.com/python/cpython/commit/2a4ee8aa01d61b6a9c8e9c65c211e61bdb471826]
+
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+---
+ Doc/library/ssl.rst | 9 ++++++
+ Lib/test/test_asyncio/test_events.py | 6 +++-
+ Lib/test/test_ssl.py | 29 +++++++++++++++----
+ .../2018-08-14-08-57-01.bpo-32947.mqStVW.rst | 2 ++
+ Modules/_ssl.c | 4 +++
+ 5 files changed, 44 insertions(+), 6 deletions(-)
+ create mode 100644 Misc/NEWS.d/next/Library/2018-08-14-08-57-01.bpo-32947.mqStVW.rst
+
+diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst
+index 29c5e94cf6..f63a3deec5 100644
+--- a/Doc/library/ssl.rst
++++ b/Doc/library/ssl.rst
+@@ -757,6 +757,15 @@ Constants
+
+ .. versionadded:: 3.3
+
++.. data:: OP_ENABLE_MIDDLEBOX_COMPAT
++
++ Send dummy Change Cipher Spec (CCS) messages in TLS 1.3 handshake to make
++ a TLS 1.3 connection look more like a TLS 1.2 connection.
++
++ This option is only available with OpenSSL 1.1.1 and later.
++
++ .. versionadded:: 3.6.7
++
+ .. data:: OP_NO_COMPRESSION
+
+ Disable compression on the SSL channel. This is useful if the application
+diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py
+index 492a84a231..6f208474b9 100644
+--- a/Lib/test/test_asyncio/test_events.py
++++ b/Lib/test/test_asyncio/test_events.py
+@@ -1169,7 +1169,11 @@ class EventLoopTestsMixin:
+ self.loop.run_until_complete(f_c)
+
+ # close connection
+- proto.transport.close()
++ # transport may be None with TLS 1.3, because connection is
++ # interrupted, server is unable to send session tickets, and
++ # transport is closed.
++ if proto.transport is not None:
++ proto.transport.close()
+ server.close()
+
+ def test_legacy_create_server_ssl_match_failed(self):
+diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
+index 1acc12ec2d..a2e1d32a62 100644
+--- a/Lib/test/test_ssl.py
++++ b/Lib/test/test_ssl.py
+@@ -78,6 +78,7 @@ OP_NO_COMPRESSION = getattr(ssl, "OP_NO_COMPRESSION", 0)
+ OP_SINGLE_DH_USE = getattr(ssl, "OP_SINGLE_DH_USE", 0)
+ OP_SINGLE_ECDH_USE = getattr(ssl, "OP_SINGLE_ECDH_USE", 0)
+ OP_CIPHER_SERVER_PREFERENCE = getattr(ssl, "OP_CIPHER_SERVER_PREFERENCE", 0)
++OP_ENABLE_MIDDLEBOX_COMPAT = getattr(ssl, "OP_ENABLE_MIDDLEBOX_COMPAT", 0)
+
+
+ def handle_error(prefix):
+@@ -155,8 +156,8 @@ class BasicSocketTests(unittest.TestCase):
+ ssl.OP_NO_TLSv1
+ ssl.OP_NO_TLSv1_3
+ if ssl.OPENSSL_VERSION_INFO >= (1, 0, 1):
+- ssl.OP_NO_TLSv1_1
+- ssl.OP_NO_TLSv1_2
++ ssl.OP_NO_TLSv1_1
++ ssl.OP_NO_TLSv1_2
+
+ def test_str_for_enums(self):
+ # Make sure that the PROTOCOL_* constants have enum-like string
+@@ -854,7 +855,8 @@ class ContextTests(unittest.TestCase):
+ default = (ssl.OP_ALL | ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3)
+ # SSLContext also enables these by default
+ default |= (OP_NO_COMPRESSION | OP_CIPHER_SERVER_PREFERENCE |
+- OP_SINGLE_DH_USE | OP_SINGLE_ECDH_USE)
++ OP_SINGLE_DH_USE | OP_SINGLE_ECDH_USE |
++ OP_ENABLE_MIDDLEBOX_COMPAT)
+ self.assertEqual(default, ctx.options)
+ ctx.options |= ssl.OP_NO_TLSv1
+ self.assertEqual(default | ssl.OP_NO_TLSv1, ctx.options)
+@@ -1860,11 +1862,26 @@ else:
+ self.sock, server_side=True)
+ self.server.selected_npn_protocols.append(self.sslconn.selected_npn_protocol())
+ self.server.selected_alpn_protocols.append(self.sslconn.selected_alpn_protocol())
+- except (ssl.SSLError, ConnectionResetError) as e:
++ except (ConnectionResetError, BrokenPipeError) as e:
+ # We treat ConnectionResetError as though it were an
+ # SSLError - OpenSSL on Ubuntu abruptly closes the
+ # connection when asked to use an unsupported protocol.
+ #
++ # BrokenPipeError is raised in TLS 1.3 mode, when OpenSSL
++ # tries to send session tickets after handshake.
++ # https://github.com/openssl/openssl/issues/6342
++ self.server.conn_errors.append(str(e))
++ if self.server.chatty:
++ handle_error(
++ "\n server: bad connection attempt from " + repr(
++ self.addr) + ":\n")
++ self.running = False
++ self.close()
++ return False
++ except (ssl.SSLError, OSError) as e:
++ # OSError may occur with wrong protocols, e.g. both
++ # sides use PROTOCOL_TLS_SERVER.
++ #
+ # XXX Various errors can have happened here, for example
+ # a mismatching protocol version, an invalid certificate,
+ # or a low-level bug. This should be made more discriminating.
+@@ -2974,7 +2991,7 @@ else:
+ # Block on the accept and wait on the connection to close.
+ evt.set()
+ remote, peer = server.accept()
+- remote.recv(1)
++ remote.send(remote.recv(4))
+
+ t = threading.Thread(target=serve)
+ t.start()
+@@ -2982,6 +2999,8 @@ else:
+ evt.wait()
+ client = context.wrap_socket(socket.socket())
+ client.connect((host, port))
++ client.send(b'data')
++ client.recv()
+ client_addr = client.getsockname()
+ client.close()
+ t.join()
+diff --git a/Misc/NEWS.d/next/Library/2018-08-14-08-57-01.bpo-32947.mqStVW.rst b/Misc/NEWS.d/next/Library/2018-08-14-08-57-01.bpo-32947.mqStVW.rst
+new file mode 100644
+index 0000000000..28de360c36
+--- /dev/null
++++ b/Misc/NEWS.d/next/Library/2018-08-14-08-57-01.bpo-32947.mqStVW.rst
+@@ -0,0 +1,2 @@
++Add OP_ENABLE_MIDDLEBOX_COMPAT and test workaround for TLSv1.3 for future
++compatibility with OpenSSL 1.1.1.
+diff --git a/Modules/_ssl.c b/Modules/_ssl.c
+index c71d89607c..eb123a87ba 100644
+--- a/Modules/_ssl.c
++++ b/Modules/_ssl.c
+@@ -4858,6 +4858,10 @@ PyInit__ssl(void)
+ PyModule_AddIntConstant(m, "OP_NO_COMPRESSION",
+ SSL_OP_NO_COMPRESSION);
+ #endif
++#ifdef SSL_OP_ENABLE_MIDDLEBOX_COMPAT
++ PyModule_AddIntConstant(m, "OP_ENABLE_MIDDLEBOX_COMPAT",
++ SSL_OP_ENABLE_MIDDLEBOX_COMPAT);
++#endif
+
+ #if HAVE_SNI
+ r = Py_True;
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/python/python3/0004-bpo-33570-TLS-1.3-ciphers-for-OpenSSL-1.1.1-GH-6976.patch b/meta/recipes-devtools/python/python3/0004-bpo-33570-TLS-1.3-ciphers-for-OpenSSL-1.1.1-GH-6976.patch
new file mode 100644
index 00000000000..b97d5501e18
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0004-bpo-33570-TLS-1.3-ciphers-for-OpenSSL-1.1.1-GH-6976.patch
@@ -0,0 +1,110 @@
+From 0c9354362bfa5f90fbea8ff8237a1f1f5dba686f Mon Sep 17 00:00:00 2001
+From: Christian Heimes <christian@python.org>
+Date: Wed, 12 Sep 2018 15:20:31 +0800
+Subject: [PATCH] bpo-33570: TLS 1.3 ciphers for OpenSSL 1.1.1 (GH-6976)
+
+Change TLS 1.3 cipher suite settings for compatibility with OpenSSL
+1.1.1-pre6 and newer. OpenSSL 1.1.1 will have TLS 1.3 cipers enabled by
+default.
+
+Also update multissltests and Travis config to test with latest OpenSSL.
+
+Signed-off-by: Christian Heimes <christian@python.org>
+(cherry picked from commit e8eb6cb7920ded66abc5d284319a8539bdc2bae3)
+
+Co-authored-by: Christian Heimes <christian@python.org
+
+Upstream-Status: Backport
+[https://github.com/python/cpython/commit/3e630c541b35c96bfe5619165255e559f577ee71]
+
+Tweaked patch to not take changes for multissltests and Travis config.
+
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+---
+ Lib/test/test_ssl.py | 51 ++++++++++++++++++++++----------------------
+ 1 file changed, 26 insertions(+), 25 deletions(-)
+
+diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
+index a2e1d32a62..c484ead5ff 100644
+--- a/Lib/test/test_ssl.py
++++ b/Lib/test/test_ssl.py
+@@ -3024,17 +3024,21 @@ else:
+ sock.do_handshake()
+ self.assertEqual(cm.exception.errno, errno.ENOTCONN)
+
+- def test_default_ciphers(self):
+- context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
+- try:
+- # Force a set of weak ciphers on our client context
+- context.set_ciphers("DES")
+- except ssl.SSLError:
+- self.skipTest("no DES cipher available")
+- with ThreadedEchoServer(CERTFILE,
+- ssl_version=ssl.PROTOCOL_SSLv23,
+- chatty=False) as server:
+- with context.wrap_socket(socket.socket()) as s:
++ def test_no_shared_ciphers(self):
++ server_context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
++ server_context.load_cert_chain(SIGNED_CERTFILE)
++ client_context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
++ client_context.verify_mode = ssl.CERT_REQUIRED
++ client_context.check_hostname = True
++
++ client_context.set_ciphers("AES128")
++ server_context.set_ciphers("AES256")
++ # OpenSSL enables all TLS 1.3 ciphers, enforce TLS 1.2 for test
++ client_context.options |= ssl.OP_NO_TLSv1_3
++ with ThreadedEchoServer(context=server_context) as server:
++ with client_context.wrap_socket(
++ socket.socket(),
++ server_hostname="localhost") as s:
+ with self.assertRaises(OSError):
+ s.connect((HOST, server.port))
+ self.assertIn("no shared cipher", str(server.conn_errors[0]))
+@@ -3067,9 +3071,9 @@ else:
+ with context.wrap_socket(socket.socket()) as s:
+ s.connect((HOST, server.port))
+ self.assertIn(s.cipher()[0], [
+- 'TLS13-AES-256-GCM-SHA384',
+- 'TLS13-CHACHA20-POLY1305-SHA256',
+- 'TLS13-AES-128-GCM-SHA256',
++ 'TLS_AES_256_GCM_SHA384',
++ 'TLS_CHACHA20_POLY1305_SHA256',
++ 'TLS_AES_128_GCM_SHA256',
+ ])
+
+ @unittest.skipUnless(ssl.HAS_ECDH, "test requires ECDH-enabled OpenSSL")
+@@ -3391,22 +3395,19 @@ else:
+ client_context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
+ client_context.verify_mode = ssl.CERT_REQUIRED
+ client_context.load_verify_locations(SIGNING_CA)
+- if ssl.OPENSSL_VERSION_INFO >= (1, 0, 2):
+- client_context.set_ciphers("AES128:AES256")
+- server_context.set_ciphers("AES256")
+- alg1 = "AES256"
+- alg2 = "AES-256"
+- else:
+- client_context.set_ciphers("AES:3DES")
+- server_context.set_ciphers("3DES")
+- alg1 = "3DES"
+- alg2 = "DES-CBC3"
++ client_context.set_ciphers("AES128:AES256")
++ server_context.set_ciphers("AES256")
++ expected_algs = [
++ "AES256", "AES-256",
++ # TLS 1.3 ciphers are always enabled
++ "TLS_CHACHA20", "TLS_AES",
++ ]
+
+ stats = server_params_test(client_context, server_context)
+ ciphers = stats['server_shared_ciphers'][0]
+ self.assertGreater(len(ciphers), 0)
+ for name, tls_version, bits in ciphers:
+- if not alg1 in name.split("-") and alg2 not in name:
++ if not any (alg in name for alg in expected_algs):
+ self.fail(name)
+
+ def test_read_write_after_close_raises_valuerror(self):
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/python/python3/0005-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-2305.patch b/meta/recipes-devtools/python/python3/0005-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-2305.patch
new file mode 100644
index 00000000000..d6098472042
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0005-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-2305.patch
@@ -0,0 +1,68 @@
+From 7b40cb7293cb14e5c7c8ed123efaf9acb33edae2 Mon Sep 17 00:00:00 2001
+From: Christian Heimes <christian@python.org>
+Date: Tue, 15 Aug 2017 10:33:43 +0200
+Subject: [PATCH] bpo-30714: ALPN changes for OpenSSL 1.1.0f (#2305)
+
+OpenSSL 1.1.0 to 1.1.0e aborted the handshake when server and client
+could not agree on a protocol using ALPN. OpenSSL 1.1.0f changed that.
+The most recent version now behaves like OpenSSL 1.0.2 again. The ALPN
+callback can pretend to not been set.
+
+See https://github.com/openssl/openssl/pull/3158 for more details
+
+Signed-off-by: Christian Heimes <christian@python.org>
+
+Upstream-Status: Backport
+[https://github.com/python/cpython/commit/7b40cb7293cb14e5c7c8ed123efaf9acb33edae2]
+
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+---
+ Doc/library/ssl.rst | 5 +++--
+ Lib/test/test_ssl.py | 5 +++--
+ .../next/Tests/2017-07-25-15-27-44.bpo-30715.Sp7bTF.rst | 2 ++
+ 3 files changed, 8 insertions(+), 4 deletions(-)
+ create mode 100644 Misc/NEWS.d/next/Tests/2017-07-25-15-27-44.bpo-30715.Sp7bTF.rst
+
+diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst
+index 729a239a1b..0a09e7e9d4 100644
+--- a/Doc/library/ssl.rst
++++ b/Doc/library/ssl.rst
+@@ -1447,8 +1447,9 @@ to speed up repeated connections from the same clients.
+ This method will raise :exc:`NotImplementedError` if :data:`HAS_ALPN` is
+ False.
+
+- OpenSSL 1.1.0+ will abort the handshake and raise :exc:`SSLError` when
+- both sides support ALPN but cannot agree on a protocol.
++ OpenSSL 1.1.0 to 1.1.0e will abort the handshake and raise :exc:`SSLError`
++ when both sides support ALPN but cannot agree on a protocol. 1.1.0f+
++ behaves like 1.0.2, :meth:`SSLSocket.selected_alpn_protocol` returns None.
+
+ .. versionadded:: 3.5
+
+diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
+index d960d82065..104b7f377a 100644
+--- a/Lib/test/test_ssl.py
++++ b/Lib/test/test_ssl.py
+@@ -3268,8 +3268,9 @@ if _have_threads:
+ except ssl.SSLError as e:
+ stats = e
+
+- if expected is None and IS_OPENSSL_1_1:
+- # OpenSSL 1.1.0 raises handshake error
++ if (expected is None and IS_OPENSSL_1_1
++ and ssl.OPENSSL_VERSION_INFO < (1, 1, 0, 6)):
++ # OpenSSL 1.1.0 to 1.1.0e raises handshake error
+ self.assertIsInstance(stats, ssl.SSLError)
+ else:
+ msg = "failed trying %s (s) and %s (c).\n" \
+diff --git a/Misc/NEWS.d/next/Tests/2017-07-25-15-27-44.bpo-30715.Sp7bTF.rst b/Misc/NEWS.d/next/Tests/2017-07-25-15-27-44.bpo-30715.Sp7bTF.rst
+new file mode 100644
+index 0000000000..88394e585c
+--- /dev/null
++++ b/Misc/NEWS.d/next/Tests/2017-07-25-15-27-44.bpo-30715.Sp7bTF.rst
+@@ -0,0 +1,2 @@
++Address ALPN callback changes for OpenSSL 1.1.0f. The latest version behaves
++like OpenSSL 1.0.2 and no longer aborts handshake.
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/python/python3/Use-correct-CFLAGS-for-extensions-when-cross-compili.patch b/meta/recipes-devtools/python/python3/Use-correct-CFLAGS-for-extensions-when-cross-compili.patch
new file mode 100644
index 00000000000..ae74ef531d3
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/Use-correct-CFLAGS-for-extensions-when-cross-compili.patch
@@ -0,0 +1,56 @@
+From 7fd121bb7d6c25c2e0a1c31cf76fb9bd4a9794de Mon Sep 17 00:00:00 2001
+From: Markus Lehtonen <markus.lehtonen@linux.intel.com>
+Date: Tue, 14 Aug 2018 14:11:35 +0800
+Subject: [PATCH 1/2] Use correct CFLAGS for extensions when cross-compiling
+
+Take PY_CFLAGS_NODIST into account, like in native build. This is needed
+in order to to profile-optimized build. Also, pass EXTRA_CFLAGS to
+profile-optimized build.
+
+Upstream-Status: Pending
+
+Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
+---
+ Makefile.pre.in | 4 ++--
+ setup.py | 3 ++-
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile.pre.in b/Makefile.pre.in
+index e2d5d3d..84bc3ff 100644
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -478,7 +478,7 @@ profile-opt:
+ $(MAKE) profile-removal
+
+ build_all_generate_profile:
+- $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LIBS="$(LIBS)"
++ $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(EXTRA_CFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LIBS="$(LIBS)"
+
+ run_profile_task:
+ : # FIXME: can't run for a cross build
+@@ -488,7 +488,7 @@ build_all_merge_profile:
+ $(LLVM_PROF_MERGER)
+
+ build_all_use_profile:
+- $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(PGO_PROF_USE_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) @LTOFLAGS@"
++ $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(EXTRA_CFLAGS) $(PGO_PROF_USE_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) @LTOFLAGS@"
+
+ # Compile and run with gcov
+ .PHONY=coverage coverage-lcov coverage-report
+diff --git a/setup.py b/setup.py
+index add3346..65e83b1 100644
+--- a/setup.py
++++ b/setup.py
+@@ -263,7 +263,8 @@ class PyBuildExt(build_ext):
+ # compilers
+ if compiler is not None:
+ if cross_compiling:
+- (ccshared,cflags) = (os.environ.get('CCSHARED') or '', os.environ.get('CFLAGS') or '')
++ (ccshared,cflags) = (os.environ.get('CCSHARED') or '',
++ (os.environ.get('CFLAGS') or '') + ' ' + sysconfig.get_config_var('PY_CFLAGS_NODIST'))
+ else:
+ (ccshared,cflags) = sysconfig.get_config_vars('CCSHARED','CFLAGS')
+ args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cflags
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/python/python3/create_manifest3.py b/meta/recipes-devtools/python/python3/create_manifest3.py
index 2f944f9b13e..fddb23cdc42 100644
--- a/meta/recipes-devtools/python/python3/create_manifest3.py
+++ b/meta/recipes-devtools/python/python3/create_manifest3.py
@@ -43,194 +43,239 @@ import sys
import subprocess
import json
import os
+import collections
+
+# Get python version from ${PYTHON_MAJMIN}
+pyversion = str(sys.argv[1])
# Hack to get native python search path (for folders), not fond of it but it works for now
-pivot='recipe-sysroot-native'
+pivot = 'recipe-sysroot-native'
for p in sys.path:
- if pivot in p:
- nativelibfolder=p[:p.find(pivot)+len(pivot)]
+ if pivot in p:
+ nativelibfolder = p[:p.find(pivot)+len(pivot)]
# Empty dict to hold the whole manifest
-new_manifest = {}
+new_manifest = collections.OrderedDict()
# Check for repeated files, folders and wildcards
-allfiles=[]
-repeated=[]
-wildcards=[]
+allfiles = []
+repeated = []
+wildcards = []
-hasfolders=[]
-allfolders=[]
+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
+ value = value.replace('${PYTHON_MAJMIN}',pyversion)
+ 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 isCached(item):
- if '__pycache__' in item:
- return True
- else:
- return False
+ if '__pycache__' in item:
+ return True
+ else:
+ return False
# Read existing JSON manifest
with open('python3-manifest.json') as manifest:
- old_manifest=json.load(manifest)
-
+ old_manifest = json.load(manifest, 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 package: core')
-# Special call to check for core package
+
+# This special call gets the core dependencies and
+# appends to the old manifest so it doesnt hurt what it
+# currently holds.
+# This way when other packages check for dependencies
+# 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')
-for item in output.split():
- # We append it so it doesnt hurt what we currently have:
- if isCached(item):
- if item not in old_manifest['core']['cached']:
- # We use the same data structure since its the one which will be used to check
- # dependencies for other packages
- old_manifest['core']['cached'].append(item)
- else:
- 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 isCached(value):
- if value not in old_manifest['core']['cached']:
- old_manifest['core']['cached'].append(value)
+for coredep in output.split():
+ coredep = coredep.replace(pyversion,'${PYTHON_MAJMIN}')
+ if isCached(coredep):
+ if coredep not in old_manifest['core']['cached']:
+ old_manifest['core']['cached'].append(coredep)
else:
- if value not in old_manifest['core']['files']:
- old_manifest['core']['files'].append(value)
- continue
- # 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_deps3.py', '%s' % value]).decode('utf8')
- print ('The following dependencies were found for module %s:\n' % value)
- print (output)
- for item in output.split():
- # We append it so it doesnt hurt what we currently have:
- if isCached(item):
- if item not in old_manifest['core']['cached']:
- # We use the same data structure since its the one which will be used to check
- # dependencies for other packages
- old_manifest['core']['cached'].append(item)
- else:
- 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)
-
-
-# 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:
+ if coredep not in old_manifest['core']['files']:
+ old_manifest['core']['files'].append(coredep)
+
+
+# The second step is to loop through the existing files contained in the core package
+# according to the old manifest, identify if they are modules, or some other type
+# of file that we cant import (directories, binaries, configs) in which case we
+# can only assume they were added correctly (manually) so we ignore those and
+# pass them to the manifest directly.
+
+for filedep in old_manifest['core']['files']:
+ if isFolder(filedep):
+ if isCached(filedep):
+ if filedep not in old_manifest['core']['cached']:
+ old_manifest['core']['cached'].append(filedep)
+ else:
+ if filedep not in old_manifest['core']['files']:
+ old_manifest['core']['files'].append(filedep)
+ continue
+ if '${bindir}' in filedep:
+ if filedep not in old_manifest['core']['files']:
+ old_manifest['core']['files'].append(filedep)
+ continue
+ if filedep == '':
+ continue
+ if '${includedir}' in filedep:
+ if filedep not in old_manifest['core']['files']:
+ old_manifest['core']['files'].append(filedep)
+ continue
+
+ # 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)
+
+
+ for pymodule_dep in output.split():
+ pymodule_dep = pymodule_dep.replace(pyversion,'${PYTHON_MAJMIN}')
+
+ if isCached(pymodule_dep):
+ if pymodule_dep not in old_manifest['core']['cached']:
+ old_manifest['core']['cached'].append(pymodule_dep)
+ else:
+ if pymodule_dep not in old_manifest['core']['files']:
+ old_manifest['core']['files'].append(pymodule_dep)
+
+
+# At this point we are done with the core package.
+# The old_manifest dictionary is updated only for the core package because
+# all others will use this a base.
+
+
+# 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)
+ if pypkg not in hasfolders:
+ hasfolders.append(pypkg)
+ if filedep not in allfolders:
+ allfolders.append(filedep)
+
+
+
+# This is the main loop that will handle each package.
+# It works in a similar fashion than the step before, but
+# we will now be updating a new dictionary that will eventually
+# become the new manifest.
+#
+# The following loops though all packages in the manifest,
+# through all files on each of them, and checks whether or not
+# they are modules and can be imported.
+# If they can be imported, then it checks for dependencies for
+# each of them by launching a separate task.
+# The output of that task is then parsed and the manifest is updated
+# accordingly, wether it should add the module on FILES for the current package
+# or if that module already belongs to another package then the current one
+# will RDEPEND on it
+
+for pypkg in old_manifest:
# Use an empty dict as data structure to hold data for each package and fill it up
- new_manifest[key]={}
- new_manifest[key]['files']=[]
-
- new_manifest[key]['rdepends']=[]
+ new_manifest[pypkg] = collections.OrderedDict()
+ new_manifest[pypkg]['summary'] = old_manifest[pypkg]['summary']
+ new_manifest[pypkg]['rdepends'] = []
+ new_manifest[pypkg]['files'] = []
+ new_manifest[pypkg]['cached'] = old_manifest[pypkg]['cached']
+
# All packages should depend on core
- if key != 'core':
- new_manifest[key]['rdepends'].append('core')
- new_manifest[key]['cached']=[]
- else:
- new_manifest[key]['cached']=old_manifest[key]['cached']
- new_manifest[key]['summary']=old_manifest[key]['summary']
+ if pypkg != 'core':
+ new_manifest[pypkg]['rdepends'].append('core')
+ new_manifest[pypkg]['cached'] = []
- # Handle special cases, we assume that when they were manually added
- # to the manifest we knew what we were doing.
print('\n')
print('--------------------------')
- print ('Handling package %s' % key)
+ print ('Handling package %s' % pypkg)
print('--------------------------')
- special_packages=['misc', 'modules', 'dev']
- if key in special_packages or 'staticdev' in key:
- print('Passing %s package directly' % key)
- new_manifest[key]=old_manifest[key]
+
+ # 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)
+ new_manifest[pypkg] = old_manifest[pypkg]
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)
+ for filedep in old_manifest[pypkg]['files']:
+ # We already handled core on the first pass, we can ignore it now
+ if pypkg == 'core':
+ if filedep not in new_manifest[pypkg]['files']:
+ new_manifest[pypkg]['files'].append(filedep)
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)
+
+ # Handle/ignore what we cant import
+ if isFolder(filedep):
+ new_manifest[pypkg]['files'].append(filedep)
+ # Asyncio (and others) are both the package and the folder name, we should not skip those...
+ path,mod = os.path.split(filedep)
+ if mod != pypkg:
+ continue
+ if '${bindir}' in filedep:
+ if filedep not in new_manifest[pypkg]['files']:
+ new_manifest[pypkg]['files'].append(filedep)
continue
- # Ignore empty values
- if value == '':
+ if filedep == '':
continue
- if '${includedir}' in value:
- if value not in new_manifest[key]['files']:
- new_manifest[key]['files'].append(value)
+ if '${includedir}' in filedep:
+ if filedep not in new_manifest[pypkg]['files']:
+ new_manifest[pypkg]['files'].append(filedep)
continue
- # Get module name , shouldnt be affected by libdir/bindir
+ # 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,value = os.path.split(value)
+ path,pymodule = os.path.split(filedep)
path = os.path.basename(path)
- value = os.path.splitext(os.path.basename(value))[0]
+ pymodule = os.path.splitext(os.path.basename(pymodule))[0]
# If this condition is met, it means we need to import it from another module
# or its the folder itself (e.g. unittest)
- if path == key:
- if value:
- value = path + '.' + value
- else:
- value = path
-
- # Launch separate task for each module for deterministic behavior
- # Each module will only import what is necessary for it to work in specific
- print ('\nGetting dependencies for module: %s' % value)
- output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % value]).decode('utf8')
- # We can print dependencies for debugging purposes
- print ('The following dependencies were found for module %s:\n' % value)
+ if path == pypkg:
+ if pymodule:
+ pymodule = path + '.' + pymodule
+ else:
+ pymodule = path
+
+
+
+ # 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 ('\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)
- # Output will have all dependencies
reportFILES = []
reportRDEPS = []
- for item in output.split():
+ for pymodule_dep 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
@@ -250,22 +295,22 @@ for key in old_manifest:
# is folder_string inside path/folder1/folder2/filename?,
# Yes, it works, but we waste a couple of milliseconds.
- inFolders=False
+ pymodule_dep = pymodule_dep.replace(pyversion,'${PYTHON_MAJMIN}')
+ inFolders = False
for folder in allfolders:
- if folder in item:
+ if folder in pymodule_dep:
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:
+ for pypkg_with_folder in hasfolders:
if (folderFound == False):
- #print('Checking folder %s on package %s' % (item,keyfolder))
- for file_folder in old_manifest[keyfolder]['files'] or file_folder in old_manifest[keyfolder]['cached']:
- if file_folder==folder:
- print ('%s folder found in %s' % (folder, keyfolder))
+ # 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))
folderFound = True
- if keyfolder not in new_manifest[key]['rdepends'] and keyfolder != key:
- new_manifest[key]['rdepends'].append(keyfolder)
-
+ if pypkg_with_folder not in new_manifest[pypkg]['rdepends'] and pypkg_with_folder != pypkg:
+ new_manifest[pypkg]['rdepends'].append(pypkg_with_folder)
else:
break
@@ -274,81 +319,95 @@ for key in old_manifest:
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'] and item not in new_manifest[key]['cached']:
+
+ # No directories beyond this point
+ # We might already have this module on the dictionary since it could depend on a (previously checked) module
+ if pymodule_dep not in new_manifest[pypkg]['files'] and pymodule_dep not in new_manifest[pypkg]['cached']:
# 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)
- if isCached(item):
- new_manifest[key]['cached'].append(item)
- else:
- new_manifest[key]['files'].append(item)
-
- # Check for repeated files
- if item not in allfiles:
- allfiles.append(item)
- else:
- repeated.append(item)
+ if pypkg == 'core':
+ print('Adding %s to %s FILES' % (pymodule_dep, pypkg))
+ if pymodule_dep.endswith('*'):
+ wildcards.append(pymodule_dep)
+ if isCached(pymodule_dep):
+ new_manifest[pypkg]['cached'].append(pymodule_dep)
+ else:
+ new_manifest[pypkg]['files'].append(pymodule_dep)
+ # Check for repeated files
+ if pymodule_dep not in allfiles:
+ allfiles.append(pymodule_dep)
+ else:
+ if pymodule_dep not in repeated:
+ repeated.append(pymodule_dep)
else:
- # Check if this dependency is already contained on another package, so we add it
+ # Last step: Figure out if we this belongs to FILES or RDEPENDS
+ # We check if this module is already contained on another package, so we add that one
# 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:
+ # package, and we should add it to FILES
+ for possible_rdep in old_manifest:
# Debug
- #print('Checking %s ' % item + ' in %s' % newkey)
- if item in old_manifest[newkey]['files'] or item in old_manifest[newkey]['cached']:
- # 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
- reportRDEPS.append('Adding %s to %s RDEPENDS, because it contains %s\n' % (newkey, key, item))
- new_manifest[key]['rdepends'].append(newkey)
- break
+ # print('Checking %s ' % pymodule_dep + ' in %s' % possible_rdep)
+ if pymodule_dep in old_manifest[possible_rdep]['files'] or pymodule_dep in old_manifest[possible_rdep]['cached']:
+ # Since were nesting, we need to check its not the same pypkg
+ if(possible_rdep != pypkg):
+ if possible_rdep not in new_manifest[pypkg]['rdepends']:
+ # Add it to the new manifest data struct as RDEPENDS since it contains something this module needs
+ reportRDEPS.append('Adding %s to %s RDEPENDS, because it contains %s\n' % (possible_rdep, pypkg, pymodule_dep))
+ new_manifest[pypkg]['rdepends'].append(possible_rdep)
+ break
else:
+
+ # Since this module wasnt found on another package, it is not an RDEP,
+ # so we add it to FILES for this package.
# A module shouldn't contain itself (${libdir}/python3/sqlite3 shouldnt be on sqlite3 files)
- if os.path.basename(item) != key:
- reportFILES.append(('Adding %s to %s FILES\n' % (item, key)))
- # Since it wasnt found on another package, its not an RDEP, so add it to FILES for this package
- if isCached(item):
- new_manifest[key]['cached'].append(item)
+ if os.path.basename(pymodule_dep) != pypkg:
+ reportFILES.append(('Adding %s to %s FILES\n' % (pymodule_dep, pypkg)))
+ if isCached(pymodule_dep):
+ new_manifest[pypkg]['cached'].append(pymodule_dep)
else:
- new_manifest[key]['files'].append(item)
-
- if item.endswith('*'):
- wildcards.append(item)
- if item not in allfiles:
- allfiles.append(item)
+ new_manifest[pypkg]['files'].append(pymodule_dep)
+ if pymodule_dep.endswith('*'):
+ wildcards.append(pymodule_dep)
+ if pymodule_dep not in allfiles:
+ allfiles.append(pymodule_dep)
else:
- repeated.append(item)
+ if pymodule_dep not in repeated:
+ repeated.append(pymodule_dep)
print('\n')
print('#################################')
- print('Summary for module %s' % value)
- print('FILES found for module %s:' % value)
+ print('Summary for module %s' % pymodule)
+ print('FILES found for module %s:' % pymodule)
print(''.join(reportFILES))
- print('RDEPENDS found for module %s:' % value)
+ print('RDEPENDS found for module %s:' % pymodule)
print(''.join(reportRDEPS))
print('#################################')
-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('The following FILES contain wildcards, please check if they are necessary')
print(wildcards)
-print('The following files contain folders, please check they are necessary')
+print('The following FILES contain folders, please check if they are necessary')
print(hasfolders)
+
# Sort it just so it looks nicer
-for key in new_manifest:
- new_manifest[key]['files'].sort()
- new_manifest[key]['cached'].sort()
- new_manifest[key]['rdepends'].sort()
+for pypkg in new_manifest:
+ new_manifest[pypkg]['files'].sort()
+ new_manifest[pypkg]['cached'].sort()
+ new_manifest[pypkg]['rdepends'].sort()
# Create the manifest from the data structure that was built
with open('python3-manifest.json.new','w') as outfile:
- json.dump(new_manifest,outfile,sort_keys=True, indent=4)
+ json.dump(new_manifest,outfile, indent=4)
outfile.write('\n')
+
+if (repeated):
+ error_msg = '\n\nERROR:\n'
+ error_msg += 'The following files are repeated (contained 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)
+ error_msg += '\n'
+ sys.exit(error_msg)
+
diff --git a/meta/recipes-devtools/python/python3/float-endian.patch b/meta/recipes-devtools/python/python3/float-endian.patch
new file mode 100644
index 00000000000..6ba3f5c252d
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/float-endian.patch
@@ -0,0 +1,212 @@
+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>
+
+From 50df2a4c3a65ed06322be7c26d42b06ce81730c1 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
+
+---
+ configure.ac | 74 +++++------------------------------
+ m4/ax_c_float_words_bigendian.m4 | 83 ++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 92 insertions(+), 65 deletions(-)
+ create mode 100644 m4/ax_c_float_words_bigendian.m4
+
+diff --git a/configure.ac b/configure.ac
+index c9b755f0f4..1215969871 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -9,6 +9,8 @@ AC_PREREQ(2.65)
+
+ AC_INIT(python, PYTHON_VERSION, https://bugs.python.org/)
+
++AC_CONFIG_MACRO_DIR(m4)
++
+ AC_SUBST(BASECPPFLAGS)
+ if test "$srcdir" != . -a "$srcdir" != "$(pwd)"; then
+ # If we're building out-of-tree, we need to make sure the following
+@@ -4128,77 +4130,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 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/python3/ftplib.patch b/meta/recipes-devtools/python/python3/ftplib.patch
new file mode 100644
index 00000000000..8bb3cd02196
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/ftplib.patch
@@ -0,0 +1,57 @@
+From cabe916dc694997d4892b58986e73a713d5a2f8d Mon Sep 17 00:00:00 2001
+From: "Miss Islington (bot)"
+ <31488909+miss-islington@users.noreply.github.com>
+Date: Thu, 16 Aug 2018 15:38:03 -0400
+Subject: [PATCH] [3.6] bpo-34391: Fix ftplib test for TLS 1.3 (GH-8787)
+ (#8790)
+
+Read from data socket to avoid "[SSL] shutdown while in init" exception
+during shutdown of the dummy server.
+
+Signed-off-by: Christian Heimes <christian@python.org>
+
+
+<!-- issue-number: [bpo-34391](https://www.bugs.python.org/issue34391) -->
+https://bugs.python.org/issue34391
+<!-- /issue-number -->
+(cherry picked from commit 1590c393360df059160145e7475754427bfc6680)
+
+
+Co-authored-by: Christian Heimes <christian@python.org>
+---
+ Lib/test/test_ftplib.py | 5 +++++
+ Misc/NEWS.d/next/Tests/2018-08-16-18-48-47.bpo-34391.ouNfxC.rst | 1 +
+ 2 files changed, 6 insertions(+)
+ create mode 100644 Misc/NEWS.d/next/Tests/2018-08-16-18-48-47.bpo-34391.ouNfxC.rst
+
+diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py
+index 44dd73aeca..4ff2f71afb 100644
+--- a/Lib/test/test_ftplib.py
++++ b/Lib/test/test_ftplib.py
+@@ -876,18 +876,23 @@ class TestTLS_FTPClass(TestCase):
+ # clear text
+ with self.client.transfercmd('list') as sock:
+ self.assertNotIsInstance(sock, ssl.SSLSocket)
++ self.assertEqual(sock.recv(1024), LIST_DATA.encode('ascii'))
+ self.assertEqual(self.client.voidresp(), "226 transfer complete")
+
+ # secured, after PROT P
+ self.client.prot_p()
+ with self.client.transfercmd('list') as sock:
+ self.assertIsInstance(sock, ssl.SSLSocket)
++ # consume from SSL socket to finalize handshake and avoid
++ # "SSLError [SSL] shutdown while in init"
++ self.assertEqual(sock.recv(1024), LIST_DATA.encode('ascii'))
+ self.assertEqual(self.client.voidresp(), "226 transfer complete")
+
+ # PROT C is issued, the connection must be in cleartext again
+ self.client.prot_c()
+ with self.client.transfercmd('list') as sock:
+ self.assertNotIsInstance(sock, ssl.SSLSocket)
++ self.assertEqual(sock.recv(1024), LIST_DATA.encode('ascii'))
+ self.assertEqual(self.client.voidresp(), "226 transfer complete")
+
+ def test_login(self):
+--
+2.11.0
+
diff --git a/meta/recipes-devtools/python/python3/python3-manifest.json b/meta/recipes-devtools/python/python3/python3-manifest.json
index 2491f36db27..f922561368d 100644
--- a/meta/recipes-devtools/python/python3/python3-manifest.json
+++ b/meta/recipes-devtools/python/python3/python3-manifest.json
@@ -1,22 +1,31 @@
{
- "2to3": {
- "cached": [],
+ "tests": {
+ "summary": "Python test suite",
+ "rdepends": [
+ "core",
+ "modules"
+ ],
"files": [
- "${bindir}/2to3-*",
- "${libdir}/python3.5/lib2to3"
+ "${libdir}/python${PYTHON_MAJMIN}/*/test",
+ "${libdir}/python${PYTHON_MAJMIN}/*/tests",
+ "${libdir}/python${PYTHON_MAJMIN}/idlelib/idle_test/",
+ "${libdir}/python${PYTHON_MAJMIN}/test"
],
+ "cached": []
+ },
+ "2to3": {
+ "summary": "Python automated Python 2 to 3 code translator",
"rdepends": [
"core"
],
- "summary": "Python automated Python 2 to 3 code translator"
- },
- "asyncio": {
- "cached": [],
"files": [
- "${libdir}/python3.5/asyncio",
- "${libdir}/python3.5/concurrent",
- "${libdir}/python3.5/concurrent/futures"
+ "${bindir}/2to3-*",
+ "${libdir}/python${PYTHON_MAJMIN}/lib2to3"
],
+ "cached": []
+ },
+ "asyncio": {
+ "summary": "Python Asynchronous I/",
"rdepends": [
"compression",
"core",
@@ -32,50 +41,48 @@
"threading",
"unixadmin"
],
- "summary": "Python Asynchronous I/"
- },
- "audio": {
- "cached": [
- "${libdir}/python3.5/__pycache__/chunk.*.pyc",
- "${libdir}/python3.5/__pycache__/sndhdr.*.pyc",
- "${libdir}/python3.5/__pycache__/sunau.*.pyc",
- "${libdir}/python3.5/__pycache__/wave.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/chunk.py",
- "${libdir}/python3.5/lib-dynload/audioop.*.so",
- "${libdir}/python3.5/lib-dynload/ossaudiodev.*.so",
- "${libdir}/python3.5/sndhdr.py",
- "${libdir}/python3.5/sunau.py",
- "${libdir}/python3.5/wave.py"
+ "${libdir}/python${PYTHON_MAJMIN}/asyncio",
+ "${libdir}/python${PYTHON_MAJMIN}/concurrent",
+ "${libdir}/python${PYTHON_MAJMIN}/concurrent/futures"
],
+ "cached": []
+ },
+ "audio": {
+ "summary": "Python Audio Handling",
"rdepends": [
"core"
],
- "summary": "Python Audio Handling"
- },
- "codecs": {
- "cached": [
- "${libdir}/python3.5/__pycache__/xdrlib.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/lib-dynload/_multibytecodec.*.so",
- "${libdir}/python3.5/xdrlib.py"
+ "${libdir}/python${PYTHON_MAJMIN}/chunk.py",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/audioop.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/ossaudiodev.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/sndhdr.py",
+ "${libdir}/python${PYTHON_MAJMIN}/sunau.py",
+ "${libdir}/python${PYTHON_MAJMIN}/wave.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/chunk.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/sndhdr.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/sunau.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/wave.*.pyc"
+ ]
+ },
+ "codecs": {
+ "summary": "Python codec",
"rdepends": [
"core"
],
- "summary": "Python codec"
- },
- "compile": {
- "cached": [
- "${libdir}/python3.5/__pycache__/compileall.*.pyc",
- "${libdir}/python3.5/__pycache__/py_compile.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/compileall.py",
- "${libdir}/python3.5/py_compile.py"
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_multibytecodec.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/xdrlib.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/xdrlib.*.pyc"
+ ]
+ },
+ "compile": {
+ "summary": "Python bytecode compilation support",
"rdepends": [
"asyncio",
"compression",
@@ -91,305 +98,309 @@
"threading",
"unixadmin"
],
- "summary": "Python bytecode compilation support"
- },
- "compression": {
- "cached": [
- "${libdir}/python3.5/__pycache__/_compression.*.pyc",
- "${libdir}/python3.5/__pycache__/bz2.*.pyc",
- "${libdir}/python3.5/__pycache__/gzip.*.pyc",
- "${libdir}/python3.5/__pycache__/lzma.*.pyc",
- "${libdir}/python3.5/__pycache__/tarfile.*.pyc",
- "${libdir}/python3.5/__pycache__/zipfile.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/_compression.py",
- "${libdir}/python3.5/bz2.py",
- "${libdir}/python3.5/gzip.py",
- "${libdir}/python3.5/lib-dynload/_bz2.*.so",
- "${libdir}/python3.5/lib-dynload/_lzma.*.so",
- "${libdir}/python3.5/lib-dynload/zlib.*.so",
- "${libdir}/python3.5/lzma.py",
- "${libdir}/python3.5/tarfile.py",
- "${libdir}/python3.5/zipfile.py"
+ "${libdir}/python${PYTHON_MAJMIN}/compileall.py",
+ "${libdir}/python${PYTHON_MAJMIN}/py_compile.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/compileall.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/py_compile.*.pyc"
+ ]
+ },
+ "compression": {
+ "summary": "Python high-level compression support",
"rdepends": [
"core",
"shell",
"unixadmin"
],
- "summary": "Python high-level compression support"
+ "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"
+ ]
},
"core": {
- "cached": [
- "${libdir}/python3.5/__pycache__/__future__.*.pyc",
- "${libdir}/python3.5/__pycache__/_bootlocale.*.pyc",
- "${libdir}/python3.5/__pycache__/_collections_abc.*.pyc",
- "${libdir}/python3.5/__pycache__/_markupbase.*.pyc",
- "${libdir}/python3.5/__pycache__/_sitebuiltins.*.pyc",
- "${libdir}/python3.5/__pycache__/_sysconfigdata.*.pyc",
- "${libdir}/python3.5/__pycache__/_weakrefset.*.pyc",
- "${libdir}/python3.5/__pycache__/abc.*.pyc",
- "${libdir}/python3.5/__pycache__/argparse.*.pyc",
- "${libdir}/python3.5/__pycache__/ast.*.pyc",
- "${libdir}/python3.5/__pycache__/bisect.*.pyc",
- "${libdir}/python3.5/__pycache__/code.*.pyc",
- "${libdir}/python3.5/__pycache__/codecs.*.pyc",
- "${libdir}/python3.5/__pycache__/codeop.*.pyc",
- "${libdir}/python3.5/__pycache__/configparser.*.pyc",
- "${libdir}/python3.5/__pycache__/contextlib.*.pyc",
- "${libdir}/python3.5/__pycache__/copy.*.pyc",
- "${libdir}/python3.5/__pycache__/copyreg.*.pyc",
- "${libdir}/python3.5/__pycache__/csv.*.pyc",
- "${libdir}/python3.5/__pycache__/dis.*.pyc",
- "${libdir}/python3.5/__pycache__/enum.*.pyc",
- "${libdir}/python3.5/__pycache__/functools.*.pyc",
- "${libdir}/python3.5/__pycache__/genericpath.*.pyc",
- "${libdir}/python3.5/__pycache__/getopt.*.pyc",
- "${libdir}/python3.5/__pycache__/gettext.*.pyc",
- "${libdir}/python3.5/__pycache__/heapq.*.pyc",
- "${libdir}/python3.5/__pycache__/imp.*.pyc",
- "${libdir}/python3.5/__pycache__/inspect.*.pyc",
- "${libdir}/python3.5/__pycache__/io.*.pyc",
- "${libdir}/python3.5/__pycache__/keyword.*.pyc",
- "${libdir}/python3.5/__pycache__/linecache.*.pyc",
- "${libdir}/python3.5/__pycache__/locale.*.pyc",
- "${libdir}/python3.5/__pycache__/opcode.*.pyc",
- "${libdir}/python3.5/__pycache__/operator.*.pyc",
- "${libdir}/python3.5/__pycache__/optparse.*.pyc",
- "${libdir}/python3.5/__pycache__/os.*.pyc",
- "${libdir}/python3.5/__pycache__/platform.*.pyc",
- "${libdir}/python3.5/__pycache__/posixpath.*.pyc",
- "${libdir}/python3.5/__pycache__/re.*.pyc",
- "${libdir}/python3.5/__pycache__/reprlib.*.pyc",
- "${libdir}/python3.5/__pycache__/rlcompleter.*.pyc",
- "${libdir}/python3.5/__pycache__/selectors.*.pyc",
- "${libdir}/python3.5/__pycache__/signal.*.pyc",
- "${libdir}/python3.5/__pycache__/site.*.pyc",
- "${libdir}/python3.5/__pycache__/sre_compile.*.pyc",
- "${libdir}/python3.5/__pycache__/sre_constants.*.pyc",
- "${libdir}/python3.5/__pycache__/sre_parse.*.pyc",
- "${libdir}/python3.5/__pycache__/stat.*.pyc",
- "${libdir}/python3.5/__pycache__/stringprep.*.pyc",
- "${libdir}/python3.5/__pycache__/struct.*.pyc",
- "${libdir}/python3.5/__pycache__/subprocess.*.pyc",
- "${libdir}/python3.5/__pycache__/symbol.*.pyc",
- "${libdir}/python3.5/__pycache__/sysconfig.*.pyc",
- "${libdir}/python3.5/__pycache__/textwrap.*.pyc",
- "${libdir}/python3.5/__pycache__/threading.*.pyc",
- "${libdir}/python3.5/__pycache__/token.*.pyc",
- "${libdir}/python3.5/__pycache__/tokenize.*.pyc",
- "${libdir}/python3.5/__pycache__/traceback.*.pyc",
- "${libdir}/python3.5/__pycache__/types.*.pyc",
- "${libdir}/python3.5/__pycache__/warnings.*.pyc",
- "${libdir}/python3.5/__pycache__/weakref.*.pyc",
- "${libdir}/python3.5/collections/__pycache__",
- "${libdir}/python3.5/collections/__pycache__/abc.*.pyc",
- "${libdir}/python3.5/encodings/__pycache__",
- "${libdir}/python3.5/encodings/__pycache__/aliases.*.pyc",
- "${libdir}/python3.5/encodings/__pycache__/latin_1.*.pyc",
- "${libdir}/python3.5/encodings/__pycache__/utf_8.*.pyc",
- "${libdir}/python3.5/importlib/__pycache__",
- "${libdir}/python3.5/importlib/__pycache__/abc.*.pyc",
- "${libdir}/python3.5/importlib/__pycache__/machinery.*.pyc",
- "${libdir}/python3.5/importlib/__pycache__/util.*.pyc"
- ],
+ "summary": "Python interpreter and core modules",
+ "rdepends": [],
"files": [
"${bindir}/python*[!-config]",
"${includedir}/python${PYTHON_BINABI}/pyconfig*.h",
+ "${libdir}/python${PYTHON_MAJMIN}/UserDict.py",
+ "${libdir}/python${PYTHON_MAJMIN}/UserList.py",
+ "${libdir}/python${PYTHON_MAJMIN}/UserString.py",
+ "${libdir}/python${PYTHON_MAJMIN}/__future__.py",
+ "${libdir}/python${PYTHON_MAJMIN}/_abcoll.py",
+ "${libdir}/python${PYTHON_MAJMIN}/_bootlocale.py",
"${libdir}/python${PYTHON_MAJMIN}/_collections_abc.py",
+ "${libdir}/python${PYTHON_MAJMIN}/_markupbase.py",
"${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.py",
+ "${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py",
+ "${libdir}/python${PYTHON_MAJMIN}/_weakrefset.py",
+ "${libdir}/python${PYTHON_MAJMIN}/abc.py",
+ "${libdir}/python${PYTHON_MAJMIN}/argparse.py",
+ "${libdir}/python${PYTHON_MAJMIN}/ast.py",
+ "${libdir}/python${PYTHON_MAJMIN}/bisect.py",
+ "${libdir}/python${PYTHON_MAJMIN}/code.py",
+ "${libdir}/python${PYTHON_MAJMIN}/codecs.py",
+ "${libdir}/python${PYTHON_MAJMIN}/codeop.py",
"${libdir}/python${PYTHON_MAJMIN}/collections",
+ "${libdir}/python${PYTHON_MAJMIN}/collections/abc.py",
+ "${libdir}/python${PYTHON_MAJMIN}/configparser.py",
+ "${libdir}/python${PYTHON_MAJMIN}/contextlib.py",
+ "${libdir}/python${PYTHON_MAJMIN}/copy.py",
+ "${libdir}/python${PYTHON_MAJMIN}/copyreg.py",
+ "${libdir}/python${PYTHON_MAJMIN}/csv.py",
+ "${libdir}/python${PYTHON_MAJMIN}/dis.py",
+ "${libdir}/python${PYTHON_MAJMIN}/encodings",
+ "${libdir}/python${PYTHON_MAJMIN}/encodings/aliases.py",
+ "${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}/functools.py",
+ "${libdir}/python${PYTHON_MAJMIN}/genericpath.py",
+ "${libdir}/python${PYTHON_MAJMIN}/getopt.py",
+ "${libdir}/python${PYTHON_MAJMIN}/gettext.py",
+ "${libdir}/python${PYTHON_MAJMIN}/heapq.py",
+ "${libdir}/python${PYTHON_MAJMIN}/imp.py",
+ "${libdir}/python${PYTHON_MAJMIN}/importlib",
+ "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap.py",
+ "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap_external.py",
+ "${libdir}/python${PYTHON_MAJMIN}/importlib/abc.py",
+ "${libdir}/python${PYTHON_MAJMIN}/importlib/machinery.py",
+ "${libdir}/python${PYTHON_MAJMIN}/importlib/util.py",
+ "${libdir}/python${PYTHON_MAJMIN}/inspect.py",
+ "${libdir}/python${PYTHON_MAJMIN}/io.py",
+ "${libdir}/python${PYTHON_MAJMIN}/keyword.py",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/_struct.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/binascii.*.so",
+ "${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/_csv.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_heapq.*.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/math.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/parser.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/readline.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/select.*.so",
+ "${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}/linecache.py",
+ "${libdir}/python${PYTHON_MAJMIN}/locale.py",
+ "${libdir}/python${PYTHON_MAJMIN}/new.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}/platform.py",
+ "${libdir}/python${PYTHON_MAJMIN}/posixpath.py",
+ "${libdir}/python${PYTHON_MAJMIN}/re.py",
+ "${libdir}/python${PYTHON_MAJMIN}/reprlib.py",
+ "${libdir}/python${PYTHON_MAJMIN}/rlcompleter.py",
+ "${libdir}/python${PYTHON_MAJMIN}/selectors.py",
+ "${libdir}/python${PYTHON_MAJMIN}/signal.py",
+ "${libdir}/python${PYTHON_MAJMIN}/site.py",
"${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py",
- "${libdir}/python3.5/UserDict.py",
- "${libdir}/python3.5/UserList.py",
- "${libdir}/python3.5/UserString.py",
- "${libdir}/python3.5/__future__.py",
- "${libdir}/python3.5/_abcoll.py",
- "${libdir}/python3.5/_bootlocale.py",
- "${libdir}/python3.5/_collections_abc.py",
- "${libdir}/python3.5/_markupbase.py",
- "${libdir}/python3.5/_sitebuiltins.py",
- "${libdir}/python3.5/_sysconfigdata.py",
- "${libdir}/python3.5/_weakrefset.py",
- "${libdir}/python3.5/abc.py",
- "${libdir}/python3.5/argparse.py",
- "${libdir}/python3.5/ast.py",
- "${libdir}/python3.5/bisect.py",
- "${libdir}/python3.5/code.py",
- "${libdir}/python3.5/codecs.py",
- "${libdir}/python3.5/codeop.py",
- "${libdir}/python3.5/collections",
- "${libdir}/python3.5/collections/abc.py",
- "${libdir}/python3.5/configparser.py",
- "${libdir}/python3.5/contextlib.py",
- "${libdir}/python3.5/copy.py",
- "${libdir}/python3.5/copyreg.py",
- "${libdir}/python3.5/csv.py",
- "${libdir}/python3.5/dis.py",
- "${libdir}/python3.5/encodings",
- "${libdir}/python3.5/encodings/aliases.py",
- "${libdir}/python3.5/encodings/latin_1.py",
- "${libdir}/python3.5/encodings/utf_8.py",
- "${libdir}/python3.5/enum.py",
- "${libdir}/python3.5/functools.py",
- "${libdir}/python3.5/genericpath.py",
- "${libdir}/python3.5/getopt.py",
- "${libdir}/python3.5/gettext.py",
- "${libdir}/python3.5/heapq.py",
- "${libdir}/python3.5/imp.py",
- "${libdir}/python3.5/importlib",
- "${libdir}/python3.5/importlib/_bootstrap.py",
- "${libdir}/python3.5/importlib/_bootstrap_external.py",
- "${libdir}/python3.5/importlib/abc.py",
- "${libdir}/python3.5/importlib/machinery.py",
- "${libdir}/python3.5/importlib/util.py",
- "${libdir}/python3.5/inspect.py",
- "${libdir}/python3.5/io.py",
- "${libdir}/python3.5/keyword.py",
- "${libdir}/python3.5/lib-dynload/__pycache__/_struct.*.so",
- "${libdir}/python3.5/lib-dynload/__pycache__/binascii.*.so",
- "${libdir}/python3.5/lib-dynload/__pycache__/time.*.so",
- "${libdir}/python3.5/lib-dynload/__pycache__/xreadlines.*.so",
- "${libdir}/python3.5/lib-dynload/_bisect.*.so",
- "${libdir}/python3.5/lib-dynload/_csv.*.so",
- "${libdir}/python3.5/lib-dynload/_heapq.*.so",
- "${libdir}/python3.5/lib-dynload/_opcode.*.so",
- "${libdir}/python3.5/lib-dynload/_posixsubprocess.*.so",
- "${libdir}/python3.5/lib-dynload/_struct.*.so",
- "${libdir}/python3.5/lib-dynload/array.*.so",
- "${libdir}/python3.5/lib-dynload/binascii.*.so",
- "${libdir}/python3.5/lib-dynload/math.*.so",
- "${libdir}/python3.5/lib-dynload/parser.*.so",
- "${libdir}/python3.5/lib-dynload/readline.*.so",
- "${libdir}/python3.5/lib-dynload/select.*.so",
- "${libdir}/python3.5/lib-dynload/time.*.so",
- "${libdir}/python3.5/lib-dynload/unicodedata.*.so",
- "${libdir}/python3.5/lib-dynload/xreadlines.*.so",
- "${libdir}/python3.5/linecache.py",
- "${libdir}/python3.5/locale.py",
- "${libdir}/python3.5/new.py",
- "${libdir}/python3.5/opcode.py",
- "${libdir}/python3.5/operator.py",
- "${libdir}/python3.5/optparse.py",
- "${libdir}/python3.5/os.py",
- "${libdir}/python3.5/platform.py",
- "${libdir}/python3.5/posixpath.py",
- "${libdir}/python3.5/re.py",
- "${libdir}/python3.5/reprlib.py",
- "${libdir}/python3.5/rlcompleter.py",
- "${libdir}/python3.5/selectors.py",
- "${libdir}/python3.5/signal.py",
- "${libdir}/python3.5/site.py",
- "${libdir}/python3.5/sre_compile.py",
- "${libdir}/python3.5/sre_constants.py",
- "${libdir}/python3.5/sre_parse.py",
- "${libdir}/python3.5/stat.py",
- "${libdir}/python3.5/stringprep.py",
- "${libdir}/python3.5/struct.py",
- "${libdir}/python3.5/subprocess.py",
- "${libdir}/python3.5/symbol.py",
- "${libdir}/python3.5/sysconfig.py",
- "${libdir}/python3.5/textwrap.py",
- "${libdir}/python3.5/threading.py",
- "${libdir}/python3.5/token.py",
- "${libdir}/python3.5/tokenize.py",
- "${libdir}/python3.5/traceback.py",
- "${libdir}/python3.5/types.py",
- "${libdir}/python3.5/warnings.py",
- "${libdir}/python3.5/weakref.py"
+ "${libdir}/python${PYTHON_MAJMIN}/sre_compile.py",
+ "${libdir}/python${PYTHON_MAJMIN}/sre_constants.py",
+ "${libdir}/python${PYTHON_MAJMIN}/sre_parse.py",
+ "${libdir}/python${PYTHON_MAJMIN}/stat.py",
+ "${libdir}/python${PYTHON_MAJMIN}/stringprep.py",
+ "${libdir}/python${PYTHON_MAJMIN}/struct.py",
+ "${libdir}/python${PYTHON_MAJMIN}/subprocess.py",
+ "${libdir}/python${PYTHON_MAJMIN}/symbol.py",
+ "${libdir}/python${PYTHON_MAJMIN}/sysconfig.py",
+ "${libdir}/python${PYTHON_MAJMIN}/textwrap.py",
+ "${libdir}/python${PYTHON_MAJMIN}/threading.py",
+ "${libdir}/python${PYTHON_MAJMIN}/token.py",
+ "${libdir}/python${PYTHON_MAJMIN}/tokenize.py",
+ "${libdir}/python${PYTHON_MAJMIN}/traceback.py",
+ "${libdir}/python${PYTHON_MAJMIN}/types.py",
+ "${libdir}/python${PYTHON_MAJMIN}/warnings.py",
+ "${libdir}/python${PYTHON_MAJMIN}/weakref.py"
],
- "rdepends": [],
- "summary": "Python interpreter and core modules"
+ "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__/_markupbase.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sitebuiltins.*.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__/code.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/codecs.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/codeop.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/configparser.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/contextlib.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copy.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copyreg.*.pyc",
+ "${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__/functools.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/genericpath.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/getopt.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/gettext.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/heapq.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imp.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/inspect.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/io.*.pyc",
+ "${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__/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__/platform.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/posixpath.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/re.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/reprlib.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/rlcompleter.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/selectors.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/signal.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/site.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/sre_compile.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/sre_constants.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/sre_parse.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/stat.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/stringprep.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/struct.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/subprocess.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/symbol.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/sysconfig.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/textwrap.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/threading.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/token.*.pyc",
+ "${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__/warnings.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/weakref.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/collections/__pycache__",
+ "${libdir}/python${PYTHON_MAJMIN}/collections/__pycache__/abc.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__",
+ "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/aliases.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/latin_1.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/utf_8.*.pyc",
+ "${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"
+ ]
},
"crypt": {
- "cached": [
- "${libdir}/python3.5/__pycache__/crypt.*.pyc",
- "${libdir}/python3.5/__pycache__/hashlib.*.pyc"
- ],
- "files": [
- "${libdir}/python3.5/crypt.py",
- "${libdir}/python3.5/hashlib.py",
- "${libdir}/python3.5/lib-dynload/_crypt.*.so",
- "${libdir}/python3.5/lib-dynload/_hashlib.*.so",
- "${libdir}/python3.5/lib-dynload/_sha256.*.so",
- "${libdir}/python3.5/lib-dynload/_sha512.*.so"
- ],
+ "summary": "Python basic cryptographic and hashing support",
"rdepends": [
"core",
"math",
"stringold"
],
- "summary": "Python basic cryptographic and hashing support"
- },
- "ctypes": {
- "cached": [],
"files": [
- "${libdir}/python3.5/ctypes",
- "${libdir}/python3.5/lib-dynload/_ctypes.*.so",
- "${libdir}/python3.5/lib-dynload/_ctypes_test.*.so"
+ "${libdir}/python${PYTHON_MAJMIN}/crypt.py",
+ "${libdir}/python${PYTHON_MAJMIN}/hashlib.py",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_crypt.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_hashlib.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha256.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha512.*.so"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/crypt.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/hashlib.*.pyc"
+ ]
+ },
+ "ctypes": {
+ "summary": "Python C types support",
"rdepends": [
"core"
],
- "summary": "Python C types support"
- },
- "curses": {
- "cached": [],
"files": [
- "${libdir}/python3.5/curses",
- "${libdir}/python3.5/lib-dynload/_curses.*.so",
- "${libdir}/python3.5/lib-dynload/_curses_panel.*.so"
+ "${libdir}/python${PYTHON_MAJMIN}/ctypes",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_ctypes.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_ctypes_test.*.so"
],
+ "cached": []
+ },
+ "curses": {
+ "summary": "Python curses support",
"rdepends": [
"core"
],
- "summary": "Python curses support"
- },
- "datetime": {
- "cached": [
- "${libdir}/python3.5/__pycache__/_strptime.*.pyc",
- "${libdir}/python3.5/__pycache__/calendar.*.pyc",
- "${libdir}/python3.5/__pycache__/datetime.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/_strptime.py",
- "${libdir}/python3.5/calendar.py",
- "${libdir}/python3.5/datetime.py",
- "${libdir}/python3.5/lib-dynload/_datetime.*.so"
+ "${libdir}/python${PYTHON_MAJMIN}/curses",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_curses.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_curses_panel.*.so"
],
+ "cached": []
+ },
+ "datetime": {
+ "summary": "Python calendar and time support",
"rdepends": [
"core"
],
- "summary": "Python calendar and time support"
- },
- "db": {
- "cached": [],
"files": [
- "${libdir}/python3.5/dbm",
- "${libdir}/python3.5/lib-dynload/_dbm.*.so"
+ "${libdir}/python${PYTHON_MAJMIN}/_strptime.py",
+ "${libdir}/python${PYTHON_MAJMIN}/calendar.py",
+ "${libdir}/python${PYTHON_MAJMIN}/datetime.py",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_datetime.*.so"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_strptime.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/calendar.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/datetime.*.pyc"
+ ]
+ },
+ "db": {
+ "summary": "Python file-based database support",
"rdepends": [
"core"
],
- "summary": "Python file-based database support"
- },
- "debugger": {
- "cached": [
- "${libdir}/python3.5/__pycache__/bdb.*.pyc",
- "${libdir}/python3.5/__pycache__/pdb.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/bdb.py",
- "${libdir}/python3.5/pdb.py"
+ "${libdir}/python${PYTHON_MAJMIN}/dbm",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_dbm.*.so"
],
+ "cached": []
+ },
+ "debugger": {
+ "summary": "Python debugger",
"rdepends": [
"core",
"pprint",
"shell",
"stringold"
],
- "summary": "Python debugger"
+ "files": [
+ "${libdir}/python${PYTHON_MAJMIN}/bdb.py",
+ "${libdir}/python${PYTHON_MAJMIN}/pdb.py"
+ ],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/bdb.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pdb.*.pyc"
+ ]
},
"dev": {
"cached": [],
@@ -405,8 +416,8 @@
"${libdir}/*.o",
"${libdir}/lib*${SOLIBSDEV}",
"${libdir}/pkgconfig",
- "${libdir}/python3.5/config*/Makefile",
- "${libdir}/python3.5/config*/Makefile/__pycache__"
+ "${libdir}/python${PYTHON_MAJMIN}/config*/Makefile",
+ "${libdir}/python${PYTHON_MAJMIN}/config*/Makefile/__pycache__"
],
"rdepends": [
"core"
@@ -414,46 +425,41 @@
"summary": "Python development package"
},
"difflib": {
- "cached": [
- "${libdir}/python3.5/__pycache__/difflib.*.pyc"
- ],
- "files": [
- "${libdir}/python3.5/difflib.py"
- ],
+ "summary": "Python helpers for computing deltas between objects",
"rdepends": [
"core"
],
- "summary": "Python helpers for computing deltas between objects"
- },
- "distutils": {
- "cached": [],
"files": [
- "${libdir}/python3.5/distutils"
- ],
- "rdepends": [
- "core"
+ "${libdir}/python${PYTHON_MAJMIN}/difflib.py"
],
- "summary": "Python Distribution Utilities"
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/difflib.*.pyc"
+ ]
},
"distutils-staticdev": {
"cached": [
- "${libdir}/python3.5/config/__pycache__/lib*.a"
+ "${libdir}/python${PYTHON_MAJMIN}/config/__pycache__/lib*.a"
],
"files": [
- "${libdir}/python3.5/config/lib*.a"
+ "${libdir}/python${PYTHON_MAJMIN}/config/lib*.a"
],
"rdepends": [
"distutils"
],
"summary": "Python distribution utilities (static libraries)"
},
- "doctest": {
- "cached": [
- "${libdir}/python3.5/__pycache__/doctest.*.pyc"
+ "distutils": {
+ "summary": "Python Distribution Utilities",
+ "rdepends": [
+ "core"
],
"files": [
- "${libdir}/python3.5/doctest.py"
+ "${libdir}/python${PYTHON_MAJMIN}/distutils"
],
+ "cached": []
+ },
+ "doctest": {
+ "summary": "Python framework for running examples in docstrings",
"rdepends": [
"core",
"debugger",
@@ -464,16 +470,15 @@
"stringold",
"unittest"
],
- "summary": "Python framework for running examples in docstrings"
- },
- "email": {
- "cached": [
- "${libdir}/python3.5/__pycache__/imaplib.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/email",
- "${libdir}/python3.5/imaplib.py"
+ "${libdir}/python${PYTHON_MAJMIN}/doctest.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/doctest.*.pyc"
+ ]
+ },
+ "email": {
+ "summary": "Python email support",
"rdepends": [
"core",
"crypt",
@@ -482,86 +487,74 @@
"math",
"netclient"
],
- "summary": "Python email support"
- },
- "fcntl": {
- "cached": [],
"files": [
- "${libdir}/python3.5/lib-dynload/fcntl.*.so"
+ "${libdir}/python${PYTHON_MAJMIN}/email",
+ "${libdir}/python${PYTHON_MAJMIN}/imaplib.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imaplib.*.pyc"
+ ]
+ },
+ "fcntl": {
+ "summary": "Python's fcntl interface",
"rdepends": [
"core"
],
- "summary": "Python's fcntl interface"
- },
- "gdbm": {
- "cached": [],
"files": [
- "${libdir}/python3.5/lib-dynload/_gdbm.*.so"
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/fcntl.*.so"
],
+ "cached": []
+ },
+ "gdbm": {
+ "summary": "Python GNU database support",
"rdepends": [
"core"
],
- "summary": "Python GNU database support"
+ "files": [
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_gdbm.*.so"
+ ],
+ "cached": []
},
"html": {
- "cached": [
- "${libdir}/python3.5/__pycache__/formatter.*.pyc"
+ "summary": "Python HTML processing support",
+ "rdepends": [
+ "core"
],
"files": [
- "${libdir}/python3.5/formatter.py",
- "${libdir}/python3.5/html"
+ "${libdir}/python${PYTHON_MAJMIN}/formatter.py",
+ "${libdir}/python${PYTHON_MAJMIN}/html"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/formatter.*.pyc"
+ ]
+ },
+ "idle": {
+ "summary": "Python Integrated Development Environment",
"rdepends": [
"core"
],
- "summary": "Python HTML processing support"
- },
- "idle": {
- "cached": [],
"files": [
"${bindir}/idle*",
- "${libdir}/python3.5/idlelib"
+ "${libdir}/python${PYTHON_MAJMIN}/idlelib"
],
- "rdepends": [
- "core"
- ],
- "summary": "Python Integrated Development Environment"
+ "cached": []
},
"image": {
- "cached": [
- "${libdir}/python3.5/__pycache__/colorsys.*.pyc",
- "${libdir}/python3.5/__pycache__/imghdr.*.pyc"
- ],
- "files": [
- "${libdir}/python3.5/colorsys.py",
- "${libdir}/python3.5/imghdr.py"
- ],
+ "summary": "Python graphical image handling",
"rdepends": [
"core"
],
- "summary": "Python graphical image handling"
- },
- "io": {
- "cached": [
- "${libdir}/python3.5/__pycache__/_pyio.*.pyc",
- "${libdir}/python3.5/__pycache__/ipaddress.*.pyc",
- "${libdir}/python3.5/__pycache__/pipes.*.pyc",
- "${libdir}/python3.5/__pycache__/socket.*.pyc",
- "${libdir}/python3.5/__pycache__/ssl.*.pyc",
- "${libdir}/python3.5/__pycache__/tempfile.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/_pyio.py",
- "${libdir}/python3.5/ipaddress.py",
- "${libdir}/python3.5/lib-dynload/_socket.*.so",
- "${libdir}/python3.5/lib-dynload/_ssl.*.so",
- "${libdir}/python3.5/lib-dynload/termios.*.so",
- "${libdir}/python3.5/pipes.py",
- "${libdir}/python3.5/socket.py",
- "${libdir}/python3.5/ssl.py",
- "${libdir}/python3.5/tempfile.py"
+ "${libdir}/python${PYTHON_MAJMIN}/colorsys.py",
+ "${libdir}/python${PYTHON_MAJMIN}/imghdr.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/colorsys.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imghdr.*.pyc"
+ ]
+ },
+ "io": {
+ "summary": "Python low-level I/O",
"rdepends": [
"compression",
"core",
@@ -571,37 +564,50 @@
"shell",
"unixadmin"
],
- "summary": "Python low-level I/O"
- },
- "json": {
- "cached": [],
"files": [
- "${libdir}/python3.5/json",
- "${libdir}/python3.5/lib-dynload/_json.*.so"
+ "${libdir}/python${PYTHON_MAJMIN}/_pyio.py",
+ "${libdir}/python${PYTHON_MAJMIN}/ipaddress.py",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_socket.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_ssl.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/termios.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/pipes.py",
+ "${libdir}/python${PYTHON_MAJMIN}/socket.py",
+ "${libdir}/python${PYTHON_MAJMIN}/ssl.py",
+ "${libdir}/python${PYTHON_MAJMIN}/tempfile.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_pyio.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ipaddress.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pipes.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/socket.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ssl.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tempfile.*.pyc"
+ ]
+ },
+ "json": {
+ "summary": "Python JSON support",
"rdepends": [
"core"
],
- "summary": "Python JSON support"
- },
- "logging": {
- "cached": [],
"files": [
- "${libdir}/python3.5/logging"
+ "${libdir}/python${PYTHON_MAJMIN}/json",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_json.*.so"
],
+ "cached": []
+ },
+ "logging": {
+ "summary": "Python logging support",
"rdepends": [
"core",
"stringold"
],
- "summary": "Python logging support"
- },
- "mailbox": {
- "cached": [
- "${libdir}/python3.5/__pycache__/mailbox.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/mailbox.py"
+ "${libdir}/python${PYTHON_MAJMIN}/logging"
],
+ "cached": []
+ },
+ "mailbox": {
+ "summary": "Python mailbox format support",
"rdepends": [
"core",
"crypt",
@@ -614,46 +620,51 @@
"netclient",
"stringold"
],
- "summary": "Python mailbox format support"
- },
- "math": {
- "cached": [
- "${libdir}/python3.5/__pycache__/random.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/lib-dynload/_random.*.so",
- "${libdir}/python3.5/lib-dynload/cmath.*.so",
- "${libdir}/python3.5/random.py"
+ "${libdir}/python${PYTHON_MAJMIN}/mailbox.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/mailbox.*.pyc"
+ ]
+ },
+ "math": {
+ "summary": "Python math support",
"rdepends": [
"core",
"crypt"
],
- "summary": "Python math support"
- },
- "mime": {
- "cached": [
- "${libdir}/python3.5/__pycache__/quopri.*.pyc",
- "${libdir}/python3.5/__pycache__/uu.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/quopri.py",
- "${libdir}/python3.5/uu.py"
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_random.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/cmath.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/random.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/random.*.pyc"
+ ]
+ },
+ "mime": {
+ "summary": "Python MIME handling APIs",
"rdepends": [
"core"
],
- "summary": "Python MIME handling APIs"
- },
- "mmap": {
- "cached": [],
"files": [
- "${libdir}/python3.5/lib-dynload/mmap.*.so"
+ "${libdir}/python${PYTHON_MAJMIN}/quopri.py",
+ "${libdir}/python${PYTHON_MAJMIN}/uu.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/quopri.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/uu.*.pyc"
+ ]
+ },
+ "mmap": {
+ "summary": "Python memory-mapped file support",
"rdepends": [
"core"
],
- "summary": "Python memory-mapped file support"
+ "files": [
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/mmap.*.so"
+ ],
+ "cached": []
},
"modules": {
"cached": [],
@@ -716,43 +727,18 @@
"summary": "All Python modules"
},
"multiprocessing": {
- "cached": [],
- "files": [
- "${libdir}/python3.5/lib-dynload/_multiprocessing.*.so",
- "${libdir}/python3.5/multiprocessing"
- ],
+ "summary": "Python multiprocessing support",
"rdepends": [
"core"
],
- "summary": "Python multiprocessing support"
- },
- "netclient": {
- "cached": [
- "${libdir}/python3.5/__pycache__/base64.*.pyc",
- "${libdir}/python3.5/__pycache__/ftplib.*.pyc",
- "${libdir}/python3.5/__pycache__/hmac.*.pyc",
- "${libdir}/python3.5/__pycache__/mimetypes.*.pyc",
- "${libdir}/python3.5/__pycache__/nntplib.*.pyc",
- "${libdir}/python3.5/__pycache__/poplib.*.pyc",
- "${libdir}/python3.5/__pycache__/smtplib.*.pyc",
- "${libdir}/python3.5/__pycache__/telnetlib.*.pyc",
- "${libdir}/python3.5/__pycache__/uuid.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/base64.py",
- "${libdir}/python3.5/ftplib.py",
- "${libdir}/python3.5/hmac.py",
- "${libdir}/python3.5/http",
- "${libdir}/python3.5/http/__pycache__",
- "${libdir}/python3.5/mimetypes.py",
- "${libdir}/python3.5/nntplib.py",
- "${libdir}/python3.5/poplib.py",
- "${libdir}/python3.5/smtplib.py",
- "${libdir}/python3.5/telnetlib.py",
- "${libdir}/python3.5/urllib",
- "${libdir}/python3.5/urllib/__pycache__",
- "${libdir}/python3.5/uuid.py"
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_multiprocessing.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/multiprocessing"
],
+ "cached": []
+ },
+ "netclient": {
+ "summary": "Python Internet Protocol clients",
"rdepends": [
"compression",
"core",
@@ -767,17 +753,35 @@
"stringold",
"unixadmin"
],
- "summary": "Python Internet Protocol clients"
- },
- "netserver": {
- "cached": [
- "${libdir}/python3.5/__pycache__/cgi.*.pyc",
- "${libdir}/python3.5/__pycache__/socketserver.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/cgi.py",
- "${libdir}/python3.5/socketserver.py"
+ "${libdir}/python${PYTHON_MAJMIN}/base64.py",
+ "${libdir}/python${PYTHON_MAJMIN}/ftplib.py",
+ "${libdir}/python${PYTHON_MAJMIN}/hmac.py",
+ "${libdir}/python${PYTHON_MAJMIN}/http",
+ "${libdir}/python${PYTHON_MAJMIN}/http/__pycache__",
+ "${libdir}/python${PYTHON_MAJMIN}/mimetypes.py",
+ "${libdir}/python${PYTHON_MAJMIN}/nntplib.py",
+ "${libdir}/python${PYTHON_MAJMIN}/poplib.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": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/base64.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ftplib.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/hmac.*.pyc",
+ "${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__/smtplib.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/telnetlib.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/uuid.*.pyc"
+ ]
+ },
+ "netserver": {
+ "summary": "Python Internet Protocol servers",
"rdepends": [
"compression",
"core",
@@ -793,175 +797,172 @@
"stringold",
"unixadmin"
],
- "summary": "Python Internet Protocol servers"
- },
- "numbers": {
- "cached": [
- "${libdir}/python3.5/__pycache__/_pydecimal.*.pyc",
- "${libdir}/python3.5/__pycache__/decimal.*.pyc",
- "${libdir}/python3.5/__pycache__/fractions.*.pyc",
- "${libdir}/python3.5/__pycache__/numbers.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/_pydecimal.py",
- "${libdir}/python3.5/decimal.py",
- "${libdir}/python3.5/fractions.py",
- "${libdir}/python3.5/lib-dynload/_decimal.*.so",
- "${libdir}/python3.5/numbers.py"
+ "${libdir}/python${PYTHON_MAJMIN}/cgi.py",
+ "${libdir}/python${PYTHON_MAJMIN}/socketserver.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cgi.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/socketserver.*.pyc"
+ ]
+ },
+ "numbers": {
+ "summary": "Python number APIs",
"rdepends": [
"core"
],
- "summary": "Python number APIs"
- },
- "pickle": {
- "cached": [
- "${libdir}/python3.5/__pycache__/_compat_pickle.*.pyc",
- "${libdir}/python3.5/__pycache__/pickle.*.pyc",
- "${libdir}/python3.5/__pycache__/pickletools.*.pyc",
- "${libdir}/python3.5/__pycache__/shelve.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/_compat_pickle.py",
- "${libdir}/python3.5/lib-dynload/_pickle.*.so",
- "${libdir}/python3.5/pickle.py",
- "${libdir}/python3.5/pickletools.py",
- "${libdir}/python3.5/shelve.py"
+ "${libdir}/python${PYTHON_MAJMIN}/_pydecimal.py",
+ "${libdir}/python${PYTHON_MAJMIN}/decimal.py",
+ "${libdir}/python${PYTHON_MAJMIN}/fractions.py",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_decimal.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/numbers.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_pydecimal.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/decimal.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/fractions.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/numbers.*.pyc"
+ ]
+ },
+ "pickle": {
+ "summary": "Python serialisation/persistence support",
"rdepends": [
"core"
],
- "summary": "Python serialisation/persistence support"
- },
- "pkgutil": {
- "cached": [
- "${libdir}/python3.5/__pycache__/pkgutil.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/pkgutil.py"
+ "${libdir}/python${PYTHON_MAJMIN}/_compat_pickle.py",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_pickle.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/pickle.py",
+ "${libdir}/python${PYTHON_MAJMIN}/pickletools.py",
+ "${libdir}/python${PYTHON_MAJMIN}/shelve.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_compat_pickle.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pickle.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pickletools.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/shelve.*.pyc"
+ ]
+ },
+ "pkgutil": {
+ "summary": "Python package extension utility support",
"rdepends": [
"core"
],
- "summary": "Python package extension utility support"
- },
- "plistlib": {
- "cached": [
- "${libdir}/python3.5/__pycache__/plistlib.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/plistlib.py"
+ "${libdir}/python${PYTHON_MAJMIN}/pkgutil.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pkgutil.*.pyc"
+ ]
+ },
+ "plistlib": {
+ "summary": "Generate and parse Mac OS X .plist files",
"rdepends": [
"core",
"datetime",
"xml"
],
- "summary": "Generate and parse Mac OS X .plist files"
- },
- "pprint": {
- "cached": [
- "${libdir}/python3.5/__pycache__/pprint.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/pprint.py"
+ "${libdir}/python${PYTHON_MAJMIN}/plistlib.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/plistlib.*.pyc"
+ ]
+ },
+ "pprint": {
+ "summary": "Python pretty-print support",
"rdepends": [
"core"
],
- "summary": "Python pretty-print support"
- },
- "profile": {
- "cached": [
- "${libdir}/python3.5/__pycache__/cProfile.*.pyc",
- "${libdir}/python3.5/__pycache__/profile.*.pyc",
- "${libdir}/python3.5/__pycache__/pstats.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/cProfile.py",
- "${libdir}/python3.5/lib-dynload/_lsprof.*.so",
- "${libdir}/python3.5/profile.py",
- "${libdir}/python3.5/pstats.py"
+ "${libdir}/python${PYTHON_MAJMIN}/pprint.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pprint.*.pyc"
+ ]
+ },
+ "profile": {
+ "summary": "Python basic performance profiling support",
"rdepends": [
"core"
],
- "summary": "Python basic performance profiling support"
- },
- "pydoc": {
- "cached": [
- "${libdir}/python3.5/__pycache__/pydoc.*.pyc"
- ],
"files": [
- "${bindir}/pydoc*",
- "${libdir}/python3.5/pydoc.py",
- "${libdir}/python3.5/pydoc_data"
+ "${libdir}/python${PYTHON_MAJMIN}/cProfile.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__/profile.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pstats.*.pyc"
+ ]
+ },
+ "pydoc": {
+ "summary": "Python interactive help support",
"rdepends": [
"core",
"netclient",
"pkgutil"
],
- "summary": "Python interactive help support"
- },
- "resource": {
- "cached": [],
"files": [
- "${libdir}/python3.5/lib-dynload/resource.*.so"
+ "${bindir}/pydoc*",
+ "${libdir}/python${PYTHON_MAJMIN}/pydoc.py",
+ "${libdir}/python${PYTHON_MAJMIN}/pydoc_data"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pydoc.*.pyc"
+ ]
+ },
+ "resource": {
+ "summary": "Python resource control interface",
"rdepends": [
"core"
],
- "summary": "Python resource control interface"
- },
- "runpy": {
- "cached": [
- "${libdir}/python3.5/__pycache__/runpy.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/runpy.py"
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/resource.*.so"
],
+ "cached": []
+ },
+ "runpy": {
+ "summary": "Python helper for locating/executing scripts in module namespace",
"rdepends": [
"core",
"pkgutil"
],
- "summary": "Python helper for locating/executing scripts in module namespace"
- },
- "shell": {
- "cached": [
- "${libdir}/python3.5/__pycache__/cmd.*.pyc",
- "${libdir}/python3.5/__pycache__/fnmatch.*.pyc",
- "${libdir}/python3.5/__pycache__/glob.*.pyc",
- "${libdir}/python3.5/__pycache__/shlex.*.pyc",
- "${libdir}/python3.5/__pycache__/shutil.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/cmd.py",
- "${libdir}/python3.5/fnmatch.py",
- "${libdir}/python3.5/glob.py",
- "${libdir}/python3.5/shlex.py",
- "${libdir}/python3.5/shutil.py"
+ "${libdir}/python${PYTHON_MAJMIN}/runpy.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/runpy.*.pyc"
+ ]
+ },
+ "shell": {
+ "summary": "Python shell-like functionality",
"rdepends": [
"compression",
"core",
"stringold",
"unixadmin"
],
- "summary": "Python shell-like functionality"
- },
- "smtpd": {
- "cached": [
- "${libdir}/python3.5/__pycache__/asynchat.*.pyc",
- "${libdir}/python3.5/__pycache__/asyncore.*.pyc",
- "${libdir}/python3.5/__pycache__/smtpd.*.pyc"
- ],
"files": [
- "${bindir}/smtpd.py",
- "${libdir}/python3.5/asynchat.py",
- "${libdir}/python3.5/asyncore.py",
- "${libdir}/python3.5/smtpd.py"
+ "${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"
],
+ "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"
+ ]
+ },
+ "smtpd": {
+ "summary": "Python Simple Mail Transport Daemon",
"rdepends": [
"core",
"crypt",
@@ -973,130 +974,109 @@
"netclient",
"stringold"
],
- "summary": "Python Simple Mail Transport Daemon"
- },
- "sqlite3": {
- "cached": [
- "${libdir}/python3.5/sqlite3/__pycache__",
- "${libdir}/python3.5/sqlite3/__pycache__/dbapi2.*.pyc",
- "${libdir}/python3.5/sqlite3/__pycache__/dump.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/lib-dynload/_sqlite3.*.so",
- "${libdir}/python3.5/sqlite3/dbapi2.py",
- "${libdir}/python3.5/sqlite3/dump.py"
+ "${bindir}/smtpd.py",
+ "${libdir}/python${PYTHON_MAJMIN}/asynchat.py",
+ "${libdir}/python${PYTHON_MAJMIN}/asyncore.py",
+ "${libdir}/python${PYTHON_MAJMIN}/smtpd.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/asynchat.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/asyncore.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/smtpd.*.pyc"
+ ]
+ },
+ "sqlite3": {
+ "summary": "Python Sqlite3 database support",
"rdepends": [
"core",
"datetime"
],
- "summary": "Python Sqlite3 database support"
- },
- "sqlite3-tests": {
- "cached": [],
"files": [
- "${libdir}/python3.5/sqlite3/test"
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sqlite3.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/sqlite3"
],
- "rdepends": [
- "core",
- "tests"
- ],
- "summary": "Python Sqlite3 database support tests"
+ "cached": []
},
"stringold": {
- "cached": [
- "${libdir}/python3.5/__pycache__/string.*.pyc"
- ],
- "files": [
- "${libdir}/python3.5/string.py"
- ],
+ "summary": "Python string APIs [deprecated]",
"rdepends": [
"core"
],
- "summary": "Python string APIs [deprecated]"
- },
- "syslog": {
- "cached": [],
"files": [
- "${libdir}/python3.5/lib-dynload/syslog.*.so"
+ "${libdir}/python${PYTHON_MAJMIN}/string.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/string.*.pyc"
+ ]
+ },
+ "syslog": {
+ "summary": "Python syslog interface",
"rdepends": [
"core"
],
- "summary": "Python syslog interface"
- },
- "terminal": {
- "cached": [
- "${libdir}/python3.5/__pycache__/pty.*.pyc",
- "${libdir}/python3.5/__pycache__/tty.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/pty.py",
- "${libdir}/python3.5/tty.py"
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/syslog.*.so"
],
+ "cached": []
+ },
+ "terminal": {
+ "summary": "Python terminal controlling support",
"rdepends": [
"core",
"io"
],
- "summary": "Python terminal controlling support"
- },
- "tests": {
- "cached": [],
"files": [
- "${libdir}/python3.5/test"
+ "${libdir}/python${PYTHON_MAJMIN}/pty.py",
+ "${libdir}/python${PYTHON_MAJMIN}/tty.py"
],
- "rdepends": [
- "core"
- ],
- "summary": "Python tests"
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pty.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tty.*.pyc"
+ ]
},
"threading": {
- "cached": [
- "${libdir}/python3.5/__pycache__/_dummy_thread.*.pyc",
- "${libdir}/python3.5/__pycache__/_threading_local.*.pyc",
- "${libdir}/python3.5/__pycache__/dummy_threading.*.pyc",
- "${libdir}/python3.5/__pycache__/queue.*.pyc"
- ],
- "files": [
- "${libdir}/python3.5/_dummy_thread.py",
- "${libdir}/python3.5/_threading_local.py",
- "${libdir}/python3.5/dummy_threading.py",
- "${libdir}/python3.5/queue.py"
- ],
+ "summary": "Python threading & synchronization support",
"rdepends": [
"core"
],
- "summary": "Python threading & synchronization support"
- },
- "tkinter": {
- "cached": [],
"files": [
- "${libdir}/python3.5/tkinter"
+ "${libdir}/python${PYTHON_MAJMIN}/_dummy_thread.py",
+ "${libdir}/python${PYTHON_MAJMIN}/_threading_local.py",
+ "${libdir}/python${PYTHON_MAJMIN}/dummy_threading.py",
+ "${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__/dummy_threading.*.pyc",
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/queue.*.pyc"
+ ]
+ },
+ "tkinter": {
+ "summary": "Python Tcl/Tk bindings",
"rdepends": [
"core"
],
- "summary": "Python Tcl/Tk bindings"
- },
- "typing": {
- "cached": [
- "${libdir}/python3.5/__pycache__/typing.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/typing.py"
+ "${libdir}/python${PYTHON_MAJMIN}/tkinter"
],
+ "cached": []
+ },
+ "typing": {
+ "summary": "Python typing support",
"rdepends": [
"core"
],
- "summary": "Python typing support"
- },
- "unittest": {
- "cached": [],
"files": [
- "${libdir}/python3.5/unittest",
- "${libdir}/python3.5/unittest/",
- "${libdir}/python3.5/unittest/__pycache__"
+ "${libdir}/python${PYTHON_MAJMIN}/typing.py"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/typing.*.pyc"
+ ]
+ },
+ "unittest": {
+ "summary": "Python unit testing framework",
"rdepends": [
"core",
"difflib",
@@ -1105,45 +1085,50 @@
"shell",
"stringold"
],
- "summary": "Python unit testing framework"
- },
- "unixadmin": {
- "cached": [
- "${libdir}/python3.5/__pycache__/getpass.*.pyc"
- ],
"files": [
- "${libdir}/python3.5/getpass.py",
- "${libdir}/python3.5/lib-dynload/grp.*.so",
- "${libdir}/python3.5/lib-dynload/nis.*.so"
+ "${libdir}/python${PYTHON_MAJMIN}/unittest",
+ "${libdir}/python${PYTHON_MAJMIN}/unittest/",
+ "${libdir}/python${PYTHON_MAJMIN}/unittest/__pycache__"
],
+ "cached": []
+ },
+ "unixadmin": {
+ "summary": "Python Unix administration support",
"rdepends": [
"core",
"io"
],
- "summary": "Python Unix administration support"
- },
- "xml": {
- "cached": [],
"files": [
- "${libdir}/python3.5/lib-dynload/_elementtree.*.so",
- "${libdir}/python3.5/lib-dynload/pyexpat.*.so",
- "${libdir}/python3.5/xml"
+ "${libdir}/python${PYTHON_MAJMIN}/getpass.py",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/grp.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/nis.*.so"
],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/getpass.*.pyc"
+ ]
+ },
+ "xml": {
+ "summary": "Python basic XML support",
"rdepends": [
"core"
],
- "summary": "Python basic XML support"
- },
- "xmlrpc": {
- "cached": [],
"files": [
- "${libdir}/python3.5/xmlrpc",
- "${libdir}/python3.5/xmlrpc/__pycache__"
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_elementtree.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/pyexpat.*.so",
+ "${libdir}/python${PYTHON_MAJMIN}/xml"
],
+ "cached": []
+ },
+ "xmlrpc": {
+ "summary": "Python XML-RPC support",
"rdepends": [
"core",
"xml"
],
- "summary": "Python XML-RPC support"
+ "files": [
+ "${libdir}/python${PYTHON_MAJMIN}/xmlrpc",
+ "${libdir}/python${PYTHON_MAJMIN}/xmlrpc/__pycache__"
+ ],
+ "cached": []
}
-} \ No newline at end of file
+}
diff --git a/meta/recipes-devtools/python/python3/regen-all.patch b/meta/recipes-devtools/python/python3/regen-all.patch
new file mode 100644
index 00000000000..36b9d9d9196
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/regen-all.patch
@@ -0,0 +1,25 @@
+python3-native: run regen-importlib target correctly
+
+regen-importlib depends on other regen- targets, so we must be sure to
+run it after (most of) the others. In reality, we do not need to run it
+at all since "make" will invoke it, if necessary. We do not want to
+rely on that, though.
+
+Upstream-Status: Pending
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+
+
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -709,7 +709,8 @@ regen-importlib: Programs/_freeze_import
+ ############################################################################
+ # Regenerate all generated files
+
+-regen-all: regen-opcode regen-opcode-targets regen-typeslots regen-grammar regen-ast regen-importlib
++regen-all: regen-opcode regen-opcode-targets regen-typeslots regen-grammar regen-ast
++ $(MAKE) regen-importlib
+
+ ############################################################################
+ # Special rules for object files
diff --git a/meta/recipes-devtools/python/python3/shutil-follow-symlink-fix.patch b/meta/recipes-devtools/python/python3/shutil-follow-symlink-fix.patch
deleted file mode 100644
index 802b1c72038..00000000000
--- a/meta/recipes-devtools/python/python3/shutil-follow-symlink-fix.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-shutils should consider symlinks
-
--Khem
-
-Upstream-Status: Pending
-
---- a/Lib/shutil.py 2013-01-29 12:31:06.926555779 -0800
-+++ b/Lib/shutil.py 2013-01-29 16:31:39.097554182 -0800
-@@ -132,7 +132,7 @@ def copymode(src, dst, *, follow_symlink
- st = stat_func(src)
- chmod_func(dst, stat.S_IMODE(st.st_mode))
-
--if hasattr(os, 'listxattr'):
-+if hasattr(os, 'listxattr') and os.listxattr in os.supports_follow_symlinks:
- def _copyxattr(src, dst, *, follow_symlinks=True):
- """Copy extended filesystem attributes from `src` to `dst`.
-
diff --git a/meta/recipes-devtools/python/python3/signal.patch b/meta/recipes-devtools/python/python3/signal.patch
new file mode 100644
index 00000000000..534a097771c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/signal.patch
@@ -0,0 +1,56 @@
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From 4315389df3c4e8c1f94a18ab11a4b234762132b1 Mon Sep 17 00:00:00 2001
+From: Antoine Pitrou <pitrou@free.fr>
+Date: Mon, 23 Apr 2018 22:22:49 +0200
+Subject: [PATCH] [3.6] bpo-33329: Fix multiprocessing regression on newer
+ glibcs (GH-6575) (GH-6582)
+
+Starting with glibc 2.27.9000-xxx, sigaddset() can return EINVAL for some
+reserved signal numbers between 1 and NSIG. The `range(1, NSIG)` idiom
+is commonly used to select all signals for blocking with `pthread_sigmask`.
+So we ignore the sigaddset() return value until we expose sigfillset()
+to provide a better idiom.
+(cherry picked from commit 25038ecfb665bef641abf8cb61afff7505b0e008)
+---
+ .../next/Library/2018-04-23-13-21-39.bpo-33329.lQ-Eod.rst | 1 +
+ Modules/signalmodule.c | 14 ++++++++------
+ 2 files changed, 9 insertions(+), 6 deletions(-)
+ create mode 100644 Misc/NEWS.d/next/Library/2018-04-23-13-21-39.bpo-33329.lQ-Eod.rst
+
+diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
+index e0d06b434d..138e74e8a9 100644
+--- a/Modules/signalmodule.c
++++ b/Modules/signalmodule.c
+@@ -744,7 +744,6 @@ iterable_to_sigset(PyObject *iterable, sigset_t *mask)
+ int result = -1;
+ PyObject *iterator, *item;
+ long signum;
+- int err;
+
+ sigemptyset(mask);
+
+@@ -766,11 +765,14 @@ iterable_to_sigset(PyObject *iterable, sigset_t *mask)
+ Py_DECREF(item);
+ if (signum == -1 && PyErr_Occurred())
+ goto error;
+- if (0 < signum && signum < NSIG)
+- err = sigaddset(mask, (int)signum);
+- else
+- err = 1;
+- if (err) {
++ if (0 < signum && signum < NSIG) {
++ /* bpo-33329: ignore sigaddset() return value as it can fail
++ * for some reserved signals, but we want the `range(1, NSIG)`
++ * idiom to allow selecting all valid signals.
++ */
++ (void) sigaddset(mask, (int)signum);
++ }
++ else {
+ PyErr_Format(PyExc_ValueError,
+ "signal number %ld out of range", signum);
+ goto error;
+--
+2.11.0
+
diff --git a/meta/recipes-devtools/python/python3_3.5.5.bb b/meta/recipes-devtools/python/python3_3.5.6.bb
index f893b846adf..6085e36b7db 100644
--- a/meta/recipes-devtools/python/python3_3.5.5.bb
+++ b/meta/recipes-devtools/python/python3_3.5.6.bb
@@ -1,15 +1,13 @@
-require recipes-devtools/python/python.inc
+require recipes-devtools/python/python3.inc
-DEPENDS = "python3-native libffi bzip2 gdbm openssl sqlite3 zlib virtual/libintl xz"
+DEPENDS = "python3-native libffi bzip2 gdbm openssl \
+ sqlite3 zlib virtual/libintl xz qemu-native \
+ qemu-helper-native virtual/crypt"
-PR = "${INC_PR}.0"
-PYTHON_MAJMIN = "3.5"
-PYTHON_BINABI= "${PYTHON_MAJMIN}m"
DISTRO_SRC_URI ?= "file://sitecustomize.py"
DISTRO_SRC_URI_linuxstdbase = ""
SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
file://python-config.patch \
-file://0001-cross-compile-support.patch \
file://030-fixup-include-dirs.patch \
file://070-dont-clean-ipkg-install.patch \
file://080-distutils-dont_adjust_files.patch \
@@ -27,7 +25,6 @@ SRC_URI += "\
file://cgi_py.patch \
file://host_include_contamination.patch \
file://python-3.3-multilib.patch \
- file://shutil-follow-symlink-fix.patch \
file://sysroot-include-headers.patch \
file://unixccompiler.patch \
file://avoid-ncursesw-include-path.patch \
@@ -37,18 +34,25 @@ SRC_URI += "\
file://configure.ac-fix-LIBPL.patch \
file://0001-Issue-21272-Use-_sysconfigdata.py-to-initialize-dist.patch \
file://pass-missing-libraries-to-Extension-for-mul.patch \
+ file://Use-correct-CFLAGS-for-extensions-when-cross-compili.patch \
+ file://0002-Makefile-add-target-to-split-profile-generation.patch \
+ file://float-endian.patch \
+ file://ftplib.patch \
+ file://signal.patch \
+ file://0001-Issue-28043-SSLContext-has-improved-default-settings.patch \
+ file://0002-bpo-29136-Add-TLS-1.3-cipher-suites-and-OP_NO_TLSv1_.patch \
+ file://0003-bpo-32947-Fixes-for-TLS-1.3-and-OpenSSL-1.1.1-GH-876.patch \
+ file://0004-bpo-33570-TLS-1.3-ciphers-for-OpenSSL-1.1.1-GH-6976.patch \
+ file://0005-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-2305.patch \
"
-SRC_URI[md5sum] = "f3763edf9824d5d3a15f5f646083b6e0"
-SRC_URI[sha256sum] = "063d2c3b0402d6191b90731e0f735c64830e7522348aeb7ed382a83165d45009"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b6ec515b22618f55fa07276b897bacea"
+inherit multilib_header python3native update-alternatives qemu
-# exclude pre-releases for both python 2.x and 3.x
-UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
+MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}"
-S = "${WORKDIR}/Python-${PV}"
-
-inherit autotools multilib_header python3native pkgconfig
+ALTERNATIVE_${PN}-dev = "python-config"
+ALTERNATIVE_LINK_NAME[python-config] = "${bindir}/python${PYTHON_BINABI}-config"
+ALTERNATIVE_TARGET[python-config] = "${bindir}/python${PYTHON_BINABI}-config-${MULTILIB_SUFFIX}"
CONFIGUREOPTS += " --with-system-ffi "
@@ -65,37 +69,46 @@ SDK_CC_ARCH += "-DNDEBUG -fno-inline"
EXTRA_OEMAKE += "CROSS_COMPILE=yes"
EXTRA_OECONF += "CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/ --without-ensurepip"
+PYTHON3_PROFILE_TASK ?= "./python -m test.regrtest --pgo test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_support || true"
+
export CROSS_COMPILE = "${TARGET_PREFIX}"
-export _PYTHON_PROJECT_BASE = "${B}"
-export _PYTHON_PROJECT_SRC = "${S}"
export CCSHARED = "-fPIC"
# Fix cross compilation of different modules
export CROSSPYTHONPATH = "${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/:${B}/build/lib.linux-${TARGET_ARCH}-${PYTHON_MAJMIN}:${S}/Lib:${S}/Lib/plat-linux"
-# No ctypes option for python 3
-PYTHONLSBOPTS = ""
-
-PACKAGECONFIG ??= "readline"
+PACKAGECONFIG ??= "readline ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'pgo', '', d)}"
PACKAGECONFIG[readline] = ",,readline"
+# Use profile guided optimisation by running PyBench inside qemu-user
+PACKAGECONFIG[pgo] = "--enable-optimizations"
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-linux*
- include=${STAGING_INCDIR} ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
- ${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 -
+run_make() {
+ oe_runmake PGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
+ HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
+ STAGING_LIBDIR=${STAGING_LIBDIR} \
+ STAGING_INCDIR=${STAGING_INCDIR} \
+ STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
+ LIB=${baselib} \
+ ARCH=${TARGET_ARCH} \
+ OPT="${CFLAGS}" \
+ "$@"
+}
+do_compile() {
+ # regenerate platform specific files, because they depend on system headers
+ cd ${S}/Lib/plat-linux*
+ include=${STAGING_INCDIR} ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
+ ${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
@@ -115,23 +128,23 @@ do_compile() {
# then call do_install twice we get Makefile.orig == Makefile.sysroot
install -m 0644 Makefile Makefile.sysroot
- oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
- HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
- STAGING_LIBDIR=${STAGING_LIBDIR} \
- STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
- STAGING_INCDIR=${STAGING_INCDIR} \
- LIB=${baselib} \
- ARCH=${TARGET_ARCH} \
- OPT="${CFLAGS}" libpython3.so
-
- oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
- HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
- STAGING_LIBDIR=${STAGING_LIBDIR} \
- STAGING_INCDIR=${STAGING_INCDIR} \
- STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
- LIB=${baselib} \
- ARCH=${TARGET_ARCH} \
- OPT="${CFLAGS}"
+ if ${@bb.utils.contains('PACKAGECONFIG', 'pgo', 'true', 'false', d)}; then
+ run_make profile-opt
+ 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
+ bbnote Gathering profiling data
+ ./pgo-wrapper ${PYTHON3_PROFILE_TASK}
+ bbnote Profiling data gathered, rebuilding
+ run_make clean_and_use_profile
+ else
+ run_make libpython3.so
+ run_make
+ fi
}
do_install() {
@@ -144,23 +157,13 @@ do_install() {
# rerun the build once again with original makefile this time
# run install in a separate step to avoid compile/install race
- oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
- HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
- STAGING_LIBDIR=${STAGING_LIBDIR} \
- STAGING_INCDIR=${STAGING_INCDIR} \
- STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
- LIB=${baselib} \
- ARCH=${TARGET_ARCH} \
- DESTDIR=${D} LIBDIR=${libdir}
-
- oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
- HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
- STAGING_LIBDIR=${STAGING_LIBDIR} \
- STAGING_INCDIR=${STAGING_INCDIR} \
- STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \
- LIB=${baselib} \
- ARCH=${TARGET_ARCH} \
- DESTDIR=${D} LIBDIR=${libdir} install
+ if ${@bb.utils.contains('PACKAGECONFIG', 'pgo', 'true', 'false', d)}; then
+ run_make DESTDIR=${D} LIBDIR=${libdir} build_all_use_profile
+ else
+ run_make DESTDIR=${D} LIBDIR=${libdir}
+ fi
+
+ run_make DESTDIR=${D} LIBDIR=${libdir} install
# avoid conflict with 2to3 from Python 2
rm -f ${D}/${bindir}/2to3
@@ -176,7 +179,7 @@ do_install() {
}
do_install_append_class-nativesdk () {
- create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo'
+ 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"
@@ -207,6 +210,8 @@ py_package_preprocess () {
${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} \
-c "from py_compile import compile; compile('./${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py', optimize=2)"
cd -
+
+ mv ${PKGD}/${bindir}/python${PYTHON_BINABI}-config ${PKGD}/${bindir}/python${PYTHON_BINABI}-config-${MULTILIB_SUFFIX}
}
# manual dependency additions
@@ -247,7 +252,7 @@ RPROVIDES_${PN} += "${PN}-modules"
INCLUDE_PYCS ?= "1"
python(){
- import json
+ 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
@@ -255,7 +260,7 @@ python(){
bb.parse.mark_dependency(d, filename)
with open(filename) as manifest_file:
- python_manifest=json.load(manifest_file)
+ python_manifest=json.load(manifest_file, object_pairs_hook=collections.OrderedDict)
include_pycs = d.getVar('INCLUDE_PYCS')
@@ -289,8 +294,6 @@ python(){
d.appendVar('RDEPENDS_' + pypackage, ' ' + pn + '-' + value)
d.setVar('SUMMARY_' + pypackage, python_manifest[key]['summary'])
- # We need to ensure staticdev packages match for files first so we sort in reverse
- newpackages.sort(reverse=True)
# Prepending so to avoid python-misc getting everything
packages = newpackages + packages
d.setVar('PACKAGES', ' '.join(packages))
@@ -311,7 +314,7 @@ do_create_manifest() {
cd ${WORKDIR}
# This needs to be executed by python-native and NOT by HOST's python
- nativepython3 create_manifest3.py
+ nativepython3 create_manifest3.py ${PYTHON_MAJMIN}
cp python3-manifest.json.new ${THISDIR}/python3/python3-manifest.json
}
diff --git a/meta/recipes-devtools/python/python_2.7.14.bb b/meta/recipes-devtools/python/python_2.7.15.bb
index 0a09926dfba..472c1da4bf7 100644
--- a/meta/recipes-devtools/python/python_2.7.14.bb
+++ b/meta/recipes-devtools/python/python_2.7.15.bb
@@ -1,6 +1,7 @@
require python.inc
-DEPENDS = "python-native libffi bzip2 gdbm openssl readline sqlite3 zlib"
+DEPENDS = "python-native libffi bzip2 gdbm openssl \
+ readline sqlite3 zlib virtual/crypt"
PR = "${INC_PR}"
@@ -129,7 +130,7 @@ do_install() {
}
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'
+ 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"
@@ -206,7 +207,7 @@ RPROVIDES_${PN} += "${PN}-modules"
INCLUDE_PYCS ?= "1"
python(){
- import json
+ 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
@@ -214,7 +215,7 @@ python(){
bb.parse.mark_dependency(d, filename)
with open(filename) as manifest_file:
- python_manifest=json.load(manifest_file)
+ python_manifest=json.load(manifest_file, object_pairs_hook=collections.OrderedDict)
include_pycs = d.getVar('INCLUDE_PYCS')
@@ -247,8 +248,6 @@ python(){
d.appendVar('RDEPENDS_' + pypackage, ' ' + pn + '-' + value)
d.setVar('SUMMARY_' + pypackage, python_manifest[key]['summary'])
- # We need to ensure staticdev packages match for files first so we sort in reverse
- newpackages.sort(reverse=True)
# Prepending so to avoid python-misc getting everything
packages = newpackages + packages
d.setVar('PACKAGES', ' '.join(packages))
diff --git a/meta/recipes-devtools/qemu/qemu-targets.inc b/meta/recipes-devtools/qemu/qemu-targets.inc
index 66dd675ed40..810401daa69 100644
--- a/meta/recipes-devtools/qemu/qemu-targets.inc
+++ b/meta/recipes-devtools/qemu/qemu-targets.inc
@@ -7,7 +7,7 @@ def get_qemu_target_list(d):
archs = d.getVar('QEMU_TARGETS').split()
tos = d.getVar('HOST_OS')
softmmuonly = ""
- for arch in ['ppcemb']:
+ for arch in ['ppcemb', 'lm32']:
if arch in archs:
softmmuonly += arch + "-softmmu,"
archs.remove(arch)
diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
index dc73df813a7..b05c1cee9eb 100644
--- a/meta/recipes-devtools/qemu/qemu.inc
+++ b/meta/recipes-devtools/qemu/qemu.inc
@@ -5,11 +5,11 @@ DEPENDS = "glib-2.0 zlib pixman"
RDEPENDS_${PN}_class-target += "bash"
require qemu-targets.inc
-inherit autotools pkgconfig bluetooth
+inherit pkgconfig bluetooth
BBCLASSEXTEND = "native nativesdk"
# QEMU_TARGETS is overridable variable
-QEMU_TARGETS ?= "arm aarch64 i386 mips mipsel mips64 mips64el ppc sh4 x86_64"
+QEMU_TARGETS ?= "arm aarch64 i386 mips mipsel mips64 mips64el ppc riscv32 riscv64 sh4 x86_64"
EXTRA_OECONF = " \
--prefix=${prefix} \
@@ -27,6 +27,7 @@ EXTRA_OECONF = " \
--disable-werror \
--target-list=${@get_qemu_target_list(d)} \
--extra-cflags='${CFLAGS}' \
+ ${PACKAGECONFIG_CONFARGS} \
"
EXTRA_OECONF_append_class-native = " --python=python2.7"
@@ -36,27 +37,23 @@ LDFLAGS_append_class-native = " -fuse-ld=bfd"
export LIBTOOL="${HOST_SYS}-libtool"
+B = "${WORKDIR}/build"
+
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
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$BHOST_PKGCONFIG_PATH
fi
-
- # Alter target makefiles to accept CFLAGS set via env
- sed -i -r \
- -e 's/^(C|OP_C|HELPER_C)FLAGS=/\1FLAGS+=/' \
- "${S}"/Makefile "${S}"/Makefile.target
}
do_configure() {
${S}/configure ${EXTRA_OECONF}
- test ! -e ${S}/target-i386/beginend_funcs.sh || chmod a+x ${S}/target-i386/beginend_funcs.sh
}
do_install () {
- export STRIP="true"
- autotools_do_install
+ export STRIP=""
+ oe_runmake 'DESTDIR=${D}' install
}
# The following fragment will create a wrapper for qemu-mips user emulation
@@ -74,10 +71,9 @@ do_install_append() {
# END of qemu-mips workaround
PACKAGECONFIG ??= " \
- fdt sdl \
- fdt sdl kvm \
- ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \
- "
+ fdt sdl kvm \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \
+"
PACKAGECONFIG_class-native ??= "fdt alsa kvm"
PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm"
@@ -88,7 +84,7 @@ PACKAGECONFIG_class-native_remove = "${@'kvm' if not os.path.exists('/usr/includ
PACKAGECONFIG_remove_darwin = "kvm"
PACKAGECONFIG_remove_mingw32 = "kvm"
-PACKAGECONFIG[sdl] = "--enable-sdl,--disable-sdl,libsdl"
+PACKAGECONFIG[sdl] = "--enable-sdl --with-sdlabi=2.0,--disable-sdl,libsdl2"
PACKAGECONFIG[virtfs] = "--enable-virtfs --enable-attr,--disable-virtfs,libcap attr,"
PACKAGECONFIG[aio] = "--enable-linux-aio,--disable-linux-aio,libaio,"
PACKAGECONFIG[xfs] = "--enable-xfsctl,--disable-xfsctl,xfsprogs,"
@@ -115,5 +111,10 @@ PACKAGECONFIG[bzip2] = "--enable-bzip2,--disable-bzip2,bzip2"
PACKAGECONFIG[bluez] = "--enable-bluez,--disable-bluez,${BLUEZ}"
PACKAGECONFIG[libiscsi] = "--enable-libiscsi,--disable-libiscsi"
PACKAGECONFIG[kvm] = "--enable-kvm,--disable-kvm"
+PACKAGECONFIG[virglrenderer] = "--enable-virglrenderer,--disable-virglrenderer,virglrenderer"
+# spice will be in meta-networking layer
+PACKAGECONFIG[spice] = "--enable-spice,--disable-spice,spice"
+# usbredir will be in meta-networking layer
+PACKAGECONFIG[usb-redir] = "--enable-usb-redir,--disable-usb-redir,usbredir"
INSANE_SKIP_${PN} = "arch"
diff --git a/meta/recipes-devtools/qemu/qemu/0001-arm-translate-a64-treat-DISAS_UPDATE-as-variant-of-D.patch b/meta/recipes-devtools/qemu/qemu/0001-arm-translate-a64-treat-DISAS_UPDATE-as-variant-of-D.patch
deleted file mode 100644
index f90cae694ce..00000000000
--- a/meta/recipes-devtools/qemu/qemu/0001-arm-translate-a64-treat-DISAS_UPDATE-as-variant-of-D.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From a75a52d62418dafe462be4fe30485501d1010bb9 Mon Sep 17 00:00:00 2001
-From: Victor Kamensky <kamensky@cisco.com>
-Date: Fri, 23 Mar 2018 18:26:45 +0000
-Subject: [PATCH] arm/translate-a64: treat DISAS_UPDATE as variant of
- DISAS_EXIT
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-In OE project 4.15 linux kernel boot hang was observed under
-single cpu aarch64 qemu. Kernel code was in a loop waiting for
-vtimer arrival, spinning in TC generated blocks, while interrupt
-was pending unprocessed. This happened because when qemu tried to
-handle vtimer interrupt target had interrupts disabled, as
-result flag indicating TCG exit, cpu->icount_decr.u16.high,
-was cleared but arm_cpu_exec_interrupt function did not call
-arm_cpu_do_interrupt to process interrupt. Later when target
-reenabled interrupts, it happened without exit into main loop, so
-following code that waited for result of interrupt execution
-run in infinite loop.
-
-To solve the problem instructions that operate on CPU sys state
-(i.e enable/disable interrupt), and marked as DISAS_UPDATE,
-should be considered as DISAS_EXIT variant, and should be
-forced to exit back to main loop so qemu will have a chance
-processing pending CPU state updates, including pending
-interrupts.
-
-This change brings consistency with how DISAS_UPDATE is treated
-in aarch32 case.
-
-CC: Peter Maydell <peter.maydell@linaro.org>
-CC: Alex Bennée <alex.bennee@linaro.org>
-CC: qemu-stable@nongnu.org
-Suggested-by: Peter Maydell <peter.maydell@linaro.org>
-Signed-off-by: Victor Kamensky <kamensky@cisco.com>
-Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
-Message-id: 1521526368-1996-1-git-send-email-kamensky@cisco.com
-Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-Upstream-Status: Backport
----
- target/arm/translate-a64.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
-index 31ff047..327513e 100644
---- a/target/arm/translate-a64.c
-+++ b/target/arm/translate-a64.c
-@@ -13378,12 +13378,12 @@ static void aarch64_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu)
- case DISAS_UPDATE:
- gen_a64_set_pc_im(dc->pc);
- /* fall through */
-- case DISAS_JUMP:
-- tcg_gen_lookup_and_goto_ptr();
-- break;
- case DISAS_EXIT:
- tcg_gen_exit_tb(0);
- break;
-+ case DISAS_JUMP:
-+ tcg_gen_lookup_and_goto_ptr();
-+ break;
- case DISAS_NORETURN:
- case DISAS_SWI:
- break;
---
-2.7.4
-
diff --git a/meta/recipes-devtools/qemu/qemu/disable-grabs.patch b/meta/recipes-devtools/qemu/qemu/0001-sdl.c-allow-user-to-disable-pointer-grabs.patch
index 77117890f48..b8a9206fee6 100644
--- a/meta/recipes-devtools/qemu/qemu/disable-grabs.patch
+++ b/meta/recipes-devtools/qemu/qemu/0001-sdl.c-allow-user-to-disable-pointer-grabs.patch
@@ -1,3 +1,11 @@
+From 18fb45c34a473c4ba247bb82bcea94b7c3ba493a Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Wed, 18 Sep 2013 14:04:54 +0100
+Subject: [PATCH] sdl.c: allow user to disable pointer grabs
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
When the pointer enters the Qemu window it calls SDL_WM_GrabInput, which calls
XGrabPointer in a busyloop until it returns GrabSuccess. However if there's already
a pointer grab (screen is locked, a menu is open) then qemu will hang until the
@@ -12,34 +20,28 @@ the current grabbing behaviour for everyone else.
Upstream-Status: Pending
Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 4b1988ecb01a178269ec0513a75f2ec620c7ef6a Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Wed, 18 Sep 2013 14:04:54 +0100
-Subject: [PATCH] sdl.c: allow user to disable pointer grabs
-
-Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Eric Bénard <eric@eukrea.com>
---
- ui/sdl.c | 12 ++++++++++--
- 1 file changed, 10 insertions(+), 2 deletions(-)
+ ui/sdl.c | 13 +++++++++++--
+ 1 file changed, 11 insertions(+), 2 deletions(-)
-Index: qemu-2.11.1/ui/sdl.c
-===================================================================
---- qemu-2.11.1.orig/ui/sdl.c
-+++ qemu-2.11.1/ui/sdl.c
-@@ -63,6 +63,10 @@ static SDL_PixelFormat host_format;
- static int scaling_active = 0;
- static Notifier mouse_mode_notifier;
- static int idle_counter;
+diff --git a/ui/sdl.c b/ui/sdl.c
+index a5fd503c25..ab8d1b1eb1 100644
+--- a/ui/sdl.c
++++ b/ui/sdl.c
+@@ -68,6 +68,11 @@ static int idle_counter;
+ static const guint16 *keycode_map;
+ static size_t keycode_maplen;
+
+#ifndef True
+#define True 1
+#endif
+static doing_grabs = True;
-
++
#define SDL_REFRESH_INTERVAL_BUSY 10
#define SDL_MAX_IDLE_COUNT (2 * GUI_REFRESH_INTERVAL_DEFAULT \
-@@ -431,14 +435,16 @@ static void sdl_grab_start(void)
+ / SDL_REFRESH_INTERVAL_BUSY + 1)
+@@ -398,14 +403,16 @@ static void sdl_grab_start(void)
}
} else
sdl_hide_cursor();
@@ -58,7 +60,7 @@ Index: qemu-2.11.1/ui/sdl.c
gui_grab = 0;
sdl_show_cursor();
sdl_update_caption();
-@@ -986,6 +992,8 @@ void sdl_display_init(DisplayState *ds,
+@@ -945,6 +952,8 @@ static void sdl1_display_init(DisplayState *ds, DisplayOptions *o)
* This requires SDL >= 1.2.14. */
setenv("SDL_DISABLE_LOCK_KEYS", "1", 1);
diff --git a/meta/recipes-devtools/qemu/qemu/wacom.patch b/meta/recipes-devtools/qemu/qemu/0002-qemu-Add-missing-wacom-HID-descriptor.patch
index cd06aa4ac61..90e4b800b52 100644
--- a/meta/recipes-devtools/qemu/qemu/wacom.patch
+++ b/meta/recipes-devtools/qemu/qemu/0002-qemu-Add-missing-wacom-HID-descriptor.patch
@@ -1,19 +1,27 @@
+From 41603f745caaecdc7c9d760fb7d2df01ccc60128 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
+
The USB wacom device is missing a HID descriptor which causes it
to fail to operate with recent kernels (e.g. 3.17).
-This patch adds a HID desriptor to the device, based upon one from
+This patch adds a HID desriptor to the device, based upon one from
real wcom device.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Upstream-Status: Submitted
2014/11/27
+---
+ hw/usb/dev-wacom.c | 94 +++++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 93 insertions(+), 1 deletion(-)
-Index: qemu-2.1.0/hw/usb/dev-wacom.c
-===================================================================
---- qemu-2.1.0.orig/hw/usb/dev-wacom.c 2014-08-01 15:12:17.000000000 +0100
-+++ qemu-2.1.0/hw/usb/dev-wacom.c 2014-10-12 12:13:30.540306042 +0100
-@@ -68,6 +68,89 @@
+diff --git a/hw/usb/dev-wacom.c b/hw/usb/dev-wacom.c
+index bf70013059..2f6e129732 100644
+--- a/hw/usb/dev-wacom.c
++++ b/hw/usb/dev-wacom.c
+@@ -72,6 +72,89 @@ static const USBDescStrings desc_strings = {
[STR_SERIALNUMBER] = "1",
};
@@ -103,7 +111,7 @@ Index: qemu-2.1.0/hw/usb/dev-wacom.c
static const USBDescIface desc_iface_wacom = {
.bInterfaceNumber = 0,
.bNumEndpoints = 1,
-@@ -85,7 +168,7 @@
+@@ -89,7 +172,7 @@ static const USBDescIface desc_iface_wacom = {
0x00, /* u8 country_code */
0x01, /* u8 num_descriptors */
0x22, /* u8 type: Report */
@@ -112,7 +120,7 @@ Index: qemu-2.1.0/hw/usb/dev-wacom.c
},
},
},
-@@ -265,6 +350,15 @@
+@@ -269,6 +352,15 @@ static void usb_wacom_handle_control(USBDevice *dev, USBPacket *p,
}
switch (request) {
diff --git a/meta/recipes-devtools/qemu/qemu/add-ptest-in-makefile-v10.patch b/meta/recipes-devtools/qemu/qemu/0003-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch
index e9639820bea..0d43271c479 100644
--- a/meta/recipes-devtools/qemu/qemu/add-ptest-in-makefile-v10.patch
+++ b/meta/recipes-devtools/qemu/qemu/0003-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch
@@ -1,19 +1,23 @@
-From 4201a5791fc4798a45a9b9f881602d7bacb74ed1 Mon Sep 17 00:00:00 2001
+From a9a669448ba6f1b295427e271d99f61736fc5189 Mon Sep 17 00:00:00 2001
From: Juro Bystricky <juro.bystricky@intel.com>
Date: Thu, 31 Aug 2017 11:06:56 -0700
-Subject: Add subpackage -ptest which runs all unit test cases for qemu.
+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 f08b741..3d1b3e9 100644
+index 3b9a5e31a2..dfbcd728d7 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
-@@ -924,4 +924,12 @@ all: $(QEMU_IOTESTS_HELPERS-y)
+@@ -972,4 +972,12 @@ all: $(QEMU_IOTESTS_HELPERS-y)
-include $(wildcard tests/*.d)
-include $(wildcard tests/libqos/*.d)
diff --git a/meta/recipes-devtools/qemu/qemu/qemu-enlarge-env-entry-size.patch b/meta/recipes-devtools/qemu/qemu/0004-qemu-Add-addition-environment-space-to-boot-loader-q.patch
index c7425ab8d4f..5152dcafe5b 100644
--- a/meta/recipes-devtools/qemu/qemu/qemu-enlarge-env-entry-size.patch
+++ b/meta/recipes-devtools/qemu/qemu/0004-qemu-Add-addition-environment-space-to-boot-loader-q.patch
@@ -1,4 +1,8 @@
-qemu: Add addition environment space to boot loader qemu-system-mips
+From dd4404a334a545e9beafa1b1e41b3a8f35ef31a9 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
+ qemu-system-mips
Upstream-Status: Inappropriate - OE uses deep paths
@@ -10,14 +14,14 @@ to only 256 bytes. This patch expands the limit.
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Roy Li <rongqing.li@windriver.com>
---
- hw/mips/mips_malta.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ hw/mips/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 9d521cc..17c0391 100644
+index f6513a4fd5..d5efafb1e8 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
-@@ -53,7 +53,7 @@
+@@ -62,7 +62,7 @@
#define ENVP_ADDR 0x80002000l
#define ENVP_NB_ENTRIES 16
@@ -26,6 +30,3 @@ index 9d521cc..17c0391 100644
/* Hardware addresses */
#define FLASH_ADDRESS 0x1e000000ULL
---
-1.7.10.4
-
diff --git a/meta/recipes-devtools/qemu/qemu/0005-qemu-disable-Valgrind.patch b/meta/recipes-devtools/qemu/qemu/0005-qemu-disable-Valgrind.patch
new file mode 100644
index 00000000000..70baf0fb092
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/0005-qemu-disable-Valgrind.patch
@@ -0,0 +1,33 @@
+From 4475b3d97371e588540333988a97d7df3ec2c65a 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 0a19b033bc..69e05fb6c0 100755
+--- a/configure
++++ b/configure
+@@ -4895,15 +4895,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/pathlimit.patch b/meta/recipes-devtools/qemu/qemu/0006-qemu-Limit-paths-searched-during-user-mode-emulation.patch
index 57ab981c61e..a9d798cef62 100644
--- a/meta/recipes-devtools/qemu/qemu/pathlimit.patch
+++ b/meta/recipes-devtools/qemu/qemu/0006-qemu-Limit-paths-searched-during-user-mode-emulation.patch
@@ -1,3 +1,8 @@
+From c532bcdae8259b0f71723cda331ded4dbb0fa908 Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Wed, 9 Mar 2016 22:49:02 +0000
+Subject: [PATCH] qemu: Limit paths searched during user mode emulation
+
By default qemu builds a complete list of directories within the user
emulation sysroot (-L option). The OE sysroot directory is large and
this is confusing, for example it indexes all pkgdata. In particular this
@@ -8,18 +13,21 @@ things if/as/when it needs to. This drastically reduces the files it
reads and reduces memory usage and cleans up strace.
It would also avoid the infinite directory traversal bug in [YOCTO #6996]
-although the code could still be vulnerable if it parsed those specific
+although the code could still be vulnerable if it parsed those specific
paths.
RP
2016/3/9
Upstream-Status: Pending
+---
+ util/path.c | 44 ++++++++++++++++++++++----------------------
+ 1 file changed, 22 insertions(+), 22 deletions(-)
-Index: qemu-2.5.0/util/path.c
-===================================================================
---- qemu-2.5.0.orig/util/path.c
-+++ qemu-2.5.0/util/path.c
-@@ -19,6 +19,7 @@ struct pathelem
+diff --git a/util/path.c b/util/path.c
+index 7f9fc272fb..a416cd4ac2 100644
+--- a/util/path.c
++++ b/util/path.c
+@@ -15,6 +15,7 @@ struct pathelem
char *name;
/* Full path name, eg. /usr/gnemul/x86-linux/lib. */
char *pathname;
@@ -27,7 +35,7 @@ Index: qemu-2.5.0/util/path.c
struct pathelem *parent;
/* Children */
unsigned int num_entries;
-@@ -49,6 +50,7 @@ static struct pathelem *new_entry(const
+@@ -45,6 +46,7 @@ static struct pathelem *new_entry(const char *root,
new->name = g_strdup(name);
new->pathname = g_strdup_printf("%s/%s", root, name);
new->num_entries = 0;
@@ -35,7 +43,7 @@ Index: qemu-2.5.0/util/path.c
return new;
}
-@@ -57,15 +59,16 @@ static struct pathelem *new_entry(const
+@@ -53,15 +55,16 @@ static struct pathelem *new_entry(const char *root,
/* Not all systems provide this feature */
#if defined(DT_DIR) && defined(DT_UNKNOWN) && defined(DT_LNK)
# define dirent_type(dirent) ((dirent)->d_type)
@@ -55,7 +63,7 @@ Index: qemu-2.5.0/util/path.c
DIR *dir;
if ((dir = opendir(path->pathname)) != NULL) {
-@@ -78,6 +81,11 @@ static struct pathelem *add_dir_maybe(st
+@@ -74,6 +77,11 @@ static struct pathelem *add_dir_maybe(struct pathelem *path)
}
closedir(dir);
}
@@ -67,7 +75,7 @@ Index: qemu-2.5.0/util/path.c
return path;
}
-@@ -93,26 +101,16 @@ static struct pathelem *add_entry(struct
+@@ -89,26 +97,16 @@ static struct pathelem *add_entry(struct pathelem *root, const char *name,
e = &root->entries[root->num_entries-1];
*e = new_entry(root->pathname, root, name);
@@ -97,7 +105,7 @@ Index: qemu-2.5.0/util/path.c
{
unsigned int i, namelen;
-@@ -123,14 +121,18 @@ follow_path(const struct pathelem *curso
+@@ -119,14 +117,18 @@ follow_path(const struct pathelem *cursor, const char *name)
return cursor->pathname;
if (strneq(name, namelen, ".."))
@@ -119,7 +127,7 @@ Index: qemu-2.5.0/util/path.c
/* Not found */
return NULL;
-@@ -164,8 +166,6 @@ void init_paths(const char *prefix)
+@@ -160,8 +162,6 @@ void init_paths(const char *prefix)
g_free(base->name);
g_free(base);
base = NULL;
@@ -128,7 +136,7 @@ Index: qemu-2.5.0/util/path.c
}
}
-@@ -177,5 +177,5 @@ const char *path(const char *name)
+@@ -173,5 +173,5 @@ const char *path(const char *name)
if (!base || !name || name[0] != '/')
return name;
diff --git a/meta/recipes-devtools/qemu/qemu/0007-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch b/meta/recipes-devtools/qemu/qemu/0007-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch
new file mode 100644
index 00000000000..12456bb5c15
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/0007-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch
@@ -0,0 +1,25 @@
+From 2d29d52b6f755758cfca6af0bcfd78091e16a7bc 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 69e05fb6c0..12fc3d8bdc 100755
+--- a/configure
++++ b/configure
+@@ -5413,10 +5413,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/chardev-connect-socket-to-a-spawned-command.patch b/meta/recipes-devtools/qemu/qemu/0008-chardev-connect-socket-to-a-spawned-command.patch
index 6e6bf95c18e..2afe4e9376d 100644
--- a/meta/recipes-devtools/qemu/qemu/chardev-connect-socket-to-a-spawned-command.patch
+++ b/meta/recipes-devtools/qemu/qemu/0008-chardev-connect-socket-to-a-spawned-command.patch
@@ -1,4 +1,4 @@
-From 3bb3100c22eb30146a69656480bdffeef8663575 Mon Sep 17 00:00:00 2001
+From 20a09bb18907e67565c54fc505a741cbbef53f7f 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
@@ -45,16 +45,16 @@ Upstream-Status: Inappropriate [embedded specific]
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
---
- chardev/char-socket.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++---
- chardev/char.c | 3 ++
- qapi/char.json | 5 +++
- 3 files changed, 90 insertions(+), 4 deletions(-)
+ chardev/char-socket.c | 102 ++++++++++++++++++++++++++++++++++++++++++
+ chardev/char.c | 3 ++
+ qapi/char.json | 5 +++
+ 3 files changed, 110 insertions(+)
diff --git a/chardev/char-socket.c b/chardev/char-socket.c
-index 53eda8ef00..f566107c35 100644
+index 159e69c3b1..84778cf31a 100644
--- a/chardev/char-socket.c
+++ b/chardev/char-socket.c
-@@ -852,6 +852,68 @@ static gboolean socket_reconnect_timeout(gpointer opaque)
+@@ -934,6 +934,68 @@ static gboolean socket_reconnect_timeout(gpointer opaque)
return false;
}
@@ -123,7 +123,7 @@ index 53eda8ef00..f566107c35 100644
static void qmp_chardev_open_socket(Chardev *chr,
ChardevBackend *backend,
bool *be_opened,
-@@ -859,6 +921,9 @@
+@@ -941,6 +1003,9 @@ static void qmp_chardev_open_socket(Chardev *chr,
{
SocketChardev *s = SOCKET_CHARDEV(chr);
ChardevSocket *sock = backend->u.socket.data;
@@ -133,11 +133,10 @@ index 53eda8ef00..f566107c35 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;
-@@ -925,7 +990,14 @@
- } else if (reconnect > 0) {
+@@ -1008,6 +1073,14 @@ static void qmp_chardev_open_socket(Chardev *chr,
s->reconnect_time = reconnect;
}
--
+
+#ifndef _WIN32
+ if (cmd) {
+ chardev_open_socket_cmd(chr, cmd, errp);
@@ -146,12 +145,12 @@ index 53eda8ef00..f566107c35 100644
+ *be_opened = true;
+ } else
+#endif
- if (s->reconnect_time) {
- sioc = qio_channel_socket_new();
- tcp_chr_set_client_ioc_name(chr, sioc);
-@@ -985,10 +1057,26 @@
- const char *host = qemu_opt_get(opts, "host");
+ /* If reconnect_time is set, will do that in chr_machine_done. */
+ if (!s->reconnect_time) {
+ if (s->is_listen) {
+@@ -1065,9 +1138,26 @@ static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend,
const char *port = qemu_opt_get(opts, "port");
+ const char *fd = qemu_opt_get(opts, "fd");
const char *tls_creds = qemu_opt_get(opts, "tls-creds");
+#ifndef _WIN32
+ const char *cmd = qemu_opt_get(opts, "cmd");
@@ -159,7 +158,6 @@ index 53eda8ef00..f566107c35 100644
SocketAddressLegacy *addr;
ChardevSocket *sock;
- backend->type = CHARDEV_BACKEND_KIND_SOCKET;
+#ifndef _WIN32
+ if (cmd) {
+ /*
@@ -173,17 +171,18 @@ index 53eda8ef00..f566107c35 100644
+ }
+ } else
+#endif
- if (!path) {
- if (!host) {
- error_setg(errp, "chardev: socket: no host given");
-@@ -1021,13 +1109,24 @@
- sock->has_reconnect = true;
++
+ if ((!!path + !!fd + !!host) != 1) {
+ error_setg(errp,
+ "Exactly one of 'path', 'fd' or 'host' required");
+@@ -1112,12 +1202,24 @@ static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend,
sock->reconnect = reconnect;
sock->tls_creds = g_strdup(tls_creds);
+
+#ifndef _WIN32
+ sock->cmd = g_strdup(cmd);
+#endif
-
++
addr = g_new0(SocketAddressLegacy, 1);
+#ifndef _WIN32
+ if (path || cmd) {
@@ -198,11 +197,11 @@ index 53eda8ef00..f566107c35 100644
+#else
q_unix->path = g_strdup(path);
+#endif
- } else {
+ } 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 2ae4f465ec..5d52cd5de5 100644
+index 76d866e6fe..9747d51d7c 100644
--- a/chardev/char.c
+++ b/chardev/char.c
@@ -792,6 +792,9 @@ QemuOptsList qemu_chardev_opts = {
@@ -238,5 +237,3 @@ index ae19dcd1ed..6de0f29bcd 100644
'*tls-creds' : 'str',
'*server' : 'bool',
'*wait' : 'bool',
---
-2.14.1
diff --git a/meta/recipes-devtools/qemu/qemu/apic-fixup-fallthrough-to-PIC.patch b/meta/recipes-devtools/qemu/qemu/0009-apic-fixup-fallthrough-to-PIC.patch
index d6a3522edaa..5969d93870f 100644
--- a/meta/recipes-devtools/qemu/qemu/apic-fixup-fallthrough-to-PIC.patch
+++ b/meta/recipes-devtools/qemu/qemu/0009-apic-fixup-fallthrough-to-PIC.patch
@@ -1,7 +1,7 @@
-From bef93bb81588b5323a52d2e1886f2a77b64a976b Mon Sep 17 00:00:00 2001
+From 5046c21efdbc7413cddd5c5dbd9e1d53258d3e8c 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 03/18] apic: fixup fallthrough to PIC
+Subject: [PATCH] apic: fixup fallthrough to PIC
Commit 0e21e12bb311c4c1095d0269dc2ef81196ccb60a [Don't route PIC
interrupts through the local APIC if the local APIC config says so.]
@@ -28,11 +28,11 @@ Signed-off-by: He Zhe <zhe.he@windriver.com>
hw/intc/apic.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: qemu-2.11.1/hw/intc/apic.c
-===================================================================
---- qemu-2.11.1.orig/hw/intc/apic.c
-+++ qemu-2.11.1/hw/intc/apic.c
-@@ -591,7 +591,7 @@ int apic_accept_pic_intr(DeviceState *de
+diff --git a/hw/intc/apic.c b/hw/intc/apic.c
+index 6fda52b86c..cd7291962d 100644
+--- a/hw/intc/apic.c
++++ b/hw/intc/apic.c
+@@ -603,7 +603,7 @@ int apic_accept_pic_intr(DeviceState *dev)
APICCommonState *s = APIC(dev);
uint32_t lvt0;
diff --git a/meta/recipes-devtools/qemu/qemu/linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch b/meta/recipes-devtools/qemu/qemu/0010-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch
index d2c52252f62..e110f63345f 100644
--- a/meta/recipes-devtools/qemu/qemu/linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch
+++ b/meta/recipes-devtools/qemu/qemu/0010-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch
@@ -1,4 +1,4 @@
-From 4fa4aae4176ef6d8f4d4b8323d061e2433918a26 Mon Sep 17 00:00:00 2001
+From 3cd92c7a885e4997ef6843313298c1d748d6ca39 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
@@ -18,10 +18,10 @@ Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/linux-user/main.c b/linux-user/main.c
-index 450eb3ce65..c7cc0a184e 100644
+index 8907a84114..ea42c43610 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
-@@ -77,7 +77,7 @@ do { \
+@@ -79,7 +79,7 @@ do { \
(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. */
@@ -30,6 +30,3 @@ index 450eb3ce65..c7cc0a184e 100644
# else
# define MAX_RESERVED_VA (1ul << TARGET_VIRT_ADDR_SPACE_BITS)
# endif
---
-2.14.1
-
diff --git a/meta/recipes-devtools/qemu/qemu/0011-Revert-linux-user-fix-mmap-munmap-mprotect-mremap-sh.patch b/meta/recipes-devtools/qemu/qemu/0011-Revert-linux-user-fix-mmap-munmap-mprotect-mremap-sh.patch
new file mode 100644
index 00000000000..41626eb87c5
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/0011-Revert-linux-user-fix-mmap-munmap-mprotect-mremap-sh.patch
@@ -0,0 +1,141 @@
+From 3ed26be2091436296933ed2146f7269c791c7bfe 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] Revert "linux-user: fix mmap/munmap/mprotect/mremap/shmat"
+
+Causes qemu-i386 to hang during gobject-introspection in webkitgtk build
+when musl is used on qemux86 - the same issue as
+0010-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch
+was fixing in 2.11.0 release, but with this patch the fix no longer worked
+as discussed here:
+http://lists.openembedded.org/pipermail/openembedded-core/2018-May/150302.html
+http://lists.openembedded.org/pipermail/openembedded-core/2018-June/151382.html
+
+This reverts commit ebf9a3630c911d0cfc9c20f7cafe9ba4f88cf583.
+
+Upstream-Status: Pending
+---
+ include/exec/cpu-all.h | 6 +-----
+ include/exec/cpu_ldst.h | 16 +++++++++-------
+ linux-user/mmap.c | 17 ++++-------------
+ linux-user/syscall.c | 5 +----
+ 4 files changed, 15 insertions(+), 29 deletions(-)
+
+diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
+index f4fa94e966..0b141683f0 100644
+--- a/include/exec/cpu-all.h
++++ b/include/exec/cpu-all.h
+@@ -159,12 +159,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 5de8c8a5af..191f2e962a 100644
+--- a/include/exec/cpu_ldst.h
++++ b/include/exec/cpu_ldst.h
+@@ -51,13 +51,15 @@
+ /* All direct uses of g2h and h2g need to go away for usermode softmmu. */
+ #define g2h(x) ((void *)((unsigned long)(target_ulong)(x) + guest_base))
+
+-#define guest_addr_valid(x) ((x) <= GUEST_ADDR_MAX)
+-#define h2g_valid(x) guest_addr_valid((unsigned long)(x) - guest_base)
+-
+-static inline int guest_range_valid(unsigned long start, unsigned long len)
+-{
+- return len - 1 <= GUEST_ADDR_MAX && start <= GUEST_ADDR_MAX - len + 1;
+-}
++#if HOST_LONG_BITS <= TARGET_VIRT_ADDR_SPACE_BITS
++#define h2g_valid(x) 1
++#else
++#define h2g_valid(x) ({ \
++ unsigned long __guest = (unsigned long)(x) - guest_base; \
++ (__guest < (1ul << TARGET_VIRT_ADDR_SPACE_BITS)) && \
++ (!reserved_va || (__guest < reserved_va)); \
++})
++#endif
+
+ #define h2g_nocheck(x) ({ \
+ unsigned long __ret = (unsigned long)(x) - guest_base; \
+diff --git a/linux-user/mmap.c b/linux-user/mmap.c
+index 9168a2051c..de85669aab 100644
+--- a/linux-user/mmap.c
++++ b/linux-user/mmap.c
+@@ -80,7 +80,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;
+@@ -482,8 +482,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;
+ }
+
+@@ -623,10 +623,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;
+@@ -681,13 +679,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 643b8833de..271f215147 100644
+--- a/linux-user/syscall.c
++++ b/linux-user/syscall.c
+@@ -4919,9 +4919,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();
+
+@@ -7497,7 +7494,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;
+ }
diff --git a/meta/recipes-devtools/qemu/qemu/fix-libcap-header-issue-on-some-distro.patch b/meta/recipes-devtools/qemu/qemu/0012-fix-libcap-header-issue-on-some-distro.patch
index cee6a676ab8..aa24f7294e6 100644
--- a/meta/recipes-devtools/qemu/qemu/fix-libcap-header-issue-on-some-distro.patch
+++ b/meta/recipes-devtools/qemu/qemu/0012-fix-libcap-header-issue-on-some-distro.patch
@@ -1,4 +1,7 @@
-fix libcap header issue on some distro
+From bb9e48e331eee06d7bac1dce809c70191d1a3b4d 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:
...
@@ -52,13 +55,14 @@ http://patchwork.linuxtv.org/patch/12748/
Upstream-Status: Pending
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
- fsdev/virtfs-proxy-helper.c | 7 +++++--
+ 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 6f132c5ff1..8329950c26 100644
--- a/fsdev/virtfs-proxy-helper.c
+++ b/fsdev/virtfs-proxy-helper.c
-@@ -12,7 +12,6 @@
+@@ -13,7 +13,6 @@
#include <sys/resource.h>
#include <getopt.h>
#include <syslog.h>
@@ -66,7 +70,7 @@ diff --git a/fsdev/virtfs-proxy-helper.c b/fsdev/virtfs-proxy-helper.c
#include <sys/fsuid.h>
#include <sys/vfs.h>
#include <sys/ioctl.h>
-@@ -26,7 +25,11 @@
+@@ -27,7 +26,11 @@
#include "9p-iov-marshal.h"
#include "hw/9pfs/9p-proxy.h"
#include "fsdev/9p-iov-marshal.h"
@@ -79,6 +83,3 @@ diff --git a/fsdev/virtfs-proxy-helper.c b/fsdev/virtfs-proxy-helper.c
#define PROGNAME "virtfs-proxy-helper"
#ifndef XFS_SUPER_MAGIC
---
-1.7.10.4
-
diff --git a/meta/recipes-devtools/qemu/qemu/cpus.c-qemu_cpu_kick_thread_debugging.patch b/meta/recipes-devtools/qemu/qemu/0013-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch
index 6822132541a..8a9141acdee 100644
--- a/meta/recipes-devtools/qemu/qemu/cpus.c-qemu_cpu_kick_thread_debugging.patch
+++ b/meta/recipes-devtools/qemu/qemu/0013-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch
@@ -1,4 +1,4 @@
-From 697a834c35d19447b7dcdb9e1d9434bc6ce17c21 Mon Sep 17 00:00:00 2001
+From edc8dba74c7a4a2121d76c982be0074183bf080a 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.
@@ -19,10 +19,10 @@ Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
create mode 100644 custom_debug.h
diff --git a/cpus.c b/cpus.c
-index a822ce3..7e4786e 100644
+index 38eba8bff3..b84a60a4f3 100644
--- a/cpus.c
+++ b/cpus.c
-@@ -1080,6 +1080,8 @@ static void *qemu_tcg_cpu_thread_fn(void *arg)
+@@ -1690,6 +1690,8 @@ static void *qemu_tcg_cpu_thread_fn(void *arg)
return NULL;
}
@@ -31,7 +31,7 @@ index a822ce3..7e4786e 100644
static void qemu_cpu_kick_thread(CPUState *cpu)
{
#ifndef _WIN32
-@@ -1088,6 +1090,9 @@ static void qemu_cpu_kick_thread(CPUState *cpu)
+@@ -1702,6 +1704,9 @@ static void qemu_cpu_kick_thread(CPUState *cpu)
err = pthread_kill(cpu->thread->thread, SIG_IPI);
if (err) {
fprintf(stderr, "qemu:%s: %s", __func__, strerror(err));
@@ -43,7 +43,7 @@ index a822ce3..7e4786e 100644
#else /* _WIN32 */
diff --git a/custom_debug.h b/custom_debug.h
new file mode 100644
-index 0000000..f029e45
+index 0000000000..f029e45547
--- /dev/null
+++ b/custom_debug.h
@@ -0,0 +1,24 @@
@@ -71,6 +71,3 @@ index 0000000..f029e45
+
+ free(symbols);
+}
---
-1.9.1
-
diff --git a/meta/recipes-devtools/qemu/qemu/CVE-2018-15746.patch b/meta/recipes-devtools/qemu/qemu/CVE-2018-15746.patch
new file mode 100644
index 00000000000..2f61ea0051e
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/CVE-2018-15746.patch
@@ -0,0 +1,64 @@
+From 9acf4c64dd4560bd268006d7356c7455fab7e5b1 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Thu, 6 Sep 2018 14:52:12 +0800
+Subject: [PATCH] seccomp: set the seccomp filter to all threads
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+When using "-seccomp on", the seccomp policy is only applied to the
+main thread, the vcpu worker thread and other worker threads created
+after seccomp policy is applied; the seccomp policy is not applied to
+e.g. the RCU thread because it is created before the seccomp policy is
+applied and SECCOMP_FILTER_FLAG_TSYNC isn't used.
+
+This can be verified with
+for task in /proc/`pidof qemu`/task/*; do cat $task/status | grep Secc ; done
+Seccomp: 2
+Seccomp: 0
+Seccomp: 0
+Seccomp: 2
+Seccomp: 2
+Seccomp: 2
+
+Starting with libseccomp 2.2.0 and kernel >= 3.17, we can use
+seccomp_attr_set(ctx, > SCMP_FLTATR_CTL_TSYNC, 1) to update the policy
+on all threads.
+
+libseccomp requirement was bumped to 2.2.0 in previous patch.
+libseccomp should fail to set the filter if it can't honour
+SCMP_FLTATR_CTL_TSYNC (untested), and thus -sandbox will now fail on
+kernel < 3.17.
+
+Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
+Acked-by: Eduardo Otubo <otubo@redhat.com>
+
+Upstream-Status: Backport[https://github.com/qemu/qemu/commit/
+70dfabeaa79ba4d7a3b699abe1a047c8012db114#diff-18106d3b47a2d249f9d41e772b7db22d]
+
+CVE: CVE-2018-15746
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ qemu-seccomp.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/qemu-seccomp.c b/qemu-seccomp.c
+index 9cd8eb9..ba5500a 100644
+--- a/qemu-seccomp.c
++++ b/qemu-seccomp.c
+@@ -120,6 +120,11 @@ static int seccomp_start(uint32_t seccomp_opts)
+ goto seccomp_return;
+ }
+
++ rc = seccomp_attr_set(ctx, SCMP_FLTATR_CTL_TSYNC, 1);
++ if (rc != 0) {
++ goto seccomp_return;
++ }
++
+ for (i = 0; i < ARRAY_SIZE(blacklist); i++) {
+ if (!(seccomp_opts & blacklist[i].set)) {
+ continue;
+--
+2.7.4
+
diff --git a/meta/recipes-devtools/qemu/qemu/memfd.patch b/meta/recipes-devtools/qemu/qemu/memfd.patch
deleted file mode 100644
index 62e8d3800bd..00000000000
--- a/meta/recipes-devtools/qemu/qemu/memfd.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 75e5b70e6b5dcc4f2219992d7cffa462aa406af0 Mon Sep 17 00:00:00 2001
-From: Paolo Bonzini <pbonzini@redhat.com>
-Date: Tue, 28 Nov 2017 11:51:27 +0100
-Subject: [PATCH] memfd: fix configure test
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Recent glibc added memfd_create in sys/mman.h. This conflicts with
-the definition in util/memfd.c:
-
- /builddir/build/BUILD/qemu-2.11.0-rc1/util/memfd.c:40:12: error: static declaration of memfd_create follows non-static declaration
-
-Fix the configure test, and remove the sys/memfd.h inclusion since the
-file actually does not exist---it is a typo in the memfd_create(2) man
-page.
-
-Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
----
- configure | 2 +-
- util/memfd.c | 4 +---
- 2 files changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/configure b/configure
-index 9c8aa5a98b..99ccc1725a 100755
---- a/configure
-+++ b/configure
-@@ -3923,7 +3923,7 @@ fi
- # check if memfd is supported
- memfd=no
- cat > $TMPC << EOF
--#include <sys/memfd.h>
-+#include <sys/mman.h>
-
- int main(void)
- {
-diff --git a/util/memfd.c b/util/memfd.c
-index 4571d1aba8..412e94a405 100644
---- a/util/memfd.c
-+++ b/util/memfd.c
-@@ -31,9 +31,7 @@
-
- #include "qemu/memfd.h"
-
--#ifdef CONFIG_MEMFD
--#include <sys/memfd.h>
--#elif defined CONFIG_LINUX
-+#if defined CONFIG_LINUX && !defined CONFIG_MEMFD
- #include <sys/syscall.h>
- #include <asm/unistd.h>
-
---
-2.11.0
diff --git a/meta/recipes-devtools/qemu/qemu/no-valgrind.patch b/meta/recipes-devtools/qemu/qemu/no-valgrind.patch
deleted file mode 100644
index 91f728042d5..00000000000
--- a/meta/recipes-devtools/qemu/qemu/no-valgrind.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-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>
-
-diff --git a/configure b/configure
-index b3c4f51..4d3929e 100755
---- a/configure
-+++ b/configure
-@@ -4193,9 +4192,0 @@ valgrind_h=no
--cat > $TMPC << EOF
--#include <valgrind/valgrind.h>
--int main(void) {
-- return 0;
--}
--EOF
--if compile_prog "" "" ; then
-- valgrind_h=yes
--fi
diff --git a/meta/recipes-devtools/qemu/qemu/qemu-2.5.0-cflags.patch b/meta/recipes-devtools/qemu/qemu/qemu-2.5.0-cflags.patch
deleted file mode 100644
index eb99d146392..00000000000
--- a/meta/recipes-devtools/qemu/qemu/qemu-2.5.0-cflags.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Upstream-Status: Pending
-
---- a/configure
-+++ b/configure
-@@ -4468,10 +4468,6 @@ fi
- 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
-
- ##########################################
diff --git a/meta/recipes-devtools/qemu/qemu_2.11.1.bb b/meta/recipes-devtools/qemu/qemu_2.11.1.bb
deleted file mode 100644
index f4b7d69fcad..00000000000
--- a/meta/recipes-devtools/qemu/qemu_2.11.1.bb
+++ /dev/null
@@ -1,58 +0,0 @@
-require qemu.inc
-
-inherit ptest
-
-RDEPENDS_${PN}-ptest = "bash make"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
- file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
-
-SRC_URI = "http://wiki.qemu-project.org/download/${BP}.tar.bz2 \
- file://powerpc_rom.bin \
- file://disable-grabs.patch \
- file://wacom.patch \
- file://add-ptest-in-makefile-v10.patch \
- file://run-ptest \
- file://qemu-enlarge-env-entry-size.patch \
- file://no-valgrind.patch \
- file://pathlimit.patch \
- file://qemu-2.5.0-cflags.patch \
- file://chardev-connect-socket-to-a-spawned-command.patch \
- file://apic-fixup-fallthrough-to-PIC.patch \
- file://linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch \
- file://memfd.patch \
- file://0001-arm-translate-a64-treat-DISAS_UPDATE-as-variant-of-D.patch \
- "
-UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+\..*)\.tar"
-
-
-SRC_URI_append_class-native = " \
- file://fix-libcap-header-issue-on-some-distro.patch \
- file://cpus.c-qemu_cpu_kick_thread_debugging.patch \
- "
-
-SRC_URI[md5sum] = "61cf862b6007eba4ac98247776af2e27"
-SRC_URI[sha256sum] = "d9df2213ceed32e91dab7bc9dd19c1af83f91ba72c7aeef7605dfaaf81732ccb"
-
-COMPATIBLE_HOST_mipsarchn32 = "null"
-COMPATIBLE_HOST_mipsarchn64 = "null"
-
-do_install_append() {
- # Prevent QA warnings about installed ${localstatedir}/run
- if [ -d ${D}${localstatedir}/run ]; then rmdir ${D}${localstatedir}/run; fi
- install -Dm 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu
-}
-
-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 {}
-
- 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
-}
diff --git a/meta/recipes-devtools/qemu/qemu_3.0.0.bb b/meta/recipes-devtools/qemu/qemu_3.0.0.bb
new file mode 100644
index 00000000000..4569caec2f1
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu_3.0.0.bb
@@ -0,0 +1,57 @@
+require qemu.inc
+
+inherit ptest
+
+RDEPENDS_${PN}-ptest = "bash make"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
+ file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
+
+SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \
+ file://powerpc_rom.bin \
+ file://0001-sdl.c-allow-user-to-disable-pointer-grabs.patch \
+ file://0002-qemu-Add-missing-wacom-HID-descriptor.patch \
+ file://0003-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch \
+ file://run-ptest \
+ file://0004-qemu-Add-addition-environment-space-to-boot-loader-q.patch \
+ file://0005-qemu-disable-Valgrind.patch \
+ file://0006-qemu-Limit-paths-searched-during-user-mode-emulation.patch \
+ file://0007-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch \
+ file://0008-chardev-connect-socket-to-a-spawned-command.patch \
+ file://0009-apic-fixup-fallthrough-to-PIC.patch \
+ file://0010-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch \
+ file://0011-Revert-linux-user-fix-mmap-munmap-mprotect-mremap-sh.patch \
+ file://CVE-2018-15746.patch \
+ "
+UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
+
+SRC_URI_append_class-native = " \
+ file://0012-fix-libcap-header-issue-on-some-distro.patch \
+ file://0013-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch \
+ "
+
+SRC_URI[md5sum] = "6a5c8df583406ea24ef25b239c3243e0"
+SRC_URI[sha256sum] = "8d7af64fe8bd5ea5c3bdf17131a8b858491bcce1ee3839425a6d91fb821b5713"
+
+COMPATIBLE_HOST_mipsarchn32 = "null"
+COMPATIBLE_HOST_mipsarchn64 = "null"
+
+do_install_append() {
+ # Prevent QA warnings about installed ${localstatedir}/run
+ if [ -d ${D}${localstatedir}/run ]; then rmdir ${D}${localstatedir}/run; fi
+ install -Dm 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu
+}
+
+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 {}
+
+ 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
+}
diff --git a/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb b/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
index c983fbae667..4aada5232d8 100644
--- a/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
+++ b/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
@@ -13,38 +13,26 @@ do_populate_sysroot[depends] = ""
do_install () {
install -d ${D}${bindir_crossscripts}/
- echo "#!/bin/sh" > ${D}${bindir_crossscripts}/qemuwrapper
qemu_binary=${@qemu_target_binary(d)}
- qemu_options='${QEMU_OPTIONS}'
- echo "$qemu_binary $qemu_options \"\$@\"" >> ${D}${bindir_crossscripts}/qemuwrapper
- fallback_qemu_bin=
- case $qemu_binary in
- "qemu-i386")
- fallback_qemu_bin=qemu-x86_64
- ;;
- "qemu-x86_64")
- fallback_qemu_bin=qemu-i386
- ;;
- *)
- ;;
- esac
-
- if [ -n "$fallback_qemu_bin" ]; then
-
- cat >> ${D}${bindir_crossscripts}/qemuwrapper << EOF
-rc=\$?
-if [ \$rc = 255 ]; then
- $fallback_qemu_bin "\$@"
- rc=\$?
+ qemu_options='${QEMU_OPTIONS} -E LD_LIBRARY_PATH=$D${libdir}:$D${base_libdir}'
+
+ cat >> ${D}${bindir_crossscripts}/${MLPREFIX}qemuwrapper << EOF
+#!/bin/sh
+set -x
+
+if [ ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'True', 'False', d)} = False ]; then
+ echo "qemuwrapper: qemu usermode is not supported"
fi
-exit \$rc
-EOF
- fi
- chmod +x ${D}${bindir_crossscripts}/qemuwrapper
+$qemu_binary $qemu_options "\$@"
+EOF
+
+ chmod +x ${D}${bindir_crossscripts}/${MLPREFIX}qemuwrapper
}
SYSROOT_DIRS += "${bindir_crossscripts}"
INHIBIT_DEFAULT_DEPS = "1"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/quilt/quilt.inc b/meta/recipes-devtools/quilt/quilt.inc
index c7bb741b4c5..48ed9babf7e 100644
--- a/meta/recipes-devtools/quilt/quilt.inc
+++ b/meta/recipes-devtools/quilt/quilt.inc
@@ -16,24 +16,8 @@ SRC_URI[sha256sum] = "f6cbc788e5cbbb381a3c6eab5b9efce67c776a8662a7795c7432fd27aa
inherit autotools-brokensep ptest
-EXTRA_OECONF_darwin += "--without-date \
- --without-getopt \
- "
-
CLEANBROKEN = "1"
-PACKAGES += "guards guards-doc"
-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"
-
-RDEPENDS_${PN} = "bash"
-
-EXTRA_OE_MAKE_ARGS_darwin ?= ""
-EXTRA_OE_MAKE_ARGS ?= "BUILD_ROOT=${D}"
-
EXTRA_OECONF = "--with-perl='${USRBINPATH}/env perl' --with-patch=patch"
CACHED_CONFIGUREVARS += "ac_cv_path_BASH=/bin/bash"
@@ -49,9 +33,9 @@ do_configure_append () {
sed -e 's,^COMPAT_SYMLINKS.*:=.*,COMPAT_SYMLINKS :=,' -i ${S}/Makefile
}
-# quilt ignores DESTDIR
+# quilt Makefiles install to BUILD_ROOT instead of DESTDIR
do_install () {
- oe_runmake ${EXTRA_OE_MAKE_ARGS} install
+ oe_runmake 'BUILD_ROOT=${D}' install
# cleanup unpackaged files
rm -rf ${D}/${datadir}/emacs
}
@@ -69,6 +53,15 @@ do_install_ptest() {
cp ${WORKDIR}/test.sh ${D}${PTEST_PATH}
}
+PACKAGES += "guards guards-doc"
+
+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"
+
+RDEPENDS_${PN} = "bash"
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 \
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 5604cb90373..82e7328757f 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,7 +1,7 @@
-From c82c19dc583843b1a975f2e3f2e151656a6f377c Mon Sep 17 00:00:00 2001
+From bd08eb0ae1312f347f49949481daa7c923752df2 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 06/14] Do not hardcode "lib/rpm" as the installation path for
+Subject: [PATCH] Do not hardcode "lib/rpm" as the installation path for
default configuration and macros.
Upstream-Status: Denied [https://github.com/rpm-software-management/rpm/pull/263]
@@ -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 7155d9f00..21b95ae5f 100644
+index 09af7c4..9bd6903 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -1047,7 +1047,7 @@ else
+@@ -1055,7 +1055,7 @@ else
usrprefix=$prefix
fi
@@ -27,10 +27,10 @@ index 7155d9f00..21b95ae5f 100644
AC_SUBST(OBJDUMP)
diff --git a/macros.in b/macros.in
-index d08624856..68a972f1e 100644
+index a3aa7a9..62cee5c 100644
--- a/macros.in
+++ b/macros.in
-@@ -954,7 +954,7 @@ package or when debugging this package.\
+@@ -970,7 +970,7 @@ package or when debugging this package.\
%_sharedstatedir %{_prefix}/com
%_localstatedir %{_prefix}/var
%_lib lib
@@ -40,7 +40,7 @@ index d08624856..68a972f1e 100644
%_infodir %{_datadir}/info
%_mandir %{_datadir}/man
diff --git a/rpm.am b/rpm.am
-index 51225892d..e0c834d37 100644
+index 82c2d7c..6341b51 100644
--- a/rpm.am
+++ b/rpm.am
@@ -1,10 +1,10 @@
@@ -55,7 +55,4 @@ index 51225892d..e0c834d37 100644
+rpmconfigdir = $(libdir)/rpm
# Libtool version (current-revision-age) for all our libraries
- rpm_version_info = 8:1:0
---
-2.15.1
-
+ rpm_version_info = 9:0:1
diff --git a/meta/recipes-devtools/rpm/files/0001-Do-not-reset-the-PATH-environment-variable-before-ru.patch b/meta/recipes-devtools/rpm/files/0001-Do-not-reset-the-PATH-environment-variable-before-ru.patch
index a38675f89c9..41cdf6ed774 100644
--- a/meta/recipes-devtools/rpm/files/0001-Do-not-reset-the-PATH-environment-variable-before-ru.patch
+++ b/meta/recipes-devtools/rpm/files/0001-Do-not-reset-the-PATH-environment-variable-before-ru.patch
@@ -1,22 +1,23 @@
-From ffb5301a8594140ad7a58bc0f2053be8ca2b2946 Mon Sep 17 00:00:00 2001
+From a674b9cc7af448d7c6748bc163bf37dc14a57f09 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 20 Jan 2017 13:32:06 +0200
-Subject: [PATCH 1/2] Do not reset the PATH environment variable before running
+Subject: [PATCH] Do not reset the PATH environment variable before running
scriptlets.
We add lots of native stuff into it and scriptlets rely on that.
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
---
lib/rpmscript.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/rpmscript.c b/lib/rpmscript.c
-index 92f949fa2..7c1aa75a8 100644
+index 6a31e0d..2b0e438 100644
--- a/lib/rpmscript.c
+++ b/lib/rpmscript.c
-@@ -201,7 +201,7 @@ static void doScriptExec(ARGV_const_t argv, ARGV_const_t prefixes,
+@@ -184,7 +184,7 @@ static void doScriptExec(ARGV_const_t argv, ARGV_const_t prefixes,
if (ipath && ipath[5] != '%')
path = ipath;
@@ -25,6 +26,3 @@ index 92f949fa2..7c1aa75a8 100644
free(ipath);
}
---
-2.11.0
-
diff --git a/meta/recipes-devtools/rpm/files/0001-Revert-Set-FD_CLOEXEC-on-opened-files-before-exec-fr.patch b/meta/recipes-devtools/rpm/files/0001-Revert-Set-FD_CLOEXEC-on-opened-files-before-exec-fr.patch
deleted file mode 100644
index 4651409a651..00000000000
--- a/meta/recipes-devtools/rpm/files/0001-Revert-Set-FD_CLOEXEC-on-opened-files-before-exec-fr.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 982e47df7b82c5ffe3c414cf5641f08dba0f0e64 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 26 Jan 2018 16:32:04 +0200
-Subject: [PATCH] Revert "Set FD_CLOEXEC on opened files before exec from lua
- script is called"
-
-This reverts commit 7a7c31f551ff167f8718aea6d5048f6288d60205.
-The reason is that when _SC_OPEN_MAX is much higher than the usual 1024
-(for example inside docker), the performance drops sharply.
-
-Upstream has been notified:
-https://bugzilla.redhat.com/show_bug.cgi?id=1537564
-
-Upstream-Status: Inappropriate [upstream needs to come up with a better fix]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- luaext/lposix.c | 12 ------------
- 1 file changed, 12 deletions(-)
-
-diff --git a/luaext/lposix.c b/luaext/lposix.c
-index 0a7c26c71..c578c5a11 100644
---- a/luaext/lposix.c
-+++ b/luaext/lposix.c
-@@ -335,22 +335,10 @@ static int Pexec(lua_State *L) /** exec(path,[args]) */
- const char *path = luaL_checkstring(L, 1);
- int i,n=lua_gettop(L);
- char **argv;
-- int flag, fdno, open_max;
-
- if (!have_forked)
- return luaL_error(L, "exec not permitted in this context");
-
-- open_max = sysconf(_SC_OPEN_MAX);
-- if (open_max == -1) {
-- open_max = 1024;
-- }
-- for (fdno = 3; fdno < open_max; fdno++) {
-- flag = fcntl(fdno, F_GETFD);
-- if (flag == -1 || (flag & FD_CLOEXEC))
-- continue;
-- fcntl(fdno, F_SETFD, FD_CLOEXEC);
-- }
--
- argv = malloc((n+1)*sizeof(char*));
- if (argv==NULL) return luaL_error(L,"not enough memory");
- argv[0] = (char*)path;
---
-2.15.1
-
diff --git a/meta/recipes-devtools/rpm/files/0001-When-cross-installing-execute-package-scriptlets-wit.patch b/meta/recipes-devtools/rpm/files/0001-When-cross-installing-execute-package-scriptlets-wit.patch
index 2be3cb5af3c..4020a310926 100644
--- a/meta/recipes-devtools/rpm/files/0001-When-cross-installing-execute-package-scriptlets-wit.patch
+++ b/meta/recipes-devtools/rpm/files/0001-When-cross-installing-execute-package-scriptlets-wit.patch
@@ -1,4 +1,4 @@
-From a6f269f879221f2777169c5f7291322afe6b661b Mon Sep 17 00:00:00 2001
+From a89daa75ac970d8e247edc762d1181e9a5b0c5d0 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Tue, 17 Jan 2017 14:07:17 +0200
Subject: [PATCH] When cross-installing, execute package scriptlets without
@@ -7,17 +7,42 @@ Subject: [PATCH] When cross-installing, execute package scriptlets without
This is triggered only when RPM_NO_CHROOT_FOR_SCRIPTS environment variable is defined.
Otherwise they will trigger an explosion of failures, obviously.
+Amended 2018-07-03 by Olof Johansson <olofjn@axis.com>:
+
+ Remove leaking temporary scriptlet files
+
+ Since we tell dnf to run rpm with debug output, this will result in rpm not
+ cleaning up written temporary scriptlet files (same flag controls both
+ behaviors). This wouldn't have been a problem since we normally would use the
+ target sysroot also for temporary files, but we need to chroot out to be able
+ to actually run the rpm scriptlets (purpose of this patch), so the temporary
+ files are written to the host's /var/tmp/ directory, causing a gradual
+ resource leakage on the host system for every RPM based do_rootfs task
+ executed.
+
+ Signed-off-by: Olof Johansson <olofjn@axis.com>
+
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
- lib/rpmscript.c | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
+ lib/rpmscript.c | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/lib/rpmscript.c b/lib/rpmscript.c
-index 98d3f420d..b95b5d606 100644
+index cc98c4885..f8bd3df04 100644
--- a/lib/rpmscript.c
+++ b/lib/rpmscript.c
-@@ -467,7 +467,13 @@ rpmRC rpmScriptRun(rpmScript script, int arg1, int arg2, FD_t scriptFd,
+@@ -394,8 +394,7 @@ exit:
+ Fclose(out); /* XXX dup'd STDOUT_FILENO */
+
+ if (fn) {
+- if (!rpmIsDebug())
+- unlink(fn);
++ unlink(fn);
+ free(fn);
+ }
+ free(mline);
+@@ -428,7 +427,13 @@ rpmRC rpmScriptRun(rpmScript script, int arg1, int arg2, FD_t scriptFd,
if (rc != RPMRC_FAIL) {
if (script_type & RPMSCRIPTLET_EXEC) {
diff --git a/meta/recipes-devtools/rpm/files/0001-configure.ac-add-option-for-dbus.patch b/meta/recipes-devtools/rpm/files/0001-configure.ac-add-option-for-dbus.patch
deleted file mode 100644
index dc71d9b18bf..00000000000
--- a/meta/recipes-devtools/rpm/files/0001-configure.ac-add-option-for-dbus.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From dfb422c744fdc1838afc40b8e1f161bb46093d92 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Sun, 8 Apr 2018 12:06:42 +0800
-Subject: [PATCH] configure.ac: add option for dbus
-
-Add option for dbus so that users could choose to build with dbus
-or with no dbus.
-
-Upstream-Status: Pending
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- configure.ac | 11 +++++++----
- 1 file changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 4db15c7909..493f393d31 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -976,12 +976,15 @@ AS_IF([test "$enable_plugins" = yes],[
- ])
- AM_CONDITIONAL(ENABLE_PLUGINS,[test "$enable_plugins" = yes])
-
--with_dbus=no
--AS_IF([test "$enable_plugins" != no],[
-+AC_ARG_WITH([dbus], [AS_HELP_STRING([--with-dbus], [build with dbus support])],
-+ [],
-+ [with_dbus=yes])
-+
-+AS_IF([test "$with_dbus" != no],[
- PKG_CHECK_MODULES([DBUS],
- [dbus-1 >= 1.3],
-- [AC_DEFINE(DBUS, 1, [Build with dbus support?]) with_dbus=yes],
-- [with_dbus=no])
-+ [AC_DEFINE(DBUS, 1, [Build with dbus support?])],
-+ [AC_MSG_ERROR([dbus not present (--without-dbus to disable)])])
- AC_SUBST(DBUS_CFLAGS)
- AC_SUBST(DBUS_LIBS)
- ])
---
-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
index 8989dcebd1e..652e30b3e4a 100644
--- 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
@@ -1,8 +1,8 @@
-From 8ce9fbab2990609bdace457e146160334e931c89 Mon Sep 17 00:00:00 2001
+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 14/15] build/pack.c: remove static local variables from
- buildHost() and getBuildTime()
+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
@@ -20,7 +20,7 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
3 files changed, 74 insertions(+), 72 deletions(-)
diff --git a/build/build.c b/build/build.c
-index 81152e53e..6001f9e52 100644
+index 13c3df2..b154f08 100644
--- a/build/build.c
+++ b/build/build.c
@@ -6,6 +6,8 @@
@@ -99,7 +99,7 @@ index 81152e53e..6001f9e52 100644
if (((what & RPMBUILD_PACKAGESOURCE) && !test) &&
- (rc = packageSources(spec, &cookie)))
+ (rc = packageSources(spec, &cookie, buildTime, host)))
- return rc;
+ goto exit;
if (((what & RPMBUILD_PACKAGEBINARY) && !test) &&
- (rc = packageBinaries(spec, cookie, (didBuild == 0))))
@@ -116,7 +116,7 @@ index 81152e53e..6001f9e52 100644
spec->rootDir = NULL;
if (rc != RPMRC_OK && rpmlogGetNrecs() > 0) {
diff --git a/build/pack.c b/build/pack.c
-index df15876ff..17a4b0905 100644
+index df15876..17a4b09 100644
--- a/build/pack.c
+++ b/build/pack.c
@@ -6,8 +6,6 @@
@@ -305,7 +305,7 @@ index df15876ff..17a4b0905 100644
/* 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 439b7d3b5..07e8338ad 100644
+index 439b7d3..07e8338 100644
--- a/build/rpmbuild_internal.h
+++ b/build/rpmbuild_internal.h
@@ -427,19 +427,23 @@ rpmRC processSourceFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags);
@@ -334,6 +334,3 @@ index 439b7d3b5..07e8338ad 100644
RPM_GNUC_INTERNAL
int addLangTag(rpmSpec spec, Header h, rpmTagVal tag,
---
-2.14.2
-
diff --git a/meta/recipes-devtools/rpm/rpm_4.14.1.bb b/meta/recipes-devtools/rpm/rpm_4.14.2.bb
index 818d3ef9e31..46f88375ffa 100644
--- a/meta/recipes-devtools/rpm/rpm_4.14.1.bb
+++ b/meta/recipes-devtools/rpm/rpm_4.14.2.bb
@@ -39,12 +39,10 @@ SRC_URI = "git://github.com/rpm-software-management/rpm;branch=rpm-4.14.x \
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-Revert-Set-FD_CLOEXEC-on-opened-files-before-exec-fr.patch \
- file://0001-configure.ac-add-option-for-dbus.patch \
"
PE = "1"
-SRCREV = "bfee1410af51c1cc9724791fb8d985260a62102b"
+SRCREV = "753f6941dc32e94047b7cfe713ddd604a810b4db"
S = "${WORKDIR}/git"
@@ -66,30 +64,34 @@ EXTRA_OECONF_append_libc-musl = " --disable-nls"
#
# 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 --without-dbus --disable-plugins"
+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() {
- tools="\
- ${bindir}/rpm \
- ${bindir}/rpm2archive \
- ${bindir}/rpm2cpio \
- ${bindir}/rpmbuild \
- ${bindir}/rpmdb \
- ${bindir}/rpmgraph \
- ${bindir}/rpmkeys \
- ${bindir}/rpmsign \
- ${bindir}/rpmspec \
- ${libdir}/rpm/rpmdeps \
- "
-
- for tool in $tools; do
+ for tool in ${WRAPPER_TOOLS}; do
create_wrapper ${D}$tool \
RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \
RPM_ETCCONFIGDIR=${STAGING_DIR_NATIVE} \
@@ -98,6 +100,18 @@ do_install_append_class-native() {
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', True), d.getVar('bindir', True))}/rpm \
+ RPM_ETCCONFIGDIR='$'{RPM_ETCCONFIGDIR-'`dirname $''realpath`'/${@os.path.relpath(d.getVar('sysconfdir', True), d.getVar('bindir', True))}/..} \
+ MAGIC='`dirname $''realpath`'/${@os.path.relpath(d.getVar('datadir', True), d.getVar('bindir', True))}/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
diff --git a/meta/recipes-devtools/rsync/rsync.inc b/meta/recipes-devtools/rsync/rsync.inc
deleted file mode 100644
index 26c023af7a5..00000000000
--- a/meta/recipes-devtools/rsync/rsync.inc
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "File synchronization tool"
-HOMEPAGE = "http://rsync.samba.org/"
-BUGTRACKER = "http://rsync.samba.org/bugzilla.html"
-SECTION = "console/network"
-
-DEPENDS = "popt"
-
-SRC_URI = "https://download.samba.org/pub/${BPN}/src/${BP}.tar.gz \
- file://rsyncd.conf"
-
-inherit autotools
-
-do_install_append() {
- install -d ${D}${sysconfdir}
- install -m 0644 ${WORKDIR}/rsyncd.conf ${D}${sysconfdir}
-}
-
-EXTRA_OEMAKE='STRIP=""'
-
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
diff --git a/meta/recipes-devtools/rsync/rsync_3.1.3.bb b/meta/recipes-devtools/rsync/rsync_3.1.3.bb
index 84a02586bed..29cb231f36c 100644
--- a/meta/recipes-devtools/rsync/rsync_3.1.3.bb
+++ b/meta/recipes-devtools/rsync/rsync_3.1.3.bb
@@ -1,24 +1,37 @@
-require rsync.inc
+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"
-SRC_URI += "file://makefile-no-rebuild.patch"
+DEPENDS = "popt"
+
+SRC_URI = "https://download.samba.org/pub/${BPN}/src/${BP}.tar.gz \
+ file://rsyncd.conf \
+ file://makefile-no-rebuild.patch \
+"
SRC_URI[md5sum] = "1581a588fde9d89f6bc6201e8129afaf"
SRC_URI[sha256sum] = "55cc554efec5fdaad70de921cd5a5eeb6c29a95524c715f3bbf849235b0800c0"
-# GPLv2+ (<< 3.0.0), GPLv3+ (>= 3.0.0)
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+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 () {
@@ -29,4 +42,9 @@ 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/ruby/ruby.inc b/meta/recipes-devtools/ruby/ruby.inc
index fd3911ba75d..5a5bef2024c 100644
--- a/meta/recipes-devtools/ruby/ruby.inc
+++ b/meta/recipes-devtools/ruby/ruby.inc
@@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "\
file://COPYING;md5=340948e1882e579731841bf49cdc22c1 \
file://BSDL;md5=19aaf65c88a40b508d17ae4be539c4b5\
file://GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263\
- file://LEGAL;md5=8f871f3f03732c018a5fa9b185958231 \
+ file://LEGAL;md5=23a79bb4c1a40f6cc9bcb6f4e7c39799 \
"
DEPENDS = "ruby-native zlib openssl tcl libyaml gdbm readline"
diff --git a/meta/recipes-devtools/ruby/ruby/CVE-2018-1000073.patch b/meta/recipes-devtools/ruby/ruby/CVE-2018-1000073.patch
new file mode 100644
index 00000000000..22fa1b5f4d7
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/CVE-2018-1000073.patch
@@ -0,0 +1,34 @@
+From 1b931fc03b819b9a0214be3eaca844ef534175e2 Mon Sep 17 00:00:00 2001
+From: Jonathan Claudius <jclaudius@mozilla.com>
+Date: Wed, 7 Feb 2018 23:54:52 -0500
+Subject: [PATCH] Non-working patch for deducing symlinked base-dirs
+
+---
+CVE: CVE-2018-1000073
+
+Fixed in ruby 2.7.6.
+
+Upstream-Status: Backport [github.com/rubygems/rubygems/commit/1b931fc...]
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+---
+ lib/rubygems/package.rb | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/lib/rubygems/package.rb b/lib/rubygems/package.rb
+index dede959..cb9c74a 100644
+--- a/lib/rubygems/package.rb
++++ b/lib/rubygems/package.rb
+@@ -421,6 +421,8 @@ EOM
+ destination_dir = File.expand_path destination_dir
+
+ destination = File.join destination_dir, filename
++ destination = File.realpath destination if
++ File.respond_to? :realpath
+ destination = File.expand_path destination
+
+ raise Gem::Package::PathError.new(destination, destination_dir) unless
+--
+1.7.9.5
+
diff --git a/meta/recipes-devtools/ruby/ruby_2.5.0.bb b/meta/recipes-devtools/ruby/ruby_2.5.1.bb
index 1ac7f2aa5ae..1197323e90a 100644
--- a/meta/recipes-devtools/ruby/ruby_2.5.0.bb
+++ b/meta/recipes-devtools/ruby/ruby_2.5.1.bb
@@ -3,10 +3,11 @@ require ruby.inc
SRC_URI += " \
file://ruby-CVE-2017-9226.patch \
file://ruby-CVE-2017-9228.patch \
+ file://CVE-2018-1000073.patch \
"
-SRC_URI[md5sum] = "f4711f856fe14de222b9da3d3b8efa89"
-SRC_URI[sha256sum] = "46e6f3630f1888eb653b15fa811d77b5b1df6fd7a3af436b343cfe4f4503f2ab"
+SRC_URI[md5sum] = "23867bc8c16c55e43b14dfe0614bcfa8"
+SRC_URI[sha256sum] = "dac81822325b79c3ba9532b048c2123357d3310b2b40024202f360251d9829b1"
# it's unknown to configure script, but then passed to extconf.rb
# maybe it's not really needed as we're hardcoding the result with
@@ -34,6 +35,26 @@ 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
+
+ # Find out created.rid from .installed.list
+ created_rid=`grep created.rid ${B}/.installed.list`
+ # Remove build host directories
+ sed -i -e 's:${WORKDIR}::g' ${D}$created_rid
+
+}
+
PACKAGES =+ "${PN}-ri-docs ${PN}-rdoc"
SUMMARY_${PN}-ri-docs = "ri (Ruby Interactive) documentation for the Ruby standard library"
diff --git a/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts b/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
index 307feb71879..95eff04e17e 100755
--- a/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
+++ b/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
@@ -6,7 +6,8 @@
#
# The following script will run all the scriptlets found in #SYSCONFDIR#/deb-postinsts,
-# #SYSCONFDIR#/ipk-postinsts or #SYSCONFDIR#/rpm-postinsts.
+# #SYSCONFDIR#/ipk-postinsts or #SYSCONFDIR#/rpm-postinsts or the package manager in
+# case available.
# the order of this list is important, do not change!
backend_list="rpm deb ipk"
@@ -14,27 +15,29 @@ backend_list="rpm deb ipk"
pm_installed=false
for pm in $backend_list; do
- pi_dir="#SYSCONFDIR#/$pm-postinsts"
-
- if [ ! -d $pi_dir ]; then
- continue
- fi
-
# found the package manager, it has postinsts
case $pm in
"deb")
if [ -s "#LOCALSTATEDIR#/lib/dpkg/status" ]; then
pm_installed=true
+ break
fi
;;
"ipk")
if [ -s "#LOCALSTATEDIR#/lib/opkg/status" ]; then
pm_installed=true
+ break
fi
;;
esac
- break
+
+ pi_dir="#SYSCONFDIR#/$pm-postinsts"
+
+ # found postinsts directory
+ if [ -d $pi_dir ]; then
+ break
+ fi
done
remove_rcsd_link () {
@@ -43,7 +46,7 @@ remove_rcsd_link () {
fi
}
-if ! [ -d $pi_dir ]; then
+if ! [ -d $pi_dir ] && ! $pm_installed; then
remove_rcsd_link
exit 0
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 1b71a1f8bef..d42addf510c 100644
--- a/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts.service
+++ b/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts.service
@@ -3,7 +3,6 @@ Description=Run pending postinsts
DefaultDependencies=no
After=systemd-remount-fs.service systemd-tmpfiles-setup.service tmp.mount
Before=sysinit.target
-ConditionPathExistsGlob=#SYSCONFDIR#/*-postinsts
[Service]
Type=oneshot
diff --git a/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-squashfs-tools-patch-for-CVE-2015-4645-6.patch b/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-squashfs-tools-patch-for-CVE-2015-4645-6.patch
new file mode 100644
index 00000000000..2261ea94b75
--- /dev/null
+++ b/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-squashfs-tools-patch-for-CVE-2015-4645-6.patch
@@ -0,0 +1,47 @@
+From 3c0d67184d6edb63f3b7d6d5eb81531daa6388f3 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Tue, 28 Aug 2018 16:25:36 +0800
+Subject: [PATCH] squashfs-tools: patch for CVE-2015-4645(6)
+
+Upstream-Status: Backport[https://github.com/devttys0/sasquatch/pull/
+ 5/commits/6777e08cc38bc780d27c69c1d8c272867b74524f]
+
+CVE: CVE-2015-4645 CVE-2015-4646
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ squashfs-tools/unsquash-4.c | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/squashfs-tools/unsquash-4.c b/squashfs-tools/unsquash-4.c
+index ecdaac7..692ae25 100644
+--- a/squashfs-tools/unsquash-4.c
++++ b/squashfs-tools/unsquash-4.c
+@@ -31,9 +31,9 @@ static unsigned int *id_table;
+ int read_fragment_table_4(long long *directory_table_end)
+ {
+ int res, i;
+- int bytes = SQUASHFS_FRAGMENT_BYTES(sBlk.s.fragments);
+- int indexes = SQUASHFS_FRAGMENT_INDEXES(sBlk.s.fragments);
+- long long fragment_table_index[indexes];
++ size_t bytes = SQUASHFS_FRAGMENT_BYTES(sBlk.s.fragments);
++ size_t indexes = SQUASHFS_FRAGMENT_INDEXES(sBlk.s.fragments);
++ long long *fragment_table_index;
+
+ TRACE("read_fragment_table: %d fragments, reading %d fragment indexes "
+ "from 0x%llx\n", sBlk.s.fragments, indexes,
+@@ -43,6 +43,11 @@ int read_fragment_table_4(long long *directory_table_end)
+ *directory_table_end = sBlk.s.fragment_table_start;
+ return TRUE;
+ }
++
++ fragment_table_index = malloc(indexes*sizeof(long long));
++ if(fragment_table_index == NULL)
++ EXIT_UNSQUASH("read_fragment_table: failed to allocate "
++ "fragment table index\n");
+
+ fragment_table = malloc(bytes);
+ if(fragment_table == NULL)
+--
+2.7.4
+
diff --git a/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb b/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb
index a8baca51e3f..2f412634571 100644
--- a/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb
+++ b/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb
@@ -15,6 +15,7 @@ SRC_URI = "git://github.com/plougher/squashfs-tools.git;protocol=https \
file://0001-mksquashfs.c-get-inline-functions-work-with-C99.patch;striplevel=2 \
file://squashfs-tools-4.3-sysmacros.patch;striplevel=2 \
file://fix-compat.patch \
+ file://0001-squashfs-tools-patch-for-CVE-2015-4645-6.patch;striplevel=2 \
"
UPSTREAM_CHECK_COMMITS = "1"
SRC_URI[lzma.md5sum] = "29d5ffd03a5a3e51aef6a74e9eafb759"
@@ -36,6 +37,8 @@ do_install () {
install -m 0755 unsquashfs ${D}${sbindir}/
}
-ARM_INSTRUCTION_SET = "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/disable-git-version-gen.patch b/meta/recipes-devtools/strace/strace/disable-git-version-gen.patch
index 76daf3a3b73..47b1139c531 100644
--- a/meta/recipes-devtools/strace/strace/disable-git-version-gen.patch
+++ b/meta/recipes-devtools/strace/strace/disable-git-version-gen.patch
@@ -5,16 +5,16 @@ Upstream-Status: Inappropriate [configuration]
Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
-diff --git a/configure.ac b/configure.ac
-index 7004bd3..b2b03c6 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -31,7 +31,7 @@
+Index: strace-4.22/configure.ac
+===================================================================
+--- strace-4.22.orig/configure.ac
++++ strace-4.22/configure.ac
+@@ -32,7 +32,7 @@
AC_PREREQ(2.57)
AC_INIT([strace],
- m4_esyscmd([./git-version-gen .tarball-version]),
+ m4_esyscmd_s([cat .tarball-version]),
- [strace-devel@lists.sourceforge.net],
+ [strace-devel@lists.strace.io],
[strace],
[https://strace.io])
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
index 756cd8bb828..3d4913d68e0 100644
--- 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
@@ -22,25 +22,23 @@ 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 1fe8a8e..d72c717 100644
---- a/m4/mpers.m4
-+++ b/m4/mpers.m4
-@@ -53,12 +53,14 @@ case "$arch" in
- CFLAGS="$CFLAGS CFLAG $IFLAG"
- AC_CACHE_CHECK([for CFLAG compile support], [st_cv_cc],
+Index: strace-4.22/m4/mpers.m4
+===================================================================
+--- strace-4.22.orig/m4/mpers.m4
++++ strace-4.22/m4/mpers.m4
+@@ -108,6 +108,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])])
- if test $st_cv_cc = yes; then
- AC_CACHE_CHECK([for CFLAG runtime support], [st_cv_runtime],
+@@ -115,6 +116,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],
---
-1.9.1
-
diff --git a/meta/recipes-devtools/strace/strace_4.20.bb b/meta/recipes-devtools/strace/strace_4.24.bb
index 869c12f65a7..e6f7e9cba78 100644
--- a/meta/recipes-devtools/strace/strace_4.20.bb
+++ b/meta/recipes-devtools/strace/strace_4.24.bb
@@ -2,7 +2,7 @@ SUMMARY = "System call tracing tool"
HOMEPAGE = "http://strace.io"
SECTION = "console/utils"
LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f132b4d2adfccc63da4139a609367711"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6ddb91734b9c705f3e87362e97e5f64b"
SRC_URI = "https://strace.io/files/${PV}/strace-${PV}.tar.xz \
file://disable-git-version-gen.patch \
@@ -15,14 +15,11 @@ SRC_URI = "https://strace.io/files/${PV}/strace-${PV}.tar.xz \
file://0001-caps-abbrev.awk-fix-gawk-s-path.patch \
file://0001-tests-sigaction-Check-for-mips-and-alpha-before-usin.patch \
"
-
-SRC_URI[md5sum] = "f2271ab0fac49ebee9cbd7f3469227cb"
-SRC_URI[sha256sum] = "5bf3148dd17306a42566f7da17368fdd781afa147db05ea63a4ca2b50f58c523"
+SRC_URI[md5sum] = "8780136849c85acf76ad3a522aa4462a"
+SRC_URI[sha256sum] = "1f4e59fc1edfa2bfb4adf2a748623dc25b105ec79713dd84404199f91b0b0634"
inherit autotools ptest bluetooth
-RDEPENDS_${PN}-ptest += "make coreutils grep gawk sed"
-
PACKAGECONFIG_class-target ??= "\
${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
"
@@ -30,6 +27,10 @@ PACKAGECONFIG_class-target ??= "\
PACKAGECONFIG[bluez] = "ac_cv_header_bluetooth_bluetooth_h=yes,ac_cv_header_bluetooth_bluetooth_h=no,${BLUEZ}"
PACKAGECONFIG[libunwind] = "--with-libunwind,--without-libunwind,libunwind"
+EXTRA_OECONF += "--enable-mpers=no"
+
+CFLAGS_append_libc-musl = " -Dsigcontext_struct=sigcontext"
+
TESTDIR = "tests"
do_install_append() {
@@ -55,5 +56,7 @@ do_install_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_1.9.7.bb b/meta/recipes-devtools/subversion/subversion_1.10.0.bb
index 57735f7f868..42c2562bfc6 100644
--- a/meta/recipes-devtools/subversion/subversion_1.9.7.bb
+++ b/meta/recipes-devtools/subversion/subversion_1.10.0.bb
@@ -1,45 +1,44 @@
SUMMARY = "Subversion (svn) version control system client"
+HOMEPAGE = "http://subversion.apache.org"
SECTION = "console/network"
-DEPENDS = "apr-util serf sqlite3 file"
-DEPENDS_append_class-native = " file-replacement-native"
-RDEPENDS_${PN} = "serf"
-LICENSE = "Apache-2"
-HOMEPAGE = "http://subversion.tigris.org"
-
-BBCLASSEXTEND = "native"
+LICENSE = "Apache-2 & MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=83206f39819e7a4dfca2ff7c190f6ce0"
-inherit gettext pkgconfig
+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://serf.m4-Regex-modified-to-allow-D-in-paths.patch \
file://0001-Fix-libtool-name-in-configure.ac.patch \
file://serfmacro.patch \
"
-SRC_URI[md5sum] = "05b0c677681073920f938c1f322e0be2"
-SRC_URI[sha256sum] = "c3b118333ce12e501d509e66bb0a47bcc34d053990acab45559431ac3e491623"
+SRC_URI[md5sum] = "0126847f9e8cb8ed0b90a6a18b203309"
+SRC_URI[sha256sum] = "2cf23f3abb837dea0585a6b0ebd70e80e01f95bddef7c1aa097c18e3eaa6b584"
+
+inherit autotools pkgconfig gettext
-LIC_FILES_CHKSUM = "file://LICENSE;md5=af81ae49ba359e70626c05e9bf313709"
+PACKAGECONFIG ?= ""
PACKAGECONFIG[sasl] = "--with-sasl,--without-sasl,cyrus-sasl"
PACKAGECONFIG[gnome-keyring] = "--with-gnome-keyring,--without-gnome-keyring,glib-2.0 gnome-keyring"
EXTRA_OECONF = " \
- --without-berkeley-db --without-apxs \
- --without-swig --with-apr=${STAGING_BINDIR_CROSS} \
- --with-apr-util=${STAGING_BINDIR_CROSS} \
- --disable-keychain \
- ac_cv_path_RUBY=none"
+ --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 \
+"
-inherit autotools
+acpaths = "-I build/ -I build/ac-macros/"
-export LDFLAGS += " -L${STAGING_LIBDIR} "
CPPFLAGS += "-P"
BUILD_CPPFLAGS += "-P"
-acpaths = "-I build/ -I build/ac-macros/"
-
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
@@ -53,3 +52,7 @@ do_configure_prepend () {
#| /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/swig/swig.inc b/meta/recipes-devtools/swig/swig.inc
index bf61b02d6fb..aec544997f9 100644
--- a/meta/recipes-devtools/swig/swig.inc
+++ b/meta/recipes-devtools/swig/swig.inc
@@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=e7807a6282784a7dde4c846626b08fc6 \
SECTION = "devel"
-DEPENDS = "libpcre python3"
+DEPENDS = "libpcre"
SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz"
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
new file mode 100644
index 00000000000..a91385916c3
--- /dev/null
+++ b/meta/recipes-devtools/swig/swig/Python-Fix-new-GCC8-warnings-in-generated-code.patch
@@ -0,0 +1,191 @@
+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/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
new file mode 100644
index 00000000000..10e4afd1ba0
--- /dev/null
+++ b/meta/recipes-devtools/swig/swig/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch
@@ -0,0 +1,36 @@
+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
index 15f73486814..fe9d0747f21 100644
--- a/meta/recipes-devtools/swig/swig_3.0.12.bb
+++ b/meta/recipes-devtools/swig/swig_3.0.12.bb
@@ -3,6 +3,8 @@ 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 \
"
SRC_URI[md5sum] = "82133dfa7bba75ff9ad98a7046be687c"
SRC_URI[sha256sum] = "7cf9f447ae7ed1c51722efc45e7f14418d15d7a1e143ac9f09a668999f4fc94d"
diff --git a/meta/recipes-devtools/tcf-agent/tcf-agent/0001-canonicalize_file_name-is-specific-to-glibc.patch b/meta/recipes-devtools/tcf-agent/tcf-agent/0001-canonicalize_file_name-is-specific-to-glibc.patch
deleted file mode 100644
index 5f93c46f29f..00000000000
--- a/meta/recipes-devtools/tcf-agent/tcf-agent/0001-canonicalize_file_name-is-specific-to-glibc.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 23a3759b74d081b3b2849b0d37a0e5219f37813e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 7 Jan 2016 22:37:48 +0000
-Subject: [PATCH] canonicalize_file_name is specific to glibc
-
-When on Linux and not using glibc then we need to define
-canonicalize_file_name() API, therefore add a check for finding out if
-its not glibc
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- agent/tcf/framework/mdep.c | 2 +-
- agent/tcf/framework/mdep.h | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/agent/tcf/framework/mdep.c b/agent/tcf/framework/mdep.c
-index 2b52ca8..7d09655 100644
---- a/agent/tcf/framework/mdep.c
-+++ b/agent/tcf/framework/mdep.c
-@@ -1042,7 +1042,7 @@ char * canonicalize_file_name(const char * path) {
- return strdup(res);
- }
-
--#elif defined(__UCLIBC__)
-+#elif defined(__UCLIBC__) || !defined(__GLIBC__)
-
- char * canonicalize_file_name(const char * path) {
- return realpath(path, NULL);
-diff --git a/agent/tcf/framework/mdep.h b/agent/tcf/framework/mdep.h
-index 1e718a2..187c399 100644
---- a/agent/tcf/framework/mdep.h
-+++ b/agent/tcf/framework/mdep.h
-@@ -276,7 +276,7 @@ extern int loc_clock_gettime(int, struct timespec *);
-
- #define O_BINARY 0
-
--#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__)
-+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__) || !defined(__GLIBC__)
- # define O_LARGEFILE 0
- extern char ** environ;
- extern char * canonicalize_file_name(const char * path);
---
-2.7.0
-
diff --git a/meta/recipes-devtools/tcf-agent/tcf-agent/fix_ranlib.patch b/meta/recipes-devtools/tcf-agent/tcf-agent/fix_ranlib.patch
index b66f41ad280..abd33babebb 100644
--- a/meta/recipes-devtools/tcf-agent/tcf-agent/fix_ranlib.patch
+++ b/meta/recipes-devtools/tcf-agent/tcf-agent/fix_ranlib.patch
@@ -1,16 +1,17 @@
-Upstream-Status: Inappropriate [poky-specific fix]
+Actually pass the arguments to RANLIB.
+
+Upstream-Status: Pending
+Signed-off-by: Ross Burton <ross.burton@intel.com>
Index: agent/Makefile.inc
===================================================================
---- agent.orig/Makefile.inc
-+++ agent/Makefile.inc
-@@ -88,6 +88,9 @@ ifneq ($(OPSYS),Windows)
- ifneq ($(CC),g++)
- OPTS += -Wmissing-prototypes
+--- a/Makefile.inc
++++ b/Makefile.inc
+@@ -92,6 +92,7 @@ ifeq ($(OPSYS),GNU/Linux)
+ OPTS += -DUSE_uuid_generate=0
endif
-+ ifneq ($(RANLIB),)
-+ RANLIB += $@
-+ endif
+ OPTS += -DENABLE_arch_$(shell uname -m)
++ RANLIB += $@
endif
-
- # Compiler flags definition
+
+ ifneq ($(OPSYS),Windows)
diff --git a/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb b/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb
index ba14c426981..d901c18c39f 100644
--- a/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb
+++ b/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb
@@ -5,14 +5,13 @@ BUGTRACKER = "https://bugs.eclipse.org/bugs/"
LICENSE = "EPL-1.0 | EDL-1.0"
LIC_FILES_CHKSUM = "file://edl-v10.html;md5=522a390a83dc186513f0500543ad3679"
-SRCREV = "2dddd5f440a15d5406032fac20f206484513646f"
-PV = "1.4.0+git${SRCPV}"
+SRCREV = "a022ef2f1acfd9209a1bf792dda14ae4b0d1b60f"
+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;branch=1.4_neon_bugfix \
+SRC_URI = "git://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent \
file://fix_ranlib.patch \
file://ldflags.patch \
- file://0001-canonicalize_file_name-is-specific-to-glibc.patch;striplevel=2 \
file://tcf-agent.init \
file://tcf-agent.service \
"
@@ -46,6 +45,7 @@ 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}"
do_install() {
oe_runmake install INSTALLROOT=${D}
diff --git a/meta/recipes-devtools/vala/vala/disable-graphviz.patch b/meta/recipes-devtools/vala/vala/disable-graphviz.patch
index 15d186de054..477504dca3a 100644
--- a/meta/recipes-devtools/vala/vala/disable-graphviz.patch
+++ b/meta/recipes-devtools/vala/vala/disable-graphviz.patch
@@ -1,12 +1,14 @@
-From eb716dc856c20b3da146a4e83e9800bd1f53c739 Mon Sep 17 00:00:00 2001
+From 57f6b661d7865e8cecd17be36fab68f7f8447998 Mon Sep 17 00:00:00 2001
From: Rico Tzschichholz <ricotz@ubuntu.com>
Date: Wed, 6 Sep 2017 18:52:55 +0200
Subject: [PATCH] libvaladoc: Allow disabling the graphviz dependency of
+
valadoc
https://bugzilla.gnome.org/show_bug.cgi?id=787375
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
Upstream-Status: Submitted [bugzilla link above]
+
---
configure.ac | 60 +++++++++++++++++++----------------
libvaladoc/Makefile.am | 25 +++++++++++----
@@ -15,10 +17,10 @@ Upstream-Status: Submitted [bugzilla link above]
4 files changed, 63 insertions(+), 34 deletions(-)
diff --git a/configure.ac b/configure.ac
-index c73d5d6b1..291e503d5 100644
+index 730c72d..af81986 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -98,34 +98,38 @@ PKG_CHECK_MODULES(GMODULE, gmodule-2.0 >= $GLIB_REQUIRED)
+@@ -119,34 +119,38 @@ PKG_CHECK_MODULES(GMODULE, gmodule-2.0 >= $GLIB_REQUIRED)
AC_SUBST(GMODULE_CFLAGS)
AC_SUBST(GMODULE_LIBS)
@@ -86,10 +88,10 @@ index c73d5d6b1..291e503d5 100644
AC_PATH_PROG([XSLTPROC], [xsltproc], :)
diff --git a/libvaladoc/Makefile.am b/libvaladoc/Makefile.am
-index 89245d86b..7c07498b9 100644
+index 384292f..cce50d8 100644
--- a/libvaladoc/Makefile.am
+++ b/libvaladoc/Makefile.am
-@@ -127,10 +127,6 @@ libvaladoc_la_VALASOURCES = \
+@@ -126,10 +126,6 @@ libvaladoc_la_VALASOURCES = \
content/tablerow.vala \
content/taglet.vala \
content/text.vala \
@@ -100,7 +102,7 @@ index 89245d86b..7c07498b9 100644
parser/manyrule.vala \
parser/oneofrule.vala \
parser/optionalrule.vala \
-@@ -158,13 +154,24 @@ libvaladoc_la_VALASOURCES = \
+@@ -156,13 +152,24 @@ libvaladoc_la_VALASOURCES = \
highlighter/codetoken.vala \
highlighter/highlighter.vala \
html/basicdoclet.vala \
@@ -126,17 +128,18 @@ index 89245d86b..7c07498b9 100644
libvaladoc@PACKAGE_SUFFIX@_la_SOURCES = \
libvaladoc.vala.stamp \
$(libvaladoc_la_VALASOURCES:.vala=.c) \
-@@ -182,8 +189,8 @@ libvaladoc.vala.stamp: $(libvaladoc_la_VALASOURCES)
+@@ -182,9 +189,9 @@ libvaladoc.vala.stamp: $(libvaladoc_la_VALASOURCES)
--library valadoc \
--vapi valadoc@PACKAGE_SUFFIX@.vapi \
--vapidir $(top_srcdir)/vapi --pkg gmodule-2.0 \
- --vapidir $(top_srcdir)/vapi --pkg libgvc \
--vapidir $(top_srcdir)/gee --pkg gee \
+ --vapidir $(top_srcdir)/vala --pkg vala \
+ $(LIBGVC_PKG) \
--pkg config \
$(filter %.vala %.c,$^)
touch $@
-@@ -209,6 +216,9 @@ nodist_pkgconfig_DATA = valadoc@PACKAGE_SUFFIX@.pc
+@@ -211,6 +218,9 @@ nodist_pkgconfig_DATA = valadoc@PACKAGE_SUFFIX@.pc
valadoc@PACKAGE_SUFFIX@.pc: valadoc.pc
cp $< $@
@@ -146,7 +149,7 @@ index 89245d86b..7c07498b9 100644
vapidir = $(datadir)/vala/vapi
dist_vapi_DATA = valadoc@PACKAGE_SUFFIX@.vapi
-@@ -216,6 +226,9 @@ nodist_vapi_DATA = valadoc@PACKAGE_SUFFIX@.deps
+@@ -218,6 +228,9 @@ nodist_vapi_DATA = valadoc@PACKAGE_SUFFIX@.deps
valadoc@PACKAGE_SUFFIX@.deps: valadoc.deps
cp $< $@
@@ -157,7 +160,7 @@ index 89245d86b..7c07498b9 100644
EXTRA_DIST = \
$(libvaladoc_la_VALASOURCES) \
diff --git a/libvaladoc/html/basicdoclet.vala b/libvaladoc/html/basicdoclet.vala
-index cc9ea4ed7..432c3818f 100644
+index 37c731c..e0326ef 100644
--- a/libvaladoc/html/basicdoclet.vala
+++ b/libvaladoc/html/basicdoclet.vala
@@ -46,7 +46,11 @@ public abstract class Valadoc.Html.BasicDoclet : Api.Visitor, Doclet {
@@ -199,25 +202,23 @@ index cc9ea4ed7..432c3818f 100644
public void write_namespace_content (Namespace node, Api.Node? parent) {
diff --git a/libvaladoc/html/htmlmarkupwriter.vala b/libvaladoc/html/htmlmarkupwriter.vala
-index 15ed9efd1..fe0d705d4 100644
+index 5aa4afd..e79b0b8 100644
--- a/libvaladoc/html/htmlmarkupwriter.vala
+++ b/libvaladoc/html/htmlmarkupwriter.vala
-@@ -43,12 +43,16 @@ public class Valadoc.Html.MarkupWriter : Valadoc.MarkupWriter {
- }, xml_declaration);
+@@ -51,12 +51,16 @@ public class Valadoc.Html.MarkupWriter : Valadoc.MarkupWriter {
+ }
}
+#if HAVE_GRAPHVIZ
- public MarkupWriter add_usemap (Charts.Chart chart) {
+ public unowned MarkupWriter add_usemap (Charts.Chart chart) {
string? buf = (string?) chart.write_buffer ("cmapx");
if (buf != null) {
raw_text ("\n");
raw_text ((!) buf);
}
+#else
-+ public MarkupWriter add_usemap (void* chart) {
++ public unowned MarkupWriter add_usemap (void* chart) {
+#endif
return this;
}
---
-2.14.1
diff --git a/meta/recipes-devtools/vala/vala_0.38.8.bb b/meta/recipes-devtools/vala/vala_0.42.0.bb
index e2baf655596..2b02e0c8404 100644
--- a/meta/recipes-devtools/vala/vala_0.38.8.bb
+++ b/meta/recipes-devtools/vala/vala_0.42.0.bb
@@ -6,5 +6,5 @@ SRC_URI += " file://0001-git-version-gen-don-t-append-dirty-if-we-re-not-in-g.pa
file://0001-Disable-valadoc.patch \
"
-SRC_URI[md5sum] = "37edd0467d056fd9e3937d0bbceda80b"
-SRC_URI[sha256sum] = "2fa746b51cd66e43577d1da06a80b708c2875cadaafee77e9700ea35cf23882c"
+SRC_URI[md5sum] = "aa6eb8097d25b5847ad3fab34c0ff865"
+SRC_URI[sha256sum] = "62a55986da23cf3aaafd7624c32db2a1af11c8419e0bb0751727d10f1f7ab7be"
diff --git a/meta/recipes-devtools/valgrind/valgrind/0001-fix-opcode-not-supported-on-mips32-linux.patch b/meta/recipes-devtools/valgrind/valgrind/0001-fix-opcode-not-supported-on-mips32-linux.patch
new file mode 100644
index 00000000000..39b624d9f6c
--- /dev/null
+++ b/meta/recipes-devtools/valgrind/valgrind/0001-fix-opcode-not-supported-on-mips32-linux.patch
@@ -0,0 +1,82 @@
+From fb5362f205b37c5060fcd764a7ed393abe4f2f3d Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Fri, 27 Jul 2018 17:39:37 +0800
+Subject: [PATCH 1/2] fix opcode not supported on mips32-linux
+
+While build tests(`make check') on mips32-linux, there are
+serial failures such as:
+[snip]
+| mips-wrsmllib32-linux-gcc -meb -mabi=32 -mhard-float -c
+-o atomic_incs-atomic_incs.o `test -f 'atomic_incs.c' || echo
+'../../../valgrind-3.13.0/memcheck/tests/'`atomic_incs.c
+| /tmp/ccqrmINN.s: Assembler messages:
+| /tmp/ccqrmINN.s:247: Error: opcode not supported on this
+processor: mips1 (mips1) `ll $t3,0($t1)'
+| /tmp/ccqrmINN.s:249: Error: opcode not supported on this
+processor: mips1 (mips1) `sc $t3,0($t1)'
+[snip]
+
+Since the following commit applied, it defines CLFAGS for mips32,
+but missed to pass them to tests which caused the above failure
+...
+3e344c57f Merge in a port for mips32-linux
+...
+
+Upstream-Status: Submitted [https://bugs.kde.org/show_bug.cgi?id=396905]
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ helgrind/tests/Makefile.am | 5 +++++
+ memcheck/tests/Makefile.am | 5 +++++
+ none/tests/mips32/Makefile.am | 4 ++++
+ 3 files changed, 14 insertions(+)
+
+diff --git a/helgrind/tests/Makefile.am b/helgrind/tests/Makefile.am
+index ad1af191a..6209d35a7 100644
+--- a/helgrind/tests/Makefile.am
++++ b/helgrind/tests/Makefile.am
+@@ -214,6 +214,11 @@ check_PROGRAMS += annotate_rwlock
+ endif
+
+ AM_CFLAGS += $(AM_FLAG_M3264_PRI)
++
++if VGCONF_PLATFORMS_INCLUDE_MIPS32_LINUX
++AM_CFLAGS += $(AM_CFLAGS_MIPS32_LINUX)
++endif
++
+ AM_CXXFLAGS += $(AM_FLAG_M3264_PRI)
+
+ LDADD = -lpthread
+diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am
+index 84e49405f..aff861a32 100644
+--- a/memcheck/tests/Makefile.am
++++ b/memcheck/tests/Makefile.am
+@@ -443,6 +443,11 @@ check_PROGRAMS += reach_thread_register
+ endif
+
+ AM_CFLAGS += $(AM_FLAG_M3264_PRI)
++
++if VGCONF_PLATFORMS_INCLUDE_MIPS32_LINUX
++AM_CFLAGS += $(AM_CFLAGS_MIPS32_LINUX)
++endif
++
+ AM_CXXFLAGS += $(AM_FLAG_M3264_PRI)
+
+ if VGCONF_PLATFORMS_INCLUDE_ARM_LINUX
+diff --git a/none/tests/mips32/Makefile.am b/none/tests/mips32/Makefile.am
+index d11591d45..602cd26f6 100644
+--- a/none/tests/mips32/Makefile.am
++++ b/none/tests/mips32/Makefile.am
+@@ -99,6 +99,10 @@ check_PROGRAMS = \
+ round_fpu64 \
+ fpu_branches
+
++if VGCONF_PLATFORMS_INCLUDE_MIPS32_LINUX
++AM_CFLAGS += $(AM_CFLAGS_MIPS32_LINUX)
++endif
++
+ AM_CFLAGS += @FLAG_M32@
+ AM_CXXFLAGS += @FLAG_M32@
+ AM_CCASFLAGS += @FLAG_M32@
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/valgrind/valgrind/0002-fix-broken-inline-asm-in-tests-on-mips32-linux.patch b/meta/recipes-devtools/valgrind/valgrind/0002-fix-broken-inline-asm-in-tests-on-mips32-linux.patch
new file mode 100644
index 00000000000..6df295f8a2e
--- /dev/null
+++ b/meta/recipes-devtools/valgrind/valgrind/0002-fix-broken-inline-asm-in-tests-on-mips32-linux.patch
@@ -0,0 +1,47 @@
+From 63ce36396348e7c4c021cffa652d2e3d20f7963a Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Fri, 27 Jul 2018 17:51:54 +0800
+Subject: [PATCH 2/2] fix broken inline asm in tests on mips32-linux
+
+While build tests(`make check') with gcc 8.1.0 on mips32-linux,
+there is a failure
+[snip]
+|mips-wrsmllib32-linux-gcc -meb -mabi=32 -mhard-float -march=mips32
+-c -o tc08_hbl2-tc08_hbl2.o `test -f 'tc08_hbl2.c' || echo '../../../
+valgrind-3.13.0/helgrind/tests/'`tc08_hbl2.c
+|/tmp/cc37aJxQ.s: Assembler messages:
+|/tmp/cc37aJxQ.s:275: Error: symbol `L1xyzzy1main' is already defined
+|Makefile:1323: recipe for target 'tc08_hbl2-tc08_hbl2.o' failed
+[snip]
+
+Remove the duplicated L1xyzzy1main, and use local symbol to replace.
+http://tigcc.ticalc.org/doc/gnuasm.html#SEC46
+
+Upstream-Status: Submitted [https://bugs.kde.org/show_bug.cgi?id=396906]
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ helgrind/tests/tc08_hbl2.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/helgrind/tests/tc08_hbl2.c b/helgrind/tests/tc08_hbl2.c
+index 2a757a008..f660d82dd 100644
+--- a/helgrind/tests/tc08_hbl2.c
++++ b/helgrind/tests/tc08_hbl2.c
+@@ -121,12 +121,12 @@
+ #elif defined(PLAT_mips32_linux) || defined(PLAT_mips64_linux)
+ # define INC(_lval,_lqual) \
+ __asm__ __volatile__ ( \
+- "L1xyzzy1" _lqual":\n" \
++ "1:\n" \
+ " move $t0, %0\n" \
+ " ll $t1, 0($t0)\n" \
+ " addiu $t1, $t1, 1\n" \
+ " sc $t1, 0($t0)\n" \
+- " beqz $t1, L1xyzzy1" _lqual \
++ " beqz $t1, 1b\n" \
+ : /*out*/ : /*in*/ "r"(&(_lval)) \
+ : /*trash*/ "t0", "t1", "memory" \
+ )
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/valgrind/valgrind_3.13.0.bb b/meta/recipes-devtools/valgrind/valgrind_3.13.0.bb
index d3af35e7f8b..39ec6f5cc83 100644
--- a/meta/recipes-devtools/valgrind/valgrind_3.13.0.bb
+++ b/meta/recipes-devtools/valgrind/valgrind_3.13.0.bb
@@ -37,6 +37,8 @@ SRC_URI = "ftp://sourceware.org/pub/valgrind/valgrind-${PV}.tar.bz2 \
file://link-gz-tests.patch \
file://ppc-headers.patch \
file://mask-CPUID-support-in-HWCAP-on-aarch64.patch \
+ file://0001-fix-opcode-not-supported-on-mips32-linux.patch \
+ file://0002-fix-broken-inline-asm-in-tests-on-mips32-linux.patch \
"
SRC_URI[md5sum] = "817dd08f1e8a66336b9ff206400a5369"
SRC_URI[sha256sum] = "d76680ef03f00cd5e970bbdcd4e57fb1f6df7d2e2c071635ef2be74790190c3b"
@@ -54,7 +56,6 @@ COMPATIBLE_HOST_linux-gnux32 = 'null'
COMPATIBLE_HOST_linux-muslx32 = 'null'
# Disable for some MIPS variants
-COMPATIBLE_HOST_mipsarchn32 = 'null'
COMPATIBLE_HOST_mipsarchr6 = 'null'
inherit autotools ptest multilib_header
diff --git a/meta/recipes-devtools/yasm/yasm_1.3.0.bb b/meta/recipes-devtools/yasm/yasm_1.3.0.bb
deleted file mode 100644
index 31af1e287e9..00000000000
--- a/meta/recipes-devtools/yasm/yasm_1.3.0.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY = "x86 (SSE) assembler supporting NASM and GAS-syntaxes"
-LICENSE = "BSD"
-HOMEPAGE = "http://www.tortall.net/projects/yasm/"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=a12d8903508fb6bfd49d8d82c6170dd9"
-
-SRC_URI = "http://www.tortall.net/projects/yasm/releases/${BP}.tar.gz"
-
-SRC_URI[md5sum] = "fc9e586751ff789b34b1f21d572d96af"
-SRC_URI[sha256sum] = "3dce6601b495f5b3d45b59f7d2492a340ee7e84b5beca17e48f862502bd5603f"
-
-export CCLD_FOR_BUILD = "${CC_FOR_BUILD}"
-
-inherit autotools gettext
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-extended/acpica/acpica_20170303.bb b/meta/recipes-extended/acpica/acpica_20180508.bb
index 51ae77b7840..b5c89fafc59 100644
--- a/meta/recipes-extended/acpica/acpica_20170303.bb
+++ b/meta/recipes-extended/acpica/acpica_20180508.bb
@@ -14,15 +14,14 @@ LIC_FILES_CHKSUM = "file://generate/unix/readme.txt;md5=204407e197c1a01154a48f6c
COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
-DEPENDS = "bison flex"
+DEPENDS = "bison flex bison-native"
SRC_URI = "https://acpica.org/sites/acpica/files/acpica-unix2-${PV}.tar.gz \
- file://rename-yy_scan_string-manually.patch \
- file://manipulate-fds-instead-of-FILE.patch;striplevel=2 \
- file://0001-Linux-add-support-for-X32-ABI-compilation.patch \
- "
-SRC_URI[md5sum] = "48ef4314fb4ffdd0c96f14dcf20544e1"
-SRC_URI[sha256sum] = "b2d81e84107ac9a02be86ea43cbea7afa8fd4b4150270bc88c2d4c9fea0b8aad"
+ file://rename-yy_scan_string-manually.patch \
+ file://manipulate-fds-instead-of-FILE.patch \
+ "
+SRC_URI[md5sum] = "31691e2eb82b2064f78536a3423c18d6"
+SRC_URI[sha256sum] = "5d8fc9d9db9e04830d40bec9add04b21c05d466e0187d354815006fdd823cf15"
UPSTREAM_CHECK_URI = "https://acpica.org/downloads"
S = "${WORKDIR}/acpica-unix2-${PV}"
diff --git a/meta/recipes-extended/acpica/files/0001-Linux-add-support-for-X32-ABI-compilation.patch b/meta/recipes-extended/acpica/files/0001-Linux-add-support-for-X32-ABI-compilation.patch
deleted file mode 100644
index df742000689..00000000000
--- a/meta/recipes-extended/acpica/files/0001-Linux-add-support-for-X32-ABI-compilation.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From d22241efc0708c9799f17a20eabb52a48d6d6ea1 Mon Sep 17 00:00:00 2001
-From: Anuj Mittal <anuj.mittal@intel.com>
-Date: Tue, 2 Jan 2018 12:35:32 +0800
-Subject: [PATCH] Linux: add support for X32 ABI compilation
-
-X32 follows ILP32 model. Check for ILP32 as well when checking for
-x86_64 to ensure the defines are correct for X32 ABI.
-
-Upstream-Status: Submitted [https://github.com/acpica/acpica/pull/348]
-
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- source/include/platform/aclinux.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/source/include/platform/aclinux.h b/source/include/platform/aclinux.h
-index 75b1d82..6b8ff73 100644
---- a/source/include/platform/aclinux.h
-+++ b/source/include/platform/aclinux.h
-@@ -315,7 +315,7 @@
- #define ACPI_FLUSH_CPU_CACHE()
- #define ACPI_CAST_PTHREAD_T(Pthread) ((ACPI_THREAD_ID) (Pthread))
-
--#if defined(__ia64__) || defined(__x86_64__) ||\
-+#if defined(__ia64__) || (defined(__x86_64__) && !defined(__ILP32__)) ||\
- defined(__aarch64__) || defined(__PPC64__) ||\
- defined(__s390x__)
- #define ACPI_MACHINE_WIDTH 64
---
-2.7.4
-
diff --git a/meta/recipes-extended/acpica/files/manipulate-fds-instead-of-FILE.patch b/meta/recipes-extended/acpica/files/manipulate-fds-instead-of-FILE.patch
index 5610ed9beb6..d8b5f9aa8a1 100644
--- a/meta/recipes-extended/acpica/files/manipulate-fds-instead-of-FILE.patch
+++ b/meta/recipes-extended/acpica/files/manipulate-fds-instead-of-FILE.patch
@@ -1,4 +1,4 @@
-From 69171c22f3872ecb4c1ab27985e93ca44084595e Mon Sep 17 00:00:00 2001
+From 540d80469e6a7dce6baf7214df90e86daffc5175 Mon Sep 17 00:00:00 2001
From: Fan Xin <fan.xin@jp.fujitsu.com>
Date: Mon, 5 Jun 2017 13:26:38 +0900
Subject: [PATCH] aslfiles.c: manipulate fds instead of FILE
@@ -16,18 +16,20 @@ Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Rebase on acpica 20170303
Signed-off-by: Fan Xin <fan.xin@jp.fujitsu.com>
+
---
- acpica-unix2-20170303/source/compiler/aslfiles.c | 14 +++++++++++---
- 1 file changed, 11 insertions(+), 3 deletions(-)
+ source/compiler/aslfiles.c | 15 ++++++++++++---
+ 1 file changed, 12 insertions(+), 3 deletions(-)
-diff --git a/acpica-unix2-20170303/source/compiler/aslfiles.c b/acpica-unix2-20170303/source/compiler/aslfiles.c
-index 809090c..97898b1 100644
---- a/acpica-unix2-20170303/source/compiler/aslfiles.c
-+++ b/acpica-unix2-20170303/source/compiler/aslfiles.c
-@@ -44,6 +44,10 @@
+diff --git a/source/compiler/aslfiles.c b/source/compiler/aslfiles.c
+index 82865db..cc072dc 100644
+--- a/source/compiler/aslfiles.c
++++ b/source/compiler/aslfiles.c
+@@ -43,6 +43,11 @@
+
#include "aslcompiler.h"
#include "acapps.h"
- #include "dtcompiler.h"
++#include "dtcompiler.h"
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
@@ -35,7 +37,7 @@ index 809090c..97898b1 100644
#define _COMPONENT ACPI_COMPILER
ACPI_MODULE_NAME ("aslfiles")
-@@ -607,6 +611,8 @@ FlOpenMiscOutputFiles (
+@@ -606,6 +611,8 @@ FlOpenMiscOutputFiles (
if (Gbl_DebugFlag)
{
@@ -44,7 +46,7 @@ index 809090c..97898b1 100644
Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_DEBUG);
if (!Filename)
{
-@@ -618,10 +624,10 @@ FlOpenMiscOutputFiles (
+@@ -617,10 +624,10 @@ FlOpenMiscOutputFiles (
/* Open the debug file as STDERR, text mode */
Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Filename = Filename;
@@ -58,7 +60,7 @@ index 809090c..97898b1 100644
{
/*
* A problem with freopen is that on error, we no longer
-@@ -635,6 +641,8 @@ FlOpenMiscOutputFiles (
+@@ -634,6 +641,8 @@ FlOpenMiscOutputFiles (
exit (1);
}
@@ -67,6 +69,3 @@ index 809090c..97898b1 100644
AslCompilerSignon (ASL_FILE_DEBUG_OUTPUT);
AslCompilerFileHeader (ASL_FILE_DEBUG_OUTPUT);
}
---
-1.9.1
-
diff --git a/meta/recipes-extended/at/at_3.1.20.bb b/meta/recipes-extended/at/at_3.1.20.bb
index 8fe3b437e60..b76e83d1d45 100644
--- a/meta/recipes-extended/at/at_3.1.20.bb
+++ b/meta/recipes-extended/at/at_3.1.20.bb
@@ -8,6 +8,12 @@ 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)} \
"
diff --git a/meta/recipes-extended/bash/bash.inc b/meta/recipes-extended/bash/bash.inc
index 9c2b065f9f3..2e7f261a2e7 100644
--- a/meta/recipes-extended/bash/bash.inc
+++ b/meta/recipes-extended/bash/bash.inc
@@ -7,7 +7,7 @@ DEPENDS = "ncurses bison-native virtual/libiconv"
inherit autotools gettext texinfo update-alternatives ptest
EXTRA_AUTORECONF += "--exclude=autoheader --exclude=aclocal"
-EXTRA_OECONF = "--enable-job-control --without-bash-malloc"
+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
# startup files, even if they are not interactive.
diff --git a/meta/recipes-extended/bash/bash/bash-memleak-bug-fix-for-builtin-command-read.patch b/meta/recipes-extended/bash/bash/bash-memleak-bug-fix-for-builtin-command-read.patch
deleted file mode 100644
index 9fb6ba972b9..00000000000
--- a/meta/recipes-extended/bash/bash/bash-memleak-bug-fix-for-builtin-command-read.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From d3b6303a6853f612a56848ee4e59eaa0b0ab9489 Mon Sep 17 00:00:00 2001
-From: Zhang Xiao <xiao.zhang@windriver.com>
-Date: Tue, 21 Feb 2017 11:30:14 +0800
-Subject: [PATCH] bash: memleak bug fix for builtin command read
-
-Built in command "read" with "-e" use Readline to obtain the line
-in an interactive shell. In this process, a string "rlbuf" is
-just allocated without free operation thus cause memory leak. Fix it.
-
-Upstream-Status: Submitted [http://lists.gnu.org/archive/html/bug-bash/2017-02/msg00061.html]
-
-Signed-off-by: Zhang Xiao <xiao.zhang@windriver.com>
----
- builtins/read.def | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/builtins/read.def b/builtins/read.def
-index 4397154..ee0c5a6 100644
---- a/builtins/read.def
-+++ b/builtins/read.def
-@@ -674,6 +674,11 @@ add_char:
- input_string[i] = '\0';
- CHECK_ALRM;
-
-+#if defined (READLINE)
-+ if (edit)
-+ xfree (rlbuf);
-+#endif
-+
- if (retval < 0)
- {
- t_errno = errno;
---
-1.9.1
-
diff --git a/meta/recipes-extended/bash/bash_4.4.12.bb b/meta/recipes-extended/bash/bash_4.4.12.bb
deleted file mode 100644
index 9382a77af68..00000000000
--- a/meta/recipes-extended/bash/bash_4.4.12.bb
+++ /dev/null
@@ -1,24 +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 \
- file://execute_cmd.patch;striplevel=0 \
- file://mkbuiltins_have_stringize.patch \
- file://build-tests.patch \
- file://test-output.patch \
- file://fix-run-coproc-run-heredoc-run-execscript-run-test-f.patch \
- file://run-ptest \
- file://fix-run-builtins.patch \
- file://0001-help-fix-printf-format-security-warning.patch \
- file://bash-memleak-bug-fix-for-builtin-command-read.patch \
- file://pathexp-dep.patch \
- "
-
-SRC_URI[tarball.md5sum] = "7c112970cbdcadfc331e10eeb5f6aa41"
-SRC_URI[tarball.sha256sum] = "57d8432be54541531a496fd4904fdc08c12542f43605a9202594fa5d5f9f2331"
-
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-extended/bash/bash_4.4.18.bb b/meta/recipes-extended/bash/bash_4.4.18.bb
new file mode 100644
index 00000000000..8fa0978d43a
--- /dev/null
+++ b/meta/recipes-extended/bash/bash_4.4.18.bb
@@ -0,0 +1,41 @@
+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-4.4-patches/bash44-019;apply=yes;striplevel=0;name=patch019 \
+ ${GNU_MIRROR}/bash/bash-4.4-patches/bash44-020;apply=yes;striplevel=0;name=patch020 \
+ ${GNU_MIRROR}/bash/bash-4.4-patches/bash44-021;apply=yes;striplevel=0;name=patch021 \
+ ${GNU_MIRROR}/bash/bash-4.4-patches/bash44-022;apply=yes;striplevel=0;name=patch022 \
+ ${GNU_MIRROR}/bash/bash-4.4-patches/bash44-023;apply=yes;striplevel=0;name=patch023 \
+ file://execute_cmd.patch;striplevel=0 \
+ file://mkbuiltins_have_stringize.patch \
+ file://build-tests.patch \
+ file://test-output.patch \
+ file://fix-run-coproc-run-heredoc-run-execscript-run-test-f.patch \
+ file://run-ptest \
+ file://fix-run-builtins.patch \
+ file://0001-help-fix-printf-format-security-warning.patch \
+ file://pathexp-dep.patch \
+ "
+
+SRC_URI[tarball.md5sum] = "518e2c187cc11a17040f0915dddce54e"
+SRC_URI[tarball.sha256sum] = "604d9eec5e4ed5fd2180ee44dd756ddca92e0b6aa4217bbab2b6227380317f23"
+
+SRC_URI[patch019.md5sum] = "8f43e1d277b02f3319a34c1cd4a4ff3e"
+SRC_URI[patch019.sha256sum] = "27170d6edfe8819835407fdc08b401d2e161b1400fe9d0c5317a51104c89c11e"
+SRC_URI[patch020.md5sum] = "5217ff08c444446ec306dce60437c288"
+SRC_URI[patch020.sha256sum] = "1840e2cbf26ba822913662f74037594ed562361485390c52813b38156c99522c"
+SRC_URI[patch021.md5sum] = "282c7d9b38da8005d25b4f816328a2f4"
+SRC_URI[patch021.sha256sum] = "bd8f59054a763ec1c64179ad5cb607f558708a317c2bdb22b814e3da456374c1"
+SRC_URI[patch022.md5sum] = "0b709c9d7f8e6cf267a8b863efb899f7"
+SRC_URI[patch022.sha256sum] = "45331f0936e36ab91bfe44b936e33ed8a1b1848fa896e8a1d0f2ef74f297cb79"
+SRC_URI[patch023.md5sum] = "fe2e0ca4cf9409ff0e9428e1236f983e"
+SRC_URI[patch023.sha256sum] = "4fec236f3fbd3d0c47b893fdfa9122142a474f6ef66c20ffb6c0f4864dd591b6"
+
+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/libmath.h b/meta/recipes-extended/bc/bc/libmath.h
new file mode 100644
index 00000000000..63e1acb9ef5
--- /dev/null
+++ b/meta/recipes-extended/bc/bc/libmath.h
@@ -0,0 +1,46 @@
+{"@iK20:s2:p@r",
+"@iF1,5.6,7,8,9,10,11,12,13,14,15[l0:KA:#Z1:l0:s7:pKA:s0:pl5:C1,0:",
+"s14:pl7:s0:pl14:RN1:l5:0<Z2:1s12:pl5:ns5:pN2:l2:s15:pK6:l15:+",
+"K.44:l5:*+s13:pl5:cS1+s2:pN3:l5:1>Z4:l10:1+s10:pl5:K2:/s5:pl2:",
+"1+s2:pJ3:N4:l13:s2:p1l5:+s14:pl5:s6:p1s8:pK2:s11:pN6:1B7:J5:N8:",
+"l11:i11:pJ6:N7:l6:l5:*s6:l8:l11:*s8:/s9:pl9:0=Z9:l10:0>Z10:N11:",
+"l10:d10:Z12:l14:l14:*s14:pJ11:N12:N10:l15:s2:pl12:Z13:1l14:/R",
+"N13:l14:1/RN9:l14:l9:+s14:pJ8:N5:0R]@r",
+"@iF2,5.7,9,10,11,12,13,14,15[l0:KA:#Z1:l0:s7:pKA:s0:pl5:C2,0:",
+"s14:pl7:s0:pl14:RN1:l5:0{Z2:1K10:l2:^-1/RN2:l2:s15:pK6:l2:+s2:",
+"pK2:s10:p0s11:pN3:l5:K2:}Z4:l10:K2:*s10:pl5:cRs5:pJ3:N4:N5:l5:",
+"K.5:{Z6:l10:K2:*s10:pl5:cRs5:pJ5:N6:l5:1-l5:1+/s13:s14:pl13:l13:",
+"*s12:pK3:s11:pN8:1B9:J7:N10:l11:K2:+s11:pJ8:N9:l13:l12:*s13:l11:",
+"/s9:pl9:0=Z11:l10:l14:*s14:pl15:s2:pl14:1/RN11:l14:l9:+s14:pJ10:N7:",
+"0R]@r",
+"@iF3,5.7,9,11,12,13,16,14,15[l0:KA:#Z1:l0:s7:pKA:s0:pl5:C3,0:",
+"s14:pl7:s0:pl14:RN1:l2:s15:pK1.1:l15:*K2:+s2:p1C4,0:s14:pl5:0",
+"<Z2:1s12:pl5:ns5:pN2:0s2:pl5:l14:/K2:+K4:/s13:pl5:K4:l13:*l14:",
+"*-s5:pl13:K2:%Z3:l5:ns5:pN3:l15:K2:+s2:pl5:s9:s14:pl5:nl5:*s16:",
+"pK3:s11:pN5:1B6:J4:N7:l11:K2:+s11:pJ5:N6:l9:l16:l11:l11:1-*/*",
+"s9:pl9:0=Z8:l15:s2:pl12:Z9:l14:n1/RN9:l14:1/RN8:l14:l9:+s14:p",
+"J7:N4:0R]@r",
+"@iF5,5.7,14,15[l0:KA:#Z1:l0:s7:pKA:s0:pl5:C5,0:s14:pl7:s0:pl14:",
+"RN1:l2:s15:pl2:K1.2:*s2:pl5:1C4,0:K2:*+C3,0:s14:pl15:s2:pl14:",
+"1/R0R]@r",
+"@iF4,5.6,7,9,10,11,12,13,16,14,15[l0:KA:#Z1:l0:s7:pKA:s0:pl5:",
+"C4,0:s14:pl7:s0:pl14:RN1:1s12:pl5:0<Z2:1ns12:pl5:ns5:pN2:l5:1",
+"=Z3:l2:K25:{Z4:K.7853981633974483096156608:l12:/RN4:l2:K40:{Z5:",
+"K.7853981633974483096156608458198757210492:l12:/RN5:l2:K60:{Z6:",
+"K.785398163397448309615660845819875721049292349843776455243736",
+":l12:/RN6:N3:l5:K.2:=Z7:l2:K25:{Z8:K.1973955598498807583700497",
+":l12:/RN8:l2:K40:{Z9:K.1973955598498807583700497651947902934475",
+":l12:/RN9:l2:K60:{Z10:K.197395559849880758370049765194790293447585103787852101517688",
+":l12:/RN10:N7:l2:s15:pl5:K.2:>Z11:l15:K5:+s2:pK.2:C4,0:s6:pN11:",
+"l15:K3:+s2:pN12:l5:K.2:>Z13:l10:1+s10:pl5:K.2:-1l5:K.2:*+/s5:",
+"pJ12:N13:l5:s13:s14:pl5:nl5:*s16:pK3:s11:pN15:1B16:J14:N17:l11:",
+"K2:+s11:pJ15:N16:l13:l16:*s13:l11:/s9:pl9:0=Z18:l15:s2:pl10:l6:",
+"*l14:+l12:/RN18:l14:l9:+s14:pJ17:N14:0R]@r",
+"@iF6,13,5.6,7,8,9,10,11,12,16,14,15[l0:KA:#Z1:l0:s7:pKA:s0:pl13:",
+"l5:C6,00:s14:pl7:s0:pl14:RN1:l2:s15:p0s2:pl13:1/s13:pl13:0<Z2:",
+"l13:ns13:pl13:K2:%1=Z3:1s12:pN3:N2:1s10:pK2:s11:pN5:l11:l13:{",
+"B6:J4:N7:l11:i11:pJ5:N6:l10:l11:*s10:pJ7:N4:K1.5:l15:*s2:pl5:",
+"l13:^K2:l13:^/l10:/s10:p1s9:s14:pl5:nl5:*K4:/s16:pK1.5:l15:*l10:",
+"cL+l10:cS-s2:p1s11:pN9:1B10:J8:N11:l11:i11:pJ9:N10:l9:l16:*l11:",
+"/l13:l11:+/s9:pl9:0=Z12:l15:s2:pl12:Z13:l10:nl14:*1/RN13:l10:",
+"l14:*1/RN12:l14:l9:+s14:pJ11:N8:0R]@r",0}
diff --git a/meta/recipes-extended/bc/bc/no-gen-libmath.patch b/meta/recipes-extended/bc/bc/no-gen-libmath.patch
new file mode 100644
index 00000000000..c4cce587593
--- /dev/null
+++ b/meta/recipes-extended/bc/bc/no-gen-libmath.patch
@@ -0,0 +1,24 @@
+These rules are not cross-friendly so delete them and we'll generate the file offline.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff --git a/bc/Makefile.am b/bc/Makefile.am
+index d9d412e..f244241 100644
+--- a/bc/Makefile.am
++++ b/bc/Makefile.am
+@@ -31,14 +31,6 @@ global.o: libmath.h
+
+ fbcOBJ = main.o bc.o scan.o execute.o load.o storage.o util.o warranty.o
+
+-libmath.h: libmath.b $(fbcOBJ) $(LIBBC)
+- echo '{0}' > libmath.h
+- $(MAKE) global.o
+- $(LINK) -o fbc $(fbcOBJ) global.o $(LIBBC) $(LIBL) $(READLINELIB) $(LIBS)
+- ./fbc -c $(srcdir)/libmath.b </dev/null >libmath.h
+- $(srcdir)/fix-libmath_h
+- rm -f ./fbc ./global.o
+-
+ sbcOBJ = main.o sbc.o scan.o execute.o global.o load.o storage.o util.o \
+ warranty.o
+ sbc.o: sbc.c
diff --git a/meta/recipes-extended/bc/bc_1.06.bb b/meta/recipes-extended/bc/bc_1.06.bb
deleted file mode 100644
index d8c8a860f81..00000000000
--- a/meta/recipes-extended/bc/bc_1.06.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Arbitrary precision calculator language"
-HOMEPAGE = "http://www.gnu.org/software/bc/bc.html"
-
-LICENSE = "GPLv2+ & LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://COPYING.LIB;md5=d8045f3b8f929c1cb29a1e3fd737b499 \
- file://bc/bcdefs.h;endline=31;md5=46dffdaf10a99728dd8ce358e45d46d8 \
- file://dc/dc.h;endline=25;md5=2f9c558cdd80e31b4d904e48c2374328 \
- file://lib/number.c;endline=31;md5=99434a0898abca7784acfd36b8191199"
-
-SECTION = "base"
-DEPENDS = "flex"
-PR = "r3"
-
-SRC_URI = "${GNU_MIRROR}/bc/bc-${PV}.tar.gz \
- file://fix-segment-fault.patch "
-
-SRC_URI[md5sum] = "d44b5dddebd8a7a7309aea6c36fda117"
-SRC_URI[sha256sum] = "4ef6d9f17c3c0d92d8798e35666175ecd3d8efac4009d6457b5c99cea72c0e33"
-
-inherit autotools texinfo update-alternatives
-
-ALTERNATIVE_${PN} = "dc"
-ALTERNATIVE_PRIORITY = "100"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-extended/bc/bc_1.07.1.bb b/meta/recipes-extended/bc/bc_1.07.1.bb
new file mode 100644
index 00000000000..e80857745ea
--- /dev/null
+++ b/meta/recipes-extended/bc/bc_1.07.1.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Arbitrary precision calculator language"
+HOMEPAGE = "http://www.gnu.org/software/bc/bc.html"
+
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+ file://COPYING.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
+ file://bc/bcdefs.h;endline=17;md5=4295c06df9e833519a342f7b5d43db06 \
+ file://dc/dc.h;endline=18;md5=36b8c600b63ee8c3aeade2764f6b2a4b \
+ file://lib/number.c;endline=20;md5=cf43068cc88f837731dc53240456cfaf"
+
+SECTION = "base"
+DEPENDS = "flex-native"
+
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz \
+ file://no-gen-libmath.patch \
+ file://libmath.h"
+SRC_URI[md5sum] = "cda93857418655ea43590736fc3ca9fc"
+SRC_URI[sha256sum] = "62adfca89b0a1c0164c2cdca59ca210c1d44c3ffc46daf9931cf4942664cb02a"
+
+inherit autotools texinfo update-alternatives
+
+PACKAGECONFIG ??= "readline"
+PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
+PACKAGECONFIG[libedit] = "--with-libedit,--without-libedit,libedit"
+
+do_compile_prepend() {
+ cp -f ${WORKDIR}/libmath.h ${B}/bc/libmath.h
+}
+
+ALTERNATIVE_${PN} = "dc"
+ALTERNATIVE_PRIORITY = "100"
+
+BBCLASSEXTEND = "native" \ No newline at end of file
diff --git a/meta/recipes-extended/bc/files/fix-segment-fault.patch b/meta/recipes-extended/bc/files/fix-segment-fault.patch
deleted file mode 100644
index 20c0da2ebe3..00000000000
--- a/meta/recipes-extended/bc/files/fix-segment-fault.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Upstream-Status: Pending
-
-when run command such as 'echo "a = 13" | bc -l', it segmentation faults.
-This patch is from http://www.mail-archive.com/blfs-support@linuxfromscratch.org/msg04602.html.
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
---- bc-1.06/lib/number.c.orig 2003-09-26 21:14:02.000000000 +0000
-+++ bc-1.06/lib/number.c 2003-09-26 21:14:26.000000000 +0000
-@@ -34,6 +34,7 @@
- #include <number.h>
- #include <assert.h>
- #include <stdlib.h>
-+#include <string.h>
- #include <ctype.h>/* Prototypes needed for external utility routines. */
-
- #define bc_rt_warn rt_warn
---- bc-1.06/bc/load.c.orig 2003-09-26 21:14:14.000000000 +0000
-+++ bc-1.06/bc/load.c 2003-09-26 21:14:26.000000000 +0000
-@@ -156,7 +156,7 @@
- long label_no;
- long vaf_name; /* variable, array or function number. */
- long func;
-- program_counter save_adr;
-+ static program_counter save_adr;
-
- /* Initialize. */
- str = code;
diff --git a/meta/recipes-extended/blktool/blktool/0001-fix-typos-in-manpage.patch b/meta/recipes-extended/blktool/blktool/0001-fix-typos-in-manpage.patch
index fee368dac25..25a2fabe156 100644
--- a/meta/recipes-extended/blktool/blktool/0001-fix-typos-in-manpage.patch
+++ b/meta/recipes-extended/blktool/blktool/0001-fix-typos-in-manpage.patch
@@ -7,7 +7,7 @@ This patch is taken from
ftp://ftp.debian.org/debian/pool/main/b/blktool/blktool_4-7.debian.tar.xz
Upstream-Status: Inappropriate [upstream is dead]
-Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
blktool.8 | 4 ++--
diff --git a/meta/recipes-extended/blktool/blktool/0002-fix-string-error.patch b/meta/recipes-extended/blktool/blktool/0002-fix-string-error.patch
index d08aba5f051..401e41e3ed1 100644
--- a/meta/recipes-extended/blktool/blktool/0002-fix-string-error.patch
+++ b/meta/recipes-extended/blktool/blktool/0002-fix-string-error.patch
@@ -7,7 +7,7 @@ This patch is taken from
ftp://ftp.debian.org/debian/pool/main/b/blktool/blktool_4-7.debian.tar.xz
Upstream-Status: Inappropriate [upstream is dead]
-Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
util.c | 2 +-
diff --git a/meta/recipes-extended/blktool/blktool/0003-Fix-3-d-argument-for-BLKROSET-it-must-be-const-int.patch b/meta/recipes-extended/blktool/blktool/0003-Fix-3-d-argument-for-BLKROSET-it-must-be-const-int.patch
index d7ed0b9f4d2..d1f1e797fe1 100644
--- a/meta/recipes-extended/blktool/blktool/0003-Fix-3-d-argument-for-BLKROSET-it-must-be-const-int.patch
+++ b/meta/recipes-extended/blktool/blktool/0003-Fix-3-d-argument-for-BLKROSET-it-must-be-const-int.patch
@@ -14,7 +14,7 @@ This patch is taken from
ftp://ftp.debian.org/debian/pool/main/b/blktool/blktool_4-7.debian.tar.xz
Upstream-Status: Inappropriate [upstream is dead]
-Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
blktool.c | 11 +++++++++--
diff --git a/meta/recipes-extended/blktool/blktool/blktool-gnulib-makedev.patch b/meta/recipes-extended/blktool/blktool/blktool-gnulib-makedev.patch
new file mode 100644
index 00000000000..6eea608b291
--- /dev/null
+++ b/meta/recipes-extended/blktool/blktool/blktool-gnulib-makedev.patch
@@ -0,0 +1,23 @@
+include <sys/sysmacros.h> for major/minor defintions
+
+Fixes
+
+| ../blktool-4.orig/blktool.c: In function 'detect_dev_class':
+| ../blktool-4.orig/blktool.c:295:10: warning: implicit declaration of function 'major' [-Wimplicit-function-declaration]
+| switch (major(st_rdev)) {
+| ^~~~~
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Index: blktool-4.orig/blktool.c
+===================================================================
+--- blktool-4.orig.orig/blktool.c
++++ blktool-4.orig/blktool.c
+@@ -27,6 +27,7 @@
+ #include <linux/cdrom.h>
+ #include <linux/major.h>
+ #include <scsi/scsi.h>
++#include <sys/sysmacros.h>
+
+ #include "blktool.h"
+
diff --git a/meta/recipes-extended/blktool/blktool_4-7.bb b/meta/recipes-extended/blktool/blktool_4-7.bb
index 4551c3233e9..0e6f7ee6df1 100644
--- a/meta/recipes-extended/blktool/blktool_4-7.bb
+++ b/meta/recipes-extended/blktool/blktool_4-7.bb
@@ -13,6 +13,7 @@ SRC_URI = "http://snapshot.debian.org/archive/debian/20160728T043443Z/pool/main/
file://0001-fix-typos-in-manpage.patch \
file://0002-fix-string-error.patch \
file://0003-Fix-3-d-argument-for-BLKROSET-it-must-be-const-int.patch \
+ file://blktool-gnulib-makedev.patch \
"
SRC_URI[tarball.md5sum] = "62edc09c9908107e69391c87f4f3fd40"
diff --git a/meta/recipes-extended/bzip2/bzip2_1.0.6.bb b/meta/recipes-extended/bzip2/bzip2_1.0.6.bb
index de668d6d2b6..6cafe261809 100644
--- a/meta/recipes-extended/bzip2/bzip2_1.0.6.bb
+++ b/meta/recipes-extended/bzip2/bzip2_1.0.6.bb
@@ -2,13 +2,13 @@ SUMMARY = "Very high-quality data compression program"
DESCRIPTION = "bzip2 compresses files using the Burrows-Wheeler block-sorting text compression algorithm, and \
Huffman coding. Compression is generally considerably better than that achieved by more conventional \
LZ77/LZ78-based compressors, and approaches the performance of the PPM family of statistical compressors."
-HOMEPAGE = "http://www.bzip.org/"
+HOMEPAGE = "https://sourceware.org/bzip2/"
SECTION = "console/utils"
LICENSE = "bzip2"
LIC_FILES_CHKSUM = "file://LICENSE;beginline=8;endline=37;md5=40d9d1eb05736d1bfc86cfdd9106e6b2"
PR = "r5"
-SRC_URI = "http://www.bzip.org/${PV}/${BP}.tar.gz \
+SRC_URI = "http://downloads.yoctoproject.org/mirror/sources/${BP}.tar.gz \
file://fix-bunzip2-qt-returns-0-for-corrupt-archives.patch \
file://configure.ac;subdir=${BP} \
file://Makefile.am;subdir=${BP} \
@@ -19,7 +19,8 @@ SRC_URI = "http://www.bzip.org/${PV}/${BP}.tar.gz \
SRC_URI[md5sum] = "00b516f4704d4a7cb50a1d97e6e8e15b"
SRC_URI[sha256sum] = "a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd"
-UPSTREAM_CHECK_URI = "http://www.bzip.org/downloads.html"
+UPSTREAM_CHECK_URI = "https://www.sourceware.org/bzip2/"
+UPSTREAM_VERSION_UNKNOWN = "1"
PACKAGES =+ "libbz2"
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
new file mode 100644
index 00000000000..0a3054483cb
--- /dev/null
+++ b/meta/recipes-extended/cpio/cpio-2.12/0001-CVE-2016-2037-1-byte-out-of-bounds-write.patch
@@ -0,0 +1,346 @@
+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.bb b/meta/recipes-extended/cpio/cpio_2.12.bb
index 405a90e03a0..69d36983e39 100644
--- a/meta/recipes-extended/cpio/cpio_2.12.bb
+++ b/meta/recipes-extended/cpio/cpio_2.12.bb
@@ -1,12 +1,47 @@
-require cpio_v2.inc
-
+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 \
"
SRC_URI[md5sum] = "fc207561a86b63862eea4b8300313e86"
SRC_URI[sha256sum] = "08a35e92deb3c85d269a0059a27d4140a9667a6369459299d08c17f713a92e73"
+
+inherit autotools gettext texinfo
+
+EXTRA_OECONF += "DEFAULT_RMT_DIR=${base_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
+}
+
+PACKAGES =+ "${PN}-rmt"
+
+FILES_${PN}-rmt = "${base_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] = "${base_sbindir}/rmt"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-extended/cpio/cpio_v2.inc b/meta/recipes-extended/cpio/cpio_v2.inc
deleted file mode 100644
index 31adb717d4c..00000000000
--- a/meta/recipes-extended/cpio/cpio_v2.inc
+++ /dev/null
@@ -1,43 +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"
-
-DEPENDS = "texinfo-native"
-
-SRC_URI = "${GNU_MIRROR}/cpio/cpio-${PV}.tar.gz \
- "
-
-inherit autotools gettext texinfo
-
-S = "${WORKDIR}/cpio-${PV}"
-
-EXTRA_OECONF += "DEFAULT_RMT_DIR=${base_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
-}
-
-PACKAGES =+ "${PN}-rmt"
-
-FILES_${PN}-rmt = "${base_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] = "${base_sbindir}/rmt"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-extended/cronie/cronie_1.5.1.bb b/meta/recipes-extended/cronie/cronie_1.5.2.bb
index cfb8c21052a..3abca7f9205 100644
--- a/meta/recipes-extended/cronie/cronie_1.5.1.bb
+++ b/meta/recipes-extended/cronie/cronie_1.5.2.bb
@@ -25,8 +25,8 @@ SRC_URI = "https://github.com/cronie-crond/cronie/releases/download/cronie-${PV}
PAM_SRC_URI = "file://crond_pam_config.patch"
PAM_DEPS = "libpam libpam-runtime pam-plugin-access pam-plugin-loginuid"
-SRC_URI[md5sum] = "910e6effcc032998b0a49fbd46322e18"
-SRC_URI[sha256sum] = "6c73666102a6b5d35e2eaf1bd06925f2d4b0cef8d3323c37286dda3089a85338"
+SRC_URI[md5sum] = "703314f58a49ea136e9966d3937d9bf4"
+SRC_URI[sha256sum] = "370bf34641691489330e708bd4cdbd779267296a030668a12f77b7e36872fd75"
inherit autotools update-rc.d useradd systemd
diff --git a/meta/recipes-extended/cups/cups.inc b/meta/recipes-extended/cups/cups.inc
index ac4d225c1a7..717eef03a75 100644
--- a/meta/recipes-extended/cups/cups.inc
+++ b/meta/recipes-extended/cups/cups.inc
@@ -2,7 +2,7 @@ SUMMARY = "An Internet printing system for Unix"
HOMEPAGE = "https://www.cups.org/"
SECTION = "console/utils"
LICENSE = "GPLv2 & LGPLv2"
-DEPENDS = "gnutls libpng jpeg dbus dbus-glib zlib libusb"
+DEPENDS = "gnutls libpng jpeg dbus dbus-glib zlib libusb1"
SRC_URI = "https://github.com/apple/cups/releases/download/v${PV}/${BP}-source.tar.gz \
file://use_echo_only_in_init.patch \
diff --git a/meta/recipes-extended/cups/cups_2.2.6.bb b/meta/recipes-extended/cups/cups_2.2.6.bb
deleted file mode 100644
index 3aa934bc03e..00000000000
--- a/meta/recipes-extended/cups/cups_2.2.6.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require cups.inc
-
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=f212b4338db0da8cb892e94bf2949460"
-
-SRC_URI[md5sum] = "e91c26d8d97b5a1630a962f530f02192"
-SRC_URI[sha256sum] = "40385778c2b3bdf55030d1c999734e22774c79e3425d91339ce677825620169b"
diff --git a/meta/recipes-extended/cups/cups_2.2.8.bb b/meta/recipes-extended/cups/cups_2.2.8.bb
new file mode 100644
index 00000000000..de1bd84bf77
--- /dev/null
+++ b/meta/recipes-extended/cups/cups_2.2.8.bb
@@ -0,0 +1,6 @@
+require cups.inc
+
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=f212b4338db0da8cb892e94bf2949460"
+
+SRC_URI[md5sum] = "33150d08993a04c8e22176e93805a051"
+SRC_URI[sha256sum] = "3968fc1d26fc48727508db1c1380e36c6694ab90177fd6920aec5f6cc73af9e4"
diff --git a/meta/recipes-extended/diffutils/diffutils_3.6.bb b/meta/recipes-extended/diffutils/diffutils_3.6.bb
index deadd62c657..8ba897d18f1 100644
--- a/meta/recipes-extended/diffutils/diffutils_3.6.bb
+++ b/meta/recipes-extended/diffutils/diffutils_3.6.bb
@@ -19,6 +19,8 @@ acpaths = "-I ./m4"
inherit ptest
+RDEPENDS_${PN}-ptest += "make"
+
do_install_ptest() {
t=${D}${PTEST_PATH}
install -D ${S}/build-aux/test-driver $t/build-aux/test-driver
diff --git a/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch b/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch
index de38104044c..d81320a94d5 100644
--- a/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch
+++ b/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch
@@ -1,3 +1,8 @@
+From 1484545a150de79483b6e2a74be02ebd030f1920 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.
+
ptest needs buildtest-TESTS and runtest-TESTS targets.
serial-tests is required to generate those targets.
@@ -5,12 +10,16 @@ Signed-off-by: Tudor Florea <tudor.florea@enea.com>
Upstream-Status: Inappropriate
(default automake behavior incompatible with ptest)
-Index: ethtool-4.13/configure.ac
-===================================================================
---- ethtool-4.13.orig/configure.ac
-+++ ethtool-4.13/configure.ac
-@@ -2,7 +2,7 @@ dnl Process this file with autoconf to p
- AC_INIT(ethtool, 4.13, netdev@vger.kernel.org)
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index e891d91..600f8a8 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, 4.17, netdev@vger.kernel.org)
AC_PREREQ(2.52)
AC_CONFIG_SRCDIR([ethtool.c])
-AM_INIT_AUTOMAKE([gnu])
diff --git a/meta/recipes-extended/ethtool/ethtool_4.13.bb b/meta/recipes-extended/ethtool/ethtool_4.17.bb
index c862a57955b..844a958ed94 100644
--- a/meta/recipes-extended/ethtool/ethtool_4.13.bb
+++ b/meta/recipes-extended/ethtool/ethtool_4.17.bb
@@ -11,8 +11,8 @@ SRC_URI = "${KERNELORG_MIRROR}/software/network/ethtool/ethtool-${PV}.tar.gz \
file://avoid_parallel_tests.patch \
"
-SRC_URI[md5sum] = "2ba44eb0ca96752392e9bf8dc83ba302"
-SRC_URI[sha256sum] = "d311c4b557c44c5248ac5436b9e19c391a60d8e4830b6a7f41be16d89c0556de"
+SRC_URI[md5sum] = "4dba0345a4ab9f51b4a4a9739284238d"
+SRC_URI[sha256sum] = "4130142a15f7409d18de3667998f3c99fba52fd7c8d94be7ecdabf8dcab3d6c1"
inherit autotools ptest
RDEPENDS_${PN}-ptest += "make"
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
index 8729e1b4473..6064d18854e 100644
--- 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
@@ -1,4 +1,4 @@
-From b9565dc2fe0c4f7daaec91b7e83bc7313dee2f4a Mon Sep 17 00:00:00 2001
+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
@@ -11,15 +11,16 @@ coreutils
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
- lib/gnulib.mk | 2 +-
+ gl/lib/Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: findutils-4.5.14/gl/lib/Makefile.am
-===================================================================
---- findutils-4.5.14.orig/gl/lib/Makefile.am
-+++ findutils-4.5.14/gl/lib/Makefile.am
-@@ -1220,7 +1220,7 @@ install-exec-localcharset: all-local
+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 ;; \
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
new file mode 100644
index 00000000000..a570473ccb0
--- /dev/null
+++ b/meta/recipes-extended/findutils/findutils/0001-find-make-delete-honour-the-ignore_readdir_race-opti.patch
@@ -0,0 +1,144 @@
+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
new file mode 100644
index 00000000000..d13e8ed3cf1
--- /dev/null
+++ b/meta/recipes-extended/findutils/findutils/findutils-4.6.0-gnulib-fflush.patch
@@ -0,0 +1,140 @@
+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
new file mode 100644
index 00000000000..0fb3953cf3b
--- /dev/null
+++ b/meta/recipes-extended/findutils/findutils/findutils-4.6.0-gnulib-makedev.patch
@@ -0,0 +1,78 @@
+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_4.6.0.bb b/meta/recipes-extended/findutils/findutils_4.6.0.bb
index 072d3b3c057..5e4ca948680 100644
--- a/meta/recipes-extended/findutils/findutils_4.6.0.bb
+++ b/meta/recipes-extended/findutils/findutils_4.6.0.bb
@@ -6,7 +6,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
DEPENDS = "bison-native"
-SRC_URI += "file://0001-Unset-need_charset_alias-when-building-for-musl.patch"
+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"
diff --git a/meta/recipes-extended/gawk/gawk_4.2.0.bb b/meta/recipes-extended/gawk/gawk_4.2.1.bb
index 27f79a2bed8..96637523947 100644
--- a/meta/recipes-extended/gawk/gawk_4.2.0.bb
+++ b/meta/recipes-extended/gawk/gawk_4.2.1.bb
@@ -19,8 +19,8 @@ SRC_URI = "${GNU_MIRROR}/gawk/gawk-${PV}.tar.gz \
file://run-ptest \
"
-SRC_URI[md5sum] = "0b598c31bc703d66082bd958d4189980"
-SRC_URI[sha256sum] = "c88046c6e8396ee548bcb941e16def809b7b55b60a1044b5dd254094f347c7d9"
+SRC_URI[md5sum] = "0256724a0af50cb83ac92f833488673d"
+SRC_URI[sha256sum] = "2b23d51503b2df9a41aa6fddc6002ad7ebf2a386ac19dc1b6be0dd48b0acf6db"
inherit autotools gettext texinfo update-alternatives
@@ -43,6 +43,8 @@ do_install_ptest() {
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
}
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 c3e44fe86a2..5834ffaf9ff 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 5ef8b85bc98f3bd9a15d5f47e24d3e23ae27c265 Mon Sep 17 00:00:00 2001
+From a954bf29a5f906b3151dffbecb5856e02e1565da 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] configure.ac: do not check local png source
+Subject: [PATCH 03/10] 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
@@ -16,10 +16,10 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
-index bf6d3f5..01df03f 100644
+index 9341930..80a60b1 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -930,11 +930,11 @@ AC_SUBST(ZLIBDIR)
+@@ -1114,11 +1114,11 @@ AC_SUBST(ZLIBDIR)
AC_SUBST(FT_SYS_ZLIB)
dnl png for the png output device; it also requires zlib
@@ -34,5 +34,5 @@ index bf6d3f5..01df03f 100644
SHARE_LIBPNG=0
LIBPNGDIR=$srcdir/libpng
--
-2.8.1
+1.8.3.1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-11714.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-11714.patch
deleted file mode 100644
index 84983c5aeae..00000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-11714.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 671fd59eb657743aa86fbc1895cb15872a317caa Mon Sep 17 00:00:00 2001
-From: Chris Liddell <chris.liddell@artifex.com>
-Date: Thu, 6 Jul 2017 14:54:02 +0100
-Subject: [PATCH] Bug 698158: prevent trying to reloc a freed object
-
-In the token reader, we pass the scanner state structure around as a
-t_struct ref on the Postscript operand stack.
-
-But we explicitly free the scanner state when we're done, which leaves a
-dangling reference on the operand stack and, unless that reference gets
-overwritten before the next garbager run, we can end up with the garbager
-trying to deal with an already freed object - that can cause a crash, or
-memory corruption.
----
- psi/ztoken.c | 14 +++++++++++++-
- 1 file changed, 13 insertions(+), 1 deletion(-)
-
---- end of original header
-
-CVE: CVE-2017-11714
-
-Upstream-Status: Backport [git://git.ghostscript.com/ghostpdl.git]
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
-diff --git a/psi/ztoken.c b/psi/ztoken.c
-index 4dba7c5..af1ceeb 100644
---- a/psi/ztoken.c
-+++ b/psi/ztoken.c
-@@ -107,6 +107,12 @@ token_continue(i_ctx_t *i_ctx_p, scanner_state * pstate, bool save)
- int code;
- ref token;
-
-+ /* Since we might free pstate below, and we're dealing with
-+ * gc memory referenced by the stack, we need to explicitly
-+ * remove the reference to pstate from the stack, otherwise
-+ * the garbager will fall over
-+ */
-+ make_null(osp);
- /* Note that gs_scan_token may change osp! */
- pop(1); /* remove the file or scanner state */
- again:
-@@ -183,8 +189,14 @@ ztokenexec_continue(i_ctx_t *i_ctx_p)
- static int
- tokenexec_continue(i_ctx_t *i_ctx_p, scanner_state * pstate, bool save)
- {
-- os_ptr op;
-+ os_ptr op = osp;
- int code;
-+ /* Since we might free pstate below, and we're dealing with
-+ * gc memory referenced by the stack, we need to explicitly
-+ * remove the reference to pstate from the stack, otherwise
-+ * the garbager will fall over
-+ */
-+ make_null(osp);
- /* Note that gs_scan_token may change osp! */
- pop(1);
- again:
---
-1.7.9.5
-
diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-5951.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-5951.patch
deleted file mode 100644
index 62cc1342ad3..00000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-5951.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From bfa6b2ecbe48edc69a7d9d22a12419aed25960b8 Mon Sep 17 00:00:00 2001
-From: Chris Liddell <chris.liddell@artifex.com>
-Date: Thu, 6 Apr 2017 16:44:54 +0100
-Subject: [PATCH] Bug 697548: use the correct param list enumerator
-
-When we encountered dictionary in a ref_param_list, we were using the enumerator
-for the "parent" param_list, rather than the enumerator for the param_list
-we just created for the dictionary. That parent was usually the stack
-list enumerator, and caused a segfault.
-
-Using the correct enumerator works better.
-
-Upstream-Status: Backport
-CVE: CVE-2017-5951
-
-Signed-off-by: Catalin Enache <catalin.enache@windriver.com>
----
- psi/iparam.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/psi/iparam.c b/psi/iparam.c
-index 4e63b6d..b2fa85f 100644
---- a/psi/iparam.c
-+++ b/psi/iparam.c
-@@ -770,12 +770,13 @@ ref_param_read_typed(gs_param_list * plist, gs_param_name pkey,
- gs_param_enumerator_t enumr;
- gs_param_key_t key;
- ref_type keytype;
-+ dict_param_list *dlist = (dict_param_list *) pvalue->value.d.list;
-
- param_init_enumerator(&enumr);
-- if (!(*((iparam_list *) plist)->enumerate)
-- ((iparam_list *) pvalue->value.d.list, &enumr, &key, &keytype)
-+ if (!(*(dlist->enumerate))
-+ ((iparam_list *) dlist, &enumr, &key, &keytype)
- && keytype == t_integer) {
-- ((dict_param_list *) pvalue->value.d.list)->int_keys = 1;
-+ dlist->int_keys = 1;
- pvalue->type = gs_param_type_dict_int_keys;
- }
- }
---
-2.10.2
-
diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-7207.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-7207.patch
deleted file mode 100644
index a05dc02c6c0..00000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-7207.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 0e88bee1304993668fede72498d656a2dd33a35e Mon Sep 17 00:00:00 2001
-From: Ken Sharp <ken.sharp@artifex.com>
-Date: Mon, 20 Mar 2017 09:34:11 +0000
-Subject: [PATCH] Ensure a device has raster memory, before trying to read it.
-
-Bug #697676 "Null pointer dereference in mem_get_bits_rectangle()"
-
-This is only possible by abusing/mis-using Ghostscript-specific
-language extensions, so cannot happen in a general PostScript program.
-
-Nevertheless, Ghostscript should not crash. So this commit checks the
-memory device to see if raster memory has been allocated, before trying
-to read from it.
-
-Upstream-Status: Backport
-CVE: CVE-2017-7207
-
-Author: Ken Sharp <ken.sharp@artifex.com>
-Signed-off-by: Catalin Enache <catalin.enache@windriver.com>
----
- base/gdevmem.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/base/gdevmem.c b/base/gdevmem.c
-index 41108ba..183f96d 100644
---- a/base/gdevmem.c
-+++ b/base/gdevmem.c
-@@ -605,6 +605,8 @@ mem_get_bits_rectangle(gx_device * dev, const gs_int_rect * prect,
- GB_PACKING_CHUNKY | GB_COLORS_NATIVE | GB_ALPHA_NONE;
- return_error(gs_error_rangecheck);
- }
-+ if (mdev->line_ptrs == 0x00)
-+ return_error(gs_error_rangecheck);
- if ((w <= 0) | (h <= 0)) {
- if ((w | h) < 0)
- return_error(gs_error_rangecheck);
---
-2.10.2
-
diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-7975.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-7975.patch
deleted file mode 100644
index e406086e8ff..00000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-7975.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From b39be1019b4acc1aa50c6026463c543332e95a31 Mon Sep 17 00:00:00 2001
-From: Catalin Enache <catalin.enache@windriver.com>
-Date: Mon, 8 May 2017 16:18:14 +0300
-
-Subject: [PATCH] Bug 697693: Prevent SEGV due to integer overflow.
-
-While building a Huffman table, the start and end points were susceptible
-to integer overflow.
-
-Thank you to Jiaqi for finding this issue and suggesting a patch.
-
-Upstream-Status: Backport
-CVE: CVE-2017-7975
-
-Signed-off-by: Catalin Enache <catalin.enache@windriver.com>
-
-Contents of this patch were extracted from a larger patch which addressed
-two CVE's. The context (location of {) was also modified to apply to
-ghostscript 9.21.
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
-
---- a/jbig2dec/jbig2_huffman.c
-+++ b/jbig2dec/jbig2_huffman.c
-@@ -421,8 +421,8 @@ jbig2_build_huffman_table(Jbig2Ctx *ctx,
-
- if (PREFLEN == CURLEN) {
- int RANGELEN = lines[CURTEMP].RANGELEN;
-- int start_j = CURCODE << shift;
-- int end_j = (CURCODE + 1) << shift;
-+ uint32_t start_j = CURCODE << shift;
-+ uint32_t end_j = (CURCODE + 1) << shift;
- byte eflags = 0;
-
- if (end_j > max_j) {
-
diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9216.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9216.patch
deleted file mode 100644
index 1caeb3ef51b..00000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9216.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 3ebffb1d96ba0cacec23016eccb4047dab365853 Mon Sep 17 00:00:00 2001
-From: Shailesh Mistry <shailesh.mistry@hotmail.co.uk>
-Date: Wed, 24 May 2017 19:29:57 +0100
-Subject: [PATCH] Bug 697934: Fix SEGV due to error code being ignored.
-
-The return code from jbig2_decode_text_region was being ignored so the
-code continued to try and parse the invalid file using incomplete/empty
-structures.
-
-Upstream-Status: Backport
-CVE: CVE-2017-9216
-
-Signed-off-by: Catalin Enache <catalin.enache@windriver.com>
----
- jbig2dec/jbig2_symbol_dict.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/jbig2dec/jbig2_symbol_dict.c b/jbig2dec/jbig2_symbol_dict.c
-index 3cc1731..672425d 100644
---- a/jbig2dec/jbig2_symbol_dict.c
-+++ b/jbig2dec/jbig2_symbol_dict.c
-@@ -493,8 +493,10 @@ jbig2_decode_symbol_dict(Jbig2Ctx *ctx,
- }
-
- /* multiple symbols are handled as a text region */
-- jbig2_decode_text_region(ctx, segment, tparams, (const Jbig2SymbolDict * const *)refagg_dicts,
-+ code = jbig2_decode_text_region(ctx, segment, tparams, (const Jbig2SymbolDict * const *)refagg_dicts,
- n_refagg_dicts, image, data, size, GR_stats, as, ws);
-+ if (code < 0)
-+ goto cleanup4;
-
- SDNEWSYMS->glyphs[NSYMSDECODED] = image;
- refagg_dicts[0]->glyphs[params->SDNUMINSYMS + NSYMSDECODED] = jbig2_image_clone(ctx, SDNEWSYMS->glyphs[NSYMSDECODED]);
---
-2.10.2
-
diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9611.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9611.patch
deleted file mode 100644
index 58ef04d1fdf..00000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9611.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From c7c55972758a93350882c32147801a3485b010fe Mon Sep 17 00:00:00 2001
-From: Chris Liddell <chris.liddell@artifex.com>
-Date: Mon, 12 Jun 2017 13:08:40 +0100
-Subject: [PATCH] Bug 698024: bounds check zone pointer in Ins_MIRP()
-
----
- base/ttinterp.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- end of original header
-
-CVE: CVE-2017-9611
-
-Upstream-Status: Backport [git://git.ghostscript.com/ghostpdl.git]
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
-diff --git a/base/ttinterp.c b/base/ttinterp.c
-index e56aec6..f6a6d95 100644
---- a/base/ttinterp.c
-+++ b/base/ttinterp.c
-@@ -3858,7 +3858,8 @@ static int nInstrCount=0;
- /* XXX: UNDOCUMENTED! cvt[-1] = 0 always */
-
- if ( BOUNDS( args[0], CUR.zp1.n_points ) ||
-- BOUNDS( args[1]+1, CUR.cvtSize+1 ) )
-+ BOUNDS( args[1]+1, CUR.cvtSize+1 ) ||
-+ BOUNDS(CUR.GS.rp0, CUR.zp0.n_points) )
- {
- CUR.error = TT_Err_Invalid_Reference;
- return;
---
-1.7.9.5
-
diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9612.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9612.patch
deleted file mode 100644
index b737cc56bb6..00000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9612.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 98f6da60b9d463c617e631fc254cf6d66f2e8e3c Mon Sep 17 00:00:00 2001
-From: Chris Liddell <chris.liddell@artifex.com>
-Date: Mon, 12 Jun 2017 13:15:17 +0100
-Subject: [PATCH] Bug 698026: bounds check zone pointers in Ins_IP()
-
----
- base/ttinterp.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
---- end of original header
-
-CVE: CVE-2017-9612
-
-Upstream-Status: Backport [git://git.ghostscript.com/ghostpdl.git]
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
-diff --git a/base/ttinterp.c b/base/ttinterp.c
-index f6a6d95..e7c9d68 100644
---- a/base/ttinterp.c
-+++ b/base/ttinterp.c
-@@ -4129,7 +4129,9 @@ static int nInstrCount=0;
- Int point;
- (void)args;
-
-- if ( CUR.top < CUR.GS.loop )
-+ if ( CUR.top < CUR.GS.loop ||
-+ BOUNDS(CUR.GS.rp1, CUR.zp0.n_points) ||
-+ BOUNDS(CUR.GS.rp2, CUR.zp1.n_points))
- {
- CUR.error = TT_Err_Invalid_Reference;
- return;
---
-1.7.9.5
-
diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9726.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9726.patch
deleted file mode 100644
index 3e6c65699d6..00000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9726.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 7755e67116e8973ee0e3b22d653df026a84fa01b Mon Sep 17 00:00:00 2001
-From: Chris Liddell <chris.liddell@artifex.com>
-Date: Thu, 15 Jun 2017 08:58:31 +0100
-Subject: [PATCH] Bug 698055: bounds check zone pointer in Ins_MDRP
-
----
- base/ttinterp.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- end of original header
-
-CVE: CVE-2017-9726
-
-Upstream-Status: Backport [git://git.ghostscript.com/ghostpdl.git]
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-diff --git a/base/ttinterp.c b/base/ttinterp.c
-index e7c9d68..af457e8 100644
---- a/base/ttinterp.c
-+++ b/base/ttinterp.c
-@@ -3770,7 +3770,8 @@ static int nInstrCount=0;
-
- point = (Int)args[0];
-
-- if ( BOUNDS( args[0], CUR.zp1.n_points ) )
-+ if ( BOUNDS( args[0], CUR.zp1.n_points ) ||
-+ BOUNDS( CUR.GS.rp0, CUR.zp0.n_points) )
- {
- /* Current version of FreeType silently ignores this out of bounds error
- * and drops the instruction, see bug #691121
---
-1.7.9.5
-
diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9727.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9727.patch
deleted file mode 100644
index a2f7bfa5069..00000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9727.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 937ccd17ac65935633b2ebc06cb7089b91e17e6b Mon Sep 17 00:00:00 2001
-From: Chris Liddell <chris.liddell@artifex.com>
-Date: Thu, 15 Jun 2017 09:05:20 +0100
-Subject: [PATCH] Bug 698056: make bounds check in gx_ttfReader__Read more
- robust
-
----
- base/gxttfb.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- end of original header
-
-CVE: CVE-2017-9727
-
-Upstream-Status: Backport [git://git.ghostscript.com/ghostpdl.git]
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
-diff --git a/base/gxttfb.c b/base/gxttfb.c
-index 0e9a444..e1561af 100644
---- a/base/gxttfb.c
-+++ b/base/gxttfb.c
-@@ -79,7 +79,8 @@ static void gx_ttfReader__Read(ttfReader *self, void *p, int n)
- if (!r->error) {
- if (r->extra_glyph_index != -1) {
- q = r->glyph_data.bits.data + r->pos;
-- r->error = (r->glyph_data.bits.size - r->pos < n ?
-+ r->error = ((r->pos >= r->glyph_data.bits.size ||
-+ r->glyph_data.bits.size - r->pos < n) ?
- gs_note_error(gs_error_invalidfont) : 0);
- if (r->error == 0)
- memcpy(p, q, n);
---
-1.7.9.5
-
diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9739.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9739.patch
deleted file mode 100644
index 69a94df7b9f..00000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9739.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From c501a58f8d5650c8ba21d447c0d6f07eafcb0f15 Mon Sep 17 00:00:00 2001
-From: Chris Liddell <chris.liddell@artifex.com>
-Date: Fri, 16 Jun 2017 08:29:25 +0100
-Subject: [PATCH] Bug 698063: Bounds check Ins_JMPR
-
----
- base/ttinterp.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
---- end of original header
-
-CVE: CVE-2017-9739
-
-Upstream-Status: Backport [git://git.ghostscript.com/ghostpdl.git]
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
-diff --git a/base/ttinterp.c b/base/ttinterp.c
-index af457e8..adf3f0c 100644
---- a/base/ttinterp.c
-+++ b/base/ttinterp.c
-@@ -1794,6 +1794,12 @@ static int nInstrCount=0;
-
- static void Ins_JMPR( INS_ARG )
- {
-+ if ( BOUNDS(CUR.IP + args[0], CUR.codeSize ) )
-+ {
-+ CUR.error = TT_Err_Invalid_Reference;
-+ return;
-+ }
-+
- CUR.IP += (Int)(args[0]);
- CUR.step_ins = FALSE;
-
---
-1.7.9.5
-
diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9835.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9835.patch
deleted file mode 100644
index 7c65690c657..00000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-9835.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From cfde94be1d4286bc47633c6e6eaf4e659bd78066 Mon Sep 17 00:00:00 2001
-From: Chris Liddell <chris.liddell@artifex.com>
-Date: Wed, 7 Jun 2017 14:55:12 +0100
-Subject: [PATCH] Bug 697985: bounds check the array allocations methods
-
-The clump allocator has four allocation functions that use 'number of elements'
-and 'size of elements' parameters (rather than a simple 'number of bytes').
-
-Those need specific bounds checking.
----
- base/gsalloc.c | 42 ++++++++++++++++++++++++++++--------------
- 1 file changed, 28 insertions(+), 14 deletions(-)
-
---- end of original header
-
-CVE: CVE-2017-9835
-
-Upstream-Status: Backport [git://git.ghostscript.com/ghostpdl.git]
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
-diff --git a/base/gsalloc.c b/base/gsalloc.c
-index 741ba00..10c04dd 100644
---- a/base/gsalloc.c
-+++ b/base/gsalloc.c
-@@ -1248,19 +1248,32 @@ i_alloc_struct_immovable(gs_memory_t * mem, gs_memory_type_ptr_t pstype,
- alloc_trace("|+<.", imem, cname, pstype, size, obj);
- return obj;
- }
-+
-+static inline bool
-+alloc_array_check_size(ulong num_elements, ulong elt_size, ulong *lsize)
-+{
-+ int64_t s = (int64_t)num_elements * elt_size;
-+ if (s > max_uint) {
-+ return false;
-+ }
-+ *lsize = (ulong)s;
-+ return true;
-+}
-+
- static byte *
- i_alloc_byte_array(gs_memory_t * mem, uint num_elements, uint elt_size,
- client_name_t cname)
- {
- gs_ref_memory_t * const imem = (gs_ref_memory_t *)mem;
- obj_header_t *obj;
--
-+ ulong lsize;
- #ifdef MEMENTO
- if (Memento_failThisEvent())
- return NULL;
- #endif
--
-- obj = alloc_obj(imem, (ulong) num_elements * elt_size,
-+ if (alloc_array_check_size(num_elements, elt_size, &lsize) == false)
-+ return NULL;
-+ obj = alloc_obj(imem, lsize,
- &st_bytes, ALLOC_DIRECT, cname);
-
- if_debug6m('A', mem, "[a%d:+b.]%s -bytes-*(%lu=%u*%u) = 0x%lx\n",
-@@ -1275,13 +1288,14 @@ i_alloc_byte_array_immovable(gs_memory_t * mem, uint num_elements,
- {
- gs_ref_memory_t * const imem = (gs_ref_memory_t *)mem;
- obj_header_t *obj;
--
-+ ulong lsize;
- #ifdef MEMENTO
- if (Memento_failThisEvent())
- return NULL;
- #endif
--
-- obj = alloc_obj(imem, (ulong) num_elements * elt_size,
-+ if (alloc_array_check_size(num_elements, elt_size, &lsize) == false)
-+ return NULL;
-+ obj = alloc_obj(imem, lsize,
- &st_bytes, ALLOC_IMMOVABLE | ALLOC_DIRECT,
- cname);
-
-@@ -1297,7 +1311,7 @@ i_alloc_struct_array(gs_memory_t * mem, uint num_elements,
- {
- gs_ref_memory_t * const imem = (gs_ref_memory_t *)mem;
- obj_header_t *obj;
--
-+ ulong lsize;
- #ifdef MEMENTO
- if (Memento_failThisEvent())
- return NULL;
-@@ -1311,9 +1325,9 @@ i_alloc_struct_array(gs_memory_t * mem, uint num_elements,
- return NULL; /* fail */
- }
- #endif
-- obj = alloc_obj(imem,
-- (ulong) num_elements * pstype->ssize,
-- pstype, ALLOC_DIRECT, cname);
-+ if (alloc_array_check_size(num_elements, pstype->ssize, &lsize) == false)
-+ return NULL;
-+ obj = alloc_obj(imem, lsize, pstype, ALLOC_DIRECT, cname);
- if_debug7m('A', mem, "[a%d:+<.]%s %s*(%lu=%u*%u) = 0x%lx\n",
- alloc_trace_space(imem), client_name_string(cname),
- struct_type_name_string(pstype),
-@@ -1327,16 +1341,16 @@ i_alloc_struct_array_immovable(gs_memory_t * mem, uint num_elements,
- {
- gs_ref_memory_t * const imem = (gs_ref_memory_t *)mem;
- obj_header_t *obj;
--
-+ ulong lsize;
- #ifdef MEMENTO
- if (Memento_failThisEvent())
- return NULL;
- #endif
-
- ALLOC_CHECK_SIZE(mem,pstype);
-- obj = alloc_obj(imem,
-- (ulong) num_elements * pstype->ssize,
-- pstype, ALLOC_IMMOVABLE | ALLOC_DIRECT, cname);
-+ if (alloc_array_check_size(num_elements, pstype->ssize, &lsize) == false)
-+ return NULL;
-+ obj = alloc_obj(imem, lsize, pstype, ALLOC_IMMOVABLE | ALLOC_DIRECT, cname);
- if_debug7m('A', mem, "[a%d|+<.]%s %s*(%lu=%u*%u) = 0x%lx\n",
- alloc_trace_space(imem), client_name_string(cname),
- struct_type_name_string(pstype),
---
-1.7.9.5
-
diff --git a/meta/recipes-extended/ghostscript/ghostscript/avoid-host-contamination.patch b/meta/recipes-extended/ghostscript/ghostscript/avoid-host-contamination.patch
index c4794e7d8fe..e8cb16c36b4 100644
--- a/meta/recipes-extended/ghostscript/ghostscript/avoid-host-contamination.patch
+++ b/meta/recipes-extended/ghostscript/ghostscript/avoid-host-contamination.patch
@@ -1,14 +1,25 @@
+From 0ccbaa134093bf6afc79f2d20d061bca5a8754ed Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Thu, 29 Mar 2018 16:02:05 +0800
+Subject: [PATCH 04/10] avoid host contamination
+
Remove hardcode path refer to host to avoid host contamination.
Upstream-Status: Inappropriate [embedded specific]
Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+Rebase to 9.23
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
+ devices/devs.mak | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
diff --git a/devices/devs.mak b/devices/devs.mak
-index 3070d2e..df663f0 100644
+index 846aa50..9570182 100644
--- a/devices/devs.mak
+++ b/devices/devs.mak
-@@ -546,7 +546,7 @@ $(DEVOBJ)gdevxalt.$(OBJ) : $(DEVSRC)gdevxalt.c $(GDEVX) $(math__h) $(memory__h)\
+@@ -393,7 +393,7 @@ $(DEVOBJ)gdevxalt.$(OBJ) : $(DEVSRC)gdevxalt.c $(GDEVX) $(math__h) $(memory__h)\
### NON PORTABLE, ONLY UNIX WITH GCC SUPPORT
$(DEVOBJ)X11.so : $(x11alt_) $(x11_) $(DEVS_MAK) $(MAKEDIRS)
@@ -17,3 +28,6 @@ index 3070d2e..df663f0 100644
###### --------------- Memory-buffered printer devices --------------- ######
+--
+1.8.3.1
+
diff --git a/meta/recipes-extended/ghostscript/ghostscript/base-genht.c-add-a-preprocessor-define-to-allow-fope.patch b/meta/recipes-extended/ghostscript/ghostscript/base-genht.c-add-a-preprocessor-define-to-allow-fope.patch
index d97d4ecd7db..7d80066a80e 100644
--- a/meta/recipes-extended/ghostscript/ghostscript/base-genht.c-add-a-preprocessor-define-to-allow-fope.patch
+++ b/meta/recipes-extended/ghostscript/ghostscript/base-genht.c-add-a-preprocessor-define-to-allow-fope.patch
@@ -1,4 +1,8 @@
-base/genht.c: add a preprocessor define to allow fopen calling
+From 9ca6f795409b988d38dd98bc2a6ecb68a9392312 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 29 Mar 2018 16:37:40 +0800
+Subject: [PATCH 10/10] base/genht.c: add a preprocessor define to allow fopen
+ calling
The commit in upstream:
http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=773c69e46e70bdd5482676437dafd2ca83397643
@@ -7,17 +11,19 @@ Replace all fopen calls with gp_fopen and add a preprocessor define so
that any unintential calls directly to fopen will cause an error.
Only exceptions are those in the platform specific code, and mkromfs.c.
-This patch add a preprocessor define to allow fopen calling in base/genht.c.
+This patch add a preprocessor define to allow fopen calling in
+base/genht.c.
Upstream-Status: Pending
+Rebase to 9.23
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
base/genht.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/base/genht.c b/base/genht.c
-index 4b04085..cc82fff 100644
+index e597e72..e96bfb5 100644
--- a/base/genht.c
+++ b/base/genht.c
@@ -16,6 +16,10 @@
@@ -32,5 +38,5 @@ index 4b04085..cc82fff 100644
#include "string_.h"
#include "gscdefs.h"
--
-1.8.1.2
+1.8.3.1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/cups-no-gcrypt.patch b/meta/recipes-extended/ghostscript/ghostscript/cups-no-gcrypt.patch
index a1c9368cc98..4c9bb22fa2d 100644
--- a/meta/recipes-extended/ghostscript/ghostscript/cups-no-gcrypt.patch
+++ b/meta/recipes-extended/ghostscript/ghostscript/cups-no-gcrypt.patch
@@ -1,6 +1,12 @@
-Subject: [PATCH] Don't build-depend on libgcrypt, as nothing is used from it
+From 9129eb7fa9dc160d64a7d9df9279a3b1dae4d793 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Thu, 29 Mar 2018 16:16:18 +0800
+Subject: [PATCH 08/10] cups no gcrypt
-Backported from http://www.cups.org/strfiles.php/3308/cups-no-gcrypt.patch
+Don't build-depend on libgcrypt, as nothing is used from it
+
+Backported from
+http://www.cups.org/strfiles.php/3308/cups-no-gcrypt.patch
This addresses the cryto dependency seen during build.
@@ -8,7 +14,7 @@ Upstream-Status: Backport
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
-Rebase the patch to ghostscript-9.15
+Rebase to 9.23
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
cups/libs/cups/http-private.h | 1 -
@@ -27,5 +33,5 @@ index 99a85c3..a674852 100644
# include <CoreFoundation/CoreFoundation.h>
# include <Security/Security.h>
--
-1.9.1
+1.8.3.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
index b4c14ea231e..fc144f62559 100644
--- a/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-genarch.patch
+++ b/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-genarch.patch
@@ -1,22 +1,28 @@
-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.
+From 94850954b88440df6c41d2dd133c422ffc84d9aa Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 29 Mar 2018 16:12:48 +0800
+Subject: [PATCH 07/10] 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>
-# Author: Chi Xu <chi.xu@windriver.com>
-# Date: Feb 26 2010
-# Summary: Generate arch.h for ppc32
-#
+Rebase to 9.23
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ base/lib.mak | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-Index: ghostscript-9.21/base/lib.mak
-===================================================================
---- ghostscript-9.21.orig/base/lib.mak
-+++ ghostscript-9.21/base/lib.mak
-@@ -73,8 +73,8 @@ arch_h=$(GLGEN)arch.h
+diff --git a/base/lib.mak b/base/lib.mak
+index 0036d1e..302877e 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 $(std_h)
@@ -27,3 +33,6 @@ Index: ghostscript-9.21/base/lib.mak
# Platform interfaces
+--
+1.8.3.1
+
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 3ec3956402b..ffa269e3b26 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,25 +1,23 @@
-From 14937d9247330065359ca0fb648c28dfa5c3b224 Mon Sep 17 00:00:00 2001
-From: Huang Qiyu <huangqy.fnst@cn.fujitsu.com>
-Date: Tue, 13 Dec 2016 18:16:41 +0900
-Subject: [PATCH] ghostscript-9.15-parallel-make
+From 84bb692d6b047c09266de154f404af9817fa04aa 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
-From 767bdf8a412b0cce2b734998e9b7e55abeaf932c Mon Sep 17 00:00:00 2001
-From: Huang Qiyu <huangqy.fnst@cn.fujitsu.com>
-Date: Tue, 13 Dec 2016 17:55:54 +0900
-Subject: [PATCH] Robert Yang <liezhi.yang@windriver.com> Date: Fri, 30 Jan
-2015 00:40:22 -0800 Subject: [PATCH] contrib.mak: fix for parallel build
-
-Signed-off-by: Huang Qiyu <huangqy.fnst@cn.fujitsu.com>
Upstream-Status: Pending
+
+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(+)
diff --git a/contrib/contrib.mak b/contrib/contrib.mak
-index 55415b3..0b6b5ae 100644
+index f5a2fa4..4999752 100644
--- a/contrib/contrib.mak
+++ b/contrib/contrib.mak
-@@ -1099,6 +1099,7 @@ $(DEVOBJ)dviprlib.$(OBJ) : $(JAPSRC)dviprlib.c $(JAPSRC)dviprlib.h \
+@@ -1067,6 +1067,7 @@ $(DEVOBJ)dviprlib.$(OBJ) : $(JAPSRC)dviprlib.c $(JAPSRC)dviprlib.h \
$(DEVCC) $(O_)$@ $(C_) $(JAPSRC)dviprlib.c
extra-dmprt-install: install-libdata
@@ -27,7 +25,7 @@ index 55415b3..0b6b5ae 100644
$(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
-@@ -1267,6 +1268,7 @@ $(DEVOBJ)gdevalps.$(OBJ) : $(JAPSRC)gdevalps.c $(PDEVH) \
+@@ -1235,6 +1236,7 @@ $(DEVOBJ)gdevalps.$(OBJ) : $(JAPSRC)gdevalps.c $(PDEVH) \
### ----------------- Additional .upp files ---------------- ###
extra-upp-install: install-libdata
@@ -36,5 +34,5 @@ index 55415b3..0b6b5ae 100644
$(INSTALL_DATA) $$f $(DESTDIR)$(gsdatadir)$(D)lib || exit 1; \
done
--
-2.7.4
+1.8.3.1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.16-Werror-return-type.patch b/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.16-Werror-return-type.patch
index d7864820075..8c4a5d44e39 100644
--- a/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.16-Werror-return-type.patch
+++ b/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.16-Werror-return-type.patch
@@ -1,7 +1,7 @@
-From 5d5c83c89be0cff29dde2267fa168e6f7146be8c Mon Sep 17 00:00:00 2001
+From c481b055cd464734a3c2d80719ead4c1c92a40c9 Mon Sep 17 00:00:00 2001
From: Robert Yang <liezhi.yang@windriver.com>
Date: Mon, 4 May 2015 22:31:48 -0700
-Subject: [PATCH] base/gendev.c: fix for -Werror=return-type
+Subject: [PATCH 02/10] base/gendev.c: fix for -Werror=return-type
Fixed:
base/gendev.c:80:1: error: return type defaults to 'int' [-Werror=return-type]
@@ -10,11 +10,11 @@ Upstream-Status: Pending
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
- base/gendev.c | 1 +
+ base/gendev.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/base/gendev.c b/base/gendev.c
-index 68a745f..8058b5a 100644
+index 59d5999..7766b08 100644
--- a/base/gendev.c
+++ b/base/gendev.c
@@ -77,6 +77,7 @@ static const char *indent_item = "";
@@ -26,5 +26,5 @@ index 68a745f..8058b5a 100644
{
config conf;
--
-1.7.9.5
+1.8.3.1
diff --git a/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.21-native-fix-disable-system-libtiff.patch b/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.21-native-fix-disable-system-libtiff.patch
index bff3e61763b..a382c7f8917 100644
--- a/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.21-native-fix-disable-system-libtiff.patch
+++ b/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.21-native-fix-disable-system-libtiff.patch
@@ -1,31 +1,38 @@
-ghostscript-native:fix disable-system-libtiff
+From 0124b1c29b9cfe46d73ae82ce023dd7c5b055744 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 29 Mar 2018 16:36:12 +0800
+Subject: [PATCH 09/10] ghostscript-native:fix disable-system-libtiff
Modify configure to add the check to make sure
ghostscrip could work while system-libtiff is
disabled.
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
-Updated to apply to ghostscript 9.21.
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
Upstream-Status: Pending
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+Rebase to ghostscript 9.25.
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
+---
+ configure.ac | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 80a60b1..f3e9efb 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -1259,6 +1259,7 @@ case "x$with_system_libtiff" in
- esac
+@@ -1319,6 +1319,7 @@ AC_TRY_COMPILE([], [return 0;],
+ CFLAGS=$CGLAGS_STORE
if test x"$SHARE_LIBTIFF" = x"0" ; then
+ if test -e $LIBTIFFDIR/configure; then
echo "Running libtiff configure script..."
olddir=`pwd`
if ! test -d "$LIBTIFFCONFDIR" ; then
-@@ -1272,6 +1273,10 @@ if test x"$SHARE_LIBTIFF" = x"0" ; then
- cd "$olddir"
+@@ -1337,6 +1338,10 @@ if test x"$SHARE_LIBTIFF" = x"0" ; then
+
echo
echo "Continuing with Ghostscript configuration..."
+ else
@@ -35,3 +42,6 @@ Upstream-Status: Pending
fi
AC_SUBST(SHARE_LIBTIFF)
+--
+1.8.3.1
+
diff --git a/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.21-prevent_recompiling.patch b/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.21-prevent_recompiling.patch
index f2c6d04e069..c76915fb813 100644
--- a/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.21-prevent_recompiling.patch
+++ b/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.21-prevent_recompiling.patch
@@ -1,32 +1,41 @@
-Just use commands provided by ghostscript-native, preventing recompile them when
-compile ghostscript.
-Way to enable cross compile.
+From 239d681306a8d97ed10954788d32ba2f4b55f77c Mon Sep 17 00:00:00 2001
+From: Kang Kai <kai.kang@windriver.com>
+Date: Thu, 29 Mar 2018 16:10:16 +0800
+Subject: [PATCH 06/10] prevent recompiling
+
+Just use commands provided by ghostscript-native, preventing recompile
+them when compile ghostscript. Way to enable cross compile.
Upstream-Status: Pending
Signed-off-by: Kang Kai <kai.kang@windriver.com>
Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
-Rebase to 9.19
+Rebase to 9.25
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
+---
+ base/unix-aux.mak | 44 --------------------------------------------
+ 1 file changed, 44 deletions(-)
-Rebase to 9.21
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
+diff --git a/base/unix-aux.mak b/base/unix-aux.mak
+index 5bf72e9..9cb39d7 100644
--- a/base/unix-aux.mak
+++ b/base/unix-aux.mak
-@@ -66,45 +66,45 @@ $(GLOBJ)gp_sysv.$(OBJ): $(GLSRC)gp_sysv.
-
- # -------------------------- Auxiliary programs --------------------------- #
+@@ -54,50 +54,6 @@ $(AUX)gp_stdia.$(OBJ): $(GLSRC)gp_stdia.
+ $(stdio__h) $(time__h) $(unistd__h) $(gx_h) $(gp_h) $(UNIX_AUX_MAK) $(MAKEDIRS)
+ $(GLCCAUX) $(AUXO_)gp_stdia.$(OBJ) $(C_) $(GLSRC)gp_stdia.c
+-# -------------------------- Auxiliary programs --------------------------- #
+-
-$(ECHOGS_XE): $(GLSRC)echogs.c $(AK) $(stdpre_h) $(UNIX_AUX_MAK) $(MAKEDIRS)
- $(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(ECHOGS_XE) $(GLSRC)echogs.c $(AUXEXTRALIBS)
-
-+#$(ECHOGS_XE): $(GLSRC)echogs.c $(AK) $(stdpre_h) $(UNIX_AUX_MAK) $(MAKEDIRS)
-+# $(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(ECHOGS_XE) $(GLSRC)echogs.c $(AUXEXTRALIBS)
-+#
- # On the RS/6000 (at least), compiling genarch.c with gcc with -O
- # produces a buggy executable.
+-$(PACKPS_XE): $(GLSRC)pack_ps.c $(stdpre_h) $(UNIX_AUX_MAK) $(MAKEDIRS)
+- $(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(PACKPS_XE) $(GLSRC)pack_ps.c $(AUXEXTRALIBS)
+-
+-# On the RS/6000 (at least), compiling genarch.c with gcc with -O
+-# produces a buggy executable.
-$(GENARCH_XE): $(GLSRC)genarch.c $(AK) $(GENARCH_DEPS) $(UNIX_AUX_MAK) $(MAKEDIRS)
- $(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(GENARCH_XE) $(GLSRC)genarch.c $(AUXEXTRALIBS)
-
@@ -39,21 +48,9 @@ Signed-off-by: Joe Slater <joe.slater@windriver.com>
-$(GENHT_XE): $(GLSRC)genht.c $(AK) $(GENHT_DEPS) $(UNIX_AUX_MAK) $(MAKEDIRS)
- $(CCAUX_) $(GENHT_CFLAGS) $(O_)$(GENHT_XE) $(GLSRC)genht.c $(AUXEXTRALIBS)
-
-+#$(GENARCH_XE): $(GLSRC)genarch.c $(AK) $(GENARCH_DEPS) $(UNIX_AUX_MAK) $(MAKEDIRS)
-+# $(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(GENARCH_XE) $(GLSRC)genarch.c $(AUXEXTRALIBS)
-+#
-+#$(GENCONF_XE): $(GLSRC)genconf.c $(AK) $(GENCONF_DEPS) $(UNIX_AUX_MAK) $(MAKEDIRS)
-+# $(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(GENCONF_XE) $(GLSRC)genconf.c $(AUXEXTRALIBS)
-+#
-+#$(GENDEV_XE): $(GLSRC)gendev.c $(AK) $(GENDEV_DEPS) $(UNIX_AUX_MAK) $(MAKEDIRS)
-+# $(CCAUX_) $(I_)$(GLSRCDIR)$(_I) $(O_)$(GENDEV_XE) $(GLSRC)gendev.c $(AUXEXTRALIBS)
-+#
-+#$(GENHT_XE): $(GLSRC)genht.c $(AK) $(GENHT_DEPS) $(UNIX_AUX_MAK) $(MAKEDIRS)
-+# $(CCAUX_) $(GENHT_CFLAGS) $(O_)$(GENHT_XE) $(GLSRC)genht.c $(AUXEXTRALIBS)
-+#
- # To get GS to use the system zlib, you remove/hide the gs/zlib directory
- # which means that the mkromfs build can't find the zlib source it needs.
- # So it's split into two targets, one using the zlib source directly.....
+-# To get GS to use the system zlib, you remove/hide the gs/zlib directory
+-# which means that the mkromfs build can't find the zlib source it needs.
+-# So it's split into two targets, one using the zlib source directly.....
-MKROMFS_OBJS_0=$(MKROMFS_ZLIB_OBJS) $(AUX)gpmisc.$(OBJ) $(AUX)gp_getnv.$(OBJ) \
- $(AUX)gscdefs.$(OBJ) $(AUX)gp_unix.$(OBJ) $(AUX)gp_unifs.$(OBJ) $(AUX)gp_unifn.$(OBJ) \
- $(AUX)gp_stdia.$(OBJ) $(AUX)gsutil.$(OBJ) $(AUX)memento.$(OBJ)
@@ -61,14 +58,7 @@ Signed-off-by: Joe Slater <joe.slater@windriver.com>
-$(MKROMFS_XE)_0: $(GLSRC)mkromfs.c $(MKROMFS_COMMON_DEPS) $(MKROMFS_OBJS_0) $(UNIX_AUX_MAK) $(MAKEDIRS)
- $(CCAUX_) $(GENOPTAUX) $(I_)$(GLSRCDIR)$(_I) $(I_)$(GLOBJ)$(_I) $(I_)$(ZSRCDIR)$(_I) $(GLSRC)mkromfs.c $(O_)$(MKROMFS_XE)_0 $(MKROMFS_OBJS_0) $(AUXEXTRALIBS)
-
-+#MKROMFS_OBJS_0=$(MKROMFS_ZLIB_OBJS) $(AUX)gpmisc.$(OBJ) $(AUX)gp_getnv.$(OBJ) \
-+# $(AUX)gscdefs.$(OBJ) $(AUX)gp_unix.$(OBJ) $(AUX)gp_unifs.$(OBJ) $(AUX)gp_unifn.$(OBJ) \
-+# $(AUX)gp_stdia.$(OBJ) $(AUX)gsutil.$(OBJ) $(AUX)memento.$(OBJ)
-+#
-+#$(MKROMFS_XE)_0: $(GLSRC)mkromfs.c $(MKROMFS_COMMON_DEPS) $(MKROMFS_OBJS_0) $(UNIX_AUX_MAK) $(MAKEDIRS)
-+# $(CCAUX_) $(GENOPTAUX) $(I_)$(GLSRCDIR)$(_I) $(I_)$(GLOBJ)$(_I) $(I_)$(ZSRCDIR)$(_I) $(GLSRC)mkromfs.c $(O_)$(MKROMFS_XE)_0 $(MKROMFS_OBJS_0) $(AUXEXTRALIBS)
-+#
- # .... and one using the zlib library linked via the command line
+-# .... and one using the zlib library linked via the command line
-MKROMFS_OBJS_1=$(AUX)gscdefs.$(OBJ) \
- $(AUX)gpmisc.$(OBJ) $(AUX)gp_getnv.$(OBJ) \
- $(AUX)gp_unix.$(OBJ) $(AUX)gp_unifs.$(OBJ) $(AUX)gp_unifn.$(OBJ) \
@@ -80,17 +70,9 @@ Signed-off-by: Joe Slater <joe.slater@windriver.com>
-$(MKROMFS_XE): $(MKROMFS_XE)_$(SHARE_ZLIB) $(UNIX_AUX_MAK) $(MAKEDIRS)
- $(CP_) $(MKROMFS_XE)_$(SHARE_ZLIB) $(MKROMFS_XE)
-
-+#MKROMFS_OBJS_1=$(AUX)gscdefs.$(OBJ) \
-+# $(AUX)gpmisc.$(OBJ) $(AUX)gp_getnv.$(OBJ) \
-+# $(AUX)gp_unix.$(OBJ) $(AUX)gp_unifs.$(OBJ) $(AUX)gp_unifn.$(OBJ) \
-+# $(AUX)gp_stdia.$(OBJ) $(AUX)gsutil.$(OBJ)
-+#
-+#$(MKROMFS_XE)_1: $(GLSRC)mkromfs.c $(MKROMFS_COMMON_DEPS) $(MKROMFS_OBJS_1) $(UNIX_AUX_MAK) $(MAKEDIRS)
-+# $(CCAUX_) $(GENOPTAUX) $(I_)$(GLSRCDIR)$(_I) $(I_)$(GLOBJ)$(_I) $(I_)$(ZSRCDIR)$(_I) $(GLSRC)mkromfs.c $(O_)$(MKROMFS_XE)_1 $(MKROMFS_OBJS_1) $(AUXEXTRALIBS)
-+#
-+#$(MKROMFS_XE): $(MKROMFS_XE)_$(SHARE_ZLIB) $(UNIX_AUX_MAK) $(MAKEDIRS)
-+# $(CP_) $(MKROMFS_XE)_$(SHARE_ZLIB) $(MKROMFS_XE)
-+#
# Query the environment to construct gconfig_.h.
# These are all defined conditionally (except the JasPER one), so that
# they can be overridden by settings from the configure script.
+--
+1.8.3.1
+
diff --git a/meta/recipes-extended/ghostscript/ghostscript/mkdir-p.patch b/meta/recipes-extended/ghostscript/ghostscript/mkdir-p.patch
index 5a7eab1c21a..3e6d3e3c48a 100644
--- a/meta/recipes-extended/ghostscript/ghostscript/mkdir-p.patch
+++ b/meta/recipes-extended/ghostscript/ghostscript/mkdir-p.patch
@@ -1,4 +1,8 @@
-ghostscript: allow directories to be created more than once
+From 2b23026f8e2a352417fb1c4da94bf69b19bef267 Mon Sep 17 00:00:00 2001
+From: Joe Slater <joe.slater@windriver.com>
+Date: Thu, 29 Mar 2018 16:04:32 +0800
+Subject: [PATCH 05/10] ghostscript: allow directories to be created more than
+ once
When doing parallel builds, we might try to create directories
more than once. This should not cause an error.
@@ -7,7 +11,14 @@ Upstream-Status: Pending
Signed-off-by: Joe Slater <joe.slater@windriver.com>
+Rebase to 9.23
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ base/unix-end.mak | 17 ++++++++---------
+ 1 file changed, 8 insertions(+), 9 deletions(-)
+diff --git a/base/unix-end.mak b/base/unix-end.mak
+index 9ce599a..feff5a6 100644
--- a/base/unix-end.mak
+++ b/base/unix-end.mak
@@ -17,15 +17,14 @@
@@ -34,3 +45,6 @@ Signed-off-by: Joe Slater <joe.slater@windriver.com>
gs: .gssubtarget $(UNIX_END_MAK)
+--
+1.8.3.1
+
diff --git a/meta/recipes-extended/ghostscript/ghostscript_9.21.bb b/meta/recipes-extended/ghostscript/ghostscript_9.25.bb
index 50ec7e20c5a..35eaaeb2fa7 100644
--- a/meta/recipes-extended/ghostscript/ghostscript_9.21.bb
+++ b/meta/recipes-extended/ghostscript/ghostscript_9.25.bb
@@ -19,7 +19,7 @@ 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/gs921/${BPN}-${PV}.tar.gz \
+SRC_URI_BASE = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs925/${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 \
@@ -32,17 +32,6 @@ SRC_URI = "${SRC_URI_BASE} \
file://ghostscript-9.02-genarch.patch \
file://objarch.h \
file://cups-no-gcrypt.patch \
- file://CVE-2017-7207.patch \
- file://CVE-2017-5951.patch \
- file://CVE-2017-7975.patch \
- file://CVE-2017-9216.patch \
- file://CVE-2017-9611.patch \
- file://CVE-2017-9612.patch \
- file://CVE-2017-9739.patch \
- file://CVE-2017-9726.patch \
- file://CVE-2017-9727.patch \
- file://CVE-2017-9835.patch \
- file://CVE-2017-11714.patch \
"
SRC_URI_class-native = "${SRC_URI_BASE} \
@@ -50,8 +39,8 @@ SRC_URI_class-native = "${SRC_URI_BASE} \
file://base-genht.c-add-a-preprocessor-define-to-allow-fope.patch \
"
-SRC_URI[md5sum] = "5f213281761d2750fcf27476c404d17f"
-SRC_URI[sha256sum] = "02bceadbc4dddeb6f2eec9c8b1623d945d355ca11b8b4df035332b217d58ce85"
+SRC_URI[md5sum] = "eebd0fadbfa8e800094422ce65e94d5d"
+SRC_URI[sha256sum] = "baafa64740b090bff50b220a6df3be95c46069b7e30f4b4effed28316e5b2389"
# Put something like
#
@@ -104,7 +93,7 @@ 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; do
+ for i in genarch genconf mkromfs echogs gendev genht packps; do
cp ${STAGING_BINDIR_NATIVE}/ghostscript-${PV}/$i obj/aux/$i
done
fi
@@ -118,14 +107,14 @@ do_install_append () {
do_compile_class-native () {
mkdir -p obj
- for i in genarch genconf mkromfs echogs gendev genht; do
+ 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; do
+ for i in genarch genconf mkromfs echogs gendev genht packps; do
install -m 755 obj/aux/$i ${D}${bindir}/ghostscript-${PV}/$i
done
}
diff --git a/meta/recipes-extended/groff/groff_1.22.3.bb b/meta/recipes-extended/groff/groff_1.22.3.bb
index 7472f598257..ce7ce3e7916 100644
--- a/meta/recipes-extended/groff/groff_1.22.3.bb
+++ b/meta/recipes-extended/groff/groff_1.22.3.bb
@@ -20,7 +20,9 @@ DEPENDS = "groff-native"
DEPENDS_class-native = ""
RDEPENDS_${PN} += "perl sed"
-inherit autotools texinfo
+inherit autotools texinfo multilib_script
+
+MULTILIB_SCRIPTS = "${PN}:${bindir}/gpinyin ${PN}:${bindir}/groffer ${PN}:${bindir}/grog"
EXTRA_OECONF = "--without-x"
PARALLEL_MAKE = ""
diff --git a/meta/recipes-extended/gzip/gzip-1.9/gnulib.patch b/meta/recipes-extended/gzip/gzip-1.9/gnulib.patch
new file mode 100644
index 00000000000..c3cdd72b64d
--- /dev/null
+++ b/meta/recipes-extended/gzip/gzip-1.9/gnulib.patch
@@ -0,0 +1,189 @@
+From 1831628c0630ae96a43586b2a25ca51cbdba3e53 Mon Sep 17 00:00:00 2001
+From: Paul Eggert <address@hidden>
+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/fbufmode.c (fbufmode):
+* lib/fflush.c (clear_ungetc_buffer_preserving_position)
+(disable_seek_optimization, rpl_fflush):
+* lib/fpending.c (__fpending):
+* lib/fpurge.c (fpurge):
+* lib/freadable.c (freadable):
+* lib/freadahead.c (freadahead):
+* lib/freading.c (freading):
+* lib/freadptr.c (freadptr):
+* lib/freadseek.c (freadptrinc):
+* lib/fseeko.c (fseeko):
+* lib/fseterr.c (fseterr):
+* lib/fwritable.c (fwritable):
+* lib/fwriting.c (fwriting):
+Check _IO_EOF_SEEN instead of _IO_ftrylockfile.
+* lib/stdio-impl.h (_IO_IN_BACKUP) [_IO_EOF_SEEN]:
+Define if not already defined.
+---
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+ ChangeLog | 23 +++++++++++++++++++++++
+ lib/fbufmode.c | 2 +-
+ lib/fflush.c | 6 +++---
+ lib/fpending.c | 2 +-
+ lib/fpurge.c | 2 +-
+ lib/freadable.c | 2 +-
+ lib/freadahead.c | 2 +-
+ lib/freading.c | 2 +-
+ lib/freadptr.c | 2 +-
+ lib/freadseek.c | 2 +-
+ lib/fseeko.c | 4 ++--
+ lib/fseterr.c | 2 +-
+ lib/fwritable.c | 2 +-
+ lib/fwriting.c | 2 +-
+ lib/stdio-impl.h | 6 ++++++
+ 15 files changed, 45 insertions(+), 16 deletions(-)
+
+Index: gzip-1.9/ChangeLog
+===================================================================
+--- gzip-1.9.orig/ChangeLog
++++ gzip-1.9/ChangeLog
+@@ -1,3 +1,26 @@
++2018-03-05 Paul Eggert <address@hidden>
++
++ fflush: adjust to glibc 2.28 libio.h removal
++ Problem reported by Daniel P. Berrangé in:
++ https://lists.gnu.org/r/bug-gnulib/2018-03/msg00000.html
++ * lib/fbufmode.c (fbufmode):
++ * lib/fflush.c (clear_ungetc_buffer_preserving_position)
++ (disable_seek_optimization, rpl_fflush):
++ * lib/fpending.c (__fpending):
++ * lib/fpurge.c (fpurge):
++ * lib/freadable.c (freadable):
++ * lib/freadahead.c (freadahead):
++ * lib/freading.c (freading):
++ * lib/freadptr.c (freadptr):
++ * lib/freadseek.c (freadptrinc):
++ * lib/fseeko.c (fseeko):
++ * lib/fseterr.c (fseterr):
++ * lib/fwritable.c (fwritable):
++ * lib/fwriting.c (fwriting):
++ Check _IO_EOF_SEEN instead of _IO_ftrylockfile.
++ * lib/stdio-impl.h (_IO_IN_BACKUP) [_IO_EOF_SEEN]:
++ Define if not already defined.
++
+ 2018-01-07 Jim Meyering <meyering@fb.com>
+
+ version 1.9
+Index: gzip-1.9/lib/fflush.c
+===================================================================
+--- gzip-1.9.orig/lib/fflush.c
++++ gzip-1.9/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, Minix 3, 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: gzip-1.9/lib/fpurge.c
+===================================================================
+--- gzip-1.9.orig/lib/fpurge.c
++++ gzip-1.9/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: gzip-1.9/lib/freading.c
+===================================================================
+--- gzip-1.9.orig/lib/freading.c
++++ gzip-1.9/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: gzip-1.9/lib/fseeko.c
+===================================================================
+--- gzip-1.9.orig/lib/fseeko.c
++++ gzip-1.9/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: gzip-1.9/lib/fseterr.c
+===================================================================
+--- gzip-1.9.orig/lib/fseterr.c
++++ gzip-1.9/lib/fseterr.c
+@@ -29,7 +29,7 @@ fseterr (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->_flags |= _IO_ERR_SEEN;
+ #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
+ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
+Index: gzip-1.9/lib/stdio-impl.h
+===================================================================
+--- gzip-1.9.orig/lib/stdio-impl.h
++++ gzip-1.9/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/gzip/gzip_1.9.bb b/meta/recipes-extended/gzip/gzip_1.9.bb
index a8eeba13803..19f6586526b 100644
--- a/meta/recipes-extended/gzip/gzip_1.9.bb
+++ b/meta/recipes-extended/gzip/gzip_1.9.bb
@@ -3,7 +3,9 @@ require gzip.inc
LICENSE = "GPLv3+"
SRC_URI = "${GNU_MIRROR}/gzip/${BP}.tar.gz \
- file://run-ptest"
+ file://run-ptest \
+ file://gnulib.patch \
+ "
SRC_URI_append_class-target = " file://wrong-path-fix.patch"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
diff --git a/meta/recipes-extended/hdparm/hdparm_9.53.bb b/meta/recipes-extended/hdparm/hdparm_9.56.bb
index 4c3ec5c48c3..17932ad223f 100644
--- a/meta/recipes-extended/hdparm/hdparm_9.53.bb
+++ b/meta/recipes-extended/hdparm/hdparm_9.56.bb
@@ -25,8 +25,8 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/hdparm/${BP}.tar.gz \
file://wiper.sh-fix-stat-path.patch \
"
-SRC_URI[md5sum] = "1e54b52e0c8cb79389d4d47eacba411d"
-SRC_URI[sha256sum] = "2673f591df6916c6a1faec07069a7eb1cb8ee307615a615d808192fb0c0265e5"
+SRC_URI[md5sum] = "7900608e32834f65d2654fdb696e71a0"
+SRC_URI[sha256sum] = "6ff9ed695f1017396eec4101f990f114b7b0e0a04c5aa6369c0394053d16e4da"
EXTRA_OEMAKE = 'STRIP="echo" LDFLAGS="${LDFLAGS}"'
diff --git a/meta/recipes-extended/iptables/iptables_1.6.2.bb b/meta/recipes-extended/iptables/iptables_1.6.2.bb
index 38a83d2b323..e00824f7634 100644
--- a/meta/recipes-extended/iptables/iptables_1.6.2.bb
+++ b/meta/recipes-extended/iptables/iptables_1.6.2.bb
@@ -7,17 +7,6 @@ LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263\
file://iptables/iptables.c;beginline=13;endline=25;md5=c5cffd09974558cf27d0f763df2a12dc"
-RRECOMMENDS_${PN} = "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"
-FILES_${PN} =+ "${libdir}/xtables/ ${datadir}/xtables"
-
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 \
@@ -28,8 +17,8 @@ SRC_URI[sha256sum] = "55d02dfa46263343a401f297d44190f2a3e5113c8933946f094ed40237
inherit autotools pkgconfig
-EXTRA_OECONF = "--with-kernel=${STAGING_INCDIR} \
- "
+EXTRA_OECONF = "--with-kernel=${STAGING_INCDIR}"
+
PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
@@ -45,3 +34,31 @@ do_configure_prepend() {
# 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', '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"
+
+ALLOW_EMPTY_${PN}-modules = "1"
+
+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/iputils/files/0001-Fix-build-on-MUSL.patch b/meta/recipes-extended/iputils/files/0001-Fix-build-on-MUSL.patch
deleted file mode 100644
index ce8cfebbb03..00000000000
--- a/meta/recipes-extended/iputils/files/0001-Fix-build-on-MUSL.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From c6c5966d9fae27bc2f0a34ab59b999555111bd2d Mon Sep 17 00:00:00 2001
-From: Aric Belsito <lluixhi@gmail.com>
-Date: Sun, 29 Oct 2017 23:17:03 +0100
-Subject: [PATCH] Fix build on MUSL
-
-Add missing AI_IDN and NI_IDN declarations.
-
-Bug: https://bugs.gentoo.org/503914
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- arping.c | 7 +++++++
- ping.h | 11 +++++++++++
- tracepath.c | 8 ++++++++
- traceroute6.c | 4 ++++
- 4 files changed, 30 insertions(+)
-
-diff --git a/arping.c b/arping.c
-index 1a3f40b..531d29d 100644
---- a/arping.c
-+++ b/arping.c
-@@ -45,6 +45,13 @@ struct sysfs_devattr_values;
- #ifdef USE_IDN
- #include <idna.h>
- #include <locale.h>
-+
-+#ifndef AI_IDN
-+#define AI_IDN 0x0040
-+#endif
-+#ifndef AI_CANONIDN
-+#define AI_CANONIDN 0x0080
-+#endif
- #endif
-
- #include "SNAPSHOT.h"
-diff --git a/ping.h b/ping.h
-index 749f3ff..227315f 100644
---- a/ping.h
-+++ b/ping.h
-@@ -38,6 +38,17 @@
- #include <locale.h>
- #include <idna.h>
- #include <stringprep.h>
-+
-+#ifndef AI_IDN
-+#define AI_IDN 0x0040
-+#endif
-+#ifndef AI_CANONIDN
-+#define AI_CANONIDN 0x0080
-+#endif
-+#ifndef NI_IDN
-+#define NI_IDN 32
-+#endif
-+
- #define getaddrinfo_flags (AI_CANONNAME | AI_IDN | AI_CANONIDN)
- #define getnameinfo_flags NI_IDN
- #else
-diff --git a/tracepath.c b/tracepath.c
-index 74a829d..dcec5b9 100644
---- a/tracepath.c
-+++ b/tracepath.c
-@@ -30,6 +30,14 @@
- #ifdef USE_IDN
- #include <idna.h>
- #include <locale.h>
-+
-+#ifndef AI_IDN
-+#define AI_IDN 0x0040
-+#endif
-+#ifndef NI_IDN
-+#define NI_IDN 32
-+#endif
-+
- #define getnameinfo_flags NI_IDN
- #else
- #define getnameinfo_flags 0
-diff --git a/traceroute6.c b/traceroute6.c
-index 48fc5c5..8d1eebf 100644
---- a/traceroute6.c
-+++ b/traceroute6.c
-@@ -251,6 +251,10 @@
- #include <idna.h>
- #include <locale.h>
-
-+#ifndef NI_IDN
-+#define NI_IDN 32
-+#endif
-+
- #define getnameinfo_flags NI_IDN
- #else
- #define getnameinfo_flags 0
---
-2.15.1
-
diff --git a/meta/recipes-extended/iputils/iputils/ai_canonidn.patch b/meta/recipes-extended/iputils/iputils/ai_canonidn.patch
new file mode 100644
index 00000000000..cd91267b78a
--- /dev/null
+++ b/meta/recipes-extended/iputils/iputils/ai_canonidn.patch
@@ -0,0 +1,58 @@
+From 714e2b458c151c5bdfe93647445cd00dd8e36fff Mon Sep 17 00:00:00 2001
+From: Petr Vorel <petr.vorel@gmail.com>
+Date: Sat, 21 Jul 2018 17:46:14 +0200
+Subject: [PATCH] ping: Fix AI_CANONIDN usage on some systems
+
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+Commit 99f67db used AI_CANONIDN in a way, which broke compilation on
+systems where AI_CANONIDN is not defined in netdb.h (e.g. glibc < 2.3.4,
+alternative libcs that don't support IDN: e.g. current musl 1.1.19 and
+uClibc-ng 1.0.30) when not using the system libidn2.
+
+Fixes: 99f67db ping: Fix ping name encoded using ACE on C locale
+
+Reported-by: Nicholas Fish
+Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
+
+---
+ ping.c | 2 +-
+ ping.h | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/ping.c b/ping.c
+index 733477f..b241815 100644
+--- a/ping.c
++++ b/ping.c
+@@ -207,9 +207,9 @@ main(int argc, char **argv)
+
+ #ifdef USE_IDN
+ setlocale(LC_ALL, "");
+-#endif
+ if (!strcmp(setlocale(LC_ALL, NULL), "C"))
+ hints.ai_flags &= ~ AI_CANONIDN;
++#endif
+
+ /* Support being called using `ping4` or `ping6` symlinks */
+ if (argv[0][strlen(argv[0])-1] == '4')
+diff --git a/ping.h b/ping.h
+index 3e09685..8a0c4ef 100644
+--- a/ping.h
++++ b/ping.h
+@@ -28,7 +28,6 @@
+ #include <netinet/icmp6.h>
+ #include <linux/filter.h>
+ #include <resolv.h>
+-#include <locale.h>
+
+ #ifdef CAPABILITIES
+ #include <sys/prctl.h>
+@@ -36,6 +35,7 @@
+ #endif
+
+ #ifdef USE_IDN
++#include <locale.h>
+ #include <idn2.h>
+ #define getaddrinfo_flags (AI_CANONNAME | AI_IDN | AI_CANONIDN)
+ #define getnameinfo_flags NI_IDN
diff --git a/meta/recipes-extended/iputils/iputils/install.patch b/meta/recipes-extended/iputils/iputils/install.patch
new file mode 100644
index 00000000000..abfefd7a585
--- /dev/null
+++ b/meta/recipes-extended/iputils/iputils/install.patch
@@ -0,0 +1,26 @@
+From 5c8c3b04d73304679340f893636e87691992053b Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross@burtonini.com>
+Date: Mon, 23 Jul 2018 14:21:03 +0100
+Subject: [PATCH] Add install
+
+Add a simple install rule so that we always install the binaries that were built.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+---
+ Makefile | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/Makefile b/Makefile
+index 17fc5c9..e0c2784 100644
+--- a/Makefile
++++ b/Makefile
+@@ -231,3 +231,7 @@ rpm:
+ @$(RPMBUILD) -ta --define 'current yes' $(RPMTMP)/iputils.tar.bz2
+ @rm -f $(RPMTMP)/iputils.tar.bz2
+
++install:
++ for t in $(TARGETS); do \
++ install -D $$t $(DESTDIR)$(bindir)/$$t; \
++ done
diff --git a/meta/recipes-extended/iputils/iputils_s20161105.bb b/meta/recipes-extended/iputils/iputils_s20161105.bb
deleted file mode 100644
index 0125739b034..00000000000
--- a/meta/recipes-extended/iputils/iputils_s20161105.bb
+++ /dev/null
@@ -1,62 +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://ping.c;beginline=1;endline=35;md5=f9ceb201733e9a6cf8f00766dd278d82 \
- file://tracepath.c;beginline=1;endline=10;md5=0ecea2bf60bff2f3d840096d87647f3d \
- file://arping.c;beginline=1;endline=11;md5=fe84301b5c2655c950f8b92a057fafa6 \
- file://tftpd.c;beginline=1;endline=32;md5=28834bf8a91a5b8a92755dbee709ef96 "
-
-DEPENDS = "gnutls libcap libgcrypt"
-
-SRC_URI = "git://github.com/iputils/iputils \
- file://0001-Fix-build-on-MUSL.patch \
- "
-S = "${WORKDIR}/git"
-SRCREV = "bffc0e957b98d626ab4cea218c89251201425442"
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>s\d+)"
-
-EXTRA_OEMAKE = "-e MAKEFLAGS="
-
-PACKAGECONFIG ?= ""
-PACKAGECONFIG[libidn] = "USE_IDN=yes,USE_IDN=no,libidn"
-
-do_compile () {
- oe_runmake 'CC=${CC} -D_GNU_SOURCE' VPATH="${STAGING_LIBDIR}:${STAGING_DIR_HOST}/${base_libdir}" ${PACKAGECONFIG_CONFARGS} all
-}
-
-do_install () {
- install -m 0755 -d ${D}${base_bindir}
- # SUID root programs
- install -m 4555 ping ${D}${base_bindir}/ping
- install -m 4555 traceroute6 ${D}${base_bindir}/
- install -m 4555 clockdiff ${D}${base_bindir}/
- # Other programgs
- for i in arping tracepath; do
- install -m 0755 $i ${D}${base_bindir}/
- done
-}
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "100"
-
-ALTERNATIVE_${PN}-ping = "ping"
-ALTERNATIVE_LINK_NAME[ping] = "${base_bindir}/ping"
-
-PACKAGES += "${PN}-ping ${PN}-arping ${PN}-tracepath ${PN}-traceroute6 ${PN}-clockdiff"
-
-ALLOW_EMPTY_${PN} = "1"
-RDEPENDS_${PN} += "${PN}-ping ${PN}-arping ${PN}-tracepath ${PN}-traceroute6 ${PN}-clockdiff"
-
-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"
diff --git a/meta/recipes-extended/iputils/iputils_s20180629.bb b/meta/recipes-extended/iputils/iputils_s20180629.bb
new file mode 100644
index 00000000000..eff44be1bd9
--- /dev/null
+++ b/meta/recipes-extended/iputils/iputils_s20180629.bb
@@ -0,0 +1,61 @@
+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=b792e38abdc59f766a3153908f23e766 \
+ file://LICENSE.BSD3;md5=0f00d99239d922ffd13cabef83b33444 \
+ file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = "gnutls libcap libgcrypt"
+
+SRC_URI = "git://github.com/iputils/iputils \
+ file://ai_canonidn.patch \
+ file://install.patch"
+SRCREV = "f6aac8dbe3f8c45c53424854a3312bdd8cdd58d3"
+
+S = "${WORKDIR}/git"
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>s\d+)"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[libidn] = "USE_IDN=yes,USE_IDN=no,libidn2"
+
+do_compile () {
+ oe_runmake 'CC=${CC} -D_GNU_SOURCE' VPATH="${STAGING_LIBDIR}:${STAGING_DIR_HOST}/${base_libdir}" ${PACKAGECONFIG_CONFARGS} all
+}
+
+do_install() {
+ oe_runmake DESTDIR=${D} bindir=${base_bindir} install
+ for b in ping traceroute6 clockdiff; do
+ chmod u+s ${D}${base_bindir}/$b
+ done
+}
+
+inherit update-alternatives
+
+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"
+PACKAGES += "${SPLITPKGS}"
+
+ALLOW_EMPTY_${PN} = "1"
+RDEPENDS_${PN} += "${SPLITPKGS}"
+
+FILES_${PN} = ""
+FILES_${PN}-ping = "${base_bindir}/ping.${BPN}"
+FILES_${PN}-arping = "${base_bindir}/arping"
+FILES_${PN}-tracepath = "${base_bindir}/tracepath"
+FILES_${PN}-traceroute6 = "${base_bindir}/traceroute6"
+FILES_${PN}-clockdiff = "${base_bindir}/clockdiff"
+FILES_${PN}-tftpd = "${base_bindir}/tftpd"
+FILES_${PN}-rarpd = "${base_bindir}/rarpd"
+FILES_${PN}-rdisc = "${base_bindir}/rdisc"
diff --git a/meta/recipes-extended/less/less_529.bb b/meta/recipes-extended/less/less_530.bb
index c86f754838a..c07b1217449 100644
--- a/meta/recipes-extended/less/less_529.bb
+++ b/meta/recipes-extended/less/less_530.bb
@@ -27,8 +27,8 @@ DEPENDS = "ncurses"
SRC_URI = "http://www.greenwoodsoftware.com/${BPN}/${BPN}-${PV}.tar.gz \
"
-SRC_URI[md5sum] = "32018b53a1f7319ab54349baf80e6aa8"
-SRC_URI[sha256sum] = "dba42cd4c38174b7bd0d426d8a39df2be6bcc1ec18946a4642713290f6bf9a0b"
+SRC_URI[md5sum] = "6a39bccf420c946b0fd7ffc64961315b"
+SRC_URI[sha256sum] = "503f91ab0af4846f34f0444ab71c4b286123f0044a4964f1ae781486c617f2e2"
UPSTREAM_CHECK_URI = "http://www.greenwoodsoftware.com/less/download.html"
diff --git a/meta/recipes-extended/libaio/libaio/00_arches.patch b/meta/recipes-extended/libaio/libaio/00_arches.patch
index 9d6447d98a2..bec189f87ca 100644
--- a/meta/recipes-extended/libaio/libaio/00_arches.patch
+++ b/meta/recipes-extended/libaio/libaio/00_arches.patch
@@ -1,11 +1,27 @@
+From ceba1e03e5b57cdae0b3b2d2c9afebc085c986d8 Mon Sep 17 00:00:00 2001
+From: Qing He <qing.he@intel.com>
+Date: Fri, 27 Aug 2010 10:15:31 +0800
+Subject: [PATCH] libaio: add new recipe
+
Upstream-Status: Inappropriate [embedded specific]
from openembedded, added by Qing He <qing.he@intel.com>
-Index: libaio-0.3.110/src/syscall-m68k.h
-===================================================================
+---
+ src/syscall-m68k.h | 78 ++++++++++++++++++
+ src/syscall-mips.h | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/syscall-parisc.h | 146 +++++++++++++++++++++++++++++++++
+ src/syscall.h | 6 ++
+ 4 files changed, 453 insertions(+)
+ create mode 100644 src/syscall-m68k.h
+ create mode 100644 src/syscall-mips.h
+ create mode 100644 src/syscall-parisc.h
+
+diff --git a/src/syscall-m68k.h b/src/syscall-m68k.h
+new file mode 100644
+index 0000000..f440412
--- /dev/null
-+++ libaio-0.3.110/src/syscall-m68k.h
++++ b/src/syscall-m68k.h
@@ -0,0 +1,78 @@
+#define __NR_io_setup 241
+#define __NR_io_destroy 242
@@ -85,27 +101,11 @@ Index: libaio-0.3.110/src/syscall-m68k.h
+return (type) __res; \
+}
+
-Index: libaio-0.3.110/src/syscall.h
-===================================================================
---- libaio-0.3.110.orig/src/syscall.h
-+++ libaio-0.3.110/src/syscall.h
-@@ -28,6 +28,12 @@
- #include "syscall-sparc.h"
- #elif defined(__aarch64__)
- #include "syscall-arm64.h"
-+#elif defined(__m68k__)
-+#include "syscall-m68k.h"
-+#elif defined(__hppa__)
-+#include "syscall-parisc.h"
-+#elif defined(__mips__)
-+#include "syscall-mips.h"
- #else
- #warning "using generic syscall method"
- #include "syscall-generic.h"
-Index: libaio-0.3.110/src/syscall-mips.h
-===================================================================
+diff --git a/src/syscall-mips.h b/src/syscall-mips.h
+new file mode 100644
+index 0000000..4142499
--- /dev/null
-+++ libaio-0.3.110/src/syscall-mips.h
++++ b/src/syscall-mips.h
@@ -0,0 +1,223 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
@@ -330,10 +330,11 @@ Index: libaio-0.3.110/src/syscall-mips.h
+
+#endif /* (_MIPS_SIM == _MIPS_SIM_NABI32) || (_MIPS_SIM == _MIPS_SIM_ABI64) */
+
-Index: libaio-0.3.110/src/syscall-parisc.h
-===================================================================
+diff --git a/src/syscall-parisc.h b/src/syscall-parisc.h
+new file mode 100644
+index 0000000..ff61746
--- /dev/null
-+++ libaio-0.3.110/src/syscall-parisc.h
++++ b/src/syscall-parisc.h
@@ -0,0 +1,146 @@
+/*
+ * Linux system call numbers.
@@ -481,127 +482,20 @@ Index: libaio-0.3.110/src/syscall-parisc.h
+ return K_INLINE_SYSCALL(sname, 5, arg1, arg2, arg3, arg4, arg5); \
+}
+
-Index: libaio-0.3.110/src/syscall-arm.h
-===================================================================
---- libaio-0.3.110.orig/src/syscall-arm.h
-+++ libaio-0.3.110/src/syscall-arm.h
-@@ -114,3 +114,119 @@ type fname(type1 arg1, type2 arg2, type3
- return (type) __res_r0; \
- }
-
-+/*
-+ * linux/include/asm-arm/unistd.h
-+ *
-+ * Copyright (C) 2001-2005 Russell King
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * Please forward _all_ changes to this file to rmk@arm.linux.org.uk,
-+ * no matter what the change is. Thanks!
-+ */
-+
-+#define __NR_OABI_SYSCALL_BASE 0x900000
-+
-+#if defined(__thumb__) || defined(__ARM_EABI__)
-+#define __NR_SYSCALL_BASE 0
-+#else
-+#define __NR_SYSCALL_BASE __NR_OABI_SYSCALL_BASE
-+#endif
-+
-+#define __NR_io_setup (__NR_SYSCALL_BASE+243)
-+#define __NR_io_destroy (__NR_SYSCALL_BASE+244)
-+#define __NR_io_getevents (__NR_SYSCALL_BASE+245)
-+#define __NR_io_submit (__NR_SYSCALL_BASE+246)
-+#define __NR_io_cancel (__NR_SYSCALL_BASE+247)
-+
-+#define __sys2(x) #x
-+#define __sys1(x) __sys2(x)
-+
-+#if defined(__thumb__) || defined(__ARM_EABI__)
-+#define __SYS_REG(name) register long __sysreg __asm__("r7") = __NR_##name;
-+#define __SYS_REG_LIST(regs...) "r" (__sysreg) , ##regs
-+#define __syscall(name) "swi\t0"
-+#else
-+#define __SYS_REG(name)
-+#define __SYS_REG_LIST(regs...) regs
-+#define __syscall(name) "swi\t" __sys1(__NR_##name) ""
-+#endif
-+
-+#define io_syscall1(type,fname,sname,type1,arg1) \
-+type fname(type1 arg1) { \
-+ __SYS_REG(sname) \
-+ register long __r0 __asm__("r0") = (long)arg1; \
-+ register long __res_r0 __asm__("r0"); \
-+ __asm__ __volatile__ ( \
-+ __syscall(sname) \
-+ : "=r" (__res_r0) \
-+ : __SYS_REG_LIST( "0" (__r0) ) \
-+ : "memory" ); \
-+ return (type) __res_r0; \
-+}
-+
-+#define io_syscall2(type,fname,sname,type1,arg1,type2,arg2) \
-+type fname(type1 arg1,type2 arg2) { \
-+ __SYS_REG(sname) \
-+ register long __r0 __asm__("r0") = (long)arg1; \
-+ register long __r1 __asm__("r1") = (long)arg2; \
-+ register long __res_r0 __asm__("r0"); \
-+ __asm__ __volatile__ ( \
-+ __syscall(sname) \
-+ : "=r" (__res_r0) \
-+ : __SYS_REG_LIST( "0" (__r0), "r" (__r1) ) \
-+ : "memory" ); \
-+ return (type) __res_r0; \
-+}
-+
-+#define io_syscall3(type,fname,sname,type1,arg1,type2,arg2,type3,arg3) \
-+type fname(type1 arg1,type2 arg2,type3 arg3) { \
-+ __SYS_REG(sname) \
-+ register long __r0 __asm__("r0") = (long)arg1; \
-+ register long __r1 __asm__("r1") = (long)arg2; \
-+ register long __r2 __asm__("r2") = (long)arg3; \
-+ register long __res_r0 __asm__("r0"); \
-+ __asm__ __volatile__ ( \
-+ __syscall(sname) \
-+ : "=r" (__res_r0) \
-+ : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2) ) \
-+ : "memory" ); \
-+ return (type) __res_r0; \
-+}
-+
-+#define io_syscall4(type,fname,sname,type1,arg1,type2,arg2,type3,arg3,type4,arg4)\
-+type fname(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { \
-+ __SYS_REG(sname) \
-+ register long __r0 __asm__("r0") = (long)arg1; \
-+ register long __r1 __asm__("r1") = (long)arg2; \
-+ register long __r2 __asm__("r2") = (long)arg3; \
-+ register long __r3 __asm__("r3") = (long)arg4; \
-+ register long __res_r0 __asm__("r0"); \
-+ __asm__ __volatile__ ( \
-+ __syscall(sname) \
-+ : "=r" (__res_r0) \
-+ : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), "r" (__r3) ) \
-+ : "memory" ); \
-+ return (type) __res_r0; \
-+}
-+
-+#define io_syscall5(type,fname,sname,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \
-+type fname(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) {\
-+ __SYS_REG(sname) \
-+ register long __r0 __asm__("r0") = (long)arg1; \
-+ register long __r1 __asm__("r1") = (long)arg2; \
-+ register long __r2 __asm__("r2") = (long)arg3; \
-+ register long __r3 __asm__("r3") = (long)arg4; \
-+ register long __r4 __asm__("r4") = (long)arg5; \
-+ register long __res_r0 __asm__("r0"); \
-+ __asm__ __volatile__ ( \
-+ __syscall(sname) \
-+ : "=r" (__res_r0) \
-+ : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), \
-+ "r" (__r3), "r" (__r4) ) \
-+ : "memory" ); \
-+ return (type) __res_r0; \
-+}
-+
+diff --git a/src/syscall.h b/src/syscall.h
+index 9b9e9c1..9ecd3b4 100644
+--- a/src/syscall.h
++++ b/src/syscall.h
+@@ -29,6 +29,12 @@
+ #include "syscall-sparc.h"
+ #elif defined(__aarch64__) || defined(__riscv)
+ #include "syscall-generic.h"
++#elif defined(__m68k__)
++#include "syscall-m68k.h"
++#elif defined(__hppa__)
++#include "syscall-parisc.h"
++#elif defined(__mips__)
++#include "syscall-mips.h"
+ #else
+ #warning "using system call numbers from sys/syscall.h"
+ #endif
diff --git a/meta/recipes-extended/libaio/libaio/generic-arch-dectection-for-padding-defines.patch b/meta/recipes-extended/libaio/libaio/generic-arch-dectection-for-padding-defines.patch
deleted file mode 100644
index bba7e554af3..00000000000
--- a/meta/recipes-extended/libaio/libaio/generic-arch-dectection-for-padding-defines.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From: Nathan Rossi <nathan.rossi@xilinx.com>
-Date: Tue, 27 Jan 2015 14:59:35 +1000
-Subject: [PATCH] Generic arch dectection for padding defines
-
-When available use the GNU C defines for endian and bitwidth to
-determine the padding required. This reduces the need to define the
-padding selection for every architecture.
-
-Signed-off-by: Nathan Rossi <nathan.rossi@xilinx.com>
-Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
-Upstream-Status: Backport
----
- src/libaio.h | 16 ++++++++++++----
- 1 file changed, 12 insertions(+), 4 deletions(-)
-
-diff --git a/src/libaio.h b/src/libaio.h
-index 1223146..4a4e0f5 100644
---- a/src/libaio.h
-+++ b/src/libaio.h
-@@ -52,14 +52,18 @@ typedef enum io_iocb_cmd {
- /* little endian, 32 bits */
- #if defined(__i386__) || (defined(__arm__) && !defined(__ARMEB__)) || \
- defined(__sh__) || defined(__bfin__) || defined(__MIPSEL__) || \
-- defined(__cris__)
-+ defined(__cris__) || \
-+ (defined(__GNUC__) && defined(__BYTE_ORDER__) && \
-+ __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && __SIZEOF_LONG__ == 4)
- #define PADDED(x, y) x; unsigned y
- #define PADDEDptr(x, y) x; unsigned y
- #define PADDEDul(x, y) unsigned long x; unsigned y
-
- /* little endian, 64 bits */
- #elif defined(__ia64__) || defined(__x86_64__) || defined(__alpha__) || \
-- (defined(__aarch64__) && defined(__AARCH64EL__))
-+ (defined(__aarch64__) && defined(__AARCH64EL__)) || \
-+ (defined(__GNUC__) && defined(__BYTE_ORDER__) && \
-+ __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && __SIZEOF_LONG__ == 8)
- #define PADDED(x, y) x, y
- #define PADDEDptr(x, y) x
- #define PADDEDul(x, y) unsigned long x
-@@ -67,7 +71,9 @@ typedef enum io_iocb_cmd {
- /* big endian, 64 bits */
- #elif defined(__powerpc64__) || defined(__s390x__) || \
- (defined(__sparc__) && defined(__arch64__)) || \
-- (defined(__aarch64__) && defined(__AARCH64EB__))
-+ (defined(__aarch64__) && defined(__AARCH64EB__)) || \
-+ (defined(__GNUC__) && defined(__BYTE_ORDER__) && \
-+ __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ && __SIZEOF_LONG__ == 8)
- #define PADDED(x, y) unsigned y; x
- #define PADDEDptr(x,y) x
- #define PADDEDul(x, y) unsigned long x
-@@ -76,7 +82,9 @@ typedef enum io_iocb_cmd {
- #elif defined(__PPC__) || defined(__s390__) || \
- (defined(__arm__) && defined(__ARMEB__)) || \
- defined(__sparc__) || defined(__MIPSEB__) || defined(__m68k__) || \
-- defined(__hppa__) || defined(__frv__) || defined(__avr32__)
-+ defined(__hppa__) || defined(__frv__) || defined(__avr32__) || \
-+ (defined(__GNUC__) && defined(__BYTE_ORDER__) && \
-+ __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ && __SIZEOF_LONG__ == 4)
- #define PADDED(x, y) unsigned y; x
- #define PADDEDptr(x, y) unsigned y; x
- #define PADDEDul(x, y) unsigned y; unsigned long x
---
-2.1.1
-
diff --git a/meta/recipes-extended/libaio/libaio/libaio_fix_for_x32.patch b/meta/recipes-extended/libaio/libaio/libaio_fix_for_x32.patch
deleted file mode 100644
index dc4ba505b97..00000000000
--- a/meta/recipes-extended/libaio/libaio/libaio_fix_for_x32.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-Upstream-Status: Pending
-
-Properly load arguments 5 an 6 for x86-64 syscall
-Use asm ("r10") and asm ("r8") to load arguments 5 an 6 for x86-64
-syscall so that it works with both x32 and x86-64.
-
-Received this patch from H.J. Lu <hjl.tools@gmail.com>
-
-Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
-2011/12/02
-
---- libaio-0.3.109/src/syscall-x86_64.h.x32 2009-10-09 11:17:02.000000000 -0700
-+++ libaio-0.3.109/src/syscall-x86_64.h 2011-12-02 09:09:07.537603224 -0800
-@@ -1,8 +1,18 @@
-+#ifndef __NR_io_setup
- #define __NR_io_setup 206
-+#endif
-+#ifndef __NR_io_destroy
- #define __NR_io_destroy 207
-+#endif
-+#ifndef __NR_io_getevents
- #define __NR_io_getevents 208
-+#endif
-+#ifndef __NR_io_submit
- #define __NR_io_submit 209
-+#endif
-+#ifndef __NR_io_cancel
- #define __NR_io_cancel 210
-+#endif
-
- #define __syscall_clobber "r11","rcx","memory"
- #define __syscall "syscall"
-@@ -42,10 +52,11 @@ return __res; \
- type fname (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
- { \
- long __res; \
--__asm__ volatile ("movq %5,%%r10 ;" __syscall \
-+register long __a4 asm ("r10") = (long) arg4; \
-+__asm__ volatile (__syscall \
- : "=a" (__res) \
- : "0" (__NR_##sname),"D" ((long)(arg1)),"S" ((long)(arg2)), \
-- "d" ((long)(arg3)),"g" ((long)(arg4)) : __syscall_clobber,"r10" ); \
-+ "d" ((long)(arg3)),"r" (__a4)); \
- return __res; \
- }
-
-@@ -54,10 +65,11 @@ return __res; \
- type fname (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \
- { \
- long __res; \
--__asm__ volatile ("movq %5,%%r10 ; movq %6,%%r8 ; " __syscall \
-+register long __a4 asm ("r10") = (long) arg4; \
-+register long __a5 asm ("r8") = (long) arg5; \
-+__asm__ volatile ( __syscall \
- : "=a" (__res) \
- : "0" (__NR_##sname),"D" ((long)(arg1)),"S" ((long)(arg2)), \
-- "d" ((long)(arg3)),"g" ((long)(arg4)),"g" ((long)(arg5)) : \
-- __syscall_clobber,"r8","r10" ); \
-+ "d" ((long)(arg3)),"r" (__a4),"r" (__a5)); \
- return __res; \
- }
diff --git a/meta/recipes-extended/libaio/libaio_0.3.110.bb b/meta/recipes-extended/libaio/libaio_0.3.111.bb
index 75975d4ab7d..5bd83078acc 100644
--- a/meta/recipes-extended/libaio/libaio_0.3.110.bb
+++ b/meta/recipes-extended/libaio/libaio_0.3.111.bb
@@ -5,19 +5,14 @@ HOMEPAGE = "http://lse.sourceforge.net/io/aio.html"
LICENSE = "LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499"
-SRC_URI = "http://snapshot.debian.org/archive/debian/20160728T043443Z/pool/main/liba/${BPN}/${BPN}_${PV}.orig.tar.gz \
- file://generic-arch-dectection-for-padding-defines.patch \
+SRC_URI = "git://pagure.io/libaio.git;protocol=https \
file://00_arches.patch \
file://destdir.patch \
- file://libaio_fix_for_x32.patch \
file://libaio_fix_for_mips_syscalls.patch \
file://system-linkage.patch \
"
-
-SRC_URI[md5sum] = "2a35602e43778383e2f4907a4ca39ab8"
-SRC_URI[sha256sum] = "e019028e631725729376250e32b473012f7cb68e1f7275bfc1bbcdd0f8745f7e"
-
-UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/liba/libaio/"
+SRCREV = "f66be22ab0a59a39858900ab72a8c6a6e8b0b7ec"
+S = "${WORKDIR}/git"
EXTRA_OEMAKE =+ "prefix=${prefix} includedir=${includedir} libdir=${libdir}"
diff --git a/meta/recipes-extended/libarchive/libarchive/CVE-2017-14166.patch b/meta/recipes-extended/libarchive/libarchive/CVE-2017-14166.patch
deleted file mode 100644
index e85fec40aaf..00000000000
--- a/meta/recipes-extended/libarchive/libarchive/CVE-2017-14166.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-libarchive-3.3.2: Fix CVE-2017-14166
-
-[No upstream tracking] -- https://github.com/libarchive/libarchive/pull/935
-
-archive_read_support_format_xar: heap-based buffer overflow in xml_data
-
-Upstream-Status: Backport [https://github.com/libarchive/libarchive/commit/fa7438a0ff4033e4741c807394a9af6207940d71]
-CVE: CVE-2017-14166
-Bug: 935
-Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
-
-diff --git a/libarchive/archive_read_support_format_xar.c b/libarchive/archive_read_support_format_xar.c
-index 7a22beb..93eeacc 100644
---- a/libarchive/archive_read_support_format_xar.c
-+++ b/libarchive/archive_read_support_format_xar.c
-@@ -1040,6 +1040,9 @@ atol10(const char *p, size_t char_cnt)
- uint64_t l;
- int digit;
-
-+ if (char_cnt == 0)
-+ return (0);
-+
- l = 0;
- digit = *p - '0';
- while (digit >= 0 && digit < 10 && char_cnt-- > 0) {
-@@ -1054,7 +1057,10 @@ atol8(const char *p, size_t char_cnt)
- {
- int64_t l;
- int digit;
--
-+
-+ if (char_cnt == 0)
-+ return (0);
-+
- l = 0;
- while (char_cnt-- > 0) {
- if (*p >= '0' && *p <= '7')
diff --git a/meta/recipes-extended/libarchive/libarchive/CVE-2017-14502.patch b/meta/recipes-extended/libarchive/libarchive/CVE-2017-14502.patch
deleted file mode 100644
index 72e15464351..00000000000
--- a/meta/recipes-extended/libarchive/libarchive/CVE-2017-14502.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 5562545b5562f6d12a4ef991fae158bf4ccf92b6 Mon Sep 17 00:00:00 2001
-From: Joerg Sonnenberger <joerg@bec.de>
-Date: Sat, 9 Sep 2017 17:47:32 +0200
-Subject: [PATCH] Avoid a read off-by-one error for UTF16 names in RAR
- archives.
-
-Reported-By: OSS-Fuzz issue 573
-
-CVE: CVE-2017-14502
-
-Upstream-Status: Backport
-
-Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
----
- libarchive/archive_read_support_format_rar.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/libarchive/archive_read_support_format_rar.c b/libarchive/archive_read_support_format_rar.c
-index cbb14c3..751de69 100644
---- a/libarchive/archive_read_support_format_rar.c
-+++ b/libarchive/archive_read_support_format_rar.c
-@@ -1496,7 +1496,11 @@ read_header(struct archive_read *a, struct archive_entry *entry,
- return (ARCHIVE_FATAL);
- }
- filename[filename_size++] = '\0';
-- filename[filename_size++] = '\0';
-+ /*
-+ * Do not increment filename_size here as the computations below
-+ * add the space for the terminating NUL explicitly.
-+ */
-+ filename[filename_size] = '\0';
-
- /* Decoded unicode form is UTF-16BE, so we have to update a string
- * conversion object for it. */
---
-1.9.1
-
diff --git a/meta/recipes-extended/libarchive/libarchive/bug929.patch b/meta/recipes-extended/libarchive/libarchive/bug929.patch
deleted file mode 100644
index 2f3254c8dc7..00000000000
--- a/meta/recipes-extended/libarchive/libarchive/bug929.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-libarchive-3.3.2: Fix bug929
-
-[No upstream tracking] -- https://github.com/libarchive/libarchive/pull/929
-
-archive_read_support_format_cpio: header_newc(): Avoid overflow when reading corrupt
-cpio archive
-
-A cpio "newc" archive with a namelength of "FFFFFFFF", if read on a
-system with a 32-bit size_t, would result in namelength + name_pad
-overflowing 32 bits and libarchive attempting to copy 2^32-1 bytes
-from a 2-byte buffer, with appropriately hilarious results.
-
-Check for this overflow and fail; there's no legitimate reason for a
-cpio archive to contain a file with a name over 4 billion characters
-in length.
-
-Upstream-Status: Backport [https://github.com/libarchive/libarchive/commit/bac4659e0b970990e7e3f3a3d239294e96311630]
-Bug: 929
-Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
-
-diff --git a/libarchive/archive_read_support_format_cpio.c b/libarchive/archive_read_support_format_cpio.c
-index ad9f782..1faa64d 100644
---- a/libarchive/archive_read_support_format_cpio.c
-+++ b/libarchive/archive_read_support_format_cpio.c
-@@ -633,6 +633,13 @@ header_newc(struct archive_read *a, struct cpio *cpio,
- /* Pad name to 2 more than a multiple of 4. */
- *name_pad = (2 - *namelength) & 3;
-
-+ /* Make sure that the padded name length fits into size_t. */
-+ if ((size_t)(*namelength + *name_pad) < *namelength) {
-+ archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-+ "cpio archive has invalid namelength");
-+ return (ARCHIVE_FATAL);
-+ }
-+
- /*
- * Note: entry_bytes_remaining is at least 64 bits and
- * therefore guaranteed to be big enough for a 33-bit file
diff --git a/meta/recipes-extended/libarchive/libarchive_3.3.2.bb b/meta/recipes-extended/libarchive/libarchive_3.3.3.bb
index 5daca2731ec..eabab167708 100644
--- a/meta/recipes-extended/libarchive/libarchive_3.3.2.bb
+++ b/meta/recipes-extended/libarchive/libarchive_3.3.3.bb
@@ -32,14 +32,11 @@ PACKAGECONFIG[lz4] = "--with-lz4,--without-lz4,lz4,"
EXTRA_OECONF += "--enable-largefile"
SRC_URI = "http://libarchive.org/downloads/libarchive-${PV}.tar.gz \
- file://bug929.patch \
- file://CVE-2017-14166.patch \
- file://CVE-2017-14502.patch \
file://non-recursive-extract-and-list.patch \
- "
+"
-SRC_URI[md5sum] = "4583bd6b2ebf7e0e8963d90879eb1b27"
-SRC_URI[sha256sum] = "ed2dbd6954792b2c054ccf8ec4b330a54b85904a80cef477a1c74643ddafa0ce"
+SRC_URI[md5sum] = "4038e366ca5b659dae3efcc744e72120"
+SRC_URI[sha256sum] = "ba7eb1781c9fbbae178c4c6bad1c6eb08edab9a1496c64833d1715d022b30e2e"
inherit autotools update-alternatives pkgconfig
diff --git a/meta/recipes-extended/libidn/libidn/0001-idn-fix-printf-format-security-warnings.patch b/meta/recipes-extended/libidn/libidn/0001-idn-fix-printf-format-security-warnings.patch
deleted file mode 100644
index 2d5faabb240..00000000000
--- a/meta/recipes-extended/libidn/libidn/0001-idn-fix-printf-format-security-warnings.patch
+++ /dev/null
@@ -1,694 +0,0 @@
-From 7148adf34dae30345c2e4d9d437838a45ba6f6e8 Mon Sep 17 00:00:00 2001
-From: =?utf8?q?Tim=20R=C3=BChsen?= <tim.ruehsen@gmx.de>
-Date: Wed, 1 Feb 2017 11:06:39 +0100
-Subject: [PATCH] Fix -Wformat warnings
-
----
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
- examples/example.c | 6 +++---
- examples/example3.c | 4 ++--
- examples/example4.c | 4 ++--
- examples/example5.c | 2 +-
- src/idn.c | 2 +-
- tests/tst_idna.c | 25 +++++++++++++------------
- tests/tst_idna2.c | 8 ++++----
- tests/tst_idna3.c | 8 ++++----
- tests/tst_nfkc.c | 8 ++++----
- tests/tst_pr29.c | 12 ++++++------
- tests/tst_punycode.c | 13 +++++++------
- tests/tst_strerror.c | 20 ++++++++++----------
- tests/tst_stringprep.c | 12 ++++++------
- tests/tst_tld.c | 20 ++++++++++----------
- tests/utils.c | 6 +++---
- 15 files changed, 76 insertions(+), 74 deletions(-)
-
-diff --git a/examples/example.c b/examples/example.c
-index 6e91783..24f64e0 100644
---- a/examples/example.c
-+++ b/examples/example.c
-@@ -55,7 +55,7 @@ main (void)
-
- printf ("Before locale2utf8 (length %ld): ", (long int) strlen (buf));
- for (i = 0; i < strlen (buf); i++)
-- printf ("%02x ", buf[i] & 0xFF);
-+ printf ("%02x ", (unsigned) buf[i] & 0xFF);
- printf ("\n");
-
- p = stringprep_locale_to_utf8 (buf);
-@@ -69,7 +69,7 @@ main (void)
-
- printf ("Before stringprep (length %ld): ", (long int) strlen (buf));
- for (i = 0; i < strlen (buf); i++)
-- printf ("%02x ", buf[i] & 0xFF);
-+ printf ("%02x ", (unsigned) buf[i] & 0xFF);
- printf ("\n");
-
- rc = stringprep (buf, BUFSIZ, 0, stringprep_nameprep);
-@@ -79,7 +79,7 @@ main (void)
- {
- printf ("After stringprep (length %ld): ", (long int) strlen (buf));
- for (i = 0; i < strlen (buf); i++)
-- printf ("%02x ", buf[i] & 0xFF);
-+ printf ("%02x ", (unsigned) buf[i] & 0xFF);
- printf ("\n");
- }
-
-diff --git a/examples/example3.c b/examples/example3.c
-index fc11c1c..ffb9042 100644
---- a/examples/example3.c
-+++ b/examples/example3.c
-@@ -56,7 +56,7 @@ main (void)
-
- printf ("Read string (length %ld): ", (long int) strlen (buf));
- for (i = 0; i < strlen (buf); i++)
-- printf ("%02x ", buf[i] & 0xFF);
-+ printf ("%02x ", (unsigned) buf[i] & 0xFF);
- printf ("\n");
-
- rc = idna_to_ascii_lz (buf, &p, 0);
-@@ -68,7 +68,7 @@ main (void)
-
- printf ("ACE label (length %ld): '%s'\n", (long int) strlen (p), p);
- for (i = 0; i < strlen (p); i++)
-- printf ("%02x ", p[i] & 0xFF);
-+ printf ("%02x ", (unsigned) p[i] & 0xFF);
- printf ("\n");
-
- free (p);
-diff --git a/examples/example4.c b/examples/example4.c
-index 1b319c9..a3315a1 100644
---- a/examples/example4.c
-+++ b/examples/example4.c
-@@ -56,7 +56,7 @@ main (void)
-
- printf ("Read string (length %ld): ", (long int) strlen (buf));
- for (i = 0; i < strlen (buf); i++)
-- printf ("%02x ", buf[i] & 0xFF);
-+ printf ("%02x ", (unsigned) buf[i] & 0xFF);
- printf ("\n");
-
- rc = idna_to_unicode_lzlz (buf, &p, 0);
-@@ -68,7 +68,7 @@ main (void)
-
- printf ("ACE label (length %ld): '%s'\n", (long int) strlen (p), p);
- for (i = 0; i < strlen (p); i++)
-- printf ("%02x ", p[i] & 0xFF);
-+ printf ("%02x ", (unsigned) p[i] & 0xFF);
- printf ("\n");
-
- free (p);
-diff --git a/examples/example5.c b/examples/example5.c
-index df55798..29d40b9 100644
---- a/examples/example5.c
-+++ b/examples/example5.c
-@@ -68,7 +68,7 @@ main (void)
-
- printf ("Read string (length %ld): ", (long int) strlen (buf));
- for (i = 0; i < strlen (buf); i++)
-- printf ("%02x ", buf[i] & 0xFF);
-+ printf ("%02x ", (unsigned) buf[i] & 0xFF);
- printf ("\n");
-
- p = stringprep_locale_to_utf8 (buf);
-diff --git a/src/idn.c b/src/idn.c
-index be1c7d1..13eb3c9 100644
---- a/src/idn.c
-+++ b/src/idn.c
-@@ -419,7 +419,7 @@ main (int argc, char *argv[])
- size_t i;
- for (i = 0; p[i]; i++)
- fprintf (stderr, "output[%lu] = U+%04x\n",
-- (unsigned long) i, p[i]);
-+ (unsigned long) i, (unsigned) p[i]);
- }
-
- fprintf (stdout, "%s\n", p);
-diff --git a/tests/tst_idna.c b/tests/tst_idna.c
-index 415764e..4ac046f 100644
---- a/tests/tst_idna.c
-+++ b/tests/tst_idna.c
-@@ -220,13 +220,14 @@ doit (void)
- char label[100];
- uint32_t *ucs4label = NULL;
- uint32_t tmp[100];
-- size_t len, len2, i;
-+ size_t len, len2;
- int rc;
-+ unsigned i;
-
- for (i = 0; i < sizeof (idna) / sizeof (idna[0]); i++)
- {
- if (debug)
-- printf ("IDNA entry %ld: %s\n", i, idna[i].name);
-+ printf ("IDNA entry %u: %s\n", i, idna[i].name);
-
- if (debug)
- {
-@@ -237,7 +238,7 @@ doit (void)
- rc = idna_to_ascii_4i (idna[i].in, idna[i].inlen, label, idna[i].flags);
- if (rc != idna[i].toasciirc)
- {
-- fail ("IDNA entry %ld failed: %d\n", i, rc);
-+ fail ("IDNA entry %u failed: %d\n", i, rc);
- if (debug)
- printf ("FATAL\n");
- continue;
-@@ -256,7 +257,7 @@ doit (void)
- if (strlen (idna[i].out) != strlen (label) ||
- strcasecmp (idna[i].out, label) != 0)
- {
-- fail ("IDNA entry %ld failed\n", i);
-+ fail ("IDNA entry %u failed\n", i);
- if (debug)
- printf ("ERROR\n");
- }
-@@ -273,8 +274,8 @@ doit (void)
-
- if (debug)
- {
-- printf ("in: %s (%ld==%ld)\n", idna[i].out, strlen (idna[i].out),
-- len);
-+ printf ("in: %s (%d==%d)\n", idna[i].out, (int) strlen (idna[i].out),
-+ (int) len);
- ucs4print (ucs4label, len);
- }
-
-@@ -282,20 +283,20 @@ doit (void)
- rc = idna_to_unicode_44i (ucs4label, len, tmp, &len2, idna[i].flags);
- if (debug)
- {
-- printf ("expected out (%ld):\n",
-+ printf ("expected out (%lu):\n",
- rc == IDNA_SUCCESS ? idna[i].inlen : len);
- if (rc == IDNA_SUCCESS)
- ucs4print (idna[i].in, idna[i].inlen);
- else
- ucs4print (ucs4label, len);
-
-- printf ("computed out (%ld):\n", len2);
-+ printf ("computed out (%d):\n", (int) len2);
- ucs4print (tmp, len2);
- }
-
- if (rc != idna[i].tounicoderc)
- {
-- fail ("IDNA entry %ld failed: %d\n", i, rc);
-+ fail ("IDNA entry %u failed: %d\n", i, rc);
- if (debug)
- printf ("FATAL\n");
- continue;
-@@ -309,11 +310,11 @@ doit (void)
- if (debug)
- {
- if (rc == IDNA_SUCCESS)
-- printf ("len=%ld len2=%ld\n", len2, idna[i].inlen);
-+ printf ("len=%d len2=%d\n", (int) len2, (int) idna[i].inlen);
- else
-- printf ("len=%ld len2=%ld\n", len, len2);
-+ printf ("len=%d len2=%d\n", (int) len, (int) len2);
- }
-- fail ("IDNA entry %ld failed\n", i);
-+ fail ("IDNA entry %u failed\n", i);
- if (debug)
- printf ("ERROR\n");
- }
-diff --git a/tests/tst_idna2.c b/tests/tst_idna2.c
-index 65b3a4d..38932ca 100644
---- a/tests/tst_idna2.c
-+++ b/tests/tst_idna2.c
-@@ -461,14 +461,14 @@ static const struct idna idna[] = {
- void
- doit (void)
- {
-- size_t i;
-+ unsigned i;
- char *out;
- int rc;
-
- for (i = 0; i < sizeof (idna) / sizeof (idna[0]); i++)
- {
- if (debug)
-- printf ("IDNA2 entry %ld\n", i);
-+ printf ("IDNA2 entry %u\n", i);
-
- if (debug)
- {
-@@ -487,7 +487,7 @@ doit (void)
- IDNA_USE_STD3_ASCII_RULES);
- if (rc != IDNA_SUCCESS && strlen (idna[i].out) > 0)
- {
-- fail ("IDNA2 entry %ld failed: %d\n", i, rc);
-+ fail ("IDNA2 entry %u failed: %d\n", i, rc);
- continue;
- }
-
-@@ -504,7 +504,7 @@ doit (void)
- if (strlen (idna[i].out) != strlen (out) ||
- strcasecmp (idna[i].out, out) != 0)
- {
-- fail ("IDNA2 entry %ld failed\n", i);
-+ fail ("IDNA2 entry %u failed\n", i);
- if (debug)
- printf ("ERROR\n");
- }
-diff --git a/tests/tst_idna3.c b/tests/tst_idna3.c
-index a189378..f65628c 100644
---- a/tests/tst_idna3.c
-+++ b/tests/tst_idna3.c
-@@ -59,13 +59,13 @@ doit (void)
- {
- int rc;
- char *out = NULL;
-- size_t i;
-+ unsigned i;
-
- for (i = 0; i < sizeof (idna) / sizeof (idna[0]); i++)
- {
- rc = idna_to_unicode_8z8z (idna[i].in, &out, 0);
- if (rc != IDNA_SUCCESS)
-- fail ("IDNA3[%ld] failed %d\n", i, rc);
-+ fail ("IDNA3[%u] failed %d\n", i, rc);
-
- if (debug && rc == IDNA_SUCCESS)
- {
-@@ -75,9 +75,9 @@ doit (void)
- }
-
- if (strcmp (out, idna[i].out) != 0)
-- fail ("IDNA3[%ld] failed\n", i);
-+ fail ("IDNA3[%u] failed\n", i);
- else if (debug)
-- printf ("IDNA3[%ld] success\n", i);
-+ printf ("IDNA3[%u] success\n", i);
-
- if (out)
- idn_free (out);
-diff --git a/tests/tst_nfkc.c b/tests/tst_nfkc.c
-index d150fec..f5af9c6 100644
---- a/tests/tst_nfkc.c
-+++ b/tests/tst_nfkc.c
-@@ -68,18 +68,18 @@ void
- doit (void)
- {
- char *out;
-- size_t i;
-+ unsigned i;
-
- for (i = 0; i < sizeof (nfkc) / sizeof (nfkc[0]); i++)
- {
- if (debug)
-- printf ("NFKC entry %ld\n", i);
-+ printf ("NFKC entry %u\n", i);
-
- out = stringprep_utf8_nfkc_normalize (nfkc[i].in,
- (ssize_t) strlen (nfkc[i].in));
- if (out == NULL)
- {
-- fail ("NFKC entry %ld failed fatally\n", i);
-+ fail ("NFKC entry %u failed fatally\n", i);
- continue;
- }
-
-@@ -114,7 +114,7 @@ doit (void)
- if (strlen (nfkc[i].out) != strlen (out) ||
- memcmp (nfkc[i].out, out, strlen (out)) != 0)
- {
-- fail ("NFKC entry %ld failed\n", i);
-+ fail ("NFKC entry %u failed\n", i);
- if (debug)
- printf ("ERROR\n");
- }
-diff --git a/tests/tst_pr29.c b/tests/tst_pr29.c
-index 3dc5466..11d0ede 100644
---- a/tests/tst_pr29.c
-+++ b/tests/tst_pr29.c
-@@ -91,7 +91,7 @@ static const struct tv tv[] = {
- void
- doit (void)
- {
-- size_t i;
-+ unsigned i;
- int rc;
-
- for (i = 0; i < sizeof (tv) / sizeof (tv[0]); i++)
-@@ -100,7 +100,7 @@ doit (void)
- {
- uint32_t *p, *q;
-
-- printf ("PR29 entry %ld: %s\n", i, tv[i].name);
-+ printf ("PR29 entry %u: %s\n", i, tv[i].name);
-
- printf ("in:\n");
- ucs4print (tv[i].in, tv[i].inlen);
-@@ -120,7 +120,7 @@ doit (void)
- rc = pr29_4 (tv[i].in, tv[i].inlen);
- if (rc != tv[i].rc)
- {
-- fail ("PR29 entry %ld failed (expected %d): %d\n", i, tv[i].rc, rc);
-+ fail ("PR29 entry %u failed (expected %d): %d\n", i, tv[i].rc, rc);
- if (debug)
- printf ("FATAL\n");
- continue;
-@@ -129,7 +129,7 @@ doit (void)
- rc = pr29_4z (tv[i].in);
- if (rc != tv[i].rc)
- {
-- fail ("PR29 entry %ld failed (expected %d): %d\n", i, tv[i].rc, rc);
-+ fail ("PR29 entry %u failed (expected %d): %d\n", i, tv[i].rc, rc);
- if (debug)
- printf ("FATAL\n");
- continue;
-@@ -142,7 +142,7 @@ doit (void)
- p = stringprep_ucs4_to_utf8 (tv[i].in, (ssize_t) tv[i].inlen,
- &items_read, &items_written);
- if (p == NULL)
-- fail ("FAIL: stringprep_ucs4_to_utf8(tv[%ld]) == NULL\n", i);
-+ fail ("FAIL: stringprep_ucs4_to_utf8(tv[%u]) == NULL\n", i);
- if (debug)
- hexprint (p, strlen (p));
-
-@@ -150,7 +150,7 @@ doit (void)
- free (p);
- if (rc != tv[i].rc)
- {
-- fail ("PR29 entry %ld failed (expected %d): %d\n",
-+ fail ("PR29 entry %u failed (expected %d): %d\n",
- i, tv[i].rc, rc);
- if (debug)
- printf ("FATAL\n");
-diff --git a/tests/tst_punycode.c b/tests/tst_punycode.c
-index 493b8a2..997744a 100644
---- a/tests/tst_punycode.c
-+++ b/tests/tst_punycode.c
-@@ -173,7 +173,8 @@ doit (void)
- char *p;
- uint32_t *q;
- int rc;
-- size_t i, outlen;
-+ size_t outlen;
-+ unsigned i;
-
- p = malloc (sizeof (*p) * BUFSIZ);
- if (p == NULL)
-@@ -186,7 +187,7 @@ doit (void)
- for (i = 0; i < sizeof (punycode) / sizeof (punycode[0]); i++)
- {
- if (debug)
-- printf ("PUNYCODE entry %ld: %s\n", i, punycode[i].name);
-+ printf ("PUNYCODE entry %u: %s\n", i, punycode[i].name);
-
- if (debug)
- {
-@@ -199,7 +200,7 @@ doit (void)
- NULL, &outlen, p);
- if (rc != punycode[i].rc)
- {
-- fail ("punycode_encode() entry %ld failed: %d\n", i, rc);
-+ fail ("punycode_encode() entry %u failed: %d\n", i, rc);
- if (debug)
- printf ("FATAL\n");
- continue;
-@@ -221,7 +222,7 @@ doit (void)
- if (strlen (punycode[i].out) != strlen (p) ||
- memcmp (punycode[i].out, p, strlen (p)) != 0)
- {
-- fail ("punycode() entry %ld failed\n", i);
-+ fail ("punycode() entry %u failed\n", i);
- if (debug)
- printf ("ERROR\n");
- }
-@@ -241,7 +242,7 @@ doit (void)
- &outlen, q, NULL);
- if (rc != punycode[i].rc)
- {
-- fail ("punycode() entry %ld failed: %d\n", i, rc);
-+ fail ("punycode() entry %u failed: %d\n", i, rc);
- if (debug)
- printf ("FATAL\n");
- continue;
-@@ -262,7 +263,7 @@ doit (void)
- if (punycode[i].inlen != outlen ||
- memcmp (punycode[i].in, q, outlen) != 0)
- {
-- fail ("punycode_decode() entry %ld failed\n", i);
-+ fail ("punycode_decode() entry %u failed\n", i);
- if (debug)
- printf ("ERROR\n");
- }
-diff --git a/tests/tst_strerror.c b/tests/tst_strerror.c
-index 71fff59..730f5e4 100644
---- a/tests/tst_strerror.c
-+++ b/tests/tst_strerror.c
-@@ -110,7 +110,7 @@ doit (void)
- /* Iterate through all error codes. */
-
- {
-- size_t i;
-+ unsigned i;
- const char *last_p = NULL;
-
- for (i = 0;; i++)
-@@ -126,13 +126,13 @@ doit (void)
- break;
- }
- if (debug)
-- printf ("idna %ld: %s\n", i, p);
-+ printf ("idna %u: %s\n", i, p);
- last_p = p;
- }
- }
-
- {
-- size_t i;
-+ unsigned i;
- const char *last_p = NULL;
-
- for (i = 0;; i++)
-@@ -141,13 +141,13 @@ doit (void)
- if (p == last_p)
- break;
- if (debug)
-- printf ("pr29 %ld: %s\n", i, p);
-+ printf ("pr29 %u: %s\n", i, p);
- last_p = p;
- }
- }
-
- {
-- size_t i;
-+ unsigned i;
- const char *last_p = NULL;
-
- for (i = 0;; i++)
-@@ -156,13 +156,13 @@ doit (void)
- if (p == last_p)
- break;
- if (debug)
-- printf ("punycode %ld: %s\n", i, p);
-+ printf ("punycode %u: %s\n", i, p);
- last_p = p;
- }
- }
-
- {
-- size_t i;
-+ unsigned i;
- const char *last_p = NULL;
-
- for (i = 0;; i++)
-@@ -183,13 +183,13 @@ doit (void)
- break;
- }
- if (debug)
-- printf ("stringprep %ld: %s\n", i, p);
-+ printf ("stringprep %u: %s\n", i, p);
- last_p = p;
- }
- }
-
- {
-- size_t i;
-+ unsigned i;
- const char *last_p = NULL;
-
- for (i = 0;; i++)
-@@ -198,7 +198,7 @@ doit (void)
- if (p == last_p)
- break;
- if (debug)
-- printf ("tld %ld: %s\n", i, p);
-+ printf ("tld %u: %s\n", i, p);
- last_p = p;
- }
- }
-diff --git a/tests/tst_stringprep.c b/tests/tst_stringprep.c
-index 149ce6f..7c9ab06 100644
---- a/tests/tst_stringprep.c
-+++ b/tests/tst_stringprep.c
-@@ -205,7 +205,7 @@ doit (void)
- {
- char *p;
- int rc;
-- size_t i;
-+ unsigned i;
-
- if (!stringprep_check_version (STRINGPREP_VERSION))
- fail ("stringprep_check_version failed (header %s runtime %s)\n",
-@@ -224,7 +224,7 @@ doit (void)
- for (i = 0; i < sizeof (strprep) / sizeof (strprep[0]); i++)
- {
- if (debug)
-- printf ("STRINGPREP entry %ld\n", i);
-+ printf ("STRINGPREP entry %u\n", i);
-
- if (debug)
- {
-@@ -247,12 +247,12 @@ doit (void)
- continue;
- else if (l == NULL)
- {
-- fail ("bad UTF-8 in entry %ld\n", i);
-+ fail ("bad UTF-8 in entry %u\n", i);
- continue;
- }
- else if (strcmp (strprep[i].in, x) != 0)
- {
-- fail ("bad UTF-8 in entry %ld\n", i);
-+ fail ("bad UTF-8 in entry %u\n", i);
- if (debug)
- {
- puts ("expected:");
-@@ -274,7 +274,7 @@ doit (void)
- "Nameprep", strprep[i].flags);
- if (rc != strprep[i].rc)
- {
-- fail ("stringprep() entry %ld failed: %d\n", i, rc);
-+ fail ("stringprep() entry %u failed: %d\n", i, rc);
- if (debug)
- printf ("FATAL\n");
- if (rc == STRINGPREP_OK)
-@@ -302,7 +302,7 @@ doit (void)
- if (strlen (strprep[i].out) != strlen (p) ||
- memcmp (strprep[i].out, p, strlen (p)) != 0)
- {
-- fail ("stringprep() entry %ld failed\n", i);
-+ fail ("stringprep() entry %ld failed\n", (long) i);
- if (debug)
- printf ("ERROR\n");
- }
-diff --git a/tests/tst_tld.c b/tests/tst_tld.c
-index 2f8e12e..d038c79 100644
---- a/tests/tst_tld.c
-+++ b/tests/tst_tld.c
-@@ -80,7 +80,7 @@ const Tld_table * my_tld_tables[] =
- void
- doit (void)
- {
-- size_t i;
-+ unsigned i;
- const Tld_table *tldtable;
- char *out;
- size_t errpos;
-@@ -206,7 +206,7 @@ doit (void)
- for (i = 0; i < sizeof (tld) / sizeof (tld[0]); i++)
- {
- if (debug)
-- printf ("TLD entry %ld: %s\n", i, tld[i].name);
-+ printf ("TLD entry %u: %s\n", i, tld[i].name);
-
- if (debug)
- {
-@@ -217,7 +217,7 @@ doit (void)
- tldtable = tld_default_table (tld[i].tld, NULL);
- if (tldtable == NULL)
- {
-- fail ("TLD entry %ld tld_get_table (%s)\n", i, tld[i].tld);
-+ fail ("TLD entry %u tld_get_table (%s)\n", i, tld[i].tld);
- if (debug)
- printf ("FATAL\n");
- continue;
-@@ -226,7 +226,7 @@ doit (void)
- rc = tld_check_4t (tld[i].in, tld[i].inlen, &errpos, tldtable);
- if (rc != tld[i].rc)
- {
-- fail ("TLD entry %ld failed: %d\n", i, rc);
-+ fail ("TLD entry %u failed: %d\n", i, rc);
- if (debug)
- printf ("FATAL\n");
- continue;
-@@ -237,7 +237,7 @@ doit (void)
-
- if (rc != tld[i].rc)
- {
-- fail ("TLD entry %ld failed\n", i);
-+ fail ("TLD entry %u failed\n", i);
- if (debug)
- printf ("ERROR\n");
- }
-@@ -245,12 +245,12 @@ doit (void)
- {
- if (debug)
- printf ("returned errpos %ld expected errpos %ld\n",
-- errpos, tld[i].errpos);
-+ (long) errpos, (long) tld[i].errpos);
-
- if (tld[i].errpos != errpos)
- {
-- fail ("TLD entry %ld failed because errpos %ld != %ld\n", i,
-- tld[i].errpos, errpos);
-+ fail ("TLD entry %u failed because errpos %ld != %ld\n", i,
-+ (long) tld[i].errpos, (long) errpos);
- if (debug)
- printf ("ERROR\n");
- }
-@@ -262,12 +262,12 @@ doit (void)
- rc = tld_check_8z (tld[i].example, &errpos, NULL);
- if (rc != tld[i].rc)
- {
-- fail ("TLD entry %ld failed\n", i);
-+ fail ("TLD entry %u failed\n", i);
- if (debug)
- printf ("ERROR\n");
- }
- if (debug)
-- printf ("TLD entry %ld tld_check_8z (%s)\n", i, tld[i].example);
-+ printf ("TLD entry %u tld_check_8z (%s)\n", i, tld[i].example);
- }
- }
- }
-diff --git a/tests/utils.c b/tests/utils.c
-index 717ee01..5577dc3 100644
---- a/tests/utils.c
-+++ b/tests/utils.c
-@@ -49,7 +49,7 @@ escapeprint (const char *str, size_t len)
- {
- size_t i;
-
-- printf (" (length %ld bytes):\n\t", len);
-+ printf (" (length %ld bytes):\n\t", (long) len);
- for (i = 0; i < len; i++)
- {
- if (((str[i] & 0xFF) >= 'A' && (str[i] & 0xFF) <= 'Z') ||
-@@ -58,7 +58,7 @@ escapeprint (const char *str, size_t len)
- || (str[i] & 0xFF) == ' ' || (str[i] & 0xFF) == '.')
- printf ("%c", (str[i] & 0xFF));
- else
-- printf ("\\x%02X", (str[i] & 0xFF));
-+ printf ("\\x%02X", (unsigned) (str[i] & 0xFF));
- if ((i + 1) % 16 == 0 && (i + 1) < len)
- printf ("'\n\t'");
- }
-@@ -73,7 +73,7 @@ hexprint (const char *str, size_t len)
- printf ("\t;; ");
- for (i = 0; i < len; i++)
- {
-- printf ("%02x ", (str[i] & 0xFF));
-+ printf ("%02x ", (unsigned) (str[i] & 0xFF));
- if ((i + 1) % 8 == 0)
- printf (" ");
- if ((i + 1) % 16 == 0 && i + 1 < len)
---
-1.9.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
index 98ba4d6ff63..43bd2329448 100644
--- 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
@@ -1,25 +1,34 @@
-Upstream-Status: Inappropriate
+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
+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
-Index: libidn-1.24/configure.ac
-===================================================================
---- libidn-1.24.orig/configure.ac
-+++ libidn-1.24/configure.ac
-@@ -23,7 +23,7 @@ AC_COPYRIGHT([Copyright (c) 2002-2011 Si
+---
+ 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])
- AM_SILENT_RULES([yes])
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
# Library code modified: REVISION++
diff --git a/meta/recipes-extended/libidn/libidn/gcc7-compatibility.patch b/meta/recipes-extended/libidn/libidn/gcc7-compatibility.patch
deleted file mode 100644
index 546a6eaafcf..00000000000
--- a/meta/recipes-extended/libidn/libidn/gcc7-compatibility.patch
+++ /dev/null
@@ -1,334 +0,0 @@
-From 230930b3bc3e431b819eb45420cb42475d83ca93 Mon Sep 17 00:00:00 2001
-From: =?utf8?q?Tim=20R=C3=BChsen?= <tim.ruehsen@gmx.de>
-Date: Wed, 1 Feb 2017 10:44:36 +0100
-Subject: [PATCH] Update intprops.h for gcc-7 compatibility
-
----
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
- gl/intprops.h | 65 ++++++++++++++++++++++++++++++--------------------
- lib/gltests/intprops.h | 65 ++++++++++++++++++++++++++++++--------------------
- 2 files changed, 78 insertions(+), 52 deletions(-)
-
-diff --git a/gl/intprops.h b/gl/intprops.h
-index e1fce5c..eb06b69 100644
---- a/gl/intprops.h
-+++ b/gl/intprops.h
-@@ -1,18 +1,18 @@
- /* intprops.h -- properties of integer types
-
-- Copyright (C) 2001-2016 Free Software Foundation, Inc.
-+ Copyright (C) 2001-2017 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 <http://www.gnu.org/licenses/>. */
-
- /* Written by Paul Eggert. */
-@@ -47,12 +47,16 @@
-
- /* Minimum and maximum values for integer types and expressions. */
-
-+/* The width in bits of the integer type or expression T.
-+ Padding bits are not supported; this is checked at compile-time below. */
-+#define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT)
-+
- /* The maximum and minimum values for the integer type T. */
- #define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t))
- #define TYPE_MAXIMUM(t) \
- ((t) (! TYPE_SIGNED (t) \
- ? (t) -1 \
-- : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
-+ : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1)))
-
- /* The maximum and minimum values for the type of the expression E,
- after integer promotion. E should not have side effects. */
-@@ -65,7 +69,13 @@
- ? _GL_SIGNED_INT_MAXIMUM (e) \
- : _GL_INT_NEGATE_CONVERT (e, 1))
- #define _GL_SIGNED_INT_MAXIMUM(e) \
-- (((_GL_INT_CONVERT (e, 1) << (sizeof ((e) + 0) * CHAR_BIT - 2)) - 1) * 2 + 1)
-+ (((_GL_INT_CONVERT (e, 1) << (TYPE_WIDTH ((e) + 0) - 2)) - 1) * 2 + 1)
-+
-+/* Work around OpenVMS incompatibility with C99. */
-+#if !defined LLONG_MAX && defined __INT64_MAX
-+# define LLONG_MAX __INT64_MAX
-+# define LLONG_MIN __INT64_MIN
-+#endif
-
- /* This include file assumes that signed types are two's complement without
- padding bits; the above macros have undefined behavior otherwise.
-@@ -84,10 +94,15 @@ verify (TYPE_MAXIMUM (long int) == LONG_MAX);
- verify (TYPE_MINIMUM (long long int) == LLONG_MIN);
- verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
- #endif
-+/* Similarly, sanity-check one ISO/IEC TS 18661-1:2014 macro if defined. */
-+#ifdef UINT_WIDTH
-+verify (TYPE_WIDTH (unsigned int) == UINT_WIDTH);
-+#endif
-
- /* Does the __typeof__ keyword work? This could be done by
- 'configure', but for now it's easier to do it by hand. */
--#if (2 <= __GNUC__ || defined __IBM__TYPEOF__ \
-+#if (2 <= __GNUC__ \
-+ || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \
- || (0x5110 <= __SUNPRO_C && !__STDC__))
- # define _GL_HAVE___TYPEOF__ 1
- #else
-@@ -116,8 +131,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
- signed, this macro may overestimate the true bound by one byte when
- applied to unsigned types of size 2, 4, 16, ... bytes. */
- #define INT_STRLEN_BOUND(t) \
-- (INT_BITS_STRLEN_BOUND (sizeof (t) * CHAR_BIT \
-- - _GL_SIGNED_TYPE_OR_EXPR (t)) \
-+ (INT_BITS_STRLEN_BOUND (TYPE_WIDTH (t) - _GL_SIGNED_TYPE_OR_EXPR (t)) \
- + _GL_SIGNED_TYPE_OR_EXPR (t))
-
- /* Bound on buffer size needed to represent an integer type or expression T,
-@@ -222,20 +236,23 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
- ? (a) < (min) >> (b) \
- : (max) >> (b) < (a))
-
--/* True if __builtin_add_overflow (A, B, P) works when P is null. */
--#define _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL (7 <= __GNUC__)
-+/* True if __builtin_add_overflow (A, B, P) works when P is non-null. */
-+#define _GL_HAS_BUILTIN_OVERFLOW (5 <= __GNUC__)
-+
-+/* True if __builtin_add_overflow_p (A, B, C) works. */
-+#define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__)
-
- /* The _GL*_OVERFLOW macros have the same restrictions as the
- *_RANGE_OVERFLOW macros, except that they do not assume that operands
- (e.g., A and B) have the same type as MIN and MAX. Instead, they assume
- that the result (e.g., A + B) has that type. */
--#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL
--# define _GL_ADD_OVERFLOW(a, b, min, max)
-- __builtin_add_overflow (a, b, (__typeof__ ((a) + (b)) *) 0)
--# define _GL_SUBTRACT_OVERFLOW(a, b, min, max)
-- __builtin_sub_overflow (a, b, (__typeof__ ((a) - (b)) *) 0)
--# define _GL_MULTIPLY_OVERFLOW(a, b, min, max)
-- __builtin_mul_overflow (a, b, (__typeof__ ((a) * (b)) *) 0)
-+#if _GL_HAS_BUILTIN_OVERFLOW_P
-+# define _GL_ADD_OVERFLOW(a, b, min, max) \
-+ __builtin_add_overflow_p (a, b, (__typeof__ ((a) + (b))) 0)
-+# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \
-+ __builtin_sub_overflow_p (a, b, (__typeof__ ((a) - (b))) 0)
-+# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \
-+ __builtin_mul_overflow_p (a, b, (__typeof__ ((a) * (b))) 0)
- #else
- # define _GL_ADD_OVERFLOW(a, b, min, max) \
- ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \
-@@ -315,7 +332,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
- _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW)
- #define INT_SUBTRACT_OVERFLOW(a, b) \
- _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW)
--#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL
-+#if _GL_HAS_BUILTIN_OVERFLOW_P
- # define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a)
- #else
- # define INT_NEGATE_OVERFLOW(a) \
-@@ -349,10 +366,6 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
- #define INT_MULTIPLY_WRAPV(a, b, r) \
- _GL_INT_OP_WRAPV (a, b, r, *, __builtin_mul_overflow, INT_MULTIPLY_OVERFLOW)
-
--#ifndef __has_builtin
--# define __has_builtin(x) 0
--#endif
--
- /* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See:
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193
- https://llvm.org/bugs/show_bug.cgi?id=25390
-@@ -369,7 +382,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
- the operation. BUILTIN is the builtin operation, and OVERFLOW the
- overflow predicate. Return 1 if the result overflows. See above
- for restrictions. */
--#if 5 <= __GNUC__ || __has_builtin (__builtin_add_overflow)
-+#if _GL_HAS_BUILTIN_OVERFLOW
- # define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) builtin (a, b, r)
- #elif 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS
- # define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) \
-@@ -412,7 +425,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
- # else
- # define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \
- _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
-- long int, LONG_MIN, LONG_MAX))
-+ long int, LONG_MIN, LONG_MAX)
- # endif
- #endif
-
-diff --git a/lib/gltests/intprops.h b/lib/gltests/intprops.h
-index e1fce5c..eb06b69 100644
---- a/lib/gltests/intprops.h
-+++ b/lib/gltests/intprops.h
-@@ -1,18 +1,18 @@
- /* intprops.h -- properties of integer types
-
-- Copyright (C) 2001-2016 Free Software Foundation, Inc.
-+ Copyright (C) 2001-2017 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 <http://www.gnu.org/licenses/>. */
-
- /* Written by Paul Eggert. */
-@@ -47,12 +47,16 @@
-
- /* Minimum and maximum values for integer types and expressions. */
-
-+/* The width in bits of the integer type or expression T.
-+ Padding bits are not supported; this is checked at compile-time below. */
-+#define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT)
-+
- /* The maximum and minimum values for the integer type T. */
- #define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t))
- #define TYPE_MAXIMUM(t) \
- ((t) (! TYPE_SIGNED (t) \
- ? (t) -1 \
-- : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
-+ : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1)))
-
- /* The maximum and minimum values for the type of the expression E,
- after integer promotion. E should not have side effects. */
-@@ -65,7 +69,13 @@
- ? _GL_SIGNED_INT_MAXIMUM (e) \
- : _GL_INT_NEGATE_CONVERT (e, 1))
- #define _GL_SIGNED_INT_MAXIMUM(e) \
-- (((_GL_INT_CONVERT (e, 1) << (sizeof ((e) + 0) * CHAR_BIT - 2)) - 1) * 2 + 1)
-+ (((_GL_INT_CONVERT (e, 1) << (TYPE_WIDTH ((e) + 0) - 2)) - 1) * 2 + 1)
-+
-+/* Work around OpenVMS incompatibility with C99. */
-+#if !defined LLONG_MAX && defined __INT64_MAX
-+# define LLONG_MAX __INT64_MAX
-+# define LLONG_MIN __INT64_MIN
-+#endif
-
- /* This include file assumes that signed types are two's complement without
- padding bits; the above macros have undefined behavior otherwise.
-@@ -84,10 +94,15 @@ verify (TYPE_MAXIMUM (long int) == LONG_MAX);
- verify (TYPE_MINIMUM (long long int) == LLONG_MIN);
- verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
- #endif
-+/* Similarly, sanity-check one ISO/IEC TS 18661-1:2014 macro if defined. */
-+#ifdef UINT_WIDTH
-+verify (TYPE_WIDTH (unsigned int) == UINT_WIDTH);
-+#endif
-
- /* Does the __typeof__ keyword work? This could be done by
- 'configure', but for now it's easier to do it by hand. */
--#if (2 <= __GNUC__ || defined __IBM__TYPEOF__ \
-+#if (2 <= __GNUC__ \
-+ || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \
- || (0x5110 <= __SUNPRO_C && !__STDC__))
- # define _GL_HAVE___TYPEOF__ 1
- #else
-@@ -116,8 +131,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
- signed, this macro may overestimate the true bound by one byte when
- applied to unsigned types of size 2, 4, 16, ... bytes. */
- #define INT_STRLEN_BOUND(t) \
-- (INT_BITS_STRLEN_BOUND (sizeof (t) * CHAR_BIT \
-- - _GL_SIGNED_TYPE_OR_EXPR (t)) \
-+ (INT_BITS_STRLEN_BOUND (TYPE_WIDTH (t) - _GL_SIGNED_TYPE_OR_EXPR (t)) \
- + _GL_SIGNED_TYPE_OR_EXPR (t))
-
- /* Bound on buffer size needed to represent an integer type or expression T,
-@@ -222,20 +236,23 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
- ? (a) < (min) >> (b) \
- : (max) >> (b) < (a))
-
--/* True if __builtin_add_overflow (A, B, P) works when P is null. */
--#define _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL (7 <= __GNUC__)
-+/* True if __builtin_add_overflow (A, B, P) works when P is non-null. */
-+#define _GL_HAS_BUILTIN_OVERFLOW (5 <= __GNUC__)
-+
-+/* True if __builtin_add_overflow_p (A, B, C) works. */
-+#define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__)
-
- /* The _GL*_OVERFLOW macros have the same restrictions as the
- *_RANGE_OVERFLOW macros, except that they do not assume that operands
- (e.g., A and B) have the same type as MIN and MAX. Instead, they assume
- that the result (e.g., A + B) has that type. */
--#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL
--# define _GL_ADD_OVERFLOW(a, b, min, max)
-- __builtin_add_overflow (a, b, (__typeof__ ((a) + (b)) *) 0)
--# define _GL_SUBTRACT_OVERFLOW(a, b, min, max)
-- __builtin_sub_overflow (a, b, (__typeof__ ((a) - (b)) *) 0)
--# define _GL_MULTIPLY_OVERFLOW(a, b, min, max)
-- __builtin_mul_overflow (a, b, (__typeof__ ((a) * (b)) *) 0)
-+#if _GL_HAS_BUILTIN_OVERFLOW_P
-+# define _GL_ADD_OVERFLOW(a, b, min, max) \
-+ __builtin_add_overflow_p (a, b, (__typeof__ ((a) + (b))) 0)
-+# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \
-+ __builtin_sub_overflow_p (a, b, (__typeof__ ((a) - (b))) 0)
-+# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \
-+ __builtin_mul_overflow_p (a, b, (__typeof__ ((a) * (b))) 0)
- #else
- # define _GL_ADD_OVERFLOW(a, b, min, max) \
- ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \
-@@ -315,7 +332,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
- _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW)
- #define INT_SUBTRACT_OVERFLOW(a, b) \
- _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW)
--#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL
-+#if _GL_HAS_BUILTIN_OVERFLOW_P
- # define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a)
- #else
- # define INT_NEGATE_OVERFLOW(a) \
-@@ -349,10 +366,6 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
- #define INT_MULTIPLY_WRAPV(a, b, r) \
- _GL_INT_OP_WRAPV (a, b, r, *, __builtin_mul_overflow, INT_MULTIPLY_OVERFLOW)
-
--#ifndef __has_builtin
--# define __has_builtin(x) 0
--#endif
--
- /* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See:
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193
- https://llvm.org/bugs/show_bug.cgi?id=25390
-@@ -369,7 +382,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
- the operation. BUILTIN is the builtin operation, and OVERFLOW the
- overflow predicate. Return 1 if the result overflows. See above
- for restrictions. */
--#if 5 <= __GNUC__ || __has_builtin (__builtin_add_overflow)
-+#if _GL_HAS_BUILTIN_OVERFLOW
- # define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) builtin (a, b, r)
- #elif 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS
- # define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) \
-@@ -412,7 +425,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
- # else
- # define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \
- _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
-- long int, LONG_MIN, LONG_MAX))
-+ long int, LONG_MIN, LONG_MAX)
- # endif
- #endif
-
---
-1.9.1
-
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
index db91317ca5b..3c0559e34f4 100644
--- 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
@@ -1,3 +1,8 @@
+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
@@ -9,12 +14,16 @@ This patch fixes following issue with automake 1.12
Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
2012/05/03
-Index: libidn-1.33/configure.ac
-===================================================================
---- libidn-1.33.orig/configure.ac
-+++ libidn-1.33/configure.ac
-@@ -33,6 +33,10 @@ AC_SUBST(LT_CURRENT, 17)
- AC_SUBST(LT_REVISION, 16)
+---
+ 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
diff --git a/meta/recipes-core/coreutils/coreutils/0001-Unset-need_charset_alias-when-building-for-musl.patch b/meta/recipes-extended/libidn/libidn2/Unset-need_charset_alias-when-building-for-musl.patch
index ba1a4bab4c1..ace50bbfde5 100644
--- a/meta/recipes-core/coreutils/coreutils/0001-Unset-need_charset_alias-when-building-for-musl.patch
+++ b/meta/recipes-extended/libidn/libidn2/Unset-need_charset_alias-when-building-for-musl.patch
@@ -1,7 +1,4 @@
-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
+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
@@ -11,15 +8,11 @@ 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
+Index: libidn2-2.0.5/unistring/Makefile.am
+===================================================================
+--- libidn2-2.0.5.orig/unistring/Makefile.am
++++ libidn2-2.0.5/unistring/Makefile.am
+@@ -293,7 +293,7 @@ install-exec-localcharset: all-local
case '$(host_os)' in \
darwin[56]*) \
need_charset_alias=true ;; \
@@ -28,6 +21,3 @@ index e1d74db..c0e92dd 100644
need_charset_alias=false ;; \
*) \
need_charset_alias=true ;; \
---
-2.1.4
-
diff --git a/meta/recipes-extended/libidn/libidn2_2.0.5.bb b/meta/recipes-extended/libidn/libidn2_2.0.5.bb
new file mode 100644
index 00000000000..0daf7a68770
--- /dev/null
+++ b/meta/recipes-extended/libidn/libidn2_2.0.5.bb
@@ -0,0 +1,29 @@
+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=ab90e75ef97cc6318ce4f2fbda62fe4d \
+ file://COPYING.LESSERv3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
+ file://COPYINGv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://src/idn2.c;endline=16;md5=0283aec28e049f5bcaaeee52aa865874 \
+ file://lib/idn2.h.in;endline=27;md5=c2cd28d3f87260f157f022eabb83714f"
+
+SRC_URI = "${GNU_MIRROR}/libidn/${BPN}-${PV}.tar.gz \
+ file://Unset-need_charset_alias-when-building-for-musl.patch \
+ "
+SRC_URI[md5sum] = "eaf9a5b9d03b0cce3760f34b3124eb36"
+SRC_URI[sha256sum] = "53f69170886f1fa6fa5b332439c7a77a7d22626a82ef17e2c1224858bb4ca2b8"
+
+DEPENDS = "virtual/libiconv libunistring"
+
+inherit pkgconfig autotools gettext texinfo gtk-doc lib_package
+
+EXTRA_OECONF += "--disable-rpath \
+ --with-libunistring-prefix=${STAGING_EXECPREFIXDIR} \
+ "
+
+LICENSE_${PN} = "(GPLv2+ | LGPLv3)"
+LICENSE_${PN}-bin = "GPLv3+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/libidn/libidn_1.33.bb b/meta/recipes-extended/libidn/libidn_1.35.bb
index 9e8bdbae188..d5ce5b46bd3 100644
--- a/meta/recipes-extended/libidn/libidn_1.33.bb
+++ b/meta/recipes-extended/libidn/libidn_1.35.bb
@@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=df4be47940a91ee69556f5f71eed4aec \
file://COPYINGv3;md5=d32239bcb673463ab874e80d47fae504 \
file://lib/idna.h;endline=21;md5=37cffad24807f446a24de3e7371f20b9 \
file://src/idn.c;endline=20;md5=09e97034a8877b3451cb65065fc2c06e"
-DEPENDS = "virtual/libiconv"
+DEPENDS = "virtual/libiconv autoconf-archive"
inherit pkgconfig autotools gettext texinfo gtk-doc
@@ -18,13 +18,11 @@ 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-fix-printf-format-security-warnings.patch \
- file://gcc7-compatibility.patch \
file://0001-idn-format-security-warnings.patch \
-"
+ "
-SRC_URI[md5sum] = "a9aa7e003665de9c82bd3f9fc6ccf308"
-SRC_URI[sha256sum] = "44a7aab635bb721ceef6beecc4d49dfd19478325e1b47f3196f7d2acc4930e19"
+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
diff --git a/meta/recipes-extended/libnsl/libnsl2/0001-include-sys-cdefs.h-explicitly.patch b/meta/recipes-extended/libnsl/libnsl2/0001-include-sys-cdefs.h-explicitly.patch
deleted file mode 100644
index bd647ac55ea..00000000000
--- a/meta/recipes-extended/libnsl/libnsl2/0001-include-sys-cdefs.h-explicitly.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 508a0ff690dfebc17c4f55a5f81824ed549bed66 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 18 Apr 2017 09:13:33 -0700
-Subject: [PATCH 1/2] include sys/cdefs.h explicitly
-
-glibc includes this header indirectly but not musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- src/rpcsvc/nis.h | 1 +
- src/rpcsvc/nislib.h | 1 +
- src/rpcsvc/ypclnt.h | 1 +
- src/rpcsvc/ypupd.h | 1 +
- 4 files changed, 4 insertions(+)
-
-diff --git a/src/rpcsvc/nis.h b/src/rpcsvc/nis.h
-index 933c4d9..88cbca0 100644
---- a/src/rpcsvc/nis.h
-+++ b/src/rpcsvc/nis.h
-@@ -32,6 +32,7 @@
- #ifndef _RPCSVC_NIS_H
- #define _RPCSVC_NIS_H 1
-
-+#include <sys/cdefs.h>
- #include <features.h>
- #include <rpc/rpc.h>
- #include <rpcsvc/nis_tags.h>
-diff --git a/src/rpcsvc/nislib.h b/src/rpcsvc/nislib.h
-index a59c19b..a53fab3 100644
---- a/src/rpcsvc/nislib.h
-+++ b/src/rpcsvc/nislib.h
-@@ -19,6 +19,7 @@
- #ifndef __RPCSVC_NISLIB_H__
- #define __RPCSVC_NISLIB_H__
-
-+#include <sys/cdefs.h>
- #include <features.h>
-
- __BEGIN_DECLS
-diff --git a/src/rpcsvc/ypclnt.h b/src/rpcsvc/ypclnt.h
-index fe43fd4..a686b61 100644
---- a/src/rpcsvc/ypclnt.h
-+++ b/src/rpcsvc/ypclnt.h
-@@ -20,6 +20,7 @@
- #ifndef __RPCSVC_YPCLNT_H__
- #define __RPCSVC_YPCLNT_H__
-
-+#include <sys/cdefs.h>
- #include <features.h>
-
- /* Some defines */
-diff --git a/src/rpcsvc/ypupd.h b/src/rpcsvc/ypupd.h
-index d07fd4d..2c57301 100644
---- a/src/rpcsvc/ypupd.h
-+++ b/src/rpcsvc/ypupd.h
-@@ -33,6 +33,7 @@
- #ifndef __RPCSVC_YPUPD_H__
- #define __RPCSVC_YPUPD_H__
-
-+#include <sys/cdefs.h>
- #include <features.h>
-
- #include <rpc/rpc.h>
---
-2.12.2
-
diff --git a/meta/recipes-extended/libnsl/libnsl2/0001-nis_call.c-Include-stdint.h-for-uintptr_t-definition.patch b/meta/recipes-extended/libnsl/libnsl2/0001-nis_call.c-Include-stdint.h-for-uintptr_t-definition.patch
deleted file mode 100644
index e9ae5171079..00000000000
--- a/meta/recipes-extended/libnsl/libnsl2/0001-nis_call.c-Include-stdint.h-for-uintptr_t-definition.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From d71cbeb3b76e54778a4d5eec6d387cce653537ca Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 9 Jun 2017 09:49:35 -0700
-Subject: [PATCH] nis_call.c: Include stdint.h for uintptr_t definition
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- src/nisplus/nis_call.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/nisplus/nis_call.c b/src/nisplus/nis_call.c
-index 1a2b90c..1dc982d 100644
---- a/src/nisplus/nis_call.c
-+++ b/src/nisplus/nis_call.c
-@@ -23,6 +23,7 @@
- #include <errno.h>
- #include <fcntl.h>
- #include <string.h>
-+#include <stdint.h>
- #include <libintl.h>
- #include <rpc/rpc.h>
- #include <rpc/auth.h>
---
-2.13.1
-
diff --git a/meta/recipes-extended/libnsl/libnsl2/0002-Define-glibc-specific-macros.patch b/meta/recipes-extended/libnsl/libnsl2/0002-Define-glibc-specific-macros.patch
deleted file mode 100644
index 75fda4b0f0e..00000000000
--- a/meta/recipes-extended/libnsl/libnsl2/0002-Define-glibc-specific-macros.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 60282514ea01af004d7f9e66dd3929223b7d2e7b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 18 Apr 2017 09:16:12 -0700
-Subject: [PATCH 2/2] Define glibc specific macros
-
-Check and define
-rawmemchr, __asprintf, __mempcpy, __strtok_r
-__always_inline, TEMP_FAILURE_RETRY
-
-if not existing. Helps compiling with musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
-diff --git a/src/rpcsvc/nis.h b/src/rpcsvc/nis.h
-index 88cbca0..23fc20c 100644
---- a/src/rpcsvc/nis.h
-+++ b/src/rpcsvc/nis.h
-@@ -57,6 +57,34 @@ __BEGIN_DECLS
- * <kukuk@suse.de>
- */
-
-+#ifndef rawmemchr
-+#define rawmemchr(s,c) memchr((s),(size_t)-1,(c))
-+#endif
-+
-+#ifndef __asprintf
-+#define __asprintf asprintf
-+#endif
-+
-+#ifndef __mempcpy
-+#define __mempcpy mempcpy
-+#endif
-+
-+#ifndef __strtok_r
-+#define __strtok_r strtok_r
-+#endif
-+
-+#ifndef __always_inline
-+#define __always_inline __attribute__((__always_inline__))
-+#endif
-+
-+#ifndef TEMP_FAILURE_RETRY
-+#define TEMP_FAILURE_RETRY(exp) ({ \
-+typeof (exp) _rc; \
-+ do { \
-+ _rc = (exp); \
-+ } while (_rc == -1 && errno == EINTR); \
-+ _rc; })
-+#endif
-
- #ifndef __nis_object_h
- #define __nis_object_h
---
-2.12.2
-
diff --git a/meta/recipes-extended/libnsl/libnsl2_git.bb b/meta/recipes-extended/libnsl/libnsl2_git.bb
index a539148caf0..c3a24face19 100644
--- a/meta/recipes-extended/libnsl/libnsl2_git.bb
+++ b/meta/recipes-extended/libnsl/libnsl2_git.bb
@@ -9,29 +9,16 @@ LICENSE = "LGPL-2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
SECTION = "libs"
DEPENDS = "libtirpc"
-DEPENDS_append_libc-musl = " bsd-headers"
-PV = "1.0.5+git${SRCPV}"
+PV = "1.2.0+git${SRCPV}"
-SRCREV = "dfa2f313524aff9243c4d8ce1bace73786478356"
+SRCREV = "37c5ffe3038d42e9fa9ed232ad2cbca4d8f14681"
SRC_URI = "git://github.com/thkukuk/libnsl \
- file://0001-include-sys-cdefs.h-explicitly.patch \
- file://0002-Define-glibc-specific-macros.patch \
- file://0001-nis_call.c-Include-stdint.h-for-uintptr_t-definition.patch \
"
S = "${WORKDIR}/git"
inherit autotools pkgconfig gettext
-EXTRA_OECONF += "--libdir=${libdir}/nsl --includedir=${includedir}/nsl"
-
-do_install_append() {
- install -d ${D}${libdir}
- mv ${D}${libdir}/nsl/pkgconfig ${D}${libdir}
-}
-
-FILES_${PN} += "${libdir}/nsl/*.so.*"
-FILES_${PN}-dev += "${includedir}/nsl ${libdir}/nsl/*.so"
-FILES_${PN}-staticdev += "${libdir}/nsl/*.a"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/libnss-nis/libnss-nis.bb b/meta/recipes-extended/libnss-nis/libnss-nis.bb
new file mode 100644
index 00000000000..47447acd6cb
--- /dev/null
+++ b/meta/recipes-extended/libnss-nis/libnss-nis.bb
@@ -0,0 +1,31 @@
+# Copyright (C) 2018 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "NSS module for glibc, to provide NIS support for glibc"
+
+DESCRIPTION = "This package contains the NSS NIS plugin for glibc.\
+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"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+SECTION = "libs"
+DEPENDS += "libtirpc libnsl2"
+
+PV = "3.0+git${SRCPV}"
+
+SRCREV = "d4aea48657a8e90d7922574b8021ee03915a36cb"
+
+SRC_URI = "git://github.com/thkukuk/libnss_nis \
+ "
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+BBCLASSEXTEND += "native nativesdk"
+#
+# We will skip parsing this packagegeoup for non-glibc systems
+#
+COMPATIBLE_HOST_libc-musl = 'null'
diff --git a/meta/recipes-extended/libsolv/libsolv_0.6.33.bb b/meta/recipes-extended/libsolv/libsolv_0.6.35.bb
index 0401ced24a2..12dfc5d3a2b 100644
--- a/meta/recipes-extended/libsolv/libsolv_0.6.33.bb
+++ b/meta/recipes-extended/libsolv/libsolv_0.6.35.bb
@@ -5,22 +5,24 @@ SECTION = "devel"
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE.BSD;md5=62272bd11c97396d4aaf1c41bc11f7d8"
-DEPENDS = "expat zlib rpm"
+DEPENDS = "expat zlib"
-SRC_URI = "git://github.com/openSUSE/libsolv.git \
- "
+SRC_URI = "git://github.com/openSUSE/libsolv.git"
SRC_URI_append_libc-musl = " file://0001-Add-fallback-fopencookie-implementation.patch \
file://0002-Fixes-to-internal-fopencookie-implementation.patch \
"
-SRCREV = "69f1803978ba7a46a57928fa4be6430792419e4e"
+SRCREV = "38c5374d4712667b0b6ada4bf78ddbb343095d0c"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
S = "${WORKDIR}/git"
inherit cmake
-EXTRA_OECMAKE = "-DLIB=${baselib} -DMULTI_SEMANTICS=ON -DENABLE_RPMMD=ON -DENABLE_RPMDB=ON -DENABLE_COMPLEX_DEPS=ON"
+PACKAGECONFIG ??= "rpm"
+PACKAGECONFIG[rpm] = "-DENABLE_RPMMD=ON -DENABLE_RPMDB=ON,,rpm"
+
+EXTRA_OECMAKE = "-DLIB=${baselib} -DMULTI_SEMANTICS=ON -DENABLE_COMPLEX_DEPS=ON"
PACKAGES =+ "${PN}-tools ${PN}ext"
diff --git a/meta/recipes-extended/libtirpc/libtirpc/0001-include-stdint.h-for-uintptr_t.patch b/meta/recipes-extended/libtirpc/libtirpc/0001-include-stdint.h-for-uintptr_t.patch
deleted file mode 100644
index 7e3e2f86ad4..00000000000
--- a/meta/recipes-extended/libtirpc/libtirpc/0001-include-stdint.h-for-uintptr_t.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From acb9a37977cf0a9630eac74af9adebf35e38e719 Mon Sep 17 00:00:00 2001
-From: Thorsten Kukuk <kukuk@thkukuk.de>
-Date: Tue, 14 Nov 2017 10:39:08 -0500
-Subject: [PATCH] Include stdint.h from xdr_sizeof.c to avoid missing
- declaration errors.
-
-Signed-off-by: Thorsten Kukuk <kukuk@suse.de>
-Signed-off-by: Steve Dickson <steved@redhat.com>
----
- src/xdr_sizeof.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/xdr_sizeof.c b/src/xdr_sizeof.c
-index d23fbd1..79d6707 100644
---- a/src/xdr_sizeof.c
-+++ b/src/xdr_sizeof.c
-@@ -39,6 +39,7 @@
- #include <rpc/xdr.h>
- #include <sys/types.h>
- #include <stdlib.h>
-+#include <stdint.h>
- #include "un-namespace.h"
-
- /* ARGSUSED */
---
-1.8.3.1
diff --git a/meta/recipes-extended/libtirpc/libtirpc/0001-replace-__bzero-with-memset-API.patch b/meta/recipes-extended/libtirpc/libtirpc/0001-replace-__bzero-with-memset-API.patch
deleted file mode 100644
index 7ae19cb3196..00000000000
--- a/meta/recipes-extended/libtirpc/libtirpc/0001-replace-__bzero-with-memset-API.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 5356b63005e9d8169e0399cb76f26fbd29a78dee Mon Sep 17 00:00:00 2001
-From: Joshua Kinard <kumba@gentoo.org>
-Date: Wed, 23 Aug 2017 14:31:36 -0400
-Subject: [PATCH] Replace bzero() calls with equivalent memset() calls
-
-As annotated in the bzero(3) man page, bzero() was marked as LEGACY in
-POSIX.1-2001 and removed in POSIX.1-2008, and should be replaced with
-memset() calls to write zeros to a memory region. The attached patch
-replaces two bzero() calls and one __bzero() call in libtirpc with
-equivalent memset() calls. The latter replacement fixes a compile error
-under uclibc-ng, which lacks a definition for __bzero()
-
-Signed-off-by: Joshua Kinard <kumba@gentoo.org>
-Signed-off-by: Steve Dickson <steved@redhat.com>
----
- src/auth_time.c | 2 +-
- src/des_impl.c | 2 +-
- src/svc_auth_des.c | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/auth_time.c b/src/auth_time.c
-index 7f83ab4..69400bc 100644
---- a/src/auth_time.c
-+++ b/src/auth_time.c
-@@ -317,7 +317,7 @@ __rpc_get_time_offset(td, srv, thost, uaddr, netid)
- sprintf(ipuaddr, "%d.%d.%d.%d.0.111", a1, a2, a3, a4);
- useua = &ipuaddr[0];
-
-- bzero((char *)&sin, sizeof(sin));
-+ memset(&sin, 0, sizeof(sin));
- if (uaddr_to_sockaddr(useua, &sin)) {
- msg("unable to translate uaddr to sockaddr.");
- if (needfree)
-diff --git a/src/des_impl.c b/src/des_impl.c
-index 9dbccaf..15bec2a 100644
---- a/src/des_impl.c
-+++ b/src/des_impl.c
-@@ -588,7 +588,7 @@ _des_crypt (char *buf, unsigned len, struct desparams *desp)
- }
- tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0;
- tbuf[0] = tbuf[1] = 0;
-- __bzero (schedule, sizeof (schedule));
-+ memset (schedule, 0, sizeof (schedule));
-
- return (1);
- }
-diff --git a/src/svc_auth_des.c b/src/svc_auth_des.c
-index 2e90146..19a7c60 100644
---- a/src/svc_auth_des.c
-+++ b/src/svc_auth_des.c
-@@ -356,7 +356,7 @@ cache_init()
-
- authdes_cache = (struct cache_entry *)
- mem_alloc(sizeof(struct cache_entry) * AUTHDES_CACHESZ);
-- bzero((char *)authdes_cache,
-+ memset(authdes_cache, 0,
- sizeof(struct cache_entry) * AUTHDES_CACHESZ);
-
- authdes_lru = (short *)mem_alloc(sizeof(short) * AUTHDES_CACHESZ);
---
-1.8.3.1
diff --git a/meta/recipes-extended/libtirpc/libtirpc/Use-netbsd-queue.h.patch b/meta/recipes-extended/libtirpc/libtirpc/Use-netbsd-queue.h.patch
deleted file mode 100644
index f93223feb46..00000000000
--- a/meta/recipes-extended/libtirpc/libtirpc/Use-netbsd-queue.h.patch
+++ /dev/null
@@ -1,878 +0,0 @@
-musl does not provide sys/queue.h implementation. Borrow queue.h from
-the NetBSD project
-http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/sys/queue.h?rev=1.68
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
-Signed-off-by: Maxin B. John <maxin.john@intel.com>
----
-diff -Naur libtirpc-1.0.1-orig/src/clnt_bcast.c libtirpc-1.0.1/src/clnt_bcast.c
---- libtirpc-1.0.1-orig/src/clnt_bcast.c 2015-10-30 17:15:14.000000000 +0200
-+++ libtirpc-1.0.1/src/clnt_bcast.c 2015-12-21 17:03:52.066008311 +0200
-@@ -40,7 +40,6 @@
- */
- #include <sys/socket.h>
- #include <sys/types.h>
--#include <sys/queue.h>
-
- #include <net/if.h>
- #include <netinet/in.h>
-@@ -62,6 +61,7 @@
- #include <err.h>
- #include <string.h>
-
-+#include "queue.h"
- #include "rpc_com.h"
- #include "debug.h"
-
-diff -Naur libtirpc-1.0.1-orig/tirpc/queue.h libtirpc-1.0.1/tirpc/queue.h
---- libtirpc-1.0.1-orig/tirpc/queue.h 1970-01-01 02:00:00.000000000 +0200
-+++ libtirpc-1.0.1/tirpc/queue.h 2015-12-21 17:02:44.427853905 +0200
-@@ -0,0 +1,846 @@
-+/* $NetBSD: queue.h,v 1.68 2014/11/19 08:10:01 uebayasi Exp $ */
-+
-+/*
-+ * Copyright (c) 1991, 1993
-+ * 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.
-+ *
-+ * @(#)queue.h 8.5 (Berkeley) 8/20/94
-+ */
-+
-+#ifndef _SYS_QUEUE_H_
-+#define _SYS_QUEUE_H_
-+
-+/*
-+ * This file defines five types of data structures: singly-linked lists,
-+ * lists, simple queues, tail queues, and circular queues.
-+ *
-+ * A singly-linked list is headed by a single forward pointer. The
-+ * elements are singly linked for minimum space and pointer manipulation
-+ * overhead at the expense of O(n) removal for arbitrary elements. New
-+ * elements can be added to the list after an existing element or at the
-+ * head of the list. Elements being removed from the head of the list
-+ * should use the explicit macro for this purpose for optimum
-+ * efficiency. A singly-linked list may only be traversed in the forward
-+ * direction. Singly-linked lists are ideal for applications with large
-+ * datasets and few or no removals or for implementing a LIFO queue.
-+ *
-+ * A list is headed by a single forward pointer (or an array of forward
-+ * pointers for a hash table header). The elements are doubly linked
-+ * so that an arbitrary element can be removed without a need to
-+ * traverse the list. New elements can be added to the list before
-+ * or after an existing element or at the head of the list. A list
-+ * may only be traversed in the forward direction.
-+ *
-+ * A simple queue is headed by a pair of pointers, one the head of the
-+ * list and the other to the tail of the list. The elements are singly
-+ * linked to save space, so elements can only be removed from the
-+ * head of the list. New elements can be added to the list after
-+ * an existing element, at the head of the list, or at the end of the
-+ * list. A simple queue may only be traversed in the forward direction.
-+ *
-+ * A tail queue is headed by a pair of pointers, one to the head of the
-+ * list and the other to the tail of the list. The elements are doubly
-+ * linked so that an arbitrary element can be removed without a need to
-+ * traverse the list. New elements can be added to the list before or
-+ * after an existing element, at the head of the list, or at the end of
-+ * the list. A tail queue may be traversed in either direction.
-+ *
-+ * A circle queue is headed by a pair of pointers, one to the head of the
-+ * list and the other to the tail of the list. The elements are doubly
-+ * linked so that an arbitrary element can be removed without a need to
-+ * traverse the list. New elements can be added to the list before or after
-+ * an existing element, at the head of the list, or at the end of the list.
-+ * A circle queue may be traversed in either direction, but has a more
-+ * complex end of list detection.
-+ *
-+ * For details on the use of these macros, see the queue(3) manual page.
-+ */
-+
-+/*
-+ * Include the definition of NULL only on NetBSD because sys/null.h
-+ * is not available elsewhere. This conditional makes the header
-+ * portable and it can simply be dropped verbatim into any system.
-+ * The caveat is that on other systems some other header
-+ * must provide NULL before the macros can be used.
-+ */
-+#ifdef __NetBSD__
-+#include <sys/null.h>
-+#endif
-+
-+#if defined(QUEUEDEBUG)
-+# if defined(_KERNEL)
-+# define QUEUEDEBUG_ABORT(...) panic(__VA_ARGS__)
-+# else
-+# include <err.h>
-+# define QUEUEDEBUG_ABORT(...) err(1, __VA_ARGS__)
-+# endif
-+#endif
-+
-+/*
-+ * Singly-linked List definitions.
-+ */
-+#define SLIST_HEAD(name, type) \
-+struct name { \
-+ struct type *slh_first; /* first element */ \
-+}
-+
-+#define SLIST_HEAD_INITIALIZER(head) \
-+ { NULL }
-+
-+#define SLIST_ENTRY(type) \
-+struct { \
-+ struct type *sle_next; /* next element */ \
-+}
-+
-+/*
-+ * Singly-linked List access methods.
-+ */
-+#define SLIST_FIRST(head) ((head)->slh_first)
-+#define SLIST_END(head) NULL
-+#define SLIST_EMPTY(head) ((head)->slh_first == NULL)
-+#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
-+
-+#define SLIST_FOREACH(var, head, field) \
-+ for((var) = (head)->slh_first; \
-+ (var) != SLIST_END(head); \
-+ (var) = (var)->field.sle_next)
-+
-+#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
-+ for ((var) = SLIST_FIRST((head)); \
-+ (var) != SLIST_END(head) && \
-+ ((tvar) = SLIST_NEXT((var), field), 1); \
-+ (var) = (tvar))
-+
-+/*
-+ * Singly-linked List functions.
-+ */
-+#define SLIST_INIT(head) do { \
-+ (head)->slh_first = SLIST_END(head); \
-+} while (/*CONSTCOND*/0)
-+
-+#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \
-+ (elm)->field.sle_next = (slistelm)->field.sle_next; \
-+ (slistelm)->field.sle_next = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define SLIST_INSERT_HEAD(head, elm, field) do { \
-+ (elm)->field.sle_next = (head)->slh_first; \
-+ (head)->slh_first = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define SLIST_REMOVE_AFTER(slistelm, field) do { \
-+ (slistelm)->field.sle_next = \
-+ SLIST_NEXT(SLIST_NEXT((slistelm), field), field); \
-+} while (/*CONSTCOND*/0)
-+
-+#define SLIST_REMOVE_HEAD(head, field) do { \
-+ (head)->slh_first = (head)->slh_first->field.sle_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define SLIST_REMOVE(head, elm, type, field) do { \
-+ if ((head)->slh_first == (elm)) { \
-+ SLIST_REMOVE_HEAD((head), field); \
-+ } \
-+ else { \
-+ struct type *curelm = (head)->slh_first; \
-+ while(curelm->field.sle_next != (elm)) \
-+ curelm = curelm->field.sle_next; \
-+ curelm->field.sle_next = \
-+ curelm->field.sle_next->field.sle_next; \
-+ } \
-+} while (/*CONSTCOND*/0)
-+
-+
-+/*
-+ * List definitions.
-+ */
-+#define LIST_HEAD(name, type) \
-+struct name { \
-+ struct type *lh_first; /* first element */ \
-+}
-+
-+#define LIST_HEAD_INITIALIZER(head) \
-+ { NULL }
-+
-+#define LIST_ENTRY(type) \
-+struct { \
-+ struct type *le_next; /* next element */ \
-+ struct type **le_prev; /* address of previous next element */ \
-+}
-+
-+/*
-+ * List access methods.
-+ */
-+#define LIST_FIRST(head) ((head)->lh_first)
-+#define LIST_END(head) NULL
-+#define LIST_EMPTY(head) ((head)->lh_first == LIST_END(head))
-+#define LIST_NEXT(elm, field) ((elm)->field.le_next)
-+
-+#define LIST_FOREACH(var, head, field) \
-+ for ((var) = ((head)->lh_first); \
-+ (var) != LIST_END(head); \
-+ (var) = ((var)->field.le_next))
-+
-+#define LIST_FOREACH_SAFE(var, head, field, tvar) \
-+ for ((var) = LIST_FIRST((head)); \
-+ (var) != LIST_END(head) && \
-+ ((tvar) = LIST_NEXT((var), field), 1); \
-+ (var) = (tvar))
-+
-+#define LIST_MOVE(head1, head2) do { \
-+ LIST_INIT((head2)); \
-+ if (!LIST_EMPTY((head1))) { \
-+ (head2)->lh_first = (head1)->lh_first; \
-+ LIST_INIT((head1)); \
-+ } \
-+} while (/*CONSTCOND*/0)
-+
-+/*
-+ * List functions.
-+ */
-+#if defined(QUEUEDEBUG)
-+#define QUEUEDEBUG_LIST_INSERT_HEAD(head, elm, field) \
-+ if ((head)->lh_first && \
-+ (head)->lh_first->field.le_prev != &(head)->lh_first) \
-+ QUEUEDEBUG_ABORT("LIST_INSERT_HEAD %p %s:%d", (head), \
-+ __FILE__, __LINE__);
-+#define QUEUEDEBUG_LIST_OP(elm, field) \
-+ if ((elm)->field.le_next && \
-+ (elm)->field.le_next->field.le_prev != \
-+ &(elm)->field.le_next) \
-+ QUEUEDEBUG_ABORT("LIST_* forw %p %s:%d", (elm), \
-+ __FILE__, __LINE__); \
-+ if (*(elm)->field.le_prev != (elm)) \
-+ QUEUEDEBUG_ABORT("LIST_* back %p %s:%d", (elm), \
-+ __FILE__, __LINE__);
-+#define QUEUEDEBUG_LIST_POSTREMOVE(elm, field) \
-+ (elm)->field.le_next = (void *)1L; \
-+ (elm)->field.le_prev = (void *)1L;
-+#else
-+#define QUEUEDEBUG_LIST_INSERT_HEAD(head, elm, field)
-+#define QUEUEDEBUG_LIST_OP(elm, field)
-+#define QUEUEDEBUG_LIST_POSTREMOVE(elm, field)
-+#endif
-+
-+#define LIST_INIT(head) do { \
-+ (head)->lh_first = LIST_END(head); \
-+} while (/*CONSTCOND*/0)
-+
-+#define LIST_INSERT_AFTER(listelm, elm, field) do { \
-+ QUEUEDEBUG_LIST_OP((listelm), field) \
-+ if (((elm)->field.le_next = (listelm)->field.le_next) != \
-+ LIST_END(head)) \
-+ (listelm)->field.le_next->field.le_prev = \
-+ &(elm)->field.le_next; \
-+ (listelm)->field.le_next = (elm); \
-+ (elm)->field.le_prev = &(listelm)->field.le_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define LIST_INSERT_BEFORE(listelm, elm, field) do { \
-+ QUEUEDEBUG_LIST_OP((listelm), field) \
-+ (elm)->field.le_prev = (listelm)->field.le_prev; \
-+ (elm)->field.le_next = (listelm); \
-+ *(listelm)->field.le_prev = (elm); \
-+ (listelm)->field.le_prev = &(elm)->field.le_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define LIST_INSERT_HEAD(head, elm, field) do { \
-+ QUEUEDEBUG_LIST_INSERT_HEAD((head), (elm), field) \
-+ if (((elm)->field.le_next = (head)->lh_first) != LIST_END(head))\
-+ (head)->lh_first->field.le_prev = &(elm)->field.le_next;\
-+ (head)->lh_first = (elm); \
-+ (elm)->field.le_prev = &(head)->lh_first; \
-+} while (/*CONSTCOND*/0)
-+
-+#define LIST_REMOVE(elm, field) do { \
-+ QUEUEDEBUG_LIST_OP((elm), field) \
-+ if ((elm)->field.le_next != NULL) \
-+ (elm)->field.le_next->field.le_prev = \
-+ (elm)->field.le_prev; \
-+ *(elm)->field.le_prev = (elm)->field.le_next; \
-+ QUEUEDEBUG_LIST_POSTREMOVE((elm), field) \
-+} while (/*CONSTCOND*/0)
-+
-+#define LIST_REPLACE(elm, elm2, field) do { \
-+ if (((elm2)->field.le_next = (elm)->field.le_next) != NULL) \
-+ (elm2)->field.le_next->field.le_prev = \
-+ &(elm2)->field.le_next; \
-+ (elm2)->field.le_prev = (elm)->field.le_prev; \
-+ *(elm2)->field.le_prev = (elm2); \
-+ QUEUEDEBUG_LIST_POSTREMOVE((elm), field) \
-+} while (/*CONSTCOND*/0)
-+
-+/*
-+ * Simple queue definitions.
-+ */
-+#define SIMPLEQ_HEAD(name, type) \
-+struct name { \
-+ struct type *sqh_first; /* first element */ \
-+ struct type **sqh_last; /* addr of last next element */ \
-+}
-+
-+#define SIMPLEQ_HEAD_INITIALIZER(head) \
-+ { NULL, &(head).sqh_first }
-+
-+#define SIMPLEQ_ENTRY(type) \
-+struct { \
-+ struct type *sqe_next; /* next element */ \
-+}
-+
-+/*
-+ * Simple queue access methods.
-+ */
-+#define SIMPLEQ_FIRST(head) ((head)->sqh_first)
-+#define SIMPLEQ_END(head) NULL
-+#define SIMPLEQ_EMPTY(head) ((head)->sqh_first == SIMPLEQ_END(head))
-+#define SIMPLEQ_NEXT(elm, field) ((elm)->field.sqe_next)
-+
-+#define SIMPLEQ_FOREACH(var, head, field) \
-+ for ((var) = ((head)->sqh_first); \
-+ (var) != SIMPLEQ_END(head); \
-+ (var) = ((var)->field.sqe_next))
-+
-+#define SIMPLEQ_FOREACH_SAFE(var, head, field, next) \
-+ for ((var) = ((head)->sqh_first); \
-+ (var) != SIMPLEQ_END(head) && \
-+ ((next = ((var)->field.sqe_next)), 1); \
-+ (var) = (next))
-+
-+/*
-+ * Simple queue functions.
-+ */
-+#define SIMPLEQ_INIT(head) do { \
-+ (head)->sqh_first = NULL; \
-+ (head)->sqh_last = &(head)->sqh_first; \
-+} while (/*CONSTCOND*/0)
-+
-+#define SIMPLEQ_INSERT_HEAD(head, elm, field) do { \
-+ if (((elm)->field.sqe_next = (head)->sqh_first) == NULL) \
-+ (head)->sqh_last = &(elm)->field.sqe_next; \
-+ (head)->sqh_first = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define SIMPLEQ_INSERT_TAIL(head, elm, field) do { \
-+ (elm)->field.sqe_next = NULL; \
-+ *(head)->sqh_last = (elm); \
-+ (head)->sqh_last = &(elm)->field.sqe_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
-+ if (((elm)->field.sqe_next = (listelm)->field.sqe_next) == NULL)\
-+ (head)->sqh_last = &(elm)->field.sqe_next; \
-+ (listelm)->field.sqe_next = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define SIMPLEQ_REMOVE_HEAD(head, field) do { \
-+ if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL) \
-+ (head)->sqh_last = &(head)->sqh_first; \
-+} while (/*CONSTCOND*/0)
-+
-+#define SIMPLEQ_REMOVE_AFTER(head, elm, field) do { \
-+ if (((elm)->field.sqe_next = (elm)->field.sqe_next->field.sqe_next) \
-+ == NULL) \
-+ (head)->sqh_last = &(elm)->field.sqe_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define SIMPLEQ_REMOVE(head, elm, type, field) do { \
-+ if ((head)->sqh_first == (elm)) { \
-+ SIMPLEQ_REMOVE_HEAD((head), field); \
-+ } else { \
-+ struct type *curelm = (head)->sqh_first; \
-+ while (curelm->field.sqe_next != (elm)) \
-+ curelm = curelm->field.sqe_next; \
-+ if ((curelm->field.sqe_next = \
-+ curelm->field.sqe_next->field.sqe_next) == NULL) \
-+ (head)->sqh_last = &(curelm)->field.sqe_next; \
-+ } \
-+} while (/*CONSTCOND*/0)
-+
-+#define SIMPLEQ_CONCAT(head1, head2) do { \
-+ if (!SIMPLEQ_EMPTY((head2))) { \
-+ *(head1)->sqh_last = (head2)->sqh_first; \
-+ (head1)->sqh_last = (head2)->sqh_last; \
-+ SIMPLEQ_INIT((head2)); \
-+ } \
-+} while (/*CONSTCOND*/0)
-+
-+#define SIMPLEQ_LAST(head, type, field) \
-+ (SIMPLEQ_EMPTY((head)) ? \
-+ NULL : \
-+ ((struct type *)(void *) \
-+ ((char *)((head)->sqh_last) - offsetof(struct type, field))))
-+
-+/*
-+ * Tail queue definitions.
-+ */
-+#define _TAILQ_HEAD(name, type, qual) \
-+struct name { \
-+ qual type *tqh_first; /* first element */ \
-+ qual type *qual *tqh_last; /* addr of last next element */ \
-+}
-+#define TAILQ_HEAD(name, type) _TAILQ_HEAD(name, struct type,)
-+
-+#define TAILQ_HEAD_INITIALIZER(head) \
-+ { TAILQ_END(head), &(head).tqh_first }
-+
-+#define _TAILQ_ENTRY(type, qual) \
-+struct { \
-+ qual type *tqe_next; /* next element */ \
-+ qual type *qual *tqe_prev; /* address of previous next element */\
-+}
-+#define TAILQ_ENTRY(type) _TAILQ_ENTRY(struct type,)
-+
-+/*
-+ * Tail queue access methods.
-+ */
-+#define TAILQ_FIRST(head) ((head)->tqh_first)
-+#define TAILQ_END(head) (NULL)
-+#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
-+#define TAILQ_LAST(head, headname) \
-+ (*(((struct headname *)((head)->tqh_last))->tqh_last))
-+#define TAILQ_PREV(elm, headname, field) \
-+ (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
-+#define TAILQ_EMPTY(head) (TAILQ_FIRST(head) == TAILQ_END(head))
-+
-+
-+#define TAILQ_FOREACH(var, head, field) \
-+ for ((var) = ((head)->tqh_first); \
-+ (var) != TAILQ_END(head); \
-+ (var) = ((var)->field.tqe_next))
-+
-+#define TAILQ_FOREACH_SAFE(var, head, field, next) \
-+ for ((var) = ((head)->tqh_first); \
-+ (var) != TAILQ_END(head) && \
-+ ((next) = TAILQ_NEXT(var, field), 1); (var) = (next))
-+
-+#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
-+ for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last));\
-+ (var) != TAILQ_END(head); \
-+ (var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last)))
-+
-+#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, prev) \
-+ for ((var) = TAILQ_LAST((head), headname); \
-+ (var) != TAILQ_END(head) && \
-+ ((prev) = TAILQ_PREV((var), headname, field), 1); (var) = (prev))
-+
-+/*
-+ * Tail queue functions.
-+ */
-+#if defined(QUEUEDEBUG)
-+#define QUEUEDEBUG_TAILQ_INSERT_HEAD(head, elm, field) \
-+ if ((head)->tqh_first && \
-+ (head)->tqh_first->field.tqe_prev != &(head)->tqh_first) \
-+ QUEUEDEBUG_ABORT("TAILQ_INSERT_HEAD %p %s:%d", (head), \
-+ __FILE__, __LINE__);
-+#define QUEUEDEBUG_TAILQ_INSERT_TAIL(head, elm, field) \
-+ if (*(head)->tqh_last != NULL) \
-+ QUEUEDEBUG_ABORT("TAILQ_INSERT_TAIL %p %s:%d", (head), \
-+ __FILE__, __LINE__);
-+#define QUEUEDEBUG_TAILQ_OP(elm, field) \
-+ if ((elm)->field.tqe_next && \
-+ (elm)->field.tqe_next->field.tqe_prev != \
-+ &(elm)->field.tqe_next) \
-+ QUEUEDEBUG_ABORT("TAILQ_* forw %p %s:%d", (elm), \
-+ __FILE__, __LINE__); \
-+ if (*(elm)->field.tqe_prev != (elm)) \
-+ QUEUEDEBUG_ABORT("TAILQ_* back %p %s:%d", (elm), \
-+ __FILE__, __LINE__);
-+#define QUEUEDEBUG_TAILQ_PREREMOVE(head, elm, field) \
-+ if ((elm)->field.tqe_next == NULL && \
-+ (head)->tqh_last != &(elm)->field.tqe_next) \
-+ QUEUEDEBUG_ABORT("TAILQ_PREREMOVE head %p elm %p %s:%d",\
-+ (head), (elm), __FILE__, __LINE__);
-+#define QUEUEDEBUG_TAILQ_POSTREMOVE(elm, field) \
-+ (elm)->field.tqe_next = (void *)1L; \
-+ (elm)->field.tqe_prev = (void *)1L;
-+#else
-+#define QUEUEDEBUG_TAILQ_INSERT_HEAD(head, elm, field)
-+#define QUEUEDEBUG_TAILQ_INSERT_TAIL(head, elm, field)
-+#define QUEUEDEBUG_TAILQ_OP(elm, field)
-+#define QUEUEDEBUG_TAILQ_PREREMOVE(head, elm, field)
-+#define QUEUEDEBUG_TAILQ_POSTREMOVE(elm, field)
-+#endif
-+
-+#define TAILQ_INIT(head) do { \
-+ (head)->tqh_first = TAILQ_END(head); \
-+ (head)->tqh_last = &(head)->tqh_first; \
-+} while (/*CONSTCOND*/0)
-+
-+#define TAILQ_INSERT_HEAD(head, elm, field) do { \
-+ QUEUEDEBUG_TAILQ_INSERT_HEAD((head), (elm), field) \
-+ if (((elm)->field.tqe_next = (head)->tqh_first) != TAILQ_END(head))\
-+ (head)->tqh_first->field.tqe_prev = \
-+ &(elm)->field.tqe_next; \
-+ else \
-+ (head)->tqh_last = &(elm)->field.tqe_next; \
-+ (head)->tqh_first = (elm); \
-+ (elm)->field.tqe_prev = &(head)->tqh_first; \
-+} while (/*CONSTCOND*/0)
-+
-+#define TAILQ_INSERT_TAIL(head, elm, field) do { \
-+ QUEUEDEBUG_TAILQ_INSERT_TAIL((head), (elm), field) \
-+ (elm)->field.tqe_next = TAILQ_END(head); \
-+ (elm)->field.tqe_prev = (head)->tqh_last; \
-+ *(head)->tqh_last = (elm); \
-+ (head)->tqh_last = &(elm)->field.tqe_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
-+ QUEUEDEBUG_TAILQ_OP((listelm), field) \
-+ if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != \
-+ TAILQ_END(head)) \
-+ (elm)->field.tqe_next->field.tqe_prev = \
-+ &(elm)->field.tqe_next; \
-+ else \
-+ (head)->tqh_last = &(elm)->field.tqe_next; \
-+ (listelm)->field.tqe_next = (elm); \
-+ (elm)->field.tqe_prev = &(listelm)->field.tqe_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \
-+ QUEUEDEBUG_TAILQ_OP((listelm), field) \
-+ (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
-+ (elm)->field.tqe_next = (listelm); \
-+ *(listelm)->field.tqe_prev = (elm); \
-+ (listelm)->field.tqe_prev = &(elm)->field.tqe_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define TAILQ_REMOVE(head, elm, field) do { \
-+ QUEUEDEBUG_TAILQ_PREREMOVE((head), (elm), field) \
-+ QUEUEDEBUG_TAILQ_OP((elm), field) \
-+ if (((elm)->field.tqe_next) != TAILQ_END(head)) \
-+ (elm)->field.tqe_next->field.tqe_prev = \
-+ (elm)->field.tqe_prev; \
-+ else \
-+ (head)->tqh_last = (elm)->field.tqe_prev; \
-+ *(elm)->field.tqe_prev = (elm)->field.tqe_next; \
-+ QUEUEDEBUG_TAILQ_POSTREMOVE((elm), field); \
-+} while (/*CONSTCOND*/0)
-+
-+#define TAILQ_REPLACE(head, elm, elm2, field) do { \
-+ if (((elm2)->field.tqe_next = (elm)->field.tqe_next) != \
-+ TAILQ_END(head)) \
-+ (elm2)->field.tqe_next->field.tqe_prev = \
-+ &(elm2)->field.tqe_next; \
-+ else \
-+ (head)->tqh_last = &(elm2)->field.tqe_next; \
-+ (elm2)->field.tqe_prev = (elm)->field.tqe_prev; \
-+ *(elm2)->field.tqe_prev = (elm2); \
-+ QUEUEDEBUG_TAILQ_POSTREMOVE((elm), field); \
-+} while (/*CONSTCOND*/0)
-+
-+#define TAILQ_CONCAT(head1, head2, field) do { \
-+ if (!TAILQ_EMPTY(head2)) { \
-+ *(head1)->tqh_last = (head2)->tqh_first; \
-+ (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \
-+ (head1)->tqh_last = (head2)->tqh_last; \
-+ TAILQ_INIT((head2)); \
-+ } \
-+} while (/*CONSTCOND*/0)
-+
-+/*
-+ * Singly-linked Tail queue declarations.
-+ */
-+#define STAILQ_HEAD(name, type) \
-+struct name { \
-+ struct type *stqh_first; /* first element */ \
-+ struct type **stqh_last; /* addr of last next element */ \
-+}
-+
-+#define STAILQ_HEAD_INITIALIZER(head) \
-+ { NULL, &(head).stqh_first }
-+
-+#define STAILQ_ENTRY(type) \
-+struct { \
-+ struct type *stqe_next; /* next element */ \
-+}
-+
-+/*
-+ * Singly-linked Tail queue access methods.
-+ */
-+#define STAILQ_FIRST(head) ((head)->stqh_first)
-+#define STAILQ_END(head) NULL
-+#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
-+#define STAILQ_EMPTY(head) (STAILQ_FIRST(head) == STAILQ_END(head))
-+
-+/*
-+ * Singly-linked Tail queue functions.
-+ */
-+#define STAILQ_INIT(head) do { \
-+ (head)->stqh_first = NULL; \
-+ (head)->stqh_last = &(head)->stqh_first; \
-+} while (/*CONSTCOND*/0)
-+
-+#define STAILQ_INSERT_HEAD(head, elm, field) do { \
-+ if (((elm)->field.stqe_next = (head)->stqh_first) == NULL) \
-+ (head)->stqh_last = &(elm)->field.stqe_next; \
-+ (head)->stqh_first = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define STAILQ_INSERT_TAIL(head, elm, field) do { \
-+ (elm)->field.stqe_next = NULL; \
-+ *(head)->stqh_last = (elm); \
-+ (head)->stqh_last = &(elm)->field.stqe_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define STAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
-+ if (((elm)->field.stqe_next = (listelm)->field.stqe_next) == NULL)\
-+ (head)->stqh_last = &(elm)->field.stqe_next; \
-+ (listelm)->field.stqe_next = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define STAILQ_REMOVE_HEAD(head, field) do { \
-+ if (((head)->stqh_first = (head)->stqh_first->field.stqe_next) == NULL) \
-+ (head)->stqh_last = &(head)->stqh_first; \
-+} while (/*CONSTCOND*/0)
-+
-+#define STAILQ_REMOVE(head, elm, type, field) do { \
-+ if ((head)->stqh_first == (elm)) { \
-+ STAILQ_REMOVE_HEAD((head), field); \
-+ } else { \
-+ struct type *curelm = (head)->stqh_first; \
-+ while (curelm->field.stqe_next != (elm)) \
-+ curelm = curelm->field.stqe_next; \
-+ if ((curelm->field.stqe_next = \
-+ curelm->field.stqe_next->field.stqe_next) == NULL) \
-+ (head)->stqh_last = &(curelm)->field.stqe_next; \
-+ } \
-+} while (/*CONSTCOND*/0)
-+
-+#define STAILQ_FOREACH(var, head, field) \
-+ for ((var) = ((head)->stqh_first); \
-+ (var); \
-+ (var) = ((var)->field.stqe_next))
-+
-+#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
-+ for ((var) = STAILQ_FIRST((head)); \
-+ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
-+ (var) = (tvar))
-+
-+#define STAILQ_CONCAT(head1, head2) do { \
-+ if (!STAILQ_EMPTY((head2))) { \
-+ *(head1)->stqh_last = (head2)->stqh_first; \
-+ (head1)->stqh_last = (head2)->stqh_last; \
-+ STAILQ_INIT((head2)); \
-+ } \
-+} while (/*CONSTCOND*/0)
-+
-+#define STAILQ_LAST(head, type, field) \
-+ (STAILQ_EMPTY((head)) ? \
-+ NULL : \
-+ ((struct type *)(void *) \
-+ ((char *)((head)->stqh_last) - offsetof(struct type, field))))
-+
-+
-+#ifndef _KERNEL
-+/*
-+ * Circular queue definitions. Do not use. We still keep the macros
-+ * for compatibility but because of pointer aliasing issues their use
-+ * is discouraged!
-+ */
-+
-+/*
-+ * __launder_type(): We use this ugly hack to work around the the compiler
-+ * noticing that two types may not alias each other and elide tests in code.
-+ * We hit this in the CIRCLEQ macros when comparing 'struct name *' and
-+ * 'struct type *' (see CIRCLEQ_HEAD()). Modern compilers (such as GCC
-+ * 4.8) declare these comparisons as always false, causing the code to
-+ * not run as designed.
-+ *
-+ * This hack is only to be used for comparisons and thus can be fully const.
-+ * Do not use for assignment.
-+ *
-+ * If we ever choose to change the ABI of the CIRCLEQ macros, we could fix
-+ * this by changing the head/tail sentinal values, but see the note above
-+ * this one.
-+ */
-+static __inline const void * __launder_type(const void *);
-+static __inline const void *
-+__launder_type(const void *__x)
-+{
-+ __asm __volatile("" : "+r" (__x));
-+ return __x;
-+}
-+
-+#if defined(QUEUEDEBUG)
-+#define QUEUEDEBUG_CIRCLEQ_HEAD(head, field) \
-+ if ((head)->cqh_first != CIRCLEQ_ENDC(head) && \
-+ (head)->cqh_first->field.cqe_prev != CIRCLEQ_ENDC(head)) \
-+ QUEUEDEBUG_ABORT("CIRCLEQ head forw %p %s:%d", (head), \
-+ __FILE__, __LINE__); \
-+ if ((head)->cqh_last != CIRCLEQ_ENDC(head) && \
-+ (head)->cqh_last->field.cqe_next != CIRCLEQ_ENDC(head)) \
-+ QUEUEDEBUG_ABORT("CIRCLEQ head back %p %s:%d", (head), \
-+ __FILE__, __LINE__);
-+#define QUEUEDEBUG_CIRCLEQ_ELM(head, elm, field) \
-+ if ((elm)->field.cqe_next == CIRCLEQ_ENDC(head)) { \
-+ if ((head)->cqh_last != (elm)) \
-+ QUEUEDEBUG_ABORT("CIRCLEQ elm last %p %s:%d", \
-+ (elm), __FILE__, __LINE__); \
-+ } else { \
-+ if ((elm)->field.cqe_next->field.cqe_prev != (elm)) \
-+ QUEUEDEBUG_ABORT("CIRCLEQ elm forw %p %s:%d", \
-+ (elm), __FILE__, __LINE__); \
-+ } \
-+ if ((elm)->field.cqe_prev == CIRCLEQ_ENDC(head)) { \
-+ if ((head)->cqh_first != (elm)) \
-+ QUEUEDEBUG_ABORT("CIRCLEQ elm first %p %s:%d", \
-+ (elm), __FILE__, __LINE__); \
-+ } else { \
-+ if ((elm)->field.cqe_prev->field.cqe_next != (elm)) \
-+ QUEUEDEBUG_ABORT("CIRCLEQ elm prev %p %s:%d", \
-+ (elm), __FILE__, __LINE__); \
-+ }
-+#define QUEUEDEBUG_CIRCLEQ_POSTREMOVE(elm, field) \
-+ (elm)->field.cqe_next = (void *)1L; \
-+ (elm)->field.cqe_prev = (void *)1L;
-+#else
-+#define QUEUEDEBUG_CIRCLEQ_HEAD(head, field)
-+#define QUEUEDEBUG_CIRCLEQ_ELM(head, elm, field)
-+#define QUEUEDEBUG_CIRCLEQ_POSTREMOVE(elm, field)
-+#endif
-+
-+#define CIRCLEQ_HEAD(name, type) \
-+struct name { \
-+ struct type *cqh_first; /* first element */ \
-+ struct type *cqh_last; /* last element */ \
-+}
-+
-+#define CIRCLEQ_HEAD_INITIALIZER(head) \
-+ { CIRCLEQ_END(&head), CIRCLEQ_END(&head) }
-+
-+#define CIRCLEQ_ENTRY(type) \
-+struct { \
-+ struct type *cqe_next; /* next element */ \
-+ struct type *cqe_prev; /* previous element */ \
-+}
-+
-+/*
-+ * Circular queue functions.
-+ */
-+#define CIRCLEQ_INIT(head) do { \
-+ (head)->cqh_first = CIRCLEQ_END(head); \
-+ (head)->cqh_last = CIRCLEQ_END(head); \
-+} while (/*CONSTCOND*/0)
-+
-+#define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
-+ QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \
-+ QUEUEDEBUG_CIRCLEQ_ELM((head), (listelm), field) \
-+ (elm)->field.cqe_next = (listelm)->field.cqe_next; \
-+ (elm)->field.cqe_prev = (listelm); \
-+ if ((listelm)->field.cqe_next == CIRCLEQ_ENDC(head)) \
-+ (head)->cqh_last = (elm); \
-+ else \
-+ (listelm)->field.cqe_next->field.cqe_prev = (elm); \
-+ (listelm)->field.cqe_next = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \
-+ QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \
-+ QUEUEDEBUG_CIRCLEQ_ELM((head), (listelm), field) \
-+ (elm)->field.cqe_next = (listelm); \
-+ (elm)->field.cqe_prev = (listelm)->field.cqe_prev; \
-+ if ((listelm)->field.cqe_prev == CIRCLEQ_ENDC(head)) \
-+ (head)->cqh_first = (elm); \
-+ else \
-+ (listelm)->field.cqe_prev->field.cqe_next = (elm); \
-+ (listelm)->field.cqe_prev = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define CIRCLEQ_INSERT_HEAD(head, elm, field) do { \
-+ QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \
-+ (elm)->field.cqe_next = (head)->cqh_first; \
-+ (elm)->field.cqe_prev = CIRCLEQ_END(head); \
-+ if ((head)->cqh_last == CIRCLEQ_ENDC(head)) \
-+ (head)->cqh_last = (elm); \
-+ else \
-+ (head)->cqh_first->field.cqe_prev = (elm); \
-+ (head)->cqh_first = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define CIRCLEQ_INSERT_TAIL(head, elm, field) do { \
-+ QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \
-+ (elm)->field.cqe_next = CIRCLEQ_END(head); \
-+ (elm)->field.cqe_prev = (head)->cqh_last; \
-+ if ((head)->cqh_first == CIRCLEQ_ENDC(head)) \
-+ (head)->cqh_first = (elm); \
-+ else \
-+ (head)->cqh_last->field.cqe_next = (elm); \
-+ (head)->cqh_last = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define CIRCLEQ_REMOVE(head, elm, field) do { \
-+ QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \
-+ QUEUEDEBUG_CIRCLEQ_ELM((head), (elm), field) \
-+ if ((elm)->field.cqe_next == CIRCLEQ_ENDC(head)) \
-+ (head)->cqh_last = (elm)->field.cqe_prev; \
-+ else \
-+ (elm)->field.cqe_next->field.cqe_prev = \
-+ (elm)->field.cqe_prev; \
-+ if ((elm)->field.cqe_prev == CIRCLEQ_ENDC(head)) \
-+ (head)->cqh_first = (elm)->field.cqe_next; \
-+ else \
-+ (elm)->field.cqe_prev->field.cqe_next = \
-+ (elm)->field.cqe_next; \
-+ QUEUEDEBUG_CIRCLEQ_POSTREMOVE((elm), field) \
-+} while (/*CONSTCOND*/0)
-+
-+#define CIRCLEQ_FOREACH(var, head, field) \
-+ for ((var) = ((head)->cqh_first); \
-+ (var) != CIRCLEQ_ENDC(head); \
-+ (var) = ((var)->field.cqe_next))
-+
-+#define CIRCLEQ_FOREACH_REVERSE(var, head, field) \
-+ for ((var) = ((head)->cqh_last); \
-+ (var) != CIRCLEQ_ENDC(head); \
-+ (var) = ((var)->field.cqe_prev))
-+
-+/*
-+ * Circular queue access methods.
-+ */
-+#define CIRCLEQ_FIRST(head) ((head)->cqh_first)
-+#define CIRCLEQ_LAST(head) ((head)->cqh_last)
-+/* For comparisons */
-+#define CIRCLEQ_ENDC(head) (__launder_type(head))
-+/* For assignments */
-+#define CIRCLEQ_END(head) ((void *)(head))
-+#define CIRCLEQ_NEXT(elm, field) ((elm)->field.cqe_next)
-+#define CIRCLEQ_PREV(elm, field) ((elm)->field.cqe_prev)
-+#define CIRCLEQ_EMPTY(head) \
-+ (CIRCLEQ_FIRST(head) == CIRCLEQ_ENDC(head))
-+
-+#define CIRCLEQ_LOOP_NEXT(head, elm, field) \
-+ (((elm)->field.cqe_next == CIRCLEQ_ENDC(head)) \
-+ ? ((head)->cqh_first) \
-+ : (elm->field.cqe_next))
-+#define CIRCLEQ_LOOP_PREV(head, elm, field) \
-+ (((elm)->field.cqe_prev == CIRCLEQ_ENDC(head)) \
-+ ? ((head)->cqh_last) \
-+ : (elm->field.cqe_prev))
-+#endif /* !_KERNEL */
-+
-+#endif /* !_SYS_QUEUE_H_ */
diff --git a/meta/recipes-extended/libtirpc/libtirpc/export_key_secretkey_is_set.patch b/meta/recipes-extended/libtirpc/libtirpc/export_key_secretkey_is_set.patch
deleted file mode 100644
index d7f49686696..00000000000
--- a/meta/recipes-extended/libtirpc/libtirpc/export_key_secretkey_is_set.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From e51d67549b516b2dac6c71d92c8499f6e67125ad Mon Sep 17 00:00:00 2001
-From: Thorsten Kukuk <kukuk@thkukuk.de>
-Date: Tue, 14 Nov 2017 10:43:53 -0500
-Subject: [PATCH] Fix typo in src/libtirpc.map
-
-Which prevents that key_secretkey_is_set will be exported.
-
-Signed-off-by: Thorsten Kukuk <kukuk@suse.de>
-Signed-off-by: Steve Dickson <steved@redhat.com>
----
- src/libtirpc.map | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/libtirpc.map b/src/libtirpc.map
-index f385de5..21d6065 100644
---- a/src/libtirpc.map
-+++ b/src/libtirpc.map
-@@ -298,7 +298,7 @@ TIRPC_0.3.2 {
- key_gendes;
- key_get_conv;
- key_setsecret;
-- key_secret_is_set;
-+ key_secretkey_is_set;
- key_setnet;
- netname2host;
- netname2user;
---
-1.8.3.1
diff --git a/meta/recipes-extended/libtirpc/libtirpc/libtirpc-1.0.4-rc1.patch b/meta/recipes-extended/libtirpc/libtirpc/libtirpc-1.0.4-rc1.patch
new file mode 100644
index 00000000000..6d40d3cce8d
--- /dev/null
+++ b/meta/recipes-extended/libtirpc/libtirpc/libtirpc-1.0.4-rc1.patch
@@ -0,0 +1,103 @@
+Patch from Fedora https://src.fedoraproject.org/rpms/libtirpc/raw/master/f/libtirpc-1.0.4-rc1.patch
+
+Upstream-Status: Backport
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+diff --git a/src/clnt_generic.c b/src/clnt_generic.c
+index e5a314f..3f3dabf 100644
+--- a/src/clnt_generic.c
++++ b/src/clnt_generic.c
+@@ -47,7 +47,6 @@
+
+ extern bool_t __rpc_is_local_host(const char *);
+ int __rpc_raise_fd(int);
+-extern int __binddynport(int fd);
+
+ #ifndef NETIDLEN
+ #define NETIDLEN 32
+@@ -341,8 +340,7 @@ clnt_tli_create(int fd, const struct netconfig *nconf,
+ servtype = nconf->nc_semantics;
+ if (!__rpc_fd2sockinfo(fd, &si))
+ goto err;
+- if (__binddynport(fd) == -1)
+- goto err;
++ bindresvport(fd, NULL);
+ } else {
+ if (!__rpc_fd2sockinfo(fd, &si))
+ goto err;
+diff --git a/src/rpc_soc.c b/src/rpc_soc.c
+index af6c482..5a6eeb7 100644
+--- a/src/rpc_soc.c
++++ b/src/rpc_soc.c
+@@ -67,8 +67,6 @@
+
+ extern mutex_t rpcsoc_lock;
+
+-extern int __binddynport(int fd);
+-
+ static CLIENT *clnt_com_create(struct sockaddr_in *, rpcprog_t, rpcvers_t,
+ int *, u_int, u_int, char *, int);
+ static SVCXPRT *svc_com_create(int, u_int, u_int, char *);
+@@ -147,8 +145,7 @@ clnt_com_create(raddr, prog, vers, sockp, sendsz, recvsz, tp, flags)
+ bindaddr.maxlen = bindaddr.len = sizeof (struct sockaddr_in);
+ bindaddr.buf = raddr;
+
+- if (__binddynport(fd) == -1)
+- goto err;
++ bindresvport(fd, NULL);
+ cl = clnt_tli_create(fd, nconf, &bindaddr, prog, vers,
+ sendsz, recvsz);
+ if (cl) {
+diff --git a/src/rpcb_clnt.c b/src/rpcb_clnt.c
+index a94fc73..4b44364 100644
+--- a/src/rpcb_clnt.c
++++ b/src/rpcb_clnt.c
+@@ -752,7 +752,7 @@ __try_protocol_version_2(program, version, nconf, host, tp)
+
+ client = getpmaphandle(nconf, host, &parms.r_addr);
+ if (client == NULL)
+- return (NULL);
++ goto error;
+
+ /*
+ * Set retry timeout.
+@@ -771,11 +771,11 @@ __try_protocol_version_2(program, version, nconf, host, tp)
+ if (clnt_st != RPC_SUCCESS) {
+ rpc_createerr.cf_stat = RPC_PMAPFAILURE;
+ clnt_geterr(client, &rpc_createerr.cf_error);
+- return (NULL);
++ goto error;
+ } else if (port == 0) {
+ pmapaddress = NULL;
+ rpc_createerr.cf_stat = RPC_PROGNOTREGISTERED;
+- return (NULL);
++ goto error;
+ }
+ port = htons(port);
+ CLNT_CONTROL(client, CLGET_SVC_ADDR, (char *)&remote);
+@@ -789,14 +789,24 @@ __try_protocol_version_2(program, version, nconf, host, tp)
+ free(pmapaddress);
+ pmapaddress = NULL;
+ }
+- return (NULL);
++ goto error;
+ }
+ memcpy(pmapaddress->buf, remote.buf, remote.len);
+ memcpy(&((char *)pmapaddress->buf)[sizeof (short)],
+ (char *)(void *)&port, sizeof (short));
+ pmapaddress->len = pmapaddress->maxlen = remote.len;
+
++ CLNT_DESTROY(client);
+ return pmapaddress;
++
++error:
++ if (client) {
++ CLNT_DESTROY(client);
++ client = NULL;
++
++ }
++ return (NULL);
++
+ }
+ #endif
+
diff --git a/meta/recipes-extended/libtirpc/libtirpc/musl.patch b/meta/recipes-extended/libtirpc/libtirpc/musl.patch
new file mode 100644
index 00000000000..0c3ce603ea0
--- /dev/null
+++ b/meta/recipes-extended/libtirpc/libtirpc/musl.patch
@@ -0,0 +1,18 @@
+Consider musl provided built-in defines
+
+Helps compile libtirpc with musl
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- ./tirpc/rpc/types.h.orig 2018-03-17 10:23:10.022055255 +0100
++++ ./tirpc/rpc/types.h 2018-03-17 10:23:30.877751656 +0100
+@@ -66,7 +66,7 @@
+ #define mem_free(ptr, bsize) free(ptr)
+
+
+-#if defined __APPLE_CC__ || defined __FreeBSD__
++#if defined __APPLE_CC__ || defined __FreeBSD__ || !defined(__GLIBC__)
+ # define __u_char_defined
+ # define __daddr_t_defined
+ #endif
diff --git a/meta/recipes-extended/libtirpc/libtirpc_1.0.2.bb b/meta/recipes-extended/libtirpc/libtirpc_1.0.3.bb
index 99212600e0b..17bc038d671 100644
--- a/meta/recipes-extended/libtirpc/libtirpc_1.0.2.bb
+++ b/meta/recipes-extended/libtirpc/libtirpc_1.0.3.bb
@@ -10,17 +10,12 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=f835cce8852481e4b2bbbdd23b5e47f3 \
PROVIDES = "virtual/librpc"
SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.bz2 \
- file://export_key_secretkey_is_set.patch \
- file://0001-replace-__bzero-with-memset-API.patch \
- file://0001-include-stdint.h-for-uintptr_t.patch \
+ file://libtirpc-1.0.4-rc1.patch \
+ file://musl.patch \
"
-SRC_URI_append_libc-musl = " \
- file://Use-netbsd-queue.h.patch \
- "
-
-SRC_URI[md5sum] = "d5a37f1dccec484f9cabe2b97e54e9a6"
-SRC_URI[sha256sum] = "723c5ce92706cbb601a8db09110df1b4b69391643158f20ff587e20e7c5f90f5"
+SRC_URI[md5sum] = "f8403a10695348854e71d525c4db5931"
+SRC_URI[sha256sum] = "86c3a78fc1bddefa96111dd233124c703b22a78884203c55c3e06b3be6a0fd5e"
inherit autotools pkgconfig
diff --git a/meta/recipes-extended/libuser/libuser/0001-Check-for-issetugid.patch b/meta/recipes-extended/libuser/libuser/0001-Check-for-issetugid.patch
deleted file mode 100644
index 79756b9a07d..00000000000
--- a/meta/recipes-extended/libuser/libuser/0001-Check-for-issetugid.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From d0537cb7f2dc5877700ad78dfd191515379d4edc Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 7 Jan 2016 02:22:51 +0000
-Subject: [PATCH 1/2] Check for issetugid()
-
-If secure version of getenv is not there then we can use
-issetugid() as aid to call getenv()
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- configure.ac | 1 +
- lib/config.c | 12 +++++++++++-
- 2 files changed, 12 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 1ded1a2..ee19e1f 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -125,6 +125,7 @@ AC_TYPE_OFF_T
- AC_TYPE_SIZE_T
-
- AC_CHECK_FUNCS([__secure_getenv secure_getenv])
-+AC_CHECK_FUNCS([issetugid])
-
- # Modify CFLAGS after all tests are run (some of them could fail because
- # of the -Werror).
-diff --git a/lib/config.c b/lib/config.c
-index 29e7120..30f9daf 100644
---- a/lib/config.c
-+++ b/lib/config.c
-@@ -44,8 +44,10 @@
- # define safe_getenv(string) secure_getenv(string)
- #elif defined(HAVE___SECURE_GETENV)
- # define safe_getenv(string) __secure_getenv(string)
-+#elif defined(HAVE_ISSETUGID)
-+# define safe_getenv(string) safe_getenv_issetugid(string)
- #else
--# error Neither secure_getenv not __secure_getenv are available
-+# error None of secure_getenv, __secure_getenv, or issetugid is available
- #endif
-
- struct config_config {
-@@ -59,6 +61,14 @@ struct config_key {
- GList *values;
- };
-
-+static const char*
-+safe_getenv_issetugid(const char* name)
-+{
-+ if (issetugid ())
-+ return 0;
-+ return getenv (name);
-+}
-+
- /* Compare two section names */
- static int
- compare_section_names(gconstpointer a, gconstpointer b)
---
-2.7.0
-
diff --git a/meta/recipes-extended/libuser/libuser/0001-modules-files.c-parse_field-fix-string-formating-in-.patch b/meta/recipes-extended/libuser/libuser/0001-modules-files.c-parse_field-fix-string-formating-in-.patch
deleted file mode 100644
index 7c47df22e43..00000000000
--- a/meta/recipes-extended/libuser/libuser/0001-modules-files.c-parse_field-fix-string-formating-in-.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From a4857911ece5ebfcdef42aee4c070eb216f39597 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:40:13 -0500
-Subject: [PATCH] modules/files.c: parse_field fix string formating in
- g_warnings
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[YOCTO #9547]
-
-Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
-
-Upstream-Status: Pending
----
- modules/files.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/modules/files.c b/modules/files.c
-index 4ef0a57..35eafc9 100644
---- a/modules/files.c
-+++ b/modules/files.c
-@@ -534,7 +534,7 @@ parse_field(const struct format_specifier *format, GValue *value,
- string, &err);
- if (ret == FALSE) {
- g_assert(err != NULL);
-- g_warning(lu_strerror(err));
-+ g_warning(lu_strerror(err), NULL);
- lu_error_free(&err);
- }
- return ret;
---
-2.1.4
-
diff --git a/meta/recipes-extended/libuser/libuser/0002-remove-unused-execinfo.h.patch b/meta/recipes-extended/libuser/libuser/0002-remove-unused-execinfo.h.patch
deleted file mode 100644
index 4bc0219f19c..00000000000
--- a/meta/recipes-extended/libuser/libuser/0002-remove-unused-execinfo.h.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 4b2f81f307ffeac12956e5c16e894e5ebb937ea5 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 7 Jan 2016 02:26:00 +0000
-Subject: [PATCH 2/2] remove unused execinfo.h
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- lib/error.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/lib/error.c b/lib/error.c
-index a5ec30a..443e601 100644
---- a/lib/error.c
-+++ b/lib/error.c
-@@ -18,7 +18,6 @@
- #include <config.h>
- #include <sys/types.h>
- #include <errno.h>
--#include <execinfo.h>
- #include <libintl.h>
- #include <stdarg.h>
- #include <stdlib.h>
---
-2.7.0
-
diff --git a/meta/recipes-extended/libuser/libuser_0.62.bb b/meta/recipes-extended/libuser/libuser_0.62.bb
deleted file mode 100644
index 7ec54eb16e1..00000000000
--- a/meta/recipes-extended/libuser/libuser_0.62.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "user and group account administration library"
-DESCRIPTION = "The libuser library implements a standardized interface for manipulating and administering user \
-and group accounts"
-HOMEPAGE = "https://pagure.io/libuser"
-BUGTRACKER = "https://pagure.io/libuser/issues"
-
-LICENSE = "LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
- file://lib/user.h;endline=19;md5=76b301f63c39fa992062395efbdc9558 \
- file://samples/testuser.c;endline=19;md5=3b87fa660fa3f4a6bb31d624afe30ba1"
-
-SECTION = "base"
-
-SRC_URI = "https://releases.pagure.org/libuser/libuser-${PV}.tar.xz \
- file://0001-Check-for-issetugid.patch \
- file://0002-remove-unused-execinfo.h.patch \
- file://0001-modules-files.c-parse_field-fix-string-formating-in-.patch \
- "
-
-SRC_URI[md5sum] = "63e5e5c551e99dc5302b40b80bd6d4f2"
-SRC_URI[sha256sum] = "a58ff4fabb01a25043b142185a33eeea961109dd60d4b40b6a9df4fa3cace20b"
-
-DEPENDS = "popt libpam glib-2.0 python3"
-
-inherit distro_features_check
-REQUIRED_DISTRO_FEATURES = "pam"
-
-inherit autotools gettext python3native python3-dir pkgconfig gtk-doc
-
-EXTRA_OEMAKE = "PYTHON_CPPFLAGS=-I${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI}"
-
-PACKAGES += "${PN}-python "
-
-FILES_${PN}-python = "${PYTHON_SITEPACKAGES_DIR}"
-
diff --git a/meta/recipes-extended/lighttpd/lighttpd_1.4.48.bb b/meta/recipes-extended/lighttpd/lighttpd_1.4.50.bb
index 3c4444cf423..5373a61d703 100644
--- a/meta/recipes-extended/lighttpd/lighttpd_1.4.48.bb
+++ b/meta/recipes-extended/lighttpd/lighttpd_1.4.50.bb
@@ -20,8 +20,8 @@ SRC_URI = "http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-${PV}.t
file://0001-Use-pkg-config-for-pcre-dependency-instead-of-config.patch \
"
-SRC_URI[md5sum] = "1e3a9eb5078f481e3a8a1d0aaac8c3c8"
-SRC_URI[sha256sum] = "0f8ad5aac7529d7b948b9d7e8cd0b4a9e177309d85d6bf6516e28e6e40d74f36"
+SRC_URI[md5sum] = "0547831efda8492648b7f0c652865dfd"
+SRC_URI[sha256sum] = "29378312d8887cbc14ffe8a7fadef2d5a08c7e7e1be942795142346ad95629eb"
PACKAGECONFIG ??= "openssl pcre zlib \
${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
diff --git a/meta/recipes-extended/logrotate/logrotate_3.13.0.bb b/meta/recipes-extended/logrotate/logrotate_3.14.0.bb
index 990cf9178bb..ccc68ad3ace 100644
--- a/meta/recipes-extended/logrotate/logrotate_3.13.0.bb
+++ b/meta/recipes-extended/logrotate/logrotate_3.14.0.bb
@@ -25,8 +25,8 @@ SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BP}.tar.xz
file://disable-check-different-filesystems.patch \
"
-SRC_URI[md5sum] = "78ef24d6fddcc4df8e412dd75c551b4c"
-SRC_URI[sha256sum] = "3222ca032f99be8d7a4a8c6ad69f3dcc49b9511bfe384bd5a271ebcd9bd3e52c"
+SRC_URI[md5sum] = "1c0f6e6e490c4bcac0a1e77ad1310683"
+SRC_URI[sha256sum] = "4703bdc0e2df3b322f9dff0aafc99aa9172c9e4acae28b7c924cc7d4e5b29d55"
PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'acl selinux', d)}"
@@ -34,7 +34,9 @@ PACKAGECONFIG[acl] = ",,acl"
PACKAGECONFIG[selinux] = ",,libselinux"
CONFFILES_${PN} += "${localstatedir}/lib/logrotate.status \
- ${sysconfdir}/logrotate.conf"
+ ${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.
@@ -60,22 +62,34 @@ SYSTEMD_SERVICE_${PN} = "\
${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-default ${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
- sed -i -e 's,OnCalendar=.*$,OnCalendar=${LOGROTATE_SYSTEMD_TIMER_BASIS},g' ${D}${systemd_system_unitdir}/logrotate.timer
- sed -i -e 's,AccuracySec=.*$,AccuracySec=${LOGROTATE_SYSTEMD_TIMER_ACCURACY},g' ${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
diff --git a/meta/recipes-extended/lsb/lsb_5.0.bb b/meta/recipes-extended/lsb/lsb_5.0.bb
index df4812e4bca..d1de334008d 100644
--- a/meta/recipes-extended/lsb/lsb_5.0.bb
+++ b/meta/recipes-extended/lsb/lsb_5.0.bb
@@ -34,7 +34,7 @@ S = "${WORKDIR}/lsb-release-1.4"
CLEANBROKEN = "1"
do_install() {
- oe_runmake install prefix=${D}${base_prefix} mandir=${D}${datadir}/man/ DESTDIR=${D}
+ oe_runmake install prefix=${D}${root_prefix} mandir=${D}${datadir}/man/ DESTDIR=${D}
# these two dirs are needed by package lsb-dist-checker
mkdir -p ${D}${sysconfdir}/opt
@@ -99,7 +99,9 @@ do_install_append() {
fi
if [ "${TARGET_ARCH}" = "x86_64" ]; then
- if [ "${base_libdir}" != "${base_prefix}/lib64" ]; then
+ # don't symlink if usrmerge is in DISTRO_FEATURES as it manages the symlink
+ if ${@bb.utils.contains('DISTRO_FEATURES','usrmerge','false','true',d)} && \
+ [ "${base_libdir}" != "${base_prefix}/lib64" ]; then
lnr ${D}${base_libdir} ${D}${base_prefix}/lib64
fi
cd ${D}${base_libdir}
diff --git a/meta/recipes-extended/lsb/lsbinitscripts_9.79.bb b/meta/recipes-extended/lsb/lsbinitscripts_9.79.bb
index 46edeed8a48..6d3fcf13ddd 100644
--- a/meta/recipes-extended/lsb/lsbinitscripts_9.79.bb
+++ b/meta/recipes-extended/lsb/lsbinitscripts_9.79.bb
@@ -2,7 +2,6 @@ SUMMARY = "SysV init scripts which are only used in an LSB image"
HOMEPAGE = "https://wiki.debian.org/LSBInitScripts"
SECTION = "base"
LICENSE = "GPLv2"
-DEPENDS = "popt glib-2.0"
RPROVIDES_${PN} += "initd-functions"
RDEPENDS_${PN} += "util-linux"
diff --git a/meta/recipes-extended/lsof/lsof_4.89.bb b/meta/recipes-extended/lsof/lsof_4.91.bb
index 14546db23cd..0128de4a6e3 100644
--- a/meta/recipes-extended/lsof/lsof_4.89.bb
+++ b/meta/recipes-extended/lsof/lsof_4.91.bb
@@ -15,8 +15,8 @@ SRC_URI = "http://www.mirrorservice.org/sites/lsof.itap.purdue.edu/pub/tools/uni
file://lsof-remove-host-information.patch \
"
-SRC_URI[md5sum] = "1b9cd34f3fb86856a125abbf2be3a386"
-SRC_URI[sha256sum] = "81ac2fc5fdc944793baf41a14002b6deb5a29096b387744e28f8c30a360a3718"
+SRC_URI[md5sum] = "148ed410cb52e08c2adc0c60f480f11f"
+SRC_URI[sha256sum] = "c9da946a525fbf82ff80090b6d1879c38df090556f3fe0e6d782cb44172450a3"
LOCALSRC = "file://${WORKDIR}/lsof_${PV}/lsof_${PV}_src.tar"
diff --git a/meta/recipes-extended/ltp/ltp/0001-configure-Fix-default-value-of-without-numa-switch-i.patch b/meta/recipes-extended/ltp/ltp/0001-configure-Fix-default-value-of-without-numa-switch-i.patch
deleted file mode 100644
index da62687d571..00000000000
--- a/meta/recipes-extended/ltp/ltp/0001-configure-Fix-default-value-of-without-numa-switch-i.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 4ace68a6ba501907a0741dba5f5f155e06a74c35 Mon Sep 17 00:00:00 2001
-From: Petr Vorel <pvorel@suse.cz>
-Date: Wed, 7 Feb 2018 11:09:49 +0100
-Subject: [PATCH] configure: Fix default value of --without-numa switch in help
-
-The default value is no.
-
-Fixes: 39a85a1f1 ("configure: add knob to control numa support")
-
-Signed-off-by: Petr Vorel <pvorel@suse.cz>
-Upstream-Status: Accepted
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index b39a31d..d66ea00 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -86,7 +86,7 @@ fi
- # Numa
- AC_ARG_WITH([numa],
- AC_HELP_STRING([--without-numa],
-- [without numa support (default=yes)]),
-+ [without numa support (default=no)]),
- [with_numa=no],
- [with_numa=yes]
- )
---
-2.7.4
-
diff --git a/meta/recipes-extended/ltp/ltp/0001-configure-add-knob-to-control-numa-support.patch b/meta/recipes-extended/ltp/ltp/0001-configure-add-knob-to-control-numa-support.patch
deleted file mode 100644
index 8aaa287b76b..00000000000
--- a/meta/recipes-extended/ltp/ltp/0001-configure-add-knob-to-control-numa-support.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 39a85a1f1e6624f554215ba4b6843d3689a8415e Mon Sep 17 00:00:00 2001
-From: Anders Roxell <anders.roxell@linaro.org>
-Date: Mon, 5 Feb 2018 11:56:04 +0100
-Subject: [PATCH] configure: add knob to control numa support
-
-Allow to disable numa from the top level.
-
-Based on patch:
-http://cgit.openembedded.org/openembedded-core/commit/meta/recipes-extended/ltp?id=4c7873552e13dfdba96afca7562c398d2966ca71
-
-Reported-by: Roy Li <rongqing.li@windriver.com>
-Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
-Signed-off-by: Petr Vorel <pvorel@suse.cz>
-Upstream-Status: Accepted
----
- configure.ac | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/configure.ac b/configure.ac
-index 5c8d4ea..b39a31d 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -83,6 +83,14 @@ else
- AC_SUBST([WITH_EXPECT],["no"])
- fi
-
-+# Numa
-+AC_ARG_WITH([numa],
-+ AC_HELP_STRING([--without-numa],
-+ [without numa support (default=yes)]),
-+ [with_numa=no],
-+ [with_numa=yes]
-+)
-+
- # Perl
- AC_ARG_WITH([perl],
- [AC_HELP_STRING([--with-perl],
-@@ -157,7 +165,9 @@ LTP_CHECK_SELINUX
- LTP_CHECK_SIGNAL
- LTP_CHECK_SYSCALL_EVENTFD
- LTP_CHECK_SYSCALL_MODIFY_LDT
-+if test "x$with_numa" = xyes; then
- LTP_CHECK_SYSCALL_NUMA
-+fi
- LTP_CHECK_SYSCALL_QUOTACTL
- LTP_CHECK_SYSCALL_SIGNALFD
- LTP_CHECK_SYSCALL_UNSHARE
---
-2.7.4
-
diff --git a/meta/recipes-extended/ltp/ltp/0001-mmap15-mips64-return-EINVAL.patch b/meta/recipes-extended/ltp/ltp/0001-mmap15-mips64-return-EINVAL.patch
new file mode 100644
index 00000000000..18eba27c2d9
--- /dev/null
+++ b/meta/recipes-extended/ltp/ltp/0001-mmap15-mips64-return-EINVAL.patch
@@ -0,0 +1,41 @@
+From b909805b4fc1b72e0ce299afb4abc02720ee81da Mon Sep 17 00:00:00 2001
+From: Dengke Du <dengke.du@windriver.com>
+Date: Wed, 12 Sep 2018 14:24:35 +0800
+Subject: [PATCH] mmap15: mips64 return EINVAL
+
+In mips64 kernel, system check the addr that passed to mmap:
+
+ if (TASK_SIZE - len < addr)
+ return -EINVAL;
+
+Link: https://github.com/torvalds/linux/blob/master/arch/mips/mm/mmap.c#L71
+
+Upstream-Status: Submitted [https://github.com/linux-test-project/ltp/pull/394]
+
+Signed-off-by: Dengke Du <dengke.du@windriver.com>
+---
+ testcases/kernel/syscalls/mmap/mmap15.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/testcases/kernel/syscalls/mmap/mmap15.c b/testcases/kernel/syscalls/mmap/mmap15.c
+index eff27d6..a10b5c7 100644
+--- a/testcases/kernel/syscalls/mmap/mmap15.c
++++ b/testcases/kernel/syscalls/mmap/mmap15.c
+@@ -81,9 +81,14 @@ int main(int ac, char **av)
+ }
+
+ if (errno != ENOMEM) {
++#ifdef __mips__
++ tst_resm(TPASS | TERRNO, "mmap into high region "
++ "failed as expected");
++#else
+ tst_resm(TFAIL | TERRNO, "mmap into high region "
+ "failed unexpectedly - expect "
+ "errno=ENOMEM, got");
++#endif
+ } else {
+ tst_resm(TPASS | TERRNO, "mmap into high region "
+ "failed as expected");
+--
+2.7.4
+
diff --git a/meta/recipes-extended/ltp/ltp/0001-syscalls-fcntl-make-OFD-command-use-fcntl64-syscall-.patch b/meta/recipes-extended/ltp/ltp/0001-syscalls-fcntl-make-OFD-command-use-fcntl64-syscall-.patch
new file mode 100644
index 00000000000..2755596d03b
--- /dev/null
+++ b/meta/recipes-extended/ltp/ltp/0001-syscalls-fcntl-make-OFD-command-use-fcntl64-syscall-.patch
@@ -0,0 +1,184 @@
+From 8de03ea1200480b922d5ba05b69dc94db60496f5 Mon Sep 17 00:00:00 2001
+From: "Hongzhi.Song" <hongzhi.song@windriver.com>
+Date: Sat, 15 Sep 2018 22:39:32 -0400
+Subject: [PATCH] syscalls/fcntl: make OFD command use fcntl64() syscall on
+ 32-bit
+
+To cope with glibc commit:
+ 06ab719d30b0 ("Fix Linux fcntl OFD locks for non-LFS architectures
+(BZ#20251)")
+
+WIP: Still need to test this with new glibc.
+ Test with old glibc look OK so far.
+
+Signed-off-by: Jan Stancek <jstancek@redhat.com>
+
+Upstream-Status: Backport
+ Backported from upstream maillist
+ https://lists.linux.it/pipermail/ltp/2018-September/009370.html
+
+Signed-off-by: Hongzhi Song <hongzhi.song@windriver.com>
+---
+ testcases/kernel/syscalls/fcntl/fcntl34.c | 12 +++++++---
+ testcases/kernel/syscalls/fcntl/fcntl36.c | 23 +++++++++++++-----
+ testcases/kernel/syscalls/fcntl/fcntl_common.h | 32 ++++++++++++++++++++++++++
+ 3 files changed, 58 insertions(+), 9 deletions(-)
+ create mode 100644 testcases/kernel/syscalls/fcntl/fcntl_common.h
+
+diff --git a/testcases/kernel/syscalls/fcntl/fcntl34.c b/testcases/kernel/syscalls/fcntl/fcntl34.c
+index aa29cf9..109f834 100644
+--- a/testcases/kernel/syscalls/fcntl/fcntl34.c
++++ b/testcases/kernel/syscalls/fcntl/fcntl34.c
+@@ -28,6 +28,7 @@
+ #include "lapi/fcntl.h"
+ #include "tst_safe_pthread.h"
+ #include "tst_test.h"
++#include "fcntl_common.h"
+
+ static int thread_cnt;
+ static const int max_thread_cnt = 32;
+@@ -68,7 +69,12 @@ void *thread_fn_01(void *arg)
+
+ memset(buf, (intptr_t)arg, write_size);
+
+- struct flock64 lck = {
++ /* see explanation in fcntl_common.h */
++ #ifdef USE_STRUCT_FLOCK
++ struct flock lck = {
++ #else
++ struct flock64 lck = {
++ #endif
+ .l_whence = SEEK_SET,
+ .l_start = 0,
+ .l_len = 1,
+@@ -76,13 +82,13 @@ void *thread_fn_01(void *arg)
+
+ for (i = 0; i < writes_num; ++i) {
+ lck.l_type = F_WRLCK;
+- SAFE_FCNTL(fd, F_OFD_SETLKW, &lck);
++ my_fcntl(fd, F_OFD_SETLKW, &lck);
+
+ SAFE_LSEEK(fd, 0, SEEK_END);
+ SAFE_WRITE(1, fd, buf, write_size);
+
+ lck.l_type = F_UNLCK;
+- SAFE_FCNTL(fd, F_OFD_SETLKW, &lck);
++ my_fcntl(fd, F_OFD_SETLKW, &lck);
+
+ sched_yield();
+ }
+diff --git a/testcases/kernel/syscalls/fcntl/fcntl36.c b/testcases/kernel/syscalls/fcntl/fcntl36.c
+index 3246d13..f263b6b 100644
+--- a/testcases/kernel/syscalls/fcntl/fcntl36.c
++++ b/testcases/kernel/syscalls/fcntl/fcntl36.c
+@@ -57,6 +57,7 @@
+ #include "lapi/fcntl.h"
+ #include "tst_safe_pthread.h"
+ #include "tst_test.h"
++#include "fcntl_common.h"
+
+ static int thread_cnt;
+ static int fail_flag = 0;
+@@ -87,7 +88,12 @@ static void *fn_ofd_w(void *arg)
+ int fd = SAFE_OPEN(fname, O_RDWR);
+ long wt = pa->cnt;
+
+- struct flock64 lck = {
++ /* see explanation in fcntl_common.h */
++ #ifdef USE_STRUCT_FLOCK
++ struct flock lck = {
++ #else
++ struct flock64 lck = {
++ #endif
+ .l_whence = SEEK_SET,
+ .l_start = pa->offset,
+ .l_len = pa->length,
+@@ -99,13 +105,13 @@ static void *fn_ofd_w(void *arg)
+ memset(buf, wt, pa->length);
+
+ lck.l_type = F_WRLCK;
+- SAFE_FCNTL(fd, F_OFD_SETLKW, &lck);
++ my_fcntl(fd, F_OFD_SETLKW, &lck);
+
+ SAFE_LSEEK(fd, pa->offset, SEEK_SET);
+ SAFE_WRITE(1, fd, buf, pa->length);
+
+ lck.l_type = F_UNLCK;
+- SAFE_FCNTL(fd, F_OFD_SETLKW, &lck);
++ my_fcntl(fd, F_OFD_SETLKW, &lck);
+
+ wt++;
+ if (wt >= 255)
+@@ -166,7 +172,12 @@ static void *fn_ofd_r(void *arg)
+ int i;
+ int fd = SAFE_OPEN(fname, O_RDWR);
+
+- struct flock64 lck = {
++ /* see explanation in fcntl_common.h */
++ #ifdef USE_STRUCT_FLOCK
++ struct flock lck = {
++ #else
++ struct flock64 lck = {
++ #endif
+ .l_whence = SEEK_SET,
+ .l_start = pa->offset,
+ .l_len = pa->length,
+@@ -178,7 +189,7 @@ static void *fn_ofd_r(void *arg)
+ memset(buf, 0, pa->length);
+
+ lck.l_type = F_RDLCK;
+- SAFE_FCNTL(fd, F_OFD_SETLKW, &lck);
++ my_fcntl(fd, F_OFD_SETLKW, &lck);
+
+ /* rlock acquired */
+ SAFE_LSEEK(fd, pa->offset, SEEK_SET);
+@@ -209,7 +220,7 @@ static void *fn_ofd_r(void *arg)
+ }
+
+ lck.l_type = F_UNLCK;
+- SAFE_FCNTL(fd, F_OFD_SETLK, &lck);
++ my_fcntl(fd, F_OFD_SETLK, &lck);
+
+ sched_yield();
+ }
+diff --git a/testcases/kernel/syscalls/fcntl/fcntl_common.h b/testcases/kernel/syscalls/fcntl/fcntl_common.h
+new file mode 100644
+index 0000000..3fe399b
+--- /dev/null
++++ b/testcases/kernel/syscalls/fcntl/fcntl_common.h
+@@ -0,0 +1,32 @@
++#include "lapi/syscalls.h"
++
++/*
++ * glibc commit:
++ * 06ab719d30b0 ("Fix Linux fcntl OFD locks for non-LFS architectures (BZ#20251)")
++ * changed behavior of arg parameter for OFD commands. It is no
++ * longer passing arg directly to syscall, but expects it to be
++ * 'struct flock'.
++ *
++ * On 64-bit or _FILE_OFFSET_BITS == 64 we can use fcntl() and
++ * struct flock with any glibc version. struct flock and flock64
++ * should be identical.
++ *
++ * On 32-bit, older glibc would pass arg directly, recent one treats
++ * it as 'struct flock' and converts it to 'struct flock64'.
++ * So, for 32-bit we use fcntl64 syscall directly with struct flock64.
++ */
++#if __WORDSIZE == 64 || _FILE_OFFSET_BITS == 64
++#define USE_STRUCT_FLOCK
++static int my_fcntl(int fd, int cmd, void *lck)
++{
++ return SAFE_FCNTL(fd, cmd, lck);
++}
++#else
++static int my_fcntl(int fd, int cmd, void *lck)
++{
++ int ret = tst_syscall(__NR_fcntl64, fd, cmd, lck);
++ if (ret == -1)
++ tst_brk(TBROK|TERRNO, "fcntl64");
++ return ret;
++}
++#endif
+--
+2.8.1
+
diff --git a/meta/recipes-extended/ltp/ltp/0003-Add-knob-to-control-tirpc-support.patch b/meta/recipes-extended/ltp/ltp/0003-Add-knob-to-control-tirpc-support.patch
deleted file mode 100644
index 5cf1e05f79c..00000000000
--- a/meta/recipes-extended/ltp/ltp/0003-Add-knob-to-control-tirpc-support.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From b193011da301b3d944e8fddcf4817513c31c5b88 Mon Sep 17 00:00:00 2001
-From: Fathi Boudra <fathi.boudra@linaro.org>
-Date: Thu, 7 Jan 2016 17:36:19 +0000
-Subject: [PATCH 03/32] Add knob to control tirpc support
-
-allow to disable tirpc. Helps to disable it at top level for eg. musl it
-does not yet work.
-
-Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
----
- configure.ac | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/configure.ac b/configure.ac
-index cc50397..9e2936b 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -98,6 +98,13 @@ if test "x$with_python" = xyes; then
- else
- AC_SUBST([WITH_PYTHON],["no"])
- fi
-+
-+# TI RPC
-+AC_ARG_WITH([tirpc],
-+ AC_HELP_STRING([--without-tirpc],
-+ [without libtirpc support]),
-+ [],[with_tirpc=yes],
-+)
- # END tools knobs
-
- # Testsuites knobs
-@@ -169,7 +176,9 @@ LTP_CHECK_RENAMEAT2
- LTP_CHECK_FALLOCATE
- LTP_CHECK_SYSCALL_FCNTL
- LTP_CHECK_SYSCALL_PERF_EVENT_OPEN
-+if test "x$with_tirpc" = xyes; then
- LTP_CHECK_TIRPC
-+fi
- LTP_CHECK_TEE
- LTP_CHECK_SPLICE
- LTP_CHECK_VMSPLICE
---
-2.7.0
-
diff --git a/meta/recipes-extended/ltp/ltp/0004-build-Add-option-to-select-libc-implementation.patch b/meta/recipes-extended/ltp/ltp/0004-build-Add-option-to-select-libc-implementation.patch
index 84ab37ea395..2df385591b1 100644
--- a/meta/recipes-extended/ltp/ltp/0004-build-Add-option-to-select-libc-implementation.patch
+++ b/meta/recipes-extended/ltp/ltp/0004-build-Add-option-to-select-libc-implementation.patch
@@ -22,10 +22,10 @@ Upstream-Status: Pending
testcases/realtime/stress/pi-tests/Makefile | 5 +++++
8 files changed, 35 insertions(+), 2 deletions(-)
-Index: git/Makefile
-===================================================================
---- git.orig/Makefile
-+++ git/Makefile
+diff --git a/Makefile b/Makefile
+index 297f8e7..906b280 100644
+--- a/Makefile
++++ b/Makefile
@@ -49,6 +49,11 @@ SKIP_IDCHECK ?= 0
UCLINUX ?= 0
export UCLINUX
@@ -38,10 +38,10 @@ Index: git/Makefile
# 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
-Index: git/testcases/kernel/Makefile
-===================================================================
---- git.orig/testcases/kernel/Makefile
-+++ git/testcases/kernel/Makefile
+diff --git a/testcases/kernel/Makefile b/testcases/kernel/Makefile
+index 50a12fa..4f1987f 100644
+--- a/testcases/kernel/Makefile
++++ b/testcases/kernel/Makefile
@@ -48,13 +48,16 @@ SUBDIRS += connectors \
logging \
mem \
@@ -60,10 +60,10 @@ Index: git/testcases/kernel/Makefile
ifeq ($(WITH_POWER_MANAGEMENT_TESTSUITE),yes)
SUBDIRS += power_management
endif
-Index: git/testcases/kernel/sched/Makefile
-===================================================================
---- git.orig/testcases/kernel/sched/Makefile
-+++ git/testcases/kernel/sched/Makefile
+diff --git a/testcases/kernel/sched/Makefile b/testcases/kernel/sched/Makefile
+index 6245ed0..aa4eb7f 100644
+--- a/testcases/kernel/sched/Makefile
++++ b/testcases/kernel/sched/Makefile
@@ -23,5 +23,7 @@
top_srcdir ?= ../../..
@@ -73,10 +73,10 @@ Index: git/testcases/kernel/sched/Makefile
+ FILTER_OUT_DIRS += process_stress
+endif
include $(top_srcdir)/include/mk/generic_trunk_target.mk
-Index: git/testcases/kernel/syscalls/Makefile
-===================================================================
---- git.orig/testcases/kernel/syscalls/Makefile
-+++ git/testcases/kernel/syscalls/Makefile
+diff --git a/testcases/kernel/syscalls/Makefile b/testcases/kernel/syscalls/Makefile
+index 8acb395..b749126 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
@@ -89,11 +89,11 @@ Index: git/testcases/kernel/syscalls/Makefile
ifeq ($(UCLIBC),1)
FILTER_OUT_DIRS += profil
-Index: git/testcases/network/nfsv4/acl/Makefile
-===================================================================
---- git.orig/testcases/network/nfsv4/acl/Makefile
-+++ git/testcases/network/nfsv4/acl/Makefile
-@@ -26,4 +26,8 @@ include $(top_srcdir)/include/mk/env_pre
+diff --git a/testcases/network/nfsv4/acl/Makefile b/testcases/network/nfsv4/acl/Makefile
+index 8bc78c2..c36cf50 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)
@@ -102,10 +102,10 @@ Index: git/testcases/network/nfsv4/acl/Makefile
+endif
+
include $(top_srcdir)/include/mk/generic_leaf_target.mk
-Index: git/testcases/network/rpc/basic_tests/Makefile
-===================================================================
---- git.orig/testcases/network/rpc/basic_tests/Makefile
-+++ git/testcases/network/rpc/basic_tests/Makefile
+diff --git a/testcases/network/rpc/basic_tests/Makefile b/testcases/network/rpc/basic_tests/Makefile
+index 3160813..9bdf5d0 100644
+--- a/testcases/network/rpc/basic_tests/Makefile
++++ b/testcases/network/rpc/basic_tests/Makefile
@@ -23,4 +23,9 @@
top_srcdir ?= ../../../..
@@ -116,11 +116,11 @@ Index: git/testcases/network/rpc/basic_tests/Makefile
+endif
+
include $(top_srcdir)/include/mk/generic_trunk_target.mk
-Index: git/testcases/realtime/func/pi-tests/Makefile
-===================================================================
---- git.orig/testcases/realtime/func/pi-tests/Makefile
-+++ git/testcases/realtime/func/pi-tests/Makefile
-@@ -27,5 +27,9 @@ include $(top_srcdir)/include/mk/env_pre
+diff --git a/testcases/realtime/func/pi-tests/Makefile b/testcases/realtime/func/pi-tests/Makefile
+index 7a7a57a..5808866 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
@@ -130,10 +130,10 @@ Index: git/testcases/realtime/func/pi-tests/Makefile
+
include $(top_srcdir)/include/mk/generic_leaf_target.mk
-Index: git/testcases/realtime/stress/pi-tests/Makefile
-===================================================================
---- git.orig/testcases/realtime/stress/pi-tests/Makefile
-+++ git/testcases/realtime/stress/pi-tests/Makefile
+diff --git a/testcases/realtime/stress/pi-tests/Makefile b/testcases/realtime/stress/pi-tests/Makefile
+index 5edc3b4..aa5987a 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
@@ -144,3 +144,6 @@ Index: git/testcases/realtime/stress/pi-tests/Makefile
+endif
+
include $(top_srcdir)/include/mk/generic_leaf_target.mk
+--
+2.7.0
+
diff --git a/meta/recipes-extended/ltp/ltp/0008-Check-if-__GLIBC_PREREQ-is-defined-before-using-it.patch b/meta/recipes-extended/ltp/ltp/0008-Check-if-__GLIBC_PREREQ-is-defined-before-using-it.patch
index e325ce4e493..428ac300493 100644
--- a/meta/recipes-extended/ltp/ltp/0008-Check-if-__GLIBC_PREREQ-is-defined-before-using-it.patch
+++ b/meta/recipes-extended/ltp/ltp/0008-Check-if-__GLIBC_PREREQ-is-defined-before-using-it.patch
@@ -11,9 +11,9 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
---
testcases/kernel/syscalls/accept4/accept4_01.c | 9 ++++-
- testcases/kernel/syscalls/getcpu/getcpu01.c | 40 +++++++++++++++++++++-
- .../sched_getaffinity/sched_getaffinity01.c | 26 ++++++++++++++
- 3 files changed, 73 insertions(+), 2 deletions(-)
+ testcases/kernel/syscalls/getcpu/getcpu01.c | 39 +++++++++++++++++++++-
+ .../sched_getaffinity/sched_getaffinity01.c | 26 +++++++++++++++
+ 3 files changed, 72 insertions(+), 2 deletions(-)
diff --git a/testcases/kernel/syscalls/accept4/accept4_01.c b/testcases/kernel/syscalls/accept4/accept4_01.c
index 6072bfa..2b090cb 100644
@@ -102,7 +102,7 @@ index c927512..921b107 100644
*cpu_id = sched_getcpu();
#endif
return 0;
-@@ -191,15 +204,20 @@ unsigned int set_cpu_affinity(void)
+@@ -191,15 +203,20 @@ unsigned int set_cpu_affinity(void)
cpu_set_t *set;
size_t size;
int nrcpus = 1024;
@@ -123,7 +123,7 @@ index c927512..921b107 100644
#if __GLIBC_PREREQ(2, 7)
size = CPU_ALLOC_SIZE(nrcpus);
CPU_ZERO_S(size, set);
-@@ -207,8 +225,13 @@ realloc:
+@@ -207,8 +224,13 @@ realloc:
size = sizeof(cpu_set_t);
CPU_ZERO(set);
#endif
@@ -137,7 +137,7 @@ index c927512..921b107 100644
#if __GLIBC_PREREQ(2, 7)
if (errno == EINVAL && nrcpus < (1024 << 8)) {
nrcpus = nrcpus << 2;
-@@ -220,10 +243,17 @@ realloc:
+@@ -220,10 +242,17 @@ realloc:
"NR_CPUS of the kernel is more than 1024, so we'd better use a newer glibc(>= 2.7)");
else
#endif
@@ -155,7 +155,7 @@ index c927512..921b107 100644
#if __GLIBC_PREREQ(2, 7)
CPU_ZERO_S(size, set);
CPU_SET_S(cpu_max, size, set);
-@@ -231,6 +261,10 @@ realloc:
+@@ -231,6 +260,10 @@ realloc:
CPU_ZERO(set);
CPU_SET(cpu_max, set);
#endif
@@ -166,7 +166,7 @@ index c927512..921b107 100644
if (sched_setaffinity(0, size, set) < 0) {
CPU_FREE(set);
tst_brkm(TFAIL, NULL, "sched_setaffinity:errno:%d", errno);
-@@ -247,11 +281,15 @@ unsigned int max_cpuid(size_t size, cpu_set_t * set)
+@@ -247,11 +280,15 @@ unsigned int max_cpuid(size_t size, cpu_set_t * set)
{
unsigned int index, max = 0;
for (index = 0; index < size * BITS_PER_BYTE; index++)
@@ -186,7 +186,7 @@ diff --git a/testcases/kernel/syscalls/sched_getaffinity/sched_getaffinity01.c b
index 9d6a81a..4ed13b2 100644
--- a/testcases/kernel/syscalls/sched_getaffinity/sched_getaffinity01.c
+++ b/testcases/kernel/syscalls/sched_getaffinity/sched_getaffinity01.c
-@@ -66,9 +66,11 @@ do { \
+@@ -67,9 +67,11 @@ do { \
tst_resm((TEST_RETURN == -1 ? TPASS : TFAIL) | TTERRNO, #t); \
} while (0)
@@ -198,7 +198,7 @@ index 9d6a81a..4ed13b2 100644
int main(int ac, char **av)
{
-@@ -95,14 +97,19 @@ static void do_test(void)
+@@ -96,14 +98,19 @@ static void do_test(void)
pid_t unused_pid;
unsigned len;
@@ -218,7 +218,7 @@ index 9d6a81a..4ed13b2 100644
#if __GLIBC_PREREQ(2, 7)
len = CPU_ALLOC_SIZE(nrcpus);
CPU_ZERO_S(len, mask);
-@@ -110,10 +117,15 @@ realloc:
+@@ -111,10 +118,15 @@ realloc:
len = sizeof(cpu_set_t);
CPU_ZERO(mask);
#endif
@@ -234,7 +234,7 @@ index 9d6a81a..4ed13b2 100644
#if __GLIBC_PREREQ(2, 7)
if (errno == EINVAL && nrcpus < (1024 << 8)) {
nrcpus = nrcpus << 2;
-@@ -125,17 +137,27 @@ realloc:
+@@ -126,17 +138,27 @@ realloc:
"newer glibc(>= 2.7)");
else
#endif
@@ -262,7 +262,7 @@ index 9d6a81a..4ed13b2 100644
if (TEST_RETURN != -1)
tst_resm(TPASS, "sched_getaffinity() succeed, "
"this process %d is running "
-@@ -143,11 +165,15 @@ realloc:
+@@ -144,11 +166,15 @@ realloc:
}
}
diff --git a/meta/recipes-extended/ltp/ltp/0010-replace-__BEGIN_DECLS-and-__END_DECLS.patch b/meta/recipes-extended/ltp/ltp/0010-replace-__BEGIN_DECLS-and-__END_DECLS.patch
deleted file mode 100644
index b9fce880fa5..00000000000
--- a/meta/recipes-extended/ltp/ltp/0010-replace-__BEGIN_DECLS-and-__END_DECLS.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 0130f4146ced320aadb01b22e36b13d269a8ebba Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 7 Jan 2016 19:48:14 +0000
-Subject: [PATCH 10/32] replace __BEGIN_DECLS and __END_DECLS
-
-They are not portable across libc implementations
-therefore replace them with expanded macros
-
-Include <asm-generic/types.h> to get __s32 definitions
-its not a generally available typedef
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- testcases/kernel/syscalls/epoll2/include/epoll.h | 8 ++++++--
- utils/sctp/include/netinet/sctp.h | 9 +++++++--
- 2 files changed, 13 insertions(+), 4 deletions(-)
-
-diff --git a/testcases/kernel/syscalls/epoll2/include/epoll.h b/testcases/kernel/syscalls/epoll2/include/epoll.h
-index be599c7..8cc5e7e 100644
---- a/testcases/kernel/syscalls/epoll2/include/epoll.h
-+++ b/testcases/kernel/syscalls/epoll2/include/epoll.h
-@@ -85,7 +85,9 @@ struct epoll_event
- } EPOLL_PACKED;
-
-
--__BEGIN_DECLS
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-
- /* Creates an epoll instance. Returns an fd for the new instance.
- The "size" parameter is a hint specifying the number of file
-@@ -114,6 +116,8 @@ extern int epoll_ctl (int __epfd, int __op, int __fd,
- extern int epoll_wait (int __epfd, struct epoll_event *__events,
- int __maxevents, int __timeout) __THROW;
-
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-
- #endif /* sys/epoll.h */
-diff --git a/utils/sctp/include/netinet/sctp.h b/utils/sctp/include/netinet/sctp.h
-index 51f5bfb..c61aef3 100644
---- a/utils/sctp/include/netinet/sctp.h
-+++ b/utils/sctp/include/netinet/sctp.h
-@@ -35,9 +35,12 @@
-
- #include <stdint.h>
- #include <linux/types.h>
-+#include <asm-generic/types.h>
- #include <sys/socket.h>
-
--__BEGIN_DECLS
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-
- typedef __s32 sctp_assoc_t;
-
-@@ -862,6 +865,8 @@ int sctp_recvmsg(int s, void *msg, size_t len, struct sockaddr *from,
- /* Return the address length for an address family. */
- int sctp_getaddrlen(sa_family_t family);
-
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-
- #endif /* __linux_sctp_h__ */
---
-2.7.0
-
diff --git a/meta/recipes-extended/ltp/ltp/0021-Define-_GNU_SOURCE-for-MREMAP_MAYMOVE-definition.patch b/meta/recipes-extended/ltp/ltp/0021-Define-_GNU_SOURCE-for-MREMAP_MAYMOVE-definition.patch
index 462976da42c..6c5f3603511 100644
--- a/meta/recipes-extended/ltp/ltp/0021-Define-_GNU_SOURCE-for-MREMAP_MAYMOVE-definition.patch
+++ b/meta/recipes-extended/ltp/ltp/0021-Define-_GNU_SOURCE-for-MREMAP_MAYMOVE-definition.patch
@@ -18,10 +18,10 @@ Upstream-Status: Pending
testcases/kernel/syscalls/mremap/mremap03.c | 2 ++
3 files changed, 7 insertions(+), 1 deletion(-)
-Index: git/testcases/kernel/syscalls/mremap/mremap01.c
-===================================================================
---- git.orig/testcases/kernel/syscalls/mremap/mremap01.c
-+++ git/testcases/kernel/syscalls/mremap/mremap01.c
+diff --git a/testcases/kernel/syscalls/mremap/mremap01.c b/testcases/kernel/syscalls/mremap/mremap01.c
+index d63d1e4..24ca174 100644
+--- a/testcases/kernel/syscalls/mremap/mremap01.c
++++ b/testcases/kernel/syscalls/mremap/mremap01.c
@@ -76,10 +76,12 @@
*/
#include <unistd.h>
@@ -36,10 +36,10 @@ Index: git/testcases/kernel/syscalls/mremap/mremap01.c
#include "test.h"
#include "safe_macros.h"
-Index: git/testcases/kernel/syscalls/mremap/mremap02.c
-===================================================================
---- git.orig/testcases/kernel/syscalls/mremap/mremap02.c
-+++ git/testcases/kernel/syscalls/mremap/mremap02.c
+diff --git a/testcases/kernel/syscalls/mremap/mremap02.c b/testcases/kernel/syscalls/mremap/mremap02.c
+index 5a51b9a..a530a6b 100644
+--- a/testcases/kernel/syscalls/mremap/mremap02.c
++++ b/testcases/kernel/syscalls/mremap/mremap02.c
@@ -75,9 +75,11 @@
#include <errno.h>
#include <unistd.h>
@@ -52,10 +52,10 @@ Index: git/testcases/kernel/syscalls/mremap/mremap02.c
#include "test.h"
-Index: git/testcases/kernel/syscalls/mremap/mremap03.c
-===================================================================
---- git.orig/testcases/kernel/syscalls/mremap/mremap03.c
-+++ git/testcases/kernel/syscalls/mremap/mremap03.c
+diff --git a/testcases/kernel/syscalls/mremap/mremap03.c b/testcases/kernel/syscalls/mremap/mremap03.c
+index 12e3829..9b39f8b 100644
+--- a/testcases/kernel/syscalls/mremap/mremap03.c
++++ b/testcases/kernel/syscalls/mremap/mremap03.c
@@ -76,9 +76,11 @@
#include <errno.h>
#include <unistd.h>
@@ -68,3 +68,6 @@ Index: git/testcases/kernel/syscalls/mremap/mremap03.c
#include "test.h"
+--
+2.7.0
+
diff --git a/meta/recipes-extended/ltp/ltp/0028-rt_sigaction.h-Use-sighandler_t-instead-of-__sighand.patch b/meta/recipes-extended/ltp/ltp/0028-rt_sigaction.h-Use-sighandler_t-instead-of-__sighand.patch
index c730d46e69f..40ee894143e 100644
--- a/meta/recipes-extended/ltp/ltp/0028-rt_sigaction.h-Use-sighandler_t-instead-of-__sighand.patch
+++ b/meta/recipes-extended/ltp/ltp/0028-rt_sigaction.h-Use-sighandler_t-instead-of-__sighand.patch
@@ -11,14 +11,14 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
---
- include/lapi/rt_sigaction.h | 2 +-
+ include/lapi/rt_sigaction.h | 4 ++--
testcases/kernel/syscalls/rt_sigsuspend/Makefile | 3 +++
- 2 files changed, 4 insertions(+), 1 deletion(-)
+ 2 files changed, 5 insertions(+), 2 deletions(-)
-Index: git/include/lapi/rt_sigaction.h
-===================================================================
---- git.orig/include/lapi/rt_sigaction.h
-+++ git/include/lapi/rt_sigaction.h
+diff --git a/include/lapi/rt_sigaction.h b/include/lapi/rt_sigaction.h
+index 18236db..15facda 100644
+--- a/include/lapi/rt_sigaction.h
++++ b/include/lapi/rt_sigaction.h
@@ -36,12 +36,12 @@
#if defined(__mips__)
struct kernel_sigaction {
@@ -34,10 +34,10 @@ Index: git/include/lapi/rt_sigaction.h
unsigned long sa_flags;
void (*sa_restorer) (void);
sigset_t sa_mask;
-Index: git/testcases/kernel/syscalls/rt_sigsuspend/Makefile
-===================================================================
---- git.orig/testcases/kernel/syscalls/rt_sigsuspend/Makefile
-+++ git/testcases/kernel/syscalls/rt_sigsuspend/Makefile
+diff --git a/testcases/kernel/syscalls/rt_sigsuspend/Makefile b/testcases/kernel/syscalls/rt_sigsuspend/Makefile
+index 37bc3a9..2ca7f7c 100644
+--- a/testcases/kernel/syscalls/rt_sigsuspend/Makefile
++++ b/testcases/kernel/syscalls/rt_sigsuspend/Makefile
@@ -19,4 +19,7 @@
top_srcdir ?= ../../../..
diff --git a/meta/recipes-extended/ltp/ltp/0036-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch b/meta/recipes-extended/ltp/ltp/0036-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch
index 04532be79ef..e826d48e3b5 100644
--- a/meta/recipes-extended/ltp/ltp/0036-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch
+++ b/meta/recipes-extended/ltp/ltp/0036-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch
@@ -27,7 +27,7 @@ diff --git a/testcases/network/nfsv4/acl/acl1.c b/testcases/network/nfsv4/acl/ac
index b8b67b4..7c7c506 100644
--- a/testcases/network/nfsv4/acl/acl1.c
+++ b/testcases/network/nfsv4/acl/acl1.c
-@@ -314,7 +314,7 @@ void test_acl_default(char *dir, acl_t acl)
+@@ -303,7 +303,7 @@ void test_acl_default(char *dir, acl_t acl)
char *cmd = malloc(256);
strcpy(cmd, "chmod 7777 ");
diff --git a/meta/recipes-extended/ltp/ltp/0040-read_all-Define-FNM_EXTMATCH-if-not-already-like-und.patch b/meta/recipes-extended/ltp/ltp/0040-read_all-Define-FNM_EXTMATCH-if-not-already-like-und.patch
new file mode 100644
index 00000000000..0245a89f3d9
--- /dev/null
+++ b/meta/recipes-extended/ltp/ltp/0040-read_all-Define-FNM_EXTMATCH-if-not-already-like-und.patch
@@ -0,0 +1,44 @@
+From 23518508de307790231d16af307291f1b45e903a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Daniel=20D=C3=ADaz?= <daniel.diaz@linaro.org>
+Date: Tue, 5 Jun 2018 15:36:30 -0500
+Subject: [PATCH] read_all: Define FNM_EXTMATCH if not already (like under
+ musl).
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+With musl, FNM_EXTMATCH is not defined:
+| read_all.c: In function 'read_test':
+| read_all.c:201:41: error: 'FNM_EXTMATCH' undeclared (first use in this function); did you mean 'FNM_NOMATCH'?
+| if (exclude && !fnmatch(exclude, path, FNM_EXTMATCH)) {
+| ^~~~~~~~~~~~
+| FNM_NOMATCH
+| read_all.c:201:41: note: each undeclared identifier is reported only once for each function it appears in
+| <builtin>: recipe for target 'read_all' failed
+| make[4]: *** [read_all] Error 1
+
+Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>
+
+Upstream-Status: Pending
+---
+ testcases/kernel/fs/read_all/read_all.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/testcases/kernel/fs/read_all/read_all.c b/testcases/kernel/fs/read_all/read_all.c
+index a8e1611..e9ff47a 100644
+--- a/testcases/kernel/fs/read_all/read_all.c
++++ b/testcases/kernel/fs/read_all/read_all.c
+@@ -59,6 +59,10 @@
+ #define MAX_PATH 4096
+ #define MAX_DISPLAY 40
+
++#if !defined(FNM_EXTMATCH)
++#define FNM_EXTMATCH 0
++#endif
++
+ struct queue {
+ sem_t sem;
+ int front;
+--
+2.7.4
+
diff --git a/meta/recipes-extended/ltp/ltp/0040-safe_macros-make-is_fuse-return-zero-if-fs_type-is-N.patch b/meta/recipes-extended/ltp/ltp/0040-safe_macros-make-is_fuse-return-zero-if-fs_type-is-N.patch
deleted file mode 100644
index 5096a85c1e5..00000000000
--- a/meta/recipes-extended/ltp/ltp/0040-safe_macros-make-is_fuse-return-zero-if-fs_type-is-N.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 67af7dbe8bdf29f9ed980d8d29feeae32a0a7a1d Mon Sep 17 00:00:00 2001
-From: Li Wang <liwang@redhat.com>
-Date: Tue, 23 Jan 2018 17:46:35 +0800
-Subject: [PATCH] safe_macros: make is_fuse() return zero if fs_type is NULL
-
-This commmit 28507e514c(safe_mount: Do not try mount() syscall for FUSE fs)
-involves FUSE fs check in safe_mount(), but we'd better guarantee the "fs_type"
-is legal to check in is_fuse() function otherwise system will kill the program.
-
- cmdline="fanotify06"
- contacts=""
- analysis=exit
- <<<test_output>>>
- tst_test.c:980: INFO: Timeout per run is 0h 10m 00s
- tst_test.c:1025: BROK: Test killed by SIGSEGV!
-
-Signed-off-by: Li Wang <liwang@redhat.com>
-Acked-by: Jan Stancek <jstancek@redhat.com>
-Upstream-Status: Accepted [https://github.com/linux-test-project/ltp/commit/67af7dbe8bdf29f9ed980d8d29feeae32a0a7a1d]
----
- lib/safe_macros.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/lib/safe_macros.c b/lib/safe_macros.c
-index c48e436dc..abdeca013 100644
---- a/lib/safe_macros.c
-+++ b/lib/safe_macros.c
-@@ -708,6 +708,9 @@ static int is_fuse(const char *fs_type)
- {
- unsigned int i;
-
-+ if (!fs_type)
-+ return 0;
-+
- for (i = 0; i < ARRAY_SIZE(fuse_fs_types); i++) {
- if (!strcmp(fuse_fs_types[i], fs_type))
- return 1;
---
-2.11.0
-
diff --git a/meta/recipes-extended/ltp/ltp/0041-cve-2017-5669-shmat-for-0-or-PAGESIZE-with-RND-flag-.patch b/meta/recipes-extended/ltp/ltp/0041-cve-2017-5669-shmat-for-0-or-PAGESIZE-with-RND-flag-.patch
new file mode 100644
index 00000000000..0d2d2cbce45
--- /dev/null
+++ b/meta/recipes-extended/ltp/ltp/0041-cve-2017-5669-shmat-for-0-or-PAGESIZE-with-RND-flag-.patch
@@ -0,0 +1,97 @@
+From b767b73ef027ba8d35f297c7d3659265ac80425b Mon Sep 17 00:00:00 2001
+From: Rafael David Tinoco <rafael.tinoco@canonical.com>
+Date: Wed, 30 May 2018 09:14:34 -0300
+Subject: [PATCH] cve-2017-5669: shmat() for 0 (or <PAGESIZE with RND flag) has
+ to fail with REMAPs
+
+Fixes: https://github.com/linux-test-project/ltp/issues/319
+
+According to upstream thread (https://lkml.org/lkml/2018/5/28/2056),
+cve-2017-5669 needs to address the "new" way of handling nil addresses
+for shmat() when used with MAP_FIXED or SHM_REMAP flags.
+
+- mapping nil-page is OK on lower addresses with MAP_FIXED (or else X11 is broken)
+- mapping nil-page is NOT OK with SHM_REMAP on lower addresses
+
+Addresses Davidlohr Bueso's comments/changes:
+
+commit 8f89c007b6de
+Author: Davidlohr Bueso <dave@stgolabs.net>
+Date: Fri May 25 14:47:30 2018 -0700
+
+ ipc/shm: fix shmat() nil address after round-down when remapping
+
+commit a73ab244f0da
+Author: Davidlohr Bueso <dave@stgolabs.net>
+Date: Fri May 25 14:47:27 2018 -0700
+
+ Revert "ipc/shm: Fix shmat mmap nil-page protection"
+
+For previously test, and now broken, made based on:
+
+commit 95e91b831f87
+Author: Davidlohr Bueso <dave@stgolabs.net>
+Date: Mon Feb 27 14:28:24 2017 -0800
+
+ ipc/shm: Fix shmat mmap nil-page protection
+
+Signed-off-by: Rafael David Tinoco <rafael.tinoco@linaro.org>
+Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>
+Reviewed-by: Jan Stancek <jstancek@redhat.com>
+
+Upstream-Status: Accepted [https://github.com/linux-test-project/ltp/pull/324]
+CVE: CVE-2017-5669
+Signed-off-by: Rafael David Tinoco <rafael.tinoco@linaro.org>
+---
+ testcases/cve/cve-2017-5669.c | 20 +++++++++++++++++++-
+ 1 file changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/testcases/cve/cve-2017-5669.c b/testcases/cve/cve-2017-5669.c
+index 1ca5983..0834626 100644
+--- a/testcases/cve/cve-2017-5669.c
++++ b/testcases/cve/cve-2017-5669.c
+@@ -28,7 +28,20 @@
+ * is just to see if we get an access error or some other unexpected behaviour.
+ *
+ * See commit 95e91b831f (ipc/shm: Fix shmat mmap nil-page protection)
++ *
++ * The commit above disallowed SHM_RND maps to zero (and rounded) entirely and
++ * that broke userland for cases like Xorg. New behavior disallows REMAPs to
++ * lower addresses (0<=PAGESIZE).
++ *
++ * See commit a73ab244f0da (Revert "ipc/shm: Fix shmat mmap nil-page protect...)
++ * See commit 8f89c007b6de (ipc/shm: fix shmat() nil address after round-dow...)
++ * See https://github.com/linux-test-project/ltp/issues/319
++ *
++ * This test needs root permissions or else security_mmap_addr(), from
++ * get_unmapped_area(), will cause permission errors when trying to mmap lower
++ * addresses.
+ */
++
+ #include <sys/types.h>
+ #include <sys/ipc.h>
+ #include <sys/shm.h>
+@@ -60,7 +73,11 @@ static void cleanup(void)
+ static void run(void)
+ {
+ tst_res(TINFO, "Attempting to attach shared memory to null page");
+- shm_addr = shmat(shm_id, ((void *)1), SHM_RND);
++ /*
++ * shmat() for 0 (or < PAGESIZE with RND flag) has to fail with REMAPs
++ * https://github.com/linux-test-project/ltp/issues/319
++ */
++ shm_addr = shmat(shm_id, ((void *)1), SHM_RND | SHM_REMAP);
+ if (shm_addr == (void *)-1) {
+ shm_addr = NULL;
+ if (errno == EINVAL) {
+@@ -89,6 +106,7 @@ static void run(void)
+ }
+
+ static struct tst_test test = {
++ .needs_root = 1,
+ .setup = setup,
+ .cleanup = cleanup,
+ .test_all = run,
+--
+2.7.4
+
diff --git a/meta/recipes-extended/ltp/ltp/0042-fs-ftest-ftest06.c-Fix-too-small-name-string-and-rel.patch b/meta/recipes-extended/ltp/ltp/0042-fs-ftest-ftest06.c-Fix-too-small-name-string-and-rel.patch
new file mode 100644
index 00000000000..407d98eff0b
--- /dev/null
+++ b/meta/recipes-extended/ltp/ltp/0042-fs-ftest-ftest06.c-Fix-too-small-name-string-and-rel.patch
@@ -0,0 +1,34 @@
+From baeef026f80e19a634a4096e97286419aca1cf68 Mon Sep 17 00:00:00 2001
+From: He Zhe <zhe.he@windriver.com>
+Date: Thu, 23 Aug 2018 00:22:04 +0800
+Subject: [PATCH] fs/ftest/ftest06.c: Fix too small name string and related
+ failure
+
+The name string is too small to contain normal full path names and causes
+the following failure.
+
+"ftest06 2 TFAIL : ftest06.c:223: Can't chdir(): errno=ENOENT(2): No such file or directory"
+
+Upstream-Status: Submitted [ltp-list@lists.sourceforge.net]
+
+Signed-off-by: He Zhe <zhe.he@windriver.com>
+---
+ testcases/kernel/fs/ftest/ftest06.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/testcases/kernel/fs/ftest/ftest06.c b/testcases/kernel/fs/ftest/ftest06.c
+index 2ca7c88..b434067 100644
+--- a/testcases/kernel/fs/ftest/ftest06.c
++++ b/testcases/kernel/fs/ftest/ftest06.c
+@@ -100,7 +100,7 @@ static char *fstyp;
+ int main(int ac, char *av[])
+ {
+ int pid, child, status, count, k, j;
+- char name[3];
++ char name[MAXPATHLEN];
+
+ int lc;
+
+--
+2.7.4
+
diff --git a/meta/recipes-extended/ltp/ltp/0043-open-creat-skip-S_ISGID-check-on-files-created-by-no.patch b/meta/recipes-extended/ltp/ltp/0043-open-creat-skip-S_ISGID-check-on-files-created-by-no.patch
new file mode 100644
index 00000000000..dc61fcc0399
--- /dev/null
+++ b/meta/recipes-extended/ltp/ltp/0043-open-creat-skip-S_ISGID-check-on-files-created-by-no.patch
@@ -0,0 +1,81 @@
+From 3c87ef2961dedb10d1f674c6a530e00dbab8ec1b Mon Sep 17 00:00:00 2001
+From: Jan Stancek <jstancek@redhat.com>
+Date: Tue, 17 Jul 2018 10:26:39 +0200
+Subject: [PATCH] open|creat: skip S_ISGID check on files created by non-group
+ members
+
+0fa3ecd87848 ("Fix up non-directory creation in SGID directories")
+fixes problem described in CVE-2018-13405. This commit is getting
+backported to older streams as well.
+
+This patch removes S_ISGID check for files created by non-group members
+in LTP tests creat08 and open10.
+
+Once 0fa3ecd87848 will be in non-rc kernel, we could add a new test
+for this CVE that would be limited to 4.18+ kernels.
+
+Signed-off-by: Jan Stancek <jstancek@redhat.com>
+Acked-by: Cyril Hrubis <chrubis@suse.cz>
+Reviewed-by: Naresh Kamboju <naresh.kamboju@linaro.org>
+
+Upstream-Status: Backport
+[ git://github.com/linux-test-project/ltp.git
+ 3c87ef2961dedb10d1f674c6a530e00dbab8ec1b
+ "open|creat: skip S_ISGID check on files created by non-group members" ]
+
+Signed-off-by: He Zhe <zhe.he@windriver.com>
+---
+ testcases/kernel/syscalls/creat/creat08.c | 13 ++++++-------
+ testcases/kernel/syscalls/open/open10.c | 12 +++++-------
+ 2 files changed, 11 insertions(+), 14 deletions(-)
+
+diff --git a/testcases/kernel/syscalls/creat/creat08.c b/testcases/kernel/syscalls/creat/creat08.c
+index 50f2b3993..d22558ac3 100644
+--- a/testcases/kernel/syscalls/creat/creat08.c
++++ b/testcases/kernel/syscalls/creat/creat08.c
+@@ -361,13 +361,12 @@ int main(int ac, char **av)
+ local_flag = FAILED;
+ }
+
+- /* Verify modes */
+- if (!(buf.st_mode & S_ISGID)) {
+- tst_resm(TFAIL,
+- "%s: Incorrect modes, setgid bit should be set",
+- setgid_B);
+- local_flag = FAILED;
+- }
++ /*
++ * Skip S_ISGID check
++ * 0fa3ecd87848 ("Fix up non-directory creation in SGID directories")
++ * clears S_ISGID for files created by non-group members
++ */
++
+ close(fd);
+
+ if (local_flag == PASSED) {
+diff --git a/testcases/kernel/syscalls/open/open10.c b/testcases/kernel/syscalls/open/open10.c
+index 613f2288f..14feec9e1 100644
+--- a/testcases/kernel/syscalls/open/open10.c
++++ b/testcases/kernel/syscalls/open/open10.c
+@@ -345,13 +345,11 @@ int main(int ac, char *av[])
+ local_flag = FAILED;
+ }
+
+- /* Verify modes */
+- if (!(buf.st_mode & S_ISGID)) {
+- tst_resm(TFAIL,
+- "%s: Incorrect modes, setgid bit not set",
+- setgid_B);
+- local_flag = FAILED;
+- }
++ /*
++ * Skip S_ISGID check
++ * 0fa3ecd87848 ("Fix up non-directory creation in SGID directories")
++ * clears S_ISGID for files created by non-group members
++ */
+
+ if (local_flag == PASSED) {
+ tst_resm(TPASS, "Test passed in block2.");
+--
+2.11.0
+
diff --git a/meta/recipes-extended/ltp/ltp_20180118.bb b/meta/recipes-extended/ltp/ltp_20180515.bb
index 14fb41b3bd6..ce86f7f14b7 100644
--- a/meta/recipes-extended/ltp/ltp_20180118.bb
+++ b/meta/recipes-extended/ltp/ltp_20180515.bb
@@ -19,20 +19,24 @@ LIC_FILES_CHKSUM = "\
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 = "731cd34e682d297b207668be8b1d15320a9ac1b1"
+SRCREV = "96cbf48313afa65ef4d693d3441cbfd60a8d9b27"
SRC_URI = "git://github.com/linux-test-project/ltp.git \
- file://0001-configure-add-knob-to-control-numa-support.patch \
- file://0001-configure-Fix-default-value-of-without-numa-switch-i.patch \
- file://0003-Add-knob-to-control-tirpc-support.patch \
+ file://0001-mmap15-mips64-return-EINVAL.patch \
file://0004-build-Add-option-to-select-libc-implementation.patch \
file://0005-kernel-controllers-Link-with-libfts-explicitly-on-mu.patch \
file://0007-fix-__WORDSIZE-undeclared-when-building-with-musl.patch \
file://0008-Check-if-__GLIBC_PREREQ-is-defined-before-using-it.patch \
file://0009-fix-redefinition-of-struct-msgbuf-error-building-wit.patch \
- file://0010-replace-__BEGIN_DECLS-and-__END_DECLS.patch \
file://0018-guard-mallocopt-with-__GLIBC__.patch \
file://0020-getdents-define-getdents-getdents64-only-for-glibc.patch \
file://0021-Define-_GNU_SOURCE-for-MREMAP_MAYMOVE-definition.patch \
@@ -44,7 +48,11 @@ SRC_URI = "git://github.com/linux-test-project/ltp.git \
file://0035-fix-test_proc_kill-hang.patch \
file://0036-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch \
file://0039-commands-ar01-Fix-for-test-in-deterministic-mode.patch \
- file://0040-safe_macros-make-is_fuse-return-zero-if-fs_type-is-N.patch \
+ file://0040-read_all-Define-FNM_EXTMATCH-if-not-already-like-und.patch \
+ file://0041-cve-2017-5669-shmat-for-0-or-PAGESIZE-with-RND-flag-.patch \
+ file://0042-fs-ftest-ftest06.c-Fix-too-small-name-string-and-rel.patch \
+ file://0043-open-creat-skip-S_ISGID-check-on-files-created-by-no.patch \
+ file://0001-syscalls-fcntl-make-OFD-command-use-fcntl64-syscall-.patch \
"
S = "${WORKDIR}/git"
@@ -58,7 +66,7 @@ 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 "
+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 "
diff --git a/meta/recipes-extended/lzip/lzip_1.19.bb b/meta/recipes-extended/lzip/lzip_1.20.bb
index 099b364702a..d1fc2a1da80 100644
--- a/meta/recipes-extended/lzip/lzip_1.19.bb
+++ b/meta/recipes-extended/lzip/lzip_1.20.bb
@@ -7,8 +7,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=76d6e300ffd8fb9d18bd9b136a9bba13 \
SRC_URI = "${SAVANNAH_GNU_MIRROR}/lzip/lzip-${PV}.tar.gz"
-SRC_URI[md5sum] = "4dd8790d7528440d034fc713a8680bd3"
-SRC_URI[sha256sum] = "ffadc4f56be1bc0d3ae155ec4527bd003133bdc703a753b2cc683f610e646ba9"
+SRC_URI[md5sum] = "21c1517da2ace9689fd953918660b3c3"
+SRC_URI[sha256sum] = "c93b81a5a7788ef5812423d311345ba5d3bd4f5ebf1f693911e3a13553c1290c"
CONFIGUREOPTS = "\
'--srcdir=${S}' \
diff --git a/meta/recipes-extended/man-db/files/99_mandb b/meta/recipes-extended/man-db/files/99_mandb
new file mode 100644
index 00000000000..9b8a1712b7c
--- /dev/null
+++ b/meta/recipes-extended/man-db/files/99_mandb
@@ -0,0 +1 @@
+d man man 0755 /var/cache/man none
diff --git a/meta/recipes-extended/man-db/man-db_2.8.1.bb b/meta/recipes-extended/man-db/man-db_2.8.3.bb
index 8328a671f2c..97e5a3d6fb9 100644
--- a/meta/recipes-extended/man-db/man-db_2.8.1.bb
+++ b/meta/recipes-extended/man-db/man-db_2.8.3.bb
@@ -4,18 +4,29 @@ 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"
-SRC_URI[md5sum] = "51842978e06686286421f9498d1009b7"
-SRC_URI[sha256sum] = "a6aec641ca3d9942b054cc0e9c3f05cb46a3a992bc0006795755e2fed1357f3e"
+SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/man-db/man-db-${PV}.tar.xz \
+ file://99_mandb"
+SRC_URI[md5sum] = "6f3055e18fdd1ce5cbbdb30403991ec7"
+SRC_URI[sha256sum] = "5932a1ca366e1ec61a3ece1a3afa0e92f2fdc125b61d236f20cc6ff9d80cc4ac"
-DEPENDS = "libpipeline gdbm groff-native"
+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
-EXTRA_OECONF = "--with-pager=less --disable-cache-owner"
+EXTRA_OECONF = "--with-pager=less"
+
+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
diff --git a/meta/recipes-extended/man-pages/man-pages_4.14.bb b/meta/recipes-extended/man-pages/man-pages_4.16.bb
index f8bd090d192..a64587cf0bb 100644
--- a/meta/recipes-extended/man-pages/man-pages_4.14.bb
+++ b/meta/recipes-extended/man-pages/man-pages_4.16.bb
@@ -7,10 +7,15 @@ LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://README;md5=794f701617cc03fe50c53257660d8ec4"
SRC_URI = "${KERNELORG_MIRROR}/linux/docs/${BPN}/Archive/${BP}.tar.gz"
-SRC_URI[md5sum] = "82bd2d05c4d0dba5e7a90d39c9555197"
-SRC_URI[sha256sum] = "aeebc6b09a11e7f7bbc98f3984fe8b8b2bde9d2f5f9dcbd4348a9e0d93704238"
+SRC_URI[md5sum] = "d1fb8ba312a1c15e0bfda911a98c5544"
+SRC_URI[sha256sum] = "d38b0460bf3f35c95faf7f8cf52dac1216d86a47866f5e5f2fda88c61da04960"
-RDEPENDS_${PN} = "man"
+inherit manpages
+
+MAN_PKG = "${PN}"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[manpages] = ""
do_configure[noexec] = "1"
do_compile[noexec] = "1"
diff --git a/meta/recipes-extended/mc/mc_4.8.20.bb b/meta/recipes-extended/mc/mc_4.8.21.bb
index 70d1b5e0a96..c6a4500b8e8 100644
--- a/meta/recipes-extended/mc/mc_4.8.20.bb
+++ b/meta/recipes-extended/mc/mc_4.8.21.bb
@@ -9,8 +9,8 @@ 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] = "dcfc7aa613c62291a0f71f6b698d8267"
-SRC_URI[sha256sum] = "2d85daaa6ab26e524946df4823ac2f69802bc16bc967781b5e28d5b86fc3b979"
+SRC_URI[md5sum] = "63d2b90e2198ee79d08eb4a8989220e2"
+SRC_URI[sha256sum] = "251d9f0ef9309ef3eea0fdc4c12b8b61149e5056bef1b2de2ccc7f015d973444"
inherit autotools gettext pkgconfig
diff --git a/meta/recipes-extended/mdadm/files/0001-Disable-gcc8-warnings.patch b/meta/recipes-extended/mdadm/files/0001-Disable-gcc8-warnings.patch
new file mode 100644
index 00000000000..739652cd559
--- /dev/null
+++ b/meta/recipes-extended/mdadm/files/0001-Disable-gcc8-warnings.patch
@@ -0,0 +1,152 @@
+From b83218de2623c0bbe9af355a81ae8385d7f30cfc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 9 May 2018 12:56:41 -0700
+Subject: [PATCH] Disable gcc8 warnings
+
+This is needed until
+https://bugzilla.redhat.com/show_bug.cgi?id=1553958
+
+Fix super0.c issue which is triggered only in DEBUG_BUILD with -O1 (or any
+configuration without -ftree-vrp or with -fno-tree-vrp)
+
+super0.c: In function 'examine_super0':
+super0.c:238:32: error: 'snprintf' output may be truncated before the last format character [-Werror=format-truncation=]
+ snprintf(nb, sizeof(nb), "%4d", d);
+ ^
+
+Upstream-Status: Inappropriate [Workaround]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ Monitor.c | 4 +++-
+ mdopen.c | 4 ++++
+ super-ddf.c | 4 ++++
+ super-intel.c | 6 ++++++
+ super1.c | 5 +++++
+ super0.c | 2 +-
+ 6 files changed, 22 insertions(+), 1 deletion(-)
+
+diff --git a/super0.c b/super0.c
+index f5b4507..264b598 100644
+--- a/super0.c
++++ b/super0.c
+@@ -231,7 +231,7 @@
+ d++) {
+ mdp_disk_t *dp;
+ char *dv;
+- char nb[11];
++ char nb[12];
+ int wonly, failfast;
+ if (d>=0) dp = &sb->disks[d];
+ else dp = &sb->this_disk;
+diff --git a/Monitor.c b/Monitor.c
+index 802a9d9..23b246b 100644
+--- a/Monitor.c
++++ b/Monitor.c
+@@ -441,7 +441,8 @@ static void alert(char *event, char *dev, char *disc, struct alert_info *info)
+ event, dev);
+ }
+ }
+-
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wformat-truncation"
+ static int check_array(struct state *st, struct mdstat_ent *mdstat,
+ int test, struct alert_info *ainfo,
+ int increments, char *prefer)
+@@ -683,6 +684,7 @@ static int check_array(struct state *st, struct mdstat_ent *mdstat,
+ return 1;
+ return 0;
+ }
++#pragma GCC diagnostic pop
+
+ static int add_new_arrays(struct mdstat_ent *mdstat, struct state **statelist,
+ int test, struct alert_info *info)
+diff --git a/mdopen.c b/mdopen.c
+index 685ca32..406aba4 100644
+--- a/mdopen.c
++++ b/mdopen.c
+@@ -26,6 +26,9 @@
+ #include "md_p.h"
+ #include <ctype.h>
+
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wformat-truncation"
++
+ void make_parts(char *dev, int cnt)
+ {
+ /* make 'cnt' partition devices for 'dev'
+@@ -99,6 +102,7 @@ void make_parts(char *dev, int cnt)
+ }
+ free(name);
+ }
++#pragma GCC diagnostic pop
+
+ /*
+ * We need a new md device to assemble/build/create an array.
+diff --git a/super-ddf.c b/super-ddf.c
+index 1707ad1..e08d289 100644
+--- a/super-ddf.c
++++ b/super-ddf.c
+@@ -2846,6 +2846,9 @@ static void _set_config_size(struct phys_disk_entry *pde, const struct dl *dl)
+ (unsigned long long)cfs, (unsigned long long)(dl->size-cfs));
+ }
+
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wformat-overflow"
++
+ /* Add a device to a container, either while creating it or while
+ * expanding a pre-existing container
+ */
+@@ -2981,6 +2984,7 @@ static int add_to_super_ddf(struct supertype *st,
+
+ return 0;
+ }
++#pragma GCC diagnostic pop
+
+ static int remove_from_super_ddf(struct supertype *st, mdu_disk_info_t *dk)
+ {
+diff --git a/super-intel.c b/super-intel.c
+index 00a2925..44fbead 100644
+--- a/super-intel.c
++++ b/super-intel.c
+@@ -298,6 +298,11 @@ struct md_list {
+ };
+
+ #define pr_vrb(fmt, arg...) (void) (verbose && pr_err(fmt, ##arg))
++#pragma GCC diagnostic push
++# if __GNUC__ == 8
++# pragma GCC diagnostic ignored "-Wstringop-truncation"
++# endif
++#pragma GCC diagnostic ignored "-Wformat-truncation"
+
+ static __u8 migr_type(struct imsm_dev *dev)
+ {
+@@ -11618,3 +11623,4 @@ struct superswitch super_imsm = {
+ .get_bad_blocks = imsm_get_badblocks,
+ #endif /* MDASSEMBLE */
+ };
++#pragma GCC diagnostic pop
+diff --git a/super1.c b/super1.c
+index 87a74cb..71c515f 100644
+--- a/super1.c
++++ b/super1.c
+@@ -1091,6 +1091,10 @@ static struct mdinfo *container_content1(struct supertype *st, char *subarray)
+ return info;
+ }
+
++#pragma GCC diagnostic push
++# if __GNUC__ == 8
++# pragma GCC diagnostic ignored "-Wstringop-truncation"
++#endif
+ static int update_super1(struct supertype *st, struct mdinfo *info,
+ char *update,
+ char *devname, int verbose,
+@@ -1473,6 +1477,7 @@ static int init_super1(struct supertype *st, mdu_array_info_t *info,
+
+ return 1;
+ }
++#pragma GCC diagnostic pop
+
+ struct devinfo {
+ int fd;
diff --git a/meta/recipes-extended/mdadm/files/0001-use-memmove-instead-of-memcpy-on-overlapping-region.patch b/meta/recipes-extended/mdadm/files/0001-use-memmove-instead-of-memcpy-on-overlapping-region.patch
new file mode 100644
index 00000000000..44351b6569e
--- /dev/null
+++ b/meta/recipes-extended/mdadm/files/0001-use-memmove-instead-of-memcpy-on-overlapping-region.patch
@@ -0,0 +1,31 @@
+From ab18f04cf89ef4e8521c81c50477e1363b2d333b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 28 Apr 2018 09:46:12 -0700
+Subject: [PATCH] use memmove instead of memcpy on overlapping region
+
+Fixes
+super0.c:526:3: error: 'memcpy' accessing 3936 bytes at offsets 156 and 160 overlaps 3932 bytes at offset 160 [-Werror=restrict]
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ super0.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/super0.c b/super0.c
+index f5b4507..264b598 100644
+--- a/super0.c
++++ b/super0.c
+@@ -523,7 +523,7 @@ static int update_super0(struct supertype *st, struct mdinfo *info,
+ * up 4 bytes before continuing
+ */
+ __u32 *sb32 = (__u32*)sb;
+- memcpy(sb32+MD_SB_GENERIC_CONSTANT_WORDS+7,
++ memmove(sb32+MD_SB_GENERIC_CONSTANT_WORDS+7,
+ sb32+MD_SB_GENERIC_CONSTANT_WORDS+7+1,
+ (MD_SB_WORDS - (MD_SB_GENERIC_CONSTANT_WORDS+7+1))*4);
+ if (verbose >= 0)
+--
+2.17.0
+
diff --git a/meta/recipes-extended/mdadm/mdadm_4.0.bb b/meta/recipes-extended/mdadm/mdadm_4.0.bb
index dc098f19b6b..2c4d88a9e7a 100644
--- a/meta/recipes-extended/mdadm/mdadm_4.0.bb
+++ b/meta/recipes-extended/mdadm/mdadm_4.0.bb
@@ -22,6 +22,8 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/raid/mdadm/${BPN}-${PV}.tar.xz \
file://0004-mdadm-Forced-type-conversion-to-avoid-truncation.patch \
file://0005-Add-a-comment-to-indicate-valid-fallthrough.patch \
file://0001-Use-CC-to-check-for-implicit-fallthrough-warning-sup.patch \
+ file://0001-use-memmove-instead-of-memcpy-on-overlapping-region.patch \
+ file://0001-Disable-gcc8-warnings.patch \
"
SRC_URI[md5sum] = "2cb4feffea9167ba71b5f346a0c0a40d"
SRC_URI[sha256sum] = "1d6ae7f24ced3a0fa7b5613b32f4a589bb4881e3946a5a2c3724056254ada3a9"
@@ -40,7 +42,7 @@ CFLAGS_append_mipsarchn32 = ' -D__SANE_USERSPACE_TYPES__'
do_compile() {
# Point to right sbindir
- sed -i -e "s;BINDIR = /sbin;BINDIR = $base_sbindir;" ${S}/Makefile
+ sed -i -e "s;BINDIR = /sbin;BINDIR = $base_sbindir;" -e "s;UDEVDIR = /lib;UDEVDIR = $nonarch_base_libdir;" ${S}/Makefile
oe_runmake SYSROOT="${STAGING_DIR_TARGET}"
}
diff --git a/meta/recipes-extended/mingetty/mingetty_1.08.bb b/meta/recipes-extended/mingetty/mingetty_1.08.bb
index 3c16228b0d1..491b8920938 100644
--- a/meta/recipes-extended/mingetty/mingetty_1.08.bb
+++ b/meta/recipes-extended/mingetty/mingetty_1.08.bb
@@ -16,6 +16,7 @@ EXTRA_OEMAKE = "CC='${CC}' \
CFLAGS='${CFLAGS} -D_GNU_SOURCE'"
do_install(){
+ sed -i -e "s;SBINDIR=/sbin;SBINDIR=$base_sbindir;" ${S}/Makefile
install -d ${D}${mandir}/man8 ${D}/${base_sbindir}
oe_runmake install DESTDIR=${D}
}
diff --git a/meta/recipes-extended/minicom/minicom_2.7.1.bb b/meta/recipes-extended/minicom/minicom_2.7.1.bb
index e6afe2b6555..1e6f1317ebe 100644
--- a/meta/recipes-extended/minicom/minicom_2.7.1.bb
+++ b/meta/recipes-extended/minicom/minicom_2.7.1.bb
@@ -7,7 +7,7 @@ LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=420477abc567404debca0a2a1cb6b645 \
file://src/minicom.h;beginline=1;endline=12;md5=a58838cb709f0db517f4e42730c49e81"
-SRC_URI = "https://alioth.debian.org/frs/download.php/latestfile/3/${BP}.tar.gz \
+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 \
@@ -16,8 +16,6 @@ SRC_URI = "https://alioth.debian.org/frs/download.php/latestfile/3/${BP}.tar.gz
SRC_URI[md5sum] = "9021cb8c5445f6e6e74b2acc39962d62"
SRC_URI[sha256sum] = "532f836b7a677eb0cb1dca8d70302b73729c3d30df26d58368d712e5cca041f1"
-UPSTREAM_CHECK_URI = "https://alioth.debian.org/frs/?group_id=30018"
-
PACKAGECONFIG ??= ""
PACKAGECONFIG[lockdev] = "--enable-lockdev,--disable-lockdev,lockdev"
diff --git a/meta/recipes-extended/mktemp/files/disable-strip.patch b/meta/recipes-extended/mktemp/files/disable-strip.patch
deleted file mode 100644
index e06869e3adf..00000000000
--- a/meta/recipes-extended/mktemp/files/disable-strip.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-diff --git a/Makefile.in b/Makefile.in
-index 37b3cc9..f1026f3 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -95,7 +95,7 @@ install-dirs:
- $(DESTDIR)$(mandir)/man1
-
- install-binaries: $(PROG)
-- $(INSTALL) -m 0555 -s $(PROG) $(DESTDIR)$(bindir)/$(PROG)
-+ $(INSTALL) -m 0555 $(PROG) $(DESTDIR)$(bindir)/$(PROG)
-
- install-man:
- $(INSTALL) -m 0444 $(srcdir)/mktemp.$(mantype) \
diff --git a/meta/recipes-extended/mktemp/files/fix-parallel-make.patch b/meta/recipes-extended/mktemp/files/fix-parallel-make.patch
deleted file mode 100644
index f3b6dcc34ab..00000000000
--- a/meta/recipes-extended/mktemp/files/fix-parallel-make.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-This fixes the parallel make install failure
-
-Upstream-Status: Accepted
-http://www.gratisoft.us/bugzilla/show_bug.cgi?id=528
-
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-
-Index: mktemp-1.7/Makefile.in
-===================================================================
---- mktemp-1.7.orig/Makefile.in
-+++ mktemp-1.7/Makefile.in
-@@ -94,10 +94,10 @@ install-dirs:
- $(SHELL) $(srcdir)/mkinstalldirs $(DESTDIR)$(bindir) \
- $(DESTDIR)$(mandir)/man1
-
--install-binaries: $(PROG)
-+install-binaries: install-dirs $(PROG)
- $(INSTALL) -m 0555 $(PROG) $(DESTDIR)$(bindir)/$(PROG)
-
--install-man:
-+install-man: install-dirs
- $(INSTALL) -m 0444 $(srcdir)/mktemp.$(mantype) \
- $(DESTDIR)$(mandir)/man1/mktemp.1
-
diff --git a/meta/recipes-extended/mktemp/mktemp_1.7.bb b/meta/recipes-extended/mktemp/mktemp_1.7.bb
deleted file mode 100644
index e8ae5c6b724..00000000000
--- a/meta/recipes-extended/mktemp/mktemp_1.7.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "Enables safe temporary file creation from shell scripts"
-HOMEPAGE = "http://www.mktemp.org/"
-BUGTRACKER = "http://www.mktemp.org/bugs"
-SECTION = "console/utils"
-LICENSE = "ISC"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=430680f6322a1eb87199b5e01a82c0d4"
-
-PR = "r3"
-
-SRC_URI = "ftp://ftp.mktemp.org/pub/mktemp/${BPN}-${PV}.tar.gz \
- file://disable-strip.patch \
- file://fix-parallel-make.patch \
- "
-
-SRC_URI[md5sum] = "787bbed9fa2ee8e7645733c0e8e65172"
-SRC_URI[sha256sum] = "8e94b9e1edf866b2609545da65b627996ac5d158fda071e492bddb2f4a482675"
-
-inherit autotools update-alternatives
-
-EXTRA_OECONF = "--with-libc"
-
-do_install_append () {
- if [ "${base_bindir}" != "${bindir}" ] ; then
- install -d ${D}${base_bindir}
- mv ${D}${bindir}/mktemp ${D}${base_bindir}/mktemp
- rmdir ${D}${bindir}
- fi
-}
-
-ALTERNATIVE_${PN} = "mktemp"
-ALTERNATIVE_LINK_NAME[mktemp] = "${base_bindir}/mktemp"
-ALTERNATIVE_PRIORITY = "60"
-
-ALTERNATIVE_${PN}-doc = "mktemp.1"
-ALTERNATIVE_PRIORITY_${PN}-doc = "300"
-ALTERNATIVE_LINK_NAME[mktemp.1] = "${mandir}/man1/mktemp.1"
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
index 5657fd8c5ba..a4e3285cdb6 100644
--- a/meta/recipes-extended/net-tools/net-tools_1.60-26.bb
+++ b/meta/recipes-extended/net-tools/net-tools_1.60-26.bb
@@ -48,7 +48,16 @@ PARALLEL_MAKE = ""
# up all previously applied patches in the start
nettools_do_patch() {
cd ${S}
- quilt pop -a || true
+ # 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
diff --git a/meta/recipes-extended/newt/libnewt-python_0.52.20.bb b/meta/recipes-extended/newt/libnewt-python_0.52.20.bb
index 20369effeb4..433d184c710 100644
--- a/meta/recipes-extended/newt/libnewt-python_0.52.20.bb
+++ b/meta/recipes-extended/newt/libnewt-python_0.52.20.bb
@@ -25,4 +25,4 @@ PACKAGES_remove = "whiptail"
FILES_${PN} = "${PYTHON_SITEPACKAGES_DIR}/*"
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/newt/libnewt_0.52.20.bb b/meta/recipes-extended/newt/libnewt_0.52.20.bb
index 65ce70c47d0..264ef3b8adf 100644
--- a/meta/recipes-extended/newt/libnewt_0.52.20.bb
+++ b/meta/recipes-extended/newt/libnewt_0.52.20.bb
@@ -51,4 +51,4 @@ do_compile_prepend() {
FILES_whiptail = "${bindir}/whiptail"
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb b/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb
index 9002fbc3732..e8616880248 100644
--- a/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb
+++ b/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb
@@ -86,10 +86,8 @@ RDEPENDS_packagegroup-core-full-cmdline-utils = "\
mc-fish \
mc-helpers \
mc-helpers-perl \
- mktemp \
ncurses \
net-tools \
- popt \
procps \
psmisc \
sed \
@@ -129,23 +127,14 @@ RDEPENDS_packagegroup-core-full-cmdline-initscripts = "\
RDEPENDS_packagegroup-core-full-cmdline-multiuser = "\
cracklib \
gzip \
- ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libuser', '', d)} \
shadow \
sudo \
"
RDEPENDS_packagegroup-core-full-cmdline-sys-services = "\
at \
- bzip2 \
cronie \
- dbus \
- elfutils \
- gzip \
- less \
logrotate \
nfs-utils \
- pciutils \
rpcbind \
- tcp-wrappers \
- tzdata \
"
diff --git a/meta/recipes-extended/packagegroups/packagegroup-core-lsb.bb b/meta/recipes-extended/packagegroups/packagegroup-core-lsb.bb
index 53d100ce740..933864aee8f 100644
--- a/meta/recipes-extended/packagegroups/packagegroup-core-lsb.bb
+++ b/meta/recipes-extended/packagegroups/packagegroup-core-lsb.bb
@@ -158,7 +158,6 @@ RDEPENDS_packagegroup-core-lsb-core = "\
make \
man \
man-pages \
- mktemp \
msmtp \
patch \
procps \
@@ -220,7 +219,7 @@ RDEPENDS_packagegroup-core-lsb-desktop = "\
liberation-fonts \
gtk+ \
atk \
- libasound \
+ alsa-lib \
"
RDEPENDS_packagegroup-core-lsb-runtime-add = "\
diff --git a/meta/recipes-extended/pam/libpam_1.3.0.bb b/meta/recipes-extended/pam/libpam_1.3.0.bb
index 92ab72a42f8..3aec2cdb4c3 100644
--- a/meta/recipes-extended/pam/libpam_1.3.0.bb
+++ b/meta/recipes-extended/pam/libpam_1.3.0.bb
@@ -32,7 +32,7 @@ SRC_URI_append_libc-musl = " file://0001-Add-support-for-defining-missing-funcit
file://include_paths_header.patch \
"
-DEPENDS = "bison-native flex flex-native cracklib libxml2-native"
+DEPENDS = "bison-native flex flex-native cracklib libxml2-native virtual/crypt"
EXTRA_OECONF = "--with-db-uniquename=_pam \
--includedir=${includedir}/security \
diff --git a/meta/recipes-extended/pbzip2/pbzip2/0001-pbzip2-Fix-invalid-suffix-on-literal-C-11-warning.patch b/meta/recipes-extended/pbzip2/pbzip2/0001-pbzip2-Fix-invalid-suffix-on-literal-C-11-warning.patch
new file mode 100644
index 00000000000..8fc377c31be
--- /dev/null
+++ b/meta/recipes-extended/pbzip2/pbzip2/0001-pbzip2-Fix-invalid-suffix-on-literal-C-11-warning.patch
@@ -0,0 +1,73 @@
+From de4a948d356c9befb88c796168e97eb05b9a3385 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 23 Apr 2018 22:54:42 -0700
+Subject: [PATCH] pbzip2: Fix invalid suffix on literal C++11 warning
+
+Fixes -Wreserved-user-defined-literal] errors.
+Also reported in launchpad here https://bugs.launchpad.net/pbzip2/+bug/1746369
+
+Upstream-Status: Submitted [https://launchpadlibrarian.net/355230152/pbzip2.patch]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ pbzip2.cpp | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/pbzip2.cpp b/pbzip2.cpp
+index 66ca978..4287ea7 100644
+--- a/pbzip2.cpp
++++ b/pbzip2.cpp
+@@ -1220,7 +1220,7 @@ int producer_decompress(int hInfile, OFF_T fileSize, queue *fifo)
+ // give warning to user if block is larger than 250 million bytes
+ if (fileData->bufSize > 250000000)
+ {
+- fprintf(stderr, "pbzip2: *WARNING: Compressed block size is large [%"PRIuMAX" bytes].\n",
++ fprintf(stderr, "pbzip2: *WARNING: Compressed block size is large [%" PRIuMAX " bytes].\n",
+ (uintmax_t) fileData->bufSize);
+ fprintf(stderr, " If program aborts, use regular BZIP2 to decompress.\n");
+ }
+@@ -1829,7 +1829,7 @@ void *fileWriter(void *outname)
+
+ if (QuietMode != 1)
+ {
+- fprintf(stderr, " Output Size: %"PRIuMAX" bytes\n", (uintmax_t)CompressedSize);
++ fprintf(stderr, " Output Size: %" PRIuMAX " bytes\n", (uintmax_t)CompressedSize);
+ }
+
+ #ifdef PBZIP_DEBUG
+@@ -2072,7 +2072,7 @@ int directcompress(int hInfile, OFF_T fileSize, int blockSize, const char *OutFi
+ close(hOutfile);
+ if (QuietMode != 1)
+ {
+- fprintf(stderr, " Output Size: %"PRIuMAX" bytes\n", (uintmax_t)CompressedSize);
++ fprintf(stderr, " Output Size: %" PRIuMAX " bytes\n", (uintmax_t)CompressedSize);
+ }
+
+ syncSetProducerDone(1); // Not really needed for direct version
+@@ -2794,7 +2794,7 @@ void outputBufferInit(size_t size)
+ // unlikely to get here since more likely exception will be thrown
+ if (OutputBuffer.size() != size)
+ {
+- fprintf(stderr, "pbzip2: *ERROR: Could not initialize (OutputBuffer); size=%"PRIuMAX"! Aborting...\n", (uintmax_t)size);
++ fprintf(stderr, "pbzip2: *ERROR: Could not initialize (OutputBuffer); size=%" PRIuMAX "! Aborting...\n", (uintmax_t)size);
+ safe_mutex_unlock(OutMutex);
+ exit(1);
+ }
+@@ -4102,7 +4102,7 @@ int main(int argc, char* argv[])
+ if (decompress == 1)
+ fprintf(stderr, " BWT Block Size: %c00k\n", BWTblockSizeChar);
+ if (hasInFile)
+- fprintf(stderr, " Input Size: %"PRIuMAX" bytes\n", (uintmax_t)InFileSize);
++ fprintf(stderr, " Input Size: %" PRIuMAX " bytes\n", (uintmax_t)InFileSize);
+ }
+
+ if (decompress == 1)
+@@ -4224,7 +4224,7 @@ int main(int argc, char* argv[])
+ {
+ NumBufferedBlocksMax = numCPU;
+ if (QuietMode != 1)
+- fprintf(stderr, "*Warning* Max memory limit increased to %"PRIuMAX" MB to support %d CPUs\n", (uintmax_t)((NumBufferedBlocksMax + (numCPU * 2)) * blockSize)/1000000, numCPU);
++ fprintf(stderr, "*Warning* Max memory limit increased to %" PRIuMAX " MB to support %d CPUs\n", (uintmax_t)((NumBufferedBlocksMax + (numCPU * 2)) * blockSize)/1000000, numCPU);
+ }
+ else
+ {
diff --git a/meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb b/meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb
index 06d37adc365..7b1b0a117e5 100644
--- a/meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb
+++ b/meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb
@@ -11,12 +11,15 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=398b8832c6f840cfebd20ab2be6a3743"
DEPENDS = "bzip2"
DEPENDS_append_class-native = " bzip2-replacement-native"
-SRC_URI = "https://launchpad.net/${BPN}/1.1/${PV}/+download/${BP}.tar.gz"
+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 \
+ "
SRC_URI[md5sum] = "4cb87da2dba05540afce162f34b3a9a6"
SRC_URI[sha256sum] = "8fd13eaaa266f7ee91f85c1ea97c86d9c9cc985969db9059cdebcb1e1b7bdbe6"
-UPSTREAM_CHECK_URI = "http://compression.ca/pbzip2/"
+UPSTREAM_CHECK_URI = "https://launchpad.net/pbzip2/+milestones"
+UPSTREAM_CHECK_REGEX = "pbzip2 (?P<pver>\d+(\.\d+)+)"
EXTRA_OEMAKE = "CXX='${CXX} ${CXXFLAGS}' LDFLAGS='${LDFLAGS}'"
diff --git a/meta/recipes-extended/perl/libxml-sax-perl_0.99.bb b/meta/recipes-extended/perl/libxml-sax-perl_1.00.bb
index cdcbebffce6..141830efe83 100644
--- a/meta/recipes-extended/perl/libxml-sax-perl_0.99.bb
+++ b/meta/recipes-extended/perl/libxml-sax-perl_1.00.bb
@@ -12,14 +12,13 @@ SECTION = "libs"
LICENSE = "Artistic-1.0 | GPL-1.0+"
DEPENDS += "libxml-namespacesupport-perl-native"
RDEPENDS_${PN} += "libxml-namespacesupport-perl libxml-sax-base-perl perl-module-file-temp"
-PR = "r2"
LIC_FILES_CHKSUM = "file://LICENSE;md5=65c4cd8f39c24c7135ed70dacbcb09e3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/G/GR/GRANTM/XML-SAX-${PV}.tar.gz"
-SRC_URI[md5sum] = "290f5375ae87fdebfdb5bc3854019f24"
-SRC_URI[sha256sum] = "32b04b8e36b6cc4cfc486de2d859d87af5386dd930f2383c49347050d6f5ad84"
+SRC_URI[md5sum] = "861a454f7bf269990ed2c1c125f4db48"
+SRC_URI[sha256sum] = "45ea6564ef8692155d57b2de0862b6442d3c7e29f4a9bc9ede5d7ecdc74c2ae3"
S = "${WORKDIR}/XML-SAX-${PV}"
diff --git a/meta/recipes-extended/pixz/pixz/0001-configure-Detect-headers-before-using-them.patch b/meta/recipes-extended/pixz/pixz/0001-configure-Detect-headers-before-using-them.patch
deleted file mode 100644
index 12bae28dc76..00000000000
--- a/meta/recipes-extended/pixz/pixz/0001-configure-Detect-headers-before-using-them.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From c84480be8df6966c538d1fb67ccae2f42cc46421 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 22 Mar 2016 07:36:54 +0000
-Subject: [PATCH 1/2] configure: Detect headers before using them
-
-Current logic does not work when system does not have
-sys/endian.h, since it tried to reuse the cached results
-from first try of detecting htole64 in sys/endian.h which is
-'no' and hence the second try to look into endian.h also
-comes out negative.
-
-So we check for header and then run the test for symbols
-and these symbols are not standard and we need to define _GNU_SOURCE
-for it to work, this issue is exposed by systems using musl e.g.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted
-
- configure.ac | 13 +++++++++----
- 1 file changed, 9 insertions(+), 4 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 4cb56bc..5e23c50 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -69,12 +69,17 @@ AC_FUNC_MALLOC
- AC_FUNC_REALLOC
- AC_FUNC_STRTOD
- AC_CHECK_FUNCS([memchr memmove memset strerror strtol])
--AC_CHECK_DECLS([htole64, le64toh],
-- [],
-+AC_CHECK_HEADER([sys/endian.h],
- [
-- AC_CHECK_DECLS([htole64, le64toh], [], [], [#include <endian.h>])
-+ AC_CHECK_DECLS([htole64, le64toh], [], [], [#define _GNU_SOURCE 1 #include <sys/endian.h>])
- ],
-- [#include <sys/endian.h>])
-+ [], [])
-+
-+AC_CHECK_HEADER([endian.h],
-+ [
-+ AC_CHECK_DECLS([htole64, le64toh], [], [], [#define _GNU_SOURCE 1 #include <endian.h>])
-+ ],
-+ [], [])
-
- AC_CONFIG_FILES([Makefile
- src/Makefile
---
-1.8.3.1
-
diff --git a/meta/recipes-extended/pixz/pixz/0002-endian-Use-macro-bswap_64-instead-of-__bswap_64.patch b/meta/recipes-extended/pixz/pixz/0002-endian-Use-macro-bswap_64-instead-of-__bswap_64.patch
deleted file mode 100644
index 6b615988db7..00000000000
--- a/meta/recipes-extended/pixz/pixz/0002-endian-Use-macro-bswap_64-instead-of-__bswap_64.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 5f3a535987bae4c3e3d9e9079c7526e399f7aecd Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 22 Mar 2016 07:42:39 +0000
-Subject: [PATCH 2/2] endian: Use macro bswap_64 instead of __bswap_64
-
-byteswap.h defines then as public APIs on all libc
-on linux including musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted
- src/endian.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/src/endian.c b/src/endian.c
-index b7724f3..51aea58 100644
---- a/src/endian.c
-+++ b/src/endian.c
-@@ -15,6 +15,7 @@ void xle64enc(uint8_t *d, uint64_t n) {
- #include <stdint.h>
- #ifdef __linux__
- #include <endian.h>
-+ #include <byteswap.h>
- #else
- #include <sys/endian.h>
- #endif
-@@ -23,7 +24,7 @@ void xle64enc(uint8_t *d, uint64_t n) {
- # if __BYTE_ORDER == __LITTLE_ENDIAN
- # define htole64(x) (x)
- # else
--# define htole64(x) __bswap_64 (x)
-+# define htole64(x) bswap_64 (x)
- # endif
- #endif
-
-@@ -31,7 +32,7 @@ void xle64enc(uint8_t *d, uint64_t n) {
- # if __BYTE_ORDER == __LITTLE_ENDIAN
- # define le64toh(x) (x)
- # else
--# define le64toh(x) __bswap_64 (x)
-+# define le64toh(x) bswap_64 (x)
- # endif
- #endif
-
---
-1.8.3.1
-
diff --git a/meta/recipes-extended/pixz/pixz/936d8068ae19d95260d3058f41dd6cf718101cd6.patch b/meta/recipes-extended/pixz/pixz/936d8068ae19d95260d3058f41dd6cf718101cd6.patch
deleted file mode 100644
index e3489db5b8f..00000000000
--- a/meta/recipes-extended/pixz/pixz/936d8068ae19d95260d3058f41dd6cf718101cd6.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 936d8068ae19d95260d3058f41dd6cf718101cd6 Mon Sep 17 00:00:00 2001
-From: Christian Krause <kizkizzbangbang@googlemail.com>
-Date: Sat, 26 Dec 2015 14:36:17 +0100
-Subject: [PATCH] option to not build man page
-
-fixes #56
----
- configure.ac | 23 +++++++++++++++++++----
- src/Makefile.am | 2 ++
- 2 files changed, 21 insertions(+), 4 deletions(-)
-
-Upstream-Status: Backport
-RP 2016/01/22
-
-diff --git a/configure.ac b/configure.ac
-index b437e56..4cb56bc 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -20,13 +20,28 @@ AC_CHECK_FILE(
- [src/pixz.1],
- [],
- [
-- AC_CHECK_PROG(A2X, a2x, a2x, [])
-- if test "x$A2X" = x ; then
-- AC_MSG_ERROR([AsciiDoc not found, not able to generate the man page.])
-- fi
-+ AC_ARG_WITH(
-+ [manpage],
-+ [ --without-manpage don't build man page],
-+ [case ${withval} in
-+ yes) manpage=true ;;
-+ no) manpage=false ;;
-+ *) AC_MSG_ERROR([bad value ${withval} for --with-manpage]) ;;
-+ esac],
-+ [manpage=true]
-+ )
- ]
- )
-
-+AM_CONDITIONAL([MANPAGE], [test x$manpage = xtrue])
-+
-+if test x$manpage = xtrue ; then
-+ AC_CHECK_PROG(A2X, a2x, a2x, [])
-+ if test "x$A2X" = x ; then
-+ AC_MSG_ERROR([AsciiDoc not found, not able to generate the man page.])
-+ fi
-+fi
-+
- # Checks for libraries.
- AC_CHECK_LIB([m], [ceil])
- AX_PTHREAD
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 600ec90..b98f450 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -15,6 +15,7 @@ pixz_SOURCES = \
- read.c \
- write.c
-
-+if MANPAGE
- # TODO remove when possible: This is a hack because a2x is not able to output the man pages to a
- # specific directory, only to where the source is.
- pixz.1: pixz.1.asciidoc
-@@ -26,3 +27,4 @@ man_MANS = pixz.1
- CLEANFILES = pixz.1
-
- EXTRA_DIST = $(man_MANS) pixz.1.asciidoc
-+endif
diff --git a/meta/recipes-extended/pixz/pixz_1.0.6.bb b/meta/recipes-extended/pixz/pixz_1.0.6.bb
deleted file mode 100644
index 30325865812..00000000000
--- a/meta/recipes-extended/pixz/pixz_1.0.6.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "Parallel, indexed xz compressor"
-
-DEPENDS = "xz libarchive"
-
-SRC_URI = "https://github.com/vasi/pixz/releases/download/v${PV}/${BPN}-${PV}.tar.xz"
-SRC_URI[md5sum] = "f6dc5909c9a31b192f69aa397ae8df48"
-SRC_URI[sha256sum] = "02c50746b134fa1b1aae41fcc314d7c6f1919b3d48bcdea01bf11769f83f72e8"
-
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5cf6d164086105f1512ccb81bfff1926"
-
-SRC_URI += "file://936d8068ae19d95260d3058f41dd6cf718101cd6.patch \
- file://0001-configure-Detect-headers-before-using-them.patch \
- file://0002-endian-Use-macro-bswap_64-instead-of-__bswap_64.patch \
-"
-UPSTREAM_CHECK_URI = "https://github.com/vasi/pixz/releases"
-
-PACKAGECONFIG[manpages] = "--with-manpage, --without-manpage, asciidoc-native"
-
-CFLAGS_append_libc-musl = " -D_GNU_SOURCE"
-CACHED_CONFIGUREVARS += "ac_cv_file_src_pixz_1=no"
-
-inherit autotools pkgconfig manpages
-
-BBCLASSEXTEND = "native"
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
new file mode 100644
index 00000000000..e548194362c
--- /dev/null
+++ b/meta/recipes-extended/procps/procps/0001-Fix-out-of-tree-builds.patch
@@ -0,0 +1,24 @@
+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_3.3.12.bb b/meta/recipes-extended/procps/procps_3.3.15.bb
index 99e43c5349e..9756db0e7b7 100644
--- a/meta/recipes-extended/procps/procps_3.3.12.bb
+++ b/meta/recipes-extended/procps/procps_3.3.15.bb
@@ -14,10 +14,11 @@ 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] = "957e42e8b193490b2111252e4a2b443c"
-SRC_URI[sha256sum] = "6ed65ab86318f37904e8f9014415a098bec5bc53653e5d9ab404f95ca5e1a7d4"
+SRC_URI[md5sum] = "2b0717a7cb474b3d6dfdeedfbad2eccc"
+SRC_URI[sha256sum] = "10bd744ffcb3de2d591d2f6acf1a54a7ba070fdcc432a855931a5057149f0465"
S = "${WORKDIR}/procps-ng-${PV}"
@@ -42,7 +43,7 @@ do_install_append () {
CONFFILES_${PN} = "${sysconfdir}/sysctl.conf"
-bindir_progs = "free pkill pmap pgrep pwdx skill snice top uptime"
+bindir_progs = "free pkill pmap pgrep pwdx skill snice top uptime w"
base_bindir_progs += "kill pidof ps watch"
base_sbindir_progs += "sysctl"
diff --git a/meta/recipes-extended/psmisc/psmisc_23.0.bb b/meta/recipes-extended/psmisc/psmisc_23.1.bb
index 2b07f497410..f07c9db1e7e 100644
--- a/meta/recipes-extended/psmisc/psmisc_23.0.bb
+++ b/meta/recipes-extended/psmisc/psmisc_23.1.bb
@@ -6,5 +6,5 @@ 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 = "67b1da268f4c0ce6859980e3dfcfaec5b2448e80"
+SRCREV = "bd952b3063f2466ecab4ec093026cf0c4ce373c7"
S = "${WORKDIR}/git"
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
new file mode 100644
index 00000000000..434b6b1c4cf
--- /dev/null
+++ b/meta/recipes-extended/rpcbind/rpcbind/rpcbind_add_option_to_fix_port_number.patch
@@ -0,0 +1,130 @@
+From 76f8598fd20727908e760cbb497dd6a17eda4af5 Mon Sep 17 00:00:00 2001
+From: Roy Li <rongqing.li@windriver.com>
+Date: Wed, 17 Sep 2014 13:22:14 +0800
+Subject: [PATCH] add option to make users able to use fixed port number
+
+Upstream-Status: Submitted [https://sourceforge.net/p/rpcbind/discussion/716839/thread/32af721d/]
+
+Signed-off-by: Li Wang <li.wang@windriver.com>
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ man/rpcbind.8 | 4 +++-
+ src/rpcb_svc_com.c | 17 +++++++++++++++++
+ src/rpcbind.c | 8 ++++++--
+ 3 files changed, 26 insertions(+), 3 deletions(-)
+
+diff --git a/man/rpcbind.8 b/man/rpcbind.8
+index af6200f..2e6146b 100644
+--- a/man/rpcbind.8
++++ b/man/rpcbind.8
+@@ -11,7 +11,7 @@
+ .Nd universal addresses to RPC program number mapper
+ .Sh SYNOPSIS
+ .Nm
+-.Op Fl adhiLls
++.Op Fl adhpiLls
+ .Sh DESCRIPTION
+ The
+ .Nm
+@@ -107,6 +107,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.
+diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c
+index 8aef9e5..c2632a4 100644
+--- a/src/rpcb_svc_com.c
++++ b/src/rpcb_svc_com.c
+@@ -48,6 +48,7 @@
+ #include <rpc/rpc.h>
+ #include <rpc/rpcb_prot.h>
+ #include <rpc/svc_dg.h>
++#include <rpc/rpc_com.h>
+ #include <netconfig.h>
+ #include <errno.h>
+ #include <syslog.h>
+@@ -497,6 +498,7 @@ xdr_opaque_parms(XDR *xdrs, struct r_rmtcall_args *cap)
+
+ static struct rmtcallfd_list *rmthead;
+ static struct rmtcallfd_list *rmttail;
++extern unsigned short fixed_port;
+
+ int
+ create_rmtcall_fd(struct netconfig *nconf)
+@@ -504,6 +506,8 @@ create_rmtcall_fd(struct netconfig *nconf)
+ int fd;
+ struct rmtcallfd_list *rmt;
+ SVCXPRT *xprt;
++ struct __rpc_sockinfo si;
++ struct t_bind taddr;
+
+ if ((fd = __rpc_nconf2fd(nconf)) == -1) {
+ if (debugging)
+@@ -512,6 +516,19 @@ create_rmtcall_fd(struct netconfig *nconf)
+ nconf->nc_device, errno);
+ 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
+ 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
+--- a/src/rpcbind.c
++++ b/src/rpcbind.c
+@@ -111,6 +111,7 @@ int runasdaemon = 0;
+ int insecure = 0;
+ int oldstyle_local = 0;
+ int verboselog = 0;
++unsigned short fixed_port = 0;
+
+ char **hosts = NULL;
+ int nhosts = 0;
+@@ -869,7 +870,7 @@ parseargs(int argc, char *argv[])
+ {
+ int c;
+ oldstyle_local = 1;
+- while ((c = getopt(argc, argv, "adh:ilswf")) != -1) {
++ while ((c = getopt(argc, argv, "adh:p:ilswf")) != -1) {
+ switch (c) {
+ case 'a':
+ doabort = 1; /* when debugging, do an abort on */
+@@ -887,6 +888,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 'i':
+ insecure = 1;
+ break;
+@@ -905,7 +909,7 @@ parseargs(int argc, char *argv[])
+ break;
+ #endif
+ default: /* error */
+- fprintf(stderr, "usage: rpcbind [-adhilswf]\n");
++ fprintf(stderr, "usage: rpcbind [-adhpilswf]\n");
+ exit (1);
+ }
+ }
+--
+1.9.1
+
diff --git a/meta/recipes-extended/rpcbind/rpcbind_0.2.4.bb b/meta/recipes-extended/rpcbind/rpcbind_0.2.4.bb
index dcdee6c4686..3c6774c28b2 100644
--- a/meta/recipes-extended/rpcbind/rpcbind_0.2.4.bb
+++ b/meta/recipes-extended/rpcbind/rpcbind_0.2.4.bb
@@ -18,6 +18,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/rpcbind/rpcbind-${PV}.tar.bz2 \
file://0001-rpcbind-pair-all-svc_getargs-calls-with-svc_freeargs.patch \
file://pmapproc_dump-Fixed-typo-in-memory-leak-patch.patch \
file://rpcbproc_callit_com-Stop-freeing-a-static-pointer.patch \
+ file://rpcbind_add_option_to_fix_port_number.patch \
"
SRC_URI[md5sum] = "cf10cd41ed8228fc54c316191c1f07fe"
SRC_URI[sha256sum] = "074a9a530dc7c11e0d905aa59bcb0847c009313f02e98d3d798aa9568f414c66"
diff --git a/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto.bb b/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto.bb
new file mode 100644
index 00000000000..cb5b288c484
--- /dev/null
+++ b/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto.bb
@@ -0,0 +1,37 @@
+# Copyright (C) 2018 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "rpcsvc protocol definitions from glibc"
+
+DESCRIPTION = "This package contains rpcsvc proto.x files from glibc, which are\
+missing in libtirpc. Additional it contains rpcgen, which is needed\
+to create header files and sources from protocol files.\
+This package is only needed, if glibc is installed without the\
+deprecated sunrpc functionality and libtirpc should replace it."
+
+HOMEPAGE = "https://github.com/thkukuk/rpcsvc-proto"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0daaf958d5531ab86169ec6e275e1517"
+SECTION = "libs"
+DEPENDS += "rpcsvc-proto-native"
+
+PV = "1.4+git${SRCPV}"
+
+SRCREV = "9bc3b5b785723cfff459b0c01b39d87d4bed975c"
+
+SRC_URI = "git://github.com/thkukuk/${BPN} \
+ file://0001-Use-cross-compiled-rpcgen.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+EXTRA_OEMAKE_class-native = " -C rpcgen"
+
+do_install_append() {
+ # They come from quota recipe
+ rm -rf ${D}${includedir}/rpcsvc/rquota.[hx]
+}
+
+BBCLASSEXTEND += "native nativesdk"
diff --git a/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto/0001-Use-cross-compiled-rpcgen.patch b/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto/0001-Use-cross-compiled-rpcgen.patch
new file mode 100644
index 00000000000..208974004b4
--- /dev/null
+++ b/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto/0001-Use-cross-compiled-rpcgen.patch
@@ -0,0 +1,23 @@
+From de9345207beb71e4d5b6b40b52cac4ebd2e3858c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 27 Apr 2018 23:23:20 -0700
+Subject: [PATCH] Use cross compiled rpcgen
+
+Upstream-Status: Inappropriate [OE-Specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ rpcsvc/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: git/rpcsvc/Makefile.am
+===================================================================
+--- git.orig/rpcsvc/Makefile.am
++++ git/rpcsvc/Makefile.am
+@@ -12,5 +12,5 @@ nodist_rpcsvc_HEADERS = klm_prot.h nlm_p
+ nfs_prot.h rquota.h sm_inter.h
+
+ %.h: %.x
+- $(top_builddir)/rpcgen/rpcgen -h -o $@ $<
++ rpcgen -h -o $@ $<
+
diff --git a/meta/recipes-extended/screen/screen_4.6.2.bb b/meta/recipes-extended/screen/screen_4.6.2.bb
index 7a33c31d8cc..375dce949d0 100644
--- a/meta/recipes-extended/screen/screen_4.6.2.bb
+++ b/meta/recipes-extended/screen/screen_4.6.2.bb
@@ -11,7 +11,7 @@ LICENSE = "GPLv3+"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
file://screen.h;endline=26;md5=3971142989289a8198a544220703c2bf"
-DEPENDS = "ncurses \
+DEPENDS = "ncurses virtual/crypt \
${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
RDEPENDS_${PN} = "base-files"
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 a6f604b6523..aac2d42b12a 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
@@ -11,6 +11,7 @@ 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 +++
@@ -22,7 +23,7 @@ Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
7 files changed, 21 insertions(+)
diff --git a/src/groupadd.c b/src/groupadd.c
-index 39b4ec0..f716f57 100644
+index 63e1c48..a596c49 100644
--- a/src/groupadd.c
+++ b/src/groupadd.c
@@ -34,6 +34,9 @@
@@ -36,7 +37,7 @@ index 39b4ec0..f716f57 100644
#include <fcntl.h>
#include <getopt.h>
diff --git a/src/groupdel.c b/src/groupdel.c
-index da99347..46a679c 100644
+index 70bed01..ababd81 100644
--- a/src/groupdel.c
+++ b/src/groupdel.c
@@ -34,6 +34,9 @@
@@ -50,7 +51,7 @@ index da99347..46a679c 100644
#include <fcntl.h>
#include <grp.h>
diff --git a/src/groupmems.c b/src/groupmems.c
-index e4f107f..95cb073 100644
+index fc91c8b..2842514 100644
--- a/src/groupmems.c
+++ b/src/groupmems.c
@@ -32,6 +32,9 @@
@@ -64,7 +65,7 @@ index e4f107f..95cb073 100644
#include <getopt.h>
#include <grp.h>
diff --git a/src/groupmod.c b/src/groupmod.c
-index d9d3807..6229737 100644
+index 72daf2c..8965f9d 100644
--- a/src/groupmod.c
+++ b/src/groupmod.c
@@ -34,6 +34,9 @@
@@ -78,7 +79,7 @@ index d9d3807..6229737 100644
#include <fcntl.h>
#include <getopt.h>
diff --git a/src/useradd.c b/src/useradd.c
-index e1ebf50..25679d8 100644
+index 3aaf45c..1ab9174 100644
--- a/src/useradd.c
+++ b/src/useradd.c
@@ -34,6 +34,9 @@
@@ -92,7 +93,7 @@ index e1ebf50..25679d8 100644
#include <ctype.h>
#include <errno.h>
diff --git a/src/userdel.c b/src/userdel.c
-index 19b12bc..a083929 100644
+index c8de1d3..24d3ea9 100644
--- a/src/userdel.c
+++ b/src/userdel.c
@@ -34,6 +34,9 @@
@@ -102,11 +103,11 @@ index 19b12bc..a083929 100644
+/* 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>
- #include <getopt.h>
diff --git a/src/usermod.c b/src/usermod.c
-index 685b50a..28e5cfc 100644
+index ccfbb99..24fb60d 100644
--- a/src/usermod.c
+++ b/src/usermod.c
@@ -34,6 +34,9 @@
@@ -116,9 +117,9 @@ index 685b50a..28e5cfc 100644
+/* 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>
- #include <fcntl.h>
--
-2.1.0
+2.11.0
diff --git a/meta/recipes-extended/shadow/files/0001-Do-not-read-login.defs-before-doing-chroot.patch b/meta/recipes-extended/shadow/files/0001-Do-not-read-login.defs-before-doing-chroot.patch
deleted file mode 100644
index 828b95a572b..00000000000
--- a/meta/recipes-extended/shadow/files/0001-Do-not-read-login.defs-before-doing-chroot.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 170c25c8e0b5c3dc2615d1db94c8d24a13ff99bf Mon Sep 17 00:00:00 2001
-From: Peter Kjellerstedt <pkj@axis.com>
-Date: Thu, 11 Sep 2014 15:11:23 +0200
-Subject: [PATCH] Do not read login.defs before doing chroot()
-
-If "useradd --root <root> ..." was used, the login.defs file would still
-be read from /etc/login.defs instead of <root>/etc/login.defs. This was
-due to getdef_ulong() being called before process_root_flag().
-
-Upstream-Status: Submitted [http://lists.alioth.debian.org/pipermail/pkg-shadow-devel/2014-September/010446.html]
-
-Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
----
- src/useradd.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/src/useradd.c b/src/useradd.c
-index a8a1f76..e1ebf50 100644
---- a/src/useradd.c
-+++ b/src/useradd.c
-@@ -1993,9 +1993,11 @@ int main (int argc, char **argv)
- #endif /* USE_PAM */
- #endif /* ACCT_TOOLS_SETUID */
-
-+#ifdef ENABLE_SUBIDS
- /* Needed for userns check */
-- uid_t uid_min = (uid_t) getdef_ulong ("UID_MIN", 1000UL);
-- uid_t uid_max = (uid_t) getdef_ulong ("UID_MAX", 60000UL);
-+ uid_t uid_min;
-+ uid_t uid_max;
-+#endif
-
- /*
- * Get my name so that I can use it to report errors.
-@@ -2026,6 +2028,8 @@ int main (int argc, char **argv)
- is_shadow_grp = sgr_file_present ();
- #endif
- #ifdef ENABLE_SUBIDS
-+ uid_min = (uid_t) getdef_ulong ("UID_MIN", 1000UL);
-+ uid_max = (uid_t) getdef_ulong ("UID_MAX", 60000UL);
- is_sub_uid = sub_uid_file_present () && !rflg &&
- (!user_id || (user_id <= uid_max && user_id >= uid_min));
- is_sub_gid = sub_gid_file_present () && !rflg &&
---
-1.9.0
-
diff --git a/meta/recipes-extended/shadow/files/0001-shadow-CVE-2017-12424 b/meta/recipes-extended/shadow/files/0001-shadow-CVE-2017-12424
deleted file mode 100644
index 4d3e1e016c6..00000000000
--- a/meta/recipes-extended/shadow/files/0001-shadow-CVE-2017-12424
+++ /dev/null
@@ -1,46 +0,0 @@
-From 954e3d2e7113e9ac06632aee3c69b8d818cc8952 Mon Sep 17 00:00:00 2001
-From: Tomas Mraz <tmraz@fedoraproject.org>
-Date: Fri, 31 Mar 2017 16:25:06 +0200
-Subject: [PATCH] Fix buffer overflow if NULL line is present in db.
-
-If ptr->line == NULL for an entry, the first cycle will exit,
-but the second one will happily write past entries buffer.
-We actually do not want to exit the first cycle prematurely
-on ptr->line == NULL.
-Signed-off-by: Tomas Mraz <tmraz@fedoraproject.org>
-
-CVE: CVE-2017-12424
-Upstream-Status: Backport
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- lib/commonio.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/lib/commonio.c b/lib/commonio.c
-index b10da06..31edbaa 100644
---- a/lib/commonio.c
-+++ b/lib/commonio.c
-@@ -751,16 +751,16 @@ commonio_sort (struct commonio_db *db, int (*cmp) (const void *, const void *))
- for (ptr = db->head;
- (NULL != ptr)
- #if KEEP_NIS_AT_END
-- && (NULL != ptr->line)
-- && ( ('+' != ptr->line[0])
-- && ('-' != ptr->line[0]))
-+ && ((NULL == ptr->line)
-+ || (('+' != ptr->line[0])
-+ && ('-' != ptr->line[0])))
- #endif
- ;
- ptr = ptr->next) {
- n++;
- }
- #if KEEP_NIS_AT_END
-- if ((NULL != ptr) && (NULL != ptr->line)) {
-+ if (NULL != ptr) {
- nis = ptr;
- }
- #endif
---
-2.1.0
-
diff --git a/meta/recipes-extended/shadow/files/0001-useradd-copy-extended-attributes-of-home.patch b/meta/recipes-extended/shadow/files/0001-useradd-copy-extended-attributes-of-home.patch
index 60a46e1257d..474b3a257ee 100644
--- a/meta/recipes-extended/shadow/files/0001-useradd-copy-extended-attributes-of-home.patch
+++ b/meta/recipes-extended/shadow/files/0001-useradd-copy-extended-attributes-of-home.patch
@@ -1,47 +1,41 @@
-From acec93540eba6899661c607408498ac72ab07a47 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jos=C3=A9=20Bollo?= <jose.bollo@iot.bzh>
-Date: Tue, 7 Mar 2017 16:03:03 +0100
Subject: [PATCH] useradd: copy extended attributes of home
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
The Home directory wasn't getting the extended attributes
of /etc/skel. This patch fixes that issue and adds the copy
of the extended attributes of the root of the home directory.
-Upstream-Status: Submitted [http://lists.alioth.debian.org/pipermail/pkg-shadow-commits/2017-March/003804.html]
+Upstream-Status: Pending
-Change-Id: Icd633f7c6c494efd2a30cb8f04c306f749ad0c3b
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
src/useradd.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/useradd.c b/src/useradd.c
-index a8a1f76..8aefb9c 100644
+index e721e52..c74e491 100644
--- a/src/useradd.c
+++ b/src/useradd.c
-@@ -52,6 +52,9 @@
- #include <sys/stat.h>
- #include <sys/types.h>
+@@ -54,6 +54,9 @@
+ #include <sys/wait.h>
#include <time.h>
+ #include <unistd.h>
+#ifdef WITH_ATTR
+#include <attr/libattr.h>
+#endif
#include "chkname.h"
#include "defines.h"
#include "faillog.h"
-@@ -1915,6 +1918,9 @@ static void create_home (void)
- chown (user_home, user_id, user_gid);
- chmod (user_home,
+@@ -2042,6 +2045,9 @@ static void create_home (void)
+ (void) chown (prefix_user_home, user_id, user_gid);
+ chmod (prefix_user_home,
0777 & ~getdef_num ("UMASK", GETDEF_DEFAULT_UMASK));
+#ifdef WITH_ATTR
-+ attr_copy_file (def_template, user_home, NULL, NULL);
++ attr_copy_file (def_template, user_home, NULL, NULL);
+#endif
home_added = true;
#ifdef WITH_AUDIT
audit_logger (AUDIT_ADD_USER, Prog,
--
-2.9.3
+2.11.0
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
index 2f084b4e9b0..70241365938 100644
--- 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
@@ -1,17 +1,17 @@
-Upstream-Status: Inappropriate [OE specific]
+Subject: [PATCH] useradd.c: create parent directories when necessary
-Subject: useradd.c: create parent directories when necessary
+Upstream-Status: Inappropriate [OE specific]
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
- src/useradd.c | 72 +++++++++++++++++++++++++++++++++++++++------------------
- 1 file changed, 49 insertions(+), 23 deletions(-)
+ src/useradd.c | 82 +++++++++++++++++++++++++++++++++++++++--------------------
+ 1 file changed, 54 insertions(+), 28 deletions(-)
diff --git a/src/useradd.c b/src/useradd.c
-index 4bd969d..cb5dd6c 100644
+index 7214e72..3aaf45c 100644
--- a/src/useradd.c
+++ b/src/useradd.c
-@@ -1896,6 +1896,35 @@ static void usr_update (void)
+@@ -2021,6 +2021,35 @@ static void usr_update (void)
}
/*
@@ -47,63 +47,68 @@ index 4bd969d..cb5dd6c 100644
* create_home - create the user's home directory
*
* create_home() creates the user's home directory if it does not
-@@ -1910,39 +1939,36 @@ static void create_home (void)
+@@ -2038,42 +2067,39 @@ static void create_home (void)
fail_exit (E_HOMEDIR);
}
#endif
- /* XXX - create missing parent directories. --marekm */
-- if (mkdir (user_home, 0) != 0) {
+- if (mkdir (prefix_user_home, 0) != 0) {
- fprintf (stderr,
- _("%s: cannot create directory %s\n"),
-- Prog, user_home);
--#ifdef WITH_AUDIT
+- 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);
--#endif
-- fail_exit (E_HOMEDIR);
-- }
-- chown (user_home, user_id, user_gid);
-- chmod (user_home,
-- 0777 & ~getdef_num ("UMASK", GETDEF_DEFAULT_UMASK));
--#ifdef WITH_ATTR
-- attr_copy_file (def_template, user_home, NULL, NULL);
--#endif
-- home_added = true;
-+ mkdir_p(user_home);
-+ }
-+ if (access (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_SUCCESS);
-+ SHADOW_AUDIT_FAILURE);
++ audit_logger (AUDIT_ADD_USER, Prog,
++ "adding home directory",
++ user_name, (unsigned int) user_id,
++ SHADOW_AUDIT_FAILURE);
#endif
--#ifdef WITH_SELINUX
-- /* Reset SELinux to create files with default contexts */
-- if (reset_selinux_file_context () != 0) {
- fail_exit (E_HOMEDIR);
- }
+- (void) chown (prefix_user_home, user_id, user_gid);
+- chmod (prefix_user_home,
+- 0777 & ~getdef_num ("UMASK", GETDEF_DEFAULT_UMASK));
+ fail_exit (E_HOMEDIR);
+ }
-+ chown (user_home, user_id, user_gid);
-+ chmod (user_home,
++ (void) chown (prefix_user_home, user_id, user_gid);
++ chmod (prefix_user_home,
+ 0777 & ~getdef_num ("UMASK", GETDEF_DEFAULT_UMASK));
-+#ifdef WITH_ATTR
+ #ifdef WITH_ATTR
+- attr_copy_file (def_template, user_home, NULL, NULL);
+ attr_copy_file (def_template, user_home, NULL, NULL);
-+#endif
+ #endif
+- home_added = true;
+ home_added = true;
-+#ifdef WITH_AUDIT
+ #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
+ #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
@@ -111,5 +116,5 @@ index 4bd969d..cb5dd6c 100644
/*
--
-1.7.9.5
+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
index 615c6e002d1..fa7eb07aa51 100644
--- 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
@@ -1,21 +1,21 @@
-Upstream-Status: Inappropriate [OE specific]
+Subject: [PATCH] Allow for setting password in clear text
-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 | 8 +++++++-
- src/groupmod.c | 8 +++++++-
- src/useradd.c | 9 +++++++--
- src/usermod.c | 8 +++++++-
- 5 files changed, 32 insertions(+), 9 deletions(-)
+ 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 25e288d..856b087 100644
+index 3c98a8d..b8093d5 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
-@@ -88,10 +88,10 @@ chgpasswd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBSELINUX) $(LIBCRYPT)
+@@ -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)
@@ -28,9 +28,9 @@ index 25e288d..856b087 100644
grpck_LDADD = $(LDADD) $(LIBSELINUX)
grpconv_LDADD = $(LDADD) $(LIBSELINUX)
grpunconv_LDADD = $(LDADD) $(LIBSELINUX)
-@@ -111,9 +111,9 @@ su_SOURCES = \
+@@ -117,9 +117,9 @@ su_SOURCES = \
suauth.c
- su_LDADD = $(LDADD) $(LIBPAM) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD)
+ 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)
@@ -41,33 +41,39 @@ index 25e288d..856b087 100644
install-am: all-am
diff --git a/src/groupadd.c b/src/groupadd.c
-index f716f57..4e28c26 100644
+index b57006c..63e1c48 100644
--- a/src/groupadd.c
+++ b/src/groupadd.c
-@@ -124,6 +124,7 @@ static /*@noreturn@*/void usage (int status)
+@@ -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);
-@@ -387,12 +388,13 @@ static void process_flags (int argc, char **argv)
+ 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:",
-+ while ((c = getopt_long (argc, argv, "fg:hK:op:P:rR:",
+- 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':
-@@ -444,6 +446,10 @@ static void process_flags (int argc, char **argv)
+@@ -445,12 +447,20 @@ static void process_flags (int argc, char **argv)
pflg = true;
group_passwd = optarg;
break;
@@ -78,32 +84,57 @@ index f716f57..4e28c26 100644
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 d9d3807..68f49d1 100644
+index b293b98..72daf2c 100644
--- a/src/groupmod.c
+++ b/src/groupmod.c
-@@ -127,6 +127,7 @@ static void usage (int status)
+@@ -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);
-@@ -375,10 +376,11 @@ static void process_flags (int argc, char **argv)
+ }
+@@ -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:",
-+ while ((c = getopt_long (argc, argv, "g:hn:op:P:R:",
+- 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':
-@@ -405,6 +407,10 @@ static void process_flags (int argc, char **argv)
+@@ -414,9 +416,17 @@ static void process_flags (int argc, char **argv)
group_passwd = optarg;
pflg = true;
break;
@@ -113,40 +144,65 @@ index d9d3807..68f49d1 100644
+ 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 b3bd451..4416f90 100644
+index c74e491..7214e72 100644
--- a/src/useradd.c
+++ b/src/useradd.c
-@@ -776,6 +776,7 @@ static void usage (int status)
+@@ -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);
-@@ -1050,6 +1051,7 @@ static void process_flags (int argc, char **argv)
+ (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'},
-@@ -1062,9 +1064,9 @@ static void process_flags (int argc, char **argv)
+ {"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:s:u:UZ:",
-+ "b:c:d:De:f:g:G:hk:K:lmMNop:P:rR:s:u:UZ:",
+- "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:s:u:U",
-+ "b:c:d:De:f:g:G:hk:K:lmMNop:P:rR:s:u:U",
+- "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) {
-@@ -1230,6 +1232,9 @@ static void process_flags (int argc, char **argv)
+@@ -1285,12 +1287,19 @@ static void process_flags (int argc, char **argv)
}
user_pass = optarg;
break;
@@ -156,36 +212,62 @@ index b3bd451..4416f90 100644
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 e7d4351..b79f7a3 100644
+index e571426..ccfbb99 100644
--- a/src/usermod.c
+++ b/src/usermod.c
-@@ -419,6 +419,7 @@ static /*@noreturn@*/void usage (int status)
+@@ -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);
-@@ -996,6 +997,7 @@ static void process_flags (int argc, char **argv)
+ (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'},
-@@ -1012,7 +1014,7 @@ static void process_flags (int argc, char **argv)
+ {"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:U"
-+ "ac:d:e:f:g:G:hl:Lmop:P:R:s:u:U"
+- "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 */
-@@ -1112,6 +1114,10 @@ static void process_flags (int argc, char **argv)
+@@ -1119,9 +1121,17 @@ static void process_flags (int argc, char **argv)
user_pass = optarg;
pflg = true;
break;
@@ -195,7 +277,24 @@ index e7d4351..b79f7a3 100644
+ 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
--
-1.7.9.5
+2.11.0
diff --git a/meta/recipes-extended/shadow/files/check_size_of_uid_t_and_gid_t_using_AC_CHECK_SIZEOF.patch b/meta/recipes-extended/shadow/files/check_size_of_uid_t_and_gid_t_using_AC_CHECK_SIZEOF.patch
deleted file mode 100644
index 185590cabdd..00000000000
--- a/meta/recipes-extended/shadow/files/check_size_of_uid_t_and_gid_t_using_AC_CHECK_SIZEOF.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 2cb54158b80cdbd97ca3b36df83f9255e923ae3f Mon Sep 17 00:00:00 2001
-From: James Le Cuirot <chewi@aura-online.co.uk>
-Date: Sat, 23 Aug 2014 09:46:39 +0100
-Subject: [PATCH] Check size of uid_t and gid_t using AC_CHECK_SIZEOF
-
-This built-in check is simpler than the previous method and, most
-importantly, works when cross-compiling.
-
-Upstream-Status: Accepted
-[https://github.com/shadow-maint/shadow/commit/2cb54158b80cdbd97ca3b36df83f9255e923ae3f]
-
-Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
----
- configure.in | 14 ++++----------
- 1 file changed, 4 insertions(+), 10 deletions(-)
-
-diff --git a/configure.in b/configure.in
-index 1a3f841..4a4d6d0 100644
---- a/configure.in
-+++ b/configure.in
-@@ -335,16 +335,10 @@ if test "$enable_subids" != "no"; then
- dnl
- dnl FIXME: check if 32 bit UIDs/GIDs are supported by libc
- dnl
-- AC_RUN_IFELSE([AC_LANG_SOURCE([
--#include <sys/types.h>
--int main(void) {
-- uid_t u;
-- gid_t g;
-- return (sizeof u < 4) || (sizeof g < 4);
--}
-- ])], [id32bit="yes"], [id32bit="no"])
--
-- if test "x$id32bit" = "xyes"; then
-+ AC_CHECK_SIZEOF([uid_t],, [#include "sys/types.h"])
-+ AC_CHECK_SIZEOF([gid_t],, [#include "sys/types.h"])
-+
-+ if test "$ac_cv_sizeof_uid_t" -ge 4 && test "$ac_cv_sizeof_gid_t" -ge 4; then
- AC_DEFINE(ENABLE_SUBIDS, 1, [Define to support the subordinate IDs.])
- enable_subids="yes"
- else
diff --git a/meta/recipes-extended/shadow/files/fix-installation-failure-with-subids-disabled.patch b/meta/recipes-extended/shadow/files/fix-installation-failure-with-subids-disabled.patch
deleted file mode 100644
index 02cb91aafdf..00000000000
--- a/meta/recipes-extended/shadow/files/fix-installation-failure-with-subids-disabled.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Upstream-Status: Pending
-
-Subject: fix installation failure with subids disabled
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/Makefile.am | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 25e288d..076f8ef 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -52,7 +52,10 @@ usbin_PROGRAMS = \
- noinst_PROGRAMS = id sulogin
-
- suidbins = su
--suidubins = chage chfn chsh expiry gpasswd newgrp passwd newuidmap newgidmap
-+suidubins = chage chfn chsh expiry gpasswd newgrp passwd
-+if ENABLE_SUBIDS
-+suidubins += newgidmap newuidmap
-+endif
- if ACCT_TOOLS_SETUID
- suidubins += chage chgpasswd chpasswd groupadd groupdel groupmod newusers useradd userdel usermod
- endif
---
-1.7.9.5
-
diff --git a/meta/recipes-extended/shadow/files/pam.d/chpasswd b/meta/recipes-extended/shadow/files/pam.d/chpasswd
index 9e3efa68ba7..b769d92ba48 100644
--- a/meta/recipes-extended/shadow/files/pam.d/chpasswd
+++ b/meta/recipes-extended/shadow/files/pam.d/chpasswd
@@ -1,4 +1,6 @@
# The PAM configuration file for the Shadow 'chpasswd' service
#
+auth sufficient pam_rootok.so
+account required pam_permit.so
password include common-password
diff --git a/meta/recipes-extended/shadow/files/pam.d/newusers b/meta/recipes-extended/shadow/files/pam.d/newusers
index 4aa3dde48b5..4c59dfa478a 100644
--- a/meta/recipes-extended/shadow/files/pam.d/newusers
+++ b/meta/recipes-extended/shadow/files/pam.d/newusers
@@ -1,4 +1,6 @@
# The PAM configuration file for the Shadow 'newusers' service
#
+auth sufficient pam_rootok.so
+account required pam_permit.so
password include common-password
diff --git a/meta/recipes-extended/shadow/files/usermod-fix-compilation-failure-with-subids-disabled.patch b/meta/recipes-extended/shadow/files/usermod-fix-compilation-failure-with-subids-disabled.patch
deleted file mode 100644
index 37dc153fca7..00000000000
--- a/meta/recipes-extended/shadow/files/usermod-fix-compilation-failure-with-subids-disabled.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Upstream-Status: Pending
-
-usermod: fix compilation failure with subids disabled
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/usermod.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/usermod.c b/src/usermod.c
-index e7d4351..685b50a 100644
---- a/src/usermod.c
-+++ b/src/usermod.c
-@@ -1360,7 +1360,7 @@ static void process_flags (int argc, char **argv)
- Prog, (unsigned long) user_newid);
- exit (E_UID_IN_USE);
- }
--
-+#ifdef ENABLE_SUBIDS
- if ( (vflg || Vflg)
- && !is_sub_uid) {
- fprintf (stderr,
-@@ -1376,6 +1376,7 @@ static void process_flags (int argc, char **argv)
- Prog, sub_gid_dbname (), "-w", "-W");
- exit (E_USAGE);
- }
-+#endif
- }
-
- /*
---
-1.7.9.5
-
diff --git a/meta/recipes-extended/shadow/shadow-securetty_4.2.1.bb b/meta/recipes-extended/shadow/shadow-securetty_4.6.bb
index c78f888cf40..c78f888cf40 100644
--- a/meta/recipes-extended/shadow/shadow-securetty_4.2.1.bb
+++ b/meta/recipes-extended/shadow/shadow-securetty_4.6.bb
diff --git a/meta/recipes-extended/shadow/shadow-sysroot_4.2.1.bb b/meta/recipes-extended/shadow/shadow-sysroot_4.6.bb
index ef014628f61..ef014628f61 100644
--- a/meta/recipes-extended/shadow/shadow-sysroot_4.2.1.bb
+++ b/meta/recipes-extended/shadow/shadow-sysroot_4.6.bb
diff --git a/meta/recipes-extended/shadow/shadow.inc b/meta/recipes-extended/shadow/shadow.inc
index 673207fc9bd..0fa80a282a8 100644
--- a/meta/recipes-extended/shadow/shadow.inc
+++ b/meta/recipes-extended/shadow/shadow.inc
@@ -8,14 +8,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=ed80ff1c2b40843cf5768e5229cf16e5 \
DEPENDS = "virtual/crypt"
-SRC_URI = "http://pkg-shadow.alioth.debian.org/releases/${BPN}-${PV}.tar.xz \
+UPSTREAM_CHECK_URI = "https://github.com/shadow-maint/shadow/releases"
+SRC_URI = "https://github.com/shadow-maint/shadow/releases/download/${PV}/${BP}.tar.gz \
file://shadow-4.1.3-dots-in-usernames.patch \
- file://usermod-fix-compilation-failure-with-subids-disabled.patch \
- file://fix-installation-failure-with-subids-disabled.patch \
- file://0001-Do-not-read-login.defs-before-doing-chroot.patch \
- file://check_size_of_uid_t_and_gid_t_using_AC_CHECK_SIZEOF.patch \
file://0001-useradd-copy-extended-attributes-of-home.patch \
- file://0001-shadow-CVE-2017-12424 \
${@bb.utils.contains('PACKAGECONFIG', 'pam', '${PAM_SRC_URI}', '', d)} \
"
@@ -35,8 +31,8 @@ SRC_URI_append_class-nativesdk = " \
file://0001-Disable-use-of-syslog-for-sysroot.patch \
"
-SRC_URI[md5sum] = "2bfafe7d4962682d31b5eba65dba4fc8"
-SRC_URI[sha256sum] = "3b0893d1476766868cd88920f4f1231c4795652aa407569faff802bcda0f3d41"
+SRC_URI[md5sum] = "36feb15665338ae3de414f2a88e434db"
+SRC_URI[sha256sum] = "4668f99bd087399c4a586084dc3b046b75f560720d83e92fd23bf7a89dda4d31"
# Additional Policy files for PAM
PAM_SRC_URI = "file://pam.d/chfn \
@@ -127,7 +123,8 @@ 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).
- install -d ${D}${localstatedir}/spool/mail
+ install -m 0775 -d ${D}${localstatedir}/spool/mail
+ chown root:mail ${D}${localstatedir}/spool/mail
if [ -e ${WORKDIR}/pam.d ]; then
install -d ${D}${sysconfdir}/pam.d/
diff --git a/meta/recipes-extended/shadow/shadow_4.2.1.bb b/meta/recipes-extended/shadow/shadow_4.6.bb
index 5675cb8cc94..5675cb8cc94 100644
--- a/meta/recipes-extended/shadow/shadow_4.2.1.bb
+++ b/meta/recipes-extended/shadow/shadow_4.6.bb
diff --git a/meta/recipes-extended/slang/slang_2.3.2.bb b/meta/recipes-extended/slang/slang_2.3.2.bb
index 87fd41af88a..e53c4321b9a 100644
--- a/meta/recipes-extended/slang/slang_2.3.2.bb
+++ b/meta/recipes-extended/slang/slang_2.3.2.bb
@@ -78,4 +78,4 @@ FILES_${PN} += "${libdir}/${BPN}/v2/modules/ ${datadir}/slsh/"
PARALLEL_MAKE = ""
PARALLEL_MAKEINST = ""
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/sudo/sudo.inc b/meta/recipes-extended/sudo/sudo.inc
index 362bd3a2eab..69dccde592d 100644
--- a/meta/recipes-extended/sudo/sudo.inc
+++ b/meta/recipes-extended/sudo/sudo.inc
@@ -4,7 +4,7 @@ HOMEPAGE = "http://www.sudo.ws"
BUGTRACKER = "http://www.sudo.ws/bugs/"
SECTION = "admin"
LICENSE = "ISC & BSD & Zlib"
-LIC_FILES_CHKSUM = "file://doc/LICENSE;md5=7765a3d787cb4fed3ccc3c9cee030af9 \
+LIC_FILES_CHKSUM = "file://doc/LICENSE;md5=cc4bf2366b059c9598e3947f885931ec \
file://plugins/sudoers/redblack.c;beginline=1;endline=41;md5=805782a8466975716f8376b2be9aedde \
file://lib/util/reallocarray.c;beginline=3;endline=16;md5=85b0905b795d4d58bf2e00635649eec6 \
file://lib/util/fnmatch.c;beginline=3;endline=27;md5=67f83ee9bd456557397082f8f1be0efd \
@@ -12,12 +12,14 @@ LIC_FILES_CHKSUM = "file://doc/LICENSE;md5=7765a3d787cb4fed3ccc3c9cee030af9 \
file://lib/util/glob.c;beginline=6;endline=31;md5=5872733146b9eb0deb79e1f664815b85 \
file://lib/util/snprintf.c;beginline=6;endline=34;md5=c82c1b3a5c32e08545c9ec5d71e41e50 \
file://include/sudo_queue.h;beginline=5;endline=27;md5=449af4cc57fc7d46f42090608ba3e681 \
- file://lib/util/inet_pton.c;beginline=3;endline=17;md5=3970ab0518ab79cbd0bafb697f10b33a"
+ file://lib/util/inet_pton.c;beginline=3;endline=17;md5=3970ab0518ab79cbd0bafb697f10b33a \
+ "
inherit autotools
PACKAGECONFIG ??= ""
PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib"
+PACKAGECONFIG[pam-wheel] = ",,,pam-plugin-wheel"
CONFFILES_${PN} = "${sysconfdir}/sudoers"
diff --git a/meta/recipes-extended/sudo/sudo_1.8.22.bb b/meta/recipes-extended/sudo/sudo_1.8.23.bb
index 91501781bf7..ce32bd187ef 100644
--- a/meta/recipes-extended/sudo/sudo_1.8.22.bb
+++ b/meta/recipes-extended/sudo/sudo_1.8.23.bb
@@ -7,10 +7,10 @@ SRC_URI = "http://ftp.sudo.ws/sudo/dist/sudo-${PV}.tar.gz \
PAM_SRC_URI = "file://sudo.pam"
-SRC_URI[md5sum] = "24abdea48db4c5abcd410167c801cc8c"
-SRC_URI[sha256sum] = "7256cb27c20883b14360eddbd17f98922073d104b214cf65aeacf1d9c9b9fd02"
+SRC_URI[md5sum] = "ea444d747feb1decfebdffd0b38b0739"
+SRC_URI[sha256sum] = "d863d29b6fc87bc784a3223350e2b28a2ff2c4738f0fb8f1c92bb38c3017e679"
-DEPENDS += " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+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 += " \
@@ -22,13 +22,17 @@ EXTRA_OECONF += " \
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 ${localstatedir}/run directory to avoid QA error
- rmdir -p --ignore-fail-on-non-empty ${D}${localstatedir}/run/sudo
+ # Explicitly remove the /run directory to avoid QA error
+ rmdir -p --ignore-fail-on-non-empty ${D}/run/sudo
}
FILES_${PN} += "${libdir}/tmpfiles.d"
diff --git a/meta/recipes-extended/sysklogd/sysklogd.inc b/meta/recipes-extended/sysklogd/sysklogd.inc
index 1a537fabf46..f151dd87f78 100644
--- a/meta/recipes-extended/sysklogd/sysklogd.inc
+++ b/meta/recipes-extended/sysklogd/sysklogd.inc
@@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
file://klogd.c;beginline=2;endline=19;md5=7e87ed0ae6142de079bce738c10c899d \
"
-inherit update-rc.d systemd
+inherit update-rc.d update-alternatives systemd
SRC_URI = "http://www.infodrom.org/projects/sysklogd/download/sysklogd-${PV}.tar.gz \
file://no-strip-install.patch \
@@ -33,7 +33,7 @@ SYSTEMD_AUTO_ENABLE = "enable"
INITSCRIPT_NAME = "syslog"
CONFFILES_${PN} = "${sysconfdir}/syslog.conf"
-RCONFLICTS_${PN}-syslog = "rsyslog busybox-syslog syslog-ng"
+RCONFLICTS_${PN} = "rsyslog busybox-syslog syslog-ng"
CFLAGS += "-DSYSV -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
@@ -58,6 +58,11 @@ do_install () {
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
diff --git a/meta/recipes-extended/sysstat/sysstat_11.7.1.bb b/meta/recipes-extended/sysstat/sysstat_11.7.4.bb
index 86738e7b730..c9b9130e9ff 100644
--- a/meta/recipes-extended/sysstat/sysstat_11.7.1.bb
+++ b/meta/recipes-extended/sysstat/sysstat_11.7.4.bb
@@ -4,5 +4,5 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a23a74b3f4caf9616230789d94217acb"
SRC_URI += "file://0001-Include-needed-headers-explicitly.patch"
-SRC_URI[md5sum] = "bdcda7c9048c7c22fb1f30f75285d13d"
-SRC_URI[sha256sum] = "303a595b1af0330b183a0f1febfccf89f183b9575ae0562b91fdb876f3ef1feb"
+SRC_URI[md5sum] = "421f958db80e67a27eda1ff6b8ebcdeb"
+SRC_URI[sha256sum] = "a96265a22784c29888669f961a0896841d177853f8f057efe063e891962b9090"
diff --git a/meta/recipes-extended/tar/tar.inc b/meta/recipes-extended/tar/tar.inc
deleted file mode 100644
index 93e4da114b4..00000000000
--- a/meta/recipes-extended/tar/tar.inc
+++ /dev/null
@@ -1,52 +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"
-
-SRC_URI = "${GNU_MIRROR}/tar/tar-${PV}.tar.bz2"
-
-inherit autotools gettext texinfo
-
-EXTRA_OECONF += "DEFAULT_RMT_DIR=${base_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 = "${base_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] = "${base_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.30.bb b/meta/recipes-extended/tar/tar_1.30.bb
index e743a6d0d0d..bd24f4762f4 100644
--- a/meta/recipes-extended/tar/tar_1.30.bb
+++ b/meta/recipes-extended/tar/tar_1.30.bb
@@ -1,18 +1,70 @@
-require tar.inc
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[acl] = "--with-posix-acls, --without-posix-acls, acl,"
-
+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 += "file://remove-gets.patch \
- file://musl_dirent.patch \
- "
+SRC_URI = "${GNU_MIRROR}/tar/tar-${PV}.tar.bz2 \
+ file://remove-gets.patch \
+ file://musl_dirent.patch \
+"
+
SRC_URI[md5sum] = "8404e4c1fc5a3000228ab2b8ad674a65"
SRC_URI[sha256sum] = "87592b86cb037c554375f5868bdd3cc57748aef38d6cb741c81065f0beac63b7"
+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=${base_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
+}
+
do_install_append_libc-musl() {
- rm -f ${D}${libdir}/charset.alias
- rmdir ${D}${libdir}
+ rm -f ${D}${libdir}/charset.alias
+ rmdir ${D}${libdir}
}
+
+PACKAGES =+ "${PN}-rmt"
+
+FILES_${PN}-rmt = "${base_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] = "${base_sbindir}/rmt"
+
+PROVIDES_append_class-native = " tar-replacement-native"
+NATIVE_PACKAGE_PATH_SUFFIX = "/${PN}"
+
+BBCLASSEXTEND = "native nativesdk"
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 3ece8c3012f..0f50674653e 100644
--- a/meta/recipes-extended/tcp-wrappers/tcp-wrappers_7.6.bb
+++ b/meta/recipes-extended/tcp-wrappers/tcp-wrappers_7.6.bb
@@ -8,6 +8,7 @@ LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://DISCLAIMER;md5=071bd69cb78b18888ea5e3da5c3127fa"
PR ="r10"
+DEPENDS += "libnsl2"
PACKAGES = "${PN}-dbg libwrap libwrap-doc libwrap-dev libwrap-staticdev ${PN} ${PN}-doc"
FILES_libwrap = "${base_libdir}/lib*${SOLIBS}"
@@ -67,7 +68,6 @@ EXTRA_OEMAKE = "'CC=${CC}' \
'KILL_OPT=-DKILL_IP_OPTIONS' \
'UMASK=-DDAEMON_UMASK=022' \
'NETGROUP=${EXTRA_OEMAKE_NETGROUP}' \
- 'LIBS=-lnsl' \
'ARFLAGS=rv' \
'AUX_OBJ=weak_symbols.o' \
'TLI=' \
diff --git a/meta/recipes-extended/time/time_1.8.bb b/meta/recipes-extended/time/time_1.9.bb
index fb3147a7347..e2b084caaeb 100644
--- a/meta/recipes-extended/time/time_1.8.bb
+++ b/meta/recipes-extended/time/time_1.9.bb
@@ -15,7 +15,7 @@ BBCLASSEXTEND = "native nativesdk"
SRC_URI = "${GNU_MIRROR}/time/time-${PV}.tar.gz"
-SRC_URI[md5sum] = "4e00dcb8c3ab11c7cf5a0d698828ac96"
-SRC_URI[sha256sum] = "8a2f540155961a35ba9b84aec5e77e3ae36c74cecb4484db455960601b7a2e1b"
+SRC_URI[md5sum] = "d2356e0fe1c0b85285d83c6b2ad51b5f"
+SRC_URI[sha256sum] = "fbacf0c81e62429df3e33bda4cee38756604f18e01d977338e23306a3e3b521e"
inherit autotools
diff --git a/meta/recipes-extended/tzcode/tzcode-native_2018d.bb b/meta/recipes-extended/tzcode/tzcode-native_2018e.bb
index 7933a5df962..9a4e46569a3 100644
--- a/meta/recipes-extended/tzcode/tzcode-native_2018d.bb
+++ b/meta/recipes-extended/tzcode/tzcode-native_2018e.bb
@@ -11,10 +11,10 @@ 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] = "96612b4f5d7e8804fd9a0981c021be90"
-SRC_URI[tzcode.sha256sum] = "7de44e85baad748d217e3fd60706f599f9aec68bce6356b163f52b0dbd40a8d9"
-SRC_URI[tzdata.md5sum] = "871a7ef808eb42ebc551acdb3d661554"
-SRC_URI[tzdata.sha256sum] = "5106eddceb5f1ae3a91dbd3960e1b8b11ba0dc08579a31cf0724a7691b10c054"
+SRC_URI[tzdata.md5sum] = "97d654f4d7253173b3eeb76a836dd65e"
+SRC_URI[tzdata.sha256sum] = "6b288e5926841a4cb490909fe822d85c36ae75538ad69baf20da9628b63b692e"
+SRC_URI[tzcode.md5sum] = "c4d7df0fff7ba5588b32c5f27e2caf97"
+SRC_URI[tzcode.sha256sum] = "ca340cf20e80b699d6e5c49b4ba47361b3aa681f06f38a0c88a8e8308c00ebce"
S = "${WORKDIR}"
diff --git a/meta/recipes-extended/tzdata/tzdata_2018d.bb b/meta/recipes-extended/tzdata/tzdata_2018e.bb
index ec24f449623..f806d5b97de 100644
--- a/meta/recipes-extended/tzdata/tzdata_2018d.bb
+++ b/meta/recipes-extended/tzdata/tzdata_2018e.bb
@@ -9,8 +9,8 @@ DEPENDS = "tzcode-native"
SRC_URI = "http://www.iana.org/time-zones/repository/releases/tzdata${PV}.tar.gz;name=tzdata"
UPSTREAM_CHECK_URI = "http://www.iana.org/time-zones"
-SRC_URI[tzdata.md5sum] = "871a7ef808eb42ebc551acdb3d661554"
-SRC_URI[tzdata.sha256sum] = "5106eddceb5f1ae3a91dbd3960e1b8b11ba0dc08579a31cf0724a7691b10c054"
+SRC_URI[tzdata.md5sum] = "97d654f4d7253173b3eeb76a836dd65e"
+SRC_URI[tzdata.sha256sum] = "6b288e5926841a4cb490909fe822d85c36ae75538ad69baf20da9628b63b692e"
inherit allarch
@@ -171,7 +171,7 @@ FILES_${PN} += "${datadir}/zoneinfo/Pacific/Honolulu \
${datadir}/zoneinfo/Asia/Dubai \
${datadir}/zoneinfo/Asia/Karachi \
${datadir}/zoneinfo/Asia/Dhaka \
- ${datadir}/zoneinfo/Asia/Bankok \
+ ${datadir}/zoneinfo/Asia/Bangkok \
${datadir}/zoneinfo/Asia/Hong_Kong \
${datadir}/zoneinfo/Asia/Tokyo \
${datadir}/zoneinfo/Australia/Darwin \
diff --git a/meta/recipes-extended/unzip/unzip/0001-unzip-fix-CVE-2018-1000035.patch b/meta/recipes-extended/unzip/unzip/0001-unzip-fix-CVE-2018-1000035.patch
new file mode 100644
index 00000000000..37289d1a539
--- /dev/null
+++ b/meta/recipes-extended/unzip/unzip/0001-unzip-fix-CVE-2018-1000035.patch
@@ -0,0 +1,48 @@
+From 349f566e6e757458843fa164a0f0584280e1501e Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Wed, 15 Aug 2018 16:20:53 +0800
+Subject: [PATCH] unzip: fix CVE-2018-1000035
+
+Upstream-Status: Backport
+
+CVE: CVE-2018-1000035
+
+backport from unzip6.10c23
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ fileio.c | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/fileio.c b/fileio.c
+index 36bfea3..7605a29 100644
+--- a/fileio.c
++++ b/fileio.c
+@@ -1582,6 +1582,8 @@ int UZ_EXP UzpPassword (pG, rcnt, pwbuf, size, zfn, efn)
+ int r = IZ_PW_ENTERED;
+ char *m;
+ char *prompt;
++ char *ep;
++ char *zp;
+
+ #ifndef REENTRANT
+ /* tell picky compilers to shut up about "unused variable" warnings */
+@@ -1590,9 +1592,12 @@ int UZ_EXP UzpPassword (pG, rcnt, pwbuf, size, zfn, efn)
+
+ if (*rcnt == 0) { /* First call for current entry */
+ *rcnt = 2;
+- if ((prompt = (char *)malloc(2*FILNAMSIZ + 15)) != (char *)NULL) {
+- sprintf(prompt, LoadFarString(PasswPrompt),
+- FnFilter1(zfn), FnFilter2(efn));
++ zp = FnFilter1( zfn);
++ ep = FnFilter2( efn);
++ prompt = (char *)malloc( /* Slightly too long (2* "%s"). */
++ sizeof( PasswPrompt)+ strlen( zp)+ strlen( ep));
++ if (prompt != (char *)NULL) {
++ sprintf(prompt, LoadFarString(PasswPrompt), zp, ep);
+ m = prompt;
+ } else
+ m = (char *)LoadFarString(PasswPrompt2);
+--
+2.7.4
+
diff --git a/meta/recipes-extended/unzip/unzip/symlink.patch b/meta/recipes-extended/unzip/unzip/symlink.patch
new file mode 100644
index 00000000000..a38f6f16123
--- /dev/null
+++ b/meta/recipes-extended/unzip/unzip/symlink.patch
@@ -0,0 +1,26 @@
+Unzip doesn't handle large zip files well and crashes:
+
+"This only happens if you have more then 16k entries and when one of
+the 16k entry infos is reused it happend to be previously used for
+a symlink entry."
+
+This patch is taken from Fedora (https://bugzilla.redhat.com/show_bug.cgi?id=972427)
+
+Upstream-Status: Pending (upstream is dead)
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+--- unzip60/process.c.sav 2013-06-09 12:08:57.070392264 +0200
++++ unzip60/process.c 2013-06-09 12:10:08.641696988 +0200
+@@ -1751,6 +1751,12 @@
+ = (G.crec.general_purpose_bit_flag & (1 << 11)) == (1 << 11);
+ #endif
+
++#ifdef SYMLINKS
++ /* Initialize the symlink flag, may be set by the platform-specific
++ mapattr function. */
++ G.pInfo->symlink = 0;
++#endif
++
+ return PK_COOL;
+
+ } /* end function process_cdir_file_hdr() */
diff --git a/meta/recipes-extended/unzip/unzip_6.0.bb b/meta/recipes-extended/unzip/unzip_6.0.bb
index 105d048f55b..b9d87dd6396 100644
--- a/meta/recipes-extended/unzip/unzip_6.0.bb
+++ b/meta/recipes-extended/unzip/unzip_6.0.bb
@@ -19,6 +19,8 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/infozip/UnZip%206.x%20%28latest%29/UnZip%206.0/
file://fix-security-format.patch \
file://18-cve-2014-9913-unzip-buffer-overflow.patch \
file://19-cve-2016-9844-zipinfo-buffer-overflow.patch \
+ file://symlink.patch \
+ file://0001-unzip-fix-CVE-2018-1000035.patch \
"
UPSTREAM_VERSION_UNKNOWN = "1"
@@ -58,4 +60,4 @@ ALTERNATIVE_PRIORITY = "100"
ALTERNATIVE_${PN} = "unzip"
ALTERNATIVE_LINK_NAME[unzip] = "${bindir}/unzip"
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/watchdog/watchdog/watchdog-conf.patch b/meta/recipes-extended/watchdog/watchdog/watchdog-conf.patch
deleted file mode 100644
index ec44c803b14..00000000000
--- a/meta/recipes-extended/watchdog/watchdog/watchdog-conf.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Signed-off-by: Diego Rondini <diego.ml@zoho.com>
-Upstream-Status: Inappropriate
-
-Index: watchdog-5.15/watchdog.conf
-===================================================================
---- watchdog-5.15.orig/watchdog.conf
-+++ watchdog-5.15/watchdog.conf
-@@ -28,7 +28,7 @@
- #retry-timeout = 60
- #repair-maximum = 1
-
--#watchdog-device = /dev/watchdog
-+watchdog-device = /dev/watchdog
-
- # Defaults compiled into the binary
- #temperature-sensor =
diff --git a/meta/recipes-extended/watchdog/watchdog/watchdog-init.patch b/meta/recipes-extended/watchdog/watchdog/watchdog-init.patch
deleted file mode 100644
index b2765f19081..00000000000
--- a/meta/recipes-extended/watchdog/watchdog/watchdog-init.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-Signed-off-by: Diego Rondini <diego.ml@zoho.com>
-Upstream-Status: Inappropriate
-
---- watchdog-5.13.orig/redhat/watchdog.init 2014-11-12 17:18:39.125943000 +0100
-+++ watchdog-5.13/redhat/watchdog.init 2014-11-12 18:27:36.189943000 +0100
-@@ -7,7 +7,7 @@
- # Henning P. Schmiedehausen <hps@tanstaafl.de>
-
- # Source function library.
--. /etc/rc.d/init.d/functions
-+. /etc/init.d/functions
-
- [ -x /usr/sbin/watchdog -a -e /etc/watchdog.conf ] || exit 0
-
-@@ -23,22 +23,22 @@
-
- start() {
-
-- echo -n $"Starting $prog: "
-+ echo -n "Starting $prog: "
- if [ -n "$(pidofproc $prog)" ]; then
-- echo -n $"$prog: already running"
-- echo_failure
-+ echo -n "$prog: already running "
-+ failure
- echo
- return 1
- fi
- if [ "$VERBOSE" = "yes" ]; then
-- daemon /usr/sbin/${prog} -v
-+ /usr/sbin/${prog} -v
- else
-- daemon /usr/sbin/${prog}
-+ /usr/sbin/${prog}
- fi
- RETVAL=$?
- [ $RETVAL -eq 0 ] && touch $lockfile
-- [ $RETVAL -eq 0 ] && echo_success
-- [ $RETVAL -ne 0 ] && echo_failure
-+ [ $RETVAL -eq 0 ] && success
-+ [ $RETVAL -ne 0 ] && failure
- echo
- return $RETVAL
- }
-@@ -50,8 +50,10 @@
- # and reboot the box.
- killproc $prog -TERM
- RETVAL=$?
-- echo
- [ $RETVAL -eq 0 ] && rm -f $lockfile $pidfile
-+ [ $RETVAL -eq 0 ] && success
-+ [ $RETVAL -ne 0 ] && failure
-+ echo
- return $RETVAL
- }
-
diff --git a/meta/recipes-extended/watchdog/watchdog/watchdog.init b/meta/recipes-extended/watchdog/watchdog/watchdog.init
new file mode 100644
index 00000000000..d37107cf0e0
--- /dev/null
+++ b/meta/recipes-extended/watchdog/watchdog/watchdog.init
@@ -0,0 +1,110 @@
+#!/bin/sh
+#/etc/init.d/watchdog: start watchdog daemon.
+
+### BEGIN INIT INFO
+# Provides: watchdog
+# Short-Description: Start software watchdog daemon
+# Required-Start: $all
+# Required-Stop: $all
+# Should-Start:
+# Should-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+### END INIT INFO
+
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+
+test -x /usr/sbin/watchdog || exit 0
+
+# For configuration of the init script use the file
+# /etc/default/watchdog, do not edit this init script.
+
+# Set run_watchdog to 1 to start watchdog or 0 to disable it.
+run_watchdog=0
+
+# Specify additional watchdog options here (see manpage).
+watchdog_options=""
+
+# Specify module to load
+watchdog_module="none"
+
+[ -e /etc/default/watchdog ] && . /etc/default/watchdog
+
+NAME=watchdog
+DAEMON=/usr/sbin/watchdog
+
+STOP_RETRY_SCHEDULE='TERM/10/forever/KILL/1'
+
+. /etc/init.d/functions
+
+# Mock Debian stuff
+log_begin_msg() {
+ echo -n $*
+}
+
+log_end_msg() {
+ if [ "$1" = "0" ]; then
+ echo 'done'
+ else
+ echo 'error'
+ fi
+}
+
+log_daemon_msg() {
+ echo $*
+}
+
+log_progress_msg() {
+ echo $*
+}
+
+case "$1" in
+ start)
+ if [ $run_watchdog = 1 ]
+ then
+ # do we have to load a module?
+ [ "${watchdog_module:-none}" != "none" ] && /sbin/modprobe $watchdog_module
+
+ # Check /dev/watchdog here because if it does not exist after module loading,
+ # it makes no sense to start the daemon
+ test -e /dev/watchdog || { log_daemon_msg "daemon not start due to lack of /dev/watchdog"; exit 0; }
+
+ log_begin_msg "Starting watchdog daemon..."
+ start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
+ --exec $DAEMON -- $watchdog_options
+ log_end_msg $?
+ fi
+ ;;
+
+ stop)
+ if [ $run_watchdog = 1 ]
+ then
+ log_begin_msg "Stopping watchdog daemon..."
+ start-stop-daemon --stop --quiet --retry $STOP_RETRY_SCHEDULE \
+ --pidfile /var/run/$NAME.pid
+
+ fi
+ ;;
+
+ restart)
+ $0 force-reload
+ ;;
+
+ force-reload)
+ if [ $run_watchdog = 0 ]; then exit 0; fi
+ log_daemon_msg "Restarting $NAME"
+ $0 stop
+ $0 start
+ ;;
+
+ status)
+ status "$DAEMON"
+ ;;
+
+ *)
+ echo "Usage: /etc/init.d/watchdog {start|stop|restart|force-reload|status}"
+ exit 1
+
+esac
+
+exit 0
diff --git a/meta/recipes-extended/watchdog/watchdog_5.15.bb b/meta/recipes-extended/watchdog/watchdog_5.15.bb
index 37b37ae12f1..1acab2e9e7b 100644
--- a/meta/recipes-extended/watchdog/watchdog_5.15.bb
+++ b/meta/recipes-extended/watchdog/watchdog_5.15.bb
@@ -11,8 +11,7 @@ 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.patch \
- file://watchdog-conf.patch \
+ file://watchdog.init \
file://wd_keepalive.init \
"
@@ -22,31 +21,35 @@ SRC_URI[sha256sum] = "ffdc865137ad5d8e53664bd22bad4de6ca136d1b4636720320cb52af0c
UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/watchdog/files/watchdog/"
UPSTREAM_CHECK_REGEX = "/watchdog/(?P<pver>(\d+[\.\-_]*)+)/"
-inherit autotools update-rc.d systemd
+inherit autotools update-rc.d systemd pkgconfig
-DEPENDS_append_libc-musl = " libtirpc "
-CFLAGS_append_libc-musl = " -I${STAGING_INCDIR}/tirpc "
-LDFLAGS_append_libc-musl = " -ltirpc "
-EXTRA_OECONF_append_libc-musl = " --disable-nfs "
+DEPENDS += "libtirpc"
+CFLAGS += "-I${STAGING_INCDIR}/tirpc"
+LDFLAGS += "-ltirpc"
+
+EXTRA_OECONF += " --disable-nfs "
INITSCRIPT_PACKAGES = "${PN} ${PN}-keepalive"
-INITSCRIPT_NAME_${PN} = "watchdog.sh"
-INITSCRIPT_PARAMS_${PN} = "start 15 1 2 3 4 5 . stop 85 0 6 ."
+INITSCRIPT_NAME_${PN} = "watchdog"
+INITSCRIPT_PARAMS_${PN} = "start 25 1 2 3 4 5 . stop 85 0 6 ."
INITSCRIPT_NAME_${PN}-keepalive = "wd_keepalive"
-INITSCRIPT_PARAMS_${PN}-keepalive = "start 15 1 2 3 4 5 . stop 85 0 6 ."
+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 -D ${S}/redhat/watchdog.init ${D}/${sysconfdir}/init.d/watchdog.sh
+ 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
diff --git a/meta/recipes-extended/wget/wget_1.19.4.bb b/meta/recipes-extended/wget/wget_1.19.5.bb
index fb7cce5a209..e37d8c7847d 100644
--- a/meta/recipes-extended/wget/wget_1.19.4.bb
+++ b/meta/recipes-extended/wget/wget_1.19.5.bb
@@ -3,7 +3,7 @@ SRC_URI = "${GNU_MIRROR}/wget/wget-${PV}.tar.gz \
file://0002-improve-reproducibility.patch \
"
-SRC_URI[md5sum] = "a2a2c1dc4ac5003fc25a8e60b4a9464e"
-SRC_URI[sha256sum] = "93fb96b0f48a20ff5be0d9d9d3c4a986b469cb853131f9d5fe4cc9cecbc8b5b5"
+SRC_URI[md5sum] = "2db6f03d655041f82eb64b8c8a1fa7da"
+SRC_URI[sha256sum] = "b39212abe1a73f2b28f4c6cb223c738559caac91d6e416a6d91d4b9d55c9faee"
require wget.inc
diff --git a/meta/recipes-extended/xdg-utils/xdg-utils_1.1.2.bb b/meta/recipes-extended/xdg-utils/xdg-utils_1.1.3.bb
index 7339289de6c..8e46638197b 100644
--- a/meta/recipes-extended/xdg-utils/xdg-utils_1.1.2.bb
+++ b/meta/recipes-extended/xdg-utils/xdg-utils_1.1.3.bb
@@ -22,8 +22,8 @@ SRC_URI = "http://portland.freedesktop.org/download/${BPN}-${PV}.tar.gz \
file://0001-Don-t-build-the-in-script-manual.patch \
"
-SRC_URI[md5sum] = "361e75eb76c94d19f6f4f330d8ee626b"
-SRC_URI[sha256sum] = "951952e2c6bb21214e0bb54e0dffa057d30f5563300225c24c16fba846258bcc"
+SRC_URI[md5sum] = "902042508b626027a3709d105f0b63ff"
+SRC_URI[sha256sum] = "d798b08af8a8e2063ddde6c9fa3398ca81484f27dec642c5627ffcaa0d4051d9"
UPSTREAM_CHECK_REGEX = "xdg-utils-(?P<pver>((\d+[\.\-_]*)+)((rc|alpha|beta)\d+)?)\.(tar\.gz|tgz)"
diff --git a/meta/recipes-extended/xinetd/xinetd/xinetd.service b/meta/recipes-extended/xinetd/xinetd/xinetd.service
index d5fdc5bc292..6da92f2bf5d 100644
--- a/meta/recipes-extended/xinetd/xinetd/xinetd.service
+++ b/meta/recipes-extended/xinetd/xinetd/xinetd.service
@@ -3,11 +3,8 @@ Description=Xinetd A Powerful Replacement For Inetd
After=syslog.target network.target
[Service]
-Type=forking
-PIDFile=/var/run/xinetd.pid
EnvironmentFile=-/etc/sysconfig/xinetd
-ExecStart=@SBINDIR@/xinetd -stayalive -pidfile /var/run/xinetd.pid "$EXTRAOPTIONS"
-ExecReload=@BASE_BINDIR@/kill -HUP $MAINPID
+ExecStart=@SBINDIR@/xinetd -dontfork "$EXTRAOPTIONS"
[Install]
WantedBy=multi-user.target
diff --git a/meta/recipes-extended/xinetd/xinetd_2.3.15.bb b/meta/recipes-extended/xinetd/xinetd_2.3.15.bb
index 1beb5456e19..6e43f5be6f7 100644
--- a/meta/recipes-extended/xinetd/xinetd_2.3.15.bb
+++ b/meta/recipes-extended/xinetd/xinetd_2.3.15.bb
@@ -6,8 +6,7 @@ HOMEPAGE = "https://github.com/xinetd-org/xinetd"
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=8ad8615198542444f84d28a6cf226dd8"
-DEPENDS = ""
-DEPENDS_append_libc-musl = " libtirpc "
+DEPENDS += "libtirpc"
PR = "r2"
# Blacklist a bogus tag in upstream check
@@ -42,8 +41,8 @@ EXTRA_OECONF="--disable-nls"
PACKAGECONFIG ??= "tcp-wrappers"
PACKAGECONFIG[tcp-wrappers] = "--with-libwrap,,tcp-wrappers"
-CFLAGS_append_libc-musl = " -I${STAGING_INCDIR}/tirpc "
-LDFLAGS_append_libc-musl = " -ltirpc "
+CFLAGS += "-I${STAGING_INCDIR}/tirpc"
+LDFLAGS += "-ltirpc"
do_configure() {
# Looks like configure.in is broken, so we are skipping
diff --git a/meta/recipes-extended/xz/xz_5.2.3.bb b/meta/recipes-extended/xz/xz_5.2.4.bb
index c0f8b82f641..791746e1cf2 100644
--- a/meta/recipes-extended/xz/xz_5.2.3.bb
+++ b/meta/recipes-extended/xz/xz_5.2.4.bb
@@ -15,15 +15,17 @@ LICENSE_${PN}-dbg = "GPLv2+"
LICENSE_${PN}-locale = "GPLv2+"
LICENSE_liblzma = "PD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c475b6c7dca236740ace4bba553e8e1c \
+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 "
+ file://lib/getopt.c;endline=23;md5=2069b0ee710572c03bb3114e4532cd84 \
+ "
SRC_URI = "http://tukaani.org/xz/xz-${PV}.tar.gz"
-SRC_URI[md5sum] = "ef68674fb47a8b8e741b34e429d86e9d"
-SRC_URI[sha256sum] = "71928b357d0a09a12a4b4c5fafca8c31c19b0e7d3b8ebb19622e96f26dbf28cb"
+SRC_URI[md5sum] = "5ace3264bdd00c65eeec2891346f65e6"
+SRC_URI[sha256sum] = "b512f3b726d3b37b6dc4c8570e137b9311e7552e8ccbab4d39d47ce5f4177145"
+UPSTREAM_CHECK_REGEX = "xz-(?P<pver>\d+(\.\d+)+)\.tar"
inherit autotools gettext
@@ -31,6 +33,11 @@ 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-gnome/epiphany/epiphany_3.26.6.bb b/meta/recipes-gnome/epiphany/epiphany_3.28.3.1.bb
index e250f76ed1e..8837b9c1d91 100644
--- a/meta/recipes-gnome/epiphany/epiphany_3.26.6.bb
+++ b/meta/recipes-gnome/epiphany/epiphany_3.28.3.1.bb
@@ -3,7 +3,7 @@ LICENSE = "GPLv3+"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
DEPENDS = "libsoup-2.4 webkitgtk gtk+3 iso-codes avahi libnotify gcr \
- gsettings-desktop-schemas gnome-desktop3 libxml2-native \
+ gsettings-desktop-schemas libxml2-native \
glib-2.0 glib-2.0-native json-glib"
GNOMEBASEBUILDCLASS = "meson"
@@ -13,10 +13,10 @@ REQUIRED_DISTRO_FEATURES = "x11"
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] = "8449968366a6f9aaff3ac228ddfc7c66"
-SRC_URI[archive.sha256sum] = "01b16aa55d312ae0f17d3136f90d8c68ac748715f119412fb1917023c6f630a8"
+SRC_URI[archive.md5sum] = "31a4a443e8e22f085a10f80b7e41d5f3"
+SRC_URI[archive.sha256sum] = "690546a701f046c5c2b3a092659589ea6e17cb0f9a81ec3fdb3046b00cede6f7"
EXTRA_OEMESON += " -Ddistributor_name=${DISTRO}"
-FILES_${PN} += "${datadir}/dbus-1 ${datadir}/gnome-shell/search-providers"
-RDEPENDS_${PN} = "iso-codes adwaita-icon-theme"
+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 249517d8f90..d4f3cc1d35f 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,34 +1,30 @@
-From fc314fc3a66c92fe73e1a0cea4f49d11b29e1f45 Mon Sep 17 00:00:00 2001
+From 0048ae2d225d25cc58f378718ca6f9ddb1a228f9 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 2/2] help/meson.build: disable the use of yelp
+Subject: [PATCH] help/meson.build: disable the use of yelp
In particular this avoids calling itstool which oe-core doesn't provide.
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
---
- help/meson.build | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
+ help/meson.build | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/help/meson.build b/help/meson.build
-index f720add..cbfeb1e 100644
+index fddcf4c..f7d76c6 100644
--- a/help/meson.build
+++ b/help/meson.build
-@@ -46,8 +46,8 @@ help_linguas = [
- 'sv'
+@@ -32,7 +32,7 @@ help_media = [
+ 'media/web-browser.png'
]
-gnome.yelp(meson.project_name(),
- sources: help_files,
- media: help_media,
-- languages: help_linguas,
-)
+#gnome.yelp(meson.project_name(),
+# sources: help_files,
+# media: help_media,
-+# languages: help_linguas,
+#)
---
-2.15.1
-
diff --git a/meta/recipes-gnome/gcr/files/gcr-add-missing-dependencies-for-vapi.patch b/meta/recipes-gnome/gcr/files/gcr-add-missing-dependencies-for-vapi.patch
deleted file mode 100644
index a2054298656..00000000000
--- a/meta/recipes-gnome/gcr/files/gcr-add-missing-dependencies-for-vapi.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From e7e0c56ca82031121f192f7f711b78418b154c9f Mon Sep 17 00:00:00 2001
-From: Jackie Huang <jackie.huang@windriver.com>
-Date: Mon, 28 Nov 2016 10:17:34 +0800
-Subject: [PATCH] gcr: add missing dependencies for vapi
-
-According to the vapi_DEPS definition:
-gcr-3.vapi depends on gck-1.vapi,
-gcr-ui-3.vapi depends on gck-1.vapi and gcr-3.vapi
-
-But these dependencies are missing for the make targets,
-so it will fail when build in parallel:
-error: Package `gck-1' not found in specified Vala API directories or GObject-Introspection GIR directories
-error: Package `gcr-3' not found in specified Vala API directories or GObject-Introspection GIR directories
-
-Upstream-Status: Submitted [https://bug775966.bugzilla-attachments.gnome.org/attachment.cgi?id=341791]
-
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
- gcr/Makefile.am | 2 +-
- ui/Makefile.am | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/gcr/Makefile.am b/gcr/Makefile.am
-index eda302f..6e78dba 100644
---- a/gcr/Makefile.am
-+++ b/gcr/Makefile.am
-@@ -221,7 +221,7 @@ gir_DATA += Gcr-@GCR_MAJOR@.gir
-
- if ENABLE_VAPIGEN
-
--gcr-@GCR_MAJOR@.vapi: Gcr-@GCR_MAJOR@.gir gcr/Gcr-@GCR_MAJOR@.metadata gcr-@GCR_MAJOR@.deps
-+gcr-@GCR_MAJOR@.vapi: Gcr-@GCR_MAJOR@.gir gcr/Gcr-@GCR_MAJOR@.metadata gcr-@GCR_MAJOR@.deps gck-@GCK_MAJOR@.vapi
-
- VAPIGEN_VAPIS += gcr-@GCR_MAJOR@.vapi
-
-diff --git a/ui/Makefile.am b/ui/Makefile.am
-index aa52476..6612f0d 100644
---- a/ui/Makefile.am
-+++ b/ui/Makefile.am
-@@ -160,7 +160,7 @@ gir_DATA += GcrUi-@GCR_MAJOR@.gir
-
- if ENABLE_VAPIGEN
-
--gcr-ui-@GCR_MAJOR@.vapi: GcrUi-@GCR_MAJOR@.gir ui/GcrUi-@GCR_MAJOR@.metadata gcr-ui-@GCR_MAJOR@.deps
-+gcr-ui-@GCR_MAJOR@.vapi: GcrUi-@GCR_MAJOR@.gir ui/GcrUi-@GCR_MAJOR@.metadata gcr-ui-@GCR_MAJOR@.deps gck-@GCK_MAJOR@.vapi gcr-@GCR_MAJOR@.vapi
-
- VAPIGEN_VAPIS += gcr-ui-@GCR_MAJOR@.vapi
-
---
-2.8.3
-
diff --git a/meta/recipes-gnome/gcr/gcr_3.20.0.bb b/meta/recipes-gnome/gcr/gcr_3.28.0.bb
index a68e0f67697..0796362e4b3 100644
--- a/meta/recipes-gnome/gcr/gcr_3.20.0.bb
+++ b/meta/recipes-gnome/gcr/gcr_3.28.0.bb
@@ -12,10 +12,8 @@ inherit gnomebase gtk-icon-cache gtk-doc distro_features_check upstream-version-
# depends on gtk+3, but also x11 through gtk+-x11
REQUIRED_DISTRO_FEATURES = "x11"
-SRC_URI += "file://gcr-add-missing-dependencies-for-vapi.patch"
-
-SRC_URI[archive.md5sum] = "4314bf89eac293dd0a9d806593ff1b35"
-SRC_URI[archive.sha256sum] = "90572c626d8a708225560c42b4421f7941315247fa1679d4ef569bde7f4bb379"
+SRC_URI[archive.md5sum] = "5321319307dad34dca2fd52e7c9c01ab"
+SRC_URI[archive.sha256sum] = "15e175d1da7ec486d59749ba34906241c442898118ce224a7b70bf2e849faf0b"
FILES_${PN} += " \
${datadir}/dbus-1 \
@@ -23,4 +21,12 @@ FILES_${PN} += " \
"
# http://errors.yoctoproject.org/Errors/Details/20229/
-ARM_INSTRUCTION_SET = "arm"
+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/gnome-desktop/gnome-desktop/0001-Disable-libseccomp-sycall-filtering-mechanism.patch b/meta/recipes-gnome/gnome-desktop/gnome-desktop/0001-Disable-libseccomp-sycall-filtering-mechanism.patch
deleted file mode 100644
index 10b07435c42..00000000000
--- a/meta/recipes-gnome/gnome-desktop/gnome-desktop/0001-Disable-libseccomp-sycall-filtering-mechanism.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 9dfada06f8d2e02d7a04f793ba6e1d4a2aa5ffb7 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 5 Oct 2017 14:54:17 +0300
-Subject: [PATCH] Disable libseccomp (sycall filtering mechanism)
-
-Upstream forgot to make it optional, and it is not currently used in Yocto
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- configure.ac | 11 -----------
- 1 file changed, 11 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 86bcf1f..8911f19 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -157,17 +157,6 @@ else
- fi
-
- SECCOMP_PKG=""
--dnl Check for bubblewrap compatible platform
--case $host_os in
-- linux*)
-- PKG_CHECK_MODULES(LIBSECCOMP, [libseccomp])
-- SECCOMP_PKG="libseccomp"
-- AC_DEFINE_UNQUOTED(_GNU_SOURCE, 1, [Define to include GNU extensions])
-- AC_DEFINE_UNQUOTED(HAVE_BWRAP, 1, [Define to 1 if Bubblewrap support is available])
-- AC_DEFINE([ENABLE_SECCOMP], [1], [Define if using seccomp])
-- AC_DEFINE_UNQUOTED(INSTALL_PREFIX, "$prefix", [Path to library install prefix])
-- ;;
--esac
-
- dnl pkg-config dependency checks
-
---
-2.14.1
-
diff --git a/meta/recipes-gnome/gnome-desktop/gnome-desktop/0001-configure.ac-Remove-gnome-common-macro-calls.patch b/meta/recipes-gnome/gnome-desktop/gnome-desktop/0001-configure.ac-Remove-gnome-common-macro-calls.patch
deleted file mode 100644
index e95393c6b5c..00000000000
--- a/meta/recipes-gnome/gnome-desktop/gnome-desktop/0001-configure.ac-Remove-gnome-common-macro-calls.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 834bc861921fe0361f2d6a5b5716fc97a9519478 Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Thu, 6 Jul 2017 13:13:45 +0300
-Subject: [PATCH] configure.ac: Remove gnome-common macro calls
-
-gnome-common is deprecated and these aren't doing much for us.
-
-Upstreamable fix would probably involve using autoconf-archive:
-Trying to avoid that dependency for now.
-
-Upstream-Status: Inappropriate
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
----
- configure.ac | 3 ---
- 1 file changed, 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 7adcf0e..bb7659d 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -71,9 +71,6 @@ AC_SUBST(GNOME_DATE)
- AC_SUBST(GNOME_DATE_COMMENT_START)
- AC_SUBST(GNOME_DATE_COMMENT_END)
-
--GNOME_COMPILE_WARNINGS([maximum])
--GNOME_MAINTAINER_MODE_DEFINES
--
- AC_ARG_ENABLE(deprecation_flags,
- [AC_HELP_STRING([--enable-deprecation-flags],
- [use *_DISABLE_DEPRECATED flags @<:@default=no@:>@])],,
---
-2.1.4
-
diff --git a/meta/recipes-gnome/gnome-desktop/gnome-desktop/gnome-desktop-thumbnail-don-t-assume-time_t-is-long.patch b/meta/recipes-gnome/gnome-desktop/gnome-desktop/gnome-desktop-thumbnail-don-t-assume-time_t-is-long.patch
deleted file mode 100644
index fcc152fdef3..00000000000
--- a/meta/recipes-gnome/gnome-desktop/gnome-desktop/gnome-desktop-thumbnail-don-t-assume-time_t-is-long.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 9048939b76b3bd10783adb79ed0aaf6cd13895cc Mon Sep 17 00:00:00 2001
-From: Christopher Larson <chris_larson@mentor.com>
-Date: Tue, 13 Dec 2016 20:39:51 -0700
-Subject: [PATCH 1/2] gnome-desktop-thumbnail: don't convert time_t to long
-
-Explicitly use strftime+strptime rather than snprintf+atol. This fixes the
-build for X32, where long's size doesn't match that of time_t.
-
-Upstream-Status: Pending
-Signed-off-by: Christopher Larson <chris_larson@mentor.com>
-
-
-Modify patch described above to eliminate replacement of
-
-g_snprintf (mtime_str, 21, "%" G_GINT64_FORMAT, (gint64) mtime)
-
-which is not necessary. Retain replacement of atol().
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
----
- libgnome-desktop/gnome-desktop-thumbnail.c | 16 ++++++++++++++--
- 1 file changed, 14 insertions(+), 2 deletions(-)
-
-diff --git a/libgnome-desktop/gnome-desktop-thumbnail.c b/libgnome-desktop/gnome-desktop-thumbnail.c
-index e56c3d7..5d96bf3 100644
---- a/libgnome-desktop/gnome-desktop-thumbnail.c
-+++ b/libgnome-desktop/gnome-desktop-thumbnail.c
-@@ -120,6 +120,8 @@
- * Since: 2.2
- */
-
-+#define _XOPEN_SOURCE
-+
- #include <config.h>
-
- #include <glib.h>
-@@ -1319,6 +1326,7 @@ gnome_desktop_thumbnail_is_valid (GdkPixbuf *pixbuf,
- {
- const char *thumb_uri, *thumb_mtime_str;
- time_t thumb_mtime;
-+ struct tm tmp_mtime;
-
- thumb_uri = gdk_pixbuf_get_option (pixbuf, "tEXt::Thumb::URI");
- if (g_strcmp0 (uri, thumb_uri) != 0)
-@@ -1327,7 +1335,11 @@ gnome_desktop_thumbnail_is_valid (GdkPixbuf *pixbuf,
- thumb_mtime_str = gdk_pixbuf_get_option (pixbuf, "tEXt::Thumb::MTime");
- if (!thumb_mtime_str)
- return FALSE;
-- thumb_mtime = atol (thumb_mtime_str);
-+ if (!strptime (thumb_mtime_str, "%s", &tmp_mtime))
-+ return FALSE;
-+ thumb_mtime = mktime (&tmp_mtime);
-+ if (!thumb_mtime)
-+ return FALSE;
- if (mtime != thumb_mtime)
- return FALSE;
-
---
-2.14.1
-
diff --git a/meta/recipes-gnome/gnome-desktop/gnome-desktop3_3.26.2.bb b/meta/recipes-gnome/gnome-desktop/gnome-desktop3_3.26.2.bb
deleted file mode 100644
index 879dc9a2f6e..00000000000
--- a/meta/recipes-gnome/gnome-desktop/gnome-desktop3_3.26.2.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "GNOME library for reading .desktop files"
-SECTION = "x11/gnome"
-LICENSE = "GPLv2 & LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://COPYING.LIB;md5=5f30f0716dfdd0d91eb439ebec522ec2"
-
-BPN = "gnome-desktop"
-
-inherit gnome pkgconfig upstream-version-is-even gobject-introspection
-SRC_URI[archive.md5sum] = "6cee2ecd677d87eaa0eb5ebfa7b45fb3"
-SRC_URI[archive.sha256sum] = "f7561a7a313fc474b2c390cd9696df1f5c1e1556080e43f4afe042b1060e5f2a"
-
-SRC_URI += " \
- file://gnome-desktop-thumbnail-don-t-assume-time_t-is-long.patch \
- file://0001-configure.ac-Remove-gnome-common-macro-calls.patch \
- file://0001-Disable-libseccomp-sycall-filtering-mechanism.patch \
- "
-
-DEPENDS += "intltool-native gsettings-desktop-schemas gconf virtual/libx11 gtk+3 glib-2.0 startup-notification xkeyboard-config iso-codes udev"
-
-inherit distro_features_check gtk-doc
-REQUIRED_DISTRO_FEATURES = "x11"
-
-EXTRA_OECONF = "--disable-desktop-docs"
-
-PACKAGES =+ "libgnome-desktop3"
-FILES_libgnome-desktop3 = "${libdir}/lib*${SOLIBS} ${datadir}/libgnome-desktop*/pnp.ids ${datadir}/gnome/*xml"
-
-RRECOMMENDS_libgnome-desktop3 += "gsettings-desktop-schemas"
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 96ec96bdb2b..b5992eba761 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,7 +1,7 @@
-From 88ed996cc9e2b296cacfdbeece4be28a90bab511 Mon Sep 17 00:00:00 2001
+From 9661951838773251d0a914e897e8a0d95ce027f6 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 1/2] Don't use AC_CANONICAL_HOST
+Subject: [PATCH] Don't use AC_CANONICAL_HOST
This won't work when building allarch (and is only used to find out if
target is windows).
@@ -13,13 +13,13 @@ Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
configure.ac | 1 -
1 file changed, 1 deletion(-)
-Index: adwaita-icon-theme-3.26.1/configure.ac
-===================================================================
---- adwaita-icon-theme-3.26.1.orig/configure.ac
-+++ adwaita-icon-theme-3.26.1/configure.ac
+diff --git a/configure.ac b/configure.ac
+index fb787dc..5caef0c 100644
+--- a/configure.ac
++++ b/configure.ac
@@ -3,7 +3,6 @@ AC_PREREQ(2.53)
- AC_INIT([adwaita-icon-theme], [3.26.1],
+ AC_INIT([adwaita-icon-theme], [3.28.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_3.26.1.bb b/meta/recipes-gnome/gnome/adwaita-icon-theme_3.28.0.bb
index 6437d5e2d68..40dd35ba306 100644
--- a/meta/recipes-gnome/gnome/adwaita-icon-theme_3.26.1.bb
+++ b/meta/recipes-gnome/gnome/adwaita-icon-theme_3.28.0.bb
@@ -15,8 +15,8 @@ SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
file://0001-Run-installation-commands-as-shell-jobs.patch \
"
-SRC_URI[md5sum] = "3ef87e789711e5130792d4b5366c005d"
-SRC_URI[sha256sum] = "28ba7392c7761996efd780779167ea6c940eedfb1bf37cfe9bccb7021f54d79d"
+SRC_URI[md5sum] = "b25b2d82cbebf2cc9cd469457b604f2c"
+SRC_URI[sha256sum] = "7aae8c1dffd6772fd1a21a3d365a0ea28b7c3988bdbbeafbf8742cda68242150"
do_install_append() {
# Build uses gtk-encode-symbolic-svg to create png versions:
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
new file mode 100644
index 00000000000..ba85c317f61
--- /dev/null
+++ b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Relocate-the-repository-directory-for-native-builds.patch
@@ -0,0 +1,62 @@
+From 4cf37d56fddcc22bcd818f6d470404f56d907f3c 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
+
+Instead of hard-coding GOBJECT_INTROSPECTION_LIBDIR when
+gobject-introspection is built, use dladdr() to determine where
+GOBJECT_INTROSPECTION_LIBDIR is and use that path to calculate the
+repository directory.
+
+This fixes gobject-introspection-native accessing paths across build
+directories (e.g. if the build directories use the same shared state
+cache or sstate mirror).
+
+Upstream-Status: Inappropriate
+Signed-off-by: Sascha Silbe <x-yo17@se-silbe.de>
+
+---
+ girepository/girepository.c | 15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/girepository/girepository.c b/girepository/girepository.c
+index c1fa3d3..efa557e 100644
+--- a/girepository/girepository.c
++++ b/girepository/girepository.c
+@@ -21,6 +21,8 @@
+ * Boston, MA 02111-1307, USA.
+ */
+
++#define _GNU_SOURCE
++
+ #include "config.h"
+
+ #include <stdio.h>
+@@ -34,6 +36,8 @@
+ #include "gitypelib-internal.h"
+ #include "girepository-private.h"
+
++#include <dlfcn.h>
++
+ /**
+ * SECTION:girepository
+ * @short_description: GObject Introspection repository manager
+@@ -188,9 +192,16 @@ init_globals (void)
+ g_free (custom_dirs);
+ }
+
+- libdir = GOBJECT_INTROSPECTION_LIBDIR;
++ Dl_info gi_lib_info;
+
+- typelib_dir = g_build_filename (libdir, "girepository-1.0", NULL);
++ if (dladdr (g_irepository_get_default, &gi_lib_info)) {
++ char *libdir = g_path_get_dirname (gi_lib_info.dli_fname);
++ typelib_dir = g_build_filename (libdir, "girepository-1.0", NULL);
++ g_free (libdir);
++ } else {
++ libdir = GOBJECT_INTROSPECTION_LIBDIR;
++ typelib_dir = g_build_filename (libdir, "girepository-1.0", NULL);
++ }
+
+ typelib_search_path = g_slist_prepend (typelib_search_path, typelib_dir);
+
diff --git a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Revert-an-incomplete-upstream-attempt-at-cross-compi.patch b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Revert-an-incomplete-upstream-attempt-at-cross-compi.patch
index 9abaea7e7f1..86cd4ead2a0 100644
--- a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Revert-an-incomplete-upstream-attempt-at-cross-compi.patch
+++ b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Revert-an-incomplete-upstream-attempt-at-cross-compi.patch
@@ -1,11 +1,12 @@
-From 3a9d1e5ee0aae56fafec0beba2014c19e4ff310c Mon Sep 17 00:00:00 2001
+From ca0fb17e268c176ac89df081b1efa4a42989f014 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Wed, 23 Mar 2016 17:07:28 +0200
-Subject: [PATCH 1/5] Revert an incomplete upstream attempt at cross-compile
+Subject: [PATCH] Revert an incomplete upstream attempt at cross-compile
support
Upstream-Status: Pending
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
---
common.mk | 4 ----
giscanner/gdumpparser.py | 6 ------
@@ -29,10 +30,10 @@ index b778f7a..e26c637 100644
INTROSPECTION_COMPILER_ARGS = \
diff --git a/giscanner/gdumpparser.py b/giscanner/gdumpparser.py
-index 1134f33..9bdc2bc 100644
+index cd9d94d..b41772c 100644
--- a/giscanner/gdumpparser.py
+++ b/giscanner/gdumpparser.py
-@@ -162,12 +162,6 @@ blob containing data gleaned from GObject's primitive introspection."""
+@@ -161,12 +161,6 @@ blob containing data gleaned from GObject's primitive introspection."""
out_path = os.path.join(self._binary.tmpdir, 'dump.xml')
args = []
@@ -45,6 +46,3 @@ index 1134f33..9bdc2bc 100644
args.extend(self._binary.args)
args.append('--introspect-dump=%s,%s' % (in_path, out_path))
---
-2.7.0
-
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
index 4ec527dcc0f..e9338e92e29 100644
--- 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
@@ -1,4 +1,4 @@
-From e48f1e18f5ea41656f0ba10fe61d69d2604b0064 Mon Sep 17 00:00:00 2001
+From 3fea5e83803f4cfef21b2e06e37a6ba56f2bb914 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
@@ -19,7 +19,7 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
3 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/giscanner/ccompiler.py b/giscanner/ccompiler.py
-index 29de0ee..928eae8 100644
+index c003828..8a8ba2b 100644
--- a/giscanner/ccompiler.py
+++ b/giscanner/ccompiler.py
@@ -109,7 +109,7 @@ class CCompiler(object):
@@ -32,19 +32,19 @@ index 29de0ee..928eae8 100644
# is being built in the current directory.
@@ -119,7 +119,7 @@ class CCompiler(object):
- if self.check_is_msvc():
+ if os.name == 'nt':
runtime_path_envvar = ['LIB', 'PATH']
else:
-- runtime_path_envvar = ['LD_LIBRARY_PATH']
-+ runtime_path_envvar = ['LD_LIBRARY_PATH'] if not lib_dirs_envvar else [lib_dirs_envvar]
+- 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 7f77bd2..db96df6 100644
+index 2c668f5..2e515a0 100644
--- a/giscanner/dumper.py
+++ b/giscanner/dumper.py
-@@ -259,7 +259,8 @@ class DumpCompiler(object):
+@@ -249,7 +249,8 @@ class DumpCompiler(object):
libtool,
self._options.libraries,
self._options.extra_libraries,
@@ -55,10 +55,10 @@ index 7f77bd2..db96df6 100644
else:
diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py
-index 38a45c1..b603850 100755
+index 5cb793e..87227e2 100644
--- a/giscanner/scannermain.py
+++ b/giscanner/scannermain.py
-@@ -130,6 +130,9 @@ def _get_option_parser():
+@@ -132,6 +132,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)")
@@ -68,6 +68,3 @@ index 38a45c1..b603850 100755
parser.add_option("", "--program-arg",
action="append", dest="program_args", default=[],
help="extra arguments to program")
---
-2.15.1
-
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
new file mode 100644
index 00000000000..9167f042e5b
--- /dev/null
+++ b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch
@@ -0,0 +1,27 @@
+From f128cbeead687bfc6532cc1f2cc3e2dc5a2b5b30 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 01d21a3..3bd3250 100644
+--- a/giscanner/shlibs.py
++++ b/giscanner/shlibs.py
+@@ -108,7 +108,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/0002-configure.ac-add-host-gi-gi-cross-wrapper-gi-ldd-wra.patch b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0002-configure.ac-add-host-gi-gi-cross-wrapper-gi-ldd-wra.patch
index c682b42af6f..03ef2b00590 100644
--- a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0002-configure.ac-add-host-gi-gi-cross-wrapper-gi-ldd-wra.patch
+++ b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0002-configure.ac-add-host-gi-gi-cross-wrapper-gi-ldd-wra.patch
@@ -1,8 +1,8 @@
-From b1503fe2693d602b3e24e4b832dc0934960d5d22 Mon Sep 17 00:00:00 2001
+From a28cc8413b68bec5b4cf2ee5f37b40a8965490a5 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Mon, 19 Oct 2015 18:29:21 +0300
-Subject: [PATCH 2/5] configure.ac: add host-gi, gi-cross-wrapper,
- gi-ldd-wrapper and introspection-data options
+Subject: [PATCH] configure.ac: add host-gi, gi-cross-wrapper, gi-ldd-wrapper
+ and introspection-data options
With the first option, gobject-introspection tools (g-ir-doc-tool and g-ir-scanner)
that are already installed in the host system will be used for building the source tree.
@@ -25,6 +25,7 @@ These options are useful when cross-compiling for a different target architectur
Upstream-Status: Pending [review on oe-core list]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
---
Makefile.am | 2 ++
common.mk | 39 +++++++++++++++++++++++++++++++++++++++
@@ -32,10 +33,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
tests/Makefile.am | 5 ++++-
4 files changed, 87 insertions(+), 1 deletion(-)
-Index: gobject-introspection-1.52.1/Makefile.am
-===================================================================
---- gobject-introspection-1.52.1.orig/Makefile.am
-+++ gobject-introspection-1.52.1/Makefile.am
+diff --git a/Makefile.am b/Makefile.am
+index 44ed115..2a1fa56 100644
+--- a/Makefile.am
++++ b/Makefile.am
@@ -21,7 +21,9 @@ include Makefile-cmph.am
include Makefile-girepository.am
include Makefile-giscanner.am
@@ -44,12 +45,12 @@ Index: gobject-introspection-1.52.1/Makefile.am
include Makefile-gir.am
+endif
include Makefile-tools.am
- include Makefile-msvcproj.am
-Index: gobject-introspection-1.52.1/common.mk
-===================================================================
---- gobject-introspection-1.52.1.orig/common.mk
-+++ gobject-introspection-1.52.1/common.mk
+ ## Process this file with automake to produce Makefile.in
+diff --git a/common.mk b/common.mk
+index e26c637..9f3a65f 100644
+--- a/common.mk
++++ b/common.mk
@@ -6,6 +6,15 @@
# module itself.
#
@@ -130,11 +131,11 @@ Index: gobject-introspection-1.52.1/common.mk
INTROSPECTION_DOCTOOL_ARGS = \
--add-include-path=$(srcdir) \
-Index: gobject-introspection-1.52.1/configure.ac
-===================================================================
---- gobject-introspection-1.52.1.orig/configure.ac
-+++ gobject-introspection-1.52.1/configure.ac
-@@ -366,6 +366,48 @@ dnl
+diff --git a/configure.ac b/configure.ac
+index d48e6c3..ed5f8a2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -367,6 +367,48 @@ dnl
AM_CONDITIONAL(MSVC_BASE_NO_TOOLSET_SET, [test x$MSVC_BASE_TOOLSET = x])
AM_CONDITIONAL(MSVC_NO_TOOLSET_SET, [test x$MSVC_TOOLSET = x])
@@ -183,10 +184,10 @@ Index: gobject-introspection-1.52.1/configure.ac
AC_CONFIG_FILES([
Makefile
tests/Makefile
-Index: gobject-introspection-1.52.1/tests/Makefile.am
-===================================================================
---- gobject-introspection-1.52.1.orig/tests/Makefile.am
-+++ gobject-introspection-1.52.1/tests/Makefile.am
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index 4bdb9c3..10b0f27 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
@@ -1,6 +1,9 @@
include $(top_srcdir)/common.mk
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
index f21eaca8556..45fe27ad61f 100644
--- 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
@@ -1,7 +1,7 @@
-From 704b888d0abfb01067352c40156f49f655691c7c Mon Sep 17 00:00:00 2001
+From 46dbe963aa6435591c87e788cdb54bc0daeac42e 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 3/5] giscanner: add --use-binary-wrapper option
+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
@@ -10,15 +10,16 @@ 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 633496f..d684cd0 100755
+index ccb14e9..061def0 100644
--- a/giscanner/scannermain.py
+++ b/giscanner/scannermain.py
-@@ -124,6 +124,9 @@ def _get_option_parser():
+@@ -126,6 +126,9 @@ def _get_option_parser():
parser.add_option("", "--program",
action="store", dest="program", default=None,
help="program to execute")
@@ -28,7 +29,7 @@ index 633496f..d684cd0 100755
parser.add_option("", "--program-arg",
action="append", dest="program_args", default=[],
help="extra arguments to program")
-@@ -419,6 +422,17 @@ def create_binary(transformer, options, args):
+@@ -418,6 +421,17 @@ def create_binary(transformer, options, args):
gdump_parser.get_error_quark_functions())
shlibs = resolve_shlibs(options, binary, options.libraries)
@@ -46,6 +47,3 @@ index 633496f..d684cd0 100755
gdump_parser.set_introspection_binary(binary)
gdump_parser.parse()
return shlibs
---
-2.7.0
-
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
index afb71e767e1..2e36b64bab7 100644
--- 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
@@ -1,23 +1,24 @@
-From d4ad57fd4a32c4f0d2f0522a3090ef940746431b Mon Sep 17 00:00:00 2001
+From eba2b999e81d81b5f43bb1f0ab33881786bebdec 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 4/5] giscanner: add a --use-ldd-wrapper option
+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 d684cd0..1b3b369 100755
+index 061def0..5cb793e 100644
--- a/giscanner/scannermain.py
+++ b/giscanner/scannermain.py
-@@ -127,6 +127,9 @@ def _get_option_parser():
+@@ -129,6 +129,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)")
@@ -28,10 +29,10 @@ index d684cd0..1b3b369 100755
action="append", dest="program_args", default=[],
help="extra arguments to program")
diff --git a/giscanner/shlibs.py b/giscanner/shlibs.py
-index c93d20c..c5b5942 100644
+index 7b7b2d0..01d21a3 100644
--- a/giscanner/shlibs.py
+++ b/giscanner/shlibs.py
-@@ -105,7 +105,9 @@ def _resolve_non_libtool(options, binary, libraries):
+@@ -102,7 +102,9 @@ def _resolve_non_libtool(options, binary, libraries):
args.extend(libtool)
args.append('--mode=execute')
platform_system = platform.system()
@@ -42,6 +43,3 @@ index c93d20c..c5b5942 100644
args.extend(['otool', '-L', binary.args[0]])
else:
args.extend(['ldd', binary.args[0]])
---
-2.7.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
index 47a18ec844d..2a31117b138 100644
--- 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
@@ -1,7 +1,7 @@
-From e08b3677dd04d6ec407ba8f74f601b2d51310eff Mon Sep 17 00:00:00 2001
+From a97d060933932e478c03f1de9513b69bc459eefc 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 5/5] Prefix pkg-config paths with PKG_CONFIG_SYSROOT_DIR
+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
@@ -9,16 +9,17 @@ 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>
+
---
Makefile-gir.am | 18 +++++++++---------
m4/introspection.m4 | 8 ++++----
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/Makefile-gir.am b/Makefile-gir.am
-index a09260a..ba6e89e 100644
+index 2cd7358..eaf0afd 100644
--- a/Makefile-gir.am
+++ b/Makefile-gir.am
-@@ -55,8 +55,8 @@ else
+@@ -58,8 +58,8 @@ else
endif
# glib
@@ -29,7 +30,7 @@ index a09260a..ba6e89e 100644
GLIB_LIBRARY=glib-2.0
-@@ -92,8 +92,8 @@ GLib-2.0.gir: g-ir-scanner g-ir-compiler$(EXEEXT)
+@@ -95,8 +95,8 @@ GLib-2.0.gir: g-ir-scanner g-ir-compiler$(EXEEXT)
gir/DBusGLib-1.0.typelib: GObject-2.0.gir
# gobject
@@ -40,7 +41,7 @@ index a09260a..ba6e89e 100644
GOBJECT_LIBRARY=gobject-2.0
-@@ -120,8 +120,8 @@ GObject_2_0_gir_FILES = \
+@@ -123,8 +123,8 @@ GObject_2_0_gir_FILES = \
BUILT_GIRSOURCES += GObject-2.0.gir
# gmodule
@@ -51,7 +52,7 @@ index a09260a..ba6e89e 100644
GMODULE_LIBRARY=gmodule-2.0
-@@ -146,13 +146,13 @@ GModule_2_0_gir_FILES = $(GLIB_INCLUDEDIR)/gmodule.h \
+@@ -149,13 +149,13 @@ GModule_2_0_gir_FILES = $(GLIB_INCLUDEDIR)/gmodule.h \
BUILT_GIRSOURCES += GModule-2.0.gir
# gio
@@ -91,6 +92,3 @@ index d89c3d9..b562266 100644
fi
AC_SUBST(INTROSPECTION_SCANNER)
AC_SUBST(INTROSPECTION_COMPILER)
---
-2.7.0
-
diff --git a/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.54.1.bb b/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.58.0.bb
index 85c8001dea8..de898a788b0 100644
--- a/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.54.1.bb
+++ b/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.58.0.bb
@@ -3,30 +3,30 @@ HOMEPAGE = "https://wiki.gnome.org/action/show/Projects/GObjectIntrospection"
BUGTRACKER = "https://bugzilla.gnome.org/"
SECTION = "libs"
LICENSE = "LGPLv2+ & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=90d577535a3898e1ae5dbf0ae3509a8c \
+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"
+ file://girepository/giregisteredtypeinfo.c;endline=21;md5=661847611ae6979465415f31a759ba27 \
+ "
-SRC_URI = "${GNOME_MIRROR}/${BPN}/1.54/${BPN}-${PV}.tar.xz \
+SRC_URI = "${GNOME_MIRROR}/${BPN}/${@oe.utils.trim_version("${PV}", 2)}/${BPN}-${PV}.tar.xz \
file://0001-Revert-an-incomplete-upstream-attempt-at-cross-compi.patch \
file://0002-configure.ac-add-host-gi-gi-cross-wrapper-gi-ldd-wra.patch \
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 \
"
-SRC_URI[md5sum] = "126c29e4d54adbed2ed4e2b04483de41"
-SRC_URI[sha256sum] = "b88ded5e5f064ab58a93aadecd6d58db2ec9d970648534c63807d4f9a7bb877e"
-inherit autotools pkgconfig gtk-doc python3native qemu gobject-introspection-data upstream-version-is-even
-BBCLASSEXTEND = "native"
+SRC_URI[md5sum] = "94fec875276262037bfcd51226db12fe"
+SRC_URI[sha256sum] = "27c1590a32749de0a5481ce897772547043e94bccba4bc0a7edb3d8513e401ec"
-# needed for writing out the qemu wrapper script
-export STAGING_DIR_HOST
-export B
+SRC_URI_append_class-native = " file://0001-Relocate-the-repository-directory-for-native-builds.patch"
-DEPENDS_append = " libffi zlib glib-2.0 python3 flex-native bison-native"
+inherit autotools pkgconfig gtk-doc python3native qemu gobject-introspection-data upstream-version-is-even
+
+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
@@ -35,7 +35,29 @@ DEPENDS_append = " libffi zlib glib-2.0 python3 flex-native bison-native"
# (standard ldd doesn't work when cross-compiling).
DEPENDS_class-target_append = " gobject-introspection-native qemu-native prelink-native"
-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}"
+# needed for writing out the qemu wrapper script
+export STAGING_DIR_HOST
+export B
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[doctool] = "--enable-doctool,--disable-doctool,python3-mako,"
+
+# Configure target build to use native tools of itself and to use a qemu wrapper
+# and optionally to generate introspection data
+EXTRA_OECONF_class-target = " \
+ --disable-static \
+ --enable-host-gi \
+ --enable-gi-cross-wrapper=${B}/g-ir-scanner-qemuwrapper \
+ --enable-gi-ldd-wrapper=${B}/g-ir-scanner-lddwrapper \
+ ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '--enable-introspection-data', '--disable-introspection-data', d)} \
+"
+
+# 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
@@ -97,18 +119,6 @@ EOF
sed -i -e '1s,#!.*,#!${USRBINPATH}/env python3,' ${S}/tools/g-ir-tool-template.in
}
-# Configure target build to use native tools of itself and to use a qemu wrapper
-# and optionally to generate introspection data
-EXTRA_OECONF_class-target += "--enable-host-gi \
- --disable-static \
- --enable-gi-cross-wrapper=${B}/g-ir-scanner-qemuwrapper \
- --enable-gi-ldd-wrapper=${B}/g-ir-scanner-lddwrapper \
- ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '--enable-introspection-data', '--disable-introspection-data', d)} \
- "
-
-PACKAGECONFIG ?= ""
-PACKAGECONFIG[doctool] = "--enable-doctool,--disable-doctool,python3-mako,"
-
do_compile_prepend() {
# This prevents g-ir-scanner from writing cache data to $HOME
export GI_SCANNER_DISABLE_CACHE=1
@@ -127,27 +137,6 @@ do_install_append_class-target() {
install ${B}/g-ir-scanner-lddwrapper ${D}${bindir}/
}
-# .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"
-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"
-
# 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}"
@@ -162,13 +151,6 @@ gi_binaries_sysroot_preprocess() {
${SYSROOT_DESTDIR}${libdir}/pkgconfig/gobject-introspection-1.0.pc
}
-# 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)
-}
-
SYSROOT_PREPROCESS_FUNCS_append = " gi_ldsoconf_sysroot_preprocess"
gi_ldsoconf_sysroot_preprocess () {
mkdir -p ${SYSROOT_DESTDIR}${bindir}
@@ -188,3 +170,28 @@ gi_package_preprocess() {
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"
+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"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.24.1.bb b/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.28.0.bb
index b61fd2408f4..c2b3cd89550 100644
--- a/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.24.1.bb
+++ b/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.28.0.bb
@@ -9,5 +9,5 @@ DEPENDS = "glib-2.0 intltool-native"
inherit gnomebase gsettings gettext gobject-introspection upstream-version-is-even
-SRC_URI[archive.md5sum] = "796b6ac1eff450261edd521b72e7fe6d"
-SRC_URI[archive.sha256sum] = "76a3fa309f9de6074d66848987214f0b128124ba7184c958c15ac78a8ac7eea7"
+SRC_URI[archive.md5sum] = "370610e29b37d063ede3ef0f29c06eb9"
+SRC_URI[archive.sha256sum] = "4cb4cd7790b77e5542ec75275237613ad22f3a1f2f41903a298cf6cc996a9167"
diff --git a/meta/recipes-gnome/gtk+/gtk+.inc b/meta/recipes-gnome/gtk+/gtk+.inc
index 558bc485adc..14ed8d812ca 100644
--- a/meta/recipes-gnome/gtk+/gtk+.inc
+++ b/meta/recipes-gnome/gtk+/gtk+.inc
@@ -90,6 +90,10 @@ do_install () {
install -m 0644 ${S}/gtk/gtkfilesystemmodel.h ${D}${includedir}/gtk-2.0/gtk/
mv ${D}${bindir}/gtk-update-icon-cache ${D}${bindir}/gtk-update-icon-cache-2.0
+
+ # duplicate gtk-query-immodules for post install script update_gtk_immodules_cache
+ mkdir -p ${D}${libexecdir}
+ ln ${D}${bindir}/gtk-query-immodules-2.0 ${D}${libexecdir}/${MLPREFIX}gtk-query-immodules-2.0
}
SYSROOT_PREPROCESS_FUNCS += "gtk_sysroot_preprocess"
diff --git a/meta/recipes-gnome/gtk+/gtk+/0001-Do-not-look-into-HOME-when-looking-for-gtk-modules.patch b/meta/recipes-gnome/gtk+/gtk+/0001-Do-not-look-into-HOME-when-looking-for-gtk-modules.patch
new file mode 100644
index 00000000000..83be39c3bf2
--- /dev/null
+++ b/meta/recipes-gnome/gtk+/gtk+/0001-Do-not-look-into-HOME-when-looking-for-gtk-modules.patch
@@ -0,0 +1,29 @@
+From 34ce93e1c50bfb88f92a687d4f82de55584f3f6a Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 11 Apr 2018 14:20:39 +0300
+Subject: [PATCH] Do not look into $HOME when looking for gtk modules
+
+On the host it causes host contamination, on the target it's a
+potential security issue. Gtk+3 has already removed this.
+
+Upstream-Status: Inappropriate [gtk2 is in maintenance mode]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ gtk/gtkmodules.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/gtk/gtkmodules.c b/gtk/gtkmodules.c
+index 50729b6..e09b583 100644
+--- a/gtk/gtkmodules.c
++++ b/gtk/gtkmodules.c
+@@ -65,10 +65,6 @@ get_module_path (void)
+ if (result)
+ return result;
+
+- home_dir = g_get_home_dir();
+- if (home_dir)
+- home_gtk_dir = g_build_filename (home_dir, ".gtk-2.0", NULL);
+-
+ module_path_env = g_getenv ("GTK_PATH");
+ exe_prefix = g_getenv ("GTK_EXE_PREFIX");
+
diff --git a/meta/recipes-gnome/gtk+/gtk+3.inc b/meta/recipes-gnome/gtk+/gtk+3.inc
index 420ead2ca2e..6331a4323cd 100644
--- a/meta/recipes-gnome/gtk+/gtk+3.inc
+++ b/meta/recipes-gnome/gtk+/gtk+3.inc
@@ -53,6 +53,10 @@ PACKAGECONFIG[wayland] = "--enable-wayland-backend,--disable-wayland-backend,way
do_install_append() {
mv ${D}${bindir}/gtk-update-icon-cache ${D}${bindir}/gtk-update-icon-cache-3.0
+
+ # duplicate gtk-query-immodules for post install script update_gtk_immodules_cache
+ mkdir -p ${D}${libexecdir}
+ ln ${D}${bindir}/gtk-query-immodules-3.0 ${D}${libexecdir}/${MLPREFIX}gtk-query-immodules-3.0
}
PACKAGES =+ "${PN}-demo"
diff --git a/meta/recipes-gnome/gtk+/gtk+3_3.22.28.bb b/meta/recipes-gnome/gtk+/gtk+3_3.22.30.bb
index 864e8260c8b..697b518544d 100644
--- a/meta/recipes-gnome/gtk+/gtk+3_3.22.28.bb
+++ b/meta/recipes-gnome/gtk+/gtk+3_3.22.30.bb
@@ -7,8 +7,8 @@ SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk+/${MAJ_VER}/gtk+-${PV}.tar
file://0002-Do-not-try-to-initialize-GL-without-libGL.patch \
file://0003-Add-disable-opengl-configure-option.patch \
"
-SRC_URI[md5sum] = "8c1f5ab987ddc7dab3e59660f89dcd9b"
-SRC_URI[sha256sum] = "d299612b018cfed7b2c689168ab52b668023708e17c335eb592260d186f15e1f"
+SRC_URI[md5sum] = "61e60dc073e0a6893c72043d20579dc0"
+SRC_URI[sha256sum] = "a1a4a5c12703d4e1ccda28333b87ff462741dc365131fbc94c218ae81d9a6567"
S = "${WORKDIR}/gtk+-${PV}"
diff --git a/meta/recipes-gnome/gtk+/gtk+_2.24.32.bb b/meta/recipes-gnome/gtk+/gtk+_2.24.32.bb
index 20703588c39..89fca736b25 100644
--- a/meta/recipes-gnome/gtk+/gtk+_2.24.32.bb
+++ b/meta/recipes-gnome/gtk+/gtk+_2.24.32.bb
@@ -10,7 +10,8 @@ SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-${PV}.tar.xz \
file://toggle-font.diff;striplevel=0 \
file://doc-fixes.patch \
file://strict-prototypes.patch \
- "
+ file://0001-Do-not-look-into-HOME-when-looking-for-gtk-modules.patch \
+ "
SRC_URI[md5sum] = "d5742aa42275203a499b59b4c382a784"
SRC_URI[sha256sum] = "b6c8a93ddda5eabe3bfee1eb39636c9a03d2a56c7b62828b359bf197943c582e"
diff --git a/meta/recipes-gnome/gtk+/gtk-icon-utils-native_3.22.28.bb b/meta/recipes-gnome/gtk+/gtk-icon-utils-native_3.22.30.bb
index 942c0471799..28e7a312d28 100644
--- a/meta/recipes-gnome/gtk+/gtk-icon-utils-native_3.22.28.bb
+++ b/meta/recipes-gnome/gtk+/gtk-icon-utils-native_3.22.30.bb
@@ -10,8 +10,8 @@ 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://Remove-Gdk-dependency-from-gtk-encode-symbolic-svg.patch"
-SRC_URI[md5sum] = "8c1f5ab987ddc7dab3e59660f89dcd9b"
-SRC_URI[sha256sum] = "d299612b018cfed7b2c689168ab52b668023708e17c335eb592260d186f15e1f"
+SRC_URI[md5sum] = "61e60dc073e0a6893c72043d20579dc0"
+SRC_URI[sha256sum] = "a1a4a5c12703d4e1ccda28333b87ff462741dc365131fbc94c218ae81d9a6567"
LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
file://gtk/gtk.h;endline=25;md5=1d8dc0fccdbfa26287a271dce88af737 \
diff --git a/meta/recipes-gnome/gtk-doc/files/0001-Do-not-hardocode-paths-to-perl-python-in-scripts.patch b/meta/recipes-gnome/gtk-doc/files/0001-Do-not-hardocode-paths-to-perl-python-in-scripts.patch
index 2fe3ab9221f..19e05f1b996 100644
--- a/meta/recipes-gnome/gtk-doc/files/0001-Do-not-hardocode-paths-to-perl-python-in-scripts.patch
+++ b/meta/recipes-gnome/gtk-doc/files/0001-Do-not-hardocode-paths-to-perl-python-in-scripts.patch
@@ -1,7 +1,7 @@
-From 928102874bc2339a1d57c6b178877e0c6002cb3a Mon Sep 17 00:00:00 2001
+From 80e6aff72affa6d92f5abd7ff6353dfc4a7bff38 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Wed, 31 Aug 2016 16:44:46 +0300
-Subject: [PATCH 1/3] Do not hardocode paths to perl/python in scripts.
+Subject: [PATCH] Do not hardocode paths to perl/python in scripts.
Doing so when the interpreters are somewhere deep in a sysroot directory
can reach the shebang line limit, and resulting scripts wouldn't work
@@ -35,7 +35,7 @@ index 8c8e917..f6a25f6 100755
#
# gtk-doc - GTK DocBook documentation generator.
diff --git a/gtkdoc-depscan.in b/gtkdoc-depscan.in
-index 9bfaf30..aadc952 100644
+index 9bfaf30..aadc952 100755
--- a/gtkdoc-depscan.in
+++ b/gtkdoc-depscan.in
@@ -1,4 +1,4 @@
@@ -45,7 +45,7 @@ index 9bfaf30..aadc952 100644
from __future__ import print_function
diff --git a/gtkdoc-fixxref.in b/gtkdoc-fixxref.in
-index 0ea02d4..bdd443a 100755
+index 44f6bd1..26fbd93 100755
--- a/gtkdoc-fixxref.in
+++ b/gtkdoc-fixxref.in
@@ -1,4 +1,4 @@
@@ -65,7 +65,7 @@ index 42d5731..3a56d56 100755
#
# gtk-doc - GTK DocBook documentation generator.
diff --git a/gtkdoc-mkhtml.in b/gtkdoc-mkhtml.in
-index 0d0a15d..914ff55 100644
+index 0d0a15d..914ff55 100755
--- a/gtkdoc-mkhtml.in
+++ b/gtkdoc-mkhtml.in
@@ -1,4 +1,4 @@
@@ -75,7 +75,7 @@ index 0d0a15d..914ff55 100644
#
# gtk-doc - GTK DocBook documentation generator.
diff --git a/gtkdoc-mkman.in b/gtkdoc-mkman.in
-index c5445cd..65db71a 100644
+index c5445cd..65db71a 100755
--- a/gtkdoc-mkman.in
+++ b/gtkdoc-mkman.in
@@ -1,4 +1,4 @@
@@ -115,7 +115,7 @@ index 954c811..f461504 100755
#
# gtk-doc - GTK DocBook documentation generator.
diff --git a/gtkdoc-scangobj.in b/gtkdoc-scangobj.in
-index 4cbe130..52c2c24 100644
+index 4cbe130..52c2c24 100755
--- a/gtkdoc-scangobj.in
+++ b/gtkdoc-scangobj.in
@@ -1,4 +1,4 @@
@@ -125,18 +125,15 @@ index 4cbe130..52c2c24 100644
#
# gtk-doc - GTK DocBook documentation generator.
diff --git a/tests/tools.sh.in b/tests/tools.sh.in
-index 4d301d0..565fc1e 100644
+index 343844a..9dc6692 100644
--- a/tests/tools.sh.in
+++ b/tests/tools.sh.in
-@@ -31,7 +31,7 @@ done
- # TODO: test python 2 and 3 (python3 -mcompileall gtkdoc/*.py)
- for file in gtkdoc-check gtkdoc-depscan gtkdoc-fixxref gtkdoc-mkdb gtkdoc-mkhtml gtkdoc-mkman gtkdoc-mkpdf gtkdoc-rebase gtkdoc-scangobj; do
+@@ -30,7 +30,7 @@ done
+ # TODO: also test the module files
+ for file in gtkdoc-check gtkdoc-depscan gtkdoc-fixxref gtkdoc-mkdb gtkdoc-mkhtml gtkdoc-mkhtml2 gtkdoc-mkman gtkdoc-mkpdf gtkdoc-rebase gtkdoc-scangobj; do
fullfile=`which $file`
- @PYTHON@ -m py_compile $fullfile
+ python3 -m py_compile $fullfile
if test $? != 0 ; then failed=`expr $failed + 1`; fi
tested=`expr $tested + 1`
done
---
-2.14.1
-
diff --git a/meta/recipes-gnome/gtk-doc/files/no-clobber.patch b/meta/recipes-gnome/gtk-doc/files/no-clobber.patch
index 0fa22b2097a..d1695479dc0 100644
--- a/meta/recipes-gnome/gtk-doc/files/no-clobber.patch
+++ b/meta/recipes-gnome/gtk-doc/files/no-clobber.patch
@@ -1,3 +1,8 @@
+From 8bc4c1f169f89bc5531da5b7e892b8f20e0f9a18 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Wed, 21 Mar 2018 14:47:29 +0000
+Subject: [PATCH] gtk-doc: don't regenerate gtk-doc in do_install
+
In out-of-tree builds gtk-doc's setup-build target copies all the content from $srcdir to $builddir.
However, if some of this content is regenerated at configure time this can happen:
@@ -16,12 +21,20 @@ files which don't already exist.
Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=794571]
Signed-off-by: Ross Burton <ross.burton@intel.com>
-diff --git a/gtk-doc.make b/gtk-doc.make
-index f87eaab..246f3c0 100644
---- a/gtk-doc.make
-+++ b/gtk-doc.make
-@@ -113,3 +113,3 @@ setup-build.stamp:
+---
+ buildsystems/autotools/gtk-doc.make | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/buildsystems/autotools/gtk-doc.make b/buildsystems/autotools/gtk-doc.make
+index 7d9a27f..8cb336d 100644
+--- a/buildsystems/autotools/gtk-doc.make
++++ b/buildsystems/autotools/gtk-doc.make
+@@ -111,7 +111,7 @@ setup-build.stamp:
+ destdir=`dirname $(abs_builddir)/$$file`; \
+ test -d "$$destdir" || mkdir -p "$$destdir"; \
test -f $(abs_srcdir)/$$file && \
- cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \
+ cp -pn $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \
done; \
+ fi; \
+ fi
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 bfbc777ff87..9b128e1ce12 100644
--- a/meta/recipes-gnome/gtk-doc/files/pkg-config-native.patch
+++ b/meta/recipes-gnome/gtk-doc/files/pkg-config-native.patch
@@ -1,7 +1,7 @@
-From 5f145621b4780cfd6a5632fcc97c45f572938efc Mon Sep 17 00:00:00 2001
+From 04af15322f677db42ecc2acc465334a04de9a871 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 5/5] Use native pkg-config when looking for gtk-doc.
+Subject: [PATCH] Use native pkg-config when looking for gtk-doc.
Upstream-Status: Inappropriate
Signed-off-by: Ross Burton <ross.burton@intel.com>
@@ -10,10 +10,10 @@ Signed-off-by: Ross Burton <ross.burton@intel.com>
gtk-doc.m4 | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
-Index: gtk-doc-1.27/gtk-doc.m4
-===================================================================
---- gtk-doc-1.27.orig/gtk-doc.m4
-+++ gtk-doc-1.27/gtk-doc.m4
+diff --git a/gtk-doc.m4 b/gtk-doc.m4
+index 2d12f01..e5afc3f 100644
+--- a/buildsystems/autotools/gtk-doc.m4
++++ b/buildsystems/autotools/gtk-doc.m4
@@ -25,7 +25,7 @@
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
diff --git a/meta/recipes-gnome/gtk-doc/gtk-doc_1.27.bb b/meta/recipes-gnome/gtk-doc/gtk-doc_1.29.bb
index 45528111c13..2c4ee175a95 100644
--- a/meta/recipes-gnome/gtk-doc/gtk-doc_1.27.bb
+++ b/meta/recipes-gnome/gtk-doc/gtk-doc_1.29.bb
@@ -18,8 +18,8 @@ PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "api-documentation",
PACKAGECONFIG[working-scripts] = "--with-highlight=source-highlight,--with-highlight=no,libxslt-native xmlto-native source-highlight-native python3-six"
PACKAGECONFIG[tests] = "--enable-tests,--disable-tests,glib-2.0"
-SRC_URI[archive.md5sum] = "b29949e0964762e474b706ce22171602"
-SRC_URI[archive.sha256sum] = "e26bd3f7080c749b1cb66c46c6bf8239e2f320a949964fb9c6d56e1b0c6d9a6f"
+SRC_URI[archive.md5sum] = "df26a38c209b3d7358f26268fcbdb9e3"
+SRC_URI[archive.sha256sum] = "14578e002496567276d310a62c9ffd6c56ee8806ce5079ffb0b81c4111f586b1"
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 \
diff --git a/meta/recipes-gnome/libsecret/libsecret_0.18.5.bb b/meta/recipes-gnome/libsecret/libsecret_0.18.6.bb
index 2b917ec517b..518c71feb17 100644
--- a/meta/recipes-gnome/libsecret/libsecret_0.18.5.bb
+++ b/meta/recipes-gnome/libsecret/libsecret_0.18.6.bb
@@ -8,11 +8,13 @@ DEPENDS += "glib-2.0 libgcrypt gettext-native intltool-native"
PACKAGECONFIG[manpages] = "--enable-manpages, --disable-manpages, libxslt-native xmlto-native"
-SRC_URI[archive.md5sum] = "2d688825921313da8731313b0a7f394c"
-SRC_URI[archive.sha256sum] = "9ce7bd8dd5831f2786c935d82638ac428fa085057cc6780aba0e39375887ccb3"
+SRC_URI[archive.md5sum] = "c6cf132a56bd346fbf49a43abb02e5c2"
+SRC_URI[archive.sha256sum] = "5efbc890ba41a323ffe0599cd260fd12bd8eb62a04aa1bd1b2762575d253d66f"
# http://errors.yoctoproject.org/Errors/Details/20228/
-ARM_INSTRUCTION_SET = "arm"
+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() {
diff --git a/meta/recipes-graphics/cairo/cairo-fpu.inc b/meta/recipes-graphics/cairo/cairo-fpu.inc
deleted file mode 100644
index fe7c53337a1..00000000000
--- a/meta/recipes-graphics/cairo/cairo-fpu.inc
+++ /dev/null
@@ -1,6 +0,0 @@
-
-def get_cairo_fpu_setting(bb, d):
- if d.getVar('TARGET_FPU') in [ 'soft' ]:
- return "--disable-some-floating-point"
- return ""
-
diff --git a/meta/recipes-graphics/cairo/cairo.inc b/meta/recipes-graphics/cairo/cairo.inc
deleted file mode 100644
index 20e0d2c92af..00000000000
--- a/meta/recipes-graphics/cairo/cairo.inc
+++ /dev/null
@@ -1,48 +0,0 @@
-SUMMARY = "The Cairo 2D vector graphics library"
-DESCRIPTION = "Cairo is a multi-platform library providing anti-aliased \
-vector-based rendering for multiple target backends. Paths consist \
-of line segments and cubic splines and can be rendered at any width \
-with various join and cap styles. All colors may be specified with \
-optional translucence (opacity/alpha) and combined using the \
-extended Porter/Duff compositing algebra as found in the X Render \
-Extension."
-HOMEPAGE = "http://cairographics.org"
-BUGTRACKER = "http://bugs.freedesktop.org"
-SECTION = "libs"
-
-LICENSE = "MPL-1 & LGPLv2.1 & GPLv3+"
-LICENSE_${PN} = "MPL-1 & LGPLv2.1"
-LICENSE_${PN}-dev = "MPL-1 & LGPLv2.1"
-LICENSE_${PN}-doc = "MPL-1 & LGPLv2.1"
-LICENSE_${PN}-gobject = "MPL-1 & LGPLv2.1"
-LICENSE_${PN}-script-interpreter = "MPL-1 & LGPLv2.1"
-LICENSE_${PN}-perf-utils = "GPLv3+"
-
-X11DEPENDS = "virtual/libx11 libsm libxrender libxext"
-DEPENDS = "libpng fontconfig pixman glib-2.0 zlib"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 xcb', '', d)} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'directfb', d)}"
-
-PACKAGECONFIG[x11] = "--with-x=yes -enable-xlib,--with-x=no --disable-xlib,${X11DEPENDS}"
-PACKAGECONFIG[xcb] = "--enable-xcb,--disable-xcb,libxcb"
-PACKAGECONFIG[directfb] = "--enable-directfb=yes,,directfb"
-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"
-
-#check for TARGET_FPU=soft and inform configure of the result so it can disable some floating points
-require cairo-fpu.inc
-EXTRA_OECONF += "${@get_cairo_fpu_setting(bb, d)} \
- --enable-tee \
- "
-
-inherit autotools pkgconfig upstream-version-is-even gtk-doc
-
-# We don't depend on binutils so we need to disable this
-export ac_cv_lib_bfd_bfd_openr="no"
-# Ensure we don't depend on LZO
-export ac_cv_lib_lzo2_lzo2a_decompress="no"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-graphics/cairo/cairo_1.14.12.bb b/meta/recipes-graphics/cairo/cairo_1.14.12.bb
index 075ca1ed349..18b947948a3 100644
--- a/meta/recipes-graphics/cairo/cairo_1.14.12.bb
+++ b/meta/recipes-graphics/cairo/cairo_1.14.12.bb
@@ -1,7 +1,27 @@
-require cairo.inc
+SUMMARY = "The Cairo 2D vector graphics library"
+DESCRIPTION = "Cairo is a multi-platform library providing anti-aliased \
+vector-based rendering for multiple target backends. Paths consist \
+of line segments and cubic splines and can be rendered at any width \
+with various join and cap styles. All colors may be specified with \
+optional translucence (opacity/alpha) and combined using the \
+extended Porter/Duff compositing algebra as found in the X Render \
+Extension."
+HOMEPAGE = "http://cairographics.org"
+BUGTRACKER = "http://bugs.freedesktop.org"
+SECTION = "libs"
+
+LICENSE = "MPL-1 & LGPLv2.1 & GPLv3+"
+LICENSE_${PN} = "MPL-1 & LGPLv2.1"
+LICENSE_${PN}-dev = "MPL-1 & LGPLv2.1"
+LICENSE_${PN}-doc = "MPL-1 & LGPLv2.1"
+LICENSE_${PN}-gobject = "MPL-1 & LGPLv2.1"
+LICENSE_${PN}-script-interpreter = "MPL-1 & LGPLv2.1"
+LICENSE_${PN}-perf-utils = "GPLv3+"
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://0001-cairo-Fix-CVE-2017-9814.patch \
@@ -10,16 +30,43 @@ SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.xz \
SRC_URI[md5sum] = "9f0db9dbfca0966be8acd682e636d165"
SRC_URI[sha256sum] = "8c90f00c500b2299c0a323dd9beead2a00353752b2092ead558139bd67f7bf16"
-PACKAGES =+ "cairo-gobject cairo-script-interpreter cairo-perf-utils"
+inherit autotools pkgconfig upstream-version-is-even gtk-doc multilib_script
-SUMMARY_${PN} = "The Cairo 2D vector graphics library"
-DESCRIPTION_${PN} = "Cairo is a multi-platform library providing anti-aliased \
-vector-based rendering for multiple target backends. Paths consist \
-of line segments and cubic splines and can be rendered at any width \
-with various join and cap styles. All colors may be specified with \
-optional translucence (opacity/alpha) and combined using the \
-extended Porter/Duff compositing algebra as found in the X Render \
-Extension."
+MULTILIB_SCRIPTS = "${PN}-perf-utils:${bindir}/cairo-trace"
+
+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)}"
+
+PACKAGECONFIG[x11] = "--with-x=yes -enable-xlib,--with-x=no --disable-xlib,${X11DEPENDS}"
+PACKAGECONFIG[xcb] = "--enable-xcb,--disable-xcb,libxcb"
+PACKAGECONFIG[directfb] = "--enable-directfb=yes,,directfb"
+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"
+
+EXTRA_OECONF += " \
+ ${@bb.utils.contains('TARGET_FPU', 'soft', '--disable-some-floating-point', '', d)} \
+ --enable-tee \
+"
+
+# We don't depend on binutils so we need to disable this
+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 () {
+ 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*
+}
+
+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."
@@ -32,15 +79,9 @@ to replay rendering."
DESCRIPTION_cairo-perf-utils = "The Cairo library performance utilities"
FILES_${PN} = "${libdir}/libcairo.so.*"
-FILES_${PN}-dev += "${libdir}/cairo/*.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}-perf-utils = "${bindir}/cairo-trace* ${libdir}/cairo/*.la ${libdir}/cairo/libcairo-trace.so.*"
+FILES_${PN}-dev += "${libdir}/cairo/*.so"
-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*
-}
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb b/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb
index c71ab1165d5..db480bd397d 100644
--- a/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb
+++ b/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb
@@ -5,15 +5,15 @@ DESCRIPTION = "The Cantarell font typeface is designed as a \
on-screen reading; in particular, reading web pages on an \
HTC Dream mobile phone."
-HOMEPAGE = "https://git.gnome.org/browse/cantarell-fonts/"
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/cantarell-fonts/"
SECTION = "fonts"
LICENSE = "OFL-1.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=df91e3ffcab8cfb972a66bf11255188d"
-PV = "0.0.24"
+PV = "0.0.25"
-SRCREV = "07b6ea2cbbebfc360aa4668612a376be5e214eaa"
-SRC_URI = "git://git.gnome.org/cantarell-fonts;protocol=git;branch=master"
+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"
diff --git a/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.24.bb b/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.26.bb
index ca5e0ae4149..8a0dda54274 100644
--- a/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.24.bb
+++ b/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.26.bb
@@ -3,5 +3,5 @@ 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] = "3e145e24bb3c340eeeddafd18efe547d"
-SRC_URI[archive.sha256sum] = "e9f1c87d8f4c47062e952fb8008704f8942cf2d6f290688f3f7d13e83578cc6c"
+SRC_URI[archive.md5sum] = "7809ca6ce9d1a3490597fd4a7375c389"
+SRC_URI[archive.sha256sum] = "d8618a6d9accec0f2a8574c5e1220051f8505fb82b20336c26bdbd482aa6cb3a"
diff --git a/meta/recipes-graphics/drm/libdrm/0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch b/meta/recipes-graphics/drm/libdrm/0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch
deleted file mode 100644
index 40bebc0f50c..00000000000
--- a/meta/recipes-graphics/drm/libdrm/0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From e6bd4205b0b546afe991ae6f72256645f4404ad4 Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Mon, 5 Sep 2016 14:41:37 +0300
-Subject: [PATCH libdrm] configure.ac: Allow explicit enabling of cunit tests
-
-Add --with-cunit to make it easier to do reproducible builds. Default
-is still to probe cunit and build opportunistically.
-
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Upstream-Status: Submitted [mailing list]
----
- configure.ac | 14 ++++++++++++--
- 1 file changed, 12 insertions(+), 2 deletions(-)
-
-Index: libdrm-2.4.91/configure.ac
-===================================================================
---- libdrm-2.4.91.orig/configure.ac
-+++ libdrm-2.4.91/configure.ac
-@@ -163,6 +163,12 @@ AC_ARG_ENABLE(install-test-programs,
- [Install test programs (default: no)]),
- [INSTALL_TESTS=$enableval], [INSTALL_TESTS=no])
-
-+AC_ARG_WITH([cunit],
-+ [AS_HELP_STRING([--with-cunit],
-+ [Build tests that use cunit (default: auto)])],
-+ [],
-+ [with_cunit=auto])
-+
- dnl ===========================================================================
- dnl check compiler flags
- AC_DEFUN([LIBDRM_CC_TRY_FLAG], [
-@@ -411,7 +417,7 @@ else
- AC_DEFINE(HAVE_RADEON, 0)
- fi
-
--if test "x$AMDGPU" != xno; then
-+if test "x$with_cunit" != xno -a "x$AMDGPU" != xno; then
- # Detect cunit library
- PKG_CHECK_MODULES([CUNIT], [cunit >= 2.1], [have_cunit=yes], [have_cunit=no])
- # If pkg-config does not find cunit, check it using AC_CHECK_LIB. We
-@@ -436,7 +442,11 @@ if test "x$AMDGPU" = xyes; then
- AC_DEFINE(HAVE_AMDGPU, 1, [Have amdgpu support])
-
- if test "x$have_cunit" = "xno"; then
-- AC_MSG_WARN([Could not find cunit library. Disabling amdgpu tests])
-+ if test "x$with_cunit" = "xyes"; then
-+ AC_MSG_ERROR([Could not find cunit library but --with-cunit was given])
-+ elif test "x$with_cunit" = "xauto"; then
-+ AC_MSG_WARN([Could not find cunit library. Disabling amdgpu tests])
-+ fi
- fi
- else
- AC_DEFINE(HAVE_AMDGPU, 0)
diff --git a/meta/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch b/meta/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch
deleted file mode 100644
index 4708bf1ebb8..00000000000
--- a/meta/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-drmdevice.c: define _GNU_SOURCE
-
-Include config.h to fix this build error with uclibc:
-
-libdrm-2.4.66/tests/drmdevice.c: In function 'main':
-libdrm-2.4.66/tests/drmdevice.c:96:60: error:
-'O_CLOEXEC' undeclared (first use in this function)
-fd = open(devices[i]->nodes[j],O_RDONLY | O_CLOEXEC, 0);
-
-Upstream-Status: Pending
-
-Signed-off-by: Maxin B. John <maxin.john@intel.com>
----
-diff -Naur libdrm-2.4.66-orig/tests/drmdevice.c libdrm-2.4.66/tests/drmdevice.c
---- libdrm-2.4.66-orig/tests/drmdevice.c 2016-02-23 11:34:02.054904502 +0200
-+++ libdrm-2.4.66/tests/drmdevice.c 2016-02-23 11:35:34.371750383 +0200
-@@ -21,6 +21,7 @@
- *
- */
-
-+#include <config.h>
- #include <errno.h>
- #include <stdio.h>
- #include <stdlib.h>
diff --git a/meta/recipes-graphics/drm/libdrm/installtests.patch b/meta/recipes-graphics/drm/libdrm/installtests.patch
deleted file mode 100644
index ec1fb0236e4..00000000000
--- a/meta/recipes-graphics/drm/libdrm/installtests.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 5c6eb43c2f6e7f2ee7c25c92e42f4e4403fa0527 Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Tue, 21 Feb 2017 14:37:52 +0200
-Subject: [PATCH] tests: also install test apps
-
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Yu Ke <ke.yu@intel.com>
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
----
- tests/Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 0355a92..b4882cd 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -45,3 +45,4 @@ TESTS = \
- check_PROGRAMS = \
- $(TESTS) \
- drmdevice
-+bin_PROGRAMS = $(check_PROGRAMS)
---
-2.1.4
-
diff --git a/meta/recipes-graphics/drm/libdrm/musl-ioctl.patch b/meta/recipes-graphics/drm/libdrm/musl-ioctl.patch
new file mode 100644
index 00000000000..e3d6c5b8537
--- /dev/null
+++ b/meta/recipes-graphics/drm/libdrm/musl-ioctl.patch
@@ -0,0 +1,35 @@
+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.91.bb b/meta/recipes-graphics/drm/libdrm_2.4.94.bb
index c490285883f..d6542921f5f 100644
--- a/meta/recipes-graphics/drm/libdrm_2.4.91.bb
+++ b/meta/recipes-graphics/drm/libdrm_2.4.94.bb
@@ -8,27 +8,34 @@ SECTION = "x11/base"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://xf86drm.c;beginline=9;endline=32;md5=c8a3b961af7667c530816761e949dc71"
PROVIDES = "drm"
-DEPENDS = "libpthread-stubs libpciaccess"
+DEPENDS = "libpthread-stubs"
SRC_URI = "http://dri.freedesktop.org/libdrm/${BP}.tar.bz2 \
- file://installtests.patch \
- file://fix_O_CLOEXEC_undeclared.patch \
- file://0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch \
- "
+ file://musl-ioctl.patch"
+SRC_URI[md5sum] = "e9803233838007047f39eb385c70d9e0"
+SRC_URI[sha256sum] = "b73c59b0a3760502c428ba81de49cd4807657d26be5e697eba3a87dd021d16be"
-SRC_URI[md5sum] = "23d87cda92700b710a37d9b8edaa9f54"
-SRC_URI[sha256sum] = "634a0ed0cc1eff06f48674b1da81aafa661a9f001e7a4f43dde81076886dc800"
+inherit meson pkgconfig manpages
-inherit autotools pkgconfig manpages
-
-EXTRA_OECONF += "--disable-cairo-tests \
- --without-cunit \
- --enable-omap-experimental-api \
- --enable-etnaviv-experimental-api \
- --enable-install-test-programs \
- --disable-valgrind \
- "
-PACKAGECONFIG[manpages] = "--enable-manpages, --disable-manpages, libxslt-native xmlto-native"
+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 \
@@ -49,3 +56,5 @@ FILES_${PN}-kms = "${libdir}/libkms*.so.*"
FILES_${PN}-freedreno = "${libdir}/libdrm_freedreno.so.*"
FILES_${PN}-amdgpu = "${libdir}/libdrm_amdgpu.so.*"
FILES_${PN}-etnaviv = "${libdir}/libdrm_etnaviv.so.*"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/eglinfo/eglinfo.inc b/meta/recipes-graphics/eglinfo/eglinfo.inc
index 8e7d9bddda7..07ad07220b0 100644
--- a/meta/recipes-graphics/eglinfo/eglinfo.inc
+++ b/meta/recipes-graphics/eglinfo/eglinfo.inc
@@ -7,15 +7,17 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=8d4f33bc3add976f7dfae85dab66f03c"
DEPENDS = "virtual/egl"
SRC_URI = "git://github.com/dv1/eglinfo.git;branch=master \
+ file://waf \
file://0001-Add-STAGING_INCDIR-to-searchpath-for-egl-headers.patch \
- "
+ file://0001-Check-for-libegl-using-pkg-config.patch \
+ "
SRCREV = "4b317648ec6cf39556a9e5d8078f605bc0edd5de"
CVE_PRODUCT = "eglinfo"
S = "${WORKDIR}/git"
-inherit waf distro_features_check
+inherit waf distro_features_check pkgconfig
# depends on virtual/egl
REQUIRED_DISTRO_FEATURES ?= "opengl"
@@ -28,6 +30,9 @@ EXTRA_OECONF = "--platform=${EGLINFO_PLATFORM} \
--device=${EGLINFO_DEVICE} \
--sysroot ${STAGING_DIR_TARGET}"
+do_configure_prepend() {
+ install -D -m 0755 ${WORKDIR}/waf ${S}/waf
+}
do_install_append() {
mv ${D}/${bindir}/eglinfo ${D}/${bindir}/${EGLINFO_BINARY_NAME}
}
diff --git a/meta/recipes-graphics/eglinfo/files/0001-Check-for-libegl-using-pkg-config.patch b/meta/recipes-graphics/eglinfo/files/0001-Check-for-libegl-using-pkg-config.patch
new file mode 100644
index 00000000000..0289ac228ca
--- /dev/null
+++ b/meta/recipes-graphics/eglinfo/files/0001-Check-for-libegl-using-pkg-config.patch
@@ -0,0 +1,31 @@
+From 58d51d941d3f4dfa38be18282d3e285d76d9020d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 13 Aug 2018 15:46:53 -0700
+Subject: [PATCH] Check for libegl using pkg-config
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ wscript | 1 +
+ 1 file changed, 1 insertion(+)
+
+Index: git/wscript
+===================================================================
+--- git.orig/wscript
++++ git/wscript
+@@ -160,14 +160,9 @@ def configure_raspberrypi_device(conf, p
+ conf.env['PLATFORM_USELIBS'] += ["X11"]
+ elif platform == "fb":
+ conf.env['PLATFORM_SOURCE'] = ['src/platform_fb_raspberrypi.cpp']
+- conf.check_cxx(mandatory = 1, lib = ['GLESv2', 'EGL', 'bcm_host'], uselib_store = 'EGL')
++ conf.check_cfg(package='egl', args='--libs --cflags')
+ import os
+ sysroot = conf.options.sysroot + conf.options.prefix
+- std_include_path = os.path.join(sysroot, 'include')
+- vcos_pthread_path = os.path.join(sysroot, 'include/interface/vcos/pthreads')
+- vcms_host_path = os.path.join(sysroot, 'include/interface/vmcs_host/linux')
+- if not conf.check_cxx(mandatory = 0, header_name = ['vcos_platform_types.h', 'EGL/egl.h', 'bcm_host.h'], includes = [vcos_pthread_path, vcms_host_path, std_include_path], uselib_store = 'EGL'):
+- conf.fatal('Check if --prefix and --sysroot are set correctly.')
+ conf.env['WITH_APIS'] = []
+ if check_gles2(conf):
+ conf.env['WITH_APIS'] += ['GLES1', 'GLES2']
diff --git a/meta/recipes-graphics/eglinfo/files/waf b/meta/recipes-graphics/eglinfo/files/waf
new file mode 100755
index 00000000000..04ddd9f63a3
--- /dev/null
+++ b/meta/recipes-graphics/eglinfo/files/waf
@@ -0,0 +1,169 @@
+#!/usr/bin/env python
+# encoding: latin-1
+# Thomas Nagy, 2005-2018
+#
+"""
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+3. The name 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.
+"""
+
+import os, sys, inspect
+
+VERSION="2.0.11"
+REVISION="41b69b45f8aa445dce066a4aec3cdb75"
+GIT="fe03c6fa470f0bc3c086baafed8c6b4b6d28a245"
+INSTALL=''
+C1='#4'
+C2='#*'
+C3='#)'
+cwd = os.getcwd()
+join = os.path.join
+
+
+WAF='waf'
+def b(x):
+ return x
+if sys.hexversion>0x300000f:
+ WAF='waf3'
+ def b(x):
+ return x.encode()
+
+def err(m):
+ print(('\033[91mError: %s\033[0m' % m))
+ sys.exit(1)
+
+def unpack_wafdir(dir, src):
+ f = open(src,'rb')
+ c = 'corrupt archive (%d)'
+ while 1:
+ line = f.readline()
+ if not line: err('run waf-light from a folder containing waflib')
+ if line == b('#==>\n'):
+ txt = f.readline()
+ if not txt: err(c % 1)
+ if f.readline() != b('#<==\n'): err(c % 2)
+ break
+ if not txt: err(c % 3)
+ txt = txt[1:-1].replace(b(C1), b('\n')).replace(b(C2), b('\r')).replace(b(C3), b('\x00'))
+
+ import shutil, tarfile
+ try: shutil.rmtree(dir)
+ except OSError: pass
+ try:
+ for x in ('Tools', 'extras'):
+ os.makedirs(join(dir, 'waflib', x))
+ except OSError:
+ err("Cannot unpack waf lib into %s\nMove waf in a writable directory" % dir)
+
+ os.chdir(dir)
+ tmp = 't.gz'
+ t = open(tmp,'wb')
+ try: t.write(txt)
+ finally: t.close()
+
+ try:
+ t = tarfile.open(tmp)
+ except:
+ try:
+ os.system('gzip -d t.gz')
+ t = tarfile.open('t')
+ tmp = 't'
+ except:
+ os.chdir(cwd)
+ try: shutil.rmtree(dir)
+ except OSError: pass
+ err("Waf cannot be unpacked, check that bzip2 support is present")
+
+ try:
+ for x in t: t.extract(x)
+ finally:
+ t.close()
+
+ for x in ('Tools', 'extras'):
+ os.chmod(join('waflib',x), 493)
+
+ if sys.hexversion<0x300000f:
+ sys.path = [join(dir, 'waflib')] + sys.path
+ import fixpy2
+ fixpy2.fixdir(dir)
+
+ os.remove(tmp)
+ os.chdir(cwd)
+
+ try: dir = unicode(dir, 'mbcs')
+ except: pass
+ try:
+ from ctypes import windll
+ windll.kernel32.SetFileAttributesW(dir, 2)
+ except:
+ pass
+
+def test(dir):
+ try:
+ os.stat(join(dir, 'waflib'))
+ return os.path.abspath(dir)
+ except OSError:
+ pass
+
+def find_lib():
+ src = os.path.abspath(inspect.getfile(inspect.getmodule(err)))
+ base, name = os.path.split(src)
+
+ #devs use $WAFDIR
+ w=test(os.environ.get('WAFDIR', ''))
+ if w: return w
+
+ #waf-light
+ if name.endswith('waf-light'):
+ w = test(base)
+ if w: return w
+ err('waf-light requires waflib -> export WAFDIR=/folder')
+
+ dirname = '%s-%s-%s' % (WAF, VERSION, REVISION)
+ for i in (INSTALL,'/usr','/usr/local','/opt'):
+ w = test(i + '/lib/' + dirname)
+ if w: return w
+
+ #waf-local
+ dir = join(base, (sys.platform != 'win32' and '.' or '') + dirname)
+ w = test(dir)
+ if w: return w
+
+ #unpack
+ unpack_wafdir(dir, src)
+ return dir
+
+wafdir = find_lib()
+sys.path.insert(0, wafdir)
+
+if __name__ == '__main__':
+
+ from waflib import Scripting
+ Scripting.waf_entry_point(cwd, VERSION, wafdir)
+
+#==>
+#‹‰†[ÿtmp-waf-2.0.11.tar#)ì½kcÛƱ0ܯâ¯`Ôê#)° Z’/iu‚´Ž­$>q$?–Ó´Gfq(”‘ €•&ïoçº#)¤ä6iŸç4n#‹ÝÙÙûÌì\nãéäâá`^Nª¬˜õ·¿úÉÿíÿ§Ó/ü«ý|¼ð«ƒG?z´øñÁá¯ö?~òèWÝý_ýþ-ËjPt»¿*ò¼Ú”ï®ïõÆý?òï×u.ËâáÅdþ0›¿ï.n««|Þùu7›óÑd~yÔ]Vã½ßBÊ·ÏÞœ¼<ùâ£î‹¼;Ï«n6šTu¯ªjQ=|x3÷&ùË<¿~8™²U漢MæÕ`2@iu•¥+O¦Y§3™-ò¢êæe\dqy[vÆE>ëÞÐtìÊÇoªÉ´ìÜLóáuBϽêªÈˆVï$†Q§*n:[TvXÝ.²RËžUÅrX-ø#* 3Æô¼‚ð»4Ó|~ ¿“y_ÜÙžo†Wƒ"~}úòäíñxÇ,l5ÌU÷%>.Š¼€J‡ÓAYvŸÁÊy +'Ì/¾Ë†U¶FÙ¸›ÔI•¦a™MÇqYÞ3ú¸… =NHøS¹!ú9Ã:ÊÄÉ*I˜E°yVUÅäbYeŠü[#)J¦BŒ$#4š7¬{ƱZ1öêùÞ`ø×å¤È ³·|ì{\Ë5>§ÐË\d<™¦Sd‘M³AÉ  œóœÐ`Š †nÞõ rS„*°%Ú+Çœ“rPU·›Kž¨“MËÌŒíóÓÓ7/B3“¨4Lßl:*Óä<ÜþӶΪ(·ÿlßú#4áìëg¯^¥oŽŸ¿Ý#)æU6®<Hoó…÷þfryåçø,¯ª|ÖRáóÓ“³ÓWÇéÙó7ÇÇ'égß|þùñ›ôåÉç§8›|ŸmÇÔZþ|Y”yñ:‡#a’ÏfÆ•Ûfaú·°Âò›íضS¿¬&³åŒ?ºU4}þÍ›³Ó»° F$Ðu Uœ”“‹)%Â"FÈ2ySÜ ’å|³=ëè’9Ììjá,0 PŽÅ“é`v1tçËÙEVÄ0wËiuįÝÁ|Ô…L!¿FyÑ• ­³·/ÒÓoÞ¾þæmú峓¯Ž“½ƒN>~óZfR;[¼õ®³bžMö¾Èª³jô%€Ÿf½AqI»Xr.­ìßQ ÈJj†doÍý<Ÿ—ù4;Y6ÿl9gÅËù8oV¦Û^¸~EýªÂ¢×ŽÝ™)ú6[Uf~µ ¦ó­ wUþùd:•‚§Ëj±¬žÃÖ?ôm+|44ûŠV‡¾êììX}Œë}úê§ÄõþÝj‡ÃßH6Î7Ùî#*ëC‘¸ç„wv¢û Ó:Ç?ˆ.h! ÖSÿ#*àžüümHmH¯&e•·Éy¿\Ѿ’„¥9p“ä0Âͯ¾ua lì|øÕ;*Ù´}…\[dJ¥%¢ã<ÙpŒ9™‡¥—Ù=F(×úÊ_èaËd`è‚œ#4óbry_‹äþûä$œ*]L˜`IŠ$9‰UÌô‚€¦…Êì'AÅÅÂ¥¡äƒà1Ò®H§“¹• Øã„òÁYœÐ»9Mù+̤}jw-/‡f{¨æɸKp’žîXSŠL\•0½¶3˜^mËøsdóÃ̾¬®ɈtEïO´¬¦üáðíÀÿôwVº·#C´¨Dkþ¿¿<ÒÊ ù*›+Ѿz6_µI#Getƒ(vЊm;dbyÕG÷«ÖìyµZ¥•–HýЪíìå¹×>™Vä‰ïGï´•Š¼yËÐä“?’õ±{°fºµO⬌§Í÷íÏ̽Ýóx®Ï[}äOl±õ3ÛÃ1 ï5¹£]¿1^©?ï­[­Ñ?gQ¸-r»çŸ²,>¸r\ )S¦ëâ>ó¿…âè#*‹l>jßQM½ùb]µ0Ë[ òÄʧ£t‘‹¥V-€aÆß9Ÿ¸¢XfÕ:oã2[Ä+>ôzð·bxÁ„ÁJ·“U|íPMº5I÷éßyvC#*æå=›ÌÃÙ`Ë|ÅÞBˆbûíÖÿöçö™vÏN¼NɧËYs]ù{èÏÓÊMÇñOÓÂYþ>óÆ}•æã1´;ž5÷_!ëÚ¶fƒÛÕê6 ðšNؽm-ú“Ž?õÎrÑÜ+°Ûu¦«öj³Âƒ4Êoæ#)k¨i6®îµºZJæ>#)ØXólUµ“Ì÷ÞZÛq_G¬ÞÕQ‹"{ÿ¯Ah]w—‡—²Ò†® 7 ‡ÿq}òÉaô<á_øy}úéam/jÙŸ!µ”͹\L'•Ù˜ïÓLàÀŠ¤q¼’Èš!ð7]„/”ŽvõP)/8¾÷Éð“G¿å /Ä¿ÿ±¿ÇûÑT¿6}¸÷HŠ…÷ ?^Sx ýP+ýxzé±a˜$ûnñÇYk–)uà”ú!Ù_íÿÖûü¸öù·ûÞçÛQþíoqèäõã}ÀÇNÂþÇù{ÊÿjûÂ1â*¿YKÌ8¼OÌÄeßKt?y"q5e†ÄþO‹^úº˜Í€O«Öð·àYp$[w|&ϸùÆÁsy£=/^È+n§qp™M,>ŽÌ_G–ˆƒ/å•°ƒ±ÿú_Á‘˃ÅÁWšÀÀ® »½8˜GNGÆÁÌT†o% b ×8X»!(㵪ü:›—I‘õ ;“iáïÞ­.Þ‡çû{¿ûýöDáù`ïûg{ÿ݇iyþüÚߢ j¹JËîu—¦¬HsdYàæÁ»ßp6Â[9ÜH(Ÿƒko Ó`0†¶*eôm žÓñr>Llio¸{—ìG³Q¤¸<•1@ w’ÊGËÈ霥Nygo|-÷‡™d»ÇE¡Þ¿µÜÄ´9¥R¹oñ£¬ gÂVÀz›K4Rbº)’N¾7¬o1û(ŸË²­òQž#)Ïe:exµœ_'?ùä€×õÌ».fûHwåQŽ’[$ç(sŒ¹Cá,J#)Ð9Â?Â?»”—$¸(y¬w“³,Ç1åmåöâ€e&gaÏBàÓOyÄss^MæËLЄúJïˆæžyÿ‰îwEª}ç…®¬¥-®Û òee.xamIjV&¡ˆà»¥Œ#4¿=A·J¿]‰x‡:æC¤Þ÷“%c£a©¦¨¡ƒ;[~°T·v´Hr=¡Ê(Vˆ2EI—²ñx8¯¦1b1ÉËv¥&Yî¨è¾#@œã%ÅûI!îLÁÛã7_qD¨n« -gÍÃ2 >øüźs’ujùU×'ÜrúÓ‰Ý[΃áu¸ý%üÛæ.èMòa5#*?¡}Ñ{ûòôùß¾<9ûïXŠ¹…öùQàÕCªì˜Ëœcúz¸;(»™;ëÍþéÍ‚ÊwþAýV¸y¨·Rÿý¯ýýƒú_ž>ýEÿëµþׯ~ù÷Ã?Yÿp^L`ë™_þÀúŸO5Öÿ“Yÿÿ»×?©l¦ÀX ®WšªÚæͤºÂÛˆ*›eóÊÑ-¯¦Ù#4þ.« Å`˜]À ÃA>ÏQ4ÆBk•Hc ‹Æ“KT}•_–ñ)³š ,4>!#!SÆŸ-'ÓPã¬séhR¤Àî0› RÉyž§“Ù…òTer µš ßõ°ø§d›€lwˆ‡>€¶·é"'в(àkȆxAC5% CNHD¢‘îÑ=͉©êV0î}ûìó?¿9{yzòQ"%‘V "¤0ßH?#)–xw‡5Ù ƒŠAq‹¯#ÎÙ ^uCƒ|ŠƒJ³2Å©X ª²Õ¤#4àMsb3á{ÂÙlz±œSº¾OÀ[^QR£':[t1µî£Ž@R'ONŸ¿zùõgwr]ˆâ ¸|}J²«EÜN5LÓî±TW½ïrd·C¢å€ÃT-püé|0ËÂÌ(1ü(û—¯ß¦Ÿ¿ÎAH]*=)q9´”ò¯º2˜Íób†¡&#)vk*f¦é:-0¸( #)þá+íÀ·órÚLº#ÃÑV+Óà)`]¦C~#*ƒœör(ϱ®…Æ#J 4^z•.‚#)—!pøùM#4Ìä<¿™S½<H Wå lºE~ݼŒÜ8[°Óh‘¬ÅáÕ+ï”—‚Áü(¹F Lc¹©¤÷–%½N*ºíQJÜÑÂkÑ4zxyèÖkèée‘˜VwD#)‰GÃ0-i¢N'ÀÂL#4œ¦ûpzf•À0#ës¹ÛÀ gmÝ]ÎQ›%A±#)Ìesì¡g'6#)`ÖÄlš=óÄr#ì‚\Pz0#4ë«*®ÃŽDØ0ϱa¸‡S«Îñ©wöxàÓ¾£ïvÌ«φ7+fÂaY!ˈ˜ÈÌÁ)©³†že#4èÐÈà¯T åÉ8ð+› LÊøîG‡®Ì#*†.1嶰åÎøš®KÌLwqšX5Û¿Õ:Ìnãëâ8cA¯&Ù#4ó¸9È9ÅiÖÜ #4à¹'ó÷ƒéN ±®N‡ÒLúù#)ŠëäÇU_¿ÎˆøtA;ÃägÐ%댷‚tk5ª®@ë^ìLí¦Ð@ÜQ )©o¹v±ÐçDÖ©Ág~Q¤ì~¢YêçNcw§%SC)nkC™KËÂa\Veèž%ÎNxs•Mi“u‡ùíUVfÝA‘uNë^fó¬˜ µH7œç]öpQä¨ÑÚçËùˆÅß[f£/z‹ˆš«Ë@%èîªF•uß,ç]¢Ú#)p:ÊŠ.®;&!#*6*šs!,hX/ݽ«.®íXií:}"«ºjx…›h­‹£NËBk`#*½¥èÖ·R‹†…ØŠ^SÌ ¡é,-ÐÑ20)Úƒ#4éÉH…›õs¼9~ÄYè´‹ÎÙYyYëæ²*BÞf=$ÖÊœZÛ*¸ÑÒ¿O{#*.Ój qa‡Ñ¡OÀÃÜ4o™Š¾æ¤x;#nxš‚ÕÂô ƒÚß°µÿi M=­C˜5ûÿP½jUÑŒ^$\Qï ÿ†õ¯½ÀŸߪÉ, "i)§}ü»XöSÝçÍ~ïc`7C;˜~]èáÄ#*‚~lj6æeW ÷ãй›nùP€À+aúÌlVkšb0¡ÝüŽ©ˆÈÒ„‘ù÷©Ü ßcŠº-ëi¢7Gµö³ÛÐ<†d–ÏÖpkŠMï9ýüù§ð¾Ên/òA1z ³º(–2,Í&C6#4|pOuTñÀ]âˆCJÔ÷‘eˆ.å«åˆàðl–hè¡L‚>&&[Ç(<À/ÚÐægV/½4ÅÇ4µ‡%¾ã²n#)Oa-«4•ûè#4ïÏÃz®‹ÇXMÇPÊÀB–UŒðÞvÎOWÙi`EíÚœZòµÁ](4>b)±#4ÃNd ¡ˆ#)/¬?¢–lƒª¼Î•‚.LR°!®H>Ò½Ã=9-<i³U6D{ð+Yír!õ4U·tä @36èƒõ§º{¨“vŽÝÑðB™fÙ2Ù¸MÓü2Å´žz‹Ï¡|ÔN¬aÊQ¾¢ÀÌáZë&çj¿Ðëä{ú$·=\o Km¤:îîòÜ”]kE-iŒòØDa/µö Ç´¯D Í'åU6ê–Ëá0+ËñZÕ#*wúÑR±×u„Íòà3ËOîPÈ[l6¬æ÷X¾EãþRF0ùs¤§×nNZøÈl¥Vê±€¶G#æ~à—Ã~Ù›åCüq "áºÆ¼5¹4/Õ:æɲH¥ÈPá$k׬a‰¢öy¾œŽhpY ^‚XËQ'è‹Ï`ŒEˆ‡]ÈwŒŠ„Eaµ†íf^Lé;’UöŠYUdY Ã&´’—TÌÆë‚€«,»$A¢³$ÒhP#* oùœ-EÝ^ÇãåÜÃ/¯ÝÛÆ+íéY«%ôÓ;>9=>yëíº÷zó®dä)Ž#èqG›! Pz¸wØå¿øòˆßà'M½ÈPK×®¤e¥ì|£C¼ñˆXà5¶Î&œXŠ¼.S©£0§›ƒdEÒ¯­"™5D³×#ê3a'y+êÜ!ƒ'wKUœq_'±o˜ uæ°å±£<`© ‡5G Mv¾öeC´ÐÙš$uxþæÊuÜ‹óÚlp²5æ…%dÜ\uá‘2;¼îý!¹n:‹Øl(Q‡F_@[Ìv$¿²#*ðé‰ ˜ôáÕV›Ã(#?¬|y™/‹!~e´;àù`/Á3læy0½Ì“#)VNïâûÃ#)'m•RÚß~ä-EÏO£hÃú¤jÏeáy]&²ž<HfÎJhŒ;ž£X…¾š*„Ϭèšhk sðùIåQÂ$…î<§Ï(Œ:xƒ‰¬Ÿ•K¡9šMùß{³Áu–â‡ÐÔìVŒ_z£lš1©±þ\Ø¢óѶƒ^C‘#qï@÷»›Žìð˜H·ÀF”ÍCªWEúQÜ»J‘-¦À T¢‰ÜÖ9«e`F¨XRá*†ÇHjí#*§¹¨à‘¯©#I‚ï'‹€Ï 7x—qÛ‚ÇD^{ÿ=Y|Žp(xa°(€’åb³¿|¾8þüÕ³·Ç/Öb-S§67hÔxnìƒÝ#*lŠ²ÐV¦  JQC\9ˆ¹°ãµXaY·od«¡jÆp6OÃà´¿aguÙ;#* ØxÉÅôpù=ÿ®¾Ç#*ûÓ[$Ó¸”WŽP£¼>yj'š¯€…âe‡.}‹”&vC.žàíÞ?ó°àÎŽ§ƒË2 Š ˜.½«lÅÅÂ!z’ÝØMˆö¥ÑQw§D¡°YäÜw\^;)/Á£N&åM¬˜f·áþü-˜lgC³“';ð0Ñf©ÕQÿfüÞ4S8¸þœ¡¢E6ž¬îž4xo9‘f'¿]zoKª À#*0°YüDç#4Q/U«¯ºêÒ#4_Ä4@˜yÎcƒ ?(7%ÂØïdìMÁF¾úpkÍ®«ÓÍU¤´ù6î¥n‘Ú´uÚ»Q¥?aîÞ¶[ÎoÍ÷dÔÓŒ.„Í–›'Kouë((Ön;ÖæûF¬ë&t/׉P4áÙë×'Ͼþcžc)ÉýûÝ¥õV>8èíQÇDðØ#*ö‚]Zë§=ÚЬéæi‚9î5Ì• 6=-GYZd—ånÐ}ðà!ù½øØsž™Ú·éæåÁÿGaÃúŽÐ`…Ÿ·C}ÈùábpÍåÍ‚ !E¶wó ¨]#4 ™ÇËl>âÉ…K•íùô¯å5jÒó‘«ÛŽ#*Ü…6Ø6>ÍnÔngÊ Ñïý@ûÝÉlI™Á¼J/§ùE`§1‹YH4Ú‘³2¸åL¦I"8ÌðäºL§t'Sd˜‰ÐP’”IÑ’ÈP¢,™û%‚!>‘´AéRºD«&üR±Q&Ädó"ÒÏ "3±:˜-”øŽ/ùª½E’fK¢î›)@vÒe6vsoW§šV]C ©²Fj^ydã^€Þk¨ÏYT‡‡·5V‘e¿;êJq@òø%ˇéž–sû¼·7ʈÃM‚]n|ð±Sêâ.ãþkôÙŒ¨¨ØRötÎym…§_å äu«Â=míùÈG\?­©7»ásôð“&µó"’^b‹Åæ` PY"š,—Àk¡ø­÷šðF;áͨõDŠ`ïšTJå{…Q¿U í„ïŽЄ©Ã'‡œñ”®)ÉE¯¢y?Ø$;ÌFÙ(îÂZåE޽ɀ2E[.¹ÞßqšîK²Úûш¯høíNAï%NQ—G3«²š)]fM#»_¸¬r3QCÙÒYV]å#¬¤ug°ª#)\®g¡¸G˜‹w6k¹Œò”áGÒÒ¢õRSoh×€¹·†›Scùù¼·ˆ‰~‡Ù8D„""‹’6‰fqç:ðŠm˜¬¤Á9¼˜«Êr%«ä*E™X^ÅüŽüÅ83I+j?›ÕzÚpZ§°bs^}D""dšx˜O¼‰ÂjÇ‹ø.g#´tAcâ#)¿ ìÞÅEV²Íõ+ s¤ÄÉø› º®Dâd­ ¿k—Üyž¹Üz¨€¤?˜mÀÜ4>ùƒ#?Û°^üÒíÑ_iò)ñ×òúŒÑ/öÿTýÿ·ƒòú‹lþ³˜ÿÜ¡ÿÿèððÑ£ºþÿÁÓÑÿÿwðÿ<Ì·è:/ñÂjXåù´Õ4NP>HX_Ôô­þ>©ê³A¥WírÍ»`ˆ®N:_?{qü&=þÓÛ³ä<è]áUäÕbA?«ý\}aQ*¨/½Úκoœ#*íPøy1’i”¢ßtÚk‘:X#)3²®þ÷®ã®o,/à ó*…R‹…yL¤ÂÎ[:°É°—–^™òº4< j/\#)e§öõÑoR䥓ъ}#g»‡º¨€'×7çTI߃¯Ÿñú£P>Ëh²ˆü}Ë—È»ÂÀºWLÄχ—sÌØ÷’HøƒÉñ~´{p‡ßL· ÝÜQÑA¥ê2…ïp’.ç•-rwêýp»ô½¾ÊnQ;¬KƒÞƒ):S›aÕä¡ù'ÙÌÜö]¦¦#•ÝþDY‹d°@`Þ3›ðéöÓ $ím6ºÈl£¡nÙY2ßvµŽ¯íªí/Ì!äR‰GöÃ0Õ!åê@«®ËöN™ì”€ä*FÂK·õ«(r„Û#))¸aPd;în3 #)£#*C^Ø¿z¿uÍÁsrC­¹Û…ŠžûrEßM³YÄSª¨#)j€®"¿Ÿ9+«–[i*K#4q+4íöiÇzÖRúRà¹b-+H,ÝÇFmÄÃyY>_#)K]T·¡öS¬Å¥·«œ †“WØ=§3 Í°=knHSź¾vÄÝœ€V°ÞŒ ðs3Ü$¸#)”äYB¹”gE†r8‘BÓþIro¹#*€m¥së<xX¹”Ù×%ðÓjó-j,ýÂK½Jðª¯îòDtâÖmÆXí·=: •Ås¸P©„mÇ€‡'b#)ݽ.Уî ê¢ÛŽª ½ÔeV†­;©~Ä$«¡c’¶X|J« Bâ›Û&ýjwÜÐ#)y±û€ÏиD³qC‘+3;ËÀ+áî‘úlé(’Pfµã0l¦ý#)Y7–AÄ5‘"pXd(QÏÔœi+_Êæ&N=f¬nŸ!3fÝ"wè7H™âÍq%S{3×æ«ìv£Ì(›vR¶æÆêÁš0aFǪÅtÔùmÿè.SÛ3«ÈIkíÉØV…ŽL΃ç·Cè¦QV©ÅG J7dæ0KˆVL^Ðù¿7ÃèžnO ö`ïÆ*é—ÁNx»ÒS›*”¾8Ãh—½›ËŽà£È'ÅHˆ—Ç(»X^†—G´› ¬ðر2žÈAá-^1N³ãý>©Uwkge}\ ƒ.ëÚ rl:1¨ vîã`geU²­ØûîŒ"X¾þ[ïíÕpkãa0Í­°êMÈŽÉ»£žˆWÀ7Ôî„ùdÀ;#9 ê˜Hk™÷û#*71Èmu¯­>˜=]µìùµ»˜ÞÞ.Ü.%Í2²Š#*Í™µmôv—Ö=L—k•ÖQÚþœUŸð¢ƪ+ÅØ"D‘" ðC]d~m‚Ý‚Ô[©4ˆ(×bïÛc6.‹!ÑìquYñƒa70gânóçX¢ºÝ¥Ùc3a‘âiR 嶠à)=™/–UBºä€jý9¹ª-Cø †äÓ ô8]ÏøâÌ|•¶OsuTˆV§4w²¼W#4,ŒîAhúD¦ ·kHG$çCú2êq«¹•¸æêa±ÔéMwndGn¸‡š„ªi”RJqø¤4À’>RÀcÅÓi#4 å9üé»L™AË)UãÛ”²£ ,ñgn ^“Ï#4AhÍ@Ó#*½UÅ`.³¼²%Ág¯¾9Æ»Gœ1pNÒ™ñEÄ pL7>@@‚!”ÃÁœŸän*5Œi\^eÓ)÷ ¶_àûô'Füël~fãÇ<ÂlFØ.ŒïPò¡­n< ‹Zj;5\Éèþ1í”_m,ÿHƒé/7ÿH£è¯,õ•£#4c6K¤%¨ÂÔ«÷|ŸÈ"Xï,Úu¶#4š€àE Ó>ñU"îÔ2¡ÑÆÄ.NXueOâ..H"®y놉1¿Ì`Á«Ô aÕ“MA×ùµGfò|DãkveÀó4Ã1ß#Ï·‰P|`¾aðmû";¾|Üßzk»T ¶KL8YßÚ j¥%šJû¯Ñ¼ÓT¾ø7yòÄb¦<ÊǧçÜ]7E3:F<-ôh¶ÇÐÎ<›Œ _^‰Ñ‚ì[eý(žÃÎÐMK¡‘ÜÎÑ›½À7&;eøàZ¯ì`2åè=¡RËÔbéšIzâpèìÒäÜ+Ûwõ}A7^ÚΟ#)CxN},M×=í㇠Ô"‘õö Á—¯HqÓøç6 å.Ü-œ#*p¶8}˜¢Ù’~#4ÜW-H»ž±Zãüyß™îf¬’ë›SÑSŽ“ñªr:ZŨBDé¬Lm#ÚÙpIGêDwußÀŸ¾³¦ýkZV-•C B3V+F+HÃ#)I½¹ŠÖ4³9Wž!pp46r)hºA(‡82ž3FÙ&%ÑMǬd>~DæÄsÒn@¬•±pøI9t›-:ÐÍ$x VL¢Ž‘2x#¿qEê~|©g âsâiA• =%ø³Yv…0sNÈbð÷•ÀG²†9RoéLIÌážÔ>ˆáüÜ4®œ[ç"‹èpjºY{D³º”„WÃÄÈšªëÌÒôJ(§§³ž1Ý\D@ëY>ò¹Ý€ÒuFÊ$PmÈ0-ˆE¤À$W#*¦NÄ&BA’ª’L-éûAQÖ2`M ¢úP<^¯„S#*|¶ì&/F-9å‹É½DÇ8ÔCµ¼¦›#)lb@¤_¶«–ÝùÄLþrs¡IÓ{:Êe¢«^ -Jñ„Yivkdñá¾Æ5u+ègbGŠ‰T&|cé’Øip¬cêäØA8âN“›%@Æô‰+Ç”xûvñK¿dí Ùï:q"[Þ§e‹Â’U×à ú:ŒŠ|O2]‡Þ²&‰TÂ3Àl†[æïQS\O}W-S+¢ÔôôLšî‚5û)¡ò6¿«áÜìøh¹»8‡ãpyaéex½»$HÄnd‘lN!™ Í‚fU˜‚’"…ÙB…©N"BQ‰„Ìdliy(và?˜;g-3èøÑñ%LÇ ÜžÖev\õøõvRóYV/sëùidtÖL“&0âÓúºeN-Œª˜™Xû<FR£›AÙTæºî÷‘Êø¤…µãÕ¶Îé+ìy}¿¹ ë tË®ÊòvÖs™®Ám@ #4Zè„D¾Ä¤È¬²À§úÊë†,Ek‡š‘=¼;ˆá.Jè]C ÔÍW£PV^!x7…à¹Ó¼ Bój¬ÊžÉXTR…Þà—–ÂƒéÍඬ•åDØøçÖ}Y­N:Ãbëo#*èê8ÏÎm˜Ìµ;¯]HçµkĶëÅ–{J‡2mãýí%+­Š¼He‡#*á¹&ÈæêùN#4qmÒrµ]ä¹|µ{÷÷ðè^™Œz¼ØácöôéãÇ2¯ÛiToÂ9àӶ͵è•4 oF5°F—êL#4~‡ jµu8ª•ÜÃÊפñՔÓÕ!”Ëì¯úJùë2ƒRR¬qia{ÙBfïöõ|ï ÿQø%ƒ#ï~ÆÜÕrÕì­ký•C¢µ̸ܵ#*£ó ì½“×jµ@: l[$Ðæ;I¹}o‚VúÍ“ý–¤ç¨¥I['MjW¹Ç^‹?„ïnv£?1$~­fÆåò¢¬ÒÅ0¤£ÿ(×#*@-Ы9™d–kïÂÝÓÎ%×ý{VÊéQM­DSídSªIüqÜ ‡I™¢à¼ŽÅ$f©ä|9Ãœ²³©ÜLwºC–Ôù¤Ï‘¤­7ĸ‡ÚŸ¾ZW/„[ºÄÀ«ÒˇäæÆb€c}›á›íµ9*®¢…(emèX5•…:!2Ö^îXÒCmîƒüPð%q¤Sö¥Mâuj #)¦Ðó½¶WÞÐ(žÄµ¦#*[ˆ,“QbG)Áƒt)±ù5N`Ë/hÏÌÿÝ#*ù€¤6 Ù$Wl¸w#)ÜÎMA£7ÅN?Ó®(¹ù— ½ô.‹|¹6^†M½(Lt©¾íÔ}*·w.Ù󖤓Þ!!´®Á´åàö?öuˆH™^VnT•Ñ°Ú¨Þ4<³•…”¶­Áf…vî*ïÈæïÏW}ï­·„æ­Ð¯é×#È@®øáÙs.S»¦¼(o1ùF(Ud-{3t;£ÎÏ3Zx€bpC#*SdK`Þ£~½åö~6mˆÊÉemQ'Y?séØž\Ûh7iÔm¢)V5:ðº\¨Ý•î?hƒ"¡J&tmûZÄÏÅÊëCw’;à›2~-$CÚ0F֙ƉEK[Àˆãp$˜íVð‚–;¯sñ!âþ#4%§Ù6­«é#)ú¿IFx\·ƒžõŒÍÿ¬\>è-†°© ©†Ôðbؼ…leþ¥6Êׯ4jJJØ| #*¾‰º~ó·W/?{ñòÍ×—l~òNõõ×i™*ú‘F·qˆWüt·¤7\)o]dÍ•¨ÄºÖn¤7IªkÌ_1¬] ´søƒ#4 ›#)+cÙÊÖ#)#´søÓ·þÕ‹aôÇ·ºdnqÍ#*€º‚ì"+ºùXŒ„Šxg-Þ5B“8&šøûÉ‚Ú¨}Eq4t»éâa¾œNÕ3úm­lk_°*¥©¼+E®·‰·&q•$ŒÂ ©±±d=ÎÒ— çÙP¢rŠãaæÖ¥Àjþ!.#4S´Ýš<°kô·†ïnàW>‘œÌ+ë>BX5«¸uª¸HÖsò·­•Ü6*¹Hní(6#*î°!þÒõî”ÖïNA #ï¹~º¯ˆj ååÞRº¶1Ô#)wøìëú ,ëZ”îyv“Å­cœ¢£wQSE0qþp«U#4û¸K&-LØØйwmŽŠ¬(,@öHW~ý}õâþ2š¤â㼞ýŸ5wýÄÿy|p؈ÿóä—ø?ÿöy‰Ö^p æCâãÅ¹Í ÐZþ±U Fô!ë@#*æÃQ|ø¼è|ûìóôùéÉç/¿H_~‘¸n>;Ž‘7ëUâKŠî#€qBÆà×ÆwÁNLtTvó¨›Ï»¨“{©·ÐU¨«»Âß÷Yiáàb‚Å.&QKÃûâ?¯¸4´š¢Œõùëî²$­ñ\€”_£C¦Iu¡°µÒÌu¿Òó`\º6ïä†;帔ß~µX+SÅ%rÑm¨ðiÛ3å¨HÇš¢•B&‘6duÅ"ª©Ìù‹P›cB=¦u#dÍŽ $rQ¤Ëh帒[.Þm"ÐPy‘±ZÂw«Lì«{ïB#4RlÖõðG~JN_7ÇOÙR#¤êòµkµ\¿÷X.a›¾#)ÿ7AÜšk'i\ÃbÍ#)r ÷­)—é5¾ÚP*!Ã*ÄÙ³ë"-eþ•Þ¦ù‚®†³¸|‘¸“Àƒâ–•rÔýp –ŒwzÐz{úÚ¥†êåÛmRñK=¼¤Ù‹—bH¿¡¥å!e1wx´xcÓÌHÒ ,ÔÐ/Dr ÕÎÈ]s5(Áõ.bÝ–ŒwvÑé7oë]ÔV‘º6±Lq»»ÿN™¿u ½;+п3U´d$—•ÒDí; k§#EÂGÈ#*H[c–M=lY®`?Õ`Åðƒ—·Æ”á¶Ú¼—gžƒ6bväìÄY+™m¸Éí•]1Öuni¸5úm1-eÏŸ=ÿò8}ñòM£œÓl/òÉEÛQŒýSÕ€„Sõ2+² "8±ƒá˜ep®Ÿt8ÄÓ™€z ^pnn('®ð´±a™ˆo±Æm²f*ÑŽ^1Ä·¸Ìàì àŽ#)é#*éú&Š:©ƒ#œ¶WÙJcârfó;ŸñÔŽ¶ÕzØ„ž‹¦‚£–hzPöóÏ^BÊbÁç4$ÇÁm²Ãx[£´ò2 àDalùþÍÙ7ükªfX¶LÛ”$VqäïEI¢)R"ª».rQJ’.1Ъ“3q.þ£’:p=H½Và}ßfÌÇNᆭê³"ëÞæËî¶ÏÙ*J¨‡7pJ¡m*œFˆZ²ÝÛîþž0»“Èq hTû¼à×zH«öþo‰F×Þéwx¤Br#)'X¢3MÒÖDMp]ùžuý#_ê!÷lØ.Çv= ŸV¾ôÃ÷ÙJ½3%†R“Ä6÷†ì‘.!i·g“Ü;9…mèùWéË“ôÍ7'B‰ÕƒCºYè¾H÷’ZO¡+Nã ¯Q $öÆ`]­ž¾6 È]C–{# ãqO„7º&Û€0w! Yî0í ÷BX²·!ÌÂuKB{vŽ›ú×oŽ?ù'Ý[êk„=ßbëÚ¢þÙòI{Áͮك‡Æg/Oà(^‡šÓ«ƒ6›;iÏÖ¬T²·…eÅ×JÁoþÆøüˆŒ ›á Å&ëÐ>ÜC‹s'íÙšhIöMhAQ¤‹8 ¼<} ç°exn‚Hô<-cHvk){\oqK[û\®b9É»Iwµ³z7'6ÞvŠwó`ÇL·/ÿ¤Ç´å6ÅáóM#*'àãŠ>Æ[íÛ‡îÙÒ•¸8‘õáÒ`-Õ,Ã\¥¶K£åcÛâñ»ÈRpPr×¥ Ͼù†@—94dŸ§È5ãÕ=)ŽŠ`¬¾sìæÛ’M2Qƒ1f&Û˜dn1Ÿî_D¸j4ÌÐ…ñâšš%Ä5%„WêS®SÖª¨nÍ— •QÛuÜ­"m5Àøò…¼Vÿʈ \ûB!‚ˆ†ñ“²;˜¢šË-uºÕ,¯'dp;˜Kôn½€¢µT1ê§ÜLdVU¡-TBáöi“0 ™?$Þ›ëQÀq!oÃÀxsØr2dŽŽÓ÷[1H§ûÐáª!G „‹îø‘½¦Ú€<бè8­ãæ÷ød¶ Õføï?(:õŽßjȨQ΃Cò| ‘ð¢ŽæŽAñ5Ê@ÙûÁ”.oËÐÌǦt9vD™ǵ®¹’Z†ÖÜÙ¶rƒŠéÅq–iLO1ƒUÏò=o´à7´B!ÖÁ”¹õ·#)_·ÁN ¤×ø»5,€oÁ¿?FÖNªþ•}ƒã;Éc¯¬#4,¬pη*1é±E`…Z’ÐÕZoòɶWztüDãkm'á,#*ÕLJfÂ6?²ë›Ëä$GïºWµ­´añ¯$Ä8d5#)ÌŽúåM ­ ýq¢BÇmr}C~c“blŸêî£ÆB#|£7Zž')öÈ]€Ž±±LÆNð@'`søÇž]fds7Ý}6ój#:Àž1Ú&y™Rh#4<1º£æcg´\ØF:ƒãX¸~¶]Æá#)ôm˜&׊ÈÑò¸èVÔÂbÄâ^MkqÍ„jfˆRŽT‹ĦÑôMÉóPè䋼ÓjŒæ湺B¬GuÕ ô<­·îÍ€RĘvÀ{ßd,³E‚ä¨çzÌé°ºX½´5o ë}²JÔülúÜÚŠ7âN'#n<>„R㮘Mæ“$8èý®÷»ßñl°‚·Ã>0KGr §NÒ#*r7D.t¼žQÒ¼½íѱ…Z}:Šé ÀF‘®$”85ÉÁŽ#* >_Î!øTäMîÖàVZ^Ñqz‘YWYr°IPå°*Iª¢¶:ÕO>¤ÎY~w•T«” <âÎ̯¥£¡"‰µU Ã'º5¡8‹“ó¾ÄìΛvÌšß5óPõ [Ùjûײ¬=ŠwÏ#Ý°kÓ‘75ÔŽ(”;Áz›E~Y fµfë<„ùRâæM|1¾¨Òƒ2”hÒ@!cTÚ{ƒ*FL€Æ«=8{‹i,Œ‹JB <~|Ó(›ìܱñ#4#?¢Šc²f:[0Ȧxâ îê6¨¹pM #4“#*žEÞ*‡#$±B$Ú#^pp¾×ëC®40ý„j±¢“±ý<ÏkR,p“t$bj.±nªØ0Ì6¯'¬xýìí—]¶#™(°=r}¶…Ó¥˜Êzw“F¨œ‡Ž–)ûþ6õ¼—E­eëç’ ³…Ç &®-éår[Óá7eiÊÏ?(nÍX¢_–RZ=Ånï9Èú†û¦n‘OúÒùx³©ä6…“Žã1¹z_~uüçôù7oÞŸ¼M¿9;~;Óîg¨êÕéóg¯Ò¯¯}yrìÕÕÚ›`ÁÆiåFLN’Å—ü°[ד¤|°£ iâªÉÊÚ½ÓH6ÚeàkÌ…ôà‘>ÑYø×å$3Ö‘oDû”@J`S§)Œ¸#)á}¸¡>\s_&j#4[h+“Ö;;¢ÙqŠ‚7êÕ·IÑ20qº{‚¡²#)7³[†“&KÛIAFL™0ÁŠG—IØ/C‚X.Äi—kˆ^^t”³³¡PL<#*o#*ùè2o¢ý]*àØÁÔÎYlÞñPÒ’£1(õP4t)ƒƒ«bvŒ®$œÓxÒjgß|jëײFÖ28îûÕëlÍa¹4AG‰ˆ¯ZÝyúÒUŸ©Ëš5×°1[ ¢Žgc»åê$Îk8Ï6nnߣÖ{¸ˆßGžçc<6>JÈ»¬ÙóÉ^n×ß¾ì2±¼ÚIèÞxTÑ.±ü)ÏÏ`לGWÙ*¼²®4r¾¥‹[–a­‰ì c³u™Ýé>ÌI‹c…ìǦåÉ#)Iú4s-|"zCÙŒ(CåkTŽ7FePͨõ¦Ê§ÌPÞ n.dTƒ;#¡ˆAŠ»å¢^Éwç#*Pý— b'KæÏN¼¤·Ø5Æ—­`Óàî ßÁ1­{p'ͦa_ ˜N]…@(Ð #*ØãΈ ”iÉ«\÷JÓ²>y*êÆý®Áœ”pGlPÓ#*LÖ†c—*c½ÖÃvè%ž EþÏ]µ¶>…--.à¤Ùç4V¯/“#)ã¬a‚¨8ªœ®âkãŒØ•iK¸Á#q%«“®o …qr²ñë9¡§N@[ž~Ÿ…ìÝ;0ËIç)—e+Ù¦¤DuËÍ4k›"G¤ºÑ.^ì´Noæê’1$#)ñÄû~°ú–…¶~…Eúµe=ð±ÆŸÛ.6,Hãìß‹Å3¢õ؃7â™WR†Ô² ü¢² Iç™õÈ8‘›¿Ä8Àéab˜ùÒôeZ'ê'8ñxµ Ï)}vDZ$`¤€úJŸáH²”^f–!,íqer2Ë©MB9á¦Ö0åÕƒ?¿zuúm`d|ÐRx#)Vý"/³O¬©Äº°´o‡Ç +¥Hae©ÓÇé8’îrl>ÃÖ` ']:ÐRÓЦû ë„D«‘k#3ýz:±ºüškƒ*œÑÓùûo­ÿO¶7?KðŸ»õÿŸ<~ü¤¦ÿÿèÉá/ñþôÿoKÑþoSõgÑâwãÇ¢^~‡"Ââß_?ø5þô~ý#)vìÐ[JoÿžÿñL~> /½áûrr9‡ßΞ??Ó_Éð¾,agí•Ã!e/ßÏõW2|6©¾Ê²4˜~9©ôWk€G[CïâûBýTÍ~u)?’~ýöD5ÈÜ›ŒJ|ù¾üH9FðXÚ'Í#*ìê”Îvz{q–ž!€G÷+sØ"Ñm#)z]‰§á€¯SŠŒoRŠ¬÷ýåÛ¯ìxŸÀóõ*ùn•¬¬Žï»w@¡>tµ~>ä>ÍVÖæ#*éôZí1IQ{ÃáÒÆw ðz“`rãA•PÑú„2ë<_'׎ú1àqÞ뻸=@ãänÊï1ÅMØ…„wïvÅEÈuüe§üM°s]ó2#)Œ²ë›å:Ö¾•ËŸ­Íwáë¬_ŠE-sUVÌ™*½ŽåÊÙ¹+v{p)˜‰h_ýQ'G¹¼ÀE‹~gØ_ôœ§†w`¡)¨ÄÜר¿ô¡0­D‘32NýlFdnø*¤Ì–”<è·»ãw œõëÎðl¶¶w0iÀ«A; hkºD׌ŠÓh¦Ï¡“¶Nà P#€›Ùwë³ô‰f:ïcBNv>@±¯ÕE¼ÇøQ£•»‰TFêô…”&;[iZNóªLÓ$Ï c,%Ô¢…ç@é|˜wRyZã— ÚÉŠ$ˆ>è 3$ü#ñ?èÙXȈ«a1fVŒ6F¶ ­;%ž)U¥Š!HHÛBs‚ÐE•%¿21›aNR¢a [!,­¶`Pk&&±Øm)¥ÈU+½öëŠ%kš+g†Á[(…L§_ú¨8<S3ü¢×ÍmuŒÙ%áÆx_¢qf•ÛxmÌŒ®˜¼Ìë±ìƬE·\#)ûQ¬  ¤ùfI˜©T=4Þ5ƒ"°^T¬37ì¬%ƒ0Å¥ëŠFZë¹Y[\7`±F#*B½D(ý®Ì;¢9«ËÙŠˆè#4ÜÚX¥E´ÊÓÅ`R”ä†8±¾#4{Iól>Ù_=bÂÔ¿ËOQç(YÎ'CŠOfΟ˜Oέ=g+«ÂxJåšBºð²‚f?4È Ef”¤h6ÍPºGnJ䙕@¹¾]m —z0ý*õ3ÏÆ÷b½;DÞíÂþú—Á¤hNÚ#)ø7m%N€-:b±ø¤àmkÂZZÇM±SÇ’t÷JåR]'YfÂÄ›áQŠ;yiEóo(ª[Ž»ÔœIH¥ÃfuH›Z‘#)QX&xG]¶€ì)…µaP„d:™g(óÄ_(i|ÎÄ»:WýÅfL,)4ò3ÅîWêœÑr¶àm0Pü;ìcl5OÑ®#)×Í™×7WÒ\ijjE²Ùú&WÝúk]-eX[IÇn¬^Ýáy•ÆI^mW±±G°dt·ÊÞĵ£¬‹Û‰´#*ÕnmFy¯y´sÖUŽ;ë,ßš±yIѦ‚ÑŽ…Ê­ÜèÖx•Žmô42%â*+þ©iAÁ gÎYhxsTª5ër<ž¬lÁëd6X…û6\U¯ ÏùHí×ý$‘öÂõ‘@ºÊ&—W.#4BH{”>K$¸‘ø6õ 5„Y8fH=!nžÞœš=÷“ßùè䢮9“30„Èö}®;E6%¤Y᪊9ÓÈíIÇÍLsˆ…ÐW 9ÇÎC÷¢ãž³F#Ú¹zö.¶ë‹VÃKÇäÒñùS ᪓å>Y×’o2/­óÑâ³£>Ç9t‘é© änYÅaP*ò8ôQSSèLäÁ0Q8÷zëü èâËt¢C€[ÇÔÃjE¦²ŽýC‹4_Ïa 4¾¥ …ßm“-ÿ´5\ºîü°1Àözªc^øODõHxk„â2c6¼¢Ü÷57kÛ yÁ#*ßN(]IÍškF3mµá½”ë#)’xC¢«EŒ8ÉŽY,ÍþÖæç³µX­”_Hµ+±+i#0üsÏÌŸsì%»ÙßWý|üïWÓÅgÓ ×û½ÌPX÷ÿPϯ]Í~—¾ ýŽµ+k$ûš‰IjI(®™ ´-Ãă)C,þƒžœ½´ÑBÊ¡›bÜ¥.ä„a(ù)äÕî5ALJ¬^í)#*Eö{CéO!I\Eòù¨AíN™C¯ -ÛTDnªÚ«ãàÃGŽïÀÝÉžÄë9DZí?X²Rü QX½Ý5[l°ç¼€¹Ó¹É××a¬=‰Ò}œº½Ó2$£ÙŽªØ%M ¹a³î:Äm~w 6ô|ÜRÍF°GV3úØ®‘hk5•èÛ:iÓÖF9ýD­#fêŽ^²Ý€I»¦o¿¶£zìM“EÈ…Zûm}Ç5¨Üº!¿]ó ]ò£Éx,Öâ²²÷ˆØpÖ¹×ñSqà#/>€³°‹F¾YPƒ²£8vRi¼ÃÁûŸ­K€#ÁËUrø„´‘ˆÒé¤#)«$¹afˆŸIGÓ1z„ìx^ˆö‹Pî‘ý`éu¸k™ˆáºÍ:qd×O;éRÏA$c] t•ïaå‚\ÑÙòbÃÊ'¥˜²¤ãÞtÄä:ñ…ά¹ÇÍe#*äÏF ËÀå[Ç¡b ÜŠ}Ñ¥âÂF…@Ï!ÔšÞQ'ܵó¶u;Ɉ}`™˜¬%#*wÛü^ƒ¶–PS+žPƸOo±XëP'¢ÌAþ±³Pöx6R÷Ī¯…Ó]¤Êlä™ô7ª5ñÚNÿËi~ÑЭ!²ªóÏÖê «Ôr?€Órê; §äÕ^×Òõ޳Ш_èbÛ:0æÇ›!&œ¨Fÿ^mí¦?Œ™‚$ñáªÇ\TZ}c“d£dmqßøÚÕö+uqè^"–îiì~Äƺå>S¡ÿÌËjËÙ1|›šÂËdˆÃÚ“™±l‡Ç›+—MÇΪ‡ã·a<TúZ†¬z>ífýOO*W—”"›?ThH‡f]YžT<§@â­M=]K‘òÕ˜€/IëÛ?q5l²“aåeÐÅê“Ä:#)ÁþB´‘ëØÿãˆ~#)h#*ñw£!•ï‡fƒ¦4úÛ¾ø ÚÔÙ‚¤G C½–#4_Óx{M§N”ÿ©m¯aßhÝÚ¾©WÝÒU÷îŠz%Ž ¨©¥®wê(ÌI’CWRd•-ŽÃqâ5=ÿðÙ{7þçAš¢ð(Mƒþ®èÔ« Ì8˜þ¹y^7Èš:×vyî©gÓd‚«ùÅp)E¾$ËeL±8$ÆÑZq‹¥/ë>°ïÑXoØ¡ùï”ØùáÜ[º¤‘›ÚÓò¶7CEÈÿœq¼cª#4'ô#)ßž¬*#*Ln¼{rPU‡Ÿ1áÕ]»$Œqî_¨îѧɾT]ˆó£ë¾ZìXË|–OvÐl¹=\¹1]A¸«QF­>à YL®§#Ÿõ¸Ç¶»ºÕÙN1ü ÒÖA%ßwOýÒíô½OÉæÒÓæÝydô´)¶_Ò¶[;·càtÓcœ›ÊÎÇÆ5Ÿ¬> ßÑ”™8qr±3L„–¼ÞºBì?×ÇHìT̹6xjR—ñøÂ#4„°âÜVσK›ÑNë-Ò2a´$ŽN£ÏJë|—k2Ïå "ú‘'U+s‹è$/&ÃëiFÎÆÔXø#4ïÝ'óËÞ+H #«Lõ(Ô8$où߯ÿ-ÑH0$éÏãÿýã'OÖèï>yú´îÿýéÓG¿èÿ›è“¿w5¢Š/€q~ú8FìÁ´Ã[侦%Üi:­²yx•£Ö¬æö@#)ï+SÉâÒyßÕÉÆàÞr`×ãÕbRd£Ä~ïù_:ëvoÞjüÌ¡ÑúŒ¨†@$ß6«Š\|¢#)qN:C¨Þ‚.‰c­¥!d$Ù#*äÍV“Š"º¡ó—øú-ªâ!þí'ÒC¢ˆÄß»xúH¤·#)#4EçÆÌ ýíæ-¸OtP]'Ίˆ'¾$4¡sìkøŠävÔëxòƒÂ&¶ô²gŽ#)GóÎ!jLÏPG#*-<j^õ0ãu¢Ñÿ&"¸"ó­yv“–E/ãËpœcêÉtº¸T£O8™8!¤ú“‘LÈÞÙË/¾zùêUí®˜ra >×"¯‡eRxÊHC£áƒ©‘ç&Æp?å(qV@4J1E'VMHïÃØaÏ?Vî[«ZH©…uìš(®.ž=C8oǹª|¤¤ò•´™<2Ì°,NTªC?»Á»y°«~” d®&ÉìUªãt#4ï£o}âM“_|—Ø ,Ùt~³.ÆëC{>^@#)CÂ.¾ëÉŒoýŽ˜úéãé²D‰ ÕëuŠªëVê"£—è, X.hMrhžÿëÎÿñdµ¸=ü™,À6ÛíÂÉ_?ÿ÷Ÿürþÿï>ÿÉÎ+MÇK ¥—¦jëÅ.*QÕ¹K%tÐ(þɘƒ°0b… …˜Ñ›k›Q}h¼÷“ϯù¢‰ÞZ¬ yI†éb'}œ?Ò%zª»cdÓÑÊýÈ•!jç ×}Kei/e ×ýɹÕækàrYÝj×*ŠüA #åÈ oõ*vµ)}Øf¬ÄÛžÑö3>¡(ˆüëíÒ‰m<È£%{ADÒDÔ˜#&TЕ!RíEolQU̥̬•‰˜˜Ô£\‚$J¿Û†]ûwêίúÚ'ÒÐvůDryY'¼ÛÅ¡óF%x a‹#4èŠxµÄí¥õ3ÒwnæØÖ£Ç9^tå¡óAµ7ˆÙX< ¤`m³C,ÕŸñª5!IÙk–âüf9Ÿgû#ÜÜ[ÁÌUFÖ»ÀË#„fßzô5rÀ«c ÿÉFøÛapLÎxÔ¤66^C*!‹b¤ ÷ËÇ$§O´œö·£_âÈÝãügÈÏd#)¾ùüôä|«Ùüøà—óÿ—ó_Ïx>6aì…sŠ2¹È†š£¿Šgb°xR„˜üïâILìÕO!T`k9þÉói FWbqE[Ðù~ÿ“G–?¸[±ÕŠF‹BxϹ|‚†q˜O§y8.uGÙ_õƒS`°œVd„êõzÊNú°õüÔÞÿ~¿IÎ5}Ä_Ùâ¨Å‰€¸`ˆôÝM;f£'‘ 2ÉͿ꯽FÔ¼fž± ›ÿ:ýì,`’P<Ú‰1ú‡äý$8tˆ dÇþW´9ɶo¤ï3üërâPP½B¹°Éeó£/.Oìë[zJ0µsöò‹ôäå«$‡T-QÒÁx¯ÉãÃýÎéÇOž$÷¨Säè4¦HÎÙ7Àä#* ö‚>}šŒVɾHçób”Á\$uŠcâ¥k ]E&R¾f¦¨ß#*«^{ ¹*„Žp.‡(¿“Ö#4Õ˜£ë9{ÝÆÖT¥SÛ ’ZŸíl©öUðÙAv-`ãé€J2B£lZ+g›ÔúµnÔÄHfò±úº¯ŒŽQÓdX”ĺͪ#4ø±>3O„i±”ømfn{fî@ŠRäõì=ü#)hø‹¶ÚìØ£îlUéå¤c|ï%#)$/ò$jÉһŊî°Ö 5¬¦dkÏ.(ãà#4–N»q=gMö÷-~’Æ?Æ(‚r‚f"ÈÄtOä&ÛÒ«÷É4U>Ëó¶‰c/è©v#*?¢—ó“²k Õm„X˜U NƉ^ç|½mž'“Óý”ømr¶·/YÕÖßiÁsÓz®­fÛ5Å ¯‹¶¶*D‹íˆíh]_Ž¢.ê#)XPÑ'Îd8²š±Þ˜¯ë}¸~Xl§ÕTL+©“[ ZÃc˜ÉB°µWî°¤Ò¼ ü·¶m?3¢²$}ÍJÇMFcÉ¡K<=ëZs9OH`,!1L ÿܱѹÎ$°;Ü,Ú+ª¢9©6ÞõÛl‰b>prÕu1'#*KA­º£ê`‰qþ‡-Åt‚B"å :êª`ŽId3Ûàqoø=wŸwª¦\ a3£ » ¼ÅfC\…‘ ÕäI¤~£üˆ~†ÿTxâxXpâøy/q÷®W:;ÆÆ^ûƒLÓgÜC|X§ 8ò¢d’Û&í±õˆ«\”t=•±ú¶™%@°†Q…YQ8|¥16f"cö5Ì=rHÈsx"uØ9ù :mì&—è¤1²ˆg]8Þ8…ØÙÌÌÓôäôåÉ—Ço^¾ý^ß¼8=yõgìO§»(ûœÿ³—'ÏÞp†ÝÖ o^|ûÆ’ñ#LäökÔÓc¾M{yªöÄìXÛ£±Ž‚qôNý²71&£òä¿WÍ­Óߌæ¿b8³äù›ãg2CÞ¾ùæä9?~û'Ëþ<ú×ÌI0s‡º]ÛèÔÙ4ëÖ³ö¾®êÄhQ;sWQ­c>#)ûÚÌ×@þ¦â¶åçÚVxKYÎ'«„;2-)…Ÿ;ÒW”ÄÏ(°q¯ûN`]€w9Å]U“8[4—êIÜÑÙâšw D°JÃþÁ¿z_úýUž_/5qzŒ/‡“ “âB¼4nVõ3â;ŒoÃÒQinqxm´#)ѹ™lÖ뉫"'{D[­DÎÔÚÀy}̇ÀÜloowÞÈ–q•uáÓ#)j›ÌÓ.úŽÊÊl^±ÿÖ|Ü Ï”‡tŽˆ€é–G’‚KDÜítŽP•À~ê`Žg Y#*¥õÜ-=ÚJD|¥ìl­‘Ö¨c¢Õnp‘Þ.Ï>{þâøó/¾|ù__½úúäôõÿysöö›?~û§?ÿwà~!Gö˜¦ï`5B'Ãerø”|L/Ç W®Þ¶¹)|sˆÎÿ#)a°“ Å £éßbžMö¾ÈªWùåd8˜¾À|g®|VƒKé‹Ûè¨,rŒ~ÉO>¤õŠÁÍùã“#øo÷°ofÍ­€=M­)P_:œÌ«P{HØFýŽáLŒIú¯K’í£m"ŸwÍn{uš\Yböšo`u@*m=û&ô·w|rz|òÖìVYDZh6¾Q¢Ž<&6µCÊêÆLW3xŠ¦˜†AÂ#)H#*×Õh–F†ª–‹)¥ª#JvÓ,DÍJÞ—ËL§›–“O°k¥z½ÝäðÉÓÂG{“è|=Ÿôk«ØXØfEG–2iÐ#4ÃÚð©UwÂ#*IzSíE2Q«]ñÿUæS °Ë‡t5¤µºê6ˆH#*t£#*3p1¸Ì6Lÿç\óó×at{r—‰Vè®y0\쌂ýd:¯ý>6„ì‡Og‘#TKøð¶1p C(ÔØäj|ŒkÀº,­Þ^ÞHü 0.àxtyøкݮAC˜ümx e×Īi™$uT#4Ø£</¥ÁùCtÓßmâÉ»ï&4ÙñŒ"J°¥2*…þaT)·Å–‡³¿Püô{/T~2Åë­jÔÔ™Á€âËêj#*Á›Ú’4›bœè´dá<” E{Z8ú´b{Dk#4ëd(^Î#*‡a…¿ð<€é þ8÷nH0Þî©5y5èƒU¥XFåcü?)ÿkFÕ&‘h±º2Z'@G¨}GÀÓÍIÓ¼#^þÌ–ÌWk^ˆ®¯Ïþ|ööøk {Ô#4 qvüÀ·æáÍ]ò´gÁÕÚ±ïms†É%Mçâ¶ûý¤¼{÷ŸÝ_ˆ¢“z½§˜‰ùI¤1ýùŸÿÑ®¦þç:BàDCäAÄiTŽÆ#ƒ£.þÃMI©mij@gF7_ýh5nï\Øç¬/âÍ×{åb^ÂqÉå„£‘pAI9ÍÀ8O¢lþÞ˜g©õžp\™½†0õp¨'´ëf³Eu+=õQ`þØ ÞðÙÇ"ú.æx#4ˆÀiÈeý)=ý#4CvÐûØS¡âíG`»”‡¨$©Ø¸®Õ«F8RT'µºÂIgHÇЄÁ©8¢]¿ÎNÎE˜ñ²{á6l‘–"þ¥Ãɘ NLŸinßqf½&—щýŽSäÆJ <cnéH‰/&}=¼Éñ)­,–¹Öë²Ê&©ÂÞ_—9Ûð4™sø)¦5ÇKEœÿe°÷ý³½ÿÞßû„$D*ÓÉîJ¤Â%§—¨Ð©]Òqyå—ïÞ•?¼ ~ØÖãò*Ãh6åp°0ñXׇpu‚ ÖÍë‘…#4WŠP§XµB#4ùawL,)œ*K Lx+Kz ¿N 0Ù\ÉF¾Øî#4診#*k"Jq=O¼IzùÍC‘ºÑ¿@au5‘‹V‡ãØ“#)Uµú)YÝ¡g”Œ”øPø“£R§Ed3Ë}§A»GA°9βà›Ho %u³=f#¼JDµ±[-ÂMvnWI0ÏTàÀ²Õ߇Xœ®d`$íj‰œî”A|;#*o¹˜‰Üï"ƒá'û\òƒç\ÛÊqÚ0/û>ýO¹'h}ƒ„ÏÒ|•‘eÆ`5›¯p§FŸÑs³^d—¬oé.­b;Dò*ú!|÷›w¿‰~€¿ Ïÿòc7z÷㶣;š¾oQ8—9,Ž^Lñc8ÓMeÖ»,òå"<ð\Z#)#*ç>ô>ÿ&hz»âŠÈÄ]d„ZòÑþz¼âç¶Tßéé ¢*Mˆ±y‘l¥e•—Ãòb2ϪPîhùb±Ñ BL[0 ÷ò@æ ß^†rñ+ÝKþAÒÊu¬,pŠËs6ó]Ñr.s ¥P UBöï2qiCž8£ðÝàý€ë #¾ö¦À«²ÍÙm «)»„±§_9lÈÕmˆ.–(¡Ñ_†@·tÿä2#*ÚêCÌÇá[`6ó›²ë»7‘ë0-OÏzPóÒÏðåë½oüz¯{Ë•ÍCÝ}¶œŸžA÷žåÓA1)ýZËå</'6è¾Þ4¿áÃG*Yàûb莪idaÔñ†^IW–gr#*§“@ˆÑg›W.Tí#)3•]|7Úý#*›È­‘Äd0¸ÑëiS³zdo^íu+Ûj¡žžàç7á:õ£lZ#*œl{5­bQ*dT{ø‡’¸ÿdó+T#4äý¨L8/]XÜÊ[!å#4Î#4 g3KF“÷è½™¿JÉøÑS–rÏ&sØ`WˆœÊÅO÷Y[ƒ>ì#4ôÙdXä’öà Û{JcS.§Ιc Ü–2}0}7 vF#øñ’ H8ŠõœWÁ¥·dÅÁ·^jìÈ;WvÊÞ£1ÆRçŒÚF@¤ú¹éj󰬆2èŽÐžÔ;aç)Æé0_Î)f¬j³y`Í­‚ró;W’étÀ·£Jùû""ø œ+ œ+É» ì=ˆÞÁ–M’’#*<Â’„vtCN`xY[è1Vi<ÍÆU\ ¯º8MŒ`³*/N$ÉhxŽ9û e½CÃJ»ohB£æBn‘-¹@lùæn°ƒŠú¹Åöö×ëÜàNª5Gsk4AWô‚• Ýy!HÙߤ²#*‚r ú¤4f騇„fPgÔµq£ÃËŠ¶a¡=†Z¥õ!¡ ÿÏ2+n© ÚöY>®nEöîÝ×´¶àõÝ;Ùþß½{¾,ÐñÃù8{÷îÙbÑ},Ô»w;h]mï8áË7pubq×XJF/òåY˜$·O‡‘‘…°²ÆÃ@`é1JA €¢u± ìéã‹ oß-×Rõ&ðÖôº<°é{Ü€¶Ç>Ÿùå#)Ø+¤…ÃbÔ¹À–8Áh‰)Ò®tŒÚMé ô°É{¸%z‹|áØZ¾DsÓýØÇžhk4)ˆ ¬£–ò]]'–ë wW ‹“s6+ÑÀÑq°7 bQŽ‘ª"×IR›‘3‹é<è—¯c²ån¤^,Çåäû,ÙÌê^#)±œצ{êæÜm‘01C9²51GÄ$¥Y+ApBßmDÛ´"Ì „ooâó×'t=uNh#4,É%Ð<ë›Òacqo6tl‰|ø÷ÃycöÛ–ŒÖ¾–-ö2¨Ù/õ“¦£èÕZâ[YÛÅw-wé¯y ³N‘=ÁÃ0ÐÍŽÚšKµfª {‹iǺ¾ÃrÛ9aÂh0M+IžÐmØO'€\©¯#¢s íÀ†5-¡b&–嶇”[À‘ʵ”ñÍ ‚£5Öñ8œ?]¼õkÌJc¶®ÈÙM{‰wäáU~#Ò0ÜÀ’½ƒ˜85xh²ç˜ÃðçjBr3",µž‘}YÜÀžD™û{ÊÑÒãÁ7ók sæÛ›å¥Zð¡bç‡ý:*„d—ËbapgÄå÷GÎý!ÈPÂÆån±ø8÷²µNŒ¥Œîpw­b gˆ­¸‰†\¨7»– #øbð_Oü -·–e‹ï ÁX ]!ÖÐÀ)}3#)ù®>÷n$þ•oQŽœ.±wfÔ0oKá3}ãL_3‰ÉwîšYìŠw Ëýû¥d?4æÃÔ=¤Ây µÁYbÜ^Ëý§ÓÎØ9Ðã&sx 22 x<sò€çæŒ(LºÌ2»÷H#Ãd•Š9Òf-zn±¤¥å¸•Y IÝå¶ÖömGøJºÌ¹ß<ßn™ÚÝ͵kš˜¿Û€ÇLÒk‘“qØÐo;ÜÿxlÜ(ê#*l$áŽP7A©îSÌ#*`÷óièQض%ê´ÜÝ~ûìóôä4}ýæøóÓ7_QSáPè@µ·<:YŠ»é>cô‹•÷öߧDýLà›í¿>~úh¿îÿåðãÃ_ì¿ÿMü¿UÙliq¾¨ƒ¢äpàE«ï«"Ž.î&4.xÎ38Q =b=qD:h€‚Öó~šˆ—CøˆŽ õ»¾c½:}þyÆ<{ˆóN™^,'S`ÒÜÍKM¡Î”*ÊB«çõšRÛ†ÕŠNÁ›tÉä´2¢LÍVÕM¦Ûá#4Z7& @7ËSt“?Ò«lºH¹W$X…ìç z¸ÁйáN;¡úí€vÿñøÍÙËÓ“ØIzsüÇ—˜;Böù….@n&£ê*Á1¡‹/Hš¥Ã|ZZ›Chcÿé«ß\ïMzHwo¤5ÄË0ý%SWVe•òBEN”¹ö®»`ë(ÆägƒCbцI6»˜\.óeé|l´nõzê5R]öñ¦‘¸{8}E«ÇXä@‡Äq±§£/ŠÉ¼J—åàRIÓ46΋=¶”§B(Š*f³ÅÙ)ïlT"lFŠÉpJQ•u*ÐL—[#)#*A6-{P®Ë™ñï™x6Ñ»dK•àv#h• f]+T`£#)6ŠÒ¹Àé'rC¡(]¢ïž¥X[Ê!ê8(ëw„Œë$u5J˜e ›8E9py¡—›«%ÐÚ7sãcÉ ùåPk+„ºJ~2}ÄJÞC~l¬‘÷¦qJn]·÷ŠÓêë~bŠÁ·ïà 2#4Ã×¢èA9©$}Fjb$˜¯#ÿ*èÂrg—9@BN1 å‹ ¿œ~S€ÚMý–p’ ÈLÀ({õЮr®›m¿{.ÝÚït¾ tùÒ#*³Õ`¶€aëöðÔèÒÆÚÝûîqÔÙ);#)hïxgºD:ØtôsÛÃ8ëÌ¢¦ÎÜ}mñ `,Q›Ç¯€"FvŸ_#)ÆòE-ÎfïyàJSj”¼Œ¾Ë/J¾žÄ'Ö¸?Ë°As\{ù4/ÇÐÉéóÓW§oÈ…ô[0ÏaMƒe•æNÁ+ðüÕK[Vâ~ Z6‹«ìm]Á(ôçÇZüÀ+~›Ñuô"$Ùw°·GéAŒÊ@ÂãK¨¿„Þã)@&À æJ¸ ÁÙs•!P N#êJrÉnðÎó‡Ø¼¨{.pŽºøÞâáU>Ý; sWÐ$G¬¾#¬°Ÿ)}f”ð-¦0Ö°Ê+Åf0ÃËAÔ¢D#*Œé4›v1#ø¨ð¯ þu–-¾>3ü}Ó\ºoÔ#4tç@-€±#¯n¸w}}#)ÇV÷j€>-¢@«zOUÁi}‘c¬®ÍyÝX!ç›T·Ýiöš³÷þOJƒðóÞéÚý¾©pï{8;L¿™®'Úr”],//Qã˜#4tÃjP^£u m]”qßá'«†¶i(ôƃHër^ë­¢ÊÒªXjæä=ûæ5°“ggé—ǯ^[È£ •ÿAˆ¤q½‡î¾Ü y»¼ÊoXß»3 =༥íùåm•Ö7Þ=È•Úˆ‹BÌ¥d;kßjÎqŽQîÌäì'—UàÀ†åÔ""Õ‡Ôl]Þ”G“‚ QU†#4Õ7´/HÕRGEuTùâî:Êb¸©„ÑVÃÞ<ß#Â|2ß+–ó uꕵµÔ4ÏÉ-<ìú)¼«Òfþƒ•®ëK·Òfþƒ•j÷Jy’NVxéF"Ò:~Æ ®#(âyù§ r.ü"J;²³¹õ#4cFu‰i¢Q¢"ÖƒÏ6²[#*ùƳ5Ýݑ؇8$u-»ÜuçÃÁôaÐÖÿÚTݬô{܇&“š®^¦S^¹üÅÙtwŠ~°ã—kx`Ç1¨šT¬o²4ù­µ°ÊN9}ãrò¶yçùŒÖ=)©»#*¹k º¨»k+ZÐ6+þ˜ÖÒ9è=½wžt{‹£®èBÿìî- i2‚}î,Ú»ÈnÔë5»Œ}Ý|ÞáqÖ5nDð`ë]öºÛ\þ æßÃí;ú÷¬ÊwöféfZÓ{¸ L+ÌËæ6P6$;T#4f,Ev™­Úžg@­÷†ñƒ‡€æ·|ÛÛ*°N1«ôv€Çgo_¼dtc/¼tçΚåüƒ¦›d~hŠÝÙ[‚rжJQ´·nJ¹Æš·éØý#4½mÂi¦Ó†-}a˜,YKKpö.Ž·(Û§÷hRVd;³‡B† žÁ~þ~#)ü³7_œ²·¸\¢ö:Ïr#—wMI‹ÝÒù3IDÄÐXé®Ë-RëS‚ÖÅûz(PÆOä$N¾ùú³ã7ééçéë7§Ïá¬:}Óâ#)oüVñAT»®«™ÿÃyƒDi¢•eÔƒ³ç鉔žž¼:|¼"†Ywñ’a+(²‘D랟ž|þ×B@"ï”íÑ·qt{ù¢¦ n¢ŽÎµç¤‰üì³ðn6J¡4P —á9õY…:÷P)üê¦7.–A_¢‹îkûÄBÂ7ýRÐêÍÉs±¡gBR†Á_ÎÑ$5‹Ña¿ Wjû#)“›“‰¿(‹K¯Ÿì>v¿Â«cdƒiþÔ® †ßÀZD(”%:Ù}®M»Y·F_Ȩë41µD©Êb²µ2oÒ ËÂÊ›8«Hr]\oºä^‡:Ò÷¬)2ñ;Òƒb*½öªI5Í’D@û±ã)G#Ô›h$NªÉ÷¢•HM!}“áÍÈ#4HuyÜ°Î~Sjw:X·Wh=I²š6ÕE1\ø†r#)$^øéÆž¶–®Ê‡ Çn!’]ì—”ÖSÓ#ïÄÚŠµ×Þ Ù$kß#4åÀ$Ýä(qª&òæcC˜©ÑÅ°·(¸¶ìõ#45d£‹p²îøxôbP¤¢pHLèrxùÈŠòôàºjœøÓÈ5"ùו#YIp&š»B{žø'´ølN!“S3_Äh’ ¼ ÖV.ÂaâÝ°l«H£ä›6-–>U”C2ÆVMŸ¼¸Lµ>›²ø"åõ‰®u#)œ½—2-75"Ùsâ“0E#4sB£´8çqª7ß"g&¨ñž‹š3mÜÏŠ¬FjbÅŠ©Ô÷lþË>NHUë“OyÑP÷¸Q4êû •qºŽ±Òìn­}N}F×Y"mK´™ò.‚W?ñÓäÀq“šFaSR‘ŠwËäo$»<:Áåщ1öTAy3ö‡lŽJ)§†üùä*§ôšxµ»bœ·>·<ýV›cÔMýt¿^ÑyPPD@¼5x¹›¹`F»Íµmqî¬m ³9Ù=ÒxvŒ×¯—Õ]UJ ¾bHîX*­¿;мþµÅ•…-#4T:l,tþ'ë°Àñ,«~®øâÿ|üø铺þÇ“Ã'¿èü;è óÅ-ºðÏËÍêhi‰ž©ý_Â_G~žÿå×IÿÁï£wÝä]7ìÁÓoÐ:£÷µªg˜É½Æ'³ºb怯íΘM€³KÕ]/£‡ÉT;Œõ’ÆK!蔲îTy­+a?$|A.Áj=ؾŸîõÆÇN$yß7¾Á¦Ë—¿NØ^¡—Õ !—’x—Ðf¯æ‘‰È«”<›Ž6ú¿T™ç㓦x÷Έ'&Þáq“CõÓ]šØ»#*ËQξýn¾ÍäûùöjÕoï„«¸áyY•Rv?ºÃG¶Ž“·eBs'¡CFÉœÍ+/Ä´iÙª£*!‰3à÷Þóþ½œÒ×(;ÔÓZïñø¹m%2КÕø8‘hY¦Ítg"¯ÏžB#*ò@yFvþs´k§¡u|÷û01(¬ââ`+oôØßÑ#*¦ò¶âžÏAñ¤í¶{”¡w>;ÇçÙ#*ºŒ±»_deöèz6Ž£ñ›«C'hwu1µAägYq™8ú‚«¿/X3ÎÎvúnÚh+€Êdy‘Ò0‰dÀ€]xxôFY¶À‡#ß8ÂjsÈm5ø:1SºáȤôœiŠ#*}ÝK‹RŒ8ÉáÇÀL¡#*h Í1Œœ©¾QPÞ—ñmB#°s#4qGóë{]#4÷RRß5à2c"²q)úË¢'ǘôÓoóÉ. ÄóÉW3ÎoÔÙ#4éÄú%ԵǢîwîft—áxë_ãýñ'À}>ì°+S§sïR¨&ªU^«Wå½ì'ÀÏé(Mݲû!X:µœOþú¯é)³°!›Î‡•È¨»\‘þx=kM*Ì‚v÷%»sèð|Ç=Ñ£cø`¶Ù€=D»Ép¹@ ¸à­8qÄeàM+¾nm nÁHjøŠÍµÕ³[@'·ÒVuåääé'ÞÐøôêZo¾—2“-Ú7X— O[êG¯AkKÚyM²Ô¡Oé9~“ñ¬¸œ#)zŽL2 +W!ÒœHG”Ë9†m„sìZćèõV¦#*úšMº;å»9êD¢‡*Áóë>;˜bv]=ÿ›ø•²Ý‹k]2EJ¿¥ëõÜ”ab§W ÕZ› ߺ0fì^™žÞ…—HÙj8Å­­ËD|uä8¼ £~’ÁÚ/Åë _HM+DÓoR#)("Œ¸Ì.B}T#uê"`ƒÒ!#4òbré·Îo®KêÒí­z{Êuî>Ó ”Ѥö¾{ŽÈ%„bœIUs,có’ƒHB¡«éZfý–rÿûìÞÊëŸ+üãòŸ'ûO÷ëñŸ=yôôùÏ¿‰ýOÁ?Æ ÈD—o“±íÉ…Äðçäômú曓d¿óõ˳3@09è<óììËãÉaçøOÏ_¿}yz’<ê<vòüø$?îœ}õòõkxúmçì›çx…žü®óìì«ôÕ³·Ço’½Ê~}œìv#)8=)#)zyÜy~úõë—¯ŽÓ·Ç_¿Æb)ÔøêUˆo”qX•äq{5éÂK˜«Ël.¯F—¨³u1A"$ô੃7’+“©JáwÎ$!Ù¡¬Kg 3L@g¡FÒå¿ïüÚ÷èS׺ "4VÙPïeȾoB¬3î*i#~FY@ƒMj´öäôçn¯ë»|µj¡IW€0Ѥ]iÝùjåð«às­b4Î=TH˜BÚ˜èòuøáühï ßÝížÓ ?c>¼G×GÏý4Aãä£ÚƒdÒ;Z Ç4X¾:>;1‰ß~cLÉ5ǺÁƒßàaPÆ?>{sÖ=¾ÙÀšÒ”¤§icÅQ¯œ\òeIô³Îi ©œ®Ãì&(ù-E’ËqЂ#*Ó$¤ªYà+*T¨Nö9ø§aƒ‡c‰îB÷)e¬Q$¥j bÈíØ…ÔË¡`…ÃlƤþ­Tؤhö~2%/{òŽçmP¿}FŒðJ#*…•{ýŒÑvè:*Ù79áÄÊ$7¢×#W³,JÄ×+‡ÒdïžN›#*ɦTR'‡É ß$è¡ILÆæ.çh¢°XSvçÈËfI}Vá‘d! U¯M4óMóDÆœ#4²Ý(l¸ä”0m|uYïTéP#*<D½ƒºbyF—ØGww!áÃKø –y‰<¾vpÜ“útäÙËmDÅûQ¯*p^„øGÞèX ¦7ƒÛG)Y=µ¾ˆ‰ÎoŽOЩ窂yJñzàóºƒ`™Ï` øÒ“ÛN‰ÔÚÙBÖT÷ ­ä&C§thVäæuQLò”¢²â›{¯r5(©ã³+À3ú BC»Å•nÖÔŧTŠQûðç!Ù~ÓˆëÊ5%B#4ÔC—šê“ë›s™u¢µZ!7ú'n±„<iÙëdlsŬÅrRLãœ4ÓH½bá†NM3s4”j3é„5[3õ)ep ˆìÞ ’u0.ïÆ'kAÜOÖ ¡'…aÎà(IüááÓ…LuY²øÊÉšGõ3ù™å <aѹøƒö) /t’ç¾opQâWë/A@VE+~3ø’UrŸìãM#)e\ŠÖ“9Æãf1”C7¬kôU »ÛV¬’UO*‡I™ãQpÎí5·)߶:ÏØ%+´ÂíR|zWéãv°í@ ¶wÊí`gÕq¯©ÄD™²vãÆws¼yìšIÀÛG¼ç í©8¨.1t*Úÿû*rá8#*ƒâ’|*²M<{X×ÚÐ]Rlñ9t:Óñty€”ë;ʆÂR v¿{8‡ÈÇßZÀ–€)}+ÇÕ<æy©ž•"SÒøZy ¿v¬#*9RHèÔŸ¤¹[;ó»¾aehL"+Z¨. $ ñàwk7î7ZäkÞF;7[k“Õs‘i±$Hõü¶¦ qm¤1ÁdTÍ‹õªOdr&îóqvÀ–÷Ûƒßv’LJœåa¶O%*Ý‘X¢Ç¤¢ÄµzÓŽÜí»Òa ~‡:ÊÖjiv«Bõä"N¤ yï#4cNMÊ•®ëAÎ;œæ%æ5$SSwËô ^GÝ?ìݽOÑ9¢÷úÞìm£#*Îp÷<øC° ¥ûF·xk<™¦Si«ÕÏK.úÙ­2äæ}ßý‘q­ÕÕS#š®‰0ìÃ"Ú ÈÄ’÷ådÄÖím§¿`è(Y$z\»!§Œï@K2À\Lgåebâ*#…"¡½—bÅH&j7bP¡sõ…0‰F»søGÞ_s ã÷;ôóz~kïÝÊõílº·L"…qö<þð‘~áèr´ü†ƒ¹ºfÐ'³EÛ˜·š¶aë§ù%°°È|z!¥ ;K-®ÉZ’<r&µ¹Oî)8uO¯C塺ËLàçÄ&û#+Ÿqµw¶î‡( ØK +‘ö†ËØ°4 wØúuîT#44î8ËŠbü#*öá"Ì‚# @…ÞDtÿ›RÖGÆ8Ž†ð{¿‡?Fm©ÃmƒA¿‡øû£,wxÄþhêµÏ$z#*\¿‰'§o¾~ö#4/±%àmý8ZièJaY„Þå?—ìÉN”ö$/un{E÷½f¼ï7Jë·B“›¼Ì*±TWåÕ`cûñÏá}kdyW6PP¶=öûœ­ :Eb…©9[‘ê½ÑfaN¨Ýq'JßkòKw@¶êNð +pÂ)ü𻩻Sþ νññ%!‹O§ Ñ¿$þÒ½ ßÇÔí>áÇÐw¯ðÊ:qƒúÆ)[$q!’ƒC#4Ÿ‰þí1…Ný1à~¾³³3=¤¿ýîÎNiþOxÍc"ä®oUGÃÈ8:Ý Mº›#) ï„î)wdîpƒ®oxÞ”:s(êÌ ¼BBÀi0™Weƒ€çP—T/K¢ØI"~ÖKaiD# ݉ª¦ÈäŒÓ¯$T‰'å„a_HŠQ1„'S€6œïæè––wpŸ1TÉ™©zZUT¸¹ÃÛöÞ‹]$î6Ý4¶‹ûâ‡b¨ØoßB1IÄÖIÛrŽn;‚>wϪ‰OÓÊž‹n¬2L†5ôÞ̀çŠúˆP™Ã”†m©„sœ|õ²øRç,‡$qÎb%+üCV€¤t*€Öqo¡_ ñt#4ŸÈÙ©ÈÐ11´é®õ»©* V#)5Ñ—k ·‹ÔlR–è­„m  æ=€éQ 4DF[‘#*èË&›JF¤äÄü$ƒ:°Š&Ñ üãûÁt2Ò>c}mo}¨£Ho¸§ªDö~Pà¾×0Æ›Èä᧾ݖà[M/´¡äS:rʃtè=†˜Ö#)¬FMOîÒvœËŽIåAšþÿì½{CG²7üþk}#4…7œÑ˜Aì8YÎŽ³Æ OÛÇìîV¯PÐm5ˆÝÍwëÚ]=¹gO¼Y£™ž¾_ª«««~¥Š9¤pË1„GÈçª@åN&:·qxiS£ëKK´†Ô˜íRv§˜†¶DPŠº÷ÎPEwQ`|âXKý¶ÇuFaNj3dg¦^É–‘¯I¼ÝlÑko¾TËñ;ýñ µLM=ÚKÎe¢Q×@Úe|F±²¾²üAêúЪæ³]85Èã®I×­HDf‚UlÃübþ³²²<BÕÈ¢/#*ZÀQ¨Å;e†Áù±AeüO¶Ê]Š[#*«sšHµc§EOò¦à]ÓÍÒ׃ñ™¨vlùVSÃu¶„|f´G÷,>ŸªÙ\Õƒ.=‚ÝIòPÒ‰_ß/Æcù(!ï˜Sæ@^¨(”±+Õùmþp-QÕü¥ç—•œ&ñ{wÄ·ó¢~ë F¾l߻ܪè¶X±9ÐèÑÉødþO"øHí£õL˜Z¶h­¹FüçÎß5fC£#\.ýrWZê#):+›?’› tYS jøbšê¥l  mzh£<oÓÖÒ?Ç^‚Õ‚üœÊÊZ“¼7CV3äž+´ Ô(Û*¥ð[ÔÝ—oº¥`–¾0©¾Üa,æ¥!¤{¡4Iµ‘²P3,N>jyŒª¯å¹!.çå+Ž<ì6 Ÿ¼,ŒK·I#*@ß5c„±'A+'ûm‚È÷Qק¥Ù¢»8r\t²åt8è#*.ejL5­*£1e¹Ž‹;³)ȱ°'Þg.‡ a¾ý#4a¶—_ƒùW¼„A3WÒÏeNí×Q"ÜäAlùã–íqÑ.R%`·vÜ Zõø¹åù5§¬ä.¼5ÚE·)ˆî4—Ìè“wmØKåÞ}3™¿GɆm…­zšôr6SÊt–]S1¡v…eƒ•fc‚ݦÉæh‘Ïq0vCä³ênbH“Ï¢MA’£8›½KôÐÜqG+ÏZ]²õqO|”jeï]W˜ë¿{”HR#*¬\a—`*!]…¨«èjG¯)ÝF-u¼W%»cÄâR/éèkljZª*­N쯟\ Ž”ˆÓú8ÕO•`î(œ}³C`rOÿäZô'™Ž!§UåÚ«J¯zALÇAæß-aºP!ûÝ”aåà×7ØJå€Û(‰ä£Â1—Ï”›ÛwWøg·yQ¼`ãÓi¸ÈkïVªˆŠå1“i¾~¾CZà%÷åçîá#).F7#)ÇÐÔó3Nc—Ù >p4xÙ ya¸ƒö V 3’ öäÊŒºCªXj#<€…òw;ý´åñòÔ^Ý„·!€5!m`aý2øÓuz¶(€uªêÿàÚö:‰ÐäpØ1Ö˜©f„}ví9“jú[¦nõh‘¬ œtsôÔ¬±VýÆ4!amÀ.#*¹ðíP0Zª#)æ©›š;8VCÒ4£“85_ûØ(Na?€¤pEBFˆ¬Lj`JLÐÝ}UÚ‘qsKíŘš'Çz\Æ(áj”ÀT˜&83¢EnSZ+cšj6-`$˜ÙˆUžÕýêpƒeRõ} ±q,©ÝÈ*êú²@Uƒ©O”g©–ô½ËÁ°Orœ<•HÕËË_bÁå£c$×ó«-tÚ#)¿$#ní£¤¤§4ëÞøÁh¢ÄqÜn˜p·‰Ña~Щ˜¤³ÿl.Æâ0¢OE¢·wWÁðw¥ÆÞ9S«GÛ™sÝo°e¬¯Š#K]pÓ…}<z©ÂØ[’#cÌÐÈ^¶ÊÝ&aõx^®ŸÁ©wæÁ)ñœ’žÒGQre˜;žÁbvTÓf·Z«¶æ3ØÔ‹ÓyêÐM¢3™ºr»CHaîì!¤¸Wå]Ê‘ìá‡,Cë*s7ÕÑiÁˆi›ëÍ ™­<aV'I½Cc¯ëÑ›s0íjJFquG‹UI8s>ånBÒÜÍ ”Óƒ­óFû5ø€÷Êdîš9íÙ’02„Å#*ºguAÂ#>—ÇÛª+NB ½íUqÎtMh“=j–i–ïV„ñiNDäõ«à1 †ÑÿvCÑ”êNE:ÞÜŽ’h9Âq Fù\´!ó—`= ¸û‹¹à¯úüHÉ&Ï4iH#4ÿÈl÷7:ø¶˜n€ÄbFºKÞŒ‹9µ¨™ïèÕ¬"Ï_·Ý-­«m2fåÞ/äÍÁFãW’îÜ•t[¯•Ã´ò´ÕPY9n¶Õ´JÉmâ8—Ö Œ­Øƒ£¤D¶uýâÖïî–T|œwOi.ã0Vx@XÑN,¬”7Œ¯w2PSi¨#)ôhž/Ê#*soDí—RÇ*\òÄa6©ä«Sk}ð€z ¤²ö=òvÉX܈/°ˆÂóQ#)~NñS€^65@C¸1­ñ„!Üæ/êvø#41˜×øWÉš*’ÉYy:›L³Ùü¶å Ø!HPN/Cî f:õð:Q¼º”gÉ~«¦Îeºl—”)HÉçw|yja ¼­¼‰ãGyÔ]H_D@’°Ìws‰Ÿ™¾n§¶ Œ}<8=å»=LôƒO4ØØN\ÂGórÊ4% ¾Kô'V:`óúô'41w’ù¶‹ùƒÄ„·Fö|Ú-W¢K°¸¬ôåìTë†=Óÿ¸ƒ2@|>ƒçâñAöµey%t êiìÆØ/\]¼š™CÆñÝÙâZ6þÏ°Z=ZP=â4PE£ÕKú=ïuºß;ŽÎ£S„:ƒþèXg­/ÞýŒÏOn6âáËžÿÅÀ£>ÿô±2C[û6)gÑßZ‡ï÷þuôÕQ|òçöã/>¦˜.0CADÌ :s —ÏON8÷þd8Ä‚?>ù˜òÅY>Ç÷ÚJá3î‡Ï€íäÇX!Ø”1«µY.µP‘ŒE—ó™ÂM³E0Ð4].Rzv0¨AǪNd·¥µ×Tw"¸qØÂD£VH¬….Ä|»Æx #1‚вÖóµFA· “J¶!_T6&ÔDœ‹:Å;c.ŠÆ–3ku¸'}g׷иËØ÷Q¯5ÒdÑBÛ°½trq#*vñ&³B4¨ap¾L]\ê‘^iuMRÔ !¬üeŽ¿³›–M§)¾H½‰J¡^ âÐ_¢“1ìk©<ÎÔ4‚Éé,!1’PŠ)T#)RÞwñ"žrW)ÅZk®U¨#4 ½iÜtû ÏꔽQ·p#*`i¬ªlÕ¿HÜ}°¯ƒ+QžÇp»*EsC Ø9ÈclõqB©mob„èž=5šžòpýq¯<´I&¥C‚é>ŠMnvLaŸ8$©{¤tcQHê”Ê]?¼¹èèx÷É©BßÏñÎ#)á/œÅ¼”Š@iù¨bT±dÖ¸ZŸ%Íõ<F·™4©cW]»/4ïl9E’LDÝч^¢Ãû§èw MSÐ5'¤¬­IY˜KÑ­JZ¡Ú¬§âVY8a0Ž/Bß\¥‰…±Ö¦Åkë: ÌÞ& •¾¶¾ÎU\[oE *2œÌE_¿ÇÆ·8ÅGÝš^Z˜°N›ABé¡) ñº [ÓS\g6¿Á$ÌÉen°b(­Ì&6•µÝíbS8Ÿ=?É7²©QTû}Þ:þÛÇMhöødvr~r}ú/Ú7ⵚmOêá6>…QòûÁ(‹ŒdÔ£ý/Ý4 ÌQ0XïH{+¨5œT(è´€ [€c&Ih¡q#4Ÿ½IäÇuøXµƒƒÂ#*Û€»G¹Ýd­ã‚™ƒò^Øð؇Eß‘.ªX>ªJEHä(æ=i»§P…Ý®¶xKdzùn_ðð¥ÉKõ^W±ÙuÆøn·«Øî¼ßUnxßñVo\«÷¼{¦­Þõ*¥}ïþ_¸óy¾'ØñÂ#*ÏgõŽW·åéƶ(‘üew¿ãÓ¸´ýÙv—6@?_«v@.1I´Tjš‹P`ë#4Uƒ˜nB§è@pfø=š¦ÃάçÚ}@Î7wNúÝæ. Û"~o0>>¦^öD¢KÛEdô¡)O£T#*NÙûmRÏúîÓk¸®~³…lîµÝÂ_·á6<ÞÔ#*LIæÕ9Ž!ºâx€‡w"ý­èQü|«)‡' {^öÿ¬7CEqoé0RÕ:NÁªeßøÎ`ìŒ/-º×cÇ”ÜÎ#)€e™ÈWÖFÚgÿ|‰º!Ÿ €ˆŸgÅËX#*Π Ižõ©$§ èk­ =¾ÀRµþ#4v¤:[Ñ,É9Cò¥%®)4bÔÆÝ0jÅaÞ÷zE¼€û ¦Š»IWÿÊy™üd6Ïúî;ñ=H×êiš…y4ϼd˜›…`SUžÍµ(I뤪B>Ú^$ *TH8‡E4™Ý²ÑdÚco=4qØEjIPKâqZÓ’(J‹]E‰S À¦¢ÏâzÁ¢]ü R°Cæh—ý0³Ò.#WRfÑ.ýÀ^=ïâßäÇâúÄÐ@9c!˜¬¹báï¡Ç·èQxzÿ¯ßÝ·Þ0O ‡4X¹»è9‰Žc$BÓ1`:X?î3²ùærƒÞu´äZÃE‡Žµñ±ŸË Xgõ¿&ÑãËEw·h›G,ŒÌ!nÂ`;_Ûë½ ¶Ôî*LtùSóÝ~.iÔ4HR2-…•Äü¾ìæÉ@ÍýÀa6êN/Q°»êŽ`¼ùÛxIá_ÃùDè¡ù‚s,À ÝÁÜÊåFÍú%”gÚ YÅÏS-HŽJ½¿/#4…+ÈfNÑØç+‡ºå<@ÌBÖƒ‹öºcäš0[ý!{Xh ë\;•ëY6Ì ëÂâƒøŠ•€IþoÀÿ”;Þ_ôÿ/ÛŸ}¶Uôÿ²½½ýÿó÷€ÿéP$TÈŒSHuøÕD†T^qõNY\ŠvÕ«ÙA¶ª›Šl |K|©Î^‡Õ`2[ÚkIHaT40´Ê–q™£Ì–‰6ÍjõrîÐaô²‡&‚ÇÛ °„Þ¼3?k¡ÞE¶ìuF!>Þ9#*ë¼Q‘Š>@Ü]>t°*"뎱±0:%|øÓ¼ïð­ÒtÀ¤MÌ#KÞ¥ylmO”‡–,½Yñ&¥ÁeÆó>hN᳎e`8¯´&§ƒø¿f[ãH VuÆ+Í—sÔö)”!Ãw‹öªæ5¯"üƒz¥§¢ëž•û‰” ýV,„+b8}RœýOŽÜþGèÿÎö ùEúŸ?Ðÿßý¿ÌºÓ¿ÈgV#àç¿/²E¦¸Ïÿ…/É;•£·†h‹P U£¤ÿUJÚPµ³ò÷0ÓG•¹òi$ŒÚ¢¿±àNCê#;Sw‰#)0–ÊKP*¿þ5S,à)àÜžqž©,º©§ Aàç„É¥U}Â8Ð’1©'S“8®GئÓs…„¶ÝøêÅ»ôÓFØ#*)_u0Œ¯ˆ] r\±cx¶>ŸÇ÷vôå#³sÓúr… ‡¶•U=‹¸ÊÆ‚’Ó¡;Û‡§Õ·u¯ß‘ïQAÃ|œ\TÜcq£Í³"$‹(fenù¼ä]»ˆ„=Á<œßòÎTæG$þú}+_Œ`Däì{‰ª¡xÎ9¢§ê=>Ÿvo`ÓñÝY¸†“ÃT)þq g—ʯ Îæ/»pÚ·¶-o4sÇÌ@ÍY [%É°-Ø=ù|2µÌYøU]zbÍZ®¢¤üg€ó‚”y6jë‰1nÔä;YÌÛJ\–¦'9è#4#4ä:ä #*ýð¡P-þñã *¼>/KVžݟþ¬Á““ödZ×gáÞì#4µx`®þ¡› èì#)êëBÄ®™m•>XƒÍÒäÁŒÚkŽuzJï––'=J…»3˜PÙp¥ oHwa v1)â1ŠÓ°Ÿ²î¾j<#­ÀñIC:ï=ÚNòù¦V¿.Â`ŒâÝa6ÏB!uXn¢[±)9-†ä+âJ«ž© ­ù ìQw¬Œ“™ÁY>ýBˆàñÍæ·a¢YvMB±:Ýàpaéj’i¯#4­¨ðêW¾õ5_ìÚÝZI|1&9‰½™)v|…`ɉ;lip\CÆwg8JÉÛwôs;CÃŽoá°IFJcÉÉj›¥»ei(¥Í"€ R{Yɵ®hIz’bÖ×í£tM,ÕÜLiÜe¾èA/ýµ"]nŽÕ<Ò@UØRêFœL¤ãAߢàAÑi‡6k$kÖö°­ç'sÆo]gôZÑóŽõŠWg™xiXÉɸé,£-&šø4Q';ã§Á<o>.à<þ‚@I°\-±Úp8z)n#¡AYÁ¦ÊØOá]mdξ±Ÿ"nËcX3JËÅðO>®)Â/f½v‚›Ðfâ:™±£hê© `2RøìuÙ—Ec›:ö`ên÷‹dUåÇË8ˆ`ûÁ2ƒÅ¼mÖ5#úålr•á!‘E7®ÍÉØ Ã}}J÷ò,§AzØò48ÖëHØ/ðWp¨x‡½Ñ±î}ãѪ¦\lÓ;¢Ó-EØHŒÂ¨û¿ªi²tªZÔiC^ºFP ?J"ÏúìÀPÚüȃ‰‹Âî#H½C&º?òtÒ ÕMÎâ‚âzWºõvÁ*ZV«Ÿ›k#*s,öaR>_\Íœ#*O =ÓvÚñ±±¿R4ÓJ7M]™\¹Ùéì®Èðã?Fr gf·ÌÅãNƒ´´v©Ú6MâÊØàÜgú•‡ìîYx9ègàÙq”Ê!oEÝÙUÎ#4ƒü2ë‡3î™g·Åø|–eÿÈDÐY V’¢ÕƒZE†<¡(‚5× •äÅ¡ÖøGe·ly§ã±O«<Ò.kæÝ’æLp©Ú;[¢°C>¹Iföç2y#*ºÝÍZÎAYKþÂQ#4Ém#CÌ{"'¹ž‰"…”‘”Ù…K ;2js•™é]jS­Þ1¬xéI~È]Te2u$;H#)‰‘µîU' ëV5¿r0‡î ›õ¨Ã²‰¢Î#*rU8ãíÚˆ7ÓíoWïËÓlÇ{‡Ì1Ôðøì¹âNuüŸ4±ÊŸþt\Tžèî—}Tí}{€‡».Øð]àx"SþDOuñ7/ž-+–!ÐV ¹ÐÚhÿn¸}OÐÍ\Ÿú~. D\Wc¥Èß“ üNK]ÌùŒýɬsÙEyÜÌ“_#*¦åìųbX¬U³Ž„ˆ„êº:+…½+¯°²ÅyæV#4r"ˆcDCx¨•yî›]>Ú1 Š%ó5m¬åô€˜­öeP˜gÔw#ÿ׿GíÚ(Ä!›µ ¢Ã®/\<ßnZìÕÌÂpÔõÕ£ªŽ-žøÂBî‘¥t.M‰ÀËAq¾k§qm†ây·ì¤¶Ž™-ÐCJ\ÄReï»ÆË1ì¨B”ðPdÎI!ÀéWÇL«»LvÜD rrØ€NlæòËç©“~ê”Ö~Ädó”ûž»v«ö6G¡‡6CµÛ-k’تVUÌøûb!‡Þ·ÛX5WWLÕ•‚'QHˆrò+ØvIšSØdÙ¾º†0z>Ûªî ^õÑs¢Þß”áà¬4w†å¡u6°n×ÀXÎE’H> sè­Q}P«È«žÅ¾ß±éŽSSí¡©pfrœ¬´¦pP2‹R#Øsö"uIkW\«ë®BËŨʼn¯b×câŽqžn R¶ Ùv($l#*DµóuMµ¾*(¯aé¸mn°¯§ëx£²Jø¥Øõ™j¹ã%E¾-Û»•r1‡<Ô»í#*”x1îYjo˯ž_x¾Ó?ÒÞ³dÒ1rÜàeBjèéG„mg‹‹ÕKàéhÖRAY=mô¬ªÍßsþWœ0ÛŠ¨ŒÜ׃I#M±ñÄþ 8Ä«WÛO\£Ÿp~*šßÀg+\ I·×{À‚(Ì~i±LDÊ+dòi_„‚ǧn]Èëv˜Ÿ´‚Ñ@#*Ö™f#*I6\ö’…Ÿ±ZĶSJÒS«gCrÉÔˆèÙŸ©)zÞ¬Ô,ƒ#FÕ*¬(qÍÍ—µ¦ÁÉ +”’Œ¸bÈd¾€Ýÿóá?]ÿw¨ L×_Gìý¯OwÊú_;Ÿ>û ÿõ{Ðÿš }Nè5ä6¯WG²šHò£µßLúYãëý¿|¿ÿþNKéÖ=7žmm5þüâ•®í´·ÚÛÛkö~ÿûìþá³ógçg[xº½õ‡í³§xöììÙΧçÛŸf½';çÝÏ>Òýü,ë­5^|yîl5^~ùêàõ~µ¡ìé w5Ì6×óÍõ>üýDÜæíé°;ÇCq¢%AÜxñîÝ›ßBzyˆZ¿H¢ÆÑÛwi¼rÔxûÝQŠî‘£ÆŸ÷Þ¼;êpá7yo6˜B°¸Áèfh_”T!¹>Bz}Ä®—G¹ÞîèË­7RàÉ0sÁÀï^À᤿f|}~xôkµûïߧ›Û/ß}#*[¦º`‡M…„(肬?‘ª ÷F‚ú²Ž›½ûUNª¦]mô9j#4+ÄX¶4yãQo¾L…f…¡mr!.©½AË|¸†×ŠÝË1|…_xI¿Â+üNáÉ&ê%‘4$°±·PŠ84ƒ\]³ñ~+`ÐâF“] ]fM©?÷=Þ#*“SvTdNnŸósçCÝÕŠúÚÕNÎfxVkmQï4p¤ÂNçVWy?×…DÍI¹Uˆl7æĽUxW÷¼NðÕ''¹²*j]}C4‰âôc›‘ªÃ&j˜'P]CnèT¼”#4†š—L§kÕ'Š*¢Rßïâ¸Ç¤…H­HzÝI„³“€@§-ÖS— ÙÇb³Z³~hСˆ^;†Ü¬¢¢KúO˜]ñž=Ÿë3ZVÊã=þè-šÈ)¥Ç*&‘1z?,éeIT“ì>¾&Üi€dx§ÒáÄ-þÑÛëá>¨ïøᤫi0ƒHæxçyZí¹˜œŒ=~WËç—º’C;øÐ~îe„F Êcëûj ×ÆDm±Ê mÍL“„ùo,§‡•¨«•óH´pvBÇÖh¯­“ ù¹žÉÎUÎûÀ^̳‚¼q–¡kЬu¬îСå˜{Kw šz\©S'þÏ:šŽ-Ñ@·<%ÛF;×ÌñªiYÓ^U!˜«Åã¯/ÖdV¬†Þ„9!§‹j„ãn­ù¯AùAÑÐK¼¡°#*0b¼†á‹¬d‡I~r»±#²!˜®ƒ­\>u‰üù·s/œ×X×ØjÀêP³çû¾œ:û©†{à<ˆŠŽšð“°.aô~b9¯óê»7©<oDhƒöTç÷LÍç½Û2OëȘÉÆK®û#41[Ôè즂ËÄ:%V<%ÄfGî–@Ñ(Ý„rÎ8Œ"6ã#*#4;k¦ ‰2ŠV4û.r#ëÀôúOЈ‚„Iè«!‰0j$¡¥øA{5g}=ké”›Æ~å®”Ö-¦)e“TŽBmïBºªÎ•Þ#Ö²ëÜU½kÁÙ…ëíXÉÏ­BŸ¹eTèõG `K:ÚÝŽZ†'å ç ¦_AVEµ.·À½þJp;RÏ®½™45SV؃Éh•:O•¶j…ÙW6´åýœ¦Ìª9S5ij۶Π¬z¤*ȆôCG¡Søºþ;l\HĶžÃf›ÍHMó«ïIXr„BYh%V›:³{oßêdž¨5zšÆ #4Yÿ|4Gb–1r=ï°p¨ìì}û²ó#4½J9´'Œš¢§ltyÈC‹ó8#ððÙ#):há7¥Xq×F&{ŒÜ_ÿOì6¯nRÄu¡C’îïåf;Ž(_œÉ]‘VÆÛácA‘8M+ZbCW„tª5eñnÏÍ;»—Ö Î¡óúxbâë‡ÓÔ׬ýîàݾKg‡êdø¡:Y0ØNyÆ´Vƒä´Œ#4®èI¬ïñÖi¼ê öŽ9ÂÔ£ä`]Râá©;»àÃ#*6#)½ocû|íËë)‚¬?õG’ñKzJç÷f¦_DwÉrz…'cSŽöS1†'Ù¨ÈT̪Lˆa…1ŸU”°Ô|oø’dW+Ø'b{7ý°ÐÂúÂçÔ¬2–º§À?’ÛA€…Fv0êg¸9wº°„Š¢“8T¶@/h¼,ëÏ–ªâÂk ¡>¨Ò½hvóf¶jíSŽ1Ñ<y1ËXLNææ1ZÁëÑ]#)O*zkçû#*.P‡›×Ò&%r½½Š7 7X¹Bu°lÂb@{™CË‹8uš£Ã™ª“uGp¨„ÙÍ«ŸÛÑný(ÍêÔ4¾˜æ`·Ã¿_¦9lÍaÙÔËðPÛ¬FMsð“mNѳ JªðÚJýméð߃lî&8½y9œfæ+ÃÏE ‹ÿâߎXÎjˆe°ÜMשuxcõFoÕE}†º]v›øþ¥ð*ªû¢{Å{Áãm*-‡R^Í6eù¥åá(úºPt¦È…œöß¿¿;§"15 uYZfþEf#*T€©fÖgc(G,ä6¤c· ÜeBy±sÜ»ô»^ñ“#´ÎWY4 d9Xǵ÷\Š¼P$í¢6žâÔ 5÷á#º#4[—«ðJ âªÄ¡xÏ:V¾Ú#*CtìÞÆ›‰WoF xŹSqäy÷þàÍQçÕ‹ƒ×ß½ßï¼~û•¢Š ìMjâî힌×ó“14D*™Èò„“ݹ†Á­)LÖR]/<­ñi5±[5iCGÕk®åí#44ŠLÕÚejê0YÕ\öq÷1÷6ñœéµ¢о™#*P¢:§Jˆ_ ÿõ|ˆj’K•1µ 3v ’Mø­½Ö 8ì¶ÃÛL£î.u€Ü–²™Eåûz¬¿.‘˜ÇÄh†*gfÈÁj²Å8„ŽpqBΠɆ#)"Bò¿î¿~ýöÏî®$ÖkÍQ>Q«ï´b;•ÝEÛ׌¹›Âíw#GÀ®D”Cé2 ʆå‰T‹ÒeY¿¢L*o¹ls M×ã¬óÃ"Ÿ#XH+ JPÁM'Іù<Ý#4Òêýk!ÿÇÑfäVB@¾IýŠ¸¾ét6C·½AyÇë(YƒSíîÚ:¤j1B–(¾œ¦‘^Çè˜>xÄL§mÆf|\d7§9C™×f¡*§îG4'WDnË­¥hråPÑY"…ÑügǦFbÊ'Yûéì(‚"„q΂;Yè‡üË#4;–ÕU·.ÅýÍUü|›¶a\ @'i´(¥Š•<y .x0\ë^k^y\;½SëäÓ¬7èé¢J4î‚ù¬;VÌ.Þ9äÅ€¢„À#;Tî‚Z#™ ¹Iý„ŽYy·»è·o89sáeLgý%×íÍ3uÿÈ߯ñWüÞžÞºË<×7´ýc0eQ¢ Ýþ÷`ŠÛ)Ù^QíòÔº6h;%•æµîk+=Ë <lø'È R¸«ïc¨mûqcÏÇ•Î~ÝÝ îÿt]'#4—ý Ž”ÃΧʜ…ý4KÏÊE9a°«ä,9w& œ«“ï«…úÄgzžž—û»8.çqƒ® D.O'37ñDðO7£¥[3Y;ªùa39Ƨª%Ä<Ü.À·ñì%ån«¤#)â8-CÕ¥Á½„Xáô´Nþ=Y ûÍPŽSÙ`¹ú]Tì)ÞÊJ RK¢¨z>oMp'EWQÔ½€’ûÝÝ?u:è}Ìß%¸Äl2È¿b#)R~sÚ9òꆗ/¾áO"×ëž<gºpN·é .ŽÑÓ4ú¡{ÝôfŸ_o"HL¡øÇÏÂ#*ôÞ¸ŒÓ;<(ƒ<ž:Ý m®i9éSHOJ= ÚÖÞÁ0Cò5QõŸ‹|Ù0%øë”N‡)O§C9¶…«Ìbá؃DÈõCHÎqè}9¸rWöåQî«;uˆ0¦9ÜÒ(¥ÍƒÓœßì)£²ãUÌ`K]]9ŽFÕnŽ°è6#4#5„©hDÏèë¦ì ÝôørÝõyJ¡-Ž#*l“ÉZüf£Xߥ‘´½YOnøCFÔÔ¢¶ZƒÔ-«úÛÿ“úß{ú+ÁÞ¡ÿýé“gÏžô¿Ÿ|¶õéýï߉þ7”´'¨ ž_.€¥JРS°@%bï)\Wƒ~JÖÉF⩱+ÊIy“ñnÉ„ç«lÌÒ¨„åE‡ÙœÑ/ñü“¼%Ñ0}#_QFÝ{±÷õ~çåÁû4ê='’Ãï^½:øK±ª2·ƒ7‡G/^¿Na†Öøî¾nÒûá‹ï÷_v^½?Æq"úè#ãn|‚šóì{CHýMçA<b-pœØ{õq¨Qïü‚z9ïÞAþ·oööÓ-~}ýâ¿ÿ#4èwïß½Ý{‹UQÞª¾LTo8@ÊEÚ²Ϊ¨«[‚üâE‘hæÄ°ðSDàFý4â×úÎÀŽ<íPçe¥k[&éB¥kf)´?±Y᳨6¼WÙ¤÷(ñûÙT·?E8È»O ÞòUTï°A”Ž] ðWr^s_£ø ‹è†|s–ºAsê‹ÄSÛ"]HT4¼u_¼@Ç'/kñIÛ7Á]¥»¨Ž2¾–;2¯¥ŒÓ„¹YkÂtþ“PšÓÙ]Ìí"óz"%zû™0/d‰¶'ò‹>ý ú§GÂ5ã` Ý¸˜!ŒÅYwVŠh?:¨hGgÔ×»Œvš¨¨6Ê>ý¤Ó^M›lû‘Û½F.ÝËG+Š ‹eÞëܲ»¢»ÈŠ$¥ñJøB‰°[ô\/SÆÜÔÎ*ý2C·6c”¹˜J„®»Í½¦f²¾»Ù0ÒDš¡âú©jØ#g+ôÞM+c;r¯ùFЬÞ6ò°é*¤7–/ú¡¢“ém#)d\}æg <±•ÈŽà m6¦ƒ¬o•Úi9ú k•:ÃEo„Óí«³Ûú#*£€v°‰²êRO.UãèZs#*vW¸Ö<Ìò9[8£Ü‹UUX=~üÉc”aÙÝ2a]ÕŠ—º©DlEÕ¨IF¯o#)‡¦Ñt~»‹ú×Z#Ú„¤Q`Fª%jöÒ¸ü#-H'ªY/‘''ptüDüŽ¯SÇ?´ÝSkiô3=LŽRñm* <ÇŠ¡»9·›ËÍý8»©_ ;“Å ½2ÅöÔ'±(E^áø ¤'W¨»†Ìõ™#4ž’º¾ý(ZWëÚ™Q“¼HGZ¡6¹Ýžc[W|Ö½6þçiA§?ŸõªºZéb‰_#)*Sˆ?ê^eféÚULÔ]a¾w˜]ýT `Kg‘½‰T¢[óȲCd¥PŽºÒ¼FÓôínsŒè0üûÿ`ñ®%µ­r"–/ò>IPÍÛUDî`ä\fás+.^‡©T²¢íAíÞœòˆ¹Yà>x«“¾ç Eû‹žÇëFdËYs[k‡ÙâEV«—ôsÒþòõwûA#)_†ÅÕ°ÑŠa6ì¼É¬39G¬êo㽦¯«×Y÷ú¾Cô®ë ÄV‰•«Ó¯÷Ñð\k0Ùtú–ÌÁêHf™}p{WÂÛc›×1¯ì=h•d½J™#4n‹×•ÿöÄ+=Þ*ã) I¸š]èüóó Ù¹¦dßœœ£7£¤9%¬¾€vx;òV`X-o æ#)ÐÓxü˜ÆþÙù¸‚e·¬‘6‡-•í`÷»ónp]¹%Ñì,ò=Ø*ö`²ÿö•ñWdÕËi v›þŠ‰?ñÉ漞7[#ÞOâ(Á"ƒ‹5'l%³J>¾Naˆ¡þH­.Ÿ­# V8ÔH9û5Ì[[è#4}¯;Z&b…rÛXùž:² ëøŒ"ƒ^ä× Ö‘8È%²äeà½RïXwr®[®ÓŒÖuL|R¬FAü“‹ n<ï~ò¬[=®+‡u鲿My G÷‚•=ijžôopÚoDíùhA¿Òè†ç¿#‰dÝÒ'ˆHuœäîÂãÌ¢¡q¦ƒ¼s3?Ù…jTtÜŒM!ùrë,}yºôÍz ‰i"V1±%\T>ÝçùL©&Æ‹ja ç±Û>#*¯#T=·OΓ€wœ¸að{ÄÀyGÀC•@ZШU¿·8Ÿ#*æêõlÒõŘ-¦óPá&ïÔg+t“¦L»ñ°Dý> #*ÇÀõʪ#*蛲ŠøÞ=%—Ur|$¡8²&‰˜;Käðvýù*‚…C㶗ð@/èJ›Å@óC}'¾Úvò¦Ê‹Ö8D@›¸5Êx-6Êmß#B€¬¼ÍÛ^qKBê•Í*FÑ©ëLW^rÝz~¹ºâ4ˆçä#4HV±ÁþîŽÝaÇCq1t%ù,2+q·Z<‡¾ÇïÂ.Œ!ö#)/S§ Žhïî £L¹;|îm:XÈU0i…G$Êh·Î$Öµ<·^|lʬ:vµÀ6Ïo‘˜ŸW·‘:ÏLå@VƆ·#4­Íý\‚˜-D«qL¢¥ºóWílœv†÷PÛÃXµgA/¶«sÇ#4ÁrºÄ ÆŽ®Ù¿!L;õ²mçñ€ˆÒê8d QÓr-ÀßãÍýU¿9x¹õ—¤d6è£ïú8ÞÀW^µe93Ù,‹¸—U¹KÀŒE™©³½á"CÝNÍ­w°äuÓ#|2ŒÜ=Eb×Eb§Õ'ÍS²$ÆœðZØÚK6a—ÚrÂ1@]jâØœÍûe¶D1^œH¢¢Ô)ÄÅg·$ ,DIÙmQ%8ôÃJŽv_8Àsózõ…9}º(«"ˆéôE›%Fó‹@û Ò¯‰öea拉;fSGwïRF¢ÅÞe¿UÚa˶R#)“hs–fçvýeBˆµ¨Õ»v‰sÍ^œg¢Jå˜@ôqfS>±gõf“yòˆì±šÔbpïrvDZŠý0í¥­í­­öc‰?¡üÃÌÓµãõõõ~ÿøs#4ùúúNþ—Ã;ü[[o(ƒžÙù<=Ï×[…ÆM{Ü>œa,™F˜ÿ;E{Œâ…!.jaIhÓ4Ìf£µâMl7–ÅO”e¼±ó_03ó¼#$þñ3Õ)ÍÓÏH#)#*§ ´…Ñrn77<ÞÜ&}§YÚŠÒè1EÛˆžG±h÷büX4¨E Ñôp¬S­Hšp¥ü’"§»ŒÒ>¢]vå(ˆí#*2#4êÃØ^Z¯Ð" ÎÁ-!{ˆ‰0&òW‘ÃMYÖÅÈ,îÌ £®È#4™)MŒ#42Ù¡ Œ1WH·/Šu­H’¥Ç˜àÔ)ÕZY¦Vý¡…jº Tœ’|#*"çÄâm‘!mîê„È”\yv¯à¤Çåû±ÓFÁÙ…¹«Î…¿ÓŽSQÄÒô¡»×a›Üî8¦œUùZ–1ÇXÅK%T2¯ŠCX¡l±A$o³àO¾Géoì0œ1ËB§›Í(°Y1Å^.KÜœH£/×Ê~D¦M xÂnŒÓ>\„è¿Ë†¥ËaE®h‡#4‡ŽÌ/ô&N+£)K¿ÐË]W¤ßRWÞaœ¤ÑÔã*C.1:ûr8Áì´Qð«¦ÃkÆÖ`ñÀ¹Þ):d62]ñêiV½CºbveÌ›Ý!!Õ"­ÊaG‰"¬]TßíÊÐEx¬SáB–VÛÈǃ+dçDUz‰¹ž—L ½/4qßrV:vÖHí”w»ïÈÉ@]ð´ø±…« +>Q€C®¿µ¿Tó-5²$/Äß’©Eq«X-ÃiÑh„ˆÖCÏEÛø¢ZÅmI¢m㘄™ÇF²Æ­,‘mž£ÁÚ6uu¦Ÿ$MŸ(]Õù…—ÄLªÎ1½ÉW#¯=šFÏ¥X±·“:Œ¸?´zó‹S‡"4JÓ ‰Dò¤Ê@4KÄDâÖU÷Ù¸à]IS%‹Œ¨Är845Éw­ÛÇý÷>“.ðKK(Q>š¶·ÆêÁU^¸{ˆ“Tɘ¥¨0ÁîØϤ]ýÖé¡dúT´ÉÿÈþ ‚y`ÑaÙ¶…a>lÙíá4sɨãZÁù\ÏÉö#)®sm8Fá\ó–½#*žÂMfNDò7¼Í"õ=/ww—[ ž6zcsS{_-S´r `UÕBâ•k±÷ç—HÂ|Ÿ¼ôP^Yt³…WÌ}ØpÑ©àø‹8J (oªk *(TÕWÄ‹22U\¤QSšºb"ðSÜ[NƒŽp%xÜ#*¸ª(ûæ'È ¹¸k àyyþYo\á©Wö¤rë+jgB²®œW–£m|8þ(è]ã–¡¢MUcñÀUWw»Îü–#)[KÕ¦ÌÞ1,ûpHË(‰RÇ`ÛZ198Qñfˆu_Ó‚ ßªuXRå…HÀGŽ$¶Z•„D%6™l“¸^G÷#?ºŽÎ–G"éÜ5)}®þDò󪫣¨ÜÖ—'ƒlN†°”‚ÈÇ¡.NÇà凙.pœ½ e×u1~%WDFœí—À¾8•ÔÖ6}9>U•Òºe­c½ÌòyBïþt/'(üÄç jë<ë¬Ëò4Ò|°À(qo“”rs¥À¶š¬)«6FA²èSq8ÂøúœE/Úû¦Ý=u7#ð¬Âaù]NÆEØà®m-#*7øUÚdþwææ·£á`|Ujî¯ÖÔû7ÓW-â`|Ã,~N£ÿ¤‡z©+¬~ì#œeçn¢‘IŠww³ÅŠq¯|µé¬K<›¥£©NX|}ü˜)¦³¿ü“•: óÏhèq·”·©¢ç9¯3ïåo#*ßsǾå†2Q†F!:MƒÀ} |An ü)LË•óŒÉ¬0wë¢E;oe¶™r+ÁÐóÔnÊÙBô<Ö»òìæñMoÞ>{úTbÑäÑHøBÖÉ av¢Šå2y×C#)êÁ5<ô® î€#*Ž²¶–$4}}£9Ь |¥©_„0&­…jvZ¨ûÆßôƒ6±+ZîïlIˆ+šû£BÄP+:õQsÙ-âÆ=Ö©úOOn0qþyß•`¶&]#4U3N÷‡àö¹¼‘8Ý·äî=ŠíþBe uU™żG™løƒZ^Žé¼&#)k¨µ‚ÀÅ žðeÕNó|C|éåXAC®á‰Ô]i{d$¹×~NýØvȨ⚠z€¹8ªsÜ^©„ µ™Oè`+êÉv͸‚R^æ§Ä…Kœœzç®È·q¨~$ †vÛ}æ Všô×ý®fž« bK•,ø!R¿‰³z#*˜"Â#)mö± ša-÷ÀálQ1Ú%5òŽê.û9YçþÒõ–Ü¡S¯†^,«:ƒ:À´BàräTn¥@˜Rϸ¤¸2+'ªûiÍt°YnúH6-ùUÜ‚ïW»ZS¶±ÃnÛº*O±ŒÕú»ôǽ°¢!Gx5eoœ7í C½0ò@\è 4˜÷ŽEí)+¾7¢ì=˜küªòqB BAŠéà7ó¹×â°Ù \Õµô•TŽz¨h.&ß|æÁĨ‰íÖ û³ÁµLôãíÓöA¦§¨8gSk~„1TSpzëo‘Áž_8Í“UcÁ I¿çñóOÿàà=!€UùrTxF˜““/NNœ<zžº #*xÃyIæ¼m,}§¥¥ê|=,;0õFy‹Ci¦Ž:dÃãíG\Eùð o®´"=’̽T•'G¨¬£_ªàÇåÆAÖ‰Ù3¼1éÊIn¯ß*&~é²M–¦÷)èŠIÅ8X<´‹Þ·¹‹¾£Šìü:í£›‡ñ•‘‡÷ÅCƈل¥ªˆH-=e½G‰ò1,Ô÷Ý##.®êè’4™z3!zþqú-EPéØ{61FX@sý³5ú2ÅÄžj¿éÍqˆ¦jÜRE$ùMÜ´ ÍK,嬰fÂÏo&ó÷x]h•mä°Ø\Ÿíjæ„‚Éë˜bk‰ìuÂççìG]T0ܘÔ ž#*46,¾HŽPø]PóÊçÛNiZ×î¸@È¿vñ•ïV¨·QWz„ú0;ÏSÈ̽óÔâùà° ä+¾„Ž#4*&“µR©²7¥‰6U®C† ÁGÚ;qpÕ¬ÈY(͵qwQÚäVÇUì]sbývnû°sðíÛ—û-;m‘EÞ×8Æ$ºî2Ž#VH"Zº¹x#4_S¬7º(8˜ÛDœ+æ&F`¸_±ñ!ÌÜŒ×ÅŽ7³†%w5ç¤_™Ûiã®Ïôj§KÆ>·;àtä@.Õwó;[°ƒÕ›ÐÑ:T5#4ØlóŒ£&ŽŸm•±ê;º&c>ß;g]Æ kêM;÷3·mÈfØ%gs›µièÑhûÃ]§¥=Îyždø;#4FÑòeIWE¶b`Šú.,E9¡÷"Á=˜Vñ|â×°L¦²Vli‘­¤‹?±^wÕ «!Q쪭gÌì®}÷¶ñ@b¸Ùä.!ÏR•{¥€ dm’ù(¥Ÿöþ›·ûoŽ<¬p)¸uˆ4Xÿ†Ò…Æq‘¹)K›|2bz€¶J+β¦Ë#ë7QÝxv˃›××M_ )Å‘3â¶èúÏ·wK%Zd@é¸f‹jØDð> H0ÜYû\àžéÏ(lva”W,-ûÓ–Kyœ²ëÔÕ%TÜË#4NcQc™FÆ‘iôÒr2¦×ü6Ÿg#T£Âé{àÓ„ß¡Fxe©üw:I´úa¦Ò#)þnrùº»wŸÚK¾oý–‘zïDÕ‡Oªy€Çà*Lߢ_Í#4¾Þ.=äc°%;óЈŒÓo¥ÑÆhöxX#4VUâ`cˆ´Ù«9ŽÝ)Ñ|(AÐ[¡ÔL”h*Ô¼“wÌÁ½kª6™Í8@£_U°w™Ì:¢‰Ý:kp*ârä Äÿ#)´ì#*Ó¨†š›Ñ$ºÃBàëc±«FXõ&aka#4âÉy#)œ¢ÞåC#4/p¦¾Bç:e<®HÁ‘}æ :¼#)^!_1ÿ‘·+ˆ¿Lv¿0ÖÿÄBx@C­Ž^IŸÇ¸H´êvÖY:/›—–£Èž<Bþ=8¼ˆÞV>™Í3™ìU<dÓ€¨“X,ö#4ÉœQL:<¦X妪qr ‰)¢«l\o5tÌQOE<È^J•m!eòHƒÑ/Œ‚'³ÐÑ;*•F¦ü#¦“½ñÈf±› }wÜ™"½3DzÂy%ÃîY6L5²ÎþÃy6]1û=(ê’`—táŸM7Ïn7ñ·yÞÍ/ÑU:5½@Çyna`¤ûlg¦+w2"­%,/#4­1®¶«ÍfÕ½è£]<æÙlì ¢¨-¬ÁÈË–]ôgÁ4ÔöÍM®Í¨;·{Iw:]ãQµÙ*º#4— ^Ý©”åÖAµ–ñƒÖ¹YX ˜ª©P;ý ¤ú—%T1WgêØ¢êô#Â-·¦ì€Æ¯q9^Á&û" .C=Ò-W¦ƒÊÑUËóøóü*ÜÄŽ+ÅÀ²Ë¦Š\ý€n¼ÛöK4¹¥ö䬕埜ƒQÔœý &D2.cåÔ+Ê1›ò½ŠÐ)ã¸Dx³$ü-ÅX¶Ç8Ül>G™ÏœÌ7!*9#)ò·CZ/µÒæå:v8ô©'¯ˆ\c Æ»‘wÎäz¢¡éµÇûÂxBn‰ÿ*惞’$#,»>#Š(9ukaÛd*#49Ql!B]Çæy+ô 2Ó©Ž¥Gko|^#4i€Û“)Öó]t­Â,s4H*GÞjÈ€™N3’_Ýõ‘ú%,#4P,(Œ}XÝ7_¿r?¦^å;¿KÚ¾¶á•†Ú)âgÙÑöÇ×uÞ{à®ämŒ~CfíWÀæÝþ×¾ÿy{ç³þó§Ow>à?ÿNðŸgY2Ÿ]D(xƒ®mf€æî8GôQà ¯doÞþõÍžjÙ±®£÷+ê É‘À ^’ûÂæiøŽêLÒéÄêÙB|ÇiÙíðp6½-Éš¬‡%¡;¹°$ KB¯uµ%‘;:ét:Úxýö+ñ;]é–ÚF/­nÞÃó\œ7×[½í8_oýžðÛÛ¡@8äÝ ½éë·ß½_•·ùŽ™½»þíîú!$Ä<‰&bG;'Dé?£ï÷£]ÜŽ“èË·¯_F»ÑÉrûìxkû?·Q¥òý¾#*zBa|#)‘Ð';$¾•4ì †½;xó ùC§Ïæö÷þúÂgöLòÿ« ù CĹ•&Å Á§¡_ì|ziÂÏÏ͇a”üØp–ñit2£/ß°Ý$àæ‹ñ#)嵊jþXfåsåo1ì8‹î›¹+[ 7Ãá)M·#*ÊfÅDÄ»÷òBˆõî‰ì«A&ì³è#ãVåÎÎÒ”8Úÿ­gôÖcEÌþbt¦²1ŒG®;(0‰²Q·§r1©·ô9·ÔgyÌÙ¦Ñõ|{k O‹n®ÓT;M!ôw€¤àWZܨ;y8»Å` >ßjQY{ÒëtÒµµµÆ£÷‰Å?h1óßÍ ?¿Dn»wÙ)óv£ñh—3Üe4#*è¼@;7‘špÌmâQã¢*È.dŒ¤u¤Nhõ†2GJ}b]$¹o4<½!¢Sädfˆb‘úykr†Â[¯* =wm¯øºt+!›ë#sµRSnܘ!ºÛ…åCgQëäf#Þm¶Úãö’ö·*@ÇÇ°×@µ„Z¶_Ñ«¯¹#UxÄs.Œß.Gt÷¼”=·&m鵑¦ø žŽX®×f×Ùp<yžj o^½#*´äø”2J¹©ê` ³Êù·$rF|.omnjȪ D”mI*R‚IôÒ¶†Ö£R#*ÆlNfÑãH߬ï;½•Ú±™)on[áGA¼ºa8$,Ô¯9TG##*æ®''³~pßä•MXéSŽ'ow˜ºqÿcôÒ_ãpL¦©-ΓբèáÎ4âx–•¡ ôâl#)‡<i«¿zU? #4XBÊKé¢jNÃFÈ%ð'#4îuV^pÅhOû˜.7¢4’)Œiû2“ãEþÌš“1C –šÏ3O62ïýÚ9™èD&O¶#Îs<~F…Jó`pnq8Ы©C<—»å¥jÀv"̬\ðª¸#4:ÏÕ}2Çm[¿Ò!“D`?®çùº,H?ï¾ãì“3â#)Š)Hªi¹¨rÁ%#*⺂ ÅúW?_ðpX¹2Û¥%)kÚ#*ž'¬RI[CšêF>$«žUM g©„–'I@h­C\¡z:–ÚÆ#4/ßÅ$#*f0J$ÍÝóVÄa|éXÇ?[E1˜ö¶Ó€¨ö¶Cu™Þv#)yƒñ Ȫ~wØÿþí{šnK%ÛÀ Ë©K’4Ÿ’yæ;»-ɦ$œ¹ShäN””!°Åw3±ºxÔ ؽ¸è öë|q»øɬõÅG'ãø_À%yrÜúæ_íÇ_´Fÿºü×0ŽqgJüþ·ºÖ½¼ H¿®B`*¿kº7ßt<ThàN´Õ€P”fwqÊ6sqÌ<_ä+¼s䕼W°£·+l1:¬%oÎÆó#)Þû4ÙÉÂä¢fƇ"û&ŒÚ2y7GµžÄÙW^oŽú­½+¯Þª0¹°Pv7Ù‡ìÙâÜ\4;äPÇ“Ä=“H^$€D-¢fó•ú hëý„|ÃÌ©Ê,vZ2(3Õfø“â·6ëÅǺ#)!’Üt»ÎÀ®dÅ{øsßÑeN¡ë‚°›OŠ±‚°†3FBϾïÀ»Cœ+ÝÍ]XP¯É‰¸º.Ä‘ÅüÔ};u/0ÃÉï—ýá,µìUÌahâ¦aËÓêX2íöûBà[݇¾r̲òÍšr| ÎÑû—û_~÷·,RØ:C˜*<"‡U4Rh™\fKAK¾µ|ÂÒ3òHª.TÍÁUü3ÏÀý«ïåÞ3m){3½©öÌêú(--ãV#4EVõp¬m®îbüPב–Œd3߯£l¤}KË€ÝD'¤øüùö2‘ÄešŸÎœ}›&³[©ÌÝcBý¤iaY‰^&Sñ¿iAH›RüðSzò|–¹Ê?ÆO°wÃùj¡X¶{É ˆkÁ¬‚¥•]Ǿ–Å J2lr´iä»ó(bŸèÈ9#í—[.üTãDÆ?1ïœvÓá<œc ÊïB¦?>ì~@äÿä*õ“_ÉäjùÿÖÓ­­í‚üÿéöÓgäÿÿ«åÿµB~ò½(nM¤¶>käÐþ9œ†„ô×p3 ÓâôÖ”ýNÞ뎓~‡ÍÊÛ½¹bTQ;šXaqI>wÏrê‡Ñ´NS‘V)ZŒÑ<:>þçË›ðçÕë_ÒÓÁ›½ÎáÑ.ü¼{qô5‡ußïu^íÂ_~=úê^áïÖ9媷ñV CÞu/³n¨ MZê×/á°µ‹¶}jîµ}Šª{|7º¢f6É–M¹ÊI½ª:‰$óµí|½ÿâåþ{|Æò\^¤XܵÜÛÚy#*Œ:'Ä'ßê×o¾áüÈYj˜ï_y=‚CçðèõÁ—o_¼—\9@ã¹Wƒ9èëBr“8Húµ$Å„îùñ M_¼yyðÞ÷A~ “´¥]Á[‡‹ ÉÃÈsŒlæ,Ƨ}éOn•´¢vŽíþ#)ÿ¾€7XÆ"í“YHâ|æóIŽx©@4ÎG|ÄAq<lÁ‡G·‡qšFÓ A@¢ÉÙlLh^¢Á×^ï·‰µ§+xbjX±¸¿ÄÅ«¶Œâ!RÞ¾1¡°­÷ÃÅ¡?jFYÔdÅ‹»:gS\¢ÇÆÂÞ»*7LœãÏiªEloh„ úó™,–ÜX! ÎI}WDÁâ¸W+£`NNýÐÞæ"ë >ƒ2^mˆ¡lõ]»Â,G$E¡mœ\u† c%Å¡‹©ö±;ÿöÖHfN=ãUŽBvéñªŒNr(?ýD©6±Úêy#A_’ƒ…^éaa#)äònÅÄŒ±×' ¼”7ᬭuͪŒ}ÓæERœ´æãøƒÛõþßÿßý*€;øÿ­O·?+òÿOž|ðÿþ»áÿÅ÷9ÅgïÐøýåkV žÝY ˜ƒ³Â\+ê΄b;Çza,Jª¬#ÆF·+iôâ=J&(‚;s>ì^ä-ø@|cäA©(n•ò‰ÂÒãhÖË£ÓÆ¿÷ú¿èþ*J€w¯ÿ'ÅõÿéÖö‡õÿ{Ðÿ ÎÝÝ|TlïÎî½Î#˜Ép ¹èõ¢SYð‡nÁÓº=äÓ,ÜÍÄÜ$X=óÙ1†ÿ¨”(‰P>ŠþM9©`ý'ì^õ¦w­ÿ§ÛÏ#4ëÿÓ'Ï>ìÿ¿;ù#4ˆh³ âÙ°¯Ú.S=šÒRTH#*¢±  7ÌQ­‰dP$Éò6ĉú^}A-Æ)üû†‚õ6È'ã_ž¸cýo?ýl§¸þ·>Èÿ§ë…ÈßËöYÂIÓõž²å/ß¾Aq+=8Ùðáû½#)ÜìÇææ‚açÇ`$(‘…‚XXö%°øô§·=ú{+g‘³ÁE‡+ˆP/»yç26û‘/ä5|…HFÊwûtöù¨1Ñ‚ˆhMVÈö"ô ÙÖ'öÀKµo»#Ùåedå€÷(ç§C©æ• ÍÔs"µš0†%á7ßôS+Î%¿l©Î*‡$[Ób'|)ñ€³¡KÜ"IÀ0úQB†°ÿïxÔ»›þ«BÞ/¼ÜÅÿmV¼ÿýôé³ôÿ7ýÿ zý¿oý÷GýÿùÏγ­¢üçégO?¬ÿ߃ü§`ïYù$ý‡ Ša¯”#*Áw´>õwàgØw""¼ý¦[jJÔõ;]H‡º›Ž x¹›ÿæe6œF§,!F­DÌ¿µö²¹Ç7¥³æõZœ¦›ÛÂ@Ý•Ÿh?Fz%è³D@qºì{ùíËæõvÛg+#*ë¢ûõ~6ÏzsˆÙÓ#4°%´ñhàZlºâŒ&cwwà£ëªëT«Ïí—ž×Ñ#4¦ï&ù`‰¢°ë¶S° nU£wXASͲᤇžƒÇ›ˆD:L§ƒ²ÎÕõ°CV¨kn°œŽ‹¹\´99GCJ#4bÕéÝi|‚½”“±: hˆÕÙÀܬ#4ˆæ¥ª©‹Oy¼Þº\ŒžÆ2oïµÄsØQl&A]EÕ½zþî`¯0#)æëëÍüxã¾$ö7û)]öÚ­â#)&ýe _Ÿk“JáÜÉ?ãÐyeÞé°;GíÎ4e/Ñ=×€_SÁ#4ˆì¢ÚiGñóòô§•Œ‹äÏbrãöå‹é”ð´Ñh^ô{U#43~‡ó éQ\¾J²>Bi²ê +Òb¹@’®˜ÏLci ÒmA9[\‹¿½9Øÿ¯»Ãî¯À#)¬Þÿw*ä¿OŸ}úÿÿ]ìÿ³¬JDp+‰¢x±BL‚%äÆ!Ð.V%¥´{‰’‚‚Òݜ˙pYôB9ú€H×¾ñúÅÞZ¿ï÷ß¼}#ïDi×NKÒ£²@dœ8ˆ²Ú^E8ôHõ‡ò 3Ö¯ƒ˜Š‹~F#4Hœ§b9w½| eç]';g ©&âé(P—+ã4V÷ T•eÖCM°ïä 4†¾PáýÁ¬S†ÔaŸ!ÖL˜Ü}8€2Û_Œ¦~6Í;Nje •ó;ã’Ë ÞU÷"Ë-²–]¥¢F"jEÙlËäº%ìo Å F6…T¥å¦îU&Ñní¹#4ùH$3Íí W%Zä™Æ'*ÎÂ&iN óÓXÇ»,Z Ú–ºVx‰è«·_þŸý½#'¨\XgÜðâl­4bì<­ó>H½)1NeNÒ!ÌÑVä&v”pÜRÍÈ« æ,‚VµGm¼—#ìÂNTßeÔU­QÇàÝ knáL7º}Niœóy…>Iªó3N>*ñÀY5Ð9íÖg¯;&Ÿ^fŠ~’ ’¾º¨ÀsUë4È‹ƒïß`èœãf¼š°´£4póËqlÖ™Wõ vSøèë÷À—¦pÅ–˜AÇXÇw\blÂx<ir}Ð#*´ð™ê6ÏÍI5¢§ˆ©qa‚©$ÛQÚ̆C[FÞ>êÉù *Í&ôâZÓ/Ž^\74ëJפG¬¢x]©¢Â4jo_–òp‰ *Ç—n²ÙÊÈ‘ëÂœ ¬º|P¹ëîtÖO¶¡‚Âõ @z¿Ðiü€’0 .èBÖ·m$„Q 5gïæ«®‘~mú¥Çmè\à¨ØñÍç(Ñï<Óª¨ àgM1Fqþð§Mª†›CÅDvÁãy6ƒÁ˜iõ²énìWmlÜé”LvDdAtëêLgƒk r÷ÚP5²n”AͦWÅjÓ*T#*¶æTG$ ¬0`Òh»½…ðÞŠÖzÑað—$zñî@yC4ÒäŸmU0K×Úkj¾,©Ð<]ÛZ‡‚¦6k[íµ#*ŶÙFÂFô9m¬µ·Ö<“d") _¹š“ÑHÚánš[Eû7$øIp£Ì„zT¤qáàã¾|qôâýÛ·GhõBg×Oˆ#)ØŒ`° U¹ÈÁIpäü¶µß½ØûæÅWû6±¨õWÔÃ|¡š¼Ù{ýÝË}ªÈz¾Iö-¥:$åéTÙWgˆ6¾¨é.ù*®Q¹€\ÑBêŸV¯5‰eXÉp¿E6S`;z]¤J~V·Ò˜8K¨K6f$#)öÕ†hÙaúøù–#)qÓ{~mO'âݳ¶¼Ýeã*öl¬ôS"‡œ–Âô‡ÔqN%Ðp›ttxP´ÉÙ{v¡4ál¦“êôÝ#*¬‰Âä]c[È ÙuxÄ:`S¢@¯Ã[¥Ý&Mmm`•ã¯)›sè2µ$ºçh—­fN‚èX g*‡ÝëÆ.‰Ž÷li«Æw÷š™›†.7bîñ}º»ò –Ë3­Ï×,``ÜJ0luþÛA^äÒ^´_še¸ÆÅp¼¸†Ž"Ð惿 ÿŒgp|s#*ÉƧa²šmlÊ9Ù±9eí7×½¥®Ï=ú©è"óZ¹"þœ:UöMx€ÑØƼéÚê#*Sý¡’ÿ¼(ÈšßãÉö¿¦;,ìÚ³ÍÑUÀò'¡/×uù(Á>ñ€E„l³ÇI·s¼*õøDLtoŽ¹¢¬¸²–u[VXŒi~¦Çšža©8å&í|q~>X¶bà(Ú—koóðÇ~-ìZxø’Ëhö¹l<˜Wí¤Ià·Ü–Ä]ƒ}Ÿª·|Õã–·d:|-Ž¥!.»ŠVÀ§‡4Á±a\ X{äâÜï&¤ÂšC¹¾x¦¸»º¥ƒN#*·_6‘uÃÖhñqèĉ#gå˜;’hüb‡‘ã’è@¤•®¾úµB˜¹AÙÚXl©âMú[½`#4 ÉRÌ _ùÄxj(ôa1¨Íw‘‹6Õè\/8m>a3êDOµ¶©Õ *ôàHìyÏK¡œ2䋶¾ð•¸#)wú<Þõú„3¾ŽjGñéFÔî!dꃛlíud¬œdCµ<ýVèqâÚ¹¯a9ýÛõuAï Ø=>2÷?Œ•ñçø"XˆV?Á¤ ­ºÀšIˆ×n‚¹O¥tt•jõ êZ.G„¼!:1PwDf˺3Númù)Æ¿À‹ÆêZ£Å¥\ç‹)Œä1âß,c·<áë©ÎŽQ~ÑŠöÐ÷ŠÒ0Êz®çÜæó”]ÝÖtb¾¹mÒ…<OmZÆ>Ãïå˜4 ª¦vì?t>™4'èØeœe}®ñÚz8ˆ¶’¶ÚîÖGOþiÆÙØS¨Õ  —YÊsÍ䶶’Ï“­89›‹w™ª°Ky -²óíÁ([iSWÅ©MÜùòý‹7{_cRÚŠXΪ’£šD¦üãÝSÏTXQ¼T7E¢sƒSoJS·Oã$iY\+^zÛG#4*nIT…ÙUõ?ñkîæÈúyÀ^øúÅ÷û¹'!h¨«‹‚¦ÿTU´«ìÍØ”é̼^‡|GÀG½dI"L››=Úך$ÝÍ£C1ç}…€|—êGÝù0뢃{% %ïHÅ|ð#)uEïü¢õø±æ×õKÛë{‚eà5=!¢ú³ž•h‚+FV5¹/X£D¡8¹Êá.(4`ö÷j–¾ÈÝÛb<ø{áò#*vŒ½Hôä¥q-øÅúÁOEõ°lø’§ø™Ê¦Tì²ÆcœSÚ‘n³éL>½#*»VÄ%P“îb8'¢• ØLZ1j#`Ú¿}ñÞ¾o‘yû>JP‹(ŽØëšê L<9áîBµûê-­5ö”*—Æ8ÊñïÝþ«×é]´ûE•€îÒÿýìIÑÿ˧Ϟ}°ÿþÝÙ1þ[ô[µrŽº:pG‰¼5̉p¡Ú#4Š¡kî$–nOF¶ô×þËtI§%¾Q~y¼4ǧíÝS„#4&X§|<8‡VÊílKña¡š¤¸cë{usñ‰¸õùí4Å øE#)f‘#*‰zËe³76{Í^¯¹ û­í¡ÖbIì¤3p×Ü–#4Š7¶ÁyÔ‹$:ÂýÓÁ×¼Ãþj2+ä%¶\+8÷üa«ùªù#4þbà+ Å¨Øy¯X¯~}É}†æ`o$µ±è«WþáwbH oÉшި'éÏâïœw1³›ÁpHæݽ½›JTŽê,)+ìXÂÄ–$QOÅÅA•–P2‹ƒ}îÞ'NDî´y®nØcŠN&/U%#4!” ­ DUF‡ãˆû†G¬ ´æ–®õšªY°öE´N˜Ð2™©î<aʺÉ|u“`3 #4nž¦ð—_]-O ×D•Íˆ7#4wIËƲÛz@>ƒÓ–].VÏ#*¬o *¤8PfŸ!ƒéÝ•ÏŽ»3›ß+³ù½2ã³@~gv¯.ÃïÿpPÂvøÛÚÿ}¶ý¬„ÿðlëƒþïï`ÿïtÎ8;ÝÙÉ.†dž²ñ<ðWÅ2¨Š°×&5áJtFu]¥)¬ ²gûL¡eWh#*cYNÍ)ð=ØhÝí0ãã|ϺxŠÅýŽ:WóÉ_q/¹Êné€{Ï_LæYŸŽ»ü¸I™¸/ËÑÐ|„7÷}vÞû|g§ŸáwtÖ’Ã rÔ¥œ"GR.Ñ[Y•v,p* rEÔë3¼à«“r¼~»÷â5j@X#*=2ð÷þV#HÂèÑ«ò&W TÑ»wNïÞï¿:ø Òòî ;Åeö§`¤‰) ØGáÉbƒ ©´±3‹¬6öámÇ„wÎ]ïXXKÌ<ØðŠ"T>õ=êÅ:Y{8–†#)Õ¢&xãYPjÁ0¼¹ˆ4BÝ%-}ôò—#)õ‰‘XëMCæA0©–R4’ojz瀚ܗ—VæC#4Ç*ù+•8xsôzïÅÞ×ûéq8p’IA§4N¨à„2Â+¾ £woq¸¶x8âF#42¦)HXuZ›F7ÈEì¼Üõâ»×G¬2ƒ&iÉÁEsCoTußgýŸßÏ››½&€Ì¤NÒç a·øö¦å[èPYÒ¢BVF·¬%íleI-•9¦çS_ûMv[@®55šKh®­çkjU]7èC5ñC\¡Ý­&ӷǾ*ª™0pÚ&¯‰{à§ÆµÐ¿®úu°§W'¾•úhª„ƒªc{»òúÃU{AVIN¦“jr2üfÄJ®Ð‘“P¿6JŠðâÝ»7/¾Ý‡#4+õªÒ´¬_߇VÝ9n­$þGòüÄ¢›'©Þ”„ Fôø–$ç“Þü²9™¢¢Ý‘nÞd1C˜>¹qq£ÞlÐEs·o‚%åŽrâ}Æ»ãþõPÈ™m¤ƒÏÈDI;Ú(ãÝ0:ÞìnþãÅæwþÔ>݈ô–³ Å!ÌÊ;=ÒÄi ~•BW®¦Š«ÎK¯ü6¢6ÎZ>ÌÖ,CˆP‡;<riíâÂë†hÖŒÂðpª]«!^µÛí©1s‡,-*qŽN&ø´Ñólº¡yè{ôz¯óíþáዯö##*”Ù¿AÕmx=2»ü»¥µO…Õ#)¼¦ê]Âê)Ìv#4‹˜m¿…£’…àa×ÜìE„|ã&k´°Ñ#4Aæ5ù\hhÔ›xª5õÙô$°`3ØHß~õêÛ#}ä¡÷C<%ÎH)TmvHúÞ¾}Ù¸m@_h»gò¢_hÿÖ¢¥"Å.ÚGùâϯ#)õá‚êÃíŒJ÷õŽæŽ²Ù…·q.⿾ÛÿÚ™î†ÅL³ÙP#4ÁXrmuŠ÷UÄ+‘ x'`0Èm²!ô¤+Që¼IuŽ`ÎͳÙø±LëÀÕÑÁ¸J®ôflÃ#4]‹3Y©öÞšTû׿üÅ›6ã=UKô¾Øµ*ï9ýôüåÿÎûŸQ~ÝûÍí¿Ÿ=ÝÙ*á¶ýáþçwaÿ=É“ü¥;‰ó<X5Dàjü}·‹ Rj/8º‡€¦Ž†HI/é-—IwÖ#)FL''¼¨}FQÔèö†‹A³Û›®³~Þìö·áÔcóÁ ?¨å†îÕóÛ:ÚkvóË4Ï.Ñ”°y6˜çè©ð<›¡ÞóáäfÑìua€²y£×6{ÙlÞíèwÐ6{ƒÅ²…bsÈUzó!dýá?PÎòÛׇ÷ÀA×½¼L\ªß›ÝN瘡`~€ý'ýÏç—WÍ~wB¥öÏ.2`FáïÞ›ýÞ`ÔE×ñ}ˆðäSùé7øw!ï H—#*»·Ð¯ÍþeoÚƒ¢éÐöègÌo9ìy-_ €Ãkö…‚¤"0˦ÍsÜOûÃ!< šç}øûcÖ¿íëøyÑÇÞ†¿Sè¢æÅ°»X^ 4Å9 ?#lKãbìú“›&=@ó/éç15§:ViÐAbø ýͽÈ.áã`DSx¦8XëÆU6g8WùöÖ6fy ¿‹œ|¸ŸõFsùéÓïTÞ§0™S 9üä1‚|#ž:£‹Ñ‹ÁÒBñæhÔkŽ&gùí~§3üGßÿ>阼£¼KÕå½QŽ'³,kŒò~7‡ù`tAQÆs”“DçĈ_÷þ·7ù¤‡–£!¤›/ñ_Ô€¹Â5cMÇ<ñÆÓéœÒxÞ§AÅß³ÞFð÷E6»mNúg=HŒ?Ð#*üíM1`ØG&"‡‡Œ^³n¯G?‹9¿÷ÏèïðþB'c #4$òg[ôp£Ð˜äÓùUsÚaçOû—Mø0ÇÇ‹ Э9ð°ø8C‰ØÍ -y›<#§ð)Ÿô·/‹†üö›Ÿäd%3ëæÜ|x€ºàå#)‡­’°æl#)ó·¿³ÕœM{ãþŒ~ò§ø3›ÃÏ|Ô˜Í%æ:§K-ïug}Ì,ïÍ`M\gúpÓÌ3(-Ïx±À|AÓ/?ï5s˜´Øêüòºš™_oèã ?»ZL›ùxÄ‘ºÑ÷ šÓäóBØäÝs(ëºGSW†u~¹_A¦@­ÏÏ=vî}“7³!þMƈ¶ƒuÂÜQùt{«IÄb±„=#)zéÏ·ü·ß¼î€z4T[çúüßœe´&›Í›ì -¬š7ƒ.Õã7“ ßÇ£þ¥î¡‡)JÒða>5à—§y3ìwq#4ÝŒܱ7*!ßéÐtýÂt¦_H1—A\vñôÞ»l.aRÁÂn#)}wgv<áýW <=nEËgOQ9mÔ‡ß8÷ÏŸ¡”þâÛ KŸéG¾v8n!M§2ælDŠo#ÂiéC)—NX*‡…©]˜MJ‚žëea«àûõS›ß&`4˜ÂÞø`B:çÓRàu9¤-¿|J÷ò¦{µ†k8è#*ÃúáégXèÅ š4BÝ';¦[æÝñ`1r½|Z§*¬Ñ˜«b Þ†ÃÑý £M&ëŸa Õ>KèÆ}‚¶·Ú[ =ý¡½µæÝÈöµ¦ VzËW$1¤ ˜ÀšŒîÎ}<¡6‡ÝÜF ²+hÎLz–sTzÐB Â`xËÚ®MS"pˆ×ƒÙdŒ÷t¹/UDk@ù7åH£håÐ4‘ŽêzÔá~\ku8ÃŽö©z"n[|pŽŽNIê‚B­wxýöðû½ÎÑ‹÷_íÆ“Ùñ€4YÉ(Q)¯õÒ<ܨX;„ö“€§ÒsW³ÜĪhV)+׺җ°Y¢W~H#)hØj1Oì·rBHk™1hã½#Z&£˜Æ®Ãè‚wT›g‘˜$[•ÿúÅÿµó⻣·/÷ö÷Žð.ôjȾؔ!Ê6*Cõ_öÿº; W]ºËQñ+ÁÍ€`£p#4_µAbÅ{~êõÇëTCÚæÒ«½¦J~àË ïЕ‡È(mmÚäa;Þ½xýzÿ¥ëñÔTUŒ2eŸƒGÍIûØŸ;õìn“{#)™²õYs“M"…¶3°Þ e}Ø#4ËsÝM±p&KnX©-9k¯º©­bgýPm£íáØZ»ßoa‚ÐNÇDªëÇ¥ª‚AÖåqÃyW2ÅÄ„#æõÀ‚´g²¼šQ²Íã.J4¥$ fK6–³œža•»gàÖÝsoºhØ„<„p~Ìóػ҅j—oÒ¨û8Àx#4ÅŽ&ßv´×[ÅaNxjW®Ù?ª‘–¤0µumÓ9ÄŸ\÷Ò IysB»\þT—Ÿ·W¢Þ Ô½ñ|#Ý^a­DŘg0×PzOÎà@@Id)‚Cú& Æy+[ï·!E´ä»l4lmmíOYïrÒœœŸ7`Š7¼!¥—×_¦pʆó$Ýz®ç#*Š‹ðéú:þ¬¯s&[_—'ý€Y¬¯Ãßõõÿ¤_I¯·¸ŸO“W¢cG à†—çŸìïÒ†ðÉ÷ò»%Ú$kÅøˆ.¢RÌw¹˜jØK)¼ƒ ²‹Ï„·°ˆzQ…Žíá]:Ónò*+böò‹reÒuå%W^„Ÿ1Ž?%”Sš¿½iEÿ)ÊUÙi_KŽ¶’ºQk•Ž?ß=5YâÓim¾8T6Oil)ϧUyÂö#4ª€º%¦j‰É2ö–0ì…Zw…Vq-vžÄtí;¾N‘àežðeÚ^LûH ]w“xŸ×,¨¡ŒÃ?Ÿ±°ž Jð²^óv`ËeZ¾•3ÆÒØÚu«Mì½&ÅÝñ5³.Ã<cèilx±ËåÆqô ãÄ&Ø^øç/¼¿Ãshßx€§N ØÆ#*«‹Š×½–Üé ÊëÅE6óx²üÎ6b-¶è.™Äê^@¡™/Fý#4žv/²/ÌEü>ýEbÞ̪wøzúÚÜ|Þ<ï†8ÖóZj‹Zë-Âtª¨pU‚Q¸ÁµTŒèq©àf cÑ•øæ5nUýÌúî-76ç™f¯%ÐŒ·ß¬Ú,`ͽµ¾ƒÙtJè˼Aßc¹ñ’3Oîà€=wNL£/{½"¦ï_ÉÑâͲ‹öÛi6î¤~ýÍþ_;¤«ÐùöÅÞ×oö“èðí«£?¿x¿ròçÉͳ§Ovpó:9ùvЛMòÉù¹xo¿I瓓×ßäf(@åš~¡*Ý«Uˆ„R~ù‹R#4Ùõ`Rµ]‹*ýl™n5(h;Ðbê_Û=èeaëöÇ‹¶ŽËI(‹XT÷ƒÄôÖ´E ¸VÄ£¸Ê⽃þ ¥•¬d³laôÕûÉdþr0«ë1ƒKtÿ<ÆL¼Ø>­2„&‚Ì—£a¨ÑÒÏ›qN7> ‘î®N"ÃËq|§¬L®"w‚H,õ©8/ë¡B3䨢*¨ø²“è5nÐBŽw.'5»hÅ&õYŒr‚²KîU¦ôNXýÚYïª$9¹±×߯_2† ‘UÐw* j¦\ÔxžÍÆ.ÑßZ'ý“þ'mú‰[ûËiüÅÇŒÜZÈË»Šä™VäsZÑ÷{l–å(x'¤}?ÈÝáá|ÑLHpAƒ±ÎËôä/Ú b̪#€­ËO"q\zÍJ,W­²6~Åþ’õ¹k;Òhi£ýJÒhëidU‰Jó,Ñ{DÊ^ia‰#4˜7¨§IOA• gÙ,=Nºó}…±mV÷ò²#)K¯JsÏ-“ [e6h.JwnD4\OTzãÖ|A6JºªàŽ=ó¼ò¯œžSHåWa)ž¨>‰²R“Ûߨ“JõžÅJ]½ùÒ“Þtáx8º‰ð<k"“ê0Äθ òÐwâÊùæ aé°à,Ô4´‘Â@­FªîÃt‘’ÈBPCtH§Äì*œúGóC]ŽÚ}à®qr‡ynP­°Â$¼Ø±‘Óp-ZŸÄ&–dA{Ûª¤Ð÷nhÄþ*tˆšn÷µÖ&iÓÃêJ ÀÂäqi¥Ü6)vqSœ^ç:í`;—Yg'=nòUýsñ~£(¨Y6­*ƒvF`%ì:²knS³Wù;Üu»ýEv8ú1 9?Ÿ~ßcsMä›?½šÿEkv¿ÊTm:‰Wñå?a繯­8+·¢„Zke—uU³»Ø}øp›=2‰¤ÙK„á]ª×̆ŽHšp¤F£^ÏØÈU™ËŒ`åu˜Í÷Ç×(#)nÊÉóÿù£^tÈZR|ùŽjW´Y²Î¿§iq£áªc¶ÖmTÑ'ц”q¿zšI’SŽÍÈÃïžjÙyyÑÛ+½pÍ»ê`Ëðt¦/‚ÓB¹S%UŒ+T÷Åb9º3tÚJ>Fà—%²Ð{$<Ž‹ii:Lס\xVvòñîîæö©¢;z“G&Û¢,çgV¿Á¢Î{õÉ¿GÓN ÷ÈÃÒgÐO$ÒÀþÊ1·';¦ÉZyÒ X]wÖFp+„Þ~bÉiÆ—´Ø¸#~¡ª×Õ»²(FNಠNV9)òªÜ-Ö¯q>ÑÞk‘'ÜWI…Лs´xˆ¦;ÈrtÓIL: -W¾z]àR9-ÞrBÅ÷öIpRÝelyåö±PxáÇå³ÏjI‡K™DP¡•RY‡ðˆÛI“ŠH´Ú'+£‘:Q´ábóݸpžõEH¿Eõ¹wçÃÁbø¨òÄE?[_DØö»Ë)ćW.Hœ¢m‡¯áùÍõO¯ä–¿%ŽÙ” ïl'8µQ9¢È£%ÞF!™òíʲÛ±Öpõ¢u35$9²<Âæˆ4Ê,S¿NyµlD~C^½P§—pôzÐZ-îË?i¹'¯"õ[µ•H¥ê —fr¯¹Îoà'[q,vT4ÅÈñø,lá…9Ö.NøŽI$gM5w¶¶?Su ¯þ¾̲¼ùŽtò›;íg‘5ºžÎ.:J•äÎaVÞñuÜ+²N…ù­¯kfo÷äD‚šÖät䟀ÛÒ>-;‰üA#hLä˜ålF{eB7ÚhqŠ Ç˜DèÚ©¿è‘6×c´zfÝr9›,ý†'ìÒÈßÈÌ—·æ;X#*zºâÎÔŽ®Û²>ݶe¶·ÅÁ¥RãóÉñÖéŸheàdŠw€rbƒÚå“aÖQC#4#ïÎf)¶„põò$â@/ˆvGgýns¹»<V+X:n|oP]qmec„õÁõ4›)f+…Õ$“((ˆÚâ5#* |+ÂnÆÁ¹jTäÿ#*tOU® ²å ºAÛzŒ Ø„XÑÿÚßúU,ÙIøz¡úô°BdÀ„ÊIµ[׎ZÀy/Æ‹Ð;ë^¯J±w<ï:¹CðÆÚÉÉ!*Džœ|¿·V+¬ý¥Ë*-Ú½µŸx&~Çk÷>_?¿kw‹aìm4xyA‡ŸqëÞ<+/¸ëêÍ ¸uÆeÙIqE¹›8¾L²Ùyg ?-³Úkïôî{ñ@UQ7zZ³R¢8y'`ŠxªèA¢£ÌmÎïyBb’R[Ë*yŠgEBŠ=î:uÔùÛô õÿüîðå7ôûù–;ÃâÂGÂ=òt®¢Ïh·ÀÌIÝ/Óâ{Ñ÷@ÎS&ó¨nýÃm'þÍ$Ãh“pr¢P¸9<nlü†ÂàÚòÿ—È‹‡ú#4qh Ÿ¿ë\*ÑUVêŒF¬˜v±4ÚÿöÙӣΛGßïG!a÷±ŒO'ÝÞî-}æ{K——(ûÙý@9ö½v5“}iÏ®ÜÙ4Æ6þ „ñ4jÂP G¡ªh”ÏGÜ÷;÷Ñ€„Ôþ&U³|ÈtpC÷“:ßã¯8Õ,Æ¿Í`Œº?LfÞã aû›s8å‡pŠ¶âNñ¨“Oä?wøâ·Þƒy–ÿö€/÷áÿ•¿{x$VpùÈÈKIE[tÅÖPE|‹°R…º«ï»_¤:”³ÐÓ#‚ALÏ‹Aÿ.²§Uº8ƒÒ%Ã[(ª»égqŸoôaK­¢âÞ#4ëÒA~ˆé&iÔ©üvƒ¬Õµä&ëö“OojSX”òg³Â]áºWÒΑ);¥†,fÃ4B‡ÝO>AADÏÚÔ|Ü>ÉÆ›‹ü ‹QþÉ|2ô>y²óùÓÏ?ð¯ (ì®úñ*E5#ǧ©¢Œ ÷áÿ?ÜÞÞÚ{ûíÄi:„ `ËhÓ©mÒ¦—êzšy'cÍ¢løا=ݘEíöÉÁËý“ïÿ<‹J'Ig5£~v÷÷Ë"£­‰M?8oÍ"¨1‰›këa+×kŠ_‹Z?Bë·J+6zAÖXhx]4Û¬Øõ¬õLÙŠŽ.³&mžMSºÉæd¬æÐ9{ùg¡ì»yøÍwÍ(j7ÏÐ{ë¼ÙŸd¹ çf#´³8Ëš"TÍúM(b}Ö† °­ÇD¶Wh¦¶˜Z<I«1‡ëÕ\Œ‡ª*BZvZ?‹¢AÞ¤EõÛÍÃ,ÛEIl¼^첤Ô׉[:ñ/Áɱd•M¿U—L•ÕþÓ[†³kõ‚vš8®0pô˜ú½¹m¶Èú"‘”ÂÁVÉ ]ñs#*×YŽª­•¿‡5-/]1q”:{`˜'“ì0É$´oLA½2ko^¼ÎÙ¬Ë÷5ÞQ’ÑÖ 'ôíA±75vzŒw«ëy{ØÖ5~Tx½q•yˆf6ƒÜu–d['9 ÈæyMv‰pö‡CÕ~­¸g€¤ê¡wŽƒœz#4ÒQßG¢tøBÖeHŒ”/Çø3i²+f§KÃñŽ5Ωµw}G¢ÉBŽ³îŒNç6ch÷­É×Ä<5¡Ò š1‡“›lf?¢Ó¾ÅY+:iÃÛÇXPqpYíÚ‚ŸìFÉ&’¦Ö“a¿#õ±už@˜«¯sêQ‡ãSVÌÓ_©™û¢@¦VRçÒ(²rߪ|+K ?‡EÞ–#“ªB<½pXÏrÞÇ`ÌÆœ˜ökV'¢Lxg¤-Èý±dNVÖ=×*#*ö³ýÌ€7žØ9‡KJ/%83£êKÎl>cŸ)a.ÀÙ"“Šö8¯eêy64KÕcã3$KØé®…Rgô­\Ydš%ª=²foθÍâ$)Ô©¢LŸåöP¾n©š·Šô±Ëq¸FŠRšãhñL”¶º÷ð«ý„– ·PåBf¸æKùaX×çF)|§~¡ðTB:Úê[Ö(C¶6—˜¶ÞA2»k¸^tÛ¤gcì3¿a܇Î`¥#)å­”½Â-Æ}ZI]r‹#*Q½ŽÆº™‹å-rnBÑüÕƒéŸ L¯Û0­û¨Êœ)NÑé$ÚißIë;Ñ™—`äT- <a)åáal6Ø“A¶JlÓ)HD¥Óò &®ˆãèðENÝ&§SX_ש_K>þŠØ=SÁÖäU´R'ⶕ}„IBc‘ö|E‡­#)Øí.æfÜZ²‘XÜÝëžCÝeØ#4Ö#cŽú¥+e #*!éùÐå²2¸×A¸§B·ŠöÿÁ×t¢éät¢ ¾û.Ãß° ÁHùÞ¼íM6£þ Ä¯Ð;&«B>$‘ðCuí#)Øqo!ë]늢hc.>ÛIåÐéâ%dú„yÚC O_,šn5Û/÷:{ï¾c#©ë¶QÀÁ¤8L5o bŸJ1Dõ„ƒï»ƒ×ûï –ú´ šÄz®ä¼6Äó_•æxwó‰¸ó\#*â°+@Mb&bшMðå}콎2äÊ…ýåàõÁ›o8øÌ„}ù\Ȧ"—rœCˆ§¨¢Œ.°bêíøhº‚¡‰½Û‹›Á8*‚q`o6Ù©?›ßLfWpšF`DN&zx‘3S3!IB“ÃO¿´0ðî^"#*ïAã,¿}ñæàLÙ´eF•ôHÉǵúÁþ<žÌl 2ýb<+Äà™DÙÞ¾'#4¡ïýå/‘Á¥#)Z¢})°%b0CÞh#4&ÑF~{Žã¤½.d<TF,‡§#)ÊKHIÍY¨›ö ŸçƒóAFîù<%¼óÊá÷ºÀà@~äžw5DÚð曎ÅHzÍ|ØS -FùE#4ìWó¦Ë““±þ%QŒÜ„OM=®…Eq©{LBä%õ31_¼g˜‚䨰ª¾g••¥Ò_¼ r€Ë&´òÄRô>õu*ô=˜Ï5 ûßE•…Ë—ÉQEöÿ?{ïÞÖÆ‘ô#*ÿ#*ŸbÂ.×hÌ ƒ;÷²g `‡] <€û•õèÒ#)Z„¤ÕHX<Ž¿û[§î®žƒo²{Û{mŒ¦Õçîêêª_i|vnL¢}ý07× Ô #4Ãñ á挚º¸@FÌãhƒåq½ QUÚç}šJnûª:oLëÖÞ(<OìN¥WÎ#¾¦ßÖGãÔ÷uħU7fuf©©4,…ÖѬU‰›uyqrÎ+#*3—”äz¤È#4™]ï¾rJÿ¸øüåYŽPwô´c}]Û‰•¤zýz¡t¸\*îî=ß?Ü;%OwÉÇí#*§';­ç„•BŸg/Îà2£½ÂÃç4/yçðÂwYÊÞE-ÏUèmÞ;^d·/¦w›~.ýSP]Íç;asÍq¼®I`¨úÇÇ8¸/ö¥/¶O$R;€mÇ~½~í>ÇG¯Î¶¸Ø-ÆÎÉYë嫃³}öÿ¾·ËYª"¡J° 4çhíÌ%B Ðî}„~|q!H@5êÞ_¥¨I"ªšPÄ ö³\Ð'ÊÝo¤¯2#4|ÿÊe ÀŠ,å{òü…aRÊÒFwÈŸ*ib«VÂ)ªÃ-!“Ü ²ia‰pp:Ä„:Û;9„ô&•#*a5µw3ÊG™^Øylúæ!ÿ6¦+5quå\É“*òÆÝ®Ÿ>ˆ9ø-íî'.ü!|Q}þ¦}ÔBö†G¬ç³¼“×gç`ŒvRÿ#*F{kFæÙQ†|¦ùîŠèƈøðâ&M_¿Ü=[¹ÕqƒäŠÙB{I‚P|2=gÉcÞë '4WÖbó…]ÊWí#4‘ÈÛ¦' …û€6ª™[âÒŽg7Qˆ-ͨ\Ð…gÝEîáCHóÓM.´ÔA}Ñ26dL‰âƨ{î<vÙNÒ.±<‡Z\ž—Ë3Åq!kuÊ]®åÖP…Ì-$¹ßž€W¸<îcè;ÉòjÆŠBj;WÝã«Û-þ0^šç­ ·nÚƒÞE*^+V€>Smœ·Z…¡zeÀ ´æ&=­8‘I]µÇpå`–w8nuÓNBj6Þx'“¦„P¤røMžÛÆÝ#wm$â¼bØbÈÈ#*»hßôúwئ•”»}4ѵP!T`ß?Ü>Þo=ß~¹ðÝ^­#41—Øc¼þ¿_Ó9;¶†N¸•Î{N,R nïÓ‹äÔ[¢Ñƒ‡\ÅébÜ)N³´4rÔ¾Dw"ˆÄgr™V¦ÃXÅÞtöW¡+ýiÿtt¸×Ú>>Kü”gšþÁzx$NÂðp"u^ÇXúöhô¹ÿÓ0›Px3×üOË\ä£\û?ÎŽŽ¥é_qý'øÿêuþî¿îóÿ¾ñÝwyÿïß>è¯þ¿¾#)ÿ_ÀMÝëp«=Ž/;<wåý:vœ,¸Ó)‘a5BH‚–ʈ=,’Ê뼑Ô%|z'†Ô‰~¾Ñ쑺×Ç"VÉ{üií7´±üå#n`0.z°)iö}ïBEžzrë<=¿ûÝýÿm|÷í·›Eÿß}]ÿ_†ÿ¿2w,µ®þЯ{Ççîï<½@ç5¾¿?tœÎpýÃòI¸ 'òBYs¥è#*:¤ #)›GÎw,)Χƒnß}ª;¡DJ–]òîJô¢þùýöÉÎO»û'­“W?¾A_¸”ˆy°ÄóžîßB8#±škjˆ4¬·zNaŸ¶ùÓÜ8©ŸsïõÙGdÆÔÑGô&uN<—Ïä„H:šü®Ã­8'ráyY‘Š™ˆ‚6•§±%ã›Þ#)aØŸ F+ý%û2áâ—ú2&B’sC¥Ãºky%d•õ …‰×á:N)¼ÕPËÞ íþPÑmüÈÏ`+ÀrP®#)ut5ªU‚cØÑ”ç0÷ø…ïããÔ;Ƙ@ﶢËrà¡®AÉd:ê§pÿÕz‹Ô¢'¢…ë5X³l¯>ä(Žš#€¯&ç£7#4}„kMæg‘}¡à´òt¿¾w™½jPѽ,€3]šÒM§Üd—pÅ„ï?Hݯ+ÜMWÙT¸tÞáÄDÅú¾S°Ö¸êø|QID*)82]`ŠÆ,(ÈÓ&0:ó.B3ó… ôƒÎÃÎÚš{ý²ôÍ$öǽt¾È,X©¯Do”Ôv‡ÓI#*¦¿†õt#4 Ä#+e<>gV qd`Ù@â¦WÇ"êŠj*Åó2;9ç³bkkçèðùþ‹Æ긮b˜f£mÕ¨1‚ÊÁšj(Òßöἶÿ%Þàq”¯ºãBVŒàpëH1k‰Ê°¼äS}oU•<O«TF×ÇÞR¥ ÃúB£Â‚ Ì©EùŽ¾‰¼#4­ÒM"Ù‡ìŽïö„¦,S 7Ò´ ZBs‚¾äŒšr^#)Ô’ãÆo«(gÏI¿fÆL%1O¤–¦T[%‘GŒÒBwvvÙ‡»Wnî„!Ñ~¸æeÜ= ó’,§ö¢vOÚ>ÙÛE²lœI‰h±Ò/Èÿÿ& ×I|Ì$8fs‹Ôûé€ØѳM•q³™$+£Qg%ŸïÑVÓë;óòaN©æ¥ÈM>èýÓÜpÜ›#¶O^´\ë¡!eG¨Œ¤V¬kÎ)™“©¨mègõ*•õ&©]Õ4\5âùçQe¿$Õõá,%ÕÑ µ1+Sz†°R“°.ô›Ö¨e›ÈR‹Î«\…¢…'”NnOóûw]äOäÄ ÞÂlþ•öÑMbóþ?%u®ËšµPÐPÎqjïŒuýÇùú{$ùÿ7{5#)&d|.Œ¦°óÜe$.ÏY)u`&)IØqW´˜ÛcÉ:ãÄ›ÐÞPèšÂÜâ#)¡º‘±'†>€¿?Ò"ø¬ïÃ×éɾíˆäߺöúÀQÂÅü“¢ûžu,}ÝÌÕœïPvΩñôy:J;½ à`ì:“áø. “$´/“› {ûË(]¯C›uVî^ÔÕÂXÓTUÂÄûuh÷Ñ:šÇÕ(ScÜW ³ÔÕšø¹J¢ÿõ’iOþ³wpùù@÷È67¾}œ“ÿ<Ù€?_å?ÿ›å?ÿ.¡/ÍáùbßÒ„ |)aµÈ—éÜ+ôå*yb_'î÷oo`§&_ÚFÍê“ÿ9Bâ¯ÿû2öÿYÿxÿ{´ñ¨ ÿ²¹ùuÿÿÂ÷ÿßûaþÞ÷àIZ¸ÙÂߊ'?LᎀÒ}3«²1ÇzÊVX”‚í:>B®í÷¹ºú;;œ•e}jN}¶!´|Üu£ƒ«•”×w­v#+=®÷]€ËzPPµé|µQ›òÄýÒ×Ç$ÿ1YŽ°1’ë~úR}¹}ò½tVRú—2œØP$~>žôE#*´D“2,Ñ>#*×/Ž÷wÂreSˆ}ãaHÿélt1í÷KuMÅÐ6~„–¨äißÏ;à”®â#4óîëiÿõ¿éþÇŠ¹Ÿ›˜þ?~úèñ·ùûߣÇ_Ïÿ/äý?§e*#)îÍ?>vÓXTÐüjž€Ö\ŒË5Prw™Lp¹‚€Ï’´Úý^;K³¸ÓBC§ñ®†"ˆ…Ãlÿâ;E¶#)Ïrúæôlï%:ª&Ödž†##)9ž~‹Ê«òa;í~.ÖÁôêtIý¼}r*°7‚´G–•"“ª$ØžBk#*e>?ù—£“°Ñ–RßÂhÕîììîÓ‚¢rÔ/õ ˜Í>½ˆ×¯MN›·´”nY»œ%ŸÖ¼C-R­ò&]óf’oª‹aÒhÕ3Àüµfp¡e“(Ôªó†'*Lšn«TU=H]ÑRÑ/VÓ„ÿgTrRQɉ®¤1ÏPÅ&ÁgïýB Ÿ¹ãŠô?¶ÍíÌ5wûÔöðßü]ùJ~©÷ù.?Yð»îšÇátBÏ’«Ýú0\­Yëq>ÚE@Wgñ¡Ÿ?,™ø“…(ÿ‚¤«d#*ÄHÞ…¶'“qï|:Iýg!?kÒÀ?MûBƒ_¥}1¢ÎVSžvzƒ~F/(ð‡˜ô,MÔ¯bwàLVÊÍ‚·4‰†“Gl¤fy ZŒÄGŠÚLJ”EÔŒµú¡ ÁÖÂtè)ë³}žA´@¹ìNµß­ûFš÷ØRHŠíÈ9_ƺ76ÐäèO'v”X#4ð¥"‚¯È‚uëfãNuB‘%´©x½†¼µÈ«£GšÒb#)=åv®z}˜[µ|}©Ò¨~sŽÔ¢|#4!·zBK¬æâý+âz‹CíÁ,[ÔB¢ ¨UÙŒ¡UîÁyh¦›7U+´ülmâF3ŠÖ#4j ‘U*ätÔ¡Y‚m]ê¼y¿ëÖ"_B“#*™hÕ •Ó“"Myë´æFþcggØŽ“ðÍÞÁÁÑ/p3~—ö.¯&ÉcDšÎ&hÆà`«›aW—£ïž<aõ¼2~$7V0Ö·#4ëÈøžŒyœ—fZ6HÇíÉp\g˜Ì¯Þ¾Ö`DáY`+Ys¢‚ šwâ2‡€Æ-^ýhµ¨Z-øE0K­µÐÜÿ)OD=’Ý 3-–[ =!:™¥ýÚ‚#²Æ”‚7ÖkÅ"i/®…b÷l£`²æZ‡·ƒégøßY¾í˜Hiî™ÕéìÉ”1>Yãˤ°ÍÚz¸†”ÙðM#)þüüG§w«ô<ëÚ=ÊõLÕj ­È‚¢² FÏ’GÎO¯%!e¦<›f¸“eÜŒþ^ƒþÎÒÑšd]%¸Òæc­£ô,-„Þê1ÀAÓû<7”ä*}–²T§-{üà:~ðàúÑQK²)Bm9sZÚ@ê^>“Åap@ÆÀ3eT†–Cf0º¹¨EZ%n¢*wsá¹q÷_žiĽ#*¶l$Eƒ¶Iˆ¹bÄhOXé {ài#GÔÚµª¬Å¡”!nsX­ eJªÆLW Í-QGÔö%†næËù ¾u„ð­SµQêE§ä7]må±›Ëf 9eáj~^H Î÷¨Ô‘]zsžvñÖ˜ž!­Vìj‰½ëOfyÖÔ¨q`îÂÝZI?p2b7£ÈOÝ×í¸ÄæWÓ$2záë<Æ ek5û+-c=þ¨ýbk«fáóù39—”u¹Ë“SÃÙ>AÝaºù'‹Ð?üù=ü•³0:8þ‰õôÛoéLÃÐ^Nj>MØ?’ÐN¼nÞÛÎ2Òº "DíÍð6­î„#4_#4$o€-û¼SÐ!.ðèý,Få¤0Æ¢£e©Ÿgr_Åñ¯ƒlO¥•h ;ƒtm }öÙ,Ã8#—Yh‡%—¥]š%zI-›u‚ùyA,›*–¸š"F²—eÓs#4«éèƬ{Sg‰áË’™Þ\ÌÞb†çÿÄk‰NrRA«çßdˆ3Z—¶Ôâ £b,#ʧ­ç¸¦º=WŒsRá¼#4¶&sî\^W”Ó{•ü¶7´D ì> @…­üV3æå—‹§ÀبgyÉe˜ôÖ8í¨»°9`ñ<<Hô-B’—Çá=OO#)éí;wWB.{‚u8g`çš(%Þ£é[ÖHž¥|½èŠi"M#4ÌQ¹«†]uïl2(Îó÷úÀ@ówh ]~áâMjh˜´Òn>ß¹±™3ë\ôB«0MåH+tYAoÛ+: &¹ÕË55Yó¥0ô ãrÑ,õY6Z7‚‰T%00ëýŽl²ø¢&» ½,¬ðSçÊÚ¬Yðt#çÄ6¢ü,®ûGz§NH—4H½VM!šé³87º±»ê£€jÂbvp¥Ö[Õ÷c…E`O™ëI~òMa¾“HÇŒOqÄÈ{ÐGšÓ5ÈzÄ»S' ßÏ——*yn9&­NíØMDzB‹¥L+r&íÛ#)˜ ,ïóû‹ì©¨ÇðJ#^rõ|Îít{­ ª“›xʵոÞ*gÂœ–u±Qàc‚±£!ÙªaUMJšõfE  .±¢é^º ˜M²{]Áþç]OI®/ݺ±Ø»»¦¹^š&z’¯\3{A†ŽßË£ÆïÜu„Ôøx€âP·2šeÌ=ª·Z#*(0’¨³’2Ü»ÙlçƒÓ¨Q#4÷Y$‰ÃÐÛÅ ©=Ä= —`¦¦çûÔ?7‚¯‚^*qãNØû£>&áßÒ£µÍ­f³©›ŽXôeî+wEÆ"2÷y6½½+]ù¶“‰ù"´¨´ ‚ámX Ñ”ÓÌ z g±êÒvçP*œF§v'W|uÒ¤3|kl¹íÇItJö.óµvçÉïê92•å°j±˜Â(º?o´% ¡òíÏ,ü{gh5K•—U8òYÓ>º-Ï9—2c¾ŒÞî‡ þsjrmkr]Z“²ªTð¸ívÍüÕhp]jÓ‚…•ÊZU¬”téTdAí%’.p}þ’œÃøñŽm:–.NÙµ¾:M.K/N[Þ^>qëvË“P–uÊÌ:yQ·›5+ӱ¬#4}•?$åoÂ$sr{TÊþ«÷6:sï[;ÿæþÏöm›‚³PA̽Ï3ê“ð^E&®Ð4ÙõtsvµÐyI~€þàŠ·4×ezemaŒœ¨Á™Ó“á³ ~)l=(Ð?ÿî0³9¯úìns4¢ÃÅ+"£HKý:³GL N w5k‘ ©Ì¢¦=ö˜¾-#)iêQ›'ä[ÃŽ1,+MÃKåðævˆ®‚æ ÑùO,J”{´$™¾Š®³ܬޒG -– ù;·Â2øÈœ"U—D誤≙S” ¨‘IÝ3—Aú\åÜx¨X¡Û|$=[\DÆÇ…¾´½l8* u5ÊÈG¹«œâcc—3Æå+D‹dž­“Bwl—õʺ*Oÿ<Q´<#3—Z‘KÛµ mÒ½/©°4¬C¥ôK–’cŠÇ’r]-C›—ßæ ÿüž'Þîþɇб0™˜¦Kœ_ç–˜f¼ˆ$gJlÅt¼Ô>‡´ŽI}´h½Ý#*¦7¾‡æZcsý/Í·o»~݈jzÓ ˆÞoÄ>üðçð¾í´›ßWå}ó^yÄ=4H$¿éúÓŸQÃu/`÷cßTáh˜õfx *ÛX„5¨…YoÚõaèÁê’Ø9ÏEÙ§=ª•¸M¦Dø͹eîËFéÐA‘s£L[†#ûmÃÆð6@+Û=ž…ioúz'K‡;'§îBóqº,éä‰Êãn‡_wí;/#4f)ï–‹m~CÙ³9`vKœ{íIï¼å@Z°­Ÿ«Ä²ÉÆßYžeîÞÙg:Œzl½#ÓQ¿#*›ºIã3´ü^u#&ù-–Oj§[[""ܬYÂyºÛ¡} X» 2:IŠát?Z^䨸5ž }ßæ}ÿÿ}æH–4´™S¢vk%ÂùGß"Ác~CË åùEVrî™ïóZ%#*¶!‹=UŠ›öU;O = þcÿøxo·4Ý`ØJÇcÆh@Q¡î²Ã鹈ÉËKK (J˜¹Z#*m56‹Û}ÛÛëaj>4ªWÖ™¿õSßUoüîøÇ®ö›Úd3öNýûkDp5¢—Asàã+3yì#4ÉînØþ¥²ëåË+†f¤)ägäÒäÑÇ”@ù«èÏëºÉ£xò8§Û7/ùcšÝẸàÃ-¤§ü^ži.³tß›aîÑpi$¯é®>áë¤a3Lõ"Q´Ê»ÝŽyu/ƾ6ÂuÓ>ȬnÌlæÖù»:+>‚ÔtŒ;•GD¬Å@ìF™bÝΛíC|›¡ˆ.i„uô=ÞdmƒëôîÝpÜu#4ÌE„§<CP°¦—ÈUhñ õûÌW­± ±Sb¯N¥#4 Fïå“ÅQ“Ù¥7¨x.1†lJ']à^O\ž¯é!M ³ÂèŸf~s'¶¹¨B|¡–NdO÷#4¥ÁØ>ýGë`û Ýzyá¸ï·^îyõšÐ5}òR3gµJ`BÜkî\<6ãœøW‰œ6a©›BÆ©Y?cj“%!õ±.=£í<ñµ¢…ô|‘¹ï|ù9±q¡e“ÿ„–M>GË„>êfÉ{é®­†3<%ϬôWœ¾#4³h]À†Æ×kØŒ¥R6›#Ûåéµ_Zë#)¶P×/Ûþó­–NÑm€#)Å•øŒ÷:R¨pjŪ¡#*㣔º²Yx“´¾Ö°"”æZÞ¸j«TE  }?K|zÅ8úœŒFi¦ mÖý×o÷öѽnQ'̉;G¢kTJÍö¸ÄGâ;/÷UEÇ^^:ØŸÖ#*%j‡”;s©!³p}Ð=ï®BKRµ#¯äT~•Êú9×·¡æè~Ý&žJö 4ƒÃ¥ËAÓ¾ô³–­¥­7Ü¡^ÎÝjKwH#* †kª><ÿ§‘ †ÕÕèD4â=©Lª5DÙµ€„-b#4ó)–0h“[–\õ¼îÆ\µ Ô-ó4ù<MÝÉ°¥,˜€»ûGZ¬R£~An¯æÇ$îKø­D+jÑBDì¢ÕuD+¨RŠýÝ<·‡cÅR7,„åÖçÿ”Y«äLžÓós1#*÷Ä‚šß&À»Wëj4•ú¡q7å«Ñútæ ðU‚¶ÙQ š{!i”š©‘悱|Z*xèk@Þ¦Õåðì%†Eû£¼‰‘Š2ìú`8¾¡Êyü;¶#žE‘vICe“™ÊWëüßÙþÐÎn~üÿï¾}’ÇÿyúÝ·_íÿ¿üù¥#*ïë0çYùË–¬öf~ßvrzœÊþãuŽÜØÐÆs^Ÿ‰¤ð tt/l‹°áÙí#4¼Ûi¨a…¶Os¸=*¦ê£×r›uò—>ÚȘ–Æÿ0ž›á¤ûŒûÀ=ëÿñ·6rëÿé·]ÿ_Âú÷Á?ÊÀÊÀAŠ¾@ÐÊÄ’IÔ2Ìá–õaþ=Ÿ=~„·^òꇗkkÈÅ!4#ü‚k±ñ#*ß% ÛK€I›¨vo†á³~džz´€ù›Î ©XåïuFºƒOà ÀŽ¦Ü÷fªÈªÏav±ù³ú¾L‹¥4YÈEH‹‹µ¤’&~ Nâm7²‚ïù°#*ĤÈn§‘c¦(ôÎ<ÊÑ0Ëzxý²û yìÖD¶>áXÇ7l]›–™ã ¾”~Õ&-—/´ÄkA9nŽÐ>j0¹ù}FWõUK:dÎ-Mù—_Ùîv}èfü’}\o»a´"ì»-·‡˜æ´ÄM¥BíC{< `OËXPKA#4åÛóJ±:j;ʃC®ÚŸêÀ9:VšÍeVyLÚY:"„ˆšÊ–"K`è{Ilu¿l‘cš×˜uØ|¯_[Œ#i£Q!𠹉 E‚â2‹_ìD&¦T? Zö&9³Òh”©´šJjbgiÐô€|#<Mô»8wK'¦™a-ìn÷ï±­p¾ó f8¢ig‰­Ýº§#”©¡5õ)%Ã妅´©ÖM*Äâ¦Ú’DP`¸qÅà ¯õè_%€I4V³f¸Zh5cz¯—êŠÖ¼,d3/Ó$8°‹¥N³/þÎãÿúÓö€ÿº¹¹ùÝWü×/ÿÕ¿Ý•"²i\8_F ³V‰gák¡,$ë„#4»Ès¨M‘¤¹"/Ùå*!äŒÀ)E¼ÚÞÝ?!×â~ÏPãKŒmJ,e?^ÓnâÙ¬Ð#ècŠW:€*í|Ö³`}XûvcÔίÊÇû‡ÿ¾ÜJ'²ñ$ÿêÇ÷¿ÿóß±ûßÿ½ù]ÿ{óÉ×ûÿ³ÿë­Žr÷9ŒS 8‹Iê,10)K-Á—ÿ&ÅÔõÒ‘¤Óº‚øHÑ[ž¤#WA>òêȃØ©}ŸBÕûúΕì äo ÿâ÷Ž5ñà1‰@i-Lø–ÿÂ`¾%?)ñŽ‡ˆÂ!#45ÅÃ/ê\ÈF¢†mj¦+üÌ:íAbG¸ŽŸ¦ýæÔ©sŒt,ÑêZqí,Vº®²•¬VÔÚ#)˜o˜^º¿m€[6:ßÜ~ºöÃ¥4¡ò“ŸWåTù$—ä,΢2†z§NgLÅAN.ksk~ ãÀ*Cf8h¸ÄÖ°Á$.Ó~"]°¯GïàùBÀÏ*ú_èþ·ñ$ÿ{òø»¯þ¿¿ û_…ÿ§Ùìý?ÍfîÚ2›Uº€By7»#)A¡`…¨Ù¬Ê#*”8Çý8?PPµÏä Š^%ž  bŽ'(ˆ-sÁ_½C|áûÿE§…×ï¼ÿ?~ôx£°ÿ?úêÿïKyÿ…+GëdïÅÞëdee¥öÃÖÿýµ®<k¾Íü5‚ ä×?ÁßH€ßfkôöÝZ+ú¡ñýJجÕ×~ˆj?$•ðY3˜ž£H” sfk¿Âúõ æÚþáÙÉþáéþNôomET<”DD_í–…àW@÷ø}|r´³·ûêd/ú#*åŒST ×F±¶ƒbÜ'»Ùi–ê¶Á.A©¶ö’BfaÆíAk7€t\c=L£5Û‚zô&­–ÁKg¤/§ìia¶ø“á¥Õ7+z7HÌ.…Žµn:Ê©Ò.Mf6¸D#*QzXƒ|BZ/¿ •™Óa„ãŠ4U!/?ò`€A¥B;cìY¨7z±Å{dj°oŒ‘vÇjàÞÔùåk“ )7”;'7Öj^n¨ëœÜØ’òÜ,*¨aåb,Q3A ¦—Ý\ÏQo¿k÷&°èبû‡Q¶t+¥‹©œ„òÖ†³cêM`Z ºR}ù…ùµ@;¤Æ°ß>Æar#ÌΤ‚½›d¾š)ëiï¨öÏ1M4îQ“wÇßV³•Õ™RØ÷€ó#)TôܳԱŠ:,¬ßN<øM¢nÆ­Òøë†La´ŒòÀ–a–”Àà`ºAN#*Ú’² ×JWK2P¤²@4³£mžÂ¥åŽª bëWɯœÙÀÿáé<Å=ßÌ?8ŸÿÛ¾ïi^ÿïéWÿÏ_ÿ7Ìâ쪟Îâì.[@ã7öü{åP¹ªéA<‡ÅG¬¸r¯Î!.€þ°s-Úm“+äBp<€@àFNwNöÏZg{/ÑÚYBèÉÕw_d•š³é¹X€Ä¶°sÓ#*H£1ô)‚þ#*§P“Á•]Hñ)@C‹à²{¾µü'Nßá+Œƒp½=¾ÌÂf°@Ä2ŽCûèñ2Û6A€+³Þi÷ûXV 8üèúc•¼yŒ¡JWi¿Ÿ(#J‹Þ4¢e¨n=!hŽ–‘9-B»jº}`Žò‡Î­ëôŽDP–÷tá±{‡è¢Gtî<#4Îo°Þ”ÊLªüß`êy+ço†r8­rÒÊ:ãÞhb``(mo#)³pŒ¾Ö¤‚‘¯‘Ï^Vchû¡“ôÅ3)[ãÈyÕÎ\ 6ý¿k¶M"ázÁMO°AYi)‡#*mO1šü0Ä9ß Zb^/­YÌÄWð[† ˜ÕÜÐЋÂÅ×L‰ÅXI·ˆ²–ÊIÌ‚"D÷R5Ž)9Tˆ*5ô£ž=k@ƒ×̇„3â"-`ô¤år*+L§=©d¢ûý#)!¡`àÍé-ˆÕ€O‡í;iÉuÊ‚:‚ÜùÁbHÙÞÕjé65§4Af~ÿ{¸vßFгŒœý\Ñš "MÜkÄ/=9Y€²ZX¬·n©Þ&·¥éÆu3q‘¢»»v›_pmQGKÒ[†¥ÀLyü[³}Þì*ÇR)‹vB‡äabî]{œ­t±aTn‰UMî²9Ê;©°½`4Ožb"_°ô¢}@´ùˆ¬®j.>šÁ‡ðü”å,@ïbqP[#)v—º›kÄ] j¯g=mz[\˜“$çXsÁÕ½‡ :*,ÕΤd¹ZÇVT#*2®:$f‹G¯NkL+Ñ#ÃPV3#½¬EÆ ai2¸pd¼dܧ•Ÿ$Ö¾Á'³ûæ`íçO¶OÞ´,M• ,ÚŽÚÜdUL‡ß‰`—plF1Ÿ·8Ì! ¢¡–¶B¸þNû‘-M¦#,F¹ÍY™NP±|…¢|»ì©ÎoͲ)Ù|³l/cÒ€,MŸ2.•O¦^È,%V ´*µIE$|”¶A†uý–h§M¶›Ó hÞc?¯6ÀÂ8#*†ì× ”ö¿äÜk¯VT]ñì“/U&N4Ã)VÖ„* UñêròêÐVÅóxE{v7,än@ÎC/·î5Z¾N±6MtOWvúi{ܺh³vn‰UDò®îfn46›NÓ÷_‡‹¦•õ.gcÚ>§)Â¥4PïÂ[´ÚiŸm¡7ºÅn±ÔôN9K;I•/:‰GÎβÛ8±y¹½¢„ŠÞ)¨!æºÅÔ„n¡ÂÁpšUk`¤z©¬¿4í°Í¦¬r膗,ëÑM;ñŸŽÙÔoˆ÷L‹îÎeç·0¶DÉ]WW߇|Q#*·ø–—v¦\jqˆÚ–Åpµ3?‚I|Ėu…ØÑ[ðÏU6Þô“ª\ qZ ʲ…;y7¶ô¢¦²Çª‘8Í"07/‘óiěԭpø³ôÙ&/x#4ë#*.†µð ]£ñm›€r±à Ü£Úƒ–8ÚHYN‡Qf.×ǼG7æ¢;MÕ3;ס٤›ŽÇ%d÷÷0u´*"Ëní|i_ZªqV!%¤G‡Óv‡°¶µÈ=”l œ&I­jÌb¢Æ³G$ö ³:œÔÛM{c.Î0‹åûCá°æspé¢7€›sZ²ãöBösa¶g#uÐ;ó¼æqœk óˆ‚Ï1…¥:¾«Á.iܲj‡Þé2¨8²ûšc£Ñ¸7@[3iCO ¸¾ÐnJhÏ4NÚýKÉkàOY ]­ä²w“ý[x¼8ÙÛÃ’#4dÁäªEáÜ_í>\톫5*eHÇôÛ`›×`ÜËÇŽ‹Ò¢ûŽE%ª(3 aÃEE­ÐÝ*µ(Ù? OövóUÅxWÕ­dEM9¶zu¥Y´‘|ÔØέ†®ÅMvÉ—'qa)ïz™}6 yµl­f„ª9D0­A#4÷ $ g#)U-$qk(ÈÙ($K)ax‘„–SÂCŸí]j>Ý€nTjfè[¢1L æ>Ú B€3ÄšŒ§©³ê£3HÌúö`êÃd#4pŸ $/Yí9ö0*+þ§”ÙJŠrü_iYÄ]­3wµxyχãNp.U&JqáX Ú—mÿJgÞ»IMUJ8¹Ò:ÙKŽW|M˜¦MË;™ŠÏ W§)I1¿×Q¨ dž¥³öÍο[d²rÛî_ŽÆk}ìz×qݱ +jÅ´p:€)˜ÄåÍ@…¯[eÑþÝ!AŒ¼GVÞ9 0ZŽno”‹ÜÐ×WÄ|ÿCØ€wŸßhþûߣǟô7¾Úÿ|AïÀõ« ‚˜·rpÐ ^à!уÄóžï})¤vÑ#^wšä÷§îlŸž#4èÚß·ÞfcÄ®8=zu²ƒÊZIøàÁÃuBêXþûö‰#*Û‰›µ .]†Ë£éy¿× X®C˜÷ËKˆ"øs;ìuƒèïÚ)íïfÐ_ÞF˜ri‡MD{çeÆ¥†Quà7/'WÁ÷Á&§Z:½Ë&é#*B:Ô‰¡êj+/åq rLir%ú«NŠ¯„ß}Ga˜ÝgR8”I@åÖ¡·Q&Œ…"Ê?%:è³ ¨Q’Ãáä9ªì‘#) ÙåtN•Ê³”TlÓÖ‹«3˜öû¢Ól`šË–±ŸÝkê‚ø‰üHYìm„¯oè,YL‘Bþ³=&Í¡0Œi( ]94„üU‡Ïq§ÛÓOÈѺa$Ì’÷L #AÌ*0’˜ËCà@ýðÄ!åਗGHÂîÍo^ÀSÂU×½žähH© /ª³šúÖo®á_ëÇS2ðÜuôê ý™H…vH)h°X´ü5ÇŒ¦ur)]ìw†,tÏyB¢¨\Ï‘ÿÕ0µ9/ê¼ `´wä_Ú¹¡Í#[bWyè³wêmÛ±ù#4ð•@Y‘ý»ö‘i[ÍÚãèò0s¨šüºäÜV">,¾/I!¦äÍ‹!ѵÃ~cÍᬩmØÍ‹xf.éL&’Û´ÿFà–F(špýnÒ¨èC‰Î‚"j/w[¹£^OJýÐÅ·¡Æ {ƒ'žóõiæ\q ÆqIR×Mëm:ûÈ^cÜÊٌۮ÷ÌKRdÝdóªrX·æÚÜh~¢ÿÜqƒk1~Ë^绉ķ³ûBÞë×ÑyÉödàw°5æ§ä"ê]ÝDêWÈxsnǪ£xÂ"½+9õåñŽDø™vûTIÑ„+#)¯B‚¨’ùT9Oª<&Ñ(ê¹£°o퉥_ës[ŠI’I/úUÕÕ¯$’sª,ÒÒ{36æ2d#4+ÞÙy›$ÞÓ°î®ñ=Uì”…8 œ þ#4Ä/ ×óÞç8Xê\£%øCÈN~b )×M{лH•<Œ™`Ë< boñДPÍbHP9Á‹šSä?SÂ|VCR©MwN>ûô¬*µÀi)©ƒ,çËÔœaYþc<Ÿû·8@ ÓµXˆä¸âI˜Ï7aTÚ›†R¾'çú4™¼#*r˜˜¿ƒùN3.´LãuÐõ—­›é+:è*=#)ʤD_1ˆ§¶ïM]ë2¥v :̬“\‡ÙU•ë3åhÒ$qdMHÙœrþ9×3¶¦g&²oË©¡ËÂ(3¿å¯]ÖV&¼¾£» •ÔžsË|Fò­fø¸ŠŸ&’È‹Ø9ÙCeWÛÅ%[·;ƒr¡"åΫè¾mÔnk’ß¿(†ÄÛtœ›˜útÔÅg>ጥ×ßQ RôŒ@ïÝ-¸““› ó:-–=øJ4àò¿6 Õá+ˆaôæVXüúß#*ƒÄÔª#)㙲‰¥–ýk:„½íŽ!µg…„bÎaZç6×Úßsj.üå!…ÀLFL ;¡?88,™ýÂßËG—á÷H_½NE$úYPŸCõö`ÒºìÏk,GŠÙ!‹Ó#¼mb“ôº5íÛ ¥0M¥–g…(RãrW¿åœ´À¤#4ã­RáÇŒ.ì…ýñàÕ^~\&„3Ëù!ЋaÚ ¼ ß,Cà¡6W+…ƒfðiÊåwò™Œq¸5í©hºQó­#4ø…;B«瞾󢌢ê%ßÙµŸr¸àß'¤[ËÚÃøQùÄÞÜmzÚómã­#Aͽ¦—ŸÁš¨áf®[Iª?ÝK¦Ìžj•²re­‚ߓ☙z°—FZ6»u+ò8OêV¤¢ž8¥«åPÏb®²Ý¹"Z¹›ZwØ©öð>žöÍmB¸RÉb›\-3cÂtˆ;iã¼»–ÈAÞ֨ݹn_¦INV’¤”YóòÖ•ÁS¸Sº”+É¡7ì—2•IÙrØ86±Ö>öV³-¯­?ƒßÌFxÿN ²Å\h¾ŠEÕ<«]Dš‡øÊŸ§šÿvå*†å–Îå¨KMÝåt´ÄIeie‘µDëJ»Ð2Úî2·p)nÖy×p“«Ai¸ºÎÛøÈ#¿²Âi¼hÖþog¬jh}æàn,›’?±™Wþy{÷h‡6#•°®Ý£ª1Î)8ú™µøO:¹$•ZŒög±é¹,»,ÌGWTÑ-S>åJÔ”šåût]«#*k°?¼Ä“‰4æÞuc±xÁÉRjü¯i¸ìÊ­Y™Uw¢ÚœÃ(·Ÿ[“¢ßm£öLK°Î-·ÅR ÁŠüÍ2c½Ô{ÄŒ´~:z¹§¹"#*¾ê#*Ïå’_–#ÑŒC„ƒ‹šk6§–ºÙ„ÂÛ”QP|¤Í™s³«†{Ûa ¤Íà#4ƒwD>ÙW€­;±uüYI˵0ϯ«ËÖ´'#*]l]uøâŽUîeÁ8%Æ.Mó›6áæS“ì‰<:À)a?äi±%GË”©é{6Ê/8Äp ¾ï4~!¦®!#4rßä«ï`êÐ\Ç1Šùyñ]ûbÝ„ °M®’ùŽÉl/nUí´kÅ´ù·4¿nÖŒ¬œœŸØ Ò¨o&ã4­©ŠÆ‚ÑyùIQÅE˾’±·*4#*Ræ‡ù(.¾Å[IzAïÛ¬“µÆBÄ›¢ÉkÔÓñ|ñ­án>RÛ8gÝ›W<|`k]A¦þÆ ¯ñ$ôžˆ¯Â¤2ì•NiŠ>"Ü¥çB7»,ÜC´À€GNé‹3xÐÔ‹Ì¢¦YT¶¶CXk„¼êG#4[Þ¹bœmçEã¢7†#ªvÙéÄÁåÚZÔë‘Z¾–žÝÏò³tØHzʃ«oFJAêœp² î¶ýÓð&MŠTáÒ#*[O¼8g£8YKS¯…ÅO¬ÔoÚ°Ÿàj&¡åÇѪ×þÄ]]NN·Øµ¶;L3¹âAk'Ãà¡d&è3vê>)4_$…kQ#*FöW]˜‹õ+*pÐÙíém4o—ç^S?²‡ÊË~ðÏÛ›z-þÚí÷%‡¸4Üðw#4 Ç#*3†Í9Ô#*Q„SÙb&Þ˜ÅwúMíçÓÖIìŸG¶yâû1I XPçY7ôÜ»äžÀ,Üm »ý‹° ”W¯®*t+ïØ…Ö`×_‹5S`È`¸bv@,a?mÿ¼×úûá~ë'rx ‰noèÝØ:7–!Žå=ô<“k&²YþÒÂPOô$¶ V<˜óA[îBÅ8ž#* ^Ø\ôm³Uø®:ìŽQ¸*}ðU1´\ÿQ}~ø×{ñßKðÿ=yòUÿóKÃgYóÈ°#4›)DØ[{,ËÕIÊ XwPÆÛ!_jVöMÞ6Õ¶ÓAND6 oÉÞ»VéàÅžl§ÓeU€ÉêÐMÀÌ <-®S…P ©]s³<,lY³™6a¢“4ƒ¿­£Iô·Ž®¯½{¬3ؽûJ(¯°HëŽj΃%Ó„ 9/¾*1ÐÎCà®29ô]€Ëz &]¥Ó˜ê:åö)‡ýÒׯb¡pÕ!îÇîœ|½Ž"ïâXß–¢œWh4t?Û;9LB¡ÍçsÒl:öÁŒL)F½ÎãGØÍ»Çû;Ü%î×É_p¤ reÀÇjVφa1ïDòšjZ#4“#4íû‹³<h±‚!Ϊ`ˆ¿#*ÿ÷á¿?nÝÏÊÜwþ?ÝÈÛ<ÝxòÿíKÁÿ­„mC«Îå®v⪖^vñ”ê¢Ý[Øïvý>>K»s=–vÿh¥ÝßÓ[i÷w÷Uºûç©T£7¸Ž¹ÏYéîb®Jw«•îþánJw?““Òîos?Ú]Àùhw1×£»éx4̯¹ð¿Ðí¨þ·DZòy%#)óÏ8ýŸîÿO67¾žÿÿûïÿ­ÖÅ5XZ-sòÓS^[R¦++ÑqÊ@±eìÂx Ç#4ëU róULGO\gži¨‡-+º5 ˆ~Ù~ÞÚ9:|¾ÿ¢õl#4¼‚®Âe¸ÍþcïÍiŠõ:½ ÑÙŠ¼”CO÷[{/ÏÞ´ŽOŽ^œl¿$‹ÏÞ`ÂÖœø£=¾ìÄAç#4fëƒÖª³†&ŸÆý5°¿oÿj_\6þ*V/·wNŽZgG-”-3Õj‘›úV+܇õ1„½8|E!èZ¿ŸÓôÇÓ]#43Âh ?L'&xNLèÑ(˜`„Ç1á(Àد÷øÍ~íÙ½=Å_öà³7îÑçöþkøjóGkçÍ‹_ö‰dçî!ë0ôåé›Ó\Ø+HSù„¯§ßÂ7åI#)üP­½ÃŸ÷OŽ_îžÁå~§utÚzÝúyïätÿè°õ#4=Ùû?¯öOö¸A˜—ϸüÓÑáæ]$çÿ9|MAÿpëp¤Ý+ØïÁ|çîlwúáÀZ;ǯhÈfÿó´õô[JÇ?‰Hû¦[ ì=†ßÆmIÔkÓ÷Mo”Ñ7þàaµÇ#4¢_L»?ºjSýâ0ôb Ää7…O®¦7çJ¿8íø†ÓodèGLPÈhø.¸\ùÍá%a°¼nSž³ü“[òô®¹%ðƒ[òø/œŒ~Ù0Ä!Wü}E_ä’ëÆ?Ãøƒ’¬‘“ PÐK;)"ëgÒg!ÎâÑAZ,~X àú{3ûþÀ‰©q¢&(N¢c­Eã# ú¹Ž‰â#+©a†o߆ôÔñ]ƒàÀ„G¨Äûö­KˆbéÌàŸá¿\ÎKÿr’ú»«p5£6¶ y)£ïL9ƒ‹-Y 5ÅÌò죻Šµ{Ú£!\Þ¶ûF›-g¶šµÈJSqþˆRÛüÓ*æu¬š‚žeq!¸>3TôrÎ0 9³ÆÖ#TnâÏG[MV{…”_¢›gúùp?Ôê³C‚L½%ªx(mNÃx8±ÈL²ÇtÈTy»ÌMÉ#*,±è$C’ÈŠÄÑ+’»PËšç¸, o²ÛNH ‚TûÝ0Z´úp=aimIåû‹uÂh ã, I¸ö.jzÕÐܧ_¡GaS4g,–{ð å²ѽeS2;rÅ#4øv%Ç–ôçg+qW¸QV .mÕ+*²žMºI®vŽÀ~±¶†ÛÀŒºdFåzyVAz-Œä®SsÎq¸~mü;êuä{O¾S©‰7ge³WZÑv¨«‚Ã}1nߤï†ãëpË­)ëv5T«¦ªwž»#4鬬ùOËÜ/ß Æ¤Z‰M7!'¡kÕ‰µ¤•¢ë}„Z‚LZ=ND'Öýsbjñ®EI®ÒLOçg³6QYÎÍͲV›§ÓnóÍz”¼‘Ê1”ËhžQlN ³Ê\Q_=ÓÆ&;ª9ø3ª|¦hbÿ†æ"þ£á?—0:3=Ëêz>Eøí®biáÐk| Ai‚P_–í¾Š.¨YI4$ÜËî2¼ÆÊ¿ùp)ÔD:hWÝ5u¨#§‡Uð/)ãàüéXì«LÙŠŽ[øjÀ çÝ#)y127šéP²¹$‡Ú—âvâS) iù¦wýn+gº‚gãñ?^ð]Εë;]_®óO|‡Ú¤Ðrý®Á%4“"M`9€kOÂrÒJLȼär­¢µZx3ìÂDçTX%ó›„ MÙTëgä˜ÄJ+µ;“þ]#)l"Š¶*‹ŒWéÖI)ÁÍ4›ˆ–—Ó’váRwÝ}M¡>ÄÁ|ÍÄ躎 Lž%4š˜£šrS&X¡“æ–¶:6¥0}•¹©gZu~`!ypyš®W†×¶_Œ~biå0;§êw)¾ …t<öºSJX¡EÓ’2,Òé¬AUÙKRªæÇs]èE5“’JG,GBÇ4ñIÜ\ÃU~~a O•¬V,Y‰¤?ºÒ¾Y†?vÉ!Zæßq´pk*_Zo·±Þ­¿‘Ò\Yqç  Ý?”u͘ëwôø„[‘l[G64q-²d]‡hMøˆoJ#*Ü»ŒèŠÕâi¤ótÅÊQ:ÁÈ°µv`¡¸"¦¢¨6ÙîKo…ñ¦2““T™ãM‡×í#)%—;£1‚7¼â(Ä+«Y²¹²ª¨G~Íð¹€FFœ³èºa©¬ÍdsÑõ‡šÜ¤ÅÞ@,SN¿nÓ¯KúÄÔzÎfgíi<}£k:)'&«Ý”V ck¨rÅù¥Þ´%Õ™‘U Fm|v©˜#*N,ûã\˜(±¤Sf›6'ÛZ­±Î?æJÌ° 8{hÎj8†‹ž™Þ læ¹ÌXPï?ðs#*:¥žm0—öŒ£LnÍ”J]7¥ÂðÑÖ„@äD#4¦žúŠç`èq¡/ÛqøU²°³/îo(^È@.Œ€Ø°u˜ó™‰(áÈÑOL‚qËÕfkþþȵ4-UU½%'¦}´dL/cEÉ~ºHØjk¬[ìoLÎÞƒÚýâüÄjãô´®Ý–NÇ%bÄŒ §d¸åT䄈œ­@yjáŒ#*¬CÞLÍ-2µù‰©„¸¤Øònò…ƒüG¤mvgÇ/º,*y³ {¤<¸¶î¨^ÑgÝØüÚ¾´[¦‡ép‡ðq#/붇ìaFéäec|mGûžeçÙ³½vmé†Ù‰Ã7{G¿„¦&XþÞ…`‡mZŒy:N·ÈP%r–XgW©}Àægd|.ðØÛ¯Þ,!¬d6í 15lnä[–ß½†±Y}êúXöFäTO›ñÅ‘e…t %判ÔïÖ1·u%NRÙmAö`’lÜ!°…‘T™1’Œl ¥v9rˆkò–%&Þ@—´ºˆfÂ¥ÞžÌëøuLKŸsêÍ6“òa|M Ö`6qBZdÊ|Y•¢–‚1}J’gohÿô}’¬¬æ›Tv=Ô Ù…•0LîFr8ÅáE/…á0ÓaWó·a¶è±_F_ùéÛ胘ŠÑ#4`ÿ|r„Ú÷™ÜLìow]€ýÄ¿+@€ºpvÓqï–|$ðf- l~«°àßYìðz´mb`âQãU×Y)2eg¿flÆÈCÕ™ÍD R 1JLëlYµØ_µí ³¶¦ô‹œ!e˜W¯ñ‰í”Òª¤ä÷ úêNK»c\WPk#4`Ÿöü7=JøA8ù%©Œ$Ü!ùžråPoIõpnúÕ¢L&#4—¶8š¡L}d¨Š‘"®¤`ïwdÁg«ç¶€¤Q¬nìªT¸UÏÏÙt›p.q‘›p‘ųPéà¹í‰÷¥z'\«ÕJºû±DÃÑ(V+4^º‡ÆAw·3‘= ߣc\»åjÎÞ¼ÔMå©3õÀFø'Q¾_Íž!Š„2´MÇ,‡,°’ðÜåõâݵ½ŸåÒ4?åJ-ô#4Wg;}¦{díCdÌ®fõ+`Í$,#*°¦ÉÍ@.­îpÒº2ÀQHþkl­ÓóqŠ&½îIáZ{=œdÔ×@±¹\-í±}Å.D¸¶fjÚWÛ"j),,µèŠ¥²r™B`î…^;/Y …ÙÄ/Ë9–‰b«Ý&¶8…TÜӛфœ0¹ó2qÓ…Eõ”O™<ýÏ+té³é'ô;Ê‘?­¿!ç¸=¾³Ž”šŸ* £Ì®P1²·øĪɻ`¾†Lò“ë(Ù½Z„¾$ËåÜ–Ù5™l‚æÇ6‰Ù ¥MB—¹pÈË;Cq»ƒ—+Þ0ð,lÄ\°µU¬NÒÂKCñL3ÞÛ#4Úíš"WÚÄjÉpÆDMÛVBK¼©àº‹­/k¾IK®£r§™ lšg3ÚBUxñµR v@†®õÌkyS³Û$úPû$±t™@¨ZàÝ)á¯h¾•m5#4|¢!úsÍ\¶NÉÒÓÓ;; TšÑæ\s”<ëM#4W##45çC³$._'¼Œà•Ä @‘³2¡ÅÞµk‰m¿I@Et¹ÓÕ\@£­ÂÔ‡Ë÷SƦT á*x4ïlÜ‹¯@ŠÂ}t¶ãu†RPšRÚÃqyE/kI¥“ò‰+a¶ib#i4žôøH#ÆæN¸¤É{Drp“.UÍïF²ҀùÉŠqCчJ¿O;¨øò]Hv®ú¯XeÆp¥Bæ*ìürß+†¯”Ã+jôT“¸[øpBùcÓLù<8²h? œ„+«ÙJ¸êÊ¡8—ŸS¡O7—„- øU×S™$ãäžç×ú‚Þ™Ñ)Ë]1ïI\èݪîœßm¿½æ¥]“ëÇhÁ—•Ä«ƒn2n©‹<ŠÑ Š¨,4¿sex1þ´qÝW‘:?‹æðë¶K¦ÐÔ/*aTúÅ}/ÇJ|—n<‹˜ê ¥‚‘»ÏÑÒ!î“ß¡H£‡ú翅祭»à¿ˆ{Ž(ýš”¸7š`Rr=вbûYr]ï£v®õ‘ Åa½t½¶øÈ-ˆË¡ 'Uœ}ß'öfáô§ ¹#4•¤n5SF©¨»hD¦|ºl›´9#4Ÿ!Å.‘UÛ¦©£ÙµÍ{D©©N#)iUÁß"%g(*ËÆÎsm^æǺÊ1ì8çnb^ZµCyÅKà!}ÚªFDœïä:¿·-Z‚‡÷5¿[B‰ÞÁûaÅI`˜Ye‚È ûÞ"jÞ ì¶`ç8Ù>yÓ åÝ7Å0ú#=gßåJýòúH¡„«fáÄ`’O½0úÏ8ý>ÿo@W”Ö×¼R$x»M›–Þ<,} ØÑä·LçüÜDÅWÊÙ¬°]—¿hïйª@´s?ÍE)¢c˳?&ïBéaÔxk¹ÉÜÒ`ö¬µsôM€NŒÜM&üuê—¦h@MÃâƒ~¨êuY]¯{ë#ËVÚIi•`“Bï¦&¼šm0ÌDaöQìoÕ0t6+úÂYð¦ánªéÝ–§‘fE 9Ò€©¾ÉòRŽ°í±Ûy1ÅF.ë,^¾s¡ýa›ñ™¹¨ƒ&¡Æqtߎm2X#4I¶jZQŽóö  µ0K–\/Ÿ*+_çÚSº‘Álo ÊYDÖfÀC™%˜f¾™¬‰—xp-(14¤™aØžâäÑóYÍ#)+ÈOúOôBÿ5JD0¦/¡Q辦j®‰ôÑ)Í¿£ôÍ[ Ÿglåµ  ×fÉ-Л#*N\£Æ¤¤îÀ&‹ò¸·?H]á+ÈI \½‘ª¢¹ܸ - ù`©dÙNöÖpÖÀ#4mÚšûï*ª¯¯º¦âzÄKXˆÀ¿à–M¿a7‰ªµZqFºBHå"'dà^#4"+a_NÛã.þ˜ GÖÝ7Íxk–÷‰#esŸ0§ÊE)PÛ0//¡•6—Oÿb36¶ Uµò®£†NuP+jN#k°ø €Ûs̨<tQŽœK¤a­¿PÚ^‡œqúv¿FÒƒË4 n ‹Êá#4N rÀô®ÑçiЇkÐ7Áƒ‡oI™Y«ùý©w àûÿÄí3Pþ¶[bû+Š¼Üb^83f¹ò¾rC¨ü…áƒ6®f\ãUWü²VãqBptþQ}^¹|}çù‹Öóýƒ½Ó¸á;Ùq0O)ã W©– ËvÛT~‹Ô~©#Í&õÁ«‹½D‹`Î/›×Ž_ãSë¹Ü:>ÙCËœ2çÜ´â”ËÞ*xdÉ¿Bäfÿö »Ü(‚ñ9ïûç¤)e›ÙR;nÅçÉ5Î÷IÑL¾Þ#)F»™œ—‘ðG¥Ó&„ÄNÊüYh®K’P@i$Whg\¸*ažc¢É NE·@V3úÇÉÅzð:Æ#4_7c¡)‡CÿHïœï+&eþi*ë#4/%©i©Þ#4VV°òv°âÖ‚¾@tÎœuGÐ1™Ä„;ÇÇbŠÔŽDwIÂb2Uš‡v÷YŠ³FX¥æ€ô攨Œ­î)ò`wn;æ¯#4¿[=ä'ƒr|?—Ãu#4;a¾×ÒQ+(¿‹)(N;ø²c¬þ{öW§‡RbÅh"À¸¡Ý—hœG6²xámÞVÒ3ýµ·í8 þWÞ,@ÜßlÄ$)àwQ‚rIk‘’I,†Pê|}uÓI:¾Á¥>!1Ÿ(ÑÃ-ñ!à<;ìt„!ƒÊõ\-lµöÏöZÀ*Œž%mK‰á–—ö] °æQY=Ðq mœ`jâ/_í´Zaôý1:Šºã#4åÝÛ>Rei}§S o¡K8D_FÎÃ^gÔBT¡ûª™§AÑéßµ5#*[?Ÿ˜try› 1:ô! jÃAÿ.ØÁŒQÐñ\]—`°ÒË­`g'´ßþO€˜¯~â Á°R×t´IgÁ´½ä?T™¹è½‘°d"³oø…GD›CÕ@Rl– UÐÈ“jìêωúDz‡WÃÆfÓ>â'ë‹-]³”…5þù´‹òBïvÀ¢ËàÚi´•íÅÍõï¨þ=ÌžÃØ1rd,°mùHm†B.O£×ô°Ûôë#ÒÑÝ>>>ØÃÑå[…•Ÿ0¨¢@c_ß$0„³yÙHÙ3Z¿’iïà¹Íãgùqÿðù˳$†#\öKúeÿð𠳑‡‚,® c„žy¤a=*u_›fÿåñÁþ»û'¹–Øp·¥ò·WB> ÆIt l·Ï©ÝM»³> «&§ªÎÎ'bËÁÙ;¶Î{ƒ‹›I-?,Qå”C” û'B ²åçlH‚[äÆ60ãV®YDˆ)¡1kÂeñ‡Ð©ÓK¥ñÀ5Õ|AÁaÔ4OÑ=>8Ð`-¹n÷צ×s;;Æ 4©AREk²†ý»ÙŒÊWÝÕ#4â°›ö?‡ã’¡ £ªùÉ›±ì#*ŠpµêÀvv›ö1&÷*P]ŒlBŠ¾^îp?SKøñöÙÎO{?Cµ 7´ùÐuŽe™õ <‹Ï“üK™ú~ Ûñ ¬CP!ÅDû°ÚxeÿÇ—Áëƒ`çáÎÛµ·kõÁϵŽ¿§~ö¶û z[§oìrú^‰#eóاÉ8­Ëy^»ác?ªg)B"@²•Ä%®A;ðÄ‚vÊœ¤¬£˜Ðï:!RÒX´<g쨊<pT;ô9¾,ª¸‘×;†Ñª˜Ï|ÙXþüÙQÙta=kWíŒÞÙÒ8ä‰Fšl´ªTT6éå²`¨‰€˜37¨‰jv‘Ö™,.ph}Âekíê¥ 5ý¨9rÉS>aÆ°÷mµl2íö†õ?üú6[‹~¨AàG­ƒSò×Nôkí—áøúôj8‚Ѓ!E?`¢¹³5ÌMÈÂ|tÖ±z.–OÅš‰3y#)J§ ^ÛYk¦ÝÔùÀÕÒ}À1g€1ÈÇ+gtÖ˜(V<•½ŽßàÝ ÁfÖÛÙ:×%4þ<;—“R××­VoЛˆ Oý’¸d“ÖËÓ˜Y¹Fû†žz0·ÚwÇ ‹x”žÍwÆ;[ȯ?yuØz¹Wâ¤Øó|ºÿ¢u¸ Á{—~D^ ±§]“BÌhqz°3R–5Ò¿;C¸ÚÍ&µÉpÔ²þŒÕ¢•>â.ä¢Ejì»;¦·ñögAA4T“/‚J%¤t†Ÿ°Ï]Ò`áã5ý–ˆ›iÒã—eœ+”˜eSj¶¶Â/Tš‡5áY\!|"¯Y{=2¹npÒfŒ5Á#)Q-Î.I4&mÁÚ/Åz7*Nq(2ÇBpQª!¨4€šwaSkCg6—We£W%îc{K~CGôQQÄ„#*ºÝï›4EBóªUåþI¦Û¦8#)eÆnš¹ÕéE±%–è/ÛA#‚ø”èW¨jõ‡k¥¡‘C"·äDƒ,2ê­¢ôˆ‹2I¨N‡Gg-XuÚƒµ´MZAŸ¹ú}Â{ªH”_}ªß0ÕÓW;;{§§•Tmsód0„™’/Á©×ÞGÇÌETÝ:/Nöö½íßõ`¹JžÖ¾Óó~?QŸ|µ›SÃþÉÂU¼ã_GVL«ÙGq‘vGÕè¨äR—©bÜ£AÁgȨ=®#*Ïÿ™ŠÅ_áôP:¡×i:²hfb¦n\IJà_ÐÐ\=sŸ·Ç¨î Æ…x;Š²°/HÙtij.÷ßGüz!#Ch¬”5²Ã£¥ßoqG›m€¶Ë›‘«'Èo+(]åÑ@ft;ä7þš¡2µño#”7l¢Y9ˆ[TTBêG²Ö=†ÌhÂ%@’>$ý¶'J1™ìåtM¥Ûô¦Å5Ôåè!õ(V{½ì½®6Ñtmkm&Ä6›ÉLã¸c…s¯`¾~ïL­˜ó’¥¦oÑè—‘Ö ïTQ(Rç:ÄÊ‘^Àñ:Ò‚XGàXüºFîØ-—€{îÍ…jÉ#4a¿C%g¹*a“ ŠÐZØs'£—rÂ`e5XŠÁùG^ÜÇÃî´>JÇ»~ÜÃ,Nû8Ë Þ·õ†ñÏáy&“:·É J‚«„#*¨~#)äð£~ÞCVN!|Ø=›¶1Ö±ñžV‹Ê¦ˆ™–u˜ŒŒQ7®_ô§ìÞ"·!†ëÏÌÙ†û u lP[ã™sÄzÆs¨Â´¢ã,Æ=¿E›«SaõP2fuIiÕli jꆱhÏžìíÊYÁC»’˜~L–£íA@Õ1ÞPÅX1°s•çEöŸ<ÄL”ÑNOxŒØÑê §ƒ nƒÅ>%½> i  ÄXŸºbs¬‰®1hSà–h9çÎUV16ÊÕ«^öÈôTNºT½9„Y ¯C}’U¶°ä¸§Øj®€r`¡ð Áïˆa#)qŒhÕã=\Ú¶ð`åu0á#4׶šO"4G½K¹ö“š¾ÍÉ••DŸ}«u¤l"ë ïºH ©y‡ûÎN©;9âšLSÐWËÒLÝ$¤·kò®®Ö 5ÅùûSú£È;óÏwéúž]f"#4²Ü0ð°Ï+ÚÇØÖÅüøƒíÝ¥ VhýÂÌ÷ÿñopþ¹€ÿ¯Ç›9ÿß>yôô«ÿ/Íÿ§¸ã -}ŽPÔÁ“³˜¤Î/&¥UPÑì]~/ÿMŠa4›†õÎh„ˆ´ý;CõúMÏ­FÕà#4ZÇ›J%œj` µåExصy¢FÉ—ÅȶN’S#*ºÀÅØØÑú τʸfn&sã¡)M#üšÍ|Á²cÀ'áŸßþø!øóûí“t¹…ñÛè—àoy”ÚºñÜÚ?ÜÁŸ”Ñ9òÜ’ŸBš½ƒ~øó{øk‚hg† øë6}®#*z¹D;·*ÀìîŸÒ¾?›À5 ÂêR™Áµ:±Ó£ŽŸ® €¯¹î0þL±T+W”*Z·¦^Åí©RQ÷Ó3'¦·îïOàÅ–“öHj¿#*]ûáRšP#4ùÉÏ«rª|’Kòˆì%=(–‡¡€„ÌèÙîصüœ#49í`Ða[s£B,ƒËÀï±^Ä­¨©eÌ ªYöÕQègôÿÕ=Ÿfÿà¾óóQÞÿ×·OŸ~õÿõEžÿq™pßM.8óŒ£.¹ð×òßüXûH…S›JæãÛ#)Å¢Sz#ǹ;Ì3%¥#*)o?{t6ä …ÒÊmžŠ²Bh¬Ff³Ñ—Uö2 ¡lR5ʪŠvv^»1fžE—`åŠpUB/¥ÚrR5…DlÒ©ï2>ÜV¨Èš¡©`Á0½³i.JH'ßâÈᚦ1‘—ß#4‘ê³µKS#4¶-f®èŸ:+þ·ð• y‚HÈ°€÷ÇW§-:Š_´ÎŽŽPßûùþë„»`nÊ—G»{ ö‘œH…J”š!ÿxðj/ôÎFbSÓQ(éC°¾.#4î%±RcLD·Ý²$XUL ùĚЙ| T&»Jû}~ß¹Ïë·uy€­]—Ö®s—3FE¾ðð«ßîÿêóŸ7ÿÏÎÌ?ÿ¿Åÿòþ?}ûÝ×óÿKðÿ=Ìâì.+ãÄm'¹ð<ÄÞ8õ$6Äøó¸{»÷„ø|Â]ìùät>ǼZ®žAØ¿ vFýi†ÿ-cñãA°²³¼_f.¸8#*{Ýàø®µ?èMzí~ïÿ¥ì²ó¯.ê9>¨«ˆÒ ½{܃.¿_‚ ÊA(Dù5‰L˜­‡ä‰îžž±wR{,»ŸV#4’ û¶±ÙŒûñH<†~ŠDÒ»û§g¯ÎöN[û/D „ñéö²É”^o —xŽ‘:(c2|ò¥ožÉ-†K¼—[rÐ £;až$ù d¦Úï“oŒÄg˜tTÃüæì§#¾ýF|ÅÅhlNENŒ’7‘¢»pÔìA~©xZ&õCaeýÒrLšOêø(×6Ê£?HCN9T v™¾å›oS'‘ÆÇ7Q,ÛgB(2çQ!þÓ0gO.&£0g†Òè¤Fö}BœC¼:;Â{öxÓÖÁ´àñ#fyþ¦e~v Íd¶²=ñÑé_¼!Ž¢³+¿_Ý­„NN'–§žB7;ݼ§Øì ;D“aR {cE<pç]7)ÐÇiŸ}ÌNƽÎubô~|x¡ß\vy)eö™Çovò¾5FwÆ:F¥:*¦êT wîè®+ϾÙô<›|Um…P‰WšÑkœXO®ˆD­@Ô輋íÈÏQ~úô#*y¤îëÂñU¦´D¡éö »iØàÃ#íŸÈ(v‰0‰.þjl­?nr[†çÿL´ÍµµÕVÚè¤÷®Ó†UŠ:ó*Z]§ÿCØϫT •fÜ *§`Ö­ûÔÖC]îVˆrJöžå÷Dˆã{!0÷@ìCø¯d²˜I´Àj0DPW2|‚‘¿ ¨LZ¥X¾VDÕèî^H«Þµæ‘»•; §¶™›eÜ•“Y½ßž:W<\QT¦ÏyÓM…ùlµÚ¥I¸Þ cä â*˜¢8WÁ| ôbSc°ÍB5ð(tûcß•'#i{ëèøì?©Ÿ5—+,,CÚ—¸ Ü[³‡:UŠHe\g2¨ *×Q>ï%ž¤­b j6ùŒ§`µ&+š;~³÷úÌÊä8‰Z¡O{ÊpZ­3Ø¡ç#44°9Û;9tLyÈ(ÆÜ´;Üœb5Ê«B.ªJéV„牮‚öƒQØیƅ¨lC¯õΧ“ÔW%ðø[;eñ݉eîŸj°ã²ÑE`Ð&÷b'ÖŒÑÉSÛ!$üÝB³ÑçöÓ›sRíÒÓƒ>×Ä{ùãÞîâSRç| ÿk¼hq‰ö3æ[PfËË$à-­¹.)e+ ²æÔ±‹óÂæó.fËK""d_ï’&²Á¶]¡²é#4lµ‰©ñS®ŒÆÈÖãnm5‹¢•U䀆Y˺1T¸ƒvÎwÓ~ÀiáËí£Ó׭ݽャ7¨ÉÛ:Û>y±wÆ”Ø v”錣ŠnÀrW4¨B% µb^0†«1×#4.™i¯µ¨Á4í“bÝt0Í°¶Ìý/XáÁZï¢ áÊví>¨ºµöcÝgÖÝ%ObWí=1:ZVðédÆkÒ#)rJ°ôpn…j‘RÌÈý^TŪṓ$+á#4¡ÿ !&}EñD…+¡Š‚¯¨šrz‹:ÑÎq6j½¬Û»4:¤åùHÿ,²Ì¤Þ¹ÃÌåP«0õ³>ª}A_a)Ú×[f")Š)À_`@DRÆø›¡£Ìš§2à?§'†"'c¢l³È¼$h››4Õ¥ ÕAà„1Á%ŒÃ8§Ü&“ÔTÝSs‹Jš/Çnyãg“Ï×t8i?²á¦Ùæ"ŸKç%W´²¡²õuÆC¸÷[1½ Zbfœå”ÛR*ƒ¾jµRÚÃÈP9EaôàÖ…€Z’‚ú`±t8MªRj;-±>0Š¦¡/\ øVèq¡€,h²àQ€">F§¥ä!q‚Dx˜’žðîWg¥n\3ç­ ÓÀôl–ì ¹5¨ ':ì눇Š3ÝN#4ÒˆTã‘d-ØÒ^Ž+Ó™Æ"{À†l½è8JX^·=\ƒ“«ñpzy”‹Æ³å¾Ë#4î$éßØq¢²Õ»Å9c`)˽|toxsé÷ì]ð'õˆ0H¹>¡ýšzEæU–eÕ ´[Kÿ¶õ."²ÀÓ®8Y£x¥¬.6ž•ˆÍƒ¥‹ëà!,h!¸âÃ-+¯ÏÆpÖÊ}ôrÊ[ü"¨%ïæ¢7†Òk—N\®­Å{ö ØÌVºmÚ¦å€/Máþþc«P&Ú%CŒ»óÞ q--Š¸G#)· {B ™q| ãKïêÁéQ`æë™áŸãƒ`ÿpÑߎßàÈÞáö{­ÓŸ¶Oövƒ*¦IŠ!¸k|œ›Õ2—( ¥Š—2ôÿ £"¤$Ú¯‡áŠvasÛtÌåɘ´›´ _a…ÏÝ€ØÅáˆð…ÍTsúµõ[¢Ü…‹ L𨾂=ÇGÒÀ£4a¯÷³ø.BoLøjðÿ€_¼§)ÚƧ§ž.,¬'zºXo±wΕÕ#*¤b¡±DòGóˆËwe@è,©æê^¯3dKœšÏšv]ÈÑ’pZ3þµ9†p,¿NðŠ0˜Þ$a]êUœ¼2ª"jl=jFeê#*ãÇš­Á}ú.#*<ì«™ Y…âL¨„­#à#4^Íntê&k^H­¹9¨ÌJl#*EçvZ/GÎKÞ§QlI'F½-[ZëìVš~t9°)ÎiðÙî*ɪý~cöhã;|õfìBEïºiA#4m0ðïHŽûy'ýœã5˜ø(Rt–ŠsL<ävvíÞž¤‡hâ›-Uè…«Ò†¾£˜„ …n‹ÅS6â³j'‰=¡b²Vd"n"¯˜Â±e/ß<wçÙ{,™9æ7*v¤BQ¼µ‰ã†ï/€'°Ò¯­qÃË(FÎÕõÕ–ÄÆeE{öYGl6ù¼ã…w…FË0^èXam)Wײq¢¤×jîbÔ]?¡ßuŒ»µÌE#4?ØDè'Þ7þÒœši³™=Æí~’æTý¤b˜cfKJëAM€ÎŠ=¡W¨»óaIÙã6Î;qX“mÙÖÔœ÷ÍØÆI¬…7á¼ø¶ç‹[BÜœ@•éUËodfÎç"-®Ž9 ÑÝŸ€5¾ÃµÃßFÊyŠ°¸ð”¦‡H®PW*o(¥G=ŠºM¾¨2ô¼™;bßvÎw¿‰ÛB~CZÍ)“ªž(.*6·.*ÚÊíË6”HÀëvLäþÈÀŠ/ÐîãƒÒfc𧴸ßZ6„ ç:úcº0O'Vö¨˜jSa ógæ§BPýõûv•®{E‡©þ1/¶tPPgqÝaÕ® ³}D¯ÙVg1 WåõÞ"`ÿ¿BàЫ¶©äëú› ö®7xüè÷ï&][¯›T‰`Ô ,ÙL¨ËÞé$N*ÐNÈ1ÆÝ©0åuêŸþ„3=8<: ž½:Üå^±@½¬E½0ÎDÙÉYRÅ×g; „úi\¼W½}¹vcS©7óÂÆ Æ7§Û^» ¸ÌÎÁSÌÞ'a–á5†à(9ìTjÓÈ'l“Qß—%v^®ûIB˜Z[¥#槤pýb0\GÙg²Þî÷ÚˆAà\Vå&Þ£:¯©‘pôó«$f†Ÿ\)•Áj™ŽZ¹Én;+Ö¹žS+Äp+#4Í—§?ïH7äzè>M¾Io(^4RåÊzÖÏlÒ ¤Åb½ð $¬­c9#*¹ùµ²«ö8íš ïG ú#*sYØÞÊ…þ»vi1äCi÷‡àÇñð:5;«‰ –û‡àE:É]Ãwß” ädN$¼éỳ}Aß$jžï}ˆ#ãÉtDþ)XneAø^u^¡6 0¯NõöíÀÇÝ‘'A‚D膭€_SgEÈ;kTW.i ¥H¥™)Ê(ú‰Y„^ K##'åÒ^ç1}”$OâÞ,WÞÎËt6J;¸p?Á½vJ—>æ?Ø·Nƒ½šÐ#E lDì¾6½¯GMÉŽjÄ.øÛfä®5,Q:«Jz–pt”;)‰“5¸/‹£€ò ¦Ãèóø ¥å;²Õ#4#eHoT#*ô#á°ˆËsÚ×?7I¿TŽf ×?nù†XS¬ðÞéYL£\JV+½ŒW|mì.Ÿn{ÜÅdÃ$Ëcâú‘›×ªß_§Êã@,¬VÇVÂêzœ,¬¬¿v¿ÞˇŠ;i¹eçªîqŸ¹îVHÓ£pa_ˆ×}ÛŸ‡%í´ž’I‡è£%O2ø“¯„Šš€yJzšœÞD¬Ù<7¦¨ÔÊ`;é]ô:Éf|ú óþ,µ0³Ï4„¦3ÍFœ q&©áÀ@Å-9Y?)LĶ´’ýÉMʇ'±ÙÍæy1í÷ݦuÓá{›Õc£¥äo‹ö„"è"ïf!çƒQÂ]QŠÛgjlÞ˜/_vØhÑ"‚gI@î_Ñ8RÅ#4#4“» @áp¬ W¼¿‰\™=ô41 †ý®9­¥pl«¼¼ìì/v_Á­älïå1‚¯j£¸~µ³ 3£æo‹ï˦ŒÄšÙú â l®1¼ù BÔU;lŒ”;Þ#*Lp´,ÁQátp#*<4¶®©à‡¸ÂÑovŽ^ñzìˆf;½6”›è/áÁ®ò›×C¦A“Y<è!TñÂ~Í.]†Ãt@i Y¦\49Y“T>HºfÍûÑÊ#*Š—yCYðíÑöD¨ËŸÓðŸS»Ê÷W*{MfŽdשüpÎAΦ‘¥*AG›ô¹Êäï?v–ñ>³ôgàÉÁô¦öà:rpúÎe0hä¡Ó'Ö$j•\Ô5{#)Pç^Yökr/ õHÞ‡Pp‹^É Îá–—;#*q6ÓÛ„TÇl÷Æï?Ä]%&JoKиþ#4ºÃ”ìû½ìâŽúS4Õ+×£¦ Œ˜ã‚9Nq”jçžÿÍ–’ƒB4ü#)œ#4P.yìD›~²rð”6‡S9y{`Í+b0ã¼5_)¶é=šTFW,iÜÓ&)#*5'áFånbˆohø#4!&¸ô=ØRU/·¤‘P%r"c¿På? ×$l'™SÛ¿Ö±Ô¼tCN'{¨Øà,º®Èv#)þÊÇ#4ü"&mÒ¾¬Epîn;«ÞNIÓg²Ô« Äç~$ð;£ÈÛ[%iÑJ$©UÊZ¸¾NÃŽb‡l’p§´;|\Ñ_ë÷nKà{°ŠWi”„bÅl„Üçw“Ýe˜n#)Sµ#†Š5Oá1#4»LlKr7Ã9uºº#*?­nH聯‘Ω«ÜðsTNÖWPøÕœÀ&úu›fi ¬¿à³4ß¡§.[qMÎ\•ÚÓÉ°²>f¡PeDŸaEJ•ƒõ¼7hsç)V¡ëHÃÆÝ®Â[²s ¢}ËŒŒ#*àâö•dɉƒ½Ó:~t[8ëhôŽ‚5TµÑ¡·7…¢ù¶û¨®#*\ NVDµBã7W1U­lˆw¡z÷5dm½¾¢`|Åÿ`ü¯bæýÎøOž|—Çÿz²ùô+þçÿáƒo˜«£{C¯¦‚â³6s SÀ: ÇXfÄÂøBPõLú|zAF07íYBúd/|ž^öÍ`ã½ï!šn^ ij4¼”‘Y#4:/$Ó~)^(W³#*"´Õc1R7í÷n’]Œsz)Oß+Á”AÙŒ‡#*q½&v.Xƒ·oC‰4Díó—›Ó[V¹†÷V×RK\’ØÚ*èª#4Õ5©Š­É€MBä«ãD´…†/Æp눚’î’±b$ÖOL]’-”è•Âí•Ìk6óÃ|æu›/Rgq>êw»OÞ´Óvëƒ|üæ&?(©µªN¡ó5PÅ¿ÁÅ|Cn_·òDÌåZfÌú¦Ñp3–^%sJO¢0ð•ô9ué,k:E|ˆ7 i-ÒÚÒ®4Š~˜`Š{ƒ²7™ƒÛ¶6Û´‰ó¥TVÚ_×#4¡ß­Æÿýks-Z‰TzÞ\¼ô47½Áy˼Œ~ ÒoÕêJ3Ñ ´—£ñ“æZR«ëBÄ!¯ùD{rÝÆ|›MÇ$æ÷ ÜëÈó«‡l(N¥¦ƒ.¹!6kÒcò‹n&&T ùùºiÃh-¬³µ„`^…AO-0ó"•»wí.¾’h3éåÚ#)©Œm#)õŒ.¿-awX7ypA…!ä.ꄶ!æYDž\#*\Éò¶?×ÄQ[­ÃøðTO)ÝŠ›–Ùô¼ÂäB¥¾Ø$d¯mµM¶©áÙ‚ž'P¯'ñg#* ÆésY¬z­„“g8짲tK:IéóµÔ ¼šÂ É:àȤb•Ô)¶–/ȺLò©˜M*_-?•­¥¦ XùLF9?ïäÇÀô†d2Žªpu–·ƒ¢¤ôodwm•ËìÖLBEøUÕð5–˜ñê“MÄã9ñ‡¼õ’40¸iÝ£è8†pÔ³¾FÃQm#²ó‘&­4v¼’Žs…‘~YZf §\²²"ÚÕ96Œaj–>&3Hn™ùje¼nÁ¢C »ŽÍƾU8‹¼hÏaX~ɦ7H¸¸X‹}ÜVÍþº¼t9žö®{úà “C¾s«Œ#)=PÁ¡‚X„#*¡#î_Ï}‰7lŽ ßËÒ!„¿ÍIHy²˜ÂþsîÜÞýïòñÿðdóÛþó“Ç_ï_ þsοùpˆÛãPÝK&1/0Žíl–”g]®áA‡nÄ–jçõëÐîI—E¹ÓÍâËNÇ€™9«FÑ5XÇlF{äp ¶ e5œŸü ³ÁßÖ?#*êw­æzÄ0¾ Xzo¾Ê(ù­‹G2çõ†ƒ­¿†$\ß_Íè•Áyk€À] dôè»#)—õ@o•N;"P)O\zj“>³Ér„½é"]„rT q?vï` %Ÿô¦x?«J´s0àüIÿðs‹ñÁNº8Þßá~rZ‘:ž• 9EüÕoV³z6 ‹&B@WÐR™”Pi爼ÜÞùñÕáîÁR,˜&ðƒ4JФôK«+p:#4›^+½ü®™Eœ"蟺ÐÏÍkà_{=`H]¬bf—÷8JäÃòNƒÈn¿O‘°°K¢¤+ö_Û™Fž~‡ÓÉ:爫‡”Y¡ïJ:ÃD*%¼ëø6±Î» ê#*W´¾swùN”¯°ùU=SÒ1¹–!Õø*¥\“¯ª¶íËtý¼¥¤é\Ñ-a0¥ê-êãׇLA†\³Fèýš÷ˆ£û\†S»B¡ÂaR¥ï†ãk¦-þP0¯deÕš¸9àm$tV ²ûPu¯µ{³Š.ó#47ÈH2jçãI%v©áßt6B=§°´Õ»M«ê·XìT ;Tm×åæׯÜ5†0¿Ï³®3‡iU§Ã9ì2g›?ÿ¦f-2´j¬tq£gûÈÎ*€^|¸f›D>ÏNŒoå…ÀZt/(?²8žš{yeî%Ï}èˆb+­2?Ä"92ȼ`|ªôI‘žbpÑ% Ùr}[ü¯zÿƒÑËþ#*7Àù÷¿Í§Oóïß~½ÿ}1øÿW¨~›}©Ò3нÿ9Ç@@à#þûÞ‚€ë"SRÝýþ‡ÙMßhê%+›õÛ ÉÊ«³çëÿ³òóåï¿Ù=Ú9{s¼ŒPù+8}sz¶÷2XÁfA?ô‡vÿj˜Mž’1íöÈ|¸{¶›=<Ã98žÜ@ÎzwÒ]zLÆ–»Qÿ †"ʳå¥ï¯Ó»g;Ï$–ü˜Q ÎîFé÷1âYâölûøøàû‡ò‘Ëö"ìC#O)2Ÿq‡@“»Áù]ðKû¢ŠÄiïr@½™Ïþü/Ÿéðèl/Ÿîì§ýÓ#)þ¿¼Ø;Ü;Ù>ÛÛ#*žïìÅÁ¾<ÚÝþ¦ªü=«Ò“'üÇ…j\Þïrï}ÿúök=[ÌO¼aóédÀHá;_«›ŽúÃ;”p¶`S@ ,Oj±ÉªÀhB2sFÕP”ɽ´Ø§m5 Ö \q¢uúqª‹V×jîB¼z‹FƘÅ)óÁ%ØÜrÛìöÆòCæˆ^‰¯½q‚8•‚—MìÍî)i§!5ó¤Ó; p¸ƒò©áÎp0a×»áËvçè”®H”ÁåY<ª¢b-¥zXR ÚÙbåšÔ„°‚¬Ö~ðû‰¡±õ4M®ŸñÛ2㪤úus-Ä ^è„m¬1ˆÓHZMU¹GðŒ5Ê‚®¬º›üƒB“!¾j*ÃÆ:a>–-/V+f½wÕº`ô³©Esú¬cÇP»ž v ©ÍEG46£Ñ´OªPm¬\‰ç0îA»+´"ЛñB9ׯÇÃmèï^‡4ñ2|}¸š=4•{HU{ÈæöË‹#)ÊK™9§#4›qç#4˜vÑp9úîÉy#),QÔžßm` Ù–¤"EZg#y~?YŒox[òþæÏy!Lt?‰}ûÃ]Ë’w´¢ÃÛv¿×Í%&{#4‹ûœ£?†œ`ƒM³§Î[Á‰<ngò~ýÉcí™Qævñ¢gyéŧæ×ØHôݳ›C˜Ï5XhJSÔSzéÄ?ÔªÙRT¤²ëéØ.un@Û½™˜†BÑíGÉ”Äq„^ÌLz^zøâ´úØク½ÿÇþqëåÞçßþˆ ø_¶"GW§†…nó£oÚþܯÒùÂãFS¶=›¼Žo°él’¼#*cnU6›öÞ8„ž”Dðëƒ!×êLf¹µ%á\„Ûyz5›ƒ'J¡>õé¨ -Péª6Ciš¸ù^+íê¤|Î$´kìmMø)Ø<E›Ù¯M–U¥M‰–²çÔÄOhn!ŸçøùíÆÇïˆô9´‚è{àþ« ÷É«rPµù™¢|Eš‡7¶6§«²Ü²,F¿ |V÷@Z›Lÿ{ÜÆI€m5ÚTOeŽÀ_«xçDteÅ#*#ñvŸùÐî¨2Ná…¼ÇSŠçÎ$ïS¤à¯‡ïð0Gwj9×$Ù¸sŸk’ÈU÷ê9•sNßÅÓx¡¶…mW™>†Pq˜·Et骦pµGÕbчá1OZö²÷ÈÉ$€ÿêxIjOjH|TÒ‰ïÆ=ØÐH)ù?DþwÑOg€ÿïGßmü÷Õÿ÷—"ÿ+7 ‘ŸøîS¡Ã¸¤^—݃yêm½ ö¶\Ã’òvœ÷z’÷ƒ „”Kàãv˜ ïG¨^&¾¢——€Û¥ÏÒòÒ»n‚÷°LZdëJººr(Ìff«RW®ÙÌ]³¤"³™rG5›-“3Ø+ºé&F_Õ É¬[3à9õü`ïuͦ“‘  hÇKmuávAQï` ${í6áü[fÈÁ!­ÖËÓ7§ìy’iͬò0\+²tDúÃV%Ð’PÕã0ã8Pá^÷ý"ÀÞÀ=ûV›®B4ù[{×E§G¹ÜõãM{é$AȉϿÚ=Ø©9¿¿°ƒ—HJP´,s².\y«s….Xí#4'JQýWæL,ÇL(4îÃ):NÜT™^Ž¿4k0…&Î<áíAéøÏpšñõW§{øÆùóöÉi#„yŠŒ^M¥ÊÎfeIöÎí#µ)ªŽVŠ²ñÉx"úKc«2=^yûö«Þ66ÖÿRo®½} {ÎÛ·t椳ôÏ+±G#4­ý·4æ‰aìêéëÓÝ¿áýOPßZÏÉÜsþ?~ô8¯ÿùôÑæ×óÿK·ÿ#×ßÕGÿEgù¢ã°߇¤}n5ÂK85&ã6îâ½ ÒæŠí«‡{ù—':#*Ü`§³ùIþÙ¾mÏO!¦ü^"n÷|ÊÍ´PjÛ öÌEžŽì«MrߣÎòÒh˜e½s¸ÚŒ‡|¢ú‡ÜºøtcÝ°õv¦[Z½œzÕ±!(DŽ"0;B´“¬V‘Þ°ióµØ%s<jŸÛÝ®._uTmA¨E»µ…d€…œ…ûÐIÅïX n®…q¡þqÛFf %<¼"ÒjuÔžs+mqQ¸j*ß|¬_ƒµÕ± AÍ#Ø”‡s ¬Ë-z¦‰#42ÊÈCƒtýÕÝ"#)H™FÞ=ßQ#)ù†´E¦ñ¦°;¡žöôÑËãýƒ½“Ö󣓳“íäãðUU2ÔdêI”aêÂíó#)ˆ €›vÞK›Ÿo„%Ê!•gtéT5sŽÁéÚ}Q«#4aµ=`ŸãKùipY9Jè;U‘*UÉKÐ*[—”ë&¥Ã!æ˜Ñ%H axQè ÄÚ@ìÁkú@À:Ê—³YgÄÁ²j§cn¡"âÛì«ÞØÂÿeÓA§ó{ëm<Ú|ú]AÿëÉæWþïK±ÿ1£Fý[,ƒ²N§T}¸Ó)1#4;¹äîì„7«ˆ—ÕAˆ,ñŒt?– œA«cãØN§n£¦ Ã:üTÂr •a­Ng›ÔÑ&#4о… vþö¾¼¯+Yûoô)ÚJH«¡%/IˆÙæ#*p&s…Ò?¡4h³ZÂb‚ïgk;[wKàÄÉÜ{ã™uŸ>ûR§Nª§\#¡ÝŒÙQèçXíÚ†G»hw´ËÉÕc˜qˆetÄÙý'íŽj[´È®È±)škQä\?Aëgt¹7ê6áTâhÏgîª òkQ¬ M‘¶(r­‰æÙÝ'àÁå1O«<3µ´Îw3Wm¼ù­ñ/ïÿÄýÎÄÈ}fàýï'Ï62úßO7¿èÿßÞÿ'·£aýêË}Œ¿¥žð:[]YoɱB.ñÊ\Øl‚”?¶g {¡¿¹E»·ä!ÑH¿ÂÉM4#ôG£›à}7†£3Tx¢Û}¬"]ò, ‚DsKk~71qÌJ¢Ö¤Ô+ˆrï &=7>òx%<»‡/Qž¢Ú—}]2KtÚž„Ì‹ä©ÎϹEãƒ\‚úKÒãú^½?I”œÉS§(ÍL»-Ì|ÇÅy®‘ܘ)†ÂºëšH}õ-¿q:gc­c40ŒiB*?ÝV½³îwXrÄè£#4³d.X驪RŽ% Ýí[ãÐ/•"Âç:s/µîÝÙ3„OècuhÏ‚ô!!Ϙ“Ë#4v–'IuŸåo0+þrc#Pvk:jGÆxé:¼A¯­ýâ€ôíãÑn‚í#*Ê…ѵʒÀs¯x8­<fV›b#ЗM®­†0„ÀZx˜Œe{úú3ñãö–¿ “| øÕ‹aÒŽ¢#*D¨*z%4iôúí$i\¶!χé•oà??(ÇÅ¢‘M‘¼K#)À-,‘íÁ.Ašâ$õ=o¹U!QÖÆêM…èRi„3s]›q¹—K]” ëÁ)Íë,u¢¤{’n˜¿ßñn‡SèQ`°_'øHþµ¡‹)NHîÕSó{m¢:^-( ìGSæž~œµöÈÌ#)§^+Þ)J×=*"!¬W,0!&„%SŠ'.à#*Ø8ª±¡æ ɪçÏKoQ·5l&k´öq‹xqÕ½"xy5‰ –_Y¦=üÐgr‹§âÔ»ÒÁÍL ñj27ez%ÞäβàØ’0ýIˆÑ½š˜%w¼Âcx"íσCSp`‘×.«7£"d2ÃöhQYÜ#ô’-;Ó:QxñŒ1 ‰h)£É8_T™ð\ˆIg'V.›UJÒ‡…ÆWFãvÓž”¯…I­2•Û-y/›ek•É¶ä“0 TåÈ÷×L²Ö=CÚÔ|ü‹£¹+˜È#)¤1¬j˜à\5nÚ**¬˜ð¬¹åy3(¸ÏËÛžÒb\s×íaô°+êf —8ý®.èÝnÏxBÞ^Ÿ=fþàøºI2½ ”%ÈÐÚîø£Þ ácå#4O‹–úzjM‹Jþ.©ÉQ/$%ñ¨F4ìxÀj´=´ŒÚ¶½W<GlëdÛ+á:æ-ü#4ÕGJ÷0`Ýt¶©äsÏcB}&;/~&. º6Ž†üf¤ã¸ekþ;ýxI+g¹aCíá4ñ†ãVïhÔ6FØ̾¦t…eÝRý­ùeë#)bu|ÔÉ°U#)ó‹l¨#*Ö+b‚b¦0¯4f ºÉ£ ðªø©âI#QTGúXÞ°×BÞOëãV¡¿»¬ öŸ ã±ÓÊu¸²rý!P~/$÷£±EŒ¦ƒ±uýAÀ,ŠÊ®R`b&ä¦ÙUg´xp_ŽÊåôÛ«îŒ÷!(û–#4U§6«‡âÆB”˜à§°”,èˆ[ÉØ\á!‡?DÒàÜ gÍÝ£:›;U®.{ËlG¢…µ ŒÜé«LP)°m‹Ú‘  ŽÐ¦º"\ó•M‹_©jÙ(;•‹û]ÌÖvÍ–‡i Aâù“C¯5D^Z#>kÖ4u¿êzQq¿¡4]ú°k¡É—%Þgr “ÁbÕÊ<¥GÍÄC±Bì‘ VAvTÍ|TféMdwùvªß˜µàå*Ú|ŠÎ½3D;#4v€šŒ æXxÃ<¬h{%qÒCÂÏ.®Ïñôv…ãë.7'3Tâ#B¤ÔØY”§ô:ç¯ØewMìÂÜEš«‡Aëqz{è%Ø%˜ƒ#)¯Õ\¶áœ#)lžÉÔ[“êrØ`í¾c#)¹WÈ6êWîRݛԕØ؃ÒyÜo¹‹Y¤ƒÒKÑÌGH͆=Ðü¡z-M6ÂɦMà$D»P¡m”Â7ÃÉF–t#Ñ7ð$ŠžÒ;íá²ã i"fM`“#·–Qª¾Ì´A‰±"F×Ɉ£íï(™Šû5>ä[äÄn‚Äõ(ÒP–‡^‹C1¶öÞ¬ì˜C‘cP±ÁÆLÕj“Ø…Ö/,ðî 6[½õÔ6^š+êÙÃô£jNcHzѸèÝz}àvÄWÍØyI›g%{’?(eû3Hw4¤£ÑMRBÞ«hKW Ôlh.Qw‡cË>Gf˜¡ HŒ¤ÁHHÓlü¡1Üø  e¬³‡xM­Ô±YöLµÔõyôNÌ°bóMNlVì~^ìÁÌX©ÍÞ+#*†^2m^ñZ ˜#“¦Ü3(_gø`²ü{ÎL–4‰“¾q÷RgD‹¦;#)Â,z6sD\)šeMœl£œïò)7­Jæ4’Û#*ly ;°e¯ÙÕ²ÛH›È’ç´®¿¸%†SÙÅ/¸~T»ƒÑäiÍÜ I`C°îŠ¥áü8·ÊLâlC€Ø£_8e¹K"P¯Ñoæ#*P„bÅ…ÂÈdáË=dž\j{ØEÉ>'>ê¨ÛŒä†ÒqBN…à—PsÅ0ÉC–•„P4Ƀ"çÇ"Õ—ó`"‹2“L63åõ¹ØŽe¾Ê‡œt*‰ŽAxéÎâ¦rmuM/Q!=òY ‰Ž T@«å/:aÑ´aÐ+°'-‘ùÏ€¼l‘@(íJzÍ#4˜ºï§m‹7•ÉͽåK<ã-U¬|çrýÀ4XÂ8NzÀUDZ%)5‚ME Ç+FLN“I×ÆqÉîW‡ [ûº/,åähç©Ç<¥2ç„Søßÿ]þÚ?÷ãÿ®?~œ¶ÿzòìé—û¿/ø¿ŸŠÿkiùäjöÔ°7DŸº­á“ þÛÌÇþÝýû¹4p~“úÊí æïÃõs: r¬ßOÕÊÉâüþ¡(¿Ÿã×Ü\ˆñ»á÷Ä÷u‡è3aûÚ­NcûÎé‘L‡ü6dßOÂõM·}N cú~Ú#4È ùþÇ°|?’¯ÝWBò}ŽïçAñµ«öÙP|aø>Á×áýŸ‰àk—’Eðµ¿æ!øÚß#ø¦s"ßtàC|èZ^ÎÓµÌoåçÐÄœ‡ßûEGó¯§ÿÙo='À¶ôGŸõxÏùoã1œùRö¿ëë›_Îüä“çÇÂéÙÉÑák Ì|÷ÆBÖÓŸª{1lb'§/骑\µ“ØLg1転²ªø‰c1§åû*™ ÖËö%Gž®#}C˜)„¶ ÛS% )=ÕÔ·zm½EÉJˆû“.ûŽ¹R:æuÓÕ]™Rã Y•Trª.ù›TNãýÓ½ý“R2©ñûYüöh¯Z·µLöDövHF)˜›8å@#!‡q©dU:äç¤ûïvThºÀ®TZÝËvBŠB©¶DNjV#4°îÜ–J·†Í8¶nÝ…ô‡ˆ¾lW¿Ÿþw›£æŸÿ´þí·ßfðŸž}±ÿûKÐÿ”zûQ`x9›}º8§ó=þÀ|Œã?ÈXw¡#°.Jïcý©Bÿ£¼w¸ëÿCw0n'¶ÿwXùûßÍ/þþÊø/xºÈÓƒÖó]@;b¼%›£\ò+ã¦ð‚ã¦a5VÜðâ_ˆÊa¼#4ŠwmpÒìž(q}ä¯u†ti%i£°kÜœƒº‹‹«) ÍêܼB#*0¬“Lcl,ð”¤%Т4ò,—°%'qTãdõÂ/mÇ9µ_z±õKÍ;ŸÔWJ_Ý-oòÜí@WÝu;þ¹Cîòotï "ðW,¥î¸ÏïXL}Gòê»Ñ¸qÙo¨œ*+/‚ódåëàΧÂÎ?¬Ê—ýݣû—ûgowŽïvßœܽ9{{p÷êèðìîmõôtçuõlçåAõn쿼;©¾Þ†øŸw{÷^ýœ)ÁÞ²²ÿúð褺»sZ½ƒ··ïÎöö«#4hF_ÜÁêyRQAÊ1yÚç­ë4—Œ{i5B(â£èÜðÎÆv™‘ö³=.5 TÈ7Ñ0J ¥)4Èÿˆ¢i#`ž íפ„qôØy³*»Ù8Íш"Ù£žN€<>ÁájÕZè.ívZÍã2›\^‹“ãMe®—Ì·P=>‚P²@[ñéøO9¾u4à1£ä"Êväý+­Îž<øßÌå×Öþá.>R°¹þÚ’G”W8¾Âƒ ¥{6|…‡¾¥}yð®*ˆ¹Ž â¥I™YvŸÃaŒ^1Ž #*þl¨Èé’ÆegÂôÄ…óy[Ъo©ArH4š‘ßOnš¾Ar¥“]a“(µJ$¡LÝT°[iˆ]"I4Ò6Pf2äÝ"ôO-¯œ[\¹ë9>Lÿc0%lé?Õþ{ýéãÇ›ûï'_ô?þ*ò¿E€G¬-Šef(ae¡C§ Ü¥Æ!j…”[¿1h%!PèêÏÕÝøøèúϱa…DEMÈ%—¯q·Œ P‰ö¬Ý¤B“Ê„åÕé6ç'•T(I¥F7`&iÓFòÂô*i{ÉèêEtmJŠ÷ °7Qg¶Œý‰»%k¢ðE¯íµ“† ô@œ™LæÆ…ØLŠ$¶dKÖ#_esš·œdßâÆÛONì¼%NaØkÍ‹î±Åö üzwWãß@&4Uz¬3.ºÅݱ<’XU Î¤ îOŒéövÎvNŽŽÎööO>Є•’½>|çñ­èµ†Í)2zèìk仺ž›ÊåÅå°£¸vg-&‚ßi£ç—ÜN\øX€:PD§.ºéNtˆ²½±³û#ðÎ ¸))òÕ9m9Ú¥†·nºkï§ýù‘F-žÚÇ{¯DJ8LÿÓæ¸ g”¹Qa!/³Œfس'ÀG |ÁG‹¹UèY°ÑBøq§¥€‘¡óY º$nOæf¾£Úi‰ÞÕÍ°ÐUª$¾xJF7Ì{šx m"ðé—û‡øˆœ5¾ZK)2uñ­`q«+üp"?}c­4É/Q4íA…vŽ‘u»F¨œ• 9Ôþ¨×žh4#)²ÎY/,}¸‚å& ˆƒUáós´ W¬’R6†¯Ft¸ Åô©#ZÅ„ ¨z‡HåÀÞW”«³Êt„ú·e£õe%Z>hÓ¬%ýA. Ⱥƒ\‰”Lÿ9i°º×üáƃPøf­ž-£©luœ~Q>#4ˆ<ŒÃØnŸg5c¦šW'ÀvºX±A;†óOŠ*S£º“)-äN£ÛCy&*¸÷ºjJY˜üµ—¼\¨È}†'aÂ#)§½Nmƒ^Þª9zET…“"¨z@p¦Öˆ'ÂÜœ¼"Ña¢O¸}C'Öiу-«âí T^v‘Þ²C6a¥,zp@ò.ÚÞe÷¦ŽNÐZ¨X.s2(û¸=k`ß›ðèë7Go«EA¼ô®ÉF}D–2"PB§ø#4H½hbñÑ‹D¹‚ˆy-§t~eˆ&"[Á9quÛ¸šür?B}#*ÐõcpͼnÂÖ(n«ñʯhNßghM‡H°ûÃD“ÈÌeÜÙm+ÔÐû׬dǘö岿ª<#4MÐ×OÓA#4åf.'Z¢ÜRwzQûç_ŸÿZªýò±¾œôCØðC+³@œcé†e»;Ö•ŽTy™®²‰Ìõ•ßpþ뵚›þýßƳ§ÿ/OŸ~ûåü÷×ÔÿoŒÃÖ§ßõáÔ]๢æc¥ô¿‡”ýùe!=µ B{Êõéàâ¶1e§´¥"[puÝ{»çÝlVŠA•7Òxä­6: ¢Ágs&¬KÑÖB¶ïýܦ¸š’{JÝ­ê¢e_¥Ú£njõ$‚GzO£tî+;ÙþánÊFÀQÌÄwGõ^â(k#)ŸM#)´mÀžc€¥;¦ÚXÀ(Ô¶´Ö꣆¿÷¦º³W=‘ë–V—³—4ñ‡îä*æS&&}ƒ¼Á›Žê¥7{'ØÜtY¢[º—.xÜF–7ž20ÛíÂxúõ{/xièôe+áY7ƾÐÒïÙQW_ Hÿ˜éúÿHþó¯ûèÿ·³þ¿‘ÿýuè¿+ò#$C%÷˃„v¯‚h§ÐFv#4Åäü^ÜÃû7›\_J 9rŸ [ÖSå¤içô´úöåÁ~_Nª§GïNv«äy\²@•{AgI06©ÍYFÐGÛñfŽ§M¼¿k'I,¨˜¶Wͦ¥hʽ·ÁÐzÑB”Åœ§2žÑ½:UH°–ü#4Vˆol${u…7sìcUyöW+ÿH}/,Á”C¼ª”CE 7ÝhmÕmjñÁgAå­?ûhy¤Ê€ªÑíû$ßï-4!TµSa-?»ªä@ü…‘¦Ï)Þ>Gþ›¥o¡›©ª‰tô¶´5`èsÊÕ˜­_ªT#4\Û 3Öù§ŒÒ>tù"A n›£©¨³è=ŽcU‡GÔgØ_ÿÊ‚ªØ‘_ÿʬ%(Y⨢ò”ßKôMž“¥gÜ•#r‰¼õ×fó¶ûçè7ú¨µ[÷ñV]<¦Ã¿ ³’ò<F7•cZ¼¬·]©>Љë¥ÂœÈÃf°VåéB:\Tßbä†û§Ê¸ÝiZ··Äu† Ùu[#*Y§©Å[Bî?#=´¾ig϶“f¢ú‰©˜å²½™0¢ Ó#*†^ -1#){#)#*÷•óv=ÔøµÚ#!ÊG¡ÔLd ¸1ÞúÓp*|ÔOí¤y+óÁ³†f€™>äCÇ¥À”^3êë;} *{Õ—ï^èN‰b¤ÒË{uz¯×]¥ÝS}“?ˆvr,òRGßpj®ú•~‹#)†%×I-=%¿2âHyõQŸ˜gœðÚëÞBâc2ܺˆ?‘.d]É›.±ÐõQ£ùPÞpл¥.‚É»ï}ZŹÂ# ¢ ¿ç$&k¾)•µŸêH;Z?Ü7]áý¾™¨fœš€Ãfjú#*›ÙÉ7lºSïh×™xÃæç]þä˜õ{ÀäÀÆýÁ“ã~‚½ƒ¤e#)Y·ÕÐ÷y«ÿY=88ú‡ïè)½Ýe½$â'øI++÷ˆI†‰ÄÀVSÒÌ$†£a©"‘òÞ†ÅÀ›¥Æf¿ÅÜÜ#)oÉ¢¼ÃØÕ)„ '´ÞmPøyc«®ñ#á¸ú%©¨ë8ò©×8,ÊÑáÿ,í.Î]}¥®}?†GYƦUšLœQÈ)æšN&f.§ïæ`Z7Iˆ~ë[¶šèøjƒ> ,_0`€‰7ô/ñG„DÈñoʃ1Þ")‚þpRUÄÕzê»"ËTSl±?U• T_³x‰*l[%'"îy×Cîm#)^E Û\†b˪ˆYó¡|8© Ó…j>w׸»ÑÙdñÄVl'ö½öÄN†ì1ª!L-¤<¹e¥ìNÜ?ŽßV- *Qê"#*²®3<º²ŸAÞ)éKEuÈK€.c­É¤^Y’þÒ;·\¸¾\äÊbtÒöÙ…@÷øÿXßÜÌè¡Hè‹üç/&ÿÉhýç cƒ„„ó…BàìíUI…ì+Rp÷â·§»ñOÕ“ÂW¬ÁN¾#4«?œy1ñʨÄUjõzìL$(|…Û]Ntø€Šñ+KDDð#)7Ãn+ð~õ„–}ÿƒG*0…·;û‡¿£ZÜüßY­#4ÖGoæø#)¼D3ô€¿{++ðrõ.,qTüöƒ§Ÿo~ÐÔùQIgxQä}Ùr#*CK‡K¢ÉP‡J¹œDX€ÞYð+ùq—OÈ#)M”S‘窾7ÿ¢ OøDÄeøSÜVÇ,E1¸Â_Ÿ„I˜„"#)x½\³‰a_sÓøïtYŽ e Â>× -‹ÔÔ#@Í_¿¡”6]È^‹è­DçS}²¤*¢ä•Ê!û#)µ‚$Æéà$Ö3UR›ýwYöÖå~(²>§h»:~NbáȤSÂö,ÐÙØ•PÙ#){é‡p#4— C úëܬ°…ˆ y0i,[Zw,öméÓF¹2#*~aÉ=hÿü3;—áϳ™¯=XšrßkûòZÝbSÜÙ’·Çe°VÂô¹ªÜl]UýöѦÅÐ#*äq`–og8Œ'?„#4:•<~áŃú«¬Úu¤C:Žú¨õºZÃRàO;盛p¨eþç8æGòn¤^üzf øƒÀ² È)K‡çøO–œôAU|6‘tÍ×÷×j·zäKUßîìžù:µÆ·×IóƳÓ1Q6C\·¥ÜÙ¾-^wúIU°ƒQíÁâ[·\šR²– ZI!ü‹|ë9ÏôVJð§ë*ÍcïÈ3¥~7{©á„{:kS'–ôÀÎB:ºEÆi´L‰™Œ[Ʊ2Šú8µ‡»€rW|°sòº¿:Ùyý¶zx†³õ+QôõžOÝdÒª\mž#* †Ò°Ó‰'·yß™=(M˜Xv€jJ~â\{³óS5¦¾Ú?¨šÙ†«t:I¥UuQ£üý3“PÀ„÷}Ó"[QSóÒ%þ ³Ûè’(ì7RDPUBU£&ÉT¶@€J/÷_½=ƒ‰7’I§›ùþàéΰÆäÅX0úÕY“j3¯å½‡+>zõê´Š•;;ž=ñ Ös§åF«ëf~ÖF8«0S°>{’u¥a–áÙU™e’ÀËÀ¤Æ ×bõpoçÐYŒ…ä#4ãÒ²KšÝnÜï×ê^œêúìÉæ“ïCüýöÙSü}V}ò„~¿¶ÁïOãï·ßÓ¯÷ñ‡LnÝ®ÎíÙ÷Ov1öÓ'O9—§Ïv%WÎý{ɽJ¹cn˜ÊÛ)/hC×Þžt»uoՔحã²7Ui_4[°õYuùîû=ªyõq•~¿{ú=ý~ÿt—êòÝ÷»Oøý»LË$;«£v7w©£v¿ýî©d󄳡äð^ÝÄßïè×ng–Ó6S#45δ[‡7&ãÚð "Ç2œËq{DîÖ‘óo `.çË(÷ôµèƲ_œM"ב#*]I%òÇ~#)ó”@_|T5”73$AÖA÷ì¬×®ö Z¢µ”2†D#F…ÜÓëN&= 8ÚdõrÎy˜Ïéí郲ºè^ú9ÈÍå#*ë$’ÓIYY{îq$'¥s(ÉÞ>ç•æXjcO›K–—µÆS†¶¦xl1‘p«OKÞ Éî-Z¥H”" »Úôr+že[í¯LÀ"Ÿ³=¬žåÂJ¿pxiu5#*Ôï‹Lî?‡ÿã8ùü*`‹å›7à9%ÿ[òEÿ÷¯cÿNÆfû¢Ñ¼ž¯FoóÔÁl…®N3ì ‚&òYø„&ùô`E¯²Å\Õ²4â. }qÕiæ"a±må¢Ó'#*:ÔiÚ×O¯îøþ«£“3û(éR@ÅŠøßDŠ'”eLÿcÿðñ¦°ê˜qŽZ/¾É Ôª¾*Þ{-“힉aT}]Xð5yÙR À»‚ÈÀ_÷u°M¾¦°É;Øi;Œ„"yxÔ€Ô*w.DµÕ4£5M:^¬ñÖ×ðpµ6D×yuþÄZÅRéD£æ¬Ã×ö|ÆAÎ`c¯ñ³ê¿¹Ø×þZ–‘©óºËö”#)EÍ€·;‡û¯Mp!ˆöšŠé¢f§¦\#4uZ/Á#4F7ù1çç—ñÅ‹Êx˜Di|^£b6Ȳ6#4šîàd¥rÏNÅðW¥@ëN9'>tf‚K¾xfYS‰°¶qqrP<nÛ`<ãâùÅþ`Òî_TVÎ/~âHçÉJéÅñó~ã_Ãñöyk%8¯Ð{w ïE‚½ *Ií©ÎÜ5Ý„iÝ&÷[Q§iŽ›üŽ¶½á%ù €‰Ây52ƒM`~”«IB4¸h¡P¿1i^E¦1¤ä#c…@ŽFׄ⧌%ü&¹rõÐfbÜGéõšÊ£‚ø:¢” CÞÇSò§êÉéþÑaTº†?v”_ñû'p¾~A~G‰ÉF( ›èPᶄl<Ÿ„ØÕ<+ÙØCv#)<wØ–K2cwßE<:KŒbBÔô´ðàDŠTâóHf$åQØÛÓŸvãÝ£·Çû@šUE- ¢DQ½Ñé#*“’´Ã'þ„ë݈¥ªm•׃‚Ö“š7ý%w+²tÊRÉKn–z‹œucÙ!wN|7#æI@ÓàÛéõ.·Zm@= þª“¨†âOX~Ïž Šm¿¿AXòÛýgO&NH·ñxfß=£×ýIcТ^n·1”òź”€]„¨ –ØA4Ĉ®_*•Ê‹Ê‹ó#4ÿú+ ¡r{iBò»¬aÿ±}[rßüXýg|p´»s€Òñ7°Õ†þéÑ«3àïªççÿ~xöäñ&*wŸ3:ßU#*ç篘¢ûFÂutªçš€ŸµB ëS ­ÁF\¨1xß°k(µs+WLûX9»ú!å2§¤ 8ß_“>Äay²äd…—^ƒiQ½¸¡‹~ý(#4Y@Ô¯rf©RÓ’ë°HOY±¤§à½.¬ êÛgO΀w<Ûÿ©ê»šZ&?9îQsÇÍéyXõÏÏýU—¸ªmêˆÑƒs#4Ä•)PZR×qþ}Úß2Íš•¬ìCÿx<lM›X¶o»IµGJyÀ³CÂÂÄïn kŠG3_øD¨@líó×Sñ» ]˜œ”EÐÿÖ¥{•×?Íuàù4Êz›‘‘·²ü´)a¼Ûþ–°‡ò Û£ôÿÊ!æBq<µõ­M¼uQYã|<•¢©Âk;H€D¬Ó¢*#*™¬²ÙŒ\o¦Fi·ê3¼­9;V«ÖåËÒð_sæ “î¸cM˜ÝÌdß'–šÊ·1f»U¢7«‚•ëö-l®„Ò×1l–œ.Ã&¹ŠÈY9Õä¹nÈ+ÌÌÜÛL,HÍý93¾Ù¹T]]èukú9Ù:óRUÚxôiLÚ›$W–*‰ðƒÐ-]ZTŠ3 H燂7$(÷t’³e(ª„žÕÓÏŠ£ÄçæhZp˜cÍ-o¿?&I±C&C’8x#*ýmÚG -èøì×+³ÛÌôè„ FvÁ Ær…fØdY.7M\¤$›æá¡Ö À`ÜLh«œ‹^êDŘ°öˆ*ÐqÌ#*;êu›ÌFJèß³<â+cªòr‹ˆÃ²“O ³ b±ø·vójè#*;¬GOðˆ^€ïŽ#4è‡Þ+.'Eo9)P\âÅ——ñgy™ƒT²åeyR0‹åeø»¼üýJ*(x¹Äý#½… )É5G¯ùðF² 8ÔW·†H×~’ß]?TM2ªFV;[mÄ°Á9Íx¯X„ƒš¤dô^['Ýoz®Œ†£Ò:D Ò@­¦'h"Âѳ ±æ/ë­ Èíå ²¤'NºbÂGy‰!!iì`ŒÚÓ-Z¬¦4¢æ²°~0×A™ìTïKŽv%MTUª}·U·²Ä#}}n¾8xvžÒØLžOòò„ìDªÑ-#4­ª…V–Aú,K}W+T<p™—æ¬ÓÀg8©ˆÌ°QÂswL¼Ò~8H#áÓ4©cÈTW2Ï #4×è5qiA0Gòéækð<uÑ„ôwPê†=s¸„èJZ\jb/’a¬!* ù±µŒü$4æÝ ‹•yi‰3ʨ€;!ªñecýËËöØ@”ò»8ÆN&Aþ°IIìZè.]s¾#ºÛ ëìT¥Ü<‰Gl9E&ëgf`·Ø—=Qöm…Æ­sÈ1´ƒ9uÉËx:Š*°ŠA¶h¯„Ñp GeØ„Z]˜þ[npØdŸÞ”£ç6'•ñá­X—š3§ê$bÓ’ûWž\”§YAÆCTŠ¥¨ËÖı˜ÔLf¦‚°KëJÍ#*§âΓ+r-™°Úä¡Þi-1ÛXá9™mA$7PUÃ#)ñ‡Ñ4"‚_Õ@~U°©pd­ªsT­QÜ5škÒÍJáG*ìœÆݦ‚œ>Ž‹µmþMˆu¥¡›Ú SMÒïYãÚ9zsù½o*¯Z¦zÀ­µò¹1F«:Ci.7Aq€¢]Ñ4/ÂÑM¢f_BÞ¨ÓWùì‹ça™*+„ÿÎÉ ƒ?!3Ã:O•«e¤S±O9¢¨1I‹ÀX†¼ßäuœnDï“ÆM[+춚›pþ¹R6ˆb” ॠ¼¨Û;/oµƒ±TX/1‘®ø¶`XÐÑø6ù¦kú3‚ÍÿÈÁVØKß–…:ídrÉæÁ9¤Îó÷éÜëɾ]‰!cÁ´a¢”ÄYK)#÷äøY‡ôUTÊ ‚ H#*¶£‡qê¶Õb;„ÛѬ‘êaŽ`ü1ŽTšOVÏH&ˆ6Ÿ+ én%Ìð'iÖó`ÑÜ›™½Øè×^#)_‰ ²(Ê&(¡ìÕpÊô«Ý­\1»=@Ô?;ÝI!BÔ¢zÕ­ò£óß9™—õEšË£œ”H?›%Ý~#4$“î²úÜKËœKƒ·g~nqÎù¿=ËÉßf(Ÿ‰àØLZ–X›#*`3ü1ú4cELûp:hU<Z#{®lCYi¶› ã„f’­y(8:¾mÞi:x/Œå_­tk]÷{C®˜kÖ’†y°#*Àaóbc¨›Éô )Ð(:•èUTð]‚ð(«.ŸSè:oÈy™{jÜ2u:ûÍAô#4‚HÿPWŽ ddæ yŒ¹½ž‹ A9„:O3Ÿu¦["pêh¨†÷•¬ióoEeµ+B#2Ÿ2Å "vn]CzÝI¶ARº‚bH2 ”r£d«åŸ2¦_ú3Àœšñýˆ=…•êyèw”ÿkßÕâ¸g=˜#)$¤ÛÁkúÌÈÿ¸mÜ?ùSÝÎ÷Ê‘3€B..%õA‘­Ö#)F:^<eHþ<àH*ö<|ý]a|H§ùAá¾9¦Êp#)VöŽÌÖLLí#*ÊÿKöߊgjþ™þ?Yœñÿ Ñ¿èþåü¿ÝÏ稄: ‘#S_i.4µH'úÕ§3¿UcGä÷-¡z°÷Cî7o/!~ÇÀzjÀqBõ¡Ña謗“ ÒéLeê”]N™LÿÂC³ir쎻V"|ãð«‘É ^‡Igã'ëýr0M¡ÿjÜ4L°46UÍÎ6î£ëé³î½¤„ûÉ™õ}bt¿Òº©Òù0_nF¥%7ÛÐ|­éjÖõáÝ÷Ô¹+7ïyú]Ââ³móp[’3`úâ8$˜#4xÆ׃Ý÷Ý[ ôïN«å¢³à›0 •õƒ¢Ü¡ÚB×±òþæ×¼°¾ê‡™š0 °äÊ(;ͳ¤]{%ãm%Àû1}ìÖ‚8s²¿J“mwY9ša›šÑ2ky©@¶B5æ¤"6}‚a?l;–;J&O–»ú×䧿¢xø{è»Ý]ŸÝÎY:"Áˆwwm©©y»Ra­Ýó íqõÜÒ¦±zjz#*ÏŒÄ#?××CvºæÎF5­br3Ôè‰X¿¯ÀŽ7„4ûŒ[Óþ…r#)Ḩšf²ÇäT)ß›€3Òª–~Núö-¨r³¬â×d{ÏpÝzÃŽÕ Þ*ÀtO™n`Тbz¹ª…Dæ×™D² ”‡Yˆ‚—ø…ÿSüßûÉÓ?#)z1ÿ÷øÙ·ÿßO¾àÿÿðâ¸3EÑ@+ÞPÜɃÚ%x_¢¸³~¯’4f*"é°ç7Bå#4Ú´•rDr›4˜¼áЂìeûôQíÝW$†äêâÇMñ`Aˆ»ŠKÇ_cÅüO¸™u=˜Û˜G¡ëëŽåÚåÝàŽÓ$ííØEAú4ã'ŽluáíÑnüv‘Ê°Š•+^¨\]ùõBõç³ø6Uˆò~Ü”€wûø>íÊëßÏžâ{“S{Zað‚Ê.Dá»Ø÷³)Ók;äüËØ•k×°¤-›+ùq” £?lòäú=huJÀ£8°º°Üä6çBš›ZŠ¨k·”àŽuaÆ&ðIdtv!;§?Æ;gxé"#*À=ëD¦Â¥àSjEÜ1[$«¸“®HÎöcíÜX±ƒ¯Ù€½6JZ#Ü‘þh8Ä,SüÀ,XõY+-Ò_k\Ãyj‚ˆkœ‰¹ó¾ûuT%ѼPW%U³@ò$¬a¶~/]iQ˜þ"â²Rßýd‰›§ƒî{´¨Âõ£L³Ê]_É‹ÝR-ËžÝöû-`ÇKð9¯/G¤xË-¦CýPh4<'‡ÊdÜ)ë¬kìäÚž»­vÏÆÅÎ6ª')¬3õÂ1²K#*#)¡²Ê©sõr°¨8˜3Ô¢Æý:.‰!‚¿·Ä¤õÕ…þ˜ ø©)nÓëüF"q‚ûW#4Ù-\ÖØñãƇ¸Õ%t ¥Œ§ÝV)µR/ó–#*dÓ1È*£â-f«#4ÌÆP_”Z4š<7•Éú¦ÙŒZµ­òRª7jZ#4\ÛÒ•1c+TÐX…‹çÔ'ââ%ÿ—Ù#4ÛšßvzZÈAàGÚ=$På5cA5©oR‰«rc@uàH*‰9‡Ùe»½bEJ¥çÕq{ÙBcrLNnûªi}‡COÝÞ὞:N¸ê¢BrÇ9È‹nöües¯’¦¸.±•!u×yÃB5×[†ºÆ)¨RÙ}mCi5ƒ$–4ó|¦ÿý,>xw¼ŒBöÊ“D<Ÿ§}œs¾?¿=¶¨ärI¹{4Mq7ž»Aë\L;¼ÖΆV›‚´ ‰FµG¡…#*‹ ?Q›5iD>…O/¹’ºÒ •ÉcqjYh‚c TÆù“Ê;PÊ5RÕhNðLΊ$¢ü¬k¡r¡…¿i­´"¼“¯x²Œ›öö¬våqS¯Cg"CôÊr‹8«e&¼-ítÃA #×E³³Â3üh”™ª™x3Ž'?îê’xEÈwŒ‰n1—°Hp–“:ªIººQwá€Lç½ÛwúnÚÍë;©'~´˜¤Þ:hA%#Î…H|‹ªÉÓ%1u±¬1’íòi÷)O`’©[9gÿÊ÷XBj*]e¼¾l|4Þ¬ÛçW&#4:·q”»ýÅWƒ¼È  Ñ#*Æ*·Éºê}?yúPdO4ÌðèvÕuRã–Ä[<pØÞeÔVÊ”Dzï‚‚…‹wÉ™ôØ,od.¸˜ð¼œèuWâô¡µþ(ºìvs†Íd¨é ×RßÁJÆ#*†ãÏû`šH™îÐE:ĵoÏóÆXßN¿ï[lQÆ›õºž:šû±ôGf¨Š,Œ`<JG¦4[• º¤Ktàä^˜$›ïûØ3—@ÁÐ@¸¡ˆhw§<¹Ð)-ÄúÂ|…7Rè#mÏfÂN6 K¶Iº\BV_“" aƒT¬èLpšfNMw½tuzp;ÇbüPÕºŠËÈí;B6´TGÞ÷¥Ù3K!] ª™ìRzˆëØÔ<ÅL;Y®S&Ž°*;nÚ#KWA}ßߤ=Ojo¶½¥¥ë(w¯8Ð[Y=î65¯ÝØä*Z`@QÉ(iœ#ÿn·1Eð|3cøáecq;ìy“û¨UˆOkû¾Zn¥Ô6¨TKƒ¢•ýUÊnc«žb}­XT“¹N1¬Ó,ù©NïÇ?{*òl_#*‡i.ÆR–!pV Œr<PÌsÂåB×1_šbh—.gð±x ‡A‡—R ,®ãð‡ükì¢ÛKH34Œ/4 Ï÷,óþQòI«O+ÓSºa@Ê“Í#6“ÁÄÊ6GÈ„ƒHiH³°­Jè©À?4>ƒ„Ø+;adÚƒ&ú&wÞ¨:PþËù–€¨T«ãÞGˆ“(5, *ßNÇJâiqù&J=\^¾d’`42 BÒ} û;ôÇ~€MÃ<eK?%:#4Ou⃋QôžÆ"äÕñ_¢ëR1gçA+"#*ÅÔþ¢}Ћu§ã±nÐJ-#*ªŠãíDz”©#4}–ƒ€åè„fýÌž*3å.fø ó–ÎR½êäe÷øX “¶EI}1èI[ò¨wœÍ)ùŽ‘™þàJsúðJ¿Ûß5'ÊùëJŽª¸?<êAu甎¬Ö«é.õ}_+²eÚ •CÜR$ ÅHLÿ| ‡ÀšÿçÙörò|üåk"¤ÉKÀÒóä (öž5ŸY±ÄŸ?Ú;ÚEÏ@¥íçðGéºGÅÊzqû|ðü½šÇð²œ@Àšò|#*SúËPYÅ4fàïïÞÕ–p€+i¹#)Ï+õÚk!J>ñC¯{‘Ä­î8ÿlx 0™þ*°º:\¤AÏõ'<˜à—±ã51!ˆ®Î­.Ë2cµèèç'£h™¨õ~þY”õµ²§>ÇÊ­?#4±Œ^7¼µåµº-ïv8E°]xÙmÔŒÄlæuºãdBÆ‚ˆÒYxÙß¾½Ëî‰aÄïÍÖ(îaò–¦ âzÂ6½{tRõà÷û{ˆ#€¯ßíûSƒ]Ã/wŽ÷«>ÿîâo2iEÍÕÕ#*ijß$j=/xׯ“…1A‡ž¶áÉûû„Q‰UÓ=ÚÇÒùú ¹\|ÚYðºÃó±Ò#*b)Ì ¤è#)‹h‘Là,J߉fMrüjT| lSF&ýäõ´dZ’®³Ì#*cÛKêOp" YÝÆÞh˜¡ùûT­Pn5n·/’‰®~ïdñìXÇ¢Ï?(Ç%‡ï¼G#°¯^éˆÈ{Ððxf¹©ì@ø»÷¡Í%¡ƒ$M‚Þ×_A»_žîÁš·›“Þí ÿÓÆìÓë—3“àì¦|ºGG·á½5RlÏiË~â¹± ?ßO”«ž²Örè¯"Ïö#*iÿD©kaéýúCÛ^@pèS˜]¼Ÿ@¦éÏŒ®‚Ÿ•Ç-š{”ŽÎý”Èe¡oŒËbH°•#)+¡jŠ6Ut=‚d'>9::“Ò$ãüx/÷}Ä‘[\,åÀ@êTsz¯gkÄŸ³%!ïDµ%!)-i•J9&­ñ“OzT–Yãns‡T¨ÛŠux6ä•Œ'AÜ8ídgãa¯7i7¯ÖæZ¥É YrÅG·DÁ©ñ«€·HF~ËÉš¿ Iøžî#½¤:EbJ€¢d`¾åjÅ£ý%ðy°@üuú'ã÷ýk:À¾ÇãG™V?ëß¹‚¦ È0 ÊÞ òI™{%¿`kÅp1u°Ìù¨*ˆ•øÑ ºÀ~Šñ# v½êJ6è‘] Ç«oº‰M<ßh#*ڨΌè„Vd h~s”mÕßúj ‡‚j+z@$…1YlðÈ¡Ø®]ÝûINñpPó_ÿ"Ô¤)üýl÷ÍÌïêÎI„ƒ_f»Œê‹\uòdñ€Qç¹còÇ‚úòe+`é"S÷·;?V# ¾o{'èj ]²PÖÊè,~sÄn1N#‹Ú­sKM5T§v¦¯Îî A]ÕõP­O½¯Àk <ZG*)<ztؽk#8Ekôph§Îdéä-ÉO˜39c(P½z4f|:ÅXé¦Ôüi·)„žPÃO Ö¶$½#*éÁð )D¿€ Óž´yªÕ˜Hæ'Æ…W\k™±4µÀqT ê!ŸÏ"Qøª¼<"(ÉEÝ9ò«5Ìò€àGØlÃÆ9ñÞÁÈ{›8î@§=ÞåtÌyÑ°EŸÈí8’:P·J¹|Aâ=²ô(*oxÜÖ—'ò%Ýñ“«nâöv7‘ìÑÏ“/§(Ž ž–àì4&Ël?p&A¨&©úÐ$x{´›Š§=‰5nªX'»éX½q»×n$j{R¯_IÒ‰Xʮ҈Ì]’ð-»@ñT`r6JGΙpØŽ8¸<”#)s›ÁÔÆû¦+ù’|DxàBcr=͹!dºo—cCl— bÛ§søù¼ç{ÄÎNæ{æåïÆ»|>ÇX,‰É€ Ê_N9TèáÙÎÁfíÆÝ6¿ú)eŸ@GþœÚý¥Ây<ûž#*¤#¯H¡)Ïßa~k)ˆ‡Œ%ç¨ÇöD–>*$@‰zm5j–ŽŸW$'øÑ#)Æ°¢šm1wÎŽ-žÀ­‚0›$°#*ÔØ”f¨[SŸ€Þ-l 9æÅæ¸ìÔñB€ ‚-[–‹éµþ$ó‹ÑSBØr±š=,²æûu£’4¢øl[¬î@–n»í^«4â^¹&k¤›91–—SkMuá»:¤Ç“zôZnÐÔ·ö ¶¾„!Ÿná•G‘²DcN½{Îá­Âj[åÌÍ ÇRiYCî×U?öWe¼9IÈQr´(÷Öœ.0S.7¡Â¨6™õð4©~ÔS’oÜÍ>†dö!¾¸Uâèk}ƒÄºÚ9gf#JœG¸T‘sΪʾ&[ŸBÞTwö€uh‚½˜æúêèd·#4ôxçŒ9—¬57þÏ"”no­ögoq&ot}YfQ£ ÷·bIAâfç²Ô˜àf7‰!>G×0²þzeÃÿ×f+ÀÃØ ê!Õ—çBÔ­Laº …»”i&¯÷×GΤá¯À“¶? Çׇ¨ßqWýŠó帻w ¯Û<€Ú83ÓÝÐÉ'„|2À³²îíÜåÉY¯NvÞVÿqtò£Y:Ó…ñiÝê4¦†ïcù ½Úu ý×'Õê¡t“¥U¹0Zq¡rþ–~ÓŠŸÛ¯þ›v£ã.v{–V¦sÖHíuÝ0Ós÷9[ëÞþ@z„'þ_™#4Òæžî„"Ô8°ëBÚˬîU=ÀâÅåd‹þ[Ó s‹:"rÂ_ëðayÁ©N<ØrÄc?¾Žw_í¿Žµ¤Ìn·; ¬ø™5š×ËvÔ#*ct(W.7I ï•ËÌ7ˆ žw#*µ_Bhžøªˆ©«Ò>€³wFùƒ­Œ†ÃŒUÃæpŒÐcšA!múÄ pqÔJQ1 ü`ñ³:ܤH¬¥òã¯âW'‡ï*Ù˜cJ-XF×h6§|5¾$È«\)Ž±W)SæëLc6JŠ‡»¿>o§ªaD”ê™®q†7Ôñ¥Évç»×xùo© eŽƒIÖõ¶=Tœsv°òF+;\‹G#5sÆÃy#"ãQjbÌ«ôh9Ãå—ÿÑ Ëevzí¯êÑãá;ÉÞ’Û[¿ü{]ç¶Xå“+wµÊT$¥€icUÙtŽIYY¹%2S”šaĉÍÙÌqóTXÊ÷êB©àŸáÈ”uF™Ëo¹ü™ÎÌ©ÂdNÌÏ`ŽÅåäÜp)EÒÄ€°}@´eäu^  d›·++¿êíö)Š»’¯Q#ÊDüPhý—¾¥7¨AM±"°œ—û1'@¥E™;vs%kÁ­u¾½õJË@Õ÷(#)7î,èH¾å É#4Ö²&Ý&¹À±â(yzèyÓ])*Ø°R·ÀÆÈÈ=²rJ\êêÃÚsÍò˜ÔÚæVÝ¢Ei…;ÅP)a#*Ù««øtæXNPÊá/ßæB¸öüh“Ä´,Ä´A'€È§»Ìx<‹±Ðç—,íÌFûm².$¡…‹xÎr\/§käøî‘oéD¸ã§ÍñÝJú«]ö8áãù ÕUµ|ŸëÔ#*òGº®=RtÍk×½9ìõàìã©ÈxÉÍÅ$’¹¯5~Sý‘[¨3×Ú¸\Ȭ‹Y5zNâå6v/#Ô¡Ø%¡·ÌyÂwà3QtÚoÀl5ààEP‚¿Óÿ'Ï|v€{ðŸ67?Kûÿ„°/öÿÿ÷íÿ]cóû¼{2œ`ËžF¾¥™ zÛlÊ­5A2¼ „ác¼ ” ñfVâØA5ŒfÔšM;Ž{£Š*éMºkßQI#4Ÿ*MÊjSÔ_#)‚ßl:÷J Lír|]á»;@³íY»9E²ÜlÒ,ç4ùA g ½ÊöäHuF•îþp ~Øòz²8=ÙEg—¾¼*Gše(Ù‹fΊSÓ×)Ì[Fý"£‰Ñ‹§[®ñëYÓ¥*—›åž”h;2-H ñªã¹.OuÌŒóR_}H¹'…—ååæüq’ó±áϺ²¼ëñtì°æhä°'=v—3jê„À Y¡Ž£=ŽB; ;ø ¾âÿ*üŸNó€ÿ¹oÿÿöÛõ§iüŸÇ7¾ìÿµýŸapç¬@ÆÙ÷"´m§ô#)öA€­ßV‘Âÿ´srZC#)î:!@Ô|qí Û”ìDð¤oBø||Ì`ÎÏÊ<®G #ébñ¬Êe«Ú¨y¶ý@ŸXa{ÕãÕa,æ?¡œ‰]ŽÂívS:vÊμÂ?ï×é™àxIoG'üí)£ŸÎúczãŸÎúwüöX½ÂTù-fi¦²J3ÜNØ"‡ƒäÆ@#4pV¿ú„îoѵ¦ …#ó°…ê!ø^y{´—ùŽa¡ÿîø¸zBqù»úuzúžù†i?ÖlÈïîïŸíìÿ×ÎÙþÑ¡Ç5«kwÊM7C¹LØ6![Ð~.…ØÂö¿h)éMU½ÅÝÖ¬ä$4Žgmæ¨>eë wšº’Qb Yè†Ôxmª›ú uK Cb*3£N¾í_À8FF¯ÈxIÖ8?OõŽ¹Õ«9ÖVñ«]èù£wgVÌc~$£¤Œâ+a†?æÛ(j‚‚FT$j­\üdçÊÁêà×b®‘á¤?Š„:jìbõ·'à´!珞²ð³lâ0#4ÛÅÑ“e·k+mÜŸ;’66T2ÅIßi’Å}¼#4a¡|9;í ©…$׎Ö#L›t”OŸœèxw8ÉÁáRRWü¹ø^)@­Ú½4ˬ€~æ"…uµ×e‘“„QjþלÖ\·o©5jäØžÛàG5ˆVךÌ3Ç™LÑ¿iE‚Zaì/¦–d”"â£\fI8ÆM$mN$W<¼¦`¹Œj2Tj’ `ý!M…íîaM¥ˆ÷6U[¬Z#*UX#L#*èÈÄ€…X7Nø‘bI#ð9ÝŠ%Z+©OÚÖô#N¬ü~¼f¨DˆêÛ·†„×®¥¨FЈF纸+@Bmµ„|¸34u JϸV#*ΩžuC:Éæ‰äI®´Õ •„ ™êýQöÙ\àœé5ú­†7Ûš²=”(j…\ßÓÀe Ðô”‚ôC© Úú´W$æÊŒ»³ŠÞAÎN¨Y=ÞŠ´å£6+~e„(s6¸µ}Ò§añÉÛ“«'VˆŠ©_ìØ*\ÂÞ¤s°Ò;©%­¤<ØÓ»)rèâZûrÿpoÿD W\Ò½G÷@&:«®ÚÑ‘¹-åøÄAÎ8n©Ñ æßÍ~á>I:)2âv ö@g·9ýqÿ8~[Õ{ž¼;„0ÛÜDð²fm–5v%lö[qsîîzý¡æ'Wí^Ø|‹©ÃÄ÷¡bLZ°æ Š¼´ÇÀʾ”L/䶺r¼\•Í-¿i?rðªvy\½D;!’êQ ^CZ›°å¡­´¿ õPuàE™®[ÚÆ%É0” Ê9ep¢AEhs–7x$W6#*µj‡aR3‰˜P|&†Y °†…Ï%ÿ¹üþ?€ÿ¼¾ùìñzVþóô‹üç¯çÿc¾Gú^Fòó›®…`Âkéy®AÿE#4Ê{ ’sÓ)÷û§J1ȱú"Çn¾y#*imÇ–bÑ…ˆ8cÙwð6‚­æé£>ía$ú\e„,dÝN¼W}ùŽ>ÿƒ4sá£[H„žÇ)/º;õ1/â¼¼Ø}ÊC2³cÎËb’›s^nZ×Få‡wññ0Ñ]¯tóÑèè~·&NÞé ©õTHä;ßýU)ÌRSÉd€>XJ{Dµ§•Ô!³#*å!wܶõƒÆEˆ~ž¬ zP¿ñ¯áxû¼µœWè½;÷b#)&t(^ ÛLrVY6ׇ<7…¸¥š€šð¦)Ž;iO*¡$P%šw9Ò4ŠLýJ¼µ)ÖÌgÚÈÔ‰…¾fi°B*¯ûèki›Ý]G”ŒÕ•èP›Z•b•®k>u‹_ñ{÷ݪ!µ˜wƒ}äÞ…uò.È °C²sõÏ»9söÿFÒÿìÿO62÷?O7¾Üÿüåîð<’Ýô+| R‘ŒóQë„õ°k>~Á$ ØÔxwNõÙwçômž8_¼sš>%CˆuD†ƒ£sÓ‘à-Þ…T †ø¥áOÂNjgÒÿM”­«¶/`}Vuº#)ÿ\yG #)¯î‰ßÚ­v1¿cÑ‘jÄgnSµÅ‡nL@§î¼ãözŽ;‚M¥YòW¿ÿ¿ë3o÷ù|¶™¦ÿOŸ>[ÿBÿ¿œÿþðóŸLøŇÀš¯â¡«Äo¿¶1÷D¨Î'÷ å,çœ#*UÚÏx@üŸv8\tðûM'Ä…‡¿ßvL\xümgÅLÄÏ}`ÌwjÌDÊ=:æfEçÇÜ/ÙCdz†>à$ùúðœ$_qÂbßöÿ—#*9:¢r½Aµ}Zɺ5-ä¼Êyø‰#*ÛOn` Ä1tânûÁóõß\¹kr4€ŒfL=¥)¨B{Vû³A[®¼¶äÆ›¾Šå~ ô4â8ooê+PDÛ¨‹¥"½öôÒ5] FÈ7Ýd¯¤@„„ý ¡kál^º¾¼&dŸG‘¿îÏ?©ëޣú¼½Ý?<:I…3·ûæ úSõ#)?<à8¯ˆÿï<Ó»¤;œwºZ2†Õ‡q2»á?UmÖáÿZjzÿ©üßæfFÿóé“o¿øükê~g\GËêSw¥)ëb¶ }›-"Ëý;8tM§?Ñ:3ÉdH†°lLS%C&þ’&òGìPè¦Òʱ#)¨´gmŸ¿æš mª|žc@*¦´~£Y.(paa·¨šyoq¼#*zödÒ°(ï=8ÚG¾ïs²ÿÄO›÷«Ùä&­#4nµÃP. `¶a‰À­;½A©8º^ “ÍbðƒÙyÖáùcá#,`tUÌYcp9ä ¤ˆ †`!M]Rº¨¥ÑB:¥"Åårì‚ ¤%ST^Ý39¦k¿1'×ÂÇö’Y¼´Ä¶–¥Bb¹ÃìK‡"€¡iÞ¶¼–ºÕ˜µ8¡0!´bI™ÉGuƒJË×ùËoÈæ²1ihH>:à‰˜ïÉÎÉ?ÎOãã|1ÃøŸbÿñ‡0#)‹÷ÿMø_ÆþóÙÓ/òÿ¿ˆü'çÉ|zù$/Åóü!»Žá<ñêdçõÛêáYä{ò?¡xDÏ*´#*‡’ìWßÎbÓäq|rôúdç­÷vgÿÐäQ=ÜÃ$–¤©yTGìk"«É·ƒ´uÐ-KÈW»÷ÚB¾²m!_¡-ä«]Njl!UÙy¶yb§­$ÓÌgÈnq„ÎB ÇÎ\G®NÚ¼ÒVð³Ì+v wŽ1¦«y1–ÊKRÞd#´>‹Í<P–ÇÙâÇ«ÐÅÐtNŠÎÑ“àùbY#4…­éH‹Crc>,že—s_̽l¼4W¡ŽÈi‡Û)^Bq#*Ö:™Ç<t€ÉЬG§i´!}û§dˆ”¥Ý"H%ПSÅf¦v¤.(¿ŽÅèE¡ÂñXÞF³îë[JÁÐþ’JER'6…P,UÿLªåùÅè¯uÕ3߯Ûyd«GÕ²º8uéGÀ<Úá¹5ïš~‚9wµËº î+^/ ÎŽÖÐ+µ452cÑ­/[þ„ʯç-ØÜež^¸þ¢>r…ßnu2ÖÜvŽeÎ!/§_ô ï¦Be™OB÷ßkâF°OÃé¤Ì)BMÒRÃBÝâ:n³(CM2b$—rc:–y%¼ùÝ’á/º#4ÈôZªù—ÕsêªZ4¯ÎËvù‚°™ƒ9ý0‡¤Å­i¿Ó ,M?l|#r×—#*ßñ\àjåƃ Ûæ•ã+>r q »{ã#>È/}‘_œóèÌAyŸè+3A,¤/VâxPƒå•ï1Þ'ÐÔWÀA•?´½A»®g¨zžªåÜ £#*e²€´G3F«Gø“ëæÅÙ |<á.'x¾õô!ÖC1Ë%*c8&ÂçÖŽànPC*jAw`aW)kGè´ˆ4®—\àr0L»úΤ“F¥SÞ¶ÂkÄÏåØç“=!8®¬ŠYÀ.~–s3Ðœè±S̹ۡÄÄ*¤nè$×¢QÉëÝÝxïdÿ§êI K«j_ñø¿ì»7ÈéC¼ã£ÓýŸå,®þ|æD<?]=’¤b!Mbìq;R¹Ñœmº›ÏY¼tº&mq´9#ˆ*è™60î–#)|;ûB;Ë{bªir7ÅW#4‚9Ý,'“jP6mkGFsˆÝu/͵üê¥ù'k…ª1%/G’’œ`ù–¯bèÜ<”%>[?¹ŽSæ‰{lž‹ÍÏÃ<þms‡µdïYµY=g•þv'!#4~/oÎThgUF#4šyqL¼<ÜÊ®jÀËõÑ¥Wf§ÑíAeÖ¥¹±ã£--¶¹ãç•p=šµ8@øªëå‘ øG³‚q»h¶ÀýׇG'Õ½¨6†ÕÕ\®ø!>5Ç“Z£üïò­—¿?¯ÔWÎ+Cùò5ÿž|?w/úÝ=쟞mq‡GðT/0’1#*rä&(Aί·!Ì­3žH-¦°€oòóu{<h÷Ô[£uÓuÕ[?¹#4ó3™é@z>Èã°×b–8(È d«!Æ¿l6W ?OòºÊ¤N Ý˜d"²#*|L÷Æq÷r0·õª×X¶Ùü…ütOÑЉùd‚KÑìZœ+”4¡ÒºƒF/–UUw©EZ@òÒµˆ¥ ZLßB«m‹ïY…ÓãÝj|t|æ’ô_ʵƒ“é?ÿ]G|Éãù±NꢣèÔ`2¼ÆKfàƒÇ!=£i¸Ôƒ¹-w#)(NÀÈǼsB#4tlm­ùFp#)6>cDì¥ÂÕÔÅ©ÉÃ%HΦ=Ò‘¦üIDµf¨j…ÜšOœš‡bó;‰&ˆé(¦ŸÃæf‹qät­XB±ŒèR5»³³•[تô–ö ©ê4ö}nÈÔ™d‡:²Av”‹ÒAÀ¿k4Lº3µopI®º@¾ñ&<¦~CûÜŠèFÐ’”KÉ7Z³ÏYv–­ï¢E2o¿ojÏx4i´ZTñEÇŠõOŸ1r¢àQƒ³˜l©ë•lÇ‹¼ÃÀëöd"@äÌFN“n_,R-Œ¹ûå<›Ÿ,è¦Ãb"æõˆ#*aG?âÍÙ¨•„ »÷úöj–ÄÕ#*Ø<µíù©©Ñiu'¨¥€Z79U?‡ª§Ut‚ w1¼öJËIà/ûžxÿà)çàÀš}ÅžÏ?½ÉÈ«`ªh4—EŠV¸ÏÌÅ]$ggJ G\!N·f¹x/dddM ƒ‚‚ß9|b­]²¯FßVT Ôù!ÿÉt·Ð.!Ç`2Û”žUÙÚÂ?å-k=äœéï\¨C¯‘xm³s–® ©ÝµCetL[‡Œ†Éìç.0rm›EÅÉЮp4:RB…éæDÞtuŒ˜îÓ÷R@ŒËce«,À*Ò9Àî½;#‰ÿîÑ^5*‹ç¾yH¦cˆ…Yv†Ã Òdâ/‚P¬/9rÄ S@9N¨R èúÕ[.±|õ#*ãdÛã !·°Á9QRHD@Ò#)Éq.Hd#)EÏÉ’yù™Òs_þ‘*ý7¡Bè¶*KZPr<¬:7F%_¥3ú†ð49É'—*‰R<Áˆt“Ïr@‚ýPF „”õÆM¡ÆŠžsûz²ª‡?¥ñ´×ŽRy‡@×aÍ£æGwPiú!¹×ãÄÛqŒ 5Žƒä£H7åãÌ4I¢é èrG™ävv~&¥#äQIU TR”ö“ã]• nÁñ/â6%寉\ðÑù8Ö.Ÿûª<GžÁ$ib`‘$iÅ°HàYE9#²“¨iØš†M«¼6MK OÁ|iä"r,Õ JÁêt•^”ò§8ÆC2Ž}î5K¬š÷¹%’Ù©ëyüH6SÅ%üî¬IÈ–q•i{EQ7‚­tr¯¤xžâ<kQü¦a}t‰<›DÖ¢&@w?ÝæHX2lP­n1@óh_z#*†ðã#y·_³Ô/Ê™>Óz?Óq^옣»T7Jwöïä8ÜN¹Ô =ý·ÜD©}P\VÝ©,›3@M_ô:ÒËò¹fíyÆ1va”e_Uùš}bt 'ü]aÔ¸DË:qÎþ,Rõn‰ñ*…8TøŽ{®§ lYúD bµûKÉ‘Ä¿ñNiý‘ÎÏ#4vø) è'þ;³>ñÏû¤?ŠðyÞTî4K|k¯Í#Èæí1K´È#*‘úiUŠf£×ó „jƒ)ðûW0^-X<çT°°ãÃÝþD3ë@0KùY?:®¾=þþ‡ó&Mþi€›C¦3ªÚ¶wkùàã#ËÐIKUÔh¸#vÞöÛ‰„Žt+¹*¹Ò”zÛ÷dj™!D‰0™å!ŸòúÓ„ð½éˆâщ#)6Ý)g’/#*NåøNîS|ÁéVkr²ÍO­ß”%õÑ/Ä…ÀÿŒþߤ=ûóíÿ7Ÿ|ûmÖþÿÉýÿ¿„þß0 ˜€Ú`ÐáÁð­áZíOW„§‹îÅtÐuÜ(ýós„DAUžm8“A”༆!XÅíÚ/çµóz}%8¯ûh÷ö–7wÉÈY%ôF•Y0iá0Z¦Pô5³ -A>â.YÒ—ð“æJMÕé@§64d›ö h¡ž”|¬¹rd…_åØ,Æ#*u|êV.Žóñ;¸Òj_LUR°åÁ΂»Çr‚L抓ÊN—k<jŒa£HaUbÄUã"³ÓÝR~Ñ°›*—ZúÜéÚ×ûuN¥šîf­ªÉ3Q;Ú¹rg؃6F:ÓÃŽJ¶(¹‚»uÆ]&’g°Ý’“°É  @õüŒZ„Q=B—?~ÐýM&·°ASNœ‰Cg%Ï›‘StìCNïNøDt,¯Ô{5èu‘™]Ý–xºþú&ìOf"t›ÉMÎ;^)w襨;¸ë%#4G_k”ÎkjæŸ×ƒ¿Zë2ÿ¨Ã%NLh@ÊdÔ‡ÐðU&Úeo˜$ä×(õüüoƒöù~«R0´äìâtHipb cÆ.ÔG®)Lf“xyVý(øIƒUœžì¾Ú?¨BÍéæQ+EšQF2lÆ1 ¶–ªrÊÄ™£¸Õ•Ž½²RX¢HýÆu›Ý‚¡›àýÃ=®”~¹·^NÖ©šNàÔÎê÷ÅU|}ptzºs²_½·Vn–­šI¥ë÷#)„I›©>>9z{|FÇ?³ê\ I!sB*Œ›€d:eZHŽ#47;nLg.°Š¢ã|ËÞø NzÕþÖÐüÅ".+éª#)s*éìs6€¥Ì#)%æÿ…€"¸Bmá' áBMÔåTü$¸ÂÔ|!ás(,ÔŽA†—Çp|À  Ä[¬ŽÐÁéÎÉì”YlóÜ}×Úx ‚Y“v{ÀO©íX µ\!–Ï/ÀLŽþÚ[?ˆÒíA<ù!cŒÜwÞ÷§½Iˆ;ÎÊ.\9J>õâÜQÛ{…F¨6YËC#*ÍÁÓqëx:7gØåpÊåú˜µ\Kë²4~9v#)ù$I[f[S[ÍÓ s«Å¢+ÃS¤X‹Ûñœ#*]_“ìx¤6Â'žI±=í?‰72µ˜ŽpFö¢3ÅhíB]9ÁNAídý–‘f›–‚òAÁÓ…XC´hÅÚýÍ-KV-¡suÛÝkÚHÚE(¥ãYÓžM+V.AÈ­®C¨œiŸWŒÃß.ÙøÛ–»sÉd^³ qçdÕ(yÝ@°«nÓIˆÄ¨Â Ρ~ ÝÌÅ™¢ä([ÃK• Ò¿F¹ßš£Å¹ü/²¼Œµ€—b˜"|¹äÐÁ,Tj^£sM¬n_EëÖjêV–\ÎÉ& s¦‹–±˜)]z–ìL¥äî 3Ì܉è±Ä¯9XÔöI6¼¼l£o‹Î°°h,)êA‰JejsŠ%9úÑ…žÞã~:‹Í~#)•P‰ øÞœDꋵ ¨ûb¾AG±›5½¨:mî1¾ÎÆ„Lv¶h³Õ9:¸ó.FäêIjôz¥¦£I­õQt+‡$<¢®¦4ÞÀ#I*Lù;Š#)ùq~õ5ß?<~wvêo¹]Ú¾<=›÷ñc*SáRMŸâL­m•ŸÔM<gÂúÔ‘¨E=ðRí ù¢UŸ z¿Ø”µØÉ™õV!¿“ÐGDez(Û;¿¿slAˆåjFæºúed%f š‰nÏs®ˆ•Åþ–‚°ú&>S€©ó/¦þjÃÓ#*´Òæ¸1¸l—6BdhTŠ`u#ÐnÝ;Û¹DÞüG/¼*©oüS&©›Züo»Tnjð:Vøï1}L4CÆoñJ±ÒP vb {5l¤‰:AS]HDÇ' CˆHW&ANqRRq猿5T=ÎÐ>u‘#)E Ù?ª4R7Âl›Gw8M’üâ¶#)—Ê¢%}ï0èâèªLU’GÅ9ÚÛKi2u›f\Fé±Hïû¼ÛŠN)k» L#õJ#4e#3¡1Á#$üSšMîVµAìÁE5%¥¶^þ¾Î±ÍÌ1§xkúŒ›$ÏM×ÖžhžÅ‘Tõ0„.¥Ur-ŒubþqæéäÁÿª#*×ze7Ý´‚„+†Ú’Ï<Ï,‹ïŽŒúýn’@Ó¨#*`éœa%š³µbÏÂfêfJsŸÆTÏ{Wx¤zNœqš‚h;=A€QžæÉ]»6# xyG¸z°jÒj+&\Ü+HK®Ì SfŠ;J̈WëÝœÜÅõüžgÉ’8ÈOzŒÖ׿9õÏÕ‡&æ±ûÐz#)=±(')Ñxx…Ž› qE“Œd³q O¸€I§l©9ÇWDv|Šõ’4ã4‰{#*ëê°yq5=´Cˆõ¶˜ûÐ!fws‚,²¥(ˆÍ ¬ó‚Û7ÜÕÛÜ×2í¼["fÉÈá VåÊ› =Q+ôUJ•ŠÎcº¬H×e«àsv¶{F&¯çq¤Z’aà\²ºðܤɭ›†{Ì‘¨Îc,xS²hóþ‘E’eý»R]Æ⺊ñ΢TSoâcÍPf}€vëVWçYÓ/.?älú÷³ñù\<,Ï…Œú.$w }¦¦È|€'¡±|›ÂÍ„ØJþ’#ɼ;¢-ä'kç×(\À¨Õù¤2ýÃŒZxoI³ö'$¤³µ©æ½Å´nº£Ä½²€Ñ÷~Ú?fðw|°süˆj6#4á=.OŽïà¼"#å«NƒGi•_·Šou–¿÷JU`ï•[ƒß_<|Ú\Ð|(q“ÛÏOŸ¯x£†Çˆ©f³ž½….»çv’™3 .^/¨‡¡˜&2Q#4¶MôÉ…È-#` eF“NæÓUñ͉ÔýÑDI\Õ!'õ•åß¹—e‘[7Nà‡nDGILଯà&kѵ¶vŠ¯b#=@/¬¶XxF‹AêÜnyC0y3‰p^Äö»sˆØì²sèÆ^ÌWà[&#y–&RQ8)ÜŒTåbãjU½êËA ÈV•P*‡æ†&’«mËTg™ý¶ÂMtn:i®E2/ywUÎw•Ovå Ós£?î†#4¤ƒ7Tª»³žÆ‹27ËaNþ¨ñŸ¿Z>‹²WqîÍì"²ì¹3jÔÇÙ±´G™²ÑN;•óO'ÐñnG› ÕpÊÔsH}Šò ¶l"7Qͺ¡#*íÛZÍ›‡z}˜'ó•$Z¸t#*WÂVp† }Ísj*¡¿r—@«‘9)­fãIº“±HœôëÖB®+cô•kîñÔ1¿›#)ŸSšéš‘6z©M¢t+2 Ì•ÊHߥäõ¨¾ZQ)œ+.›9ßÀyªÛòtñ¢¤Õ_­#4´SÛ‰wÙ«ÞM~a^wẛnrÕÙÍ_éÝŽ4V¼Ôrq“ÜõC| šÉ˜«½¼U”(×Â^E•9{T0,¹–ÜêÜ_´ZÀ÷–}}Êé’\jµùðþ°(o$&“"<<˜î¨a0‘#40­9]ň*i1#*ŒðmÞ(ÙÄ##4äz¦%/²x²‡/ÇňüMŒ*d¬Är“OÕƒ¿©F5òËÇ8H…Œÿ—Vó?áÿëéÓ´þï“g_ôÿ2øß®s—Æ8lýO.­fÄ¿qãÙjŠÏ=Ü Ñ†7kd¬ý{¸-RîŠW1ˆ¢òFʶ·È†:í–c,G§La[“ ûý¡8 pjî"¦1>£`¹í)¤N„•6ñËCAÛC8ĺƒGz7#)ŸŒ~·g H¬Tû‡».¨èžƒ¦‡ïY ½=¸©ã;è›{ø&?g¡8…{+=tïMug¯z‚D<ƶë›~‰[1ªxÄWíÚºùå"r7¥#ÞìP#9°L×Xæ½N!ZMퟡ7lÀm圀–~ÏŒ£úÁ¥ÿkÒâÐØ]zÀpýúìqÆþãÛõÇ_èÿ_Ãþcž'Èðˆ#)’-A¤âwáCkw‹a¾™HZÖÄb¥î I,½kéÎ1u Ia=±))+1u'±¹f¡œÞ•¨¸Ž¡¤J‚{\=9¨þ|æ+ùGÒò&~ÕàB*¶mQ8ϵ9›Í3Råú3UÛ…å,‘¦Î’éÅhke)­L#*»è@«Â: zSWÌ•PN",Ô.¯¨?Š”˜Î`BoHøôÝËãã^y0„ñœ ñ ’xeüé7FºìÝÙþÁi|öÏãêÛc-äÜž'æ´^^ùYüQìA퀋µèºè}$Râ5´²d‰jÜÒ7â40Ž_´¨\ š"iËš’ãùYëw×ØfcÚ÷°6s$ñ—19ä†áQö$BSZ8)ìB|ìMÛZÊ(k¶2”µKñ¶u50О7ä„iq`yµV,·‹¸ºpçö΋Ë7­óbè}ýËOŠ#ls΃oˆ­‘ª².¾\†EAÃ"ÌPê*äÉ°"[;šLG0I±;¡¼PÒ˱¬X)ÛáËs3v¡Žù¹dò” tÎAË}R­¢°ÿÏêÁÁÑ?Œõ9JògHØšªÕÃÏĨô[f-â#) «Šè°Ø¦”¢Ö³£OÍ_­ˆFD=ÎÃÏäëÌ·»w.ìœ(cTM¬/ÕüüÆãjµoÚ=M']9 ÍNÕzN`hÚ´›äÁÔvºÒVú,ØL*‰yÁRbëð4ôËoyƒÁûõ¶/3'dr^ô—“ºäÔ¹DšR‚_;¼ÎtJÄøÉ¢$?•…{Ç`—#éhe#4Óê¨ì`#*ïIº7´eø7ÐÿÃqOëAsŠH•êÍÍüu9ù¸VM¨Ø5Ž¤>µgD¦?úËèÎM…î®4ï`é Ú¶;w¸œê#—¼¹hÀ­Ól^ÙJ÷Z­±ØU"8ͼ۫.HƒØ®Ð×vNª*Ùî=5§#)È¿h¦‹NïÙ\dT¬Ž–FeÁûQä mæ6+—Êb«ZݱuMCNŽOvßìíŸP»"5‡tu’î„n?Úhg™d*VêŸâÉÜ_ÍÜêÑtbnAò+!ð!ò£ {* àÅñœWÆœËj+á[9ô„f—è”+r¶š«voù§£v³Û¹õ½I{<#)¦‚)Š$—`‘xØ\T®îÜyënÉÔn"ÞÔ£:zt“Ôëy˜ÂK(^·Éæ¨é*ýÙç¿&,Ä6^°þ™þžl<y¼žöÿóíú³/ç¿¿ˆÿ^LádÜh¶/Íë¼!Ùþ;Aæòy¾²bdŠEÑ~àQÇ#ÞÝÙ}SO÷ÿ«mÐ!Àr^ðñÑ1©ãøe¿#)‹wÊžf{Ý~wm<]/\ãÆE2ì¡û3æ#)ñf¸Õ·b±·N€õ§Ní#*›Þš„ÂNLê•P—yï&ì8σټê`îbè$2ÈK¢õöXs¿Ÿ'm|¿Dš5n ’èW”÷·üGP<Åí÷ò‚\è–ÿÍ7üÈáßDðLé–wGO|‡Á3#4ÿ…Ÿ8ü ¿èN$+~áäðŒ2Ï<ÿ·~DËvB¾t‚kÞù¤¾Rz±õÕÝòV oÝм»ngÀ?w¸ Ý!Ï~l üU¶îbµÎŽæî¦}„H5#*•Se%8¯|M·ŒÓ¼»sZ½CûÛw°-ÃpX³~£i׫ø‹ hÇõó+EŠÒ™RUWQ âv\_©•ïâsEâá éÚ·ÿrž¬` ü¤ªEɽ”5<üo¼r>`£a§ÒMàØ“ãµµÊÊ‹¯ïÖÎWà÷|eíî܇ž=?¯ÜÕ~l଴rîß­°")ë½£³ƒƒTÏ঻ÕJþ‹þj#¼ :øÅËÌwG¥bT^{ä—‚çÛÅpìõßçw¿Ôê¿Â6^/4¯`–$M˜€ëþÖ:L2ë[˜ þÖw¡ò{˜ŽþÖ|èÀÏ0¥ð³ú0{6‡Ðrˆ²ýâÖãï?ß½ü®_8:Žü#¿°¿G®»ÎüÂéÙ l¾~a÷Í<4ýÂdxÓ‘=ªA¢¾‡;<:Fà…‘ú8.‹ëµÙÏu4оj϶a;;åW¨ç¾`àûi£·±]›¾ë ‚ÂÁÊ ƒ›WñvIu!ôêjàßá‡ÁÆöyk5¨UÛ”'”µ¾][-×a0Zœc§7lL °óŠ³¤T›jå¼Bq¬´VÚà…N½‘JýËÄÔ+NêÍüÔ›nêas²½¾BU¬o«Zb»7u»¡›`d^Kµ_Šççõ;h9Ïß^%ø¾¼µ¼u÷üyt·½ÝAàÿðz÷|ùî9„cð~X=_…?Ñ]¹|WÞ¾+CÈJt·¸[†¿ÛwQt÷Í7wßÀø?ü¿Dw[Ûw¢»¯¾º«—΃ó_Ï?"$Åóíóí—ó•óÕo¢­G_ý.¯—!ð¿Ï+u?$L&cMÛ+ëN¤&µ"6y9Ù^NyŽ0GpD¦‰®ßÔtד+Ô3)¨bÐßhⱸ݊`ª¸¼E“–HÐ(x›ú…äº;á³Ü=À~Õ+õIòõÅÞ™|TúŒ"Í7G@ßó§ðfMTIŽpƒYñÖ¼e »«^þ>îmoã¯÷<ò¶á?xŽ"ï’ìo¼; ù7ð€”:„­‡Ô3Âä¶OŠ#4íÁ´ªim`ÁQÓÃö5Ö¡6­G3iLkÚl#Æ[Rºiôâ#*”Å›ôwH(ç"\hDë«A‹Π7µ ¡!<E0‰ I³™ŸæB§ÙÄãpÄeRO¶ —©›QcùBD@ºªBWíв#4-Û¡+*tÅ]S¡kvè/*ô;þã`¬i#Š.ëã¢Âáƒl¢œþÎN§ã蔊Qœ¼¾±ò¢Ý™3ûÆÎìÉÄàÜð#)ïd÷(RQ ab?r[ñ‹Š9s«ø‹ë¹ÓÏÝ,ž;ßœOÛö§m÷““åv*K•gãùs»¶U†íí Kb#4,”ZfM£³ºgwK™TT™Ø*Çá<ýv4¹õPPCÒUI‡bTÞPOŠ°)Pw)ŠŽŽEëï*Uòd:˜ h}Dþ‹ºüÃöÝçhÅ(•ÿ™<»ÚœQg»¤s|ƒÉ ™—9[1?ÐEŠ±vÊØžúͪ¢ÑªdÔ•£$•×=cÒhó€Œò9jfbs0A :*Œƒˆ€ýÛcêôÚÆV·Ø؇ڻº±UתC7zI[h¼jàj阼̗$«('ª*ͦk~yÃ1#*„ ”Jë<=8Oœ§Œ¨2ÁÖÙ¼þûÁyý·ÊÄä!½Ÿ×ùJÉm8b'J=VMR ªÌ"à£,!äM(å›Ä`YQÖí(\EÕXPµôÔ4øÍk3ÀÅ—Ó—A&K3Ãjõ‡,Ø03ã¬iëN¹éµ½þg¬í‡¬[iKGºŸ$üþÕŽÊÔ2yÙpþê·Êɉf‰ÙnÎ]<î°säÈ^ê8(‡› ·ÌZ Ï#¨¯ª ú¦ž.<\›ôxåõ,Äy}CüÕÍf};â§ú笪éMøðxn?Ñ×ti›!¥¹Ù¼§¼ ¤ ª÷Ǻü¼žh*Z,Ëô…Å[¶h¨Õa¯fM"4Ž³ª#)#0“L©ûï¶JK¦#*(‚† Æ7#*[ .UÅ"t%Fo¢‘b%¥ÉF8Ù$¡Ò†#) !¬î±íGÇÄFM6åxå#*xPÞ‹8‘NŒY’˜€0?ü$-}r“ÃW»¡ÔXwoÍ-ØÆ<BÉíðZCq¡xÝöej(åƀ礴ÖtïÞ7jõU(|£îŒ‘ôôʯ“ð¢@[D¼‘àåѹ•³6ªÐ¥¢œ¢Š4c[ížgh"‘ Ù¤MÎMk»â¹Éæ#*ˆÄI"š@9:ßö÷õ  ‰'f.ãÀ¢¶nesë–‰óùj¦?/Ú„¹s‘ Û‰ö7bs$îx85KÄt T–=O#¼ˆÚ3”çNPØ6ª8XËÐKtoôÄNLfCôžéo0á²åš¯ëõwmŒãô,œÓ§gX$3wÚb=oWu- {«OFLCúí `ÝE?R2(Ù}±1§TÙa3¶#wúæ36j“(yd:‡ë³tIÈu“+„êô—…üÏ›ý¸!u¹'3?X–Î=U }È!4úª}ših˜Á™ÃÚX{å‚e`-+;cÃÐRq¸S%¥ $¢A¼¬œ4$,ЦÃM‘ª¯ÊÍ€|ápjE#õ9È93Y™†N¦ä02›ñ|†–"ÔÌt@úÖˆÜ[£Ì¥Œ`îé0;î}}›3ïm+¦b_ï¡`ýFõja¦ì#4ZåÒTè™x‚>¢#›DЧ9óó_4?™6¨)ªV’PŒåÎKjÅW6ßü¯Õ#*;3Ú¤%‡Õº»÷;_6êH`TYÓð:‰pˆkú[ÍMV¯ë™#)m×cƒpÃü`6Yÿ²GÚ#*N©‰×r§é˜˜¾¥úÀ´e#Â8µòFÝZ¿«{>©¸4.qIÕ'Ê0xõVܨÚ3 ~Õlr<qAGæeÆOè€8þi'Þ9y}Çf)-Ý4bê–ši9ZèµÎViê3âØ‹æHv{Ô¹£I9™à)Ëj££2 ²ŸT£´9p#)/%NN†£á¨äD¥ÚAŸÛVôÒŽ!ƒÌœÂ/O›'êËfÝ¡¼yìÎ\= n±÷ ‘oìûÑä¹6ž›ƒV#iG>®æ‚§÷s¬S‹gÛôòÖNÞʧê,—7ÂÈ9¼ÑÜ©l×v~euóÌˆÍ `‹žåþ òX3êîå@¼ÁMãó£ê¨Â궹‡˜Z=xˆðI°–<9[M†TÌ´1i‹,I ç#$Ȳׂµ¬YìEEQ,~³NŸ–µ<›.I‚G°ï1â¶Í•‹öID•§ýb&ò1¾W~Ð%"”Dð¯Ò#4,w¬96HË<³—윀&ÀˆôDhK&#aÀ„¿Av¢ öi^ýŠÇæbõAbî#%¢\RYãƒË“PzÖëŒrYg;³ãÙ ‹aôîáR¦Ýb–w–¾ÁàJ[µÌ©™GŠzóùjF°«x&¨T*Z •©š.ÿéO(zÑY„CÔk#:Ι#*é»ßÔ6¯´™íz«#4ªÉb‘àÓuŒèÛhºx¹\ã¾ EtY·”.Y bè1Rjã“<nÂZ­’ Î{:ßk%ÿŒ þ1¬cQ É襔ž—^lUV‚mR‡b ú˜ŠJHJ\þšZö#“¥MØX̘g}³½a)„C8žÔñgc‹ömÚŠR´gÞþSóQuLëNÚ¬˜‰üù `A]Ù“äD;u¥™e…-,Š6DÊ/\ ±aÀP[}ì}Å#åSC`%"í¹ÏŒ•׶­ï#*ð{šK¯ô0`T‚OAe,ÏÛ¾uíƒÐÊ…ßÖNƒeú,Šž«œÍÝÝ“ F‰ŠIÞ#*o0…Ã(æ#;죈´x,ľqKÆ´Ñ ómJ/‹ý-k–Cœ(zÂœ.Ä{Œ,?wNåª=ku/Ö«µ¥aÄÍ­z¸ñÌša™´à›•nB™”Ö#4VaÈ”¿i—°nãÄ=7Ã#*%÷R ¶»º¾[«Ýº[ˆ^’ð)TÕâˆáw¶±Ž²ùW·Ï¬EUkÖ‰ÿíÛÿßÞ³ö¶qc»_£_1WÙ‘ê‘jgû#)ŒN4u“ Í±Ó[@k di«Ö«£G,,òß—çEÎp$¥›{[#*`k†<$_‡äy8eþ}Zš&ã™Eìw;ÖÊ©f ›2 ‹6”ixEépQö_@r7Î…éTL´Û±ªl&C4Í"6X·u:ÁiRîBÖΖ p•ƒ\´Ë,’Âu"(»»#‡.úzm™Fn.‹UÞеe²1ž¡S]ƒ”§JvJFjFˆ(ŸË³Ë„V<, ú5É­˜n J3@7buÊI(÷r<=Ö°PeÁ1JFª¥›ÝN¬S5'¬ƒÆR(ó1¸ê†·/âv¹¶å›ÉûîBq#*§$¥ëFó#)Bå(S.įe± Ab7¸ž®yGÁÌš&Q=fV˜®—ÑQ÷BÎ!uïÝ(5¦tŠóÙ"Ý°óÞÔšÍPVù÷Ù(Îb¶xx\ˆï“)ÔÖ¦wj .“MÏüàÍe£ø ôéö:­ß´½*“@ô Ã6-Z³«_r²6 ´È2Ô>Íœ6&ª´â=V²#4ˆ¤@E¼â0…a´öÜ=6úuÍ|»oÃÑæ 'µv Á‚a.>Y@K#4Ï#)Q‡®#4°˜‚ÉÃÁ­Jàзofµñã^;¡¼Ñ#)(I²)±þÔ \/ò¥3º ùPÂÈjäà&f¾¡2KÖDÜÿz&]0#*+½.ﺬe‘a0Ú,Újbsgj6G7.VØ*I¼CmnóMÚò1 ¬?ºg@k×3z¿ú:Kva'oÑ2a‰™ŒFã¡iX¥¥Ä¹Z—-8–`#)‚g³ë–­üÕxè<ñü'sG˜E1ÀwbKÉjd=$¥‚j6m;uÁ],é‚®ù®C×Ãב,EþÌçÖp-68›`J%·&(v4mîè/ ´“Él+³Ýžö¾µT¯· \£ä$lj¸#)2Âæ Eê󟬛ÚS{3¥ÅÔ\sªRu¨¶=‡l‚60h¦^W øñ›Z7IîÊ3Œ0á^a?ƒ¶nþ ³_¡åŠ”ê!Õ°s‰W%6Ή`¢g&iÏ=eÄÙð”Ø´7'VÜaÜá'{®Ý-HÕvèQ`{7å^ŠÅ‰*+¨è¡c6pB\òÀðžeó´b¤[ ¶#)¬%k3°)xÈ`€sÊ2÷Û$èqÕ–ÜQ£»X]WÌ;à‘˜Á|ŽQ ¼m#í0'UgââÝ–‹hë×h¯…þö•ðòÒPÒzª]ÄÝ]hP)•Âª¼~#ZïgD aÝXÁ#4Ž(T,Ï)-=1ЫôQŸŽáá®Ý¯±1Åv€Û Ó*1A§"–ô¾j·^.B¸ˆ•ù<ÍdŒæM½®f<ž´1n­Sëc€¼^dìB7Œ¢±îR¶Í¥Áö#*#”Lþ¡¸èûå<ñ‡#*-”k$Ü®6Šø¡aò"ºî›L‡ÖêSðë2gnÊ`cvçHý/ÆÌ:’PW¿X*VˬRØ ‚DÓãS2‘µF`Û¢Mxà´äÙÙ”iIw&rXÁ¬™?K#4‰xüîì{3¤ÈŠ&H™•¶#4¤Í ~_¯Ö¹×Š)5Ô†4ñÔÎÄ]*,¸…[õÚ©ÊÑÞSx7Ÿ¦<ü´=E×óå¾f\¹k/íGÎÞ1ù{ªäÞé8]ËîAd¨Z­µ¿d„cTôS9Dlöx•Çn3ʪ7v)Å”p:ÌÚ:~DÐ}¡BÂa#)ÜŸºK²‡*HüÄn~Oc¹aÆïE¨ºkw0Œh•"¨4)øà‘¬Á¥‹-„†;~ ?y¢i$UÖRfŸ §éï‚”.°'o)>0a. BERÁ³¼obÀÚiùØp®4guŽ «MÌã›´ÈÙãÜÔ¸WîC^ÑÕ­'2R•B#bìºã'F¦„%E•H<ÔqŒJÆDVbûôp{L´OSàÈïˆó>8ð´*›Gç ÒÖ©'oiP¥‰Ïiìö¹‡Ð%äD×·vPxH®>é8’#)ð՜éð$ËZ6I xÒeV-åë7+D䈴ý[:t™Áˆú‹(·‡Æ©f•GZ#4ÏÁ GË,õèå8×ÄzÞø#4ÝÚÈ] •O=¿ÔVsÓú$^²1îT†Óm;³ÿB± ^Û‘êf:ïNQ?b;sÑb5¸ò5ÍÄü»»kÂ*ה⚧Q|ßG….n”%q¦LÇj€üQ¯„½o’|Ž*æ¤b¶@ݹ|{w‘MeD`EÈ;ç¹Ó9p芖øBœÌS{äi jcY¿Â†qnU±*ï$Û”œâ9<ýÛ_äñí?›×ŸÞ#)èvû/¾<ùâ«ŠýÏì?ÿUìòˆ9/¡†ì¿<1\¹áÏ4 Jv`Ä<(M“ ,Ûl¸7“Ûöô#*Zs Ö˜å>¨ý|JaVŠbqcx'güÒžùšeëzt§®Þ}G’NÕ”Œ·jJµg*Ö+ÃZ[š:­=€)㳧“RÖ4úDå¼¾ru¥Ä]®s6púr­hp›i<·p§¦ÀUar:ý˜½Á£™A¶Í#4iç˜3ÓâBd:…èQY åy©=—tŸ‚Yì§g/_<~sþìñÙë7gß?ÿ9%ZùÞ|1>#*¹ØúkÀö)•-¦OKxú6PÑOV/c'å0ýռiÕ£¢YžÞ¸M„©”3^ J|àGZc2<I›È°E'Åw²í=7å÷[èÔ¤ŒïGœß4Ã<°ÓÓ¼T”“±ÃÏßî¦Àðäwù cOå`Âñ¤Ýð¶ôú®çÞ ãøEøÆT¨ùÏ© ¹_.‰oa¼à“ËîûÂpç­A›(ò L‘«Ùp=üý rR%T4D“íÚ¹ ‹,ðê-A¢1Ê@—æNƒßŽú¼1DŠ'ðt†lÞk§Kʼ4YºÀ]S%B*kÈ’N#)ÿ%Ãî”~“˜POéÂ&„ßœ°ÛƧ¦ôiJÔŸf=Ó'ªbÑ”®JLßåx—\ˆŸÊÛ‡MQO|À MéÛ(×~@¡ð¹ØÄÇ&¢/?N’ýw6§m> f¹qUCZÚxíi‰ä5«¥–׺–l~#;úíHé7º#j]ãÌ:îz„¬âR]ÁUÃÈú½mœÜÚ¦@«½²â¦æ–Ä@”¨i=Ãçº'u©x•bK ûcÈ1|Ž&7JÅöê8[åRØÁ_Ú¥*˜-¦â´ú⇳—o_œgç¯Þ¾yr–†—r‡ÃPkî„—ûÔ`Ëõ[¾[f!îjVdÃÜ°EÞò‹bKºnYôÀ<ð¹IÓ‘àâñ›§g©ÍW»3eƒ¯V¸ˆ1’ñHÕ—Ïl+³XNJnçÙP­ÌŽ#)(–—µZç覛ØÖQƒ¶•¦‚7Ów:×øæOø&ßüyß„â›?ýw:9Ãz«@§³æŒ½ÅÀ{Ð6ë5gífh?>°ü%Ö!!*A—¤:uáppÁ¬Ò*Åê_e²¦(<Qðí`—xõúâù«—çi±96Îв̋NßÑG.ýx1Ìš¨n§Ø]žujíýkDÀ„±J8#*c2õèÜÊôÿëç/˜þ¯Y‹Mm–f›yyp“Oú ›˜‰2{p™,¥¥k;µbãÅ«'Šp8z¯D§Cï§=ïÓZ–#˜~Mv“Añ&xü6ïò 9jHË«MIÄϞ͋bDÒìèä€}µ·îÑd†šÍ®0‚óîæ}+ËÒ.×Ý/7µo¿­±<jPP¹Á#¼ÒB/é•1}XÑíRƒ¬R«îîH¥i°3Zݹ`´t²[AZO^½x#*R‹çOž½x|¾¥ ßNAiQùSžžK;ò€Š:8+tXá¥#Áïû uZ0\’sÕlïìdj´1÷ä„*ìN ßÿœ=q8é¹Tµ} ÿ„qá½Ã¶q#Þ½›Œãý˜ʵ]­Kuöß^“müG¹ÿËqxj „8a^ÔÂ5¿ùŸN'zÄßÌ>ýa3b¦ÀDR÷Âaðš‚£è›G ýð(#*Ó‚_‰î£3ƒÙKC¾Gæ›`aXk}4#*nü~Â#)Gä‡Å…¯&ü9e\ø9•HØQè7Ÿ{è™õ|[“î"»¬ñL%ÚWP$o˜pí¢ïmà /Q!Œ`iXQ²­,"Áè„K´…Ñn²Wô 2R\ •2Íåò#*õUJyðûßQO^ú´Ø2Œ5TÝ,j›£×jvx$_xÍ#5ÄwŒq&¯CÒ?35ƒ»‹m·ÈÛq벪Åþ§Ç?>ÿîñ… Ÿ½z{ñú­Ã.©ÆìI&xa¤20”×¼­«ñPª¡áÜj´È¸¡ÔÑJyzy”|»ã‰W#*yÛè }±ŽŠ´ä£Ëá¸c€»OÈ'+£[äï@‚¶I`NÄ~[!™øU&†™ã a…A#)N—ÛÄØ/oˆ¡§[Ð{•@'…8G6-qI”ÄoçftÁ‚X^NI"y}ÈÃó$]=ô«xÔƒ$â ~ß/¦Úeû#4ÊÍ÷(U—é7&¥€fpLÅùÙÅÅó—OÏ©­¾{þ¦<¡köÙÕ 0-‹©E­Å#*ÖিΣ«<ǹÍÔ%ꯖ³‰!$tÅM…Çh‹h¨7gœjYìÌ‹jÉ×r–Z¼ RÌ&©Ïò³Ò¯l¯ÖŒP0‰·ôFÖwPV«9Š¦S¥$ÛF[#4°J6"42F)òl>[,Áò@«n`×TM„<Þΰ´lÔì‹IÔ¹–m^xúýýïQš>˜åtXl:&»·Ç4™,g ±±½°òÞÒs´÷N7ä¬|nßÆeeÝ$µ§ óÞoΈÿûHîû#*HKc‰õlöc¾c‹½õjÈ[›…“ÇiÔ^ïe°áß`D¯Aº7+‘¯ö–oË5œÚŽÙêÔ5Ò•!Æ8÷ŽaGV2U!UÖîûÓÑÎ+ÌRá\Å#4­H>f˜|üŸÌ9P¾›-x^3à{Îh íÏgÚ•»§éï/r$û—”Ÿ³¼¸4m‡!K™Á²>᲌EÂíY#*˜™¯Pª#*ãÔÊ€í¾½}Oº’·ï{ñàý0¾°ef>qF„¨_W#8›MYì¡ûí«‹gt-ÈÜÉbuew¹­=kˆ·‡¥OÆ.ï sè¿ùt0ÊY[µt‡X&KùŽÑÒ#Á<f"sn¢°u‘)*9ÉK>ûìö}›û8+N[!”iôd¾=º4lè#4”Â2c4TP3ÐÀX r»àbµIÅòˆ§ÖĹˆ•#c²`Çå1èÎåËùJ{Âe»Y³›;¾¬´¸ÉÇãP¦]G±ioÞ²£ßRïÊûƒî |éNnNa¦„Ÿ¦Ð“ºByq…î3ðœYL(vœ:°¡5 M¿5í!ìÁGUR<Ä‚ V 9s-û«/Éhló]Ë©;Aï«•kÿ` r,.Ùóòo]݃?çÆ~«§×v=rrЦ.òbnZ&WþaY>"¨Á´Äðí$HéhOTb½Äç§i 4#)m¶¢ŸíÌX2h"ñB6AK¤=FvÛ.+°‰ˆ•;ÇJ:ÀÉðª^†7”t’Ah›HÂ!®EQœm&sFÞ’À“Øô¤‚ °÷÷œ”MBdÐ=6[E!ºô‰ð†+­f½µé-«¸wãÛ¡æw'ñ^–Õ d_ŽíJ¤Œ¤jL¹çÂ6–üM*>qk¸úV’Üb¾+RßCeF2èñsâúx›''G9¶Î»¢äÒ²Ú$â²²²ÿïu˜g»àçÒøÄpqéVÆâ 3Øãÿvxþ?Èßww´ü÷ñƒã¯¿(ûÿ<9>9Èÿ©å¿=Qmè}V¸z#)¤NúÅ>2Øþj‚ý×Íîw¼,z H/6PGGY®-á-¾¤µãÉÏ?Ûõ öc&2coî-“•^ê höòñ‹³”sPx #4xj&hômñYÛEÚ¼c†K̾Ç}#*}æ¾ãÎ#)|ŽÏbwiO¾°3„~ëíWŠ 9ý&¬”%Ù\1CüúõëÇϲó‹4î<7»=de#4üŽa5Å€± pIäÀó‹#4U!߸ ÿ'˜ŒD’¼ŠB$!þ yÆÇo~8{#A• ç!Ü›ª#4Ù_Ë1ÕØÅi¿Ô1ÓȦ_€WpH}ýúù“¸š¿#4Í#E˜ÿùÝüz5v…! +Ê|Ü7[öY\Íq‰9ÚtË@º~¼“{¡~ï1ýÂ~º¤DAÄxÖf¨xáÛà›=ö­|X=ÿ4ë?ê>/>3a¤ÿïã㓯OÊëÿW†%8¬ÿæõÿ0ôþ Ç?ìLûË“/ÿÈñÿà'_Uøÿ/¿þò0þÿ#4úŸ‹M¾§ávÎó%êuZ]ÏóA1šÃ!)‚~»‡‰Ý$/áëÍj:Í‹„Õ?YY”•Dù>¥aJíNfÃÕ8_ôbe7‰®\¨ä†}ë*ßu^v€°ÉõQ½®„‰ã7?ÚÖÍ#)ØwêdbáÇ@B˜üõ£,ulÝÌ»d3±ðãG)M½T‘1f|Ì›t7‘ø[A „b— wÃÕ›.³“Ã8¶!ßþø‡Ôo36á—æ°%â°ý,(,£< кƒÙ|êÝa^ŒÖy0#*HG™çÈP‚oõ¦ýa¿A¯sÀÖ]öñ½q¸‹ÿ…>(I½ºŽŠEˆ&ey(å4×ÂpðJš¡ÔE–…Ò:ù›ô¸=§û’ìóÑÚ&äèB­Îí•£#)ñîhÈ=^à0òƒh74²d™»3Ÿê ½¤CT' #)%¸}‚B#)w¬u‰2\ã–"Q„Ü%3#){à¬n‚¯Óµé"¬Ÿxïc”ü7  .ò`94èËðPDè¾~þúŒD™S.À$È‹¢>›™âgó|êݬòåënó&«éh#)j™mt=À&I^ã„im²TL£ÎQ›®2æ]ºFð%ªˆ˜XüïMïÒ& ˆE -¶Âse²×‚¦Z:Q¤R¨Ô"I!§R¸ÉNU¬øŠÉy á~äºHê^±ó Üürf–¦_X!Ò3Â0?£äÖˆE:HP"jêÌðNŒÂµ›ÑÕ&jb¿Ň«#*Y—Á‹§fì 7ÛÛlÑWWRªÞÉeÃtÍ®• ¹ââ~¡‹ƒ1mà=€qm®-<j‹~Ó˜ÉÝ"xÅG%[žhL6€´B,Uïd7ÇÔÂ|¬Å¬_#)×ÏθDx· š=Ä )\êö^º,FùZ#*s”î#4L=Ú—t#)˜íEiX‰úEù´X¢¶ªÊ½£æä7©;^Üäºe`,Mú%•hφQ ö7qÂm·?!…T©¼ì¤üꊗËtgÖ´>í#)Üäƒ[<¦Ú•!œg©Ü#)‹%ÜLùAuåa;¦,õVá¹EÄáÒ’x\CnùW“Côj@„5ÑPs›…zU–„Ïú ÑPÔ”Ó@1Ž:·¡ÅH¸Ã~’Æ>dQ×}¸WÜ4¬ÔU*òEª?d`ƒ.!#*¬Û|CÚà<·šo²ÌĦOžàq()Õ€•róGÞäI=”¡}mÌ%ÈJe™e)¿51[ÚµÂx  nCISº÷çóñÌV¡x4_ÏÆÃŒøB µB'Êœ9‹Á9 «ÍPÖš<|9°-Ömùx˜ê6ÅþŽÙ¯Ög·–ÛAC”ã¡#*"Ždîy§¦º:`‡?ËN·¥õW·‚L>7UnMù”œyæI ˜º#41æË|°üHPFX~ÓÉ‹ZlbAÀžg„#4ISŸ¸(}·*@~MZ¯—(#4áôʃR¦†ÝšçÅrÓr¹%Ž«oÛ‚Å ® ±_u–żü¢),XôÕxXW´ˆÇí]4ååMa^Ñ{ÍêæößåÙÉ®©§Ì°—ïƒ]ùæÓ!æ#4®Á¼ÎBû@7é»…÷Vr@b™Ž&?ö”MûѺ_´ãD”4v#*Pê*Ÿ!̈pYÎæ!<L0ဠX<u—OP<eĤX-ƒdX-±xmÜã­&7¨mt hÜ“ÕsÜ7«à#*ȶºžaƒêgÎWw"XS@½AŽKº²õîB(I‡ÏXÖÛò¿"üžVÅÁ%ŠzØ`˜ß“’hœ­IÑp–“¨~~gŠ‹úÓ#*êD·VfÖ4I‡Å+Ë°/“™a¥j¤ ÄŒ,Øj#*Ì#4øɶ9î@¯XÉ>¦\¸n¯Cµ¶^êî®RpKñ¬ˆ©l–ÿóÙˆÁ#)ïT•›‘=iÐä”MÔ® 1¤…’ÂÖÀ:ôá6ÎÜ7YR6ØCSÛMáW$#;¢Ð{o¶#ï"†‰Z*ã ÄEÜ&*:é~M@cRÁ¦ê]Ù ¬2v .MìÅâ%`gÞZ¦SŽP±Ð)û×àÀŒ½7%ªÚÒ!ÎæÆJÉ~mµÑ÷*çŽ]’súÆô9rú”©?ðý^CžY8Ÿí 'IHÒõ;Ë¡êI"«ú#*Âõå @&ŸŠŽ¼g¶6çiÔÜÃü׋,Ø›àdþ1ý_ãÖó¸ÃÜl°áDk˜D௣?Èñ,Æ#)â` óù\#4$%—¶“9Ø”ç×Kq/"q¤Œ““e~º-‚D'¼Ó‡^4zñjØoÊTuþ…œMÝP‹lBÍÁæY®~A”Ø#·ùtøx…›˜$¶ÝÍ÷mT5\ùXàDõSköˆÇSá]µžÁ‚0)¿é’ì|O^ºZRgµÖ#Ü ’f‘Ãi³#Ñ"|2Ü2¶b”2´²Å^–|¯U“ˆg…[§ß *4](¤BÀ¦c’qÇ£TAŠžSƒèˆúT¡x¥„cUj”z¦$…~cêÒ‹YþŠm)aýààɯ B$=I|)ÃëÝÝOu<ôÅÈÎÔX6#)ÇÃZéÜ, UëŠÖ—~tXè ïéÙQ~'ëjÇËï`fÍÜt纟7WŠÕš#*ÔÌR£ÎM·”¾Ý­<,WF ú µ>q #)„ݸ0~º$CRäÖåH¯>f€š¾å)h>÷§pG€Ê< X`­ZX#*dvÞgÎY6šbmÎwdǺ6¾ófT* x¬W&ÙÀ¬âUÈ5¬ ·ä |±ll6]•"ìˆzþJy„$'S²%÷ TyLaµÕ%žŒ/x` ÄiÙcJe¡P“'`±ÔFø6hÍ †8#¸ƒ¦ò Ö˸;/#4åÎŽ$¼¡ëhª¯ª#** ·u×ñW. ´SaõNy[,ÕÅÓÃ{¤ùÒ€=))Ñ™ÓÚ·>ÂÊZV\¡ŒåóÑ ¥3Ò4J©Ši”#4Ñ~ÑÚ¸9$Ë»Î*dŸÜg—G¥£mçÓÀ;M~]Í–9j£‰AN¶ÇéJ$ØvðôöÙãŸÎ2Ï`çškO°NâÖgÿZIŠšzI´C´Z•Z˜¬Â±½¥2k#)ܯS††2¥íNùNЭŠîK«IÓ™*õ#à”»ºóstÇnè¿UaHÃY´©å´ŽBÜX€O7p{¨]¹Àãéªz1žf)Õ]1Âá#)È#*’c4½žµâÏ"Ô9'ç[¤$g1|5‹Çs€Š#÷.~ÖßT³Æ½c(kñæ2³›wë_l³•°@…¢^ªÞ°›HÿÅ“çÀì,ãÓò¦0±S+ï)k!`pÝ(ð/ùÀ°—c]~~ çòÏé½M{€,Ê-èïælúäèâøöÒîô½•@ìÄšL0KÞ0ÿÖ<}㳩“ÒÏAôóðžÃsxÏá9<‡çðžÃsxÏá9<‡çðžÃsxÏá9<‡çðžÃsxÏá9<‡çðžOôü~._k#)¨#)
+#<==
diff --git a/meta/recipes-graphics/fontconfig/fontconfig_2.12.6.bb b/meta/recipes-graphics/fontconfig/fontconfig_2.12.6.bb
index d4cbce80b45..cec524755d5 100644
--- a/meta/recipes-graphics/fontconfig/fontconfig_2.12.6.bb
+++ b/meta/recipes-graphics/fontconfig/fontconfig_2.12.6.bb
@@ -35,9 +35,15 @@ do_configure_prepend() {
rm -f ${S}/src/fcobjshash.h ${S}/src/fcobjshash.gperf
}
+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
+}
+
PACKAGES =+ "fontconfig-utils"
FILES_${PN} =+ "${datadir}/xml/*"
-FILES_fontconfig-utils = "${bindir}/*"
+FILES_fontconfig-utils = "${bindir}/* ${libexecdir}/*"
# Work around past breakage in debian.bbclass
RPROVIDES_fontconfig-utils = "libfontconfig-utils"
diff --git a/meta/recipes-graphics/freetype/freetype_2.9.bb b/meta/recipes-graphics/freetype/freetype_2.9.1.bb
index da05916b362..1e6f66ee9ff 100644
--- a/meta/recipes-graphics/freetype/freetype_2.9.bb
+++ b/meta/recipes-graphics/freetype/freetype_2.9.1.bb
@@ -13,15 +13,16 @@ LIC_FILES_CHKSUM = "file://docs/LICENSE.TXT;md5=4af6221506f202774ef74f64932878a1
file://docs/GPLv2.TXT;md5=8ef380476f642c20ebf40fecb0add2ec"
SRC_URI = "${SOURCEFORGE_MIRROR}/freetype/freetype-${PV}.tar.bz2 \
- file://use-right-libtool.patch"
+ file://use-right-libtool.patch \
+ "
UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/freetype/files/freetype2/"
UPSTREAM_CHECK_REGEX = "freetype-(?P<pver>\d+(\.\d+)+)"
-SRC_URI[md5sum] = "513c403c110016fdc7e537216a642b1d"
-SRC_URI[sha256sum] = "e6ffba3c8cef93f557d1f767d7bc3dee860ac7a3aaff588a521e081bc36f4c8a"
+SRC_URI[md5sum] = "60ef7d8160cd4bf8cb118ee9d65367ca"
+SRC_URI[sha256sum] = "db8d87ea720ea9d5edc5388fc7a0497bb11ba9fe972245e0f7f4c7e8b1e1e84d"
-inherit autotools pkgconfig binconfig-disabled multilib_header
+inherit autotools pkgconfig multilib_header
# Adapt autotools to work with the minimal autoconf usage in freetype
AUTOTOOLS_SCRIPT_PATH = "${S}/builds/unix"
@@ -35,6 +36,7 @@ PACKAGECONFIG[bzip2] = "--with-bzip2,--without-bzip2,bzip2"
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}'"
@@ -44,6 +46,4 @@ do_install_append() {
oe_multilib_header freetype2/freetype/config/ftconfig.h
}
-BINCONFIG = "${bindir}/freetype-config"
-
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/fstests/fstests_git.bb b/meta/recipes-graphics/fstests/fstests_git.bb
deleted file mode 100644
index 69f217830af..00000000000
--- a/meta/recipes-graphics/fstests/fstests_git.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Various benchmarning tests for X"
-HOMEPAGE = "http://www.o-hand.com"
-SECTION = "devel"
-LICENSE = "Zlib"
-DEPENDS = "pango libxext libxft virtual/libx11 gtk+"
-
-SRCREV = "e5939ff608b95cdd4d0ab0e1935781ab9a276ac0"
-PV = "0.1+git${SRCPV}"
-
-SRC_URI = "git://git.yoctoproject.org/${BPN}"
-UPSTREAM_CHECK_COMMITS = "1"
-
-LIC_FILES_CHKSUM = "file://test-pango-gdk.c;endline=24;md5=1ee74ec851ecda57eb7ac6cc180f7655"
-
-S = "${WORKDIR}/git/tests"
-
-inherit autotools pkgconfig distro_features_check
-# depends on virtual/libx11
-REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/meta/recipes-graphics/harfbuzz/harfbuzz_1.7.5.bb b/meta/recipes-graphics/harfbuzz/harfbuzz_1.8.8.bb
index 0a9b029461f..b904d935317 100644
--- a/meta/recipes-graphics/harfbuzz/harfbuzz_1.7.5.bb
+++ b/meta/recipes-graphics/harfbuzz/harfbuzz_1.8.8.bb
@@ -11,9 +11,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=e021dd6dda6ff1e6b1044002fc662b9b \
DEPENDS = "glib-2.0 cairo fontconfig freetype"
SRC_URI = "http://www.freedesktop.org/software/harfbuzz/release/${BP}.tar.bz2"
-
-SRC_URI[md5sum] = "1466ab51fc5aaa6af4065936939cec62"
-SRC_URI[sha256sum] = "84574e1b1f65ca694cb8fb6905309665c0368af18a312357f8ff886ee2f29563"
+SRC_URI[md5sum] = "81dbce82d6471ec2b2a627ce02d03e5d"
+SRC_URI[sha256sum] = "a8e5c86e4d99e1cc9865ec1b8e9b05b98e413c2a885cd11f8e9bb9502dd3e3a9"
inherit autotools pkgconfig lib_package gtk-doc
@@ -28,8 +27,16 @@ EXTRA_OECONF = " \
--without-graphite2 \
"
+do_configure_prepend() {
+ # This is ancient and can get used instead of the patched one we ship,
+ # so delete it. In 1.8.9 this should be removed upstream.
+ rm -f ${S}/m4/pkg.m4
+}
+
PACKAGES =+ "${PN}-icu ${PN}-icu-dev"
+LEAD_SONAME = "libharfbuzz.so"
+
FILES_${PN}-icu = "${libdir}/libharfbuzz-icu.so.*"
FILES_${PN}-icu-dev = "${libdir}/libharfbuzz-icu.la \
${libdir}/libharfbuzz-icu.so \
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
new file mode 100644
index 00000000000..44c2c768b2b
--- /dev/null
+++ b/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch
@@ -0,0 +1,32 @@
+From 0a24f03a67425a7b58b3fd40d965c0c9801ae7a1 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Mon, 27 Aug 2018 16:10:55 +0800
+Subject: [PATCH] libjpeg-turbo: fix package_qa error
+
+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]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ CMakeLists.txt | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 1719522..682cef1 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -109,8 +109,6 @@ endif()
+
+ include(cmakescripts/GNUInstallDirs.cmake)
+
+-set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR})
+-
+ macro(report_directory var)
+ if(CMAKE_INSTALL_${var} STREQUAL CMAKE_INSTALL_FULL_${var})
+ message(STATUS "CMAKE_INSTALL_${var} = ${CMAKE_INSTALL_${var}}")
+--
+2.7.4
+
diff --git a/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-wrongly-defined-define-HAVE_STDLIB.patch b/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-wrongly-defined-define-HAVE_STDLIB.patch
new file mode 100644
index 00000000000..16767ebb6bf
--- /dev/null
+++ b/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-wrongly-defined-define-HAVE_STDLIB.patch
@@ -0,0 +1,119 @@
+From d301019d0f23d12b9666d3d88b0859067a4ade77 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Thu, 30 Aug 2018 15:08:23 +0800
+Subject: [PATCH] libjpeg-turbo: fix wrongly defined define HAVE_STDLIB_H
+
+when change build system from autotools to cmake, below
+part is replace wrongly:
+
+"#undef HAVE_STDLIB_H"
+should be change to "#cmakedefine HAVE_STDLIB_H 1"
+not "#cmakedefine HAVE_STDLIB_H"
+
+otherwise, even if stdlib.h is found, output file
+of configure_file() will define like: #define HAVE_STDLIB_H
+but we need it as #define HAVE_STDLIB_H 1, since for
+different defination of HAVE_STDLIB_H will cause below error:
+error: "HAVE_STDLIB_H" redefined [-Werror]
+
+Upstream-Status: Submitted[https://github.com/libjpeg-turbo/libjpeg-turbo/pull/275]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ jconfig.h.in | 28 ++++++++++++++--------------
+ jconfigint.h.in | 4 ++--
+ 2 files changed, 16 insertions(+), 16 deletions(-)
+
+diff --git a/jconfig.h.in b/jconfig.h.in
+index 2842754..18a69a4 100644
+--- a/jconfig.h.in
++++ b/jconfig.h.in
+@@ -10,16 +10,16 @@
+ #define LIBJPEG_TURBO_VERSION_NUMBER @LIBJPEG_TURBO_VERSION_NUMBER@
+
+ /* Support arithmetic encoding */
+-#cmakedefine C_ARITH_CODING_SUPPORTED
++#cmakedefine C_ARITH_CODING_SUPPORTED 1
+
+ /* Support arithmetic decoding */
+-#cmakedefine D_ARITH_CODING_SUPPORTED
++#cmakedefine D_ARITH_CODING_SUPPORTED 1
+
+ /* Support in-memory source/destination managers */
+-#cmakedefine MEM_SRCDST_SUPPORTED
++#cmakedefine MEM_SRCDST_SUPPORTED 1
+
+ /* Use accelerated SIMD routines. */
+-#cmakedefine WITH_SIMD
++#cmakedefine WITH_SIMD 1
+
+ /*
+ * Define BITS_IN_JSAMPLE as either
+@@ -33,37 +33,37 @@
+ #define BITS_IN_JSAMPLE @BITS_IN_JSAMPLE@ /* use 8 or 12 */
+
+ /* Define to 1 if you have the <locale.h> header file. */
+-#cmakedefine HAVE_LOCALE_H
++#cmakedefine HAVE_LOCALE_H 1
+
+ /* Define to 1 if you have the <stddef.h> header file. */
+-#cmakedefine HAVE_STDDEF_H
++#cmakedefine HAVE_STDDEF_H 1
+
+ /* Define to 1 if you have the <stdlib.h> header file. */
+-#cmakedefine HAVE_STDLIB_H
++#cmakedefine HAVE_STDLIB_H 1
+
+ /* Define if you need to include <sys/types.h> to get size_t. */
+-#cmakedefine NEED_SYS_TYPES_H
++#cmakedefine NEED_SYS_TYPES_H 1
+
+ /* Define if you have BSD-like bzero and bcopy in <strings.h> rather than
+ memset/memcpy in <string.h>. */
+-#cmakedefine NEED_BSD_STRINGS
++#cmakedefine NEED_BSD_STRINGS 1
+
+ /* Define to 1 if the system has the type `unsigned char'. */
+-#cmakedefine HAVE_UNSIGNED_CHAR
++#cmakedefine HAVE_UNSIGNED_CHAR 1
+
+ /* Define to 1 if the system has the type `unsigned short'. */
+-#cmakedefine HAVE_UNSIGNED_SHORT
++#cmakedefine HAVE_UNSIGNED_SHORT 1
+
+ /* Compiler does not support pointers to undefined structures. */
+-#cmakedefine INCOMPLETE_TYPES_BROKEN
++#cmakedefine INCOMPLETE_TYPES_BROKEN 1
+
+ /* Define if your (broken) compiler shifts signed values as if they were
+ unsigned. */
+-#cmakedefine RIGHT_SHIFT_IS_UNSIGNED
++#cmakedefine RIGHT_SHIFT_IS_UNSIGNED 1
+
+ /* Define to 1 if type `char' is unsigned and you are not using gcc. */
+ #ifndef __CHAR_UNSIGNED__
+- #cmakedefine __CHAR_UNSIGNED__
++ #cmakedefine __CHAR_UNSIGNED__ 1
+ #endif
+
+ /* Define to empty if `const' does not conform to ANSI C. */
+diff --git a/jconfigint.h.in b/jconfigint.h.in
+index 55df053..6c898ac 100644
+--- a/jconfigint.h.in
++++ b/jconfigint.h.in
+@@ -17,10 +17,10 @@
+ #define SIZEOF_SIZE_T @SIZE_T@
+
+ /* Define if your compiler has __builtin_ctzl() and sizeof(unsigned long) == sizeof(size_t). */
+-#cmakedefine HAVE_BUILTIN_CTZL
++#cmakedefine HAVE_BUILTIN_CTZL 1
+
+ /* Define to 1 if you have the <intrin.h> header file. */
+-#cmakedefine HAVE_INTRIN_H
++#cmakedefine HAVE_INTRIN_H 1
+
+ #if defined(_MSC_VER) && defined(HAVE_INTRIN_H)
+ #if (SIZEOF_SIZE_T == 8)
+--
+2.7.4
+
diff --git a/meta/recipes-graphics/jpeg/libjpeg-turbo_1.5.3.bb b/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.0.bb
index 50a5ae08507..282bf95e8a0 100644
--- a/meta/recipes-graphics/jpeg/libjpeg-turbo_1.5.3.bb
+++ b/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.0.bb
@@ -4,16 +4,18 @@ 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=f67d70e547a2662c079781c72f877f72 \
+ 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"
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \
+ file://0001-libjpeg-turbo-fix-package_qa-error.patch \
+ file://0001-libjpeg-turbo-fix-wrongly-defined-define-HAVE_STDLIB.patch"
-SRC_URI[md5sum] = "7c82f0f6a3130ec06b8a4d0b321cbca3"
-SRC_URI[sha256sum] = "b24890e2bb46e12e72a79f7e965f409f4e16466d00e1dd15d93d73ee6b592523"
+SRC_URI[md5sum] = "b12a3fcf1d078db38410f27718a91b83"
+SRC_URI[sha256sum] = "778876105d0d316203c928fd2a0374c8c01f755d0a00b12a1c8934aeccff8868"
UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/libjpeg-turbo/files/"
UPSTREAM_CHECK_REGEX = "/libjpeg-turbo/files/(?P<pver>(\d+[\.\-_]*)+)/"
@@ -25,28 +27,23 @@ RPROVIDES_${PN} += "jpeg"
RREPLACES_${PN} += "jpeg"
RCONFLICTS_${PN} += "jpeg"
-inherit autotools pkgconfig
+inherit cmake pkgconfig
# Add nasm-native dependency consistently for all build arches is hard
-EXTRA_OECONF_append_class-native = " --without-simd"
+EXTRA_OECMAKE_append_class-native = " -DWITH_SIMD=False"
# Work around missing x32 ABI support
-EXTRA_OECONF_append_class-target = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", "--without-simd", "", d)}"
+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_OECONF_append_class-target = " ${@bb.utils.contains("MIPSPKGSFX_FPU", "-nf", "--without-simd", "", d)}"
+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_OECONF_append_class-target_powerpc = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "--without-simd", d)}"
-EXTRA_OECONF_append_class-target_powerpc64 = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "--without-simd", d)}"
+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)}"
-def get_build_time(d):
- if d.getVar('SOURCE_DATE_EPOCH') != None:
- import datetime
- return " --with-build-date="+ datetime.datetime.fromtimestamp(float(d.getVar('SOURCE_DATE_EPOCH'))).strftime("%Y%m%d")
- return ""
-
-EXTRA_OECONF_append_class-target = "${@get_build_time(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"
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
index 3605446e440..611e5415986 100644
--- 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
@@ -49,9 +49,9 @@ diff --git a/configure.ac b/configure.ac
index 8397f7b..c7f1f4d 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -65,5 +65,8 @@ if test "x$enable_gbm_modifiers" = xyes; then
- AC_DEFINE(HAVE_GBM_MODIFIERS, 1, [Define if you can use GBM properties.])
+@@ -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"])
@@ -99,12 +99,12 @@ diff --git a/kmscube.c b/kmscube.c
index 3a2c4dd..276dc55 100644
--- a/kmscube.c
+++ b/kmscube.c
-@@ -142,7 +142,11 @@ int main(int argc, char *argv[])
+@@ -148,7 +148,11 @@ int main(int argc, char *argv[])
else if (mode == VIDEO)
- egl = init_cube_video(gbm, video);
+ egl = init_cube_video(gbm, video, samples);
else
+#if HAVE_GBM_BO_MAP
- egl = init_cube_tex(gbm, mode);
+ egl = init_cube_tex(gbm, mode, samples);
+#else
+ printf("gbm_bo_map() support missing\n");
+#endif
diff --git a/meta/recipes-graphics/kmscube/kmscube_git.bb b/meta/recipes-graphics/kmscube/kmscube_git.bb
index 5b64ed64384..46aeeb01795 100644
--- a/meta/recipes-graphics/kmscube/kmscube_git.bb
+++ b/meta/recipes-graphics/kmscube/kmscube_git.bb
@@ -6,7 +6,7 @@ DEPENDS = "virtual/libgles2 virtual/egl libdrm gstreamer1.0 gstreamer1.0-plugins
LIC_FILES_CHKSUM = "file://kmscube.c;beginline=1;endline=23;md5=8b309d4ee67b7315ff7381270dd631fb"
-SRCREV = "0d8de4ce3a03f36af1817f9b0586d132ad2c5d2e"
+SRCREV = "9dcce71e603616ee7a54707e932f962cdf8fb20a"
SRC_URI = "git://anongit.freedesktop.org/mesa/kmscube;branch=master;protocol=git \
file://detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch"
UPSTREAM_CHECK_COMMITS = "1"
diff --git a/meta/recipes-graphics/libepoxy/libepoxy/no-tests.patch b/meta/recipes-graphics/libepoxy/libepoxy/no-tests.patch
deleted file mode 100644
index d2b6c1a254c..00000000000
--- a/meta/recipes-graphics/libepoxy/libepoxy/no-tests.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Add option to disable tests.
-
-Upstream-Status: Submitted (https://github.com/anholt/libepoxy/pull/158)
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/meson.build b/meson.build
-index b2ebaef..9632c7a 100644
---- a/meson.build
-+++ b/meson.build
-@@ -242,7 +242,10 @@ libepoxy_inc = [
-
- subdir('include/epoxy')
- subdir('src')
--subdir('test')
-+
-+if get_option('tests')
-+ subdir('test')
-+endif
-
- if get_option('docs')
- doxygen = find_program('doxygen', required: false)
-diff --git a/meson_options.txt b/meson_options.txt
-index b5d7c98..dc30e68 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -15,3 +15,7 @@ option('x11',
- type: 'boolean',
- value: true,
- description: 'Enable X11 support (GLX or EGL-X11)')
-+option('tests',
-+ type: 'boolean',
-+ value: true,
-+ description: 'Build the test suite')
diff --git a/meta/recipes-graphics/libepoxy/libepoxy_1.5.0.bb b/meta/recipes-graphics/libepoxy/libepoxy_1.5.2.bb
index 5ca0868c22f..106721226bf 100644
--- a/meta/recipes-graphics/libepoxy/libepoxy_1.5.0.bb
+++ b/meta/recipes-graphics/libepoxy/libepoxy_1.5.2.bb
@@ -6,10 +6,9 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=58ef4c80d401e07bd9ee8b6b58cf464b"
SRC_URI = "https://github.com/anholt/${BPN}/releases/download/${PV}/${BP}.tar.xz \
- file://no-tests.patch \
"
-SRC_URI[md5sum] = "63fe3847789258254dcd7e3fdb9e7f5e"
-SRC_URI[sha256sum] = "4c94995398a6ebf691600dda2e9685a0cac261414175c2adf4645cdfab42a5d5"
+SRC_URI[md5sum] = "4a6b9e581da229dee74c2263c84b1eca"
+SRC_URI[sha256sum] = "a9562386519eb3fd7f03209f279f697a8cba520d3c155d6e253c3e138beca7d8"
UPSTREAM_CHECK_URI = "https://github.com/anholt/libepoxy/releases"
inherit meson pkgconfig distro_features_check
diff --git a/meta/recipes-graphics/libsdl2/libsdl2/0001-GLES2-Get-sin-cos-out-of-vertex-shader.patch b/meta/recipes-graphics/libsdl2/libsdl2/0001-GLES2-Get-sin-cos-out-of-vertex-shader.patch
new file mode 100644
index 00000000000..9b32b3788df
--- /dev/null
+++ b/meta/recipes-graphics/libsdl2/libsdl2/0001-GLES2-Get-sin-cos-out-of-vertex-shader.patch
@@ -0,0 +1,141 @@
+From c215ba1d52a3d4ef03af3ab1a5baa1863f812aed Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Fri, 24 Aug 2018 23:10:25 +0200
+Subject: [PATCH] GLES2: Get sin/cos out of vertex shader
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The only place angle is activated and causes effect is RenderCopyEx. All other
+methods which use vertex shader, leave angle disabled and cause useless sin/cos
+calculation in shader.
+
+To get around shader's interface is changed to a vector that contains results
+of sin and cos. To behave properly when disabled, cos value is set with offset
+-1.0 making 0.0 default when deactivated.
+
+As nice side effect it simplifies GLES2_UpdateVertexBuffer: All attributes are
+vectors now.
+
+Additional background:
+
+* On RaspberryPi it gives a performace win for operations. Tested with
+ [1] numbers go down for 5-10% (not easy to estimate due to huge variation).
+* SDL_RenderCopyEx was tested with [2]
+* It works around left rotated display caused by low accuracy sin implemetation
+ in RaspberryPi/VC4 [3]
+
+Upstream-Status: Accepted [4]
+
+[1] https://github.com/schnitzeltony/sdl2box
+[2] https://github.com/schnitzeltony/sdl2rendercopyex
+[3] https://github.com/anholt/mesa/issues/110
+[4] https://hg.libsdl.org/SDL/rev/e5a666405750
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ src/render/opengles2/SDL_render_gles2.c | 17 ++++++++++++-----
+ src/render/opengles2/SDL_shaders_gles2.c | 14 +++++++++-----
+ 2 files changed, 21 insertions(+), 10 deletions(-)
+
+diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c
+index 14671f7c8..7c54a7333 100644
+--- a/src/render/opengles2/SDL_render_gles2.c
++++ b/src/render/opengles2/SDL_render_gles2.c
+@@ -1530,7 +1530,7 @@ GLES2_UpdateVertexBuffer(SDL_Renderer *renderer, GLES2_Attribute attr,
+ GLES2_DriverContext *data = (GLES2_DriverContext *)renderer->driverdata;
+
+ #if !SDL_GLES2_USE_VBOS
+- data->glVertexAttribPointer(attr, attr == GLES2_ATTRIBUTE_ANGLE ? 1 : 2, GL_FLOAT, GL_FALSE, 0, vertexData);
++ data->glVertexAttribPointer(attr, 2, GL_FLOAT, GL_FALSE, 0, vertexData);
+ #else
+ if (!data->vertex_buffers[attr]) {
+ data->glGenBuffers(1, &data->vertex_buffers[attr]);
+@@ -1545,7 +1545,7 @@ GLES2_UpdateVertexBuffer(SDL_Renderer *renderer, GLES2_Attribute attr,
+ data->glBufferSubData(GL_ARRAY_BUFFER, 0, dataSizeInBytes, vertexData);
+ }
+
+- data->glVertexAttribPointer(attr, attr == GLES2_ATTRIBUTE_ANGLE ? 1 : 2, GL_FLOAT, GL_FALSE, 0, 0);
++ data->glVertexAttribPointer(attr, 2, GL_FLOAT, GL_FALSE, 0, 0);
+ #endif
+
+ return 0;
+@@ -1853,6 +1853,8 @@ GLES2_RenderCopy(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *s
+ return GL_CheckError("", renderer);
+ }
+
++#define PI 3.14159265f
++
+ static int
+ GLES2_RenderCopyEx(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *srcrect,
+ const SDL_FRect *dstrect, const double angle, const SDL_FPoint *center, const SDL_RendererFlip flip)
+@@ -1861,8 +1863,9 @@ GLES2_RenderCopyEx(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect
+ GLfloat vertices[8];
+ GLfloat texCoords[8];
+ GLfloat translate[8];
+- GLfloat fAngle[4];
++ GLfloat fAngle[8];
+ GLfloat tmp;
++ float radian_angle;
+
+ GLES2_ActivateRenderer(renderer);
+
+@@ -1872,7 +1875,11 @@ GLES2_RenderCopyEx(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect
+
+ data->glEnableVertexAttribArray(GLES2_ATTRIBUTE_CENTER);
+ data->glEnableVertexAttribArray(GLES2_ATTRIBUTE_ANGLE);
+- fAngle[0] = fAngle[1] = fAngle[2] = fAngle[3] = (GLfloat)(360.0f - angle);
++
++ radian_angle = PI * (360.0f - angle) / 180.f;
++ fAngle[0] = fAngle[2] = fAngle[4] = fAngle[6] = (GLfloat)sin(radian_angle);
++ /* render expects cos value - 1 (see GLES2_VertexSrc_Default_) */
++ fAngle[1] = fAngle[3] = fAngle[5] = fAngle[7] = (GLfloat)cos(radian_angle) - 1.0f;
+ /* Calculate the center of rotation */
+ translate[0] = translate[2] = translate[4] = translate[6] = (center->x + dstrect->x);
+ translate[1] = translate[3] = translate[5] = translate[7] = (center->y + dstrect->y);
+@@ -1901,7 +1908,7 @@ GLES2_RenderCopyEx(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect
+ data->glVertexAttribPointer(GLES2_ATTRIBUTE_CENTER, 2, GL_FLOAT, GL_FALSE, 0, translate);
+ data->glVertexAttribPointer(GLES2_ATTRIBUTE_POSITION, 2, GL_FLOAT, GL_FALSE, 0, vertices);*/
+
+- GLES2_UpdateVertexBuffer(renderer, GLES2_ATTRIBUTE_ANGLE, fAngle, 4 * sizeof(GLfloat));
++ GLES2_UpdateVertexBuffer(renderer, GLES2_ATTRIBUTE_ANGLE, fAngle, 8 * sizeof(GLfloat));
+ GLES2_UpdateVertexBuffer(renderer, GLES2_ATTRIBUTE_CENTER, translate, 8 * sizeof(GLfloat));
+ GLES2_UpdateVertexBuffer(renderer, GLES2_ATTRIBUTE_POSITION, vertices, 8 * sizeof(GLfloat));
+
+diff --git a/src/render/opengles2/SDL_shaders_gles2.c b/src/render/opengles2/SDL_shaders_gles2.c
+index b0bcdff25..f428a4945 100644
+--- a/src/render/opengles2/SDL_shaders_gles2.c
++++ b/src/render/opengles2/SDL_shaders_gles2.c
+@@ -30,20 +30,24 @@
+ /*************************************************************************************************
+ * Vertex/fragment shader source *
+ *************************************************************************************************/
+-
++/* Notes on a_angle:
++ * It is a vector containing sin and cos for rotation matrix
++ * To get correct rotation for most cases when a_angle is disabled cos
++ value is decremented by 1.0 to get proper output with 0.0 which is
++ default value
++*/
+ static const Uint8 GLES2_VertexSrc_Default_[] = " \
+ uniform mat4 u_projection; \
+ attribute vec2 a_position; \
+ attribute vec2 a_texCoord; \
+- attribute float a_angle; \
++ attribute vec2 a_angle; \
+ attribute vec2 a_center; \
+ varying vec2 v_texCoord; \
+ \
+ void main() \
+ { \
+- float angle = radians(a_angle); \
+- float c = cos(angle); \
+- float s = sin(angle); \
++ float s = a_angle[0]; \
++ float c = a_angle[1] + 1.0; \
+ mat2 rotationMatrix = mat2(c, -s, s, c); \
+ vec2 position = rotationMatrix * (a_position - a_center) + a_center; \
+ v_texCoord = a_texCoord; \
+--
+2.14.4
+
diff --git a/meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch b/meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch
new file mode 100644
index 00000000000..29076bf6cb2
--- /dev/null
+++ b/meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch
@@ -0,0 +1,47 @@
+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>
+
+diff --git a/configure.in b/data/poky-tmp/master/work/corei7-64-poky-linux/libsdl2/2.0.8-r0/SDL2-2.0.8/configure.in
+index 1c7e79338..ba07a4a4e 100644
+--- a/configure.in
++++ b/data/poky-tmp/master/work/corei7-64-poky-linux/libsdl2/2.0.8-r0/SDL2-2.0.8/configure.in
+@@ -4011,7 +4011,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)/\\2.lo: \\1/\\2.$EXT \\$(GEN_OBJECTS)\\\\
+ \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"`
+ done
+
+@@ -4028,14 +4028,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)/\\2.lo: \\1/\\2.c \\$(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)/\\2.lo: \\1/\\2.c\\\\ \\$(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
diff --git a/meta/recipes-graphics/libsdl2/libsdl2_2.0.8.bb b/meta/recipes-graphics/libsdl2/libsdl2_2.0.8.bb
index c0cf70d7fd0..812a9abf3c8 100644
--- a/meta/recipes-graphics/libsdl2/libsdl2_2.0.8.bb
+++ b/meta/recipes-graphics/libsdl2/libsdl2_2.0.8.bb
@@ -12,10 +12,9 @@ LIC_FILES_CHKSUM = "file://COPYING.txt;md5=02ee26814dd044bd7838ae24e05b880f"
PROVIDES = "virtual/libsdl2"
-DEPENDS_class-nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'virtual/nativesdk-libx11 nativesdk-libxrandr nativesdk-libxrender nativesdk-libxext', '', d)}"
-
-SRC_URI = " \
- http://www.libsdl.org/release/SDL2-${PV}.tar.gz \
+SRC_URI = "http://www.libsdl.org/release/SDL2-${PV}.tar.gz \
+ file://more-gen-depends.patch \
+ file://0001-GLES2-Get-sin-cos-out-of-vertex-shader.patch \
"
S = "${WORKDIR}/SDL2-${PV}"
@@ -31,12 +30,15 @@ EXTRA_OECONF = "--disable-oss --disable-esd --disable-arts \
--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)} \
@@ -63,3 +65,5 @@ do_configure_prepend() {
}
FILES_${PN}-dev += "${libdir}/cmake"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/libva/libva-utils_2.1.0.bb b/meta/recipes-graphics/libva/libva-utils_2.2.0.bb
index a8018ea728a..e35085cb98d 100644
--- a/meta/recipes-graphics/libva/libva-utils_2.1.0.bb
+++ b/meta/recipes-graphics/libva/libva-utils_2.2.0.bb
@@ -15,8 +15,8 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=b148fc8adf19dc9aec17cf9cd29a9a5e"
SRC_URI = "https://github.com/intel/${BPN}/releases/download/${PV}/${BP}.tar.bz2"
-SRC_URI[md5sum] = "6649be70390606651cb636320bfd43c6"
-SRC_URI[sha256sum] = "f6a7790c3dcc56537372c90a83036a3136194a8b397e84e97bf9cc9254fa2c51"
+SRC_URI[md5sum] = "93b58aa5b14c16f4bace8a45dc255ec9"
+SRC_URI[sha256sum] = "ed7a6ed1fab657df4e83ea11f90310efcf31c27828f32d65351a28ca3c404dc0"
UPSTREAM_CHECK_URI = "https://github.com/intel/libva-utils/releases"
diff --git a/meta/recipes-graphics/libva/libva_2.1.0.bb b/meta/recipes-graphics/libva/libva_2.2.0.bb
index d3cf6334ceb..11e57e0eb84 100644
--- a/meta/recipes-graphics/libva/libva_2.1.0.bb
+++ b/meta/recipes-graphics/libva/libva_2.2.0.bb
@@ -19,8 +19,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=2e48940f94acb0af582e5ef03537800f"
SRC_URI = "https://github.com/intel/${BPN}/releases/download/${PV}/${BP}.tar.bz2"
-SRC_URI[md5sum] = "9d6e4f1d36c407566343e9dde5a972b8"
-SRC_URI[sha256sum] = "f3fa953a11d3210c3a4ee79031abdbe0863d5ce13d9b3f93f315f1eec60a4b0f"
+SRC_URI[md5sum] = "92d04ad1700136dc75b1e5f47516e704"
+SRC_URI[sha256sum] = "6f6ca04c785544d30d315ef130a6aeb9435b75f934d7fbe0e4e9ba6084ce4ef2"
UPSTREAM_CHECK_URI = "https://github.com/intel/libva/releases"
diff --git a/meta/recipes-graphics/mesa/files/0001-Makefile.vulkan.am-explictly-add-lib-expat-to-intel-.patch b/meta/recipes-graphics/mesa/files/0001-Makefile.vulkan.am-explictly-add-lib-expat-to-intel-.patch
deleted file mode 100644
index f908d46550e..00000000000
--- a/meta/recipes-graphics/mesa/files/0001-Makefile.vulkan.am-explictly-add-lib-expat-to-intel-.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 342311dbb190735b7b32ab20f81c1d8dbcfe717a Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 11 Oct 2017 15:40:42 +0800
-Subject: [PATCH] Makefile.vulkan.am: explictly add lib expat to intel
- libvulkan's lib depends
-
-While built with "-fvisibility=default"
-...
-|i586-oe-linux-gcc ... -fvisibility=default ... -o common/.libs/common_libintel_common_la-gen_decoder.o
-...
-
-It triggered the failure
-...
-|i586-oe-linux-g++ ... common/.libs/libintel_common.a ... -o vulkan/.libs/libvulkan_intel.so
-|common/.libs/libintel_common.a(common_libintel_common_la-gen_decoder.o):
-|In function `start_element':
-|/usr/src/debug/mesa/2_17.1.7-r0/mesa-17.1.7/src/intel/common/gen_decoder.c:371:
-undefined reference to `XML_GetCurrentLineNumber'
-...
-
-explictly add EXPAT_LIBS to intel's VULKAN_LIB_DEPS
-
-Upstream-Status: Accepted
-https://cgit.freedesktop.org/mesa/mesa/commit/?id=05fc62d89f59ce19a18bfd4e63a09624910d6caf
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- src/intel/Makefile.vulkan.am | 1 +
- 1 file changed, 1 insertion(+)
-
-Index: mesa-17.3.6/src/intel/Makefile.vulkan.am
-===================================================================
---- mesa-17.3.6.orig/src/intel/Makefile.vulkan.am
-+++ mesa-17.3.6/src/intel/Makefile.vulkan.am
-@@ -144,6 +144,7 @@ VULKAN_LIB_DEPS = \
- $(LIBDRM_LIBS) \
- $(PTHREAD_LIBS) \
- $(DLOPEN_LIBS) \
-+ $(EXPAT_LIBS) \
- -lm
-
- if HAVE_PLATFORM_ANDROID
diff --git a/meta/recipes-graphics/mesa/files/0001-Simplify-wayland-scanner-lookup.patch b/meta/recipes-graphics/mesa/files/0001-Simplify-wayland-scanner-lookup.patch
new file mode 100644
index 00000000000..a50d2a2ba28
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0001-Simplify-wayland-scanner-lookup.patch
@@ -0,0 +1,39 @@
+From 7e8e0f8a8ac2425e19a2f340c9e3da9345f25940 Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Tue, 15 Nov 2016 15:20:49 +0200
+Subject: [PATCH 1/6] Simplify wayland-scanner lookup
+Organization: O.S. Systems Software LTDA.
+
+Don't use pkg-config to lookup the path of a binary that's in the path.
+
+Alternatively we'd have to prefix the path returned by pkg-config with
+PKG_CONFIG_SYSROOT_DIR.
+
+Upstream-Status: Pending
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ configure.ac | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 14f1af2b2f..916d0bd207 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1825,12 +1825,7 @@ for plat in $platforms; do
+ PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED])
+ WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`
+
+- PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner],
+- WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`,
+- WAYLAND_SCANNER='')
+- if test "x$WAYLAND_SCANNER" = x; then
+- AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:])
+- fi
++ AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:])
+
+ if test "x$WAYLAND_SCANNER" = "x:"; then
+ AC_MSG_ERROR([wayland-scanner is needed to compile the wayland platform])
+--
+2.18.0
+
diff --git a/meta/recipes-graphics/mesa/files/0001-Use-wayland-scanner-in-the-path.patch b/meta/recipes-graphics/mesa/files/0001-Use-wayland-scanner-in-the-path.patch
deleted file mode 100644
index 2444b2846b0..00000000000
--- a/meta/recipes-graphics/mesa/files/0001-Use-wayland-scanner-in-the-path.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From c908f0c13ac81a3a52140f129a13b2bc997ff4ee Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Tue, 15 Nov 2016 15:20:49 +0200
-Subject: [PATCH] Simplify wayland-scanner lookup
-
-Don't use pkg-config to lookup the path of a binary that's in the path.
-
-Alternatively we'd have to prefix the path returned by pkg-config with
-PKG_CONFIG_SYSROOT_DIR.
-
-Upstream-Status: Pending
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
----
- configure.ac | 7 +------
- 1 file changed, 1 insertion(+), 6 deletions(-)
-
-Index: mesa-17.3.6/configure.ac
-===================================================================
---- mesa-17.3.6.orig/configure.ac
-+++ mesa-17.3.6/configure.ac
-@@ -1694,12 +1694,7 @@ if test "x$with_platforms" = xauto; then
- with_platforms=$with_egl_platforms
- fi
-
--PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner],
-- WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`,
-- WAYLAND_SCANNER='')
--if test "x$WAYLAND_SCANNER" = x; then
-- AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:])
--fi
-+AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner])
-
- PKG_CHECK_EXISTS([wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED], [have_wayland_protocols=yes], [have_wayland_protocols=no])
- if test "x$have_wayland_protocols" = xyes; then
diff --git a/meta/recipes-graphics/mesa/files/0001-st-dri-Initialise-modifier-to-INVALID-for-DRI2.patch b/meta/recipes-graphics/mesa/files/0001-st-dri-Initialise-modifier-to-INVALID-for-DRI2.patch
deleted file mode 100644
index 6aba7859ee8..00000000000
--- a/meta/recipes-graphics/mesa/files/0001-st-dri-Initialise-modifier-to-INVALID-for-DRI2.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 4cbecb61682a0ee426faaa03d824fc8fd7aef826 Mon Sep 17 00:00:00 2001
-From: Daniel Stone <daniels@collabora.com>
-Date: Mon, 2 Apr 2018 13:20:34 +0100
-Subject: [PATCH] st/dri: Initialise modifier to INVALID for DRI2
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-When allocating a buffer for DRI2, set the modifier to INVALID to inform
-the backend that we have no supplied modifiers and it should do its own
-thing. The missed initialisation forced linear, even if the
-implementation had made other decisions.
-
-This resulted in VC4 DRI2 clients failing with:
- Modifier 0x0 vs. tiling (0x700000000000001) mismatch
-
-Signed-off-by: Daniel Stone <daniels@collabora.com>
-Reported-by: Andreas Müller <schnitzeltony@gmail.com>
-Reviewed-by: Eric Anholt <eric@anholt.net>
-Fixes: 3f8513172ff6 ("gallium/winsys/drm: introduce modifier field to winsys_handle")
-
-Upstream-Status: Backport [1]
-
-[1] https://cgit.freedesktop.org/mesa/mesa/commit/?id=4cbecb61682a0ee426faaa03d824fc8fd7aef826
----
- src/gallium/state_trackers/dri/dri2.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/gallium/state_trackers/dri/dri2.c b/src/gallium/state_trackers/dri/dri2.c
-index 31d17d46c2..58a6757f03 100644
---- a/src/gallium/state_trackers/dri/dri2.c
-+++ b/src/gallium/state_trackers/dri/dri2.c
-@@ -806,6 +806,7 @@ dri2_allocate_textures(struct dri_context *ctx,
- whandle.handle = buf->name;
- whandle.stride = buf->pitch;
- whandle.offset = 0;
-+ whandle.modifier = DRM_FORMAT_MOD_INVALID;
- if (screen->can_share_buffer)
- whandle.type = DRM_API_HANDLE_TYPE_SHARED;
- else
---
-2.14.3
-
diff --git a/meta/recipes-graphics/mesa/files/0002-hardware-gloat.patch b/meta/recipes-graphics/mesa/files/0002-hardware-gloat.patch
deleted file mode 100644
index 0e014dcc807..00000000000
--- a/meta/recipes-graphics/mesa/files/0002-hardware-gloat.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 00bcd599310dc7fce4fe336ffd85902429051a0c Mon Sep 17 00:00:00 2001
-From: Igor Gnatenko <i.gnatenko.brain@gmail.com>
-Date: Sun, 20 Mar 2016 13:27:04 +0100
-Subject: [PATCH 2/4] hardware gloat
-
-Upstream-Status: Inappropriate [not author]
-Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
----
- src/gallium/drivers/llvmpipe/lp_screen.c | 7 +++++++
- src/gallium/drivers/softpipe/sp_screen.c | 7 +++++++
- 2 files changed, 14 insertions(+)
-
-diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c
-index 4f61de8..3b0ec77 100644
---- a/src/gallium/drivers/llvmpipe/lp_screen.c
-+++ b/src/gallium/drivers/llvmpipe/lp_screen.c
-@@ -411,6 +411,13 @@ llvmpipe_is_format_supported( struct pipe_screen *_screen,
- if (!format_desc)
- return FALSE;
-
-+ if ((bind & PIPE_BIND_RENDER_TARGET) &&
-+ format != PIPE_FORMAT_R9G9B9E5_FLOAT &&
-+ format != PIPE_FORMAT_R11G11B10_FLOAT &&
-+ util_format_is_float(format)) {
-+ return FALSE;
-+ }
-+
- assert(target == PIPE_BUFFER ||
- target == PIPE_TEXTURE_1D ||
- target == PIPE_TEXTURE_1D_ARRAY ||
-diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c
-index 031602b..c279120 100644
---- a/src/gallium/drivers/softpipe/sp_screen.c
-+++ b/src/gallium/drivers/softpipe/sp_screen.c
-@@ -358,6 +358,13 @@ softpipe_is_format_supported( struct pipe_screen *screen,
- if (!format_desc)
- return FALSE;
-
-+ if ((bind & PIPE_BIND_RENDER_TARGET) &&
-+ format != PIPE_FORMAT_R9G9B9E5_FLOAT &&
-+ format != PIPE_FORMAT_R11G11B10_FLOAT &&
-+ util_format_is_float(format)) {
-+ return FALSE;
-+ }
-+
- if (sample_count > 1)
- return FALSE;
-
---
-2.7.4
-
diff --git a/meta/recipes-graphics/mesa/files/0001-winsys-svga-drm-Include-sys-types.h.patch b/meta/recipes-graphics/mesa/files/0002-winsys-svga-drm-Include-sys-types.h.patch
index 549b8671ab4..ffb3bf7a63b 100644
--- a/meta/recipes-graphics/mesa/files/0001-winsys-svga-drm-Include-sys-types.h.patch
+++ b/meta/recipes-graphics/mesa/files/0002-winsys-svga-drm-Include-sys-types.h.patch
@@ -1,7 +1,8 @@
-From d8750776404b1031d762966d0f551d13d2fe05a7 Mon Sep 17 00:00:00 2001
+From 7792f228991744a0396b8bf811e281dca86165d3 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 16 Aug 2017 18:58:20 -0700
-Subject: [PATCH] winsys/svga/drm: Include sys/types.h
+Subject: [PATCH 2/6] winsys/svga/drm: Include sys/types.h
+Organization: O.S. Systems Software LTDA.
vmw_screen.h uses dev_t which is defines in sys/types.h
this header is required to be included for getting dev_t
@@ -10,15 +11,14 @@ on glibc since sys/types.h is included through another
system headers
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Backport [7dfdfbf8c37e52e7b9b09f7d1d434edad3ebc864]
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---
-
-Upstream-Status: Submitted
-
src/gallium/winsys/svga/drm/vmw_screen.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/gallium/winsys/svga/drm/vmw_screen.h b/src/gallium/winsys/svga/drm/vmw_screen.h
-index 0ef8e84..2eda97e 100644
+index f21cabb51f..4c972fdaa9 100644
--- a/src/gallium/winsys/svga/drm/vmw_screen.h
+++ b/src/gallium/winsys/svga/drm/vmw_screen.h
@@ -41,6 +41,7 @@
@@ -30,5 +30,5 @@ index 0ef8e84..2eda97e 100644
#define VMW_GMR_POOL_SIZE (16*1024*1024)
#define VMW_QUERY_POOL_SIZE (8192)
--
-2.14.1
+2.18.0
diff --git a/meta/recipes-graphics/mesa/files/llvm-config-version.patch b/meta/recipes-graphics/mesa/files/0003-Properly-get-LLVM-version-when-using-LLVM-Git-releas.patch
index fd79991aab1..5e735ca1052 100644
--- a/meta/recipes-graphics/mesa/files/llvm-config-version.patch
+++ b/meta/recipes-graphics/mesa/files/0003-Properly-get-LLVM-version-when-using-LLVM-Git-releas.patch
@@ -1,5 +1,8 @@
+From 8b42fb47138f91d9378439ab716bac7701e4e326 Mon Sep 17 00:00:00 2001
From: Otavio Salvador <otavio@ossystems.com.br>
-Subject: [PATCH] Properly get LLVM version when using LLVM Git releases
+Date: Tue, 5 Jun 2018 11:11:10 -0300
+Subject: [PATCH 3/6] Properly get LLVM version when using LLVM Git releases
+Organization: O.S. Systems Software LTDA.
$ llvm-config-host --version
5.0.0git-9a5c333388c
@@ -15,10 +18,10 @@ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
-index a02173f244..b107f04c2e 100644
+index 916d0bd207..dd172f1ebe 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -995,7 +995,7 @@ strip_unwanted_llvm_flags() {
+@@ -1090,7 +1090,7 @@ strip_unwanted_llvm_flags() {
llvm_set_environment_variables() {
if test "x$LLVM_CONFIG" != xno; then
@@ -27,7 +30,7 @@ index a02173f244..b107f04c2e 100644
LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
-@@ -2644,7 +2644,7 @@ detect_old_buggy_llvm() {
+@@ -2808,7 +2808,7 @@ detect_old_buggy_llvm() {
dnl ourselves.
dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823)
dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
@@ -37,5 +40,5 @@ index a02173f244..b107f04c2e 100644
if test "x$llvm_have_one_so" = xyes; then
--
-2.15.1
+2.18.0
diff --git a/meta/recipes-graphics/mesa/files/Use-Python-3-to-execute-the-scripts.patch b/meta/recipes-graphics/mesa/files/0004-Use-Python-3-to-execute-the-scripts.patch
index 0b4aabf9794..8953c4a18ff 100644
--- a/meta/recipes-graphics/mesa/files/Use-Python-3-to-execute-the-scripts.patch
+++ b/meta/recipes-graphics/mesa/files/0004-Use-Python-3-to-execute-the-scripts.patch
@@ -1,7 +1,7 @@
-From 18c3e684a8259a0644214f88c7ead7fa31573fd9 Mon Sep 17 00:00:00 2001
+From ebe6077a1d74e56b28249f71e8760295fa846ed2 Mon Sep 17 00:00:00 2001
From: Otavio Salvador <otavio@ossystems.com.br>
Date: Fri, 29 Dec 2017 10:27:59 -0200
-Subject: [PATCH] Use Python 3 to execute the scripts
+Subject: [PATCH 4/6] Use Python 3 to execute the scripts
Organization: O.S. Systems Software LTDA.
The MESA build system uses Python 2 but as OE-Core has moved away from
@@ -15,11 +15,11 @@ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
-index b107f04c2e..055546142d 100644
+index dd172f1ebe..40cac36ac2 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -114,7 +114,7 @@ AC_PROG_CXX
- AM_PROG_CC_C_O
+@@ -122,7 +122,7 @@ AM_PROG_CC_C_O
+ AC_PROG_NM
AM_PROG_AS
AX_CHECK_GNU_MAKE
-AC_CHECK_PROGS([PYTHON2], [python2.7 python2 python])
@@ -28,5 +28,5 @@ index b107f04c2e..055546142d 100644
AC_PROG_MKDIR_P
--
-2.15.1
+2.18.0
diff --git a/meta/recipes-graphics/mesa/files/0005-dri-i965-Add-missing-time.h-include.patch b/meta/recipes-graphics/mesa/files/0005-dri-i965-Add-missing-time.h-include.patch
new file mode 100644
index 00000000000..d40e7b58558
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0005-dri-i965-Add-missing-time.h-include.patch
@@ -0,0 +1,36 @@
+From 9e0368af471af3a36e0eb526453f892598120065 Mon Sep 17 00:00:00 2001
+From: Otavio Salvador <otavio@ossystems.com.br>
+Date: Wed, 6 Jun 2018 09:50:35 -0300
+Subject: [PATCH 5/6] dri: i965: Add missing time.h include
+Organization: O.S. Systems Software LTDA.
+
+This fixes a build error when using musl:
+
+,----
+| In file included from .../src/mesa/drivers/dri/i965/intel_upload.c:33:0:
+| .../src/mesa/drivers/dri/i965/brw_bufmgr.h:132:4: error: unknown type name 'time_t'
+| time_t free_time;
+| ^~~~~~
+`----
+
+Upstream-Status: Backport [3c288da5eec81ee58b85927df18d9194ead8f5c2]
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ src/mesa/drivers/dri/i965/brw_bufmgr.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/mesa/drivers/dri/i965/brw_bufmgr.h b/src/mesa/drivers/dri/i965/brw_bufmgr.h
+index 68f5e0c2c8..5b60a23763 100644
+--- a/src/mesa/drivers/dri/i965/brw_bufmgr.h
++++ b/src/mesa/drivers/dri/i965/brw_bufmgr.h
+@@ -37,6 +37,7 @@
+ #include <stdbool.h>
+ #include <stdint.h>
+ #include <stdio.h>
++#include <time.h>
+ #include "util/u_atomic.h"
+ #include "util/list.h"
+
+--
+2.18.0
+
diff --git a/meta/recipes-graphics/mesa/files/0006-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch b/meta/recipes-graphics/mesa/files/0006-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch
new file mode 100644
index 00000000000..0212922c5d5
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0006-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch
@@ -0,0 +1,37 @@
+From 754ccf89a732fc3da6e9bc62ebd6b28686ff3d26 Mon Sep 17 00:00:00 2001
+From: Otavio Salvador <otavio@ossystems.com.br>
+Date: Wed, 29 Aug 2018 22:10:30 -0300
+Subject: [PATCH 6/6] use PKG_CHECK_VAR for defining WAYLAND_PROTOCOLS_DATADIR
+Organization: O.S. Systems Software LTDA.
+
+This allows to override the wayland-protocols pkgdatadir with the
+WAYLAND_PROTOCOLS_DATADIR from environment.
+
+pkgconfig would return an absolute path in
+/usr/share/wayland-protocols
+for the pkgdatadir value, which is not suitable for cross-compiling.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Pending
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 40cac36ac2..728bbdcbc4 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1823,7 +1823,7 @@ for plat in $platforms; do
+ PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= $WAYLAND_REQUIRED])
+ PKG_CHECK_MODULES([WAYLAND_SERVER], [wayland-server >= $WAYLAND_REQUIRED])
+ PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED])
+- WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`
++ PKG_CHECK_VAR([WAYLAND_PROTOCOLS_DATADIR], [wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED], pkgdatadir)
+
+ AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:])
+
+--
+2.18.0
+
diff --git a/meta/recipes-graphics/mesa/files/disable-asm-on-non-gcc.patch b/meta/recipes-graphics/mesa/files/disable-asm-on-non-gcc.patch
deleted file mode 100644
index d2d67558b66..00000000000
--- a/meta/recipes-graphics/mesa/files/disable-asm-on-non-gcc.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Configure checks for compiler to be gcc and then it enables asm_offsets
-generation. see
-
-https://cgit.freedesktop.org/mesa/mesa/commit/?id=73c9b4b0e05fc66629ba250846948dc55c0e7a0d
-
-However, we missed the check when enabling this on cross compilation
-when architecture for both host and target is x86
-
-Fixes errors like
-./gen_matypes > matypes.h
-/bin/bash: ./gen_matypes: No such file or directory
-
--Khem
-
-Upstream-Status: Submitted
-
-Index: mesa-12.0.1/configure.ac
-===================================================================
---- mesa-12.0.1.orig/configure.ac
-+++ mesa-12.0.1/configure.ac
-@@ -732,7 +732,7 @@ test "x$enable_asm" = xno && AC_MSG_RESU
- if test "x$enable_asm" = xyes -a "x$cross_compiling" = xyes; then
- case "$host_cpu" in
- i?86 | x86_64 | amd64)
-- if test "x$host_cpu" != "x$target_cpu"; then
-+ if test "x$host_cpu" != "x$target_cpu" -o "x$acv_mesa_CLANG" = xyes; then
- enable_asm=no
- AC_MSG_RESULT([no, cross compiling])
- fi
diff --git a/meta/recipes-graphics/mesa/mesa-gl_17.3.8.bb b/meta/recipes-graphics/mesa/mesa-gl_18.1.9.bb
index 73267eb4f0d..73267eb4f0d 100644
--- a/meta/recipes-graphics/mesa/mesa-gl_17.3.8.bb
+++ b/meta/recipes-graphics/mesa/mesa-gl_18.1.9.bb
diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc
index b501b7e726d..8d0e2cb67c8 100644
--- a/meta/recipes-graphics/mesa/mesa.inc
+++ b/meta/recipes-graphics/mesa/mesa.inc
@@ -29,12 +29,16 @@ inherit autotools pkgconfig python3native gettext distro_features_check
ANY_OF_DISTRO_FEATURES = "opengl vulkan"
PLATFORMS ??= "${@bb.utils.filter('PACKAGECONFIG', 'x11 wayland', d)} \
- ${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'drm', '', d)}"
+ ${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'drm', '', d)} \
+ surfaceless"
export LLVM_CONFIG = "${STAGING_BINDIR_NATIVE}/llvm-config${MESA_LLVM_RELEASE}"
export YOCTO_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR}/llvm${MESA_LLVM_RELEASE}/llvm-config"
+export YOCTO_ALTERNATE_MULTILIB_NAME = "${base_libdir}"
EXTRA_OECONF = "--enable-shared-glapi \
--disable-opencl \
+ --enable-glx-read-only-text \
+ PYTHON2=python2 \
--with-llvm-prefix=${STAGING_LIBDIR}/llvm${MESA_LLVM_RELEASE} \
--with-platforms='${PLATFORMS}'"
@@ -47,7 +51,7 @@ PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland vulkan', d)} \
# "gbm" requires "dri", "opengl"
PACKAGECONFIG[gbm] = "--enable-gbm,--disable-gbm"
-X11_DEPS = "xf86driproto glproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes"
+X11_DEPS = "xorgproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes"
# "x11" requires "opengl"
PACKAGECONFIG[x11] = "--enable-glx-tls,--disable-glx,${X11_DEPS}"
PACKAGECONFIG[xvmc] = "--enable-xvmc,--disable-xvmc,libxvmc"
@@ -57,8 +61,8 @@ DRIDRIVERS = "swrast"
DRIDRIVERS_append_x86 = ",radeon,r200,nouveau,i965,i915"
DRIDRIVERS_append_x86-64 = ",radeon,r200,nouveau,i965,i915"
# "dri" requires "opengl"
-PACKAGECONFIG[dri] = "--enable-dri --with-dri-drivers=${DRIDRIVERS}, --disable-dri, dri2proto libdrm"
-PACKAGECONFIG[dri3] = "--enable-dri3, --disable-dri3, dri3proto presentproto libxshmfence"
+PACKAGECONFIG[dri] = "--enable-dri --with-dri-drivers=${DRIDRIVERS}, --disable-dri, xorgproto libdrm"
+PACKAGECONFIG[dri3] = "--enable-dri3, --disable-dri3, xorgproto libxshmfence"
# Vulkan drivers need dri3 enabled
# radeon could be enabled as well but requires gallium-llvm with llvm >= 3.9
@@ -87,6 +91,8 @@ GALLIUMDRIVERS_LLVM33_ENABLED = "${@oe.utils.version_less_or_equal('MESA_LLVM_RE
GALLIUMDRIVERS_LLVM = "r300,svga,nouveau${@',${GALLIUMDRIVERS_LLVM33}' if ${GALLIUMDRIVERS_LLVM33_ENABLED} else ''}"
GALLIUMDRIVERS_append_x86 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERS_LLVM}', '', d)}"
GALLIUMDRIVERS_append_x86-64 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERS_LLVM}', '', d)}"
+GALLIUMDRIVERS_append_qemux86 = ",virgl"
+GALLIUMDRIVERS_append_qemux86-64 = ",virgl"
# keep --with-gallium-drivers separate, because when only one of gallium versions is enabled, other 2 were adding --without-gallium-drivers
PACKAGECONFIG[gallium] = "--enable-texture-float --with-gallium-drivers=${GALLIUMDRIVERS}, --without-gallium-drivers"
MESA_LLVM_RELEASE ?= "6.0"
@@ -100,10 +106,13 @@ PACKAGECONFIG[osmesa] = "--enable-${OSMESA},--disable-${OSMESA}"
PACKAGECONFIG[unwind] = "--enable-libunwind,--disable-libunwind,libunwind"
+EXTRA_OECONF_remove_libc-musl = "--enable-glx-tls"
+EXTRA_OECONF_append_libc-musl = " --disable-glx-tls"
# llvmpipe is slow if compiled with -fomit-frame-pointer (e.g. -O2)
FULL_OPTIMIZATION_append = " -fno-omit-frame-pointer"
CFLAGS_append_armv5 = " -DMISSING_64BIT_ATOMICS"
+EXTRA_OEMAKE += "WAYLAND_PROTOCOLS_DATADIR=${STAGING_DATADIR}/wayland-protocols"
# Remove the mesa dependency on mesa-dev, as mesa is empty
RDEPENDS_${PN}-dev = ""
@@ -119,7 +128,6 @@ PACKAGES =+ "libegl-mesa libegl-mesa-dev \
libgles1-mesa libgles1-mesa-dev \
libgles2-mesa libgles2-mesa-dev \
libgles3-mesa libgles3-mesa-dev \
- libwayland-egl libwayland-egl-dev \
libxatracker libxatracker-dev \
mesa-megadriver mesa-vulkan-drivers \
"
@@ -134,6 +142,11 @@ do_install_append () {
# it was packaged in libdricore9.1.3-1 and preventing upgrades when debian.bbclass was used
rm -f ${D}${sysconfdir}/drirc
chrpath --delete ${D}${libdir}/dri/*_dri.so || true
+
+ # libwayland-egl has been moved to wayland 1.15+
+ rm -f ${D}${libdir}/libwayland-egl*
+ rm -f ${D}${libdir}/pkgconfig/wayland-egl.pc
+ rmdir --ignore-fail-on-non-empty ${D}${libdir}/pkgconfig
}
# For the packages that make up the OpenGL interfaces, inject variables so that
@@ -204,7 +217,6 @@ FILES_libgles2-mesa = "${libdir}/libGLESv2.so.*"
FILES_libgl-mesa = "${libdir}/libGL.so.*"
FILES_libglapi = "${libdir}/libglapi.so.*"
FILES_libosmesa = "${libdir}/libOSMesa.so.*"
-FILES_libwayland-egl = "${libdir}/libwayland-egl.so.*"
FILES_libxatracker = "${libdir}/libxatracker.so.*"
FILES_${PN}-dev = "${libdir}/pkgconfig/dri.pc ${includedir}/vulkan"
@@ -216,7 +228,6 @@ FILES_libgles1-mesa-dev = "${libdir}/libGLESv1*.* ${includedir}/GLES ${libdir}/p
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_libwayland-egl-dev = "${libdir}/pkgconfig/wayland-egl.pc ${libdir}/libwayland-egl.*"
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"
diff --git a/meta/recipes-graphics/mesa/mesa_17.3.8.bb b/meta/recipes-graphics/mesa/mesa_17.3.8.bb
deleted file mode 100644
index 2d3fd3ca388..00000000000
--- a/meta/recipes-graphics/mesa/mesa_17.3.8.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-require ${BPN}.inc
-
-SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \
- file://disable-asm-on-non-gcc.patch \
- file://Use-Python-3-to-execute-the-scripts.patch \
- file://0001-Use-wayland-scanner-in-the-path.patch \
- file://0002-hardware-gloat.patch \
- file://llvm-config-version.patch \
- file://0001-winsys-svga-drm-Include-sys-types.h.patch \
- file://0001-Makefile.vulkan.am-explictly-add-lib-expat-to-intel-.patch \
- file://0001-st-dri-Initialise-modifier-to-INVALID-for-DRI2.patch \
- "
-
-SRC_URI[md5sum] = "203d1a79156ab6926f2d253b377e9d9d"
-SRC_URI[sha256sum] = "8f9d9bf281c48e4a8f5228816577263b4c655248dc7666e75034ab422951a6b1"
-
-#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_18.1.9.bb b/meta/recipes-graphics/mesa/mesa_18.1.9.bb
new file mode 100644
index 00000000000..86d6a6bf3a7
--- /dev/null
+++ b/meta/recipes-graphics/mesa/mesa_18.1.9.bb
@@ -0,0 +1,21 @@
+require ${BPN}.inc
+
+SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \
+ file://0001-Simplify-wayland-scanner-lookup.patch \
+ file://0002-winsys-svga-drm-Include-sys-types.h.patch \
+ file://0003-Properly-get-LLVM-version-when-using-LLVM-Git-releas.patch \
+ file://0004-Use-Python-3-to-execute-the-scripts.patch \
+ file://0005-dri-i965-Add-missing-time.h-include.patch \
+ file://0006-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch \
+"
+
+SRC_URI[md5sum] = "2f8d2098ab478bc3907e42130577b54a"
+SRC_URI[sha256sum] = "55f5778d58a710a63d6635f000535768faf7db9e8144dc0f4fd1989f936c1a83"
+
+#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/pango/pango/0001-Drop-introspection-macros-from-acinclude.m4.patch b/meta/recipes-graphics/pango/pango/0001-Drop-introspection-macros-from-acinclude.m4.patch
deleted file mode 100644
index 9e1626e9a0d..00000000000
--- a/meta/recipes-graphics/pango/pango/0001-Drop-introspection-macros-from-acinclude.m4.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From 867a512eddbeb1899d3e7096df3da1dd0ce3e7b7 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 23 Oct 2015 14:06:17 +0300
-Subject: [PATCH] Drop introspection macros from acinclude.m4
-
-They take precendence over our customized macros, and so
-introspection doesn't work correctly.
-
-Upstream-Status: Backport [upstream 5ccfe0]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- acinclude.m4 | 96 ------------------------------------------------------------
- 1 file changed, 96 deletions(-)
-
-diff --git a/acinclude.m4 b/acinclude.m4
-index 8899c7c..48fd5d8 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -55,99 +55,3 @@ AC_DEFUN([JH_CHECK_XML_CATALOG],
- ])
-
-
--dnl REMOVE THIS WHEN introspection.m4 is widely available
--dnl
--dnl -*- mode: autoconf -*-
--dnl Copyright 2009 Johan Dahlin
--dnl
--dnl This file is free software; the author(s) gives unlimited
--dnl permission to copy and/or distribute it, with or without
--dnl modifications, as long as this notice is preserved.
--dnl
--
--# serial 1
--
--m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
--[
-- AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
-- AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
-- AC_BEFORE([LT_INIT],[$0])dnl setup libtool first
--
-- dnl enable/disable introspection
-- m4_if([$2], [require],
-- [dnl
-- enable_introspection=yes
-- ],[dnl
-- AC_ARG_ENABLE(introspection,
-- AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],
-- [Enable introspection for this build]),,
-- [enable_introspection=auto])
-- ])dnl
--
-- AC_MSG_CHECKING([for gobject-introspection])
--
-- dnl presence/version checking
-- AS_CASE([$enable_introspection],
-- [no], [dnl
-- found_introspection="no (disabled, use --enable-introspection to enable)"
-- ],dnl
-- [yes],[dnl
-- PKG_CHECK_EXISTS([gobject-introspection-1.0],,
-- AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
-- PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1],
-- found_introspection=yes,
-- AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
-- ],dnl
-- [auto],[dnl
-- PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)
-- ],dnl
-- [dnl
-- AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
-- ])dnl
--
-- AC_MSG_RESULT([$found_introspection])
--
-- INTROSPECTION_SCANNER=
-- INTROSPECTION_COMPILER=
-- INTROSPECTION_GENERATE=
-- 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_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
-- fi
-- AC_SUBST(INTROSPECTION_SCANNER)
-- AC_SUBST(INTROSPECTION_COMPILER)
-- AC_SUBST(INTROSPECTION_GENERATE)
-- AC_SUBST(INTROSPECTION_GIRDIR)
-- AC_SUBST(INTROSPECTION_TYPELIBDIR)
-- AC_SUBST(INTROSPECTION_CFLAGS)
-- AC_SUBST(INTROSPECTION_LIBS)
-- AC_SUBST(INTROSPECTION_MAKEFILE)
--
-- AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
--])
--
--
--dnl Usage:
--dnl GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version])
--
--AC_DEFUN([GOBJECT_INTROSPECTION_CHECK],
--[
-- _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1])
--])
--
--dnl Usage:
--dnl GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version])
--
--
--AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE],
--[
-- _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require])
--])
---
-2.1.4
diff --git a/meta/recipes-graphics/pango/pango_1.40.14.bb b/meta/recipes-graphics/pango/pango_1.42.4.bb
index 3bd9c647161..e73fd28dfda 100644
--- a/meta/recipes-graphics/pango/pango_1.40.14.bb
+++ b/meta/recipes-graphics/pango/pango_1.42.4.bb
@@ -14,20 +14,17 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
inherit gnomebase gtk-doc ptest-gnome upstream-version-is-even gobject-introspection
SRC_URI += "file://run-ptest \
- file://0001-Drop-introspection-macros-from-acinclude.m4.patch \
file://0001-Enforce-recreation-of-docs-pango.types-it-is-build-c.patch \
"
-SRC_URI[archive.md5sum] = "18d7eb8d52e7e445e733c109ddaa7b78"
-SRC_URI[archive.sha256sum] = "90af1beaa7bf9e4c52db29ec251ec4fd0a8f2cc185d521ad1f88d01b3a6a17e3"
+SRC_URI[archive.md5sum] = "deb171a31a3ad76342d5195a1b5bbc7c"
+SRC_URI[archive.sha256sum] = "1d2b74cd63e8bd41961f2f8d952355aa0f9be6002b52c8aa7699d9f5da597c9d"
-DEPENDS = "glib-2.0 glib-2.0-native fontconfig freetype virtual/libiconv cairo harfbuzz"
+DEPENDS = "glib-2.0 glib-2.0-native fontconfig freetype virtual/libiconv cairo harfbuzz fribidi"
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
PACKAGECONFIG[x11] = "--with-xft,--without-xft,virtual/libx11 libxft"
-EXTRA_OECONF = " \
- --disable-debug \
- "
+EXTRA_OECONF = "--disable-debug"
LEAD_SONAME = "libpango-1.0*"
LIBV = "1.8.0"
diff --git a/meta/recipes-graphics/piglit/piglit_git.bb b/meta/recipes-graphics/piglit/piglit_git.bb
index b936ad8a730..df810a33b4f 100644
--- a/meta/recipes-graphics/piglit/piglit_git.bb
+++ b/meta/recipes-graphics/piglit/piglit_git.bb
@@ -8,8 +8,8 @@ SRC_URI = "git://anongit.freedesktop.org/piglit \
"
UPSTREAM_CHECK_COMMITS = "1"
-# From 2018-02-26
-SRCREV = "4ce0887e2f7f848d2be2e435a2d0f3c80e44ea3b"
+# From 2018-08-13
+SRCREV = "57859e15dc8ba4034348b04d0b72f213b74d6347"
# (when PV goes above 1.0 remove the trailing r)
PV = "1.0+gitr${SRCPV}"
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
index d32c8f2803a..93bcfbf8513 100644
--- 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
@@ -1,6 +1,6 @@
-From 55770fb07c42fe410cf8d09f8f5976babc89b9ef Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Tue, 4 Jul 2017 17:13:45 +0300
+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:
@@ -9,43 +9,46 @@ resources that are not included.
ssao:
scenerendering:
- Sibenik model, no license found
+ Sibenik model, no license found
deferred:
deferredmultisampling:
deferredshadows:
- armor model, CC-BY-3.0
+ armor model, CC-BY-3.0
vulkanscene:
imgui:
shadowmapping:
- vulkanscene model, no license found
+ vulkanscene model, no license found
indirectdraw:
- plant model, no license found
+ plant model, no license found
hdr:
pbribl:
pbrtexture:
- Require external Vulkan Asset Pack
+ 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>
---
- CMakeLists.txt | 13 -------------
- 1 file changed, 13 deletions(-)
+ examples/CMakeLists.txt | 14 --------------
+ 1 file changed, 14 deletions(-)
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 4958fff..0f9d3e4 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -150,17 +150,11 @@ set(EXAMPLES
- computeparticles
+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
@@ -53,32 +56,36 @@ index 4958fff..0f9d3e4 100644
geometryshader
- hdr
- imgui
-- indirectdraw
+- indirectdraw
+ inputattachments
instancing
mesh
- multisampling
-@@ -170,20 +164,14 @@ set(EXAMPLES
+@@ -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
- tessellation
-@@ -196,7 +184,6 @@ set(EXAMPLES
+@@ -101,7 +88,6 @@ set(EXAMPLES
texturesparseresidency
triangle
viewportarray
@@ -87,5 +94,5 @@ index 4958fff..0f9d3e4 100644
buildExamples()
--
-2.13.2
+2.4.0
diff --git a/meta/recipes-graphics/vulkan/vulkan-demos/0001-Fix-build-on-x86.patch b/meta/recipes-graphics/vulkan/vulkan-demos/0001-Fix-build-on-x86.patch
deleted file mode 100644
index 681b3422d90..00000000000
--- a/meta/recipes-graphics/vulkan/vulkan-demos/0001-Fix-build-on-x86.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From b0495efb6c3ea3a530fcbaddac86da57ecce5a66 Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Mon, 10 Jul 2017 13:11:12 +0300
-Subject: [PATCH] Fix build on x86
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-| func_common.inl:193:51: error: wrong number of template arguments
-| (5, should be 6) struct compute_sign<T, P, vecType, false, Aligned>
-
-The fix is backported from the upstream glm project.
-
-Upstream-Status: Pending [https://github.com/SaschaWillems/Vulkan/issues/356]
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
----
- external/glm/glm/detail/func_common.inl | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/external/glm/glm/detail/func_common.inl b/external/glm/glm/detail/func_common.inl
-index cafaed5..2dd94e1 100644
---- a/external/glm/glm/detail/func_common.inl
-+++ b/external/glm/glm/detail/func_common.inl
-@@ -190,12 +190,12 @@ namespace detail
-
- # if GLM_ARCH == GLM_ARCH_X86
- template<length_t L, typename T, precision P, template<length_t, typename, precision> class vecType, bool Aligned>
-- struct compute_sign<T, P, vecType, false, Aligned>
-+ struct compute_sign<L, T, P, vecType, false, Aligned>
- {
- GLM_FUNC_QUALIFIER static vecType<L, T, P> call(vecType<L, T, P> const & x)
- {
- T const Shift(static_cast<T>(sizeof(T) * 8 - 1));
-- vecType<L, T, P> const y(vecType<typename make_unsigned<T>::type, P>(-x) >> typename make_unsigned<T>::type(Shift));
-+ vecType<L, T, P> const y(vecType<L, typename make_unsigned<T>::type, P>(-x) >> typename make_unsigned<T>::type(Shift));
-
- return (x >> Shift) | y;
- }
---
-2.1.4
-
diff --git a/meta/recipes-graphics/vulkan/vulkan-demos/0001-Support-installing-demos-support-out-of-tree-builds.patch b/meta/recipes-graphics/vulkan/vulkan-demos/0001-Support-installing-demos-support-out-of-tree-builds.patch
deleted file mode 100644
index 4addea3bf15..00000000000
--- a/meta/recipes-graphics/vulkan/vulkan-demos/0001-Support-installing-demos-support-out-of-tree-builds.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From edca667684764cfcc0460e448e834fadf623a887 Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Mon, 3 Jul 2017 14:49:18 +0300
-Subject: [PATCH] Support installing demos, support out-of-tree builds
-
-This is especially useful for cross-compile situation where testing
-happens on target.
-
--DRESOURCE_INSTALL_DIR=<path> decides where data is installed (and
-where the binaries will load the data from): if it's left empty,
-then nothing will be installed and binaries will load the data from
-CMAKE_SOURCE_DIR.
-
-Binaries are now correctly built in CMAKE_BINARY_DIR.
-
-Upstream-Status: Submitted [https://github.com/SaschaWillems/Vulkan/pull/352]
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
----
- CMakeLists.txt | 15 ++++++++++++++-
- base/vulkanexamplebase.cpp | 2 +-
- 2 files changed, 15 insertions(+), 2 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index b9886bc..4958fff 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -16,6 +16,8 @@ include_directories(base)
- OPTION(USE_D2D_WSI "Build the project using Direct to Display swapchain" OFF)
- OPTION(USE_WAYLAND_WSI "Build the project using Wayland swapchain" OFF)
-
-+set(RESOURCE_INSTALL_DIR "" CACHE PATH "Path to install resources to (leave empty for running uninstalled)")
-+
- # Use FindVulkan module added with CMAKE 3.7
- if (NOT CMAKE_VERSION VERSION_LESS 3.7.0)
- message(STATUS "Using module to find Vulkan")
-@@ -108,6 +110,10 @@ function(buildExample EXAMPLE_NAME)
- add_executable(${EXAMPLE_NAME} ${MAIN_CPP} ${SOURCE} ${SHADERS})
- target_link_libraries(${EXAMPLE_NAME} ${Vulkan_LIBRARY} ${ASSIMP_LIBRARIES} ${WAYLAND_CLIENT_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
- endif(WIN32)
-+
-+ if(RESOURCE_INSTALL_DIR)
-+ install(TARGETS ${EXAMPLE_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
-+ endif()
- endfunction(buildExample)
-
- # Build all examples
-@@ -117,6 +123,13 @@ function(buildExamples)
- endforeach(EXAMPLE)
- endfunction(buildExamples)
-
-+if(RESOURCE_INSTALL_DIR)
-+ add_definitions(-DVK_EXAMPLE_DATA_DIR=\"${RESOURCE_INSTALL_DIR}/\")
-+ install(DIRECTORY data/ DESTINATION ${RESOURCE_INSTALL_DIR}/)
-+else()
-+ add_definitions(-DVK_EXAMPLE_DATA_DIR=\"${CMAKE_SOURCE_DIR}/data/\")
-+endif()
-+
- # Compiler specific stuff
- IF(MSVC)
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
-@@ -128,7 +141,7 @@ ELSE(WIN32)
- link_libraries(${XCB_LIBRARIES} ${Vulkan_LIBRARY})
- ENDIF(WIN32)
-
--set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin/")
-+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/")
-
- set(EXAMPLES
- bloom
-diff --git a/base/vulkanexamplebase.cpp b/base/vulkanexamplebase.cpp
-index 647368a..a0f28a5 100644
---- a/base/vulkanexamplebase.cpp
-+++ b/base/vulkanexamplebase.cpp
-@@ -84,7 +84,7 @@ const std::string VulkanExampleBase::getAssetPath()
- #if defined(__ANDROID__)
- return "";
- #else
-- return "./../data/";
-+ return VK_EXAMPLE_DATA_DIR;
- #endif
- }
- #endif
---
-2.13.2
-
diff --git a/meta/recipes-graphics/vulkan/vulkan-demos_git.bb b/meta/recipes-graphics/vulkan/vulkan-demos_git.bb
index 5fc9c2dba75..bf30c980c0a 100644
--- a/meta/recipes-graphics/vulkan/vulkan-demos_git.bb
+++ b/meta/recipes-graphics/vulkan/vulkan-demos_git.bb
@@ -3,15 +3,18 @@ LICENSE = "MIT"
DEPENDS = "zlib"
LIC_FILES_CHKSUM = "file://LICENSE.md;md5=dcf473723faabf17baa9b5f2207599d0 \
- file://triangle/triangle.cpp;endline=12;md5=bccd1bf9cadd9e10086cf7872157e4fa"
+ file://examples/triangle/triangle.cpp;endline=12;md5=bccd1bf9cadd9e10086cf7872157e4fa"
+
+SRCREV_glm = "01f9ab5b6d21e5062ac0f6e0f205c7fa2ca9d769"
+SRCREV_gli = "8e43030b3e12bb58a4663d85adc5c752f89099c0"
SRC_URI = "git://github.com/SaschaWillems/Vulkan.git \
- file://0001-Support-installing-demos-support-out-of-tree-builds.patch \
+ 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 \
- file://0001-Fix-build-on-x86.patch \
"
UPSTREAM_CHECK_COMMITS = "1"
-SRCREV = "18df00c7b4677b0889486e16977857aa987947e2"
+SRCREV = "ae0b59c6e2e8630a2ae26f4a0b7a72cbe7547948"
UPSTREAM_CHECK_GITTAGREGEX = "These are not the releases you're looking for"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch b/meta/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch
index bcf84a5a3e7..b0b9fc4e43c 100644
--- a/meta/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch
+++ b/meta/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch
@@ -1,21 +1,30 @@
-commit f63cbe944107b5cd8f150ceaaec43b26099d5688
+From 9b13be109bc66f4d4a1ad53ce5c92c7c495e41d7 Mon Sep 17 00:00:00 2001
+From: "Maxin B. John" <maxin.john@intel.com>
+Date: Tue, 24 Jul 2018 17:40:52 +0300
+Subject: [PATCH] commit f63cbe944107b5cd8f150ceaaec43b26099d5688
+
Author: Adam Jackson <ajax@redhat.com>
Date: Tue Feb 16 10:05:25 2016 -0500
- demos: Don't build tri or cube
-
- There are more interesting demos, all we really want here is vulkaninfo.
- This helps because we don't need to pre-build glslang/llvm/lunarglass
- just to get the loader and layers.
+demos: Don't build tri or cube
+
+There are more interesting demos, all we really want here is vulkaninfo.
+This helps because we don't need to pre-build glslang/llvm/lunarglass
+just to get the loader and layers.
Upstream-Status: Inappropriate [configuration]
+
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Signed-off-by: Maxin B. John <maxin.john@intel.com>
+---
+ demos/CMakeLists.txt | 88 ----------------------------------------------------
+ 1 file changed, 88 deletions(-)
-Index: git/demos/CMakeLists.txt
-===================================================================
---- git.orig/demos/CMakeLists.txt
-+++ git/demos/CMakeLists.txt
-@@ -63,46 +63,6 @@ elseif(UNIX)
+diff --git a/demos/CMakeLists.txt b/demos/CMakeLists.txt
+index 4f32679..26e4cdf 100644
+--- a/demos/CMakeLists.txt
++++ b/demos/CMakeLists.txt
+@@ -93,42 +93,6 @@ elseif(UNIX)
else()
endif()
@@ -37,38 +46,40 @@ Index: git/demos/CMakeLists.txt
- endif()
- endforeach()
-
-- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/cube-vert.spv
-- COMMAND ${GLSLANG_VALIDATOR} -s -V -o ${CMAKE_BINARY_DIR}/demos/cube-vert.spv ${PROJECT_SOURCE_DIR}/demos/cube.vert
-- DEPENDS cube.vert ${GLSLANG_VALIDATOR}
-- )
-- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/cube-frag.spv
-- COMMAND ${GLSLANG_VALIDATOR} -s -V -o ${CMAKE_BINARY_DIR}/demos/cube-frag.spv ${PROJECT_SOURCE_DIR}/demos/cube.frag
-- DEPENDS cube.frag ${GLSLANG_VALIDATOR}
-- )
- file(COPY cube.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/demos)
- file(COPY vulkaninfo.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/demos)
--else()
-- if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR})
-- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/cube-vert.spv
-- COMMAND ${GLSLANG_VALIDATOR} -s -V -o cube-vert.spv ${PROJECT_SOURCE_DIR}/demos/cube.vert
-- DEPENDS cube.vert ${GLSLANG_VALIDATOR}
-- )
-- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/cube-frag.spv
-- COMMAND ${GLSLANG_VALIDATOR} -s -V -o cube-frag.spv ${PROJECT_SOURCE_DIR}/demos/cube.frag
-- DEPENDS cube.frag ${GLSLANG_VALIDATOR}
-- )
-- endif()
-endif()
+-
+-add_custom_command(
+- COMMENT "Compiling cube demo vertex shader"
+- OUTPUT cube.vert.inc
+- COMMAND ${GLSLANG_VALIDATOR} -V -x -o ${CMAKE_CURRENT_BINARY_DIR}/cube.vert.inc ${PROJECT_SOURCE_DIR}/demos/cube.vert
+- MAIN_DEPENDENCY ${PROJECT_SOURCE_DIR}/demos/cube.vert
+- DEPENDS ${PROJECT_SOURCE_DIR}/demos/cube.vert ${GLSLANG_VALIDATOR}
+-)
+-add_custom_command(
+- COMMENT "Compiling cube demo fragment shader"
+- OUTPUT cube.frag.inc
+- COMMAND ${GLSLANG_VALIDATOR} -V -x -o ${CMAKE_CURRENT_BINARY_DIR}/cube.frag.inc ${PROJECT_SOURCE_DIR}/demos/cube.frag
+- MAIN_DEPENDENCY ${PROJECT_SOURCE_DIR}/demos/cube.frag
+- DEPENDS ${PROJECT_SOURCE_DIR}/demos/cube.frag ${GLSLANG_VALIDATOR}
+-)
- if(WIN32)
- include_directories (
-@@ -116,43 +76,6 @@ endif()
- add_executable(${API_LOWERCASE}info vulkaninfo.c)
- target_link_libraries(${API_LOWERCASE}info ${LIBRARIES})
+ include_directories(${CMAKE_CURRENT_BINARY_DIR})
--if(NOT WIN32)
+@@ -172,55 +136,3 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+ install(TARGETS ${API_LOWERCASE}info DESTINATION ${CMAKE_INSTALL_BINDIR})
+ endif()
+ endif()
+-
+-######################################################################################
+-# cube
+-
+-if(APPLE)
+- include(macOS/cube/cube.cmake)
+-elseif(NOT WIN32)
- if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR})
-- add_executable(cube cube.c ${CMAKE_BINARY_DIR}/demos/cube-vert.spv ${CMAKE_BINARY_DIR}/demos/cube-frag.spv)
+- add_executable(cube cube.c ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc)
- target_link_libraries(cube ${LIBRARIES})
- endif()
-else()
@@ -78,13 +89,18 @@ Index: git/demos/CMakeLists.txt
- set (LIB_DIR "Win32")
- endif()
-
-- add_executable(cube WIN32 cube.c ${CMAKE_BINARY_DIR}/demos/cube-vert.spv ${CMAKE_BINARY_DIR}/demos/cube-frag.spv)
+- add_executable(cube WIN32 cube.c ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc)
- target_link_libraries(cube ${LIBRARIES})
-endif()
-
--if(NOT WIN32)
+-######################################################################################
+-# cubepp
+-
+-if(APPLE)
+- include(macOS/cubepp/cubepp.cmake)
+-elseif(NOT WIN32)
- if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR})
-- add_executable(cubepp cube.cpp ${CMAKE_BINARY_DIR}/demos/cube-vert.spv ${CMAKE_BINARY_DIR}/demos/cube-frag.spv)
+- add_executable(cubepp cube.cpp ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc)
- target_link_libraries(cubepp ${LIBRARIES})
- endif()
-else()
@@ -94,15 +110,19 @@ Index: git/demos/CMakeLists.txt
- set (LIB_DIR "Win32")
- endif()
-
-- add_executable(cubepp WIN32 cube.cpp ${CMAKE_BINARY_DIR}/demos/cube-vert.spv ${CMAKE_BINARY_DIR}/demos/cube-frag.spv)
+- add_executable(cubepp WIN32 cube.cpp ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc)
- target_link_libraries(cubepp ${LIBRARIES})
-endif()
-
+-######################################################################################
+-# smoke
+-
-if ((${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}))
-- if ((DEMOS_WSI_SELECTION STREQUAL "XCB") OR (DEMOS_WSI_SELECTION STREQUAL "WAYLAND") OR WIN32 OR (CMAKE_SYSTEM_NAME STREQUAL "Android"))
+- if ((DEMOS_WSI_SELECTION STREQUAL "XCB") OR (DEMOS_WSI_SELECTION STREQUAL "WAYLAND") OR WIN32 OR
+- (CMAKE_SYSTEM_NAME STREQUAL "Android") OR (CMAKE_SYSTEM_NAME STREQUAL "Darwin"))
- add_subdirectory(smoke)
- endif()
-endif()
-
- if(UNIX)
- if(INSTALL_LVL_FILES)
+--
+2.4.0
+
diff --git a/meta/recipes-graphics/vulkan/vulkan_1.0.65.2.bb b/meta/recipes-graphics/vulkan/vulkan_1.1.73.0.bb
index 1c8a895504e..5496f539676 100644
--- a/meta/recipes-graphics/vulkan/vulkan_1.0.65.2.bb
+++ b/meta/recipes-graphics/vulkan/vulkan_1.1.73.0.bb
@@ -9,11 +9,11 @@ SECTION = "libs"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=99c647ca3d4f6a4b9d8628f757aad156 \
- file://loader/loader.c;endline=25;md5=a87cd5442291c23d1fce4eece4cfde9d"
-SRC_URI = "git://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers.git;branch=sdk-1.0.65 \
+ file://loader/loader.c;endline=25;md5=151b392f46568aaedb4ad22b246237ec"
+SRC_URI = "git://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers.git;branch=sdk-1.1.73 \
file://demos-Don-t-build-tri-or-cube.patch \
"
-SRCREV = "73486a1a169d862d5210e2ad520d95319a2383fa"
+SRCREV = "5998d6f444a85e6381b7a089ebf3f9e86482a31d"
UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
S = "${WORKDIR}/git"
@@ -34,3 +34,4 @@ PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON -DD
PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland"
RRECOMMENDS_${PN} = "mesa-vulkan-drivers"
+INSANE_SKIP_${PN}-dev += "dev-elf"
diff --git a/meta/recipes-graphics/wayland/libinput_1.9.4.bb b/meta/recipes-graphics/wayland/libinput_1.11.3.bb
index 67a49dfe0c3..12e2091c0fe 100644
--- a/meta/recipes-graphics/wayland/libinput_1.9.4.bb
+++ b/meta/recipes-graphics/wayland/libinput_1.11.3.bb
@@ -3,14 +3,14 @@ HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libinput/"
SECTION = "libs"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2184aef38ff137ed33ce9a63b9d1eb8f"
+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] = "8b43d07d1698fb207a0492fc67554d4f"
-SRC_URI[sha256sum] = "0bcdbd4c4e3c2a2db322fbdf2ef3284f2e6d6fb7be3af80e6d8de7783f675190"
+SRC_URI[md5sum] = "df6e877f11de4a9793511e9abfe7ef01"
+SRC_URI[sha256sum] = "f31191d96e425b4f16319842279d65946d9d983dcd3d9e466ae1206aa10ecb06"
UPSTREAM_CHECK_REGEX = "libinput-(?P<pver>\d+\.\d+\.(?!9\d+)\d+)"
inherit meson pkgconfig lib_package
diff --git a/meta/recipes-graphics/wayland/wayland-protocols_1.13.bb b/meta/recipes-graphics/wayland/wayland-protocols_1.16.bb
index 1ef1ee1418c..fc4b7111725 100644
--- a/meta/recipes-graphics/wayland/wayland-protocols_1.13.bb
+++ b/meta/recipes-graphics/wayland/wayland-protocols_1.16.bb
@@ -11,8 +11,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \
SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
"
-SRC_URI[md5sum] = "29312149dafcd4a0e739ba94995a574d"
-SRC_URI[sha256sum] = "0758bc8008d5332f431b2a84fea7de64d971ce270ed208206a098ff2ebc68f38"
+SRC_URI[md5sum] = "e0b523ff162e30bab46be1d65d527683"
+SRC_URI[sha256sum] = "6b1485951fdcd36a960c870c46f28b03a3e5121fb46246916333ed07f78c98c5"
+
+UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
inherit allarch autotools pkgconfig
diff --git a/meta/recipes-graphics/wayland/wayland_1.14.0.bb b/meta/recipes-graphics/wayland/wayland_1.16.0.bb
index 1a9ff9807bb..112ee1a25e3 100644
--- a/meta/recipes-graphics/wayland/wayland_1.14.0.bb
+++ b/meta/recipes-graphics/wayland/wayland_1.16.0.bb
@@ -15,8 +15,10 @@ DEPENDS = "expat libxml2 libffi wayland-native"
SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
file://fixpathinpcfiles.patch \
"
-SRC_URI[md5sum] = "0235f6075c32c3be61cff94fa0b9f108"
-SRC_URI[sha256sum] = "ed80cabc0961a759a42092e2c39aabfc1ec9a13c86c98bbe2b812f008da27ab8"
+SRC_URI[md5sum] = "0c215e53de71d6fb26f7102cdc6432d3"
+SRC_URI[sha256sum] = "4e72c2b56109ccfb6610d776e465f4ca0af2280c9c2f7d5cc23f0ed2548752f5"
+
+UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
inherit autotools pkgconfig
diff --git a/meta/recipes-graphics/wayland/weston-init/weston.service b/meta/recipes-graphics/wayland/weston-init/weston.service
index 689ce410649..18f72626e0c 100644
--- a/meta/recipes-graphics/wayland/weston-init/weston.service
+++ b/meta/recipes-graphics/wayland/weston-init/weston.service
@@ -4,6 +4,7 @@ RequiresMountsFor=/run
[Service]
User=root
+PAMName=login
EnvironmentFile=-/etc/default/weston
ExecStart=/usr/bin/weston-start -v -e -- $OPTARGS
diff --git a/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch b/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch
index 0671a450442..09ec1559ec3 100644
--- a/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch
+++ b/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch
@@ -1,26 +1,27 @@
-From c22e90365d89346258394833cbcad03ff32b2e27 Mon Sep 17 00:00:00 2001
+From ad1d2161c811cff25d1684c33611f300adb753bc Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 29 May 2015 20:56:00 -0700
-Subject: [PATCH weston] make error() portable
+Subject: [PATCH] make error() portable
error() is not posix but gnu extension so may not be available on all
kind of systemsi e.g. musl.
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
Upstream-Status: Submitted
- configure.ac | 2 ++
- libweston/weston-error.h | 20 ++++++++++++++++++++
- libweston/weston-launch.c | 2 +-
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ configure.ac | 2 ++
+ libweston/weston-error.h | 20 ++++++++++++++++++++
+ libweston/weston-launch.c | 2 +-
3 files changed, 23 insertions(+), 1 deletion(-)
- create mode 100644 src/weston-error.h
+ create mode 100644 libweston/weston-error.h
-Index: weston-3.0.0/configure.ac
-===================================================================
---- weston-3.0.0.orig/configure.ac
-+++ weston-3.0.0/configure.ac
-@@ -103,6 +103,8 @@ AC_CHECK_DECL(CLOCK_MONOTONIC,[],
+diff --git a/configure.ac b/configure.ac
+index 7aebbdb..dc9c802 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -109,6 +109,8 @@ AC_CHECK_DECL(CLOCK_MONOTONIC,[],
[[#include <time.h>]])
AC_CHECK_HEADERS([execinfo.h])
@@ -29,10 +30,11 @@ Index: weston-3.0.0/configure.ac
AC_CHECK_FUNCS([mkostemp strchrnul initgroups posix_fallocate])
# check for libdrm as a build-time dependency only
-Index: weston-3.0.0/libweston/weston-error.h
-===================================================================
+diff --git a/libweston/weston-error.h b/libweston/weston-error.h
+new file mode 100644
+index 0000000..2089d02
--- /dev/null
-+++ weston-3.0.0/libweston/weston-error.h
++++ b/libweston/weston-error.h
@@ -0,0 +1,20 @@
+#ifndef _WESTON_ERROR_H
+#define _WESTON_ERROR_H
@@ -54,10 +56,10 @@ Index: weston-3.0.0/libweston/weston-error.h
+
+#endif
+
-Index: weston-3.0.0/libweston/weston-launch.c
-===================================================================
---- weston-3.0.0.orig/libweston/weston-launch.c
-+++ weston-3.0.0/libweston/weston-launch.c
+diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c
+index 1adcf21..166bf3b 100644
+--- a/libweston/weston-launch.c
++++ b/libweston/weston-launch.c
@@ -33,7 +33,6 @@
#include <poll.h>
#include <errno.h>
@@ -66,7 +68,7 @@ Index: weston-3.0.0/libweston/weston-launch.c
#include <getopt.h>
#include <sys/types.h>
-@@ -60,6 +59,7 @@
+@@ -59,6 +58,7 @@
#endif
#include "weston-launch.h"
diff --git a/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch b/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
index 70b988898cc..d648538b897 100644
--- a/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
+++ b/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
@@ -1,8 +1,7 @@
-From 8ff6ed03ec4079f32e9b34085414e57be4730e04 Mon Sep 17 00:00:00 2001
+From b98b9dbda902225cdd972b5bff6a641c36cc7e90 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
+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.
@@ -14,16 +13,18 @@ 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>
+
---
configure.ac | 9 +++++++--
libweston/weston-launch.c | 20 ++++++++++++++++++++
2 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
-index 46cb2c7..bb45f46 100644
+index dc9c802..48cf5cb 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -435,13 +435,17 @@ AC_ARG_ENABLE(resize-optimization,
+@@ -451,13 +451,17 @@ AC_ARG_ENABLE(resize-optimization,
AS_IF([test "x$enable_resize_optimization" = "xyes"],
[AC_DEFINE([USE_RESIZE_POOL], [1], [Use resize memory pool as a performance optimization])])
@@ -43,7 +44,7 @@ index 46cb2c7..bb45f46 100644
fi
AM_CONDITIONAL(HAVE_PANGO, test "x$have_pango" = "xyes")
-@@ -701,6 +705,7 @@ AC_MSG_RESULT([
+@@ -702,6 +706,7 @@ AC_MSG_RESULT([
Enable developer documentation ${enable_devdocs}
weston-launch utility ${enable_weston_launch}
@@ -52,7 +53,7 @@ index 46cb2c7..bb45f46 100644
systemd notify support ${enable_systemd_notify}
diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c
-index 0491896..07e7469 100644
+index 166bf3b..6fb9232 100644
--- a/libweston/weston-launch.c
+++ b/libweston/weston-launch.c
@@ -51,7 +51,9 @@
@@ -65,7 +66,7 @@ index 0491896..07e7469 100644
#ifdef HAVE_SYSTEMD_LOGIN
#include <systemd/sd-login.h>
-@@ -93,8 +95,10 @@ drmSetMaster(int drm_fd)
+@@ -101,8 +103,10 @@ drmSetMaster(int drm_fd)
#endif
struct weston_launch {
@@ -76,7 +77,7 @@ index 0491896..07e7469 100644
int tty;
int ttynr;
int sock[2];
-@@ -181,6 +185,7 @@ weston_launch_allowed(struct weston_launch *wl)
+@@ -189,6 +193,7 @@ weston_launch_allowed(struct weston_launch *wl)
return false;
}
@@ -84,7 +85,7 @@ index 0491896..07e7469 100644
static int
pam_conversation_fn(int msg_count,
const struct pam_message **messages,
-@@ -221,6 +226,7 @@ setup_pam(struct weston_launch *wl)
+@@ -229,6 +234,7 @@ setup_pam(struct weston_launch *wl)
return 0;
}
@@ -92,7 +93,7 @@ index 0491896..07e7469 100644
static int
setup_launcher_socket(struct weston_launch *wl)
-@@ -414,6 +420,7 @@ quit(struct weston_launch *wl, int status)
+@@ -422,6 +428,7 @@ quit(struct weston_launch *wl, int status)
close(wl->signalfd);
close(wl->sock[0]);
@@ -100,7 +101,7 @@ index 0491896..07e7469 100644
if (wl->new_user) {
err = pam_close_session(wl->ph, 0);
if (err)
-@@ -421,6 +428,7 @@ quit(struct weston_launch *wl, int status)
+@@ -429,6 +436,7 @@ quit(struct weston_launch *wl, int status)
err, pam_strerror(wl->ph, err));
pam_end(wl->ph, err);
}
@@ -108,7 +109,7 @@ index 0491896..07e7469 100644
if (ioctl(wl->tty, KDSKBMUTE, 0) &&
ioctl(wl->tty, KDSKBMODE, wl->kb_mode))
-@@ -600,6 +608,7 @@ setup_session(struct weston_launch *wl, char **child_argv)
+@@ -608,6 +616,7 @@ setup_session(struct weston_launch *wl, char **child_argv)
setenv("HOME", wl->pw->pw_dir, 1);
setenv("SHELL", wl->pw->pw_shell, 1);
@@ -116,7 +117,7 @@ index 0491896..07e7469 100644
env = pam_getenvlist(wl->ph);
if (env) {
for (i = 0; env[i]; ++i) {
-@@ -608,6 +617,7 @@ setup_session(struct weston_launch *wl, char **child_argv)
+@@ -616,6 +625,7 @@ setup_session(struct weston_launch *wl, char **child_argv)
}
free(env);
}
@@ -124,17 +125,18 @@ index 0491896..07e7469 100644
/*
* We open a new session, so it makes sense
-@@ -675,7 +685,9 @@ static void
+@@ -683,8 +693,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");
+ 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");
+ 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");
- fprintf(stderr, " -h, --help Display this help message\n");
-@@ -688,7 +700,9 @@ main(int argc, char *argv[])
+@@ -698,7 +710,9 @@ main(int argc, char *argv[])
int i, c;
char *tty = NULL;
struct option opts[] = {
@@ -144,8 +146,8 @@ index 0491896..07e7469 100644
{ "tty", required_argument, NULL, 't' },
{ "verbose", no_argument, NULL, 'v' },
{ "help", no_argument, NULL, 'h' },
-@@ -700,9 +714,13 @@ main(int argc, char *argv[])
- while ((c = getopt_long(argc, argv, "u:t::vh", opts, &i)) != -1) {
+@@ -710,9 +724,13 @@ main(int argc, char *argv[])
+ while ((c = getopt_long(argc, argv, "u:t:vh", opts, &i)) != -1) {
switch (c) {
case 'u':
+#ifdef HAVE_PAM
@@ -158,7 +160,7 @@ index 0491896..07e7469 100644
break;
case 't':
tty = optarg;
-@@ -740,8 +758,10 @@ main(int argc, char *argv[])
+@@ -753,8 +771,10 @@ main(int argc, char *argv[])
if (setup_tty(&wl, tty) < 0)
exit(EXIT_FAILURE);
@@ -169,6 +171,3 @@ index 0491896..07e7469 100644
if (setup_launcher_socket(&wl) < 0)
exit(EXIT_FAILURE);
---
-2.1.4
-
diff --git a/meta/recipes-graphics/wayland/weston/fix-missing-header.patch b/meta/recipes-graphics/wayland/weston/fix-missing-header.patch
deleted file mode 100644
index 55c0d4fd0f9..00000000000
--- a/meta/recipes-graphics/wayland/weston/fix-missing-header.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-On the musl C library, tests/timespec-text.c does not build, with the
-following error:
-
- In file included from tests/timespec-test.c:36:0:
- ./shared/timespec-util.h:41:21: warning: ‘struct timespec’ declared
- inside parameter list will not be visible outside of this definition
- or declaration
- timespec_sub(struct timespec *r,
- ^~~~~~~~
- [...]
-
-Indeed, struct timespec is defined in time.h, so we must include it.
-
-Upstream-Status: Backport [fa41bdfbc0b962fd73b89f01aab1a5370c9c28eb]
-
-Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
-Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
-Index: weston-3.0.0/shared/timespec-util.h
-===================================================================
---- weston-3.0.0.orig/shared/timespec-util.h
-+++ weston-3.0.0/shared/timespec-util.h
-@@ -28,6 +28,7 @@
-
- #include <stdint.h>
- #include <assert.h>
-+#include <time.h>
-
- #define NSEC_PER_SEC 1000000000
-
diff --git a/meta/recipes-graphics/wayland/weston/weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch b/meta/recipes-graphics/wayland/weston/weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch
deleted file mode 100644
index b3e1d06f57a..00000000000
--- a/meta/recipes-graphics/wayland/weston/weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-Multi-plane sub-sampled textures have partial width/height, e.g.
-YUV420/I420 has a full-size Y plane, followed by a half-width/height U
-plane, and a half-width/height V plane.
-
-zwp_linux_dmabuf_v1 allows clients to pass an explicit pitch for each
-plane, but for wl_shm this must be inferred. gl-renderer was correctly
-accounting for the width and height when subsampling, but the pitch was
-being taken as the pitch for the first plane.
-
-This does not match the requirements for GStreamer's waylandsink, in
-particular, as well as other clients. Fix the SHM upload path to
-correctly set the pitch for each plane, according to subsampling.
-
-Tested with:
- $ gst-launch-1.0 videotestsrc ! waylandsink
-
-Upstream-Status: Backport [https://patchwork.freedesktop.org/patch/180767/]
-
-Signed-off-by: Daniel Stone <daniels@collabora.com>
-Fixes: fdeefe42418 ("gl-renderer: add support of WL_SHM_FORMAT_YUV420")
-Reported-by: Fabien Lahoudere <fabien.lahoudere@collabora.co.uk>
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103063
-
----
- libweston/gl-renderer.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/libweston/gl-renderer.c b/libweston/gl-renderer.c
-index 244ce309..40bf0bb6 100644
---- a/libweston/gl-renderer.c
-+++ b/libweston/gl-renderer.c
-@@ -1445,14 +1445,13 @@ gl_renderer_flush_damage(struct weston_surface *surface)
- goto done;
- }
-
-- glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, gs->pitch);
--
- if (gs->needs_full_upload) {
- glPixelStorei(GL_UNPACK_SKIP_PIXELS_EXT, 0);
- glPixelStorei(GL_UNPACK_SKIP_ROWS_EXT, 0);
- wl_shm_buffer_begin_access(buffer->shm_buffer);
- for (j = 0; j < gs->num_textures; j++) {
- glBindTexture(GL_TEXTURE_2D, gs->textures[j]);
-+ glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, gs->pitch / gs->hsub[j]);
- glTexImage2D(GL_TEXTURE_2D, 0,
- gs->gl_format[j],
- gs->pitch / gs->hsub[j],
-@@ -1477,6 +1476,7 @@ gl_renderer_flush_damage(struct weston_surface *surface)
- glPixelStorei(GL_UNPACK_SKIP_ROWS_EXT, r.y1);
- for (j = 0; j < gs->num_textures; j++) {
- glBindTexture(GL_TEXTURE_2D, gs->textures[j]);
-+ glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, gs->pitch / gs->hsub[j]);
- glTexSubImage2D(GL_TEXTURE_2D, 0,
- r.x1 / gs->hsub[j],
- r.y1 / gs->vsub[j],
diff --git a/meta/recipes-graphics/wayland/weston_3.0.0.bb b/meta/recipes-graphics/wayland/weston_5.0.0.bb
index ad0cdc2b0fe..299408b201f 100644
--- a/meta/recipes-graphics/wayland/weston_3.0.0.bb
+++ b/meta/recipes-graphics/wayland/weston_5.0.0.bb
@@ -3,7 +3,7 @@ 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=26;md5=e342df749174a8ee11065583157c7a38"
+ file://libweston/compositor.c;endline=27;md5=6c53bbbd99273f4f7c4affa855c33c0a"
SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
file://weston.png \
@@ -11,11 +11,11 @@ SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
file://0001-make-error-portable.patch \
file://xwayland.weston-start \
file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \
- file://weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch \
- file://fix-missing-header.patch \
"
-SRC_URI[md5sum] = "9c42a4c51a1b9f35d040fa9d45ada36d"
-SRC_URI[sha256sum] = "cde1d55e8dd70c3cbb3d1ec72f60e60000041579caa1d6a262bd9c35e93723a5"
+SRC_URI[md5sum] = "752a04ce3c65af4884cfac4e57231bdb"
+SRC_URI[sha256sum] = "15a23423bcfa45e31e1dedc0cd524ba71e2930df174fde9c99b71a537c4e4caf"
+
+UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
inherit autotools pkgconfig useradd distro_features_check
# depends on virtual/egl
@@ -24,6 +24,8 @@ 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_OECONF = "--enable-setuid-install \
--disable-rdp-compositor \
"
@@ -41,7 +43,7 @@ PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms fbdev
# Compositor choices
#
# Weston on KMS
-PACKAGECONFIG[kms] = "--enable-drm-compositor,--disable-drm-compositor,drm udev virtual/mesa mtdev"
+PACKAGECONFIG[kms] = "--enable-drm-compositor,--disable-drm-compositor,drm udev virtual/mesa virtual/libgbm mtdev"
# Weston on Wayland (nested Weston)
PACKAGECONFIG[wayland] = "--enable-wayland-compositor,--disable-wayland-compositor,virtual/mesa"
# Weston on X11
@@ -62,8 +64,6 @@ PACKAGECONFIG[cairo-glesv2] = "--with-cairo-glesv2,--with-cairo=image,cairo"
PACKAGECONFIG[lcms] = "--enable-lcms,--disable-lcms,lcms"
# Weston with webp support
PACKAGECONFIG[webp] = "--with-webp,--without-webp,libwebp"
-# Weston with unwinding support
-PACKAGECONFIG[libunwind] = "--enable-libunwind,--disable-libunwind,libunwind"
# Weston with systemd-login support
PACKAGECONFIG[systemd] = "--enable-systemd-login,--disable-systemd-login,systemd dbus"
# Weston with Xwayland support (requires X11 and Wayland)
@@ -77,7 +77,7 @@ PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam"
do_install_append() {
# Weston doesn't need the .la files to load modules, so wipe them
- rm -f ${D}/${libdir}/libweston-3/*.la
+ 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
@@ -94,16 +94,16 @@ do_install_append() {
}
PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', '${PN}-xwayland', '', d)} \
- libweston-3 ${PN}-examples"
+ 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-3 = "${libdir}/lib*${SOLIBS} ${libdir}/libweston-3/*.so"
-SUMMARY_libweston-3 = "Helper library for implementing 'wayland window managers'."
+FILES_libweston-${WESTON_MAJOR_VERSION} = "${libdir}/lib*${SOLIBS} ${libdir}/libweston-${WESTON_MAJOR_VERSION}/*.so"
+SUMMARY_libweston-${WESTON_MAJOR_VERSION} = "Helper library for implementing 'wayland window managers'."
FILES_${PN}-examples = "${bindir}/*"
-FILES_${PN}-xwayland = "${libdir}/libweston-3/xwayland.so"
+FILES_${PN}-xwayland = "${libdir}/libweston-${WESTON_MAJOR_VERSION}/xwayland.so"
RDEPENDS_${PN}-xwayland += "xserver-xorg-xwayland"
RDEPENDS_${PN} += "xkeyboard-config"
diff --git a/meta/recipes-graphics/xorg-app/mkfontscale_1.1.2.bb b/meta/recipes-graphics/xorg-app/mkfontscale_1.1.3.bb
index 31cf186767e..2a6bec16491 100644
--- a/meta/recipes-graphics/xorg-app/mkfontscale_1.1.2.bb
+++ b/meta/recipes-graphics/xorg-app/mkfontscale_1.1.3.bb
@@ -8,11 +8,11 @@ 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 xproto"
+DEPENDS = "util-macros-native zlib libfontenc freetype xorgproto"
BBCLASSEXTEND = "native"
LIC_FILES_CHKSUM = "file://COPYING;md5=2e0d129d05305176d1a790e0ac1acb7f"
-SRC_URI[md5sum] = "9bdd6ebfa62b1bbd474906ac86a40fd8"
-SRC_URI[sha256sum] = "8c6d5228af885477b9aec60ca6f172578e7d2de42234357af62fb00439453f20"
+SRC_URI[md5sum] = "987c438e79f5ddb84a9c5726a1610819"
+SRC_URI[sha256sum] = "1e98df69ee5f4542d711e140e1d93e2c3f2775407ccbb7849110d52b91782a6a"
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 87268046e6d..c3e853631b9 100644
--- a/meta/recipes-graphics/xorg-app/rgb_1.0.6.bb
+++ b/meta/recipes-graphics/xorg-app/rgb_1.0.6.bb
@@ -6,7 +6,7 @@ to RGB values (rgb.txt) and, if configured to use a database for color \
lookup, the rgb program to convert the text file into the binary database \
format."
-DEPENDS += " xproto util-macros"
+DEPENDS += " xorgproto util-macros"
LIC_FILES_CHKSUM = "file://COPYING;md5=ef598adbe241bd0b0b9113831f6e249a"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-app/xev_1.2.2.bb b/meta/recipes-graphics/xorg-app/xev_1.2.2.bb
index f151b579e31..0705b7f7f19 100644
--- a/meta/recipes-graphics/xorg-app/xev_1.2.2.bb
+++ b/meta/recipes-graphics/xorg-app/xev_1.2.2.bb
@@ -10,7 +10,7 @@ LICENSE = "MIT"
PE = "1"
-DEPENDS += "libxrandr xproto"
+DEPENDS += "libxrandr xorgproto"
SRC_URI += "file://diet-x11.patch"
diff --git a/meta/recipes-graphics/xorg-app/xeyes_1.1.1.bb b/meta/recipes-graphics/xorg-app/xeyes_1.1.2.bb
index 84d0cb8044b..06885f8f531 100644
--- a/meta/recipes-graphics/xorg-app/xeyes_1.1.1.bb
+++ b/meta/recipes-graphics/xorg-app/xeyes_1.1.2.bb
@@ -8,7 +8,7 @@ PE = "1"
LIC_FILES_CHKSUM = "file://COPYING;md5=3ea51b365051ac32d1813a7dbaa4bfc6"
-SRC_URI[md5sum] = "a3035dcecdbdb89e864177c080924981"
-SRC_URI[sha256sum] = "975e98680cd59e1f9439016386609546ed08c284d0f05a95276f96aca6e8a521"
+SRC_URI[md5sum] = "6f0543ec84283df5743eeafc173bea4a"
+SRC_URI[sha256sum] = "57bcec0d2d167af9e5d44d0dbd74c6d7c0f0591cd0608952b23c749fdd910553"
DEPENDS += "libxau libxt libxext libxmu libxrender"
diff --git a/meta/recipes-graphics/xorg-app/xinit_1.3.4.bb b/meta/recipes-graphics/xorg-app/xinit_1.4.0.bb
index 93185188eed..dc2a06b586b 100644
--- a/meta/recipes-graphics/xorg-app/xinit_1.3.4.bb
+++ b/meta/recipes-graphics/xorg-app/xinit_1.4.0.bb
@@ -12,8 +12,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=18f01e7b39807bebe2b8df101a039b68"
PE = "1"
-SRC_URI[md5sum] = "4e928452dfaf73851413a2d8b8c76388"
-SRC_URI[sha256sum] = "75d88d7397a07e01db253163b7c7a00b249b3d30e99489f2734cac9a0c7902b3"
+SRC_URI[md5sum] = "2da154b2f80ca9637b1a17b13af0880c"
+SRC_URI[sha256sum] = "230835eef2f5978a1e1344928168119373f6df1d0a32c09515e545721ee582ef"
EXTRA_OECONF = "ac_cv_path_MCOOKIE=${bindir}/mcookie"
diff --git a/meta/recipes-graphics/xorg-app/xkbcomp_1.4.0.bb b/meta/recipes-graphics/xorg-app/xkbcomp_1.4.2.bb
index c9dc327c42b..eaf8eaaf742 100644
--- a/meta/recipes-graphics/xorg-app/xkbcomp_1.4.0.bb
+++ b/meta/recipes-graphics/xorg-app/xkbcomp_1.4.2.bb
@@ -9,11 +9,9 @@ be read directly by XKB-capable X servers or utilities."
LIC_FILES_CHKSUM = "file://COPYING;md5=08436e4f4476964e2e2dd7e7e41e076a"
-PR = "${INC_PR}.0"
-
DEPENDS += "libxkbfile"
BBCLASSEXTEND = "native"
-SRC_URI[md5sum] = "cc22b232bc78a303371983e1b48794ab"
-SRC_URI[sha256sum] = "bc69c8748c03c5ad9afdc8dff9db11994dd871b614c65f8940516da6bf61ce6b"
+SRC_URI[md5sum] = "12610df19df2af3797f2c130ee2bce97"
+SRC_URI[sha256sum] = "6dd8bcb9be7e85bd7294abe261b8c7b0539d2fc93e41b80fb8bd013767ce8424"
diff --git a/meta/recipes-graphics/xorg-app/xprop_1.2.2.bb b/meta/recipes-graphics/xorg-app/xprop_1.2.3.bb
index d78bf0451c0..ca58d47519d 100644
--- a/meta/recipes-graphics/xorg-app/xprop_1.2.2.bb
+++ b/meta/recipes-graphics/xorg-app/xprop_1.2.3.bb
@@ -14,5 +14,5 @@ DEPENDS += "libxmu"
PE = "1"
-SRC_URI[md5sum] = "fae3d2fda07684027a643ca783d595cc"
-SRC_URI[sha256sum] = "9bee88b1025865ad121f72d32576dd3027af1446774aa8300cce3c261d869bc6"
+SRC_URI[md5sum] = "4becb3ddc4674d741487189e4ce3d0b6"
+SRC_URI[sha256sum] = "d22afb28c86d85fff10a50156a7d0fa930c80ae865d70b26d805fd28a17a521b"
diff --git a/meta/recipes-graphics/xorg-app/xset_1.2.3.bb b/meta/recipes-graphics/xorg-app/xset_1.2.4.bb
index f683b7603f9..5748837fd5b 100644
--- a/meta/recipes-graphics/xorg-app/xset_1.2.3.bb
+++ b/meta/recipes-graphics/xorg-app/xset_1.2.4.bb
@@ -12,8 +12,8 @@ PE = "1"
SRC_URI += "file://disable-xkb.patch"
-SRC_URI[md5sum] = "dcd227388b57487d543cab2fd7a602d7"
-SRC_URI[sha256sum] = "4382f4fb29b88647e13f3b4bc29263134270747fc159cfc5f7e3af23588c8063"
+SRC_URI[md5sum] = "70ea7bc7bacf1a124b1692605883f620"
+SRC_URI[sha256sum] = "e4fd95280df52a88e9b0abc1fee11dcf0f34fc24041b9f45a247e52df941c957"
CFLAGS += "-D_GNU_SOURCE"
EXTRA_OECONF = "--disable-xkb --without-fontcache"
diff --git a/meta/recipes-graphics/xorg-app/xwininfo_1.1.3.bb b/meta/recipes-graphics/xorg-app/xwininfo_1.1.4.bb
index 0c23d194374..1fb90dd2445 100644
--- a/meta/recipes-graphics/xorg-app/xwininfo_1.1.3.bb
+++ b/meta/recipes-graphics/xorg-app/xwininfo_1.1.4.bb
@@ -11,5 +11,5 @@ DEPENDS += "libxext libxmu gettext-native"
PE = "0"
-SRC_URI[md5sum] = "b777bafb674555e48fd8437618270931"
-SRC_URI[sha256sum] = "218eb0ea95bd8de7903dfaa26423820c523ad1598be0751d2d8b6a2c23b23ff8"
+SRC_URI[md5sum] = "9a505b91ae7160bbdec360968d060c83"
+SRC_URI[sha256sum] = "839498aa46b496492a5c65cd42cd2e86e0da88149b0672e90cb91648f8cd5b01"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.10.5.bb b/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.10.6.bb
index 96b220ccbcd..60e325cebb0 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.10.5.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.10.6.bb
@@ -16,6 +16,5 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=fefe33b1cf0cacba0e72e3b0fa0f0e16"
DEPENDS += "mtdev libevdev"
-SRC_URI[md5sum] = "94c2c8354c74ab1cfbbb0a222078b9c6"
-SRC_URI[sha256sum] = "9edaa6205baf6d2922cc4db3d8e54a7e7773b5f733b0ae90f6be7725f983b70d"
-
+SRC_URI[md5sum] = "e8bd1edc6751f92e425cae7eba3c61eb"
+SRC_URI[sha256sum] = "8726073e81861bc7b2321e76272cbdbd33c7e1a121535a9827977265b9033ec0"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.26.0.bb b/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.28.0.bb
index 54c33d790e3..5853b5b5c04 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.26.0.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.28.0.bb
@@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=5e6b20ea2ef94a998145f0ea3f788ee0"
DEPENDS += "libinput"
-SRC_URI[md5sum] = "da47ef62eab1d0e922a8fa929ff81758"
-SRC_URI[sha256sum] = "abca558fc2226f295691f1cf3412d4c0edeaa439f677ca25b5c9fab310d2387b"
+SRC_URI[md5sum] = "2d7519ac0e39d4c88f3be32e81a637aa"
+SRC_URI[sha256sum] = "21994d065fc26e85d1c3fc87d8479b9c22699ed5a0119df98fbe0000e84630a1"
FILES_${PN} += "${datadir}/X11/xorg.conf.d"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.9.2.bb b/meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.9.3.bb
index 0750476a232..c38dab505b4 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.9.2.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.9.3.bb
@@ -10,5 +10,5 @@ driver."
LIC_FILES_CHKSUM = "file://COPYING;md5=90ea9f90d72b6d9327dede5ffdb2a510"
-SRC_URI[md5sum] = "ce2d679283a22c8e0dccdd9248594845"
-SRC_URI[sha256sum] = "f425d5b05c6ab412a27e0a1106bb83f9e2662b307210abbe48270892387f4b2f"
+SRC_URI[md5sum] = "a2104693bbcfe1413397f7905eecd3dc"
+SRC_URI[sha256sum] = "93ecb350604d05be98b7d4e5db3b8155a44890069a7d8d6b800c0bea79c85cc5"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.0.bb b/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.1.bb
index d327a3b42e2..dc31890f696 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.0.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.1.bb
@@ -10,7 +10,7 @@ advanced features of the touchpad to become available."
LIC_FILES_CHKSUM = "file://COPYING;md5=55aacd3535a741824955c5eb8f061398"
-SRC_URI[md5sum] = "58e5b7722a402114093bf193962d1e3a"
-SRC_URI[sha256sum] = "afba3289d7a40217a19d90db98ce181772f9ca6d77e1898727b0afcf02073b5a"
+SRC_URI[md5sum] = "cfb79d3c975151f9bbf30b727c260cb9"
+SRC_URI[sha256sum] = "7af83526eff1c76e8b9e1553b34245c203d029028d8044dd9dcf71eef1001576"
DEPENDS += "libxi mtdev libxtst libevdev"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-fbdev_0.4.4.bb b/meta/recipes-graphics/xorg-driver/xf86-video-fbdev_0.5.0.bb
index 52e9bd1dfa7..7b4ac88a4c1 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-video-fbdev_0.4.4.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-fbdev_0.5.0.bb
@@ -5,5 +5,5 @@ DESCRIPTION = "fbdev is an Xorg driver for framebuffer devices. This is a non-ac
LIC_FILES_CHKSUM = "file://COPYING;md5=d8cbd99fff773f92e844948f74ef0df8"
-SRC_URI[md5sum] = "3931c0e19d441cc576dc088f9eb9fd73"
-SRC_URI[sha256sum] = "9dd4b326498223abbfdf786089a46ea3db4fa6bbd341308eb48a9e00bc3fd51b"
+SRC_URI[md5sum] = "f07475655376be5a124d8187aacd87b6"
+SRC_URI[sha256sum] = "dcc3d85f378022180e437a9ec00a59b6cb7680ff79c40394d695060af2374699"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-intel/always_include_xorg_server.h.patch b/meta/recipes-graphics/xorg-driver/xf86-video-intel/always_include_xorg_server.h.patch
deleted file mode 100644
index 8a5dd39ae1e..00000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-intel/always_include_xorg_server.h.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Include xorg-server.h to fix build errors seen with glibc 2.20
-
-In file included from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/string.h:634:0,
- from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/work/i586-oe-linux/xf86-video-intel/2_2.99.912-r0/xf86-video-intel-2.99.912/src/backlight.c:39:
-/home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/os.h:579:1: error: expected identifier or '(' before '__extension__'
- strndup(const char *str, size_t n);
- ^
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
-
-Index: xf86-video-intel-2.99.912/src/backlight.c
-===================================================================
---- xf86-video-intel-2.99.912.orig/src/backlight.c 2014-04-09 10:41:18.000000000 -0700
-+++ xf86-video-intel-2.99.912/src/backlight.c 2014-08-28 18:52:25.524070587 -0700
-@@ -29,6 +29,7 @@
- #include "config.h"
- #endif
-
-+#include <xorg-server.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- #include <sys/stat.h>
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-intel/disable-x11-dri3.patch b/meta/recipes-graphics/xorg-driver/xf86-video-intel/disable-x11-dri3.patch
deleted file mode 100644
index 3dddd334bf4..00000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-intel/disable-x11-dri3.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-These modules are only used for tests that don't get installed, and the
-automatic detection without explicit dependencies means that a build can find
-e.g. xshmfence at configure time but then it's been removed from the sysroot by
-the time compile happens.
-
-As the tests don't get installed, just disable the checks.
-
-Upstream-Status: Inappropriate [OE-specific]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/configure.ac b/configure.ac
-index bd654f3..78a0e0d 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -279 +279 @@ fi
--PKG_CHECK_MODULES(X11_DRI3, [xcb-dri3 xcb-sync xcb-xfixes xcb-present x11-xcb xshmfence x11 xcomposite xdamage xrender xrandr xxf86vm xext libdrm], [x11_dri3="yes"], [x11_dri3="no"])
-+#PKG_CHECK_MODULES(X11_DRI3, [xcb-dri3 xcb-sync xcb-xfixes xcb-present x11-xcb xshmfence x11 xcomposite xdamage xrender xrandr xxf86vm xext libdrm], [x11_dri3="yes"], [x11_dri3="no"])
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-intel/glibc.patch b/meta/recipes-graphics/xorg-driver/xf86-video-intel/glibc.patch
new file mode 100644
index 00000000000..ada9eb5e52c
--- /dev/null
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-intel/glibc.patch
@@ -0,0 +1,25 @@
+Add a missing include needed for glibc 2.28 to avoid:
+
+| ../../git/tools/backlight_helper.c: In function 'main':
+| ../../git/tools/backlight_helper.c:54:34: error: implicit declaration of function 'major' [-Werror=implicit-function-declaration]
+| if (fd < 0 || fstat(fd, &st) || major(st.st_dev))
+| ^~~~~
+| ../../git/tools/backlight_helper.c:54:34: warning: nested extern declaration of 'major' [-Wnested-externs]
+| cc1: some warnings being treated as errors
+| Makefile:666: recipe for target 'backlight_helper.o' failed
+
+Upstream-Status: Pending
+RP 2018/8/12
+
+Index: git/tools/backlight_helper.c
+===================================================================
+--- git.orig/tools/backlight_helper.c
++++ git/tools/backlight_helper.c
+@@ -8,6 +8,7 @@
+
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#include <sys/sysmacros.h>
+
+ #if MAJOR_IN_MKDEV
+ #include <sys/mkdev.h>
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 2623cb2f317..655fd4dc692 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb
@@ -14,28 +14,25 @@ PV = "2.99.917+git${SRCPV}"
S = "${WORKDIR}/git"
SRC_URI = "git://anongit.freedesktop.org/xorg/driver/xf86-video-intel \
- file://disable-x11-dri3.patch \
- file://always_include_xorg_server.h.patch \
file://0001-Add-Coffeelake-PCI-IDs-for-S-Skus.patch \
+ file://glibc.patch \
"
-SRC_URI[md5sum] = "fa196a66e52c0c624fe5d350af7a5e7b"
-SRC_URI[sha256sum] = "00b781eea055582820a123c47b62411bdf6aabf4f03dc0568faec55faf9667c9"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
DEPENDS += "virtual/libx11 drm libpciaccess pixman"
-PACKAGECONFIG ??= "xvmc uxa udev ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'dri dri1 dri2', '', d)}"
+PACKAGECONFIG ??= "xvmc uxa udev ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'dri dri2 dri3', '', d)}"
PACKAGECONFIG[dri] = "--enable-dri,--disable-dri"
-PACKAGECONFIG[dri1] = "--enable-dri1,--disable-dri1,xf86driproto"
-PACKAGECONFIG[dri2] = "--enable-dri2,--disable-dri2,dri2proto"
-PACKAGECONFIG[dri3] = "--enable-dri3,--disable-dri3,dri3proto"
+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 libxext libxrender"
+PACKAGECONFIG[tools] = "--enable-tools,--disable-tools,libxinerama libxrandr libxdamage libxfixes libxcursor libxtst libxrender libxscrnsaver libxext libx11 pixman libxcb libxshmfence"
# --enable-kms-only option is required by ROOTLESS_X
EXTRA_OECONF += '${@oe.utils.conditional( "ROOTLESS_X", "1", " --enable-kms-only", "", d )}'
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-omap_0.4.5.bb b/meta/recipes-graphics/xorg-driver/xf86-video-omap_0.4.5.bb
deleted file mode 100644
index bef36360921..00000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-omap_0.4.5.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-require xorg-driver-video.inc
-
-SUMMARY = "X.Org X server -- Texas Instruments OMAP framebuffer driver"
-
-SUMMARY = "X.Org X server -- TI OMAP integrated graphics chipsets driver"
-
-DESCRIPTION = "Open-source X.org graphics driver for TI OMAP graphics \
-Currently relies on a closed-source submodule for EXA acceleration on \
-the following chipsets: \
- + OMAP3430 \
- + OMAP3630 \
- + OMAP4430 \
- + OMAP4460 \
- + OMAP5430 \
- + OMAP5432 \
-\
-NOTE: this driver is work in progress.. you probably don't want to try \
-and use it yet. The API/ABI between driver and kernel, and driver and \
-acceleration submodules is not stable yet. This driver requires the \
-omapdrm kernel driver w/ GEM support. \
-"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=10ce5de3b111315ea652a5f74ec0c602"
-DEPENDS += "virtual/libx11 libdrm xf86driproto"
-
-SRC_URI[md5sum] = "3b8ea5e8fba63355c0dc6681c49d5fe5"
-SRC_URI[sha256sum] = "93e7d42107521e61f61980eaea64fb452e87b7b94272e48938ac8d904ccfab5a"
-
-CFLAGS += " -I${STAGING_INCDIR}/xorg "
-
-# Use overlay 2 on omap3 to enable other apps to use overlay 1 (e.g. dmai or omapfbplay)
-do_compile_prepend_armv7a () {
- sed -i -e s:fb1:fb2:g ${S}/src/omap_xv.c
-}
-
-python () {
- if not bb.utils.contains ('DISTRO_FEATURES', 'opengl', True, False, d):
- raise bb.parse.SkipRecipe("'opengl' not in DISTRO_FEATURES")
-}
-
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-Prevents-omapfb-from-from-crashing-when-pixelclock-o.patch b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-Prevents-omapfb-from-from-crashing-when-pixelclock-o.patch
deleted file mode 100644
index ac192192843..00000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-Prevents-omapfb-from-from-crashing-when-pixelclock-o.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 28c006c94e57ea71df11ec4fff79d7ffcfc4860f Mon Sep 17 00:00:00 2001
-From: Far McKon <FarMcKon@buglabs.net>
-Date: Tue, 3 May 2011 20:59:04 +0300
-Subject: [PATCH] Prevents omapfb from from crashing when pixelclock of 0 is
- sent to it.
-
-Due to a Linux design bug it is easy to get a pixelclock set to zero
-when changing displays at runtime.
-
-Upstream-Status: Pending
----
- src/omapfb-output.c | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/src/omapfb-output.c b/src/omapfb-output.c
-index f8b4db3..4d59265 100644
---- a/src/omapfb-output.c
-+++ b/src/omapfb-output.c
-@@ -125,8 +125,13 @@ OMAPFBOutputGetModes(xf86OutputPtr output)
- /* Only populate the native (current) mode */
- mode = calloc(1, sizeof(DisplayModeRec));
- mode->type |= M_T_PREFERRED;
-- mode->Clock = PICOS2KHZ(ofb->state_info.pixclock);
-- mode->SynthClock = PICOS2KHZ(ofb->state_info.pixclock);
-+ if (ofb->state_info.pixclock == 0) {
-+ mode->Clock = 0;
-+ mode->SynthClock = 0;
-+ } else {
-+ mode->Clock = PICOS2KHZ(ofb->state_info.pixclock);
-+ mode->SynthClock = PICOS2KHZ(ofb->state_info.pixclock);
-+ }
- mode->HDisplay = ofb->state_info.xres;
- mode->HSyncStart = mode->HDisplay
- + ofb->state_info.right_margin;
---
-2.1.4
-
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-Revert-Set-a-large-CRTC-upper-limit-to-not-prune-lar.patch b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-Revert-Set-a-large-CRTC-upper-limit-to-not-prune-lar.patch
deleted file mode 100644
index 9fb01d438a1..00000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-Revert-Set-a-large-CRTC-upper-limit-to-not-prune-lar.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 8fb7d0f99d4afbb574b30cb4f1e66a8f89d94ad5 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Wed, 26 Jan 2011 12:04:36 +0100
-Subject: [PATCH 1/6] Revert "Set a large CRTC upper limit to not prune larger
- resolutions"
-
-Picture is garbled after switching resolutions, so revert it.
-Virtual size too big, revert the commit 9c4d7592dcb7dc20a48a6f941d9d94bd73d34153.
-
-Upstream-Status: Pending
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- src/omapfb-crtc.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/src/omapfb-crtc.c b/src/omapfb-crtc.c
-index 9aaa52f..cbeff35 100644
---- a/src/omapfb-crtc.c
-+++ b/src/omapfb-crtc.c
-@@ -190,13 +190,13 @@ OMAPFBCRTCInit(ScrnInfoPtr pScrn)
- * In practise, this doesn't seem to be supported.
- * (no way to setup the overlay offset/base address)
- */
-- /* FIXME: figure out what makes sense here. A known max resolution?
-- * framebuffer size?
-- */
- xf86CrtcSetSizeRange(pScrn,
-- 8, 8, 2048, 2048);
-+ 8, 8,
-+ ofb->state_info.xres_virtual,
-+ ofb->state_info.yres_virtual);
-
- ofb->crtc = xf86CrtcCreate(pScrn, &OMAPFBCrtcFuncs);
-+
- }
-
-
---
-1.8.0
-
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch
deleted file mode 100644
index 683a9898328..00000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 855c333ac0d16350f895f1d1b9391e9cbb0b6db4 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Wed, 26 Jan 2011 13:27:20 +0100
-Subject: [PATCH 2/6] Revert "Set virtual size when configuring framebuffer"
-
-Virtual size too big, so revert it.
-
-This reverts commit 2653ef07883fbd1a5e7025f9300cf89b79ba429a.
-
-Upstream-Status: Pending
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- src/omapfb-crtc.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/src/omapfb-crtc.c b/src/omapfb-crtc.c
-index cbeff35..9655db2 100644
---- a/src/omapfb-crtc.c
-+++ b/src/omapfb-crtc.c
-@@ -98,8 +98,6 @@ OMAPFBCrtcCommitChangeMode (xf86CrtcPtr crtc)
- v = ofb->state_info;
- v.xres = mode->HDisplay;
- v.yres = mode->VDisplay;
-- v.xres_virtual = crtc->scrn->virtualX;
-- v.yres_virtual = crtc->scrn->virtualY;
- v.activate = FB_ACTIVATE_NOW;
- v.pixclock = KHZ2PICOS(mode->Clock ? mode->Clock : 56000);
- v.left_margin = mode->HTotal - mode->HSyncEnd;
---
-1.8.0
-
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0003-force-plain-mode.patch b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0003-force-plain-mode.patch
deleted file mode 100644
index 67ea7c1a5f5..00000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0003-force-plain-mode.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 252f44c072d3447a32127fc9afe5d0d40f3c510e Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Wed, 26 Jan 2011 13:20:20 +0100
-Subject: [PATCH 3/6] force 'plain' mode
-
-The new DSS mode breaks XV, so force plain mode
-
-Upstream-Status: Pending
-
-Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- src/omapfb-driver.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/omapfb-driver.c b/src/omapfb-driver.c
-index 018e040..48aa09c 100644
---- a/src/omapfb-driver.c
-+++ b/src/omapfb-driver.c
-@@ -326,7 +326,7 @@ OMAPFBPreInit(ScrnInfoPtr pScrn, int flags)
- OMAPFBProbeController(ofb->ctrl_name);
-
- /* Do we have the DSS kernel API? */
-- if (stat(SYSFS_DSS_DIR, &st) == 0) {
-+ if (0) { //stat(SYSFS_DSS_DIR, &st) == 0) {
- ofb->dss = TRUE;
- } else {
- ofb->dss = FALSE;
---
-1.8.0
-
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0004-blacklist-tv-out.patch b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0004-blacklist-tv-out.patch
deleted file mode 100644
index b0ac9a44c8e..00000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0004-blacklist-tv-out.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From cfa46b67f59115f6d8ef9414af60380749ff3eb3 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Wed, 26 Jan 2011 13:21:12 +0100
-Subject: [PATCH 4/6] blacklist tv out
-
-The tv-out gets added last and the driver tries to reconfigure dvi to TV resolutions, which fails. so blacklist it
-
-Upstream-Status: Pending
-
-Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- src/omapfb-output-dss.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/omapfb-output-dss.c b/src/omapfb-output-dss.c
-index 6cc52de..83cb711 100644
---- a/src/omapfb-output-dss.c
-+++ b/src/omapfb-output-dss.c
-@@ -205,6 +205,10 @@ OMAPFBDSSOutputDetect (xf86OutputPtr output)
- if(ofb->timings[idx][0] == '\0')
- return XF86OutputStatusDisconnected;
-
-+ // Hack to disable the tv out
-+ if (strncmp(output->name, "tv", 2) == 0)
-+ return XF86OutputStatusDisconnected;
-+
- return XF86OutputStatusConnected;
- }
-
---
-1.8.0
-
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0005-Attempt-to-fix-VRFB.patch b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0005-Attempt-to-fix-VRFB.patch
deleted file mode 100644
index 67b284023d3..00000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0005-Attempt-to-fix-VRFB.patch
+++ /dev/null
@@ -1,325 +0,0 @@
-From 8b1f697a60e35ab82fffdabfaefdb45e9a9df379 Mon Sep 17 00:00:00 2001
-From: Eino-Ville Talvala <talvala@stanford.edu>
-Date: Tue, 23 Aug 2011 18:37:01 +0200
-Subject: [PATCH 5/6] Attempt to fix VRFB
-
-Upstream-Status: Pending
-
-http://dominion.thruhere.net/git/cgit.cgi/xf86-video-omapfb/commit/?h=koen/fixups&id=6833fc9f795265e4943d248103fbaf3463b515d6
-
-Signed-off-by: Sebastian Krzyszkowiak <dos@dosowisko.net>
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- src/image-format-conversions.c | 4 +--
- src/image-format-conversions.h | 2 +-
- src/omapfb-driver.c | 28 +++++++++++++---
- src/omapfb-xv-blizzard.c | 1 +
- src/omapfb-xv-generic.c | 72 +++++++++++++++++++++++++++++++++---------
- src/omapfb-xv.c | 3 ++
- 6 files changed, 88 insertions(+), 22 deletions(-)
-
-diff --git a/src/image-format-conversions.c b/src/image-format-conversions.c
-index dcefa9b..d43427d 100644
---- a/src/image-format-conversions.c
-+++ b/src/image-format-conversions.c
-@@ -38,13 +38,13 @@
- #include "image-format-conversions.h"
-
- /* Basic line-based copy for packed formats */
--void packed_line_copy(int w, int h, int stride, uint8_t *src, uint8_t *dest)
-+void packed_line_copy(int w, int h, int src_stride, int dst_stride, uint8_t *src, uint8_t *dest)
- {
- int i;
- int len = w * 2;
- for (i = 0; i < h; i++)
- {
-- memcpy(dest + i * len, src + i * stride, len);
-+ memcpy(dest + i * dst_stride, src + i * src_stride, len);
- }
- }
-
-diff --git a/src/image-format-conversions.h b/src/image-format-conversions.h
-index 584896a..ba7caf2 100644
---- a/src/image-format-conversions.h
-+++ b/src/image-format-conversions.h
-@@ -27,7 +27,7 @@
- #include <stdint.h>
-
- /* Basic line-based copy for packed formats */
--void packed_line_copy(int w, int h, int stride, uint8_t *src, uint8_t *dest);
-+void packed_line_copy(int w, int h, int src_stride, int dst_stride, uint8_t *src, uint8_t *dest);
-
- /* Basic C implementation of YV12/I420 to UYVY conversion */
- void uv12_to_uyvy(int w, int h, int y_pitch, int uv_pitch, uint8_t *y_p, uint8_t *u_p, uint8_t *v_p, uint8_t *dest);
-diff --git a/src/omapfb-driver.c b/src/omapfb-driver.c
-index 48aa09c..07989f5 100644
---- a/src/omapfb-driver.c
-+++ b/src/omapfb-driver.c
-@@ -66,6 +66,7 @@
- #define OMAPFB_VERSION 1000
- #define OMAPFB_DRIVER_NAME "OMAPFB"
- #define OMAPFB_NAME "omapfb"
-+#define ENFORCE_MODES
-
- static Bool OMAPFBProbe(DriverPtr drv, int flags);
- static Bool OMAPFBPreInit(ScrnInfoPtr pScrn, int flags);
-@@ -105,11 +106,13 @@ static SymTabRec OMAPFBChipsets[] = {
- typedef enum {
- OPTION_ACCELMETHOD,
- OPTION_FB,
-+ OPTION_ROTATE,
- } FBDevOpts;
-
- static const OptionInfoRec OMAPFBOptions[] = {
- { OPTION_ACCELMETHOD, "AccelMethod", OPTV_STRING, {0}, FALSE },
- { OPTION_FB, "fb", OPTV_STRING, {0}, FALSE },
-+ { OPTION_ROTATE, "rotation", OPTV_STRING, {0}, FALSE },
- { -1, NULL, OPTV_NONE, {0}, FALSE }
- };
-
-@@ -286,6 +289,7 @@ OMAPFBPreInit(ScrnInfoPtr pScrn, int flags)
- {
- OMAPFBPtr ofb;
- EntityInfoPtr pEnt;
-+ char *rotate;
- rgb zeros = { 0, 0, 0 };
- struct stat st;
-
-@@ -379,6 +383,8 @@ OMAPFBPreInit(ScrnInfoPtr pScrn, int flags)
- pScrn->progClock = TRUE;
- pScrn->chipset = "omapfb";
-
-+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Rotate test version 0.02\n");
-+
- /* Start with configured virtual size */
- pScrn->virtualX = pScrn->display->virtualX;
- pScrn->virtualY = pScrn->display->virtualY;
-@@ -496,12 +502,21 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
- ofb->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = OMAPFBCloseScreen;
-
-+ /* Enforce the default mode (this is silly I guess) */
-+#ifdef ENFORCE_MODES
-+ //xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Enforcing modes\n");
-+ //set_mode(ofb, &ofb->default_mode);
-+ //pScrn->displayWidth = ofb->fixed_info.line_length /
-+ // (ofb->state_info.bits_per_pixel>>3); //ofb->state_info.xres;
-+#endif
-+
- /* Map our framebuffer memory */
-+ ofb->mem_info.size = ofb->fixed_info.line_length * ofb->state_info.yres;
- ofb->fb = mmap (NULL, ofb->mem_info.size,
- PROT_READ | PROT_WRITE, MAP_SHARED,
- ofb->fd, 0);
-- if (ofb->fb == NULL) {
-- xf86DrvMsg(scrnIndex, X_ERROR, "Mapping framebuffer memory failed\n");
-+ if (ofb->fb == MAP_FAILED) {
-+ xf86DrvMsg(scrnIndex, X_ERROR, "Mapping framebuffer memory failed, wanted %d bytes.\n", ofb->mem_info.size);
- return FALSE;
- }
-
-@@ -578,8 +593,13 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
- } else if (!ofb->dss) {
-
- ofb->plane_info.enabled = 1;
-- ofb->plane_info.out_width = ofb->state_info.xres;
-- ofb->plane_info.out_height = ofb->state_info.yres;
-+ if (ofb->state_info.rotate == 0 || ofb->state_info.rotate == 2) {
-+ ofb->plane_info.out_width = ofb->state_info.xres;
-+ ofb->plane_info.out_height = ofb->state_info.yres;
-+ } else {
-+ ofb->plane_info.out_width = ofb->state_info.yres;
-+ ofb->plane_info.out_height = ofb->state_info.xres;
-+ }
-
- if (ioctl (ofb->fd, OMAPFB_SETUP_PLANE, &ofb->plane_info)) {
- xf86DrvMsg(scrnIndex, X_ERROR,
-diff --git a/src/omapfb-xv-blizzard.c b/src/omapfb-xv-blizzard.c
-index 406ffc6..b71d2aa 100644
---- a/src/omapfb-xv-blizzard.c
-+++ b/src/omapfb-xv-blizzard.c
-@@ -220,6 +220,7 @@ int OMAPFBXVPutImageBlizzard (ScrnInfoPtr pScrn,
- packed_line_copy(src_w & ~3,
- src_h & ~3,
- ((src_w + 1) & ~1) * 2,
-+ ofb->port->fixed_info.line_length,
- (uint8_t*)buf,
- (uint8_t*)ofb->port->fb);
- break;
-diff --git a/src/omapfb-xv-generic.c b/src/omapfb-xv-generic.c
-index e6f89fe..b33f344 100644
---- a/src/omapfb-xv-generic.c
-+++ b/src/omapfb-xv-generic.c
-@@ -62,7 +62,7 @@ int OMAPXVAllocPlane(ScrnInfoPtr pScrn)
- {
- OMAPFBPtr ofb = OMAPFB(pScrn);
-
-- /* The memory size is already set in OMAPFBXVQueryImageAttributes */
-+ /* The memory size is already set before we get here */
- if (ioctl(ofb->port->fd, OMAPFB_SETUP_MEM, &ofb->port->mem_info) != 0) {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "Failed to allocate video plane memory\n");
-@@ -73,19 +73,20 @@ int OMAPXVAllocPlane(ScrnInfoPtr pScrn)
- ofb->port->fb = mmap (NULL, ofb->port->mem_info.size,
- PROT_READ | PROT_WRITE, MAP_SHARED,
- ofb->port->fd, 0);
-- if (ofb->port->fb == NULL) {
-+ if (ofb->port->fb == MAP_FAILED) {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "Mapping video memory failed\n");
- return XvBadAlloc;
- }
-
- /* Update the state info */
-+ /* Let's not - it's bad
- if (ioctl (ofb->port->fd, FBIOGET_VSCREENINFO, &ofb->port->state_info))
- {
- xf86Msg(X_ERROR, "%s: Reading state info failed\n", __FUNCTION__);
- return XvBadAlloc;
- }
--
-+ */
- return Success;
- }
-
-@@ -93,6 +94,7 @@ int OMAPXVAllocPlane(ScrnInfoPtr pScrn)
- int OMAPXVSetupVideoPlane(ScrnInfoPtr pScrn)
- {
- OMAPFBPtr ofb = OMAPFB(pScrn);
-+ int ret;
-
- if (ioctl (ofb->port->fd, FBIOPUT_VSCREENINFO, &ofb->port->state_info))
- {
-@@ -104,6 +106,31 @@ int OMAPXVSetupVideoPlane(ScrnInfoPtr pScrn)
- xf86Msg(X_ERROR, "%s: Reading state info failed\n", __FUNCTION__);
- return XvBadAlloc;
- }
-+ /* Changing rotation/nonstd flags can change the fixed info! */
-+ if (ioctl (ofb->port->fd, FBIOGET_FSCREENINFO, &ofb->port->fixed_info))
-+ {
-+ xf86Msg(X_ERROR, "%s: Reading state info failed\n", __FUNCTION__);
-+ return XvBadAlloc;
-+ }
-+ /* Correct fixed info requires recalculation of needed memory */
-+ ofb->port->mem_info.size = ofb->port->fixed_info.line_length * ofb->port->state_info.yres;
-+
-+ /* Allocate buffer memory */
-+ ret = OMAPXVAllocPlane(pScrn);
-+ if (ret != Success)
-+ return ret;
-+
-+ /* Workaround for reset of mode after memory allo */
-+ if (ioctl (ofb->port->fd, FBIOPUT_VSCREENINFO, &ofb->port->state_info))
-+ {
-+ xf86Msg(X_ERROR, "%s: setting state info failed\n", __FUNCTION__);
-+ return XvBadAlloc;
-+ }
-+ if (ioctl (ofb->port->fd, FBIOGET_VSCREENINFO, &ofb->port->state_info))
-+ {
-+ xf86Msg(X_ERROR, "%s: Reading state info failed\n", __FUNCTION__);
-+ return XvBadAlloc;
-+ }
-
- if(ioctl(ofb->port->fd, OMAPFB_SETUP_PLANE,
- &ofb->port->plane_info) != 0) {
-@@ -124,6 +151,8 @@ int OMAPFBXVPutImageGeneric (ScrnInfoPtr pScrn,
- DrawablePtr pDraw)
- {
- OMAPFBPtr ofb = OMAPFB(pScrn);
-+ short drw_temp;
-+ short rot_xres, rot_yres;
-
- if (!ofb->port->plane_info.enabled
- || ofb->port->update_window.x != src_x
-@@ -163,13 +192,6 @@ int OMAPFBXVPutImageGeneric (ScrnInfoPtr pScrn,
- return Success;
- }
-
-- /* If we don't have the plane running, enable it */
-- if (!ofb->port->plane_info.enabled) {
-- ret = OMAPXVAllocPlane(pScrn);
-- if (ret != Success)
-- return ret;
-- }
--
- /* Set up the state info, xres and yres will be used for
- * scaling to the values in the plane info struct
- */
-@@ -179,12 +201,31 @@ int OMAPFBXVPutImageGeneric (ScrnInfoPtr pScrn,
- ofb->port->state_info.yres_virtual = 0;
- ofb->port->state_info.xoffset = 0;
- ofb->port->state_info.yoffset = 0;
-- ofb->port->state_info.rotate = 0;
-+ //ofb->port->state_info.rotate = 0;
- ofb->port->state_info.grayscale = 0;
- ofb->port->state_info.activate = FB_ACTIVATE_NOW;
- ofb->port->state_info.bits_per_pixel = 0;
- ofb->port->state_info.nonstd = xv_to_omapfb_format(image);
-
-+ /* Plane info does not rotate with state_info */
-+ if (ofb->port->state_info.rotate == 1 ||
-+ ofb->port->state_info.rotate == 3) {
-+ drw_temp = drw_x;
-+ drw_x = drw_y;
-+ drw_y = drw_temp;
-+
-+ drw_temp = drw_w;
-+ drw_w = drw_h;
-+ drw_h = drw_temp;
-+
-+ rot_xres = ofb->port->state_info.yres;
-+ rot_yres = ofb->port->state_info.xres;
-+ } else {
-+ rot_xres = ofb->port->state_info.xres;
-+ rot_yres = ofb->port->state_info.yres;
-+ }
-+
-+
- /* Set up the video plane info */
- ofb->port->plane_info.enabled = 1;
- ofb->port->plane_info.pos_x = drw_x;
-@@ -193,13 +234,13 @@ int OMAPFBXVPutImageGeneric (ScrnInfoPtr pScrn,
- ofb->port->plane_info.out_height = drw_h & ~15;
-
- /* Cap output to screen size */
-- if (ofb->port->plane_info.out_width > ofb->state_info.xres) {
-+ if (ofb->port->plane_info.out_width > rot_xres) {
- ofb->port->plane_info.pos_x = 0;
-- ofb->port->plane_info.out_width = ofb->state_info.xres;
-+ ofb->port->plane_info.out_width = rot_xres;
- }
-- if (ofb->port->plane_info.out_height > ofb->state_info.yres) {
-+ if (ofb->port->plane_info.out_height > rot_yres) {
- ofb->port->plane_info.pos_y = 0;
-- ofb->port->plane_info.out_height = ofb->state_info.yres;
-+ ofb->port->plane_info.out_height = rot_yres;
- }
-
- ret = OMAPXVSetupVideoPlane(pScrn);
-@@ -223,6 +264,7 @@ int OMAPFBXVPutImageGeneric (ScrnInfoPtr pScrn,
- packed_line_copy(src_w & ~15,
- src_h & ~15,
- ((src_w + 1) & ~1) * 2,
-+ ofb->port->fixed_info.line_length,
- (uint8_t*)buf,
- (uint8_t*)ofb->port->fb);
- break;
-diff --git a/src/omapfb-xv.c b/src/omapfb-xv.c
-index 1df651e..0fee2c6 100644
---- a/src/omapfb-xv.c
-+++ b/src/omapfb-xv.c
-@@ -169,8 +169,11 @@ static int OMAPFBXVQueryImageAttributes (ScrnInfoPtr pScrn,
- h = *height;
-
- w = (w + 1) & ~1;
-+
-+ /* Can't calculate these here - don't know line length
- ofb->port->mem_info.size = w << 1;
- ofb->port->mem_info.size *= h;
-+ */
-
- return size;
- }
---
-1.8.0
-
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0006-omapfb-port-to-new-xserver-video-API.patch b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0006-omapfb-port-to-new-xserver-video-API.patch
deleted file mode 100644
index d56729987ca..00000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0006-omapfb-port-to-new-xserver-video-API.patch
+++ /dev/null
@@ -1,272 +0,0 @@
-From 803ecf2909949e6152f4a81b6cbb92a4430679ac Mon Sep 17 00:00:00 2001
-From: Martin Jansa <Martin.Jansa@gmail.com>
-Date: Fri, 23 Nov 2012 00:31:06 +0100
-Subject: [PATCH 6/6] omapfb: port to new xserver video API
-
-Upstream-Status: Pending
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
----
- src/compat-api.h | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++
- src/omapfb-driver.c | 41 ++++++++++++-----------
- 2 files changed, 118 insertions(+), 19 deletions(-)
- create mode 100644 src/compat-api.h
-
-diff --git a/src/compat-api.h b/src/compat-api.h
-new file mode 100644
-index 0000000..b1591b1
---- /dev/null
-+++ b/src/compat-api.h
-@@ -0,0 +1,96 @@
-+/*
-+ * Copyright 2012 Red Hat, Inc.
-+ *
-+ * 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 (including the next
-+ * paragraph) shall be included in all copies or substantial portions of the
-+ * Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND 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.
-+ *
-+ * Author: Dave Airlie <airlied@redhat.com>
-+ */
-+
-+/* this file provides API compat between server post 1.13 and pre it,
-+ it should be reused inside as many drivers as possible */
-+#ifndef COMPAT_API_H
-+#define COMPAT_API_H
-+
-+#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR
-+#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum]
-+#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p
-+#endif
-+
-+#ifndef XF86_HAS_SCRN_CONV
-+#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum]
-+#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex]
-+#endif
-+
-+#ifndef XF86_SCRN_INTERFACE
-+
-+#define SCRN_ARG_TYPE int
-+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)]
-+
-+#define SCREEN_ARG_TYPE int
-+#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)]
-+
-+#define SCREEN_INIT_ARGS_DECL int index, ScreenPtr pScreen, int argc, char **argv
-+
-+#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask
-+#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask
-+
-+#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen
-+#define CLOSE_SCREEN_ARGS scrnIndex, pScreen
-+
-+#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags
-+
-+#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags
-+
-+#define FREE_SCREEN_ARGS_DECL int arg, int flags
-+#define FREE_SCREEN_ARGS(x) (x)->scrnIndex, 0
-+
-+#define VT_FUNC_ARGS_DECL int arg, int flags
-+#define VT_FUNC_ARGS(flags) pScrn->scrnIndex, (flags)
-+
-+#define XF86_ENABLEDISABLEFB_ARG(x) ((x)->scrnIndex)
-+#else
-+#define SCRN_ARG_TYPE ScrnInfoPtr
-+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1)
-+
-+#define SCREEN_ARG_TYPE ScreenPtr
-+#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1)
-+
-+#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
-+
-+#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
-+#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
-+
-+#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
-+#define CLOSE_SCREEN_ARGS pScreen
-+
-+#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y
-+#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode
-+
-+#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg
-+#define FREE_SCREEN_ARGS(x) (x)
-+
-+#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg
-+#define VT_FUNC_ARGS(flags) pScrn
-+
-+#define XF86_ENABLEDISABLEFB_ARG(x) (x)
-+
-+#endif
-+
-+#endif
-diff --git a/src/omapfb-driver.c b/src/omapfb-driver.c
-index 07989f5..486ffa4 100644
---- a/src/omapfb-driver.c
-+++ b/src/omapfb-driver.c
-@@ -44,6 +44,8 @@
-
- #include "exa.h"
-
-+#include "compat-api.h"
-+
- #ifdef HAVE_XEXTPROTO_71
- #include <X11/extensions/dpmsconst.h>
- #else
-@@ -70,10 +72,10 @@
-
- static Bool OMAPFBProbe(DriverPtr drv, int flags);
- static Bool OMAPFBPreInit(ScrnInfoPtr pScrn, int flags);
--static Bool OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv);
--static Bool OMAPFBEnterVT(int scrnIndex, int flags);
--static void OMAPFBLeaveVT(int scrnIndex, int flags);
--static Bool OMAPFBSwitchMode(int scrnIndex, DisplayModePtr mode, int flags);
-+static Bool OMAPFBScreenInit(SCREEN_INIT_ARGS_DECL);
-+static Bool OMAPFBEnterVT(VT_FUNC_ARGS_DECL);
-+static void OMAPFBLeaveVT(VT_FUNC_ARGS_DECL);
-+static Bool OMAPFBSwitchMode(SWITCH_MODE_ARGS_DECL);
-
- static Bool
- OMAPFBEnsureRec(ScrnInfoPtr pScrn)
-@@ -481,7 +483,7 @@ OMAPFBXvScreenInit(ScreenPtr pScreen)
- }
-
- static Bool
--OMAPFBCloseScreen(int scrnIndex, ScreenPtr pScreen)
-+OMAPFBCloseScreen(CLOSE_SCREEN_ARGS_DECL)
- {
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- OMAPFBPtr ofb = OMAPFB(pScrn);
-@@ -490,11 +492,11 @@ OMAPFBCloseScreen(int scrnIndex, ScreenPtr pScreen)
-
- pScreen->CloseScreen = ofb->CloseScreen;
-
-- return (*pScreen->CloseScreen)(scrnIndex, pScreen);
-+ return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
- }
-
- static Bool
--OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
-+OMAPFBScreenInit(SCREEN_INIT_ARGS_DECL)
- {
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- OMAPFBPtr ofb = OMAPFB(pScrn);
-@@ -516,7 +518,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
- PROT_READ | PROT_WRITE, MAP_SHARED,
- ofb->fd, 0);
- if (ofb->fb == MAP_FAILED) {
-- xf86DrvMsg(scrnIndex, X_ERROR, "Mapping framebuffer memory failed, wanted %d bytes.\n", ofb->mem_info.size);
-+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Mapping framebuffer memory failed, wanted %d bytes.\n", ofb->mem_info.size);
- return FALSE;
- }
-
-@@ -526,7 +528,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
- /* Only support TrueColor for now */
- if (!miSetVisualTypes(pScrn->depth, TrueColorMask,
- pScrn->rgbBits, pScrn->defaultVisual)) {
-- xf86DrvMsg(scrnIndex, X_ERROR, "visual type setup failed"
-+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "visual type setup failed"
- " for %d bits per pixel [1]\n",
- pScrn->bitsPerPixel);
- return FALSE;
-@@ -534,7 +536,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
-
- /* Set up pixmap depth information */
- if (!miSetPixmapDepths()) {
-- xf86DrvMsg(scrnIndex,X_ERROR,"pixmap depth setup failed\n");
-+ xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"pixmap depth setup failed\n");
- return FALSE;
- }
-
-@@ -546,7 +548,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
- pScrn->virtualY, pScrn->xDpi,
- pScrn->yDpi, pScrn->displayWidth,
- pScrn->bitsPerPixel)) {
-- xf86DrvMsg(scrnIndex, X_ERROR, "fbScreenInit failed\n");
-+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "fbScreenInit failed\n");
- return FALSE;
- }
-
-@@ -567,7 +569,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
-
- /* Initialize XRender fallbacks */
- if (!fbPictureInit(pScreen, NULL, 0)) {
-- xf86DrvMsg(scrnIndex, X_ERROR, "fbPictureInit failed\n");
-+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "fbPictureInit failed\n");
- return FALSE;
- }
-
-@@ -579,7 +581,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
-
- /* Initialize default colormap */
- if (!miCreateDefColormap(pScreen)) {
-- xf86DrvMsg(scrnIndex, X_ERROR,
-+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "creating default colormap failed\n");
- return FALSE;
- }
-@@ -589,7 +591,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
- /* This is non-fatal since we might be running against older
- * kernel driver in which case we only do basic 2D stuff...
- */
-- xf86DrvMsg(scrnIndex, X_ERROR, "Reading plane info failed\n");
-+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Reading plane info failed\n");
- } else if (!ofb->dss) {
-
- ofb->plane_info.enabled = 1;
-@@ -602,7 +604,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
- }
-
- if (ioctl (ofb->fd, OMAPFB_SETUP_PLANE, &ofb->plane_info)) {
-- xf86DrvMsg(scrnIndex, X_ERROR,
-+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "%s: Plane setup failed: %s\n",
- __FUNCTION__, strerror(errno));
- return FALSE;
-@@ -645,9 +647,10 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
- return TRUE;
- }
-
--static Bool OMAPFBSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
-+static Bool OMAPFBSwitchMode(SWITCH_MODE_ARGS_DECL)
- {
-- return xf86SetSingleMode (xf86Screens[scrnIndex], mode, RR_Rotate_0);
-+ SCRN_INFO_PTR(arg);
-+ return xf86SetSingleMode (pScrn, mode, RR_Rotate_0);
- }
-
- void
-@@ -699,14 +702,14 @@ OMAPFBPrintCapabilities(ScrnInfoPtr pScrn,
- /*** Unimplemented: */
-
- static Bool
--OMAPFBEnterVT(int scrnIndex, int flags)
-+OMAPFBEnterVT(VT_FUNC_ARGS_DECL)
- {
- xf86Msg(X_NOT_IMPLEMENTED, "%s\n", __FUNCTION__);
- return TRUE;
- }
-
- static void
--OMAPFBLeaveVT(int scrnIndex, int flags)
-+OMAPFBLeaveVT(VT_FUNC_ARGS_DECL)
- {
- xf86Msg(X_NOT_IMPLEMENTED, "%s\n", __FUNCTION__);
- }
---
-1.8.0
-
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0007-always_include_xorg_server.h.patch b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0007-always_include_xorg_server.h.patch
deleted file mode 100644
index dc0b9b3f413..00000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0007-always_include_xorg_server.h.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-Fix errors with glibc 2.20
-
-In file included from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/string.h:634:0,
- from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/os.h:53,
- from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/misc.h:115,
- from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/xf86str.h:37,
- from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/xf86.h:44,
- from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/work/i586-oe-linux/xf86-video-omapfb/2_0.1.1+gitrAUTOINC+28c006c94e-r21.7/git/src/omapfb-xv-blizzard.c:33:
-/home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/os.h:579:1: error: expected identifier or '(' before '__extension__'
- strndup(const char *str, size_t n);
- ^
-In file included from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/string.h:634:0,
- from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/os.h:53,
- from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/misc.h:115,
- from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/xf86str.h:37,
- from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/xf86.h:44,
- from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/work/i586-oe-linux/xf86-video-omapfb/2_0.1.1+gitrAUTOINC+28c006c94e-r21.7/git/src/omapfb-xv-generic.c:28:
-/home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/os.h:579:1: error: expected identifier or '(' before '__extension__'
- strndup(const char *str, size_t n);
- ^
-
-Singed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
-Index: git/src/omapfb-xv-blizzard.c
-===================================================================
---- git.orig/src/omapfb-xv-blizzard.c 2014-08-28 05:16:25.684070587 -0700
-+++ git/src/omapfb-xv-blizzard.c 2014-08-28 19:05:39.440070587 -0700
-@@ -30,6 +30,7 @@
- * -
- */
-
-+#include <xorg-server.h>
- #include "xf86.h"
- #include "xf86_OSlib.h"
- #include "xf86xv.h"
-Index: git/src/omapfb-xv-generic.c
-===================================================================
---- git.orig/src/omapfb-xv-generic.c 2014-08-28 05:16:25.684070587 -0700
-+++ git/src/omapfb-xv-generic.c 2014-08-28 19:05:51.780070587 -0700
-@@ -25,6 +25,7 @@
- * Generic functions for the XV driver
- */
-
-+#include <xorg-server.h>
- #include "xf86.h"
- #include "xf86_OSlib.h"
- #include "xf86xv.h"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb b/meta/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb
deleted file mode 100644
index 7ebb960f116..00000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-require xorg-driver-video.inc
-
-SUMMARY = "X.Org X server -- Texas Instruments OMAP framebuffer driver"
-
-DESCRIPTION = "omapfb driver supports the basic Texas Instruments OMAP \
-framebuffer."
-
-LICENSE = "MIT-X & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=63e2cbac53863f60e2f43343fb34367f"
-DEPENDS += "virtual/libx11"
-
-SRCREV = "33e36c12dde336edbdd34626dd8adfcaebc8fbb8"
-PR = "${INC_PR}.7"
-PV = "0.1.1+gitr${SRCPV}"
-
-# Blacklist debian-specific tags in upstream version check
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)(?!-)"
-
-SRC_URI = "git://anonscm.debian.org/collab-maint/xf86-video-omapfb.git \
- file://0001-Prevents-omapfb-from-from-crashing-when-pixelclock-o.patch \
- file://0001-Revert-Set-a-large-CRTC-upper-limit-to-not-prune-lar.patch \
- file://0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch \
- file://0003-force-plain-mode.patch \
- file://0004-blacklist-tv-out.patch \
- file://0005-Attempt-to-fix-VRFB.patch \
- file://0006-omapfb-port-to-new-xserver-video-API.patch \
- file://0007-always_include_xorg_server.h.patch \
-"
-
-S = "${WORKDIR}/git"
-
-CFLAGS += " -I${STAGING_INCDIR}/xorg "
-
-# Use overlay 2 on omap3 to enable other apps to use overlay 1 (e.g. dmai or omapfbplay)
-do_compile_prepend_armv7a () {
- sed -i -e s:fb1:fb2:g ${S}/src/omapfb-xv.c
-}
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.3.4.bb b/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.4.0.bb
index fa251b50eaa..9a110148d81 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.3.4.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.4.0.bb
@@ -9,13 +9,11 @@ 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."
-PR = "${INC_PR}.0"
-
-DEPENDS += "virtual/libx11 randrproto libpciaccess"
+DEPENDS += "virtual/libx11 xorgproto libpciaccess"
COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
RRECOMMENDS_${PN} += "xserver-xorg-module-libint10"
-SRC_URI[md5sum] = "a893c37c589f7a31cea929a5d896a0e2"
-SRC_URI[sha256sum] = "7bddf4d879dd6f67088ecb203a31e12334aab980174bd0909930a21f32e251c1"
+SRC_URI[md5sum] = "8134201beaf6f77150c7809c3cc802e6"
+SRC_URI[sha256sum] = "bf443c94d7bf6cd4e248f8a3147f4647be04dc4c80250d9405006263bbdee38c"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-vmware_13.2.1.bb b/meta/recipes-graphics/xorg-driver/xf86-video-vmware_13.3.0.bb
index 706d35d2fcd..41612b7f079 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-video-vmware_13.2.1.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-vmware_13.3.0.bb
@@ -6,12 +6,12 @@ DESCRIPTION = "vmware is an Xorg driver for VMware virtual video cards."
LIC_FILES_CHKSUM = "file://COPYING;md5=5fcd7d437a959a15fbee8707747c6b53"
-DEPENDS += "virtual/libx11 xineramaproto videoproto libpciaccess"
+DEPENDS += "virtual/libx11 xorgproto libpciaccess"
SRC_URI += "file://0002-add-option-for-vmwgfx.patch"
-SRC_URI[md5sum] = "4c3912e4d8947f6c2fc1ee9e2f211d74"
-SRC_URI[sha256sum] = "e2f7f7101fba7f53b268e7a25908babbf155b3984fb5268b3d244eb6c11bf62b"
+SRC_URI[md5sum] = "08d66d062055080ff699ab4869726ea2"
+SRC_URI[sha256sum] = "47971924659e51666a757269ad941a059ef5afe7a47b5101c174a6022ac4066c"
COMPATIBLE_HOST = '(i.86.*-linux|x86_64.*-linux)'
diff --git a/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc b/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc
index bca0aade6cb..e657c65b4ca 100644
--- a/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc
+++ b/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc
@@ -7,7 +7,7 @@ LICENSE = "MIT-X"
PE = "2"
INC_PR = "r21"
-DEPENDS = "virtual/xserver xproto randrproto util-macros"
+DEPENDS = "virtual/xserver xorgproto util-macros"
SRC_URI = "${XORG_MIRROR}/individual/driver/${BPN}-${PV}.tar.bz2"
diff --git a/meta/recipes-graphics/xorg-driver/xorg-driver-input.inc b/meta/recipes-graphics/xorg-driver/xorg-driver-input.inc
index 342067d6c1c..57912e70dbe 100644
--- a/meta/recipes-graphics/xorg-driver/xorg-driver-input.inc
+++ b/meta/recipes-graphics/xorg-driver/xorg-driver-input.inc
@@ -1,6 +1,6 @@
require xorg-driver-common.inc
-DEPENDS += "inputproto kbproto "
+DEPENDS += "xorgproto"
python add_xorg_abi_depends() {
_add_xorg_abi_depends(d, "input")
diff --git a/meta/recipes-graphics/xorg-driver/xorg-driver-video.inc b/meta/recipes-graphics/xorg-driver/xorg-driver-video.inc
index b5862dae103..2938ef11616 100644
--- a/meta/recipes-graphics/xorg-driver/xorg-driver-video.inc
+++ b/meta/recipes-graphics/xorg-driver/xorg-driver-video.inc
@@ -1,6 +1,6 @@
require xorg-driver-common.inc
-DEPENDS =+ "renderproto videoproto xextproto fontsproto"
+DEPENDS =+ "xorgproto"
python add_xorg_abi_depends() {
_add_xorg_abi_depends(d, "video")
diff --git a/meta/recipes-graphics/xorg-lib/libdmx_1.1.3.bb b/meta/recipes-graphics/xorg-lib/libdmx_1.1.4.bb
index e623cee421b..66172cb30c6 100644
--- a/meta/recipes-graphics/xorg-lib/libdmx_1.1.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libdmx_1.1.4.bb
@@ -11,10 +11,10 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=a3c3499231a8035efd0e004cfbd3b72a \
file://src/dmx.c;endline=33;md5=c43f19af03c7c8619cadc9724ed9afe1"
-DEPENDS += "libxext dmxproto"
+DEPENDS += "libxext xorgproto"
PE = "1"
-SRC_URI[md5sum] = "ba983eba5a9f05d152a0725b8e863151"
-SRC_URI[sha256sum] = "c97da36d2e56a2d7b6e4f896241785acc95e97eb9557465fd66ba2a155a7b201"
+SRC_URI[md5sum] = "d2f1f0ec68ac3932dd7f1d9aa0a7a11c"
+SRC_URI[sha256sum] = "253f90005d134fa7a209fbcbc5a3024335367c930adf0f3203e754cf32747243"
diff --git a/meta/recipes-graphics/xorg-lib/libfontenc_1.1.3.bb b/meta/recipes-graphics/xorg-lib/libfontenc_1.1.3.bb
index a181f05c29b..34d5fc44874 100644
--- a/meta/recipes-graphics/xorg-lib/libfontenc_1.1.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libfontenc_1.1.3.bb
@@ -8,7 +8,7 @@ require xorg-lib-common.inc
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=96254c20ab81c63e65b26f0dbcd4a1c1"
-DEPENDS += "zlib xproto font-util"
+DEPENDS += "zlib xorgproto font-util"
PE = "1"
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-graphics/xorg-lib/libice/CVE-2017-2626.patch b/meta/recipes-graphics/xorg-lib/libice/CVE-2017-2626.patch
new file mode 100644
index 00000000000..20c6dda2e44
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libice/CVE-2017-2626.patch
@@ -0,0 +1,149 @@
+From ff5e59f32255913bb1cdf51441b98c9107ae165b Mon Sep 17 00:00:00 2001
+From: Benjamin Tissoires <benjamin.tissoires@gmail.com>
+Date: Tue, 4 Apr 2017 19:12:53 +0200
+Subject: Use getentropy() if arc4random_buf() is not available
+
+This allows to fix CVE-2017-2626 on Linux platforms without pulling in
+libbsd.
+The libc getentropy() is available since glibc 2.25 but also on OpenBSD.
+For Linux, we need at least a v3.17 kernel. If the recommended
+arc4random_buf() function is not available, emulate it by first trying
+to use getentropy() on a supported glibc and kernel. If the call fails,
+fall back to the current (partly vulnerable) code.
+
+Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
+Reviewed-by: Mark Kettenis <kettenis@openbsd.org>
+Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+Upstream-Status: Backport[https://cgit.freedesktop.org/xorg/lib/libICE
+ /commit/?id=ff5e59f32255913bb1cdf51441b98c9107ae165b]
+
+CVE: CVE-2017-2626
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ configure.ac | 2 +-
+ src/iceauth.c | 65 ++++++++++++++++++++++++++++++++++++++++++-----------------
+ 2 files changed, 47 insertions(+), 20 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 458882a..c971ab6 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -38,7 +38,7 @@ AC_DEFINE(ICE_t, 1, [Xtrans transport type])
+
+ # Checks for library functions.
+ AC_CHECK_LIB([bsd], [arc4random_buf])
+-AC_CHECK_FUNCS([asprintf arc4random_buf])
++AC_CHECK_FUNCS([asprintf arc4random_buf getentropy])
+
+ # Allow checking code with lint, sparse, etc.
+ XORG_WITH_LINT
+diff --git a/src/iceauth.c b/src/iceauth.c
+index ed31683..de4785b 100644
+--- a/src/iceauth.c
++++ b/src/iceauth.c
+@@ -44,31 +44,19 @@ Author: Ralph Mor, X Consortium
+
+ static int was_called_state;
+
+-/*
+- * MIT-MAGIC-COOKIE-1 is a sample authentication method implemented by
+- * the SI. It is not part of standard ICElib.
+- */
++#ifndef HAVE_ARC4RANDOM_BUF
+
+-
+-char *
+-IceGenerateMagicCookie (
++static void
++emulate_getrandom_buf (
++ char *auth,
+ int len
+ )
+ {
+- char *auth;
+-#ifndef HAVE_ARC4RANDOM_BUF
+ long ldata[2];
+ int seed;
+ int value;
+ int i;
+-#endif
+
+- if ((auth = malloc (len + 1)) == NULL)
+- return (NULL);
+-
+-#ifdef HAVE_ARC4RANDOM_BUF
+- arc4random_buf(auth, len);
+-#else
+ #ifdef ITIMER_REAL
+ {
+ struct timeval now;
+@@ -76,13 +64,13 @@ IceGenerateMagicCookie (
+ ldata[0] = now.tv_sec;
+ ldata[1] = now.tv_usec;
+ }
+-#else
++#else /* ITIMER_REAL */
+ {
+ long time ();
+ ldata[0] = time ((long *) 0);
+ ldata[1] = getpid ();
+ }
+-#endif
++#endif /* ITIMER_REAL */
+ seed = (ldata[0]) + (ldata[1] << 16);
+ srand (seed);
+ for (i = 0; i < len; i++)
+@@ -90,7 +78,46 @@ IceGenerateMagicCookie (
+ value = rand ();
+ auth[i] = value & 0xff;
+ }
+-#endif
++}
++
++static void
++arc4random_buf (
++ char *auth,
++ int len
++)
++{
++ int ret;
++
++#if HAVE_GETENTROPY
++ /* weak emulation of arc4random through the entropy libc */
++ ret = getentropy (auth, len);
++ if (ret == 0)
++ return;
++#endif /* HAVE_GETENTROPY */
++
++ emulate_getrandom_buf (auth, len);
++}
++
++#endif /* !defined(HAVE_ARC4RANDOM_BUF) */
++
++/*
++ * MIT-MAGIC-COOKIE-1 is a sample authentication method implemented by
++ * the SI. It is not part of standard ICElib.
++ */
++
++
++char *
++IceGenerateMagicCookie (
++ int len
++)
++{
++ char *auth;
++
++ if ((auth = malloc (len + 1)) == NULL)
++ return (NULL);
++
++ arc4random_buf (auth, len);
++
+ auth[len] = '\0';
+ return (auth);
+ }
+--
+cgit v1.1
+
diff --git a/meta/recipes-graphics/xorg-lib/libice_1.0.9.bb b/meta/recipes-graphics/xorg-lib/libice_1.0.9.bb
index f069749ce06..999434ee55c 100644
--- a/meta/recipes-graphics/xorg-lib/libice_1.0.9.bb
+++ b/meta/recipes-graphics/xorg-lib/libice_1.0.9.bb
@@ -11,7 +11,7 @@ require xorg-lib-common.inc
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=d162b1b3c6fa812da9d804dcf8584a93"
-DEPENDS += "xproto xtrans"
+DEPENDS += "xorgproto xtrans"
PROVIDES = "ice"
PE = "1"
@@ -23,6 +23,8 @@ BBCLASSEXTEND = "native"
SRC_URI[md5sum] = "addfb1e897ca8079531669c7c7711726"
SRC_URI[sha256sum] = "8f7032f2c1c64352b5423f6b48a8ebdc339cc63064af34d66a6c9aa79759e202"
+SRC_URI += "file://CVE-2017-2626.patch"
+
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
PACKAGECONFIG[arc4] = "ac_cv_lib_bsd_arc4random_buf=yes,ac_cv_lib_bsd_arc4random_buf=no,libbsd"
PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
diff --git a/meta/recipes-graphics/xorg-lib/libpciaccess_0.14.bb b/meta/recipes-graphics/xorg-lib/libpciaccess_0.14.bb
index a44a5c89279..d030c31bd0f 100644
--- a/meta/recipes-graphics/xorg-lib/libpciaccess_0.14.bb
+++ b/meta/recipes-graphics/xorg-lib/libpciaccess_0.14.bb
@@ -16,3 +16,5 @@ LICENSE = "MIT & MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=277aada5222b9a22fbf3471ff3687068"
REQUIRED_DISTRO_FEATURES = ""
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-lib/libsm_1.2.2.bb b/meta/recipes-graphics/xorg-lib/libsm_1.2.2.bb
index 48922cb9921..fdc693be142 100644
--- a/meta/recipes-graphics/xorg-lib/libsm_1.2.2.bb
+++ b/meta/recipes-graphics/xorg-lib/libsm_1.2.2.bb
@@ -11,7 +11,7 @@ require xorg-lib-common.inc
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=c0fb37f44e02bdbde80546024400728d"
-DEPENDS += "libice xproto xtrans"
+DEPENDS += "libice xorgproto xtrans"
# libSM can work without libuuid, we explicitly disable it to break the following circular dependency
# when DISTRO_FEATURES contains 'systemd' and 'x11'.
diff --git a/meta/recipes-graphics/xorg-lib/libx11-diet_1.6.5.bb b/meta/recipes-graphics/xorg-lib/libx11-diet_1.6.6.bb
index 295f96a2e71..a4ba4e54ed4 100644
--- a/meta/recipes-graphics/xorg-lib/libx11-diet_1.6.5.bb
+++ b/meta/recipes-graphics/xorg-lib/libx11-diet_1.6.6.bb
@@ -3,16 +3,16 @@ require libx11.inc
DESCRIPTION += " Support for XCMS and XLOCALE is disabled in \
this version."
-SRC_URI += "file://X18NCMSstubs.diff \
- file://fix-disable-xlocale.diff \
+SRC_URI += "file://X18NCMSstubs.patch \
+ file://fix-disable-xlocale.patch \
file://fix-utf8-wrong-define.patch \
"
RPROVIDES_${PN}-dev = "libx11-dev"
RPROVIDES_${PN}-locale = "libx11-locale"
-SRC_URI[md5sum] = "0f618db70c4054ca67cee0cc156a4255"
-SRC_URI[sha256sum] = "4d3890db2ba225ba8c55ca63c6409c1ebb078a2806de59fb16342768ae63435d"
+SRC_URI[md5sum] = "6b0f83e851b3b469dd660f3a95ac3e42"
+SRC_URI[sha256sum] = "65fe181d40ec77f45417710c6a67431814ab252d21c2e85c75dd1ed568af414f"
EXTRA_OECONF += "--disable-xlocale"
diff --git a/meta/recipes-graphics/xorg-lib/libx11.inc b/meta/recipes-graphics/xorg-lib/libx11.inc
index 4af40ab8a1c..36c950ad343 100644
--- a/meta/recipes-graphics/xorg-lib/libx11.inc
+++ b/meta/recipes-graphics/xorg-lib/libx11.inc
@@ -6,8 +6,6 @@ basic functions of the window system."
require xorg-lib-common.inc
-inherit siteinfo
-
FILESEXTRAPATHS =. "${FILE_DIRNAME}/libx11:"
PE = "1"
@@ -18,8 +16,8 @@ XORG_PN = "libX11"
LICENSE = "MIT & MIT-style & BSD"
LIC_FILES_CHKSUM = "file://COPYING;md5=172255dee66bb0151435b2d5d709fcf7"
-DEPENDS += "xproto xextproto xtrans libxcb kbproto inputproto"
-DEPENDS += "xproto-native"
+DEPENDS += "xorgproto xtrans libxcb"
+DEPENDS += "xorgproto-native"
EXTRA_OECONF += "--with-keysymdefdir=${STAGING_INCDIR}/X11/ --disable-xf86bigfont"
EXTRA_OEMAKE += 'CWARNFLAGS=""'
diff --git a/meta/recipes-graphics/xorg-lib/libx11/X18NCMSstubs.diff b/meta/recipes-graphics/xorg-lib/libx11/X18NCMSstubs.patch
index 744cedc7770..4ca2f42d4c7 100644
--- a/meta/recipes-graphics/xorg-lib/libx11/X18NCMSstubs.diff
+++ b/meta/recipes-graphics/xorg-lib/libx11/X18NCMSstubs.patch
@@ -1,52 +1,49 @@
-Upstream-Status: Pending
+From 62005ad019d6afb81da100b3113292a16472d241 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Mon, 10 Sep 2018 09:08:27 +0800
+Subject: [PATCH] Upstream-Status: Inappropriate [configuration]
-Upstream-Status: Inappropriate [configuration]
-Index: libX11-1.3/src/imConv.c
-===================================================================
---- libX11-1.3.orig/src/imConv.c
-+++ libX11-1.3/src/imConv.c
-@@ -83,6 +83,7 @@ static const struct SubstRec SubstTable[
- * from UCS char to specified charset char.
- * This converter is needed for _XimGetCharCode subroutine.
- */
-+#ifdef XLOCALE
- XPointer
- _XimGetLocaleCode (
- _Xconst char* encoding_name)
-@@ -96,6 +97,7 @@ _XimGetLocaleCode (
- }
- return cvt;
- }
-+#endif
+Update patch to version 1.6.6
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ src/Makefile.am | 5 +-
+ src/X18NCMSstubs.c | 426 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/imConv.c | 5 +-
+ src/locking.c | 4 +
+ 4 files changed, 438 insertions(+), 2 deletions(-)
+ create mode 100644 src/X18NCMSstubs.c
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index f8c476d..cdbcbbd 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -336,13 +336,16 @@ if THRSTUBS
+ libX11_la_SOURCES+=UIThrStubs.c
+ endif
- /*
- * Returns the locale dependent representation of a keysym.
-@@ -106,6 +108,7 @@ _XimGetLocaleCode (
- * terminating NUL byte. Return 0 if the keysym is not representable in the
- * locale
- */
-+#ifdef XLOCALE
- /*ARGSUSED*/
- int
- _XimGetCharCode (
-@@ -135,6 +138,7 @@ _XimGetCharCode (
- buf[count]= '\0';
- return count;
- }
-+#endif
++libX11_la_SOURCES+=X18NCMSstubs.c
++
+ x11datadir = @X11_DATADIR@
+ x11data_DATA = XErrorDB
- #ifdef XKB
- static int lookup_string(
-Index: libX11-1.3/src/X18NCMSstubs.c
-===================================================================
+ EXTRA_DIST = \
+ $(x11data_DATA) \
+ os2Stubs.c \
+- UIThrStubs.c
++ UIThrStubs.c \
++ X18NCMSstubs.c
+
+ libX11_xcb_la_SOURCES = x11_xcb.c Xxcbint.h
+ libX11_xcb_la_LDFLAGS = -version-number 1:0:0 -no-undefined
+diff --git a/src/X18NCMSstubs.c b/src/X18NCMSstubs.c
+new file mode 100644
+index 0000000..429cb31
--- /dev/null
-+++ libX11-1.3/src/X18NCMSstubs.c
-@@ -0,0 +1,428 @@
-+/*
-+ * X18NCMSstubs.c
-+ * - Provides stubs and dummy funcs needed when Xcms and XLocale stuff removed
++++ b/src/X18NCMSstubs.c
+@@ -0,0 +1,426 @@
++ /* - Provides stubs and dummy funcs needed when Xcms and XLocale stuff removed
+ *
-+ * Copyright © 2003 Matthew Allum
++ * Copyright © 2003 Matthew Allum
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
@@ -470,33 +467,48 @@ Index: libX11-1.3/src/X18NCMSstubs.c
+}
+
+#endif
-Index: libX11-1.3/src/Makefile.am
-===================================================================
---- libX11-1.3.orig/src/Makefile.am
-+++ libX11-1.3/src/Makefile.am
-@@ -335,6 +335,8 @@ if THRSTUBS
- libX11_la_SOURCES+=UIThrStubs.c
- endif
-
-+libX11_la_SOURCES+=X18NCMSstubs.c
-+
- x11datadir = @X11_DATADIR@
- x11data_DATA = XKeysymDB XErrorDB
-
-@@ -342,6 +344,7 @@ EXTRA_DIST = \
- $(x11data_DATA) \
- os2Stubs.c \
-- UIThrStubs.c
-+ UIThrStubs.c \
-+ X18NCMSstubs.c
-
- if XCB
- libX11_la_SOURCES += \
-Index: libX11-1.3/src/locking.c
-===================================================================
---- libX11-1.3.orig/src/locking.c
-+++ libX11-1.3/src/locking.c
-@@ -66,7 +66,9 @@ in this Software without prior written a
+diff --git a/src/imConv.c b/src/imConv.c
+index c3c1974..04ecc81 100644
+--- a/src/imConv.c
++++ b/src/imConv.c
+@@ -80,6 +80,7 @@ static const struct SubstRec SubstTable[] = {
+ * from UCS char to specified charset char.
+ * This converter is needed for _XimGetCharCode subroutine.
+ */
++#ifdef XLOCALE
+ XPointer
+ _XimGetLocaleCode (
+ _Xconst char* encoding_name)
+@@ -93,7 +94,7 @@ _XimGetLocaleCode (
+ }
+ return cvt;
+ }
+-
++#endif
+ /*
+ * Returns the locale dependent representation of a keysym.
+ * The locale's encoding is passed in form of pointer to UCS convertor.
+@@ -105,6 +105,7 @@ _XimGetLocaleCode (
+ * locale
+ */
+ /*ARGSUSED*/
++#ifdef XLOCALE
+ int
+ _XimGetCharCode (
+ XPointer ucs_conv,
+@@ -133,6 +134,7 @@ _XimGetCharCode (
+ buf[count]= '\0';
+ return count;
+ }
++#endif
+
+ #ifdef XKB
+ static int lookup_string(
+diff --git a/src/locking.c b/src/locking.c
+index 9f4fe06..e6967ee 100644
+--- a/src/locking.c
++++ b/src/locking.c
+@@ -65,7 +65,9 @@ in this Software without prior written authorization from The Open Group.
#define NUM_FREE_CVLS 4
/* in lcWrap.c */
@@ -506,7 +518,7 @@ Index: libX11-1.3/src/locking.c
#ifdef WIN32
static DWORD _X_TlsIndex = (DWORD)-1;
-@@ -594,9 +596,11 @@ Status XInitThreads(void)
+@@ -597,9 +599,11 @@ Status XInitThreads(void)
_Xglobal_lock = &global_lock;
xmutex_init(_Xglobal_lock->lock);
xmutex_set_name(_Xglobal_lock->lock, "Xlib global");
@@ -518,3 +530,6 @@ Index: libX11-1.3/src/locking.c
_XLockMutex_fn = _XLockMutex;
_XUnlockMutex_fn = _XUnlockMutex;
_XCreateMutex_fn = _XCreateMutex;
+--
+2.7.4
+
diff --git a/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.diff b/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.diff
deleted file mode 100644
index a7c3984fd54..00000000000
--- a/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.diff
+++ /dev/null
@@ -1,17 +0,0 @@
-Upstream-Status: Pending
-
-Signed-off-by: Xiaofeng Yan <xiaofeng.yan@windriver.com>
---- libX11-X11R7.0-1.0.0/src/Font.c.orig 2006-03-12 18:35:42.000000000 +0100
-+++ libX11-X11R7.0-1.0.0/src/Font.c 2006-03-12 18:40:27.000000000 +0100
-@@ -701,7 +701,11 @@
- }
- if (l - 2 - (p - charset) < 0)
- return 0;
-+#ifdef XLOCALE
- if (_XlcNCompareISOLatin1(name + l - 2 - (p - charset), charset, p - charset))
-+#else
-+ if (strncasecmp(name + l - 2 - (p - charset), charset, p - charset))
-+#endif
- return 0;
- if (strlen(p + 1) + l - 1 >= sizeof(buf) - 1)
- return 0;
diff --git a/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.patch b/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.patch
new file mode 100644
index 00000000000..3677fb1c5ca
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.patch
@@ -0,0 +1,32 @@
+From 5c1693028ef12ab767d7cdbc349c27efa1ada87a Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Mon, 10 Sep 2018 09:13:38 +0800
+Subject: [PATCH] Upstream-Status: Pending
+
+Signed-off-by: Xiaofeng Yan <xiaofeng.yan@windriver.com>
+
+Update patch to version 1.6.6
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ src/Font.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/Font.c b/src/Font.c
+index a73f9b1..8f4d210 100644
+--- a/src/Font.c
++++ b/src/Font.c
+@@ -675,7 +675,11 @@ int _XF86LoadQueryLocaleFont(
+ }
+ if (l - 2 - (p - charset) < 0)
+ return 0;
++#ifdef XLOCALE
+ if (_XlcNCompareISOLatin1(name + l - 2 - (p - charset), charset, p - charset))
++#else
++ if (strncasecmp(name + l - 2 - (p - charset), charset, p - charset))
++#endif
+ return 0;
+ if (strlen(p + 1) + l - 1 >= sizeof(buf) - 1)
+ return 0;
+--
+2.7.4
+
diff --git a/meta/recipes-graphics/xorg-lib/libx11/fix-utf8-wrong-define.patch b/meta/recipes-graphics/xorg-lib/libx11/fix-utf8-wrong-define.patch
index c6347f5be1f..1a3069a9ad6 100644
--- a/meta/recipes-graphics/xorg-lib/libx11/fix-utf8-wrong-define.patch
+++ b/meta/recipes-graphics/xorg-lib/libx11/fix-utf8-wrong-define.patch
@@ -1,19 +1,30 @@
-Upstream-Status: Pending
+From 046703373055c7029c19d171e415ff3caaa87372 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Mon, 10 Sep 2018 09:16:33 +0800
+Subject: [PATCH] Upstream-Status: Pending
Signed-off-by: Xiaofeng Yan <xiaofeng.yan@windriver.com>
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
+Update patch to version 1.6.6
---- libX11-X11R7.0-1.0.0/include/X11/Xlib.h~fix-utf8-wrong-define
-+++ libX11-X11R7.0-1.0.0/include/X11/Xlib.h
-@@ -103,7 +103,7 @@
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ include/X11/Xlib.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/include/X11/Xlib.h b/include/X11/Xlib.h
+index 84403f7..56be654 100644
+--- a/include/X11/Xlib.h
++++ b/include/X11/Xlib.h
+@@ -67,7 +67,7 @@ _Xmblen(
/* API mentioning "UTF8" or "utf8" is an XFree86 extension, introduced in
November 2000. Its presence is indicated through the following macro. */
-#define X_HAVE_UTF8_STRING 1
+#undef X_HAVE_UTF8_STRING
- typedef char *XPointer;
-
+ /* The Xlib structs are full of implicit padding to properly align members.
+ We can't clean that up without breaking ABI, so tell clang not to bother
+--
+2.7.4
+
diff --git a/meta/recipes-graphics/xorg-lib/libx11_1.6.5.bb b/meta/recipes-graphics/xorg-lib/libx11_1.6.6.bb
index 427bf28cebd..0fee1a90891 100644
--- a/meta/recipes-graphics/xorg-lib/libx11_1.6.5.bb
+++ b/meta/recipes-graphics/xorg-lib/libx11_1.6.6.bb
@@ -10,5 +10,5 @@ do_configure_append () {
sed -i -e "/X11_CFLAGS/d" ${B}/src/util/Makefile
}
-SRC_URI[md5sum] = "0f618db70c4054ca67cee0cc156a4255"
-SRC_URI[sha256sum] = "4d3890db2ba225ba8c55ca63c6409c1ebb078a2806de59fb16342768ae63435d"
+SRC_URI[md5sum] = "6b0f83e851b3b469dd660f3a95ac3e42"
+SRC_URI[sha256sum] = "65fe181d40ec77f45417710c6a67431814ab252d21c2e85c75dd1ed568af414f"
diff --git a/meta/recipes-graphics/xorg-lib/libxau_1.0.8.bb b/meta/recipes-graphics/xorg-lib/libxau_1.0.8.bb
index 2ef8bfa8b6b..8c52475b855 100644
--- a/meta/recipes-graphics/xorg-lib/libxau_1.0.8.bb
+++ b/meta/recipes-graphics/xorg-lib/libxau_1.0.8.bb
@@ -11,7 +11,7 @@ inherit gettext
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=7908e342491198401321cec1956807ec"
-DEPENDS += " xproto"
+DEPENDS += " xorgproto"
PROVIDES = "xau"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-lib/libxcalibrate/fix-xcb.patch b/meta/recipes-graphics/xorg-lib/libxcalibrate/fix-xcb.patch
deleted file mode 100644
index d6148834a67..00000000000
--- a/meta/recipes-graphics/xorg-lib/libxcalibrate/fix-xcb.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Upstream-Status: Pending
-
-There is no extra reply data and if we say not to disgard it, xcb
-throws fatal asserts.
-
-RP - 26/11/09
-
-Index: git/xcalibrate.c
-===================================================================
---- git.orig/xcalibrate.c 2009-11-26 08:11:48.000000000 +0000
-+++ git/xcalibrate.c 2009-11-26 08:09:55.000000000 +0000
-@@ -216,7 +216,7 @@
- req->reqType = info->codes->major_opcode;
- req->xCalibrateReqType = X_XCalibrateRawMode;
- req->on = enable;
-- if (!_XReply (dpy, (xReply *) &rep, 0, xFalse))
-+ if (!_XReply (dpy, (xReply *) &rep, 0, xTrue))
- {
- UnlockDisplay (dpy);
- SyncHandle ();
-@@ -240,7 +240,7 @@
- req->xCalibrateReqType = X_XCalibrateScreenToCoord;
- req->x = *x;
- req->y = *y;
-- if (!_XReply (dpy, (xReply *) &rep, 0, xFalse))
-+ if (!_XReply (dpy, (xReply *) &rep, 0, xTrue))
- {
- UnlockDisplay (dpy);
- SyncHandle ();
diff --git a/meta/recipes-graphics/xorg-lib/libxcalibrate_git.bb b/meta/recipes-graphics/xorg-lib/libxcalibrate_git.bb
deleted file mode 100644
index 0fe65318bea..00000000000
--- a/meta/recipes-graphics/xorg-lib/libxcalibrate_git.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "XCalibrate: Touchscreen calibration library"
-
-DESCRIPTION = "libXCalibrate is a library for performing touchscreen \
-calibration with the kdrive tslib touchscreen driver."
-
-require xorg-lib-common.inc
-
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://xcalibrate.h;endline=21;md5=fa572df6439f0f235f2612f370f153d7 \
- file://xcalibrate.c;endline=21;md5=fa572df6439f0f235f2612f370f153d7"
-
-DEPENDS = "virtual/libx11 calibrateproto libxext"
-
-SRCREV = "209d83af61ed38a002c8096377deac292b3e396c"
-PV = "0.0+git${SRCPV}"
-
-SRC_URI = "git://anongit.freedesktop.org/git/xorg/lib/libXCalibrate \
- file://fix-xcb.patch"
-UPSTREAM_CHECK_COMMITS = "1"
-
-S = "${WORKDIR}/git"
-
-FILES_${PN}-locale += "${datadir}/X11/locale"
diff --git a/meta/recipes-graphics/xorg-lib/libxcb/Fix-inconsistent-use-of-tabs-vs.-space.patch b/meta/recipes-graphics/xorg-lib/libxcb/Fix-inconsistent-use-of-tabs-vs.-space.patch
deleted file mode 100644
index 89923863590..00000000000
--- a/meta/recipes-graphics/xorg-lib/libxcb/Fix-inconsistent-use-of-tabs-vs.-space.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 8740a288ca468433141341347aa115b9544891d3 Mon Sep 17 00:00:00 2001
-From: Thomas Klausner <wiz@NetBSD.org>
-Date: Thu, 19 May 2016 17:31:18 +0200
-Subject: [PATCH] Fix inconsistent use of tabs vs. space.
-
-Needed for at least python-3.5.x.
-
-Signed-off-by: Thomas Klausner <wiz@NetBSD.org>
-Signed-off-by: Uli Schlachter <psychon@znc.in>
-
-Upstream-Status: Backport
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- src/c_client.py | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/src/c_client.py b/src/c_client.py
-index 57de3fb..043338d 100644
---- a/src/c_client.py
-+++ b/src/c_client.py
-@@ -1364,7 +1364,7 @@ def _c_serialize(context, self):
- _c(' unsigned int xcb_align_to = 0;')
- if self.is_switch:
- _c(' unsigned int xcb_padding_offset = %d;',
-- self.get_align_offset() )
-+ self.get_align_offset() )
- prefix = [('_aux', '->', self)]
- aux_ptr = 'xcb_out'
-
-@@ -1390,7 +1390,7 @@ def _c_serialize(context, self):
- _c(' unsigned int xcb_align_to = 0;')
- if self.is_switch:
- _c(' unsigned int xcb_padding_offset = %d;',
-- self.get_align_offset() )
-+ self.get_align_offset() )
-
- elif 'sizeof' == context:
- param_names = [p[2] for p in params]
-@@ -1930,14 +1930,14 @@ def _c_accessors_list(self, field):
- # from the request size and divide that by the member size
- return '(((R->length * 4) - sizeof('+ self.c_type + '))/'+'sizeof('+field.type.member.c_wiretype+'))'
- else:
-- # use the accessor to get the start of the list, then
-- # compute the length of it by subtracting it from
-+ # use the accessor to get the start of the list, then
-+ # compute the length of it by subtracting it from
- # the adress of the first byte after the end of the
- # request
-- after_end_of_request = '(((char*)R) + R->length * 4)'
-- start_of_list = '%s(R)' % (field.c_accessor_name)
-+ after_end_of_request = '(((char*)R) + R->length * 4)'
-+ start_of_list = '%s(R)' % (field.c_accessor_name)
- bytesize_of_list = '%s - (char*)(%s)' % (after_end_of_request, start_of_list)
-- return '(%s) / sizeof(%s)' % (bytesize_of_list, field.type.member.c_wiretype)
-+ return '(%s) / sizeof(%s)' % (bytesize_of_list, field.type.member.c_wiretype)
- else:
- raise Exception(
- "lengthless lists with varsized members are not supported. Fieldname '%s'"
---
-2.9.0
-
diff --git a/meta/recipes-graphics/xorg-lib/libxcb_1.12.bb b/meta/recipes-graphics/xorg-lib/libxcb_1.13.bb
index a38bdea5dfa..a8e0307e1a9 100644
--- a/meta/recipes-graphics/xorg-lib/libxcb_1.12.bb
+++ b/meta/recipes-graphics/xorg-lib/libxcb_1.13.bb
@@ -13,14 +13,14 @@ SRC_URI = "http://xcb.freedesktop.org/dist/libxcb-${PV}.tar.bz2 \
file://xcbincludedir.patch \
file://disable-check.patch \
file://gcc-mips-pr68302-mips-workaround.patch \
- file://Fix-inconsistent-use-of-tabs-vs.-space.patch \
"
-SRC_URI[md5sum] = "28e552bd78bc1050b6b26ca1db0e5bb6"
-SRC_URI[sha256sum] = "4adfb1b7c67e99bc9c2ccb110b2f175686576d2f792c8a71b9c8b19014057b5b"
+
+SRC_URI[md5sum] = "c2b6cf928afa16b0047c974e7aaa783f"
+SRC_URI[sha256sum] = "188c8752193c50ff2dbe89db4554c63df2e26a2e47b0fa415a70918b5b851daa"
BBCLASSEXTEND = "native nativesdk"
-DEPENDS = "xcb-proto xproto libxau libpthread-stubs libxdmcp"
+DEPENDS = "xcb-proto xorgproto libxau libpthread-stubs libxdmcp"
PACKAGES_DYNAMIC = "^libxcb-.*"
diff --git a/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.4.bb b/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.4.bb
index 70257194a91..73e29484047 100644
--- a/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.4.bb
+++ b/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.4.bb
@@ -14,7 +14,7 @@ require xorg-lib-common.inc
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=3f2907aad541f6f226fbc58cc1b3cdf1"
-DEPENDS += " compositeproto virtual/libx11 libxfixes libxext"
+DEPENDS += " xorgproto virtual/libx11 libxfixes libxext"
PROVIDES = "xcomposite"
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-graphics/xorg-lib/libxdamage_1.1.4.bb b/meta/recipes-graphics/xorg-lib/libxdamage_1.1.4.bb
index c3d70043cad..6d6ffadf209 100644
--- a/meta/recipes-graphics/xorg-lib/libxdamage_1.1.4.bb
+++ b/meta/recipes-graphics/xorg-lib/libxdamage_1.1.4.bb
@@ -16,7 +16,7 @@ require xorg-lib-common.inc
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=9fe101f30dd24134cf43146863241868"
-DEPENDS += "virtual/libx11 damageproto libxfixes"
+DEPENDS += "virtual/libx11 xorgproto libxfixes"
PROVIDES = "xdamage"
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.2.bb b/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.2.bb
index f4e30d93d48..466f3491fdc 100644
--- a/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.2.bb
+++ b/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.2.bb
@@ -13,7 +13,7 @@ inherit gettext
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=d559fb26e129626022e052a5e6e0e123"
-DEPENDS += "xproto"
+DEPENDS += "xorgproto"
PROVIDES = "xdmcp"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb b/meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb
index 063e531c029..aae8f2af6d9 100644
--- a/meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb
@@ -13,7 +13,7 @@ require xorg-lib-common.inc
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=879ce266785414bd1cbc3bc2f4d9d7c8"
-DEPENDS += "xproto virtual/libx11 xextproto"
+DEPENDS += "xorgproto virtual/libx11"
PROVIDES = "xext"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-lib/libxfixes_5.0.3.bb b/meta/recipes-graphics/xorg-lib/libxfixes_5.0.3.bb
index c80042d3495..f0e2f606ceb 100644
--- a/meta/recipes-graphics/xorg-lib/libxfixes_5.0.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libxfixes_5.0.3.bb
@@ -10,7 +10,7 @@ require xorg-lib-common.inc
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=3c1ce42c334a6f5cccb0277556a053e0"
-DEPENDS += "virtual/libx11 xproto fixesproto xextproto"
+DEPENDS += "virtual/libx11 xorgproto"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-lib/libxfont2_2.0.3.bb b/meta/recipes-graphics/xorg-lib/libxfont2_2.0.3.bb
index 5f27a55827b..2b72d6750c5 100644
--- a/meta/recipes-graphics/xorg-lib/libxfont2_2.0.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libxfont2_2.0.3.bb
@@ -9,7 +9,7 @@ require xorg-lib-common.inc
LICENSE = "MIT & MIT-style & BSD"
LIC_FILES_CHKSUM = "file://COPYING;md5=a46c8040f2f737bcd0c435feb2ab1c2c"
-DEPENDS += "freetype xtrans fontsproto libfontenc zlib"
+DEPENDS += "freetype xtrans xorgproto libfontenc zlib"
XORG_PN = "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 79f77fceacd..94c6c66e878 100644
--- a/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb
+++ b/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb
@@ -9,7 +9,7 @@ require xorg-lib-common.inc
LICENSE = "MIT & MIT-style & BSD"
LIC_FILES_CHKSUM = "file://COPYING;md5=a46c8040f2f737bcd0c435feb2ab1c2c"
-DEPENDS += "freetype xtrans fontsproto libfontenc zlib"
+DEPENDS += "freetype xtrans xorgproto libfontenc zlib"
PROVIDES = "xfont"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-lib/libxi_1.7.9.bb b/meta/recipes-graphics/xorg-lib/libxi_1.7.9.bb
index 74f0527b781..08381d9c4d5 100644
--- a/meta/recipes-graphics/xorg-lib/libxi_1.7.9.bb
+++ b/meta/recipes-graphics/xorg-lib/libxi_1.7.9.bb
@@ -11,7 +11,7 @@ LICENSE = "MIT & MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=17b064789fab936a1c58c4e13d965b0f \
file://src/XIGetDevFocus.c;endline=23;md5=cdfb0d435a33ec57ea0d1e8e395b729f"
-DEPENDS += "libxext inputproto libxfixes"
+DEPENDS += "libxext xorgproto libxfixes"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-lib/libxinerama_1.1.3.bb b/meta/recipes-graphics/xorg-lib/libxinerama_1.1.4.bb
index bb03f44e25a..edce35da5dd 100644
--- a/meta/recipes-graphics/xorg-lib/libxinerama_1.1.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libxinerama_1.1.4.bb
@@ -10,13 +10,13 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=6f4f634d1643a2e638bba3fcd19c2536 \
file://src/Xinerama.c;beginline=2;endline=25;md5=fcef273bfb66339256411dd06ea79c02"
-DEPENDS += "libxext xineramaproto"
+DEPENDS += "libxext xorgproto"
PROVIDES = "xinerama"
PE = "1"
XORG_PN = "libXinerama"
-SRC_URI[md5sum] = "9336dc46ae3bf5f81c247f7131461efd"
-SRC_URI[sha256sum] = "7a45699f1773095a3f821e491cbd5e10c887c5a5fce5d8d3fced15c2ff7698e2"
+SRC_URI[md5sum] = "0d5f826a197dae74da67af4a9ef35885"
+SRC_URI[sha256sum] = "0008dbd7ecf717e1e507eed1856ab0d9cf946d03201b85d5dcf61489bb02d720"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.0.bb b/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.2.bb
index 050d0b740b5..8cf508b0bff 100644
--- a/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.0.bb
+++ b/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.2.bb
@@ -9,8 +9,8 @@ DEPENDS = "util-macros flex-native bison-native"
SRC_URI = "http://xkbcommon.org/download/${BPN}-${PV}.tar.xz"
-SRC_URI[md5sum] = "7d0e4c4a137d0ac45bf6b328c84c3a81"
-SRC_URI[sha256sum] = "e829265db04e0aebfb0591b6dc3377b64599558167846c3f5ee5c5e53641fe6d"
+SRC_URI[md5sum] = "5f7f8533f907ebcfb1cf8dceb9501264"
+SRC_URI[sha256sum] = "7ab8c4b3403d89d01898066b72cb6069bddeb5af94905a65368f671a026ed58c"
UPSTREAM_CHECK_URI = "http://xkbcommon.org/"
diff --git a/meta/recipes-graphics/xorg-lib/libxkbfile_1.0.9.bb b/meta/recipes-graphics/xorg-lib/libxkbfile_1.0.9.bb
index 39a344ccade..f5c18607ac8 100644
--- a/meta/recipes-graphics/xorg-lib/libxkbfile_1.0.9.bb
+++ b/meta/recipes-graphics/xorg-lib/libxkbfile_1.0.9.bb
@@ -8,7 +8,7 @@ require xorg-lib-common.inc
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=8be7367f7e5d605a426f76bb37d4d61f"
-DEPENDS += "virtual/libx11 kbproto"
+DEPENDS += "virtual/libx11 xorgproto"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-lib/libxrandr_1.5.1.bb b/meta/recipes-graphics/xorg-lib/libxrandr_1.5.1.bb
index 48e88d20a72..b90ebc62329 100644
--- a/meta/recipes-graphics/xorg-lib/libxrandr_1.5.1.bb
+++ b/meta/recipes-graphics/xorg-lib/libxrandr_1.5.1.bb
@@ -11,7 +11,7 @@ require xorg-lib-common.inc
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=c9d1a2118a6cd5727521db8e7a2fee69"
-DEPENDS += "virtual/libx11 randrproto libxrender libxext"
+DEPENDS += "virtual/libx11 xorgproto libxrender libxext"
PE = "1"
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 92b3102704f..9b18366138b 100644
--- a/meta/recipes-graphics/xorg-lib/libxrender_0.9.10.bb
+++ b/meta/recipes-graphics/xorg-lib/libxrender_0.9.10.bb
@@ -11,7 +11,7 @@ require xorg-lib-common.inc
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=d8bc71986d3b9b3639f6dfd6fac8f196"
-DEPENDS += "virtual/libx11 renderproto xproto"
+DEPENDS += "virtual/libx11 xorgproto"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-lib/libxres_1.2.0.bb b/meta/recipes-graphics/xorg-lib/libxres_1.2.0.bb
index 8c34e47b43f..af6bb19a258 100644
--- a/meta/recipes-graphics/xorg-lib/libxres_1.2.0.bb
+++ b/meta/recipes-graphics/xorg-lib/libxres_1.2.0.bb
@@ -10,7 +10,7 @@ require xorg-lib-common.inc
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=8c89441a8df261bdc56587465e13c7fa"
-DEPENDS += "libxext resourceproto"
+DEPENDS += "libxext xorgproto"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.2.bb b/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.3.bb
index 354e5de7fdb..aed52e75eed 100644
--- a/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.2.bb
+++ b/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.3.bb
@@ -12,12 +12,12 @@ image is to be displayed and to provide the graphics."
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=21fd154ee757813632ada871a34113fb"
-DEPENDS += "libxext scrnsaverproto"
+DEPENDS += "libxext xorgproto"
PROVIDES = "libxss"
RREPLACES_${PN} = "libxss"
PE = "1"
XORG_PN = "libXScrnSaver"
-SRC_URI[md5sum] = "7a773b16165e39e938650bcc9027c1d5"
-SRC_URI[sha256sum] = "8ff1efa7341c7f34bcf9b17c89648d6325ddaae22e3904e091794e0b4426ce1d"
+SRC_URI[md5sum] = "eeea9d5af3e6c143d0ea1721d27a5e49"
+SRC_URI[sha256sum] = "f917075a1b7b5a38d67a8b0238eaab14acd2557679835b154cf2bca576e89bf8"
diff --git a/meta/recipes-graphics/xorg-lib/libxshmfence/extensions.patch b/meta/recipes-graphics/xorg-lib/libxshmfence/extensions.patch
deleted file mode 100644
index 4cc9e05ab53..00000000000
--- a/meta/recipes-graphics/xorg-lib/libxshmfence/extensions.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-With glibc 2.27 memfd_create is behind a _GNU_SOURCE guard, so call
-AC_USE_SYSTEM_EXTENSIONS to get that defined.
-
-Upstream-Status: Submitted
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/configure.ac b/configure.ac
-index 0c98875..ebf4dee 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -29,4 +29,6 @@ AC_CONFIG_SRCDIR([Makefile.am])
- AC_CONFIG_HEADERS([config.h])
-
-+AC_USE_SYSTEM_EXTENSIONS
-+
- # Initialize Automake
- AM_INIT_AUTOMAKE([foreign dist-bzip2])
diff --git a/meta/recipes-graphics/xorg-lib/libxshmfence_1.2.bb b/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb
index 1df068d1b0f..85a48e4c588 100644
--- a/meta/recipes-graphics/xorg-lib/libxshmfence_1.2.bb
+++ b/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb
@@ -13,7 +13,5 @@ DEPENDS += "virtual/libx11"
BBCLASSEXTEND = "native nativesdk"
-SRC_URI += "file://extensions.patch"
-
-SRC_URI[md5sum] = "66662e76899112c0f99e22f2fc775a7e"
-SRC_URI[sha256sum] = "d21b2d1fd78c1efbe1f2c16dae1cb23f8fd231dcf891465b8debe636a9054b0c"
+SRC_URI[md5sum] = "42dda8016943dc12aff2c03a036e0937"
+SRC_URI[sha256sum] = "b884300d26a14961a076fbebc762a39831cb75f92bed5ccf9836345b459220c7"
diff --git a/meta/recipes-graphics/xorg-lib/libxt_1.1.5.bb b/meta/recipes-graphics/xorg-lib/libxt_1.1.5.bb
index 180d00d9b08..f8d94a2f546 100644
--- a/meta/recipes-graphics/xorg-lib/libxt_1.1.5.bb
+++ b/meta/recipes-graphics/xorg-lib/libxt_1.1.5.bb
@@ -16,7 +16,7 @@ LICENSE = "MIT & MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=6565b1e0094ea1caae0971cc4035f343"
-DEPENDS += "util-linux libxcb libsm virtual/libx11 kbproto libxdmcp"
+DEPENDS += "util-linux libxcb libsm virtual/libx11 xorgproto libxdmcp"
PROVIDES = "xt"
PE = "1"
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 5717fa5b794..266bd1ca59c 100644
--- a/meta/recipes-graphics/xorg-lib/libxtst_1.2.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libxtst_1.2.3.bb
@@ -10,7 +10,7 @@ LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=bb4f89972c3869f617f61c1a79ad1952 \
file://src/XTest.c;beginline=2;endline=32;md5=b1c8c9dff842b4d5b89ca5fa32c40e99"
-DEPENDS += "libxext recordproto inputproto libxi"
+DEPENDS += "libxext xorgproto libxi"
PROVIDES = "xtst"
PE = "1"
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 a226c2753a8..c6027233ef6 100644
--- a/meta/recipes-graphics/xorg-lib/libxv_1.0.11.bb
+++ b/meta/recipes-graphics/xorg-lib/libxv_1.0.11.bb
@@ -10,7 +10,7 @@ require xorg-lib-common.inc
LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=827da9afab1f727f2a66574629e0f39c"
-DEPENDS += "libxext videoproto"
+DEPENDS += "libxext xorgproto"
XORG_PN = "libXv"
diff --git a/meta/recipes-graphics/xorg-lib/libxvmc_1.0.10.bb b/meta/recipes-graphics/xorg-lib/libxvmc_1.0.10.bb
index 6ed49b1f37c..7e49a98ddb5 100644
--- a/meta/recipes-graphics/xorg-lib/libxvmc_1.0.10.bb
+++ b/meta/recipes-graphics/xorg-lib/libxvmc_1.0.10.bb
@@ -9,7 +9,7 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=0a207f08d4961489c55046c9a5e500da \
file://wrapper/XvMCWrapper.c;endline=26;md5=5151daa8172a3f1bb0cb0e0ff157d9de"
-DEPENDS += "libxext libxv videoproto"
+DEPENDS += "libxext libxv xorgproto"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.4.bb b/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.4.bb
index 695a39637c8..626199e09c0 100644
--- a/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.4.bb
+++ b/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.4.bb
@@ -9,7 +9,7 @@ emulators for games."
LIC_FILES_CHKSUM = "file://COPYING;md5=abb99ac125f84f424a4278153988e32f"
-DEPENDS += "libxext xf86dgaproto"
+DEPENDS += "libxext"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.3.bb b/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.4.bb
index af6f1f76a2f..45b0673e732 100644
--- a/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.4.bb
@@ -8,13 +8,12 @@ require xorg-lib-common.inc
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=27c91ecc435bd3d2bfad868914c94b45"
-DEPENDS += "libxext xf86miscproto"
+DEPENDS += "libxext"
PROVIDES = "xxf86misc"
PE = "1"
XORG_PN = "libXxf86misc"
-SRC_URI[md5sum] = "6bc0bf78909fd71021c466c793d4385c"
-SRC_URI[sha256sum] = "563f4200862efd3334c33a669e0a0aae5bab31f3998db75b87a99a697cc26b5b"
-
+SRC_URI[md5sum] = "37ad70f8b53b94b550f9290be97fbe2d"
+SRC_URI[sha256sum] = "a89c03e2b0f16239d67a2031b9003f31b5a686106bbdb3c797fb88ae472af380"
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 35f87d2719d..95fc0b642c6 100644
--- a/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.4.bb
+++ b/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.4.bb
@@ -10,7 +10,7 @@ require xorg-lib-common.inc
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=fa0b9c462d8f2f13eba26492d42ea63d"
-DEPENDS += "libxext xf86vidmodeproto"
+DEPENDS += "libxext xorgproto"
PE = "1"
diff --git a/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.22.bb b/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.24.bb
index 4fd894fd79b..7d0e608e7ec 100644
--- a/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.22.bb
+++ b/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.24.bb
@@ -14,8 +14,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=0e7f21ca7db975c63467d2e7624a12f9"
SRC_URI = "${XORG_MIRROR}/individual/data/xkeyboard-config/${BPN}-${PV}.tar.bz2"
-SRC_URI[md5sum] = "eb61fb3fd419e817df572b0c8d94a883"
-SRC_URI[sha256sum] = "deaec9989fbc443358b43864437b7b6d39caff07890a4a8055105ce9fcaa59bd"
+SRC_URI[md5sum] = "74c4bdf52382127cb5802c3f2ab441e0"
+SRC_URI[sha256sum] = "91b18580f46b4e4ea913707f6c8d68ab5286879c3a6591462f3b9e760d3ac4d7"
SECTION = "x11/libs"
DEPENDS = "intltool-native util-macros libxslt-native"
diff --git a/meta/recipes-graphics/xorg-lib/xtrans/multilibfix.patch b/meta/recipes-graphics/xorg-lib/xtrans/multilibfix.patch
new file mode 100644
index 00000000000..c513bad20e6
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/xtrans/multilibfix.patch
@@ -0,0 +1,18 @@
+The xtrans.pc file is installed into a non-arch directory yet contains libdir
+which can vary depending on which multilib is configured. The .pc file does
+not require libdir so remove this to fix multilib builds.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Upstream-Status: Pending
+
+Index: xtrans-1.3.5/xtrans.pc.in
+===================================================================
+--- xtrans-1.3.5.orig/xtrans.pc.in
++++ xtrans-1.3.5/xtrans.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: XTrans
diff --git a/meta/recipes-graphics/xorg-lib/xtrans_1.3.5.bb b/meta/recipes-graphics/xorg-lib/xtrans_1.3.5.bb
index d5b7f1a2c6b..200716fb023 100644
--- a/meta/recipes-graphics/xorg-lib/xtrans_1.3.5.bb
+++ b/meta/recipes-graphics/xorg-lib/xtrans_1.3.5.bb
@@ -12,6 +12,8 @@ require xorg-lib-common.inc
LICENSE = "MIT & MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=49347921d4d5268021a999f250edc9ca"
+SRC_URI += "file://multilibfix.patch"
+
PE = "1"
RDEPENDS_${PN}-dev = ""
diff --git a/meta/recipes-graphics/xorg-proto/bigreqsproto_1.1.2.bb b/meta/recipes-graphics/xorg-proto/bigreqsproto_1.1.2.bb
deleted file mode 100644
index f798a43538d..00000000000
--- a/meta/recipes-graphics/xorg-proto/bigreqsproto_1.1.2.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-require xorg-proto-common.inc
-
-PE = "1"
-
-SUMMARY = "BigReqs: X Big Requests extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the \
-BIG-REQUESTS extension, used to send larger requests that usual in order \
-to avoid fragmentation."
-
-BBCLASSEXTEND = "native nativesdk"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=b12715630da6f268d0d3712ee1a504f4"
-
-SRC_URI[md5sum] = "1a05fb01fa1d5198894c931cf925c025"
-SRC_URI[sha256sum] = "462116ab44e41d8121bfde947321950370b285a5316612b8fce8334d50751b1e"
diff --git a/meta/recipes-graphics/xorg-proto/calibrateproto/fix.patch b/meta/recipes-graphics/xorg-proto/calibrateproto/fix.patch
deleted file mode 100644
index ff8cb25cd53..00000000000
--- a/meta/recipes-graphics/xorg-proto/calibrateproto/fix.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-Upstream-Status: Pending
-
-Add missing length fields to the replies. Without these, sanity checking in recent X
-breaks things.
-
-RP 11/2/10
-
-
-Index: git/xcalibrateproto.h
-===================================================================
---- git.orig/xcalibrateproto.h 2010-02-11 11:47:45.711985932 +0000
-+++ git/xcalibrateproto.h 2010-02-11 11:40:21.000000000 +0000
-@@ -67,13 +67,13 @@
- BYTE type; /* X_Reply */
- BYTE pad1;
- CARD16 sequenceNumber B16;
-+ CARD32 length;
- CARD32 status;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-- CARD32 pad7 B32;
- } xXCalibrateRawModeReply;
-
- #define sz_xXCalibrateRawModeReply 32
-@@ -92,13 +92,13 @@
- BYTE type; /* X_Reply */
- BYTE pad1;
- CARD16 sequenceNumber B16;
-+ CARD32 length;
- CARD32 x;
- CARD32 y;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-- CARD32 pad6 B32;
- } xXCalibrateScreenToCoordReply;
-
- #define sz_xXCalibrateScreenToCoordReply 32
diff --git a/meta/recipes-graphics/xorg-proto/calibrateproto_git.bb b/meta/recipes-graphics/xorg-proto/calibrateproto_git.bb
deleted file mode 100644
index eb4b4224cae..00000000000
--- a/meta/recipes-graphics/xorg-proto/calibrateproto_git.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "XCalibrate: Touchscreen calibration headers"
-
-DESCRIPTION = "This package provides the wire protocol for the \
-Touchscreen calibration extension."
-
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://xcalibratewire.h;endline=23;md5=7f86ef7b03cce6c4c9ebd59d20ca485f \
- file://xcalibrateproto.h;endline=23;md5=e4490491edcc171ca24f98569ee580db"
-
-SRCREV = "1da6fd1e2c7a49648245c98481fabea8b9690a8c"
-
-PV = "0.0+git${SRCPV}"
-PR = "r2"
-
-SRC_URI = "git://anongit.freedesktop.org/git/xorg/proto/calibrateproto \
- file://fix.patch;apply=yes"
-S = "${WORKDIR}/git"
-UPSTREAM_CHECK_COMMITS = "1"
-
diff --git a/meta/recipes-graphics/xorg-proto/compositeproto_0.4.2.bb b/meta/recipes-graphics/xorg-proto/compositeproto_0.4.2.bb
deleted file mode 100644
index adfee26306f..00000000000
--- a/meta/recipes-graphics/xorg-proto/compositeproto_0.4.2.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "Xcomposite: X composite extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the X \
-composite extension. The X composite extension provides three related \
-mechanisms for compositing and off-screen storage."
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2c4bfe136f4a4418ea2f2a96b7c8f3c5 \
- file://composite.h;endline=43;md5=cbd44d4079053aa75930ed2f02b92926"
-
-RCONFLICTS_${PN} = "compositeext"
-BBCLASSEXTEND = "native"
-
-PR = "r1"
-PE = "1"
-
-SRC_URI[md5sum] = "98482f65ba1e74a08bf5b056a4031ef0"
-SRC_URI[sha256sum] = "049359f0be0b2b984a8149c966dd04e8c58e6eade2a4a309cf1126635ccd0cfc"
-
diff --git a/meta/recipes-graphics/xorg-proto/damageproto_1.2.1.bb b/meta/recipes-graphics/xorg-proto/damageproto_1.2.1.bb
deleted file mode 100644
index 75d02681086..00000000000
--- a/meta/recipes-graphics/xorg-proto/damageproto_1.2.1.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "Xdamage: X Damage extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the DAMAGE \
-extension. The DAMAGE extension allows applications to receive \
-information about changes made to pixel contents of windows and \
-pixmaps."
-
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d5f5a2de65c3a84cbde769f07a769608 \
- file://damagewire.h;endline=23;md5=4a4501a592dbc7de5ce89255e50d0296"
-
-RCONFLICTS_${PN} = "damageext"
-BBCLASSEXTEND = "native"
-PR = "r1"
-PE = "1"
-
-SRC_URI[md5sum] = "998e5904764b82642cc63d97b4ba9e95"
-SRC_URI[sha256sum] = "5c7c112e9b9ea8a9d5b019e5f17d481ae20f766cb7a4648360e7c1b46fc9fc5b"
diff --git a/meta/recipes-graphics/xorg-proto/dmxproto_2.3.1.bb b/meta/recipes-graphics/xorg-proto/dmxproto_2.3.1.bb
deleted file mode 100644
index d960e5d4cf6..00000000000
--- a/meta/recipes-graphics/xorg-proto/dmxproto_2.3.1.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "DMX: Distributed Multihead extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the DMX \
-extension. The DMX extension provides support for communication with \
-and control of Xdmx server. Attributes of the Xdmx server and of the \
-back-end screens attached to the server can be queried and modified via \
-this protocol."
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a3c3499231a8035efd0e004cfbd3b72a \
- file://dmxproto.h;endline=32;md5=ab8509955c3dd4c65fac728e1b367bc4"
-
-PE = "1"
-
-SRC_URI[md5sum] = "4ee175bbd44d05c34d43bb129be5098a"
-SRC_URI[sha256sum] = "e72051e6a3e06b236d19eed56368117b745ca1e1a27bdc50fd51aa375bea6509"
diff --git a/meta/recipes-graphics/xorg-proto/dri2proto_2.8.bb b/meta/recipes-graphics/xorg-proto/dri2proto_2.8.bb
deleted file mode 100644
index f4c40c57195..00000000000
--- a/meta/recipes-graphics/xorg-proto/dri2proto_2.8.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "DRI2: Direct Rendering Infrastructure 2 headers"
-
-DESCRIPTION = "This package provides the wire protocol for the Direct \
-Rendering Ifnrastructure 2. DIR is required for may hardware \
-accelerated OpenGL drivers."
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2e396fa91834f8786032cad2da5638f3 \
- file://dri2proto.h;endline=31;md5=22f28bf68d01b533f26195e94b3ed8ca"
-
-
-SRC_URI[md5sum] = "b2721d5d24c04d9980a0c6540cb5396a"
-SRC_URI[sha256sum] = "f9b55476def44fc7c459b2537d17dbc731e36ed5d416af7ca0b1e2e676f8aa04"
diff --git a/meta/recipes-graphics/xorg-proto/dri3proto_1.0.bb b/meta/recipes-graphics/xorg-proto/dri3proto_1.0.bb
deleted file mode 100644
index bed97b3f496..00000000000
--- a/meta/recipes-graphics/xorg-proto/dri3proto_1.0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "Direct Rendering Infrastructure 3 Extension"
-
-DESCRIPTION = "The DRI3 extension provides mechanisms to translate between direct \
-rendered buffers and X pixmaps. When combined with the Present extension, \
-a complete direct rendering solution for OpenGL is provided."
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://dri3proto.h;endline=21;md5=ac90d1d416be3cb13e1d3c88cd5166bf"
-
-
-SRC_URI[md5sum] = "a3d2cbe60a9ca1bf3aea6c93c817fee3"
-SRC_URI[sha256sum] = "01be49d70200518b9a6b297131f6cc71f4ea2de17436896af153226a774fc074"
diff --git a/meta/recipes-graphics/xorg-proto/fixesproto_5.0.bb b/meta/recipes-graphics/xorg-proto/fixesproto_5.0.bb
deleted file mode 100644
index 39fb88d84ce..00000000000
--- a/meta/recipes-graphics/xorg-proto/fixesproto_5.0.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "XFixes: X Fixes extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the X Fixes \
-extension. This extension is designed to provide server-side support \
-for application work arounds to shortcomings in the core X window \
-system."
-
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=262a7a87da56e66dd639bf7334a110c6 \
- file://xfixesproto.h;endline=43;md5=c3a9ee6db3532ed0d44dea266cfc97f4"
-
-RCONFLICTS_${PN} = "fixesext"
-PR = "r1"
-PE = "1"
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI[md5sum] = "e7431ab84d37b2678af71e29355e101d"
-SRC_URI[sha256sum] = "ba2f3f31246bdd3f2a0acf8bd3b09ba99cab965c7fb2c2c92b7dc72870e424ce"
diff --git a/meta/recipes-graphics/xorg-proto/fontsproto_2.1.3.bb b/meta/recipes-graphics/xorg-proto/fontsproto_2.1.3.bb
deleted file mode 100644
index 27fc281748d..00000000000
--- a/meta/recipes-graphics/xorg-proto/fontsproto_2.1.3.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "XFont: X Font rasterisation headers"
-
-DESCRIPTION = "This package provides the wire protocol for the X Font \
-rasterisation extensions. These extensions are used to control \
-server-side font configurations."
-
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c3e48aa9ce868c8e90f0401db41c11a2 \
- file://FSproto.h;endline=44;md5=d2e58e27095e5ea7d4ad456ccb91986c"
-
-PE = "1"
-
-BBCLASSEXTEND = "native"
-
-SRC_URI[md5sum] = "36934d00b00555eaacde9f091f392f97"
-SRC_URI[sha256sum] = "259046b0dd9130825c4a4c479ba3591d6d0f17a33f54e294b56478729a6e5ab8"
diff --git a/meta/recipes-graphics/xorg-proto/glproto_1.4.17.bb b/meta/recipes-graphics/xorg-proto/glproto_1.4.17.bb
deleted file mode 100644
index eb03d33c2b4..00000000000
--- a/meta/recipes-graphics/xorg-proto/glproto_1.4.17.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "OpenGL: X OpenGL extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the \
-OpenGL-related extensions, used to enable the rendering of applications \
-using OpenGL."
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d44ed0146997856304dfbb512a59a8de \
- file://glxproto.h;beginline=4;endline=32;md5=6b79c570f644363b356456e7d44471d9"
-
-PE = "1"
-
-BBCLASSEXTEND = "nativesdk"
-
-SRC_URI[md5sum] = "5565f1b0facf4a59c2778229c1f70d10"
-SRC_URI[sha256sum] = "adaa94bded310a2bfcbb9deb4d751d965fcfe6fb3a2f6d242e2df2d6589dbe40"
diff --git a/meta/recipes-graphics/xorg-proto/inputproto_2.3.2.bb b/meta/recipes-graphics/xorg-proto/inputproto_2.3.2.bb
deleted file mode 100644
index eb5e66bd663..00000000000
--- a/meta/recipes-graphics/xorg-proto/inputproto_2.3.2.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "XI: X Input extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the X Input \
-extension. The extension supports input devices other then the core X \
-keyboard and pointer."
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e562cc0f6587b961f032211d8160f31e \
- file://XI2proto.h;endline=48;md5=1ac1581e61188da2885cc14ff49b20be"
-
-PE = "1"
-
-inherit gettext
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI[md5sum] = "b290a463af7def483e6e190de460f31a"
-SRC_URI[sha256sum] = "893a6af55733262058a27b38eeb1edc733669f01d404e8581b167f03c03ef31d"
-
-EXTRA_OECONF += "--without-asciidoc"
diff --git a/meta/recipes-graphics/xorg-proto/kbproto_1.0.7.bb b/meta/recipes-graphics/xorg-proto/kbproto_1.0.7.bb
deleted file mode 100644
index 46f5c92b61f..00000000000
--- a/meta/recipes-graphics/xorg-proto/kbproto_1.0.7.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "XKB: X Keyboard extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the X \
-Keyboard extension. This extension is used to control options related \
-to keyboard handling and layout."
-
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=7dd6ea99e2a83a552c02c80963623c38 \
- file://XKBproto.h;beginline=1;endline=25;md5=5744eeff407aeb6e7a1346eebab486a2"
-
-PE = "1"
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI[md5sum] = "94afc90c1f7bef4a27fdd59ece39c878"
-SRC_URI[sha256sum] = "f882210b76376e3fa006b11dbd890e56ec0942bc56e65d1249ff4af86f90b857"
diff --git a/meta/recipes-graphics/xorg-proto/presentproto_git.bb b/meta/recipes-graphics/xorg-proto/presentproto_git.bb
deleted file mode 100644
index e6d32f95af5..00000000000
--- a/meta/recipes-graphics/xorg-proto/presentproto_git.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "This package provides the basic headers for the X Window System"
-DESCRIPTION = "The Present extension provides a way for applications to update their \
- window contents from a pixmap in a well defined fashion, synchronizing \
- with the display refresh and potentially using a more efficient \
- mechanism than copying the contents of the source pixmap.\
- "
-
-LICENSE = "GPLv2"
-
-SRCREV = "bfdc7e052302c79c5803ad95a73c9b63b350c40c"
-PV = "1.1+git${SRCPV}"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=47e508ca280fde97906eacb77892c3ac"
-
-SRC_URI = "git://anongit.freedesktop.org/git/xorg/proto/presentproto"
-S = "${WORKDIR}/git"
-
-inherit autotools
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-graphics/xorg-proto/randrproto_1.5.0.bb b/meta/recipes-graphics/xorg-proto/randrproto_1.5.0.bb
deleted file mode 100644
index b59e52513fb..00000000000
--- a/meta/recipes-graphics/xorg-proto/randrproto_1.5.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "XRandR: X Resize, Rotate and Reflect extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the X Resize, \
-Rotate and Reflect extension. This extension provides the ability to \
-resize, rotate and reflect the root window of a screen."
-
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=00426d41bd3d9267cf9bbb2df9323a5e \
- file://randrproto.h;endline=30;md5=3885957c6048fdf3310ac8ba54ca2c3f"
-
-RCONFLICTS_${PN} = "randrext"
-PE = "1"
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI[md5sum] = "a46765c8dcacb7114c821baf0df1e797"
-SRC_URI[sha256sum] = "4c675533e79cd730997d232c8894b6692174dce58d3e207021b8f860be498468"
diff --git a/meta/recipes-graphics/xorg-proto/recordproto_1.14.2.bb b/meta/recipes-graphics/xorg-proto/recordproto_1.14.2.bb
deleted file mode 100644
index ad2317c26e3..00000000000
--- a/meta/recipes-graphics/xorg-proto/recordproto_1.14.2.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "XRecord: X Record extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the X Record \
-extension. This extension is used to record and play back event \
-sequences."
-
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=575827a0f554bbed332542976d5f3d40 \
- file://recordproto.h;endline=19;md5=1cbb0dd45a0b060ff833901620a3e738"
-
-RCONFLICTS_${PN} = "recordext"
-PR = "r1"
-PE = "1"
-
-SRC_URI[md5sum] = "1b4e5dede5ea51906f1530ca1e21d216"
-SRC_URI[sha256sum] = "a777548d2e92aa259f1528de3c4a36d15e07a4650d0976573a8e2ff5437e7370"
diff --git a/meta/recipes-graphics/xorg-proto/renderproto_0.11.1.bb b/meta/recipes-graphics/xorg-proto/renderproto_0.11.1.bb
deleted file mode 100644
index ff800ec831b..00000000000
--- a/meta/recipes-graphics/xorg-proto/renderproto_0.11.1.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "XRender: X rendering Extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the X \
-Rendering extension. This is the basis the image composition within the \
-X window system."
-
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f826d99765196352e6122a406cf0d024 \
- file://renderproto.h;beginline=4;endline=24;md5=3e5e2851dad240b0a3a27c4776b4fd1f"
-
-RCONFLICTS_${PN} = "renderext"
-PR = "r1"
-PE = "1"
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI[md5sum] = "a914ccc1de66ddeb4b611c6b0686e274"
-SRC_URI[sha256sum] = "06735a5b92b20759204e4751ecd6064a2ad8a6246bb65b3078b862a00def2537"
-
diff --git a/meta/recipes-graphics/xorg-proto/resourceproto_1.2.0.bb b/meta/recipes-graphics/xorg-proto/resourceproto_1.2.0.bb
deleted file mode 100644
index 08b610aea5d..00000000000
--- a/meta/recipes-graphics/xorg-proto/resourceproto_1.2.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "XRes: X Resource extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the X \
-Resource extension. XRes provides an interface that allows X clients to \
-see and monitor X resource usage of various clients."
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=604859305e662503077240fee8c77d97"
-
-RCONFLICTS_${PN} = "resourceext"
-
-PR = "r1"
-PE = "1"
-
-SRC_URI[md5sum] = "cfdb57dae221b71b2703f8e2980eaaf4"
-SRC_URI[sha256sum] = "3c66003a6bdeb0f70932a9ed3cf57cc554234154378d301e0c5cfa189d8f6818"
-
diff --git a/meta/recipes-graphics/xorg-proto/scrnsaverproto_1.2.2.bb b/meta/recipes-graphics/xorg-proto/scrnsaverproto_1.2.2.bb
deleted file mode 100644
index ab07f518cfa..00000000000
--- a/meta/recipes-graphics/xorg-proto/scrnsaverproto_1.2.2.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "Xscrnsaver: X Screen Saver extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the X Screen \
-Saver extension. This extension allows an external \"screen saver\" \
-client to detect when the alternative image is to be displayed and to \
-provide the graphics."
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=eed49b78b15b436c933b6b8b054e3901 \
- file://saverproto.h;endline=26;md5=a84c0637305159f3c0ab173aaeede48d"
-
-PE = "1"
-
-EXTRA_OECONF_append = " --enable-specs=no"
-
-SRC_URI[md5sum] = "edd8a73775e8ece1d69515dd17767bfb"
-SRC_URI[sha256sum] = "8bb70a8da164930cceaeb4c74180291660533ad3cc45377b30a795d1b85bcd65"
diff --git a/meta/recipes-graphics/xorg-proto/videoproto_2.3.3.bb b/meta/recipes-graphics/xorg-proto/videoproto_2.3.3.bb
deleted file mode 100644
index 6f97a2653b2..00000000000
--- a/meta/recipes-graphics/xorg-proto/videoproto_2.3.3.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "Xv: X Video extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the X Video \
-extension. This extension alows for accerlated drawing of videos."
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=ce3472a119a864085fa4155cb0979a7b"
-
-PE = "1"
-
-SRC_URI[md5sum] = "fe86de8ea3eb53b5a8f52956c5cd3174"
-SRC_URI[sha256sum] = "c7803889fd08e6fcaf7b68cc394fb038b2325d1f315e571a6954577e07cca702"
diff --git a/meta/recipes-graphics/xorg-proto/xcb-proto/0001-Make-whitespace-use-consistent.patch b/meta/recipes-graphics/xorg-proto/xcb-proto/0001-Make-whitespace-use-consistent.patch
deleted file mode 100644
index 89ec66618ea..00000000000
--- a/meta/recipes-graphics/xorg-proto/xcb-proto/0001-Make-whitespace-use-consistent.patch
+++ /dev/null
@@ -1,215 +0,0 @@
-From ea7a3ac6c658164690e0febb55f4467cb9e0bcac Mon Sep 17 00:00:00 2001
-From: Thomas Klausner <wiz@NetBSD.org>
-Date: Thu, 19 May 2016 17:30:04 +0200
-Subject: [PATCH 1/2] Make whitespace use consistent.
-
-At least python-3.5.x complains about this forcefully.
-
-Signed-off-by: Thomas Klausner <wiz@NetBSD.org>
-Signed-off-by: Uli Schlachter <psychon@znc.in>
-
-Upstream-Status: Backport
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- xcbgen/align.py | 96 ++++++++++++++++++++++++++++-----------------------------
- 1 file changed, 48 insertions(+), 48 deletions(-)
-
-diff --git a/xcbgen/align.py b/xcbgen/align.py
-index 5e31838..d4c12ee 100644
---- a/xcbgen/align.py
-+++ b/xcbgen/align.py
-@@ -16,12 +16,12 @@ class Alignment(object):
- return self.align == other.align and self.offset == other.offset
-
- def __str__(self):
-- return "(align=%d, offset=%d)" % (self.align, self.offset)
-+ return "(align=%d, offset=%d)" % (self.align, self.offset)
-
- @staticmethod
- def for_primitive_type(size):
-- # compute the required start_alignment based on the size of the type
-- if size % 8 == 0:
-+ # compute the required start_alignment based on the size of the type
-+ if size % 8 == 0:
- # do 8-byte primitives require 8-byte alignment in X11?
- return Alignment(8,0)
- elif size % 4 == 0:
-@@ -33,7 +33,7 @@ class Alignment(object):
-
-
- def align_after_fixed_size(self, size):
-- new_offset = (self.offset + size) % self.align
-+ new_offset = (self.offset + size) % self.align
- return Alignment(self.align, new_offset)
-
-
-@@ -41,7 +41,7 @@ class Alignment(object):
- '''
- Assuming the given external_align, checks whether
- self is fulfilled for all cases.
-- Returns True if yes, False otherwise.
-+ Returns True if yes, False otherwise.
- '''
- if self.align == 1 and self.offset == 0:
- # alignment 1 with offset 0 is always fulfilled
-@@ -55,9 +55,9 @@ class Alignment(object):
- # the external align guarantees less alignment -> not guaranteed
- return False
-
-- if external_align.align % self.align != 0:
-+ if external_align.align % self.align != 0:
- # the external align cannot be divided by our align
-- # -> not guaranteed
-+ # -> not guaranteed
- # (this can only happen if there are alignments that are not
- # a power of 2, which is highly discouraged. But better be
- # safe and check for it)
-@@ -72,7 +72,7 @@ class Alignment(object):
-
- def combine_with(self, other):
- # returns the alignment that is guaranteed when
-- # both, self or other, can happen
-+ # both, self or other, can happen
- new_align = gcd(self.align, other.align)
- new_offset_candidate1 = self.offset % new_align
- new_offset_candidate2 = other.offset % new_align
-@@ -83,8 +83,8 @@ class Alignment(object):
- new_align = gcd(new_align, offset_diff)
- new_offset_candidate1 = self.offset % new_align
- new_offset_candidate2 = other.offset % new_align
-- assert new_offset_candidate1 == new_offset_candidate2
-- new_offset = new_offset_candidate1
-+ assert new_offset_candidate1 == new_offset_candidate2
-+ new_offset = new_offset_candidate1
- # return the result
- return Alignment(new_align, new_offset)
-
-@@ -92,44 +92,44 @@ class Alignment(object):
- class AlignmentLog(object):
-
- def __init__(self):
-- self.ok_list = []
-- self.fail_list = []
-- self.verbosity = 1
-+ self.ok_list = []
-+ self.fail_list = []
-+ self.verbosity = 1
-
- def __str__(self):
-- result = ""
-+ result = ""
-
-- # output the OK-list
-- for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list:
-- stacksize = len(callstack)
-+ # output the OK-list
-+ for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list:
-+ stacksize = len(callstack)
- indent = ' ' * stacksize
-- if self.ok_callstack_is_relevant(callstack):
-+ if self.ok_callstack_is_relevant(callstack):
- if field_name is None or field_name == "":
-- result += (" %sok: %s:\n\t%sbefore: %s, after: %s\n"
-- % (indent, str(type_obj), indent, str(align_before), str(align_after)))
-- else:
-- result += (" %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n"
-- % (indent, str(field_name), str(type_obj),
-- indent, str(align_before), str(align_after)))
-+ result += (" %sok: %s:\n\t%sbefore: %s, after: %s\n"
-+ % (indent, str(type_obj), indent, str(align_before), str(align_after)))
-+ else:
-+ result += (" %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n"
-+ % (indent, str(field_name), str(type_obj),
-+ indent, str(align_before), str(align_after)))
- if self.verbosity >= 1:
-- result += self.callstack_to_str(indent, callstack)
-+ result += self.callstack_to_str(indent, callstack)
-
-- # output the fail-list
-- for (align_before, field_name, type_obj, callstack, reason) in self.fail_list:
-- stacksize = len(callstack)
-+ # output the fail-list
-+ for (align_before, field_name, type_obj, callstack, reason) in self.fail_list:
-+ stacksize = len(callstack)
- indent = ' ' * stacksize
-- if field_name is None or field_name == "":
-- result += (" %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n"
-- % (indent, str(align_before), indent, str(type_obj), indent, reason))
-- else:
-- result += (" %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n"
-- % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason))
-+ if field_name is None or field_name == "":
-+ result += (" %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n"
-+ % (indent, str(align_before), indent, str(type_obj), indent, reason))
-+ else:
-+ result += (" %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n"
-+ % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason))
-
- if self.verbosity >= 1:
-- result += self.callstack_to_str(indent, callstack)
-+ result += self.callstack_to_str(indent, callstack)
-
-
-- return result
-+ return result
-
-
- def callstack_to_str(self, indent, callstack):
-@@ -137,41 +137,41 @@ class AlignmentLog(object):
- for stack_elem in callstack:
- result += "\t %s%s\n" % (indent, str(stack_elem))
- result += "\t%s]\n" % indent
-- return result
-+ return result
-
-
- def ok_callstack_is_relevant(self, ok_callstack):
- # determine whether an ok callstack is relevant for logging
-- if self.verbosity >= 2:
-- return True
-+ if self.verbosity >= 2:
-+ return True
-
- # empty callstacks are always relevant
-- if len(ok_callstack) == 0:
-+ if len(ok_callstack) == 0:
- return True
-
-- # check whether the ok_callstack is a subset or equal to a fail_callstack
-+ # check whether the ok_callstack is a subset or equal to a fail_callstack
- for (align_before, field_name, type_obj, fail_callstack, reason) in self.fail_list:
- if len(ok_callstack) <= len(fail_callstack):
- zipped = zip(ok_callstack, fail_callstack[:len(ok_callstack)])
-- is_subset = all([i == j for i, j in zipped])
-- if is_subset:
-+ is_subset = all([i == j for i, j in zipped])
-+ if is_subset:
- return True
-
- return False
-
-
- def ok(self, align_before, field_name, type_obj, callstack, align_after):
-- self.ok_list.append((align_before, field_name, type_obj, callstack, align_after))
-+ self.ok_list.append((align_before, field_name, type_obj, callstack, align_after))
-
- def fail(self, align_before, field_name, type_obj, callstack, reason):
-- self.fail_list.append((align_before, field_name, type_obj, callstack, reason))
-+ self.fail_list.append((align_before, field_name, type_obj, callstack, reason))
-
- def append(self, other):
-- self.ok_list.extend(other.ok_list)
-- self.fail_list.extend(other.fail_list)
-+ self.ok_list.extend(other.ok_list)
-+ self.fail_list.extend(other.fail_list)
-
- def ok_count(self):
-- return len(self.ok_list)
-+ return len(self.ok_list)
-
-
-
---
-2.9.0
-
diff --git a/meta/recipes-graphics/xorg-proto/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch b/meta/recipes-graphics/xorg-proto/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch
deleted file mode 100644
index 542acb82b8f..00000000000
--- a/meta/recipes-graphics/xorg-proto/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From bea5e1c85bdc0950913790364e18228f20395a3d Mon Sep 17 00:00:00 2001
-From: Thomas Klausner <wiz@NetBSD.org>
-Date: Thu, 19 May 2016 17:30:05 +0200
-Subject: [PATCH 2/2] print() is a function and needs parentheses.
-
-Fixes build with python-3.x.
-
-Signed-off-by: Thomas Klausner <wiz@NetBSD.org>
-Signed-off-by: Uli Schlachter <psychon@znc.in>
-
-Upstream-Status: Backport
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- xcbgen/xtypes.py | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/xcbgen/xtypes.py b/xcbgen/xtypes.py
-index c3b5758..b83b119 100644
---- a/xcbgen/xtypes.py
-+++ b/xcbgen/xtypes.py
-@@ -501,7 +501,7 @@ class ComplexType(Type):
- int(required_start_align_element.get('align', "4"), 0),
- int(required_start_align_element.get('offset', "0"), 0))
- if verbose_align_log:
-- print "Explicit start-align for %s: %s\n" % (self, self.required_start_align)
-+ print ("Explicit start-align for %s: %s\n" % (self, self.required_start_align))
-
- def resolve(self, module):
- if self.resolved:
-@@ -592,7 +592,7 @@ class ComplexType(Type):
- if verbose_align_log:
- print ("calc_required_start_align: %s has start-align %s"
- % (str(self), str(self.required_start_align)))
-- print "Details:\n" + str(log)
-+ print ("Details:\n" + str(log))
- if self.required_start_align.offset != 0:
- print (("WARNING: %s\n\thas start-align with non-zero offset: %s"
- + "\n\tsuggest to add explicit definition with:"
-@@ -619,12 +619,12 @@ class ComplexType(Type):
- for offset in range(0,align):
- align_candidate = Alignment(align, offset)
- if verbose_align_log:
-- print "trying %s for %s" % (str(align_candidate), str(self))
-+ print ("trying %s for %s" % (str(align_candidate), str(self)))
- my_log = AlignmentLog()
- if self.is_possible_start_align(align_candidate, callstack, my_log):
- log.append(my_log)
- if verbose_align_log:
-- print "found start-align %s for %s" % (str(align_candidate), str(self))
-+ print ("found start-align %s for %s" % (str(align_candidate), str(self)))
- return align_candidate
- else:
- my_ok_count = my_log.ok_count()
-@@ -641,7 +641,7 @@ class ComplexType(Type):
- # none of the candidates applies
- # this type has illegal internal aligns for all possible start_aligns
- if verbose_align_log:
-- print "didn't find start-align for %s" % str(self)
-+ print ("didn't find start-align for %s" % str(self))
- log.append(best_log)
- return None
-
-@@ -900,7 +900,7 @@ class SwitchType(ComplexType):
- # aux function for unchecked_get_alignment_after
- def get_align_for_selected_case_field(self, case_field, start_align, callstack, log):
- if verbose_align_log:
-- print "get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field))
-+ print ("get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field)))
- total_align = start_align
- for field in self.bitcases:
- my_callstack = callstack[:]
---
-2.9.0
-
diff --git a/meta/recipes-graphics/xorg-proto/xcb-proto_1.12.bb b/meta/recipes-graphics/xorg-proto/xcb-proto_1.13.bb
index 25a8373e0b9..d5037868d54 100644
--- a/meta/recipes-graphics/xorg-proto/xcb-proto_1.12.bb
+++ b/meta/recipes-graphics/xorg-proto/xcb-proto_1.13.bb
@@ -11,12 +11,10 @@ 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 \
- file://0001-Make-whitespace-use-consistent.patch \
- file://0002-print-is-a-function-and-needs-parentheses.patch \
- "
-SRC_URI[md5sum] = "14e60919f859560f28426a685a555962"
-SRC_URI[sha256sum] = "5922aba4c664ab7899a29d92ea91a87aa4c1fc7eb5ee550325c3216c480a4906"
+SRC_URI = "http://xcb.freedesktop.org/dist/${BP}.tar.bz2"
+
+SRC_URI[md5sum] = "abe9aa4886138150bbc04ae4f29b90e3"
+SRC_URI[sha256sum] = "7b98721e669be80284e9bbfeab02d2d0d54cd11172b72271e47a2fe875e2bde1"
inherit autotools pkgconfig
diff --git a/meta/recipes-graphics/xorg-proto/xcmiscproto_1.2.2.bb b/meta/recipes-graphics/xorg-proto/xcmiscproto_1.2.2.bb
deleted file mode 100644
index 0751b94c9de..00000000000
--- a/meta/recipes-graphics/xorg-proto/xcmiscproto_1.2.2.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "XC-MISC: X XC-Miscellaneous extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the XC-MISC \
-extension, which is used to get details of XID allocations within the \
-server."
-
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=09d83047c15994e05db29b423ed6662e"
-
-PE = "1"
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI[md5sum] = "5f4847c78e41b801982c8a5e06365b24"
-SRC_URI[sha256sum] = "b13236869372256c36db79ae39d54214172677fb79e9cdc555dceec80bd9d2df"
diff --git a/meta/recipes-graphics/xorg-proto/xextproto_7.3.0.bb b/meta/recipes-graphics/xorg-proto/xextproto_7.3.0.bb
deleted file mode 100644
index dd0bd951b20..00000000000
--- a/meta/recipes-graphics/xorg-proto/xextproto_7.3.0.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "XExt: X Extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for several X \
-extensions. These protocol extensions include DOUBLE-BUFFER, DPMS, \
-Extended-Visual-Information, LBX, MIT_SHM, MIT_SUNDRY-NONSTANDARD, \
-Multi-Buffering, SECURITY, SHAPE, SYNC, TOG-CUP, XC-APPGROUP, XC-MISC, \
-XTEST. In addition a small set of utility functions are also \
-available."
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=86f273291759d0ba2a22585cd1c06c53"
-
-PE = "1"
-
-inherit gettext
-
-EXTRA_OECONF_append = " --enable-specs=no"
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI[md5sum] = "70c90f313b4b0851758ef77b95019584"
-SRC_URI[sha256sum] = "f3f4b23ac8db9c3a9e0d8edb591713f3d70ef9c3b175970dd8823dfc92aa5bb0"
diff --git a/meta/recipes-graphics/xorg-proto/xf86dgaproto_2.1.bb b/meta/recipes-graphics/xorg-proto/xf86dgaproto_2.1.bb
deleted file mode 100644
index 86f3ce328f6..00000000000
--- a/meta/recipes-graphics/xorg-proto/xf86dgaproto_2.1.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "XFree86-DGA: XFree86 Direct Graphics Access extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the XFree86 \
-Direct Graphics Access extension. This extension allows direct graphics \
-access to a framebuffer-like region, as well as relative mouse \
-reporting."
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e01e66e4b317088cf869bc98e6af4fb6"
-
-RCONFLICTS_${PN} = "xxf86dgaext"
-PR = "r2"
-PE = "1"
-
-SRC_URI[md5sum] = "a036dc2fcbf052ec10621fd48b68dbb1"
-SRC_URI[sha256sum] = "ac5ef65108e1f2146286e53080975683dae49fc94680042e04bd1e2010e99050"
diff --git a/meta/recipes-graphics/xorg-proto/xf86driproto_2.1.1.bb b/meta/recipes-graphics/xorg-proto/xf86driproto_2.1.1.bb
deleted file mode 100644
index b3f9210ccb9..00000000000
--- a/meta/recipes-graphics/xorg-proto/xf86driproto_2.1.1.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "XFree86-DRI: XFree86 Direct Rendering Infrastructure extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the XFree86 \
-Direct Rendering Infrastructure extension. The XFree86-DRI extension is \
-used to organize direct rendering support or 3D clients and help \
-arbitrate requests."
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=ef103b9d951e39ff7e23d386e2011fa3 \
- file://xf86driproto.h;endline=35;md5=42be3d8e6d429ab79172572bb0cff544"
-
-PE = "1"
-
-SRC_URI[md5sum] = "1d716d0dac3b664e5ee20c69d34bc10e"
-SRC_URI[sha256sum] = "9c4b8d7221cb6dc4309269ccc008a22753698ae9245a398a59df35f1404d661f"
diff --git a/meta/recipes-graphics/xorg-proto/xf86miscproto_0.9.3.bb b/meta/recipes-graphics/xorg-proto/xf86miscproto_0.9.3.bb
deleted file mode 100644
index d4663ea8806..00000000000
--- a/meta/recipes-graphics/xorg-proto/xf86miscproto_0.9.3.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "XFree86-Misc: XFree86 miscellaneous extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the XFree \
-miscellaneous extension. The XFree86-Misc extension provides a means to \
-access input device configuration settings specific to the XFree86/Xorg \
-DDX."
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e01e66e4b317088cf869bc98e6af4fb6"
-
-PR = "r1"
-PE = "1"
-
-SRC_URI[md5sum] = "ca63bbb31cf5b7f37b2237e923ff257a"
-SRC_URI[sha256sum] = "45b8ec6a4a8ca21066dce117e09dcc88539862e616e60fb391de05b36f63b095"
diff --git a/meta/recipes-graphics/xorg-proto/xf86vidmodeproto_2.3.1.bb b/meta/recipes-graphics/xorg-proto/xf86vidmodeproto_2.3.1.bb
deleted file mode 100644
index 0f31900a9e7..00000000000
--- a/meta/recipes-graphics/xorg-proto/xf86vidmodeproto_2.3.1.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "XFree86-VM: XFree86 video mode extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the XFree86 \
-video mode extension. This extension allows client applications to get \
-and set video mode timings."
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=499be2ff387a42f84628c35f311f1502"
-
-RCONFLICTS_${PN} = "xxf86vmext"
-
-PR = "r1"
-PE = "1"
-
-SRC_URI[md5sum] = "e793ecefeaecfeabd1aed6a01095174e"
-SRC_URI[sha256sum] = "45d9499aa7b73203fd6b3505b0259624afed5c16b941bd04fcf123e5de698770"
diff --git a/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb b/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb
deleted file mode 100644
index dde7e9db7aa..00000000000
--- a/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "Xinerama: Xinerama extension headers"
-
-DESCRIPTION = "This package provides the wire protocol for the Xinerama \
-extension. This extension is used for retrieving information about \
-physical output devices which may be combined into a single logical X \
-screen."
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=3e397a5326c83d5d0ebf5b3f87163ac6 \
- file://panoramiXproto.h;endline=24;md5=098e0bc089368a988092b3cbda617a57"
-
-PE = "1"
-
-SRC_URI[md5sum] = "9959fe0bfb22a0e7260433b8d199590a"
-SRC_URI[sha256sum] = "977574bb3dc192ecd9c55f59f991ec1dff340be3e31392c95deff423da52485b"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-proto/xorgproto/0001-Remove-libdir-specification.patch b/meta/recipes-graphics/xorg-proto/xorgproto/0001-Remove-libdir-specification.patch
new file mode 100644
index 00000000000..48296f7844e
--- /dev/null
+++ b/meta/recipes-graphics/xorg-proto/xorgproto/0001-Remove-libdir-specification.patch
@@ -0,0 +1,468 @@
+Upstream-Status: Submitted
+
+https://cgit.freedesktop.org/xorg/proto/xorgproto/commit/?id=91c1c8e1490c970379efb16784003426faec806e
+
+From 6feb974e0deb3355908c30e07293d82a3f6996ed Mon Sep 17 00:00:00 2001
+From: Jeremy Puhlman <jpuhlman@mvista.com>
+Date: Mon, 11 Jun 2018 16:42:43 +0000
+Subject: [PATCH] Remove libdir specification.
+
+Currently the pc files define libdir, however they are installed into
+/usr/share, which means they should be architecture agnostic. In a
+multilib system, xorg-proto built for each multilib abi, the value of
+libdir is going to be different. These should either be installed in
+<libdir>/pkgconfig or they shouldn't define libdir, espeically since
+they don't actually use the definition. This specifically causes an
+issue when trying to install both abis at the same time, since they are
+not binary identical, something like rpm will complain that they
+
+---
+ applewmproto.pc.in | 1 -
+ bigreqsproto.pc.in | 1 -
+ compositeproto.pc.in | 1 -
+ damageproto.pc.in | 1 -
+ dmxproto.pc.in | 1 -
+ dri2proto.pc.in | 1 -
+ dri3proto.pc.in | 1 -
+ evieproto.pc.in | 1 -
+ fixesproto.pc.in | 1 -
+ fontcacheproto.pc.in | 1 -
+ fontsproto.pc.in | 1 -
+ glproto.pc.in | 1 -
+ inputproto.pc.in | 1 -
+ kbproto.pc.in | 1 -
+ lg3dproto.pc.in | 1 -
+ presentproto.pc.in | 1 -
+ printproto.pc.in | 1 -
+ randrproto.pc.in | 1 -
+ recordproto.pc.in | 1 -
+ renderproto.pc.in | 1 -
+ resourceproto.pc.in | 1 -
+ scrnsaverproto.pc.in | 1 -
+ trapproto.pc.in | 1 -
+ videoproto.pc.in | 1 -
+ windowswmproto.pc.in | 1 -
+ xcalibrateproto.pc.in | 1 -
+ xcmiscproto.pc.in | 1 -
+ xextproto.pc.in | 1 -
+ xf86bigfontproto.pc.in | 1 -
+ xf86dgaproto.pc.in | 1 -
+ xf86driproto.pc.in | 1 -
+ xf86miscproto.pc.in | 1 -
+ xf86rushproto.pc.in | 1 -
+ xf86vidmodeproto.pc.in | 1 -
+ xineramaproto.pc.in | 1 -
+ xproto.pc.in | 1 -
+ xproxymngproto.pc.in | 1 -
+ 37 files changed, 37 deletions(-)
+
+diff --git a/applewmproto.pc.in b/applewmproto.pc.in
+index 17841ac..3227b21 100644
+--- a/applewmproto.pc.in
++++ b/applewmproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: AppleWMProto
+diff --git a/bigreqsproto.pc.in b/bigreqsproto.pc.in
+index 94577ed..e21bb59 100644
+--- a/bigreqsproto.pc.in
++++ b/bigreqsproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: BigReqsProto
+diff --git a/compositeproto.pc.in b/compositeproto.pc.in
+index da429c7..b0dada1 100644
+--- a/compositeproto.pc.in
++++ b/compositeproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: CompositeExt
+diff --git a/damageproto.pc.in b/damageproto.pc.in
+index 6fd9ef1..bfd5244 100644
+--- a/damageproto.pc.in
++++ b/damageproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: DamageProto
+diff --git a/dmxproto.pc.in b/dmxproto.pc.in
+index e82ee7d..d140e1c 100644
+--- a/dmxproto.pc.in
++++ b/dmxproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: DMXProto
+diff --git a/dri2proto.pc.in b/dri2proto.pc.in
+index cb5b171..fa9d24d 100644
+--- a/dri2proto.pc.in
++++ b/dri2proto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: DRI2Proto
+diff --git a/dri3proto.pc.in b/dri3proto.pc.in
+index e42d60e..20da358 100644
+--- a/dri3proto.pc.in
++++ b/dri3proto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: DRI3Proto
+diff --git a/evieproto.pc.in b/evieproto.pc.in
+index 64e0ec4..fd5442b 100644
+--- a/evieproto.pc.in
++++ b/evieproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: EvIEExt
+diff --git a/fixesproto.pc.in b/fixesproto.pc.in
+index f8258e2..c7fcb81 100644
+--- a/fixesproto.pc.in
++++ b/fixesproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: FixesProto
+diff --git a/fontcacheproto.pc.in b/fontcacheproto.pc.in
+index eb4238b..8ffffe9 100644
+--- a/fontcacheproto.pc.in
++++ b/fontcacheproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: FontcacheProto
+diff --git a/fontsproto.pc.in b/fontsproto.pc.in
+index 9d22354..ebb61a4 100644
+--- a/fontsproto.pc.in
++++ b/fontsproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: FontsProto
+diff --git a/glproto.pc.in b/glproto.pc.in
+index b951db5..e97bfc9 100644
+--- a/glproto.pc.in
++++ b/glproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: GLProto
+diff --git a/inputproto.pc.in b/inputproto.pc.in
+index 1eb6619..270b95c 100644
+--- a/inputproto.pc.in
++++ b/inputproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: InputProto
+diff --git a/kbproto.pc.in b/kbproto.pc.in
+index bdd39f1..32a172d 100644
+--- a/kbproto.pc.in
++++ b/kbproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: KBProto
+diff --git a/lg3dproto.pc.in b/lg3dproto.pc.in
+index 3930ad7..43fba29 100644
+--- a/lg3dproto.pc.in
++++ b/lg3dproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: Lg3dProto
+diff --git a/presentproto.pc.in b/presentproto.pc.in
+index 6ec4b7d..55b84dc 100644
+--- a/presentproto.pc.in
++++ b/presentproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: PresentProto
+diff --git a/printproto.pc.in b/printproto.pc.in
+index 8a2e2d6..a2da66d 100644
+--- a/printproto.pc.in
++++ b/printproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: PrintProto
+diff --git a/randrproto.pc.in b/randrproto.pc.in
+index 5a5edb2..6d60cbb 100644
+--- a/randrproto.pc.in
++++ b/randrproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: RandrProto
+diff --git a/recordproto.pc.in b/recordproto.pc.in
+index 0ff4c0b..a87aa82 100644
+--- a/recordproto.pc.in
++++ b/recordproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: RecordProto
+diff --git a/renderproto.pc.in b/renderproto.pc.in
+index e6028ac..34b15e0 100644
+--- a/renderproto.pc.in
++++ b/renderproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: RenderProto
+diff --git a/resourceproto.pc.in b/resourceproto.pc.in
+index a409db9..f927cbb 100644
+--- a/resourceproto.pc.in
++++ b/resourceproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: ResourceProto
+diff --git a/scrnsaverproto.pc.in b/scrnsaverproto.pc.in
+index 6556a2c..fd9d368 100644
+--- a/scrnsaverproto.pc.in
++++ b/scrnsaverproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: ScrnSaverProto
+diff --git a/trapproto.pc.in b/trapproto.pc.in
+index 8cb0aa8..8a220b9 100644
+--- a/trapproto.pc.in
++++ b/trapproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: TrapProto
+diff --git a/videoproto.pc.in b/videoproto.pc.in
+index 14b907a..5c22f7a 100644
+--- a/videoproto.pc.in
++++ b/videoproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: VideoProto
+diff --git a/windowswmproto.pc.in b/windowswmproto.pc.in
+index 0a2ec0b..ec56e82 100644
+--- a/windowswmproto.pc.in
++++ b/windowswmproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: WindowsWMProto
+diff --git a/xcalibrateproto.pc.in b/xcalibrateproto.pc.in
+index 40b6fd0..f1ea5de 100644
+--- a/xcalibrateproto.pc.in
++++ b/xcalibrateproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: XCalibrate
+diff --git a/xcmiscproto.pc.in b/xcmiscproto.pc.in
+index 0dfbf21..b72bbc6 100644
+--- a/xcmiscproto.pc.in
++++ b/xcmiscproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: XCMiscProto
+diff --git a/xextproto.pc.in b/xextproto.pc.in
+index f66eeae..9419c91 100644
+--- a/xextproto.pc.in
++++ b/xextproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: XExtProto
+diff --git a/xf86bigfontproto.pc.in b/xf86bigfontproto.pc.in
+index 18c5647..4a67be6 100644
+--- a/xf86bigfontproto.pc.in
++++ b/xf86bigfontproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: XF86BigFontProto
+diff --git a/xf86dgaproto.pc.in b/xf86dgaproto.pc.in
+index 5c5f8b1..e029cd4 100644
+--- a/xf86dgaproto.pc.in
++++ b/xf86dgaproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: XF86DGAProto
+diff --git a/xf86driproto.pc.in b/xf86driproto.pc.in
+index 93df292..c8faf14 100644
+--- a/xf86driproto.pc.in
++++ b/xf86driproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: XF86DRIProto
+diff --git a/xf86miscproto.pc.in b/xf86miscproto.pc.in
+index af73fa3..05d5d9e 100644
+--- a/xf86miscproto.pc.in
++++ b/xf86miscproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: XF86MiscProto
+diff --git a/xf86rushproto.pc.in b/xf86rushproto.pc.in
+index fc5f63b..1c7ff1b 100644
+--- a/xf86rushproto.pc.in
++++ b/xf86rushproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: XF86RushProto
+diff --git a/xf86vidmodeproto.pc.in b/xf86vidmodeproto.pc.in
+index fcb74f2..ef062b3 100644
+--- a/xf86vidmodeproto.pc.in
++++ b/xf86vidmodeproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: XF86VidModeProto
+diff --git a/xineramaproto.pc.in b/xineramaproto.pc.in
+index 1ffd37d..9172f1e 100644
+--- a/xineramaproto.pc.in
++++ b/xineramaproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: XineramaProto
+diff --git a/xproto.pc.in b/xproto.pc.in
+index 8ff2d3d..899316a 100644
+--- a/xproto.pc.in
++++ b/xproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+ includex11dir=@includedir@/X11
+
+diff --git a/xproxymngproto.pc.in b/xproxymngproto.pc.in
+index 5c6fad6..1a81e28 100644
+--- a/xproxymngproto.pc.in
++++ b/xproxymngproto.pc.in
+@@ -1,6 +1,5 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
+ includedir=@includedir@
+
+ Name: XProxyManagementProtocol
+--
+2.11.1
+
diff --git a/meta/recipes-graphics/xorg-proto/xorgproto_2018.4.bb b/meta/recipes-graphics/xorg-proto/xorgproto_2018.4.bb
new file mode 100644
index 00000000000..cec6e875593
--- /dev/null
+++ b/meta/recipes-graphics/xorg-proto/xorgproto_2018.4.bb
@@ -0,0 +1,16 @@
+require xorg-proto-common.inc
+
+SUMMARY = "XCalibrate: Touchscreen calibration headers"
+
+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 += "file://0001-Remove-libdir-specification.patch"
+
+SRC_URI[md5sum] = "81557ca47ee66a4e54590fcdadd28114"
+SRC_URI[sha256sum] = "fee885e0512899ea5280c593fdb2735beb1693ad170c22ebcc844470eec415a0"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch b/meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch
deleted file mode 100644
index 4f9ed99c9c9..00000000000
--- a/meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Upstream-Status: Pending
-
-Don't always define LONG64 for AMD64
-
-X32 defines __amd64__/amd64 with 32bit long. We should simply check
-__LP64__ before defining LONG64 without checking __amd64__/amd64.
-
-This fixes compilation with x32 toolchain.
-
-Received this patch from H.J. Lu <hjl.tools@gmail.com>
-Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/1
-
-Index: xproto-7.0.31/Xmd.h
-===================================================================
---- xproto-7.0.31.orig/Xmd.h
-+++ xproto-7.0.31/Xmd.h
-@@ -62,7 +62,6 @@ SOFTWARE.
- defined(__ia64__) || defined(ia64) || \
- defined(__sparc64__) || \
- defined(__s390x__) || \
-- defined(__amd64__) || defined(amd64) || \
- defined(__powerpc64__)
- # if !defined(__ILP32__) /* amd64-x32 is 32bit */
- # define LONG64 /* 32/64-bit architecture */
diff --git a/meta/recipes-graphics/xorg-proto/xproto_7.0.31.bb b/meta/recipes-graphics/xorg-proto/xproto_7.0.31.bb
deleted file mode 100644
index febcc679213..00000000000
--- a/meta/recipes-graphics/xorg-proto/xproto_7.0.31.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-require xorg-proto-common.inc
-
-SUMMARY = "Xlib: C Language X interface headers"
-
-DESCRIPTION = "This package provides the basic headers for the X Window \
-System."
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b9e051107d5628966739a0b2e9b32676"
-
-PE = "1"
-
-SRC_URI += "file://xproto_fix_for_x32.patch"
-
-EXTRA_OECONF_append = " --enable-specs=no"
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI[md5sum] = "16791f7ca8c51a20608af11702e51083"
-SRC_URI[sha256sum] = "c6f9747da0bd3a95f86b17fb8dd5e717c8f3ab7f0ece3ba1b247899ec1ef7747"
diff --git a/meta/recipes-graphics/xorg-util/gccmakedep_1.0.3.bb b/meta/recipes-graphics/xorg-util/gccmakedep_1.0.3.bb
deleted file mode 100644
index be3a667449d..00000000000
--- a/meta/recipes-graphics/xorg-util/gccmakedep_1.0.3.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Program to create dependencies in makefiles"
-
-DESCRIPTION = "The gccmakedep program calls 'gcc -M' to output makefile \
-rules describing the dependencies of each sourcefile, so that make knows \
-which object files must be recompiled when a dependency has changed."
-
-require xorg-util-common.inc
-LIC_FILES_CHKSUM = "file://Makefile.am;endline=20;md5=23c277396d690413245ebb89b18c5d4d"
-DESCRIPTION = "create dependencies in makefiles using 'gcc -M'"
-DEPENDS = "util-macros"
-RDEPENDS_${PN} = "gcc"
-
-PR = "r3"
-PE = "1"
-
-SRC_URI[md5sum] = "127ddb6131eb4a56fdf6644a63ade788"
-SRC_URI[sha256sum] = "f9e2e7a590e27f84b6708ab7a81e546399b949bf652fb9b95193e0e543e6a548"
-
-do_install_append() {
- sed -i "s,--sysroot=${STAGING_DIR_TARGET},," ${D}${bindir}/gccmakedep
-}
diff --git a/meta/recipes-graphics/xorg-util/makedepend_1.0.5.bb b/meta/recipes-graphics/xorg-util/makedepend_1.0.5.bb
index 84a967a81e3..727ab549655 100644
--- a/meta/recipes-graphics/xorg-util/makedepend_1.0.5.bb
+++ b/meta/recipes-graphics/xorg-util/makedepend_1.0.5.bb
@@ -10,7 +10,7 @@ directives would be used in a compilation. Any #include, directives \
can reference files having other #include directives, and parsing will \
occur in these files as well."
-DEPENDS = "xproto util-macros"
+DEPENDS = "xorgproto util-macros"
PE = "1"
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-graphics/xorg-util/util-macros_1.19.1.bb b/meta/recipes-graphics/xorg-util/util-macros_1.19.2.bb
index b39d7875683..268059935c8 100644
--- a/meta/recipes-graphics/xorg-util/util-macros_1.19.1.bb
+++ b/meta/recipes-graphics/xorg-util/util-macros_1.19.2.bb
@@ -9,8 +9,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=1970511fddd439b07a6ba789d28ff662"
PE = "1"
-SRC_URI[md5sum] = "3f8a8e6100556f7f28e469809805dee8"
-SRC_URI[sha256sum] = "472ad0e41d1e0abf5ecafd29460bf1b8d47e53d4b7d3abf1f66d02dc576547b8"
+SRC_URI[md5sum] = "5059b328fac086b733ffac6607164c41"
+SRC_URI[sha256sum] = "9225c45c3de60faf971979a55a5536f3562baa4b6f02246c23e98ac0c09a75b7"
# ${PN} is empty so we need to tweak -dev and -dbg package dependencies
RDEPENDS_${PN}-dev = ""
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
index f4cd139e8d7..03b94dc3af6 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf
@@ -26,6 +26,7 @@ Section "Screen"
Identifier "Default Screen"
Device "Graphics Controller"
Monitor "Generic Monitor"
+ DefaultDepth 16
SubSection "Display"
Modes "640x480"
EndSubSection
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc b/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
index cf2286c6532..489a4285002 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
@@ -17,7 +17,6 @@ INC_PR = "r8"
XORG_PN = "xorg-server"
SRC_URI = "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${PV}.tar.bz2"
-SRC_URI += "file://macro_tweak.patch"
S = "${WORKDIR}/${XORG_PN}-${PV}"
@@ -26,7 +25,7 @@ inherit autotools pkgconfig
inherit distro_features_check
REQUIRED_DISTRO_FEATURES = "x11"
-PROTO_DEPS = "randrproto renderproto fixesproto damageproto xextproto xproto xf86dgaproto xf86miscproto xf86vidmodeproto compositeproto recordproto resourceproto videoproto scrnsaverproto xineramaproto fontsproto kbproto inputproto bigreqsproto xcmiscproto presentproto"
+PROTO_DEPS = "xorgproto"
LIB_DEPS = "pixman libxfont2 xtrans libxau libxext libxdmcp libdrm libxkbfile libpciaccess"
DEPENDS = "${PROTO_DEPS} ${LIB_DEPS} font-util"
@@ -123,22 +122,22 @@ OPENGL_PKGCONFIGS = "dri glx glamor dri3 xshmfence"
PACKAGECONFIG ??= "dri2 udev ${XORG_CRYPTO} \
${@bb.utils.contains('DISTRO_FEATURES', 'opengl', '${OPENGL_PKGCONFIGS}', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'opengl wayland', 'xwayland', '', d)} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd systemd-logind', '', d)} \
"
PACKAGECONFIG[udev] = "--enable-config-udev,--disable-config-udev,udev"
-PACKAGECONFIG[dri] = "--enable-dri,--disable-dri,glproto virtual/mesa xf86driproto"
-PACKAGECONFIG[dri2] = "--enable-dri2,--disable-dri2,dri2proto"
+PACKAGECONFIG[dri] = "--enable-dri,--disable-dri,xorgproto virtual/mesa"
+PACKAGECONFIG[dri2] = "--enable-dri2,--disable-dri2,xorgproto"
# DRI3 requires xshmfence to also be enabled
-PACKAGECONFIG[dri3] = "--enable-dri3,--disable-dri3,dri3proto"
-PACKAGECONFIG[glx] = "--enable-glx,--disable-glx,glproto virtual/libgl virtual/libx11"
+PACKAGECONFIG[dri3] = "--enable-dri3,--disable-dri3,xorgproto"
+PACKAGECONFIG[glx] = "--enable-glx,--disable-glx,xorgproto 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,xineramaproto"
+PACKAGECONFIG[xinerama] = "--enable-xinerama,--disable-xinerama,xorgproto"
PACKAGECONFIG[xwayland] = "--enable-xwayland,--disable-xwayland,wayland wayland-native wayland-protocols libepoxy"
# Xorg requires a SHA1 implementation, pick one
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch b/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch
deleted file mode 100644
index 16ec3edb3be..00000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-Discover monotonic clock using compile-time check
-
-monotonic clock check does not work when cross-compiling.
-
-Upstream-Status: Denied [Does not work on OpenBSD]
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-
-
-
-Original patch follows:
-
-When xorg-xserver is being cross-compiled, there is currently no way
-for us to detect whether the monotonic clock is available on the
-target system, because we aren't able to run a test program on the host
-system. Currently, in this situation, we default to not use the
-monotonic clock. One problem with this situation is that the user will
-be treated as idle when the date is updated.
-
-To fix this situation, we now use a compile-time check to detect whether the
-monotonic clock is available. This check can run just fine when we are
-cross-compiling.
-
-Signed-off-by: David James <davidjames at google.com>
----
- configure.ac | 17 +++++++----------
- 1 file changed, 7 insertions(+), 10 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index f7ab48c..26e85cd 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1048,19 +1048,16 @@ if ! test "x$have_clock_gettime" = xno; then
- CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
- fi
-
-- AC_RUN_IFELSE([AC_LANG_SOURCE([
-+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
- #include <time.h>
--
--int main(int argc, char *argv[[]]) {
-- struct timespec tp;
--
-- if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
-+#include <unistd.h>
-+int main() {
-+#if !(defined(_POSIX_MONOTONIC_CLOCK) && _POSIX_MONOTONIC_CLOCK >= 0 && defined(CLOCK_MONOTONIC))
-+ #error No monotonic clock
-+#endif
- return 0;
-- else
-- return 1;
- }
-- ])], [MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no],
-- [MONOTONIC_CLOCK="cross compiling"])
-+]])],[MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no])
-
- LIBS="$LIBS_SAVE"
- CPPFLAGS="$CPPFLAGS_SAVE"
---
-2.1.4
-
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-Remove-check-for-useSIGIO-option.patch b/meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-Remove-check-for-useSIGIO-option.patch
deleted file mode 100644
index beed6cb4a43..00000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-Remove-check-for-useSIGIO-option.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From cf407b16cd65ad6e26a9c8e5984e163409a5c0f7 Mon Sep 17 00:00:00 2001
-From: Prabhu Sundararaj <prabhu.sundararaj@nxp.com>
-Date: Mon, 30 Jan 2017 16:32:06 -0600
-Subject: [PATCH] Remove check for useSIGIO option
-
-Commit 6a5a4e60373c1386b311b2a8bb666c32d68a9d99 removes the configure of useSIGIO
-option.
-
-As the xfree86 SIGIO support is reworked to use internal versions of OsBlockSIGIO
-and OsReleaseSIGIO.
-
-No longer the check for useSIGIO is needed
-
-Upstream-Status: Pending
-
-Signed-off-by: Prabhu Sundararaj <prabhu.sundararaj@nxp.com>
----
- hw/xfree86/os-support/shared/sigio.c | 6 ------
- 1 file changed, 6 deletions(-)
-
-diff --git a/hw/xfree86/os-support/shared/sigio.c b/hw/xfree86/os-support/shared/sigio.c
-index 884a71c..be76498 100644
---- a/hw/xfree86/os-support/shared/sigio.c
-+++ b/hw/xfree86/os-support/shared/sigio.c
-@@ -185,9 +185,6 @@ xf86InstallSIGIOHandler(int fd, void (*f) (int, void *), void *closure)
- int i;
- int installed = FALSE;
-
-- if (!xf86Info.useSIGIO)
-- return 0;
--
- for (i = 0; i < MAX_FUNCS; i++) {
- if (!xf86SigIOFuncs[i].f) {
- if (xf86IsPipe(fd))
-@@ -256,9 +253,6 @@ xf86RemoveSIGIOHandler(int fd)
- int max;
- int ret;
-
-- if (!xf86Info.useSIGIO)
-- return 0;
--
- max = 0;
- ret = 0;
- for (i = 0; i < MAX_FUNCS; i++) {
---
-2.7.4
-
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-modesetting-Fix-16-bit-depth-bpp-mode.patch b/meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-modesetting-Fix-16-bit-depth-bpp-mode.patch
deleted file mode 100644
index 5243761f1e6..00000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-modesetting-Fix-16-bit-depth-bpp-mode.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 5028ef46ff4ab0930224b71024a7349b05610d42 Mon Sep 17 00:00:00 2001
-From: Stefan Agner <stefan@agner.ch>
-Date: Thu, 22 Dec 2016 15:41:06 +0100
-Subject: [PATCH] modesetting: Fix 16 bit depth/bpp mode
-
-When setting DefaultDepth to 16 in the Screen section, the current
-code requests a 32 bpp framebuffer, however the X-Server seems to
-assumes 16 bpp.
-
-Fixes commit 21217d02168d ("modesetting: Implement 32->24 bpp
-conversion in shadow update")
-
-Signed-off-by: Stefan Agner <stefan@agner.ch>
-
-Upstream-Status: Submitted [1]
-
-[1] https://lists.x.org/archives/xorg-devel/2016-December/052113.html
----
- hw/xfree86/drivers/modesetting/driver.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c
-index d7030e5..647ad83 100644
---- a/hw/xfree86/drivers/modesetting/driver.c
-+++ b/hw/xfree86/drivers/modesetting/driver.c
-@@ -930,7 +930,7 @@ PreInit(ScrnInfoPtr pScrn, int flags)
- "Using 24bpp hw front buffer with 32bpp shadow\n");
- defaultbpp = 32;
- } else {
-- ms->drmmode.kbpp = defaultbpp;
-+ ms->drmmode.kbpp = 0;
- }
- bppflags = PreferConvert24to32 | SupportConvert24to32 | Support32bppFb;
-
-@@ -950,6 +950,8 @@ PreInit(ScrnInfoPtr pScrn, int flags)
- return FALSE;
- }
- xf86PrintDepthBpp(pScrn);
-+ if (!ms->drmmode.kbpp)
-+ ms->drmmode.kbpp = pScrn->bitsPerPixel;
-
- /* Process the options */
- xf86CollectOptions(pScrn, NULL);
---
-2.7.4
-
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg/macro_tweak.patch b/meta/recipes-graphics/xorg-xserver/xserver-xorg/macro_tweak.patch
deleted file mode 100644
index c36e4e73012..00000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg/macro_tweak.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-This is the revised version of files/macro_tweak.patch for
-xorg-server 1.8.99.904 and newer.
-
-Upstream-Status: Pending
-
-Signed-off-by: Yu Ke <ke.yu@intel.com>
-
-Index: xorg-server-1.19.6/xorg-server.m4
-===================================================================
---- xorg-server-1.19.6.orig/xorg-server.m4
-+++ xorg-server-1.19.6/xorg-server.m4
-@@ -28,10 +28,12 @@ dnl
- # Checks for the MACRO define in xorg-server.h (from the sdk). If it
- # is defined, then add the given PROTO to $REQUIRED_MODULES.
-
-+m4_pattern_allow(PKG_CONFIG_SYSROOT_DIR)
-+
- 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 -I$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=sdkdir xorg-server`"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #include "xorg-server.h"
- #if !defined $1
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg/pkgconfig.patch b/meta/recipes-graphics/xorg-xserver/xserver-xorg/pkgconfig.patch
new file mode 100644
index 00000000000..2ef9fa9fe44
--- /dev/null
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg/pkgconfig.patch
@@ -0,0 +1,34 @@
+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_1.19.6.bb b/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.1.bb
index c680cf9e89b..cfdaf731758 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.19.6.bb
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.1.bb
@@ -1,13 +1,11 @@
require xserver-xorg.inc
SRC_URI += "file://musl-arm-inb-outb.patch \
- file://0001-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch \
- file://0003-modesetting-Fix-16-bit-depth-bpp-mode.patch \
- file://0003-Remove-check-for-useSIGIO-option.patch \
file://0001-xf86pciBus.c-use-Intel-ddx-only-for-pre-gen4-hardwar.patch \
+ file://pkgconfig.patch \
"
-SRC_URI[md5sum] = "3e47777ff034a331aed2322b078694a8"
-SRC_URI[sha256sum] = "a732502f1db000cf36a376cd0c010ffdbf32ecdd7f1fa08ba7f5bdf9601cc197"
+SRC_URI[md5sum] = "e525846d1d0af5732ba835f2e2ec066d"
+SRC_URI[sha256sum] = "59c99fe86fe75b8164c6567bfc6e982aecc2e4a51e6fbac1b842d5d00549e918"
# These extensions are now integrated into the server, so declare the migration
# path for in-place upgrades.
diff --git a/meta/recipes-kernel/blktrace/blktrace/CVE-2018-10689.patch b/meta/recipes-kernel/blktrace/blktrace/CVE-2018-10689.patch
new file mode 100644
index 00000000000..7b58568d591
--- /dev/null
+++ b/meta/recipes-kernel/blktrace/blktrace/CVE-2018-10689.patch
@@ -0,0 +1,150 @@
+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_git.bb b/meta/recipes-kernel/blktrace/blktrace_git.bb
index 663de2ed53a..2605ff91677 100644
--- a/meta/recipes-kernel/blktrace/blktrace_git.bb
+++ b/meta/recipes-kernel/blktrace/blktrace_git.bb
@@ -11,6 +11,7 @@ PV = "1.2.0+git${SRCPV}"
SRC_URI = "git://git.kernel.dk/blktrace.git \
file://ldflags.patch \
+ file://CVE-2018-10689.patch \
"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-kernel/cryptodev/cryptodev-module_1.9.bb b/meta/recipes-kernel/cryptodev/cryptodev-module_1.9.bb
index ed6d0ecae97..ed4327d40d2 100644
--- a/meta/recipes-kernel/cryptodev/cryptodev-module_1.9.bb
+++ b/meta/recipes-kernel/cryptodev/cryptodev-module_1.9.bb
@@ -10,6 +10,10 @@ DEPENDS += "cryptodev-linux"
SRC_URI += " \
file://0001-Disable-installing-header-file-provided-by-another-p.patch \
file://0001-ioctl.c-Fix-build-with-linux-4.13.patch \
+file://0001-ioctl.c-Fix-build-with-linux-4.17.patch \
+file://0001-refactoring-split-big-function-to-simplify-maintaina.patch \
+file://0002-refactoring-relocate-code-to-simplify-later-patches.patch \
+file://0003-convert-to-new-AEAD-interface-in-kernels-v4.2.patch \
"
EXTRA_OEMAKE='KERNEL_DIR="${STAGING_KERNEL_DIR}" PREFIX="${D}"'
diff --git a/meta/recipes-kernel/cryptodev/cryptodev-tests_1.9.bb b/meta/recipes-kernel/cryptodev/cryptodev-tests_1.9.bb
index 9afb3de217e..617db6cdd31 100644
--- a/meta/recipes-kernel/cryptodev/cryptodev-tests_1.9.bb
+++ b/meta/recipes-kernel/cryptodev/cryptodev-tests_1.9.bb
@@ -2,10 +2,11 @@ require cryptodev.inc
SUMMARY = "A test suite for /dev/crypto device driver"
-DEPENDS += "openssl10"
+DEPENDS += "openssl"
SRC_URI += " \
file://0001-Add-the-compile-and-install-rules-for-cryptodev-test.patch \
+file://0001-Port-tests-to-openssl-1.1.patch \
"
EXTRA_OEMAKE='KERNEL_DIR="${STAGING_EXECPREFIXDIR}" PREFIX="${D}"'
diff --git a/meta/recipes-kernel/cryptodev/files/0001-Port-tests-to-openssl-1.1.patch b/meta/recipes-kernel/cryptodev/files/0001-Port-tests-to-openssl-1.1.patch
new file mode 100644
index 00000000000..c9691265f6c
--- /dev/null
+++ b/meta/recipes-kernel/cryptodev/files/0001-Port-tests-to-openssl-1.1.patch
@@ -0,0 +1,103 @@
+From 2fe4bdeb8cdd0b0f46d9caed807812855d51ea56 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 28 Mar 2018 20:11:05 +0300
+Subject: [PATCH] Port tests to openssl 1.1
+
+Upstream-Status: Accepted [https://github.com/cryptodev-linux/cryptodev-linux/pull/36]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
+---
+ tests/openssl_wrapper.c | 33 +++++++++++++++++++++++++++++++++
+ 1 file changed, 33 insertions(+)
+
+diff --git a/tests/openssl_wrapper.c b/tests/openssl_wrapper.c
+index 038c58f..dea2496 100644
+--- a/tests/openssl_wrapper.c
++++ b/tests/openssl_wrapper.c
+@@ -4,6 +4,7 @@
+ #include <openssl/aes.h>
+ #include <openssl/evp.h>
+ #include <openssl/hmac.h>
++#include <openssl/opensslv.h>
+
+ //#define DEBUG
+
+@@ -23,10 +24,17 @@ enum ctx_type {
+ ctx_type_md,
+ };
+
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++union openssl_ctx {
++ HMAC_CTX *hmac;
++ EVP_MD_CTX *md;
++};
++#else
+ union openssl_ctx {
+ HMAC_CTX hmac;
+ EVP_MD_CTX md;
+ };
++#endif
+
+ struct ctx_mapping {
+ __u32 ses;
+@@ -63,6 +71,16 @@ static void remove_mapping(__u32 ses)
+ switch (mapping->type) {
+ case ctx_type_none:
+ break;
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++ case ctx_type_hmac:
++ dbgp("%s: calling HMAC_CTX_free\n", __func__);
++ HMAC_CTX_free(mapping->ctx.hmac);
++ break;
++ case ctx_type_md:
++ dbgp("%s: calling EVP_MD_CTX_free\n", __func__);
++ EVP_MD_CTX_free(mapping->ctx.md);
++ break;
++#else
+ case ctx_type_hmac:
+ dbgp("%s: calling HMAC_CTX_cleanup\n", __func__);
+ HMAC_CTX_cleanup(&mapping->ctx.hmac);
+@@ -71,6 +89,7 @@ static void remove_mapping(__u32 ses)
+ dbgp("%s: calling EVP_MD_CTX_cleanup\n", __func__);
+ EVP_MD_CTX_cleanup(&mapping->ctx.md);
+ break;
++#endif
+ }
+ memset(mapping, 0, sizeof(*mapping));
+ }
+@@ -127,10 +146,17 @@ static int openssl_hmac(struct session_op *sess, struct crypt_op *cop)
+
+ mapping->ses = sess->ses;
+ mapping->type = ctx_type_hmac;
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++ ctx = mapping->ctx.hmac;
++
++ dbgp("calling HMAC_CTX_new");
++ ctx = HMAC_CTX_new();
++#else
+ ctx = &mapping->ctx.hmac;
+
+ dbgp("calling HMAC_CTX_init");
+ HMAC_CTX_init(ctx);
++#endif
+ dbgp("calling HMAC_Init_ex");
+ if (!HMAC_Init_ex(ctx, sess->mackey, sess->mackeylen,
+ sess_to_evp_md(sess), NULL)) {
+@@ -172,10 +198,17 @@ static int openssl_md(struct session_op *sess, struct crypt_op *cop)
+
+ mapping->ses = sess->ses;
+ mapping->type = ctx_type_md;
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++ ctx = mapping->ctx.md;
++
++ dbgp("calling EVP_MD_CTX_new");
++ ctx = EVP_MD_CTX_new();
++#else
+ ctx = &mapping->ctx.md;
+
+ dbgp("calling EVP_MD_CTX_init");
+ EVP_MD_CTX_init(ctx);
++#endif
+ dbgp("calling EVP_DigestInit");
+ EVP_DigestInit(ctx, sess_to_evp_md(sess));
+ }
diff --git a/meta/recipes-kernel/cryptodev/files/0001-ioctl.c-Fix-build-with-linux-4.17.patch b/meta/recipes-kernel/cryptodev/files/0001-ioctl.c-Fix-build-with-linux-4.17.patch
new file mode 100644
index 00000000000..5881d1c4eec
--- /dev/null
+++ b/meta/recipes-kernel/cryptodev/files/0001-ioctl.c-Fix-build-with-linux-4.17.patch
@@ -0,0 +1,43 @@
+From f60aa08c63fc02780554a0a12180a478ca27d49f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Horia=20Geant=C4=83?= <horia.geanta@nxp.com>
+Date: Wed, 23 May 2018 18:43:39 +0300
+Subject: [PATCH] ioctl.c: Fix build with linux 4.17
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Since kernel 4.17-rc1, sys_* syscalls can no longer be called directly:
+819671ff849b ("syscalls: define and explain goal to not call syscalls in the kernel")
+
+Since cryptodev uses sys_close() - and this has been removed in commit:
+2ca2a09d6215 ("fs: add ksys_close() wrapper; remove in-kernel calls to sys_close()")
+cryptodev has to be updated to use the ksys_close() wrapper.
+
+Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
+
+Upstream-Status: Backport
+
+Signed-off-by: He Zhe <zhe.he@windriver.com>
+---
+ ioctl.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/ioctl.c b/ioctl.c
+index d831b0c..2571034 100644
+--- a/ioctl.c
++++ b/ioctl.c
+@@ -828,7 +828,11 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_)
+ fd = clonefd(filp);
+ ret = put_user(fd, p);
+ if (unlikely(ret)) {
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 17, 0))
+ sys_close(fd);
++#else
++ ksys_close(fd);
++#endif
+ return ret;
+ }
+ return ret;
+--
+2.7.4
+
diff --git a/meta/recipes-kernel/cryptodev/files/0001-refactoring-split-big-function-to-simplify-maintaina.patch b/meta/recipes-kernel/cryptodev/files/0001-refactoring-split-big-function-to-simplify-maintaina.patch
new file mode 100644
index 00000000000..f557b5dff60
--- /dev/null
+++ b/meta/recipes-kernel/cryptodev/files/0001-refactoring-split-big-function-to-simplify-maintaina.patch
@@ -0,0 +1,250 @@
+From 20dcf071bc3076ee7db9d603cfbe6a06e86c7d5f Mon Sep 17 00:00:00 2001
+From: Cristian Stoica <cristian.stoica@nxp.com>
+Date: Thu, 4 May 2017 15:06:20 +0300
+Subject: [PATCH 1/3] refactoring: split big function to simplify maintainance
+
+The setup of auth_buf in tls and aead is now duplicated but this
+is temporary and allows necessary corrections for the aead case
+with v4.2+ kernels.
+
+Signed-off-by: Cristian Stoica <cristian.stoica@nxp.com>
+
+Upstream-Status: Backport
+
+Commit ID: 20dcf071bc3076ee7db9d603c
+
+Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
+---
+ authenc.c | 197 ++++++++++++++++++++++++++++++++++++++++----------------------
+ 1 file changed, 126 insertions(+), 71 deletions(-)
+
+diff --git a/authenc.c b/authenc.c
+index 1bd7377..28eb0f9 100644
+--- a/authenc.c
++++ b/authenc.c
+@@ -609,96 +609,151 @@ auth_n_crypt(struct csession *ses_ptr, struct kernel_crypt_auth_op *kcaop,
+ return 0;
+ }
+
+-/* This is the main crypto function - zero-copy edition */
+-static int
+-__crypto_auth_run_zc(struct csession *ses_ptr, struct kernel_crypt_auth_op *kcaop)
++static int crypto_auth_zc_srtp(struct csession *ses_ptr, struct kernel_crypt_auth_op *kcaop)
+ {
+- struct scatterlist *dst_sg, *auth_sg, *src_sg;
++ struct scatterlist *dst_sg, *auth_sg;
+ struct crypt_auth_op *caop = &kcaop->caop;
+- int ret = 0;
++ int ret;
+
+- if (caop->flags & COP_FLAG_AEAD_SRTP_TYPE) {
+- if (unlikely(ses_ptr->cdata.init != 0 &&
+- (ses_ptr->cdata.stream == 0 ||
+- ses_ptr->cdata.aead != 0))) {
+- derr(0, "Only stream modes are allowed in SRTP mode (but not AEAD)");
+- return -EINVAL;
+- }
++ if (unlikely(ses_ptr->cdata.init != 0 &&
++ (ses_ptr->cdata.stream == 0 || ses_ptr->cdata.aead != 0))) {
++ derr(0, "Only stream modes are allowed in SRTP mode (but not AEAD)");
++ return -EINVAL;
++ }
+
+- ret = get_userbuf_srtp(ses_ptr, kcaop, &auth_sg, &dst_sg);
+- if (unlikely(ret)) {
+- derr(1, "get_userbuf_srtp(): Error getting user pages.");
+- return ret;
+- }
++ ret = get_userbuf_srtp(ses_ptr, kcaop, &auth_sg, &dst_sg);
++ if (unlikely(ret)) {
++ derr(1, "get_userbuf_srtp(): Error getting user pages.");
++ return ret;
++ }
+
+- ret = srtp_auth_n_crypt(ses_ptr, kcaop, auth_sg, caop->auth_len,
+- dst_sg, caop->len);
++ ret = srtp_auth_n_crypt(ses_ptr, kcaop, auth_sg, caop->auth_len,
++ dst_sg, caop->len);
+
+- release_user_pages(ses_ptr);
+- } else { /* TLS and normal cases. Here auth data are usually small
+- * so we just copy them to a free page, instead of trying
+- * to map them.
+- */
+- unsigned char *auth_buf = NULL;
+- struct scatterlist tmp;
++ release_user_pages(ses_ptr);
+
+- if (unlikely(caop->auth_len > PAGE_SIZE)) {
+- derr(1, "auth data len is excessive.");
+- return -EINVAL;
+- }
++ return ret;
++}
+
+- auth_buf = (char *)__get_free_page(GFP_KERNEL);
+- if (unlikely(!auth_buf)) {
+- derr(1, "unable to get a free page.");
+- return -ENOMEM;
+- }
++static int crypto_auth_zc_tls(struct csession *ses_ptr, struct kernel_crypt_auth_op *kcaop)
++{
++ struct crypt_auth_op *caop = &kcaop->caop;
++ struct scatterlist *dst_sg, *auth_sg;
++ unsigned char *auth_buf = NULL;
++ struct scatterlist tmp;
++ int ret;
+
+- if (caop->auth_src && caop->auth_len > 0) {
+- if (unlikely(copy_from_user(auth_buf, caop->auth_src, caop->auth_len))) {
+- derr(1, "unable to copy auth data from userspace.");
+- ret = -EFAULT;
+- goto free_auth_buf;
+- }
++ if (unlikely(ses_ptr->cdata.aead != 0)) {
++ return -EINVAL;
++ }
++
++ if (unlikely(caop->auth_len > PAGE_SIZE)) {
++ derr(1, "auth data len is excessive.");
++ return -EINVAL;
++ }
++
++ auth_buf = (char *)__get_free_page(GFP_KERNEL);
++ if (unlikely(!auth_buf)) {
++ derr(1, "unable to get a free page.");
++ return -ENOMEM;
++ }
+
+- sg_init_one(&tmp, auth_buf, caop->auth_len);
+- auth_sg = &tmp;
+- } else {
+- auth_sg = NULL;
++ if (caop->auth_src && caop->auth_len > 0) {
++ if (unlikely(copy_from_user(auth_buf, caop->auth_src, caop->auth_len))) {
++ derr(1, "unable to copy auth data from userspace.");
++ ret = -EFAULT;
++ goto free_auth_buf;
+ }
+
+- if (caop->flags & COP_FLAG_AEAD_TLS_TYPE && ses_ptr->cdata.aead == 0) {
+- ret = get_userbuf_tls(ses_ptr, kcaop, &dst_sg);
+- if (unlikely(ret)) {
+- derr(1, "get_userbuf_tls(): Error getting user pages.");
+- goto free_auth_buf;
+- }
++ sg_init_one(&tmp, auth_buf, caop->auth_len);
++ auth_sg = &tmp;
++ } else {
++ auth_sg = NULL;
++ }
+
+- ret = tls_auth_n_crypt(ses_ptr, kcaop, auth_sg, caop->auth_len,
+- dst_sg, caop->len);
+- } else {
+- if (unlikely(ses_ptr->cdata.init == 0 ||
+- (ses_ptr->cdata.stream == 0 &&
+- ses_ptr->cdata.aead == 0))) {
+- derr(0, "Only stream and AEAD ciphers are allowed for authenc");
+- ret = -EINVAL;
+- goto free_auth_buf;
+- }
++ ret = get_userbuf_tls(ses_ptr, kcaop, &dst_sg);
++ if (unlikely(ret)) {
++ derr(1, "get_userbuf_tls(): Error getting user pages.");
++ goto free_auth_buf;
++ }
+
+- ret = get_userbuf(ses_ptr, caop->src, caop->len, caop->dst, kcaop->dst_len,
+- kcaop->task, kcaop->mm, &src_sg, &dst_sg);
+- if (unlikely(ret)) {
+- derr(1, "get_userbuf(): Error getting user pages.");
+- goto free_auth_buf;
+- }
++ ret = tls_auth_n_crypt(ses_ptr, kcaop, auth_sg, caop->auth_len,
++ dst_sg, caop->len);
++ release_user_pages(ses_ptr);
++
++free_auth_buf:
++ free_page((unsigned long)auth_buf);
++ return ret;
++}
++
++static int crypto_auth_zc_aead(struct csession *ses_ptr, struct kernel_crypt_auth_op *kcaop)
++{
++ struct scatterlist *dst_sg, *auth_sg, *src_sg;
++ struct crypt_auth_op *caop = &kcaop->caop;
++ unsigned char *auth_buf = NULL;
++ struct scatterlist tmp;
++ int ret;
+
+- ret = auth_n_crypt(ses_ptr, kcaop, auth_sg, caop->auth_len,
+- src_sg, dst_sg, caop->len);
++ if (unlikely(ses_ptr->cdata.init == 0 ||
++ (ses_ptr->cdata.stream == 0 && ses_ptr->cdata.aead == 0))) {
++ derr(0, "Only stream and AEAD ciphers are allowed for authenc");
++ return -EINVAL;
++ }
++
++ if (unlikely(caop->auth_len > PAGE_SIZE)) {
++ derr(1, "auth data len is excessive.");
++ return -EINVAL;
++ }
++
++ auth_buf = (char *)__get_free_page(GFP_KERNEL);
++ if (unlikely(!auth_buf)) {
++ derr(1, "unable to get a free page.");
++ return -ENOMEM;
++ }
++
++ if (caop->auth_src && caop->auth_len > 0) {
++ if (unlikely(copy_from_user(auth_buf, caop->auth_src, caop->auth_len))) {
++ derr(1, "unable to copy auth data from userspace.");
++ ret = -EFAULT;
++ goto free_auth_buf;
+ }
+
+- release_user_pages(ses_ptr);
++ sg_init_one(&tmp, auth_buf, caop->auth_len);
++ auth_sg = &tmp;
++ } else {
++ auth_sg = NULL;
++ }
++
++ ret = get_userbuf(ses_ptr, caop->src, caop->len, caop->dst, kcaop->dst_len,
++ kcaop->task, kcaop->mm, &src_sg, &dst_sg);
++ if (unlikely(ret)) {
++ derr(1, "get_userbuf(): Error getting user pages.");
++ goto free_auth_buf;
++ }
++
++ ret = auth_n_crypt(ses_ptr, kcaop, auth_sg, caop->auth_len,
++ src_sg, dst_sg, caop->len);
++
++ release_user_pages(ses_ptr);
+
+ free_auth_buf:
+- free_page((unsigned long)auth_buf);
++ free_page((unsigned long)auth_buf);
++
++ return ret;
++}
++
++static int
++__crypto_auth_run_zc(struct csession *ses_ptr, struct kernel_crypt_auth_op *kcaop)
++{
++ struct crypt_auth_op *caop = &kcaop->caop;
++ int ret;
++
++ if (caop->flags & COP_FLAG_AEAD_SRTP_TYPE) {
++ ret = crypto_auth_zc_srtp(ses_ptr, kcaop);
++ } else if (caop->flags & COP_FLAG_AEAD_TLS_TYPE) {
++ ret = crypto_auth_zc_tls(ses_ptr, kcaop);
++ } else {
++ ret = crypto_auth_zc_aead(ses_ptr, kcaop);
+ }
+
+ return ret;
+--
+2.11.0
+
diff --git a/meta/recipes-kernel/cryptodev/files/0002-refactoring-relocate-code-to-simplify-later-patches.patch b/meta/recipes-kernel/cryptodev/files/0002-refactoring-relocate-code-to-simplify-later-patches.patch
new file mode 100644
index 00000000000..83d9005a06e
--- /dev/null
+++ b/meta/recipes-kernel/cryptodev/files/0002-refactoring-relocate-code-to-simplify-later-patches.patch
@@ -0,0 +1,64 @@
+From c2bf0e42b1d9fda60cde4a3a682784d349ef1c0b Mon Sep 17 00:00:00 2001
+From: Cristian Stoica <cristian.stoica@nxp.com>
+Date: Thu, 4 May 2017 15:06:21 +0300
+Subject: [PATCH 2/3] refactoring: relocate code to simplify later patches
+
+This code move will simplify the conversion to new AEAD interface in
+next patches
+
+Signed-off-by: Cristian Stoica <cristian.stoica@nxp.com>
+
+Upstream-Status: Backport
+
+Commit ID: c2bf0e42b1d9fda
+
+Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
+---
+ authenc.c | 17 +++++++++--------
+ 1 file changed, 9 insertions(+), 8 deletions(-)
+
+diff --git a/authenc.c b/authenc.c
+index 28eb0f9..95727b4 100644
+--- a/authenc.c
++++ b/authenc.c
+@@ -711,11 +711,18 @@ static int crypto_auth_zc_aead(struct csession *ses_ptr, struct kernel_crypt_aut
+ return -ENOMEM;
+ }
+
++ ret = get_userbuf(ses_ptr, caop->src, caop->len, caop->dst, kcaop->dst_len,
++ kcaop->task, kcaop->mm, &src_sg, &dst_sg);
++ if (unlikely(ret)) {
++ derr(1, "get_userbuf(): Error getting user pages.");
++ goto free_auth_buf;
++ }
++
+ if (caop->auth_src && caop->auth_len > 0) {
+ if (unlikely(copy_from_user(auth_buf, caop->auth_src, caop->auth_len))) {
+ derr(1, "unable to copy auth data from userspace.");
+ ret = -EFAULT;
+- goto free_auth_buf;
++ goto free_pages;
+ }
+
+ sg_init_one(&tmp, auth_buf, caop->auth_len);
+@@ -724,16 +731,10 @@ static int crypto_auth_zc_aead(struct csession *ses_ptr, struct kernel_crypt_aut
+ auth_sg = NULL;
+ }
+
+- ret = get_userbuf(ses_ptr, caop->src, caop->len, caop->dst, kcaop->dst_len,
+- kcaop->task, kcaop->mm, &src_sg, &dst_sg);
+- if (unlikely(ret)) {
+- derr(1, "get_userbuf(): Error getting user pages.");
+- goto free_auth_buf;
+- }
+-
+ ret = auth_n_crypt(ses_ptr, kcaop, auth_sg, caop->auth_len,
+ src_sg, dst_sg, caop->len);
+
++free_pages:
+ release_user_pages(ses_ptr);
+
+ free_auth_buf:
+--
+2.11.0
+
diff --git a/meta/recipes-kernel/cryptodev/files/0003-convert-to-new-AEAD-interface-in-kernels-v4.2.patch b/meta/recipes-kernel/cryptodev/files/0003-convert-to-new-AEAD-interface-in-kernels-v4.2.patch
new file mode 100644
index 00000000000..860230778bb
--- /dev/null
+++ b/meta/recipes-kernel/cryptodev/files/0003-convert-to-new-AEAD-interface-in-kernels-v4.2.patch
@@ -0,0 +1,102 @@
+From a705360197260d28535746ae98c461ba2cfb7a9e Mon Sep 17 00:00:00 2001
+From: Cristian Stoica <cristian.stoica@nxp.com>
+Date: Thu, 4 May 2017 15:06:22 +0300
+Subject: [PATCH 3/3] convert to new AEAD interface in kernels v4.2+
+
+The crypto API for AEAD ciphers changed in recent kernels so that
+associated data is now part of both source and destination scatter
+gathers. The source, destination and associated data buffers need
+to be stiched accordingly for the operations to succeed:
+
+src_sg: auth_buf + src_buf
+dst_sg: auth_buf + (dst_buf + tag space)
+
+This patch fixes a kernel crash observed with cipher-gcm test.
+
+See also kernel patch: 81c4c35eb61a69c229871c490b011c1171511d5a
+ crypto: ccm - Convert to new AEAD interface
+
+Reported-by: Phil Sutter <phil@nwl.cc>
+Signed-off-by: Cristian Stoica <cristian.stoica@nxp.com>
+
+Upstream-Status: Backport
+
+Commit ID: a705360197260d2853574
+
+Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
+---
+ authenc.c | 40 ++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 38 insertions(+), 2 deletions(-)
+
+diff --git a/authenc.c b/authenc.c
+index 95727b4..692951f 100644
+--- a/authenc.c
++++ b/authenc.c
+@@ -688,12 +688,20 @@ free_auth_buf:
+
+ static int crypto_auth_zc_aead(struct csession *ses_ptr, struct kernel_crypt_auth_op *kcaop)
+ {
+- struct scatterlist *dst_sg, *auth_sg, *src_sg;
++ struct scatterlist *dst_sg;
++ struct scatterlist *src_sg;
+ struct crypt_auth_op *caop = &kcaop->caop;
+ unsigned char *auth_buf = NULL;
+- struct scatterlist tmp;
+ int ret;
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0))
++ struct scatterlist tmp;
++ struct scatterlist *auth_sg;
++#else
++ struct scatterlist auth1[2];
++ struct scatterlist auth2[2];
++#endif
++
+ if (unlikely(ses_ptr->cdata.init == 0 ||
+ (ses_ptr->cdata.stream == 0 && ses_ptr->cdata.aead == 0))) {
+ derr(0, "Only stream and AEAD ciphers are allowed for authenc");
+@@ -718,6 +726,7 @@ static int crypto_auth_zc_aead(struct csession *ses_ptr, struct kernel_crypt_aut
+ goto free_auth_buf;
+ }
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0))
+ if (caop->auth_src && caop->auth_len > 0) {
+ if (unlikely(copy_from_user(auth_buf, caop->auth_src, caop->auth_len))) {
+ derr(1, "unable to copy auth data from userspace.");
+@@ -733,6 +742,33 @@ static int crypto_auth_zc_aead(struct csession *ses_ptr, struct kernel_crypt_aut
+
+ ret = auth_n_crypt(ses_ptr, kcaop, auth_sg, caop->auth_len,
+ src_sg, dst_sg, caop->len);
++#else
++ if (caop->auth_src && caop->auth_len > 0) {
++ if (unlikely(copy_from_user(auth_buf, caop->auth_src, caop->auth_len))) {
++ derr(1, "unable to copy auth data from userspace.");
++ ret = -EFAULT;
++ goto free_pages;
++ }
++
++ sg_init_table(auth1, 2);
++ sg_set_buf(auth1, auth_buf, caop->auth_len);
++ sg_chain(auth1, 2, src_sg);
++
++ if (src_sg == dst_sg) {
++ src_sg = auth1;
++ dst_sg = auth1;
++ } else {
++ sg_init_table(auth2, 2);
++ sg_set_buf(auth2, auth_buf, caop->auth_len);
++ sg_chain(auth2, 2, dst_sg);
++ src_sg = auth1;
++ dst_sg = auth2;
++ }
++ }
++
++ ret = auth_n_crypt(ses_ptr, kcaop, NULL, caop->auth_len,
++ src_sg, dst_sg, caop->len);
++#endif
+
+ free_pages:
+ release_user_pages(ses_ptr);
+--
+2.11.0
+
diff --git a/meta/recipes-kernel/dtc/dtc.inc b/meta/recipes-kernel/dtc/dtc.inc
index 9a90d440416..7a923bf5206 100644
--- a/meta/recipes-kernel/dtc/dtc.inc
+++ b/meta/recipes-kernel/dtc/dtc.inc
@@ -7,7 +7,6 @@ DEPENDS = "flex-native bison-native"
SRC_URI = "git://git.kernel.org/pub/scm/utils/dtc/dtc.git \
file://make_install.patch \
- file://0001-checks-Use-proper-format-modifier-for-size_t.patch \
"
UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
diff --git a/meta/recipes-kernel/dtc/dtc/0001-checks-Use-proper-format-modifier-for-size_t.patch b/meta/recipes-kernel/dtc/dtc/0001-checks-Use-proper-format-modifier-for-size_t.patch
deleted file mode 100644
index cab384dd99a..00000000000
--- a/meta/recipes-kernel/dtc/dtc/0001-checks-Use-proper-format-modifier-for-size_t.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From c7a4c3817796107bb824a1f173faf90fae45396b Mon Sep 17 00:00:00 2001
-From: Thierry Reding <treding@nvidia.com>
-Date: Wed, 27 Sep 2017 15:04:09 +0200
-Subject: [PATCH] checks: Use proper format modifier for size_t
-
-The size of size_t can vary between architectures, so using %ld isn't
-going to work on 32-bit builds. Use the %zu modifier to make sure it is
-always correct.
-
-Upstream-Status: Backport
-Signed-off-by: Thierry Reding <treding@nvidia.com>
-Acked-by: Rob Herring <robh@kernel.org>
-Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- checks.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/checks.c b/checks.c
-index 902f2e3..08a3a29 100644
---- a/checks.c
-+++ b/checks.c
-@@ -972,7 +972,7 @@ static void check_property_phandle_args(struct check *c,
- int cell, cellsize = 0;
-
- if (prop->val.len % sizeof(cell_t)) {
-- FAIL(c, dti, "property '%s' size (%d) is invalid, expected multiple of %ld in node %s",
-+ FAIL(c, dti, "property '%s' size (%d) is invalid, expected multiple of %zu in node %s",
- prop->name, prop->val.len, sizeof(cell_t), node->fullpath);
- return;
- }
-@@ -1163,7 +1163,7 @@ static void check_interrupts_property(struct check *c,
- return;
-
- if (irq_prop->val.len % sizeof(cell_t))
-- FAIL(c, dti, "property '%s' size (%d) is invalid, expected multiple of %ld in node %s",
-+ FAIL(c, dti, "property '%s' size (%d) is invalid, expected multiple of %zu in node %s",
- irq_prop->name, irq_prop->val.len, sizeof(cell_t),
- node->fullpath);
-
---
-2.15.0
-
diff --git a/meta/recipes-kernel/dtc/dtc/make_install.patch b/meta/recipes-kernel/dtc/dtc/make_install.patch
index ccf17b38fdb..ea9359e815b 100644
--- a/meta/recipes-kernel/dtc/dtc/make_install.patch
+++ b/meta/recipes-kernel/dtc/dtc/make_install.patch
@@ -1,17 +1,26 @@
+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]
-Index: git/Makefile
-===================================================================
---- git.orig/Makefile
-+++ git/Makefile
-@@ -168,8 +168,8 @@ install-bin: all $(SCRIPTS)
+---
+ 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) $(LIBFDT_lib) $(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) -m 644 $(LIBFDT_archive) $(DESTDIR)$(LIBDIR)
+ $(INSTALL_DATA) $(LIBFDT_archive) $(DESTDIR)$(LIBDIR)
diff --git a/meta/recipes-kernel/dtc/dtc_1.4.5.bb b/meta/recipes-kernel/dtc/dtc_1.4.7.bb
index 0e46cfbeb4f..6ce462a7f49 100644
--- a/meta/recipes-kernel/dtc/dtc_1.4.5.bb
+++ b/meta/recipes-kernel/dtc/dtc_1.4.7.bb
@@ -3,7 +3,7 @@ require dtc.inc
LIC_FILES_CHKSUM = "file://GPL;md5=94d55d512a9ba36caa9b7df079bae19f \
file://libfdt/libfdt.h;beginline=3;endline=52;md5=fb360963151f8ec2d6c06b055bcbb68c"
-SRCREV = "22a65c5331c22979d416738eb756b9541672e00d"
+SRCREV = "88f18909db731a627456f26d779445f84e449536"
S = "${WORKDIR}/git"
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 8ccd8cee146..b353c21dfba 100644
--- a/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb
+++ b/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb
@@ -4,7 +4,7 @@ LIC_FILES_CHKSUM = "file://git/tools/kgit;beginline=5;endline=9;md5=a6c2fa8aef1b
DEPENDS = "git-native"
-SRCREV = "b46b1c4f0973bf1eb09cf1191f5f4e69bcd0475d"
+SRCREV = "d6529f86fc5bcb3514953ff9fa2f51a3fbf03a0f"
PR = "r12"
PV = "0.2+git${SRCPV}"
diff --git a/meta/recipes-kernel/kexec/kexec-tools/0001-kexec-fix-for-Unhandled-rela-relocation-R_X86_64_PLT.patch b/meta/recipes-kernel/kexec/kexec-tools/0001-kexec-fix-for-Unhandled-rela-relocation-R_X86_64_PLT.patch
new file mode 100644
index 00000000000..e0cced55c1d
--- /dev/null
+++ b/meta/recipes-kernel/kexec/kexec-tools/0001-kexec-fix-for-Unhandled-rela-relocation-R_X86_64_PLT.patch
@@ -0,0 +1,41 @@
+From b9de21ef51a7ceab7122a707c188602eae22c4ee Mon Sep 17 00:00:00 2001
+From: Chris Clayton <chris2553@googlemail.com>
+Date: Mon, 20 Aug 2018 12:00:31 +0100
+Subject: [PATCH] kexec: fix for "Unhandled rela relocation: R_X86_64_PLT32" error
+
+In response to a change in binutils, commit b21ebf2fb4c
+(x86: Treat R_X86_64_PLT32 as R_X86_64_PC32) was applied to
+the linux kernel during the 4.16 development cycle and has
+since been backported to earlier stable kernel series. The
+change results in the failure message in $SUBJECT when
+rebooting via kexec.
+
+Fix this by replicating the change in kexec.
+
+Upstream-Status: Backport[https://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git/commit/?id=b9de21ef51a7ceab7122a707c188602eae22c4ee]
+
+Signed-off-by: Chris Clayton <chris2553@googlemail.com>
+Acked-by: Baoquan He <bhe@redhat.com>
+Tested-by: Bhupesh Sharma <bhsharma@redhat.com>
+Acked-by: Bhupesh Sharma <bhsharma@redhat.com>
+Signed-off-by: Simon Horman <horms@verge.net.au>
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+---
+ kexec/arch/x86_64/kexec-elf-rel-x86_64.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+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 7fdde73..db85b44 100644
+--- a/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
++++ b/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
+@@ -79,6 +79,7 @@ void machine_apply_elf_rel(struct mem_ehdr *UNUSED(ehdr),
+ goto overflow;
+ break;
+ case R_X86_64_PC32:
++ case R_X86_64_PLT32:
+ *(uint32_t *)location = value - address;
+ break;
+ default:
+--
+2.7.4
+
diff --git a/meta/recipes-kernel/kexec/kexec-tools/kdump.service b/meta/recipes-kernel/kexec/kexec-tools/kdump.service
index 4e65a46ac4c..b4a2c0611d3 100644
--- a/meta/recipes-kernel/kexec/kexec-tools/kdump.service
+++ b/meta/recipes-kernel/kexec/kexec-tools/kdump.service
@@ -1,6 +1,8 @@
[Unit]
Description=Reboot and dump vmcore via kexec
DefaultDependencies=no
+Requires=sysinit.target
+After=sysinit.target
[Service]
Type=oneshot
diff --git a/meta/recipes-kernel/kexec/kexec-tools_2.0.16.bb b/meta/recipes-kernel/kexec/kexec-tools_2.0.17.bb
index ebb4832684c..4b9b5accb6c 100644
--- a/meta/recipes-kernel/kexec/kexec-tools_2.0.16.bb
+++ b/meta/recipes-kernel/kexec/kexec-tools_2.0.17.bb
@@ -9,8 +9,6 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=ea5bed2f60d357618ca161ad539f7c0a \
file://kexec/kexec.c;beginline=1;endline=20;md5=af10f6ae4a8715965e648aa687ad3e09"
DEPENDS = "zlib xz"
-PR = "r1"
-
SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/kexec/kexec-tools-${PV}.tar.gz \
file://kdump \
file://kdump.conf \
@@ -20,10 +18,11 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/kexec/kexec-tools-${PV}.tar.gz
file://0010-kexec-ARM-Fix-add_buffer_phys_virt-align-issue.patch \
file://kexec-x32.patch \
file://0001-Disable-PIE-during-link.patch \
- "
+ file://0001-kexec-fix-for-Unhandled-rela-relocation-R_X86_64_PLT.patch \
+ "
-SRC_URI[md5sum] = "5198968de79b5ded96f97f3c2ea9637b"
-SRC_URI[sha256sum] = "cf17fc99bf77c9b39f06ee88ac0e86d0349c4a0c3f8214a3cc78eece872f6f3a"
+SRC_URI[md5sum] = "8e071ca473694a71e4ae60ed7ef6f377"
+SRC_URI[sha256sum] = "450c87ba048641eb05f9717f5567aca57f063c266149ae663b58a34e5852deaf"
inherit autotools update-rc.d systemd
@@ -79,6 +78,9 @@ 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.*)'
diff --git a/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb b/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
index 48f012918a4..9a172675af1 100644
--- a/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
+++ b/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
@@ -11,6 +11,7 @@ PACKAGE_ARCH = "${MACHINE_ARCH}"
SSTATE_SCAN_FILES += "depmodwrapper"
EXTRA_STAGING_FIXMES += "PKGDATA_DIR"
+DEPENDS += "kmod-native"
do_populate_sysroot[depends] = ""
do_install() {
diff --git a/meta/recipes-kernel/kmod/kmod_git.bb b/meta/recipes-kernel/kmod/kmod_git.bb
index 69185b2453b..b25679359ba 100644
--- a/meta/recipes-kernel/kmod/kmod_git.bb
+++ b/meta/recipes-kernel/kmod/kmod_git.bb
@@ -13,9 +13,7 @@ RREPLACES_${PN} += "module-init-tools-insmod-static module-init-tools-depmod mod
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
-bindir = "${base_bindir}"
-sbindir = "${base_sbindir}"
-# libdir = "${base_libdir}"
+EXTRA_OECONF += " --bindir=${base_bindir} --sbindir=${base_sbindir}"
do_install_append () {
install -dm755 ${D}${base_bindir}
diff --git a/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb b/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb
index c96588473b6..7829c245793 100644
--- a/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb
+++ b/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb
@@ -14,6 +14,7 @@ LICENSE = "\
& Firmware-cavium \
& Firmware-chelsio_firmware \
& Firmware-cw1200 \
+ & Firmware-cypress \
& Firmware-dib0700 \
& Firmware-e100 \
& Firmware-ene_firmware \
@@ -65,15 +66,17 @@ LIC_FILES_CHKSUM = "\
file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \
file://LICENCE.adsp_sst;md5=615c45b91a5a4a9fe046d6ab9a2df728 \
file://LICENCE.agere;md5=af0133de6b4a9b2522defd5f188afd31 \
- file://LICENSE.amdgpu;md5=0aa3c2f3e736af320a08a3aeeccecf29 \
- file://LICENSE.amd-ucode;md5=3a0de451253cc1edbf30a3c621effee3 \
+ file://LICENSE.amdgpu;md5=88b865bc74f3ffcc54640b4ea8540b46 \
+ file://LICENSE.amd-ucode;md5=3c5399dc9148d7f0e1f41e34b69cf14f \
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 \
@@ -89,6 +92,7 @@ LIC_FILES_CHKSUM = "\
file://LICENCE.iwlwifi_firmware;md5=3fd842911ea93c29cd32679aa23e1c88 \
file://LICENCE.kaweth;md5=b1d876e562f4b3b8d391ad8395dfe03f \
file://LICENCE.Marvell;md5=9ddea1734a4baf3c78d845151f42a37a \
+ file://LICENCE.mediatek;md5=7c1976b63217d76ce47d0a11d8a79cf2 \
file://LICENCE.moxa;md5=1086614767d8ccf744a923289d3d4261 \
file://LICENCE.myri10ge_firmware;md5=42e32fb89f6b959ca222e25ac8df8fed \
file://LICENCE.Netronome;md5=4add08f2577086d44447996503cddf5f \
@@ -118,7 +122,7 @@ LIC_FILES_CHKSUM = "\
file://LICENCE.xc4000;md5=0ff51d2dc49fce04814c9155081092f0 \
file://LICENCE.xc5000;md5=1e170c13175323c32c7f4d0998d53f66 \
file://LICENCE.xc5000c;md5=12b02efa3049db65d524aeb418dd87ca \
- file://WHENCE;md5=ec6f70c8a1104ff87f6aa144d926f0dd \
+ file://WHENCE;md5=36ef3e9887bb8b38ff265c602de6740e \
"
# These are not common licenses, set NO_GENERIC_LICENSE for them
@@ -132,9 +136,11 @@ 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"
@@ -150,6 +156,7 @@ 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"
@@ -181,7 +188,7 @@ NO_GENERIC_LICENSE[Firmware-xc5000] = "LICENCE.xc5000"
NO_GENERIC_LICENSE[Firmware-xc5000c] = "LICENCE.xc5000c"
NO_GENERIC_LICENSE[WHENCE] = "WHENCE"
-SRCREV = "4c0bf113a55975d702673e57c5542f150807ad66"
+SRCREV = "44d4fca9922a252a0bd81f6307bcc072a78da54a"
PE = "1"
PV = "0.0+git${SRCPV}"
@@ -229,12 +236,45 @@ PACKAGES =+ "${PN}-ralink-license ${PN}-ralink \
${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}-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}-bcm4329 ${PN}-bcm4330 ${PN}-bcm4334 ${PN}-bcm43340 \
- ${PN}-bcm43362 ${PN}-bcm4339 ${PN}-bcm43430 ${PN}-bcm4354 \
+ ${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}-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 \
@@ -374,6 +414,7 @@ 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"
@@ -408,6 +449,9 @@ FILES_${PN}-sd8887 = " \
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"
@@ -416,6 +460,7 @@ 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"
@@ -440,6 +485,7 @@ 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 \
@@ -462,6 +508,9 @@ FILES_${PN}-rtl8723 = " \
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"
@@ -469,6 +518,7 @@ 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}-wl12xx = "Firmware-ti-connectivity"
@@ -503,52 +553,126 @@ RDEPENDS_${PN}-vt6656 = "${PN}-vt6656-license"
# For broadcom
-LICENSE_${PN}-bcm4329 = "Firmware-broadcom_bcm43xx"
-LICENSE_${PN}-bcm4330 = "Firmware-broadcom_bcm43xx"
-LICENSE_${PN}-bcm4334 = "Firmware-broadcom_bcm43xx"
-LICENSE_${PN}-bcm43340 = "Firmware-broadcom_bcm43xx"
-LICENSE_${PN}-bcm43362 = "Firmware-broadcom_bcm43xx"
-LICENSE_${PN}-bcm4339 = "Firmware-broadcom_bcm43xx"
-LICENSE_${PN}-bcm43430 = "Firmware-broadcom_bcm43xx"
-LICENSE_${PN}-bcm4354 = "Firmware-broadcom_bcm43xx"
-LICENSE_${PN}-broadcom-license = "Firmware-broadcom_bcm43xx"
-
-FILES_${PN}-broadcom-license = " \
- ${nonarch_base_libdir}/firmware/LICENCE.broadcom_bcm43xx \
-"
-FILES_${PN}-bcm4329 = " \
- ${nonarch_base_libdir}/firmware/brcm/brcmfmac4329-sdio.bin \
-"
-FILES_${PN}-bcm4330 = " \
- ${nonarch_base_libdir}/firmware/brcm/brcmfmac4330-sdio.bin \
-"
-FILES_${PN}-bcm4334 = " \
- ${nonarch_base_libdir}/firmware/brcm/brcmfmac4334-sdio.bin \
-"
-FILES_${PN}-bcm43340 = " \
- ${nonarch_base_libdir}/firmware/brcm/brcmfmac43340-sdio.bin \
-"
-FILES_${PN}-bcm43362 = " \
- ${nonarch_base_libdir}/firmware/brcm/brcmfmac43362-sdio.bin \
-"
-FILES_${PN}-bcm4339 = " \
- ${nonarch_base_libdir}/firmware/brcm/brcmfmac4339-sdio.bin \
-"
-FILES_${PN}-bcm43430 = " \
- ${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.bin \
-"
-FILES_${PN}-bcm4354 = " \
- ${nonarch_base_libdir}/firmware/brcm/brcmfmac4354-sdio.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 " \${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.bin"
+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.bin"
+FILES_${PN}-bcm43455 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43455-sdio.bin"
+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}-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"
-RDEPENDS_${PN}-bcm43340 += "${PN}-broadcom-license"
-RDEPENDS_${PN}-bcm43362 += "${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"
-RDEPENDS_${PN}-bcm43430 += "${PN}-broadcom-license"
-RDEPENDS_${PN}-bcm4354 += "${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}-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.bin"
+FILES_${PN}-bcm43362 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43362-sdio.bin"
+FILES_${PN}-bcm43430 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.bin"
+FILES_${PN}-bcm4354 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4354-sdio.bin"
+FILES_${PN}-bcm4356-pcie = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-pcie.bin"
+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
#
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 1657df6e921..be215af9b95 100644
--- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc
+++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc
@@ -30,7 +30,7 @@ LICENSE = "GPLv2"
#
# -- RP
-LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
+LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
python __anonymous () {
major = d.getVar("PV").split('.')[0]
@@ -53,12 +53,9 @@ S = "${WORKDIR}/linux-${PV}"
EXTRA_OEMAKE = " HOSTCC="${BUILD_CC}" HOSTCPP="${BUILD_CPP}""
-do_configure() {
- oe_runmake allnoconfig
-}
+do_configure[noexec] = "1"
-do_compile () {
-}
+do_compile[noexec] = "1"
do_install() {
oe_runmake headers_install INSTALL_HDR_PATH=${D}${exec_prefix}
@@ -77,8 +74,12 @@ do_install_append_arm () {
do_install_armmultilib
}
+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/mman.h asm/param.h asm/perf_regs.h
+ 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
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
}
@@ -88,4 +89,4 @@ RDEPENDS_${PN}-dev = ""
RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
INHIBIT_DEFAULT_DEPS = "1"
-DEPENDS += "unifdef-native"
+DEPENDS += "unifdef-native bison-native"
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
new file mode 100644
index 00000000000..9d17daa70f0
--- /dev/null
+++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-include-linux-stddef.h-in-swab.h-uapi-header.patch
@@ -0,0 +1,44 @@
+From 9708dc74d9f49488d669e070982f6224a888d61a 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
+
+swab.h uses __always_inline without including the header where it is
+defined, this is exposed by musl based distributions where this macro is
+not defined by system C library headers unlike glibc where it is defined
+in sys/cdefs.h and that header gets pulled in indirectly via
+
+features.h -> sys/cdefs.h
+
+and features.h gets pulled in a lot of headers. Therefore it may work in
+cases where features.h is includes but not otherwise.
+
+Adding linux/stddef.h here ensures that __always_inline is always
+defined independent of which C library is used in userspace
+
+Upstream-Status: Submitted [https://lkml.org/lkml/2018/9/13/78]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+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
+--- a/include/uapi/linux/swab.h
++++ b/include/uapi/linux/swab.h
+@@ -3,6 +3,7 @@
+ #define _UAPI_LINUX_SWAB_H
+
+ #include <linux/types.h>
++#include <linux/stddef.h>
+ #include <linux/compiler.h>
+ #include <asm/swab.h>
+
+--
+2.19.0
+
diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.15.7.bb b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.18.bb
index a7db4c9c015..eb7bee72b0c 100644
--- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.15.7.bb
+++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.18.bb
@@ -6,8 +6,8 @@ SRC_URI_append_libc-musl = "\
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[md5sum] = "8186ce63c489199b58b6a58ad2a24a94"
-SRC_URI[sha256sum] = "cd44df4b23a3e0edc14be63df95d768b9600b31c35be05fb89f93226907fc8c6"
+SRC_URI[md5sum] = "bee5fe53ee1c3142b8f0c12c0d3348f9"
+SRC_URI[sha256sum] = "19d8bcf49ef530cd4e364a45b4a22fa70714b70349c8100e7308488e26f1eaf1"
diff --git a/meta/recipes-kernel/linux/kernel-devsrc.bb b/meta/recipes-kernel/linux/kernel-devsrc.bb
index 8bbfa23e4b8..57585722215 100644
--- a/meta/recipes-kernel/linux/kernel-devsrc.bb
+++ b/meta/recipes-kernel/linux/kernel-devsrc.bb
@@ -25,62 +25,211 @@ do_unpack[noexec] = "1"
do_patch[noexec] = "1"
do_configure[noexec] = "1"
do_compile[noexec] = "1"
-do_populate_sysroot[noexec] = "1"
+deltask do_populate_sysroot
S = "${STAGING_KERNEL_DIR}"
B = "${STAGING_KERNEL_BUILDDIR}"
-KERNEL_VERSION = "${@get_kernelversion_headers('${S}')}"
-
PACKAGE_ARCH = "${MACHINE_ARCH}"
+KERNEL_BUILD_ROOT="/lib/modules/"
+
do_install() {
- kerneldir=${D}${KERNEL_SRC_PATH}
- install -d $kerneldir
-
- #
- # Copy the staging dir source (and module build support) into the devsrc structure.
- # We can keep this copy simple and take everything, since a we'll clean up any build
- # artifacts afterwards, and the extra i/o is not significant
- #
- cd ${B}
- find . -type d -name '.git*' -prune -o -path '.debug' -prune -o -type f -print0 | cpio --null -pdlu $kerneldir
- cd ${S}
- find . -type d -name '.git*' -prune -o -type d -name '.kernel-meta' -prune -o -type f -print0 | cpio --null -pdlu $kerneldir
-
- # Explicitly set KBUILD_OUTPUT to ensure that the image directory is cleaned and not
- # The main build artifacts. We clean the directory to avoid QA errors on mismatched
- # architecture (since scripts and helpers are native format).
- KBUILD_OUTPUT="$kerneldir"
- oe_runmake -C $kerneldir CC="${KERNEL_CC}" LD="${KERNEL_LD}" clean _mrproper_scripts
- # make clean generates an absolute path symlink called "source"
- # in $kerneldir points to $kerneldir, which doesn't make any
- # sense, so remove it.
- if [ -L $kerneldir/source ]; then
- bbnote "Removing $kerneldir/source symlink"
- rm -f $kerneldir/source
- fi
-
- # As of Linux kernel version 3.0.1, the clean target removes
- # arch/powerpc/lib/crtsavres.o which is present in
- # KBUILD_LDFLAGS_MODULE, making it required to build external modules.
- if [ ${ARCH} = "powerpc" ]; then
- mkdir -p $kerneldir/arch/powerpc/lib/
- cp ${B}/arch/powerpc/lib/crtsavres.o $kerneldir/arch/powerpc/lib/crtsavres.o
- fi
-
- # Remove fixdep/objtool as they won't be target binaries
- for i in fixdep objtool; do
- if [ -e $kerneldir/tools/objtool/$i ]; then
- rm -rf $kerneldir/tools/objtool/$i
- fi
- done
-
- chown -R root:root ${D}
+ kerneldir=${D}${KERNEL_BUILD_ROOT}${KERNEL_VERSION}
+ install -d $kerneldir
+
+ # create the directory structure
+ rm -f $kerneldir/build
+ rm -f $kerneldir/source
+ mkdir -p $kerneldir/build
+
+ # for compatibility with some older variants of this package, we
+ # create a /usr/src/kernel symlink to /lib/modules/<version>/source
+ mkdir -p ${D}/usr/src
+ (
+ cd ${D}/usr/src
+ ln -s ${KERNEL_BUILD_ROOT}${KERNEL_VERSION}/source kernel
+ )
+
+ # for on target purposes, we unify build and source
+ (
+ cd $kerneldir
+ ln -s build source
+ )
+
+ # first copy everything
+ (
+ cd ${S}
+ cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") $kerneldir/build
+ cp --parents $(find -type f -name "Build" -o -name "Build.include") $kerneldir/build
+ )
+
+ # then drop all but the needed Makefiles/Kconfig files
+ rm -rf $kerneldir/build/Documentation
+ rm -rf $kerneldir/build/scripts
+ rm -rf $kerneldir/build/include
+
+ # now copy in parts from the build that we'll need later
+ (
+ cd ${B}
+
+ cp Module.symvers $kerneldir/build
+ cp System.map* $kerneldir/build
+ if [ -s Module.markers ]; then
+ cp Module.markers $kerneldir/build
+ fi
+
+ cp .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
+ # here. Left as a reference to indicate that we know the scripts must
+ # be dealt with.
+ # cp -a scripts $kerneldir/build
+
+ if [ -d arch/${ARCH}/scripts ]; then
+ cp -a arch/${ARCH}/scripts $kerneldir/build/arch/${ARCH}
+ fi
+ if [ -f arch/${ARCH}/*lds ]; then
+ cp -a arch/${ARCH}/*lds $kerneldir/build/arch/${ARCH}
+ fi
+
+ rm -f $kerneldir/build/scripts/*.o
+ rm -f $kerneldir/build/scripts/*/*.o
+
+ if [ "${ARCH}" = "powerpc" ]; then
+ if [ -e arch/powerpc/lib/crtsavres.S ] ||
+ [ -e arch/powerpc/lib/crtsavres.o ]; then
+ cp -a --parents arch/powerpc/lib/crtsavres.[So] $kerneldir/build/
+ fi
+ fi
+
+ if [ "${ARCH}" = "arm64" ]; then
+ cp -a --parents arch/arm64/kernel/vdso/vdso.lds $kerneldir/build/
+ fi
+
+ cp -a include $kerneldir/build/include
+ )
+
+ # now grab the chunks from the source tree that we need
+ (
+ cd ${S}
+
+ cp -a scripts $kerneldir/build
+
+ # if our build dir had objtool, it will also be rebuilt on target, so
+ # we copy what is required for that build
+ if [ -f ${B}/tools/objtool/objtool ]; then
+ # these are a few files associated with objtool, since we'll need to
+ # rebuild it
+ cp -a --parents tools/build/Build.include $kerneldir/build/
+ cp -a --parents tools/build/Build $kerneldir/build/
+ cp -a --parents tools/build/fixdep.c $kerneldir/build/
+ cp -a --parents tools/scripts/utilities.mak $kerneldir/build/
+
+ # 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/subcmd/* $kerneldir/build/
+
+ cp -a --parents tools/include/* $kerneldir/build/
+ fi
+
+ if [ "${ARCH}" = "arm64" ]; then
+ # arch/arm64/include/asm/xen references arch/arm
+ cp -a --parents arch/arm/include/asm/xen $kerneldir/build/
+ # arch/arm64/include/asm/opcodes.h references arch/arm
+ cp -a --parents arch/arm/include/asm/opcodes.h $kerneldir/build/
+
+ cp -a --parents arch/arm64/kernel/vdso/gettimeofday.S $kerneldir/build/
+ cp -a --parents arch/arm64/kernel/vdso/sigreturn.S $kerneldir/build/
+ 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/
+ fi
+
+ # include the machine specific headers for ARM variants, if available.
+ if [ "${ARCH}" = "arm" ]; then
+ cp -a --parents arch/${ARCH}/mach-*/include $kerneldir/build/
+
+ # include a few files for 'make prepare'
+ cp -a --parents arch/arm/tools/gen-mach-types $kerneldir/build/
+ cp -a --parents arch/arm/tools/mach-types $kerneldir/build/
+ cp -a --parents arch/arm/tools/syscall* $kerneldir/build/
+
+ cp -a --parents arch/arm/kernel/module.lds $kerneldir/build/
+ fi
+
+ if [ -d arch/${ARCH}/include ]; then
+ cp -a --parents arch/${ARCH}/include $kerneldir/build/
+ fi
+
+ cp -a include $kerneldir/build
+
+ cp -a --parents tools/include/tools/le_byteshift.h $kerneldir/build/
+ 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
+
+ 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 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/purgatory/purgatory.c $kerneldir/build/
+
+ # 4.18 + have unified the purgatory files, so we ignore any errors if
+ # these files are not present
+ cp -a --parents arch/x86/purgatory/sha256.h $kerneldir/build/ 2>/dev/null || :
+ cp -a --parents arch/x86/purgatory/sha256.c $kerneldir/build/ 2>/dev/null || :
+
+ cp -a --parents arch/x86/purgatory/stack.S $kerneldir/build/
+ cp -a --parents arch/x86/purgatory/string.c $kerneldir/build/
+ cp -a --parents arch/x86/purgatory/setup-x86_64.S $kerneldir/build/
+ cp -a --parents arch/x86/purgatory/entry64.S $kerneldir/build/
+ cp -a --parents arch/x86/boot/string.h $kerneldir/build/
+ cp -a --parents arch/x86/boot/string.c $kerneldir/build/
+ cp -a --parents arch/x86/boot/ctype.h $kerneldir/build/
+ fi
+
+ if [ "${ARCH}" = "mips" ]; then
+ cp -a --parents arch/mips/Kbuild.platforms $kerneldir/build/
+ cp --parents $(find -type f -name "Platform") $kerneldir/build
+ cp --parents arch/mips/boot/tools/relocs* $kerneldir/build
+ cp -a --parents arch/mips/kernel/asm-offsets.c $kerneldir/build
+ cp -a --parents kernel/time/timeconst.bc $kerneldir/build
+ cp -a --parents kernel/bounds.c $kerneldir/build
+ cp -a --parents Kbuild $kerneldir/build
+ fi
+ )
+
+ # Make sure the Makefile and version.h have a matching timestamp so that
+ # external modules can be built
+ touch -r $kerneldir/build/Makefile $kerneldir/build/include/generated/uapi/linux/version.h
+
+ # Copy .config to include/config/auto.conf so "make prepare" is unnecessary.
+ cp $kerneldir/build/.config $kerneldir/build/include/config/auto.conf
+
+ chown -R root:root ${D}
}
+
# Ensure we don't race against "make scripts" during cpio
do_install[lockfiles] = "${TMPDIR}/kernel-scripts.lock"
-PACKAGES = "kernel-devsrc"
-FILES_${PN} = "${KERNEL_SRC_PATH}"
-RDEPENDS_${PN} = "bc"
+FILES_${PN} = "${KERNEL_BUILD_ROOT} ${KERNEL_SRC_PATH}"
+FILES_${PN}-dbg += "${KERNEL_BUILD_ROOT}*/build/scripts/*/.debug/*"
+
+RDEPENDS_${PN} = "bc python flex bison ${TCLIBC}-utils"
+# 4.15+ needs these next two RDEPENDS
+RDEPENDS_${PN} += "openssl-dev util-linux"
+# and x86 needs a bit more for 4.15+
+RDEPENDS_${PN} += "${@bb.utils.contains('ARCH', 'x86', 'elfutils', '', d)}"
diff --git a/meta/recipes-kernel/linux/linux-yocto-dev.bb b/meta/recipes-kernel/linux/linux-yocto-dev.bb
index 4201faf672b..8c9e4198d97 100644
--- a/meta/recipes-kernel/linux/linux-yocto-dev.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-dev.bb
@@ -10,6 +10,8 @@
inherit kernel
require recipes-kernel/linux/linux-yocto.inc
+# for ncurses tests
+inherit pkgconfig
# provide this .inc to set specific revisions
include recipes-kernel/linux/linux-yocto-dev-revisions.inc
@@ -28,10 +30,12 @@ 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 ?= "4.16-rc+"
+LINUX_VERSION ?= "4.18-rc+"
LINUX_VERSION_EXTENSION ?= "-yoctodev-${LINUX_KERNEL_TYPE}"
PV = "${LINUX_VERSION}+git${SRCPV}"
+LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
+
DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
DEPENDS += "openssl-native util-linux-native"
diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_4.12.bb b/meta/recipes-kernel/linux/linux-yocto-rt_4.12.bb
deleted file mode 100644
index ff730846f55..00000000000
--- a/meta/recipes-kernel/linux/linux-yocto-rt_4.12.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-KBRANCH ?= "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 ?= "bec5c846f002161d695171798f250c59e85ab821"
-SRCREV_meta ?= "f8f75cc4d9cb3195a2221b375cfc4f91ee211399"
-
-SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.12.git;branch=${KBRANCH};name=machine \
- git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.12;destsuffix=${KMETA}"
-
-LINUX_VERSION ?= "4.12.21"
-
-PV = "${LINUX_VERSION}+git${SRCPV}"
-
-KMETA = "kernel-meta"
-KCONF_BSP_AUDIT_LEVEL = "2"
-
-LINUX_KERNEL_TYPE = "preempt-rt"
-
-COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuppc|qemumips)"
-
-KERNEL_DEVICETREE_qemuarm = "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"
-KERNEL_FEATURES_append_qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
-KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc"
diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_4.14.bb b/meta/recipes-kernel/linux/linux-yocto-rt_4.14.bb
index 81306a98426..e6f42f29e61 100644
--- a/meta/recipes-kernel/linux/linux-yocto-rt_4.14.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-rt_4.14.bb
@@ -11,13 +11,13 @@ python () {
raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
}
-SRCREV_machine ?= "7272e9132fdaaf0dd78bc94e9f297aaf73452982"
-SRCREV_meta ?= "ea9330894eea727bd1655569b16f338976b72563"
+SRCREV_machine ?= "c37a14708f5b618602f84f83f902346e055824c3"
+SRCREV_meta ?= "1fb0b0379fb5883ce5af7485374e3f78ee4272d3"
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.14;destsuffix=${KMETA}"
-LINUX_VERSION ?= "4.14.30"
+LINUX_VERSION ?= "4.14.71"
DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
DEPENDS += "openssl-native util-linux-native"
@@ -38,4 +38,4 @@ KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/ta
KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
KERNEL_FEATURES_append_qemuall=" cfg/virtio.scc"
KERNEL_FEATURES_append_qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
-KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc"
+KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_4.15.bb b/meta/recipes-kernel/linux/linux-yocto-rt_4.18.bb
index c5d3ee03fd2..1a539276479 100644
--- a/meta/recipes-kernel/linux/linux-yocto-rt_4.15.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-rt_4.18.bb
@@ -1,4 +1,4 @@
-KBRANCH ?= "v4.15/standard/preempt-rt/base"
+KBRANCH ?= "v4.18/standard/preempt-rt/base"
require recipes-kernel/linux/linux-yocto.inc
@@ -11,13 +11,15 @@ python () {
raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
}
-SRCREV_machine ?= "91084d030bc841c483c31e8664289c7940aa5506"
-SRCREV_meta ?= "939d935b0c992c6f1e51a7a1c9e4fbe6ef3c3174"
+SRCREV_machine ?= "f9cb6c0852260b119014a339332c9f4bee4c074b"
+SRCREV_meta ?= "607726b2d0b8e1d8c5653003448a24353a88c63b"
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.15;destsuffix=${KMETA}"
+ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.18;destsuffix=${KMETA}"
-LINUX_VERSION ?= "4.15.13"
+LINUX_VERSION ?= "4.18.9"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
DEPENDS += "openssl-native util-linux-native"
@@ -29,7 +31,7 @@ KCONF_BSP_AUDIT_LEVEL = "2"
LINUX_KERNEL_TYPE = "preempt-rt"
-COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuppc|qemumips)"
+COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuarm64|qemuppc|qemumips)"
KERNEL_DEVICETREE_qemuarm = "versatile-pb.dtb"
@@ -38,4 +40,4 @@ KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/ta
KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
KERNEL_FEATURES_append_qemuall=" cfg/virtio.scc"
KERNEL_FEATURES_append_qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
-KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc"
+KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_4.12.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_4.12.bb
deleted file mode 100644
index 325857fa9d2..00000000000
--- a/meta/recipes-kernel/linux/linux-yocto-tiny_4.12.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-KBRANCH ?= "standard/tiny/common-pc"
-LINUX_KERNEL_TYPE = "tiny"
-KCONFIG_MODE = "--allnoconfig"
-
-require recipes-kernel/linux/linux-yocto.inc
-
-LINUX_VERSION ?= "4.12.21"
-
-KMETA = "kernel-meta"
-KCONF_BSP_AUDIT_LEVEL = "2"
-
-SRCREV_machine ?= "97e710ef0545c19d3c10bd81a61bdca9fe543b81"
-SRCREV_meta ?= "f8f75cc4d9cb3195a2221b375cfc4f91ee211399"
-
-PV = "${LINUX_VERSION}+git${SRCPV}"
-
-SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.12.git;branch=${KBRANCH};name=machine \
- git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.12;destsuffix=${KMETA}"
-
-COMPATIBLE_MACHINE = "qemux86|qemux86-64"
-
-# Functionality flags
-KERNEL_FEATURES = ""
-
-KERNEL_DEVICETREE_qemuarm = "versatile-pb.dtb"
diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_4.14.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_4.14.bb
index 34bee0949fc..f599c90db25 100644
--- a/meta/recipes-kernel/linux/linux-yocto-tiny_4.14.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-tiny_4.14.bb
@@ -4,7 +4,7 @@ KCONFIG_MODE = "--allnoconfig"
require recipes-kernel/linux/linux-yocto.inc
-LINUX_VERSION ?= "4.14.30"
+LINUX_VERSION ?= "4.14.71"
DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
DEPENDS += "openssl-native util-linux-native"
@@ -12,8 +12,8 @@ DEPENDS += "openssl-native util-linux-native"
KMETA = "kernel-meta"
KCONF_BSP_AUDIT_LEVEL = "2"
-SRCREV_machine ?= "ad31896630f8bf6a459164263adc0a8faf984d9e"
-SRCREV_meta ?= "ea9330894eea727bd1655569b16f338976b72563"
+SRCREV_machine ?= "3218be18094b7dfb4471b083c469452c8c7709ce"
+SRCREV_meta ?= "1fb0b0379fb5883ce5af7485374e3f78ee4272d3"
PV = "${LINUX_VERSION}+git${SRCPV}"
diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_4.15.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_4.18.bb
index 05b9ca38b2d..69ca1dc0e08 100644
--- a/meta/recipes-kernel/linux/linux-yocto-tiny_4.15.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-tiny_4.18.bb
@@ -1,21 +1,25 @@
-KBRANCH ?= "v4.15/standard/tiny/common-pc"
+KBRANCH ?= "v4.18/standard/tiny/common-pc"
LINUX_KERNEL_TYPE = "tiny"
KCONFIG_MODE = "--allnoconfig"
require recipes-kernel/linux/linux-yocto.inc
-LINUX_VERSION ?= "4.15.13"
+LINUX_VERSION ?= "4.18.9"
+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 ?= "91084d030bc841c483c31e8664289c7940aa5506"
-SRCREV_meta ?= "939d935b0c992c6f1e51a7a1c9e4fbe6ef3c3174"
+SRCREV_machine ?= "0cdc8564c61958a39704d97e008120bd7c762f60"
+SRCREV_meta ?= "607726b2d0b8e1d8c5653003448a24353a88c63b"
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.15;destsuffix=${KMETA}"
+ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.18;destsuffix=${KMETA}"
COMPATIBLE_MACHINE = "qemux86|qemux86-64"
diff --git a/meta/recipes-kernel/linux/linux-yocto.inc b/meta/recipes-kernel/linux/linux-yocto.inc
index 3bb872a32a3..1ebfb606da9 100644
--- a/meta/recipes-kernel/linux/linux-yocto.inc
+++ b/meta/recipes-kernel/linux/linux-yocto.inc
@@ -2,7 +2,7 @@ SUMMARY = "Linux kernel"
SECTION = "kernel"
LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
+LIC_FILES_CHKSUM ?= "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+(\.\d+)*)"
@@ -28,6 +28,8 @@ KERNEL_LD_append_nios2 = " ${TOOLCHAIN_OPTIONS}"
KERNEL_FEATURES_append_qemuall=" features/debug/printk.scc"
+KERNEL_FEATURES_append = " ${@bb.utils.contains('MACHINE_FEATURES', 'numa', 'features/numa/numa.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
@@ -67,3 +69,6 @@ do_install_append(){
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"
diff --git a/meta/recipes-kernel/linux/linux-yocto_4.12.bb b/meta/recipes-kernel/linux/linux-yocto_4.12.bb
deleted file mode 100644
index 81079ce584c..00000000000
--- a/meta/recipes-kernel/linux/linux-yocto_4.12.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-KBRANCH ?= "standard/base"
-
-require recipes-kernel/linux/linux-yocto.inc
-
-# board specific branches
-KBRANCH_qemuarm ?= "standard/arm-versatile-926ejs"
-KBRANCH_qemuarm64 ?= "standard/qemuarm64"
-KBRANCH_qemumips ?= "standard/mti-malta32"
-KBRANCH_qemuppc ?= "standard/qemuppc"
-KBRANCH_qemux86 ?= "standard/base"
-KBRANCH_qemux86-64 ?= "standard/base"
-KBRANCH_qemumips64 ?= "standard/mti-malta64"
-
-SRCREV_machine_qemuarm ?= "fa1d1c94af290039f25b2b6fb0f419b4272e7156"
-SRCREV_machine_qemuarm64 ?= "97e710ef0545c19d3c10bd81a61bdca9fe543b81"
-SRCREV_machine_qemumips ?= "558d4b974687d421c5e8ff63a7d2660520f9dab0"
-SRCREV_machine_qemuppc ?= "97e710ef0545c19d3c10bd81a61bdca9fe543b81"
-SRCREV_machine_qemux86 ?= "97e710ef0545c19d3c10bd81a61bdca9fe543b81"
-SRCREV_machine_qemux86-64 ?= "97e710ef0545c19d3c10bd81a61bdca9fe543b81"
-SRCREV_machine_qemumips64 ?= "09bddd16543c2f4fa1bb5a535994975dd1457fe2"
-SRCREV_machine ?= "97e710ef0545c19d3c10bd81a61bdca9fe543b81"
-SRCREV_meta ?= "f8f75cc4d9cb3195a2221b375cfc4f91ee211399"
-
-SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.12.git;name=machine;branch=${KBRANCH}; \
- git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.12;destsuffix=${KMETA}"
-
-DEPENDS += "openssl-native util-linux-native"
-
-LINUX_VERSION ?= "4.12.21"
-
-PV = "${LINUX_VERSION}+git${SRCPV}"
-
-KMETA = "kernel-meta"
-KCONF_BSP_AUDIT_LEVEL = "2"
-
-KERNEL_DEVICETREE_qemuarm = "versatile-pb.dtb"
-
-COMPATIBLE_MACHINE = "qemuarm|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"
-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)}"
diff --git a/meta/recipes-kernel/linux/linux-yocto_4.14.bb b/meta/recipes-kernel/linux/linux-yocto_4.14.bb
index 16142f8ceb4..40ee1e9fc40 100644
--- a/meta/recipes-kernel/linux/linux-yocto_4.14.bb
+++ b/meta/recipes-kernel/linux/linux-yocto_4.14.bb
@@ -11,20 +11,20 @@ KBRANCH_qemux86 ?= "v4.14/standard/base"
KBRANCH_qemux86-64 ?= "v4.14/standard/base"
KBRANCH_qemumips64 ?= "v4.14/standard/mti-malta64"
-SRCREV_machine_qemuarm ?= "d6268fc3460d3904fd49087f7a822efbaab9bfe8"
-SRCREV_machine_qemuarm64 ?= "c94189843b8ad62cafe9a307e7f7d60741690505"
-SRCREV_machine_qemumips ?= "4afd92347b2b35dc8e0006712f8fa00ac57f2a36"
-SRCREV_machine_qemuppc ?= "e8af5c9b65c5187d148ecd11bd7979489460ca64"
-SRCREV_machine_qemux86 ?= "74f6cd2b6976e37491779fcb1bc4966d3a61492c"
-SRCREV_machine_qemux86-64 ?= "74f6cd2b6976e37491779fcb1bc4966d3a61492c"
-SRCREV_machine_qemumips64 ?= "9863b327e770b42b8c18da3e0cfaf06e8f99ae97"
-SRCREV_machine ?= "74f6cd2b6976e37491779fcb1bc4966d3a61492c"
-SRCREV_meta ?= "ea9330894eea727bd1655569b16f338976b72563"
+SRCREV_machine_qemuarm ?= "01420c91452e2d0b3e2979fa28e4223d3febecac"
+SRCREV_machine_qemuarm64 ?= "8a03088a8a605ecaaa3d50fd01df879db51e7658"
+SRCREV_machine_qemumips ?= "ec4f1d52fb385941f77a3611a833153f24354d98"
+SRCREV_machine_qemuppc ?= "51e55e9630dc7bc351dc659eb7fa97446a84cf9f"
+SRCREV_machine_qemux86 ?= "78a16a4d8cfd58f91be412797aac248e811d083b"
+SRCREV_machine_qemux86-64 ?= "78a16a4d8cfd58f91be412797aac248e811d083b"
+SRCREV_machine_qemumips64 ?= "f074d718736e95e8ed5460bf8e85c7e77ff7df87"
+SRCREV_machine ?= "78a16a4d8cfd58f91be412797aac248e811d083b"
+SRCREV_meta ?= "1fb0b0379fb5883ce5af7485374e3f78ee4272d3"
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.14;destsuffix=${KMETA}"
-LINUX_VERSION ?= "4.14.30"
+LINUX_VERSION ?= "4.14.71"
DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
DEPENDS += "openssl-native util-linux-native"
diff --git a/meta/recipes-kernel/linux/linux-yocto_4.15.bb b/meta/recipes-kernel/linux/linux-yocto_4.15.bb
deleted file mode 100644
index 70bd7118bd0..00000000000
--- a/meta/recipes-kernel/linux/linux-yocto_4.15.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-KBRANCH ?= "v4.15/standard/base"
-
-require recipes-kernel/linux/linux-yocto.inc
-
-# board specific branches
-KBRANCH_qemuarm ?= "v4.15/standard/arm-versatile-926ejs"
-KBRANCH_qemuarm64 ?= "v4.15/standard/qemuarm64"
-KBRANCH_qemumips ?= "v4.15/standard/mti-malta32"
-KBRANCH_qemuppc ?= "v4.15/standard/qemuppc"
-KBRANCH_qemux86 ?= "v4.15/standard/base"
-KBRANCH_qemux86-64 ?= "v4.15/standard/base"
-KBRANCH_qemumips64 ?= "v4.15/standard/mti-malta64"
-
-SRCREV_machine_qemuarm ?= "4b6902b42f47593928117b2ff0900cd965cf6443"
-SRCREV_machine_qemuarm64 ?= "91084d030bc841c483c31e8664289c7940aa5506"
-SRCREV_machine_qemumips ?= "19ba2d843750ff65d8fe590acdfc99aea6153945"
-SRCREV_machine_qemuppc ?= "91084d030bc841c483c31e8664289c7940aa5506"
-SRCREV_machine_qemux86 ?= "91084d030bc841c483c31e8664289c7940aa5506"
-SRCREV_machine_qemux86-64 ?= "91084d030bc841c483c31e8664289c7940aa5506"
-SRCREV_machine_qemumips64 ?= "97000c3f4664643bac7828bbdc048f7ec216cc31"
-SRCREV_machine ?= "91084d030bc841c483c31e8664289c7940aa5506"
-SRCREV_meta ?= "939d935b0c992c6f1e51a7a1c9e4fbe6ef3c3174"
-
-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.15;destsuffix=${KMETA}"
-
-LINUX_VERSION ?= "4.15.13"
-
-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_qemuarm = "versatile-pb.dtb"
-
-COMPATIBLE_MACHINE = "qemuarm|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"
-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)}"
diff --git a/meta/recipes-kernel/linux/linux-yocto_4.18.bb b/meta/recipes-kernel/linux/linux-yocto_4.18.bb
new file mode 100644
index 00000000000..948ce3bb955
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-yocto_4.18.bb
@@ -0,0 +1,48 @@
+KBRANCH ?= "v4.18/standard/base"
+
+require recipes-kernel/linux/linux-yocto.inc
+
+# board specific branches
+KBRANCH_qemuarm ?= "v4.18/standard/arm-versatile-926ejs"
+KBRANCH_qemuarm64 ?= "v4.18/standard/qemuarm64"
+KBRANCH_qemumips ?= "v4.18/standard/mti-malta32"
+KBRANCH_qemuppc ?= "v4.18/standard/qemuppc"
+KBRANCH_qemux86 ?= "v4.18/standard/base"
+KBRANCH_qemux86-64 ?= "v4.18/standard/base"
+KBRANCH_qemumips64 ?= "v4.18/standard/mti-malta64"
+
+SRCREV_machine_qemuarm ?= "ef0043f38afb743bffdc39aacc54ea2419da0be3"
+SRCREV_machine_qemuarm64 ?= "0cdc8564c61958a39704d97e008120bd7c762f60"
+SRCREV_machine_qemumips ?= "a6d4477ea91aec9d3d6af538f8f9d27a687540aa"
+SRCREV_machine_qemuppc ?= "0cdc8564c61958a39704d97e008120bd7c762f60"
+SRCREV_machine_qemux86 ?= "0cdc8564c61958a39704d97e008120bd7c762f60"
+SRCREV_machine_qemux86-64 ?= "0cdc8564c61958a39704d97e008120bd7c762f60"
+SRCREV_machine_qemumips64 ?= "766c469b1707fd3101116f572052a7b8d5ac0658"
+SRCREV_machine ?= "0cdc8564c61958a39704d97e008120bd7c762f60"
+SRCREV_meta ?= "607726b2d0b8e1d8c5653003448a24353a88c63b"
+
+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.18;destsuffix=${KMETA}"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
+LINUX_VERSION ?= "4.18.9"
+
+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_qemuarm = "versatile-pb.dtb"
+
+COMPATIBLE_MACHINE = "qemuarm|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"
+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)}"
diff --git a/meta/recipes-kernel/lttng/babeltrace_1.5.4.bb b/meta/recipes-kernel/lttng/babeltrace_1.5.6.bb
index a29402adb16..f5c31c44633 100644
--- a/meta/recipes-kernel/lttng/babeltrace_1.5.4.bb
+++ b/meta/recipes-kernel/lttng/babeltrace_1.5.6.bb
@@ -2,18 +2,19 @@ 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"
-inherit autotools pkgconfig
+SRC_URI = "git://git.linuxfoundation.org/diamon/babeltrace.git;branch=stable-1.5"
+SRCREV = "4f10a4adabee5ca61c27ba399b3438505e0cd6de"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)$"
-SRC_URI = "http://www.efficios.com/files/babeltrace/babeltrace-${PV}.tar.bz2 \
-"
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
EXTRA_OECONF = "--disable-debug-info"
-SRC_URI[md5sum] = "3e8cdafec3ac0346a389870e87bf1344"
-SRC_URI[sha256sum] = "9643039923a0abc75a25b3d594cee0017423b57f10d2b625e96ed1e8d4891fc1"
+ASNEEDED = ""
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-btrfs-Remove-unnecessary-fs_info-parameter.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-btrfs-Remove-unnecessary-fs_info-parameter.patch
new file mode 100644
index 00000000000..0fe4ee8294e
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-btrfs-Remove-unnecessary-fs_info-parameter.patch
@@ -0,0 +1,116 @@
+From 51ab0b1da29354375a19f865abcd233dd2178295 Mon Sep 17 00:00:00 2001
+From: Michael Jeanson <mjeanson@efficios.com>
+Date: Mon, 18 Jun 2018 14:53:19 -0400
+Subject: [PATCH] Fix: btrfs: Remove unnecessary fs_info parameter
+
+See upstream commit:
+
+ commit 3dca5c942dac60164e6a6e89172f25b86af07ce7
+ Author: Qu Wenruo <wqu@suse.com>
+ Date: Thu Apr 26 14:24:25 2018 +0800
+
+ btrfs: trace: Remove unnecessary fs_info parameter for btrfs__reserve_extent event class
+
+ fs_info can be extracted from btrfs_block_group_cache, and all
+ btrfs_block_group_cache is created by btrfs_create_block_group_cache()
+ with fs_info initialized, no need to worry about NULL pointer
+ dereference.
+
+Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+Upstream-Status: Backport
+Signed-off-by: He Zhe <zhe.he@windriver.com>
+---
+ instrumentation/events/lttng-module/btrfs.h | 54 ++++++++++++++++++++++++++++-
+ 1 file changed, 53 insertions(+), 1 deletion(-)
+
+diff --git a/instrumentation/events/lttng-module/btrfs.h b/instrumentation/events/lttng-module/btrfs.h
+index 75cc73b..fd1b6b8 100644
+--- a/instrumentation/events/lttng-module/btrfs.h
++++ b/instrumentation/events/lttng-module/btrfs.h
+@@ -1658,8 +1658,57 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent, btrfs_reserved_extent_f
+
+ #endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) */
+
+-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0))
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,18,0))
++LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
++
++ btrfs_find_free_extent,
++
++ TP_PROTO(const struct btrfs_fs_info *info, u64 num_bytes, u64 empty_size,
++ u64 data),
++
++ TP_ARGS(info, num_bytes, empty_size, data),
++
++ TP_FIELDS(
++ ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE)
++ ctf_integer(u64, num_bytes, num_bytes)
++ ctf_integer(u64, empty_size, empty_size)
++ ctf_integer(u64, data, data)
++ )
++)
++
++LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent,
++
++ TP_PROTO(const struct btrfs_block_group_cache *block_group, u64 start,
++ u64 len),
++
++ TP_ARGS(block_group, start, len),
++
++ TP_FIELDS(
++ ctf_array(u8, fsid, block_group->fs_info->fsid, BTRFS_UUID_SIZE)
++ ctf_integer(u64, bg_objectid, block_group->key.objectid)
++ ctf_integer(u64, flags, block_group->flags)
++ ctf_integer(u64, start, start)
++ ctf_integer(u64, len, len)
++ )
++)
++
++LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent,
++
++ TP_PROTO(const struct btrfs_block_group_cache *block_group, u64 start,
++ u64 len),
++
++ TP_ARGS(block_group, start, len)
++)
++
++LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_cluster,
++
++ TP_PROTO(const struct btrfs_block_group_cache *block_group, u64 start,
++ u64 len),
++
++ TP_ARGS(block_group, start, len)
++)
+
++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0))
+ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
+
+ btrfs_find_free_extent,
+@@ -1670,6 +1719,7 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
+ TP_ARGS(info, num_bytes, empty_size, data),
+
+ TP_FIELDS(
++ ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE)
+ ctf_integer(u64, num_bytes, num_bytes)
+ ctf_integer(u64, empty_size, empty_size)
+ ctf_integer(u64, data, data)
+@@ -1685,6 +1735,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent,
+ TP_ARGS(info, block_group, start, len),
+
+ TP_FIELDS(
++ ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE)
+ ctf_integer(u64, bg_objectid, block_group->key.objectid)
+ ctf_integer(u64, flags, block_group->flags)
+ ctf_integer(u64, start, start)
+@@ -1722,6 +1773,7 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
+ TP_ARGS(info, num_bytes, empty_size, data),
+
+ TP_FIELDS(
++ ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE)
+ ctf_integer(u64, num_bytes, num_bytes)
+ ctf_integer(u64, empty_size, empty_size)
+ ctf_integer(u64, data, data)
+--
+2.13.3
+
diff --git a/meta/recipes-kernel/lttng/lttng-modules_2.10.5.bb b/meta/recipes-kernel/lttng/lttng-modules_2.10.7.bb
index 370b78aae14..4f14106047e 100644
--- a/meta/recipes-kernel/lttng/lttng-modules_2.10.5.bb
+++ b/meta/recipes-kernel/lttng/lttng-modules_2.10.7.bb
@@ -11,13 +11,14 @@ inherit module
COMPATIBLE_HOST = '(x86_64|i.86|powerpc|aarch64|mips|nios2|arm).*-linux'
+#https://lttng.org/files/lttng-modules/lttng-modules-2.10.7.tar.bz2
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] = "4aaabaafd15d9455c83972e26ccfbca7"
-SRC_URI[sha256sum] = "b8dbbbee45a673c381f51b99c555e36655c3c2c7a5477aab927591cc7f003a1f"
+SRC_URI[md5sum] = "d3cb4520948083bf1573a2e4cb7406aa"
+SRC_URI[sha256sum] = "f049428d3d131e103a7a7038d184731bf7bcdce00503fc19a2c9b5693ecbb3b5"
export INSTALL_MOD_DIR="kernel/lttng-modules"
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-Allow-multiple-attempts-to-connect-to-relayd.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-Allow-multiple-attempts-to-connect-to-relayd.patch
new file mode 100644
index 00000000000..62a0978592d
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-tools/0001-Allow-multiple-attempts-to-connect-to-relayd.patch
@@ -0,0 +1,43 @@
+From 70eff899104b86bae02862927c76caaef5de5d3c Mon Sep 17 00:00:00 2001
+From: Mikael Beckius <mikael.beckius@windriver.com>
+Date: Thu, 7 May 2015 16:14:25 +0200
+Subject: [PATCH] Allow multiple attempts to connect to relayd.
+
+It is unclear why a session needs to be made
+unusable after a failure to connect to relayd
+since a check for a relayd connection is
+always made before a session can be configured.
+
+The behaviour was introduced in:
+d9078d0c000d04d49c599a72c1a725026b636ec0
+
+Signed-off-by: Mikael Beckius <mikael.beckius@windriver.com>
+[ The context has moved, adjust the hunk accordingly ]
+Signed-off-by: He Zhe <zhe.he@windriver.com>
+Upstream-Status: Pending
+---
+ src/bin/lttng-sessiond/cmd.c | 8 --------
+ 1 file changed, 8 deletions(-)
+
+diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c
+index 73b4ce3..36f62ee 100644
+--- a/src/bin/lttng-sessiond/cmd.c
++++ b/src/bin/lttng-sessiond/cmd.c
+@@ -689,14 +689,6 @@ close_sock:
+ free(rsock);
+
+ error:
+- if (ret != LTTNG_OK) {
+- /*
+- * The consumer output for this session should not be used anymore
+- * since the relayd connection failed thus making any tracing or/and
+- * streaming not usable.
+- */
+- consumer->enabled = 0;
+- }
+ return ret;
+ }
+
+--
+1.7.9.5
+
diff --git a/meta/recipes-kernel/lttng/lttng-tools/lttng-sessiond.service b/meta/recipes-kernel/lttng/lttng-tools/lttng-sessiond.service
new file mode 100644
index 00000000000..aaf81305923
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-tools/lttng-sessiond.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=LTTng 2.x central tracing registry session daemon
+
+[Service]
+Type=forking
+ExecStart=/usr/bin/lttng-sessiond -d
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta/recipes-kernel/lttng/lttng-tools_2.9.5.bb b/meta/recipes-kernel/lttng/lttng-tools_2.9.5.bb
index 93626dd4b5f..0314b536376 100644
--- a/meta/recipes-kernel/lttng/lttng-tools_2.9.5.bb
+++ b/meta/recipes-kernel/lttng/lttng-tools_2.9.5.bb
@@ -30,12 +30,17 @@ PACKAGECONFIG_remove_riscv64 = "lttng-ust"
SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \
file://x32.patch \
file://run-ptest \
+ file://0001-Allow-multiple-attempts-to-connect-to-relayd.patch \
+ file://lttng-sessiond.service \
"
SRC_URI[md5sum] = "051224eb991aee07f8721ff1877d0b96"
SRC_URI[sha256sum] = "77839eb6fc6c652125f08acfd9369701c2516eb05cc2084160e7efc7a3fb731c"
-inherit autotools ptest pkgconfig useradd python3-dir manpages
+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"
@@ -51,6 +56,12 @@ FILES_${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la"
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 ; do
install -D "${B}/$f" "${D}${PTEST_PATH}/$f"
diff --git a/meta/recipes-kernel/perf/perf-perl.inc b/meta/recipes-kernel/perf/perf-perl.inc
new file mode 100644
index 00000000000..ae77319b203
--- /dev/null
+++ b/meta/recipes-kernel/perf/perf-perl.inc
@@ -0,0 +1,7 @@
+inherit perlnative cpan-base
+
+# Env var which tells perl if it should use host (no) or target (yes) settings
+export PERLCONFIGTARGET = "${@is_target(d)}"
+export PERL_INC = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version(d)}/CORE"
+export PERL_LIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version(d)}"
+export PERL_ARCHLIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version(d)}"
diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb
index 872b5f028ac..514c87835d0 100644
--- a/meta/recipes-kernel/perf/perf.bb
+++ b/meta/recipes-kernel/perf/perf.bb
@@ -12,6 +12,7 @@ LICENSE = "GPLv2"
PR = "r9"
PACKAGECONFIG ??= "scripting tui libunwind"
+PACKAGECONFIG[dwarf] = ",NO_DWARF=1"
PACKAGECONFIG[scripting] = ",NO_LIBPERL=1 NO_LIBPYTHON=1,perl python"
# gui support was added with kernel 3.6.35
# since 3.10 libnewt was replaced by slang
@@ -38,7 +39,7 @@ do_configure[depends] += "virtual/kernel:do_shared_workdir"
PROVIDES = "virtual/perf"
-inherit linux-kernel-base kernel-arch
+inherit linux-kernel-base kernel-arch manpages
# needed for building the tools/perf Python bindings
inherit ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'pythonnative', '', d)}
@@ -51,17 +52,11 @@ export WERROR = "0"
do_populate_lic[depends] += "virtual/kernel:do_patch"
# needed for building the tools/perf Perl binding
-inherit ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'perlnative', '', d)}
-inherit cpan-base
-# Env var which tells perl if it should use host (no) or target (yes) settings
-export PERLCONFIGTARGET = "${@is_target(d)}"
-export PERL_INC = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version(d)}/CORE"
-export PERL_LIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version(d)}"
-export PERL_ARCHLIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version(d)}"
+include ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'perf-perl.inc', '', d)}
inherit kernelsrc
-B = "${WORKDIR}/${BPN}-${PV}"
+S = "${WORKDIR}/${BP}"
SPDX_S = "${S}/tools/perf"
# The LDFLAGS is required or some old kernels fails due missing
@@ -80,7 +75,7 @@ EXTRA_OEMAKE = '\
EXTRA_CFLAGS="-ldw" \
EXTRA_LDFLAGS="${PERF_EXTRA_LDFLAGS}" \
perfexecdir=${libexecdir} \
- NO_GTK2=1 NO_DWARF=1 \
+ NO_GTK2=1 \
${PACKAGECONFIG_CONFARGS} \
'
@@ -97,6 +92,24 @@ EXTRA_OEMAKE += "\
'infodir=${@os.path.relpath(infodir, prefix)}' \
"
+# During do_configure, we might run a 'make clean'. That often breaks
+# when done in parallel, so disable parallelism for do_configure. Note
+# 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"
+
+PERF_SRC ?= "Makefile \
+ include \
+ tools/arch \
+ tools/build \
+ tools/include \
+ tools/lib \
+ tools/Makefile \
+ tools/perf \
+ tools/scripts \
+"
+
PERF_EXTRA_LDFLAGS = ""
# MIPS N32
@@ -119,11 +132,24 @@ do_install() {
fi
}
-do_configure_prepend () {
- # Fix for rebuilding
- rm -rf ${B}/
- mkdir -p ${B}/
+do_configure[prefuncs] += "copy_perf_source_from_kernel"
+python copy_perf_source_from_kernel() {
+ sources = (d.getVar("PERF_SRC") or "").split()
+ src_dir = d.getVar("STAGING_KERNEL_DIR")
+ dest_dir = d.getVar("S")
+ bb.utils.mkdirhier(dest_dir)
+ for s in sources:
+ src = oe.path.join(src_dir, s)
+ dest = oe.path.join(dest_dir, s)
+ if not os.path.exists(src):
+ bb.fatal("Path does not exist: %s. Maybe PERF_SRC does not match the kernel version." % src)
+ if os.path.isdir(src):
+ oe.path.copyhardlinktree(src, dest)
+ else:
+ bb.utils.copyfile(src, dest)
+}
+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
@@ -217,7 +243,6 @@ PACKAGE_ARCH = "${MACHINE_ARCH}"
PACKAGES =+ "${PN}-archive ${PN}-tests ${PN}-perl ${PN}-python"
RDEPENDS_${PN} += "elfutils bash"
-RDEPENDS_${PN}-doc += "man"
RDEPENDS_${PN}-archive =+ "bash"
RDEPENDS_${PN}-python =+ "bash python python-modules ${@bb.utils.contains('PACKAGECONFIG', 'audit', 'audit-python', '', d)}"
RDEPENDS_${PN}-perl =+ "bash perl perl-modules"
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
index e28fdcad948..ade51cf864f 100644
--- 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
@@ -1,26 +1,27 @@
-From c2495a4c042e6a675da69bab20cc3669391e8e2a Mon Sep 17 00:00:00 2001
+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 1/2] Do not build anything in help/ as it requires itstool.
+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 4ac3934..8c4369a 100644
+index 3986273..ae2f65e 100644
--- a/meson.build
+++ b/meson.build
-@@ -116,7 +116,6 @@ subdir('tools')
+@@ -164,7 +164,6 @@ subdir('tools')
subdir('tests')
subdir('data')
-subdir('help')
subdir('po')
- meson.add_install_script('build-aux/meson_post_install.sh')
+ meson.add_install_script('build-aux/meson/post_install.sh')
--
-2.14.1
+2.7.4
diff --git a/meta/recipes-kernel/sysprof/files/0001-fix-non-literal-format-string-issues.patch b/meta/recipes-kernel/sysprof/files/0001-fix-non-literal-format-string-issues.patch
new file mode 100644
index 00000000000..38f9f5f66a8
--- /dev/null
+++ b/meta/recipes-kernel/sysprof/files/0001-fix-non-literal-format-string-issues.patch
@@ -0,0 +1,34 @@
+From de13d1f908335cc882c447e4d7c4360b9e5da190 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 6 Sep 2018 17:49:44 -0700
+Subject: [PATCH] fix non-literal format string issues
+
+clang errors out when using -Werror=format-nonliteral
+since the definition of g_strdup_vprintf() from glib-2.0
+is using va_list and clangs still warns where as
+gcc doesn't do that for va_list arguments
+
+Fixes
+src/sp-window.c:96:27: error: format string is not a string literal [-Werror,-Wformat-nonliteral]
+| str = g_strdup_vprintf (format, args);
+| ^~~~~~
+
+Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/sysprof/merge_requests/6]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/sp-window.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/sp-window.c b/src/sp-window.c
+index 4dfac2d..aff4779 100644
+--- a/src/sp-window.c
++++ b/src/sp-window.c
+@@ -80,7 +80,7 @@ static guint signals [N_SIGNALS];
+ static void sp_window_set_profiler (SpWindow *self,
+ SpProfiler *profiler);
+
+-static void
++static G_GNUC_PRINTF(3, 4) void
+ sp_window_notify_user (SpWindow *self,
+ GtkMessageType message_type,
+ const gchar *format,
diff --git a/meta/recipes-kernel/sysprof/files/wordsize.patch b/meta/recipes-kernel/sysprof/files/wordsize.patch
new file mode 100644
index 00000000000..d65b13a682f
--- /dev/null
+++ b/meta/recipes-kernel/sysprof/files/wordsize.patch
@@ -0,0 +1,38 @@
+Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/sysprof/merge_requests/5]
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From bc7e3e27c28d0bab8bea72f2314191532b2e7840 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Fri, 7 Sep 2018 01:30:09 +0100
+Subject: [PATCH] capture: use size of void* instead of glibc-specific
+ __WORDSIZE
+
+__WORDSIZE is glibc-specific so sp-capture-types.h doesn't work with musl.
+---
+ lib/capture/sp-capture-types.h | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/lib/capture/sp-capture-types.h b/lib/capture/sp-capture-types.h
+index 48fcfb8..1d6cd1d 100644
+--- a/lib/capture/sp-capture-types.h
++++ b/lib/capture/sp-capture-types.h
+@@ -32,12 +32,14 @@ G_BEGIN_DECLS
+ #define SP_CAPTURE_MAGIC (GUINT32_TO_LE(0xFDCA975E))
+ #define SP_CAPTURE_ALIGN (sizeof(SpCaptureAddress))
+
+-#if __WORDSIZE == 64
++#if GLIB_SIZEOF_VOID_P == 8
+ # define SP_CAPTURE_JITMAP_MARK G_GUINT64_CONSTANT(0xE000000000000000)
+ # define SP_CAPTURE_ADDRESS_FORMAT "0x%016lx"
+-#else
++#elif GLIB_SIZEOF_VOID_P == 4
+ # define SP_CAPTURE_JITMAP_MARK G_GUINT64_CONSTANT(0xE0000000)
+ # define SP_CAPTURE_ADDRESS_FORMAT "0x%016llx"
++#else
++#error Unknown GLIB_SIZEOF_VOID_P
+ #endif
+
+ #define SP_CAPTURE_CURRENT_TIME (sp_clock_get_current_time())
+--
+2.11.0
+
diff --git a/meta/recipes-kernel/sysprof/sysprof_3.26.1.bb b/meta/recipes-kernel/sysprof/sysprof_3.30.0.bb
index 1989b52a77d..19dcf25a51d 100644
--- a/meta/recipes-kernel/sysprof/sysprof_3.26.1.bb
+++ b/meta/recipes-kernel/sysprof/sysprof_3.30.0.bb
@@ -9,12 +9,15 @@ inherit gnomebase gettext systemd upstream-version-is-even
DEPENDS = "glib-2.0 libxml2-native glib-2.0-native"
-SRC_URI[archive.md5sum] = "6f9f947960ba79bb1269d8ee49b7db78"
-SRC_URI[archive.sha256sum] = "d8b9d5c2246696e4a3776a312731dc7c014fbd33478bb14d5512c6f1f35a3b11"
+SRC_URI[archive.md5sum] = "ae896a8a2364e18c07fafa9573202f59"
+SRC_URI[archive.sha256sum] = "29cd2c4be277f00698dce48259219557c4fddc2c01254b8fac95900a8c663f63"
SRC_URI += " \
file://define-NT_GNU_BUILD_ID.patch \
file://0001-Do-not-build-anything-in-help-as-it-requires-itstool.patch \
+ file://wordsize.patch \
+ file://0001-fix-non-literal-format-string-issues.patch \
"
+RECIPE_NO_UPDATE_REASON = "Waiting for resolution of https://bugzilla.gnome.org/show_bug.cgi?id=794625"
PACKAGECONFIG ?= "${@bb.utils.contains_any('DISTRO_FEATURES', '${GTK3DISTROFEATURES}', 'gtk', '', d)}"
PACKAGECONFIG[gtk] = "-Denable_gtk=true,-Denable_gtk=false,gtk+3"
@@ -25,10 +28,8 @@ FILES_SOLIBSDEV = ""
SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'sysprofd', 'sysprof2.service', '', d)}"
-# We do not yet work for aarch64.
-COMPATIBLE_HOST = "^(?!aarch64).*"
-
FILES_${PN} += " \
${datadir}/dbus-1/system-services \
${datadir}/dbus-1/system.d \
+ ${datadir}/metainfo \
"
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-Added-a-couple-of-small-sysroot-fixes.patch b/meta/recipes-kernel/systemtap/systemtap/0001-Added-a-couple-of-small-sysroot-fixes.patch
deleted file mode 100644
index c0ceb5a4126..00000000000
--- a/meta/recipes-kernel/systemtap/systemtap/0001-Added-a-couple-of-small-sysroot-fixes.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From a714658727206d2a98a7194b7e6d29dbd3e27b8d Mon Sep 17 00:00:00 2001
-From: David Smith <dsmith@redhat.com>
-Date: Mon, 19 Mar 2018 16:50:05 -0500
-Subject: [PATCH] Added a couple of small sysroot fixes.
-
-* tapsets.cxx (dwarf_builder::build): Fix commit 4ffecddf5.
- (path_remove_sysroot): Fix extra '/' present at start of paths.
-
-Upstream-Status: Backport
-Signed-off-by: Victor Kamensky <kamensky@cisco.com>
----
- tapsets.cxx | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
-
-Index: git/tapsets.cxx
-===================================================================
---- git.orig/tapsets.cxx
-+++ git/tapsets.cxx
-@@ -1395,7 +1395,8 @@ string path_remove_sysroot(const systemt
- string retval = path;
- if (!sess.sysroot.empty() &&
- (pos = retval.find(sess.sysroot)) != string::npos)
-- retval.replace(pos, sess.sysroot.length(), "/");
-+ retval.replace(pos, sess.sysroot.length(),
-+ (sess.sysroot.back() == '/' ? "/": ""));
- return retval;
- }
-
-@@ -8412,8 +8413,11 @@ dwarf_builder::build(systemtap_session &
-
- // PR13338: unquote glob results
- module_name = unescape_glob_chars (module_name);
-- user_path = find_executable (module_name, "", sess.sysenv); // canonicalize it
-- if (!is_fully_resolved(user_path, sess.sysroot, sess.sysenv))
-+ user_path = find_executable (module_name, sess.sysroot, sess.sysenv); // canonicalize it
-+ // Note we don't need to pass the sysroot to
-+ // is_fully_resolved(), since we just passed it to
-+ // find_executable().
-+ if (!is_fully_resolved(user_path, "", sess.sysenv))
- throw SEMANTIC_ERROR(_F("cannot find executable '%s'",
- user_path.to_string().c_str()));
-
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-Delay-adding-sysroot-path-to-module-name-in-case-of-.patch b/meta/recipes-kernel/systemtap/systemtap/0001-Delay-adding-sysroot-path-to-module-name-in-case-of-.patch
deleted file mode 100644
index 89951a2f19d..00000000000
--- a/meta/recipes-kernel/systemtap/systemtap/0001-Delay-adding-sysroot-path-to-module-name-in-case-of-.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 4ffecddf5433d65a6f01241990c9d516586b1c79 Mon Sep 17 00:00:00 2001
-From: Victor Kamensky <kamensky@cisco.com>
-Date: Mon, 19 Mar 2018 08:53:51 -0500
-Subject: [PATCH] Delay adding sysroot path to module name in case of non
- absolute executable
-
-Current stap code adds sysroot prematurely for probes that specify non
-absolute path name, i.e like "foo", so when find_executable called it
-receives full path as <sysroot>/foo and find_executable does not search
-PATH while applying sysroot.
-
-Fix delays adding sysroot till path inside of sysroot is searched first.
-
-Also fix missing sysroot addition in glob expansion case.
-
-Upstream-Status: Backport
-Signed-off-by: Victor Kamensky <kamensky@cisco.com>
----
- tapsets.cxx | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-Index: git/tapsets.cxx
-===================================================================
---- git.orig/tapsets.cxx
-+++ git/tapsets.cxx
-@@ -746,7 +746,7 @@ base_query::base_query(dwflpp & dw, lite
- pid_val = 0;
- get_string_param(params, TOK_PROCESS, module_val);
- }
-- module_val = find_executable (module_val, "", sess.sysenv);
-+ module_val = find_executable (module_val, sess.sysroot, sess.sysenv);
- if (!is_fully_resolved(module_val, "", sess.sysenv))
- throw SEMANTIC_ERROR(_F("cannot find executable '%s'",
- module_val.to_string().c_str()));
-@@ -8287,7 +8287,6 @@ dwarf_builder::build(systemtap_session &
- }
- else
- {
-- module_name = (string)sess.sysroot + (string)module_name;
- filled_parameters[TOK_PROCESS] = new literal_string(module_name);
- }
- }
-@@ -8321,7 +8320,8 @@ dwarf_builder::build(systemtap_session &
- assert (lit);
-
- // Evaluate glob here, and call derive_probes recursively with each match.
-- const auto& globs = glob_executable (module_name);
-+ const auto& globs = glob_executable (sess.sysroot
-+ + string(module_name));
- unsigned results_pre = finished_results.size();
- for (auto it = globs.begin(); it != globs.end(); ++it)
- {
-@@ -8413,7 +8413,7 @@ dwarf_builder::build(systemtap_session &
- // PR13338: unquote glob results
- module_name = unescape_glob_chars (module_name);
- user_path = find_executable (module_name, "", sess.sysenv); // canonicalize it
-- if (!is_fully_resolved(user_path, "", sess.sysenv))
-+ if (!is_fully_resolved(user_path, sess.sysroot, sess.sysenv))
- throw SEMANTIC_ERROR(_F("cannot find executable '%s'",
- user_path.to_string().c_str()));
-
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-Fix-PR22551-by-updating-the-use-of-timers-for-the-4..patch b/meta/recipes-kernel/systemtap/systemtap/0001-Fix-PR22551-by-updating-the-use-of-timers-for-the-4..patch
deleted file mode 100644
index 460c3b7609f..00000000000
--- a/meta/recipes-kernel/systemtap/systemtap/0001-Fix-PR22551-by-updating-the-use-of-timers-for-the-4..patch
+++ /dev/null
@@ -1,277 +0,0 @@
-From fbb26e17a4c026f05a497fc5d584516bad3b6950 Mon Sep 17 00:00:00 2001
-From: David Smith <dsmith@redhat.com>
-Date: Wed, 6 Dec 2017 14:37:42 -0600
-Subject: [PATCH] Fix PR22551 by updating the use of timers for the 4.15
- kernel.
-
-* runtime/linux/timer_compatibility.h: New file.
-* runtime/time.c: Update timer callback function parameter type. Update
- timer initialization.
-* runtime/transport/relay_v2.c: Ditto.
-* runtime/transport/transport.c: Ditto.
-* tapset-timers.cxx (timer_derived_probe_group::emit_module_decls):
- Ditto. Handle old and new timer callback interface.
-* runtime/linux/runtime.h: Include timer_compatibility.h instead of timer.h.
-* tapset/linux/scsi.stp: Ditto.
-
-Upstream-Status: Backport
-Signed-off-by: Victor Kamensky <kamensky@cisco.com>
-
----
- runtime/linux/runtime.h | 2 +-
- runtime/linux/timer_compatibility.h | 76 +++++++++++++++++++++++++++++++++++++
- runtime/time.c | 7 ++--
- runtime/transport/relay_v2.c | 8 ++--
- runtime/transport/transport.c | 13 +++----
- tapset-timers.cxx | 14 +++++--
- tapset/linux/scsi.stp | 2 +-
- 7 files changed, 100 insertions(+), 22 deletions(-)
- create mode 100644 runtime/linux/timer_compatibility.h
-
-diff --git a/runtime/linux/runtime.h b/runtime/linux/runtime.h
-index 9c585a2..df9b74c 100644
---- a/runtime/linux/runtime.h
-+++ b/runtime/linux/runtime.h
-@@ -34,7 +34,7 @@
- #include <linux/compat.h>
- #include <linux/sched.h>
- #include <linux/mm.h>
--#include <linux/timer.h>
-+#include "timer_compatibility.h"
- #include <linux/delay.h>
- #include <linux/profile.h>
- #include <linux/rcupdate.h>
-diff --git a/runtime/linux/timer_compatibility.h b/runtime/linux/timer_compatibility.h
-new file mode 100644
-index 0000000..ac03de9
---- /dev/null
-+++ b/runtime/linux/timer_compatibility.h
-@@ -0,0 +1,76 @@
-+/*
-+ * linux/timer.h compatibility defines and inlines
-+ * Copyright (C) 2017 Red Hat Inc.
-+ *
-+ * This file is part of systemtap, and is free software. You can
-+ * redistribute it and/or modify it under the terms of the GNU General
-+ * Public License (GPL); either version 2, or (at your option) any
-+ * later version.
-+ */
-+
-+#ifndef _TIMER_COMPATIBILITY_H_
-+#define _TIMER_COMPATIBILITY_H_
-+
-+#include <linux/timer.h>
-+
-+/*
-+ * Starting with the 4.15 kernel, the timer interface
-+ * changed. Originally, you'd do something like:
-+ *
-+ * static void timer_func(unsigned long val);
-+ *
-+ * init_timer(&timer);
-+ * timer.expires = jiffies + STP_RELAY_TIMER_INTERVAL;
-+ * timer.function = timer_func;
-+ * timer.data = 0;
-+ * add_timer(&timer);
-+ *
-+ * The 'data' parameter would get passed to the callback
-+ * function. Starting with 4.15, you'd do something like this:
-+ *
-+ * static void timer_func(struct timer_list *val);
-+ *
-+ * timer_setup(&timer, timer_func, 0);
-+ * timer.expires = jiffies + STP_RELAY_TIMER_INTERVAL;
-+ * add_timer(&timer);
-+ *
-+ * With the new code, the timer that caused the callback gets passed
-+ * to the timer callback function. The 'data' field has been removed.
-+ *
-+ * So, we're going to use the new interface. To hide the differences
-+ * between the callback function parameter type, we'll define a new
-+ * type, 'stp_timer_callback_parameter_t'.
-+ *
-+ * If code needs to figure out the difference between the old and new
-+ * interface, it should test the TIMER_TRACE_FLAGMASK define (which
-+ * only exists in the new interface).
-+ */
-+
-+#if defined(TIMER_TRACE_FLAGMASK)
-+/* This is the >= 4.15 kernel interface. */
-+
-+typedef struct timer_list * stp_timer_callback_parameter_t;
-+
-+#else
-+/* This is the < 4.15 kernel interface. */
-+
-+typedef unsigned long stp_timer_callback_parameter_t;
-+
-+/**
-+ * timer_setup - prepare a timer for first use
-+ * @timer: the timer in question
-+ * @callback: the function to call when timer expires
-+ * @flags: any TIMER_* flags (note that anything other than 0 is an
-+ * error, since this compatibility function can't support any
-+ * of the TIMER_* flags)
-+ */
-+#define timer_setup(timer, callback, flags) \
-+ { \
-+ init_timer((timer)); \
-+ (timer)->function = callback; \
-+ (timer)->data = 0; \
-+ BUILD_BUG_ON_ZERO((flags) != 0); \
-+ }
-+#endif
-+
-+#endif /* _TIMER_COMPATIBILITY_H_ */
-diff --git a/runtime/time.c b/runtime/time.c
-index 2e666d5..91ceafa 100644
---- a/runtime/time.c
-+++ b/runtime/time.c
-@@ -168,10 +168,10 @@ __stp_time_smp_callback(void *val)
-
- /* The timer callback is in a softIRQ -- interrupts enabled. */
- static void
--__stp_time_timer_callback(unsigned long val)
-+__stp_time_timer_callback(stp_timer_callback_parameter_t unused)
- {
- stp_time_t *time =__stp_time_local_update();
-- (void) val;
-+ (void) unused;
-
- /* PR6481: make sure IRQs are enabled before resetting the timer
- (IRQs are disabled and then reenabled in
-@@ -200,9 +200,8 @@ __stp_init_time(void *info)
- time->freq = __stp_get_freq();
- __stp_time_local_update();
-
-- init_timer(&time->timer);
-+ timer_setup(&time->timer, __stp_time_timer_callback, 0);
- time->timer.expires = jiffies + STP_TIME_SYNC_INTERVAL;
-- time->timer.function = __stp_time_timer_callback;
-
- #ifndef STAPCONF_ADD_TIMER_ON
- add_timer(&time->timer);
-diff --git a/runtime/transport/relay_v2.c b/runtime/transport/relay_v2.c
-index f81d75d..135951a 100644
---- a/runtime/transport/relay_v2.c
-+++ b/runtime/transport/relay_v2.c
-@@ -30,7 +30,7 @@
- #include <linux/debugfs.h>
- #include <linux/mm.h>
- #include <linux/relay.h>
--#include <linux/timer.h>
-+#include "../linux/timer_compatibility.h"
- #include "../uidgid_compatibility.h"
- #include "relay_compat.h"
-
-@@ -120,7 +120,7 @@ static void __stp_relay_wakeup_readers(struct rchan_buf *buf)
- wake_up_interruptible(&buf->read_wait);
- }
-
--static void __stp_relay_wakeup_timer(unsigned long val)
-+static void __stp_relay_wakeup_timer(stp_timer_callback_parameter_t unused)
- {
- #ifdef STP_BULKMODE
- int i;
-@@ -151,10 +151,8 @@ static void __stp_relay_wakeup_timer(unsigned long val)
- static void __stp_relay_timer_init(void)
- {
- atomic_set(&_stp_relay_data.wakeup, 0);
-- init_timer(&_stp_relay_data.timer);
-+ timer_setup(&_stp_relay_data.timer, __stp_relay_wakeup_timer, 0);
- _stp_relay_data.timer.expires = jiffies + STP_RELAY_TIMER_INTERVAL;
-- _stp_relay_data.timer.function = __stp_relay_wakeup_timer;
-- _stp_relay_data.timer.data = 0;
- add_timer(&_stp_relay_data.timer);
- smp_mb();
- }
-diff --git a/runtime/transport/transport.c b/runtime/transport/transport.c
-index 3400f22..320fd18 100644
---- a/runtime/transport/transport.c
-+++ b/runtime/transport/transport.c
-@@ -311,7 +311,7 @@ static void _stp_detach(void)
- }
-
-
--static void _stp_ctl_work_callback(unsigned long val);
-+static void _stp_ctl_work_callback(stp_timer_callback_parameter_t unused);
-
- /*
- * Called when stapio opens the control channel.
-@@ -320,13 +320,12 @@ static void _stp_attach(void)
- {
- dbug_trans(1, "attach\n");
- _stp_pid = current->pid;
-- if (_stp_namespaces_pid < 1)
-- _stp_namespaces_pid = _stp_pid;
-+ if (_stp_namespaces_pid < 1)
-+ _stp_namespaces_pid = _stp_pid;
- _stp_transport_data_fs_overwrite(0);
-- init_timer(&_stp_ctl_work_timer);
-+
-+ timer_setup(&_stp_ctl_work_timer, _stp_ctl_work_callback, 0);
- _stp_ctl_work_timer.expires = jiffies + STP_CTL_TIMER_INTERVAL;
-- _stp_ctl_work_timer.function = _stp_ctl_work_callback;
-- _stp_ctl_work_timer.data= 0;
- add_timer(&_stp_ctl_work_timer);
- }
-
-@@ -341,7 +340,7 @@ static void _stp_attach(void)
- * notified. Reschedules itself if someone is still attached
- * to the cmd channel.
- */
--static void _stp_ctl_work_callback(unsigned long val)
-+static void _stp_ctl_work_callback(stp_timer_callback_parameter_t unused)
- {
- int do_io = 0;
- unsigned long flags;
-diff --git a/tapset-timers.cxx b/tapset-timers.cxx
-index 1a40bcd..0ab4d69 100644
---- a/tapset-timers.cxx
-+++ b/tapset-timers.cxx
-@@ -122,9 +122,13 @@ timer_derived_probe_group::emit_module_decls (systemtap_session& s)
- s.op->newline(-1) << "};";
- s.op->newline();
-
-- s.op->newline() << "static void enter_timer_probe (unsigned long val) {";
-+ s.op->newline() << "static void enter_timer_probe (stp_timer_callback_parameter_t val) {";
-+ s.op->newline() << "#if defined(TIMER_TRACE_FLAGMASK)";
-+ s.op->newline(1) << "struct stap_timer_probe* stp = container_of(val, struct stap_timer_probe, timer_list);";
-+ s.op->newline(-1) << "#else";
- s.op->newline(1) << "struct stap_timer_probe* stp = & stap_timer_probes [val];";
-- s.op->newline() << "if ((atomic_read (session_state()) == STAP_SESSION_STARTING) ||";
-+ s.op->newline(-1) << "#endif";
-+ s.op->newline(1) << "if ((atomic_read (session_state()) == STAP_SESSION_STARTING) ||";
- s.op->newline() << " (atomic_read (session_state()) == STAP_SESSION_RUNNING))";
- s.op->newline(1) << "mod_timer (& stp->timer_list, jiffies + ";
- emit_interval (s.op);
-@@ -148,9 +152,11 @@ timer_derived_probe_group::emit_module_init (systemtap_session& s)
- s.op->newline() << "for (i=0; i<" << probes.size() << "; i++) {";
- s.op->newline(1) << "struct stap_timer_probe* stp = & stap_timer_probes [i];";
- s.op->newline() << "probe_point = stp->probe->pp;";
-- s.op->newline() << "init_timer (& stp->timer_list);";
-- s.op->newline() << "stp->timer_list.function = & enter_timer_probe;";
-+
-+ s.op->newline() << "timer_setup (& stp->timer_list, enter_timer_probe, 0);";
-+ s.op->newline() << "#if !defined(TIMER_TRACE_FLAGMASK)";
- s.op->newline() << "stp->timer_list.data = i;"; // NB: important!
-+ s.op->newline() << "#endif";
- // copy timer renew calculations from above :-(
- s.op->newline() << "stp->timer_list.expires = jiffies + ";
- emit_interval (s.op);
-diff --git a/tapset/linux/scsi.stp b/tapset/linux/scsi.stp
-index 44f686c..3577942 100644
---- a/tapset/linux/scsi.stp
-+++ b/tapset/linux/scsi.stp
-@@ -14,7 +14,7 @@
- #include <scsi/scsi_cmnd.h>
- #include <scsi/scsi_device.h>
- #include <scsi/scsi_host.h>
--#include <linux/timer.h>
-+#include "linux/timer_compatibility.h"
- #include <linux/blkdev.h>
- %}
-
---
-2.7.4
-
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-Fixes-for-gcc-8.patch b/meta/recipes-kernel/systemtap/systemtap/0001-Fixes-for-gcc-8.patch
deleted file mode 100644
index a1b0bff02ac..00000000000
--- a/meta/recipes-kernel/systemtap/systemtap/0001-Fixes-for-gcc-8.patch
+++ /dev/null
@@ -1,215 +0,0 @@
-From 4ffe00f1d9eac332d928f7dc01fe250dc32b1bb8 Mon Sep 17 00:00:00 2001
-From: Stan Cox <scox@redhat.com>
-Date: Tue, 13 Feb 2018 22:38:03 -0500
-Subject: [PATCH] Fixes for gcc 8
-
-* includes/sys/sdt.h (__SDT_COND_SIGNED): Add CT, cast type argument
-
-Author: Will Cohen <wcohen.redhat.com>
-
-* stap-serverd.cxx (generate_mok, handleRequest, handle_connection):
- Catch format overflow
-
-* translate.cxx (translate_pass): Use ref in catch.
----
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
- includes/sys/sdt.h | 20 ++++++++--------
- stap-serverd.cxx | 67 +++++++++++++++++++++++++++++++++++++++++++++++-------
- translate.cxx | 2 +-
- 3 files changed, 70 insertions(+), 19 deletions(-)
-
-diff --git a/includes/sys/sdt.h b/includes/sys/sdt.h
-index 940f74483..c0c5a492c 100644
---- a/includes/sys/sdt.h
-+++ b/includes/sys/sdt.h
-@@ -119,8 +119,8 @@ struct __sdt_type
-
- #define __SDT_ALWAYS_SIGNED(T) \
- template<> struct __sdt_type<T> { static const bool __sdt_signed = true; };
--#define __SDT_COND_SIGNED(T) \
--template<> struct __sdt_type<T> { static const bool __sdt_signed = ((T)(-1) < 1); };
-+#define __SDT_COND_SIGNED(T,CT) \
-+template<> struct __sdt_type<T> { static const bool __sdt_signed = ((CT)(-1) < 1); };
- __SDT_ALWAYS_SIGNED(signed char)
- __SDT_ALWAYS_SIGNED(short)
- __SDT_ALWAYS_SIGNED(int)
-@@ -141,14 +141,14 @@ __SDT_ALWAYS_SIGNED(const volatile short)
- __SDT_ALWAYS_SIGNED(const volatile int)
- __SDT_ALWAYS_SIGNED(const volatile long)
- __SDT_ALWAYS_SIGNED(const volatile long long)
--__SDT_COND_SIGNED(char)
--__SDT_COND_SIGNED(wchar_t)
--__SDT_COND_SIGNED(volatile char)
--__SDT_COND_SIGNED(volatile wchar_t)
--__SDT_COND_SIGNED(const char)
--__SDT_COND_SIGNED(const wchar_t)
--__SDT_COND_SIGNED(const volatile char)
--__SDT_COND_SIGNED(const volatile wchar_t)
-+__SDT_COND_SIGNED(char, char)
-+__SDT_COND_SIGNED(wchar_t, wchar_t)
-+__SDT_COND_SIGNED(volatile char, char)
-+__SDT_COND_SIGNED(volatile wchar_t, wchar_t)
-+__SDT_COND_SIGNED(const char, char)
-+__SDT_COND_SIGNED(const wchar_t, wchar_t)
-+__SDT_COND_SIGNED(const volatile char, char)
-+__SDT_COND_SIGNED(const volatile wchar_t, wchar_t)
- #if defined (__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
- /* __SDT_COND_SIGNED(char16_t) */
- /* __SDT_COND_SIGNED(char32_t) */
-diff --git a/stap-serverd.cxx b/stap-serverd.cxx
-index 7cf76c617..41f77ee9e 100644
---- a/stap-serverd.cxx
-+++ b/stap-serverd.cxx
-@@ -1607,6 +1607,7 @@ generate_mok(string &mok_fingerprint)
- char tmpdir[PATH_MAX] = { '\0' };
- string public_cert_path, private_cert_path, destdir;
- mode_t old_umask;
-+ int retlen;
-
- mok_fingerprint.clear ();
-
-@@ -1631,7 +1632,14 @@ generate_mok(string &mok_fingerprint)
- }
-
- // Make a temporary directory to store results in.
-- snprintf (tmpdir, PATH_MAX, "%s/stap-server.XXXXXX", mok_path.c_str ());
-+ retlen = snprintf (tmpdir, PATH_MAX, "%s/stap-server.XXXXXX", mok_path.c_str ());
-+ if (retlen < 0 || retlen >= PATH_MAX)
-+ {
-+ server_error (_F("Could not create %s name", "temporary directory"));
-+ tmpdir[0] = '\0';
-+ goto cleanup;
-+ }
-+
- if (mkdtemp (tmpdir) == NULL)
- {
- server_error (_F("Could not create temporary directory %s: %s", tmpdir,
-@@ -1704,6 +1712,7 @@ handleRequest (const string &requestDirName, const string &responseDirName, stri
- unsigned u;
- unsigned i;
- FILE* f;
-+ int retlen;
-
- // Save the server version. Do this early, so the client knows what version of the server
- // it is dealing with, even if the request is not fully completed.
-@@ -1782,7 +1791,12 @@ handleRequest (const string &requestDirName, const string &responseDirName, stri
- struct stat st;
- char *arg;
-
-- snprintf (stapargfile, PATH_MAX, "%s/argv%d", requestDirName.c_str (), i);
-+ retlen = snprintf (stapargfile, PATH_MAX, "%s/argv%d", requestDirName.c_str (), i);
-+ if (retlen < 0 || retlen >= PATH_MAX)
-+ {
-+ server_error (_F("Error creating %s name", "path"));
-+ return;
-+ }
-
- rc = stat(stapargfile, & st);
- if (rc) break;
-@@ -1888,7 +1902,15 @@ handleRequest (const string &requestDirName, const string &responseDirName, stri
- {
- glob_t globber;
- char pattern[PATH_MAX];
-- snprintf (pattern, PATH_MAX, "%s/*.ko", new_staptmpdir.c_str());
-+ int retlen;
-+
-+ retlen = snprintf (pattern, PATH_MAX, "%s/*.ko", new_staptmpdir.c_str());
-+ if (retlen < 0 || retlen >= PATH_MAX)
-+ {
-+ server_error (_F("Error creating %s name", "pattern"));
-+ return;
-+ }
-+
- rc = glob (pattern, GLOB_ERR, NULL, &globber);
- if (rc)
- server_error (_F("Unable to find a module in %s", new_staptmpdir.c_str()));
-@@ -2164,6 +2186,7 @@ handle_connection (void *arg)
- copy for each connection.*/
- vector<string> argv;
- PRInt32 bytesRead;
-+ int retlen;
-
- /* Detatch to avoid a memory leak */
- if(max_threads > 0)
-@@ -2213,7 +2236,13 @@ handle_connection (void *arg)
- #endif
-
- secStatus = SECFailure;
-- snprintf(tmpdir, PATH_MAX, "%s/stap-server.XXXXXX", getenv("TMPDIR") ?: "/tmp");
-+ retlen = snprintf(tmpdir, PATH_MAX, "%s/stap-server.XXXXXX", getenv("TMPDIR") ?: "/tmp");
-+ if (retlen < 0 || retlen >= PATH_MAX)
-+ {
-+ server_error (_F("Error creating %s name", "temporary directory"));
-+ tmpdir[0]=0; /* prevent /bin/rm */
-+ goto cleanup;
-+ }
- rc1 = mkdtemp(tmpdir);
- if (! rc1)
- {
-@@ -2223,9 +2252,20 @@ handle_connection (void *arg)
- }
-
- /* Create a temporary files names and directories. */
-- snprintf (requestFileName, PATH_MAX, "%s/request.zip", tmpdir);
-+ retlen = snprintf (requestFileName, PATH_MAX, "%s/request.zip", tmpdir);
-+ if (retlen < 0 || retlen >= PATH_MAX)
-+ {
-+ server_error (_F("Error creating %s name", "request.zip path"));
-+ goto cleanup;
-+ }
-+
-+ retlen = snprintf (requestDirName, PATH_MAX, "%s/request", tmpdir);
-+ if (retlen < 0 || retlen >= PATH_MAX)
-+ {
-+ server_error (_F("Error creating %s name", "request directory path"));
-+ goto cleanup;
-+ }
-
-- snprintf (requestDirName, PATH_MAX, "%s/request", tmpdir);
- rc = mkdir(requestDirName, 0700);
- if (rc)
- {
-@@ -2233,7 +2273,13 @@ handle_connection (void *arg)
- goto cleanup;
- }
-
-- snprintf (responseDirName, PATH_MAX, "%s/response", tmpdir);
-+ retlen = snprintf (responseDirName, PATH_MAX, "%s/response", tmpdir);
-+ if (retlen < 0 || retlen >= PATH_MAX)
-+ {
-+ server_error (_F("Error creating %s name", "response directory path"));
-+ goto cleanup;
-+ }
-+
- rc = mkdir(responseDirName, 0700);
- if (rc)
- {
-@@ -2243,7 +2289,12 @@ handle_connection (void *arg)
- // Set this early, since it gets used for errors to be returned to the client.
- stapstderr = string(responseDirName) + "/stderr";
-
-- snprintf (responseFileName, PATH_MAX, "%s/response.zip", tmpdir);
-+ retlen = snprintf (responseFileName, PATH_MAX, "%s/response.zip", tmpdir);
-+ if (retlen < 0 || retlen >= PATH_MAX)
-+ {
-+ server_error (_F("Error creating %s name", "response.zip path"));
-+ goto cleanup;
-+ }
-
- /* Read data from the socket.
- * If the user is requesting/requiring authentication, authenticate
-diff --git a/translate.cxx b/translate.cxx
-index 1240a80ec..4ade06fdd 100644
---- a/translate.cxx
-+++ b/translate.cxx
-@@ -7860,7 +7860,7 @@ translate_pass (systemtap_session& s)
- if (versions.size() >= 3 && s.verbose > 1)
- clog << _F("ignoring extra parts of compat version: %s", s.compatible.c_str()) << endl;
- }
-- catch (const runtime_error)
-+ catch (const runtime_error&)
- {
- throw SEMANTIC_ERROR(_F("parse error in compatibility version: %s", s.compatible.c_str()));
- }
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-Install-python-modules-to-correct-library-dir.patch b/meta/recipes-kernel/systemtap/systemtap/0001-Install-python-modules-to-correct-library-dir.patch
index 528864cc939..48cf4aee856 100644
--- a/meta/recipes-kernel/systemtap/systemtap/0001-Install-python-modules-to-correct-library-dir.patch
+++ b/meta/recipes-kernel/systemtap/systemtap/0001-Install-python-modules-to-correct-library-dir.patch
@@ -5,32 +5,52 @@ Subject: [PATCH] Install python modules to correct library dir.
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
+Add OE's CFLAGS which contains `-fdebug-prefix-map' options to
+setup.py
+
+Supply "--root" directory to the "install" command, and use
+it as a prefix to strip off the purported filename encoded
+in bytecode files. (It strips build path prefix from .pyc files)
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
- python/Makefile.am | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ python/Makefile.am | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/python/Makefile.am b/python/Makefile.am
-index a254480f9..efe9f3c01 100644
+index a254480..578602f 100644
--- a/python/Makefile.am
+++ b/python/Makefile.am
-@@ -47,7 +47,7 @@ install-exec-local:
+@@ -8,6 +8,10 @@ AUTOMAKE_OPTIONS = subdir-objects
+ AM_CPPFLAGS = -I$(srcdir)/../includes
+ AM_CPPFLAGS += -I$(abs_builddir)/../includes/sys
+
++# Add OE's CFLAGS which contains `-fdebug-prefix-map' options to
++# fix build path issue
++AM_CPPFLAGS += $(CFLAGS)
++
+ # Any script in the following variable will get byte-compiled at
+ # install time.
+ pkglibexecpython_PYTHON =
+@@ -47,7 +51,7 @@ install-exec-local:
if HAVE_PYTHON2_PROBES
(cd $(srcdir); CFLAGS="$(AM_CPPFLAGS)" $(PYTHON) setup.py build \
--build-base $(shell readlink -f $(builddir))/py2build \
- install --prefix $(DESTDIR)$(prefix) \
-+ install --prefix $(DESTDIR)$(prefix) --install-lib=$(DESTDIR)${pythondir} \
++ install --root $(DESTDIR) --prefix $(prefix) --prefix $(prefix) --install-lib=${pythondir} \
--single-version-externally-managed \
--record $(shell readlink -f $(builddir))/py2build/install_files.txt \
--verbose)
-@@ -55,7 +55,7 @@ endif
+@@ -55,7 +59,7 @@ endif
if HAVE_PYTHON3_PROBES
(cd $(srcdir); CFLAGS="$(AM_CPPFLAGS)" $(PYTHON3) setup.py build \
--build-base $(shell readlink -f $(builddir))/py3build \
- install --prefix $(DESTDIR)$(prefix) \
-+ install --prefix $(DESTDIR)$(prefix) --install-lib=$(DESTDIR)${python3dir} \
++ install --root $(DESTDIR) --prefix $(prefix) --install-lib=${python3dir} \
--single-version-externally-managed \
--record $(shell readlink -f $(builddir))/py3build/install_files.txt \
--verbose)
--
-2.11.0
+2.7.4
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-Make-sure-sysroot-paths-don-t-end-with-a-slash.patch b/meta/recipes-kernel/systemtap/systemtap/0001-Make-sure-sysroot-paths-don-t-end-with-a-slash.patch
deleted file mode 100644
index 7cd9030eac2..00000000000
--- a/meta/recipes-kernel/systemtap/systemtap/0001-Make-sure-sysroot-paths-don-t-end-with-a-slash.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-From 41efad04730be89889d1483719f9a6c9396dc250 Mon Sep 17 00:00:00 2001
-From: David Smith <dsmith@redhat.com>
-Date: Wed, 14 Mar 2018 17:05:25 -0500
-Subject: [PATCH] Make sure sysroot paths don't end with a slash.
-
-* session.cxx (parse_cmdline): Make sure a sysroot path does not end with
- a '/', since we build paths like: sysroot + "/lib/modules". If the
- sysroot path ends with a '/', we end up with paths like
- '/SYSROOT//lib/modules'.
- (setup_kernel_release): Take a string parameter, not a character pointer.
-* session.h: Update setup_kernel_release() prototype.
-
-Upstream-Status: Backport
-Signed-off-by: Victor Kamensky <kamensky@cisco.com>
----
- session.cxx | 34 ++++++++++++++++++++++++++--------
- session.h | 2 +-
- 2 files changed, 27 insertions(+), 9 deletions(-)
-
-Index: git/session.cxx
-===================================================================
---- git.orig/session.cxx
-+++ git/session.cxx
-@@ -722,6 +722,9 @@ systemtap_session::parse_cmdline (int ar
- client_options_disallowed_for_unprivileged = "";
- std::set<std::string> additional_unwindsym_modules;
- struct rlimit our_rlimit;
-+ bool sysroot_option_seen = false;
-+ string kernel_release_value;
-+
- while (true)
- {
- char * num_endptr;
-@@ -887,7 +890,7 @@ systemtap_session::parse_cmdline (int ar
- // Note that '-' must come last in a regex bracket expression.
- assert_regexp_match("-r parameter from client", optarg, "^[a-z0-9_.+-]+$");
- server_args.push_back (string ("-") + (char)grc + optarg);
-- setup_kernel_release(optarg);
-+ kernel_release_value = optarg;
- break;
-
- case 'a':
-@@ -1473,7 +1476,7 @@ systemtap_session::parse_cmdline (int ar
- if (client_options) {
- cerr << _F("ERROR: %s invalid with %s", "--sysroot", "--client-options") << endl;
- return 1;
-- } else if (!sysroot.empty()) {
-+ } else if (sysroot_option_seen) {
- cerr << "ERROR: multiple --sysroot options not supported" << endl;
- return 1;
- } else {
-@@ -1487,11 +1490,17 @@ systemtap_session::parse_cmdline (int ar
-
- sysroot = string(spath);
- free (spath);
-- if (sysroot[sysroot.size() - 1] != '/')
-- sysroot.append("/");
-
-- break;
-+ // We do path creation like this:
-+ // sysroot + "/lib/modules"
-+ // So, we don't want the sysroot path to end with a '/',
-+ // otherwise we'll end up with '/foo//lib/modules'.
-+ if (sysroot.back() == '/') {
-+ sysroot.pop_back();
-+ }
- }
-+ sysroot_option_seen = true;
-+ break;
-
- case LONG_OPT_SYSENV:
- if (client_options) {
-@@ -1501,7 +1510,7 @@ systemtap_session::parse_cmdline (int ar
- string sysenv_str = optarg;
- string value;
- size_t pos;
-- if (sysroot.empty()) {
-+ if (! sysroot_option_seen) {
- cerr << "ERROR: --sysenv must follow --sysroot" << endl;
- return 1;
- }
-@@ -1646,6 +1655,15 @@ systemtap_session::parse_cmdline (int ar
- }
- }
-
-+ if (! kernel_release_value.empty())
-+ {
-+ setup_kernel_release(kernel_release_value);
-+ }
-+ else if (! sysroot.empty())
-+ {
-+ kernel_build_tree = sysroot + "/lib/modules/" + kernel_release + "/build";
-+ }
-+
- return 0;
- }
-
-@@ -2152,7 +2170,7 @@ void systemtap_session::insert_loaded_mo
- }
-
- void
--systemtap_session::setup_kernel_release (const char* kstr)
-+systemtap_session::setup_kernel_release (const string& kstr)
- {
- // Sometimes we may get dupes here... e.g. a server may have a full
- // -r /path/to/kernel followed by a client's -r kernel.
-@@ -2183,7 +2201,7 @@ systemtap_session::setup_kernel_release
- else
- {
- update_release_sysroot = true;
-- kernel_release = string (kstr);
-+ kernel_release = kstr;
- if (!kernel_release.empty())
- kernel_build_tree = "/lib/modules/" + kernel_release + "/build";
-
-Index: git/session.h
-===================================================================
---- git.orig/session.h
-+++ git/session.h
-@@ -144,7 +144,7 @@ public:
-
- // NB: It is very important for all of the above (and below) fields
- // to be cleared in the systemtap_session ctor (session.cxx).
-- void setup_kernel_release (const char* kstr);
-+ void setup_kernel_release (const std::string& kstr);
- void insert_loaded_modules ();
-
- // command line parsing
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-Use-sysroot-when-looking-for-the-System.map-file.patch b/meta/recipes-kernel/systemtap/systemtap/0001-Use-sysroot-when-looking-for-the-System.map-file.patch
deleted file mode 100644
index b2820b31e86..00000000000
--- a/meta/recipes-kernel/systemtap/systemtap/0001-Use-sysroot-when-looking-for-the-System.map-file.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 436063d5e4738a9b03535d330a2242be5118e745 Mon Sep 17 00:00:00 2001
-From: David Smith <dsmith@redhat.com>
-Date: Thu, 8 Mar 2018 16:01:58 -0600
-Subject: [PATCH] Use sysroot when looking for the System.map file.
-
-Add sysroot to system_map_path + "/boot/System.map" case. Otherwise
-stap tries to look symbols on host system and it produce error like this:
-
-> Kernel symbol table /boot/System.map-4.9.78-yocto-standard unavailable, (No such file or directory)
-
-Upstream-Status: Backport
-Signed-off-by: Victor Kamensky <kamensky@cisco.com>
----
- session.cxx | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: git/session.cxx
-===================================================================
---- git.orig/session.cxx
-+++ git/session.cxx
-@@ -2013,7 +2013,7 @@ systemtap_session::parse_kernel_function
- clog << _F("Kernel symbol table %s unavailable, (%s)",
- system_map_path.c_str(), strerror(errno)) << endl;
-
-- system_map_path = "/boot/System.map-" + kernel_release;
-+ system_map_path = sysroot + "/boot/System.map-" + kernel_release;
- system_map.clear();
- system_map.open(system_map_path.c_str(), ifstream::in);
- if (! system_map.is_open())
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-_stp_umodule_relocate-needs-target-file-path-not-hos.patch b/meta/recipes-kernel/systemtap/systemtap/0001-_stp_umodule_relocate-needs-target-file-path-not-hos.patch
deleted file mode 100644
index 98181a12943..00000000000
--- a/meta/recipes-kernel/systemtap/systemtap/0001-_stp_umodule_relocate-needs-target-file-path-not-hos.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 183c7a7a8167333c873525f7908913837b8dc3cb Mon Sep 17 00:00:00 2001
-From: Victor Kamensky <kamensky@cisco.com>
-Date: Tue, 20 Mar 2018 12:41:05 -0500
-Subject: [PATCH] _stp_umodule_relocate needs target file path, not host file
- path
-
-Strip of sysroot from module name is required when _stp_umodule_relocate
-call is generated. Otherwise path won't match path on target and could
-will fail to calculated address within the file.
-
-Upstream-Status: Backport
-Signed-off-by: Victor Kamensky <kamensky@cisco.com>
----
- loc2stap.cxx | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/loc2stap.cxx b/loc2stap.cxx
-index 4818ee0..e09954f 100644
---- a/loc2stap.cxx
-+++ b/loc2stap.cxx
-@@ -17,6 +17,7 @@
-
- #include "loc2stap.h"
- #include "dwflpp.h"
-+#include "tapsets.h"
-
- #if ! _ELFUTILS_PREREQ(0, 153)
- #define DW_OP_GNU_entry_value 0xf3
-@@ -106,7 +107,9 @@ location_context::translate_address(Dwarf_Addr addr)
- c = "/* pragma:vma */ "
- "({ unsigned long addr = 0; "
- "addr = _stp_umodule_relocate (\""
-- + resolve_path(dw->module_name.c_str()) + "\", "
-+ + path_remove_sysroot(dw->sess,
-+ resolve_path(dw->module_name.c_str()))
-+ + "\", "
- + lex_cast_hex (addr)
- + ", current); addr; })";
- }
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-buildrun-remove-quotes-around-I-include-line.patch b/meta/recipes-kernel/systemtap/systemtap/0001-buildrun-remove-quotes-around-I-include-line.patch
deleted file mode 100644
index 7996fdde73e..00000000000
--- a/meta/recipes-kernel/systemtap/systemtap/0001-buildrun-remove-quotes-around-I-include-line.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 75c4aec6de3a615909f3283eac585760de101b8c Mon Sep 17 00:00:00 2001
-From: Saul Wold <sgw@linux.intel.com>
-Date: Tue, 7 Mar 2017 10:46:12 -0800
-Subject: [PATCH] buildrun: remove quotes around -I include line
-
-By having the quotes, the kernel Makefile addtree macro adds the
-kernel $srctree directory as a prefix and causes compilation failures.
-Removing the quotes resolves the issue.
-
-This is trimmed from the verbose output of the GCC command line
-Before:
- -I/srv/sdb/builds/4.9/tmp/work-shared/qemux86-64/kernel-source/"/srv/sdb/releases/jethro/builds/4.1/tmp/sysroots/x86_64-linux/usr/share/systemtap/runtime"
-
-After:
- -I/srv/sdb/builds/4.9/tmp/sysroots/x86_64-linux/usr/share/systemtap/runtime
-
-Upstream-Status: Pending
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
----
- buildrun.cxx | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/buildrun.cxx b/buildrun.cxx
-index aaea64c..8a8ee9f 100644
---- a/buildrun.cxx
-+++ b/buildrun.cxx
-@@ -495,7 +495,7 @@ compile_pass (systemtap_session& s)
- #if CHECK_POINTER_ARITH_PR5947
- o << "EXTRA_CFLAGS += -Wpointer-arith" << endl;
- #endif
-- o << "EXTRA_CFLAGS += -I\"" << s.runtime_path << "\"" << endl;
-+ o << "EXTRA_CFLAGS += -I" << s.runtime_path << endl;
- // XXX: this may help ppc toc overflow
- // o << "CFLAGS := $(subst -Os,-O2,$(CFLAGS)) -fminimal-toc" << endl;
- o << "obj-m := " << s.module_name << ".o" << endl;
---
-2.7.4
-
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-debuginfo-lookup-with-sysroot-case-do-not-remove-sys.patch b/meta/recipes-kernel/systemtap/systemtap/0001-debuginfo-lookup-with-sysroot-case-do-not-remove-sys.patch
deleted file mode 100644
index 160642db085..00000000000
--- a/meta/recipes-kernel/systemtap/systemtap/0001-debuginfo-lookup-with-sysroot-case-do-not-remove-sys.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From b29e448e12040ed8f4d83743a14db0f138a7cc67 Mon Sep 17 00:00:00 2001
-From: Victor Kamensky <kamensky@cisco.com>
-Date: Wed, 14 Mar 2018 16:54:08 -0500
-Subject: [PATCH] debuginfo lookup with sysroot case do not remove sysroot from
- file_name
-
-If sysroot option is passed, and debug symbols reside in sysroot along
-with executable <foo> in <foo_dir>/.debug/<foo_file> directory,
-stap fails to find debuginfo because it strips out sysroot path
-from file_name so dwfl_standard_find_debuginfo ends up looking at
-host <foo_dir>/.debug/<foo_file> rather then checking
-<sysroot>/<foo_dir>/.debug/<foo_file>.
-
-Upstream-Status: Backport
-Signed-off-by: Victor Kamensky <kamensky@cisco.com>
----
- setupdwfl.cxx | 12 ------------
- 1 file changed, 12 deletions(-)
-
-diff --git a/setupdwfl.cxx b/setupdwfl.cxx
-index 11e0bb2..2a87982 100644
---- a/setupdwfl.cxx
-+++ b/setupdwfl.cxx
-@@ -627,18 +627,6 @@ internal_find_debuginfo (Dwfl_Module *mod,
-
- call_dwfl_standard_find_debuginfo:
-
-- if (current_session_for_find_debuginfo)
-- {
-- string sysroot = current_session_for_find_debuginfo->sysroot + "/*";
-- int found = fnmatch(sysroot.c_str(), file_name, 0);
--
-- if (found)
-- {
-- file_name = file_name
-- + current_session_for_find_debuginfo->sysroot.length() - 1;
-- }
-- }
--
- /* Call the original dwfl_standard_find_debuginfo */
- return dwfl_standard_find_debuginfo(mod, userdata, modname, base,
- file_name, debuglink_file,
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-dwflpp-function_entrypc-avoid-usage-of-uninitialized.patch b/meta/recipes-kernel/systemtap/systemtap/0001-dwflpp-function_entrypc-avoid-usage-of-uninitialized.patch
new file mode 100644
index 00000000000..d0082a10945
--- /dev/null
+++ b/meta/recipes-kernel/systemtap/systemtap/0001-dwflpp-function_entrypc-avoid-usage-of-uninitialized.patch
@@ -0,0 +1,46 @@
+From 8466fca2a074323a235ef38d425f994a2ff7e64f Mon Sep 17 00:00:00 2001
+From: Victor Kamensky <kamensky@cisco.com>
+Date: Mon, 9 Jul 2018 09:31:19 -0700
+Subject: [PATCH] dwflpp::function_entrypc avoid usage of uninitialized memory
+
+Failure on 3.3 release was observed. Failure was elusive and
+disappeared after seemingly random configure option change, or when
+code was compiled with -O1 or -O0 (vs default -O2). Running failing
+test case under valgrind memcheck pointed to couple places where
+'Conditional jump or move depends on uninitialised value(s)' occured.
+
+After addressing these in two places in dwflpp::function_entrypc,
+valgrind memcheck run is clean and original issue got fixed.
+
+Upstream-Status: Backport
+Signed-off-by: Victor Kamensky <kamensky@cisco.com>
+---
+ dwflpp.cxx | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/dwflpp.cxx b/dwflpp.cxx
+index bfbb6b096..2172e705a 100644
+--- a/dwflpp.cxx
++++ b/dwflpp.cxx
+@@ -2465,13 +2465,17 @@ bool
+ dwflpp::function_entrypc (Dwarf_Addr * addr)
+ {
+ assert (function);
++
++ // assign default value
++ *addr = 0;
++
+ // PR10574: reject 0, which tends to be eliminated COMDAT
+ if (dwarf_entrypc (function, addr) == 0 && *addr != 0)
+ return true;
+
+ /* Assume the entry pc is the base address, or (if zero)
+ the first address of the ranges covering this DIE. */
+- Dwarf_Addr start, end;
++ Dwarf_Addr start = 0, end;
+ if (dwarf_ranges (function, 0, addr, &start, &end) >= 0)
+ {
+ if (*addr == 0)
+--
+2.17.1
+
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-improve-reproducibility-for-c-compiling.patch b/meta/recipes-kernel/systemtap/systemtap/0001-improve-reproducibility-for-c-compiling.patch
new file mode 100644
index 00000000000..15a6f2a9a5c
--- /dev/null
+++ b/meta/recipes-kernel/systemtap/systemtap/0001-improve-reproducibility-for-c-compiling.patch
@@ -0,0 +1,31 @@
+From 6288ba5df0a8c73ef842b609081449ac4de86123 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Wed, 18 Jul 2018 16:58:33 +0800
+Subject: [PATCH] improve reproducibility for c++ compiling
+
+Use relative dir to include header string_ref to
+strip build path prefix in c++ object file
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ stringtable.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/stringtable.h b/stringtable.h
+index 5fc42e7..6fd8a1e 100644
+--- a/stringtable.h
++++ b/stringtable.h
+@@ -19,7 +19,7 @@
+
+ #if defined(HAVE_BOOST_UTILITY_STRING_REF_HPP)
+ #include <boost/version.hpp>
+-#include <boost/utility/string_ref.hpp> //header with string_ref
++#include "@RELATIVE_STAGING_INCDIR@/boost/utility/string_ref.hpp" //header with string_ref
+
+ // XXX: experimental tunables
+ #define INTERNED_STRING_FIND_MEMMEM 1 /* perf stat indicates a very slight benefit */
+--
+2.7.4
+
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-sysroot-fix-short-release-r-option-handling-follow-u.patch b/meta/recipes-kernel/systemtap/systemtap/0001-sysroot-fix-short-release-r-option-handling-follow-u.patch
deleted file mode 100644
index 6fe7d4d1cf1..00000000000
--- a/meta/recipes-kernel/systemtap/systemtap/0001-sysroot-fix-short-release-r-option-handling-follow-u.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 7e11f129ff370ce5f39812ce2ae6ce40818a347f Mon Sep 17 00:00:00 2001
-From: Victor Kamensky <kamensky@cisco.com>
-Date: Thu, 22 Mar 2018 16:02:02 -0500
-Subject: [PATCH] sysroot: fix short release -r option handling follow up
-
-In case of sysroot set and short release -r option it does not make sense
-to pass short release name into dwfl_linux_kernel_report_offline
-function. This function is not aware about sysroot and it won't look for
-kernel modules under sysroot directory.
-
-Upstream-Status: Backport
-Signed-off-by: Victor Kamensky <kamensky@cisco.com>
----
- setupdwfl.cxx | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/setupdwfl.cxx b/setupdwfl.cxx
-index c419afa..0cf5810 100644
---- a/setupdwfl.cxx
-+++ b/setupdwfl.cxx
-@@ -367,7 +367,15 @@ setup_dwfl_kernel (unsigned *modules_found, systemtap_session &s)
- // hard-code this magic here.
- string lib_path = s.sysroot + "/lib/modules/" + s.kernel_release + "/build";
- if (s.kernel_build_tree == lib_path)
-- elfutils_kernel_path = s.kernel_release;
-+ {
-+ if (s.sysroot != "")
-+ // If we have sysroot set does not make sense to pass
-+ // short release to dwfl, it won't take a sysroot into
-+ // account. Let's construct full path in such case.
-+ elfutils_kernel_path = string(s.sysroot + "/lib/modules/" + s.kernel_release);
-+ else
-+ elfutils_kernel_path = s.kernel_release;
-+ }
- else
- elfutils_kernel_path = s.kernel_build_tree;
- offline_modules_found = 0;
---
-2.7.4
-
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-sysroot-fix-short-release-r-option-handling.patch b/meta/recipes-kernel/systemtap/systemtap/0001-sysroot-fix-short-release-r-option-handling.patch
deleted file mode 100644
index b31d6274e22..00000000000
--- a/meta/recipes-kernel/systemtap/systemtap/0001-sysroot-fix-short-release-r-option-handling.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From a9ce89bcd2d78728faef59bda60e75510972cd56 Mon Sep 17 00:00:00 2001
-From: Victor Kamensky <kamensky@cisco.com>
-Date: Wed, 14 Mar 2018 17:09:44 -0500
-Subject: [PATCH] sysroot: fix short release -r option handling
-
-* setupdwfl.cxx (debuginfo_path_insert_sysroot): Add a '/' to the end of
- the sysroot for path_insert_sysroot().
- (setup_dwfl_kernel): Simplify logic when finding the kernel path to send
- to elfutils.
-
-Upstream-Status: Backport
-Signed-off-by: Victor Kamensky <kamensky@cisco.com>
----
- setupdwfl.cxx | 19 ++++++++++++-------
- 1 file changed, 12 insertions(+), 7 deletions(-)
-
-diff --git a/setupdwfl.cxx b/setupdwfl.cxx
-index 2a87982..f6c3157 100644
---- a/setupdwfl.cxx
-+++ b/setupdwfl.cxx
-@@ -339,6 +339,13 @@ static char * path_insert_sysroot(string sysroot, string path)
-
- void debuginfo_path_insert_sysroot(string sysroot)
- {
-+ // FIXME: This is a short-term fix, until we expect sysroot paths to
-+ // always end with a '/' (and never be empty).
-+ //
-+ // The path_insert_sysroot() function assumes that sysroot has a '/'
-+ // on the end. Make sure that is true.
-+ if (sysroot.back() != '/')
-+ sysroot.push_back('/');
- debuginfo_path = path_insert_sysroot(sysroot, debuginfo_path);
- debuginfo_usr_path = path_insert_sysroot(sysroot, debuginfo_usr_path);
- }
-@@ -358,13 +365,11 @@ setup_dwfl_kernel (unsigned *modules_found, systemtap_session &s)
- // no way to set the dwfl_callback.debuginfo_path and always
- // passs the plain kernel_release here. So instead we have to
- // hard-code this magic here.
-- string lib_path = "/lib/modules/" + s.kernel_release + "/build";
-- if (s.kernel_build_tree == string(s.sysroot + lib_path) ||
-- (s.kernel_build_tree == lib_path
-- && s.sysroot == "/"))
-- elfutils_kernel_path = s.kernel_release;
-- else
-- elfutils_kernel_path = s.kernel_build_tree;
-+ string lib_path = s.sysroot + "/lib/modules/" + s.kernel_release + "/build";
-+ if (s.kernel_build_tree == lib_path)
-+ elfutils_kernel_path = s.kernel_release;
-+ else
-+ elfutils_kernel_path = s.kernel_build_tree;
- offline_modules_found = 0;
-
- // First try to report full path modules.
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-sysroot-handle-symbolic-links-with-absolute-name-rel.patch b/meta/recipes-kernel/systemtap/systemtap/0001-sysroot-handle-symbolic-links-with-absolute-name-rel.patch
deleted file mode 100644
index 8a3d39a5b83..00000000000
--- a/meta/recipes-kernel/systemtap/systemtap/0001-sysroot-handle-symbolic-links-with-absolute-name-rel.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From 2041085d1a700201dc088991ca8136e7935bf42f Mon Sep 17 00:00:00 2001
-From: Victor Kamensky <kamensky@cisco.com>
-Date: Wed, 21 Mar 2018 11:35:26 -0500
-Subject: [PATCH] sysroot: handle symbolic links with absolute name relative to
- sysroot
-
-In case of symbolic link found under sysroot point to absolute path,
-instead of trying to look for such absolute path in host system,
-apply sysroot prefix first.
-
-Upstream-Status: Backport
-Signed-off-by: Victor Kamensky <kamensky@cisco.com>
----
- util.cxx | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 76 insertions(+)
-
-Index: git/util.cxx
-===================================================================
---- git.orig/util.cxx
-+++ git/util.cxx
-@@ -441,6 +441,64 @@ split_lines(const char *buf, size_t n)
- return lines;
- }
-
-+static string
-+follow_link(const string& name, const string& sysroot)
-+{
-+ char *linkname;
-+ ssize_t r;
-+ string retpath;
-+ struct stat st;
-+
-+ const char *f = name.c_str();
-+
-+ lstat(f, &st);
-+
-+ linkname = (char *) malloc(st.st_size + 1);
-+
-+ if (linkname)
-+ {
-+ r = readlink(f, linkname, st.st_size + 1);
-+ linkname[st.st_size] = '\0';
-+ /*
-+ * If we have non-empty sysroot and we got link that
-+ * points to absolute path name, we need to look at
-+ * this path relative to sysroot itself. access and
-+ * stat will follow symbolic links correctly only in
-+ * case with empty sysroot.
-+ */
-+ while (r != -1 && linkname && linkname[0] == '/')
-+ {
-+ string fname1 = sysroot + linkname;
-+ const char *f1 = fname1.c_str();
-+ if (access(f1, X_OK) == 0
-+ && stat(f1, &st) == 0
-+ && S_ISREG(st.st_mode))
-+ {
-+ retpath = fname1;
-+ break;
-+ }
-+ else if (lstat(f1, &st) == 0
-+ && S_ISLNK(st.st_mode))
-+ {
-+ free(linkname);
-+ linkname = (char *) malloc(st.st_size + 1);
-+ if (linkname)
-+ {
-+ r = readlink(f1, linkname, st.st_size + 1);
-+ linkname[st.st_size] = '\0';
-+ }
-+ }
-+ else
-+ {
-+ break;
-+ }
-+ }
-+ }
-+ free(linkname);
-+
-+ return retpath;
-+}
-+
- // Resolve an executable name to a canonical full path name, with the
- // same policy as execvp(). A program name not containing a slash
- // will be searched along the $PATH.
-@@ -465,6 +523,14 @@ string find_executable(const string& nam
- if (name.find('/') != string::npos) // slash in the path already?
- {
- retpath = sysroot + name;
-+
-+ const char *f = retpath.c_str();
-+ if (sysroot != ""
-+ && lstat(f, &st) == 0
-+ && S_ISLNK(st.st_mode))
-+ {
-+ retpath = follow_link(f, sysroot);
-+ }
- }
- else // Nope, search $PATH.
- {
-@@ -493,6 +559,16 @@ string find_executable(const string& nam
- retpath = fname;
- break;
- }
-+ else if (sysroot != ""
-+ && lstat(f, &st) == 0
-+ && S_ISLNK(st.st_mode))
-+ {
-+ retpath = follow_link(f, sysroot);
-+ if (retpath != "")
-+ {
-+ break;
-+ }
-+ }
- }
- }
- }
diff --git a/meta/recipes-kernel/systemtap/systemtap/monitor-option.patch b/meta/recipes-kernel/systemtap/systemtap/monitor-option.patch
index b7ee0701b1a..9313a5aba3e 100644
--- a/meta/recipes-kernel/systemtap/systemtap/monitor-option.patch
+++ b/meta/recipes-kernel/systemtap/systemtap/monitor-option.patch
@@ -13,18 +13,18 @@ Signed-off-by: Ross Burton <ross.burton@intel.com>
configure.ac | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
-diff --git a/configure.ac b/configure.ac
-index 6bd0c5fc4..2ea9b3cbf 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -752,13 +752,16 @@ dnl We want either (or both) python probe support.
+Index: git/configure.ac
+===================================================================
+--- git.orig/configure.ac
++++ git/configure.ac
+@@ -766,13 +766,16 @@ dnl We want either (or both) python prob
AM_CONDITIONAL([HAVE_PYTHON_PROBES],
[test "x$have_python2_support" = "xyes" -o "x$have_python3_support" = "xyes"])
+AC_ARG_ENABLE([monitor], AS_HELP_STRING([--disable-monitor],[Disable monitor]))
+if test "$enable_monitor" != "no"; then
dnl Check for presence of json-c and ncurses for use in monitor mode
- PKG_CHECK_MODULES([jsonc], [json-c >= 0.12], [have_jsonc=yes], [have_jsonc=no])
+ PKG_CHECK_MODULES([jsonc], [json-c >= 0.11], [have_jsonc=yes], [have_jsonc=no])
PKG_CHECK_MODULES([ncurses], [ncurses], [have_ncurses=yes], [have_ncurses=no])
-AM_CONDITIONAL([HAVE_MONITOR_LIBS], [test "${have_jsonc}" == "yes" -a "${have_ncurses}" == "yes"])
if test "${have_jsonc}" == "yes" -a "${have_ncurses}" == yes; then
@@ -35,6 +35,3 @@ index 6bd0c5fc4..2ea9b3cbf 100644
AC_CACHE_CHECK([for assembler .section "?" flags support], stap_cv_sectionq, [
old_CFLAGS="$CFLAGS"
---
-2.11.0
-
diff --git a/meta/recipes-kernel/systemtap/systemtap_git.bb b/meta/recipes-kernel/systemtap/systemtap_git.bb
index b280f583e26..0b7833e901b 100644
--- a/meta/recipes-kernel/systemtap/systemtap_git.bb
+++ b/meta/recipes-kernel/systemtap/systemtap_git.bb
@@ -3,6 +3,8 @@ HOMEPAGE = "https://sourceware.org/systemtap/"
require systemtap_git.inc
+SRC_URI += "file://0001-improve-reproducibility-for-c-compiling.patch"
+
DEPENDS = "elfutils"
EXTRA_OECONF += "--with-libelf=${STAGING_DIR_TARGET} --without-rpm \
@@ -25,6 +27,12 @@ PACKAGECONFIG[python3-probes] = "--with-python3-probes,--without-python3-probes,
inherit autotools gettext pkgconfig distutils3-base
+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 () {
if [ ! -f ${D}${bindir}/stap ]; then
# translator disabled case, need to leave only minimal runtime
diff --git a/meta/recipes-kernel/systemtap/systemtap_git.inc b/meta/recipes-kernel/systemtap/systemtap_git.inc
index e2f5204a020..06924fc2400 100644
--- a/meta/recipes-kernel/systemtap/systemtap_git.inc
+++ b/meta/recipes-kernel/systemtap/systemtap_git.inc
@@ -1,7 +1,7 @@
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-SRCREV = "4051c70c9318c837981384cbb23f3e9eb1bd0892"
-PV = "3.2"
+SRCREV = "48867d1cface9445d58e3c6e14497770b7eb77e1"
+PV = "3.3"
SRC_URI = "git://sourceware.org/git/systemtap.git \
file://configure-allow-to-disable-libvirt.patch \
@@ -10,19 +10,8 @@ SRC_URI = "git://sourceware.org/git/systemtap.git \
file://no-msgfmt-check.patch \
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-buildrun-remove-quotes-around-I-include-line.patch \
file://0001-staprun-stapbpf-don-t-support-installing-a-non-root.patch \
- file://0001-Fix-PR22551-by-updating-the-use-of-timers-for-the-4..patch \
- file://0001-Fixes-for-gcc-8.patch \
- file://0001-Use-sysroot-when-looking-for-the-System.map-file.patch \
- file://0001-debuginfo-lookup-with-sysroot-case-do-not-remove-sys.patch \
- file://0001-Make-sure-sysroot-paths-don-t-end-with-a-slash.patch \
- file://0001-sysroot-fix-short-release-r-option-handling.patch \
- file://0001-Delay-adding-sysroot-path-to-module-name-in-case-of-.patch \
- file://0001-Added-a-couple-of-small-sysroot-fixes.patch \
- file://0001-_stp_umodule_relocate-needs-target-file-path-not-hos.patch \
- file://0001-sysroot-handle-symbolic-links-with-absolute-name-rel.patch \
- file://0001-sysroot-fix-short-release-r-option-handling-follow-u.patch \
+ file://0001-dwflpp-function_entrypc-avoid-usage-of-uninitialized.patch \
"
COMPATIBLE_HOST = '(x86_64|i.86|powerpc|arm|aarch64|microblazeel|mips).*-linux'
diff --git a/meta/recipes-kernel/trace-cmd/kernelshark_git.bb b/meta/recipes-kernel/trace-cmd/kernelshark_git.bb
deleted file mode 100644
index 9a5e8006c78..00000000000
--- a/meta/recipes-kernel/trace-cmd/kernelshark_git.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "Graphical trace viewer for Ftrace"
-LICENSE = "GPLv2"
-
-require trace-cmd.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
- file://kernel-shark.c;beginline=6;endline=8;md5=2c22c965a649ddd7973d7913c5634a5e"
-
-DEPENDS = "gtk+ libxml2"
-RDEPENDS_${PN} = "trace-cmd"
-
-inherit distro_features_check
-ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
-
-EXTRA_OEMAKE = "\
- 'prefix=${prefix}' \
- 'bindir_relative=${@oe.path.relative(prefix, bindir)}' \
- 'libdir=${libdir}' \
- NO_PYTHON=1 \
- gui \
-"
-do_configure_prepend() {
- # Make sure the recompile is OK
- rm -f ${B}/.*.d
-}
-
-do_install() {
- oe_runmake DESTDIR="${D}" install_gui
- rm ${D}${bindir}/trace-cmd
- rm -rf ${D}${libdir}/trace-cmd
- rm -rf ${D}${sysconfdir}/bash_completion.d/trace-cmd.bash
- rmdir ${D}${libdir}
-}
diff --git a/meta/recipes-kernel/trace-cmd/trace-cmd.inc b/meta/recipes-kernel/trace-cmd/trace-cmd.inc
deleted file mode 100644
index 0a1789c4590..00000000000
--- a/meta/recipes-kernel/trace-cmd/trace-cmd.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-SRCREV = "7d0147bbba3ed1d5ef6eea4eec3f0ad4c98f02b5"
-PV = "2.7"
-
-inherit pkgconfig
-
-FILESEXTRAPATHS =. "${FILE_DIRNAME}/trace-cmd:"
-
-SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git \
- file://blktrace-api-compatibility.patch \
- file://0001-Include-limits.h-so-that-PATH_MAX-is-defined-an-issu.patch \
-"
-
-S = "${WORKDIR}/git"
diff --git a/meta/recipes-kernel/trace-cmd/trace-cmd/0001-Include-limits.h-so-that-PATH_MAX-is-defined-an-issu.patch b/meta/recipes-kernel/trace-cmd/trace-cmd/0001-Include-limits.h-so-that-PATH_MAX-is-defined-an-issu.patch
deleted file mode 100644
index 57630835695..00000000000
--- a/meta/recipes-kernel/trace-cmd/trace-cmd/0001-Include-limits.h-so-that-PATH_MAX-is-defined-an-issu.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 9488f92c1d0c7931c3e17950d1f9eea2aeb3e2bd Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 14 Jun 2017 15:56:18 +0300
-Subject: [PATCH] Include limits.h so that PATH_MAX is defined (an issue on
- musl).
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- trace-listen.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/trace-listen.c b/trace-listen.c
-index 17ff9d8..838d6bc 100644
---- a/trace-listen.c
-+++ b/trace-listen.c
-@@ -31,6 +31,7 @@
- #include <fcntl.h>
- #include <signal.h>
- #include <errno.h>
-+#include <limits.h>
-
- #include "trace-local.h"
- #include "trace-msg.h"
---
-2.11.0
-
diff --git a/meta/recipes-kernel/trace-cmd/trace-cmd/blktrace-api-compatibility.patch b/meta/recipes-kernel/trace-cmd/trace-cmd/blktrace-api-compatibility.patch
deleted file mode 100644
index 320db6a321d..00000000000
--- a/meta/recipes-kernel/trace-cmd/trace-cmd/blktrace-api-compatibility.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-trace-cmd: Add blktrace_api compatibility for TC_BARRIER
-
-Newer kernels replace TC_BARRIER with TC_FLUSH. Ensure trace-cmd
-can build regardless of the linux-kernel-headers version.
-
-Upstream-Status: Inappropriate [Stop gap]
-
-Signed-off-by: Darren Hart <dvhart@linux.intel.com>
-
-diff --git a/plugin_blk.c b/plugin_blk.c
-index 9327b17..c8e5e1c 100644
---- a/plugin_blk.c
-+++ b/plugin_blk.c
-@@ -44,6 +44,15 @@ struct blk_data {
- unsigned short pdu_len;
- };
-
-+/*
-+ * Newer kernels don't define BLK_TC_BARRIER and have replaced it with
-+ * BLK_TC_FLUSH. In this case, define it here and report FLUSHES as BARRIERS as
-+ * a workaround, as described in:
-+ * http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=c09c47caedc9854d59378d6e34c989e51cfdd2b4
-+ */
-+#ifndef BLK_TC_BARRIER
-+#define BLK_TC_BARRIER 1<<2
-+#endif
- static void fill_rwbs(char *rwbs, int action, unsigned int bytes)
- {
- int i = 0;
diff --git a/meta/recipes-kernel/trace-cmd/trace-cmd_git.bb b/meta/recipes-kernel/trace-cmd/trace-cmd_git.bb
deleted file mode 100644
index 27c7c197536..00000000000
--- a/meta/recipes-kernel/trace-cmd/trace-cmd_git.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "User interface to Ftrace"
-HOMEPAGE = "http://git.kernel.org/"
-LICENSE = "GPLv2 & LGPLv2.1"
-
-require trace-cmd.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
- file://trace-cmd.c;beginline=6;endline=8;md5=2c22c965a649ddd7973d7913c5634a5e \
- file://COPYING.LIB;md5=edb195fe538e4552c1f6ca0fd7bf4f0a \
- file://trace-input.c;beginline=5;endline=8;md5=3ec82f43bbe0cfb5951ff414ef4d44d0 \
-"
-
-EXTRA_OEMAKE = "\
- 'prefix=${prefix}' \
- 'bindir=${bindir}' \
- 'man_dir=${mandir}' \
- 'html_install=${datadir}/kernelshark/html' \
- 'img_install=${datadir}/kernelshark/html/images' \
- \
- 'bindir_relative=${@oe.path.relative(prefix, bindir)}' \
- 'libdir=${libdir}' \
- \
- NO_PYTHON=1 \
-"
-
-do_compile_prepend() {
- # Make sure the recompile is OK
- rm -f ${B}/.*.d
-}
-
-do_install() {
- oe_runmake DESTDIR="${D}" install
-}
-
diff --git a/meta/recipes-multimedia/alsa/alsa-fpu.inc b/meta/recipes-multimedia/alsa/alsa-fpu.inc
deleted file mode 100644
index 355a9dfcd10..00000000000
--- a/meta/recipes-multimedia/alsa/alsa-fpu.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-def get_alsa_fpu_setting(bb, d):
- if d.getVar('TARGET_FPU') in [ 'soft' ]:
- return "--with-softfloat"
- return ""
diff --git a/meta/recipes-multimedia/alsa/alsa-lib_1.1.5.bb b/meta/recipes-multimedia/alsa/alsa-lib_1.1.5.bb
deleted file mode 100644
index c5bf107e5ee..00000000000
--- a/meta/recipes-multimedia/alsa/alsa-lib_1.1.5.bb
+++ /dev/null
@@ -1,40 +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=7fbc338309ac38fefcd64b04bb903e34 \
- file://src/socket.c;beginline=1;endline=26;md5=11ff89a8a7a4a690a5c78effe8159545"
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI = "ftp://ftp.alsa-project.org/pub/lib/${BP}.tar.bz2"
-SRC_URI[md5sum] = "a2b465c3a5265d8a57f3ff39c6c4fc29"
-SRC_URI[sha256sum] = "f4f68ad3c6da36b0b5241ac3c798a7a71e0e97d51f972e9f723b3f20a9650ae6"
-
-inherit autotools pkgconfig
-
-require alsa-fpu.inc
-EXTRA_OECONF += "${@get_alsa_fpu_setting(bb, d)} "
-
-EXTRA_OECONF += "--disable-python"
-
-PACKAGES =+ "alsa-server libasound alsa-conf alsa-doc"
-FILES_libasound = "${libdir}/libasound.so.*"
-FILES_alsa-server = "${bindir}/*"
-FILES_alsa-conf = "${datadir}/alsa/"
-
-RDEPENDS_libasound = "alsa-conf"
-
-# alsa-lib gets automatically added to alsa-lib-dev dependencies, but the
-# alsa-lib package doesn't exist. libasound is the real library package.
-RDEPENDS_${PN}-dev = "libasound"
-
-# upgrade path
-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"
diff --git a/meta/recipes-multimedia/alsa/alsa-lib_1.1.6.bb b/meta/recipes-multimedia/alsa/alsa-lib_1.1.6.bb
new file mode 100644
index 00000000000..25e7a3c6b72
--- /dev/null
+++ b/meta/recipes-multimedia/alsa/alsa-lib_1.1.6.bb
@@ -0,0 +1,41 @@
+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 = "ftp://ftp.alsa-project.org/pub/lib/${BP}.tar.bz2"
+SRC_URI[md5sum] = "2f981a8f7897c59ec2ddc44916d33788"
+SRC_URI[sha256sum] = "5f2cd274b272cae0d0d111e8a9e363f08783329157e8dd68b3de0c096de6d724"
+
+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-plugins_1.1.5.bb b/meta/recipes-multimedia/alsa/alsa-plugins_1.1.6.bb
index 4bd0acc54fe..17c1879f95c 100644
--- a/meta/recipes-multimedia/alsa/alsa-plugins_1.1.5.bb
+++ b/meta/recipes-multimedia/alsa/alsa-plugins_1.1.6.bb
@@ -14,15 +14,15 @@ SECTION = "multimedia"
# of LGPLv2.1 like the rest of the plugins.
LICENSE = "LGPLv2.1 & GPLv2+"
LIC_FILES_CHKSUM = "\
- file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34 \
- file://COPYING.GPL;md5=94d55d512a9ba36caa9b7df079bae19f \
+ 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 = "ftp://ftp.alsa-project.org/pub/plugins/${BP}.tar.bz2"
-SRC_URI[md5sum] = "f898b0e6e8acf3f6f82bc2a0f0c84a97"
-SRC_URI[sha256sum] = "797da5f8f53379fbea28817bc466de16affd2c07849e84f1af8d5e22f7bb7f1c"
+SRC_URI[md5sum] = "8387279e99feeb2ecffaac5f293223d7"
+SRC_URI[sha256sum] = "6f1d31ebe3b1fa1cc8dade60b7bed1cb2583ac998167002d350dc0a5e3e40c13"
DEPENDS += "alsa-lib"
diff --git a/meta/recipes-multimedia/alsa/alsa-tools/0002-Fix-clang-Wreserved-user-defined-literal-warnings.patch b/meta/recipes-multimedia/alsa/alsa-tools/0002-Fix-clang-Wreserved-user-defined-literal-warnings.patch
new file mode 100644
index 00000000000..c137bc8a284
--- /dev/null
+++ b/meta/recipes-multimedia/alsa/alsa-tools/0002-Fix-clang-Wreserved-user-defined-literal-warnings.patch
@@ -0,0 +1,34 @@
+Upstream-Status: Backport
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+From a861bdabf02cd9bfb3ec7c0571c563c0fa14adfb Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 24 Apr 2018 12:24:32 -0700
+Subject: [PATCH] us428control: Fix clang -Wreserved-user-defined-literal
+ warnings
+
+| us428control.cc:66:18: error: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wreserved-user-defined-literal]
+| printf("usage: "PROGNAME" [-v verbosity_level 0..2] [-c card] [-D device] [-u usb-device] [-m mode]\n");
+| ^
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+---
+ us428control/us428control.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/us428control/us428control.cc b/us428control/us428control.cc
+index e839bf4..8cb3c42 100644
+--- a/us428control/us428control.cc
++++ b/us428control/us428control.cc
+@@ -63,7 +63,7 @@ static void usage(void)
+ {
+ printf("Tascam US-428 Control\n");
+ printf("version %s\n", VERSION);
+- printf("usage: "PROGNAME" [-v verbosity_level 0..2] [-c card] [-D device] [-u usb-device] [-m mode]\n");
++ printf("usage: " PROGNAME " [-v verbosity_level 0..2] [-c card] [-D device] [-u usb-device] [-m mode]\n");
+ printf("mode is one of (us224, us428, mixxx)\n");
+ }
+ /*
+--
+1.7.11.7
diff --git a/meta/recipes-multimedia/alsa/alsa-tools/autotools.patch b/meta/recipes-multimedia/alsa/alsa-tools/autotools.patch
deleted file mode 100644
index 2e74963c890..00000000000
--- a/meta/recipes-multimedia/alsa/alsa-tools/autotools.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Add parameters to autoreconf to support cross compile.
-Remove some sub-components which needs further recipe support.
-
-Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
-
-Upstream-Status: Inappropriate [configuration]
-
-diff -ruN alsa-tools-1.0.24.1-orig//ld10k1/gitcompile alsa-tools-1.0.24.1/ld10k1/gitcompile
---- alsa-tools-1.0.24.1-orig//ld10k1/gitcompile 2011-07-06 11:27:40.227665002 +0800
-+++ alsa-tools-1.0.24.1/ld10k1/gitcompile 2011-07-14 13:26:18.017665004 +0800
-@@ -1,6 +1,6 @@
- #!/bin/bash
-
--autoreconf -fi || exit 1
-+autoreconf $ACLOCAL_FLAGS -fi || exit 1
- export CFLAGS='-O2 -Wall -pipe -g'
- echo "CFLAGS=$CFLAGS"
- echo "./configure $@"
-diff -ruN alsa-tools-1.0.24.1-orig//Makefile alsa-tools-1.0.24.1/Makefile
---- alsa-tools-1.0.24.1-orig//Makefile 2011-07-06 11:27:40.207665000 +0800
-+++ alsa-tools-1.0.24.1/Makefile 2011-07-14 15:08:08.877665009 +0800
-@@ -1,8 +1,8 @@
- VERSION = 1.1.5
- TOP = .
--SUBDIRS = as10k1 envy24control hdsploader hdspconf hdspmixer \
-+SUBDIRS = as10k1 envy24control \
- mixartloader pcxhrloader rmedigicontrol sb16_csp seq sscape_ctl \
-- us428control usx2yloader vxloader echomixer ld10k1 qlo10k1 \
-+ us428control usx2yloader vxloader echomixer \
- hwmixvolume hdajackretask hda-verb hdajacksensetest
-
- all:
diff --git a/meta/recipes-multimedia/alsa/alsa-tools/gitcompile_hdajacksensetest b/meta/recipes-multimedia/alsa/alsa-tools/gitcompile_hdajacksensetest
deleted file mode 100755
index 58328bd3a50..00000000000
--- a/meta/recipes-multimedia/alsa/alsa-tools/gitcompile_hdajacksensetest
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-
-aclocal $ACLOCAL_FLAGS || exit 1
-automake --foreign --add-missing || exit 1
-autoconf || exit 1
-export CFLAGS='-O2 -Wall -pipe -g'
-echo "CFLAGS=$CFLAGS"
-echo "./configure $@"
-./configure $@ || exit 1
-unset CFLAGS
-if [ -z "$GITCOMPILE_NO_MAKE" ]; then
- make || exit 1
-fi
diff --git a/meta/recipes-multimedia/alsa/alsa-tools/makefile_no_gtk.patch b/meta/recipes-multimedia/alsa/alsa-tools/makefile_no_gtk.patch
deleted file mode 100644
index 54373d1a8f3..00000000000
--- a/meta/recipes-multimedia/alsa/alsa-tools/makefile_no_gtk.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Remove some sub-components which need gtk+.
-
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Rogerio Nunes <ronunes@gmail.com>
-Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
-
-Update patch for alsa-tools 1.0.29
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-diff --git a/Makefile b/Makefile
-index 2457a1c..72346d9 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,9 +1,9 @@
- VERSION = 1.1.5
- TOP = .
--SUBDIRS = as10k1 envy24control \
-- mixartloader pcxhrloader rmedigicontrol sb16_csp seq sscape_ctl \
-- us428control usx2yloader vxloader echomixer \
-- hwmixvolume hdajackretask hda-verb hdajacksensetest
-+SUBDIRS = as10k1 \
-+ mixartloader pcxhrloader sb16_csp seq sscape_ctl \
-+ us428control usx2yloader vxloader \
-+ hwmixvolume hda-verb hdajacksensetest
-
- all:
- @for i in $(SUBDIRS); do \
diff --git a/meta/recipes-multimedia/alsa/alsa-tools/musl.patch b/meta/recipes-multimedia/alsa/alsa-tools/musl.patch
new file mode 100644
index 00000000000..9eb129c379e
--- /dev/null
+++ b/meta/recipes-multimedia/alsa/alsa-tools/musl.patch
@@ -0,0 +1,47 @@
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From 235d9c5e8381518b0a8661786e7e0cbdd1bbcd01 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Tue, 12 Jun 2018 13:24:34 +0100
+Subject: [PATCH] ld10k1: define _GNU_SOURCE and use sighandler_t
+
+__sighandler_t is a glibc internal type which doesn't exist in musl. By using
+AC_USE_SYSTEM_EXTENSIONS to get _GNU_SOURCE defined, both glibc and musl
+then expose sighandler_t.
+
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+---
+ ld10k1/configure.ac | 1 +
+ ld10k1/src/ld10k1_fnc1.c | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/ld10k1/configure.ac b/ld10k1/configure.ac
+index 276b24e..f48ca31 100644
+--- a/ld10k1/configure.ac
++++ b/ld10k1/configure.ac
+@@ -4,6 +4,7 @@ AC_CONFIG_MACRO_DIR([m4])
+ AM_MAINTAINER_MODE([enable])
+
+ AC_CONFIG_HEADERS(config.h)
++AC_USE_SYSTEM_EXTENSIONS
+ AC_PROG_CC
+ AC_PROG_LD
+ AC_PROG_INSTALL
+diff --git a/ld10k1/src/ld10k1_fnc1.c b/ld10k1/src/ld10k1_fnc1.c
+index 343584c..ddc43c6 100644
+--- a/ld10k1/src/ld10k1_fnc1.c
++++ b/ld10k1/src/ld10k1_fnc1.c
+@@ -179,7 +179,7 @@ int main_loop(comm_param *param, int audigy, const char *card_id, int tram_size,
+ {
+ fd_set active_fd_set/*, read_fd_set*/;
+ int i, j, res = 0;
+- __sighandler_t old_sig_pipe;
++ sighandler_t old_sig_pipe;
+
+ int main_sock = 0;
+ int data_sock = 0;
+--
+2.11.0
+
diff --git a/meta/recipes-multimedia/alsa/alsa-tools_1.1.5.bb b/meta/recipes-multimedia/alsa/alsa-tools_1.1.5.bb
deleted file mode 100644
index 1be43aa6e70..00000000000
--- a/meta/recipes-multimedia/alsa/alsa-tools_1.1.5.bb
+++ /dev/null
@@ -1,40 +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 ncurses glib-2.0"
-
-LIC_FILES_CHKSUM = "file://hdsploader/COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://ld10k1/COPYING.LIB;md5=7fbc338309ac38fefcd64b04bb903e34"
-
-SRC_URI = "ftp://ftp.alsa-project.org/pub/tools/${BP}.tar.bz2 \
- file://autotools.patch \
- ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', 'file://makefile_no_gtk.patch', d)} \
- file://gitcompile_hdajacksensetest \
- "
-
-SRC_URI[md5sum] = "3afb92eb1b4f2edc8691498e57c3ec78"
-SRC_URI[sha256sum] = "bc3c6567de835223ee7d69487b8c22fb395a2e8c613341b0c96e6a5f6a2bd534"
-
-inherit autotools-brokensep pkgconfig
-
-CLEANBROKEN = "1"
-
-EXTRA_OEMAKE += "GITCOMPILE_ARGS='--host=${HOST_SYS} --build=${BUILD_SYS} --target=${TARGET_SYS} --with-libtool-sysroot=${STAGING_DIR_HOST} --prefix=${prefix}'"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk+', '', d)}"
-PACKAGECONFIG[gtk+] = ",,gtk+ gtk+3,"
-
-# configure.ac/.in doesn't exist so force copy
-AUTOTOOLS_COPYACLOCAL = "1"
-
-do_compile_prepend () {
- #Automake dir is not correctly detected in cross compilation case
- export AUTOMAKE_DIR="$(automake --print-libdir)"
- export ACLOCAL_FLAGS="--system-acdir=${ACLOCALDIR}/ ${ACLOCALEXTRAPATH}"
-
- cp ${WORKDIR}/gitcompile_hdajacksensetest ${S}/hdajacksensetest/gitcompile
-}
-
-FILES_${PN} += "${datadir}/ld10k1"
diff --git a/meta/recipes-multimedia/alsa/alsa-tools_1.1.6.bb b/meta/recipes-multimedia/alsa/alsa-tools_1.1.6.bb
new file mode 100644
index 00000000000..90e54dbb145
--- /dev/null
+++ b/meta/recipes-multimedia/alsa/alsa-tools_1.1.6.bb
@@ -0,0 +1,87 @@
+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 = "ftp://ftp.alsa-project.org/pub/tools/${BP}.tar.bz2 \
+ file://0002-Fix-clang-Wreserved-user-defined-literal-warnings.patch \
+ file://musl.patch \
+ "
+
+SRC_URI[md5sum] = "5ca8c9437ae779997cd62fb2815fef19"
+SRC_URI[sha256sum] = "d69c4dc2fb641a974d9903e9eb78c94cb0c7ac6c45bae664f0c9d6c0a1593227"
+
+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', '${GTK2DISTROFEATURES}', 'echomixer envy24control rmedigicontrol', '', d)} \
+ ${@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[hwmixvolume] = ",,,python-core python-pygtk"
+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] = ""
+
+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-utils-scripts_1.1.5.bb b/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.1.6.bb
index fef79d9c9c6..fef79d9c9c6 100644
--- a/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.1.5.bb
+++ b/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.1.6.bb
diff --git a/meta/recipes-multimedia/alsa/alsa-utils/0001-alsactl-don-t-let-systemd-unit-restore-the-volume-wh.patch b/meta/recipes-multimedia/alsa/alsa-utils/0001-alsactl-don-t-let-systemd-unit-restore-the-volume-wh.patch
deleted file mode 100644
index 907ca5ce0e5..00000000000
--- a/meta/recipes-multimedia/alsa/alsa-utils/0001-alsactl-don-t-let-systemd-unit-restore-the-volume-wh.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From b9d41b784657152a4c5683a9458dffab557f0689 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Fri, 29 Aug 2014 18:58:56 +0300
-Subject: [PATCH] alsactl: don't let systemd unit restore the volume when
- asound.state is missing
-
-This avoids an error on bootup
-
-Filed as https://bugtrack.alsa-project.org/alsa-bug/view.php?id=5459
-
-Upstream-Status: Pending
-
-Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
-Signed-off-by: Cristian Iorga <cristian.iorga@intel.com>
-
-Rebased on 1.1.0.
-
-Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
----
- alsactl/Makefile.am | 7 ++++---
- alsactl/alsa-restore.service.in | 1 +
- 2 files changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/alsactl/Makefile.am b/alsactl/Makefile.am
-index 90fab9d..190525a 100644
---- a/alsactl/Makefile.am
-+++ b/alsactl/Makefile.am
-@@ -38,9 +38,10 @@ install-data-hook:
- endif
-
- edit = \
-- $(SED) -r -e 's,@sbindir\@,$(sbindir),g' \
-- -e 's,@mydatadir\@,$(mydatadir),g' \
-- -e 's,@daemonswitch\@,$(ALSACTL_DAEMONSWITCH),g' \
-+ $(SED) -e 's,@localstatedir\@,$(localstatedir),g' \
-+ -e 's,@sbindir\@,$(sbindir),g' \
-+ -e 's,@mydatadir\@,$(mydatadir),g' \
-+ -e 's,@daemonswitch\@,$(ALSACTL_DAEMONSWITCH),g' \
- < $< > $@ || rm $@
-
- alsa-state.service: alsa-state.service.in
-diff --git a/alsactl/alsa-restore.service.in b/alsactl/alsa-restore.service.in
-index 80fd5fd..6beb36d 100644
---- a/alsactl/alsa-restore.service.in
-+++ b/alsactl/alsa-restore.service.in
-@@ -7,6 +7,7 @@
- Description=Save/Restore Sound Card State
- ConditionPathExists=!@daemonswitch@
- ConditionPathExistsGlob=/dev/snd/control*
-+ConditionPathExists=@localstatedir@/lib/alsa/asound.state
-
- [Service]
- Type=oneshot
---
-2.14.2
-
diff --git a/meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb b/meta/recipes-multimedia/alsa/alsa-utils_1.1.6.bb
index f2231f34f06..b8ba0cb22a4 100644
--- a/meta/recipes-multimedia/alsa/alsa-utils_1.1.5.bb
+++ b/meta/recipes-multimedia/alsa/alsa-utils_1.1.6.bb
@@ -4,7 +4,7 @@ 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=fe9526b055e246b5558809a5ae25c0b9"
+ file://alsactl/utils.c;beginline=1;endline=20;md5=2ce7f7b6739487fb72c689d46521f958"
DEPENDS = "alsa-lib ncurses libsamplerate0"
PACKAGECONFIG ??= "udev"
@@ -16,15 +16,14 @@ PACKAGECONFIG ??= "udev"
# 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,,udev"
+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"
SRC_URI = "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-${PV}.tar.bz2 \
- file://0001-alsactl-don-t-let-systemd-unit-restore-the-volume-wh.patch \
"
-SRC_URI[md5sum] = "dfe6ea147a5e07a056919591c2f5dac3"
-SRC_URI[sha256sum] = "320bd285e91db6e7fd7db3c9ec6f55b02f35449ff273c7844780ac6a5a3de2e8"
+SRC_URI[md5sum] = "50ae75567459646b843bed78d916b002"
+SRC_URI[sha256sum] = "155caecc40b2220f686f34ba3655a53e3bdbc0586adb1056733949feaaf7d36e"
# On build machines with python-docutils (not python3-docutils !!) installed
# rst2man (not rst2man.py) is detected and compile fails with
@@ -101,9 +100,8 @@ do_install() {
rm ${D}${sbindir}/alsa-info.sh
rm -f ${D}${sbindir}/alsabat-test.sh
- if ${@bb.utils.contains('PACKAGECONFIG', 'udev', 'false', 'true', d)}; then
- # This is where alsa-utils will install its rules if we don't tell it anything else.
- rm -rf ${D}${nonarch_base_libdir}/udev
- rmdir --ignore-fail-on-non-empty ${D}${nonarch_base_libdir}
- fi
+ # 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/ffmpeg/ffmpeg/CVE-2018-15822.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2018-15822.patch
new file mode 100644
index 00000000000..7d5868a72ad
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2018-15822.patch
@@ -0,0 +1,37 @@
+From 6b67d7f05918f7a1ee8fc6ff21355d7e8736aa10 Mon Sep 17 00:00:00 2001
+From: Michael Niedermayer <michael@niedermayer.cc>
+Date: Sat, 28 Jul 2018 15:03:50 +0200
+Subject: [PATCH] avformat/flvenc: Check audio packet size
+
+Fixes: Assertion failure
+Fixes: assert_flvenc.c:941_1.swf
+
+Upstream-Status: Backport [https://github.com/FFmpeg/FFmpeg/commit/6b67d7f05918f7a1ee8fc6ff21355d7e8736aa10]
+CVE: CVE-2018-15822
+
+Found-by: #CHEN HONGXU# <HCHEN017@e.ntu.edu.sg>
+Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+---
+ libavformat/flvenc.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c
+index 1c552a3e6b..e4863f1fc7 100644
+--- a/libavformat/flvenc.c
++++ b/libavformat/flvenc.c
+@@ -883,6 +883,11 @@ static int flv_write_packet(AVFormatContext *s, AVPacket *pkt)
+ int flags = -1, flags_size, ret;
+ int64_t cur_offset = avio_tell(pb);
+
++ if (par->codec_type == AVMEDIA_TYPE_AUDIO && !pkt->size) {
++ av_log(s, AV_LOG_WARNING, "Empty audio Packet\n");
++ return AVERROR(EINVAL);
++ }
++
+ if (par->codec_id == AV_CODEC_ID_VP6F || par->codec_id == AV_CODEC_ID_VP6A ||
+ par->codec_id == AV_CODEC_ID_VP6 || par->codec_id == AV_CODEC_ID_AAC)
+ flags_size = 2;
+--
+2.17.1
+
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg_3.4.2.bb b/meta/recipes-multimedia/ffmpeg/ffmpeg_4.0.2.bb
index 879cf7ffb94..58f58fc5c8f 100644
--- a/meta/recipes-multimedia/ffmpeg/ffmpeg_3.4.2.bb
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg_4.0.2.bb
@@ -25,18 +25,21 @@ LIC_FILES_CHKSUM = "file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
SRC_URI = "https://www.ffmpeg.org/releases/${BP}.tar.xz \
file://mips64_cpu_detection.patch \
+ file://CVE-2018-15822.patch \
"
-SRC_URI[md5sum] = "cbf4ead227fcedddf54c86013705a988"
-SRC_URI[sha256sum] = "2b92e9578ef8b3e49eeab229e69305f5f4cbc1fdaa22e927fc7fca18acccd740"
+SRC_URI[md5sum] = "ae0bfdf809306a212b4f0e6eb8d1c75e"
+SRC_URI[sha256sum] = "a95c0cc9eb990e94031d2183f2e6e444cc61c99f6f182d1575c433d62afb2f97"
# Build fails when thumb is enabled: https://bugzilla.yoctoproject.org/show_bug.cgi?id=7717
-ARM_INSTRUCTION_SET = "arm"
+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 = "alsa-lib zlib libogg yasm-native"
+DEPENDS = "alsa-lib zlib libogg nasm-native"
inherit autotools pkgconfig
diff --git a/meta/recipes-multimedia/flac/flac/CVE-2017-6888.patch b/meta/recipes-multimedia/flac/flac/CVE-2017-6888.patch
new file mode 100644
index 00000000000..f01791680ee
--- /dev/null
+++ b/meta/recipes-multimedia/flac/flac/CVE-2017-6888.patch
@@ -0,0 +1,37 @@
+From 43ecb6431077ff54e9df27f71737e6e96d6c039f Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Tue, 21 Aug 2018 14:46:43 +0800
+Subject: [PATCH] From 5f47b63e9c971e6391590caf00a0f2a5ed612e67 Mon Sep 17
+ 00:00:00 2001 From: Erik de Castro Lopo <erikd@mega-nerd.com> Date: Sat, 8
+ Apr 2017 18:34:49 +1000 Subject: [PATCH] stream_decoder.c: Fix a memory leak
+
+Leak reported by Secunia Research.
+
+Upstream-Status: Backport[https://git.xiph.org/?p=flac.git;a=commit;
+ h=4f47b63e9c971e6391590caf00a0f2a5ed612e67]
+
+Update patch to version 1.3.2
+CVE: CVE-2017-6888
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ src/libFLAC/stream_decoder.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/libFLAC/stream_decoder.c b/src/libFLAC/stream_decoder.c
+index d364b0c..ebf93da 100644
+--- a/src/libFLAC/stream_decoder.c
++++ b/src/libFLAC/stream_decoder.c
+@@ -1759,6 +1759,9 @@ FLAC__bool read_metadata_vorbiscomment_(FLAC__StreamDecoder *decoder, FLAC__Stre
+ }
+ memset (obj->comments[i].entry, 0, obj->comments[i].length) ;
+ if (!FLAC__bitreader_read_byte_block_aligned_no_crc(decoder->private_->input, obj->comments[i].entry, obj->comments[i].length)) {
++ /* Current i-th entry is bad, so we delete it. */\
++ free (obj->comments[i].entry) ;
++ obj->comments[i].entry = NULL ;
+ obj->num_comments = i;
+ goto skip;
+ }
+--
+2.7.4
+
diff --git a/meta/recipes-multimedia/flac/flac_1.3.2.bb b/meta/recipes-multimedia/flac/flac_1.3.2.bb
index 8315ab5a2f2..92ef8973e91 100644
--- a/meta/recipes-multimedia/flac/flac_1.3.2.bb
+++ b/meta/recipes-multimedia/flac/flac_1.3.2.bb
@@ -14,7 +14,9 @@ LIC_FILES_CHKSUM = "file://COPYING.FDL;md5=ad1419ecc56e060eccf8184a87c4285f \
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 = "http://downloads.xiph.org/releases/flac/${BP}.tar.xz \
+ file://CVE-2017-6888.patch "
+
SRC_URI[md5sum] = "454f1bfa3f93cc708098d7890d0499bd"
SRC_URI[sha256sum] = "91cfc3ed61dc40f47f050a109b08610667d73477af6ef36dcad31c31a4a8d53f"
diff --git a/meta/recipes-multimedia/gstreamer/files/0001-connect-has-a-different-signature-on-musl.patch b/meta/recipes-multimedia/gstreamer/files/0001-connect-has-a-different-signature-on-musl.patch
new file mode 100644
index 00000000000..a0d215c5a04
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/files/0001-connect-has-a-different-signature-on-musl.patch
@@ -0,0 +1,38 @@
+From 0bd8004d8dddc486d3961a5316d24e8f2645e4c8 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
+
+On linux when not using glibc and using musl for C library, connect
+API has a different signature, this patch fixes this so it can compile
+on musl, the functionality should remain same as it is immediately
+typcasted to struct sockaddr_in* type inside the function before use
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ 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
+index 53c1ebb..ad7adf8 100644
+--- a/plugins/fault_injection/socket_interposer.c
++++ b/plugins/fault_injection/socket_interposer.c
+@@ -100,10 +100,15 @@ socket_interposer_set_callback (struct sockaddr_in *addrin,
+ }
+
+ int
+-connect (int socket, const struct sockaddr_in *addrin, socklen_t address_len)
++#if defined(__linux__) && !defined(__GLIBC__)
++connect (int socket, const struct sockaddr *addr, socklen_t address_len)
++#else
++connect (int socket, const struct sockaddr_in *addr, socklen_t address_len)
++#endif
+ {
+ size_t i;
+ int override_errno = 0;
++ struct sockaddr_in* addrin = (struct sockaddr_in*)addr;
+ typedef ssize_t (*real_connect_fn) (int, const struct sockaddr_in *,
+ socklen_t);
+ static real_connect_fn real_connect = 0;
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
index 2cab87f9ec8..1b7f1150835 100644
--- 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
@@ -1,4 +1,4 @@
-From 90916f96262fa7b27a0a99788c69f9fd6df11000 Mon Sep 17 00:00:00 2001
+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
@@ -10,12 +10,13 @@ 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 | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
+ 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..217a6ae 100644
+index 162be57..933f979 100644
--- a/common/m4/introspection.m4
+++ b/common/m4/introspection.m4
@@ -54,14 +54,14 @@ m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
@@ -37,6 +38,3 @@ index 162be57..217a6ae 100644
INTROSPECTION_INIT="extern void gst_init(gint*,gchar**); gst_init(NULL,NULL);"
fi
AC_SUBST(INTROSPECTION_SCANNER)
---
-2.6.2
-
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
new file mode 100644
index 00000000000..d02d8694107
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/files/add-a-target-to-compile-tests.patch
@@ -0,0 +1,69 @@
+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/run-ptest b/meta/recipes-multimedia/gstreamer/files/run-ptest
new file mode 100644
index 00000000000..473d0b67a77
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/files/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+make -k runtests
diff --git a/meta/recipes-multimedia/gstreamer/gst-validate_1.12.4.bb b/meta/recipes-multimedia/gstreamer/gst-validate_1.14.2.bb
index 0f2585a459f..f4438dc5a2a 100644
--- a/meta/recipes-multimedia/gstreamer/gst-validate_1.12.4.bb
+++ b/meta/recipes-multimedia/gstreamer/gst-validate_1.14.2.bb
@@ -6,11 +6,13 @@ SECTION = "multimedia"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
-SRC_URI = "https://gstreamer.freedesktop.org/src/${BPN}/${BP}.tar.xz"
-SRC_URI[md5sum] = "bc074d49677081f9c27de11a09165746"
-SRC_URI[sha256sum] = "f9da9dfe6e5d6f5ba3b38c5752b42d3f927715904942b405c2924d3cb77afba1"
+SRC_URI = "https://gstreamer.freedesktop.org/src/${BPN}/${BP}.tar.xz \
+ file://0001-connect-has-a-different-signature-on-musl.patch \
+ "
+SRC_URI[md5sum] = "f334102b0e706008505d00f7f5b5e023"
+SRC_URI[sha256sum] = "ea9e423e5470ef85ef8a0aea1714e7abfc49deb2ed282057367484cdeba6f19f"
-DEPENDS = "json-glib glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base"
+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/*"
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
new file mode 100644
index 00000000000..120c0798ea3
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-fix-host-contamination.patch
@@ -0,0 +1,36 @@
+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/0001-hevcpred_msa.c-Fix-build-by-Including-libavcodec-hev.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-hevcpred_msa.c-Fix-build-by-Including-libavcodec-hev.patch
deleted file mode 100644
index afbfc84db57..00000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-hevcpred_msa.c-Fix-build-by-Including-libavcodec-hev.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From b5226c096a0b7049874858e94a59d43e10ba3fd2 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 21 Sep 2017 10:22:56 -0700
-Subject: [PATCH] hevcpred_msa.c: Fix build by Including libavcodec/hevcdec.h
-
-src/libavcodec/mips/hevcpred_msa.c:1913:32: error: unknown type name 'HEVCContext'; did you mean 'HEVCPredContext'?
- void ff_intra_pred_8_16x16_msa(HEVCContext *s, int x0, int y0, int c_idx)
- ^~~~~~~~~~~
- HEVCPredContext
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- gst-libs/ext/libav/libavcodec/mips/hevcpred_msa.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gst-libs/ext/libav/libavcodec/mips/hevcpred_msa.c b/gst-libs/ext/libav/libavcodec/mips/hevcpred_msa.c
-index 6a3b281..963c64c 100644
---- a/gst-libs/ext/libav/libavcodec/mips/hevcpred_msa.c
-+++ b/gst-libs/ext/libav/libavcodec/mips/hevcpred_msa.c
-@@ -18,7 +18,7 @@
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
--#include "libavcodec/hevc.h"
-+#include "libavcodec/hevcdec.h"
- #include "libavutil/mips/generic_macros_msa.h"
- #include "hevcpred_mips.h"
-
---
-2.14.1
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.12.4.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.12.4.bb
deleted file mode 100644
index af547ba6021..00000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.12.4.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-require gstreamer1.0-libav.inc
-
-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 = "http://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-hevcpred_msa.c-Fix-build-by-Including-libavcodec-hev.patch \
- "
-SRC_URI[md5sum] = "8a851bf2e475e90a3fdac9506e3e4dbd"
-SRC_URI[sha256sum] = "2a56aa5d2d8cd912f2bce17f174713d2c417ca298f1f9c28ee66d4aa1e1d9e62"
-
-S = "${WORKDIR}/gst-libav-${PV}"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.14.2.bb
index c2283061cc0..718db17d0d3 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav.inc
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.14.2.bb
@@ -4,6 +4,25 @@ 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 = "http://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] = "da3d4655268bc6766a261065ca737590"
+SRC_URI[sha256sum] = "8a351c39c5cfc2bbd31ca434ec4a290a730a26efbdea962fdd8306dce5c576de"
+
+S = "${WORKDIR}/gst-libav-${PV}"
DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base zlib bzip2 xz"
@@ -17,7 +36,7 @@ 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,yasm-native"
+PACKAGECONFIG[yasm] = "--enable-yasm,--disable-yasm,nasm-native"
PACKAGECONFIG[valgrind] = "--enable-valgrind,--disable-valgrind,valgrind"
GSTREAMER_1_0_DEBUG ?= "--disable-debug"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.12.4.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.12.4.bb
deleted file mode 100644
index 7f7eae3708b..00000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.12.4.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-include gstreamer1.0-omx.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
- file://omx/gstomx.h;beginline=1;endline=21;md5=5c8e1fca32704488e76d2ba9ddfa935f"
-
-SRC_URI = "http://gstreamer.freedesktop.org/src/gst-omx/gst-omx-${PV}.tar.xz"
-
-SRC_URI[md5sum] = "eb8d5ae3b69cfeed9dc77c592106247e"
-SRC_URI[sha256sum] = "a025fa24242ec868fe0ff1e66d806a1070bcbc7c14a987a89cdc3395d0d56d5f"
-
-S = "${WORKDIR}/gst-omx-${PV}"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.14.2.bb
index 5d9235104ec..3f7bc8f0fca 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx.inc
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.14.2.bb
@@ -4,6 +4,15 @@ 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 = "http://gstreamer.freedesktop.org/src/gst-omx/gst-omx-${PV}.tar.xz"
+
+SRC_URI[md5sum] = "d4fc97e3516befe04be3d1665a6f7bbe"
+SRC_URI[sha256sum] = "316dbb13693795383cad6ec4dbebd94a869cd1f9d59a393686cad0b77bf9b5a9"
+
+S = "${WORKDIR}/gst-omx-${PV}"
DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad"
@@ -11,7 +20,6 @@ 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"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
index 8d99dc6cccc..05b991a8f04 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
@@ -1,48 +1,17 @@
-From 7592e793b3906355d76ca9a59f8fea2749ea2a4e Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 27 Oct 2015 14:36:58 +0200
-Subject: [PATCH] Makefile.am: don't hardcode libtool name when running
+From 7d8e8b8bcce34d01fc7ad7285b4eb17ad8949399 Mon Sep 17 00:00:00 2001
+From: Anuj Mittal <anuj.mittal@intel.com>
+Date: Wed, 11 Apr 2018 11:06:39 +0800
+Subject: [PATCH] Makefile.am: don't hardcode libtool name when running
introspection tools
Upstream-Status: Pending [review on oe-core list]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
-%% original patch: 0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
-
Signed-off-by: Maxin B. John <maxin.john@intel.com>
---
- gst-libs/gst/allocators/Makefile.am | 2 +-
- gst-libs/gst/gl/Makefile.am | 2 +-
- gst-libs/gst/insertbin/Makefile.am | 2 +-
- gst-libs/gst/mpegts/Makefile.am | 2 +-
- 4 files changed, 4 insertions(+), 4 deletions(-)
+ gst-libs/gst/insertbin/Makefile.am | 2 +-
+ gst-libs/gst/mpegts/Makefile.am | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
-diff --git a/gst-libs/gst/allocators/Makefile.am b/gst-libs/gst/allocators/Makefile.am
-index e50d077..623f092 100644
---- a/gst-libs/gst/allocators/Makefile.am
-+++ b/gst-libs/gst/allocators/Makefile.am
-@@ -37,7 +37,7 @@ GstBadAllocators-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstbadalloca
- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
- --library=libgstbadallocators-@GST_API_VERSION@.la \
- --include=Gst-@GST_API_VERSION@ \
-- --libtool="$(top_builddir)/libtool" \
-+ --libtool="$(LIBTOOL)" \
- --pkg gstreamer-@GST_API_VERSION@ \
- --pkg-export gstreamer-badallocators-@GST_API_VERSION@ \
- --output $@ \
-diff --git a/gst-libs/gst/gl/Makefile.am b/gst-libs/gst/gl/Makefile.am
-index 2ae4773..dfa7a7d 100644
---- a/gst-libs/gst/gl/Makefile.am
-+++ b/gst-libs/gst/gl/Makefile.am
-@@ -178,7 +178,7 @@ GstGL-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstgl-@GST_API_VERSION@
- --include=Gst-@GST_API_VERSION@ \
- --include=GstBase-@GST_API_VERSION@ \
- --include=GstVideo-@GST_API_VERSION@ \
-- --libtool="$(top_builddir)/libtool" \
-+ --libtool="$(LIBTOOL)" \
- --pkg gstreamer-@GST_API_VERSION@ \
- --pkg gstreamer-base-@GST_API_VERSION@ \
- --pkg gstreamer-video-@GST_API_VERSION@ \
diff --git a/gst-libs/gst/insertbin/Makefile.am b/gst-libs/gst/insertbin/Makefile.am
index 1f8ea30..4b98ef6 100644
--- a/gst-libs/gst/insertbin/Makefile.am
@@ -57,10 +26,10 @@ index 1f8ea30..4b98ef6 100644
--pkg gstreamer-base-@GST_API_VERSION@ \
--pkg-export gstreamer-insertbin-@GST_API_VERSION@ \
diff --git a/gst-libs/gst/mpegts/Makefile.am b/gst-libs/gst/mpegts/Makefile.am
-index aeea32e..929d9cc 100644
+index f264e33..9934a4d 100644
--- a/gst-libs/gst/mpegts/Makefile.am
+++ b/gst-libs/gst/mpegts/Makefile.am
-@@ -79,7 +79,7 @@ GstMpegts-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstmpegts-@GST_API_
+@@ -82,7 +82,7 @@ GstMpegts-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstmpegts-@GST_API_
--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-video-@GST_API_VERSION@` \
--library=libgstmpegts-@GST_API_VERSION@.la \
--include=Gst-@GST_API_VERSION@ \
@@ -70,5 +39,5 @@ index aeea32e..929d9cc 100644
--pkg gstreamer-video-@GST_API_VERSION@ \
--pkg-export gstreamer-mpegts-@GST_API_VERSION@ \
--
-2.4.0
+2.7.4
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-vkdisplay-Use-ifdef-for-platform-specific-defines.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-vkdisplay-Use-ifdef-for-platform-specific-defines.patch
deleted file mode 100644
index caaa62d48a6..00000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-vkdisplay-Use-ifdef-for-platform-specific-defines.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 1523ab462c1bf19055960ced255f4872b6cf9f5c Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Wed, 5 Jul 2017 11:00:42 +0300
-Subject: [PATCH 1/2] vkdisplay: Use ifdef for platform specific defines
-
-VK_KHR_*_SURFACE_EXTENSION_NAME are only available when corresponding
-WSI is enabled.
-
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=784539]
----
- ext/vulkan/vkdisplay.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/ext/vulkan/vkdisplay.c b/ext/vulkan/vkdisplay.c
-index 550134cd8..ade5d4583 100644
---- a/ext/vulkan/vkdisplay.c
-+++ b/ext/vulkan/vkdisplay.c
-@@ -448,11 +448,15 @@ gst_vulkan_display_type_to_extension_string (GstVulkanDisplayType type)
- if (type == GST_VULKAN_DISPLAY_TYPE_NONE)
- return NULL;
-
-+#if GST_VULKAN_HAVE_WINDOW_XCB
- if (type & GST_VULKAN_DISPLAY_TYPE_XCB)
- return VK_KHR_XCB_SURFACE_EXTENSION_NAME;
-+#endif
-
-+#if GST_VULKAN_HAVE_WINDOW_WAYLAND
- if (type & GST_VULKAN_DISPLAY_TYPE_WAYLAND)
- return VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME;
-+#endif
-
- return NULL;
- }
---
-2.13.2
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-vulkan-Use-the-generated-version-of-vkconfig.h.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-vulkan-Use-the-generated-version-of-vkconfig.h.patch
deleted file mode 100644
index 0df145dd25f..00000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-vulkan-Use-the-generated-version-of-vkconfig.h.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From c23e1dc22deb495561cffb877edb2746b740a1fa Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Wed, 5 Jul 2017 11:07:05 +0300
-Subject: [PATCH 2/2] vulkan: Use the generated version of vkconfig.h
-
-Build fails in ext/vulkan/xcb and ext/vulkan/wayland when:
-* building from tarball
-* building out-of-tree
-* Only one WSI integration (xcb or wayland) is enabled by configure.ac
-This is because vkconfig.h from source directory gets used instead
-of the generated one.
-
-Add the correct build directory to "-I". Use angle bracket
-include in vkapi.h so that it actually looks in the include search
-path instead of defaulting to the same (source tree) directory.
-
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=784539]
----
- ext/vulkan/vkapi.h | 2 +-
- ext/vulkan/wayland/Makefile.am | 1 +
- ext/vulkan/xcb/Makefile.am | 1 +
- 3 files changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/ext/vulkan/vkapi.h b/ext/vulkan/vkapi.h
-index e9c23aa92..a37c29d0f 100644
---- a/ext/vulkan/vkapi.h
-+++ b/ext/vulkan/vkapi.h
-@@ -23,7 +23,7 @@
-
- #define VK_PROTOTYPES
-
--#include "vkconfig.h"
-+#include <vkconfig.h>
- #include "vk_fwd.h"
- #include "vkmacros.h"
-
-diff --git a/ext/vulkan/wayland/Makefile.am b/ext/vulkan/wayland/Makefile.am
-index f92d85e2c..10cfb70e6 100644
---- a/ext/vulkan/wayland/Makefile.am
-+++ b/ext/vulkan/wayland/Makefile.am
-@@ -14,6 +14,7 @@ noinst_HEADERS = \
-
- libgstvulkan_wayland_la_CFLAGS = \
- -I$(top_srcdir)/gst-libs \
-+ -I$(top_builddir)/ext/vulkan \
- -I$(top_srcdir)/ext/vulkan \
- -I$(top_builddir)/gst-libs \
- $(GST_PLUGINS_BASE_CFLAGS) \
-diff --git a/ext/vulkan/xcb/Makefile.am b/ext/vulkan/xcb/Makefile.am
-index 7debcff9e..b5103551b 100644
---- a/ext/vulkan/xcb/Makefile.am
-+++ b/ext/vulkan/xcb/Makefile.am
-@@ -14,6 +14,7 @@ noinst_HEADERS = \
-
- libgstvulkan_xcb_la_CFLAGS = \
- -I$(top_srcdir)/gst-libs \
-+ -I$(top_builddir)/ext/vulkan \
- -I$(top_srcdir)/ext/vulkan \
- -I$(top_builddir)/gst-libs \
- $(GST_PLUGINS_BASE_CFLAGS) \
---
-2.13.2
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.12.4.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.12.4.bb
deleted file mode 100644
index 82c7ffcb1d5..00000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.12.4.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-require gstreamer1.0-plugins-bad.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=73a5855a8119deb017f5f13cf327095d \
- file://COPYING.LIB;md5=21682e4e8fea52413fd26c60acb907e5 "
-
-SRC_URI = " \
- http://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-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch \
- file://0009-glimagesink-Downrank-to-marginal.patch \
- file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \
- file://link-with-libvchostif.patch \
- file://0001-vkdisplay-Use-ifdef-for-platform-specific-defines.patch \
- file://0002-vulkan-Use-the-generated-version-of-vkconfig.h.patch \
-"
-SRC_URI[md5sum] = "64bf16cf15edaab1c0e02c8dee7170d0"
-SRC_URI[sha256sum] = "0c7857be16686d5c1ba6e34bd338664d3d4599d32714a8eca5c8a41a101e2d08"
-
-S = "${WORKDIR}/gst-plugins-bad-${PV}"
-
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.2.bb
index ca2ea9e963a..61efc36a40d 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.2.bb
@@ -1,30 +1,40 @@
require gstreamer1.0-plugins.inc
-LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+"
+SRC_URI = " \
+ http://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 \
+ file://0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch \
+"
+SRC_URI[md5sum] = "76826c564bed5511982d7fb6137d9875"
+SRC_URI[sha256sum] = "34fab7da70994465a64468330b2168a4a0ed90a7de7e4c499b6d127c6c1b1eaf"
-DEPENDS += "gstreamer1.0-plugins-base libpng jpeg"
+S = "${WORKDIR}/gst-plugins-bad-${PV}"
-inherit gettext bluetooth
+LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=73a5855a8119deb017f5f13cf327095d \
+ file://COPYING.LIB;md5=21682e4e8fea52413fd26c60acb907e5 "
-SRC_URI_append = " \
- file://0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch \
-"
+DEPENDS += "gstreamer1.0-plugins-base jpeg"
-# 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)}"
+inherit gettext bluetooth
-# gtk is not in the PACKAGECONFIG variable by default until
-# the transition to gtk+3 is finished
PACKAGECONFIG ??= " \
${GSTREAMER_ORC} \
- ${PACKAGECONFIG_GL} \
${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
${@bb.utils.filter('DISTRO_FEATURES', 'directfb vulkan', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland egl', '', d)} \
- bz2 curl dash dtls hls rsvg sbc smoothstreaming sndfile uvch264 webp \
+ ${@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,${BLUEZ}"
PACKAGECONFIG[bz2] = "--enable-bz2,--disable-bz2,bzip2"
@@ -33,66 +43,65 @@ 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[egl] = "--enable-egl,--disable-egl,virtual/egl"
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[gles2] = "--enable-gles2,--disable-gles2,virtual/libgles2"
-PACKAGECONFIG[gtk] = "--enable-gtk3,--disable-gtk3,gtk+3"
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[neon] = "--enable-neon,--disable-neon,neon"
PACKAGECONFIG[openal] = "--enable-openal,--disable-openal,openal-soft"
PACKAGECONFIG[opencv] = "--enable-opencv,--disable-opencv,opencv"
-PACKAGECONFIG[opengl] = "--enable-opengl,--disable-opengl,virtual/libgl libglu"
+PACKAGECONFIG[openh264] = "--enable-openh264,--disable-openh264,openh264"
PACKAGECONFIG[openjpeg] = "--enable-openjpeg,--disable-openjpeg,openjpeg"
# 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[rtmp] = "--enable-rtmp,--disable-rtmp"
PACKAGECONFIG[sbc] = "--enable-sbc,--disable-sbc,sbc"
-PACKAGECONFIG[schroedinger] = "--enable-schro,--disable-schro,schroedinger"
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"
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 acm apple_media iqa
-# android_media avc bs2b chromaprint daala dts fdkaac gme gsm kate ladspa libde265
-# lv2 mpeg2enc mplex msdk musepack nvenc ofa openh264 opensles soundtouch spandsp
-# spc teletextdec tinyalsa vdpau wasapi x265 zbar webrtcdsp
-
-# 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-bad bbappend).
+# android_media avc bs2b chromaprint daala dts fdkaac gme gsm kate ladspa
+# lv2 mpeg2enc mplex msdk musepack nvenc ofa openmpt opensles soundtouch
+# spandsp spc teletextdec vdpau wasapi x265 zbar
EXTRA_OECONF += " \
--enable-decklink \
--enable-dvb \
--enable-fbdev \
+ --enable-ipcpipeline \
--enable-netsim \
--enable-shm \
--enable-vcd \
--disable-acm \
--disable-android_media \
+ --disable-aom \
--disable-apple_media \
--disable-avc \
--disable-bs2b \
--disable-chromaprint \
- --disable-cocoa \
--disable-daala \
--disable-direct3d \
--disable-directsound \
@@ -103,7 +112,6 @@ EXTRA_OECONF += " \
--disable-iqa \
--disable-kate \
--disable-ladspa \
- --disable-libde265 \
--disable-lv2 \
--disable-mpeg2enc \
--disable-mplex \
@@ -112,18 +120,16 @@ EXTRA_OECONF += " \
--disable-nvenc \
--disable-ofa \
--disable-openexr \
- --disable-openh264 \
+ --disable-openmpt \
--disable-openni2 \
--disable-opensles \
- --disable-qt \
--disable-soundtouch \
--disable-spandsp \
--disable-spc \
+ --disable-srt \
--disable-teletextdec \
- --disable-tinyalsa \
--disable-vdpau \
--disable-wasapi \
- --disable-webrtcdsp \
--disable-wildmidi \
--disable-winks \
--disable-winscreencap \
@@ -137,11 +143,6 @@ export OPENCV_PREFIX = "${STAGING_DIR_TARGET}${prefix}"
ARM_INSTRUCTION_SET_armv4 = "arm"
ARM_INSTRUCTION_SET_armv5 = "arm"
-FILES_${PN}-dev += "${libdir}/gstreamer-${LIBV}/include/gst/gl/gstglconfig.h"
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"
-
-do_compile_prepend() {
- export GIR_EXTRA_LIBS_PATH="${B}/gst-libs/gst/allocators/.libs"
-}
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc
deleted file mode 100644
index 08130c1da40..00000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc
+++ /dev/null
@@ -1,50 +0,0 @@
-require gstreamer1.0-plugins.inc
-
-SRC_URI_append = "\
- file://0001-Makefile.am-don-t-hardcode-libtool-name-when-running.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 \
-"
-
-LICENSE = "GPLv2+ & LGPLv2+"
-
-DEPENDS += "iso-codes util-linux zlib"
-
-inherit gettext
-
-PACKAGES_DYNAMIC =+ "^libgst.*"
-
-PACKAGECONFIG ??= " \
- ${GSTREAMER_ORC} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'alsa x11', d)} \
- gio-unix-2.0 ogg pango theora vorbis \
-"
-
-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[gio-unix-2.0] = "--enable-gio_unix_2_0,--disable-gio_unix_2_0,glib-2.0"
-PACKAGECONFIG[ivorbis] = "--enable-ivorbis,--disable-ivorbis,tremor"
-PACKAGECONFIG[ogg] = "--enable-ogg,--disable-ogg,libogg"
-PACKAGECONFIG[opus] = "--enable-opus,--disable-opus,libopus"
-PACKAGECONFIG[pango] = "--enable-pango,--disable-pango,pango"
-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}"
-
-EXTRA_OECONF += " \
- --enable-zlib \
-"
-
-CACHED_CONFIGUREVARS_append_x86 = " ac_cv_header_emmintrin_h=no ac_cv_header_xmmintrin_h=no"
-
-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"
-}
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
index 094bdac8460..bcada34c409 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
@@ -1,16 +1,18 @@
-From f1d9652351e7754c63003104eceb526af424c7e0 Mon Sep 17 00:00:00 2001
+From 7022b87353a37b78bae7cf0106a4e47913bb5c97 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 20 Nov 2015 16:53:04 +0200
-Subject: [PATCH 1/4] Makefile.am: don't hardcode libtool name when running
+Date: Thu, 5 Apr 2018 10:15:08 +0800
+Subject: [PATCH] Makefile.am: don't hardcode libtool name when running
introspection tools
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 | 2 +-
gst-libs/gst/app/Makefile.am | 2 +-
gst-libs/gst/audio/Makefile.am | 2 +-
- gst-libs/gst/fft/Makefile.am | 2 +-
+ gst-libs/gst/gl/Makefile.am | 2 +-
gst-libs/gst/pbutils/Makefile.am | 2 +-
gst-libs/gst/riff/Makefile.am | 2 +-
gst-libs/gst/rtp/Makefile.am | 2 +-
@@ -21,10 +23,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
11 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/gst-libs/gst/allocators/Makefile.am b/gst-libs/gst/allocators/Makefile.am
-index 9361bf9..bc7f53a 100644
+index 1957d28..1ecc950 100644
--- a/gst-libs/gst/allocators/Makefile.am
+++ b/gst-libs/gst/allocators/Makefile.am
-@@ -38,7 +38,7 @@ GstAllocators-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstallocators-@
+@@ -42,7 +42,7 @@ GstAllocators-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstallocators-@
--add-include-path=`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@ \
@@ -34,10 +36,10 @@ index 9361bf9..bc7f53a 100644
--pkg-export gstreamer-allocators-@GST_API_VERSION@ \
--output $@ \
diff --git a/gst-libs/gst/app/Makefile.am b/gst-libs/gst/app/Makefile.am
-index 6d6de8d..dcc2fe0 100644
+index 52f6ad3..5bfd606 100644
--- a/gst-libs/gst/app/Makefile.am
+++ b/gst-libs/gst/app/Makefile.am
-@@ -53,7 +53,7 @@ GstApp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstapp-@GST_API_VERSIO
+@@ -56,7 +56,7 @@ GstApp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstapp-@GST_API_VERSIO
--library=libgstapp-@GST_API_VERSION@.la \
--include=Gst-@GST_API_VERSION@ \
--include=GstBase-@GST_API_VERSION@ \
@@ -47,10 +49,10 @@ index 6d6de8d..dcc2fe0 100644
--pkg gstreamer-base-@GST_API_VERSION@ \
--pkg-export gstreamer-app-@GST_API_VERSION@ \
diff --git a/gst-libs/gst/audio/Makefile.am b/gst-libs/gst/audio/Makefile.am
-index 275d222..2374196 100644
+index 2922245..7fb65f2 100644
--- a/gst-libs/gst/audio/Makefile.am
+++ b/gst-libs/gst/audio/Makefile.am
-@@ -116,7 +116,7 @@ GstAudio-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstaudio-@GST_API_VE
+@@ -184,7 +184,7 @@ GstAudio-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstaudio-@GST_API_VE
--include=Gst-@GST_API_VERSION@ \
--include=GstBase-@GST_API_VERSION@ \
--include=GstTag-@GST_API_VERSION@ \
@@ -59,24 +61,24 @@ index 275d222..2374196 100644
--pkg gstreamer-@GST_API_VERSION@ \
--pkg gstreamer-base-@GST_API_VERSION@ \
--pkg-export gstreamer-audio-@GST_API_VERSION@ \
-diff --git a/gst-libs/gst/fft/Makefile.am b/gst-libs/gst/fft/Makefile.am
-index 09b3d68..f545354 100644
---- a/gst-libs/gst/fft/Makefile.am
-+++ b/gst-libs/gst/fft/Makefile.am
-@@ -65,7 +65,7 @@ GstFft-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstfft-@GST_API_VERSIO
- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
- --library=libgstfft-@GST_API_VERSION@.la \
+diff --git a/gst-libs/gst/gl/Makefile.am b/gst-libs/gst/gl/Makefile.am
+index 4e77e8c..3276d7f 100644
+--- a/gst-libs/gst/gl/Makefile.am
++++ b/gst-libs/gst/gl/Makefile.am
+@@ -193,7 +193,7 @@ GstGL-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstgl-@GST_API_VERSION@
--include=Gst-@GST_API_VERSION@ \
-- --libtool="$(top_builddir)/libtool" \
+ --include=GstBase-@GST_API_VERSION@ \
+ --include=GstVideo-@GST_API_VERSION@ \
+- --libtool="${LIBTOOL}" \
+ --libtool="$(LIBTOOL)" \
--pkg gstreamer-@GST_API_VERSION@ \
- --pkg-export gstreamer-fft-@GST_API_VERSION@ \
- --output $@ \
+ --pkg gstreamer-base-@GST_API_VERSION@ \
+ --pkg gstreamer-video-@GST_API_VERSION@ \
diff --git a/gst-libs/gst/pbutils/Makefile.am b/gst-libs/gst/pbutils/Makefile.am
-index 64d5eb0..91dc214 100644
+index ae51993..35a6e44 100644
--- a/gst-libs/gst/pbutils/Makefile.am
+++ b/gst-libs/gst/pbutils/Makefile.am
-@@ -99,7 +99,7 @@ GstPbutils-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstpbutils-@GST_AP
+@@ -103,7 +103,7 @@ GstPbutils-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstpbutils-@GST_AP
--include=GstTag-@GST_API_VERSION@ \
--include=GstVideo-@GST_API_VERSION@ \
--include=GstAudio-@GST_API_VERSION@ \
@@ -86,10 +88,10 @@ index 64d5eb0..91dc214 100644
--pkg gstreamer-tag-@GST_API_VERSION@ \
--pkg gstreamer-video-@GST_API_VERSION@ \
diff --git a/gst-libs/gst/riff/Makefile.am b/gst-libs/gst/riff/Makefile.am
-index 83d83cb..3bd8fc0 100644
+index fb53f06..e66ef4f 100644
--- a/gst-libs/gst/riff/Makefile.am
+++ b/gst-libs/gst/riff/Makefile.am
-@@ -47,7 +47,7 @@ libgstriff_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS)
+@@ -49,7 +49,7 @@ libgstriff_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS)
# --include=GstAudio-@GST_API_VERSION@ \
# --include=GstTag-@GST_API_VERSION@ \
# --include=Gst-@GST_API_VERSION@ \
@@ -99,10 +101,10 @@ index 83d83cb..3bd8fc0 100644
# --pkg gstreamer-tag-@GST_API_VERSION@ \
# --pkg gstreamer-audio-@GST_API_VERSION@ \
diff --git a/gst-libs/gst/rtp/Makefile.am b/gst-libs/gst/rtp/Makefile.am
-index fdd01c1..f5445c1 100644
+index a6f971d..77ebeeb 100644
--- a/gst-libs/gst/rtp/Makefile.am
+++ b/gst-libs/gst/rtp/Makefile.am
-@@ -65,7 +65,7 @@ GstRtp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtp-@GST_API_VERSIO
+@@ -69,7 +69,7 @@ GstRtp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtp-@GST_API_VERSIO
--library=libgstrtp-@GST_API_VERSION@.la \
--include=Gst-@GST_API_VERSION@ \
--include=GstBase-@GST_API_VERSION@ \
@@ -112,10 +114,10 @@ index fdd01c1..f5445c1 100644
--pkg gstreamer-base-@GST_API_VERSION@ \
--pkg-export gstreamer-rtp-@GST_API_VERSION@ \
diff --git a/gst-libs/gst/rtsp/Makefile.am b/gst-libs/gst/rtsp/Makefile.am
-index ede5706..9b0b258 100644
+index ceb07f4..db9d0fd 100644
--- a/gst-libs/gst/rtsp/Makefile.am
+++ b/gst-libs/gst/rtsp/Makefile.am
-@@ -72,7 +72,7 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS
+@@ -76,7 +76,7 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS
--include=Gio-2.0 \
--include=Gst-@GST_API_VERSION@ \
--include=GstSdp-@GST_API_VERSION@ \
@@ -125,10 +127,10 @@ index ede5706..9b0b258 100644
--pkg gstreamer-@GST_API_VERSION@ \
--pkg gstreamer-sdp-@GST_API_VERSION@ \
diff --git a/gst-libs/gst/sdp/Makefile.am b/gst-libs/gst/sdp/Makefile.am
-index a90f30b..0e149b8 100644
+index e197e9b..6e05cc7 100644
--- a/gst-libs/gst/sdp/Makefile.am
+++ b/gst-libs/gst/sdp/Makefile.am
-@@ -32,7 +32,7 @@ GstSdp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstsdp-@GST_API_VERSIO
+@@ -34,7 +34,7 @@ GstSdp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstsdp-@GST_API_VERSIO
--add-include-path=`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@ \
@@ -138,10 +140,10 @@ index a90f30b..0e149b8 100644
--pkg-export gstreamer-sdp-@GST_API_VERSION@ \
--output $@ \
diff --git a/gst-libs/gst/tag/Makefile.am b/gst-libs/gst/tag/Makefile.am
-index c534a4d..cafafd3 100644
+index 0247c33..c86515b 100644
--- a/gst-libs/gst/tag/Makefile.am
+++ b/gst-libs/gst/tag/Makefile.am
-@@ -45,7 +45,7 @@ GstTag-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgsttag-@GST_API_VERSIO
+@@ -66,7 +66,7 @@ GstTag-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgsttag-@GST_API_VERSIO
--library=libgsttag-@GST_API_VERSION@.la \
--include=Gst-@GST_API_VERSION@ \
--include=GstBase-@GST_API_VERSION@ \
@@ -151,10 +153,10 @@ index c534a4d..cafafd3 100644
--pkg gstreamer-base-@GST_API_VERSION@ \
--pkg-export gstreamer-tag-@GST_API_VERSION@ \
diff --git a/gst-libs/gst/video/Makefile.am b/gst-libs/gst/video/Makefile.am
-index 5d31fa1..ac64eb3 100644
+index 9fc1ccf..0f8455f 100644
--- a/gst-libs/gst/video/Makefile.am
+++ b/gst-libs/gst/video/Makefile.am
-@@ -116,7 +116,7 @@ GstVideo-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstvideo-@GST_API_VE
+@@ -124,7 +124,7 @@ GstVideo-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstvideo-@GST_API_VE
--library=libgstvideo-@GST_API_VERSION@.la \
--include=Gst-@GST_API_VERSION@ \
--include=GstBase-@GST_API_VERSION@ \
@@ -163,6 +165,3 @@ index 5d31fa1..ac64eb3 100644
--pkg gstreamer-@GST_API_VERSION@ \
--pkg gstreamer-base-@GST_API_VERSION@ \
--pkg-export gstreamer-video-@GST_API_VERSION@ \
---
-2.6.2
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/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
index 2235a57afaf..251dc172cb7 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/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
@@ -1,4 +1,4 @@
-From 5622ca3b61603dc316a0f1fbede3f9aa353a5e48 Mon Sep 17 00:00:00 2001
+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
@@ -15,15 +15,15 @@ Signed-off-by: Maxin B. John <maxin.john@intel.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pkgconfig/gstreamer-gl.pc.in b/pkgconfig/gstreamer-gl.pc.in
-index 8e7a303..d167be1 100644
+index dc672a9..8c290ba 100644
--- a/pkgconfig/gstreamer-gl.pc.in
+++ b/pkgconfig/gstreamer-gl.pc.in
@@ -13,4 +13,4 @@ Version: @VERSION@
- Requires: gstreamer-base-@GST_API_VERSION@ gstreamer-@GST_API_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.4.0
+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
index 6616e2cf0d7..2e1190ba01f 100644
--- 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
@@ -1,16 +1,18 @@
-From 990b653c7b6de1937ec759019982d6c5f15770f7 Mon Sep 17 00:00:00 2001
+From 9601fc0cd6751a1affdc8717217b95931db31d7f Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 26 Oct 2015 16:38:18 +0200
-Subject: [PATCH 2/4] Makefile.am: prefix calls to pkg-config with
+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/fft/Makefile.am | 4 ++--
+ 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 ++++----
@@ -18,13 +20,13 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
gst-libs/gst/sdp/Makefile.am | 4 ++--
gst-libs/gst/tag/Makefile.am | 8 ++++----
gst-libs/gst/video/Makefile.am | 8 ++++----
- 11 files changed, 38 insertions(+), 38 deletions(-)
+ 11 files changed, 40 insertions(+), 40 deletions(-)
-Index: gst-plugins-base-1.12.3/gst-libs/gst/allocators/Makefile.am
-===================================================================
---- gst-plugins-base-1.12.3.orig/gst-libs/gst/allocators/Makefile.am
-+++ gst-plugins-base-1.12.3/gst-libs/gst/allocators/Makefile.am
-@@ -36,7 +36,7 @@ GstAllocators-@GST_API_VERSION@.gir: $(I
+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 \
@@ -33,7 +35,7 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/allocators/Makefile.am
--library=libgstallocators-@GST_API_VERSION@.la \
--include=Gst-@GST_API_VERSION@ \
--libtool="$(LIBTOOL)" \
-@@ -60,7 +60,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=
+@@ -63,7 +63,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
$(INTROSPECTION_COMPILER) \
--includedir=$(srcdir) \
--includedir=$(builddir) \
@@ -42,11 +44,11 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/allocators/Makefile.am
$(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
CLEANFILES = $(BUILT_GIRSOURCES) $(typelibs_DATA)
-Index: gst-plugins-base-1.12.3/gst-libs/gst/app/Makefile.am
-===================================================================
---- gst-plugins-base-1.12.3.orig/gst-libs/gst/app/Makefile.am
-+++ gst-plugins-base-1.12.3/gst-libs/gst/app/Makefile.am
-@@ -48,8 +48,8 @@ GstApp-@GST_API_VERSION@.gir: $(INTROSPE
+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 \
@@ -57,11 +59,11 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/app/Makefile.am
--library=libgstapp-@GST_API_VERSION@.la \
--include=Gst-@GST_API_VERSION@ \
--include=GstBase-@GST_API_VERSION@ \
-Index: gst-plugins-base-1.12.3/gst-libs/gst/audio/Makefile.am
-===================================================================
---- gst-plugins-base-1.12.3.orig/gst-libs/gst/audio/Makefile.am
-+++ gst-plugins-base-1.12.3/gst-libs/gst/audio/Makefile.am
-@@ -167,12 +167,12 @@ GstAudio-@GST_API_VERSION@.gir: $(INTROS
+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
+@@ -174,12 +174,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" \
@@ -78,7 +80,7 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/audio/Makefile.am
--library-path="$(top_builddir)/gst-libs/gst/tag/" \
--include=Gst-@GST_API_VERSION@ \
--include=GstBase-@GST_API_VERSION@ \
-@@ -201,8 +201,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=
+@@ -208,8 +208,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
--includedir=$(srcdir) \
--includedir=$(builddir) \
--includedir="$(top_builddir)/gst-libs/gst/tag/" \
@@ -89,33 +91,38 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/audio/Makefile.am
$(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
-Index: gst-plugins-base-1.12.3/gst-libs/gst/fft/Makefile.am
-===================================================================
---- gst-plugins-base-1.12.3.orig/gst-libs/gst/fft/Makefile.am
-+++ gst-plugins-base-1.12.3/gst-libs/gst/fft/Makefile.am
-@@ -63,7 +63,7 @@ GstFft-@GST_API_VERSION@.gir: $(INTROSPE
- --c-include "gst/fft/fft.h" \
- -I$(top_srcdir)/gst-libs \
- -I$(top_builddir)/gst-libs \
+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
+@@ -186,9 +186,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@` \
- --library=libgstfft-@GST_API_VERSION@.la \
++ --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@ \
- --libtool="$(LIBTOOL)" \
-@@ -87,7 +87,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=
- $(INTROSPECTION_COMPILER) \
+ --include=GstBase-@GST_API_VERSION@ \
+@@ -218,8 +218,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)
-Index: gst-plugins-base-1.12.3/gst-libs/gst/pbutils/Makefile.am
-===================================================================
---- gst-plugins-base-1.12.3.orig/gst-libs/gst/pbutils/Makefile.am
-+++ gst-plugins-base-1.12.3/gst-libs/gst/pbutils/Makefile.am
-@@ -85,14 +85,14 @@ GstPbutils-@GST_API_VERSION@.gir: $(INTR
+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 \
@@ -134,7 +141,7 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/pbutils/Makefile.am
--library-path="$(top_builddir)/gst-libs/gst/tag/" \
--library-path="$(top_builddir)/gst-libs/gst/video/" \
--library-path="$(top_builddir)/gst-libs/gst/audio/" \
-@@ -125,8 +125,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=
+@@ -128,8 +128,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
$(INTROSPECTION_COMPILER) \
--includedir=$(srcdir) \
--includedir=$(builddir) \
@@ -145,11 +152,11 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/pbutils/Makefile.am
--includedir="$(top_builddir)/gst-libs/gst/tag/" \
--includedir="$(top_builddir)/gst-libs/gst/video/" \
--includedir="$(top_builddir)/gst-libs/gst/audio/" \
-Index: gst-plugins-base-1.12.3/gst-libs/gst/riff/Makefile.am
-===================================================================
---- gst-plugins-base-1.12.3.orig/gst-libs/gst/riff/Makefile.am
-+++ gst-plugins-base-1.12.3/gst-libs/gst/riff/Makefile.am
-@@ -42,8 +42,8 @@ libgstriff_@GST_API_VERSION@_la_LDFLAGS
+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 \
@@ -160,7 +167,7 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/riff/Makefile.am
# --library=libgstriff-@GST_API_VERSION@.la \
# --include=GstAudio-@GST_API_VERSION@ \
# --include=GstTag-@GST_API_VERSION@ \
-@@ -74,8 +74,8 @@ libgstriff_@GST_API_VERSION@_la_LDFLAGS
+@@ -75,8 +75,8 @@ libgstriff_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS)
# --includedir=$(builddir) \
# --includedir=$(builddir)/../tag \
# --includedir=$(builddir)/../audio \
@@ -171,11 +178,11 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/riff/Makefile.am
# $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
#
#CLEANFILES = $(BUILT_GIRSOURCES) $(typelibs_DATA)
-Index: gst-plugins-base-1.12.3/gst-libs/gst/rtp/Makefile.am
-===================================================================
---- gst-plugins-base-1.12.3.orig/gst-libs/gst/rtp/Makefile.am
-+++ gst-plugins-base-1.12.3/gst-libs/gst/rtp/Makefile.am
-@@ -61,8 +61,8 @@ GstRtp-@GST_API_VERSION@.gir: $(INTROSPE
+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
+@@ -64,8 +64,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 \
@@ -186,7 +193,7 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/rtp/Makefile.am
--library=libgstrtp-@GST_API_VERSION@.la \
--include=Gst-@GST_API_VERSION@ \
--include=GstBase-@GST_API_VERSION@ \
-@@ -89,8 +89,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=
+@@ -92,8 +92,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
$(INTROSPECTION_COMPILER) \
--includedir=$(srcdir) \
--includedir=$(builddir) \
@@ -197,11 +204,11 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/rtp/Makefile.am
$(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
-Index: gst-plugins-base-1.12.3/gst-libs/gst/rtsp/Makefile.am
-===================================================================
---- gst-plugins-base-1.12.3.orig/gst-libs/gst/rtsp/Makefile.am
-+++ gst-plugins-base-1.12.3/gst-libs/gst/rtsp/Makefile.am
-@@ -68,7 +68,7 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSP
+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,7 +71,7 @@ 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 \
@@ -210,7 +217,7 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/rtsp/Makefile.am
--library=libgstrtsp-@GST_API_VERSION@.la \
--include=Gio-2.0 \
--include=Gst-@GST_API_VERSION@ \
-@@ -98,7 +98,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=
+@@ -101,7 +101,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
--includedir=$(srcdir) \
--includedir=$(builddir) \
--includedir=$(builddir)/../sdp \
@@ -219,11 +226,11 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/rtsp/Makefile.am
$(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
-Index: gst-plugins-base-1.12.3/gst-libs/gst/sdp/Makefile.am
-===================================================================
---- gst-plugins-base-1.12.3.orig/gst-libs/gst/sdp/Makefile.am
-+++ gst-plugins-base-1.12.3/gst-libs/gst/sdp/Makefile.am
-@@ -30,7 +30,7 @@ GstSdp-@GST_API_VERSION@.gir: $(INTROSPE
+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 \
@@ -232,7 +239,7 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/sdp/Makefile.am
--library=libgstsdp-@GST_API_VERSION@.la \
--include=Gst-@GST_API_VERSION@ \
--libtool="$(LIBTOOL)" \
-@@ -54,7 +54,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=
+@@ -55,7 +55,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
$(INTROSPECTION_COMPILER) \
--includedir=$(srcdir) \
--includedir=$(builddir) \
@@ -241,11 +248,11 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/sdp/Makefile.am
$(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
CLEANFILES = $(BUILT_GIRSOURCES) $(typelibs_DATA)
-Index: gst-plugins-base-1.12.3/gst-libs/gst/tag/Makefile.am
-===================================================================
---- gst-plugins-base-1.12.3.orig/gst-libs/gst/tag/Makefile.am
-+++ gst-plugins-base-1.12.3/gst-libs/gst/tag/Makefile.am
-@@ -59,8 +59,8 @@ GstTag-@GST_API_VERSION@.gir: $(INTROSPE
+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 \
@@ -256,7 +263,7 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/tag/Makefile.am
--library=libgsttag-@GST_API_VERSION@.la \
--include=Gst-@GST_API_VERSION@ \
--include=GstBase-@GST_API_VERSION@ \
-@@ -87,8 +87,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=
+@@ -89,8 +89,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
$(INTROSPECTION_COMPILER) \
--includedir=$(srcdir) \
--includedir=$(builddir) \
@@ -267,11 +274,11 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/tag/Makefile.am
$(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
-Index: gst-plugins-base-1.12.3/gst-libs/gst/video/Makefile.am
-===================================================================
---- gst-plugins-base-1.12.3.orig/gst-libs/gst/video/Makefile.am
-+++ gst-plugins-base-1.12.3/gst-libs/gst/video/Makefile.am
-@@ -116,8 +116,8 @@ GstVideo-@GST_API_VERSION@.gir: $(INTROS
+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
+@@ -119,8 +119,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 \
@@ -282,7 +289,7 @@ Index: gst-plugins-base-1.12.3/gst-libs/gst/video/Makefile.am
--library=libgstvideo-@GST_API_VERSION@.la \
--include=Gst-@GST_API_VERSION@ \
--include=GstBase-@GST_API_VERSION@ \
-@@ -144,8 +144,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=
+@@ -147,8 +147,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
$(INTROSPECTION_COMPILER) \
--includedir=$(srcdir) \
--includedir=$(builddir) \
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
index 9b66f7f49dd..98ffdb1c10d 100644
--- 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
@@ -1,20 +1,21 @@
-From 3c2c2d5dd08aa30ed0e8acd8566ec99412bb8209 Mon Sep 17 00:00:00 2001
+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 3/4] riff: add missing include directories when calling
+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 0a115cc..5057a58 100644
+index c8c588a..c096453 100644
--- a/gst-libs/gst/riff/Makefile.am
+++ b/gst-libs/gst/riff/Makefile.am
-@@ -39,6 +39,8 @@ libgstriff_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS)
+@@ -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" \
@@ -23,6 +24,3 @@ index 0a115cc..5057a58 100644
# --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@` \
---
-2.6.2
-
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
index 9fbebd57002..9e955240570 100644
--- 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
@@ -1,7 +1,7 @@
-From be6163cfa3a255493f9d75bad9541cbfe1723fee Mon Sep 17 00:00:00 2001
+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 3/4] ssaparse: enhance SSA text lines parsing.
+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.
@@ -10,13 +10,18 @@ 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 06ecef9..0ab5dce
+index c849c08..4b9636c
--- a/gst/subparse/gstssaparse.c
+++ b/gst/subparse/gstssaparse.c
-@@ -260,6 +260,7 @@ gst_ssa_parse_remove_override_codes (GstSsaParse * parse, gchar * txt)
+@@ -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
@@ -24,7 +29,7 @@ index 06ecef9..0ab5dce
* @start: timestamp for the buffer
* @duration: duration for the buffer
*
-@@ -269,27 +270,133 @@ gst_ssa_parse_remove_override_codes (GstSsaParse * parse, gchar * txt)
+@@ -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
@@ -169,7 +174,7 @@ index 06ecef9..0ab5dce
GST_LOG_OBJECT (parse, "Text : %s", t);
if (gst_ssa_parse_remove_override_codes (parse, t)) {
-@@ -307,13 +414,22 @@ gst_ssa_parse_push_line (GstSsaParse * parse, gchar * txt,
+@@ -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);
@@ -196,7 +201,7 @@ index 06ecef9..0ab5dce
ret = gst_pad_push (parse->srcpad, buf);
-@@ -333,6 +449,7 @@ gst_ssa_parse_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * buf)
+@@ -335,6 +451,7 @@ gst_ssa_parse_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * buf)
GstClockTime ts;
gchar *txt;
GstMapInfo map;
@@ -204,7 +209,7 @@ index 06ecef9..0ab5dce
if (G_UNLIKELY (!parse->framed))
goto not_framed;
-@@ -350,13 +467,14 @@ gst_ssa_parse_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * buf)
+@@ -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);
@@ -220,6 +225,3 @@ index 06ecef9..0ab5dce
if (ret != GST_FLOW_OK && GST_CLOCK_TIME_IS_VALID (ts)) {
GstSegment segment;
---
-1.7.9.5
-
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
index 4adf605460c..aaeb611fec0 100644
--- 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
@@ -1,20 +1,21 @@
-From 4330915d88dc4dd46eb4c28d756482b767c2747f Mon Sep 17 00:00:00 2001
+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 4/4] rtsp: drop incorrect reference to gstreamer-sdp in
+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 4f6d9f8..0afa370 100644
+index 79027cb..2987e23 100644
--- a/gst-libs/gst/rtsp/Makefile.am
+++ b/gst-libs/gst/rtsp/Makefile.am
-@@ -75,7 +75,6 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS
+@@ -79,7 +79,6 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS
--libtool="$(LIBTOOL)" \
--pkg gio-2.0 \
--pkg gstreamer-@GST_API_VERSION@ \
@@ -22,6 +23,3 @@ index 4f6d9f8..0afa370 100644
--pkg-export gstreamer-rtsp-@GST_API_VERSION@ \
--add-init-section="$(INTROSPECTION_INIT)" \
--output $@ \
---
-2.6.2
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch
deleted file mode 100644
index b924e38824e..00000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From ed09c8fd2c9c2b5384b72cc70af3728be6694e64 Mon Sep 17 00:00:00 2001
-From: Mingke Wang <mingke.wang@freescale.com>
-Date: Thu, 19 Mar 2015 14:20:26 +0800
-Subject: [PATCH 4/4] subparse: set need_segment after sink pad received
- GST_EVENT_SEGMENT
-
-subparse works in push mode, chain funciton will be called once
-up stream element finished the seeking and flushing.
-if set need_segment flag in src pad event handler, the segment
-event will be pushed earlier, result in the subtitle text will
-be send out to down stream from the beginning.
-
-Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=747498]
-
-Signed-off-by: Mingke Wang <mingke.wang@freescale.com>
-
-diff --git a/gst/subparse/gstsubparse.c b/gst/subparse/gstsubparse.c
-old mode 100644
-new mode 100755
-index b565e93..7741ccc
---- a/gst/subparse/gstsubparse.c
-+++ b/gst/subparse/gstsubparse.c
-@@ -266,22 +266,20 @@ gst_sub_parse_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
- goto beach;
- }
-
-+ /* Apply the seek to our segment */
-+ gst_segment_do_seek (&self->segment, rate, format, flags,
-+ start_type, start, stop_type, stop, &update);
-+
-+ GST_DEBUG_OBJECT (self, "segment after seek: %" GST_SEGMENT_FORMAT,
-+ &self->segment);
-+
- /* Convert that seek to a seeking in bytes at position 0,
- FIXME: could use an index */
- ret = gst_pad_push_event (self->sinkpad,
- gst_event_new_seek (rate, GST_FORMAT_BYTES, flags,
- GST_SEEK_TYPE_SET, 0, GST_SEEK_TYPE_NONE, 0));
-
-- if (ret) {
-- /* Apply the seek to our segment */
-- gst_segment_do_seek (&self->segment, rate, format, flags,
-- start_type, start, stop_type, stop, &update);
--
-- GST_DEBUG_OBJECT (self, "segment after seek: %" GST_SEGMENT_FORMAT,
-- &self->segment);
--
-- self->need_segment = TRUE;
-- } else {
-+ if (!ret) {
- GST_WARNING_OBJECT (self, "seek to 0 bytes failed");
- }
-
-@@ -1641,8 +1639,10 @@ gst_sub_parse_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
- gst_event_parse_segment (event, &s);
- if (s->format == GST_FORMAT_TIME)
- gst_event_copy_segment (event, &self->segment);
-- GST_DEBUG_OBJECT (self, "newsegment (%s)",
-- gst_format_get_name (self->segment.format));
-+ GST_DEBUG_OBJECT (self, "newsegment (%s) %" GST_SEGMENT_FORMAT,
-+ gst_format_get_name (self->segment.format), &self->segment);
-+
-+ self->need_segment = TRUE;
-
- /* if not time format, we'll either start with a 0 timestamp anyway or
- * it's following a seek in which case we'll have saved the requested
---
-1.7.9.5
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0009-glimagesink-Downrank-to-marginal.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-glimagesink-Downrank-to-marginal.patch
index c81fb0f6aaa..c81fb0f6aaa 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0009-glimagesink-Downrank-to-marginal.patch
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-glimagesink-Downrank-to-marginal.patch
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0010-gl-Add-switch-for-explicitely-enabling-disabling-GBM.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0010-gl-Add-switch-for-explicitely-enabling-disabling-GBM.patch
new file mode 100644
index 00000000000..45ba50750d9
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0010-gl-Add-switch-for-explicitely-enabling-disabling-GBM.patch
@@ -0,0 +1,70 @@
+From a1b59ca6b1781442f37ffc1b697635db126b3a22 Mon Sep 17 00:00:00 2001
+From: Carlos Rafael Giani <dv@pseudoterminal.org>
+Date: Thu, 19 Jul 2018 10:30:54 +0200
+Subject: [PATCH] gl: Add switch for explicitely enabling/disabling GBM support
+
+Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=796833]
+
+Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
+---
+ m4/gst-gl.m4 | 30 ++++++++++++++++++++++++++++--
+ 1 file changed, 28 insertions(+), 2 deletions(-)
+
+diff --git a/m4/gst-gl.m4 b/m4/gst-gl.m4
+index 1e9724094..aca5295cc 100644
+--- a/m4/gst-gl.m4
++++ b/m4/gst-gl.m4
+@@ -117,6 +117,15 @@ AC_ARG_ENABLE([dispmanx],
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-dispmanx]) ;;
+ esac],[NEED_DISPMANX=auto])
+
++AC_ARG_ENABLE([gbm],
++ [ --enable-gbm Enable Mesa3D GBM support (requires EGL) @<:@default=auto@:>@],
++ [case "${enableval}" in
++ yes) NEED_GBM=yes ;;
++ no) NEED_GBM=no ;;
++ auto) NEED_GBM=auto ;;
++ *) AC_MSG_ERROR([bad value ${enableval} for --enable-gbm]) ;;
++ esac],[NEED_GBM=auto])
++
+ AG_GST_PKG_CHECK_MODULES(X11_XCB, x11-xcb)
+ save_CPPFLAGS="$CPPFLAGS"
+ save_LIBS="$LIBS"
+@@ -172,15 +181,32 @@ case $host in
+ AC_CHECK_LIB([EGL], [fbGetDisplay], [HAVE_VIV_FB_EGL=yes])
+ fi
+
+- if test "x$HAVE_EGL" = "xyes"; then
++ if test "x$NEED_GBM" != "xno"; then
++ if test "x$HAVE_EGL" = "xyes"; then
+ PKG_CHECK_MODULES(DRM, libdrm >= 2.4.55, HAVE_DRM=yes, HAVE_DRM=no)
+ AC_SUBST(DRM_CFLAGS)
+ AC_SUBST(DRM_LIBS)
++ if test "x$NEED_GBM" = "xyes"; then
++ if test "x$HAVE_DRM" = "xno"; then
++ AC_MSG_ERROR([GBM support requested but libdrm is not available])
++ fi
++ if test "x$HAVE_GUDEV" = "xno"; then
++ AC_MSG_ERROR([GBM support requested but gudev is not available])
++ fi
++ fi
+ if test "x$HAVE_DRM" = "xyes" -a "x$HAVE_GUDEV" = "xyes"; then
+ PKG_CHECK_MODULES(GBM, gbm, HAVE_GBM_EGL=yes, HAVE_GBM_EGL=no)
++ if test "x$HAVE_GBM_EGL" = "xno" -a "x$NEED_GBM" = "xyes"; then
++ AC_MSG_ERROR([GBM support requested but gbm library is not available])
++ fi
+ AC_SUBST(GBM_CFLAGS)
+ AC_SUBST(GBM_LIBS)
+- fi
++ fi
++ elif test "x$NEED_GBM" = "xyes"; then
++ AC_MSG_ERROR([GBM support requested but EGL is not available])
++ else
++ AC_MSG_NOTICE([GBM support requested but EGL is not available; not enabling GBM support])
++ fi
+ fi
+
+ dnl FIXME: Mali EGL depends on GLESv1 or GLESv2
+--
+2.17.1
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0011-gl-Add-switches-for-explicitely-enabling-disabling-P.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0011-gl-Add-switches-for-explicitely-enabling-disabling-P.patch
new file mode 100644
index 00000000000..65d191a3966
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0011-gl-Add-switches-for-explicitely-enabling-disabling-P.patch
@@ -0,0 +1,109 @@
+From 092aadfc1df69c46d920b0cd39f98d363d6988b3 Mon Sep 17 00:00:00 2001
+From: Carlos Rafael Giani <dv@pseudoterminal.org>
+Date: Thu, 19 Jul 2018 11:16:05 +0200
+Subject: [PATCH] gl: Add switches for explicitely enabling/disabling PNG and
+ JPEG support
+
+Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=796833]
+
+Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
+---
+ m4/gst-gl.m4 | 66 ++++++++++++++++++++++++++++++++++++----------------
+ 1 file changed, 46 insertions(+), 20 deletions(-)
+
+diff --git a/m4/gst-gl.m4 b/m4/gst-gl.m4
+index 20b2233de..f8809981c 100644
+--- a/m4/gst-gl.m4
++++ b/m4/gst-gl.m4
+@@ -126,6 +126,24 @@ AC_ARG_ENABLE([gbm],
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-gbm]) ;;
+ esac],[NEED_GBM=auto])
+
++AC_ARG_ENABLE([png],
++ [ --enable-png Enable libpng support @<:@default=auto@:>@],
++ [case "${enableval}" in
++ yes) NEED_PNG=yes ;;
++ no) NEED_PNG=no ;;
++ auto) NEED_PNG=auto ;;
++ *) AC_MSG_ERROR([bad value ${enableval} for --enable-png]) ;;
++ esac],[NEED_PNG=auto])
++
++AC_ARG_ENABLE([jpeg],
++ [ --enable-jpeg Enable libjpeg support @<:@default=auto@:>@],
++ [case "${enableval}" in
++ yes) NEED_JPEG=yes ;;
++ no) NEED_JPEG=no ;;
++ auto) NEED_JPEG=auto ;;
++ *) AC_MSG_ERROR([bad value ${enableval} for --enable-jpeg]) ;;
++ esac],[NEED_JPEG=auto])
++
+ AG_GST_PKG_CHECK_MODULES(X11_XCB, x11-xcb)
+ save_CPPFLAGS="$CPPFLAGS"
+ save_LIBS="$LIBS"
+@@ -1043,9 +1061,13 @@ dnl Needed by plugins that use g_module_*() API
+ PKG_CHECK_MODULES(GMODULE_NO_EXPORT, gmodule-no-export-2.0)
+
+ dnl libpng is optional
+-PKG_CHECK_MODULES(LIBPNG, libpng >= 1.0, HAVE_PNG=yes, HAVE_PNG=no)
+-if test "x$HAVE_PNG" = "xyes"; then
+- AC_DEFINE(HAVE_PNG, [1] , [Use libpng])
++if test "x$NEED_PNG" != "xno"; then
++ PKG_CHECK_MODULES(LIBPNG, libpng >= 1.0, HAVE_PNG=yes, HAVE_PNG=no)
++ if test "x$HAVE_PNG" = "xyes"; then
++ AC_DEFINE(HAVE_PNG, [1] , [Use libpng])
++ elif test "x$NEED_PNG" = "xyes"; then
++ AC_MSG_ERROR([libpng support requested but libpng is not available])
++ fi
+ fi
+ AC_SUBST(HAVE_PNG)
+ AC_SUBST(LIBPNG_LIBS)
+@@ -1053,25 +1075,29 @@ AC_SUBST(LIBPNG_CFLAGS)
+
+ dnl libjpeg is optional
+ AC_ARG_WITH(jpeg-mmx, [ --with-jpeg-mmx, path to MMX'ified JPEG library])
+-OLD_LIBS="$LIBS"
+-if test x$with_jpeg_mmx != x; then
+- LIBS="$LIBS -L$with_jpeg_mmx"
+-fi
+-AC_CHECK_LIB(jpeg-mmx, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
+-JPEG_LIBS="$LIBS -ljpeg-mmx"
+-LIBS="$OLD_LIBS"
+-if test x$HAVE_JPEG != xyes; then
+- JPEG_LIBS="-ljpeg"
+- AC_CHECK_LIB(jpeg, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
+-fi
++if test "x$NEED_JPEG" != "xno"; then
++ OLD_LIBS="$LIBS"
++ if test x$with_jpeg_mmx != x; then
++ LIBS="$LIBS -L$with_jpeg_mmx"
++ fi
++ AC_CHECK_LIB(jpeg-mmx, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
++ JPEG_LIBS="$LIBS -ljpeg-mmx"
++ LIBS="$OLD_LIBS"
++ if test x$HAVE_JPEG != xyes; then
++ JPEG_LIBS="-ljpeg"
++ AC_CHECK_LIB(jpeg, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
++ fi
+
+-if test x$HAVE_JPEG = xyes; then
+- AC_DEFINE(HAVE_JPEG, [1], [Use libjpeg])
+-else
+- JPEG_LIBS=
++ if test x$HAVE_JPEG = xyes; then
++ AC_DEFINE(HAVE_JPEG, [1], [Use libjpeg])
++ elif test "x$NEED_JPEG" = "xyes"; then
++ AC_MSG_ERROR([libjpeg support requested but libjpeg is not available])
++ else
++ JPEG_LIBS=
++ fi
++ AC_SUBST(JPEG_LIBS)
++ AC_SUBST(HAVE_JPEG)
+ fi
+-AC_SUBST(JPEG_LIBS)
+-AC_SUBST(HAVE_JPEG)
+ ])
+
+ dnl --------------------------------------------------------------------------
+--
+2.17.1
+
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
index c8e6287a559..a4727e23ea9 100644
--- 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
@@ -1,4 +1,4 @@
-From af0dac26f62aaceb4bf266720911953793e0fc5d Mon Sep 17 00:00:00 2001
+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
@@ -8,18 +8,19 @@ 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 +++++++++++++
+ 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 9b6c478..ae2294a
+index 8a127c8..71c5d78
--- a/gst-libs/gst/tag/gsttagdemux.c
+++ b/gst-libs/gst/tag/gsttagdemux.c
-@@ -1769,6 +1769,19 @@ gst_tag_demux_pad_query (GstPad * pad, GstObject * parent, GstQuery * query)
+@@ -1759,6 +1759,19 @@ gst_tag_demux_pad_query (GstPad * pad, GstObject * parent, GstQuery * query)
}
break;
}
@@ -39,6 +40,3 @@ index 9b6c478..ae2294a
default:
res = gst_pad_query_default (pad, parent, query);
break;
---
-1.7.9.5
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/link-with-libvchostif.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/link-with-libvchostif.patch
index c382b175864..d5a7f6bdc25 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/link-with-libvchostif.patch
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/link-with-libvchostif.patch
@@ -1,4 +1,7 @@
-Add -lvchostif to link when using -lEGL on rpi
+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.
@@ -17,14 +20,18 @@ 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
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
Upstream-Status: Pending
-Index: gst-plugins-bad-1.10.4/configure.ac
-===================================================================
---- gst-plugins-bad-1.10.4.orig/configure.ac
-+++ gst-plugins-bad-1.10.4/configure.ac
-@@ -785,7 +785,7 @@ case $host in
+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
+@@ -231,7 +231,7 @@ case $host in
HAVE_EGL=yes
HAVE_GLES2=yes
HAVE_EGL_RPI=yes
@@ -33,3 +40,6 @@ Index: gst-plugins-bad-1.10.4/configure.ac
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
index 413eff0695f..23950b67f2a 100644
--- 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
@@ -1,4 +1,4 @@
-From 10d2a977ee1d469f0bf9059bb2d0b55fd2eecbac Mon Sep 17 00:00:00 2001
+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
@@ -17,16 +17,17 @@ 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 9c52aeb..26cacd6 100644
+index 12807bc..35a0bf3 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -752,9 +752,16 @@ AC_SUBST(FT2_CFLAGS)
- fi dnl of EXT plugins
+@@ -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],
@@ -42,6 +43,3 @@ index 9c52aeb..26cacd6 100644
AM_CONDITIONAL(USE_GIO_UNIX_2_0, test "x$HAVE_GIO_UNIX_2_0" = "xyes")
dnl *** finalize CFLAGS, LDFLAGS, LIBS
---
-1.9.1
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.12.4.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.12.4.bb
deleted file mode 100644
index dd895bbcb11..00000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.12.4.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require gstreamer1.0-plugins-base.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=c54ce9345727175ff66d17b67ff51f58 \
- file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \
- file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607"
-
-SRC_URI = " \
- http://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://0004-subparse-set-need_segment-after-sink-pad-received-GS.patch \
- file://make-gio_unix_2_0-dependency-configurable.patch \
- file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \
-"
-SRC_URI[md5sum] = "b35b04071f69b8ab69a7f3a497ff0131"
-SRC_URI[sha256sum] = "4c306b03df0212f1b8903784e29bb3493319ba19ebebf13b0c56a17870292282"
-
-S = "${WORKDIR}/gst-plugins-base-${PV}"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.2.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.2.bb
new file mode 100644
index 00000000000..dcea7891924
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.2.bb
@@ -0,0 +1,76 @@
+require gstreamer1.0-plugins.inc
+
+LICENSE = "GPLv2+ & LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c54ce9345727175ff66d17b67ff51f58 \
+ file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \
+ file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607"
+
+SRC_URI = " \
+ http://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://0001-Makefile.am-don-t-hardcode-libtool-name-when-running.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://0009-glimagesink-Downrank-to-marginal.patch \
+ file://0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch \
+ file://0010-gl-Add-switch-for-explicitely-enabling-disabling-GBM.patch \
+ file://0011-gl-Add-switches-for-explicitely-enabling-disabling-P.patch \
+ file://link-with-libvchostif.patch \
+ "
+SRC_URI[md5sum] = "8bc790d623350cd8eac68d3a13d79f7d"
+SRC_URI[sha256sum] = "a4b7e80ba869f599307449b17c9e00b5d1e94d3ba1d8a1a386b8770b2ef01c7c"
+
+S = "${WORKDIR}/gst-plugins-base-${PV}"
+
+DEPENDS += "iso-codes util-linux"
+
+inherit gettext
+
+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-good_1.12.4.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.12.4.bb
deleted file mode 100644
index a0609641d65..00000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.12.4.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-require gstreamer1.0-plugins-good.inc
-
-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"
-
-SRC_URI = " \
- http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \
- file://0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch \
- file://avoid-including-sys-poll.h-directly.patch \
- file://ensure-valid-sentinel-for-gst_structure_get.patch \
- file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \
-"
-SRC_URI[md5sum] = "bdf4791a2b788ec6a149b81ff4032038"
-SRC_URI[sha256sum] = "649f49bec60892d47ee6731b92266974c723554da1c6649f21296097715eb957"
-
-S = "${WORKDIR}/gst-plugins-good-${PV}"
-
-RPROVIDES_${PN}-pulseaudio += "${PN}-pulse"
-RPROVIDES_${PN}-soup += "${PN}-souphttpsrc"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.2.bb
index 14c3d61848d..e035cc0cbac 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.2.bb
@@ -1,28 +1,50 @@
require gstreamer1.0-plugins.inc
+SRC_URI = " \
+ http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \
+ file://0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch \
+ file://avoid-including-sys-poll.h-directly.patch \
+ file://ensure-valid-sentinel-for-gst_structure_get.patch \
+ file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \
+ "
+
+SRC_URI[md5sum] = "5b83b2828e31ce5b4a5c03c71e707ae7"
+SRC_URI[sha256sum] = "c0575e2811860bfff59b865b8d125153859a01f0615fa41e279b64d88d25caad"
+
+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 zlib bzip2"
+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)} \
- cairo flac gdk-pixbuf gudev jpeg libpng soup speex taglib v4l2 \
+ 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"
@@ -31,11 +53,15 @@ PACKAGECONFIG[v4l2] = "--enable-gst_v4l2 --enable-v4l2-probe,--disable-gst
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-bz2 \
--enable-oss \
- --enable-zlib \
--disable-aalib \
--disable-aalibtest \
--disable-directsound \
@@ -44,8 +70,9 @@ EXTRA_OECONF += " \
--disable-oss4 \
--disable-osx_audio \
--disable-osx_video \
+ --disable-qt \
--disable-shout2 \
- --disable-sunaudio \
+ --disable-twolame \
--disable-waveform \
"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.12.4.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.12.4.bb
deleted file mode 100644
index f8333519e9c..00000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.12.4.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require gstreamer1.0-plugins-ugly.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
- file://tests/check/elements/xingmux.c;beginline=1;endline=21;md5=4c771b8af188724855cb99cadd390068"
-
-SRC_URI = " \
- http://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] = "e2b836fb2747f6ae3a1a6f33a9d8c952"
-SRC_URI[sha256sum] = "1c165b8d888ed350acd8e6ac9f6fe06508e6fcc0a3afc6ccc9fbeb30df9be522"
-
-S = "${WORKDIR}/gst-plugins-ugly-${PV}"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.14.2.bb
index 60aa968c950..01972694687 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly.inc
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.14.2.bb
@@ -1,15 +1,27 @@
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 = " \
+ http://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] = "ea0a800c6421c3c3cdbed3d040b8ffd3"
+SRC_URI[sha256sum] = "55e097d9d93921fdcf7abb0ff92d23b21dd9098e632f1ba433603b3bd1cf3d69"
+
+S = "${WORKDIR}/gst-plugins-ugly-${PV}"
+
DEPENDS += "gstreamer1.0-plugins-base libid3tag"
inherit gettext
PACKAGECONFIG ??= " \
${GSTREAMER_ORC} \
- a52dec lame mpg123 mpeg2dec \
+ a52dec mpeg2dec \
"
PACKAGECONFIG[a52dec] = "--enable-a52dec,--disable-a52dec,liba52"
@@ -17,14 +29,11 @@ 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[lame] = "--enable-lame,--disable-lame,lame"
PACKAGECONFIG[mpeg2dec] = "--enable-mpeg2dec,--disable-mpeg2dec,mpeg2dec"
-PACKAGECONFIG[mpg123] = "--enable-mpg123,--disable-mpg123,mpg123"
PACKAGECONFIG[x264] = "--enable-x264,--disable-x264,x264"
EXTRA_OECONF += " \
--disable-sidplay \
- --disable-twolame \
"
FILES_${PN}-amrnb += "${datadir}/gstreamer-1.0/presets/GstAmrnbEnc.prs"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.12.4.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.12.4.bb
deleted file mode 100644
index faec3566c43..00000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.12.4.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require gstreamer1.0-python.inc
-
-SRC_URI = "http://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz"
-SRC_URI[md5sum] = "f1fd046ea781736a794f9f552d77c50d"
-SRC_URI[sha256sum] = "20ce6af6615c9a440c1928c31259a78226516d06bf1a65f888c6d109826fa3ea"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=c34deae4e395ca07e725ab0076a5f740"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.14.2.bb
index 361f0bca411..78c00463283 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python.inc
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.14.2.bb
@@ -1,7 +1,13 @@
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 = "http://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz"
+SRC_URI[md5sum] = "5b0af1bd490d79a7d435b2be47568f8e"
+SRC_URI[sha256sum] = "dc40be5ab4f1a433ff3f0af2b3d2d79a363009020c41ec10f9747ba64200cb22"
DEPENDS = "gstreamer1.0 python3-pygobject"
RDEPENDS_${PN} += "gstreamer1.0 python3-pygobject"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.12.4.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.12.4.bb
deleted file mode 100644
index da68dcba20f..00000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.12.4.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require gstreamer1.0-rtsp-server.inc
-
-SRC_URI[md5sum] = "ad70a9735f58da21d0f5cedf48ccadd3"
-SRC_URI[sha256sum] = "7660112ebd59838f1054796b38109dcbe32f0a040e3a252a68a81055aeaa56a9"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.14.2.bb
index 3776f92917b..6766e252ef1 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server.inc
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.14.2.bb
@@ -2,6 +2,7 @@ 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"
@@ -10,7 +11,11 @@ PNREAL = "gst-rtsp-server"
SRC_URI = "http://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz \
file://0001-Don-t-hardcode-libtool-name-when-using-introspection.patch \
file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \
- file://gtk-doc-tweaks.patch"
+ file://gtk-doc-tweaks.patch \
+ "
+
+SRC_URI[md5sum] = "c26b59dd2ea8b1a4a25e9f7e0f57a50e"
+SRC_URI[sha256sum] = "f7387755cf6ac5f334d4610f1f5aa7da4ff396a487dd5b789bb707f160222c98"
S = "${WORKDIR}/${PNREAL}-${PV}"
@@ -28,4 +33,3 @@ delete_pkg_m4_file() {
}
do_configure[prefuncs] += " delete_pkg_m4_file"
-
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
new file mode 100644
index 00000000000..d7b8984953d
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi/0001-gst-vaapi-Makefile.am-Add-EGL_CFLAGS-to-libgstvaapi-.patch
@@ -0,0 +1,33 @@
+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_1.12.4.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.12.4.bb
deleted file mode 100644
index 1df2301792c..00000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.12.4.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require gstreamer1.0-vaapi.inc
-SRC_URI[md5sum] = "2149982cdb348139bca946bb63766f4c"
-SRC_URI[sha256sum] = "1c2d77242e1f30c4d1394636cae9f6877228a017960fca96881e0080d8b6e9c9"
-
-DEPENDS += "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.14.2.bb
index abfcc65390d..34f2be90433 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi.inc
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.14.2.bb
@@ -4,17 +4,19 @@ based plugins for GStreamer and helper libraries: `vaapidecode', \
`vaapiconvert', and `vaapisink'."
REALPN = "gstreamer-vaapi"
-FILESPATH = "${@base_set_filespath(["${FILE_DIRNAME}/${REALPN}", "${FILE_DIRNAME}/${REALPN}"], d)}"
LICENSE = "LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
-DEPENDS = "libva"
-
SRC_URI = "https://gstreamer.freedesktop.org/src/${REALPN}/${REALPN}-${PV}.tar.xz \
+ file://0001-gst-vaapi-Makefile.am-Add-EGL_CFLAGS-to-libgstvaapi-.patch \
"
+SRC_URI[md5sum] = "12ee9c16dfa0bb1808c76683e1c9a328"
+SRC_URI[sha256sum] = "7f1064e27f5abd3a42ef66b425f1a2b9dbae7748c81bd9d090ce52a1aaf30d8a"
+
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
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.12.4.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.12.4.bb
deleted file mode 100644
index 01b23965133..00000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.12.4.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require gstreamer1.0.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \
- file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d"
-
-SRC_URI = " \
- http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.xz \
-"
-SRC_URI[md5sum] = "9d268f2e891cce1ac0832f1cc467d4ea"
-SRC_URI[sha256sum] = "5a8704aa4c2eeb04da192c4a9942f94f860ac1a585de90d9f914bac26a970674"
-
-S = "${WORKDIR}/gstreamer-${PV}"
-
-CVE_PRODUCT = "gstreamer"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.14.2.bb
index c2df1f32583..7f291f66303 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0.inc
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.14.2.bb
@@ -8,19 +8,30 @@ 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
+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"
-SRC_URI_append = " \
+LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \
+ file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d"
+
+S = "${WORKDIR}/gstreamer-${PV}"
+
+SRC_URI = " \
+ http://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] = "9f4177c1752e44cbd72f6311ee61e1ba"
+SRC_URI[sha256sum] = "4bd6127299f3f29379046bbd58a526e6353b569e0e72f7b4df2ae70df6882e09"
-PACKAGECONFIG ??= ""
+PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \
+ "
PACKAGECONFIG[debug] = "--enable-debug,--disable-debug"
PACKAGECONFIG[tests] = "--enable-tests,--disable-tests"
@@ -30,7 +41,6 @@ PACKAGECONFIG[unwind] = "--with-unwind,--without-unwind,libunwind"
PACKAGECONFIG[dw] = "--with-dw,--without-dw,elfutils"
EXTRA_OECONF = " \
- --disable-dependency-tracking \
--disable-examples \
"
@@ -47,6 +57,7 @@ FILES_${PN}-bash-completion += "${datadir}/bash-completion/completions/ ${datadi
RRECOMMENDS_${PN}_qemux86 += "kernel-module-snd-ens1370 kernel-module-snd-rawmidi"
RRECOMMENDS_${PN}_qemux86-64 += "kernel-module-snd-ens1370 kernel-module-snd-rawmidi"
+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
@@ -59,3 +70,23 @@ 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/lame/lame_3.100.bb b/meta/recipes-multimedia/lame/lame_3.100.bb
index ff6ac7efb2c..7f8996fb529 100644
--- a/meta/recipes-multimedia/lame/lame_3.100.bb
+++ b/meta/recipes-multimedia/lame/lame_3.100.bb
@@ -3,14 +3,12 @@ HOMEPAGE = "http://lame.sourceforge.net/"
BUGTRACKER = "http://sourceforge.net/tracker/?group_id=290&atid=100290"
SECTION = "console/utils"
LICENSE = "LGPLv2+"
-LICENSE_FLAGS = "commercial"
-
-DEPENDS = "ncurses gettext-native"
-
LIC_FILES_CHKSUM = "file://COPYING;md5=c46bda00ffbb0ba1dac22f8d087f54d9 \
file://include/lame.h;beginline=1;endline=20;md5=a2258182c593c398d15a48262130a92b \
"
+DEPENDS = "ncurses gettext-native"
+
SRC_URI = "${SOURCEFORGE_MIRROR}/lame/lame-${PV}.tar.gz \
file://no-gtk1.patch \
"
diff --git a/meta/recipes-multimedia/libid3tag/libid3tag/10_utf16.dpatch b/meta/recipes-multimedia/libid3tag/libid3tag/10_utf16.dpatch
new file mode 100644
index 00000000000..8d09ce7b6f3
--- /dev/null
+++ b/meta/recipes-multimedia/libid3tag/libid3tag/10_utf16.dpatch
@@ -0,0 +1,33 @@
+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
+
+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_0.15.1b.bb b/meta/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb
index f6139d6124f..fe316461071 100644
--- a/meta/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb
+++ b/meta/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb
@@ -13,6 +13,7 @@ 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.dpatch \
"
UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/mad/files/libid3tag/"
UPSTREAM_CHECK_REGEX = "/projects/mad/files/libid3tag/(?P<pver>.*)/$"
diff --git a/meta/recipes-multimedia/libpng/libpng_1.6.34.bb b/meta/recipes-multimedia/libpng/libpng_1.6.35.bb
index e52d032289d..5ae0a91a741 100644
--- a/meta/recipes-multimedia/libpng/libpng_1.6.34.bb
+++ b/meta/recipes-multimedia/libpng/libpng_1.6.35.bb
@@ -2,15 +2,16 @@ SUMMARY = "PNG image format decoding library"
HOMEPAGE = "http://www.libpng.org/"
SECTION = "libs"
LICENSE = "Libpng"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=2db717a05a20e36f2fa673265bd31568 \
- file://png.h;endline=144;md5=3ac9fd250a8786ae581e34254bf79429"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4791381a76f106ac4699f6261c65ee29 \
+ file://png.h;endline=144;md5=090ba5769782e8a1663a45fab1c2b36c \
+ "
DEPENDS = "zlib"
LIBV = "16"
SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/${PV}/${BP}.tar.xz"
-SRC_URI[md5sum] = "c05b6ca7190a5e387b78657dbe5536b2"
-SRC_URI[sha256sum] = "2f1e960d92ce3b3abd03d06dfec9637dfbd22febf107a536b44f7a47c60659f6"
+SRC_URI[md5sum] = "678b7e696a62a193ed3503b04bf449d6"
+SRC_URI[sha256sum] = "23912ec8c9584917ed9b09c5023465d71709dce089be503c7867fec68a93bcd7"
MIRRORS += "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/${PV}/ ${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/older-releases/${PV}/"
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-14245-14246.patch b/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-14245-14246.patch
new file mode 100644
index 00000000000..a17ec21f986
--- /dev/null
+++ b/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-14245-14246.patch
@@ -0,0 +1,121 @@
+From 2d54514a4f6437b67829717c05472d2e3300a258 Mon Sep 17 00:00:00 2001
+From: Fabian Greffrath <fabian@greffrath.com>
+Date: Wed, 27 Sep 2017 14:46:17 +0200
+Subject: [PATCH] sfe_copy_data_fp: check value of "max" variable for being
+ normal
+
+and check elements of the data[] array for being finite.
+
+Both checks use functions provided by the <math.h> header as declared
+by the C99 standard.
+
+Fixes #317
+CVE: CVE-2017-14245
+CVE: CVE-2017-14246
+
+Upstream-Status: Backport [https://github.com/fabiangreffrath/libsndfile/commit/2d54514a4f6437b67829717c05472d2e3300a258]
+
+Signed-off-by: Fabian Greffrath <fabian@greffrath.com>
+Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
+---
+ programs/common.c | 20 ++++++++++++++++----
+ programs/common.h | 2 +-
+ programs/sndfile-convert.c | 6 +++++-
+ 3 files changed, 22 insertions(+), 6 deletions(-)
+
+diff --git a/programs/common.c b/programs/common.c
+index a21e62c..a249a58 100644
+--- a/programs/common.c
++++ b/programs/common.c
+@@ -36,6 +36,7 @@
+ #include <string.h>
+ #include <ctype.h>
+ #include <stdint.h>
++#include <math.h>
+
+ #include <sndfile.h>
+
+@@ -45,7 +46,7 @@
+
+ #define MIN(x, y) ((x) < (y) ? (x) : (y))
+
+-void
++int
+ sfe_copy_data_fp (SNDFILE *outfile, SNDFILE *infile, int channels, int normalize)
+ { static double data [BUFFER_LEN], max ;
+ int frames, readcount, k ;
+@@ -54,6 +55,8 @@ sfe_copy_data_fp (SNDFILE *outfile, SNDFILE *infile, int channels, int normalize
+ readcount = frames ;
+
+ sf_command (infile, SFC_CALC_SIGNAL_MAX, &max, sizeof (max)) ;
++ if (!isnormal (max)) /* neither zero, subnormal, infinite, nor NaN */
++ return 1 ;
+
+ if (!normalize && max < 1.0)
+ { while (readcount > 0)
+@@ -67,12 +70,16 @@ sfe_copy_data_fp (SNDFILE *outfile, SNDFILE *infile, int channels, int normalize
+ while (readcount > 0)
+ { readcount = sf_readf_double (infile, data, frames) ;
+ for (k = 0 ; k < readcount * channels ; k++)
+- data [k] /= max ;
++ { data [k] /= max ;
++
++ if (!isfinite (data [k])) /* infinite or NaN */
++ return 1;
++ }
+ sf_writef_double (outfile, data, readcount) ;
+ } ;
+ } ;
+
+- return ;
++ return 0 ;
+ } /* sfe_copy_data_fp */
+
+ void
+@@ -252,7 +259,12 @@ sfe_apply_metadata_changes (const char * filenames [2], const METADATA_INFO * in
+
+ /* If the input file is not the same as the output file, copy the data. */
+ if ((infileminor == SF_FORMAT_DOUBLE) || (infileminor == SF_FORMAT_FLOAT))
+- sfe_copy_data_fp (outfile, infile, sfinfo.channels, SF_FALSE) ;
++ { if (sfe_copy_data_fp (outfile, infile, sfinfo.channels, SF_FALSE) != 0)
++ { printf ("Error : Not able to decode input file '%s'\n", filenames [0]) ;
++ error_code = 1 ;
++ goto cleanup_exit ;
++ } ;
++ }
+ else
+ sfe_copy_data_int (outfile, infile, sfinfo.channels) ;
+ } ;
+diff --git a/programs/common.h b/programs/common.h
+index eda2d7d..986277e 100644
+--- a/programs/common.h
++++ b/programs/common.h
+@@ -62,7 +62,7 @@ typedef SF_BROADCAST_INFO_VAR (2048) SF_BROADCAST_INFO_2K ;
+
+ void sfe_apply_metadata_changes (const char * filenames [2], const METADATA_INFO * info) ;
+
+-void sfe_copy_data_fp (SNDFILE *outfile, SNDFILE *infile, int channels, int normalize) ;
++int sfe_copy_data_fp (SNDFILE *outfile, SNDFILE *infile, int channels, int normalize) ;
+
+ void sfe_copy_data_int (SNDFILE *outfile, SNDFILE *infile, int channels) ;
+
+diff --git a/programs/sndfile-convert.c b/programs/sndfile-convert.c
+index dff7f79..e6de593 100644
+--- a/programs/sndfile-convert.c
++++ b/programs/sndfile-convert.c
+@@ -335,7 +335,11 @@ main (int argc, char * argv [])
+ || (outfileminor == SF_FORMAT_DOUBLE) || (outfileminor == SF_FORMAT_FLOAT)
+ || (infileminor == SF_FORMAT_DOUBLE) || (infileminor == SF_FORMAT_FLOAT)
+ || (infileminor == SF_FORMAT_VORBIS) || (outfileminor == SF_FORMAT_VORBIS))
+- sfe_copy_data_fp (outfile, infile, sfinfo.channels, normalize) ;
++ { if (sfe_copy_data_fp (outfile, infile, sfinfo.channels, normalize) != 0)
++ { printf ("Error : Not able to decode input file %s.\n", infilename) ;
++ return 1 ;
++ } ;
++ }
+ else
+ sfe_copy_data_int (outfile, infile, sfinfo.channels) ;
+
+--
+2.7.4
+
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-14634.patch b/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-14634.patch
new file mode 100644
index 00000000000..39b4ec11010
--- /dev/null
+++ b/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2017-14634.patch
@@ -0,0 +1,42 @@
+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_1.0.28.bb b/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.28.bb
index 281ac82e396..ed43b7494e6 100644
--- a/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.28.bb
+++ b/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.28.bb
@@ -10,6 +10,8 @@ SRC_URI = "http://www.mega-nerd.com/libsndfile/files/libsndfile-${PV}.tar.gz \
file://CVE-2017-8361-8365.patch \
file://CVE-2017-8362.patch \
file://CVE-2017-8363.patch \
+ file://CVE-2017-14245-14246.patch \
+ file://CVE-2017-14634.patch \
"
SRC_URI[md5sum] = "646b5f98ce89ac60cdb060fcd398247c"
diff --git a/meta/recipes-multimedia/libtiff/files/CVE-2018-10963.patch b/meta/recipes-multimedia/libtiff/files/CVE-2018-10963.patch
new file mode 100644
index 00000000000..7252298b520
--- /dev/null
+++ b/meta/recipes-multimedia/libtiff/files/CVE-2018-10963.patch
@@ -0,0 +1,39 @@
+From de144fd228e4be8aa484c3caf3d814b6fa88c6d9 Mon Sep 17 00:00:00 2001
+From: Even Rouault <even.rouault@spatialys.com>
+Date: Sat, 12 May 2018 14:24:15 +0200
+Subject: [PATCH] TIFFWriteDirectorySec: avoid assertion. Fixes
+ http://bugzilla.maptools.org/show_bug.cgi?id=2795.
+ CVE-2018-10963
+
+---
+CVE: CVE-2018-10963
+
+Upstream-Status: Backport [gitlab.com/libtiff/libtiff/commit/de144f...]
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+---
+ libtiff/tif_dirwrite.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/libtiff/tif_dirwrite.c b/libtiff/tif_dirwrite.c
+index 2430de6..c15a28d 100644
+--- a/libtiff/tif_dirwrite.c
++++ b/libtiff/tif_dirwrite.c
+@@ -695,8 +695,11 @@ TIFFWriteDirectorySec(TIFF* tif, int isimage, int imagedone, uint64* pdiroff)
+ }
+ break;
+ default:
+- assert(0); /* we should never get here */
+- break;
++ TIFFErrorExt(tif->tif_clientdata,module,
++ "Cannot write tag %d (%s)",
++ TIFFFieldTag(o),
++ o->field_name ? o->field_name : "unknown");
++ goto bad;
+ }
+ }
+ }
+--
+1.7.9.5
+
diff --git a/meta/recipes-multimedia/libtiff/files/CVE-2018-7456.patch b/meta/recipes-multimedia/libtiff/files/CVE-2018-7456.patch
new file mode 100644
index 00000000000..2c11f93d138
--- /dev/null
+++ b/meta/recipes-multimedia/libtiff/files/CVE-2018-7456.patch
@@ -0,0 +1,178 @@
+From be4c85b16e8801a16eec25e80eb9f3dd6a96731b Mon Sep 17 00:00:00 2001
+From: Hugo Lefeuvre <hle@debian.org>
+Date: Sun, 8 Apr 2018 14:07:08 -0400
+Subject: [PATCH] Fix NULL pointer dereference in TIFFPrintDirectory
+
+The TIFFPrintDirectory function relies on the following assumptions,
+supposed to be guaranteed by the specification:
+
+(a) A Transfer Function field is only present if the TIFF file has
+ photometric type < 3.
+
+(b) If SamplesPerPixel > Color Channels, then the ExtraSamples field
+ has count SamplesPerPixel - (Color Channels) and contains
+ information about supplementary channels.
+
+While respect of (a) and (b) are essential for the well functioning of
+TIFFPrintDirectory, no checks are realized neither by the callee nor
+by TIFFPrintDirectory itself. Hence, following scenarios might happen
+and trigger the NULL pointer dereference:
+
+(1) TIFF File of photometric type 4 or more has illegal Transfer
+ Function field.
+
+(2) TIFF File has photometric type 3 or less and defines a
+ SamplesPerPixel field such that SamplesPerPixel > Color Channels
+ without defining all extra samples in the ExtraSamples fields.
+
+In this patch, we address both issues with respect of the following
+principles:
+
+(A) In the case of (1), the defined transfer table should be printed
+ safely even if it isn't 'legal'. This allows us to avoid expensive
+ checks in TIFFPrintDirectory. Also, it is quite possible that
+ an alternative photometric type would be developed (not part of the
+ standard) and would allow definition of Transfer Table. We want
+ libtiff to be able to handle this scenario out of the box.
+
+(B) In the case of (2), the transfer table should be printed at its
+ right size, that is if TIFF file has photometric type Palette
+ then the transfer table should have one row and not three, even
+ if two extra samples are declared.
+
+In order to fulfill (A) we simply add a new 'i < 3' end condition to
+the broken TIFFPrintDirectory loop. This makes sure that in any case
+where (b) would be respected but not (a), everything stays fine.
+
+(B) is fulfilled by the loop condition
+'i < td->td_samplesperpixel - td->td_extrasamples'. This is enough as
+long as (b) is respected.
+
+Naturally, we also make sure (b) is respected. This is done in the
+TIFFReadDirectory function by making sure any non-color channel is
+counted in ExtraSamples.
+
+This commit addresses CVE-2018-7456.
+
+---
+CVE: CVE-2018-7456
+
+Upstream-Status: Backport [gitlab.com/libtiff/libtiff/commit/be4c85b...]
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+---
+ libtiff/tif_dirread.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++
+ libtiff/tif_print.c | 2 +-
+ 2 files changed, 63 insertions(+), 1 deletion(-)
+
+diff --git a/libtiff/tif_dirread.c b/libtiff/tif_dirread.c
+index 6baa7b3..af5b84a 100644
+--- a/libtiff/tif_dirread.c
++++ b/libtiff/tif_dirread.c
+@@ -165,6 +165,7 @@ static int TIFFFetchStripThing(TIFF* tif, TIFFDirEntry* dir, uint32 nstrips, uin
+ static int TIFFFetchSubjectDistance(TIFF*, TIFFDirEntry*);
+ static void ChopUpSingleUncompressedStrip(TIFF*);
+ static uint64 TIFFReadUInt64(const uint8 *value);
++static int _TIFFGetMaxColorChannels(uint16 photometric);
+
+ static int _TIFFFillStrilesInternal( TIFF *tif, int loadStripByteCount );
+
+@@ -3505,6 +3506,35 @@ static void TIFFReadDirEntryOutputErr(TIFF* tif, enum TIFFReadDirEntryErr err, c
+ }
+
+ /*
++ * Return the maximum number of color channels specified for a given photometric
++ * type. 0 is returned if photometric type isn't supported or no default value
++ * is defined by the specification.
++ */
++static int _TIFFGetMaxColorChannels( uint16 photometric )
++{
++ switch (photometric) {
++ case PHOTOMETRIC_PALETTE:
++ case PHOTOMETRIC_MINISWHITE:
++ case PHOTOMETRIC_MINISBLACK:
++ return 1;
++ case PHOTOMETRIC_YCBCR:
++ case PHOTOMETRIC_RGB:
++ case PHOTOMETRIC_CIELAB:
++ return 3;
++ case PHOTOMETRIC_SEPARATED:
++ case PHOTOMETRIC_MASK:
++ return 4;
++ case PHOTOMETRIC_LOGL:
++ case PHOTOMETRIC_LOGLUV:
++ case PHOTOMETRIC_CFA:
++ case PHOTOMETRIC_ITULAB:
++ case PHOTOMETRIC_ICCLAB:
++ default:
++ return 0;
++ }
++}
++
++/*
+ * Read the next TIFF directory from a file and convert it to the internal
+ * format. We read directories sequentially.
+ */
+@@ -3520,6 +3550,7 @@ TIFFReadDirectory(TIFF* tif)
+ uint32 fii=FAILED_FII;
+ toff_t nextdiroff;
+ int bitspersample_read = FALSE;
++ int color_channels;
+
+ tif->tif_diroff=tif->tif_nextdiroff;
+ if (!TIFFCheckDirOffset(tif,tif->tif_nextdiroff))
+@@ -4024,6 +4055,37 @@ TIFFReadDirectory(TIFF* tif)
+ }
+ }
+ }
++
++ /*
++ * Make sure all non-color channels are extrasamples.
++ * If it's not the case, define them as such.
++ */
++ color_channels = _TIFFGetMaxColorChannels(tif->tif_dir.td_photometric);
++ if (color_channels && tif->tif_dir.td_samplesperpixel - tif->tif_dir.td_extrasamples > color_channels) {
++ uint16 old_extrasamples;
++ uint16 *new_sampleinfo;
++
++ TIFFWarningExt(tif->tif_clientdata,module, "Sum of Photometric type-related "
++ "color channels and ExtraSamples doesn't match SamplesPerPixel. "
++ "Defining non-color channels as ExtraSamples.");
++
++ old_extrasamples = tif->tif_dir.td_extrasamples;
++ tif->tif_dir.td_extrasamples = (tif->tif_dir.td_samplesperpixel - color_channels);
++
++ // sampleinfo should contain information relative to these new extra samples
++ new_sampleinfo = (uint16*) _TIFFcalloc(tif->tif_dir.td_extrasamples, sizeof(uint16));
++ if (!new_sampleinfo) {
++ TIFFErrorExt(tif->tif_clientdata, module, "Failed to allocate memory for "
++ "temporary new sampleinfo array (%d 16 bit elements)",
++ tif->tif_dir.td_extrasamples);
++ goto bad;
++ }
++
++ memcpy(new_sampleinfo, tif->tif_dir.td_sampleinfo, old_extrasamples * sizeof(uint16));
++ _TIFFsetShortArray(&tif->tif_dir.td_sampleinfo, new_sampleinfo, tif->tif_dir.td_extrasamples);
++ _TIFFfree(new_sampleinfo);
++ }
++
+ /*
+ * Verify Palette image has a Colormap.
+ */
+diff --git a/libtiff/tif_print.c b/libtiff/tif_print.c
+index 8deceb2..1d86adb 100644
+--- a/libtiff/tif_print.c
++++ b/libtiff/tif_print.c
+@@ -544,7 +544,7 @@ TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags)
+ uint16 i;
+ fprintf(fd, " %2ld: %5u",
+ l, td->td_transferfunction[0][l]);
+- for (i = 1; i < td->td_samplesperpixel; i++)
++ for (i = 1; i < td->td_samplesperpixel - td->td_extrasamples && i < 3; i++)
+ fprintf(fd, " %5u",
+ td->td_transferfunction[i][l]);
+ fputc('\n', fd);
+--
+1.7.9.5
+
diff --git a/meta/recipes-multimedia/libtiff/files/CVE-2018-8905.patch b/meta/recipes-multimedia/libtiff/files/CVE-2018-8905.patch
new file mode 100644
index 00000000000..962646dbe09
--- /dev/null
+++ b/meta/recipes-multimedia/libtiff/files/CVE-2018-8905.patch
@@ -0,0 +1,61 @@
+From 58a898cb4459055bb488ca815c23b880c242a27d Mon Sep 17 00:00:00 2001
+From: Even Rouault <even.rouault@spatialys.com>
+Date: Sat, 12 May 2018 15:32:31 +0200
+Subject: [PATCH] LZWDecodeCompat(): fix potential index-out-of-bounds write.
+ Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2780 /
+ CVE-2018-8905
+
+The fix consists in using the similar code LZWDecode() to validate we
+don't write outside of the output buffer.
+
+---
+CVE: CVE-2018-8905
+
+Upstream-Status: Backport [gitlab.com/libtiff/libtiff/commit/58a898...]
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+---
+ libtiff/tif_lzw.c | 18 ++++++++++++------
+ 1 file changed, 12 insertions(+), 6 deletions(-)
+
+diff --git a/libtiff/tif_lzw.c b/libtiff/tif_lzw.c
+index 4ccb443..94d85e3 100644
+--- a/libtiff/tif_lzw.c
++++ b/libtiff/tif_lzw.c
+@@ -602,6 +602,7 @@ LZWDecodeCompat(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s)
+ char *tp;
+ unsigned char *bp;
+ int code, nbits;
++ int len;
+ long nextbits, nextdata, nbitsmask;
+ code_t *codep, *free_entp, *maxcodep, *oldcodep;
+
+@@ -753,13 +754,18 @@ LZWDecodeCompat(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s)
+ } while (--occ);
+ break;
+ }
+- assert(occ >= codep->length);
+- op += codep->length;
+- occ -= codep->length;
+- tp = op;
++ len = codep->length;
++ tp = op + len;
+ do {
+- *--tp = codep->value;
+- } while( (codep = codep->next) != NULL );
++ int t;
++ --tp;
++ t = codep->value;
++ codep = codep->next;
++ *tp = (char)t;
++ } while (codep && tp > op);
++ assert(occ >= len);
++ op += len;
++ occ -= len;
+ } else {
+ *op++ = (char)code;
+ occ--;
+--
+1.7.9.5
+
diff --git a/meta/recipes-multimedia/libtiff/tiff_4.0.9.bb b/meta/recipes-multimedia/libtiff/tiff_4.0.9.bb
index 8c3bba5c640..fa64d112166 100644
--- a/meta/recipes-multimedia/libtiff/tiff_4.0.9.bb
+++ b/meta/recipes-multimedia/libtiff/tiff_4.0.9.bb
@@ -9,6 +9,9 @@ SRC_URI = "http://download.osgeo.org/libtiff/tiff-${PV}.tar.gz \
file://CVE-2017-9935.patch \
file://CVE-2017-18013.patch \
file://CVE-2018-5784.patch \
+ file://CVE-2018-10963.patch \
+ file://CVE-2018-8905.patch \
+ file://CVE-2018-7456.patch \
"
SRC_URI[md5sum] = "54bad211279cc93eb4fca31ba9bfdc79"
diff --git a/meta/recipes-multimedia/libvorbis/libvorbis/0001-configure-Check-for-clang.patch b/meta/recipes-multimedia/libvorbis/libvorbis/0001-configure-Check-for-clang.patch
index 7dad0cd8a5a..b06029b98b7 100644
--- a/meta/recipes-multimedia/libvorbis/libvorbis/0001-configure-Check-for-clang.patch
+++ b/meta/recipes-multimedia/libvorbis/libvorbis/0001-configure-Check-for-clang.patch
@@ -1,4 +1,4 @@
-From 44b4511784f9b51c514dff4ceb3cbeaf9c374d08 Mon Sep 17 00:00:00 2001
+From d619ccf6c11ab574466914c57994a82fb99401af Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 22 Mar 2017 16:06:55 +0000
Subject: [PATCH] configure: Check for clang
@@ -13,12 +13,12 @@ Upstream-Status: Pending
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
-index eddd02d..00ecba5 100644
+index 28b0a14..2d4e984 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -93,6 +93,16 @@ AC_ARG_ENABLE(examples,
-
- AM_CONDITIONAL(BUILD_EXAMPLES, [test "x$enable_examples" = xyes])
+@@ -98,6 +98,16 @@ AC_ARG_ENABLE(examples,
+
+ AM_CONDITIONAL(BUILD_EXAMPLES, [test "x$enable_examples" = xyes])
+AC_MSG_CHECKING([whether C compiler is clang])
+$CC -x c /dev/null -dM -E > conftest.txt 2>&1
@@ -33,9 +33,9 @@ index eddd02d..00ecba5 100644
dnl --------------------------------------------------
dnl Set build flags based on environment
dnl --------------------------------------------------
-@@ -127,10 +137,15 @@ else
+@@ -132,10 +142,15 @@ else
AC_MSG_RESULT([$GCC_VERSION])
- case $host in
+ case $host in
*86-*-linux*)
+ if test "$CC_CLANG" = "1"; then
+ ieeefp=""
@@ -43,8 +43,8 @@ index eddd02d..00ecba5 100644
+ ieefp="-mno-ieee-fp"
+ fi
DEBUG="-g -Wall -Wextra -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char"
-- CFLAGS="-O3 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char"
-+ CFLAGS="-O3 -ffast-math -D_REENTRANT -fsigned-char ${ieefp}"
+- CFLAGS="-O3 -Wall -Wextra -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char"
++ CFLAGS="-O3 -Wall -Wextra -ffast-math -D_REENTRANT -fsigned-char ${ieefp}"
# PROFILE="-Wall -Wextra -pg -g -O3 -ffast-math -D_REENTRANT -fsigned-char -fno-inline -static"
- PROFILE="-Wall -Wextra -pg -g -O3 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char -fno-inline"
+ PROFILE="-Wall -Wextra -pg -g -O3 -ffast-math ${ieefp} -D_REENTRANT -fsigned-char -fno-inline"
@@ -52,5 +52,5 @@ index eddd02d..00ecba5 100644
# glibc < 2.1.3 has a serious FP bug in the math inline header
# that will cripple Vorbis. Look to see if the magic FP stack
--
-1.8.3.1
+2.17.0
diff --git a/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2017-14160.patch b/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2017-14160.patch
new file mode 100644
index 00000000000..b7603c3b13d
--- /dev/null
+++ b/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2017-14160.patch
@@ -0,0 +1,34 @@
+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-2017-14632.patch b/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2017-14632.patch
deleted file mode 100644
index 4036b966fea..00000000000
--- a/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2017-14632.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 39704ce16835e5c019bb03f6a94dc1f0677406c5 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
-Date: Wed, 15 Nov 2017 18:22:59 +0100
-Subject: [PATCH] CVE-2017-14632: vorbis_analysis_header_out: Don't clear opb
- if not initialized
-
-If the number of channels is not within the allowed range
-we call oggback_writeclear altough it's not initialized yet.
-
-This fixes
-
- =23371== Invalid free() / delete / delete[] / realloc()
- ==23371== at 0x4C2CE1B: free (vg_replace_malloc.c:530)
- ==23371== by 0x829CA31: oggpack_writeclear (in /usr/lib/x86_64-linux-gnu/libogg.so.0.8.2)
- ==23371== by 0x84B96EE: vorbis_analysis_headerout (info.c:652)
- ==23371== by 0x9FBCBCC: ??? (in /usr/lib/x86_64-linux-gnu/sox/libsox_fmt_vorbis.so)
- ==23371== by 0x4E524F1: ??? (in /usr/lib/x86_64-linux-gnu/libsox.so.2.0.1)
- ==23371== by 0x4E52CCA: sox_open_write (in /usr/lib/x86_64-linux-gnu/libsox.so.2.0.1)
- ==23371== by 0x10D82A: open_output_file (sox.c:1556)
- ==23371== by 0x10D82A: process (sox.c:1753)
- ==23371== by 0x10D82A: main (sox.c:3012)
- ==23371== Address 0x68768c8 is 488 bytes inside a block of size 880 alloc'd
- ==23371== at 0x4C2BB1F: malloc (vg_replace_malloc.c:298)
- ==23371== by 0x4C2DE9F: realloc (vg_replace_malloc.c:785)
- ==23371== by 0x4E545C2: lsx_realloc (in /usr/lib/x86_64-linux-gnu/libsox.so.2.0.1)
- ==23371== by 0x9FBC9A0: ??? (in /usr/lib/x86_64-linux-gnu/sox/libsox_fmt_vorbis.so)
- ==23371== by 0x4E524F1: ??? (in /usr/lib/x86_64-linux-gnu/libsox.so.2.0.1)
- ==23371== by 0x4E52CCA: sox_open_write (in /usr/lib/x86_64-linux-gnu/libsox.so.2.0.1)
- ==23371== by 0x10D82A: open_output_file (sox.c:1556)
- ==23371== by 0x10D82A: process (sox.c:1753)
- ==23371== by 0x10D82A: main (sox.c:3012)
-
-as seen when using the testcase from CVE-2017-11333 with
-008d23b782be09c8d75ba8190b1794abd66c7121 applied. However the error was
-there before.
-
-Upstream-Status: Backport
-CVE: CVE-2017-14632
-
-Reference to upstream patch:
-https://git.xiph.org/?p=vorbis.git;a=commitdiff;h=c1c2831fc7306d5fbd7bc800324efd12b28d327f
-
-Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
----
- lib/info.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/lib/info.c b/lib/info.c
-index 81b7557..4d82568 100644
---- a/lib/info.c
-+++ b/lib/info.c
-@@ -584,6 +584,7 @@ int vorbis_analysis_headerout(vorbis_dsp_state *v,
- private_state *b=v->backend_state;
-
- if(!b||vi->channels<=0||vi->channels>256){
-+ b = NULL;
- ret=OV_EFAULT;
- goto err_out;
- }
---
-2.16.2
-
diff --git a/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2017-14633.patch b/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2017-14633.patch
deleted file mode 100644
index 9c9e688d431..00000000000
--- a/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2017-14633.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 07eda55f336e5c44dfc0e4a1e21628faed7255fa Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
-Date: Tue, 31 Oct 2017 18:32:46 +0100
-Subject: [PATCH] CVE-2017-14633: Don't allow for more than 256 channels
-
-Otherwise
-
- for(i=0;i<vi->channels;i++){
- /* the encoder setup assumes that all the modes used by any
- specific bitrate tweaking use the same floor */
- int submap=info->chmuxlist[i];
-
-overreads later in mapping0_forward since chmuxlist is a fixed array of
-256 elements max.
-
-Upstream-Status: Backport
-CVE: CVE-2017-14633
-
-Reference to upstream patch:
-https://git.xiph.org/?p=vorbis.git;a=commitdiff;h=667ceb4aab60c1f74060143bb24e5f427b3cce5f
-
-Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
----
- lib/info.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/info.c b/lib/info.c
-index e447a0c..81b7557 100644
---- a/lib/info.c
-+++ b/lib/info.c
-@@ -583,7 +583,7 @@ int vorbis_analysis_headerout(vorbis_dsp_state *v,
- oggpack_buffer opb;
- private_state *b=v->backend_state;
-
-- if(!b||vi->channels<=0){
-+ if(!b||vi->channels<=0||vi->channels>256){
- ret=OV_EFAULT;
- goto err_out;
- }
---
-2.16.2
-
diff --git a/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2018-10392.patch b/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2018-10392.patch
new file mode 100644
index 00000000000..b7936b4b4d4
--- /dev/null
+++ b/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2018-10392.patch
@@ -0,0 +1,34 @@
+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/CVE-2018-5146.patch b/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2018-5146.patch
deleted file mode 100644
index 6d4052a872d..00000000000
--- a/meta/recipes-multimedia/libvorbis/libvorbis/CVE-2018-5146.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 3a017f591457bf6e80231b563bf83ee583fdbca8 Mon Sep 17 00:00:00 2001
-From: Thomas Daede <daede003@umn.edu>
-Date: Thu, 15 Mar 2018 14:15:31 -0700
-Subject: [PATCH] CVE-2018-5146: Prevent out-of-bounds write in codebook
- decoding.
-
-Codebooks that are not an exact divisor of the partition size are now
-truncated to fit within the partition.
-
-Upstream-Status: Backport
-CVE: CVE-2018-5146
-
-Reference to upstream patch:
-https://git.xiph.org/?p=vorbis.git;a=commitdiff;h=667ceb4aab60c1f74060143bb24e5f427b3cce5f
-
-Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
----
- lib/codebook.c | 48 ++++++++++--------------------------------------
- 1 file changed, 10 insertions(+), 38 deletions(-)
-
-diff --git a/lib/codebook.c b/lib/codebook.c
-index 8b766e8..7022fd2 100644
---- a/lib/codebook.c
-+++ b/lib/codebook.c
-@@ -387,7 +387,7 @@ long vorbis_book_decodevs_add(codebook *book,float *a,oggpack_buffer *b,int n){
- t[i] = book->valuelist+entry[i]*book->dim;
- }
- for(i=0,o=0;i<book->dim;i++,o+=step)
-- for (j=0;j<step;j++)
-+ for (j=0;o+j<n && j<step;j++)
- a[o+j]+=t[j][i];
- }
- return(0);
-@@ -399,41 +399,12 @@ long vorbis_book_decodev_add(codebook *book,float *a,oggpack_buffer *b,int n){
- int i,j,entry;
- float *t;
-
-- if(book->dim>8){
-- for(i=0;i<n;){
-- entry = decode_packed_entry_number(book,b);
-- if(entry==-1)return(-1);
-- t = book->valuelist+entry*book->dim;
-- for (j=0;j<book->dim;)
-- a[i++]+=t[j++];
-- }
-- }else{
-- for(i=0;i<n;){
-- entry = decode_packed_entry_number(book,b);
-- if(entry==-1)return(-1);
-- t = book->valuelist+entry*book->dim;
-- j=0;
-- switch((int)book->dim){
-- case 8:
-- a[i++]+=t[j++];
-- case 7:
-- a[i++]+=t[j++];
-- case 6:
-- a[i++]+=t[j++];
-- case 5:
-- a[i++]+=t[j++];
-- case 4:
-- a[i++]+=t[j++];
-- case 3:
-- a[i++]+=t[j++];
-- case 2:
-- a[i++]+=t[j++];
-- case 1:
-- a[i++]+=t[j++];
-- case 0:
-- break;
-- }
-- }
-+ for(i=0;i<n;){
-+ entry = decode_packed_entry_number(book,b);
-+ if(entry==-1)return(-1);
-+ t = book->valuelist+entry*book->dim;
-+ for(j=0;i<n && j<book->dim;)
-+ a[i++]+=t[j++];
- }
- }
- return(0);
-@@ -471,12 +442,13 @@ long vorbis_book_decodevv_add(codebook *book,float **a,long offset,int ch,
- long i,j,entry;
- int chptr=0;
- if(book->used_entries>0){
-- for(i=offset/ch;i<(offset+n)/ch;){
-+ int m=(offset+n)/ch;
-+ for(i=offset/ch;i<m;){
- entry = decode_packed_entry_number(book,b);
- if(entry==-1)return(-1);
- {
- const float *t = book->valuelist+entry*book->dim;
-- for (j=0;j<book->dim;j++){
-+ for (j=0;i<m && j<book->dim;j++){
- a[chptr++][i]+=t[j];
- if(chptr==ch){
- chptr=0;
---
-2.16.2
-
diff --git a/meta/recipes-multimedia/libvorbis/libvorbis_1.3.5.bb b/meta/recipes-multimedia/libvorbis/libvorbis_1.3.6.bb
index 20f887c2526..cbda6dc2fc0 100644
--- a/meta/recipes-multimedia/libvorbis/libvorbis_1.3.5.bb
+++ b/meta/recipes-multimedia/libvorbis/libvorbis_1.3.6.bb
@@ -6,17 +6,16 @@ HOMEPAGE = "http://www.vorbis.com/"
BUGTRACKER = "https://trac.xiph.org"
SECTION = "libs"
LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=7d2c487d2fc7dd3e3c7c465a5b7f6217 \
+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-2017-14633.patch \
- file://CVE-2017-14632.patch \
- file://CVE-2018-5146.patch \
+ file://CVE-2018-10392.patch \
+ file://CVE-2017-14160.patch \
"
-SRC_URI[md5sum] = "28cb28097c07a735d6af56e598e1c90f"
-SRC_URI[sha256sum] = "54f94a9527ff0a88477be0a71c0bab09a4c3febe0ed878b24824906cd4b0e1d1"
+SRC_URI[md5sum] = "b7d1692f275c73e7833ed1cc2697cd65"
+SRC_URI[sha256sum] = "af00bb5a784e7c9e69f56823de4637c350643deedaf333d0fa86ecdba6fcb415"
inherit autotools pkgconfig
diff --git a/meta/recipes-multimedia/mpg123/mpg123_1.25.10.bb b/meta/recipes-multimedia/mpg123/mpg123_1.25.10.bb
index 929069ab494..ff2b7d893ba 100644
--- a/meta/recipes-multimedia/mpg123/mpg123_1.25.10.bb
+++ b/meta/recipes-multimedia/mpg123/mpg123_1.25.10.bb
@@ -7,7 +7,6 @@ BUGTRACKER = "http://sourceforge.net/p/mpg123/bugs/"
SECTION = "multimedia"
LICENSE = "LGPLv2.1"
-LICENSE_FLAGS = "commercial"
LIC_FILES_CHKSUM = "file://COPYING;md5=1e86753638d3cf2512528b99079bc4f3"
SRC_URI = "https://www.mpg123.de/download/${BP}.tar.bz2"
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio.inc b/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
index 8189a569e1a..f526690390f 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
@@ -16,9 +16,6 @@ SECTION = "libs/multimedia"
# The src/pulsecore/filter/ directory contains code under the 3-clause BSD
# license.
#
-# src/utils/qpaeq is licensed under AGPL. qpaeq is not installed by this
-# recipe, however, which is why AGPL is not mentioned in LICENSE.
-#
# People who distribute PulseAudio binaries need to also consider that there
# are some dependencies to GPL libraries. LGPL code that depends on GPL
# libraries probably becomes effectively GPL-licensed (at compile-time? or at
@@ -47,16 +44,14 @@ SECTION = "libs/multimedia"
# section 3, and therefore libdbus's GPL license doesn't affect PulseAudio.
LICENSE = "LGPLv2.1+ & MIT & BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a848e8d03f04976778eab2348b59ed2b \
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0e5cd938de1a7a53ea5adac38cc10c39 \
file://GPL;md5=4325afd396febcb659c36b49533135d4 \
file://LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
- file://AGPL;md5=73f1eb20517c55bf9493b7dd6e480788 \
file://src/modules/echo-cancel/adrian-license.txt;md5=abbab006a561fbffccedf1c3531f34ab \
file://src/pulsecore/filter/LICENSE.WEBKIT;md5=49defbaffddf8c51faf606ff7fc3b1f7 \
file://src/pulsecore/resampler.h;beginline=4;endline=21;md5=09794012ae16912c0270f3280cc8ff84 \
file://src/modules/reserve.h;beginline=6;endline=28;md5=0e23094760367d51b6609750e9b31fbb \
file://src/pulsecore/rtkit.h;beginline=6;endline=29;md5=3f00ff966716ae0817c31576d1473528 \
- file://src/utils/qpaeq;beginline=2;endline=16;md5=7f62515a4762f0c3fc3d4201858bb964 \
file://src/modules/echo-cancel/adrian-aec.h;beginline=3;endline=12;md5=d3ed4fad1c073f8b06f37495dc5d1026 \
file://src/pulsecore/filter/biquad.h;beginline=1;endline=4;md5=6d46d1365206528a20137355924233c1 \
"
@@ -93,10 +88,6 @@ EXTRA_OECONF += "--without-soxr"
# 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.
-#
-# One nice thing about disabling this is that it also prevents qpaeq from
-# being installed, so we avoid adding AGPL to the list of licenses (nothing
-# else in PulseAudio is licensed under AGPL).
EXTRA_OECONF += "--without-fftw"
# The "adrian" echo canceller implementation has a non-standard license
@@ -106,6 +97,10 @@ EXTRA_OECONF += "--without-fftw"
# very good anyway, better alternatives exist (such as the webrtc canceller).
EXTRA_OECONF += "--disable-adrian-aec"
+# FIXME: The gsettings module is temporarily disabled, because adding support
+# for it is a bit complicated.
+EXTRA_OECONF += "--disable-gsettings"
+
PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', '${BLUEZ}', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', '3g', 'ofono', '', d)} \
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-memfd-wrappers-only-define-memfd_create-if-not-alrea.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-memfd-wrappers-only-define-memfd_create-if-not-alrea.patch
deleted file mode 100644
index 0391f3785b8..00000000000
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-memfd-wrappers-only-define-memfd_create-if-not-alrea.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 0cb66c0c5aafd48b63a755860746e70afb332c8d Mon Sep 17 00:00:00 2001
-From: Tanu Kaskinen <tanuk@iki.fi>
-Date: Wed, 24 Jan 2018 03:51:49 +0200
-Subject: [PATCH] memfd-wrappers: only define memfd_create() if not already
- defined
-
-glibc 2.27 is to be released soon, and it will provide memfd_create().
-If glibc provides the function, we must not define it ourselves,
-otherwise building fails due to conflict between the two implementations
-of the same function.
-
-BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=104733
----
-Upstream-Status: Submitted [https://bugs.freedesktop.org/attachment.cgi?id=136927]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
- configure.ac | 3 +++
- src/pulsecore/memfd-wrappers.h | 7 ++++---
- 2 files changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 77b5ff5..3a71fd8 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -607,6 +607,9 @@ AS_IF([test "x$enable_memfd" = "xyes" && test "x$HAVE_MEMFD" = "x0"],
- [AC_MSG_ERROR([*** Your Linux kernel does not support memfd shared memory.
- *** Use linux v3.17 or higher for such a feature.])])
-
-+AS_IF([test "x$HAVE_MEMFD" = "x1"],
-+ AC_CHECK_FUNCS([memfd_create]))
-+
- AC_SUBST(HAVE_MEMFD)
- AM_CONDITIONAL([HAVE_MEMFD], [test "x$HAVE_MEMFD" = x1])
- AS_IF([test "x$HAVE_MEMFD" = "x1"], AC_DEFINE([HAVE_MEMFD], 1, [Have memfd shared memory.]))
-diff --git a/src/pulsecore/memfd-wrappers.h b/src/pulsecore/memfd-wrappers.h
-index 3bed9b2..c7aadfd 100644
---- a/src/pulsecore/memfd-wrappers.h
-+++ b/src/pulsecore/memfd-wrappers.h
-@@ -20,13 +20,14 @@
- License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
- ***/
-
--#ifdef HAVE_MEMFD
-+#if defined(HAVE_MEMFD) && !defined(HAVE_MEMFD_CREATE)
-
- #include <sys/syscall.h>
- #include <fcntl.h>
-
- /*
-- * No glibc wrappers exist for memfd_create(2), so provide our own.
-+ * Before glibc version 2.27 there was no wrapper for memfd_create(2),
-+ * so we have to provide our own.
- *
- * Also define memfd fcntl sealing macros. While they are already
- * defined in the kernel header file <linux/fcntl.h>, that file as
-@@ -63,6 +64,6 @@ static inline int memfd_create(const char *name, unsigned int flags) {
- #define F_SEAL_WRITE 0x0008 /* prevent writes */
- #endif
-
--#endif /* HAVE_MEMFD */
-+#endif /* HAVE_MEMFD && !HAVE_MEMFD_CREATE */
-
- #endif
---
-2.16.1
-
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-padsp-Make-it-compile-on-musl.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-padsp-Make-it-compile-on-musl.patch
deleted file mode 100644
index 85559950e81..00000000000
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-padsp-Make-it-compile-on-musl.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From f6ab3c3aa7a1841c8add04828029356d2a8c88e7 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 6 Apr 2015 21:56:31 -0700
-Subject: [PATCH] padsp: Make it compile on musl
-
-break assumptions on glibc and there is no stat64 on non
-glibc C libraries
-
-See pulseaudio bug
-
-https://bugs.freedesktop.org/show_bug.cgi?id=85319
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/utils/padsp.c | 15 +++++++++------
- 1 file changed, 9 insertions(+), 6 deletions(-)
-
-diff --git a/src/utils/padsp.c b/src/utils/padsp.c
-index e61373c..684721a 100644
---- a/src/utils/padsp.c
-+++ b/src/utils/padsp.c
-@@ -2368,7 +2368,7 @@ fail:
- return ret;
- }
-
--#ifdef sun
-+#ifndef __GLIBC__
- int ioctl(int fd, int request, ...) {
- #else
- int ioctl(int fd, unsigned long request, ...) {
-@@ -2508,10 +2508,13 @@ int stat(const char *pathname, struct stat *buf) {
-
- return 0;
- }
--
- #ifdef HAVE_OPEN64
--
-+#undef stat64
-+#ifdef __GLIBC__
- int stat64(const char *pathname, struct stat64 *buf) {
-+#else
-+int stat64(const char *pathname, struct stat *buf) {
-+#endif
- struct stat oldbuf;
- int ret;
-
-@@ -2544,7 +2547,7 @@ int stat64(const char *pathname, struct stat64 *buf) {
-
- return 0;
- }
--
-+#undef open64
- int open64(const char *filename, int flags, ...) {
- va_list args;
- mode_t mode = 0;
-@@ -2670,8 +2673,8 @@ FILE* fopen(const char *filename, const char *mode) {
- }
-
- #ifdef HAVE_OPEN64
--
--FILE *fopen64(const char *filename, const char *mode) {
-+#undef fopen64
-+FILE *fopen64(const char *__restrict filename, const char *__restrict mode) {
-
- debug(DEBUG_LEVEL_VERBOSE, __FILE__": fopen64(%s)\n", filename?filename:"NULL");
-
---
-2.1.4
-
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio_11.1.bb b/meta/recipes-multimedia/pulseaudio/pulseaudio_12.2.bb
index 245302d2bc1..36d92bcae95 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio_11.1.bb
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio_12.2.bb
@@ -1,13 +1,11 @@
require pulseaudio.inc
SRC_URI = "http://freedesktop.org/software/pulseaudio/releases/${BP}.tar.xz \
- file://0001-padsp-Make-it-compile-on-musl.patch \
file://0001-client-conf-Add-allow-autospawn-for-root.patch \
file://volatiles.04_pulse \
- file://0001-memfd-wrappers-only-define-memfd_create-if-not-alrea.patch \
"
-SRC_URI[md5sum] = "390de38231d5cdd6b43ada8939eb74f1"
-SRC_URI[sha256sum] = "f2521c525a77166189e3cb9169f75c2ee2b82fa3fcf9476024fbc2c3a6c9cd9e"
+SRC_URI[md5sum] = "c42f1f1465e8df9859d023dc184734bf"
+SRC_URI[sha256sum] = "809668ffc296043779c984f53461c2b3987a45b7a25eb2f0a1d11d9f23ba4055"
do_compile_prepend() {
mkdir -p ${S}/libltdl
diff --git a/meta/recipes-multimedia/webp/libwebp_0.6.1.bb b/meta/recipes-multimedia/webp/libwebp_1.0.0.bb
index e9d4d783041..1a9679f9dc8 100644
--- a/meta/recipes-multimedia/webp/libwebp_0.6.1.bb
+++ b/meta/recipes-multimedia/webp/libwebp_1.0.0.bb
@@ -14,13 +14,12 @@ 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] = "b49ce9c3e3e9acae4d91bca44bb85a72"
-SRC_URI[sha256sum] = "06503c782d9f151baa325591c3579c68ed700ffc62d4f5a32feead0ff017d8ab"
+SRC_URI[md5sum] = "967b8f087cb392e6cc94d5e116a120c0"
+SRC_URI[sha256sum] = "84259c4388f18637af3c5a6361536d754a5394492f91be1abc2e981d4983225b"
UPSTREAM_CHECK_URI = "http://downloads.webmproject.org/releases/webp/index.html"
EXTRA_OECONF = " \
- --disable-experimental \
--disable-wic \
--enable-libwebpmux \
--enable-libwebpdemux \
diff --git a/meta/recipes-rt/rt-tests/rt-tests.inc b/meta/recipes-rt/rt-tests/rt-tests.inc
index 5606d8e3851..f87952e0a8d 100644
--- a/meta/recipes-rt/rt-tests/rt-tests.inc
+++ b/meta/recipes-rt/rt-tests/rt-tests.inc
@@ -3,6 +3,8 @@ SRCREV = "dff174f994f547a5785d32454865f140daacb0f5"
PE = "1"
SRC_URI = "git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git"
+# 1.2 and 1.3 seem to be development versions
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>(?!1\.2)(?!1\.3)(\d+(\.\d+)+))"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-sato/matchbox-sato/matchbox-session-sato/session b/meta/recipes-sato/matchbox-sato/matchbox-session-sato/session
index f6313bdebe8..3a70574af9d 100644
--- a/meta/recipes-sato/matchbox-sato/matchbox-session-sato/session
+++ b/meta/recipes-sato/matchbox-sato/matchbox-session-sato/session
@@ -20,7 +20,10 @@ matchbox-desktop &
# doesn't have the feature "foo".
START_APPLETS=showdesktop,windowselector
-END_APPLETS=clock,battery,$KEYBOARD_APPLET,systray,startup-notify,notify
+END_APPLETS=$KEYBOARD_APPLET,systray,startup-notify,notify
+END_APPLETS=battery,$END_APPLETS # feature-acpi
+END_APPLETS=battery,$END_APPLETS # feature-apm
+END_APPLETS=clock,$END_APPLETS
END_APPLETS=openmoko-panel-gsm,$END_APPLETS # feature-phone
matchbox-panel --start-applets $START_APPLETS --end-applets $END_APPLETS &
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 d146e836d52..8230e95140f 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
@@ -26,7 +26,7 @@ FILES_${PN} += "${datadir}/themes/Sato/index.theme"
do_install() {
# This is the set of machine features that the script has markers for
- FEATURES="phone"
+ FEATURES="acpi apm phone"
SCRIPT="${S}/sedder"
rm -f $SCRIPT
touch $SCRIPT
diff --git a/meta/recipes-sato/matchbox-terminal/matchbox-terminal_0.1.bb b/meta/recipes-sato/matchbox-terminal/matchbox-terminal_0.2.bb
index 4488191b232..7f5eda30434 100644
--- a/meta/recipes-sato/matchbox-terminal/matchbox-terminal_0.1.bb
+++ b/meta/recipes-sato/matchbox-terminal/matchbox-terminal_0.2.bb
@@ -9,8 +9,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
DEPENDS = "gtk+3 vte"
SECTION = "x11/utils"
-#SRCREV tagged 0.1
-SRCREV = "3ad357db2302760b8a8817b5f4478dd87479442f"
+#SRCREV tagged 0.2
+SRCREV = "161276d0f5d1be8187010fd0d9581a6feca70ea5"
SRC_URI = "git://git.yoctoproject.org/${BPN}"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
diff --git a/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb b/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb
index 224428ddda5..2d7feb87888 100644
--- a/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb
+++ b/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb
@@ -32,7 +32,6 @@ RDEPENDS_${PN}-base = "\
adwaita-icon-theme \
settings-daemon \
shutdown-desktop \
- libsdl \
${NETWORK_MANAGER} \
udev-extraconf \
${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio-server pulseaudio-client-conf-sato pulseaudio-misc', '', d)} \
@@ -43,13 +42,16 @@ FILEMANAGER ?= "pcmanfm"
WEB ?= ""
#WEB = "epiphany"
+GSTEXAMPLES ?= "gst-examples"
+GSTEXAMPLES_riscv64 = ""
+
SUMMARY_${PN}-apps = "Sato desktop - applications"
RDEPENDS_${PN}-apps = "\
l3afpad \
- gst-examples \
matchbox-terminal \
sato-screenshot \
${FILEMANAGER} \
+ ${GSTEXAMPLES} \
${WEB} \
"
diff --git a/meta/recipes-sato/pcmanfm/pcmanfm_1.2.5.bb b/meta/recipes-sato/pcmanfm/pcmanfm_1.3.0.bb
index 4127a070460..356da02d235 100644
--- a/meta/recipes-sato/pcmanfm/pcmanfm_1.2.5.bb
+++ b/meta/recipes-sato/pcmanfm/pcmanfm_1.3.0.bb
@@ -16,8 +16,8 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/pcmanfm-${PV}.tar.xz \
file://emblem-symbolic-link.png \
file://no-desktop.patch"
-SRC_URI[md5sum] = "b4d1f8ce08d87e4f27805a246fc51ac2"
-SRC_URI[sha256sum] = "0c86cac028b705ff314c7464d814c2cf7ff604c17491c20aa204b1ef1a80ad67"
+SRC_URI[md5sum] = "827838f7f6b17dc97e1690c07da8fdb3"
+SRC_URI[sha256sum] = "5a693e9bf3f3294f0ee7264c1c1a600a88ee27d1572e7dd5c4b0e84aa7778ffb"
UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/pcmanfm/files/PCManFM%20%2B%20Libfm%20%28tarball%20release%29/PCManFM/"
diff --git a/meta/recipes-sato/puzzles/puzzles_git.bb b/meta/recipes-sato/puzzles/puzzles_git.bb
index bfd817719fe..7d08b964f84 100644
--- a/meta/recipes-sato/puzzles/puzzles_git.bb
+++ b/meta/recipes-sato/puzzles/puzzles_git.bb
@@ -1,22 +1,22 @@
SUMMARY = "Simon Tatham's Portable Puzzle Collection"
HOMEPAGE = "http://www.chiark.greenend.org.uk/~sgtatham/puzzles/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=da6110d4ed1225a287eab2bf0ac0193b"
DEPENDS = "libxt"
# The libxt requires x11 in DISTRO_FEATURES
REQUIRED_DISTRO_FEATURES = "x11"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENCE;md5=da6110d4ed1225a287eab2bf0ac0193b"
-
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 \
"
+
UPSTREAM_CHECK_COMMITS = "1"
-SRCREV = "2adf0052d66eae88c7a5e55e67fe16e13f7018b5"
+SRCREV = "c6e0161dd475415316ed66dc82794d68e52f0025"
PE = "2"
PV = "0.0+git${SRCPV}"
@@ -24,24 +24,13 @@ S = "${WORKDIR}/git"
inherit autotools distro_features_check pkgconfig
-CFLAGS_append = " -Wno-deprecated-declarations"
-
PACKAGECONFIG ??= "gtk3"
PACKAGECONFIG[gtk2] = "--with-gtk=2,,gtk+,"
PACKAGECONFIG[gtk3] = "--with-gtk=3,,gtk+3,"
-PACKAGES += "${PN}-extra"
-FILES_${PN} = ""
-FILES_${PN}-extra = "${prefix}/bin ${datadir}/applications"
+CFLAGS_append = " -Wno-deprecated-declarations"
-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)
-}
+ASNEEDED = ""
do_configure_prepend () {
cd ${S}
@@ -74,3 +63,17 @@ STOP
fi
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/settings-daemon/settings-daemon_0.0.2.bb b/meta/recipes-sato/settings-daemon/settings-daemon_0.0.2.bb
index ceaeccaaa1c..bb6b69b900d 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
@@ -10,7 +10,7 @@ SECTION = "x11"
# SRCREV tagged 0.0.2
SRCREV = "b2e5da502f8c5ff75e9e6da771372ef8e40fd9a2"
SRC_URI = "git://git.yoctoproject.org/xsettings-daemon \
- file://addsoundkeys.patch;apply=yes \
+ file://addsoundkeys.patch \
file://70settings-daemon.sh \
"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-Fix-PaintingData-has-no-member-named-lightVector-on-.patch b/meta/recipes-sato/webkit/webkitgtk/0001-Fix-PaintingData-has-no-member-named-lightVector-on-.patch
new file mode 100644
index 00000000000..25f4846592a
--- /dev/null
+++ b/meta/recipes-sato/webkit/webkitgtk/0001-Fix-PaintingData-has-no-member-named-lightVector-on-.patch
@@ -0,0 +1,37 @@
+From a5d4e038268ae23486fecc1966fd2e16a7f40ce8 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Wed, 25 Jul 2018 00:23:48 -0700
+Subject: [PATCH] Fix PaintingData' has no member named 'lightVector' on
+ ARM_NEON
+
+* platform/graphics/cpu/arm/filters/FELightingNEON.h:
+(WebCore::FELighting::platformApplyNeon):
+
+Upstream-Status: Submitted
+https://bugs.webkit.org/show_bug.cgi?id=187991
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h
+index 42af922..b542a4c 100644
+--- a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h
++++ b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h
+@@ -144,9 +144,9 @@ inline void FELighting::platformApplyNeon(const LightingData& data, const LightS
+ neonData.flags |= FLAG_CONE_EXPONENT_IS_1;
+ } else {
+ ASSERT(m_lightSource->type() == LS_DISTANT);
+- floatArguments.lightX = paintingData.lightVector.x();
+- floatArguments.lightY = paintingData.lightVector.y();
+- floatArguments.lightZ = paintingData.lightVector.z();
++ floatArguments.lightX = paintingData.initialLightingData.lightVector.x();
++ floatArguments.lightY = paintingData.initialLightingData.lightVector.y();
++ floatArguments.lightZ = paintingData.initialLightingData.lightVector.z();
+ floatArguments.padding2 = 1;
+ }
+
+--
+2.10.2
+
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
index 7cc4514fccc..041ec4675f1 100644
--- a/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-musl.patch
+++ b/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-musl.patch
@@ -1,24 +1,25 @@
-From 415e31bd5444fa360af58b069f1b9db6607fca7d Mon Sep 17 00:00:00 2001
+From 4f9d736e0458ed33cd161cd164ad0acdac939f44 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/JavaScriptCore/runtime/MachineContext.h | 18 +++++++++++++++++-
Source/WTF/wtf/Platform.h | 2 +-
- 2 files changed, 6 insertions(+), 6 deletions(-)
+ 2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/Source/JavaScriptCore/runtime/MachineContext.h b/Source/JavaScriptCore/runtime/MachineContext.h
-index 95080b9..2bb689c 100644
+index bf0bdc7..84b8a8a 100644
--- a/Source/JavaScriptCore/runtime/MachineContext.h
+++ b/Source/JavaScriptCore/runtime/MachineContext.h
@@ -146,7 +146,7 @@ inline void*& stackPointer(mcontext_t& machineContext)
#error Unknown Architecture
#endif
--#elif defined(__GLIBC__)
+-#elif defined(__GLIBC__) || defined(__BIONIC__)
+#elif defined(__linux__)
#if CPU(X86)
@@ -27,7 +28,7 @@ index 95080b9..2bb689c 100644
#error Unknown Architecture
#endif
--#elif defined(__GLIBC__)
+-#elif defined(__GLIBC__) || defined(__BIONIC__)
+#elif defined(__linux__)
// The following sequence depends on glibc's sys/ucontext.h.
@@ -36,7 +37,7 @@ index 95080b9..2bb689c 100644
#error Unknown Architecture
#endif
--#elif defined(__GLIBC__)
+-#elif defined(__GLIBC__) || defined(__BIONIC__)
+#elif defined(__linux__)
// The following sequence depends on glibc's sys/ucontext.h.
@@ -45,7 +46,7 @@ index 95080b9..2bb689c 100644
#error Unknown Architecture
#endif
--#elif defined(__GLIBC__)
+-#elif defined(__GLIBC__) || defined(__BIONIC__)
+#elif defined(__linux__)
// The following sequence depends on glibc's sys/ucontext.h.
@@ -54,24 +55,21 @@ index 95080b9..2bb689c 100644
#error Unknown Architecture
#endif
--#elif defined(__GLIBC__)
+-#elif 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 5a2863b..b36c3ff 100644
+index 551c047..e50b05a 100644
--- a/Source/WTF/wtf/Platform.h
+++ b/Source/WTF/wtf/Platform.h
-@@ -680,7 +680,7 @@
+@@ -683,7 +683,7 @@
#define HAVE_CFNETWORK_STORAGE_PARTITIONING 1
#endif
--#if OS(DARWIN) || ((OS(FREEBSD) || defined(__GLIBC__)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS)))
+-#if OS(DARWIN) || ((OS(FREEBSD) || defined(__GLIBC__) || defined(__BIONIC__)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS)))
+#if OS(DARWIN) || ((OS(FREEBSD) || defined(__linux__)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS)))
#define HAVE_MACHINE_CONTEXT 1
#endif
---
-2.14.1
-
diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-Fix-gles3-header-when-gles2-is-enabled.patch b/meta/recipes-sato/webkit/webkitgtk/0001-Fix-gles3-header-when-gles2-is-enabled.patch
deleted file mode 100644
index 21574072f17..00000000000
--- a/meta/recipes-sato/webkit/webkitgtk/0001-Fix-gles3-header-when-gles2-is-enabled.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From adf3d4c9d4133bd6995590d921c0ccaec5254da9 Mon Sep 17 00:00:00 2001
-From: Bhargava Sreekantappa Gayathri
- <bhargava.sreekantappa-gayathri@xilinx.com>
-Date: Tue, 27 Feb 2018 16:09:31 -0800
-Subject: [PATCH] Fix gles3 header when gles2 is enabled
-
-A GLES 2 application should not use gl3.h.
-Fix the gles3 header failure while compiling webkitgtk.
-
-FAILED:
-Source/WebCore/CMakeFiles/WebCore.dir/platform/graphics/GLContext.cpp.o
- ^~~~~~~~~~~~~
-compilation terminated.
-
-Upstream-Status: Backport
-Imported patch from: https://bugs.webkit.org/show_bug.cgi?id=183008
-
-Signed-off-by: Bhargava Sreekantappa Gayathri <bhargava.sreekantappa-gayathri@xilinx.com>
-Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com>
----
- Source/WebCore/platform/graphics/GLContext.cpp | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/Source/WebCore/platform/graphics/GLContext.cpp b/Source/WebCore/platform/graphics/GLContext.cpp
-index 599dcc0..46d2fd4 100644
---- a/Source/WebCore/platform/graphics/GLContext.cpp
-+++ b/Source/WebCore/platform/graphics/GLContext.cpp
-@@ -31,7 +31,6 @@
- #elif USE(OPENGL_ES_2)
- #define GL_GLEXT_PROTOTYPES 1
- #include <GLES2/gl2.h>
--#include <GLES3/gl3.h>
- #endif
-
- #if USE(GLX)
---
-2.7.4
-
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 896890b4334..aa9a06701a7 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,7 +1,7 @@
-From b7f40eceef0f23bf88090789d4c5845c35f048ae Mon Sep 17 00:00:00 2001
+From 0afc194c6446e6c3242f1d706b4564e3a9cb2cee 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 4/9] Fix racy parallel build of WebKit2-4.0.gir
+Subject: [PATCH] Fix racy parallel build of WebKit2-4.0.gir
Upstream-Status: Pending
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
@@ -11,39 +11,36 @@ 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 a33c6a86..d83a2e77 100644
+index a074a80..8c6ebb5 100644
--- a/Source/WebKit/PlatformGTK.cmake
+++ b/Source/WebKit/PlatformGTK.cmake
-@@ -1122,8 +1122,9 @@ endif ()
- string(REGEX MATCHALL "-L[^ ]*"
- INTROSPECTION_ADDITIONAL_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
+@@ -728,8 +728,9 @@ if (ENABLE_INTROSPECTION)
+ string(REGEX MATCHALL "-L[^ ]*"
+ INTROSPECTION_ADDITIONAL_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
--add_custom_command(
-- OUTPUT ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
-+# This is a target and not a command because it's used to build another .gir
-+# and a .typelib, which would trigger two racy parallel builds when using command
-+add_custom_target(WebKit2-${WEBKITGTK_API_VERSION}-gir
- DEPENDS WebKit2
- DEPENDS ${CMAKE_BINARY_DIR}/JavaScriptCore-${WEBKITGTK_API_VERSION}.gir
- COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations\ ${CMAKE_C_FLAGS} LDFLAGS=
-@@ -1168,7 +1169,7 @@ add_custom_command(
- add_custom_command(
- OUTPUT ${CMAKE_BINARY_DIR}/WebKit2WebExtension-${WEBKITGTK_API_VERSION}.gir
- DEPENDS ${CMAKE_BINARY_DIR}/JavaScriptCore-${WEBKITGTK_API_VERSION}.gir
-- DEPENDS ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
-+ DEPENDS WebKit2-${WEBKITGTK_API_VERSION}-gir
- COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations\ ${CMAKE_C_FLAGS}
- LDFLAGS="${INTROSPECTION_ADDITIONAL_LDFLAGS}"
- ${LOADER_LIBRARY_PATH_VAR}="${INTROSPECTION_ADDITIONAL_LIBRARY_PATH}"
-@@ -1225,7 +1226,7 @@ add_custom_command(
+- add_custom_command(
+- OUTPUT ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
++ # This is a target and not a command because it's used to build another .gir
++ # and a .typelib, which would trigger two racy parallel builds when using command
++ add_custom_target(WebKit2-${WEBKITGTK_API_VERSION}-gir
+ 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)
+ add_custom_command(
+ OUTPUT ${CMAKE_BINARY_DIR}/WebKit2WebExtension-${WEBKITGTK_API_VERSION}.gir
+ DEPENDS ${CMAKE_BINARY_DIR}/JavaScriptCore-${WEBKITGTK_API_VERSION}.gir
+- DEPENDS ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
++ DEPENDS WebKit2-${WEBKITGTK_API_VERSION}-gir
+ 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)
- add_custom_command(
- OUTPUT ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.typelib
-- DEPENDS ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
-+ DEPENDS WebKit2-${WEBKITGTK_API_VERSION}-gir
- COMMAND ${INTROSPECTION_COMPILER} --includedir=${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir -o ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.typelib
- )
+ add_custom_command(
+ OUTPUT ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.typelib
+- DEPENDS ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
++ DEPENDS WebKit2-${WEBKITGTK_API_VERSION}-gir
+ COMMAND ${INTROSPECTION_COMPILER} --includedir=${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir -o ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.typelib
+ )
---
-2.14.1
-
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
index 0f6eeed1a2e..e8d1d8c341a 100644
--- 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
@@ -1,4 +1,4 @@
-From 48648570e449cf7f84a26dc03c1e3f620fa69757 Mon Sep 17 00:00:00 2001
+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
@@ -11,16 +11,17 @@ 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(-)
-Index: webkitgtk-2.12.1/Source/cmake/OptionsGTK.cmake
-===================================================================
---- webkitgtk-2.12.1.orig/Source/cmake/OptionsGTK.cmake
-+++ webkitgtk-2.12.1/Source/cmake/OptionsGTK.cmake
-@@ -424,12 +424,6 @@ if (USE_LIBHYPHEN)
- endif ()
+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.
diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-WebKitMacros-Append-to-I-and-not-to-isystem.patch b/meta/recipes-sato/webkit/webkitgtk/0001-WebKitMacros-Append-to-I-and-not-to-isystem.patch
index 9fc1421fdd6..b31026448c3 100644
--- a/meta/recipes-sato/webkit/webkitgtk/0001-WebKitMacros-Append-to-I-and-not-to-isystem.patch
+++ b/meta/recipes-sato/webkit/webkitgtk/0001-WebKitMacros-Append-to-I-and-not-to-isystem.patch
@@ -1,7 +1,7 @@
-From ef832a115b40861c08df333339b1366da49e5393 Mon Sep 17 00:00:00 2001
+From e1c6540f7984bd48e1e2d80d965fa82c70de3c20 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 17 Apr 2016 12:35:41 -0700
-Subject: [PATCH 9/9] WebKitMacros: Append to -I and not to -isystem
+Subject: [PATCH] WebKitMacros: Append to -I and not to -isystem
gcc-6 has now introduced stdlib.h in libstdc++ for better
compliance and its including the C library stdlib.h using
@@ -17,6 +17,7 @@ and ends up with compile errors e.g.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
+
---
Source/JavaScriptCore/shell/CMakeLists.txt | 2 +-
Source/WebCore/PlatformGTK.cmake | 6 +++---
@@ -27,32 +28,32 @@ Upstream-Status: Pending
6 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/Source/JavaScriptCore/shell/CMakeLists.txt b/Source/JavaScriptCore/shell/CMakeLists.txt
-index bc37dd31..4e49871f 100644
+index b3c7e0b..88446de 100644
--- a/Source/JavaScriptCore/shell/CMakeLists.txt
+++ b/Source/JavaScriptCore/shell/CMakeLists.txt
@@ -35,7 +35,7 @@ WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
WEBKIT_WRAP_SOURCELIST(${JSC_SOURCES})
WEBKIT_WRAP_SOURCELIST(${TESTAPI_SOURCES})
- include_directories(./ ${JavaScriptCore_INCLUDE_DIRECTORIES})
+ include_directories(./ ${JavaScriptCore_INCLUDE_DIRECTORIES} ${JavaScriptCore_PRIVATE_INCLUDE_DIRECTORIES})
-include_directories(SYSTEM ${JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES})
+include_directories(${JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES})
add_executable(jsc ${JSC_SOURCES})
target_link_libraries(jsc ${JSC_LIBRARIES})
diff --git a/Source/WebCore/PlatformGTK.cmake b/Source/WebCore/PlatformGTK.cmake
-index 73506c74..8eb8b415 100644
+index f7d8d70a..3c27b8bc 100644
--- a/Source/WebCore/PlatformGTK.cmake
+++ b/Source/WebCore/PlatformGTK.cmake
-@@ -281,7 +281,7 @@ if (ENABLE_PLUGIN_PROCESS_GTK2)
- ${GTK2_INCLUDE_DIRS}
- ${GDK2_INCLUDE_DIRS}
+@@ -157,7 +157,7 @@ if (ENABLE_PLUGIN_PROCESS_GTK2)
+ target_include_directories(WebCorePlatformGTK2 PRIVATE
+ ${WebCore_INCLUDE_DIRECTORIES}
)
- target_include_directories(WebCorePlatformGTK2 SYSTEM PRIVATE
+ target_include_directories(WebCorePlatformGTK2 PRIVATE
${WebCore_SYSTEM_INCLUDE_DIRECTORIES}
- )
- target_link_libraries(WebCorePlatformGTK2
-@@ -305,7 +305,7 @@ add_dependencies(WebCorePlatformGTK WebCore)
+ ${GTK2_INCLUDE_DIRS}
+ ${GDK2_INCLUDE_DIRS}
+@@ -183,7 +183,7 @@ add_dependencies(WebCorePlatformGTK WebCore)
target_include_directories(WebCorePlatformGTK PRIVATE
${WebCore_INCLUDE_DIRECTORIES}
)
@@ -61,7 +62,7 @@ index 73506c74..8eb8b415 100644
${WebCore_SYSTEM_INCLUDE_DIRECTORIES}
${GTK_INCLUDE_DIRS}
${GDK_INCLUDE_DIRS}
-@@ -321,7 +321,7 @@ include_directories(
+@@ -199,7 +199,7 @@ include_directories(
"${WEBCORE_DIR}/bindings/gobject/"
)
@@ -71,33 +72,33 @@ index 73506c74..8eb8b415 100644
)
diff --git a/Source/WebKit/PlatformGTK.cmake b/Source/WebKit/PlatformGTK.cmake
-index d83a2e77..401246f4 100644
+index 8c6ebb5..772c243 100644
--- a/Source/WebKit/PlatformGTK.cmake
+++ b/Source/WebKit/PlatformGTK.cmake
-@@ -1050,7 +1050,7 @@ if (ENABLE_PLUGIN_PROCESS_GTK2)
+@@ -655,7 +655,7 @@ if (ENABLE_PLUGIN_PROCESS_GTK2)
target_include_directories(WebKitPluginProcess2 PRIVATE
- ${WebKit2CommonIncludeDirectories}
+ ${WebKitCommonIncludeDirectories}
)
- target_include_directories(WebKitPluginProcess2 SYSTEM PRIVATE
+ target_include_directories(WebKitPluginProcess2 PRIVATE
- ${WebKit2CommonSystemIncludeDirectories}
+ ${WebKitCommonSystemIncludeDirectories}
${GTK2_INCLUDE_DIRS}
${GDK2_INCLUDE_DIRS}
diff --git a/Source/cmake/WebKitMacros.cmake b/Source/cmake/WebKitMacros.cmake
-index 7bc89543..d9818fa4 100644
+index a1e7e8f..ce24274 100644
--- a/Source/cmake/WebKitMacros.cmake
+++ b/Source/cmake/WebKitMacros.cmake
-@@ -78,7 +78,7 @@ macro(WEBKIT_FRAMEWORK_DECLARE _target)
- endmacro()
-
- macro(WEBKIT_FRAMEWORK _target)
-- include_directories(SYSTEM ${${_target}_SYSTEM_INCLUDE_DIRECTORIES})
-+ include_directories(${${_target}_SYSTEM_INCLUDE_DIRECTORIES})
- target_sources(${_target} PRIVATE
- ${${_target}_HEADERS}
+@@ -134,7 +134,7 @@ macro(WEBKIT_FRAMEWORK _target)
${${_target}_SOURCES}
+ )
+ target_include_directories(${_target} PUBLIC "$<BUILD_INTERFACE:${${_target}_INCLUDE_DIRECTORIES}>")
+- target_include_directories(${_target} SYSTEM PRIVATE "$<BUILD_INTERFACE:${${_target}_SYSTEM_INCLUDE_DIRECTORIES}>")
++ target_include_directories(${_target} PRIVATE "$<BUILD_INTERFACE:${${_target}_SYSTEM_INCLUDE_DIRECTORIES}>")
+ target_include_directories(${_target} PRIVATE "$<BUILD_INTERFACE:${${_target}_PRIVATE_INCLUDE_DIRECTORIES}>")
+ target_link_libraries(${_target} ${${_target}_LIBRARIES})
+ set_target_properties(${_target} PROPERTIES COMPILE_DEFINITIONS "BUILDING_${_target}")
diff --git a/Tools/MiniBrowser/gtk/CMakeLists.txt b/Tools/MiniBrowser/gtk/CMakeLists.txt
-index e832a86d..ce92c864 100644
+index dc2b61e..0128dca 100644
--- a/Tools/MiniBrowser/gtk/CMakeLists.txt
+++ b/Tools/MiniBrowser/gtk/CMakeLists.txt
@@ -57,7 +57,7 @@ endif ()
@@ -110,11 +111,11 @@ index e832a86d..ce92c864 100644
target_link_libraries(MiniBrowser ${MiniBrowser_LIBRARIES})
diff --git a/Tools/TestWebKitAPI/PlatformGTK.cmake b/Tools/TestWebKitAPI/PlatformGTK.cmake
-index 1be3dd52..7bdddf37 100644
+index 4aef695..a14b163 100644
--- a/Tools/TestWebKitAPI/PlatformGTK.cmake
+++ b/Tools/TestWebKitAPI/PlatformGTK.cmake
@@ -20,7 +20,7 @@ include_directories(
- ${WEBKIT2_DIR}/UIProcess/API/gtk
+ ${WEBKIT_DIR}/UIProcess/API/gtk
)
-include_directories(SYSTEM
@@ -122,6 +123,3 @@ index 1be3dd52..7bdddf37 100644
${GDK3_INCLUDE_DIRS}
${GLIB_INCLUDE_DIRS}
${GTK3_INCLUDE_DIRS}
---
-2.14.1
-
diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch b/meta/recipes-sato/webkit/webkitgtk/0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch
index fb4c4dc9325..923d00c4bae 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
@@ -1,8 +1,8 @@
-From 98b1359a0cd87bbdb22cef98ba594440f4c57d92 Mon Sep 17 00:00:00 2001
+From f9767a479111f9c6f280c43176c33de50aee7f66 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Wed, 28 Oct 2015 14:18:57 +0200
-Subject: [PATCH 2/9] When building introspection files, add CMAKE_C_FLAGS to
- the compiler flags.
+Subject: [PATCH] When building introspection files, add CMAKE_C_FLAGS to the
+ compiler flags.
g-ir-compiler is using a C compiler internally, so it needs to set
the proper flags for it.
@@ -15,27 +15,24 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Source/WebKit/PlatformGTK.cmake b/Source/WebKit/PlatformGTK.cmake
-index 7f92ae72..a33c6a86 100644
+index dc6b306..a074a80 100644
--- a/Source/WebKit/PlatformGTK.cmake
+++ b/Source/WebKit/PlatformGTK.cmake
-@@ -1126,7 +1126,7 @@ add_custom_command(
- OUTPUT ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
- DEPENDS WebKit2
- DEPENDS ${CMAKE_BINARY_DIR}/JavaScriptCore-${WEBKITGTK_API_VERSION}.gir
-- COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations LDFLAGS=
-+ COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations\ ${CMAKE_C_FLAGS} LDFLAGS=
- ${LOADER_LIBRARY_PATH_VAR}="${INTROSPECTION_ADDITIONAL_LIBRARY_PATH}"
- ${INTROSPECTION_SCANNER}
- --quiet
-@@ -1169,7 +1169,7 @@ add_custom_command(
- OUTPUT ${CMAKE_BINARY_DIR}/WebKit2WebExtension-${WEBKITGTK_API_VERSION}.gir
- DEPENDS ${CMAKE_BINARY_DIR}/JavaScriptCore-${WEBKITGTK_API_VERSION}.gir
- DEPENDS ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
-- COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations
-+ COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations\ ${CMAKE_C_FLAGS}
- LDFLAGS="${INTROSPECTION_ADDITIONAL_LDFLAGS}"
- ${LOADER_LIBRARY_PATH_VAR}="${INTROSPECTION_ADDITIONAL_LIBRARY_PATH}"
- ${INTROSPECTION_SCANNER}
---
-2.14.1
-
+@@ -732,7 +732,7 @@ if (ENABLE_INTROSPECTION)
+ OUTPUT ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
+ DEPENDS WebKit
+ DEPENDS ${CMAKE_BINARY_DIR}/JavaScriptCore-${WEBKITGTK_API_VERSION}.gir
+- COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations LDFLAGS=
++ COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations\ ${CMAKE_C_FLAGS} LDFLAGS=
+ ${LOADER_LIBRARY_PATH_VAR}="${INTROSPECTION_ADDITIONAL_LIBRARY_PATH}"
+ ${INTROSPECTION_SCANNER}
+ --quiet
+@@ -774,7 +774,7 @@ if (ENABLE_INTROSPECTION)
+ OUTPUT ${CMAKE_BINARY_DIR}/WebKit2WebExtension-${WEBKITGTK_API_VERSION}.gir
+ DEPENDS ${CMAKE_BINARY_DIR}/JavaScriptCore-${WEBKITGTK_API_VERSION}.gir
+ DEPENDS ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
+- COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations
++ COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations\ ${CMAKE_C_FLAGS}
+ LDFLAGS="${INTROSPECTION_ADDITIONAL_LDFLAGS}"
+ ${LOADER_LIBRARY_PATH_VAR}="${INTROSPECTION_ADDITIONAL_LIBRARY_PATH}"
+ ${INTROSPECTION_SCANNER}
diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-webkitgtk-fix-CVE-2017-17821.patch b/meta/recipes-sato/webkit/webkitgtk/0001-webkitgtk-fix-CVE-2017-17821.patch
new file mode 100644
index 00000000000..a3f75992767
--- /dev/null
+++ b/meta/recipes-sato/webkit/webkitgtk/0001-webkitgtk-fix-CVE-2017-17821.patch
@@ -0,0 +1,44 @@
+Backport patch to fix CVE-2017-17821. Refer to
+https://security-tracker.debian.org/tracker/CVE-2017-17821.
+
+Upstream-Status: Backport [https://trac.webkit.org/changeset/232119/webkit]
+CVE: CVE-2017-17821
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+From 2a17b15297eb886b0bfb7d098ef607cfad6c3da0 Mon Sep 17 00:00:00 2001
+From: "mcatanzaro@igalia.com"
+ <mcatanzaro@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
+Date: Wed, 23 May 2018 17:54:01 +0000
+Subject: [PATCH] Prohibit shrinking the FastBitVector
+ https://bugs.webkit.org/show_bug.cgi?id=181020
+
+Reviewed by Oliver Hunt.
+
+Prohibit shrinking the FastBitVector. It's not prepared for this and the current usage does
+not require it.
+
+* wtf/FastBitVector.cpp:
+(WTF::FastBitVectorWordOwner::resizeSlow):
+
+git-svn-id: http://svn.webkit.org/repository/webkit/trunk@232119 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+---
+ Source/WTF/wtf/FastBitVector.cpp | 2 ++
+ 2 files changed, 15 insertions(+)
+
+diff --git a/Source/WTF/wtf/FastBitVector.cpp b/Source/WTF/wtf/FastBitVector.cpp
+index eed316975f4..8b019aaa3ed 100644
+--- a/Source/WTF/wtf/FastBitVector.cpp
++++ b/Source/WTF/wtf/FastBitVector.cpp
+@@ -42,6 +42,8 @@ void FastBitVectorWordOwner::setEqualsSlow(const FastBitVectorWordOwner& other)
+ void FastBitVectorWordOwner::resizeSlow(size_t numBits)
+ {
+ size_t newLength = fastBitVectorArrayLength(numBits);
++
++ RELEASE_ASSERT(newLength >= arrayLength());
+
+ // Use fastCalloc instead of fastRealloc because we expect the common
+ // use case for this method to be initializing the size of the bitvector.
+--
+2.17.0
+
diff --git a/meta/recipes-sato/webkit/webkitgtk/0012-soup-Forward-declare-URL-class.patch b/meta/recipes-sato/webkit/webkitgtk/0012-soup-Forward-declare-URL-class.patch
new file mode 100644
index 00000000000..78fd4dc79bb
--- /dev/null
+++ b/meta/recipes-sato/webkit/webkitgtk/0012-soup-Forward-declare-URL-class.patch
@@ -0,0 +1,31 @@
+From 59f6903ad96f3213f248b672d5fd526cc0d666ce Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 20 May 2018 14:28:27 -0700
+Subject: [PATCH] soup: Forward declare URL class
+
+This helps getting away with compiler errors seen with clang
+
+/mnt/a/oe/workspace/sources/webkitgtk/Source/WebCore/platform/network/soup/SoupNetworkSession.h:68:62:
+error: unknown type name 'URL'
+ static std::optional<ResourceError> checkTLSErrors(const URL&,
+GTlsCertificate*, GTlsCertificateFlags);
+ ^
+Upstream-Status: Backport [https://trac.webkit.org/changeset/231876/webkit]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Source/WebCore/platform/network/soup/SoupNetworkSession.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Source/WebCore/platform/network/soup/SoupNetworkSession.h b/Source/WebCore/platform/network/soup/SoupNetworkSession.h
+index 03bd72ba..7ca8792d 100644
+--- a/Source/WebCore/platform/network/soup/SoupNetworkSession.h
++++ b/Source/WebCore/platform/network/soup/SoupNetworkSession.h
+@@ -43,6 +43,7 @@ namespace WebCore {
+
+ class CertificateInfo;
+ class ResourceError;
++class URL;
+ struct SoupNetworkProxySettings;
+
+ class SoupNetworkSession {
diff --git a/meta/recipes-sato/webkit/webkitgtk/detect-atomics-during-configure.patch b/meta/recipes-sato/webkit/webkitgtk/detect-atomics-during-configure.patch
deleted file mode 100644
index c6157e10378..00000000000
--- a/meta/recipes-sato/webkit/webkitgtk/detect-atomics-during-configure.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 0b3811771ae6385503f2d949f9433d8f810d2ff9 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 17 May 2017 22:34:24 -0700
-Subject: [PATCH 8/9] webkitgtk: Fix build for armv5
-
-Taken from
-https://bugs.webkit.org/show_bug.cgi?id=161900
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- Source/WTF/wtf/CMakeLists.txt | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/Source/WTF/wtf/CMakeLists.txt b/Source/WTF/wtf/CMakeLists.txt
-index 6b5e45b9..46ee3c22 100644
---- a/Source/WTF/wtf/CMakeLists.txt
-+++ b/Source/WTF/wtf/CMakeLists.txt
-@@ -205,7 +205,6 @@ set(WTF_HEADERS
-
- set(WTF_SOURCES
- Assertions.cpp
-- Atomics.cpp
- AutomaticThread.cpp
- BitVector.cpp
- CPUTime.cpp
-@@ -336,6 +335,15 @@ if (NOT USE_SYSTEM_MALLOC)
- list(APPEND WTF_LIBRARIES bmalloc)
- endif ()
-
-+file(WRITE ${CMAKE_BINARY_DIR}/test_atomics.cpp
-+ "int main(void)\n"
-+ "{ long long x = 1; return (int) __sync_add_and_fetch_8(&x, 1); }\n")
-+try_compile(ATOMICS_BUILD_SUCCEEDED ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/test_atomics.cpp)
-+if (NOT ATOMICS_BUILD_SUCCEEDED)
-+ list(APPEND WTF_SOURCES Atomics.cpp)
-+endif ()
-+file(REMOVE ${CMAKE_BINARY_DIR}/test_atomics.cpp)
-+
- list(APPEND WTF_SOURCES
- unicode/icu/CollatorICU.cpp
- )
---
-2.14.1
-
diff --git a/meta/recipes-sato/webkit/webkitgtk/detect-gstreamer-gl.patch b/meta/recipes-sato/webkit/webkitgtk/detect-gstreamer-gl.patch
new file mode 100644
index 00000000000..57ae48c1413
--- /dev/null
+++ b/meta/recipes-sato/webkit/webkitgtk/detect-gstreamer-gl.patch
@@ -0,0 +1,20 @@
+From: Alberto Garcia <berto@igalia.com>
+Subject: Disable USE_GSTREAMER_GL is the package is not found
+Forwarded: no
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: webkitgtk/Source/cmake/GStreamerChecks.cmake
+===================================================================
+--- webkitgtk.orig/Source/cmake/GStreamerChecks.cmake
++++ webkitgtk/Source/cmake/GStreamerChecks.cmake
+@@ -43,7 +43,8 @@ if (ENABLE_VIDEO OR ENABLE_WEB_AUDIO)
+ message(FATAL_ERROR "GStreamer 1.10 is needed for USE_GSTREAMER_GL.")
+ else ()
+ if (NOT PC_GSTREAMER_GL_FOUND)
+- message(FATAL_ERROR "GStreamerGL is needed for USE_GSTREAMER_GL.")
++ set(USE_GSTREAMER_GL OFF)
++ message(STATUS "GStreamerGL is needed for USE_GSTREAMER_GL.")
+ endif ()
+ endif ()
+ endif ()
diff --git a/meta/recipes-sato/webkit/webkitgtk/fix-configure-failure-aarch64.patch b/meta/recipes-sato/webkit/webkitgtk/fix-configure-failure-aarch64.patch
deleted file mode 100644
index 4a6ab544b2a..00000000000
--- a/meta/recipes-sato/webkit/webkitgtk/fix-configure-failure-aarch64.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Fix configure failure for aarch64
-
-| -- Performing Test CXX_COMPILER_SUPPORTS_-fcolor-diagnostics - Failed
-| -- Performing Test CXX_COMPILER_SUPPORTS_-fdiagnostics-color=always
-| -- Performing Test CXX_COMPILER_SUPPORTS_-fdiagnostics-color=always - Success
-| CMake Error at Source/cmake/OptionsCommon.cmake:42 (WEBKIT_PREPEND_GLOBAL_COMPILER_FLAG):
-| Unknown CMake command "WEBKIT_PREPEND_GLOBAL_COMPILER_FLAG".
-| Call Stack (most recent call first):
-| Source/cmake/WebKitCommon.cmake:58 (include)
-| CMakeLists.txt:166 (include)
-|
-
-Upstream-Status: Pending
-
-Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com>
-
-Index: webkitgtk-2.14.6/Source/cmake/OptionsCommon.cmake
-===================================================================
---- webkitgtk-2.14.6.orig/Source/cmake/OptionsCommon.cmake 2018-02-15 18:56:29.315238564 -0800
-+++ webkitgtk-2.14.6/Source/cmake/OptionsCommon.cmake 2018-02-15 18:54:57.469518064 -0800
-@@ -39,7 +39,7 @@
- if (NOT WTF_CPU_ARM64)
- message(FATAL_ERROR "WTF_CPU_ARM64_CORTEXA53 set without WTF_CPU_ARM64")
- endif ()
-- WEBKIT_PREPEND_GLOBAL_COMPILER_FLAG(-mfix-cortex-a53-835769)
-+ WEBKIT_PREPEND_GLOBAL_COMPILER_FLAGS(-mfix-cortex-a53-835769)
- endif ()
-
- EXPOSE_VARIABLE_TO_BUILD(WTF_CPU_ARM64_CORTEXA53)
diff --git a/meta/recipes-sato/webkit/webkitgtk/x32_support.patch b/meta/recipes-sato/webkit/webkitgtk/x32_support.patch
index 5f23837585b..85d281e7f48 100644
--- a/meta/recipes-sato/webkit/webkitgtk/x32_support.patch
+++ b/meta/recipes-sato/webkit/webkitgtk/x32_support.patch
@@ -1,13 +1,22 @@
-From: Daniel Schepler <dschepler@gmail.com>
-Subject: Fix FTBFS in x32
-Bug-Debian: https://bugs.debian.org/700795
-Upstream-Status: Pending
Signed-off-by: Christopher Larson <chris_larson@mentor.com>
-Index: webkitgtk-2.16.1/Source/WTF/wtf/Platform.h
+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
+
===================================================================
---- webkitgtk-2.16.1.orig/Source/WTF/wtf/Platform.h
-+++ webkitgtk-2.16.1/Source/WTF/wtf/Platform.h
-@@ -172,7 +172,11 @@
+
+---
+ 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)
@@ -17,5 +26,5 @@ Index: webkitgtk-2.16.1/Source/WTF/wtf/Platform.h
#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.18.6.bb b/meta/recipes-sato/webkit/webkitgtk_2.20.5.bb
index c29fa7f4c5c..c8d4f94f19f 100644
--- a/meta/recipes-sato/webkit/webkitgtk_2.18.6.bb
+++ b/meta/recipes-sato/webkit/webkitgtk_2.20.5.bb
@@ -17,15 +17,16 @@ SRC_URI = "http://www.webkitgtk.org/releases/${BPN}-${PV}.tar.xz \
file://0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch \
file://x32_support.patch \
file://cross-compile.patch \
- file://detect-atomics-during-configure.patch \
file://0001-WebKitMacros-Append-to-I-and-not-to-isystem.patch \
file://0001-Fix-build-with-musl.patch \
- file://fix-configure-failure-aarch64.patch \
- file://0001-Fix-gles3-header-when-gles2-is-enabled.patch \
+ file://detect-gstreamer-gl.patch \
+ file://0012-soup-Forward-declare-URL-class.patch \
+ file://0001-Fix-PaintingData-has-no-member-named-lightVector-on-.patch \
+ file://0001-webkitgtk-fix-CVE-2017-17821.patch \
"
-SRC_URI[md5sum] = "c1a548595135ee75ad3bf2e18ac83112"
-SRC_URI[sha256sum] = "93912cc2f40f12e452be1ca4babdbdaac0ec4f828d441257a6b06c2963bbac3c"
+SRC_URI[md5sum] = "72a05f6a4dc1c78b079590a8fd280401"
+SRC_URI[sha256sum] = "15c0f8d26e9605afe0948d161ba5fd82efee8eda2debd409fd40a440ac3af990"
inherit cmake pkgconfig gobject-introspection perlnative distro_features_check upstream-version-is-even gtk-doc
@@ -56,6 +57,8 @@ 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"
EXTRA_OECMAKE = " \
-DPORT=GTK \
@@ -84,7 +87,6 @@ EXTRA_OECMAKE_append_armv4 = " -DENABLE_JIT=OFF "
EXTRA_OECMAKE_append_aarch64 = " -DUSE_LD_GOLD=OFF "
EXTRA_OECMAKE_append_mipsarch = " -DUSE_LD_GOLD=OFF "
EXTRA_OECMAKE_append_powerpc = " -DUSE_LD_GOLD=OFF "
-EXTRA_OECMAKE_append_toolchain-clang = " -DUSE_LD_GOLD=OFF "
EXTRA_OECMAKE_append_aarch64 = " -DWTF_CPU_ARM64_CORTEXA53=ON"
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
new file mode 100644
index 00000000000..57e74533123
--- /dev/null
+++ b/meta/recipes-support/apr/apr-util/0001-Fix-error-handling-in-gdbm.patch
@@ -0,0 +1,135 @@
+From 6b638fa9afbeb54dfa19378e391465a5284ce1ad Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Wed, 12 Sep 2018 17:16:36 +0800
+Subject: [PATCH] Fix error handling in gdbm
+
+Only check for gdbm_errno if the return value of the called gdbm_*
+function says so. This fixes apr-util with gdbm 1.14, which does not
+seem to always reset gdbm_errno.
+
+Also make the gdbm driver return error codes starting with
+APR_OS_START_USEERR instead of always returning APR_EGENERAL. This is
+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]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ dbm/apr_dbm_gdbm.c | 47 +++++++++++++++++++++++++++++------------------
+ 1 file changed, 29 insertions(+), 18 deletions(-)
+
+diff --git a/dbm/apr_dbm_gdbm.c b/dbm/apr_dbm_gdbm.c
+index 749447a..1c86327 100644
+--- a/dbm/apr_dbm_gdbm.c
++++ b/dbm/apr_dbm_gdbm.c
+@@ -36,13 +36,25 @@
+ static apr_status_t g2s(int gerr)
+ {
+ if (gerr == -1) {
+- /* ### need to fix this */
+- return APR_EGENERAL;
++ if (gdbm_errno == GDBM_NO_ERROR)
++ return APR_SUCCESS;
++ return APR_OS_START_USEERR + gdbm_errno;
+ }
+
+ return APR_SUCCESS;
+ }
+
++static apr_status_t gdat2s(datum d)
++{
++ if (d.dptr == NULL) {
++ if (gdbm_errno == GDBM_NO_ERROR || gdbm_errno == GDBM_ITEM_NOT_FOUND)
++ return APR_SUCCESS;
++ return APR_OS_START_USEERR + gdbm_errno;
++ }
++
++ return APR_SUCCESS;
++}
++
+ static apr_status_t datum_cleanup(void *dptr)
+ {
+ if (dptr)
+@@ -53,22 +65,15 @@ static apr_status_t datum_cleanup(void *dptr)
+
+ static apr_status_t set_error(apr_dbm_t *dbm, apr_status_t dbm_said)
+ {
+- apr_status_t rv = APR_SUCCESS;
+
+- /* ### ignore whatever the DBM said (dbm_said); ask it explicitly */
++ dbm->errcode = dbm_said;
+
+- if ((dbm->errcode = gdbm_errno) == GDBM_NO_ERROR) {
++ if (dbm_said == APR_SUCCESS)
+ dbm->errmsg = NULL;
+- }
+- else {
+- dbm->errmsg = gdbm_strerror(gdbm_errno);
+- rv = APR_EGENERAL; /* ### need something better */
+- }
+-
+- /* captured it. clear it now. */
+- gdbm_errno = GDBM_NO_ERROR;
++ else
++ dbm->errmsg = gdbm_strerror(dbm_said - APR_OS_START_USEERR);
+
+- return rv;
++ return dbm_said;
+ }
+
+ /* --------------------------------------------------------------------------
+@@ -107,7 +112,7 @@ static apr_status_t vt_gdbm_open(apr_dbm_t **pdb, const char *pathname,
+ NULL);
+
+ if (file == NULL)
+- return APR_EGENERAL; /* ### need a better error */
++ return APR_OS_START_USEERR + gdbm_errno; /* ### need a better error */
+
+ /* we have an open database... return it */
+ *pdb = apr_pcalloc(pool, sizeof(**pdb));
+@@ -141,10 +146,12 @@ static apr_status_t vt_gdbm_fetch(apr_dbm_t *dbm, apr_datum_t key,
+ if (pvalue->dptr)
+ apr_pool_cleanup_register(dbm->pool, pvalue->dptr, datum_cleanup,
+ apr_pool_cleanup_null);
++ else
++ pvalue->dsize = 0;
+
+ /* store the error info into DBM, and return a status code. Also, note
+ that *pvalue should have been cleared on error. */
+- return set_error(dbm, APR_SUCCESS);
++ return set_error(dbm, gdat2s(rd));
+ }
+
+ static apr_status_t vt_gdbm_store(apr_dbm_t *dbm, apr_datum_t key,
+@@ -201,9 +208,11 @@ static apr_status_t vt_gdbm_firstkey(apr_dbm_t *dbm, apr_datum_t *pkey)
+ if (pkey->dptr)
+ apr_pool_cleanup_register(dbm->pool, pkey->dptr, datum_cleanup,
+ apr_pool_cleanup_null);
++ else
++ pkey->dsize = 0;
+
+ /* store any error info into DBM, and return a status code. */
+- return set_error(dbm, APR_SUCCESS);
++ return set_error(dbm, gdat2s(rd));
+ }
+
+ static apr_status_t vt_gdbm_nextkey(apr_dbm_t *dbm, apr_datum_t *pkey)
+@@ -221,9 +230,11 @@ static apr_status_t vt_gdbm_nextkey(apr_dbm_t *dbm, apr_datum_t *pkey)
+ if (pkey->dptr)
+ apr_pool_cleanup_register(dbm->pool, pkey->dptr, datum_cleanup,
+ apr_pool_cleanup_null);
++ else
++ pkey->dsize = 0;
+
+ /* store any error info into DBM, and return a status code. */
+- return set_error(dbm, APR_SUCCESS);
++ return set_error(dbm, gdat2s(rd));
+ }
+
+ static void vt_gdbm_freedatum(apr_dbm_t *dbm, apr_datum_t data)
+--
+2.7.4
+
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 88b4300f9d3..12d71cbb68e 100644
--- a/meta/recipes-support/apr/apr-util_1.6.1.bb
+++ b/meta/recipes-support/apr/apr-util_1.6.1.bb
@@ -13,6 +13,7 @@ SRC_URI = "${APACHE_MIRROR}/apr/${BPN}-${PV}.tar.gz \
file://configfix.patch \
file://configure_fixes.patch \
file://run-ptest \
+ file://0001-Fix-error-handling-in-gdbm.patch \
"
SRC_URI[md5sum] = "bd502b9a8670a8012c4d90c31a84955f"
diff --git a/meta/recipes-support/apr/apr/0008-apr-fix-ptest-hang-in-teststr.patch b/meta/recipes-support/apr/apr/0008-apr-fix-ptest-hang-in-teststr.patch
new file mode 100644
index 00000000000..6809fa60b08
--- /dev/null
+++ b/meta/recipes-support/apr/apr/0008-apr-fix-ptest-hang-in-teststr.patch
@@ -0,0 +1,32 @@
+From 036f90748247417dbfa714b1b912ca7dd4053f04 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Mon, 23 Jul 2018 14:12:35 +0800
+Subject: [PATCH] apr: fix ptest hang in teststr
+
+ptest hang in teststr since turns into a non-terminating loop,
+fix by below backported patch.
+
+Upstream-Status: Backport[https://github.com/apache/apr/commit/
+ 2e8fbff4ecf82d0decf6baf774c209948f2f4998?diff=unified]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ test/teststr.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/teststr.c b/test/teststr.c
+index d9a5054..951a830 100644
+--- a/test/teststr.c
++++ b/test/teststr.c
+@@ -307,7 +307,7 @@ static void overflow_strfsize(abts_case *tc, void *data)
+ for (; off < 999999999; off += 999) {
+ apr_strfsize(off, buf);
+ }
+- for (off = 1; off < LONG_MAX && off > 0; off *= 2) {
++ for (off = LONG_MAX; off > 1; off /= 2) {
+ apr_strfsize(off, buf);
+ apr_strfsize(off + 1, buf);
+ apr_strfsize(off - 1, buf);
+--
+2.7.4
+
diff --git a/meta/recipes-support/apr/apr_1.6.3.bb b/meta/recipes-support/apr/apr_1.6.3.bb
index 87b878723b1..e044c4a9a51 100644
--- a/meta/recipes-support/apr/apr_1.6.3.bb
+++ b/meta/recipes-support/apr/apr_1.6.3.bb
@@ -18,6 +18,7 @@ SRC_URI = "${APACHE_MIRROR}/apr/${BPN}-${PV}.tar.bz2 \
file://0005-configure.in-fix-LTFLAGS-to-make-it-work-with-ccache.patch \
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://0008-apr-fix-ptest-hang-in-teststr.patch \
"
SRC_URI[md5sum] = "12f2a349483ad6f12db49ba01fbfdbfa"
diff --git a/meta/recipes-support/aspell/aspell_0.60.6.1.bb b/meta/recipes-support/aspell/aspell_0.60.6.1.bb
index 19a7155d66a..161bb5ce20a 100644
--- a/meta/recipes-support/aspell/aspell_0.60.6.1.bb
+++ b/meta/recipes-support/aspell/aspell_0.60.6.1.bb
@@ -25,7 +25,10 @@ FILES_${PN} = "${bindir}/aspell"
FILES_libpspell = "${libdir}/libpspell.so.*"
FILES_${PN}-dev += "${bindir}/pspell-config"
-ARM_INSTRUCTION_SET = "arm"
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
+ARM_INSTRUCTION_SET_armv6 = "arm"
+
inherit autotools-brokensep gettext texinfo binconfig-disabled
BINCONFIG = "${bindir}/pspell-config"
diff --git a/meta/recipes-support/atk/at-spi2-atk_2.26.1.bb b/meta/recipes-support/atk/at-spi2-atk_2.26.2.bb
index 8617bb8714e..16d8e45ee44 100644
--- a/meta/recipes-support/atk/at-spi2-atk_2.26.1.bb
+++ b/meta/recipes-support/atk/at-spi2-atk_2.26.2.bb
@@ -3,15 +3,13 @@ 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[archive.md5sum] = "355c7916a69513490cb83ad34016b169"
+SRC_URI[archive.sha256sum] = "61891f0abae1689f6617a963105a3f1dcdab5970c4a36ded9c79a7a544b16a6e"
-SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz"
-SRC_URI[md5sum] = "eeec6cead3350dca48a235271c105b3e"
-SRC_URI[sha256sum] = "b4f0c27b61dbffba7a5b5ba2ff88c8cee10ff8dac774fa5b79ce906853623b75"
+DEPENDS = "dbus glib-2.0 glib-2.0-native atk at-spi2-core libxml2"
-DEPENDS = "dbus glib-2.0 glib-2.0-native atk at-spi2-core"
-
-inherit autotools pkgconfig distro_features_check upstream-version-is-even
+GNOMEBASEBUILDCLASS = "meson"
+inherit gnomebase distro_features_check upstream-version-is-even
# The at-spi2-core requires x11 in DISTRO_FEATURES
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/meta/recipes-support/atk/at-spi2-core/0001-build-Add-with-systemduserunitdir.patch b/meta/recipes-support/atk/at-spi2-core/0001-build-Add-with-systemduserunitdir.patch
deleted file mode 100644
index 1f8c9f374fe..00000000000
--- a/meta/recipes-support/atk/at-spi2-core/0001-build-Add-with-systemduserunitdir.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From fa376762b92404b9e3c430054b8c3341ca0fdd8b Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Tue, 21 Jun 2016 16:00:02 +0300
-Subject: [PATCH] build: Add --with-systemduserunitdir
-
-Default to "pkg-config --variable=systemduserunitdir systemd" but
-allow overriding the value.
-
-Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=767911]
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-
----
- bus/Makefile.am | 2 +-
- configure.ac | 9 +++++++++
- 2 files changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/bus/Makefile.am b/bus/Makefile.am
-index 688f82a..10cde62 100644
---- a/bus/Makefile.am
-+++ b/bus/Makefile.am
-@@ -29,7 +29,7 @@ org.a11y.Bus.service: org.a11y.Bus.service.in
- EXTRA_DIST += org.a11y.Bus.service.in
- CLEANFILES += org.a11y.Bus.service
-
--systemd_userdir = $(prefix)/lib/systemd/user
-+systemd_userdir = $(systemduserunitdir)
- systemd_user_DATA = at-spi-dbus-bus.service
- at-spi-dbus-bus.service: at-spi-dbus-bus.service.in Makefile
- $(AM_V_GEN) $(SED) -e $(substitutions) $< > $@.tmp && mv $@.tmp $@
-diff --git a/configure.ac b/configure.ac
-index 8c4fca2..1415cca 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -146,6 +146,15 @@ else
- fi
- AC_SUBST(DBUS_SERVICES_DIR)
-
-+AC_ARG_WITH([systemduserunitdir],
-+ AS_HELP_STRING([--with-systemduserunitdir=DIR],
-+ [Directory for systemd service files]),
-+ [],
-+ [with_systemduserunitdir=$($PKG_CONFIG --variable=systemduserunitdir systemd)])
-+AC_SUBST([systemduserunitdir], [$with_systemduserunitdir])
-+
-+AC_PATH_PROG(GLIB_MKENUMS, glib-mkenums)
-+
- GOBJECT_INTROSPECTION_CHECK([1.32.0])
-
- AC_SUBST(LIBTOOL_EXPORT_OPTIONS)
---
-2.14.1
-
diff --git a/meta/recipes-support/atk/at-spi2-core_2.26.2.bb b/meta/recipes-support/atk/at-spi2-core_2.26.2.bb
deleted file mode 100644
index 521ee3b96e6..00000000000
--- a/meta/recipes-support/atk/at-spi2-core_2.26.2.bb
+++ /dev/null
@@ -1,29 +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 \
- file://0001-build-Add-with-systemduserunitdir.patch \
- "
-
-SRC_URI[md5sum] = "4a042e4c801fdb793788b749eab21485"
-SRC_URI[sha256sum] = "c80e0cdf5e3d713400315b63c7deffa561032a6c37289211d8afcfaa267c2615"
-
-DEPENDS = "dbus glib-2.0 virtual/libx11 libxi libxtst"
-
-inherit autotools gtk-doc gettext systemd pkgconfig distro_features_check upstream-version-is-even gobject-introspection
-# depends on virtual/libx11
-REQUIRED_DISTRO_FEATURES = "x11"
-
-EXTRA_OECONF = " \
- --with-systemduserunitdir=${systemd_user_unitdir} \
- --with-dbus-daemondir=${bindir}"
-
-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 \
- "
diff --git a/meta/recipes-support/atk/at-spi2-core_2.28.0.bb b/meta/recipes-support/atk/at-spi2-core_2.28.0.bb
new file mode 100644
index 00000000000..7975f58bad7
--- /dev/null
+++ b/meta/recipes-support/atk/at-spi2-core_2.28.0.bb
@@ -0,0 +1,39 @@
+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] = "9c42f79636ed1c0e908b7483d789b32e"
+SRC_URI[sha256sum] = "42a2487ab11ce43c288e73b2668ef8b1ab40a0e2b4f94e80fca04ad27b6f1c87"
+
+DEPENDS = "dbus glib-2.0 virtual/libx11 libxi libxtst"
+
+inherit meson gtk-doc gettext systemd pkgconfig distro_features_check upstream-version-is-even gobject-introspection
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+EXTRA_OEMESON = " -Dsystemd_user_dir=${systemd_user_unitdir} \
+ -Ddbus_daemon=${bindir}"
+
+GTKDOC_ENABLE_FLAG = "-Denable_docs=true"
+GTKDOC_DISABLE_FLAG = "-Denable_docs=false"
+
+GI_ENABLE_FLAG = "-Denable-introspection=yes"
+GI_DISABLE_FLAG = "-Denable-introspection=no"
+
+EXTRA_OEMESON_append_class-target = " ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '${GI_ENABLE_FLAG}', \
+ '${GI_DISABLE_FLAG}', d)} "
+
+EXTRA_OEMESON_append_class-target = " ${@bb.utils.contains('GTKDOC_ENABLED', 'True', '${GTKDOC_ENABLE_FLAG}', \
+ '${GTKDOC_DISABLE_FLAG}', d)} "
+
+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 \
+ "
diff --git a/meta/recipes-support/atk/atk/0001-Switch-from-filename-to-basename.patch b/meta/recipes-support/atk/atk/0001-Switch-from-filename-to-basename.patch
new file mode 100644
index 00000000000..047e81fb613
--- /dev/null
+++ b/meta/recipes-support/atk/atk/0001-Switch-from-filename-to-basename.patch
@@ -0,0 +1,38 @@
+Upstream-Status: Submitted
+
+From 0330251715fee908f2f162565d4fa1df5030d0c0 Mon Sep 17 00:00:00 2001
+From: Jeremy Puhlman <jpuhlman@mvista.com>
+Date: Thu, 14 Jun 2018 17:21:49 +0000
+Subject: [PATCH] Switch from filename to basename
+
+When atk-enum-types.h is installed in to a system, the user likely has
+no access to the location where the headers were built, especially if
+the software was built in a sysroot environment. If the headers were
+built for a mulitlib environment, the build pathing may be different.
+Subsequently, if two mulitlib variants of atk are installed together the
+headers conflict for no other reason then they were built in two
+different locations. Switching from filename to basename, still should
+provide sufficient information on the providence of the enums, while not
+conflicting for really no good reason.
+
+Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com>
+---
+ atk/atk-enum-types.h.template | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/atk/atk-enum-types.h.template b/atk/atk-enum-types.h.template
+index 7b4cec4..8321c24 100644
+--- a/atk/atk-enum-types.h.template
++++ b/atk/atk-enum-types.h.template
+@@ -14,7 +14,7 @@ G_BEGIN_DECLS
+
+ /*** BEGIN file-production ***/
+
+-/* enumerations from "@filename@" */
++/* enumerations from "@basename@" */
+ /*** END file-production ***/
+
+ /*** BEGIN value-header ***/
+--
+2.14.1.459.g238e487
+
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
new file mode 100644
index 00000000000..c604a984a42
--- /dev/null
+++ b/meta/recipes-support/atk/atk/0001-meson.build-enable-introspection-for-cross-compile.patch
@@ -0,0 +1,28 @@
+From 3838757d29590cc1ef99c97f7268377322fc17e9 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 7b5a683..855e28f 100644
+--- a/atk/meson.build
++++ b/atk/meson.build
+@@ -139,7 +139,7 @@ libatk_dep = declare_dependency(link_with: libatk,
+
+ disable_introspection = get_option('disable_introspection')
+
+-if not meson.is_cross_build() and not disable_introspection
++if not disable_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.26.1.bb b/meta/recipes-support/atk/atk_2.26.1.bb
deleted file mode 100644
index 685b5991d6a..00000000000
--- a/meta/recipes-support/atk/atk_2.26.1.bb
+++ /dev/null
@@ -1,19 +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"
-
-DEPENDS = "glib-2.0"
-
-inherit gnomebase gtk-doc gettext upstream-version-is-even gobject-introspection
-
-SRC_URI[archive.md5sum] = "7cddcc313b9a3efd19b2ddf079ba68f5"
-SRC_URI[archive.sha256sum] = "ef00ff6b83851dddc8db38b4d9faeffb99572ba150b0664ee02e46f015ea97cb"
-
-BBCLASSEXTEND = "native"
-
diff --git a/meta/recipes-support/atk/atk_2.28.1.bb b/meta/recipes-support/atk/atk_2.28.1.bb
new file mode 100644
index 00000000000..26b13b69d72
--- /dev/null
+++ b/meta/recipes-support/atk/atk_2.28.1.bb
@@ -0,0 +1,37 @@
+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
+
+GTKDOC_ENABLE_FLAG = "-Denable_docs=true"
+GTKDOC_DISABLE_FLAG = "-Denable_docs=false"
+
+GI_ENABLE_FLAG = "-Ddisable_introspection=false"
+GI_DISABLE_FLAG = "-Ddisable_introspection=true"
+
+EXTRA_OEMESON_append_class-target = " ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '${GI_ENABLE_FLAG}', \
+ '${GI_DISABLE_FLAG}', d)} "
+
+EXTRA_OEMESON_append_class-target = " ${@bb.utils.contains('GTKDOC_ENABLED', 'True', '${GTKDOC_ENABLE_FLAG}', \
+ '${GTKDOC_DISABLE_FLAG}', d)} "
+
+SRC_URI_append = " \
+ file://0001-meson.build-enable-introspection-for-cross-compile.patch \
+ file://0001-Switch-from-filename-to-basename.patch \
+ "
+SRC_URI[archive.md5sum] = "dfb5e7474220afa3f4ca7e45af9f3a11"
+SRC_URI[archive.sha256sum] = "cd3a1ea6ecc268a2497f0cd018e970860de24a6d42086919d6bf6c8e8d53f4fc"
+
+BBCLASSEXTEND = "native"
+
diff --git a/meta/recipes-support/attr/attr.inc b/meta/recipes-support/attr/attr.inc
index 24ef5adfd3e..9fc0f33ccec 100644
--- a/meta/recipes-support/attr/attr.inc
+++ b/meta/recipes-support/attr/attr.inc
@@ -23,7 +23,11 @@ do_install_append() {
s,^libdir=\'${base_libdir}\'$,libdir=\'${libdir}\',
}
-inherit ptest
+inherit ptest update-alternatives
+
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE_${PN} = "setfattr"
+ALTERNATIVE_TARGET[setfattr] = "${bindir}/setfattr"
do_install_ptest() {
tar -c --exclude=ext test/ | ( cd ${D}${PTEST_PATH} && tar -xf - )
diff --git a/meta/recipes-support/attr/ea-acl.inc b/meta/recipes-support/attr/ea-acl.inc
index 1339eccdbd1..9336ffc9389 100644
--- a/meta/recipes-support/attr/ea-acl.inc
+++ b/meta/recipes-support/attr/ea-acl.inc
@@ -7,6 +7,9 @@ SRC_URI_append = " file://0001-Added-configure-option-to-enable-disable-static-l
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"
diff --git a/meta/recipes-support/bash-completion/bash-completion_2.7.bb b/meta/recipes-support/bash-completion/bash-completion_2.8.bb
index f519b3f3da4..85064343e30 100644
--- a/meta/recipes-support/bash-completion/bash-completion_2.7.bb
+++ b/meta/recipes-support/bash-completion/bash-completion_2.8.bb
@@ -9,8 +9,8 @@ SECTION = "console/utils"
SRC_URI = "https://github.com/scop/bash-completion/releases/download/${PV}/${BPN}-${PV}.tar.xz"
-SRC_URI[md5sum] = "28117492bdc9408438e6041683a423ce"
-SRC_URI[sha256sum] = "41ba892d3f427d4a686de32673f35401bc947a7801f684127120cdb13641441e"
+SRC_URI[md5sum] = "201b6ae62f7d5fb5b1b25e34427db919"
+SRC_URI[sha256sum] = "c01f5570f5698a0dda8dc9cfb2a83744daa1ec54758373a6e349bd903375f54d"
UPSTREAM_CHECK_REGEX = "bash-completion-(?P<pver>(?!2008).+)\.tar"
UPSTREAM_CHECK_URI = "https://github.com/scop/bash-completion/releases"
@@ -25,7 +25,7 @@ do_install_append() {
# Delete files already provided by util-linux
local i
- for i in mount umount rfkill; do
+ for i in mount umount; do
rm ${D}${datadir}/${BPN}/completions/$i
done
}
diff --git a/meta/recipes-support/beecrypt/beecrypt/add-option-dev-dsp.patch b/meta/recipes-support/beecrypt/beecrypt/add-option-dev-dsp.patch
deleted file mode 100644
index b3298ce2db9..00000000000
--- a/meta/recipes-support/beecrypt/beecrypt/add-option-dev-dsp.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-Add config option --with-dev-dsp.
-
-Upstream-Status: Pending
-
-Signed-off-by: Zhang Xiao <xiao.zhang@windriver.com>
----
---- a/configure.ac
-+++ b/configure.ac
-@@ -106,6 +106,16 @@ AC_ARG_WITH(python,[ --with-python[[=AR
- fi
- ])
-
-+AC_ARG_WITH(dev-dsp,[ --with-dev-dsp enables dev/dsp for entropy producing. auto for auto-detecting dev/dep on host. [[default=no]]],[
-+ if test "$withval" = yes; then
-+ AC_DEFINE([HAVE_DEV_DSP], 1)
-+ else
-+ if test "$withval" = auto; then
-+ ac_detect_dev_dsp=yes
-+ fi
-+ fi
-+ ],[ac_detect_dev_dsp=no])
-+
- # Check for expert mode
- if test "$ac_enable_expert_mode" = yes; then
- BEE_EXPERT_MODE
-@@ -464,7 +474,7 @@ linux*)
- ac_cv_have_dev_dsp=no
- fi
- ])
-- if test "$ac_cv_have_dev_dsp" = yes; then
-+ if test "$ac_cv_have_dev_dsp" = yes && test "$ac_detect_dev_dsp" = yes; then
- AC_DEFINE([HAVE_DEV_DSP], 1)
- fi
- ;;
diff --git a/meta/recipes-support/beecrypt/beecrypt/beecrypt-enable-ptest-support.patch b/meta/recipes-support/beecrypt/beecrypt/beecrypt-enable-ptest-support.patch
deleted file mode 100644
index 3e5513fce97..00000000000
--- a/meta/recipes-support/beecrypt/beecrypt/beecrypt-enable-ptest-support.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-beecrypt: enable ptest support
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Add install-ptest rules.
-
-Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
----
- Makefile.am | 3 +++
- tests/Makefile.am | 3 +++
- 2 files changed, 6 insertions(+)
-
-diff --git a/Makefile.am b/Makefile.am
-index b7e7869..5076f59 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -73,3 +73,6 @@ DISTCLEANFILES = mpopt.s blowfishopt.s sha1opt.s
-
- bench:
- (cd tests && $(MAKE) $(AM_MAKEFLAGS) bench)
-+
-+install-ptest:
-+ (cd tests && $(MAKE) $(AM_MAKEFLAGS) check_PROGRAMS)
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 1604e5e..d8db8d8 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -101,3 +101,6 @@ bench: benchme benchrsa benchhf benchbc
- ./benchbc AES 128
- ./benchbc Blowfish 128
- ./benchbc Blowfish 128
-+
-+check_PROGRAMS:
-+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
---
-1.8.1.2
-
diff --git a/meta/recipes-support/beecrypt/beecrypt/disable-icu-check.patch b/meta/recipes-support/beecrypt/beecrypt/disable-icu-check.patch
deleted file mode 100644
index 91b1fa6ef57..00000000000
--- a/meta/recipes-support/beecrypt/beecrypt/disable-icu-check.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-We are unable to run code at configure time in a cross environemnt, but as we
-control the build we can be fairly certain this dependency is met.
-
-Upstream-Status: Inappropriate [embedded specific]
-
-JL 05/07/10
-Index: beecrypt-4.2.1/configure.ac
-===================================================================
---- beecrypt-4.2.1.orig/configure.ac 2010-11-26 17:12:25.000000000 +0800
-+++ beecrypt-4.2.1/configure.ac 2010-11-26 17:12:30.000000000 +0800
-@@ -292,32 +292,6 @@
- # Predefines and checks for C++ API support
- AH_TEMPLATE([CPPGLUE],[Define to 1 if you want to include the C++ code])
-
--if test "$ac_with_cplusplus" = yes; then
-- AC_MSG_CHECKING([for IBM's ICU library version >= 2.8])
-- AC_LANG_PUSH(C)
-- AC_RUN_IFELSE([
-- AC_LANG_PROGRAM([[#include <unicode/uversion.h>]],[[
-- #if U_ICU_VERSION_MAJOR_NUM < 2
-- exit(1);
-- #elif U_ICU_VERSION_MAJOR_NUM == 2
-- # if U_ICU_VERSION_MINOR_NUM < 8
-- exit(1);
-- # else
-- exit(0);
-- # endif
-- #else
-- exit(0);
-- #endif
-- ]])],[
-- AC_MSG_RESULT([yes])
-- ],[
-- AC_MSG_RESULT([no])
-- AC_MSG_WARN([disabling cplusplus])
-- ac_with_cplusplus=no
-- ])
-- AC_LANG_POP(C)
--fi
--
- AM_CONDITIONAL([WITH_CPLUSPLUS],[test "$ac_with_cplusplus" = yes])
-
- if test "$ac_with_cplusplus" = yes ; then
diff --git a/meta/recipes-support/beecrypt/beecrypt/fix-for-gcc-4.7.patch b/meta/recipes-support/beecrypt/beecrypt/fix-for-gcc-4.7.patch
deleted file mode 100644
index 8144e39be03..00000000000
--- a/meta/recipes-support/beecrypt/beecrypt/fix-for-gcc-4.7.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-
-gcc-4.7 seems to be stricter about some things, so follow
-the suggestion from the error/note information.
-
- ../../x86_64-linux-libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../..
- x86_64-linux-libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../.. -I../../include -isyst
- In file included from ../../include/beecrypt/c++/util/Hashtable.h:42:0,
- from ../../include/beecrypt/c++/util/Properties.h:36,
- from Properties.cxx:25:
- ../../include/beecrypt/c++/util/AbstractSet.h: In instantiation of 'bool beecrypt::uti
- Properties.cxx:228:1: required from here
- ../../include/beecrypt/c++/util/AbstractSet.h:59:27: error: 'containsAll' was not decl
- ../../include/beecrypt/c++/util/AbstractSet.h:59:27: note: declarations in dependent b
- ../../include/beecrypt/c++/util/AbstractSet.h:59:27: note: use 'this->containsAll' ins
- ../../include/beecrypt/c++/util/AbstractSet.h: In instantiation of 'bool beecrypt::uti
- Properties.cxx:228:1: required from here
- ../../include/beecrypt/c++/util/AbstractSet.h:59:27: error: 'containsAll' was not decl
- ../../include/beecrypt/c++/util/AbstractSet.h:59:27: note: declarations in dependent b
- ../../include/beecrypt/c++/util/AbstractSet.h:59:27: note: use 'this->containsAll' ins
-
-
-Upstream-Status: Pending
-
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-
-
-Index: beecrypt-4.2.1/include/beecrypt/c++/util/AbstractSet.h
-===================================================================
---- beecrypt-4.2.1.orig/include/beecrypt/c++/util/AbstractSet.h
-+++ beecrypt-4.2.1/include/beecrypt/c++/util/AbstractSet.h
-@@ -56,7 +56,7 @@ namespace beecrypt {
- if (c->size() != size())
- return false;
-
-- return containsAll(*c);
-+ return this->containsAll(*c);
- }
- return false;
- }
diff --git a/meta/recipes-support/beecrypt/beecrypt/fix-security.patch b/meta/recipes-support/beecrypt/beecrypt/fix-security.patch
deleted file mode 100644
index 6cb0c002053..00000000000
--- a/meta/recipes-support/beecrypt/beecrypt/fix-security.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-Fix visibility of various C++ functions, inspired by a similar patch in the Fink
-project:
-http://www.mail-archive.com/fink-commits@lists.sourceforge.net/msg75742.html
-
-JL 05/07/10
-
-Upstream-Status: Pending
-
-Index: beecrypt-4.2.1/include/beecrypt/c++/beeyond/BeeCertificate.h
-===================================================================
---- beecrypt-4.2.1.orig/include/beecrypt/c++/beeyond/BeeCertificate.h 2010-11-26 17:22:57.000000000 +0800
-+++ beecrypt-4.2.1/include/beecrypt/c++/beeyond/BeeCertificate.h 2010-11-26 17:23:01.000000000 +0800
-@@ -147,13 +147,13 @@
- mutable bytearray* enc;
-
- BeeCertificate();
-- BeeCertificate(InputStream& in) throw (IOException);
-
- void encodeTBS(DataOutputStream& out) const throw (IOException);
-
- bytearray* encodeTBS() const throw (CertificateEncodingException);
-
- public:
-+ BeeCertificate(InputStream& in) throw (IOException);
- BeeCertificate(const BeeCertificate&) throw (CloneNotSupportedException);
- virtual ~BeeCertificate();
-
-Index: beecrypt-4.2.1/include/beecrypt/c++/security/Security.h
-===================================================================
---- beecrypt-4.2.1.orig/include/beecrypt/c++/security/Security.h 2010-11-26 17:20:55.000000000 +0800
-+++ beecrypt-4.2.1/include/beecrypt/c++/security/Security.h 2010-11-26 17:21:36.000000000 +0800
-@@ -61,7 +61,6 @@
- friend class SecureRandom;
- friend class Signature;
-
-- private:
- struct spi
- {
- Object* cspi;
-@@ -76,6 +75,7 @@
- static spi* getSpi(const String& algo, const String& type, const Provider&) throw (NoSuchAlgorithmException);
- static spi* getFirstSpi(const String& type);
-
-+ private:
- static const String& getKeyStoreDefault();
-
- static bool _init;
diff --git a/meta/recipes-support/beecrypt/beecrypt/run-ptest b/meta/recipes-support/beecrypt/beecrypt/run-ptest
deleted file mode 100644
index 2ee294d991f..00000000000
--- a/meta/recipes-support/beecrypt/beecrypt/run-ptest
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-cd tests
-for i in `ls`; do ./$i; if [ $? -eq 0 ]; then echo "PASS: $i"; \
- else echo "FAIL: $i"; fi; done
diff --git a/meta/recipes-support/beecrypt/beecrypt_4.2.1.bb b/meta/recipes-support/beecrypt/beecrypt_4.2.1.bb
deleted file mode 100644
index 1e626f154c2..00000000000
--- a/meta/recipes-support/beecrypt/beecrypt_4.2.1.bb
+++ /dev/null
@@ -1,48 +0,0 @@
-# Beecrypt OE build file
-# Copyright (C) 2004-2005, Advanced Micro Devices, Inc. All Rights Reserved
-# Released under the MIT license (see packages/COPYING)
-
-SUMMARY = "A general-purpose cryptography library"
-HOMEPAGE = "http://sourceforge.net/projects/beecrypt"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/beecrypt/beecrypt-${PV}.tar.gz \
- file://disable-icu-check.patch \
- file://fix-security.patch \
- file://fix-for-gcc-4.7.patch \
- file://run-ptest \
- file://beecrypt-enable-ptest-support.patch \
- file://add-option-dev-dsp.patch \
- "
-
-SRC_URI[md5sum] = "8441c014170823f2dff97e33df55af1e"
-SRC_URI[sha256sum] = "286f1f56080d1a6b1d024003a5fa2158f4ff82cae0c6829d3c476a4b5898c55d"
-
-LICENSE = "GPLv2 & LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=9894370afd5dfe7d02b8d14319e729a1 \
- file://COPYING.LIB;md5=dcf3c825659e82539645da41a7908589 \
- file://include/beecrypt/beecrypt.h;endline=20;md5=47a93eef539aac237eef86297a4d71c1"
-
-PR = "r3"
-
-inherit autotools multilib_header ptest
-acpaths=""
-
-do_install_append() {
- oe_multilib_header beecrypt/gnu.h
-}
-
-EXTRA_OECONF = "--without-python --enable-shared --enable-static --disable-openmp --with-java=no"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[cplusplus] = "--with-cplusplus,--without-cplusplus,icu"
-
-FILES_${PN} = "${sysconfdir} ${libdir}/*.so.* ${libdir}/${BPN}/*.so.*"
-FILES_${PN}-dev += "${libdir}/${BPN}/*.so ${libdir}/${BPN}/*.la"
-FILES_${PN}-staticdev += "${libdir}/${BPN}/*.a"
-
-BBCLASSEXTEND = "native nativesdk"
-
-do_install_ptest () {
- mkdir ${D}${PTEST_PATH}/tests
- cp -r ${B}/tests/.libs/test* ${D}${PTEST_PATH}/tests
-}
diff --git a/meta/recipes-support/bmap-tools/bmap-tools_3.4.bb b/meta/recipes-support/bmap-tools/bmap-tools_3.4.bb
index 9d8191f330d..2aae9a3fe0d 100644
--- a/meta/recipes-support/bmap-tools/bmap-tools_3.4.bb
+++ b/meta/recipes-support/bmap-tools/bmap-tools_3.4.bb
@@ -16,7 +16,7 @@ SRC_URI[sha256sum] = "0064891270c180c190f41925b0f6fb9cecac3056f1168d2592dbe90e5f
UPSTREAM_CHECK_URI = "https://github.com/intel/${BPN}/releases"
-RDEPENDS_${PN} = "python3-core python3-compression python3-mmap python3-setuptools"
+RDEPENDS_${PN} = "python3-core python3-compression python3-mmap python3-setuptools python3-fcntl"
inherit python3native
inherit setuptools3
diff --git a/meta/recipes-support/boost/bjam-native_1.66.0.bb b/meta/recipes-support/boost/bjam-native_1.68.0.bb
index 92c86a3ef59..94f96e62d8f 100644
--- a/meta/recipes-support/boost/bjam-native_1.66.0.bb
+++ b/meta/recipes-support/boost/bjam-native_1.68.0.bb
@@ -6,7 +6,7 @@ SECTION = "devel"
inherit native
SRC_URI += "file://bjam-native-build-bjam.debug.patch \
- file://0001-Fix-a-strange-assert-typo-how-was-this-released-with.patch"
+"
do_compile() {
./bootstrap.sh --with-toolset=gcc
diff --git a/meta/recipes-support/boost/boost-1.66.0.inc b/meta/recipes-support/boost/boost-1.68.0.inc
index fe2b8639f79..b367a80b647 100644
--- a/meta/recipes-support/boost/boost-1.66.0.inc
+++ b/meta/recipes-support/boost/boost-1.68.0.inc
@@ -12,8 +12,8 @@ BOOST_MAJ = "${@"_".join(d.getVar("PV").split(".")[0:2])}"
BOOST_P = "boost_${BOOST_VER}"
SRC_URI = "${SOURCEFORGE_MIRROR}/project/boost/boost/${PV}/${BOOST_P}.tar.bz2"
-SRC_URI[md5sum] = "b2dfbd6c717be4a7bb2d88018eaccf75"
-SRC_URI[sha256sum] = "5721818253e6a0989583192f96782c4a98eb6204965316df9f5ad75819225ca9"
+SRC_URI[md5sum] = "7fbd1890f571051f2a209681d57d486a"
+SRC_URI[sha256sum] = "7f6130bc3cf65f56a618888ce9d5ea704fa10b462be126ad053e80e553d6d8b7"
UPSTREAM_CHECK_URI = "http://www.boost.org/users/download/"
UPSTREAM_CHECK_REGEX = "boostorg/release/(?P<pver>.*)/source/"
diff --git a/meta/recipes-support/boost/boost.inc b/meta/recipes-support/boost/boost.inc
index 0461ec6fcf1..c4faea211f0 100644
--- a/meta/recipes-support/boost/boost.inc
+++ b/meta/recipes-support/boost/boost.inc
@@ -9,6 +9,7 @@ BOOST_LIBS = "\
atomic \
chrono \
container \
+ contract \
date_time \
exception \
filesystem \
@@ -32,6 +33,7 @@ BOOST_LIBS = "\
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"
# need consistent settings for native builds (x86 override not applied for native)
BOOST_LIBS_remove_class-native = " context coroutine"
# does not compile
@@ -133,9 +135,8 @@ BJAM_TOOLS = "--ignore-site-config \
'--layout=system' \
"
-# use PARALLEL_MAKE to speed up the build, but limit it by -j 64, greater parallelism causes bjam to segfault or to ignore -j
-# https://svn.boost.org/trac/boost/ticket/7634
-BOOST_PARALLEL_MAKE = "${@oe.utils.parallel_make_argument(d, '-j%d', limit=64)}"
+# use PARALLEL_MAKE to speed up the build
+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 \
@@ -149,6 +150,9 @@ BJAM_OPTS_append_class-native = ' -sNO_BZIP2=1'
# Adjust the build for x32
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"
+
do_configure() {
cp -f ${S}/boost/config/platform/linux.hpp ${S}/boost/config/platform/linux-gnueabi.hpp
diff --git a/meta/recipes-support/boost/boost/0001-make_x86_64_sysv_elf_gas.S-set-.file-section.patch b/meta/recipes-support/boost/boost/0001-make_x86_64_sysv_elf_gas.S-set-.file-section.patch
new file mode 100644
index 00000000000..c2ac49e58fc
--- /dev/null
+++ b/meta/recipes-support/boost/boost/0001-make_x86_64_sysv_elf_gas.S-set-.file-section.patch
@@ -0,0 +1,48 @@
+From c99f798407e44c86e9f64f5b1adf3b4d0549eef2 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <Mingli.Yu@windriver.com>
+Date: Fri, 15 Jun 2018 16:21:56 +0800
+Subject: [PATCH] make_x86_64_sysv_elf_gas.S: set .file section
+
+Set .file section explicitly for .S files to avoid
+the linker introduces the host path in symbols for
+object files whose source file is .S
+Otherwise, there is a host path in the symbols as below:
+$ readelf --wide --symbols /my-build/boost/1.67.0-r0/boost_1_67_0/x86_64-poky-linux/boost/bin.v2/libs/context/build/aca09349fdb84d131321425f6c3a38ed/libboost_context.so.1.67.0
+
+42: 0000000000000000 0 FILE LOCAL DEFAULT ABS /my-build/boost/1.67.0-r0/boost_1_67_0/x86_64-poky-linux/boost/bin.v2/libs/context/build/aca09349fdb84d131321425f6c3a38ed/asm/make_x86_64_sysv_elf_gas.o
+
+Upstream-Status: Pending
+
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+---
+ libs/context/src/asm/make_i386_sysv_elf_gas.S | 1 +
+ libs/context/src/asm/make_x86_64_sysv_elf_gas.S | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/libs/context/src/asm/make_i386_sysv_elf_gas.S b/libs/context/src/asm/make_i386_sysv_elf_gas.S
+index de77e88..b76de26 100644
+--- a/libs/context/src/asm/make_i386_sysv_elf_gas.S
++++ b/libs/context/src/asm/make_i386_sysv_elf_gas.S
+@@ -24,6 +24,7 @@
+ * *
+ ****************************************************************************************/
+
++.file "make_i386_sysv_elf_gas.S"
+ .text
+ .globl make_fcontext
+ .align 2
+diff --git a/libs/context/src/asm/make_x86_64_sysv_elf_gas.S b/libs/context/src/asm/make_x86_64_sysv_elf_gas.S
+index 25a0c00..0ef3756 100644
+--- a/libs/context/src/asm/make_x86_64_sysv_elf_gas.S
++++ b/libs/context/src/asm/make_x86_64_sysv_elf_gas.S
+@@ -24,6 +24,7 @@
+ * *
+ ****************************************************************************************/
+
++.file "make_x86_64_sysv_elf_gas.S"
+ .text
+ .globl make_fcontext
+ .type make_fcontext,@function
+--
+2.7.4
+
diff --git a/meta/recipes-support/boost/boost/0002-Don-t-set-up-m32-m64-we-do-that-ourselves.patch b/meta/recipes-support/boost/boost/0002-Don-t-set-up-m32-m64-we-do-that-ourselves.patch
deleted file mode 100644
index 26f3cbb0512..00000000000
--- a/meta/recipes-support/boost/boost/0002-Don-t-set-up-m32-m64-we-do-that-ourselves.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From e4d3a7470b307693660d0412732e7266d1738d8c Mon Sep 17 00:00:00 2001
-From: Christopher Larson <chris_larson@mentor.com>
-Date: Tue, 13 Dec 2016 10:29:17 -0700
-Subject: [PATCH 6/6] Don't set up -m32/-m64, we do that ourselves
-
-Upstream-Status: Inappropriate
-Signed-off-by: Christopher Larson <chris_larson@mentor.com>
-
----
- tools/build/src/tools/gcc.jam | 39 ---------------------------------------
- 1 file changed, 39 deletions(-)
-
-diff --git a/tools/build/src/tools/gcc.jam b/tools/build/src/tools/gcc.jam
-index e4fc6c32..37914fd0 100644
---- a/tools/build/src/tools/gcc.jam
-+++ b/tools/build/src/tools/gcc.jam
-@@ -337,45 +337,6 @@ rule set-address-model-options ( targets * : sources * : properties * )
- {
- local option ;
- local target-os = [ feature.get-values target-os : $(properties) ] ;
-- if $(target-os) = aix
-- {
-- if $(model) = 32
-- {
-- option = -maix32 ;
-- }
-- else
-- {
-- option = -maix64 ;
-- }
-- }
-- else if $(target-os) = hpux
-- {
-- if $(model) = 32
-- {
-- option = -milp32 ;
-- }
-- else
-- {
-- option = -mlp64 ;
-- }
-- }
-- else
-- {
-- local arch = [ feature.get-values architecture : $(properties) ] ;
-- if $(arch) = power || $(arch) = sparc || $(arch) = x86
-- {
-- if $(model) = 32
-- {
-- option = -m32 ;
-- }
-- else if $(model) = 64
-- {
-- option = -m64 ;
-- }
-- }
-- # For darwin, the model can be 32_64. darwin.jam will handle that
-- # on its own.
-- }
- OPTIONS on $(targets) += $(option) ;
- }
- }
---
-2.15.1
-
diff --git a/meta/recipes-support/boost/boost_1.66.0.bb b/meta/recipes-support/boost/boost_1.66.0.bb
deleted file mode 100644
index 63b82a5995c..00000000000
--- a/meta/recipes-support/boost/boost_1.66.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require boost-${PV}.inc
-require boost.inc
-
-SRC_URI += "\
- file://arm-intrinsics.patch \
- file://boost-CVE-2012-2677.patch \
- file://boost-math-disable-pch-for-gcc.patch \
- file://0001-Apply-boost-1.62.0-no-forced-flags.patch.patch \
- file://0003-Don-t-set-up-arch-instruction-set-flags-we-do-that-o.patch \
- file://0002-Don-t-set-up-m32-m64-we-do-that-ourselves.patch \
-"
diff --git a/meta/recipes-support/boost/boost_1.68.0.bb b/meta/recipes-support/boost/boost_1.68.0.bb
new file mode 100644
index 00000000000..c7958a4c5ed
--- /dev/null
+++ b/meta/recipes-support/boost/boost_1.68.0.bb
@@ -0,0 +1,11 @@
+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://0003-Don-t-set-up-arch-instruction-set-flags-we-do-that-o.patch \
+ file://0001-make_x86_64_sysv_elf_gas.S-set-.file-section.patch \
+ "
diff --git a/meta/recipes-support/boost/files/0001-Fix-a-strange-assert-typo-how-was-this-released-with.patch b/meta/recipes-support/boost/files/0001-Fix-a-strange-assert-typo-how-was-this-released-with.patch
deleted file mode 100644
index a75133d2bc6..00000000000
--- a/meta/recipes-support/boost/files/0001-Fix-a-strange-assert-typo-how-was-this-released-with.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 5685527364198597f25fc1c6236cb64cbc3de44f Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 4 Oct 2017 18:16:08 +0300
-Subject: [PATCH] Fix a strange assert typo; how was this released without
- noticing?
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- tools/build/src/engine/debugger.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/tools/build/src/engine/debugger.c b/tools/build/src/engine/debugger.c
-index 802f262..152a7e6 100644
---- a/tools/build/src/engine/debugger.c
-+++ b/tools/build/src/engine/debugger.c
-@@ -1092,7 +1092,7 @@ static void debug_start_child( int argc, const char * * argv )
- PROCESS_INFORMATION pi = { NULL, NULL, 0, 0 };
- STARTUPINFO si = { sizeof( STARTUPINFO ), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0 };
-- assert( DEBUG_STATE == DEBUG_NO_CHILD );
-+ assert( debug_state == DEBUG_NO_CHILD );
- if ( ! CreatePipe( &pipe1[ 0 ], &pipe1[ 1 ], &sa, 0 ) )
- {
- printf("internal error\n");
-@@ -1176,7 +1176,7 @@ static void debug_start_child( int argc, const char * * argv )
- int read_fd;
- int pid;
- int i;
-- assert( DEBUG_STATE == DEBUG_NO_CHILD );
-+ assert( debug_state == DEBUG_NO_CHILD );
- pipe(pipe1);
- pipe(pipe2);
- pid = fork();
---
-2.14.1
-
diff --git a/meta/recipes-support/ca-certificates/ca-certificates_20170717.bb b/meta/recipes-support/ca-certificates/ca-certificates_20180409.bb
index 350294858be..0d57083c522 100644
--- a/meta/recipes-support/ca-certificates/ca-certificates_20170717.bb
+++ b/meta/recipes-support/ca-certificates/ca-certificates_20180409.bb
@@ -5,7 +5,7 @@ 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=e7358b9541ccf3029e9705ed8de57968"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=aeb420429b1659507e0a5a1b123e8308"
# This is needed to ensure we can run the postinst at image creation time
DEPENDS = ""
@@ -14,7 +14,7 @@ DEPENDS_class-nativesdk = "openssl-native"
# Need c_rehash from openssl and run-parts from debianutils
PACKAGE_WRITE_DEPS += "openssl-native debianutils-native"
-SRCREV = "34b8e19e541b8af4076616b2e170c7a70cdaded0"
+SRCREV = "dbbd11e56af93bb79f21d0ee6059a901f83f70a5"
SRC_URI = "git://salsa.debian.org/debian/ca-certificates.git;protocol=https \
file://0002-update-ca-certificates-use-SYSROOT.patch \
@@ -26,7 +26,6 @@ SRC_URI = "git://salsa.debian.org/debian/ca-certificates.git;protocol=https \
"
S = "${WORKDIR}/git"
-SYSROOT_DIRS_class-native += "${sysconfdir} ${datadir}/ca-certificates"
inherit allarch
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
index 74e5d99cf2c..a7db1b3c9ea 100644
--- 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
@@ -1,17 +1,21 @@
-[PATCH] replace krb5-config with pkg-config
+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 e99b303..dc93f39 100644
+index 5569a26..56b0380 100755
--- a/configure.ac
+++ b/configure.ac
-@@ -1196,7 +1196,7 @@ AC_ARG_WITH(gssapi,
+@@ -1290,7 +1290,7 @@ AC_ARG_WITH(gssapi,
fi
])
@@ -20,7 +24,7 @@ index e99b303..dc93f39 100644
save_CPPFLAGS="$CPPFLAGS"
AC_MSG_CHECKING([if GSS-API support is requested])
-@@ -1207,7 +1207,7 @@ if test x"$want_gss" = xyes; then
+@@ -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
@@ -29,7 +33,7 @@ index e99b303..dc93f39 100644
elif test "$GSSAPI_ROOT" != "yes"; then
GSSAPI_INCS="-I$GSSAPI_ROOT/include"
fi
-@@ -1300,7 +1300,7 @@ if test x"$want_gss" = xyes; then
+@@ -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
@@ -38,6 +42,3 @@ index e99b303..dc93f39 100644
LIBS="$gss_libs $LIBS"
else
case $host in
---
-1.9.1
-
diff --git a/meta/recipes-support/curl/curl/CVE-2018-14618.patch b/meta/recipes-support/curl/curl/CVE-2018-14618.patch
new file mode 100644
index 00000000000..db07b436d3b
--- /dev/null
+++ b/meta/recipes-support/curl/curl/CVE-2018-14618.patch
@@ -0,0 +1,37 @@
+From 57d299a499155d4b327e341c6024e293b0418243 Mon Sep 17 00:00:00 2001
+From: Daniel Stenberg <daniel@haxx.se>
+Date: Mon, 13 Aug 2018 10:35:52 +0200
+Subject: [PATCH] Curl_ntlm_core_mk_nt_hash: return error on too long password
+
+... since it would cause an integer overflow if longer than (max size_t
+/ 2).
+
+This is CVE-2018-14618
+
+Bug: https://curl.haxx.se/docs/CVE-2018-14618.html
+Closes #2756
+Reported-by: Zhaoyang Wu
+
+CVE: CVE-2018-14618
+Upstream-Status: Backport
+Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
+---
+ lib/curl_ntlm_core.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/lib/curl_ntlm_core.c b/lib/curl_ntlm_core.c
+index e27cab353c..922e85a926 100644
+--- a/lib/curl_ntlm_core.c
++++ b/lib/curl_ntlm_core.c
+@@ -557,8 +557,11 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct Curl_easy *data,
+ unsigned char *ntbuffer /* 21 bytes */)
+ {
+ size_t len = strlen(password);
+- unsigned char *pw = len ? malloc(len * 2) : strdup("");
++ unsigned char *pw;
+ CURLcode result;
++ if(len > SIZE_T_MAX/2) /* avoid integer overflow */
++ return CURLE_OUT_OF_MEMORY;
++ pw = len ? malloc(len * 2) : strdup("");
+ if(!pw)
+ return CURLE_OUT_OF_MEMORY;
diff --git a/meta/recipes-support/curl/curl/configure_ac.patch b/meta/recipes-support/curl/curl/configure_ac.patch
deleted file mode 100644
index b8bd304d71e..00000000000
--- a/meta/recipes-support/curl/curl/configure_ac.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Upstream-Status: Pending
-
---- a/configure.ac
-+++ b/configure.ac
-@@ -281,7 +281,7 @@ dnl ************************************
-
- CURL_CHECK_COMPILER
- CURL_SET_COMPILER_BASIC_OPTS
--CURL_SET_COMPILER_DEBUG_OPTS
-+dnl CURL_SET_COMPILER_DEBUG_OPTS
- CURL_SET_COMPILER_OPTIMIZE_OPTS
- CURL_SET_COMPILER_WARNING_OPTS
-
diff --git a/meta/recipes-support/curl/curl_7.58.0.bb b/meta/recipes-support/curl/curl_7.61.0.bb
index d2d01802684..4f408d2aaa6 100644
--- a/meta/recipes-support/curl/curl_7.58.0.bb
+++ b/meta/recipes-support/curl/curl_7.61.0.bb
@@ -7,35 +7,35 @@ LIC_FILES_CHKSUM = "file://COPYING;beginline=8;md5=3a34942f4ae3fbf1a303160714e66
SRC_URI = "http://curl.haxx.se/download/curl-${PV}.tar.bz2 \
file://0001-replace-krb5-config-with-pkg-config.patch \
+ file://CVE-2018-14618.patch \
"
-
-# curl likes to set -g0 in CFLAGS, so we stop it
-# from mucking around with debug options
-#
-SRC_URI += " file://configure_ac.patch"
-
-SRC_URI[md5sum] = "fa049f9f90c1ae473a2a7bcfa14de976"
-SRC_URI[sha256sum] = "1cb081f97807c01e3ed747b6e1c9fee7a01cb10048f1cd0b5f56cfe0209de731"
+SRC_URI[md5sum] = "31d0a9f48dc796a7db351898a1e5058a"
+SRC_URI[sha256sum] = "5f6f336921cf5b84de56afbd08dfb70adeef2303751ffb3e570c936c6d656c9c"
CVE_PRODUCT = "libcurl"
inherit autotools pkgconfig binconfig multilib_header
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} gnutls proxy threaded-resolver zlib"
-PACKAGECONFIG_class-native = "ipv6 proxy ssl threaded-resolver zlib"
-PACKAGECONFIG_class-nativesdk = "ipv6 proxy ssl threaded-resolver zlib"
+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"
@@ -46,18 +46,18 @@ PACKAGECONFIG[ssl] = "--with-ssl --with-random=/dev/urandom,--without-ssl,openss
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"
-PACKAGECONFIG[krb5] = "--with-gssapi,--without-gssapi,krb5"
-PACKAGECONFIG[nghttp2] = "--with-nghttp2,--without-nghttp2,nghttp2"
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 \
@@ -74,4 +74,7 @@ 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/arm-thumb-mutex_db5.patch b/meta/recipes-support/db/db/arm-thumb-mutex_db5.patch
deleted file mode 100644
index 6a8eada6059..00000000000
--- a/meta/recipes-support/db/db/arm-thumb-mutex_db5.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-Original patch submitted by jbowler@nslu2-linux.org on 2005-11-17:
-
-db: fix thumb uclibc operation in 4.3.29
- - uclibc thumb builds were using libpthread to implement mutexes, the
- - uclibc version seems to be a stub (at least on thumb). This commit
- - fixes the ARM/gcc-assembly mutex implementation so that it has thumb
- - support and the resultant db4 works (tested on LE Thumb uclibc)
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Author: jbowler@nslu2-linux.org
-
-Index: db-6.0.30/src/dbinc/mutex_int.h
-===================================================================
---- db-6.0.30.orig/src/dbinc/mutex_int.h
-+++ db-6.0.30/src/dbinc/mutex_int.h
-@@ -474,6 +474,25 @@ typedef unsigned char tsl_t;
-
- #ifdef LOAD_ACTUAL_MUTEX_CODE
- /* gcc/arm: 0 is clear, 1 is set. */
-+#if defined __thumb__
-+#define MUTEX_SET(tsl) ({ \
-+ int __r, __p; \
-+ __asm__ volatile( \
-+ ".align 2\n\t" \
-+ "bx pc\n\t" \
-+ "nop\n\t" \
-+ ".arm\n\t" \
-+ "swpb %0, %2, [%3]\n\t" \
-+ "eor %0, %0, #1\n\t" \
-+ "orr %1, pc, #1\n\t" \
-+ "bx %1\n\t" \
-+ ".force_thumb" \
-+ : "=&r" (__r), "=r" (__p) \
-+ : "r" (1), "r" (tsl) \
-+ ); \
-+ __r & 1; \
-+})
-+#else
- #define MUTEX_SET(tsl) ({ \
- int __r; \
- __asm__ volatile( \
-@@ -484,6 +503,7 @@ typedef unsigned char tsl_t;
- ); \
- __r & 1; \
- })
-+#endif
-
- #define MUTEX_UNSET(tsl) (*(volatile tsl_t *)(tsl) = 0)
- #define MUTEX_INIT(tsl) (MUTEX_UNSET(tsl), 0)
diff --git a/meta/recipes-support/db/db_5.3.28.bb b/meta/recipes-support/db/db_5.3.28.bb
index 093ee449097..b7ed2c798c8 100644
--- a/meta/recipes-support/db/db_5.3.28.bb
+++ b/meta/recipes-support/db/db_5.3.28.bb
@@ -21,8 +21,7 @@ PR = "r1"
PE = "1"
SRC_URI = "http://download.oracle.com/berkeley-db/db-${PV}.tar.gz"
-SRC_URI += "file://arm-thumb-mutex_db5.patch \
- file://fix-parallel-build.patch \
+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 \
@@ -47,7 +46,6 @@ inherit lib_package
PACKAGES =+ "${PN}-cxx"
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
# same time) as the db3 package
@@ -59,18 +57,8 @@ FILES_SOLIBSDEV = "${libdir}/libdb.so ${libdir}/libdb_cxx.so"
# All the --disable-* options replace --enable-smallbuild, which breaks a bunch of stuff (eg. postfix)
DB5_CONFIG ?= "--enable-o_direct --disable-cryptography --disable-queue --disable-replication --disable-verify --disable-compat185 --disable-sql"
-EXTRA_OECONF = "${DB5_CONFIG} --enable-shared --enable-cxx --with-sysroot"
-
-# Override the MUTEX setting here, the POSIX library is
-# the default - "POSIX/pthreads/library".
-# Don't ignore the nice SWP instruction on the ARM:
-# These enable the ARM assembler mutex code, this won't
-# work with thumb compilation...
-ARM_MUTEX = "--with-mutex=ARM/gcc-assembly"
-MUTEX = ""
-MUTEX_arm = "${ARM_MUTEX}"
-MUTEX_armeb = "${ARM_MUTEX}"
-EXTRA_OECONF += "${MUTEX} STRIP=true"
+EXTRA_OECONF = "${DB5_CONFIG} --enable-shared --enable-cxx --with-sysroot STRIP=true"
+
EXTRA_OEMAKE += "LIBTOOL='./${HOST_SYS}-libtool'"
EXTRA_AUTORECONF += "--exclude=autoheader -I ${S}/dist/aclocal -I${S}/dist/aclocal_java"
diff --git a/meta/recipes-support/debianutils/debianutils_4.8.4.bb b/meta/recipes-support/debianutils/debianutils_4.8.6.bb
index 300e6f1312a..c37e842eb2b 100644
--- a/meta/recipes-support/debianutils/debianutils_4.8.4.bb
+++ b/meta/recipes-support/debianutils/debianutils_4.8.6.bb
@@ -3,15 +3,13 @@ SECTION = "base"
LICENSE = "GPLv2 & SMAIL_GPL"
LIC_FILES_CHKSUM = "file://debian/copyright;md5=f01a5203d50512fc4830b4332b696a9f"
-SRC_URI = "http://snapshot.debian.org/archive/debian/20180129T164727Z/pool/main/d/${BPN}/${BPN}_${PV}.tar.xz"
+SRC_URI = "http://snapshot.debian.org/archive/debian/20180626T205238Z/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] = "a6dcd496b4f79b3c452c3a74c2d3f89c"
-SRC_URI[sha256sum] = "c061ab99aea61f892043b7624b021ab5b193e9c6bbfd474da0fbcdd506be1eb2"
-
-S = "${WORKDIR}/${BPN}"
+SRC_URI[md5sum] = "f0f1fa39383815fb7950dcee52be4361"
+SRC_URI[sha256sum] = "db09047144dadf6a35d0f28977fbef83b0dd60ca32e6c8512cce2444a6423f73"
inherit autotools update-alternatives
diff --git a/meta/recipes-support/dos2unix/dos2unix_7.4.0.bb b/meta/recipes-support/dos2unix/dos2unix_7.4.0.bb
new file mode 100644
index 00000000000..9a712706839
--- /dev/null
+++ b/meta/recipes-support/dos2unix/dos2unix_7.4.0.bb
@@ -0,0 +1,35 @@
+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/fribidi/fribidi/meson.patch b/meta/recipes-support/fribidi/fribidi/meson.patch
new file mode 100644
index 00000000000..8b3c4a991ed
--- /dev/null
+++ b/meta/recipes-support/fribidi/fribidi/meson.patch
@@ -0,0 +1,44 @@
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From f5feb6c599adb52f24656f8589868039b0d14272 Mon Sep 17 00:00:00 2001
+From: Heiko Becker <heirecka@exherbo.org>
+Date: Fri, 7 Sep 2018 20:57:11 +0200
+Subject: [PATCH] Build generator executables natively
+
+They are run during the build and not installed in the end. Without
+this one gets the following error from meson: "ERROR: Can not use
+target gen-unicode-version as a generator because it is cross-built
+and no exe wrapper is defined. You might want to set it to native
+instead."
+
+Closes #87.
+
+---
+ gen.tab/meson.build | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/gen.tab/meson.build b/gen.tab/meson.build
+index 6006d98..8c21e98 100644
+--- a/gen.tab/meson.build
++++ b/gen.tab/meson.build
+@@ -33,7 +33,8 @@ gen_unicode_version = executable('gen-unicode-version',
+ 'gen-unicode-version.c',
+ include_directories: incs,
+ c_args: native_args,
+- install: false)
++ install: false,
++ native: true)
+
+ fribidi_unicode_version_h = custom_target('fribidi-unicode-version.h',
+ input: files('unidata/ReadMe.txt', 'unidata/BidiMirroring.txt'),
+@@ -67,7 +68,8 @@ foreach tab : tabs
+ gen_prog_src, 'packtab.c',
+ include_directories: incs,
+ c_args: native_args,
+- install: false)
++ install: false,
++ native: true)
+
+ tab_inc_file = custom_target(gen_prog_name,
+ input: gen_prog_inputs,
diff --git a/meta/recipes-support/fribidi/fribidi_1.0.5.bb b/meta/recipes-support/fribidi/fribidi_1.0.5.bb
new file mode 100644
index 00000000000..63b2da649ca
--- /dev/null
+++ b/meta/recipes-support/fribidi/fribidi_1.0.5.bb
@@ -0,0 +1,17 @@
+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 \
+ file://meson.patch"
+SRC_URI[md5sum] = "0f97f65038545340316ec0f4bd53df0b"
+SRC_URI[sha256sum] = "6a64f2a687f5c4f203a46fa659f43dd43d1f8b845df8d723107e8a7e6158e4ce"
+
+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 b9461bec6b3..1e67dbd5542 100644
--- a/meta/recipes-support/gdbm/files/ptest.patch
+++ b/meta/recipes-support/gdbm/files/ptest.patch
@@ -1,4 +1,4 @@
-From 4e4b70a4a3dcf1fdbee9e68bed3b62f42b197a3a Mon Sep 17 00:00:00 2001
+From 41448708e163c8ec1f980464e7dd6741db427c8a 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,14 +9,14 @@ Upstream-Status: Pending
---
Makefile.am | 5 +++++
- tests/Makefile.am | 12 +++++++++++-
- 2 files changed, 16 insertions(+), 1 deletion(-)
+ tests/Makefile.am | 11 +++++++++++
+ 2 files changed, 16 insertions(+)
diff --git a/Makefile.am b/Makefile.am
-index 4cdc734..24b99f0 100644
+index ecc03df..9fbbda5 100644
--- a/Makefile.am
+++ b/Makefile.am
-@@ -45,3 +45,8 @@ ChangeLog:
+@@ -55,3 +55,8 @@ ChangeLog:
awk -f $(top_srcdir)/git2chg.awk \
-v append=$(top_srcdir)/$(prev_change_log) > ChangeLog; \
fi
@@ -26,14 +26,13 @@ index 4cdc734..24b99f0 100644
+ $(MAKE) -C $$subdir DESTDIR=$(DESTDIR)/$$subdir $@; \
+ done
diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 3dbb580..22ffc44 100644
+index dbe17dd..06f537f 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
-@@ -130,4 +130,14 @@ dtfetch_LDADD = ../src/libgdbm.la ../compat/libgdbm_compat.la
- dtdel_LDADD = ../src/libgdbm.la ../compat/libgdbm_compat.la
- d_creat_ce_LDADD = ../src/libgdbm.la ../compat/libgdbm_compat.la
+@@ -169,3 +169,14 @@ EXTRA_DIST += \
+ gdbmtool/base.exp\
+ config/default.exp
--
+buildtests: $(check_PROGRAMS) $(TESTSUITE)
+
+install-ptest: $(check_PROGRAMS) $(TESTSUITE)
@@ -45,6 +44,3 @@ index 3dbb580..22ffc44 100644
+ $(INSTALL_PROGRAM) $$file $(DESTDIR) ; \
+ fi \
+ done
---
-2.11.0
-
diff --git a/meta/recipes-support/gdbm/gdbm_1.14.1.bb b/meta/recipes-support/gdbm/gdbm_1.18.bb
index 54e5696e423..2d2016ddfa3 100644
--- a/meta/recipes-support/gdbm/gdbm_1.14.1.bb
+++ b/meta/recipes-support/gdbm/gdbm_1.18.bb
@@ -10,8 +10,8 @@ SRC_URI = "${GNU_MIRROR}/gdbm/gdbm-${PV}.tar.gz \
file://ptest.patch \
"
-SRC_URI[md5sum] = "c2ddcb3897efa0f57484af2bd4f4f848"
-SRC_URI[sha256sum] = "cdceff00ffe014495bed3aed71c7910aa88bf29379f795abc0f46d4ee5f8bc5f"
+SRC_URI[md5sum] = "e316f8e4a3e7e4f23955be65d54fec48"
+SRC_URI[sha256sum] = "b8822cb4769e2d759c828c06f196614936c88c141c3132b18252fe25c2b635ce"
inherit autotools gettext texinfo lib_package ptest
diff --git a/meta/recipes-support/gmp/gmp.inc b/meta/recipes-support/gmp/gmp.inc
index abac8cf339c..948b89288e0 100644
--- a/meta/recipes-support/gmp/gmp.inc
+++ b/meta/recipes-support/gmp/gmp.inc
@@ -3,7 +3,7 @@ DESCRIPTION = "GMP is a free library for arbitrary precision arithmetic, operati
HOMEPAGE = "http://gmplib.org/"
SECTION = "devel"
-inherit autotools texinfo
+inherit autotools texinfo multilib_header
PACKAGECONFIG ??= ""
PACKAGECONFIG[readline] = "--with-readline=yes,--with-readline=no,readline"
diff --git a/meta/recipes-support/gmp/gmp_6.1.2.bb b/meta/recipes-support/gmp/gmp_6.1.2.bb
index b008710d0f0..c745dbbfe71 100644
--- a/meta/recipes-support/gmp/gmp_6.1.2.bb
+++ b/meta/recipes-support/gmp/gmp_6.1.2.bb
@@ -25,6 +25,10 @@ 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" \
diff --git a/meta/recipes-support/gnome-desktop-testing/gnome-desktop-testing/update-output-syntax.patch b/meta/recipes-support/gnome-desktop-testing/gnome-desktop-testing/update-output-syntax.patch
index 5a178e2ef12..19c524b0ac6 100644
--- a/meta/recipes-support/gnome-desktop-testing/gnome-desktop-testing/update-output-syntax.patch
+++ b/meta/recipes-support/gnome-desktop-testing/gnome-desktop-testing/update-output-syntax.patch
@@ -3,7 +3,7 @@ The terms `FAIL` instead of `FAILED` and `SKIP` instead of `SKIPPED`
match what Automake does
Upstream-Status: Accepted
-[ https://git.gnome.org/browse/gnome-desktop-testing/commit/?id=048850731a640532ef55a61df7357fcc6d2ad501 ]
+[ https://gitlab.gnome.org/GNOME/gnome-desktop-testing/commit/048850731a640532ef55a61df7357fcc6d2ad501 ]
Signed-off-by: Maxin B. John <maxin.john@intel.com>
---
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 3e3a64df2f5..5f1dd30f87c 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 0b97148c3aad0993a9aeb088596fa63a2fec5328 Mon Sep 17 00:00:00 2001
+From 7eb7efb9ce89c66e14c194773c4dcf6478a6ca4d 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
@@ -8,15 +8,16 @@ This should avoid clashes with the host gpg-agent observed on autobuilders.
Upstream-Status: Inappropriate [oe-core specific, and only for -native]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
-index 382ef1d..0570d7c 100644
+index 59a2e60..12d390b 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -1818,7 +1818,7 @@ AC_DEFINE_UNQUOTED(GPGCONF_DISP_NAME, "GPGConf",
+@@ -1841,7 +1841,7 @@ AC_DEFINE_UNQUOTED(GPGCONF_DISP_NAME, "GPGConf",
AC_DEFINE_UNQUOTED(GPGTAR_NAME, "gpgtar", [The name of the gpgtar tool])
@@ -25,6 +26,3 @@ index 382ef1d..0570d7c 100644
[The name of the agent socket])
AC_DEFINE_UNQUOTED(GPG_AGENT_EXTRA_SOCK_NAME, "S.gpg-agent.extra",
[The name of the agent socket for remote access])
---
-2.15.1
-
diff --git a/meta/recipes-support/gnupg/gnupg/relocate.patch b/meta/recipes-support/gnupg/gnupg/relocate.patch
new file mode 100644
index 00000000000..87ec409ca31
--- /dev/null
+++ b/meta/recipes-support/gnupg/gnupg/relocate.patch
@@ -0,0 +1,81 @@
+Allow the environment to override where gnupg looks for its own files. Useful in native builds.
+
+Upstream-Status: Inappropriate [OE-specific]
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff --git a/common/homedir.c b/common/homedir.c
+index e9e75d01e..19140aa0d 100644
+--- a/common/homedir.c
++++ b/common/homedir.c
+@@ -760,7 +760,7 @@ gnupg_socketdir (void)
+ if (!name)
+ {
+ unsigned int dummy;
+- name = _gnupg_socketdir_internal (0, &dummy);
++ name = getenv("GNUPG_SOCKETDIR") ?: _gnupg_socketdir_internal (0, &dummy);
+ }
+
+ 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)
+ else
+ return rdir;
+ #else /*!HAVE_W32_SYSTEM*/
+- return GNUPG_BINDIR;
++ return getenv("GNUPG_BINDIR") ?: GNUPG_BINDIR;
+ #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;
+ #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;
+ #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;
+ #endif /*!HAVE_W32_SYSTEM*/
+ }
+
+@@ -872,7 +872,7 @@ gnupg_localedir (void)
+ NULL);
+ return name;
+ #else /*!HAVE_W32_SYSTEM*/
+- return LOCALEDIR;
++ return getenv("LOCALEDIR") ?: LOCALEDIR;
+ #endif /*!HAVE_W32_SYSTEM*/
+ }
+
+@@ -940,7 +940,7 @@ gnupg_cachedir (void)
+ }
+ return dir;
+ #else /*!HAVE_W32_SYSTEM*/
+- return GNUPG_LOCALSTATEDIR "/cache/" PACKAGE_NAME;
++ return getenv("GNUPG_LOCALSTATEDIR") ?: GNUPG_LOCALSTATEDIR "/cache/" PACKAGE_NAME;
+ #endif /*!HAVE_W32_SYSTEM*/
+ }
+
diff --git a/meta/recipes-support/gnupg/gnupg_2.2.4.bb b/meta/recipes-support/gnupg/gnupg_2.2.9.bb
index d3f1a8f4c4d..b7d23b8d39f 100644
--- a/meta/recipes-support/gnupg/gnupg_2.2.4.bb
+++ b/meta/recipes-support/gnupg/gnupg_2.2.9.bb
@@ -15,11 +15,12 @@ SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
file://0003-dirmngr-uses-libgpg-error.patch \
file://0004-autogen.sh-fix-find-version-for-beta-checking.patch \
"
-SRC_URI_append_class-native = " file://0001-configure.ac-use-a-custom-value-for-the-location-of-.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] = "709e5af5bba84d251c520222e720972f"
-SRC_URI[sha256sum] = "401a3e64780fdfa6d7670de0880aa5c9d589b3db7a7098979d7606cec546f2ec"
+SRC_URI[md5sum] = "52c895a81f514a65e08923736c38654a"
+SRC_URI[sha256sum] = "6278eaabffa1ebc9fa2ceb3dc53eea9a1505ab02a668a86dd6fec06951af2164"
EXTRA_OECONF = "--disable-ldap \
--disable-ccid-driver \
@@ -43,6 +44,10 @@ do_install_append() {
ln -sf gpgv2 ${D}${bindir}/gpgv
}
+do_install_append_class-native() {
+ create_wrapper ${D}${bindir}/gpg2 GNUPG_BINDIR=${STAGING_BINDIR_NATIVE}
+}
+
PACKAGECONFIG ??= "gnutls"
PACKAGECONFIG[gnutls] = "--enable-gnutls, --disable-gnutls, gnutls"
PACKAGECONFIG[sqlite3] = "--enable-sqlite, --disable-sqlite, sqlite3"
diff --git a/meta/recipes-support/gnutls/gnutls/0001-configure.ac-fix-sed-command.patch b/meta/recipes-support/gnutls/gnutls/0001-configure.ac-fix-sed-command.patch
deleted file mode 100644
index b6e7bc96504..00000000000
--- a/meta/recipes-support/gnutls/gnutls/0001-configure.ac-fix-sed-command.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From eaab55bb6d48643163eebbc9ca575a9ca2a8e03f Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 21 Feb 2017 17:10:07 +0200
-Subject: [PATCH] configure.ac: fix sed command
-
-The "sed 's/.bak//g'" matchs "bitbake", which would cause strange errors
-when the S contains "bitbake", fix to "sed 's/\.bak$//'`"
-
-Upstream-Status: Pending
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: gnutls-3.5.16/configure.ac
-===================================================================
---- gnutls-3.5.16.orig/configure.ac
-+++ gnutls-3.5.16/configure.ac
-@@ -955,7 +955,7 @@ YEAR=`date +%Y`
- AC_SUBST([YEAR], $YEAR)
-
- for i in ${srcdir}/src/*-args.c.bak ${srcdir}/src/*-args.h.bak; do
-- nam=$(basename $i|sed 's/.bak//g')
-+ nam=$(basename $i|sed 's/\.bak$//')
- if test "$create_libopts_links" = "yes";then
- rm -f "src/$nam.stamp"
- rm -f "src/$nam"
diff --git a/meta/recipes-support/gnutls/gnutls_3.6.1.bb b/meta/recipes-support/gnutls/gnutls_3.6.1.bb
deleted file mode 100644
index 7624a203d46..00000000000
--- a/meta/recipes-support/gnutls/gnutls_3.6.1.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require gnutls.inc
-
-SRC_URI += "file://0001-configure.ac-fix-sed-command.patch \
- file://arm_eabi.patch \
- "
-SRC_URI[md5sum] = "4b65ae3ffef59f3eeed51a6166ff12b3"
-SRC_URI[sha256sum] = "20b10d2c9994bc032824314714d0e84c0f19bdb3d715d8ed55beb7364a8ebaed"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/gnutls/gnutls.inc b/meta/recipes-support/gnutls/gnutls_3.6.3.bb
index 7bcb9133ad9..441bbecf152 100644
--- a/meta/recipes-support/gnutls/gnutls.inc
+++ b/meta/recipes-support/gnutls/gnutls_3.6.3.bb
@@ -17,7 +17,12 @@ DEPENDS_append_libc-musl = " argp-standalone"
SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
-SRC_URI = "ftp://ftp.gnutls.org/gcrypt/gnutls/v${SHRT_VER}/gnutls-${PV}.tar.xz"
+SRC_URI = "https://www.gnupg.org/ftp/gcrypt/gnutls/v${SHRT_VER}/gnutls-${PV}.tar.xz \
+ file://arm_eabi.patch \
+"
+
+SRC_URI[md5sum] = "d3b1b05c2546b80832101a423a80faf8"
+SRC_URI[sha256sum] = "ed642b66a4ecf4851ab2d809cd1475c297b6201d8e8bd14b4d1c08b53ffca993"
inherit autotools texinfo binconfig pkgconfig gettext lib_package gtk-doc
@@ -25,10 +30,8 @@ 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,libidn"
+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"
@@ -57,3 +60,5 @@ 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/gpgme/gpgme/0001-pkgconfig.patch b/meta/recipes-support/gpgme/gpgme/0001-pkgconfig.patch
index f1997e15a33..ae9a46ed4e1 100644
--- a/meta/recipes-support/gpgme/gpgme/0001-pkgconfig.patch
+++ b/meta/recipes-support/gpgme/gpgme/0001-pkgconfig.patch
@@ -1,7 +1,7 @@
-From 265faf8fe0acaca2043a248a4df02b0868ffa6de Mon Sep 17 00:00:00 2001
+From c452ba58dd2f99d6e624421697417cc018f9a67a Mon Sep 17 00:00:00 2001
From: Richard Purdie <richard.purdie@linuxfoundation.org>
-Date: Wed, 16 Aug 2017 02:00:08 -0400
-Subject: [PATCH 1/4] pkgconfig
+Date: Fri, 29 Jun 2018 14:35:41 +0800
+Subject: [PATCH 1/7] pkgconfig
Update gpgme to use pkgconfig instead of -config files since its
simpler and less error prone when cross compiling.
@@ -11,7 +11,7 @@ RP 2015/4/17
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-Rebase to 1.9.0
+Rebase to 1.11.1
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
@@ -25,10 +25,10 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
create mode 100644 src/gpgme.pc.in
diff --git a/configure.ac b/configure.ac
-index 6ea4bcd..2a0d528 100644
+index 2a35404..7485cdf 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -887,6 +887,7 @@ AC_CONFIG_FILES(Makefile src/Makefile
+@@ -886,6 +886,7 @@ AC_CONFIG_FILES(Makefile src/Makefile
src/versioninfo.rc
src/gpgme.h)
AC_CONFIG_FILES(src/gpgme-config, chmod +x src/gpgme-config)
@@ -37,7 +37,7 @@ index 6ea4bcd..2a0d528 100644
AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfig-w32.cmake.in)
AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfig.cmake.in)
diff --git a/src/Makefile.am b/src/Makefile.am
-index ce6f1d4..5f38fee 100644
+index 0a196e0..cecaf8f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -19,12 +19,14 @@
@@ -54,7 +54,7 @@ index ce6f1d4..5f38fee 100644
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = gpgme.pc gpgme-pthread.pc
- bin_PROGRAMS = gpgme-tool
+ bin_PROGRAMS = gpgme-tool gpgme-json
diff --git a/src/gpgme-pthread.pc.in b/src/gpgme-pthread.pc.in
new file mode 100644
@@ -299,5 +299,5 @@ index 0000000..b69539f
+Requires: libassuan gpg-error
\ No newline at end of file
--
-1.8.3.1
+2.7.4
diff --git a/meta/recipes-support/gpgme/gpgme/0002-gpgme-lang-python-gpg-error-config-should-not-be-use.patch b/meta/recipes-support/gpgme/gpgme/0002-gpgme-lang-python-gpg-error-config-should-not-be-use.patch
index d20271e311e..4f5cedaca2b 100644
--- a/meta/recipes-support/gpgme/gpgme/0002-gpgme-lang-python-gpg-error-config-should-not-be-use.patch
+++ b/meta/recipes-support/gpgme/gpgme/0002-gpgme-lang-python-gpg-error-config-should-not-be-use.patch
@@ -1,7 +1,7 @@
-From 30f7a694cc4568ecb24f77c83a6123ed3f4075fa Mon Sep 17 00:00:00 2001
+From 45d828356efc140a1492befb1e6dc59a9f4e16b5 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Wed, 31 Jan 2018 10:44:19 +0800
-Subject: [PATCH] gpgme/lang/python: gpg-error-config should not be used
+Subject: [PATCH 2/7] gpgme/lang/python: gpg-error-config should not be used
gpg-error-config was modified by OE to always return an error.
So we want to find an alternative way to retrieve whatever it
@@ -19,7 +19,7 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/lang/python/setup.py.in b/lang/python/setup.py.in
-index f9dda20..9f5d61f 100755
+index 2595073..60b5257 100755
--- a/lang/python/setup.py.in
+++ b/lang/python/setup.py.in
@@ -26,7 +26,6 @@ import shutil
@@ -30,7 +30,7 @@ index f9dda20..9f5d61f 100755
gpgme_config_flags = ["--thread=pthread"]
gpgme_config = ["gpgme-config"] + gpgme_config_flags
gpgme_h = ""
-@@ -174,14 +173,7 @@ class BuildExtFirstHack(build):
+@@ -157,14 +156,7 @@ class BuildExtFirstHack(build):
def _generate_errors_i(self):
@@ -47,5 +47,5 @@ index f9dda20..9f5d61f 100755
filter_re = re.compile(r'GPG_ERR_[^ ]* =')
rewrite_re = re.compile(r' *(.*) = .*')
--
-1.8.3.1
+2.7.4
diff --git a/meta/recipes-support/gpgme/gpgme/0003-Correctly-install-python-modules.patch b/meta/recipes-support/gpgme/gpgme/0003-Correctly-install-python-modules.patch
index 7c9cccc0eaa..330bec659b7 100644
--- a/meta/recipes-support/gpgme/gpgme/0003-Correctly-install-python-modules.patch
+++ b/meta/recipes-support/gpgme/gpgme/0003-Correctly-install-python-modules.patch
@@ -1,7 +1,7 @@
-From 93aae34ee70b8d50b31a19a65d6ac8290cb148ae Mon Sep 17 00:00:00 2001
+From 60baf9ebf30bed0e2ee3c7c5a74d5b6d50035862 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Tue, 30 Jan 2018 15:28:49 +0800
-Subject: [PATCH 2/4] Correctly install python modules
+Subject: [PATCH 3/7] Correctly install python modules
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
@@ -29,5 +29,5 @@ index 8d74cbd..ce4f0a5 100644
done
--
-1.8.3.1
+2.7.4
diff --git a/meta/recipes-support/gpgme/gpgme/0004-python-import.patch b/meta/recipes-support/gpgme/gpgme/0004-python-import.patch
index d2b039dacd3..1a60f79b6b7 100644
--- a/meta/recipes-support/gpgme/gpgme/0004-python-import.patch
+++ b/meta/recipes-support/gpgme/gpgme/0004-python-import.patch
@@ -1,7 +1,7 @@
-From 32ecc3f058307060e40af86127cd226248a73c41 Mon Sep 17 00:00:00 2001
+From fd7dcceeee439eb479edbb418bab635343414ee6 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@intel.com>
Date: Wed, 16 Aug 2017 02:06:45 -0400
-Subject: [PATCH 3/4] python import
+Subject: [PATCH 4/7] python import
Don't check for output on stderr to know if an import worked, host inputrc and
sysroot readline can cause warnings on stderr.
@@ -30,5 +30,5 @@ index b990d5b..318b089 100644
else
AC_MSG_RESULT([no])
--
-1.8.3.1
+2.7.4
diff --git a/meta/recipes-support/gpgme/gpgme/0005-gpgme-config-skip-all-lib-or-usr-lib-directories-in-.patch b/meta/recipes-support/gpgme/gpgme/0005-gpgme-config-skip-all-lib-or-usr-lib-directories-in-.patch
index 963ae874cad..2da79043dd2 100644
--- a/meta/recipes-support/gpgme/gpgme/0005-gpgme-config-skip-all-lib-or-usr-lib-directories-in-.patch
+++ b/meta/recipes-support/gpgme/gpgme/0005-gpgme-config-skip-all-lib-or-usr-lib-directories-in-.patch
@@ -1,7 +1,7 @@
-From 6dcedc4dd055af902719b1a1cb10daa935a27f58 Mon Sep 17 00:00:00 2001
+From a58d90632a9907be3e8001800a143ac19075241a Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Thu, 13 Apr 2017 16:40:27 +0300
-Subject: [PATCH 4/4] gpgme-config: skip all /lib* or /usr/lib* directories in
+Subject: [PATCH 5/7] gpgme-config: skip all /lib* or /usr/lib* directories in
output
The logic was not working in multilib setups which use other
@@ -27,5 +27,5 @@ index a4d152e..8342865 100644
;;
-L*|-l*)
--
-1.8.3.1
+2.7.4
diff --git a/meta/recipes-support/gpgme/gpgme/0006-fix-build-path-issue.patch b/meta/recipes-support/gpgme/gpgme/0006-fix-build-path-issue.patch
index 8cc8983e270..26ff4723774 100644
--- a/meta/recipes-support/gpgme/gpgme/0006-fix-build-path-issue.patch
+++ b/meta/recipes-support/gpgme/gpgme/0006-fix-build-path-issue.patch
@@ -1,7 +1,7 @@
-From 180a5669e4a13a550b1b0dcef1689b6c0470fe54 Mon Sep 17 00:00:00 2001
+From 4f83750ce402b65d16cc09f8a0274a7ec76fc634 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Wed, 31 Jan 2018 11:01:09 +0800
-Subject: [PATCH] fix build path issue
+Subject: [PATCH 6/7] fix build path issue
Get the "--root" directory supplied to the "install" command,
and use it as a prefix to strip off the purported filename
@@ -33,5 +33,5 @@ index ce4f0a5..5a468f1 100644
done
--
-1.8.3.1
+2.7.4
diff --git a/meta/recipes-support/gpgme/gpgme/0007-qt-python-Add-variables-to-tests.patch b/meta/recipes-support/gpgme/gpgme/0007-qt-python-Add-variables-to-tests.patch
index ce3745cca00..63eeacf3000 100644
--- a/meta/recipes-support/gpgme/gpgme/0007-qt-python-Add-variables-to-tests.patch
+++ b/meta/recipes-support/gpgme/gpgme/0007-qt-python-Add-variables-to-tests.patch
@@ -1,7 +1,7 @@
-From f47e8c6f9e461803468a64581d3640d873352eaa Mon Sep 17 00:00:00 2001
+From d3087348348b4a7fcfb05bf2a75b4a63453e1c77 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Thu, 1 Feb 2018 10:14:30 +0800
-Subject: [PATCH] qt/python: Add variables to tests
+Subject: [PATCH 7/7] qt/python: Add variables to tests
* configure.ac, lang/python/Makefile.am:
New variable to `lang/python', set to `lang/python' if RUN_LANG_PYTHON_TESTS
@@ -19,10 +19,10 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
3 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
-index 608c376..fad7467 100644
+index 7485cdf..4aa216d 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -536,6 +536,17 @@ AC_ARG_ENABLE(g13-test,
+@@ -535,6 +535,17 @@ AC_ARG_ENABLE(g13-test,
run_g13_test=$enableval)
AM_CONDITIONAL(RUN_G13_TESTS, test "$run_g13_test" = "yes")
@@ -41,7 +41,7 @@ index 608c376..fad7467 100644
# Checks for header files.
AC_CHECK_HEADERS_ONCE([locale.h sys/select.h sys/uio.h argp.h
diff --git a/lang/python/Makefile.am b/lang/python/Makefile.am
-index 8d74cbd..43b5d1e 100644
+index 5a468f1..43b9788 100644
--- a/lang/python/Makefile.am
+++ b/lang/python/Makefile.am
@@ -24,7 +24,10 @@ EXTRA_DIST = \
@@ -74,5 +74,5 @@ index ab85960..a244ede 100644
EXTRA_DIST = README
--
-1.8.3.1
+2.7.4
diff --git a/meta/recipes-support/gpgme/gpgme_1.10.0.bb b/meta/recipes-support/gpgme/gpgme_1.11.1.bb
index f015f3ad755..86fae94609b 100644
--- a/meta/recipes-support/gpgme/gpgme_1.10.0.bb
+++ b/meta/recipes-support/gpgme/gpgme_1.11.1.bb
@@ -6,7 +6,7 @@ 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=9d157d08a69059344e6f82abd2d25781 \
+ file://src/gpgme.h.in;endline=23;md5=4d6319e587fd944adfe61a41a8f15b36 \
file://src/engine.h;endline=22;md5=4b6d8ba313d9b564cc4d4cfb1640af9d"
UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
@@ -20,8 +20,8 @@ SRC_URI = "${GNUPG_MIRROR}/gpgme/${BP}.tar.bz2 \
file://0007-qt-python-Add-variables-to-tests.patch \
"
-SRC_URI[md5sum] = "78b1533c593478982ee2fc548260c563"
-SRC_URI[sha256sum] = "1a8fed1197c3b99c35f403066bb344a26224d292afc048cfdfc4ccd5690a0693"
+SRC_URI[md5sum] = "129c46fb85a7ffa41e43345e48aee884"
+SRC_URI[sha256sum] = "2d1b111774d2e3dd26dcd7c251819ce4ef774ec5e566251eb9308fa7542fbd6f"
DEPENDS = "libgpg-error libassuan"
RDEPENDS_${PN}-cpp += "libstdc++"
@@ -60,7 +60,7 @@ EXTRA_OECONF += '--enable-languages="${LANGUAGES}" \
--disable-lang-python-test \
'
-inherit autotools texinfo binconfig-disabled pkgconfig ${PYTHON_INHERIT}
+inherit autotools texinfo binconfig-disabled pkgconfig distutils-common-base ${PYTHON_INHERIT}
export PKG_CONFIG='pkg-config'
diff --git a/meta/recipes-support/icu/icu.inc b/meta/recipes-support/icu/icu.inc
index 983118cd619..e20085fbf52 100644
--- a/meta/recipes-support/icu/icu.inc
+++ b/meta/recipes-support/icu/icu.inc
@@ -19,7 +19,9 @@ BINCONFIG = "${bindir}/icu-config"
ICU_MAJOR_VER = "${@d.getVar('PV').split('.')[0]}"
-inherit autotools pkgconfig binconfig
+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
@@ -31,6 +33,8 @@ 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 = ""
+
# strtod_l() is not supported by musl; also xlocale.h is missing
# It is not possible to disable its use via configure switches or env vars
# so monkey patching is needed.
diff --git a/meta/recipes-support/icu/icu/0001-i18n-Drop-include-xlocale.h.patch b/meta/recipes-support/icu/icu/0001-i18n-Drop-include-xlocale.h.patch
deleted file mode 100644
index f0c49e19765..00000000000
--- a/meta/recipes-support/icu/icu/0001-i18n-Drop-include-xlocale.h.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From d6b57c1b4eb9a24d9d95342a961c93946539c93b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 24 Jun 2017 22:52:40 -0700
-Subject: [PATCH 3/4] i18n: Drop include <xlocale.h>
-
-glibc 2.26 drops this header
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- source/i18n/digitlst.cpp | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
-
-diff --git a/source/i18n/digitlst.cpp b/source/i18n/digitlst.cpp
-index 8e86fa7..0bdbb2c 100644
---- a/i18n/digitlst.cpp
-+++ b/i18n/digitlst.cpp
-@@ -62,11 +62,7 @@
- #endif
-
- #if U_USE_STRTOD_L
--# if U_HAVE_XLOCALE_H
--# include <xlocale.h>
--# else
--# include <locale.h>
--# endif
-+# include <locale.h>
- #endif
-
- // ***************************************************************************
---
-2.14.2
-
diff --git a/meta/recipes-support/icu/icu/0002-Add-ARC-support.patch b/meta/recipes-support/icu/icu/0002-Add-ARC-support.patch
new file mode 100644
index 00000000000..20e3d8356c4
--- /dev/null
+++ b/meta/recipes-support/icu/icu/0002-Add-ARC-support.patch
@@ -0,0 +1,27 @@
+From fcfd57105b4bdb30d906df152ef01748fa95daff Mon Sep 17 00:00:00 2001
+From: Alexey Brodkin <abrodkin@synopsys.com>
+Date: Thu, 13 Sep 2018 17:13:20 +0300
+Subject: [PATCH] icu: Add ARC support
+
+Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
+
+Upstream-Status: Submitted [ https://github.com/unicode-org/icu/pull/149 ]
+---
+ i18n/double-conversion-utils.h | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/i18n/double-conversion-utils.h b/i18n/double-conversion-utils.h
+index 57fc49b231a3..0bd3e8340673 100644
+--- a/i18n/double-conversion-utils.h
++++ b/i18n/double-conversion-utils.h
+@@ -86,7 +86,7 @@ inline void abort_noreturn() { abort(); }
+ defined(__SH4__) || defined(__alpha__) || \
+ defined(_MIPS_ARCH_MIPS32R2) || \
+ defined(__AARCH64EL__) || defined(__aarch64__) || \
+- defined(__riscv)
++ defined(__riscv) || defined(__arc__)
+ #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
+ #elif defined(__mc68000__)
+ #undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS
+2.17.1
+
diff --git a/meta/recipes-support/icu/icu_60.2.bb b/meta/recipes-support/icu/icu_62.1.bb
index 585a92bc4cd..4e3750b997a 100644
--- a/meta/recipes-support/icu/icu_60.2.bb
+++ b/meta/recipes-support/icu/icu_62.1.bb
@@ -1,6 +1,6 @@
require icu.inc
-LIC_FILES_CHKSUM = "file://../LICENSE;md5=675f2d069434d8a1e4e6b0dcf4379226"
+LIC_FILES_CHKSUM = "file://../LICENSE;md5=63752c57bd0b365c9af9f427ef79c819"
def icu_download_version(d):
pvsplit = d.getVar('PV').split('.')
@@ -16,14 +16,14 @@ BASE_SRC_URI = "http://download.icu-project.org/files/icu4c/${PV}/icu4c-${ICU_PV
SRC_URI = "${BASE_SRC_URI} \
file://icu-pkgdata-large-cmd.patch \
file://fix-install-manx.patch \
- file://0001-i18n-Drop-include-xlocale.h.patch \
+ file://0002-Add-ARC-support.patch \
"
SRC_URI_append_class-target = "\
file://0001-Disable-LDFLAGSICUDT-for-Linux.patch \
"
-SRC_URI[md5sum] = "43861b127744b3c0b9d7f386f4b9fa40"
-SRC_URI[sha256sum] = "f073ea8f35b926d70bb33e6577508aa642a8b316a803f11be20af384811db418"
+SRC_URI[md5sum] = "490ad9d920158e0314e10ba74ae9a150"
+SRC_URI[sha256sum] = "3dd9868d666350dda66a6e305eecde9d479fb70b30d5b55d78a1deffb97d5aa3"
UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)/"
UPSTREAM_CHECK_URI = "http://download.icu-project.org/files/icu4c/"
diff --git a/meta/recipes-support/iso-codes/iso-codes_3.77.bb b/meta/recipes-support/iso-codes/iso-codes_4.1.bb
index bd613ac573d..1761ded44e1 100644
--- a/meta/recipes-support/iso-codes/iso-codes_3.77.bb
+++ b/meta/recipes-support/iso-codes/iso-codes_4.1.bb
@@ -1,15 +1,19 @@
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 = "https://pkg-isocodes.alioth.debian.org/downloads/iso-codes-${PV}.tar.xz"
-SRC_URI[md5sum] = "9d0d06cfb4634428b300845edcd7140a"
-SRC_URI[sha256sum] = "21cd73a4c6f95d9474ebfcffd4e065223857720f24858e564f4409b19f7f0d90"
+SRC_URI = "git://salsa.debian.org/iso-codes-team/iso-codes.git;protocol=http"
+SRCREV = "164802d5fd8c7a8167816fd86a62b286680619f0"
# 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/libatomic-ops/libatomic-ops_7.6.2.bb b/meta/recipes-support/libatomic-ops/libatomic-ops_7.6.6.bb
index f7b416352db..32d26a34e94 100644
--- a/meta/recipes-support/libatomic-ops/libatomic-ops_7.6.2.bb
+++ b/meta/recipes-support/libatomic-ops/libatomic-ops_7.6.6.bb
@@ -3,13 +3,13 @@ HOMEPAGE = "https://github.com/ivmai/libatomic_ops/"
SECTION = "optional"
PROVIDES += "libatomics-ops"
LICENSE = "GPLv2 & MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://doc/LICENSING.txt;md5=e00dd5c8ac03a14c5ae5225a4525fa2d \
- "
+ "
PV .= "+git${SRCPV}"
SRCBRANCH ?= "release-7_6"
-SRCREV = "5ae4b4aeea2baf13752d07e3038c47f70f06dcac"
+SRCREV = "76ffb3b87946e4c372d112d8d00786632deab934"
SRC_URI = "git://github.com/ivmai/libatomic_ops;branch=${SRCBRANCH}"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-support/libbsd/libbsd/0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch b/meta/recipes-support/libbsd/libbsd/0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch
deleted file mode 100644
index 54617b506bd..00000000000
--- a/meta/recipes-support/libbsd/libbsd/0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch
+++ /dev/null
@@ -1,376 +0,0 @@
-From 88adbe1a855b7aa95bd925c80ed83c86f3fc42e3 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 6 Nov 2016 09:39:31 -0800
-Subject: [PATCH 1/3] Replace __BEGIN_DECLS and __END_DECLS
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
-Upstream-Status: Pending
-
- include/bsd/err.h | 10 ++++++++--
- include/bsd/libutil.h | 10 ++++++++--
- include/bsd/md5.h | 10 ++++++++--
- include/bsd/nlist.h | 10 ++++++++--
- include/bsd/readpassphrase.h | 10 ++++++++--
- include/bsd/stdio.h | 10 ++++++++--
- include/bsd/stdlib.h | 12 +++++++++---
- include/bsd/string.h | 12 +++++++++---
- include/bsd/stringlist.h | 10 ++++++++--
- include/bsd/unistd.h | 10 ++++++++--
- include/bsd/vis.h | 10 ++++++++--
- include/bsd/wchar.h | 10 ++++++++--
- src/hash/sha512.h | 10 ++++++++--
- 13 files changed, 106 insertions(+), 28 deletions(-)
-
-diff --git a/include/bsd/err.h b/include/bsd/err.h
-index 12fd051..43dfc32 100644
---- a/include/bsd/err.h
-+++ b/include/bsd/err.h
-@@ -42,7 +42,10 @@
-
- #include <stdarg.h>
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- void warnc(int code, const char *format, ...)
- __printflike(2, 3);
- void vwarnc(int code, const char *format, va_list ap)
-@@ -51,6 +54,9 @@ void errc(int status, int code, const char *format, ...)
- __printflike(3, 4);
- void verrc(int status, int code, const char *format, va_list ap)
- __printflike(3, 0);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif
-diff --git a/include/bsd/libutil.h b/include/bsd/libutil.h
-index 45b3b15..9c936e5 100644
---- a/include/bsd/libutil.h
-+++ b/include/bsd/libutil.h
-@@ -53,7 +53,10 @@ struct pidfh {
- ino_t pf_ino;
- };
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- int humanize_number(char *buf, size_t len, int64_t bytes,
- const char *suffix, int scale, int flags);
- int expand_number(const char *_buf, uint64_t *_num);
-@@ -66,7 +69,10 @@ int pidfile_close(struct pidfh *pfh);
- int pidfile_remove(struct pidfh *pfh);
-
- char *fparseln(FILE *, size_t *, size_t *, const char[3], int);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- /* humanize_number(3) */
- #define HN_DECIMAL 0x01
-diff --git a/include/bsd/md5.h b/include/bsd/md5.h
-index 5f3ae46..5d80e5c 100644
---- a/include/bsd/md5.h
-+++ b/include/bsd/md5.h
-@@ -30,7 +30,10 @@ typedef struct MD5Context {
- #include <sys/cdefs.h>
- #include <sys/types.h>
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- void MD5Init(MD5_CTX *);
- void MD5Update(MD5_CTX *, const uint8_t *, size_t)
- __attribute__((__bounded__(__string__,2,3)));
-@@ -49,6 +52,9 @@ char *MD5FileChunk(const char *, char *, off_t, off_t)
- char *MD5Data(const uint8_t *, size_t, char *)
- __attribute__((__bounded__(__string__,1,2)))
- __attribute__((__bounded__(__minbytes__,3,MD5_DIGEST_STRING_LENGTH)));
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif /* LIBBSD_MD5_H */
-diff --git a/include/bsd/nlist.h b/include/bsd/nlist.h
-index cb297e8..e63bbbd 100644
---- a/include/bsd/nlist.h
-+++ b/include/bsd/nlist.h
-@@ -88,8 +88,14 @@ struct nlist {
-
- #define N_FORMAT "%08x" /* namelist value format; XXX */
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- extern int nlist(const char *filename, struct nlist *list);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif
-diff --git a/include/bsd/readpassphrase.h b/include/bsd/readpassphrase.h
-index 14744b8..fa73361 100644
---- a/include/bsd/readpassphrase.h
-+++ b/include/bsd/readpassphrase.h
-@@ -34,8 +34,14 @@
- #include <sys/cdefs.h>
- #include <sys/types.h>
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- char * readpassphrase(const char *, char *, size_t, int);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif /* !LIBBSD_READPASSPHRASE_H */
-diff --git a/include/bsd/stdio.h b/include/bsd/stdio.h
-index 4b69983..18645b7 100644
---- a/include/bsd/stdio.h
-+++ b/include/bsd/stdio.h
-@@ -45,7 +45,10 @@
- #endif
- #include <sys/types.h>
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- const char *fmtcheck(const char *, const char *);
-
- /* XXX: The function requires cooperation from the system libc to store the
-@@ -73,7 +76,10 @@ FILE *funopen(const void *cookie,
- #define fwopen(cookie, fn) funopen(cookie, NULL, fn, NULL, NULL)
-
- int fpurge(FILE *fp);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif
- #endif
-diff --git a/include/bsd/stdlib.h b/include/bsd/stdlib.h
-index ebc9638..c4b54b6 100644
---- a/include/bsd/stdlib.h
-+++ b/include/bsd/stdlib.h
-@@ -46,7 +46,10 @@
- #include <sys/stat.h>
- #include <stdint.h>
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- uint32_t arc4random(void);
- void arc4random_stir(void);
- void arc4random_addrandom(unsigned char *dat, int datlen);
-@@ -67,7 +70,7 @@ int sradixsort(const unsigned char **base, int nmemb,
- const unsigned char *table, unsigned endbyte);
-
- void *reallocf(void *ptr, size_t size);
--#if defined(_GNU_SOURCE) && defined(__GLIBC__) && !__GLIBC_PREREQ(2, 26)
-+#if defined(_GNU_SOURCE) && defined(__GLIBC__)
- void *reallocarray(void *ptr, size_t nmemb, size_t size);
- #endif
-
-@@ -75,6 +78,9 @@ long long strtonum(const char *nptr, long long minval, long long maxval,
- const char **errstr);
-
- char *getbsize(int *headerlenp, long *blocksizep);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif
-diff --git a/include/bsd/string.h b/include/bsd/string.h
-index 6798bf6..fa1193f 100644
---- a/include/bsd/string.h
-+++ b/include/bsd/string.h
-@@ -36,15 +36,21 @@
- #include <sys/cdefs.h>
- #include <sys/types.h>
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- size_t strlcpy(char *dst, const char *src, size_t siz);
- size_t strlcat(char *dst, const char *src, size_t siz);
- char *strnstr(const char *str, const char *find, size_t str_len);
- void strmode(mode_t mode, char *str);
-
--#if defined(_GNU_SOURCE) && defined(__GLIBC__) && !__GLIBC_PREREQ(2, 25)
-+#if defined(_GNU_SOURCE) && defined(__GLIBC__)
- void explicit_bzero(void *buf, size_t len);
- #endif
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif
-diff --git a/include/bsd/stringlist.h b/include/bsd/stringlist.h
-index ff30cac..4600f6b 100644
---- a/include/bsd/stringlist.h
-+++ b/include/bsd/stringlist.h
-@@ -43,12 +43,18 @@ typedef struct _stringlist {
- size_t sl_cur;
- } StringList;
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- StringList *sl_init(void);
- int sl_add(StringList *, char *);
- void sl_free(StringList *, int);
- char *sl_find(StringList *, const char *);
- int sl_delete(StringList *, const char *, int);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif /* LIBBSD_STRINGLIST_H */
-diff --git a/include/bsd/unistd.h b/include/bsd/unistd.h
-index 1f9c5f8..5b2f4c7 100644
---- a/include/bsd/unistd.h
-+++ b/include/bsd/unistd.h
-@@ -45,7 +45,10 @@
- #define S_ISTXT S_ISVTX
- #endif
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- extern int optreset;
-
- #ifdef LIBBSD_OVERLAY
-@@ -68,6 +71,9 @@ void setproctitle(const char *fmt, ...)
- __printflike(1, 2);
-
- int getpeereid(int s, uid_t *euid, gid_t *egid);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif
-diff --git a/include/bsd/vis.h b/include/bsd/vis.h
-index 970dfdd..621d3c6 100644
---- a/include/bsd/vis.h
-+++ b/include/bsd/vis.h
-@@ -74,7 +74,10 @@
-
- #include <sys/cdefs.h>
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- char *vis(char *, int, int, int);
- int strvis(char *, const char *, int);
- int strvisx(char *, const char *, size_t, int);
-@@ -83,6 +86,9 @@ int strunvis(char *, const char *);
- int strunvisx(char *, const char *, int);
- ssize_t strnunvis(char *, const char *, size_t);
- int unvis(char *, int, int *, int);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif /* !LIBBSD_VIS_H */
-diff --git a/include/bsd/wchar.h b/include/bsd/wchar.h
-index 33a500e..aa70742 100644
---- a/include/bsd/wchar.h
-+++ b/include/bsd/wchar.h
-@@ -43,12 +43,18 @@
- #include <sys/cdefs.h>
- #include <sys/types.h>
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- wchar_t *fgetwln(FILE *stream, size_t *len);
-
- size_t wcslcat(wchar_t *dst, const wchar_t *src, size_t size);
- size_t wcslcpy(wchar_t *dst, const wchar_t *src, size_t size);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif
- #endif
-diff --git a/src/hash/sha512.h b/src/hash/sha512.h
-index 4f368a1..27ddc24 100644
---- a/src/hash/sha512.h
-+++ b/src/hash/sha512.h
-@@ -39,7 +39,10 @@ typedef struct SHA512Context {
- unsigned char buf[128];
- } SHA512_CTX;
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-
- void SHA512_Init(SHA512_CTX *);
- void SHA512_Update(SHA512_CTX *, const void *, size_t);
-@@ -48,6 +51,9 @@ char *SHA512_End(SHA512_CTX *, char *);
- char *SHA512_File(const char *, char *);
- char *SHA512_FileChunk(const char *, char *, off_t, off_t);
- char *SHA512_Data(const void *, unsigned int, char *);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif /* !_SHA512_H_ */
---
-1.9.1
-
diff --git a/meta/recipes-support/libbsd/libbsd/0001-flopen-Add-missing-fcntl.h-include.patch b/meta/recipes-support/libbsd/libbsd/0001-flopen-Add-missing-fcntl.h-include.patch
new file mode 100644
index 00000000000..8abb876c7b0
--- /dev/null
+++ b/meta/recipes-support/libbsd/libbsd/0001-flopen-Add-missing-fcntl.h-include.patch
@@ -0,0 +1,46 @@
+From 13c32916b4baab58d93940d57fea9ff0777f1931 Mon Sep 17 00:00:00 2001
+From: Baruch Siach <baruch@tkos.co.il>
+Date: Tue, 5 Jun 2018 19:21:46 +0300
+Subject: [PATCH] flopen: Add missing <fcntl.h> include
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Commit 993828d84ee (Add flopenat() function from FreeBSD) dropped the
+fcntl.h header. This breaks the build with musl libc:
+
+flopen.c: In function ‘vflopenat’:
+flopen.c:60:14: error: ‘O_CREAT’ undeclared (first use in this function)
+ if (flags & O_CREAT) {
+ ^~~~~~~
+
+Restore the fcntl.h header include to fix the build.
+
+Fixes: commit 993828d84eed0468c6c15b2818e534e6b134b8e4
+Submitted-also-by: parazyd <parazyd@dyne.org>
+Signed-off-by: Baruch Siach <baruch@tkos.co.il>
+Signed-off-by: Guillem Jover <guillem@hadrons.org>
+
+Upstream-Status: Backport
+[https://gitlab.freedesktop.org/libbsd/libbsd/commit/13c32916b4baab58d93940d57fea9ff0777f1931]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ src/flopen.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/flopen.c b/src/flopen.c
+index b9972c9..ff20d07 100644
+--- a/src/flopen.c
++++ b/src/flopen.c
+@@ -32,6 +32,7 @@
+ #include <sys/stat.h>
+
+ #include <errno.h>
++#include <fcntl.h>
+ #include <stdarg.h>
+ #include <unistd.h>
+
+--
+2.7.4
+
diff --git a/meta/recipes-support/libbsd/libbsd/0001-src-libbsd-overlay.pc.in-Set-Cflags-to-use-I-instead.patch b/meta/recipes-support/libbsd/libbsd/0001-src-libbsd-overlay.pc.in-Set-Cflags-to-use-I-instead.patch
deleted file mode 100644
index 7e3a5b3be4b..00000000000
--- a/meta/recipes-support/libbsd/libbsd/0001-src-libbsd-overlay.pc.in-Set-Cflags-to-use-I-instead.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From b6972f1c29ebf073cbe19a4a669ee093259792a0 Mon Sep 17 00:00:00 2001
-From: Fabio Berton <fabio.berton@ossystems.com.br>
-Date: Mon, 30 Jan 2017 12:00:33 -0200
-Subject: [PATCH] src/libbsd-overlay.pc.in: Set Cflags to use -I instead of
- -isystem
-Organization: O.S. Systems Software LTDA.
-
-pkg-config currently only handles -I and -L correctly, but misses
--isystem, so we need to do this workaround to fix this issue.
-
-There's a open bug in:
-https://bugzilla.freedesktop.org/show_bug.cgi?id=99516
-
-Upstream-Status: Pending
-
-Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
----
- src/libbsd-overlay.pc.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/libbsd-overlay.pc.in b/src/libbsd-overlay.pc.in
-index ac8bf89..65dc3ae 100644
---- a/src/libbsd-overlay.pc.in
-+++ b/src/libbsd-overlay.pc.in
-@@ -8,4 +8,4 @@ Description: Utility functions from BSD systems (overlay)
- Version: @VERSION@
- URL: https://libbsd.freedesktop.org/
- Libs: -L${libdir} -lbsd
--Cflags: -isystem ${includedir}/bsd -DLIBBSD_OVERLAY
-+Cflags: -I${includedir}/bsd -DLIBBSD_OVERLAY
---
-2.11.0
-
diff --git a/meta/recipes-support/libbsd/libbsd/0002-Remove-funopen.patch b/meta/recipes-support/libbsd/libbsd/0002-Remove-funopen.patch
deleted file mode 100644
index 60da15eb831..00000000000
--- a/meta/recipes-support/libbsd/libbsd/0002-Remove-funopen.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 28fc66e8b848709a2e69dba7f07694248e0154e8 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 6 Nov 2016 09:40:43 -0800
-Subject: [PATCH 2/3] Remove funopen()
-
-Musl doesnt have prerequisites for it.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Inappropriate [musl specific]
-
- man/Makefile.am | 1 -
- src/Makefile.am | 1 -
- test/Makefile.am | 1 -
- 3 files changed, 3 deletions(-)
-
-diff --git a/man/Makefile.am b/man/Makefile.am
-index 28192c0..a22787d 100644
---- a/man/Makefile.am
-+++ b/man/Makefile.am
-@@ -168,7 +168,6 @@ dist_man_MANS = \
- fmtcheck.3bsd \
- fparseln.3bsd \
- fpurge.3bsd \
-- funopen.3bsd \
- getbsize.3bsd \
- getmode.3bsd \
- getpeereid.3bsd \
-diff --git a/src/Makefile.am b/src/Makefile.am
-index ad83dbf..13225a3 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -76,7 +76,6 @@ libbsd_la_SOURCES = \
- fmtcheck.c \
- fparseln.c \
- fpurge.c \
-- funopen.c \
- getbsize.c \
- getpeereid.c \
- hash/md5.c \
-diff --git a/test/Makefile.am b/test/Makefile.am
-index d86539a..b32ed2e 100644
---- a/test/Makefile.am
-+++ b/test/Makefile.am
-@@ -36,7 +36,6 @@ check_PROGRAMS = \
- endian \
- humanize \
- fgetln \
-- funopen \
- fparseln \
- fpurge \
- md5 \
diff --git a/meta/recipes-support/libbsd/libbsd_0.8.7.bb b/meta/recipes-support/libbsd/libbsd_0.9.1.bb
index 552a85c4da8..2b75cdf9563 100644
--- a/meta/recipes-support/libbsd/libbsd_0.8.7.bb
+++ b/meta/recipes-support/libbsd/libbsd_0.9.1.bb
@@ -9,16 +9,14 @@ DESCRIPTION = "This library provides useful functions commonly found on BSD syst
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
-# License: BSD-2-clause
+# 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
-# License: BSD-3-clause
-# License: BSD-3-clause-Peter-Wemm
+# 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
@@ -30,20 +28,16 @@ HOMEPAGE = "http://libbsd.freedesktop.org/wiki/"
# License: public-domain
# License: public-domain-Colin-Plumb
LICENSE = "BSD-4-Clause & ISC & PD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=08fc4e66be4526715dab09c5fba5e9e8"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b552602fda69e34c753d26de383f33c5"
SECTION = "libs"
SRC_URI = " \
http://libbsd.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
- file://0001-src-libbsd-overlay.pc.in-Set-Cflags-to-use-I-instead.patch \
-"
-SRC_URI_append_libc-musl = " \
- file://0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch \
- file://0002-Remove-funopen.patch \
+ file://0001-flopen-Add-missing-fcntl.h-include.patch \
"
-SRC_URI[md5sum] = "d9e6980fbfe44f94fd92b89a33cce67d"
-SRC_URI[sha256sum] = "f548f10e5af5a08b1e22889ce84315b1ebe41505b015c9596bad03fd13a12b31"
+SRC_URI[md5sum] = "a74b80c4143afa032c90226a4518fffe"
+SRC_URI[sha256sum] = "56d835742327d69faccd16955a60b6dcf30684a8da518c4eca0ac713b9e0a7a4"
inherit autotools pkgconfig
diff --git a/meta/recipes-support/libcap-ng/libcap-ng/python.patch b/meta/recipes-support/libcap-ng/libcap-ng/python.patch
index 59591eb4693..d60a0a39b66 100644
--- a/meta/recipes-support/libcap-ng/libcap-ng/python.patch
+++ b/meta/recipes-support/libcap-ng/libcap-ng/python.patch
@@ -1,4 +1,4 @@
-From b01bb2694f66cd981e6d61523433dc3eb5ed32f2 Mon Sep 17 00:00:00 2001
+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.
@@ -8,30 +8,32 @@ 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 | 3 ++-
- configure.ac | 15 ++-------------
- 2 files changed, 4 insertions(+), 14 deletions(-)
+ 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 82b9bb8..f9fe7a8 100644
+index 999b184..c8e49db 100644
--- a/bindings/python/Makefile.am
+++ b/bindings/python/Makefile.am
-@@ -23,7 +23,8 @@ SUBDIRS = test
+@@ -23,7 +23,9 @@
+ SUBDIRS = test
CONFIG_CLEAN_FILES = *.loT *.rej *.orig
AM_CFLAGS = -fPIC -DPIC
- PYLIBVER ?= python$(PYTHON_VERSION)
-AM_CPPFLAGS = -I. -I$(top_builddir) -I@PYINCLUDEDIR@
++PYLIBVER ?= python$(PYTHON_VERSION)
+PYINC ?= /usr/include/$(PYLIBVER)
+AM_CPPFLAGS = -I. -I$(top_builddir) -I$(PYINC)
- LIBS = $(top_builddir)/src/libcap-ng.la
SWIG_FLAGS = -python
SWIG_INCLUDES = ${AM_CPPFLAGS}
+ pyexec_PYTHON = capng.py
diff --git a/configure.ac b/configure.ac
-index 1d777d5..9d90f64 100644
+index 7f66179..079d026 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -123,19 +123,8 @@ if test x$use_python = xno ; then
+@@ -123,21 +123,8 @@ if test x$use_python = xno ; then
else
AC_MSG_RESULT(testing)
AM_PATH_PYTHON
@@ -39,11 +41,13 @@ index 1d777d5..9d90f64 100644
-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 required and python headers found])
+- 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
@@ -54,5 +58,5 @@ index 1d777d5..9d90f64 100644
AM_CONDITIONAL(HAVE_PYTHON, test ${python_found} = "yes")
--
-1.8.4.2
+2.7.4
diff --git a/meta/recipes-support/libcap-ng/libcap-ng_0.7.8.bb b/meta/recipes-support/libcap-ng/libcap-ng_0.7.9.bb
index 358319419d6..aff6259db29 100644
--- a/meta/recipes-support/libcap-ng/libcap-ng_0.7.8.bb
+++ b/meta/recipes-support/libcap-ng/libcap-ng_0.7.9.bb
@@ -12,8 +12,8 @@ SRC_URI = "http://people.redhat.com/sgrubb/libcap-ng/libcap-ng-${PV}.tar.gz \
inherit lib_package autotools python3native
-SRC_URI[md5sum] = "0dece96644bd798020e170fbf7663802"
-SRC_URI[sha256sum] = "c21af997445cd4107a55d386f955c5ea6f6e96ead693e9151277c0ab5f97d05f"
+SRC_URI[md5sum] = "2398d695508fab9ce33668c53a89b0e9"
+SRC_URI[sha256sum] = "4a1532bcf3731aade40936f6d6a586ed5a66ca4c7455e1338d1f6c3e09221328"
DEPENDS += "swig-native python3"
diff --git a/meta/recipes-support/libcap/libcap_2.25.bb b/meta/recipes-support/libcap/libcap_2.25.bb
index d619a2eb4cc..6df674547c7 100644
--- a/meta/recipes-support/libcap/libcap_2.25.bb
+++ b/meta/recipes-support/libcap/libcap_2.25.bb
@@ -32,7 +32,7 @@ PACKAGECONFIG[pam] = "PAM_CAP=yes,PAM_CAP=no,libpam"
EXTRA_OEMAKE = " \
INDENT= \
- lib=${@os.path.basename('${libdir}')} \
+ lib='${baselib}' \
RAISE_SETFCAP=no \
DYNAMIC=yes \
BUILD_GPERF=yes \
diff --git a/meta/recipes-support/libcroco/libcroco/CVE-2017-7960.patch b/meta/recipes-support/libcroco/libcroco/CVE-2017-7960.patch
new file mode 100644
index 00000000000..f6f43c3d26a
--- /dev/null
+++ b/meta/recipes-support/libcroco/libcroco/CVE-2017-7960.patch
@@ -0,0 +1,56 @@
+input: check end of input before reading a byte
+
+When reading bytes we weren't check that the index wasn't
+out of bound and this could produce an invalid read which
+could deal to a security bug.
+
+Upstream-Status: Backport[https://gitlab.gnome.org/GNOME/libcroco/
+ commit/898e3a8c8c0314d2e6b106809a8e3e93cf9d4394]
+
+CVE: CVE-2017-7960
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+diff --git a/src/cr-input.c b/src/cr-input.c
+index 49000b1f5f07fe057135f1b8fc69bdcf9613e300..3b63a88ee3b1c56778e58172d147d958951bf099 100644
+--- a/src/cr-input.c
++++ b/src/cr-input.c
+@@ -256,7 +256,7 @@ cr_input_new_from_uri (const gchar * a_file_uri, enum CREncoding a_enc)
+ *we should free buf here because it's own by CRInput.
+ *(see the last parameter of cr_input_new_from_buf().
+ */
+- buf = NULL ;
++ buf = NULL;
+ }
+
+ cleanup:
+@@ -404,6 +404,8 @@ cr_input_get_nb_bytes_left (CRInput const * a_this)
+ enum CRStatus
+ cr_input_read_byte (CRInput * a_this, guchar * a_byte)
+ {
++ gulong nb_bytes_left = 0;
++
+ g_return_val_if_fail (a_this && PRIVATE (a_this)
+ && a_byte, CR_BAD_PARAM_ERROR);
+
+@@ -413,6 +415,12 @@ cr_input_read_byte (CRInput * a_this, guchar * a_byte)
+ if (PRIVATE (a_this)->end_of_input == TRUE)
+ return CR_END_OF_INPUT_ERROR;
+
++ nb_bytes_left = cr_input_get_nb_bytes_left (a_this);
++
++ if (nb_bytes_left < 1) {
++ return CR_END_OF_INPUT_ERROR;
++ }
++
+ *a_byte = PRIVATE (a_this)->in_buf[PRIVATE (a_this)->next_byte_index];
+
+ if (PRIVATE (a_this)->nb_bytes -
+@@ -477,7 +485,6 @@ cr_input_read_char (CRInput * a_this, guint32 * a_char)
+ if (*a_char == '\n') {
+ PRIVATE (a_this)->end_of_line = TRUE;
+ }
+-
+ }
+
+ return status;
diff --git a/meta/recipes-support/libcroco/libcroco_0.6.12.bb b/meta/recipes-support/libcroco/libcroco_0.6.12.bb
index d86ddd64649..5b962ee738d 100644
--- a/meta/recipes-support/libcroco/libcroco_0.6.12.bb
+++ b/meta/recipes-support/libcroco/libcroco_0.6.12.bb
@@ -16,5 +16,7 @@ BINCONFIG = "${bindir}/croco-0.6-config"
inherit gnomebase gtk-doc binconfig-disabled
+SRC_URI += "file://CVE-2017-7960.patch"
+
SRC_URI[archive.md5sum] = "bc0984fce078ba2ce29f9500c6b9ddce"
SRC_URI[archive.sha256sum] = "ddc4b5546c9fb4280a5017e2707fbd4839034ed1aba5b7d4372212f34f84f860"
diff --git a/meta/recipes-support/libevdev/libevdev_1.5.8.bb b/meta/recipes-support/libevdev/libevdev_1.5.9.bb
index c1380144b74..f59c60eee69 100644
--- a/meta/recipes-support/libevdev/libevdev_1.5.8.bb
+++ b/meta/recipes-support/libevdev/libevdev_1.5.9.bb
@@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=75aae0d38feea6fda97ca381cb9132eb \
SRC_URI = "http://www.freedesktop.org/software/libevdev/${BP}.tar.xz"
-SRC_URI[md5sum] = "c25a8c3939e4ad59a5e9e5e1e354832d"
-SRC_URI[sha256sum] = "6083d81e46609da8ba80cb826c02d9080764a6dec33c8267ccb7e158833d4c6d"
+SRC_URI[md5sum] = "a1ca11e961c1efed720fac4130881904"
+SRC_URI[sha256sum] = "e1663751443bed9d3e76a4fe2caf6fa866a79705d91cacad815c04e706198a75"
inherit autotools pkgconfig
diff --git a/meta/recipes-support/libevent/libevent_2.1.8.bb b/meta/recipes-support/libevent/libevent_2.1.8.bb
index 83ce4644cf5..0f91e05a6c9 100644
--- a/meta/recipes-support/libevent/libevent_2.1.8.bb
+++ b/meta/recipes-support/libevent/libevent_2.1.8.bb
@@ -28,12 +28,16 @@ inherit autotools
# Needed for Debian packaging
LEAD_SONAME = "libevent-2.1.so"
-inherit ptest
+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*
diff --git a/meta/recipes-support/libexif/libexif/CVE-2017-7544.patch b/meta/recipes-support/libexif/libexif/CVE-2017-7544.patch
new file mode 100644
index 00000000000..e49481ff84f
--- /dev/null
+++ b/meta/recipes-support/libexif/libexif/CVE-2017-7544.patch
@@ -0,0 +1,40 @@
+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_0.6.21.bb b/meta/recipes-support/libexif/libexif_0.6.21.bb
index cff4caede9e..b550a1125c1 100644
--- a/meta/recipes-support/libexif/libexif_0.6.21.bb
+++ b/meta/recipes-support/libexif/libexif_0.6.21.bb
@@ -4,7 +4,8 @@ SECTION = "libs"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=243b725d71bb5df4a1e5920b344b86ad"
-SRC_URI = "${SOURCEFORGE_MIRROR}/libexif/libexif-${PV}.tar.bz2"
+SRC_URI = "${SOURCEFORGE_MIRROR}/libexif/libexif-${PV}.tar.bz2 \
+ file://CVE-2017-7544.patch"
SRC_URI[md5sum] = "27339b89850f28c8f1c237f233e05b27"
SRC_URI[sha256sum] = "16cdaeb62eb3e6dfab2435f7d7bccd2f37438d21c5218ec4e58efa9157d4d41a"
diff --git a/meta/recipes-support/libfm/libfm-extra_1.2.5.bb b/meta/recipes-support/libfm/libfm-extra_1.3.0.2.bb
index c0fd83ef344..734d010d319 100644
--- a/meta/recipes-support/libfm/libfm-extra_1.2.5.bb
+++ b/meta/recipes-support/libfm/libfm-extra_1.3.0.2.bb
@@ -11,8 +11,8 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/libfm-${PV}.tar.xz \
file://0001-nls.m4-Take-it-from-gettext-0.15.patch \
"
-SRC_URI[md5sum] = "a1ba9ae5e920f38b647dd511edd6c807"
-SRC_URI[sha256sum] = "c706bb1020cf5f2d6f5a9226f692ce1985947134dcf2bde64278bd0420779b5a"
+SRC_URI[md5sum] = "02a024714d51e0d37afc7bd596a44f3b"
+SRC_URI[sha256sum] = "18d06f7996ce1cf8947df6e106bc0338c6ae0c4138c316f2501f6f6f435c7c72"
S = "${WORKDIR}/libfm-${PV}"
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
new file mode 100644
index 00000000000..f4c89127fc1
--- /dev/null
+++ b/meta/recipes-support/libfm/libfm/0001-Do-not-add-library-path-to-avoid-host-contamination.patch
@@ -0,0 +1,23 @@
+From 07260295e031e845e38ba874fa6ab500790c4aaf Mon Sep 17 00:00:00 2001
+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
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ src/modules/Makefile.am | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/modules/Makefile.am b/src/modules/Makefile.am
+index e61f4e0..01c15bd 100644
+--- a/src/modules/Makefile.am
++++ b/src/modules/Makefile.am
+@@ -11,7 +11,6 @@ AM_CPPFLAGS = \
+ # tell libtool we compile module not library
+ AM_LDFLAGS = \
+ -no-undefined -module -avoid-version -shared -export-dynamic \
+- -L$(libdir) \
+ $(GIO_LIBS)
+
+ # the module should be linked only with libfm, not libfm-gtk or whatever
diff --git a/meta/recipes-support/libfm/libfm/0001-Enclose-text-in-programlisting-into-CDATA.patch b/meta/recipes-support/libfm/libfm/0001-Enclose-text-in-programlisting-into-CDATA.patch
deleted file mode 100644
index 40e53291e1c..00000000000
--- a/meta/recipes-support/libfm/libfm/0001-Enclose-text-in-programlisting-into-CDATA.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From ed4ca8c0b17ff5d3c768b92409c1787e3f3f1841 Mon Sep 17 00:00:00 2001
-From: Andriy Grytsenko <andrej@rep.kiev.ua>
-Date: Sun, 26 Nov 2017 22:30:15 +0200
-Subject: [PATCH 2/2] Enclose text in <programlisting> into <![CDATA[
-
-New gtk-doc fails on tag-like data in it.
-See https://bugs.freedesktop.org/show_bug.cgi?id=101585
-That is definitely bug of gtk-doc but let workaround it.
-
-Upstream-Status: Backport [https://git.lxde.org/gitweb/?p=lxde/libfm.git;a=commit;h=b072ee0400432d72fdf86ba9fed74a7e0ec11ec1]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- src/base/fm-module.c | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/src/base/fm-module.c b/src/base/fm-module.c
-index d364b2d..2e8c978 100644
---- a/src/base/fm-module.c
-+++ b/src/base/fm-module.c
-@@ -44,7 +44,7 @@
- * of that type should include:
- * <example id="example-fm-dummy-h">
- * <title>Sample of fm-dummy.h</title>
-- * <programlisting>
-+ * <programlisting><![CDATA[
- * #include <libfm/fm.h>
- *
- * #define FM_MODULE_dummy_VERSION 1
-@@ -54,7 +54,7 @@
- * } FmDummyInit;
- *
- * extern FmDummyInit fm_module_init_dummy;
-- * </programlisting>
-+ * ]]></programlisting>
- * </example>
- * The FM_MODULE_dummy_VERSION is a number which should be increased each
- * time something in FmDummyInit structure is changed. The FmDummyInit
-@@ -65,7 +65,7 @@
- * module handling in your code:
- * <example id="example-fm-dummy-widget-c">
- * <title>Sample of fm-dummy-widget.c</title>
-- * <programlisting>
-+ * <programlisting><![CDATA[
- * #include "fm-dummy.h"
- *
- * FM_MODULE_DEFINE_TYPE(dummy, FmDummyInit, 1)
-@@ -87,7 +87,7 @@
- * result = module->get_new("test sample");
- * return result;
- * }
-- * </programlisting>
-+ * ]]></programlisting>
- * </example>
- *
- * Third thing application should do is to register module type on the
-@@ -108,7 +108,7 @@
- * interface (see the fm-dummy.h header example above):
- * <example id="example-fm-dummy-test-c">
- * <title>Sample of module dummy/test</title>
-- * <programlisting>
-+ * <programlisting><![CDATA[
- * #include "fm-dummy.h"
- *
- * FM_DEFINE_MODULE(dummy, test)
-@@ -121,7 +121,7 @@
- * FmDummyInit fm_module_init_dummy = {
- * fm_dummy_test_get_new;
- * };
-- * </programlisting>
-+ * ]]></programlisting>
- * </example>
- * The fm_module_init_dummy should be exactly the same structure that is
- * defined in the header file above.
---
-2.15.1
-
diff --git a/meta/recipes-support/libfm/libfm_1.2.5.bb b/meta/recipes-support/libfm/libfm_1.3.0.2.bb
index 596408353fa..62d6a51e871 100644
--- a/meta/recipes-support/libfm/libfm_1.2.5.bb
+++ b/meta/recipes-support/libfm/libfm_1.3.0.2.bb
@@ -13,11 +13,11 @@ DEPENDS = "glib-2.0 glib-2.0-native pango gtk+3 menu-cache intltool-native libex
SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/libfm-${PV}.tar.xz \
file://0001-Correctly-check-the-stamp-file-that-indicates-if-we-.patch \
- file://0001-Enclose-text-in-programlisting-into-CDATA.patch \
+ file://0001-Do-not-add-library-path-to-avoid-host-contamination.patch \
"
-SRC_URI[md5sum] = "a1ba9ae5e920f38b647dd511edd6c807"
-SRC_URI[sha256sum] = "c706bb1020cf5f2d6f5a9226f692ce1985947134dcf2bde64278bd0420779b5a"
+SRC_URI[md5sum] = "02a024714d51e0d37afc7bd596a44f3b"
+SRC_URI[sha256sum] = "18d06f7996ce1cf8947df6e106bc0338c6ae0c4138c316f2501f6f6f435c7c72"
inherit autotools pkgconfig gtk-doc gettext distro_features_check
ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
diff --git a/meta/recipes-support/libgcrypt/libgcrypt_1.8.2.bb b/meta/recipes-support/libgcrypt/libgcrypt_1.8.3.bb
index b36e653a876..44728a7c20d 100644
--- a/meta/recipes-support/libgcrypt/libgcrypt_1.8.2.bb
+++ b/meta/recipes-support/libgcrypt/libgcrypt_1.8.3.bb
@@ -21,8 +21,8 @@ SRC_URI = "${GNUPG_MIRROR}/libgcrypt/libgcrypt-${PV}.tar.bz2 \
file://0002-libgcrypt-fix-building-error-with-O2-in-sysroot-path.patch \
file://0004-tests-Makefile.am-fix-undefined-reference-to-pthread.patch \
"
-SRC_URI[md5sum] = "cfb0b5c79eab07686b6898160a407139"
-SRC_URI[sha256sum] = "c8064cae7558144b13ef0eb87093412380efa16c4ee30ad12ecb54886a524c07"
+SRC_URI[md5sum] = "3139c2402e844985a67fb288a930534d"
+SRC_URI[sha256sum] = "66ec90be036747602f2b48f98312361a9180c97c68a690a5f376fa0f67d0af7c"
BINCONFIG = "${bindir}/libgcrypt-config"
diff --git a/meta/recipes-support/libgpg-error/libgpg-error/pkgconfig.patch b/meta/recipes-support/libgpg-error/libgpg-error/pkgconfig.patch
index 9ffeedbe5a0..3066613d423 100644
--- a/meta/recipes-support/libgpg-error/libgpg-error/pkgconfig.patch
+++ b/meta/recipes-support/libgpg-error/libgpg-error/pkgconfig.patch
@@ -1,15 +1,26 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
+From ec309e20b5a27d42a5fb915c328d61e924ab5f19 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
-Index: libgpg-error-1.17/configure.ac
-===================================================================
---- libgpg-error-1.17.orig/configure.ac
-+++ libgpg-error-1.17/configure.ac
-@@ -529,6 +529,7 @@ AC_CONFIG_FILES([src/Makefile tests/Make
+Rebase to 1.28
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ configure.ac | 1 +
+ src/Makefile.am | 4 ++-
+ src/gpg-error.m4 | 71 +++--------------------------------------------------
+ src/gpg-error.pc.in | 11 +++++++++
+ 4 files changed, 18 insertions(+), 69 deletions(-)
+ create mode 100644 src/gpg-error.pc.in
+
+diff --git a/configure.ac b/configure.ac
+index aca9300..f7794e9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -621,6 +621,7 @@ AC_CONFIG_FILES([src/Makefile tests/Makefile])
AC_CONFIG_FILES([lang/Makefile lang/cl/Makefile lang/cl/gpg-error.asd])
AC_CONFIG_FILES([src/versioninfo.rc src/gpg-error.w32-manifest])
AC_CONFIG_FILES([src/gpg-error-config], [chmod +x src/gpg-error-config])
@@ -17,33 +28,33 @@ Index: libgpg-error-1.17/configure.ac
AC_OUTPUT
-Index: libgpg-error-1.17/src/Makefile.am
-===================================================================
---- libgpg-error-1.17.orig/src/Makefile.am
-+++ libgpg-error-1.17/src/Makefile.am
-@@ -75,6 +75,8 @@ nodist_include_HEADERS = gpg-error.h
- bin_SCRIPTS = gpg-error-config
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 268c2ab..95f8459 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -87,6 +87,8 @@ bin_SCRIPTS = gpg-error-config
+ nodist_bin_SCRIPTS = gpgrt-config
m4datadir = $(datadir)/aclocal
- m4data_DATA = gpg-error.m4
+ m4data_DATA = gpg-error.m4 gpgrt.m4
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = gpg-error.pc
EXTRA_DIST = mkstrtable.awk err-sources.h.in err-codes.h.in \
mkerrnos.awk errnos.in README \
-@@ -82,7 +84,7 @@ EXTRA_DIST = mkstrtable.awk err-sources.
+@@ -94,7 +96,7 @@ EXTRA_DIST = mkstrtable.awk err-sources.h.in err-codes.h.in \
mkheader.c gpg-error.h.in mkw32errmap.c w32-add.h w32ce-add.h \
- err-sources.h err-codes.h gpg-error-config.in gpg-error.m4 \
+ err-sources.h err-codes.h gpg-error-config.in gpg-error.m4 gpgrt.m4 \
gpg-error.vers gpg-error.def.in \
- versioninfo.rc.in gpg-error.w32-manifest.in \
+ versioninfo.rc.in gpg-error.w32-manifest.in gpg-error.pc \
$(lock_obj_pub)
BUILT_SOURCES = err-sources.h err-codes.h code-to-errno.h code-from-errno.h \
-Index: libgpg-error-1.17/src/gpg-error.m4
-===================================================================
---- libgpg-error-1.17.orig/src/gpg-error.m4
-+++ libgpg-error-1.17/src/gpg-error.m4
-@@ -26,73 +26,13 @@ dnl is added to the gpg_config_script_wa
+diff --git a/src/gpg-error.m4 b/src/gpg-error.m4
+index 60c88d8..2ef7e3e 100644
+--- a/src/gpg-error.m4
++++ b/src/gpg-error.m4
+@@ -26,73 +26,13 @@ dnl is added to the gpg_config_script_warn variable.
dnl
AC_DEFUN([AM_PATH_GPG_ERROR],
[ AC_REQUIRE([AC_CANONICAL_HOST])
@@ -132,10 +143,11 @@ Index: libgpg-error-1.17/src/gpg-error.m4
ifelse([$3], , :, [$3])
fi
AC_SUBST(GPG_ERROR_CFLAGS)
-Index: libgpg-error-1.17/src/gpg-error.pc.in
-===================================================================
+diff --git a/src/gpg-error.pc.in b/src/gpg-error.pc.in
+new file mode 100644
+index 0000000..bc0b174
--- /dev/null
-+++ libgpg-error-1.17/src/gpg-error.pc.in
++++ b/src/gpg-error.pc.in
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
@@ -148,3 +160,6 @@ Index: libgpg-error-1.17/src/gpg-error.pc.in
+Version: @VERSION@
+Libs: -L${libdir} -lgpg-error
+Cflags: -I${includedir}
+--
+1.8.3.1
+
diff --git a/meta/recipes-support/libgpg-error/libgpg-error_1.27.bb b/meta/recipes-support/libgpg-error/libgpg-error_1.32.bb
index b74f079f5d6..a4c720be9d8 100644
--- a/meta/recipes-support/libgpg-error/libgpg-error_1.27.bb
+++ b/meta/recipes-support/libgpg-error/libgpg-error_1.32.bb
@@ -5,7 +5,7 @@ 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;endline=23;md5=beae1e44d8d5c265d194760276033a7c \
+ file://src/gpg-error.h.in;endline=19;md5=e9be7dd9dc7686d91b5421a091c212cc \
file://src/init.c;endline=20;md5=872b2389fe9bae7ffb80d2b91225afbc"
@@ -15,13 +15,15 @@ UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
SRC_URI = "${GNUPG_MIRROR}/libgpg-error/libgpg-error-${PV}.tar.bz2 \
file://pkgconfig.patch \
"
-
-SRC_URI[md5sum] = "5217ef3e76a7275a2a3b569a12ddc989"
-SRC_URI[sha256sum] = "4f93aac6fecb7da2b92871bb9ee33032be6a87b174f54abf8ddf0911a22d29d2"
+SRC_URI[md5sum] = "ef3d928a5a453fa701ecc3bb22be1c64"
+SRC_URI[sha256sum] = "c345c5e73cc2332f8d50db84a2280abfb1d8f6d4f1858b9daa30404db44540ca"
BINCONFIG = "${bindir}/gpg-error-config"
-inherit autotools binconfig-disabled pkgconfig gettext multilib_header
+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
@@ -41,7 +43,7 @@ do_compile_prepend() {
mips*el) TUPLE=mipsel-unknown-linux-gnu ;;
mips*) TUPLE=mips-unknown-linux-gnu ;;
x86_64) TUPLE=x86_64-pc-linux-gnu ;;
- *) TUPLE=${TARGET_ARCH}-unknown-linux-gnu ;;
+ *) TUPLE=${TARGET_ARCH}-unknown-linux-gnu ;;
esac
if [ -n "$TARGET_FILE" ]; then
diff --git a/meta/recipes-support/libical/libical_2.0.0.bb b/meta/recipes-support/libical/libical_2.0.0.bb
index dcc21cc16ee..daa47abcbcf 100644
--- a/meta/recipes-support/libical/libical_2.0.0.bb
+++ b/meta/recipes-support/libical/libical_2.0.0.bb
@@ -17,3 +17,10 @@ SRC_URI[sha256sum] = "654c11f759c19237be39f6ad401d917e5a05f36f1736385ed958e60cf2
UPSTREAM_CHECK_URI = "https://github.com/libical/libical/releases"
inherit cmake pkgconfig
+
+do_install_append_class-target () {
+ # Remove build host references
+ sed -i \
+ -e 's,${STAGING_LIBDIR},${libdir},g' \
+ ${D}${libdir}/cmake/LibIcal/LibIcalTargets-noconfig.cmake
+}
diff --git a/meta/recipes-support/libpcre/libpcre2_10.30.bb b/meta/recipes-support/libpcre/libpcre2_10.31.bb
index 46c2d630e5a..a10c312e973 100644
--- a/meta/recipes-support/libpcre/libpcre2_10.30.bb
+++ b/meta/recipes-support/libpcre/libpcre2_10.31.bb
@@ -8,14 +8,14 @@ SUMMARY = "Perl Compatible Regular Expressions version 2"
HOMEPAGE = "http://www.pcre.org"
SECTION = "devel"
LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://LICENCE;md5=12d55e15a0c6da5c645ba40382bd3293"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=f5e4bde9fd0493d0967b4dba9899590f"
SRC_URI = "https://ftp.pcre.org/pub/pcre/pcre2-${PV}.tar.bz2 \
file://pcre-cross.patch \
"
-SRC_URI[md5sum] = "d3adf4b130eed854a530390f00020a65"
-SRC_URI[sha256sum] = "90bd41c605d30e3745771eb81928d779f158081a51b2f314bbcc1f73de5773db"
+SRC_URI[md5sum] = "e0b91c891a3c49050f7fd15de33d0ba4"
+SRC_URI[sha256sum] = "e07d538704aa65e477b6a392b32ff9fc5edf75ab9a40ddfc876186c4ff4d68ac"
CVE_PRODUCT = "pcre2"
diff --git a/meta/recipes-support/libpcre/libpcre_8.41.bb b/meta/recipes-support/libpcre/libpcre_8.42.bb
index 0187c08f505..3a488c00b71 100644
--- a/meta/recipes-support/libpcre/libpcre_8.41.bb
+++ b/meta/recipes-support/libpcre/libpcre_8.42.bb
@@ -6,7 +6,7 @@ SUMMARY = "Perl Compatible Regular Expressions"
HOMEPAGE = "http://www.pcre.org"
SECTION = "devel"
LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://LICENCE;md5=60da32d84d067f53e22071c4ecb4384d"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=fc5026403b44c868c25fc9546f7feb05"
SRC_URI = "https://ftp.pcre.org/pub/pcre/pcre-${PV}.tar.bz2 \
file://pcre-cross.patch \
file://fix-pcre-name-collision.patch \
@@ -14,8 +14,8 @@ SRC_URI = "https://ftp.pcre.org/pub/pcre/pcre-${PV}.tar.bz2 \
file://Makefile \
"
-SRC_URI[md5sum] = "c160d22723b1670447341b08c58981c1"
-SRC_URI[sha256sum] = "e62c7eac5ae7c0e7286db61ff82912e1c0b7a0c13706616e94a7dd729321b530"
+SRC_URI[md5sum] = "085b6aa253e0f91cae70b3cdbe8c1ac2"
+SRC_URI[sha256sum] = "2cd04b7c887808be030254e8d77de11d3fe9d4505c39d4b15d2664ffe8bf9301"
CVE_PRODUCT = "pcre"
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2018-12910.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2018-12910.patch
new file mode 100644
index 00000000000..158bf930934
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2018-12910.patch
@@ -0,0 +1,32 @@
+CVE: CVE-2018-12910
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From db2b0d5809d5f8226d47312b40992cadbcde439f Mon Sep 17 00:00:00 2001
+From: Michael Catanzaro <mcatanzaro@igalia.com>
+Date: Sun, 24 Jun 2018 19:46:19 -0500
+Subject: [PATCH] cookie-jar: bail if hostname is an empty string
+
+There are several other ways to fix the problem with this function, but
+skipping over all of the code is probably the simplest.
+
+Fixes #3
+---
+ libsoup/soup-cookie-jar.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libsoup/soup-cookie-jar.c b/libsoup/soup-cookie-jar.c
+index 2369c8a7..b2b78909 100644
+--- a/libsoup/soup-cookie-jar.c
++++ b/libsoup/soup-cookie-jar.c
+@@ -307,7 +307,7 @@ get_cookies (SoupCookieJar *jar, SoupURI *uri, gboolean for_http, gboolean copy_
+
+ priv = soup_cookie_jar_get_instance_private (jar);
+
+- if (!uri->host)
++ if (!uri->host || !uri->host[0])
+ return NULL;
+
+ /* The logic here is a little weird, but the plan is that if
+--
+2.17.1
diff --git a/meta/recipes-support/libsoup/libsoup-2.4_2.60.3.bb b/meta/recipes-support/libsoup/libsoup-2.4_2.62.2.bb
index e2e7ff4aa86..ba3e86a03ca 100644
--- a/meta/recipes-support/libsoup/libsoup-2.4_2.60.3.bb
+++ b/meta/recipes-support/libsoup/libsoup-2.4_2.62.2.bb
@@ -9,10 +9,10 @@ DEPENDS = "glib-2.0 glib-2.0-native libxml2 sqlite3 intltool-native"
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[md5sum] = "4cf8937d161d3dd71a65f1684e317824"
-SRC_URI[sha256sum] = "1b0dc762f23abe4e0d29b77370e539fd35f31d8e8e0318d6ddccff395be68a22"
+SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz \
+ file://CVE-2018-12910.patch"
+SRC_URI[md5sum] = "eaf99b04ac8968ed2b26f2509ba75584"
+SRC_URI[sha256sum] = "9e536fe3da60b25d2c63addb84a9d5072d00b0d8b8cbeabc629a6bcd63f879b6"
S = "${WORKDIR}/libsoup-${PV}"
diff --git a/meta/recipes-support/libunistring/libunistring_0.9.9.bb b/meta/recipes-support/libunistring/libunistring_0.9.10.bb
index ab7cba522bc..97fac4ecfa6 100644
--- a/meta/recipes-support/libunistring/libunistring_0.9.9.bb
+++ b/meta/recipes-support/libunistring/libunistring_0.9.10.bb
@@ -16,15 +16,15 @@ 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=efb80a3799a60f95feaf80661d4f204c \
+ 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] = "4f689e37e4c3bd67de5786aa51d98b13"
-SRC_URI[sha256sum] = "f5e90c08f9e5427ca3a2c0c53f19aa38b25c500913510ad25afef86448bea84a"
+SRC_URI[md5sum] = "0d3274e9838396b12200f8b54ddaf43b"
+SRC_URI[sha256sum] = "a82e5b333339a88ea4608e4635479a1cfb2e01aafb925e1290b65710d43f610b"
inherit autotools texinfo
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libunwind/libunwind.inc b/meta/recipes-support/libunwind/libunwind.inc
index b9c532d3ad2..36851d07ed6 100644
--- a/meta/recipes-support/libunwind/libunwind.inc
+++ b/meta/recipes-support/libunwind/libunwind.inc
@@ -14,8 +14,6 @@ PACKAGECONFIG[latexdocs] = "--enable-documentation, --disable-documentation, lat
EXTRA_OECONF_arm = "--enable-debug-frame"
EXTRA_OECONF_aarch64 = "--enable-debug-frame"
-SECURITY_LDFLAGS_append_libc-musl = " -lssp_nonshared -lssp"
-
do_install_append () {
oe_multilib_header libunwind.h
}
diff --git a/meta/recipes-support/libunwind/libunwind_1.2.1.bb b/meta/recipes-support/libunwind/libunwind_1.2.1.bb
index 37a762486f4..e7fb2b21904 100644
--- a/meta/recipes-support/libunwind/libunwind_1.2.1.bb
+++ b/meta/recipes-support/libunwind/libunwind_1.2.1.bb
@@ -21,3 +21,5 @@ 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/liburcu/files/Add-support-for-the-RISC-V-architecture.patch b/meta/recipes-support/liburcu/files/Add-support-for-the-RISC-V-architecture.patch
new file mode 100644
index 00000000000..b026782bd5e
--- /dev/null
+++ b/meta/recipes-support/liburcu/files/Add-support-for-the-RISC-V-architecture.patch
@@ -0,0 +1,157 @@
+From fdfad81006c2c964781b616f0a75578507be809c Mon Sep 17 00:00:00 2001
+From: Michael Jeanson <mjeanson@efficios.com>
+Date: Wed, 21 Mar 2018 17:38:41 -0400
+Subject: [PATCH] Add support for the RISC-V architecture
+
+Tested in QEMU 2.12.0-rc0, requires --disable-compiler-tls to go
+through the benchmarks reliably.
+
+Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+Upstream-Status: Backport
+---
+ configure.ac | 1 +
+ include/Makefile.am | 2 ++
+ include/urcu/arch/riscv.h | 49 ++++++++++++++++++++++++++++++++++++++++++++
+ include/urcu/uatomic/riscv.h | 44 +++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 96 insertions(+)
+ create mode 100644 include/urcu/arch/riscv.h
+ create mode 100644 include/urcu/uatomic/riscv.h
+
+diff --git a/configure.ac b/configure.ac
+index d0b4a9ac..9145081a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -151,6 +151,7 @@ AS_CASE([$host_cpu],
+ [tile*], [ARCHTYPE="tile"],
+ [hppa*], [ARCHTYPE="hppa"],
+ [m68k], [ARCHTYPE="m68k"],
++ [riscv*], [ARCHTYPE="riscv"],
+ [ARCHTYPE="unknown"]
+ )
+
+diff --git a/include/Makefile.am b/include/Makefile.am
+index dcdf304b..36667b43 100644
+--- a/include/Makefile.am
++++ b/include/Makefile.am
+@@ -27,6 +27,7 @@ EXTRA_DIST = urcu/arch/aarch64.h \
+ urcu/arch/mips.h \
+ urcu/arch/nios2.h \
+ urcu/arch/ppc.h \
++ urcu/arch/riscv.h \
+ urcu/arch/s390.h \
+ urcu/arch/sparc64.h \
+ urcu/arch/tile.h \
+@@ -43,6 +44,7 @@ EXTRA_DIST = urcu/arch/aarch64.h \
+ urcu/uatomic/mips.h \
+ urcu/uatomic/nios2.h \
+ urcu/uatomic/ppc.h \
++ urcu/uatomic/riscv.h \
+ urcu/uatomic/s390.h \
+ urcu/uatomic/sparc64.h \
+ urcu/uatomic/tile.h \
+diff --git a/include/urcu/arch/riscv.h b/include/urcu/arch/riscv.h
+new file mode 100644
+index 00000000..1fd7d62b
+--- /dev/null
++++ b/include/urcu/arch/riscv.h
+@@ -0,0 +1,49 @@
++#ifndef _URCU_ARCH_RISCV_H
++#define _URCU_ARCH_RISCV_H
++
++/*
++ * arch/riscv.h: definitions for the RISC-V architecture
++ *
++ * Copyright (c) 2018 Michael Jeanson <mjeanson@efficios.com>
++ *
++ * 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
++ */
++
++#include <urcu/compiler.h>
++#include <urcu/config.h>
++#include <urcu/syscall-compat.h>
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++#include <stdlib.h>
++#include <sys/time.h>
++
++/*
++ * On Linux, define the membarrier system call number if not yet available in
++ * the system headers.
++ */
++#if (defined(__linux__) && !defined(__NR_membarrier))
++#define __NR_membarrier 283
++#endif
++
++#ifdef __cplusplus
++}
++#endif
++
++#include <urcu/arch/generic.h>
++
++#endif /* _URCU_ARCH_RISCV_H */
+diff --git a/include/urcu/uatomic/riscv.h b/include/urcu/uatomic/riscv.h
+new file mode 100644
+index 00000000..a6700e17
+--- /dev/null
++++ b/include/urcu/uatomic/riscv.h
+@@ -0,0 +1,44 @@
++/*
++ * Atomic exchange operations for the RISC-V architecture. Let GCC do it.
++ *
++ * Copyright (c) 2018 Michael Jeanson <mjeanson@efficios.com>
++ *
++ * 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.
++ */
++
++#ifndef _URCU_ARCH_UATOMIC_RISCV_H
++#define _URCU_ARCH_UATOMIC_RISCV_H
++
++#include <urcu/compiler.h>
++#include <urcu/system.h>
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++#define UATOMIC_HAS_ATOMIC_BYTE
++#define UATOMIC_HAS_ATOMIC_SHORT
++
++#ifdef __cplusplus
++}
++#endif
++
++#include <urcu/uatomic/generic.h>
++
++#endif /* _URCU_ARCH_UATOMIC_RISCV_H */
diff --git a/meta/recipes-support/liburcu/liburcu_0.10.1.bb b/meta/recipes-support/liburcu/liburcu_0.10.1.bb
index 459c04a7a1d..5eb91e144b6 100644
--- a/meta/recipes-support/liburcu/liburcu_0.10.1.bb
+++ b/meta/recipes-support/liburcu/liburcu_0.10.1.bb
@@ -8,12 +8,17 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=e548d28737289d75a8f1e01ba2fd7825 \
file://include/urcu/uatomic/x86.h;beginline=4;endline=21;md5=58e50bbd8a2f073bb5500e6554af0d0b"
SRC_URI = "http://lttng.org/files/urcu/userspace-rcu-${PV}.tar.bz2 \
+ file://Add-support-for-the-RISC-V-architecture.patch \
"
SRC_URI[md5sum] = "281a2f92fdc39c40ad6b76f6631fdbd7"
SRC_URI[sha256sum] = "9c09220be4435dc27fcd22d291707b94b97f159e0c442fbcd60c168f8f79eb06"
S = "${WORKDIR}/userspace-rcu-${PV}"
-inherit autotools
+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/libusb-compat/0001-usb.h-Include-sys-types.h.patch b/meta/recipes-support/libusb/libusb-compat/0001-usb.h-Include-sys-types.h.patch
deleted file mode 100644
index b88440dec93..00000000000
--- a/meta/recipes-support/libusb/libusb-compat/0001-usb.h-Include-sys-types.h.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 340f911f9e3f4ff6b01682c5341c959060782af2 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 2 Apr 2015 19:18:45 -0700
-Subject: [PATCH] usb.h: Include sys/types.h
-
-We need the definitions for things like u_intX_t
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- libusb/usb.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/libusb/usb.h b/libusb/usb.h
-index 84e730f..caffae2 100644
---- a/libusb/usb.h
-+++ b/libusb/usb.h
-@@ -31,6 +31,8 @@
-
- #include <dirent.h>
-
-+#include <sys/types.h>
-+
- /*
- * USB spec information
- *
---
-2.1.4
-
diff --git a/meta/recipes-support/libusb/libusb-compat_0.1.5.bb b/meta/recipes-support/libusb/libusb-compat_0.1.5.bb
deleted file mode 100644
index 1ddbe238fc0..00000000000
--- a/meta/recipes-support/libusb/libusb-compat_0.1.5.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-SUMMARY = "libusb-0.1 compatibility layer for libusb1"
-DESCRIPTION = "libusb-0.1 compatible layer for libusb1, a drop-in replacement \
-that aims to look, feel and behave exactly like libusb-0.1"
-HOMEPAGE = "http://www.libusb.org/"
-BUGTRACKER = "http://www.libusb.org/report"
-SECTION = "libs"
-
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=f2ac5f3ac4835e8f91324a26a590a423"
-DEPENDS = "libusb1"
-
-# Few packages are known not to work with libusb-compat (e.g. libmtp-1.0.0),
-# so here libusb-0.1 is removed completely instead of adding virtual/libusb0.
-# Besides, libusb-0.1 uses a per 1ms polling that hurts a lot to power
-# consumption.
-PROVIDES = "libusb virtual/libusb0"
-BBCLASSEXTEND = "native nativesdk"
-
-PE = "1"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/libusb/libusb-compat-${PV}.tar.bz2 \
- file://0001-usb.h-Include-sys-types.h.patch \
- "
-
-SRC_URI[md5sum] = "2780b6a758a1e2c2943bdbf7faf740e4"
-SRC_URI[sha256sum] = "404ef4b6b324be79ac1bfb3d839eac860fbc929e6acb1ef88793a6ea328bc55a"
-
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/libusb/files/libusb-compat-0.1/"
-UPSTREAM_CHECK_REGEX = "/libusb-compat-(?P<pver>(\d+[\.\-_]*)+)/$"
-
-BINCONFIG = "${bindir}/libusb-config"
-
-inherit autotools pkgconfig binconfig-disabled lib_package
-
-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
-}
diff --git a/meta/recipes-support/libusb/libusb1/run-ptest b/meta/recipes-support/libusb/libusb1/run-ptest
new file mode 100755
index 00000000000..646a966ef9d
--- /dev/null
+++ b/meta/recipes-support/libusb/libusb1/run-ptest
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+echo
+echo "---------------------------- libusb1 tests ---------------------------"
+echo
+
+./stress | tr '\n' ' ' | \
+sed 's/Starting test run: \([a-zA-Z_]*\)\.\.\. \([a-zA-Z_]*\) (.) /\2 \1\n/g' | \
+sed '$d' | \
+sed '{
+ s/^Success/PASS:/g
+ s/^Failure/FAIL:/g
+ s/^Error/FAIL:/g
+ s/^Skip/SKIP:/g
+}'
diff --git a/meta/recipes-support/libusb/libusb1_1.0.21.bb b/meta/recipes-support/libusb/libusb1_1.0.22.bb
index 1fefd147568..0c6e116dd7b 100644
--- a/meta/recipes-support/libusb/libusb1_1.0.21.bb
+++ b/meta/recipes-support/libusb/libusb1_1.0.22.bb
@@ -10,14 +10,15 @@ BBCLASSEXTEND = "native nativesdk"
SRC_URI = "${SOURCEFORGE_MIRROR}/libusb/libusb-${PV}.tar.bz2 \
file://no-dll.patch \
+ file://run-ptest \
"
-SRC_URI[md5sum] = "1da9ea3c27b3858fa85c5f4466003e44"
-SRC_URI[sha256sum] = "7dce9cce9a81194b7065ee912bcd55eeffebab694ea403ffb91b67db66b1824b"
+SRC_URI[md5sum] = "466267889daead47674df933cea9cacb"
+SRC_URI[sha256sum] = "75aeb9d59a4fdb800d329a545c2e6799f732362193b465ea198f2aa275518157"
S = "${WORKDIR}/libusb-${PV}"
-inherit autotools pkgconfig
+inherit autotools pkgconfig ptest
# Don't configure udev by default since it will cause a circular
# dependecy with udev package, which depends on libusb
@@ -30,6 +31,14 @@ do_install_append() {
fi
}
+do_compile_ptest() {
+ oe_runmake -C tests stress
+}
+
+do_install_ptest() {
+ install -m 755 ${B}/tests/.libs/stress ${D}${PTEST_PATH}
+}
+
FILES_${PN} += "${base_libdir}/*.so.*"
FILES_${PN}-dev += "${base_libdir}/*.so ${base_libdir}/*.la"
diff --git a/meta/recipes-support/libxslt/libxslt/fix-rvts-handling.patch b/meta/recipes-support/libxslt/libxslt/fix-rvts-handling.patch
new file mode 100644
index 00000000000..ea3ae51e937
--- /dev/null
+++ b/meta/recipes-support/libxslt/libxslt/fix-rvts-handling.patch
@@ -0,0 +1,80 @@
+libxslt-1.1.32: Fix handling of RVTs returned from nested EXSLT functions
+
+[No upstream tracking] -- https://bugzilla.gnome.org/show_bug.cgi?id=792580
+
+Set the context variable to NULL when evaluating EXSLT functions.
+Fixes potential use-after-free errors or memory leaks.
+
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxslt/commit/8bd32f7753ac253a54279a0b6a88d15a57076bb0]
+bug: 792580
+Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+
+diff --git a/libexslt/functions.c b/libexslt/functions.c
+index dc794e3..8511cb0 100644
+--- a/libexslt/functions.c
++++ b/libexslt/functions.c
+@@ -280,6 +280,7 @@ exsltFuncFunctionFunction (xmlXPathParserContextPtr ctxt, int nargs) {
+ exsltFuncFunctionData *func;
+ xmlNodePtr paramNode, oldInsert, fake;
+ int oldBase;
++ void *oldCtxtVar;
+ xsltStackElemPtr params = NULL, param;
+ xsltTransformContextPtr tctxt = xsltXPathGetTransformContext(ctxt);
+ int i, notSet;
+@@ -418,11 +419,14 @@ exsltFuncFunctionFunction (xmlXPathParserContextPtr ctxt, int nargs) {
+ fake = xmlNewDocNode(tctxt->output, NULL,
+ (const xmlChar *)"fake", NULL);
+ oldInsert = tctxt->insert;
++ oldCtxtVar = tctxt->contextVariable;
+ tctxt->insert = fake;
++ tctxt->contextVariable = NULL;
+ xsltApplyOneTemplate (tctxt, tctxt->node,
+ func->content, NULL, NULL);
+ xsltLocalVariablePop(tctxt, tctxt->varsBase, -2);
+ tctxt->insert = oldInsert;
++ tctxt->contextVariable = oldCtxtVar;
+ tctxt->varsBase = oldBase; /* restore original scope */
+ if (params != NULL)
+ xsltFreeStackElemList(params);
+diff --git a/tests/docs/bug-209.xml b/tests/docs/bug-209.xml
+new file mode 100644
+index 0000000..69d62f2
+--- /dev/null
++++ b/tests/docs/bug-209.xml
+@@ -0,0 +1 @@
++<doc/>
+diff --git a/tests/general/bug-209.out b/tests/general/bug-209.out
+new file mode 100644
+index 0000000..e829790
+--- /dev/null
++++ b/tests/general/bug-209.out
+@@ -0,0 +1,2 @@
++<?xml version="1.0"?>
++<result/>
+diff --git a/tests/general/bug-209.xsl b/tests/general/bug-209.xsl
+new file mode 100644
+index 0000000..fe69ac6
+--- /dev/null
++++ b/tests/general/bug-209.xsl
+@@ -0,0 +1,21 @@
++<xsl:stylesheet
++ version="1.0"
++ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
++ xmlns:func="http://exslt.org/functions"
++ extension-element-prefixes="func">
++
++ <xsl:template match="/">
++ <xsl:variable name="v" select="func:a()" />
++ <xsl:copy-of select="$v"/>
++ </xsl:template>
++
++ <func:function name="func:a">
++ <func:result select="func:b()" />
++ </func:function>
++
++ <func:function name="func:b">
++ <func:result>
++ <result/>
++ </func:result>
++ </func:function>
++</xsl:stylesheet>
diff --git a/meta/recipes-support/libxslt/libxslt_1.1.32.bb b/meta/recipes-support/libxslt/libxslt_1.1.32.bb
index 6a03f776992..f0fa5e723ff 100644
--- a/meta/recipes-support/libxslt/libxslt_1.1.32.bb
+++ b/meta/recipes-support/libxslt/libxslt_1.1.32.bb
@@ -8,7 +8,10 @@ LIC_FILES_CHKSUM = "file://Copyright;md5=0cd9a07afbeb24026c9b03aecfeba458"
SECTION = "libs"
DEPENDS = "libxml2"
-SRC_URI = "http://xmlsoft.org/sources/libxslt-${PV}.tar.gz"
+SRC_URI = "http://xmlsoft.org/sources/libxslt-${PV}.tar.gz \
+ file://fix-rvts-handling.patch \
+ "
+
SRC_URI[md5sum] = "1fc72f98e98bf4443f1651165f3aa146"
SRC_URI[sha256sum] = "526ecd0abaf4a7789041622c3950c0e7f2c4c8835471515fd77eec684a355460"
diff --git a/meta/recipes-support/libyaml/libyaml_0.1.7.bb b/meta/recipes-support/libyaml/libyaml_0.2.1.bb
index b167f031a8f..d77891825fc 100644
--- a/meta/recipes-support/libyaml/libyaml_0.1.7.bb
+++ b/meta/recipes-support/libyaml/libyaml_0.2.1.bb
@@ -5,13 +5,11 @@ HOMEPAGE = "http://pyyaml.org/wiki/LibYAML"
SECTION = "libs/devel"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=6015f088759b10e0bc2bf64898d4ae17"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5591701d32590f9fa94f3bfee820b634"
-SRC_URI = "http://pyyaml.org/download/libyaml/yaml-${PV}.tar.gz \
- "
-
-SRC_URI[md5sum] = "1abf45bd3a96374fa55ca63b32f9f2f9"
-SRC_URI[sha256sum] = "8088e457264a98ba451a90b8661fcb4f9d6f478f7265d48322a196cec2480729"
+SRC_URI = "http://pyyaml.org/download/libyaml/yaml-${PV}.tar.gz"
+SRC_URI[md5sum] = "72724b9736923c517e5a8fc6757ef03d"
+SRC_URI[sha256sum] = "78281145641a080fb32d6e7a87b9c0664d611dcb4d542e90baf731f51cbb59cd"
S = "${WORKDIR}/yaml-${PV}"
diff --git a/meta/recipes-support/lz4/files/0001-tests-Makefile-don-t-use-LIBDIR-as-variable.patch b/meta/recipes-support/lz4/files/0001-tests-Makefile-don-t-use-LIBDIR-as-variable.patch
deleted file mode 100644
index 00494e8019e..00000000000
--- a/meta/recipes-support/lz4/files/0001-tests-Makefile-don-t-use-LIBDIR-as-variable.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From d4768d9e29b805096a86aa13c0d30ee8215af4df Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Mon, 26 Jun 2017 12:07:09 +0300
-Subject: [PATCH] tests/Makefile: don't use LIBDIR as variable
-
-LIBDIR may be overriden with a environment variable: In this case make
-clean breaks. Use another variable name.
-
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Upstream-Status: Backport
----
- tests/Makefile | 26 +++++++++++++-------------
- 1 file changed, 13 insertions(+), 13 deletions(-)
-
-diff --git a/tests/Makefile b/tests/Makefile
-index 97fa782..51dd038 100644
---- a/tests/Makefile
-+++ b/tests/Makefile
-@@ -32,7 +32,7 @@ DESTDIR ?=
- PREFIX ?= /usr/local
- BINDIR := $(PREFIX)/bin
- MANDIR := $(PREFIX)/share/man/man1
--LIBDIR := ../lib
-+LZ4DIR := ../lib
- PRGDIR := ../programs
- VOID := /dev/null
- TESTDIR := versionsTest
-@@ -43,7 +43,7 @@ CFLAGS += -g -Wall -Wextra -Wundef -Wcast-qual -Wcast-align -Wshadow -Wswitch-e
- -Wdeclaration-after-statement -Wstrict-prototypes \
- -Wpointer-arith -Wstrict-aliasing=1
- CFLAGS += $(MOREFLAGS)
--CPPFLAGS:= -I$(LIBDIR) -I$(PRGDIR) -DXXH_NAMESPACE=LZ4_
-+CPPFLAGS:= -I$(LZ4DIR) -I$(PRGDIR) -DXXH_NAMESPACE=LZ4_
- FLAGS = $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
-
-
-@@ -79,31 +79,31 @@ lz4c32: # create a 32-bits version for 32/64 interop tests
- $(MAKE) -C $(PRGDIR) clean $@ CFLAGS="-m32 $(CFLAGS)"
- cp $(LZ4) $(LZ4)c32
-
--fullbench : $(LIBDIR)/lz4.o $(LIBDIR)/lz4hc.o $(LIBDIR)/lz4frame.o $(LIBDIR)/xxhash.o fullbench.c
-+fullbench : $(LZ4DIR)/lz4.o $(LZ4DIR)/lz4hc.o $(LZ4DIR)/lz4frame.o $(LZ4DIR)/xxhash.o fullbench.c
- $(CC) $(FLAGS) $^ -o $@$(EXT)
-
--fullbench-lib: fullbench.c $(LIBDIR)/xxhash.c
-- $(MAKE) -C $(LIBDIR) liblz4.a
-- $(CC) $(FLAGS) $^ -o $@$(EXT) $(LIBDIR)/liblz4.a
-+fullbench-lib: fullbench.c $(LZ4DIR)/xxhash.c
-+ $(MAKE) -C $(LZ4DIR) liblz4.a
-+ $(CC) $(FLAGS) $^ -o $@$(EXT) $(LZ4DIR)/liblz4.a
-
--fullbench-dll: fullbench.c $(LIBDIR)/xxhash.c
-- $(MAKE) -C $(LIBDIR) liblz4
-- $(CC) $(FLAGS) $^ -o $@$(EXT) -DLZ4_DLL_IMPORT=1 $(LIBDIR)/dll/liblz4.dll
-+fullbench-dll: fullbench.c $(LZ4DIR)/xxhash.c
-+ $(MAKE) -C $(LZ4DIR) liblz4
-+ $(CC) $(FLAGS) $^ -o $@$(EXT) -DLZ4_DLL_IMPORT=1 $(LZ4DIR)/dll/liblz4.dll
-
--fuzzer : $(LIBDIR)/lz4.o $(LIBDIR)/lz4hc.o $(LIBDIR)/xxhash.o fuzzer.c
-+fuzzer : $(LZ4DIR)/lz4.o $(LZ4DIR)/lz4hc.o $(LZ4DIR)/xxhash.o fuzzer.c
- $(CC) $(FLAGS) $^ -o $@$(EXT)
-
--frametest: $(LIBDIR)/lz4frame.o $(LIBDIR)/lz4.o $(LIBDIR)/lz4hc.o $(LIBDIR)/xxhash.o frametest.c
-+frametest: $(LZ4DIR)/lz4frame.o $(LZ4DIR)/lz4.o $(LZ4DIR)/lz4hc.o $(LZ4DIR)/xxhash.o frametest.c
- $(CC) $(FLAGS) $^ -o $@$(EXT)
-
--fasttest: $(LIBDIR)/lz4.o fasttest.c
-+fasttest: $(LZ4DIR)/lz4.o fasttest.c
- $(CC) $(FLAGS) $^ -o $@$(EXT)
-
- datagen : $(PRGDIR)/datagen.c datagencli.c
- $(CC) $(FLAGS) -I$(PRGDIR) $^ -o $@$(EXT)
-
- clean:
-- @$(MAKE) -C $(LIBDIR) $@ > $(VOID)
-+ @$(MAKE) -C $(LZ4DIR) $@ > $(VOID)
- @$(MAKE) -C $(PRGDIR) $@ > $(VOID)
- @$(RM) core *.o *.test tmp* \
- fullbench-dll$(EXT) fullbench-lib$(EXT) \
---
-2.1.4
-
diff --git a/meta/recipes-support/lz4/lz4_1.7.4.bb b/meta/recipes-support/lz4/lz4_1.8.2.bb
index 86a1ab9ab95..5ad17e1f79b 100644
--- a/meta/recipes-support/lz4/lz4_1.7.4.bb
+++ b/meta/recipes-support/lz4/lz4_1.8.2.bb
@@ -2,18 +2,18 @@ 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\
+LIC_FILES_CHKSUM = "file://lib/LICENSE;md5=ebc2ea4814a64de7708f1571904b32cc \
file://programs/COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://LICENSE;md5=7f2857d58beff6d04137bf9b09e5ffb6"
+ file://LICENSE;md5=d57c0d21cb917fb4e0af2454aa48b956 \
+ "
PE = "1"
-SRCREV = "7bb64ff2b69a9f8367de9ab483cdadf42b4c1b65"
+SRCREV = "b3692db46d2b23a7c0af2d5e69988c94f126e10a"
SRC_URI = "git://github.com/lz4/lz4.git \
- file://0001-tests-Makefile-don-t-use-LIBDIR-as-variable.patch \
file://run-ptest \
-"
+ "
UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>.*)"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-support/mpfr/mpfr/long-long-thumb.patch b/meta/recipes-support/mpfr/mpfr/long-long-thumb.patch
deleted file mode 100644
index ca7100eb298..00000000000
--- a/meta/recipes-support/mpfr/mpfr/long-long-thumb.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 84021b1e236508169be65e802a9c0a25fc9a8827 Mon Sep 17 00:00:00 2001
-From: Phil Blundell <philb@gnu.org>
-Date: Mon, 27 Oct 2008 22:26:35 +0000
-Subject: [PATCH] mpfr: crusade against inline assembler
-
-Without this, build fails for thumb:
-| {standard input}: Assembler messages:
-| {standard input}:199: Error: selected processor does not support Thumb mode `umull sl,r0,r2,r1'
-| {standard input}:214: Error: selected processor does not support Thumb mode `umull sl,r2,r1,fp'
-| {standard input}:219: Error: instruction not supported in Thumb16 mode -- `adds fp,r0,sl'
-| {standard input}:220: Error: unshifted register required -- `adc r2,r2,#0'
-| {standard input}:235: Error: selected processor does not support Thumb mode `umull r0,sl,r1,r3'
-| {standard input}:244: Error: selected processor does not support Thumb mode `umull fp,ip,r1,r3'
-| {standard input}:253: Error: instruction not supported in Thumb16 mode -- `adds r3,sl,fp'
-| {standard input}:254: Error: unshifted register required -- `adc ip,ip,#0'
-| {standard input}:259: Error: instruction not supported in Thumb16 mode -- `adds sl,r1,r0'
-| {standard input}:642: Error: selected processor does not support Thumb mode `umull r0,r2,r3,r1'
-| ../arm-oe-linux-gnueabi-libtool --tag=CC --mode=compile arm-oe-linux-gnueabi-gcc -march=armv5te -mthumb -mthumb-interwork -mtune=xscale --sysroot=/OE/shr-core/tmp-eglibc/sysroots/spitz -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_LOCALE_H=1 -DHAVE_WCHAR_H=1 -DHAVE_STDARG=1 -DHAVE_SYS_TIME_H=1 -DHAVE_ALLOCA_H=1 -DHAVE_STDINT_H=1 -DHAVE_VA_COPY=1 -DHAVE_SETLOCALE=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_LONG_LONG=1 -DHAVE_INTMAX_T=1 -DMPFR_HAVE_INTMAX_MAX=1 -DMPFR_HAVE_FESETROUND=1 -DHAVE_ROUND=1 -DHAVE_TRUNC=1 -DHAVE_FLOOR=1 -DHAVE_CEIL=1 -DHAVE_NEARBYINT=1 -DLT_OBJDIR=\".libs/\" -DHAVE_ATTRIBUTE_MODE=1 -DHAVE___GMPN_ROOTREM=1 -DHAVE___GMPN_SBPI1_DIVAPPR_Q=1 -I. -O2 -pipe -g -feliminate-unused-debug-types -ffloat-store -c -o pow.lo pow.c
-| {standard input}:1154: Error: selected processor does not support Thumb mode `umull r0,r1,sl,ip'
-| {standard input}:1166: Error: selected processor does not support Thumb mode `umull r3,r2,ip,r0'
-| {standard input}:1171: Error: instruction not supported in Thumb16 mode -- `adds r0,r1,r3'
-| {standard input}:1172: Error: unshifted register required -- `adc r2,r2,#0'
-| make[2]: *** [mul.lo] Error 1
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-
-Upstream-Status: Pending
-
---- mpfr.old/src/mpfr-longlong.h 2008-01-01 03:29:09.000000000 +0000
-+++ mpfr/src/mpfr-longlong.h 2008-10-27 21:46:44.000000000 +0000
-@@ -406,7 +406,7 @@
- "rIJ" ((USItype) (bl)))
- #endif
-
--#if defined (__arm__) && W_TYPE_SIZE == 32
-+#if defined (__arm__) && W_TYPE_SIZE == 32 && !defined(__thumb__)
- #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("adds\t%1, %4, %5\n\tadc\t%0, %2, %3" \
- : "=r" (sh), "=&r" (sl) \
diff --git a/meta/recipes-support/mpfr/mpfr_3.1.5.bb b/meta/recipes-support/mpfr/mpfr_4.0.1.bb
index a78c0bd4865..f85a846e331 100644
--- a/meta/recipes-support/mpfr/mpfr_3.1.5.bb
+++ b/meta/recipes-support/mpfr/mpfr_4.0.1.bb
@@ -7,13 +7,11 @@ inherit autotools texinfo
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
file://COPYING.LESSER;md5=6a6a8e020838b23406c81b19c1d46df6"
-DEPENDS = "gmp"
+DEPENDS = "gmp autoconf-archive"
-SRC_URI = "http://www.mpfr.org/mpfr-${PV}/mpfr-${PV}.tar.xz \
- file://long-long-thumb.patch \
- "
-SRC_URI[md5sum] = "c4ac246cf9795a4491e7766002cd528f"
-SRC_URI[sha256sum] = "015fde82b3979fbe5f83501986d328331ba8ddf008c1ff3da3c238f49ca062bc"
+SRC_URI = "http://www.mpfr.org/mpfr-${PV}/mpfr-${PV}.tar.xz"
+SRC_URI[md5sum] = "b8dd19bd9bb1ec8831a6a582a7308073"
+SRC_URI[sha256sum] = "67874a60826303ee2fb6affc6dc0ddd3e749e9bfcb4c8655e3953d0458a6e16e"
UPSTREAM_CHECK_URI = "http://www.mpfr.org/mpfr-current/"
diff --git a/meta/recipes-support/nettle/nettle_3.4.bb b/meta/recipes-support/nettle/nettle_3.4.bb
index 7a3cc654c80..ca8450ea990 100644
--- a/meta/recipes-support/nettle/nettle_3.4.bb
+++ b/meta/recipes-support/nettle/nettle_3.4.bb
@@ -25,7 +25,7 @@ SRC_URI[sha256sum] = "ae7a42df026550b85daca8389b6a60ba6313b0567f374392e54918588a
UPSTREAM_CHECK_REGEX = "nettle-(?P<pver>\d+(\.\d+)+)\.tar"
-inherit autotools ptest
+inherit autotools ptest multilib_header
EXTRA_AUTORECONF += "--exclude=aclocal"
@@ -35,6 +35,10 @@ do_compile_ptest() {
oe_runmake buildtest
}
+do_install_append() {
+ oe_multilib_header nettle/nettle-stdint.h nettle/version.h
+}
+
do_install_ptest() {
install -d ${D}${PTEST_PATH}/testsuite/
install ${S}/testsuite/gold-bug.txt ${D}${PTEST_PATH}/testsuite/
diff --git a/meta/recipes-support/npth/npth_1.5.bb b/meta/recipes-support/npth/npth_1.6.bb
index e7db6ae1b4b..8310efb1064 100644
--- a/meta/recipes-support/npth/npth_1.5.bb
+++ b/meta/recipes-support/npth/npth_1.6.bb
@@ -10,14 +10,18 @@ SRC_URI = "${GNUPG_MIRROR}/npth/npth-${PV}.tar.bz2 \
file://pkgconfig.patch \
"
-SRC_URI[md5sum] = "9ba2dc4302d2f32c66737c43ed191b1b"
-SRC_URI[sha256sum] = "294a690c1f537b92ed829d867bee537e46be93fbd60b16c04630fbbfcd9db3c2"
+SRC_URI[md5sum] = "375d1a15ad969f32d25f1a7630929854"
+SRC_URI[sha256sum] = "1393abd9adcf0762d34798dc34fdcf4d0d22a8410721e76f1e3afcd1daa4e2d1"
BINCONFIG = "${bindir}/npth-config"
-inherit autotools binconfig-disabled
+inherit autotools binconfig-disabled multilib_header
FILES_${PN} = "${libdir}/libnpth.so.*"
FILES_${PN}-dev += "${bindir}/npth-config"
+do_install_append() {
+ oe_multilib_header npth.h
+}
+
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-support/nspr/nspr/0003-Add-type-definitions-for-the-RISC-V-architecture.patch b/meta/recipes-support/nspr/nspr/0003-Add-type-definitions-for-the-RISC-V-architecture.patch
new file mode 100644
index 00000000000..47e1475e0e5
--- /dev/null
+++ b/meta/recipes-support/nspr/nspr/0003-Add-type-definitions-for-the-RISC-V-architecture.patch
@@ -0,0 +1,150 @@
+# HG changeset patch
+# User Karsten Merker <merker@debian.org>
+# Date 1523974333 -7200
+# Node ID f47871e2aeb16b39d4f516690e25c81b04d6d05a
+# Parent 776db96f834cb86e8863052201d55f60a2da91cb
+Bug 1308584, Add type definitions for the RISC-V architecture, r=kaie
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+[ Changes by AF:
+ - Rebase on other Yocto patches
+]
+Upstream-Status: Backport [ https://hg.mozilla.org/projects/nspr/rev/f47871e2aeb1 ]
+
+diff --git a/pr/include/md/_linux.cfg b/pr/include/md/_linux.cfg
+--- a/pr/include/md/_linux.cfg
++++ b/pr/include/md/_linux.cfg
+@@ -1015,16 +1015,108 @@
+ #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(__riscv) && (__riscv_xlen == 32)
++
++#undef IS_BIG_ENDIAN
++#define IS_LITTLE_ENDIAN 1
++#undef IS_64
++
++#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 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_DOUBLE 8
++#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(__riscv) && (__riscv_xlen == 64)
++
++#undef IS_BIG_ENDIAN
++#define IS_LITTLE_ENDIAN 1
++#define IS_64
++
++#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 8
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 8
++#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 64
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 64
++
++#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 6
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 6
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 8
++#define PR_ALIGN_OF_INT64 8
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_DOUBLE 8
++#define PR_ALIGN_OF_POINTER 8
++#define PR_ALIGN_OF_WORD 8
++
++#define PR_BYTES_PER_WORD_LOG2 3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
+ #else
+
+ #error "Unknown CPU architecture"
+
+ #endif
+
+ #ifndef HAVE_LONG_LONG
+ #define HAVE_LONG_LONG
+diff --git a/pr/include/md/_linux.h b/pr/include/md/_linux.h
+--- a/pr/include/md/_linux.h
++++ b/pr/include/md/_linux.h
+@@ -54,16 +54,20 @@
+ #elif defined(__avr32__)
+ #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)
++#define _PR_SI_ARCHITECTURE "riscv32"
++#elif defined(__riscv) && (__riscv_xlen == 64)
++#define _PR_SI_ARCHITECTURE "riscv64"
+ #else
+ #error "Unknown CPU architecture"
+ #endif
+ #define PR_DLL_SUFFIX ".so"
+
+ #define _PR_VMBASE 0x30000000
+ #define _PR_STACK_VMBASE 0x50000000
+ #define _MD_DEFAULT_STACK_SIZE 65536L
+
diff --git a/meta/recipes-support/nspr/nspr/0004-Add-ARC-support.patch b/meta/recipes-support/nspr/nspr/0004-Add-ARC-support.patch
new file mode 100644
index 00000000000..9d686017dfc
--- /dev/null
+++ b/meta/recipes-support/nspr/nspr/0004-Add-ARC-support.patch
@@ -0,0 +1,88 @@
+From 6cb5b0be8837222a1e01745f2cf57cd0e593186d Mon Sep 17 00:00:00 2001
+From: Antoine Tenart <antoine.tenart@free-electrons.com>
+Date: Mon, 23 Oct 2017 10:28:20 +0200
+Subject: [PATCH] Add ARC support
+
+[Alexey: Rebased on top of other patches like RiscV, NIOS2 etc].
+
+Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
+Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
+
+Upstream-Status: Submitted [ https://bugzilla.mozilla.org/show_bug.cgi?id=1492378 ]
+---
+ pr/include/md/_linux.cfg | 45 ++++++++++++++++++++++++++++++++++++++++
+ pr/include/md/_linux.h | 2 ++
+ 2 files changed, 47 insertions(+)
+
+diff --git a/pr/include/md/_linux.cfg b/pr/include/md/_linux.cfg
+index fec8525378dc..5f4fa0eac783 100644
+--- a/pr/include/md/_linux.cfg
++++ b/pr/include/md/_linux.cfg
+@@ -1157,6 +1157,51 @@
+ #define PR_BYTES_PER_WORD_LOG2 3
+ #define PR_BYTES_PER_DWORD_LOG2 3
+
++#elif defined(__arc__)
++
++#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
++
+ #else
+
+ #error "Unknown CPU architecture"
+diff --git a/pr/include/md/_linux.h b/pr/include/md/_linux.h
+index 8e04fad479a1..628b1217e9c8 100644
+--- a/pr/include/md/_linux.h
++++ b/pr/include/md/_linux.h
+@@ -63,6 +63,8 @@
+ #define _PR_SI_ARCHITECTURE "riscv32"
+ #elif defined(__riscv) && (__riscv_xlen == 64)
+ #define _PR_SI_ARCHITECTURE "riscv64"
++#elif defined(__arc__)
++#define _PR_SI_ARCHITECTURE "arc"
+ #else
+ #error "Unknown CPU architecture"
+ #endif
+--
+2.17.1
+
diff --git a/meta/recipes-support/nspr/nspr_4.19.bb b/meta/recipes-support/nspr/nspr_4.19.bb
index de2c87131fc..0212be7f40d 100644
--- a/meta/recipes-support/nspr/nspr_4.19.bb
+++ b/meta/recipes-support/nspr/nspr_4.19.bb
@@ -11,6 +11,8 @@ SRC_URI = "http://ftp.mozilla.org/pub/nspr/releases/v${PV}/src/nspr-${PV}.tar.gz
file://remove-srcdir-from-configure-in.patch \
file://0002-Add-nios2-support.patch \
file://0001-md-Fix-build-with-musl.patch \
+ file://0003-Add-type-definitions-for-the-RISC-V-architecture.patch \
+ file://0004-Add-ARC-support.patch \
file://nspr.pc.in \
"
@@ -148,7 +150,9 @@ TESTS = " \
xnotify \
zerolen"
-inherit autotools
+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,"
diff --git a/meta/recipes-support/nss/nss/0001-Bug-1437734-Use-snprintf-in-sign.c-r-ttaubert.patch b/meta/recipes-support/nss/nss/0001-Bug-1437734-Use-snprintf-in-sign.c-r-ttaubert.patch
deleted file mode 100644
index bc10f3385da..00000000000
--- a/meta/recipes-support/nss/nss/0001-Bug-1437734-Use-snprintf-in-sign.c-r-ttaubert.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From 6f7d7be9997ba6727a5ad7c3800df9051160dc12 Mon Sep 17 00:00:00 2001
-From: Martin Thomson <martin.thomson@gmail.com>
-Date: Tue, 13 Feb 2018 12:30:58 +1100
-Subject: [PATCH] Bug 1437734 - Use snprintf in sign.c, r=ttaubert
-
---HG--
-extra : rebase_source : 97921ece71ff86b18d32b891591608290eed4d83
----
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Backport [https://github.com/nss-dev/nss/commit/0a9078b3cde97add7c825c9d13467a8401ad0c88#diff-b42512151dc137537091f823f7701804.patch]
-
- nss/cmd/signtool/sign.c | 58 ++++++++++++++++++++++++++++++++++++++++---------
- 1 file changed, 48 insertions(+), 10 deletions(-)
-
-diff --git a/nss/cmd/signtool/sign.c b/nss/cmd/signtool/sign.c
-index 6e776069a..6f8e43946 100644
---- a/nss/cmd/signtool/sign.c
-+++ b/nss/cmd/signtool/sign.c
-@@ -43,6 +43,7 @@ SignArchive(char *tree, char *keyName, char *zip_file, int javascript,
- int status;
- char tempfn[FNSIZE], fullfn[FNSIZE];
- int keyType = rsaKey;
-+ int count;
-
- metafile = meta_file;
- optimize = _optimize;
-@@ -81,9 +82,18 @@ SignArchive(char *tree, char *keyName, char *zip_file, int javascript,
- }
-
- /* rsa/dsa to zip */
-- sprintf(tempfn, "META-INF/%s.%s", base, (keyType == dsaKey ? "dsa"
-- : "rsa"));
-- sprintf(fullfn, "%s/%s", tree, tempfn);
-+ count = snprintf(tempfn, sizeof(tempfn), "META-INF/%s.%s", base, (keyType == dsaKey ? "dsa" : "rsa"));
-+ if (count >= sizeof(tempfn)) {
-+ PR_fprintf(errorFD, "unable to write key metadata\n");
-+ errorCount++;
-+ exit(ERRX);
-+ }
-+ count = snprintf(fullfn, sizeof(fullfn), "%s/%s", tree, tempfn);
-+ if (count >= sizeof(fullfn)) {
-+ PR_fprintf(errorFD, "unable to write key metadata\n");
-+ errorCount++;
-+ exit(ERRX);
-+ }
- JzipAdd(fullfn, tempfn, zipfile, compression_level);
-
- /* Loop through all files & subdirectories, add to archive */
-@@ -93,20 +103,44 @@ SignArchive(char *tree, char *keyName, char *zip_file, int javascript,
- }
- /* mf to zip */
- strcpy(tempfn, "META-INF/manifest.mf");
-- sprintf(fullfn, "%s/%s", tree, tempfn);
-+ count = snprintf(fullfn, sizeof(fullfn), "%s/%s", tree, tempfn);
-+ if (count >= sizeof(fullfn)) {
-+ PR_fprintf(errorFD, "unable to write manifest\n");
-+ errorCount++;
-+ exit(ERRX);
-+ }
- JzipAdd(fullfn, tempfn, zipfile, compression_level);
-
- /* sf to zip */
-- sprintf(tempfn, "META-INF/%s.sf", base);
-- sprintf(fullfn, "%s/%s", tree, tempfn);
-+ count = snprintf(tempfn, sizeof(tempfn), "META-INF/%s.sf", base);
-+ if (count >= sizeof(tempfn)) {
-+ PR_fprintf(errorFD, "unable to write sf metadata\n");
-+ errorCount++;
-+ exit(ERRX);
-+ }
-+ count = snprintf(fullfn, sizeof(fullfn), "%s/%s", tree, tempfn);
-+ if (count >= sizeof(fullfn)) {
-+ PR_fprintf(errorFD, "unable to write sf metadata\n");
-+ errorCount++;
-+ exit(ERRX);
-+ }
- JzipAdd(fullfn, tempfn, zipfile, compression_level);
-
- /* Add the rsa/dsa file to the zip archive normally */
- if (!xpi_arc) {
- /* rsa/dsa to zip */
-- sprintf(tempfn, "META-INF/%s.%s", base, (keyType == dsaKey ? "dsa"
-- : "rsa"));
-- sprintf(fullfn, "%s/%s", tree, tempfn);
-+ count = snprintf(tempfn, sizeof(tempfn), "META-INF/%s.%s", base, (keyType == dsaKey ? "dsa" : "rsa"));
-+ if (count >= sizeof(tempfn)) {
-+ PR_fprintf(errorFD, "unable to write key metadata\n");
-+ errorCount++;
-+ exit(ERRX);
-+ }
-+ count = snprintf(fullfn, sizeof(fullfn), "%s/%s", tree, tempfn);
-+ if (count >= sizeof(fullfn)) {
-+ PR_fprintf(errorFD, "unable to write key metadata\n");
-+ errorCount++;
-+ exit(ERRX);
-+ }
- JzipAdd(fullfn, tempfn, zipfile, compression_level);
- }
-
-@@ -408,6 +442,7 @@ static int
- manifesto_xpi_fn(char *relpath, char *basedir, char *reldir, char *filename, void *arg)
- {
- char fullname[FNSIZE];
-+ int count;
-
- if (verbosity >= 0) {
- PR_fprintf(outputFD, "--> %s\n", relpath);
-@@ -421,7 +456,10 @@ manifesto_xpi_fn(char *relpath, char *basedir, char *reldir, char *filename, voi
- if (!PL_HashTableLookup(extensions, ext))
- return 0;
- }
-- sprintf(fullname, "%s/%s", basedir, relpath);
-+ count = snprintf(fullname, sizeof(fullname), "%s/%s", basedir, relpath);
-+ if (count >= sizeof(fullname)) {
-+ return 1;
-+ }
- JzipAdd(fullname, relpath, zipfile, compression_level);
-
- return 0;
diff --git a/meta/recipes-support/nss/nss/Fix-compilation-for-X32.patch b/meta/recipes-support/nss/nss/Fix-compilation-for-X32.patch
deleted file mode 100644
index 80b86908e5c..00000000000
--- a/meta/recipes-support/nss/nss/Fix-compilation-for-X32.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From c8eadfcdfbc1d5a4799e9a264b0f859cb5954c05 Mon Sep 17 00:00:00 2001
-From: Christopher Larson <chris_larson@mentor.com>
-Date: Tue, 13 Dec 2016 11:40:47 -0700
-Subject: [PATCH 7/7] Fix compilation for X32
-
-X32 uses 32-bit pointers, not 64-bit.
-
-Signed-off-by: Christopher Larson <chris_larson@mentor.com>
-
-Upstream-Status: Pending
----
- nss/lib/freebl/poly1305-donna-x64-sse2-incremental-source.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/nss/lib/freebl/poly1305-donna-x64-sse2-incremental-source.c b/nss/lib/freebl/poly1305-donna-x64-sse2-incremental-source.c
-index 2a3301e..d4ade41 100644
---- a/nss/lib/freebl/poly1305-donna-x64-sse2-incremental-source.c
-+++ b/nss/lib/freebl/poly1305-donna-x64-sse2-incremental-source.c
-@@ -87,7 +87,11 @@ static poly1305_state_internal INLINE
- *
- poly1305_aligned_state(poly1305_state *state)
- {
-+#ifdef __ILP32__
-+ return (poly1305_state_internal *)(((uint32_t)state + 63) & ~63);
-+#else
- return (poly1305_state_internal *)(((uint64_t)state + 63) & ~63);
-+#endif
- }
-
- /* copy 0-63 bytes */
---
-2.8.0
-
diff --git a/meta/recipes-support/nss/nss/disable-Wvarargs-with-clang.patch b/meta/recipes-support/nss/nss/disable-Wvarargs-with-clang.patch
index 86b1b60556f..de812d27baf 100644
--- a/meta/recipes-support/nss/nss/disable-Wvarargs-with-clang.patch
+++ b/meta/recipes-support/nss/nss/disable-Wvarargs-with-clang.patch
@@ -18,11 +18,11 @@ for more details
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
-Index: nss-3.24/nss/coreconf/Werror.mk
+Index: nss-3.37.1/nss/coreconf/Werror.mk
===================================================================
---- nss-3.24.orig/nss/coreconf/Werror.mk
-+++ nss-3.24/nss/coreconf/Werror.mk
-@@ -54,7 +54,7 @@ ifndef WARNING_CFLAGS
+--- 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
diff --git a/meta/recipes-support/nss/nss/nss-build-hacl-poly1305-aarch64.patch b/meta/recipes-support/nss/nss/nss-build-hacl-poly1305-aarch64.patch
deleted file mode 100644
index 8276f89e8b1..00000000000
--- a/meta/recipes-support/nss/nss/nss-build-hacl-poly1305-aarch64.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-# HG changeset patch
-# User Daiki Ueno <dueno@redhat.com>
-# Date 1516710574 -3600
-# Tue Jan 23 13:29:34 2018 +0100
-# Node ID 27f27ce21c2c6ff5a47fa9e17c438b000366c9c9
-# Parent be1dca5ac80541d3b81a8da9d42854d8b1cceefb
-Build Hacl_Poly1305_64.o on aarch64 even with make
-
-Upstream-Status: Backport
-https://bug1432455.bmoattachments.org/attachment.cgi?id=8944691
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
-Index: nss-3.35/nss/lib/freebl/Makefile
-===================================================================
---- nss-3.35.orig/nss/lib/freebl/Makefile
-+++ nss-3.35/nss/lib/freebl/Makefile
-@@ -533,7 +533,12 @@ ifndef NSS_DISABLE_CHACHAPOLY
- EXTRA_SRCS += chacha20_vec.c
- endif
- else
-- EXTRA_SRCS += poly1305.c
-+ ifeq ($(CPU_ARCH),aarch64)
-+ EXTRA_SRCS += Hacl_Poly1305_64.c
-+ else
-+ EXTRA_SRCS += poly1305.c
-+ endif
-+
- EXTRA_SRCS += chacha20.c
- VERIFIED_SRCS += Hacl_Chacha20.c
- endif # x86_64
diff --git a/meta/recipes-support/nss/nss/pqg.c-ULL_addend.patch b/meta/recipes-support/nss/nss/pqg.c-ULL_addend.patch
index 9942bf1926c..3a817faaa6a 100644
--- a/meta/recipes-support/nss/nss/pqg.c-ULL_addend.patch
+++ b/meta/recipes-support/nss/nss/pqg.c-ULL_addend.patch
@@ -6,11 +6,11 @@ pqg.c:339:16: error: comparison of constant 18446744073709551615 with expression
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
-Index: nss-3.24/nss/lib/freebl/pqg.c
+Index: nss-3.37.1/nss/lib/freebl/pqg.c
===================================================================
---- nss-3.24.orig/nss/lib/freebl/pqg.c
-+++ nss-3.24/nss/lib/freebl/pqg.c
-@@ -322,8 +322,8 @@ generate_h_candidate(SECItem *hit, mp_in
+--- 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,
diff --git a/meta/recipes-support/nss/nss_3.35.bb b/meta/recipes-support/nss/nss_3.38.bb
index 84f1916f308..904b621a073 100644
--- a/meta/recipes-support/nss/nss_3.35.bb
+++ b/meta/recipes-support/nss/nss_3.38.bb
@@ -25,13 +25,10 @@ SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/${VERSIO
file://nss-fix-nsinstall-build.patch \
file://disable-Wvarargs-with-clang.patch \
file://pqg.c-ULL_addend.patch \
- file://Fix-compilation-for-X32.patch \
- file://nss-build-hacl-poly1305-aarch64.patch \
- file://0001-Bug-1437734-Use-snprintf-in-sign.c-r-ttaubert.patch \
"
-SRC_URI[md5sum] = "9467ec9e65c5aeb3254a50250490f5f7"
-SRC_URI[sha256sum] = "f4127de09bede39f5fd0f789d33c3504c5d261e69ea03022d46b319b3e32f6fa"
+SRC_URI[md5sum] = "ac9065460a7634ba8eb0f942f404e773"
+SRC_URI[sha256sum] = "2c643d3c08d6935f4d325f40743719b6990aa25a79ec2f8f712c99d086672f62"
UPSTREAM_CHECK_URI = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Releases"
UPSTREAM_CHECK_REGEX = "NSS_(?P<pver>.+)_release_notes"
@@ -91,6 +88,8 @@ do_compile() {
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
@@ -146,6 +145,9 @@ do_install() {
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
@@ -213,9 +215,11 @@ do_install_append_class-target() {
# Create a blank certificate
mkdir -p ${D}${sysconfdir}/pki/nssdb/
touch ./empty_password
- certutil -N -d ${D}${sysconfdir}/pki/nssdb/ -f ./empty_password
+ certutil -N -d sql:${D}${sysconfdir}/pki/nssdb/ -f ./empty_password
chmod 644 ${D}${sysconfdir}/pki/nssdb/*.db
rm ./empty_password
+ # Remove build path prefix
+ sed -i "s:${D}::g" ${D}${sysconfdir}/pki/nssdb/pkcs11.txt
}
PACKAGE_WRITE_DEPS += "nss-native"
diff --git a/meta/recipes-support/p11-kit/p11-kit/0001-LINGUAS-drop-the-languages-for-which-upstream-does-n.patch b/meta/recipes-support/p11-kit/p11-kit/0001-LINGUAS-drop-the-languages-for-which-upstream-does-n.patch
index 2fda9dfbb89..e902b0b522f 100644
--- a/meta/recipes-support/p11-kit/p11-kit/0001-LINGUAS-drop-the-languages-for-which-upstream-does-n.patch
+++ b/meta/recipes-support/p11-kit/p11-kit/0001-LINGUAS-drop-the-languages-for-which-upstream-does-n.patch
@@ -1,4 +1,4 @@
-From c3aa4aae5e9f4adafd9e10d9466f1bc481e0aae6 Mon Sep 17 00:00:00 2001
+From c6bb4b99af39daa3221c3bdc0686987ae0f31693 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Wed, 31 Jan 2018 16:47:44 +0200
Subject: [PATCH] LINGUAS: drop the languages for which upstream does not
@@ -9,24 +9,21 @@ Upstream has been notified: https://github.com/p11-glue/p11-kit/issues/127
Upstream-Status: Inappropriate [missing upstream distribution files]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
---
po/LINGUAS | 2 --
1 file changed, 2 deletions(-)
diff --git a/po/LINGUAS b/po/LINGUAS
-index 1fc4d53..e9cc5a7 100644
+index 767a806c2e20..6ab48001c409 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
-@@ -11,9 +11,7 @@ cy
+@@ -12,8 +12,6 @@ cy
da
de
el
-en@boldquot
- en_GB
-en@quot
+ en_GB
eo
es
- es_CL
---
-2.15.1
-
diff --git a/meta/recipes-support/p11-kit/p11-kit_0.22.1.bb b/meta/recipes-support/p11-kit/p11-kit_0.23.14.bb
index 57798f40201..dd25c381329 100644
--- a/meta/recipes-support/p11-kit/p11-kit_0.22.1.bb
+++ b/meta/recipes-support/p11-kit/p11-kit_0.23.14.bb
@@ -9,13 +9,13 @@ DEPENDS = "libtasn1 libffi"
SRC_URI = "git://github.com/p11-glue/p11-kit \
file://0001-LINGUAS-drop-the-languages-for-which-upstream-does-n.patch \
"
-SRCREV = "bfb3bd47aa48983f5349479bca598403097ff81c"
+SRCREV = "3770793f026e46a000d2d8816d56122598289d5c"
S = "${WORKDIR}/git"
-# exclude odd minor versions, which are development releases
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)"
AUTOTOOLS_AUXDIR = "${S}/build/litter"
-EXTRA_OECONF = "--without-trust-paths"
+
+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
diff --git a/meta/recipes-support/pinentry/pinentry_1.1.0.bb b/meta/recipes-support/pinentry/pinentry_1.1.0.bb
index 1eaa261f75a..4116efc76f4 100644
--- a/meta/recipes-support/pinentry/pinentry_1.1.0.bb
+++ b/meta/recipes-support/pinentry/pinentry_1.1.0.bb
@@ -8,8 +8,6 @@ HOMEPAGE = "http://www.gnupg.org/related_software/pinentry/index.en.html"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=cbbd794e2a0a289b9dfcc9f513d1996e"
-inherit autotools pkgconfig
-
DEPENDS = "gettext-native libassuan libgpg-error"
UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
@@ -21,9 +19,7 @@ SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
SRC_URI[md5sum] = "3829315cb0a1e9cedc05ffe6def7a2c6"
SRC_URI[sha256sum] = "68076686fa724a290ea49cdf0d1c0c1500907d1b759a3bcbfbec0293e8f56570"
-EXTRA_OECONF = "--disable-rpath --disable-dependency-tracking \
- --disable-pinentry-qt5 \
-"
+inherit autotools pkgconfig
PACKAGECONFIG ??= "ncurses libcap"
@@ -35,4 +31,9 @@ PACKAGECONFIG[gtk2] = "--enable-pinentry-gtk2, --disable-pinentry-gtk2, gtk+ gli
#To use libsecret, add meta-gnome
PACKAGECONFIG[secret] = "--enable-libsecret, --disable-libsecret, libsecret"
+EXTRA_OECONF = " \
+ --disable-rpath \
+ --disable-pinentry-qt5 \
+"
+
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-support/popt/popt_1.16.bb b/meta/recipes-support/popt/popt_1.16.bb
index 478288f9bf2..377d1084495 100644
--- a/meta/recipes-support/popt/popt_1.16.bb
+++ b/meta/recipes-support/popt/popt_1.16.bb
@@ -8,7 +8,7 @@ PR = "r3"
DEPENDS = "virtual/libiconv"
-SRC_URI = "http://rpm5.org/files/popt/popt-${PV}.tar.gz \
+SRC_URI = "https://fossies.org/linux/misc/popt-${PV}.tar.gz \
file://pkgconfig_fix.patch \
file://popt_fix_for_automake-1.12.patch \
file://disable_tests.patch \
diff --git a/meta/recipes-support/ptest-runner/ptest-runner_2.1.1.bb b/meta/recipes-support/ptest-runner/ptest-runner_2.2.bb
index e5b71c0f01f..622d23ba919 100644
--- a/meta/recipes-support/ptest-runner/ptest-runner_2.1.1.bb
+++ b/meta/recipes-support/ptest-runner/ptest-runner_2.2.bb
@@ -7,8 +7,8 @@ HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/ptest-runner2/about/"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe"
-SRCREV = "16413d71cc06b02a6d859c35a017cc49b88283f7"
-PV = "2.1.1+git${SRCPV}"
+SRCREV = "49956f65bb53ea2a2c1b394e5e59ffdfcdcc490f"
+PV = "2.2+git${SRCPV}"
SRC_URI = "git://git.yoctoproject.org/ptest-runner2"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-support/re2c/re2c/mkdir.patch b/meta/recipes-support/re2c/re2c/mkdir.patch
deleted file mode 100644
index d59f01b36c0..00000000000
--- a/meta/recipes-support/re2c/re2c/mkdir.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Upstream-Status: Submitted (https://github.com/skvadrik/re2c/pull/191)
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From bccc10c60523f88c8f81413151cdcd612eb16198 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Mon, 31 Jul 2017 15:43:41 +0100
-Subject: [PATCH] Makefile.am: create target directory before writing into it
-
-In some situations src/parse/ may not exist before a file is copied into the
-directory. Ensure that this doesn't happen by creating the directory first.
----
- re2c/Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/re2c/Makefile.am b/re2c/Makefile.am
-index 3b3b2c5e..0707fc5a 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -187,6 +187,7 @@ CLEANFILES = \
- $(DOC)
-
- $(AUTOGEN_PARSER): $(CUSTOM_PARSER)
-+ $(AM_V_at)$(MKDIR_P) $(dir $@)
- $(AM_V_GEN) if test $(BISON) = "no"; \
- then \
- cp $(top_srcdir)/$(BOOTSTRAP_PARSER) $@ && \
-@@ -211,6 +212,7 @@ $(BOOTSTRAP_PARSER): $(CUSTOM_PARSER)
- $(top_srcdir)/$(CUSTOM_PARSER);
-
- .re.cc:
-+ $(AM_V_at)$(MKDIR_P) $(dir $@)
- $(AM_V_GEN) if test -x $(RE2C); \
- then \
- $(top_builddir)/$(RE2C) $(RE2CFLAGS) -o $@ $< && \
---
-2.11.0
diff --git a/meta/recipes-support/re2c/re2c_0.16.bb b/meta/recipes-support/re2c/re2c_1.0.1.bb
index 50dd7b7d261..4ed8d257acf 100644
--- a/meta/recipes-support/re2c/re2c_0.16.bb
+++ b/meta/recipes-support/re2c/re2c_1.0.1.bb
@@ -5,10 +5,9 @@ SECTION = "devel"
LICENSE = "PD"
LIC_FILES_CHKSUM = "file://README;beginline=146;md5=881056c9add17f8019ccd8c382ba963a"
-SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \
- file://mkdir.patch"
-SRC_URI[md5sum] = "3bf508fabd52ed7334647d0ccb956e8d"
-SRC_URI[sha256sum] = "48c12564297641cceb5ff05aead57f28118db6277f31e2262437feba89069e84"
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz"
+SRC_URI[md5sum] = "e2c6cf52fc6a21595f21bc82db5324f8"
+SRC_URI[sha256sum] = "605058d18a00e01bfc32aebf83af35ed5b13180b4e9f279c90843afab2c66c7c"
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-support/rng-tools/rng-tools/rngd.service b/meta/recipes-support/rng-tools/rng-tools/rngd.service
index b94ad50209c..cb8102442d6 100644
--- a/meta/recipes-support/rng-tools/rng-tools/rngd.service
+++ b/meta/recipes-support/rng-tools/rng-tools/rngd.service
@@ -1,5 +1,8 @@
[Unit]
Description=Hardware RNG Entropy Gatherer Daemon
+DefaultDependencies=no
+After=systemd-udev-settle.service
+Before=sysinit.target
[Service]
ExecStart=@SBINDIR@/rngd -f -r /dev/urandom
diff --git a/meta/recipes-support/rng-tools/rng-tools_5.bb b/meta/recipes-support/rng-tools/rng-tools_5.bb
index b3c9fd97455..6765667a59b 100644
--- a/meta/recipes-support/rng-tools/rng-tools_5.bb
+++ b/meta/recipes-support/rng-tools/rng-tools_5.bb
@@ -16,13 +16,6 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/gkernel/${BP}.tar.gz \
SRC_URI[md5sum] = "6726cdc6fae1f5122463f24ae980dd68"
SRC_URI[sha256sum] = "60a102b6603bbcce2da341470cad42eeaa9564a16b4490e7867026ca11a3078e"
-# As the recipe doesn't inherit systemd.bbclass, we need to set this variable
-# manually to avoid unnecessary postinst/preinst generated.
-python () {
- if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
- d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
-}
-
inherit autotools update-rc.d systemd
PACKAGECONFIG = "libgcrypt"
@@ -50,6 +43,6 @@ do_install_append() {
}
INITSCRIPT_NAME = "rng-tools"
-INITSCRIPT_PARAMS = "start 30 2 3 4 5 . stop 30 0 6 1 ."
+INITSCRIPT_PARAMS = "start 03 2 3 4 5 . stop 30 0 6 1 ."
SYSTEMD_SERVICE_${PN} = "rngd.service"
diff --git a/meta/recipes-support/serf/serf/0001-Fix-syntax-of-a-print-in-the-scons-file-to-unbreak-b.patch b/meta/recipes-support/serf/serf/0001-Fix-syntax-of-a-print-in-the-scons-file-to-unbreak-b.patch
new file mode 100644
index 00000000000..4a5832ac1a5
--- /dev/null
+++ b/meta/recipes-support/serf/serf/0001-Fix-syntax-of-a-print-in-the-scons-file-to-unbreak-b.patch
@@ -0,0 +1,29 @@
+From 99f6e1b0d68281b63218d6adfe68cd9e331ac5be Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 3 Sep 2018 10:50:08 -0700
+Subject: [PATCH] Fix syntax of a print() in the scons file to unbreak building
+ with most recent scons version.
+
+* SConstruct Use Python 3.0 valid syntax to make Scons 3.0.0 happy on both python
+ 3.0 and 2.7.
+
+Upstream-Status: Backport
+[https://svn.apache.org/viewvc/serf/trunk/SConstruct?r1=1809132&r2=1811083&diff_format=h]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ SConstruct | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/SConstruct b/SConstruct
+index 1670459..18a45fa 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -184,7 +184,7 @@ CALLOUT_OKAY = not (env.GetOption('clean') or env.GetOption('help'))
+
+ unknown = opts.UnknownVariables()
+ if unknown:
+- print 'Warning: Used unknown variables:', ', '.join(unknown.keys())
++ print('Warning: Used unknown variables:', ', '.join(unknown.keys()))
+
+ apr = str(env['APR'])
+ apu = str(env['APU'])
diff --git a/meta/recipes-support/serf/serf/0002-SConstruct-Fix-path-quoting-for-.def-generator.patch b/meta/recipes-support/serf/serf/0002-SConstruct-Fix-path-quoting-for-.def-generator.patch
new file mode 100644
index 00000000000..cec881ee1c1
--- /dev/null
+++ b/meta/recipes-support/serf/serf/0002-SConstruct-Fix-path-quoting-for-.def-generator.patch
@@ -0,0 +1,27 @@
+From e51b4b37916dd20b13133cb7af16601b6bf3ace9 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 3 Sep 2018 10:54:54 -0700
+Subject: [PATCH] SConstruct: Fix path quoting for .def generator
+
+Patch by: Martin Keller <m.keller{_AT_}codesys.com>
+Upstream-Status: Backport
+[https://svn.apache.org/viewvc/serf/trunk/SConstruct?r1=1807594&r2=1809132]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ SConstruct | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/SConstruct b/SConstruct
+index 18a45fa..571bdce 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -160,7 +160,7 @@ env = Environment(variables=opts,
+
+ env.Append(BUILDERS = {
+ 'GenDef' :
+- Builder(action = sys.executable + ' build/gen_def.py $SOURCES > $TARGET',
++ Builder(action = '"%s" "%s" $SOURCES > $TARGET' % (sys.executable, gen_def_script,),
+ suffix='.def', src_suffix='.h')
+ })
+
diff --git a/meta/recipes-support/serf/serf/0003-gen_def.patch b/meta/recipes-support/serf/serf/0003-gen_def.patch
new file mode 100644
index 00000000000..0ea2cca9dfc
--- /dev/null
+++ b/meta/recipes-support/serf/serf/0003-gen_def.patch
@@ -0,0 +1,27 @@
+From 98e793d9f2250e7c1f9f1eb5dfd616a6a8829e9a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 3 Sep 2018 11:12:27 -0700
+Subject: [PATCH] gen_def
+
+This is partial port because half of this patch is already present in our
+patches
+
+Upstream-Status: Backport [https://github.com/apache/serf/commit/8f07c9626106873a594fd07e7c257e9080d8660b]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ SConstruct | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/SConstruct b/SConstruct
+index 571bdce..877731e 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -158,6 +158,8 @@ env = Environment(variables=opts,
+ ENV = os.environ,
+ )
+
++gen_def_script = env.File('build/gen_def.py').rstr()
++
+ env.Append(BUILDERS = {
+ 'GenDef' :
+ Builder(action = '"%s" "%s" $SOURCES > $TARGET' % (sys.executable, gen_def_script,),
diff --git a/meta/recipes-support/serf/serf/0004-Follow-up-to-r1811083-fix-building-with-scons-3.0.0-.patch b/meta/recipes-support/serf/serf/0004-Follow-up-to-r1811083-fix-building-with-scons-3.0.0-.patch
new file mode 100644
index 00000000000..02fa9e3a062
--- /dev/null
+++ b/meta/recipes-support/serf/serf/0004-Follow-up-to-r1811083-fix-building-with-scons-3.0.0-.patch
@@ -0,0 +1,29 @@
+From 565211fd082ef653ca9c44a345350fc1451f5a0f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 3 Sep 2018 11:12:38 -0700
+Subject: [PATCH] Follow-up to r1811083 fix building with scons 3.0.0 and
+ Python3
+
+* SConstruct: Append decode('utf-8) to FILE.get_contents() to avoid
+ TypeError: cannot use a string pattern on a bytes-like object
+
+Upstream-Status: Backport
+[https://svn.apache.org/viewvc/serf/trunk/SConstruct?r1=1811088&r2=1814604]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ SConstruct | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/SConstruct b/SConstruct
+index 877731e..7678bb1 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -169,7 +169,7 @@ env.Append(BUILDERS = {
+ match = re.search('SERF_MAJOR_VERSION ([0-9]+).*'
+ 'SERF_MINOR_VERSION ([0-9]+).*'
+ 'SERF_PATCH_VERSION ([0-9]+)',
+- env.File('serf.h').get_contents(),
++ env.File('serf.h').get_contents().decode('utf-8'),
+ re.DOTALL)
+ MAJOR, MINOR, PATCH = [int(x) for x in match.groups()]
+ env.Append(MAJOR=str(MAJOR))
diff --git a/meta/recipes-support/serf/serf_1.3.9.bb b/meta/recipes-support/serf/serf_1.3.9.bb
index 2be5a069c48..65a8114bb4c 100644
--- a/meta/recipes-support/serf/serf_1.3.9.bb
+++ b/meta/recipes-support/serf/serf_1.3.9.bb
@@ -1,7 +1,12 @@
SUMMARY = "High-Performance Asynchronous HTTP Client Library"
SRC_URI = "${APACHE_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
file://norpath.patch \
- file://env.patch"
+ file://env.patch \
+ file://0001-Fix-syntax-of-a-print-in-the-scons-file-to-unbreak-b.patch \
+ file://0002-SConstruct-Fix-path-quoting-for-.def-generator.patch \
+ file://0003-gen_def.patch \
+ file://0004-Follow-up-to-r1811083-fix-building-with-scons-3.0.0-.patch \
+ "
SRC_URI[md5sum] = "370a6340ff20366ab088012cd13f2b57"
SRC_URI[sha256sum] = "549c2d21c577a8a9c0450facb5cca809f26591f048e466552240947bdf7a87cc"
diff --git a/meta/recipes-support/shared-mime-info/shared-mime-info.inc b/meta/recipes-support/shared-mime-info/shared-mime-info.inc
index 1f51225b0ee..344da7ea77c 100644
--- a/meta/recipes-support/shared-mime-info/shared-mime-info.inc
+++ b/meta/recipes-support/shared-mime-info/shared-mime-info.inc
@@ -2,7 +2,7 @@ SUMMARY = "Shared MIME type database and specification"
HOMEPAGE = "http://freedesktop.org/wiki/Software/shared-mime-info"
SECTION = "base"
-LICENSE = "LGPLv2+"
+LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
DEPENDS = "libxml2 intltool-native glib-2.0 shared-mime-info-native"
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
new file mode 100644
index 00000000000..9fc210b718d
--- /dev/null
+++ b/meta/recipes-support/shared-mime-info/shared-mime-info_1.10.bb
@@ -0,0 +1,7 @@
+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_1.9.bb b/meta/recipes-support/shared-mime-info/shared-mime-info_1.9.bb
deleted file mode 100644
index f9b273edc6b..00000000000
--- a/meta/recipes-support/shared-mime-info/shared-mime-info_1.9.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] = "45103889b91242850aa47f09325e798b"
-SRC_URI[sha256sum] = "5c0133ec4e228e41bdf52f726d271a2d821499c2ab97afd3aa3d6cf43efcdc83"
diff --git a/meta/recipes-support/sqlite/sqlite3.inc b/meta/recipes-support/sqlite/sqlite3.inc
index 95ec89cef22..1834867d102 100644
--- a/meta/recipes-support/sqlite/sqlite3.inc
+++ b/meta/recipes-support/sqlite/sqlite3.inc
@@ -36,12 +36,10 @@ EXTRA_OECONF = " \
CFLAGS_append = " -fPIC"
# pread() is in POSIX.1-2001 so any reasonable system must surely support it
-BUILD_CFLAGS += "-DUSE_PREAD"
-TARGET_CFLAGS += "-DUSE_PREAD"
+CFLAGS += "-DUSE_PREAD"
# Provide column meta-data API
-BUILD_CFLAGS += "-DSQLITE_ENABLE_COLUMN_METADATA"
-TARGET_CFLAGS += "-DSQLITE_ENABLE_COLUMN_METADATA"
+CFLAGS += "-DSQLITE_ENABLE_COLUMN_METADATA"
PACKAGES = "lib${BPN} lib${BPN}-dev lib${BPN}-doc ${PN}-dbg lib${BPN}-staticdev ${PN}"
diff --git a/meta/recipes-support/sqlite/sqlite3_3.22.0.bb b/meta/recipes-support/sqlite/sqlite3_3.23.1.bb
index ef88659e970..3755761d76b 100644
--- a/meta/recipes-support/sqlite/sqlite3_3.22.0.bb
+++ b/meta/recipes-support/sqlite/sqlite3_3.23.1.bb
@@ -6,5 +6,5 @@ LIC_FILES_CHKSUM = "file://sqlite3.h;endline=11;md5=786d3dc581eff03f4fd9e4a77ed0
SRC_URI = "\
http://www.sqlite.org/2018/sqlite-autoconf-${SQLITE_PV}.tar.gz \
"
-SRC_URI[md5sum] = "96b5648d542e8afa6ab7ffb8db8ddc3d"
-SRC_URI[sha256sum] = "2824ab1238b706bc66127320afbdffb096361130e23291f26928a027b885c612"
+SRC_URI[md5sum] = "99a51b40a66872872a91c92f6d0134fa"
+SRC_URI[sha256sum] = "92842b283e5e744eff5da29ed3c69391de7368fccc4d0ee6bf62490ce555ef25"
diff --git a/meta/recipes-support/taglib/taglib/CVE-2018-11439.patch b/meta/recipes-support/taglib/taglib/CVE-2018-11439.patch
new file mode 100644
index 00000000000..cdd66e67f72
--- /dev/null
+++ b/meta/recipes-support/taglib/taglib/CVE-2018-11439.patch
@@ -0,0 +1,51 @@
+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
index 50439bc14fc..01dcf66d1e9 100644
--- a/meta/recipes-support/taglib/taglib_1.11.1.bb
+++ b/meta/recipes-support/taglib/taglib_1.11.1.bb
@@ -10,6 +10,7 @@ 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"
diff --git a/meta/recipes-support/vte/vte_0.50.2.bb b/meta/recipes-support/vte/vte_0.52.2.bb
index 8b9ee33eca0..7324c9c63d5 100644
--- a/meta/recipes-support/vte/vte_0.50.2.bb
+++ b/meta/recipes-support/vte/vte_0.52.2.bb
@@ -11,8 +11,8 @@ inherit gnomebase gtk-doc distro_features_check upstream-version-is-even gobject
SRC_URI += "file://0001-Don-t-enable-stack-protection-by-default.patch \
${@bb.utils.contains('PACKAGECONFIG', 'vala', '', 'file://0001-Add-m4-vapigen.m4.patch', d) } \
"
-SRC_URI[archive.md5sum] = "1912cfd1d9cdd30cebeb908507acadc5"
-SRC_URI[archive.sha256sum] = "79dd316bfaff48f2fb74d066baae0d830e1f44436796fe410a57297e5c5f09cf"
+SRC_URI[archive.md5sum] = "de8181350dccb010e915e366bdd06d18"
+SRC_URI[archive.sha256sum] = "0f2657cef52accbfe56feede553155552d7c1984b1291838af3cb8cfc19b26af"
ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
@@ -38,8 +38,6 @@ PACKAGECONFIG[gnutls] = "--with-gnutls,--without-gnutls,gnutls"
CFLAGS += "-D_GNU_SOURCE"
-EXTRA_OECONF = "--disable-test-application"
-
# libtool adds "-nostdlib" when g++ is used. This breaks PIE builds.
# Use libtool-cross (which has a hack to prevent that) instead.
EXTRA_OEMAKE_class-target = "LIBTOOL=${STAGING_BINDIR_CROSS}/${HOST_SYS}-libtool"
diff --git a/meta/site/arc-common b/meta/site/arc-common
new file mode 100644
index 00000000000..d3c721a8bb9
--- /dev/null
+++ b/meta/site/arc-common
@@ -0,0 +1,11 @@
+# general
+ac_cv_alignof_guint32=4
+ac_cv_alignof_guint64=4
+ac_cv_alignof_unsigned_long=4
+
+# glib-2.0
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+glib_cv_uscore=${glib_cv_uscore=no}
+
+# startup-notification
+lf_cv_sane_realloc=${lf_cv_sane_realloc=yes}
diff --git a/meta/site/powerpc64-linux b/meta/site/powerpc64-linux
index d64e230aff1..820a4b84403 100644
--- a/meta/site/powerpc64-linux
+++ b/meta/site/powerpc64-linux
@@ -37,3 +37,5 @@ ac_cv_linux_vers=${ac_cv_linux_vers=2}
# apr
apr_cv_tcp_nodelay_with_cork=${apr_cv_tcp_nodelay_with_cork=yes}
+# cvs
+cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
diff --git a/scripts/autobuilder-worker-prereq-tests b/scripts/autobuilder-worker-prereq-tests
new file mode 100755
index 00000000000..c0148fbce88
--- /dev/null
+++ b/scripts/autobuilder-worker-prereq-tests
@@ -0,0 +1,64 @@
+#!/bin/bash
+#
+# Script which can be run on new autobuilder workers to check all needed configuration is present.
+# Designed to be run in a repo where bitbake/oe-core are already present.
+#
+
+#
+# Todo
+# Add testtools/subunit import test
+# Add python3-git test
+# Add pigz test
+# vnc tests/checkvnc?
+# test sendmail works (for QA email notification)
+# test error report submission works
+# test buildistory git repo works?
+#
+
+. ./oe-init-build-env > /dev/null
+if [ "$?" != "0" ]; then
+ exit 1
+fi
+git config --global user.name > /dev/null
+if [ "$?" != "0" ]; then
+ echo "Please set git config --global user.name"
+ exit 1
+fi
+git config --global user.email > /dev/null
+if [ "$?" != "0" ]; then
+ echo "Please set git config --global user.email"
+ exit 1
+fi
+bitbake -p
+if [ "$?" != "0" ]; then
+ echo "Bitbake parsing failed"
+ exit 1
+fi
+WATCHES=`sysctl fs.inotify.max_user_watches -n`
+if (( $WATCHES < 100000 )); then
+ echo 'Need to increase watches (echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf'
+ #exit 1
+fi
+mkdir -p tmp/deploy/images/qemux86-64
+pushd tmp/deploy/images/qemux86-64
+if [ ! -e core-image-minimal-qemux86-64.ext4 ]; then
+ wget http://downloads.yoctoproject.org/releases/yocto/yocto-2.5.1/machines/qemu/qemux86-64/core-image-minimal-qemux86-64.ext4
+fi
+if [ ! -e core-image-minimal-qemux86-64.qemuboot.conf ]; then
+ wget http://downloads.yoctoproject.org/releases/yocto/yocto-2.5.1/machines/qemu/qemux86-64/core-image-minimal-qemux86-64.qemuboot.conf
+fi
+if [ ! -e bzImage-qemux86-64.bin ]; then
+ wget http://downloads.yoctoproject.org/releases/yocto/yocto-2.5.1/machines/qemu/qemux86-64/bzImage-qemux86-64.bin
+fi
+popd
+bitbake qemu-helper-native
+runqemu qemux86-64
+if [ "$?" != "0" ]; then
+ echo "Unable to use runqemu"
+ exit 1
+fi
+runqemu qemux86-64 kvm
+if [ "$?" != "0" ]; then
+ echo "Unable to use runqemu with kvm"
+ exit 1
+fi
diff --git a/scripts/combo-layer b/scripts/combo-layer
index d04d88b0706..dc40e724044 100755
--- a/scripts/combo-layer
+++ b/scripts/combo-layer
@@ -246,7 +246,7 @@ def action_init(conf, args):
# traditional behavior from "git archive" (preserved
# here) it to choose the first one. This might not be
# intended, so at least warn about it.
- logger.warn("%s: initial revision '%s' not unique, picking result of rev-parse = %s" %
+ logger.warning("%s: initial revision '%s' not unique, picking result of rev-parse = %s" %
(name, initialrev, refs[0]))
initialrev = rev
except:
diff --git a/scripts/contrib/mkefidisk.sh b/scripts/contrib/mkefidisk.sh
deleted file mode 100755
index ac4ec9c7fba..00000000000
--- a/scripts/contrib/mkefidisk.sh
+++ /dev/null
@@ -1,464 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2012, Intel Corporation.
-# All rights reserved.
-#
-# This program is free software; you can 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
-#
-
-LANG=C
-
-echo
-echo "WARNING: This script is deprecated and will be removed soon."
-echo "Please consider using wic EFI images instead."
-echo
-
-# Set to 1 to enable additional output
-DEBUG=0
-OUT="/dev/null"
-
-#
-# Defaults
-#
-# 20 Mb for the boot partition
-BOOT_SIZE=20
-# 5% for swap
-SWAP_RATIO=5
-
-# Cleanup after die()
-cleanup() {
- debug "Syncing and unmounting devices"
- # Unmount anything we mounted
- unmount $ROOTFS_MNT || error "Failed to unmount $ROOTFS_MNT"
- unmount $BOOTFS_MNT || error "Failed to unmount $BOOTFS_MNT"
- unmount $HDDIMG_ROOTFS_MNT || error "Failed to unmount $HDDIMG_ROOTFS_MNT"
- unmount $HDDIMG_MNT || error "Failed to unmount $HDDIMG_MNT"
-
- # Remove the TMPDIR
- debug "Removing temporary files"
- if [ -d "$TMPDIR" ]; then
- rm -rf $TMPDIR || error "Failed to remove $TMPDIR"
- fi
-}
-
-trap 'die "Signal Received, Aborting..."' HUP INT TERM
-
-# Logging routines
-WARNINGS=0
-ERRORS=0
-CLEAR="$(tput sgr0)"
-INFO="$(tput bold)"
-RED="$(tput setaf 1)$(tput bold)"
-GREEN="$(tput setaf 2)$(tput bold)"
-YELLOW="$(tput setaf 3)$(tput bold)"
-info() {
- echo "${INFO}$1${CLEAR}"
-}
-error() {
- ERRORS=$((ERRORS+1))
- echo "${RED}$1${CLEAR}"
-}
-warn() {
- WARNINGS=$((WARNINGS+1))
- echo "${YELLOW}$1${CLEAR}"
-}
-success() {
- echo "${GREEN}$1${CLEAR}"
-}
-die() {
- error "$1"
- cleanup
- exit 1
-}
-debug() {
- if [ $DEBUG -eq 1 ]; then
- echo "$1"
- fi
-}
-
-usage() {
- echo "Usage: $(basename $0) [-v] DEVICE HDDIMG TARGET_DEVICE"
- echo " -v: Verbose debug"
- echo " DEVICE: The device to write the image to, e.g. /dev/sdh"
- echo " HDDIMG: The hddimg file to generate the efi disk from"
- echo " TARGET_DEVICE: The device the target will boot from, e.g. /dev/mmcblk0"
-}
-
-image_details() {
- IMG=$1
- info "Image details"
- echo " image: $(stat --printf '%N\n' $IMG)"
- echo " size: $(stat -L --printf '%s bytes\n' $IMG)"
- echo " modified: $(stat -L --printf '%y\n' $IMG)"
- echo " type: $(file -L -b $IMG)"
- echo ""
-}
-
-device_details() {
- DEV=$1
- BLOCK_SIZE=512
-
- info "Device details"
- echo " device: $DEVICE"
- if [ -f "/sys/class/block/$DEV/device/vendor" ]; then
- echo " vendor: $(cat /sys/class/block/$DEV/device/vendor)"
- else
- echo " vendor: UNKOWN"
- fi
- if [ -f "/sys/class/block/$DEV/device/model" ]; then
- echo " model: $(cat /sys/class/block/$DEV/device/model)"
- else
- echo " model: UNKNOWN"
- fi
- if [ -f "/sys/class/block/$DEV/size" ]; then
- echo " size: $(($(cat /sys/class/block/$DEV/size) * $BLOCK_SIZE)) bytes"
- else
- echo " size: UNKNOWN"
- fi
- echo ""
-}
-
-unmount_device() {
- grep -q $DEVICE /proc/mounts
- if [ $? -eq 0 ]; then
- warn "$DEVICE listed in /proc/mounts, attempting to unmount"
- umount $DEVICE* 2>/dev/null
- return $?
- fi
- return 0
-}
-
-unmount() {
- if [ "$1" = "" ] ; then
- return 0
- fi
- grep -q $1 /proc/mounts
- if [ $? -eq 0 ]; then
- debug "Unmounting $1"
- umount $1
- return $?
- fi
- return 0
-}
-
-#
-# Parse and validate arguments
-#
-if [ $# -lt 3 ] || [ $# -gt 4 ]; then
- if [ $# -eq 1 ]; then
- AVAILABLE_DISK=`lsblk | grep "disk" | cut -f 1 -d " "`
- X=0
- for disk in `echo $AVAILABLE_DISK`; do
- mounted=`lsblk /dev/$disk | awk {'print $7'} | sed "s/MOUNTPOINT//"`
- if [ -z "$mounted" ]; then
- UNMOUNTED_AVAILABLES="$UNMOUNTED_AVAILABLES /dev/$disk"
- info "$X - /dev/$disk"
- X=`expr $X + 1`
- fi
- done
- if [ $X -eq 0 ]; then
- die "No unmounted device found."
- fi
- read -p "Choose unmounted device number: " DISK_NUMBER
- X=0
- for line in `echo $UNMOUNTED_AVAILABLES`; do
- if [ $DISK_NUMBER -eq $X ]; then
- DISK_TO_BE_FLASHED=$line
- break
- else
- X=`expr $X + 1`
- fi
- done
- if [ -z "$DISK_TO_BE_FLASHED" ]; then
- die "Option \"$DISK_NUMBER\" is invalid. Choose a valid option"
- else
- if [ -z `echo $DISK_TO_BE_FLASHED | grep "mmc"` ]; then
- TARGET_TO_BE_BOOT="/dev/sda"
- else
- TARGET_TO_BE_BOOT="/dev/mmcblk0"
- fi
- fi
- echo ""
- echo "Choose a name of the device that will be boot from"
- echo -n "Recommended name is: "
- info "$TARGET_TO_BE_BOOT"
- read -p "Is target device okay? [y/N]: " RESPONSE
- if [ "$RESPONSE" != "y" ]; then
- read -p "Choose target device name: " TARGET_TO_BE_BOOT
- fi
- echo ""
- if [ -z "$TARGET_TO_BE_BOOT" ]; then
- die "Error: choose a valid target name"
- fi
- else
- usage
- exit 1
- fi
-fi
-
-if [ "$1" = "-v" ]; then
- DEBUG=1
- OUT="1"
- shift
-fi
-
-if [ -z "$AVAILABLE_DISK" ]; then
- DEVICE=$1
- HDDIMG=$2
- TARGET_DEVICE=$3
-else
- DEVICE=$DISK_TO_BE_FLASHED
- HDDIMG=$1
- TARGET_DEVICE=$TARGET_TO_BE_BOOT
-fi
-
-LINK=$(readlink $DEVICE)
-if [ $? -eq 0 ]; then
- DEVICE="$LINK"
-fi
-
-if [ ! -w "$DEVICE" ]; then
- usage
- if [ ! -e "${DEVICE}" ] ; then
- die "Device $DEVICE cannot be found"
- else
- die "Device $DEVICE is not writable (need to run under sudo?)"
- fi
-fi
-
-if [ ! -e "$HDDIMG" ]; then
- usage
- die "HDDIMG $HDDIMG does not exist"
-fi
-
-#
-# Ensure the hddimg is not mounted
-#
-unmount "$HDDIMG" || die "Failed to unmount $HDDIMG"
-
-#
-# Check if any $DEVICE partitions are mounted
-#
-unmount_device || die "Failed to unmount $DEVICE"
-
-#
-# Confirm device with user
-#
-image_details $HDDIMG
-device_details $(basename $DEVICE)
-echo -n "${INFO}Prepare EFI image on $DEVICE [y/N]?${CLEAR} "
-read RESPONSE
-if [ "$RESPONSE" != "y" ]; then
- echo "Image creation aborted"
- exit 0
-fi
-
-
-#
-# Prepare the temporary working space
-#
-TMPDIR=$(mktemp -d mkefidisk-XXX) || die "Failed to create temporary mounting directory."
-HDDIMG_MNT=$TMPDIR/hddimg
-HDDIMG_ROOTFS_MNT=$TMPDIR/hddimg_rootfs
-ROOTFS_MNT=$TMPDIR/rootfs
-BOOTFS_MNT=$TMPDIR/bootfs
-mkdir $HDDIMG_MNT || die "Failed to create $HDDIMG_MNT"
-mkdir $HDDIMG_ROOTFS_MNT || die "Failed to create $HDDIMG_ROOTFS_MNT"
-mkdir $ROOTFS_MNT || die "Failed to create $ROOTFS_MNT"
-mkdir $BOOTFS_MNT || die "Failed to create $BOOTFS_MNT"
-
-
-#
-# Partition $DEVICE
-#
-DEVICE_SIZE=$(parted -s $DEVICE unit mb print | grep ^Disk | cut -d" " -f 3 | sed -e "s/MB//")
-# If the device size is not reported there may not be a valid label
-if [ "$DEVICE_SIZE" = "" ] ; then
- parted -s $DEVICE mklabel msdos || die "Failed to create MSDOS partition table"
- DEVICE_SIZE=$(parted -s $DEVICE unit mb print | grep ^Disk | cut -d" " -f 3 | sed -e "s/MB//")
-fi
-SWAP_SIZE=$((DEVICE_SIZE*SWAP_RATIO/100))
-ROOTFS_SIZE=$((DEVICE_SIZE-BOOT_SIZE-SWAP_SIZE))
-ROOTFS_START=$((BOOT_SIZE))
-ROOTFS_END=$((ROOTFS_START+ROOTFS_SIZE))
-SWAP_START=$((ROOTFS_END))
-
-# MMC devices use a partition prefix character 'p'
-PART_PREFIX=""
-if [ ! "${DEVICE#/dev/mmcblk}" = "${DEVICE}" ] || [ ! "${DEVICE#/dev/loop}" = "${DEVICE}" ]; then
- PART_PREFIX="p"
-fi
-BOOTFS=$DEVICE${PART_PREFIX}1
-ROOTFS=$DEVICE${PART_PREFIX}2
-SWAP=$DEVICE${PART_PREFIX}3
-
-TARGET_PART_PREFIX=""
-if [ ! "${TARGET_DEVICE#/dev/mmcblk}" = "${TARGET_DEVICE}" ]; then
- TARGET_PART_PREFIX="p"
-fi
-TARGET_ROOTFS=$TARGET_DEVICE${TARGET_PART_PREFIX}2
-TARGET_SWAP=$TARGET_DEVICE${TARGET_PART_PREFIX}3
-
-echo ""
-info "Boot partition size: $BOOT_SIZE MB ($BOOTFS)"
-info "ROOTFS partition size: $ROOTFS_SIZE MB ($ROOTFS)"
-info "Swap partition size: $SWAP_SIZE MB ($SWAP)"
-echo ""
-
-# Use MSDOS by default as GPT cannot be reliably distributed in disk image form
-# as it requires the backup table to be on the last block of the device, which
-# of course varies from device to device.
-
-info "Partitioning installation media ($DEVICE)"
-
-debug "Deleting partition table on $DEVICE"
-dd if=/dev/zero of=$DEVICE bs=512 count=2 >$OUT 2>&1 || die "Failed to zero beginning of $DEVICE"
-
-debug "Creating new partition table (MSDOS) on $DEVICE"
-parted -s $DEVICE mklabel msdos >$OUT 2>&1 || die "Failed to create MSDOS partition table"
-
-debug "Creating boot partition on $BOOTFS"
-parted -s $DEVICE mkpart primary 0% $BOOT_SIZE >$OUT 2>&1 || die "Failed to create BOOT partition"
-
-debug "Enabling boot flag on $BOOTFS"
-parted -s $DEVICE set 1 boot on >$OUT 2>&1 || die "Failed to enable boot flag"
-
-debug "Creating ROOTFS partition on $ROOTFS"
-parted -s $DEVICE mkpart primary $ROOTFS_START $ROOTFS_END >$OUT 2>&1 || die "Failed to create ROOTFS partition"
-
-debug "Creating swap partition on $SWAP"
-parted -s $DEVICE mkpart primary $SWAP_START 100% >$OUT 2>&1 || die "Failed to create SWAP partition"
-
-if [ $DEBUG -eq 1 ]; then
- parted -s $DEVICE print
-fi
-
-
-#
-# Check if any $DEVICE partitions are mounted after partitioning
-#
-unmount_device || die "Failed to unmount $DEVICE partitions"
-
-
-#
-# Format $DEVICE partitions
-#
-info "Formatting partitions"
-debug "Formatting $BOOTFS as vfat"
-if [ ! "${DEVICE#/dev/loop}" = "${DEVICE}" ]; then
- mkfs.vfat -I $BOOTFS -n "EFI" >$OUT 2>&1 || die "Failed to format $BOOTFS"
-else
- mkfs.vfat $BOOTFS -n "EFI" >$OUT 2>&1 || die "Failed to format $BOOTFS"
-fi
-
-debug "Formatting $ROOTFS as ext3"
-mkfs.ext3 -F $ROOTFS -L "ROOT" >$OUT 2>&1 || die "Failed to format $ROOTFS"
-
-debug "Formatting swap partition ($SWAP)"
-mkswap $SWAP >$OUT 2>&1 || die "Failed to prepare swap"
-
-
-#
-# Installing to $DEVICE
-#
-debug "Mounting images and device in preparation for installation"
-mount -o ro,loop $HDDIMG $HDDIMG_MNT >$OUT 2>&1 || error "Failed to mount $HDDIMG"
-mount -o ro,loop $HDDIMG_MNT/rootfs.img $HDDIMG_ROOTFS_MNT >$OUT 2>&1 || error "Failed to mount rootfs.img"
-mount $ROOTFS $ROOTFS_MNT >$OUT 2>&1 || error "Failed to mount $ROOTFS on $ROOTFS_MNT"
-mount $BOOTFS $BOOTFS_MNT >$OUT 2>&1 || error "Failed to mount $BOOTFS on $BOOTFS_MNT"
-
-info "Preparing boot partition"
-EFIDIR="$BOOTFS_MNT/EFI/BOOT"
-cp $HDDIMG_MNT/vmlinuz $BOOTFS_MNT >$OUT 2>&1 || error "Failed to copy vmlinuz"
-# Copy the efi loader and configs (booti*.efi and grub.cfg if it exists)
-cp -r $HDDIMG_MNT/EFI $BOOTFS_MNT >$OUT 2>&1 || error "Failed to copy EFI dir"
-# Silently ignore a missing systemd-boot loader dir (we might just be a GRUB image)
-cp -r $HDDIMG_MNT/loader $BOOTFS_MNT >$OUT 2>&1
-
-# Update the boot loaders configurations for an installed image
-# Remove any existing root= kernel parameters and:
-# o Add a root= parameter with the target rootfs
-# o Specify ro so fsck can be run during boot
-# o Specify rootwait in case the target media is an asyncronous block device
-# such as MMC or USB disks
-# o Specify "quiet" to minimize boot time when using slow serial consoles
-
-# Look for a GRUB installation
-GRUB_CFG="$EFIDIR/grub.cfg"
-if [ -e "$GRUB_CFG" ]; then
- info "Configuring GRUB"
- # Delete the install entry
- sed -i "/menuentry 'install'/,/^}/d" $GRUB_CFG
- # Delete the initrd lines
- sed -i "/initrd /d" $GRUB_CFG
- # Delete any LABEL= strings
- sed -i "s/ LABEL=[^ ]*/ /" $GRUB_CFG
-
- sed -i "s@ root=[^ ]*@ @" $GRUB_CFG
- sed -i "s@vmlinuz @vmlinuz root=$TARGET_ROOTFS ro rootwait console=ttyS0 console=tty0 @" $GRUB_CFG
-fi
-
-# Look for a systemd-boot installation
-SYSTEMD_BOOT_ENTRIES="$BOOTFS_MNT/loader/entries"
-SYSTEMD_BOOT_CFG="$SYSTEMD_BOOT_ENTRIES/boot.conf"
-if [ -d "$SYSTEMD_BOOT_ENTRIES" ]; then
- info "Configuring SystemD-boot"
- # remove the install target if it exists
- rm $SYSTEMD_BOOT_ENTRIES/install.conf >$OUT 2>&1
-
- if [ ! -e "$SYSTEMD_BOOT_CFG" ]; then
- echo "ERROR: $SYSTEMD_BOOT_CFG not found"
- fi
-
- sed -i "/initrd /d" $SYSTEMD_BOOT_CFG
- sed -i "s@ root=[^ ]*@ @" $SYSTEMD_BOOT_CFG
- sed -i "s@options *LABEL=boot @options LABEL=Boot root=$TARGET_ROOTFS ro rootwait console=ttyS0 console=tty0 @" $SYSTEMD_BOOT_CFG
-fi
-
-# Ensure we have at least one EFI bootloader configured
-if [ ! -e $GRUB_CFG ] && [ ! -e $SYSTEMD_BOOT_CFG ]; then
- die "No EFI bootloader configuration found"
-fi
-
-
-info "Copying ROOTFS files (this may take a while)"
-cp -a $HDDIMG_ROOTFS_MNT/* $ROOTFS_MNT >$OUT 2>&1 || die "Root FS copy failed"
-
-echo "$TARGET_SWAP swap swap defaults 0 0" >> $ROOTFS_MNT/etc/fstab
-
-# We dont want udev to mount our root device while we're booting...
-if [ -d $ROOTFS_MNT/etc/udev/ ] ; then
- echo "$TARGET_DEVICE" >> $ROOTFS_MNT/etc/udev/mount.blacklist
-fi
-
-# Add startup.nsh script for automated boot
-printf "fs0:\%s\BOOT\%s\n" "EFI" "bootx64.efi" > $BOOTFS_MNT/startup.nsh
-
-
-# Call cleanup to unmount devices and images and remove the TMPDIR
-cleanup
-
-echo ""
-if [ $WARNINGS -ne 0 ] && [ $ERRORS -eq 0 ]; then
- echo "${YELLOW}Installation completed with warnings${CLEAR}"
- echo "${YELLOW}Warnings: $WARNINGS${CLEAR}"
-elif [ $ERRORS -ne 0 ]; then
- echo "${RED}Installation encountered errors${CLEAR}"
- echo "${RED}Errors: $ERRORS${CLEAR}"
- echo "${YELLOW}Warnings: $WARNINGS${CLEAR}"
-else
- success "Installation completed successfully"
-fi
-echo ""
diff --git a/scripts/contrib/patchreview.py b/scripts/contrib/patchreview.py
index 4e3e73c7a8b..1086c95f67f 100755
--- a/scripts/contrib/patchreview.py
+++ b/scripts/contrib/patchreview.py
@@ -132,8 +132,8 @@ def analyse(results, want_blame=False, verbose=True):
need_blame = True
if verbose:
print("Missing Signed-off-by tag (%s)" % patch)
- # TODO: disable this for now as too much fails
- if False and r.malformed_sob:
+
+ if r.malformed_sob:
need_blame = True
if verbose:
print("Malformed Signed-off-by '%s' (%s)" % (r.malformed_sob, patch))
diff --git a/scripts/contrib/verify-homepage.py b/scripts/contrib/verify-homepage.py
index 76f1749cfa0..cc6e797d8b3 100755
--- a/scripts/contrib/verify-homepage.py
+++ b/scripts/contrib/verify-homepage.py
@@ -27,7 +27,7 @@ logger = scriptutils.logger_create('verify_homepage')
def wgetHomepage(pn, homepage):
result = subprocess.call('wget ' + '-q -T 5 -t 1 --spider ' + homepage, shell = True)
if result:
- logger.warn("%s: failed to verify HOMEPAGE: %s " % (pn, homepage))
+ logger.warning("%s: failed to verify HOMEPAGE: %s " % (pn, homepage))
return 1
else:
return 0
diff --git a/scripts/devtool b/scripts/devtool
index d681a1929a2..0e578c0de36 100755
--- a/scripts/devtool
+++ b/scripts/devtool
@@ -51,7 +51,7 @@ class ConfigHandler(object):
def __init__(self, filename):
self.config_file = filename
- self.config_obj = configparser.SafeConfigParser()
+ self.config_obj = configparser.ConfigParser()
def get(self, section, option, default=None):
try:
diff --git a/scripts/lib/build_perf/html/report.html b/scripts/lib/build_perf/html/report.html
index 291ad9d7216..d1ba6f25788 100644
--- a/scripts/lib/build_perf/html/report.html
+++ b/scripts/lib/build_perf/html/report.html
@@ -136,10 +136,13 @@ h3 {
{% else %}
{% set result_style = "color: orange" %}
{%endif %}
+ {% if measurement.reldiff|abs > 2 %}
+ {% set result_style = result_style + "; font-weight: bold" %}
+ {% endif %}
<td>{{ measurement.description }}</td>
<td style="font-weight: bold">{{ measurement.value.mean }}</td>
<td style="{{ result_style }}">{{ measurement.absdiff_str }}</td>
- <td style="{{ result_style }}">{{ measurement.reldiff }}</td>
+ <td style="{{ result_style }}">{{ measurement.reldiff_str }}</td>
</tr>
{% endfor %}
{% else %}
@@ -167,7 +170,7 @@ h3 {
{% else %}
<span style="color: orange">
{% endif %}
- {{ measurement.absdiff_str }} ({{measurement.reldiff}})
+ {{ measurement.absdiff_str }} ({{measurement.reldiff_str}})
</span></span>
</div>
{# Table for trendchart and the statistics #}
diff --git a/scripts/lib/checklayer/__init__.py b/scripts/lib/checklayer/__init__.py
index 2618416fab2..77880418435 100644
--- a/scripts/lib/checklayer/__init__.py
+++ b/scripts/lib/checklayer/__init__.py
@@ -167,6 +167,10 @@ def add_layer_dependencies(bblayersconf, layer, layers, logger):
# multiple errors at once
if ret is not None and layer_depend not in ret:
ret.append(layer_depend)
+ else:
+ # we might have processed this dependency already, in which case
+ # we should not do it again (avoid recursive loop)
+ continue
# Recursively process...
if 'collections' not in layer_depend:
diff --git a/scripts/lib/devtool/build.py b/scripts/lib/devtool/build.py
index 252379e9b25..ba9593f1ad0 100644
--- a/scripts/lib/devtool/build.py
+++ b/scripts/lib/devtool/build.py
@@ -54,7 +54,11 @@ def build(args, config, basepath, workspace):
"""Entry point for the devtool 'build' subcommand"""
workspacepn = check_workspace_recipe(workspace, args.recipename, bbclassextend=True)
- build_tasks = _get_build_tasks(config)
+ if args.clean:
+ # use clean instead of cleansstate to avoid messing things up in eSDK
+ build_tasks = ['do_clean']
+ else:
+ build_tasks = _get_build_tasks(config)
bbappend = workspace[workspacepn]['bbappend']
if args.disable_parallel_make:
@@ -83,4 +87,5 @@ def register_commands(subparsers, context):
group='working', order=50)
parser_build.add_argument('recipename', help='Recipe to build')
parser_build.add_argument('-s', '--disable-parallel-make', action="store_true", help='Disable make parallelism')
+ parser_build.add_argument('-c', '--clean', action='store_true', help='clean up recipe building results')
parser_build.set_defaults(func=build)
diff --git a/scripts/lib/devtool/export.py b/scripts/lib/devtool/export.py
index 13ee258e7ad..35349e2cda1 100644
--- a/scripts/lib/devtool/export.py
+++ b/scripts/lib/devtool/export.py
@@ -84,7 +84,7 @@ def export(args, config, basepath, workspace):
# if all workspace is excluded, quit
if not len(set(workspace.keys()).difference(set(args.exclude))):
- logger.warn('All recipes in workspace excluded, nothing to export')
+ logger.warning('All recipes in workspace excluded, nothing to export')
return 0
exported = []
diff --git a/scripts/lib/devtool/import.py b/scripts/lib/devtool/import.py
index c13a180d14d..4264b7d8209 100644
--- a/scripts/lib/devtool/import.py
+++ b/scripts/lib/devtool/import.py
@@ -81,7 +81,7 @@ def devimport(args, config, basepath, workspace):
break
else:
non_importables.append(fn)
- logger.warn('No recipe to append %s.bbapppend, skipping' % fn)
+ logger.warning('No recipe to append %s.bbapppend, skipping' % fn)
# Extract
imported = []
@@ -104,9 +104,9 @@ def devimport(args, config, basepath, workspace):
try:
tar.extract(member, path=config.workspace_path)
except PermissionError as pe:
- logger.warn(pe)
+ logger.warning(pe)
else:
- logger.warn('File already present. Use --overwrite/-o to overwrite it: %s' % member.name)
+ logger.warning('File already present. Use --overwrite/-o to overwrite it: %s' % member.name)
continue
else:
tar.extract(member, path=config.workspace_path)
@@ -129,7 +129,7 @@ def devimport(args, config, basepath, workspace):
if imported:
logger.info('Imported recipes into workspace %s: %s' % (config.workspace_path, ', '.join(imported)))
else:
- logger.warn('No recipes imported into the workspace')
+ logger.warning('No recipes imported into the workspace')
return 0
diff --git a/scripts/lib/devtool/sdk.py b/scripts/lib/devtool/sdk.py
index f46577c2aba..4616753797b 100644
--- a/scripts/lib/devtool/sdk.py
+++ b/scripts/lib/devtool/sdk.py
@@ -145,6 +145,9 @@ def sdk_update(args, config, basepath, workspace):
# Fetch manifest from server
tmpmanifest = os.path.join(tmpsdk_dir, 'conf', 'sdk-conf-manifest')
ret = subprocess.call("wget -q -O %s %s/conf/sdk-conf-manifest" % (tmpmanifest, updateserver), shell=True)
+ if ret != 0:
+ logger.error("Cannot dowload files from %s" % updateserver)
+ return ret
changedfiles = check_manifest(tmpmanifest, basepath)
if not changedfiles:
logger.info("Already up-to-date")
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
index a1e8e1d3227..d14b7a65436 100644
--- a/scripts/lib/devtool/standard.py
+++ b/scripts/lib/devtool/standard.py
@@ -66,7 +66,7 @@ def add(args, config, basepath, workspace):
args.srctree = args.recipename
args.recipename = None
elif os.path.isdir(args.recipename):
- logger.warn('Ambiguous argument "%s" - assuming you mean it to be the recipe name' % args.recipename)
+ logger.warning('Ambiguous argument "%s" - assuming you mean it to be the recipe name' % args.recipename)
if not args.fetchuri:
if args.srcrev:
@@ -82,7 +82,7 @@ def add(args, config, basepath, workspace):
if args.fetchuri:
raise DevtoolError('URI specified as positional argument as well as -f/--fetch')
else:
- logger.warn('-f/--fetch option is deprecated - you can now simply specify the URL to fetch as a positional argument instead')
+ logger.warning('-f/--fetch option is deprecated - you can now simply specify the URL to fetch as a positional argument instead')
args.fetchuri = args.fetch
if args.recipename:
@@ -217,7 +217,7 @@ def add(args, config, basepath, workspace):
raise DevtoolError('Command \'%s\' did not create any recipe file:\n%s' % (e.command, e.stdout))
attic_recipe = os.path.join(config.workspace_path, 'attic', recipename, os.path.basename(recipefile))
if os.path.exists(attic_recipe):
- logger.warn('A modified recipe from a previous invocation exists in %s - you may wish to move this over the top of the new recipe if you had changes in it that you want to continue with' % attic_recipe)
+ logger.warning('A modified recipe from a previous invocation exists in %s - you may wish to move this over the top of the new recipe if you had changes in it that you want to continue with' % attic_recipe)
finally:
if tmpsrcdir and os.path.exists(tmpsrcdir):
shutil.rmtree(tmpsrcdir)
@@ -295,7 +295,7 @@ def add(args, config, basepath, workspace):
with open(layerconf_file, 'a') as f:
f.write('%s = "%s"\n' % (preferred_provider, recipe_name))
else:
- logger.warn('Set \'%s\' in order to use the recipe' % preferred_provider)
+ logger.warning('Set \'%s\' in order to use the recipe' % preferred_provider)
break
_add_md5(config, recipename, appendfile)
@@ -704,7 +704,7 @@ def _check_preserve(config, recipename):
if splitline[2] != md5:
bb.utils.mkdirhier(preservepath)
preservefile = os.path.basename(removefile)
- logger.warn('File %s modified since it was written, preserving in %s' % (preservefile, preservepath))
+ logger.warning('File %s modified since it was written, preserving in %s' % (preservefile, preservepath))
shutil.move(removefile, os.path.join(preservepath, preservefile))
else:
os.remove(removefile)
@@ -795,7 +795,7 @@ def modify(args, config, basepath, workspace):
if branchname.startswith(override_branch_prefix):
branches.append(branchname)
if branches:
- logger.warn('SRC_URI is conditionally overridden in this recipe, thus several %s* branches have been created, one for each override that makes changes to SRC_URI. It is recommended that you make changes to the %s branch first, then checkout and rebase each %s* branch and update any unique patches there (duplicates on those branches will be ignored by devtool finish/update-recipe)' % (override_branch_prefix, args.branch, override_branch_prefix))
+ logger.warning('SRC_URI is conditionally overridden in this recipe, thus several %s* branches have been created, one for each override that makes changes to SRC_URI. It is recommended that you make changes to the %s branch first, then checkout and rebase each %s* branch and update any unique patches there (duplicates on those branches will be ignored by devtool finish/update-recipe)' % (override_branch_prefix, args.branch, override_branch_prefix))
branches.insert(0, args.branch)
seen_patches = []
for branch in branches:
@@ -1720,7 +1720,7 @@ def update_recipe(args, config, basepath, workspace):
if updated:
rf = rd.getVar('FILE')
if rf.startswith(config.workspace_path):
- logger.warn('Recipe file %s has been updated but is inside the workspace - you will need to move it (and any associated files next to it) out to the desired layer before using "devtool reset" in order to keep any changes' % rf)
+ logger.warning('Recipe file %s has been updated but is inside the workspace - you will need to move it (and any associated files next to it) out to the desired layer before using "devtool reset" in order to keep any changes' % rf)
finally:
tinfoil.shutdown()
@@ -1803,7 +1803,7 @@ def _reset(recipes, no_clean, config, basepath, workspace):
if os.path.exists(origdir):
for root, dirs, files in os.walk(origdir):
for fn in files:
- logger.warn('Preserving %s in %s' % (fn, preservepath))
+ logger.warning('Preserving %s in %s' % (fn, preservepath))
_move_file(os.path.join(origdir, fn),
os.path.join(preservepath, fn))
for dn in dirs:
diff --git a/scripts/lib/devtool/upgrade.py b/scripts/lib/devtool/upgrade.py
index c3fd866ef67..202007793b2 100644
--- a/scripts/lib/devtool/upgrade.py
+++ b/scripts/lib/devtool/upgrade.py
@@ -264,7 +264,7 @@ def _extract_new_source(newpv, srctree, no_patch, srcrev, srcbranch, branch, kee
if no_patch:
patches = oe.recipeutils.get_recipe_patches(crd)
if patches:
- logger.warn('By user choice, the following patches will NOT be applied to the new source tree:\n %s' % '\n '.join([os.path.basename(patch) for patch in patches]))
+ logger.warning('By user choice, the following patches will NOT be applied to the new source tree:\n %s' % '\n '.join([os.path.basename(patch) for patch in patches]))
else:
__run('git checkout devtool-patched -b %s' % branch)
skiptag = False
@@ -273,9 +273,9 @@ def _extract_new_source(newpv, srctree, no_patch, srcrev, srcbranch, branch, kee
except bb.process.ExecutionError as e:
skiptag = True
if 'conflict' in e.stdout:
- logger.warn('Command \'%s\' failed:\n%s\n\nYou will need to resolve conflicts in order to complete the upgrade.' % (e.command, e.stdout.rstrip()))
+ logger.warning('Command \'%s\' failed:\n%s\n\nYou will need to resolve conflicts in order to complete the upgrade.' % (e.command, e.stdout.rstrip()))
else:
- logger.warn('Command \'%s\' failed:\n%s' % (e.command, e.stdout))
+ logger.warning('Command \'%s\' failed:\n%s' % (e.command, e.stdout))
if not skiptag:
if uri.startswith('git://'):
suffix = 'new'
@@ -420,7 +420,10 @@ def _create_new_recipe(newpv, md5, sha256, srcrev, srcbranch, srcsubdir_old, src
logger.info('Source subdirectory has changed, updating S value')
if license_diff:
- newlicchksum = " ".join(["file://{};md5={}".format(l["path"], l["actual_md5"]) + (";beginline={}".format(l["beginline"]) if l["beginline"] else "") + (";endline={}".format(l["endline"]) if l["endline"] else "") for l in new_licenses])
+ newlicchksum = " ".join(["file://{}".format(l['path']) +
+ (";beginline={}".format(l['beginline']) if l['beginline'] else "") +
+ (";endline={}".format(l['endline']) if l['endline'] else "") +
+ (";md5={}".format(l['actual_md5'])) for l in new_licenses])
newvalues["LIC_FILES_CHKSUM"] = newlicchksum
_add_license_diff_to_recipe(fullpath, license_diff)
diff --git a/scripts/lib/recipetool/append.py b/scripts/lib/recipetool/append.py
index 69c8bb77a04..3f2c134ad51 100644
--- a/scripts/lib/recipetool/append.py
+++ b/scripts/lib/recipetool/append.py
@@ -238,7 +238,7 @@ def appendfile(args):
if stdout:
logger.debug('file command output: %s' % stdout.rstrip())
if ('executable' in stdout and not 'shell script' in stdout) or 'shared object' in stdout:
- logger.warn('This file looks like it is a binary or otherwise the output of compilation. If it is, you should consider building it properly instead of substituting a binary file directly.')
+ logger.warning('This file looks like it is a binary or otherwise the output of compilation. If it is, you should consider building it properly instead of substituting a binary file directly.')
if args.recipe:
recipes = {args.targetpath: [args.recipe],}
@@ -275,7 +275,7 @@ def appendfile(args):
if selectpn:
logger.debug('Selecting recipe %s for file %s' % (selectpn, args.targetpath))
if postinst_pns:
- logger.warn('%s be modified by postinstall scripts for the following recipes:\n %s\nThis may or may not be an issue depending on what modifications these postinstall scripts make.' % (args.targetpath, '\n '.join(postinst_pns)))
+ logger.warning('%s be modified by postinstall scripts for the following recipes:\n %s\nThis may or may not be an issue depending on what modifications these postinstall scripts make.' % (args.targetpath, '\n '.join(postinst_pns)))
rd = _parse_recipe(selectpn, tinfoil)
if not rd:
# Error message already shown
@@ -286,12 +286,12 @@ def appendfile(args):
sourcetype, sourcepath = sourcefile.split('://', 1)
logger.debug('Original source file is %s (%s)' % (sourcepath, sourcetype))
if sourcetype == 'patch':
- logger.warn('File %s is added by the patch %s - you may need to remove or replace this patch in order to replace the file.' % (args.targetpath, sourcepath))
+ logger.warning('File %s is added by the patch %s - you may need to remove or replace this patch in order to replace the file.' % (args.targetpath, sourcepath))
sourcepath = None
else:
logger.debug('Unable to determine source file, proceeding anyway')
if modpatches:
- logger.warn('File %s is modified by the following patches:\n %s' % (args.targetpath, '\n '.join(modpatches)))
+ logger.warning('File %s is modified by the following patches:\n %s' % (args.targetpath, '\n '.join(modpatches)))
if instelements and sourcepath:
install = None
@@ -343,7 +343,7 @@ def appendsrc(args, files, rd, extralines=None):
if rd.getVar('S') == rd.getVar('STAGING_KERNEL_DIR'):
srcdir = os.path.join(workdir, 'git')
if not bb.data.inherits_class('kernel-yocto', rd):
- logger.warn('S == STAGING_KERNEL_DIR and non-kernel-yocto, unable to determine path to srcdir, defaulting to ${WORKDIR}/git')
+ logger.warning('S == STAGING_KERNEL_DIR and non-kernel-yocto, unable to determine path to srcdir, defaulting to ${WORKDIR}/git')
src_destdir = os.path.join(os.path.relpath(srcdir, workdir), src_destdir)
src_destdir = os.path.normpath(src_destdir)
@@ -357,9 +357,9 @@ def appendsrc(args, files, rd, extralines=None):
if simple_str in simplified:
existing = simplified[simple_str]
if source_uri != existing:
- logger.warn('{0!r} is already in SRC_URI, with different parameters: {1!r}, not adding'.format(source_uri, existing))
+ logger.warning('{0!r} is already in SRC_URI, with different parameters: {1!r}, not adding'.format(source_uri, existing))
else:
- logger.warn('{0!r} is already in SRC_URI, not adding'.format(source_uri))
+ logger.warning('{0!r} is already in SRC_URI, not adding'.format(source_uri))
else:
extralines.append('SRC_URI += {0}'.format(source_uri))
copyfiles[newfile] = srcfile
diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py
index a3710285bbb..1810c70ae2b 100644
--- a/scripts/lib/recipetool/create.py
+++ b/scripts/lib/recipetool/create.py
@@ -98,7 +98,7 @@ class RecipeHandler(object):
break
except IOError as ioe:
if ioe.errno == 2:
- logger.warn('unable to find a pkgdata file for package %s' % pkg)
+ logger.warning('unable to find a pkgdata file for package %s' % pkg)
else:
raise
@@ -437,7 +437,7 @@ def create_recipe(args):
if scriptutils.is_src_url(source):
# Warn about github archive URLs
if re.match('https?://github.com/[^/]+/[^/]+/archive/.+(\.tar\..*|\.zip)$', source):
- logger.warn('github archive files are not guaranteed to be stable and may be re-generated over time. If the latter occurs, the checksums will likely change and the recipe will fail at do_fetch. It is recommended that you point to an actual commit or tag in the repository instead (using the repository URL in conjunction with the -S/--srcrev option).')
+ logger.warning('github archive files are not guaranteed to be stable and may be re-generated over time. If the latter occurs, the checksums will likely change and the recipe will fail at do_fetch. It is recommended that you point to an actual commit or tag in the repository instead (using the repository URL in conjunction with the -S/--srcrev option).')
# Fetch a URL
fetchuri = reformat_git_uri(urldefrag(source)[0])
if args.binary:
diff --git a/scripts/lib/recipetool/create_kmod.py b/scripts/lib/recipetool/create_kmod.py
index 4569b53c805..3982537a4e9 100644
--- a/scripts/lib/recipetool/create_kmod.py
+++ b/scripts/lib/recipetool/create_kmod.py
@@ -141,7 +141,7 @@ class KernelModuleRecipeHandler(RecipeHandler):
warnmsg = 'Unable to find means of passing kernel path into install makefile - if kernel path is hardcoded you will need to patch the makefile'
if warnmsg:
warnmsg += '. Note that the variable KERNEL_SRC will be passed in as the kernel source path.'
- logger.warn(warnmsg)
+ logger.warning(warnmsg)
lines_after.append('# %s' % warnmsg)
return True
diff --git a/scripts/lib/recipetool/create_npm.py b/scripts/lib/recipetool/create_npm.py
index fb57e705f25..03667887fc0 100644
--- a/scripts/lib/recipetool/create_npm.py
+++ b/scripts/lib/recipetool/create_npm.py
@@ -90,7 +90,7 @@ class NpmRecipeHandler(RecipeHandler):
runenv = dict(os.environ, PATH=d.getVar('PATH'))
bb.process.run('npm shrinkwrap', cwd=srctree, stderr=subprocess.STDOUT, env=runenv, shell=True)
except bb.process.ExecutionError as e:
- logger.warn('npm shrinkwrap failed:\n%s' % e.stdout)
+ logger.warning('npm shrinkwrap failed:\n%s' % e.stdout)
return
tmpfile = os.path.join(localfilesdir, 'npm-shrinkwrap.json')
@@ -107,12 +107,12 @@ class NpmRecipeHandler(RecipeHandler):
cwd=srctree, stderr=subprocess.STDOUT, env=runenv, shell=True)
relockbin = os.path.join(NpmRecipeHandler.lockdownpath, 'node_modules', 'lockdown', 'relock.js')
if not os.path.exists(relockbin):
- logger.warn('Could not find relock.js within lockdown directory; skipping lockdown')
+ logger.warning('Could not find relock.js within lockdown directory; skipping lockdown')
return
try:
bb.process.run('node %s' % relockbin, cwd=srctree, stderr=subprocess.STDOUT, env=runenv, shell=True)
except bb.process.ExecutionError as e:
- logger.warn('lockdown-relock failed:\n%s' % e.stdout)
+ logger.warning('lockdown-relock failed:\n%s' % e.stdout)
return
tmpfile = os.path.join(localfilesdir, 'lockdown.json')
@@ -320,6 +320,7 @@ class NpmRecipeHandler(RecipeHandler):
blacklist = True
break
if (not blacklist and 'linux' not in pkg_os) or '!linux' in pkg_os:
+ pkg = pdata.get('name', 'Unnamed package')
logger.debug(2, "Skipping %s since it's incompatible with Linux" % pkg)
return False
return True
diff --git a/scripts/lib/recipetool/edit.py b/scripts/lib/recipetool/edit.py
new file mode 100644
index 00000000000..c4789a9994c
--- /dev/null
+++ b/scripts/lib/recipetool/edit.py
@@ -0,0 +1,54 @@
+# Recipe creation tool - edit plugin
+#
+# This sub-command edits the recipe and appends for the specified target
+#
+# Example: recipetool edit busybox
+#
+# Copyright (C) 2018 Mentor Graphics Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+import argparse
+import errno
+import logging
+import os
+import re
+import subprocess
+import sys
+import scriptutils
+
+
+logger = logging.getLogger('recipetool')
+tinfoil = None
+
+
+def tinfoil_init(instance):
+ global tinfoil
+ tinfoil = instance
+
+
+def edit(args):
+ import oe.recipeutils
+
+ recipe_path = tinfoil.get_recipe_file(args.target)
+ appends = tinfoil.get_file_appends(recipe_path)
+
+ return scriptutils.run_editor([recipe_path] + appends, logger)
+
+
+def register_commands(subparsers):
+ parser = subparsers.add_parser('edit',
+ help='Edit the recipe and appends for the specified target. This obeys $VISUAL if set, otherwise $EDITOR, otherwise vi.')
+ parser.add_argument('target', help='Target recipe/provide to edit')
+ parser.set_defaults(func=edit, parserecipes=True)
diff --git a/scripts/lib/recipetool/newappend.py b/scripts/lib/recipetool/newappend.py
index decce83facd..76707b4c91b 100644
--- a/scripts/lib/recipetool/newappend.py
+++ b/scripts/lib/recipetool/newappend.py
@@ -58,11 +58,11 @@ def newappend(args):
return 1
if not path_ok:
- logger.warn('Unable to determine correct subdirectory path for bbappend file - check that what %s adds to BBFILES also matches .bbappend files. Using %s for now, but until you fix this the bbappend will not be applied.', os.path.join(args.destlayer, 'conf', 'layer.conf'), os.path.dirname(append_path))
+ logger.warning('Unable to determine correct subdirectory path for bbappend file - check that what %s adds to BBFILES also matches .bbappend files. Using %s for now, but until you fix this the bbappend will not be applied.', os.path.join(args.destlayer, 'conf', 'layer.conf'), os.path.dirname(append_path))
layerdirs = [os.path.abspath(layerdir) for layerdir in rd.getVar('BBLAYERS').split()]
if not os.path.abspath(args.destlayer) in layerdirs:
- logger.warn('Specified layer is not currently enabled in bblayers.conf, you will need to add it before this bbappend will be active')
+ logger.warning('Specified layer is not currently enabled in bblayers.conf, you will need to add it before this bbappend will be active')
if not os.path.exists(append_path):
bb.utils.mkdirhier(os.path.dirname(append_path))
diff --git a/scripts/lib/scriptutils.py b/scripts/lib/scriptutils.py
index 85b1c949bf5..31e48ea4dc1 100644
--- a/scripts/lib/scriptutils.py
+++ b/scripts/lib/scriptutils.py
@@ -15,16 +15,17 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-import sys
-import os
-import logging
-import glob
import argparse
-import subprocess
-import tempfile
-import shutil
+import glob
+import logging
+import os
import random
+import shlex
+import shutil
import string
+import subprocess
+import sys
+import tempfile
def logger_create(name, stream=None):
logger = logging.getLogger(name)
@@ -214,15 +215,14 @@ def fetch_url(tinfoil, srcuri, srcrev, destdir, logger, preserve_tmp=False, mirr
def run_editor(fn, logger=None):
if isinstance(fn, str):
- params = '"%s"' % fn
+ files = [fn]
else:
- params = ''
- for fnitem in fn:
- params += ' "%s"' % fnitem
+ files = fn
editor = os.getenv('VISUAL', os.getenv('EDITOR', 'vi'))
try:
- return subprocess.check_call('%s %s' % (editor, params), shell=True)
+ #print(shlex.split(editor) + files)
+ return subprocess.check_call(shlex.split(editor) + files)
except subprocess.CalledProcessError as exc:
logger.error("Execution of '%s' failed: %s" % (editor, exc))
return 1
diff --git a/scripts/lib/wic/canned-wks/mkhybridiso.wks b/scripts/lib/wic/canned-wks/mkhybridiso.wks
index 9d34e9b4770..48c5ac4791b 100644
--- a/scripts/lib/wic/canned-wks/mkhybridiso.wks
+++ b/scripts/lib/wic/canned-wks/mkhybridiso.wks
@@ -2,6 +2,6 @@
# long-description: Creates an EFI and legacy bootable hybrid ISO image
# which can be used on optical media as well as USB media.
-part /boot --source isoimage-isohybrid --sourceparams="loader=grub-efi,image_name=HYBRID_ISO_IMG" --ondisk cd --label HYBRIDISO --fstype=ext4
+part /boot --source isoimage-isohybrid --sourceparams="loader=grub-efi,image_name=HYBRID_ISO_IMG" --ondisk cd --label HYBRIDISO
bootloader --timeout=15 --append=""
diff --git a/scripts/lib/wic/canned-wks/qemux86-directdisk.wks b/scripts/lib/wic/canned-wks/qemux86-directdisk.wks
index 1f8466af29b..be51c4eb565 100644
--- a/scripts/lib/wic/canned-wks/qemux86-directdisk.wks
+++ b/scripts/lib/wic/canned-wks/qemux86-directdisk.wks
@@ -4,5 +4,5 @@
include common.wks.inc
-bootloader --timeout=0 --append="vga=0 uvesafb.mode_option=640x480-32 rw mem=256M ip=192.168.7.2::192.168.7.1:255.255.255.0 oprofile.timer=1 rootfstype=ext4 "
+bootloader --timeout=0 --append="vga=0 rw mem=256M oprofile.timer=1 rootfstype=ext4 "
diff --git a/scripts/lib/wic/engine.py b/scripts/lib/wic/engine.py
index edcfab39ef5..850cec30e55 100644
--- a/scripts/lib/wic/engine.py
+++ b/scripts/lib/wic/engine.py
@@ -284,8 +284,8 @@ class Disk:
aname = "_%s" % name
if aname not in self.__dict__:
setattr(self, aname, find_executable(name, self.paths))
- if aname not in self.__dict__:
- raise WicError("Can't find executable {}".format(name))
+ if aname not in self.__dict__ or self.__dict__[aname] is None:
+ raise WicError("Can't find executable '{}'".format(name))
return self.__dict__[aname]
return self.__dict__[name]
@@ -340,9 +340,21 @@ class Disk:
"""Remove files/dirs from the partition."""
partimg = self._get_part_image(pnum)
if self.partitions[pnum].fstype.startswith('ext'):
- exec_cmd("{} {} -wR 'rm {}'".format(self.debugfs,
+ cmd = "{} {} -wR 'rm {}'".format(self.debugfs,
self._get_part_image(pnum),
- path), as_shell=True)
+ path)
+ out = exec_cmd(cmd , as_shell=True)
+ for line in out.splitlines():
+ if line.startswith("rm:"):
+ if "file is a directory" in line:
+ # Try rmdir to see if this is an empty directory. This won't delete
+ # any non empty directory so let user know about any error that this might
+ # generate.
+ print(exec_cmd("{} {} -wR 'rmdir {}'".format(self.debugfs,
+ self._get_part_image(pnum),
+ path), as_shell=True))
+ else:
+ raise WicError("Could not complete operation: wic %s" % str(line))
else: # fat
cmd = "{} -i {} ::{}".format(self.mdel, partimg, path)
try:
@@ -391,11 +403,8 @@ class Disk:
def write_ptable(parts, target):
with tempfile.NamedTemporaryFile(prefix="wic-sfdisk-", mode='w') as outf:
write_sfdisk_script(outf, parts)
- cmd = "{} --no-reread {} < {} 2>/dev/null".format(self.sfdisk, target, outf.name)
- try:
- subprocess.check_output(cmd, shell=True)
- except subprocess.CalledProcessError as err:
- raise WicError("Can't run '{}' command: {}".format(cmd, err))
+ cmd = "{} --no-reread {} < {} ".format(self.sfdisk, target, outf.name)
+ exec_cmd(cmd, as_shell=True)
if expand is None:
sparse_copy(self.imagepath, target)
@@ -412,11 +421,14 @@ class Disk:
for line in exec_cmd("{} -F {}".format(self.sfdisk, target)).splitlines():
if line.startswith("Unpartitioned space ") and line.endswith("sectors"):
free = int(line.split()[-2])
+ # Align free space to a 2048 sector boundary. YOCTO #12840.
+ free = free - (free % 2048)
if free is None:
raise WicError("Can't get size of unpartitioned space")
# calculate expanded partitions sizes
sizes = {}
+ num_auto_resize = 0
for num, part in enumerate(parts['partitiontable']['partitions'], 1):
if num in expand:
if expand[num] != 0: # don't resize partition if size is set to 0
@@ -426,10 +438,11 @@ class Disk:
sizes[num] = sectors
elif part['type'] != 'f':
sizes[num] = -1
+ num_auto_resize += 1
for num, part in enumerate(parts['partitiontable']['partitions'], 1):
if sizes.get(num) == -1:
- part['size'] += free // len(sizes)
+ part['size'] += free // num_auto_resize
# write resized partition table to the target
write_ptable(parts, target)
@@ -493,7 +506,7 @@ class Disk:
sparse_copy(partfname, target, seek=part['start'] * self._lsector_size)
os.unlink(partfname)
elif part['type'] != 'f':
- logger.warn("skipping partition {}: unsupported fstype {}".format(pnum, fstype))
+ logger.warning("skipping partition {}: unsupported fstype {}".format(pnum, fstype))
def wic_ls(args, native_sysroot):
"""List contents of partitioned image or vfat partition."""
diff --git a/scripts/lib/wic/help.py b/scripts/lib/wic/help.py
index 842b868a575..64f08052c7a 100644
--- a/scripts/lib/wic/help.py
+++ b/scripts/lib/wic/help.py
@@ -866,11 +866,11 @@ DESCRIPTION
Partitions with a <mountpoint> specified will be automatically mounted.
This is achieved by wic adding entries to the fstab during image
generation. In order for a valid fstab to be generated one of the
- --ondrive, --ondisk or --use-uuid partition options must be used for
- each partition that specifies a mountpoint. Note that with --use-uuid
- and non-root <mountpoint>, including swap, the mount program must
- understand the PARTUUID syntax. This currently excludes the busybox
- versions of these applications.
+ --ondrive, --ondisk, --use-uuid or --use-label partition options must
+ be used for each partition that specifies a mountpoint. Note that with
+ --use-{uuid,label} and non-root <mountpoint>, including swap, the mount
+ program must understand the PARTUUID or LABEL syntax. This currently
+ excludes the busybox versions of these applications.
The following are supported 'part' options:
@@ -945,6 +945,14 @@ DESCRIPTION
label is already in use by another filesystem,
a new label is created for the partition.
+ --use-label: This option is specific to wic. It makes wic to use the
+ label in /etc/fstab to specify a partition. If the
+ --use-label and --use-uuid are used at the same time,
+ we prefer the uuid because it is less likely to cause
+ name confliction. We don't support using this parameter
+ on the root partition since it requires an initramfs to
+ parse this value and we do not currently support that.
+
--active: Marks the partition as active.
--align (in KBytes): This option is specific to wic and says
diff --git a/scripts/lib/wic/ksparser.py b/scripts/lib/wic/ksparser.py
index e590b2fe3c0..7e5a9c5092b 100644
--- a/scripts/lib/wic/ksparser.py
+++ b/scripts/lib/wic/ksparser.py
@@ -141,6 +141,7 @@ class KickStart():
'squashfs', 'vfat', 'msdos', 'swap'))
part.add_argument('--mkfs-extraopts', default='')
part.add_argument('--label')
+ part.add_argument('--use-label', action='store_true')
part.add_argument('--no-table', action='store_true')
part.add_argument('--ondisk', '--ondrive', dest='disk', default='sda')
part.add_argument("--overhead-factor", type=overheadtype)
@@ -196,9 +197,18 @@ class KickStart():
raise KickStartError('%s:%d: %s' % \
(confpath, lineno, err))
if line.startswith('part'):
- # SquashFS does not support UUID
- if parsed.fstype == 'squashfs' and parsed.use_uuid:
- err = "%s:%d: SquashFS does not support UUID" \
+ # SquashFS does not support filesystem UUID
+ if parsed.fstype == 'squashfs':
+ if parsed.fsuuid:
+ err = "%s:%d: SquashFS does not support UUID" \
+ % (confpath, lineno)
+ raise KickStartError(err)
+ if parsed.label:
+ err = "%s:%d: SquashFS does not support LABEL" \
+ % (confpath, lineno)
+ raise KickStartError(err)
+ if parsed.use_label and not parsed.label:
+ err = "%s:%d: Must set the label with --label" \
% (confpath, lineno)
raise KickStartError(err)
# using ArgumentParser one cannot easily tell if option
diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py
index 3fe5c4e26c4..3da7e23e617 100644
--- a/scripts/lib/wic/partition.py
+++ b/scripts/lib/wic/partition.py
@@ -47,6 +47,7 @@ class Partition():
self.fsopts = args.fsopts
self.fstype = args.fstype
self.label = args.label
+ self.use_label = args.use_label
self.mkfs_extraopts = args.mkfs_extraopts
self.mountpoint = args.mountpoint
self.no_table = args.no_table
@@ -66,7 +67,6 @@ class Partition():
self.lineno = lineno
self.source_file = ""
- self.sourceparams_dict = {}
def get_extra_block_count(self, current_blocks):
"""
@@ -211,7 +211,7 @@ class Partition():
"""
p_prefix = os.environ.get("PSEUDO_PREFIX", "%s/usr" % native_sysroot)
p_localstatedir = os.environ.get("PSEUDO_LOCALSTATEDIR",
- "%s/../pseudo" % get_bitbake_var("IMAGE_ROOTFS"))
+ "%s/../pseudo" % rootfs_dir)
p_passwd = os.environ.get("PSEUDO_PASSWD", rootfs_dir)
p_nosymlinkexp = os.environ.get("PSEUDO_NOSYMLINKEXP", "1")
pseudo = "export PSEUDO_PREFIX=%s;" % p_prefix
diff --git a/scripts/lib/wic/plugins/imager/direct.py b/scripts/lib/wic/plugins/imager/direct.py
index 1fa6b917e66..bb14a334b2c 100644
--- a/scripts/lib/wic/plugins/imager/direct.py
+++ b/scripts/lib/wic/plugins/imager/direct.py
@@ -122,6 +122,10 @@ class DirectPlugin(ImagerPlugin):
if self._update_fstab(fstab_lines, self.parts):
# copy rootfs dir to workdir to update fstab
# as rootfs can be used by other tasks and can't be modified
+ new_pseudo = os.path.realpath(os.path.join(self.workdir, "pseudo"))
+ from_dir = os.path.join(os.path.join(image_rootfs, ".."), "pseudo")
+ from_dir = os.path.realpath(from_dir)
+ copyhardlinktree(from_dir, new_pseudo)
new_rootfs = os.path.realpath(os.path.join(self.workdir, "rootfs_copy"))
copyhardlinktree(image_rootfs, new_rootfs)
fstab_path = os.path.join(new_rootfs, 'etc/fstab')
@@ -151,6 +155,8 @@ class DirectPlugin(ImagerPlugin):
device_name = "UUID=%s" % part.fsuuid
else:
device_name = "PARTUUID=%s" % part.uuid
+ elif part.use_label:
+ device_name = "LABEL=%s" % part.label
else:
# mmc device partitions are named mmcblk0p1, mmcblk0p2..
prefix = 'p' if part.disk.startswith('mmcblk') else ''
diff --git a/scripts/lib/wic/plugins/source/bootimg-efi.py b/scripts/lib/wic/plugins/source/bootimg-efi.py
index beb74d7a712..0eb86a079f4 100644
--- a/scripts/lib/wic/plugins/source/bootimg-efi.py
+++ b/scripts/lib/wic/plugins/source/bootimg-efi.py
@@ -45,7 +45,7 @@ class BootimgEFIPlugin(SourcePlugin):
name = 'bootimg-efi'
@classmethod
- def do_configure_grubefi(cls, creator, cr_workdir):
+ def do_configure_grubefi(cls, hdddir, creator, cr_workdir, source_params):
"""
Create loader-specific (grub-efi) config
"""
@@ -62,6 +62,18 @@ class BootimgEFIPlugin(SourcePlugin):
raise WicError("configfile is specified but failed to "
"get it from %s." % configfile)
+ initrd = source_params.get('initrd')
+
+ if initrd:
+ bootimg_dir = get_bitbake_var("DEPLOY_DIR_IMAGE")
+ if not bootimg_dir:
+ raise WicError("Couldn't find DEPLOY_DIR_IMAGE, exiting")
+
+ cp_cmd = "cp %s/%s %s" % (bootimg_dir, initrd, hdddir)
+ exec_cmd(cp_cmd, True)
+ else:
+ logger.debug("Ignoring missing initrd")
+
if not custom_cfg:
# Create grub configuration using parameters from wks file
bootloader = creator.ks.bootloader
@@ -76,6 +88,10 @@ class BootimgEFIPlugin(SourcePlugin):
grubefi_conf += "linux %s root=%s rootwait %s\n" \
% (kernel, creator.rootdev, bootloader.append)
+
+ if initrd:
+ grubefi_conf += "initrd /%s\n" % initrd
+
grubefi_conf += "}\n"
logger.debug("Writing grubefi config %s/hdd/boot/EFI/BOOT/grub.cfg",
@@ -167,7 +183,7 @@ class BootimgEFIPlugin(SourcePlugin):
try:
if source_params['loader'] == 'grub-efi':
- cls.do_configure_grubefi(creator, cr_workdir)
+ cls.do_configure_grubefi(hdddir, creator, cr_workdir, source_params)
elif source_params['loader'] == 'systemd-boot':
cls.do_configure_systemdboot(hdddir, creator, cr_workdir, source_params)
else:
diff --git a/scripts/lib/wic/plugins/source/bootimg-partition.py b/scripts/lib/wic/plugins/source/bootimg-partition.py
index b239fc0b4cf..ddc880be366 100644
--- a/scripts/lib/wic/plugins/source/bootimg-partition.py
+++ b/scripts/lib/wic/plugins/source/bootimg-partition.py
@@ -30,6 +30,7 @@ import re
from glob import glob
from wic import WicError
+from wic.engine import get_custom_config
from wic.pluginbase import SourcePlugin
from wic.misc import exec_cmd, get_bitbake_var
@@ -44,15 +45,11 @@ class BootimgPartitionPlugin(SourcePlugin):
name = 'bootimg-partition'
@classmethod
- def do_prepare_partition(cls, part, source_params, cr, cr_workdir,
+ def do_configure_partition(cls, part, source_params, cr, cr_workdir,
oe_builddir, bootimg_dir, kernel_dir,
- rootfs_dir, native_sysroot):
+ native_sysroot):
"""
- Called to do the actual content population for a partition i.e. it
- 'prepares' the partition to be incorporated into the image.
- In this case, does the following:
- - sets up a vfat partition
- - copies all files listed in IMAGE_BOOT_FILES variable
+ Called before do_prepare_partition(), create u-boot specific boot config
"""
hdddir = "%s/boot.%d" % (cr_workdir, part.lineno)
install_cmd = "install -d %s" % hdddir
@@ -63,8 +60,6 @@ class BootimgPartitionPlugin(SourcePlugin):
if not kernel_dir:
raise WicError("Couldn't find DEPLOY_DIR_IMAGE, exiting")
- logger.debug('Kernel dir: %s', bootimg_dir)
-
boot_files = None
for (fmt, id) in (("_uuid-%s", part.uuid), ("_label-%s", part.label), (None, None)):
if fmt:
@@ -94,9 +89,9 @@ class BootimgPartitionPlugin(SourcePlugin):
logger.debug('Destination entry: %r', dst_entry)
deploy_files.append(dst_entry)
+ cls.install_task = [];
for deploy_entry in deploy_files:
src, dst = deploy_entry
- install_task = []
if '*' in src:
# by default install files under their basename
entry_name_fn = os.path.basename
@@ -111,21 +106,101 @@ class BootimgPartitionPlugin(SourcePlugin):
logger.debug('Globbed sources: %s', ', '.join(srcs))
for entry in srcs:
+ src = os.path.relpath(entry, kernel_dir)
entry_dst_name = entry_name_fn(entry)
- install_task.append((entry,
- os.path.join(hdddir,
- entry_dst_name)))
+ cls.install_task.append((src, entry_dst_name))
else:
- install_task = [(os.path.join(kernel_dir, src),
- os.path.join(hdddir, dst))]
-
- for task in install_task:
- src_path, dst_path = task
- logger.debug('Install %s as %s',
- os.path.basename(src_path), dst_path)
- install_cmd = "install -m 0644 -D %s %s" \
- % (src_path, dst_path)
- exec_cmd(install_cmd)
+ cls.install_task.append((src, dst))
+
+ if source_params.get('loader') != "u-boot":
+ return
+
+ configfile = cr.ks.bootloader.configfile
+ custom_cfg = None
+ if configfile:
+ custom_cfg = get_custom_config(configfile)
+ if custom_cfg:
+ # Use a custom configuration for extlinux.conf
+ extlinux_conf = custom_cfg
+ logger.debug("Using custom configuration file "
+ "%s for extlinux.cfg", configfile)
+ else:
+ raise WicError("configfile is specified but failed to "
+ "get it from %s." % configfile)
+
+ if not custom_cfg:
+ # The kernel types supported by the sysboot of u-boot
+ kernel_types = ["zImage", "Image", "fitImage", "uImage", "vmlinux"]
+ has_dtb = False
+ fdt_dir = '/'
+ kernel_name = None
+
+ # Find the kernel image name, from the highest precedence to lowest
+ for image in kernel_types:
+ for task in cls.install_task:
+ src, dst = task
+ if re.match(image, src):
+ kernel_name = os.path.join('/', dst)
+ break
+ if kernel_name:
+ break
+
+ for task in cls.install_task:
+ src, dst = task
+ # We suppose that all the dtb are in the same directory
+ if re.search(r'\.dtb', src) and fdt_dir == '/':
+ has_dtb = True
+ fdt_dir = os.path.join(fdt_dir, os.path.dirname(dst))
+ break
+
+ if not kernel_name:
+ raise WicError('No kernel file founded')
+
+ # Compose the extlinux.conf
+ extlinux_conf = "default Yocto\n"
+ extlinux_conf += "label Yocto\n"
+ extlinux_conf += " kernel %s\n" % kernel_name
+ if has_dtb:
+ extlinux_conf += " fdtdir %s\n" % fdt_dir
+ bootloader = cr.ks.bootloader
+ extlinux_conf += "append root=%s rootwait %s\n" \
+ % (cr.rootdev, bootloader.append if bootloader.append else '')
+
+ install_cmd = "install -d %s/extlinux/" % hdddir
+ exec_cmd(install_cmd)
+ cfg = open("%s/extlinux/extlinux.conf" % hdddir, "w")
+ cfg.write(extlinux_conf)
+ cfg.close()
+
+
+ @classmethod
+ def do_prepare_partition(cls, part, source_params, cr, cr_workdir,
+ oe_builddir, bootimg_dir, kernel_dir,
+ rootfs_dir, native_sysroot):
+ """
+ Called to do the actual content population for a partition i.e. it
+ 'prepares' the partition to be incorporated into the image.
+ In this case, does the following:
+ - sets up a vfat partition
+ - copies all files listed in IMAGE_BOOT_FILES variable
+ """
+ hdddir = "%s/boot.%d" % (cr_workdir, part.lineno)
+
+ if not kernel_dir:
+ kernel_dir = get_bitbake_var("DEPLOY_DIR_IMAGE")
+ if not kernel_dir:
+ raise WicError("Couldn't find DEPLOY_DIR_IMAGE, exiting")
+
+ logger.debug('Kernel dir: %s', bootimg_dir)
+
+
+ for task in cls.install_task:
+ src_path, dst_path = task
+ logger.debug('Install %s as %s', src_path, dst_path)
+ install_cmd = "install -m 0644 -D %s %s" \
+ % (os.path.join(kernel_dir, src_path),
+ os.path.join(hdddir, dst_path))
+ exec_cmd(install_cmd)
logger.debug('Prepare boot partition using rootfs in %s', hdddir)
part.prepare_rootfs(cr_workdir, oe_builddir, hdddir,
diff --git a/scripts/lib/wic/plugins/source/isoimage-isohybrid.py b/scripts/lib/wic/plugins/source/isoimage-isohybrid.py
index d6bd3bff7bf..170077c22c2 100644
--- a/scripts/lib/wic/plugins/source/isoimage-isohybrid.py
+++ b/scripts/lib/wic/plugins/source/isoimage-isohybrid.py
@@ -47,7 +47,7 @@ class IsoImagePlugin(SourcePlugin):
Example kickstart file:
part /boot --source isoimage-isohybrid --sourceparams="loader=grub-efi, \\
- image_name= IsoImage" --ondisk cd --label LIVECD --fstype=ext2
+ image_name= IsoImage" --ondisk cd --label LIVECD
bootloader --timeout=10 --append=" "
In --sourceparams "loader" specifies the bootloader used for booting in EFI
@@ -191,10 +191,9 @@ class IsoImagePlugin(SourcePlugin):
else:
raise WicError("Couldn't find or build initrd, exiting.")
- exec_cmd("cd %s && find . | cpio -o -H newc -R +0:+0 >./initrd.cpio " \
- % initrd_dir, as_shell=True)
- exec_cmd("gzip -f -9 -c %s/initrd.cpio > %s" \
- % (cr_workdir, initrd), as_shell=True)
+ exec_cmd("cd %s && find . | cpio -o -H newc -R root:root >%s/initrd.cpio " \
+ % (initrd_dir, cr_workdir), as_shell=True)
+ exec_cmd("gzip -f -9 %s/initrd.cpio" % cr_workdir, as_shell=True)
shutil.rmtree(initrd_dir)
return initrd
@@ -253,33 +252,8 @@ class IsoImagePlugin(SourcePlugin):
raise WicError("Couldn't find IMAGE_ROOTFS, exiting.")
part.rootfs_dir = rootfs_dir
-
- # Prepare rootfs.img
deploy_dir = get_bitbake_var("DEPLOY_DIR_IMAGE")
img_iso_dir = get_bitbake_var("ISODIR")
- rootfs_img = "%s/rootfs.img" % img_iso_dir
- if not os.path.isfile(rootfs_img):
- # check if rootfs.img is in deploydir
- deploy_dir = get_bitbake_var("DEPLOY_DIR_IMAGE")
- image_name = get_bitbake_var("IMAGE_LINK_NAME")
- rootfs_img = "%s/%s.%s" \
- % (deploy_dir, image_name, part.fstype)
-
- if not os.path.isfile(rootfs_img):
- # create image file with type specified by --fstype
- # which contains rootfs
- du_cmd = "du -bks %s" % rootfs_dir
- out = exec_cmd(du_cmd)
- part.size = int(out.split()[0])
- part.extra_space = 0
- part.overhead_factor = 1.2
- part.prepare_rootfs(cr_workdir, oe_builddir, rootfs_dir, \
- native_sysroot)
- rootfs_img = part.source_file
-
- install_cmd = "install -m 0644 %s %s/rootfs.img" \
- % (rootfs_img, isodir)
- exec_cmd(install_cmd)
# Remove the temporary file created by part.prepare_rootfs()
if os.path.isfile(part.source_file):
@@ -328,19 +302,21 @@ class IsoImagePlugin(SourcePlugin):
raise WicError("Coludn't find target architecture")
if re.match("x86_64", target_arch):
- grub_image = "grub-efi-bootx64.efi"
+ grub_src_image = "grub-efi-bootx64.efi"
+ grub_dest_image = "bootx64.efi"
elif re.match('i.86', target_arch):
- grub_image = "grub-efi-bootia32.efi"
+ grub_src_image = "grub-efi-bootia32.efi"
+ grub_dest_image = "bootia32.efi"
else:
raise WicError("grub-efi is incompatible with target %s" %
target_arch)
- grub_target = os.path.join(target_dir, grub_image)
+ grub_target = os.path.join(target_dir, grub_dest_image)
if not os.path.isfile(grub_target):
- grub_src = os.path.join(deploy_dir, grub_image)
+ grub_src = os.path.join(deploy_dir, grub_src_image)
if not os.path.exists(grub_src):
raise WicError("Grub loader %s is not found in %s. "
- "Please build grub-efi first" % (grub_image, deploy_dir))
+ "Please build grub-efi first" % (grub_src_image, deploy_dir))
shutil.copy(grub_src, grub_target)
if not os.path.isfile(os.path.join(target_dir, "boot.cfg")):
diff --git a/scripts/multilib_header_wrapper.h b/scripts/multilib_header_wrapper.h
index f516673b63a..9660225fdd7 100644
--- a/scripts/multilib_header_wrapper.h
+++ b/scripts/multilib_header_wrapper.h
@@ -22,7 +22,9 @@
*/
-#if defined (__arm__)
+#if defined (__bpf__)
+#define __MHWORDSIZE 64
+#elif defined (__arm__)
#define __MHWORDSIZE 32
#elif defined (__aarch64__) && defined ( __LP64__)
#define __MHWORDSIZE 64
diff --git a/scripts/oe-build-perf-report b/scripts/oe-build-perf-report
index dc999c45c15..0bd05f44ef0 100755
--- a/scripts/oe-build-perf-report
+++ b/scripts/oe-build-perf-report
@@ -416,9 +416,11 @@ def print_html_report(data, id_comp, buildstats):
samples[-1]['commit_num'] = commit_num
absdiff = samples[-1]['val_cls'](samples[-1]['mean'] - samples[id_comp]['mean'])
+ reldiff = absdiff * 100 / samples[id_comp]['mean']
new_meas['absdiff'] = absdiff
new_meas['absdiff_str'] = str(absdiff) if absdiff < 0 else '+' + str(absdiff)
- new_meas['reldiff'] = "{:+.1f} %".format(absdiff * 100 / samples[id_comp]['mean'])
+ new_meas['reldiff'] = reldiff
+ new_meas['reldiff_str'] = "{:+.1f} %".format(reldiff)
new_meas['samples'] = samples
new_meas['value'] = samples[-1]
new_meas['value_type'] = samples[-1]['val_cls']
diff --git a/scripts/oe-depends-dot b/scripts/oe-depends-dot
index 5cec23bf0a2..6c7e9d3383b 100755
--- a/scripts/oe-depends-dot
+++ b/scripts/oe-depends-dot
@@ -47,6 +47,51 @@ class Dot(object):
if len(sys.argv) != 3 and len(sys.argv) < 5:
print('ERROR: Not enough args, see --help for usage')
+ @staticmethod
+ def insert_dep_chain(chain, rdeps, alldeps):
+ """
+ insert elements to chain from rdeps, according to alldeps
+ """
+ # chain should at least contain one element
+ if len(chain) == 0:
+ raise
+
+ inserted_elements = []
+ for rdep in rdeps:
+ if rdep in chain:
+ continue
+ else:
+ for i in range(0, len(chain)-1):
+ if chain[i] in alldeps[rdep] and rdep in alldeps[chain[i+1]]:
+ chain.insert(i+1, rdep)
+ inserted_elements.append(rdep)
+ break
+ if chain[-1] in alldeps[rdep] and rdep not in chain:
+ chain.append(rdep)
+ inserted_elements.append(rdep)
+ return inserted_elements
+
+ @staticmethod
+ def print_dep_chains(key, rdeps, alldeps):
+ rlist = rdeps.copy()
+ chain = []
+ removed_rdeps = [] # hold rdeps removed from rlist
+
+ chain.append(key)
+ while (len(rlist) != 0):
+ # insert chain from rlist
+ inserted_elements = Dot.insert_dep_chain(chain, rlist, alldeps)
+ if not inserted_elements:
+ if chain[-1] in rlist:
+ rlist.remove(chain[-1])
+ removed_rdeps.append(chain[-1])
+ chain.pop()
+ continue
+ else:
+ # insert chain from removed_rdeps
+ Dot.insert_dep_chain(chain, removed_rdeps, alldeps)
+ print(' -> '.join(list(reversed(chain))))
+
def main(self):
#print(self.args.dotfile[0])
# The format is {key: depends}
@@ -109,6 +154,7 @@ class Dot(object):
if self.args.key in v and not k in reverse_deps:
reverse_deps.append(k)
print('Because: %s' % ' '.join(reverse_deps))
+ Dot.print_dep_chains(self.args.key, reverse_deps, depends)
if __name__ == "__main__":
try:
diff --git a/scripts/oe-find-native-sysroot b/scripts/oe-find-native-sysroot
index 350ea21373a..cc146b3fdbc 100755
--- a/scripts/oe-find-native-sysroot
+++ b/scripts/oe-find-native-sysroot
@@ -110,6 +110,4 @@ pseudo="$OECORE_NATIVE_SYSROOT/usr/bin/pseudo"
if [ -e "$pseudo" ]; then
echo "PSEUDO=$pseudo"
PSEUDO="$pseudo"
-else
- echo "PSEUDO $pseudo is not found."
fi
diff --git a/scripts/oe-pkgdata-util b/scripts/oe-pkgdata-util
index aea8a575166..53739b0bfc5 100755
--- a/scripts/oe-pkgdata-util
+++ b/scripts/oe-pkgdata-util
@@ -277,46 +277,48 @@ def lookup_recipe(args):
print("%s is in the RPROVIDES of %s:" % (pkg, f))
pkgdatafile = os.path.join(args.pkgdata_dir, "runtime", f)
parse_pkgdatafile(pkgdatafile)
- break
+ continue
pkgdatafile = os.path.join(args.pkgdata_dir, 'runtime-reverse', pkg)
- if not os.path.exists(pkgdatafile):
- logger.error("The following packages could not be found: %s" % pkg)
- sys.exit(1)
- parse_pkgdatafile(pkgdatafile)
+ if os.path.exists(pkgdatafile):
+ parse_pkgdatafile(pkgdatafile)
+ else:
+ if args.carryon:
+ print("The following packages could not be found: %s" % pkg)
+ else:
+ logger.error("The following packages could not be found: %s" % pkg)
+ sys.exit(1)
def package_info(args):
def parse_pkgdatafile(pkgdatafile):
+ vars = ['PKGV', 'PKGE', 'PKGR', 'PN', 'PV', 'PE', 'PR', 'PKGSIZE']
+ if args.extra:
+ vars += args.extra
with open(pkgdatafile, 'r') as f:
- pkge = ''
- pkgr = ''
- pe = ''
- pr = ''
+ vals = dict()
+ extra = ''
for line in f:
- if line.startswith('PKGV:'):
- pkg_version = line.split(':', 1)[1].strip()
- elif line.startswith('PKGE:'):
- pkge = line.split(':', 1)[1].strip()
- elif line.startswith('PKGR:'):
- pkgr = line.split(':', 1)[1].strip()
- elif line.startswith('PN:'):
- recipe = line.split(':', 1)[1].strip()
- elif line.startswith('PV:'):
- recipe_version = line.split(':', 1)[1].strip()
- elif line.startswith('PE:'):
- pe = line.split(':', 1)[1].strip()
- elif line.startswith('PR:'):
- pr = line.split(':', 1)[1].strip()
- elif line.startswith('PKGSIZE'):
- pkg_size = line.split(':', 1)[1].strip()
- if pkge:
- pkg_version = pkge + ":" + pkg_version
- if pkgr:
- pkg_version = pkg_version + "-" + pkgr
- if pe:
- recipe_version = pe + ":" + recipe_version
- if pr:
- recipe_version = recipe_version + "-" + pr
- print("%s %s %s %s %s" % (pkg, pkg_version, recipe, recipe_version, pkg_size))
+ for var in vars:
+ m = re.match(var + '(?:_\S+)?:\s*(.+?)\s*$', line)
+ if m:
+ vals[var] = m.group(1)
+ pkg_version = vals['PKGV'] or ''
+ recipe = vals['PN'] or ''
+ recipe_version = vals['PV'] or ''
+ pkg_size = vals['PKGSIZE'] or ''
+ if 'PKGE' in vals:
+ pkg_version = vals['PKGE'] + ":" + pkg_version
+ if 'PKGR' in vals:
+ pkg_version = pkg_version + "-" + vals['PKGR']
+ if 'PE' in vals:
+ recipe_version = vals['PE'] + ":" + recipe_version
+ if 'PR' in vals:
+ recipe_version = recipe_version + "-" + vals['PR']
+ if args.extra:
+ for var in args.extra:
+ if var in vals:
+ val = re.sub(r'\s+', ' ', vals[var])
+ extra += ' "%s"' % val
+ print("%s %s %s %s %s%s" % (pkg, pkg_version, recipe, recipe_version, pkg_size, extra))
# Handle both multiple arguments and multiple values within an arg (old syntax)
packages = []
@@ -341,7 +343,7 @@ def package_info(args):
print("%s is in the RPROVIDES of %s:" % (pkg, f))
pkgdatafile = os.path.join(args.pkgdata_dir, "runtime", f)
parse_pkgdatafile(pkgdatafile)
- break
+ continue
pkgdatafile = os.path.join(args.pkgdata_dir, "runtime-reverse", pkg)
if not os.path.exists(pkgdatafile):
logger.error("Unable to find any built runtime package named %s" % pkg)
@@ -560,6 +562,7 @@ def main():
help='Find recipe producing one or more packages',
description='Looks up the specified runtime package(s) to see which recipe they were produced by')
parser_lookup_recipe.add_argument('pkg', nargs='+', help='Runtime package name to look up')
+ parser_lookup_recipe.add_argument('-c', '--continue', dest="carryon", help='Continue looking up recipes even if we can not find one', action='store_true')
parser_lookup_recipe.set_defaults(func=lookup_recipe)
parser_package_info = subparsers.add_parser('package-info',
diff --git a/scripts/oe-run-native b/scripts/oe-run-native
index 1131122e685..a29e99438a5 100755
--- a/scripts/oe-run-native
+++ b/scripts/oe-run-native
@@ -55,12 +55,12 @@ fi
OLD_PATH=$PATH
# look for a tool only in native sysroot
-PATH=$OECORE_NATIVE_SYSROOT/usr/bin:$OECORE_NATIVE_SYSROOT/bin:$OECORE_NATIVE_SYSROOT/usr/sbin:$OECORE_NATIVE_SYSROOT/sbin
+PATH=$OECORE_NATIVE_SYSROOT/usr/bin:$OECORE_NATIVE_SYSROOT/bin:$OECORE_NATIVE_SYSROOT/usr/sbin:$OECORE_NATIVE_SYSROOT/sbin$(find $OECORE_NATIVE_SYSROOT/usr/bin/*-native -maxdepth 1 -type d -printf ":%p")
tool_find=`/usr/bin/which $tool 2>/dev/null`
if [ -n "$tool_find" ] ; then
# add old path to allow usage of host tools
- PATH=$PATH:$OLD_PATH $@
+ PATH=$PATH:$OLD_PATH "$@"
else
echo "Error: Unable to find '$tool' in $PATH"
echo "Error: Have you run 'bitbake $native_recipe -caddto_recipe_sysroot'?"
diff --git a/scripts/postinst-intercepts/update_font_cache b/scripts/postinst-intercepts/update_font_cache
index bf65e19a41d..e0ec471964c 100644
--- a/scripts/postinst-intercepts/update_font_cache
+++ b/scripts/postinst-intercepts/update_font_cache
@@ -2,6 +2,5 @@
set -e
-PSEUDO_UNLOAD=1 qemuwrapper -L $D -E LD_LIBRARY_PATH=$D/${libdir}:$D/${base_libdir} \
- -E ${fontconfigcacheenv} $D${bindir}/fc-cache --sysroot=$D --system-only ${fontconfigcacheparams}
+PSEUDO_UNLOAD=1 ${binprefix}qemuwrapper -L $D -E ${fontconfigcacheenv} $D${libexecdir}/${binprefix}fc-cache --sysroot=$D --system-only ${fontconfigcacheparams}
chown -R root:root $D${fontconfigcachedir}
diff --git a/scripts/postinst-intercepts/update_gio_module_cache b/scripts/postinst-intercepts/update_gio_module_cache
index fc3f9d0d6ce..d1f0140947e 100644
--- a/scripts/postinst-intercepts/update_gio_module_cache
+++ b/scripts/postinst-intercepts/update_gio_module_cache
@@ -2,8 +2,7 @@
set -e
-PSEUDO_UNLOAD=1 qemuwrapper -L $D -E LD_LIBRARY_PATH=$D${libdir}:$D${base_libdir} \
- $D${libexecdir}/${binprefix}gio-querymodules $D${libdir}/gio/modules/
+PSEUDO_UNLOAD=1 ${binprefix}qemuwrapper -L $D $D${libexecdir}/${binprefix}gio-querymodules $D${libdir}/gio/modules/
[ ! -e $D${libdir}/gio/modules/giomodule.cache ] ||
chown root:root $D${libdir}/gio/modules/giomodule.cache
diff --git a/scripts/postinst-intercepts/update_gtk_immodules_cache b/scripts/postinst-intercepts/update_gtk_immodules_cache
new file mode 100644
index 00000000000..395516971e9
--- /dev/null
+++ b/scripts/postinst-intercepts/update_gtk_immodules_cache
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+set -e
+
+if [ -x $D${libexecdir}/${binprefix}gtk-query-immodules-2.0 ]; then
+ PSEUDO_UNLOAD=1 ${binprefix}qemuwrapper -L $D $D${libexecdir}/${binprefix}gtk-query-immodules-2.0 \
+ > $D${libdir}/gtk-2.0/2.10.0/immodules.cache &&
+ sed -i -e "s:$D::" $D${libdir}/gtk-2.0/2.10.0/immodules.cache
+ chown root:root $D${libdir}/gtk-2.0/2.10.0/immodules.cache
+fi
+if [ -x $D${libexecdir}/${binprefix}gtk-query-immodules-3.0 ]; then
+ PSEUDO_UNLOAD=1 ${binprefix}qemuwrapper -L $D $D${libexecdir}/${binprefix}gtk-query-immodules-3.0 \
+ > $D${libdir}/gtk-3.0/3.0.0/immodules.cache &&
+ sed -i -e "s:$D::" $D${libdir}/gtk-3.0/3.0.0/immodules.cache
+ chown root:root $D${libdir}/gtk-3.0/3.0.0/immodules.cache
+fi
diff --git a/scripts/postinst-intercepts/update_pixbuf_cache b/scripts/postinst-intercepts/update_pixbuf_cache
index 5d44075fb4c..ebea07c356a 100644
--- a/scripts/postinst-intercepts/update_pixbuf_cache
+++ b/scripts/postinst-intercepts/update_pixbuf_cache
@@ -5,7 +5,6 @@ set -e
export GDK_PIXBUF_MODULEDIR=$D${libdir}/gdk-pixbuf-2.0/2.10.0/loaders
export GDK_PIXBUF_FATAL_LOADER=1
-PSEUDO_UNLOAD=1 qemuwrapper -L $D -E LD_LIBRARY_PATH=$D/${libdir}:$D/${base_libdir}\
- $D${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders \
+PSEUDO_UNLOAD=1 ${binprefix}qemuwrapper -L $D $D${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders \
>$GDK_PIXBUF_MODULEDIR/../loaders.cache && \
sed -i -e "s:$D::g" $GDK_PIXBUF_MODULEDIR/../loaders.cache
diff --git a/scripts/runqemu b/scripts/runqemu
index d998494063a..087220ca0a1 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -27,6 +27,7 @@ import fcntl
import shutil
import glob
import configparser
+import signal
class RunQemuError(Exception):
"""Custom exception to raise on known errors."""
@@ -233,6 +234,10 @@ class BaseConfig(object):
# slirp qemus are running.
self.mac_tap = "52:54:00:12:34:"
self.mac_slirp = "52:54:00:12:35:"
+ # pid of the actual qemu process
+ self.qemupid = None
+ # avoid cleanup twice
+ self.cleaned = False
def acquire_lock(self, error=True):
logger.debug("Acquiring lockfile %s..." % self.lock)
@@ -281,7 +286,7 @@ class BaseConfig(object):
def check_arg_fstype(self, fst):
"""Check and set FSTYPE"""
if fst not in self.fstypes + self.vmtypes:
- logger.warn("Maybe unsupported FSTYPE: %s" % fst)
+ logger.warning("Maybe unsupported FSTYPE: %s" % fst)
if not self.fstype or self.fstype == fst:
if fst == 'ramfs':
fst = 'cpio.gz'
@@ -343,7 +348,7 @@ class BaseConfig(object):
self.qemuboot = qb
self.qbconfload = True
else:
- logger.warn("%s doesn't exist" % qb)
+ logger.warning("%s doesn't exist" % qb)
else:
raise RunQemuError("Can't find FSTYPE from: %s" % p)
@@ -663,7 +668,10 @@ class BaseConfig(object):
logger.info('QB_MEM is not set, use 512M by default')
self.set('QB_MEM', '-m 512')
- self.kernel_cmdline_script += ' mem=%s' % self.get('QB_MEM').replace('-m','').strip() + 'M'
+ mach = self.get('MACHINE')
+ if not mach.startswith('qemumips'):
+ self.kernel_cmdline_script += ' mem=%s' % self.get('QB_MEM').replace('-m','').strip() + 'M'
+
self.qemu_opt_script += ' %s' % self.get('QB_MEM')
def check_tcpserial(self):
@@ -683,7 +691,7 @@ class BaseConfig(object):
if not self.get('QB_AUDIO_DRV'):
raise RunQemuError("QB_AUDIO_DRV is NULL, this board doesn't support audio")
if not self.get('QB_AUDIO_OPT'):
- logger.warn('QB_AUDIO_OPT is NULL, you may need define it to make audio work')
+ logger.warning('QB_AUDIO_OPT is NULL, you may need define it to make audio work')
else:
self.qemu_opt_script += ' %s' % self.get('QB_AUDIO_OPT')
os.putenv('QEMU_AUDIO_DRV', self.get('QB_AUDIO_DRV'))
@@ -705,7 +713,7 @@ class BaseConfig(object):
if self.get('DEPLOY_DIR_IMAGE'):
deploy_dir_image = self.get('DEPLOY_DIR_IMAGE')
else:
- logger.warn("Can't find qemuboot conf file, DEPLOY_DIR_IMAGE is NULL!")
+ logger.warning("Can't find qemuboot conf file, DEPLOY_DIR_IMAGE is NULL!")
return
if self.rootfs and not os.path.exists(self.rootfs):
@@ -1052,9 +1060,9 @@ class BaseConfig(object):
# virtio might have been selected explicitly (just use it), or
# is used as fallback (then warn about that).
if not drive_type.startswith("/dev/vd"):
- logger.warn("Unknown QB_DRIVE_TYPE: %s" % drive_type)
- logger.warn("Failed to figure out drive type, consider define or fix QB_DRIVE_TYPE")
- logger.warn('Trying to use virtio block drive')
+ logger.warning("Unknown QB_DRIVE_TYPE: %s" % drive_type)
+ logger.warning("Failed to figure out drive type, consider define or fix QB_DRIVE_TYPE")
+ logger.warning('Trying to use virtio block drive')
vm_drive = '-drive if=virtio,file=%s,format=%s' % (self.rootfs, rootfs_format)
# All branches above set vm_drive.
@@ -1110,6 +1118,11 @@ class BaseConfig(object):
qbsys = 'riscv64'
elif mach == 'qemuriscv32':
qbsys = 'riscv32'
+ else:
+ logger.error("Unable to determine QEMU PC System emulator for %s machine." % mach)
+ logger.error("As %s is not among valid QEMU machines such as," % mach)
+ logger.error("qemux86-64, qemux86, qemuarm64, qemuarm, qemumips64, qemumips64el, qemumipsel, qemumips, qemuppc")
+ raise RunQemuError("Set qb_system_name with suitable QEMU PC System emulator in .*qemuboot.conf.")
return 'qemu-system-%s' % qbsys
@@ -1189,6 +1202,7 @@ class BaseConfig(object):
self.qemu_opt += " -serial mon:vc -serial null"
def start_qemu(self):
+ import shlex
if self.kernel:
kernel_opts = "-kernel %s -append '%s %s %s %s'" % (self.kernel, self.kernel_cmdline,
self.kernel_cmdline_script, self.get('QB_KERNEL_CMDLINE_APPEND'),
@@ -1198,12 +1212,25 @@ class BaseConfig(object):
else:
kernel_opts = ""
cmd = "%s %s" % (self.qemu_opt, kernel_opts)
+ cmds = shlex.split(cmd)
logger.info('Running %s\n' % cmd)
- process = subprocess.Popen(cmd, shell=True, stderr=subprocess.PIPE)
- if process.wait():
- logger.error("Failed to run qemu: %s", process.stderr.read().decode())
+ process = subprocess.Popen(cmds, stderr=subprocess.PIPE)
+ self.qemupid = process.pid
+ retcode = process.wait()
+ if retcode:
+ if retcode == -signal.SIGTERM:
+ logger.info("Qemu terminated by SIGTERM")
+ else:
+ logger.error("Failed to run qemu: %s", process.stderr.read().decode())
def cleanup(self):
+ if self.cleaned:
+ return
+
+ # avoid dealing with SIGTERM when cleanup function is running
+ signal.signal(signal.SIGTERM, signal.SIG_IGN)
+
+ logger.info("Cleaning up")
if self.cleantap:
cmd = 'sudo %s %s %s' % (self.qemuifdown, self.tap, self.bindir_native)
logger.debug('Running %s' % cmd)
@@ -1227,6 +1254,8 @@ class BaseConfig(object):
shutil.rmtree(self.rootfs)
shutil.rmtree('%s.pseudo_state' % self.rootfs)
+ self.cleaned = True
+
def load_bitbake_env(self, mach=None):
if self.bitbake_e:
return
@@ -1248,7 +1277,7 @@ class BaseConfig(object):
self.bitbake_e = subprocess.check_output(cmd, shell=True).decode('utf-8')
except subprocess.CalledProcessError as err:
self.bitbake_e = ''
- logger.warn("Couldn't run 'bitbake -e' to gather environment information:\n%s" % err.output.decode('utf-8'))
+ logger.warning("Couldn't run 'bitbake -e' to gather environment information:\n%s" % err.output.decode('utf-8'))
def validate_combos(self):
if (self.fstype in self.vmtypes) and self.kernel:
@@ -1282,6 +1311,14 @@ def main():
return 0
try:
config = BaseConfig()
+
+ def sigterm_handler(signum, frame):
+ logger.info("SIGTERM received")
+ os.kill(config.qemupid, signal.SIGTERM)
+ config.cleanup()
+ subprocess.run(["tput", "smam"])
+ signal.signal(signal.SIGTERM, sigterm_handler)
+
config.check_args()
config.read_qemuboot()
config.check_and_set()
@@ -1300,8 +1337,8 @@ def main():
traceback.print_exc()
return 1
finally:
- print("Cleanup")
config.cleanup()
+ subprocess.run(["tput", "smam"])
if __name__ == "__main__":
sys.exit(main())
diff --git a/scripts/runqemu-extract-sdk b/scripts/runqemu-extract-sdk
index 2a0dd50e0e4..4da3eb10a79 100755
--- a/scripts/runqemu-extract-sdk
+++ b/scripts/runqemu-extract-sdk
@@ -31,9 +31,9 @@ fi
SYSROOT_SETUP_SCRIPT=`which oe-find-native-sysroot 2> /dev/null`
if [ -z "$SYSROOT_SETUP_SCRIPT" ]; then
- echo "Error: Unable to find the oe-find-native-sysroot script"
- echo "Did you forget to source your build system environment setup script?"
- exit 1
+ echo "Error: Unable to find the oe-find-native-sysroot script"
+ echo "Did you forget to source your build system environment setup script?"
+ exit 1
fi
. $SYSROOT_SETUP_SCRIPT meta-ide-support
PSEUDO_OPTS="-P $OECORE_NATIVE_SYSROOT/usr"
@@ -42,9 +42,9 @@ ROOTFS_TARBALL=$1
SDK_ROOTFS_DIR=$2
if [ ! -e "$ROOTFS_TARBALL" ]; then
- echo "Error: sdk tarball '$ROOTFS_TARBALL' does not exist"
- usage
- exit 1
+ echo "Error: sdk tarball '$ROOTFS_TARBALL' does not exist"
+ usage
+ exit 1
fi
# Convert SDK_ROOTFS_DIR to a full pathname
@@ -53,6 +53,9 @@ if [[ ${SDK_ROOTFS_DIR:0:1} != "/" ]]; then
fi
TAR_OPTS=""
+if [[ "$ROOTFS_TARBALL" =~ tar\.xz$ ]]; then
+ TAR_OPTS="--numeric-owner -xJf"
+fi
if [[ "$ROOTFS_TARBALL" =~ tar\.bz2$ ]]; then
TAR_OPTS="--numeric-owner -xjf"
fi
@@ -64,7 +67,7 @@ if [[ "$ROOTFS_TARBALL" =~ \.tar$ ]]; then
fi
if [ -z "$TAR_OPTS" ]; then
echo "Error: Unable to determine sdk tarball format"
- echo "Accepted types: .tar / .tar.gz / .tar.bz2"
+ echo "Accepted types: .tar / .tar.gz / .tar.bz2 / .tar.xz"
exit 1
fi
@@ -76,10 +79,12 @@ fi
pseudo_state_dir="$SDK_ROOTFS_DIR/../$(basename "$SDK_ROOTFS_DIR").pseudo_state"
pseudo_state_dir="$(readlink -f $pseudo_state_dir)"
-if [ -e "$pseudo_state_dir" ]; then
+debug_image="`echo $ROOTFS_TARBALL | grep '\-dbg\.tar\.'`"
+
+if [ -e "$pseudo_state_dir" -a -z "$debug_image" ]; then
echo "Error: $pseudo_state_dir already exists!"
echo "Please delete the rootfs tree and pseudo directory manually"
- echo "if this is really what you want."
+ echo "if this is really what you want."
exit 1
fi
diff --git a/scripts/runqemu-ifdown b/scripts/runqemu-ifdown
index ffbc9de442e..24869685889 100755
--- a/scripts/runqemu-ifdown
+++ b/scripts/runqemu-ifdown
@@ -51,6 +51,16 @@ fi
$TUNCTL -d $TAP
+IFCONFIG=`which ip 2> /dev/null`
+if [ "x$IFCONFIG" = "x" ]; then
+ # better than nothing...
+ IFCONFIG=/sbin/ip
+fi
+if [ -x "$IFCONFIG" ]; then
+ if `$IFCONFIG link show $TAP > /dev/null 2>&1`; then
+ $IFCONFIG link del $TAP
+ fi
+fi
# cleanup the remaining iptables rules
IPTABLES=`which iptables 2> /dev/null`
if [ "x$IPTABLES" = "x" ]; then
diff --git a/scripts/send-error-report b/scripts/send-error-report
index 15b5e849119..8939f5f594a 100755
--- a/scripts/send-error-report
+++ b/scripts/send-error-report
@@ -88,7 +88,7 @@ def prepare_data(args):
log.error("Name needs to be provided either via "+userfile+" or as an argument (-n).")
sys.exit(1)
- while len(args.name) <= 0 and len(args.name) < 50:
+ while len(args.name) <= 0 or len(args.name) > 50:
print("\nName needs to be given and must not more than 50 characters.")
args.name, args.email = ask_for_contactdetails()
@@ -140,10 +140,10 @@ def send_data(data, args):
try:
response = urllib.request.urlopen(req)
except urllib.error.HTTPError as e:
- logging.error(e.reason)
+ logging.error(str(e))
sys.exit(1)
- print(response.read())
+ print(response.read().decode('utf-8'))
if __name__ == '__main__':