From d8c66bc71e9a0303f1d300b9fa59c60dbfe10056 Mon Sep 17 00:00:00 2001 From: Patrick Williams Date: Mon, 20 Jun 2016 12:57:21 -0500 Subject: Squashed 'yocto-poky/' changes from b1f23d1..8358e54 Upgrade subtree to Yocto-2.1. 6c1c013 build-appliance-image: Update to krogoth head revision 5f84d65 syslinux.bbclass: Remove APPEND from variable dependency d9dd864 bitbake: toaster-tests: tests for build dashboard 1cf8f21 bitbake: toaster: add modal to select custom image for editing a40a3e6 bitbake: toaster: add build dashboard buttons to edit/create custom images e65c980 bitbake: toaster-tests: make helper click on input before entering text 484cbf8 bitbake: toaster-tests: add tests for new custom image page 437b728 bitbake: toaster: prevent exception when Project.release is null cfc22d3 bitbake: toaster: only prevent duplicate custom image names within a project 3036413 bitbake: toaster: disable/enable "Add layer" button according to input's content 040dbf6 bitbake: toaster: fix sorting after hiding a column in build tables 1b11b79 bitbake: toaster: ensure ToasterTable headings are reset when order by changes 9855840 image.bbclass: The wrong name is being used for the debug filesystem 38c7e2d image_types: Ensure rootfs dependencies cover DEBUGFS 0c3eaa7 syslinux.bbclass: The AUTO_SYSLINUXMENU value needs to be boolean 9c8a049 perf: pass DESTDIR in EXTRA_OEMAKE 9de7324 buildtools-tarball: set INHIBIT_DEFAULT_DEPS ef09105 xf86-video-omapfb: remove EXTRA_OECONF_armv7a c2f7da2 base.bbclass: Introduce PACKAGECONFIG_CONFARGS variable e1c6890 git: update to 2.7.4 98bf7de license.bbclass: do write_deploy_manifest in image postprocessing 519600c devtool: sdk-update: fix handling of UNINATIVE_CHECKSUM changes c7980b6 bitbake: main: fix processing of BBEVENTLOG ee25d0e toasterconf.json: Update for krogoth release b8e5de2 toasterconf.json: Remove fido from supported configurations c59771e toasterconf.json: Update for krogoth release d0bce0b toasterconf.json: Remove fido from supported configurations d25eea3 poky-tiny.conf: set PREFERRED_VERSION_linux-yocto-tiny to 4.4 9f970b6 dev-manual, profile-manual, ref-manual: Purging Oprofile stuff 1d93104 ref-manual: Added description for the testsdk.bbclass. db47094 ref-manual: Updated the remove-libtool.bbclass description. a16eeca ref-manual: Added gobject-introspection.bbclass description. 3e761b4 ref-manual: Added reference for npm.bbclass. 5e50157 ref-manual: Fixed typo in the nopackages.bbclass description f7b68c7 ref-manual: Added description for bash-completion.bbclass ece900a ref-manual: Added nopackages.bbclass description. Fixed stray typo. 9143e9e ref-manual: Added description for the INSTALL_TIMEZONE_FILE variable. 6391dbf ref-manual: Updated the PREFERRED_PROVIDER variable with a note. 6d86f7a ref-manual: Dropped references to the autotools_stage class 4d5ff5e ref-manual, dev-manual: Scrubbed boot-directdisk and bootimg classes cd2aaaa ref-manual: Updated the uninative.bbclass description. e975d26 documentation: Converted "meta-yocto" to "meta-poky" 84452ee bsp-guide: Updated yocto-bsp create example output. e00a62c ref-manual: Added the migration section for 2.1 02db9e6 yocto-project-qs, ref-manual: Upgraded minimum Git requirement 989841f ref-manual: Added rootfs-postcommands class description. d06b343 ref-manual: Updated the EXTRA_OEMAKE variable description. ecb2eb6 dev-manual: Updated "Additional Implementation Details" section 004b939 bitbake: lib/bb/utils: add docstring for contains() 524d04c ca-certificates: support Toybox ecaf12e oetest: make console output more verbose 4946ecf dhcp: CVE-2016-2774 c219c6d buildtools-tarball: fix perl being included when building with ipk 9fe7738 buildtools-tarball.bb: fix unexpected operator ed07f43 lib/oeqa/selftest/base.py: Correct a reference to meta/lib/oeqa/selftest 8953d83 oe-selftest: Correct the usage examples dee47ad devtool: sdk-update: reset git metadata on update 396e64d build-appliance-image: Load TUN at startup 55068b1 default-providers.inc: set openssl PREFERRED_PROVIDER to openssl 74ab080 bind: CVE-2016-2088 d488d78 rpm: Disable __sync_add_and_fetch_8 on nios2 9d2d1ae kernel: fitimage: Fix do_deploy taskhash mismatch 4693593 images: zero out the rootfs_extra_space in initramfs images 8beb671 ext-sdk-prepare.py: exclude do_rm_work from unexpected output; create unit test 0262bc5 bitbake: bitbake-user-manual: Updated the 'bitbake -h' output example. 890ccd3 bitbake: bitbake-user-manual: Updated "Conditional Metadata" section 20a0121 bitbake: bitbake-user-manual: Updated discussion about using "inherit" 9f374c4 bitbake: providers: Add PREFERRED_RPROVIDER support 4b8b110 bitbake: providers: We don't depend on previous build results 8e7282c bitbake: cooker/knotty: Prefix parse logs with filename being parsed 1131303 bitbake: cooker: pass exception to finishAsyncCommand ffa2ca0 fs-perms.txt: fix ROOT_HOME's permission fd66a38 Revert "fs-perms.txt: fix ROOT_HOME's permission" 9ec9557 buildstats: Fix tracebacks for early task failures 7f9d01e default-providers: Update to use PREFERRED_RPROVIDER 76f4bbc oeqa/selftest/sstatetests: fix no-op sstate test 6326812 buildhistory: don't alter SDK creation stamps bb40b5e dhcp: Enable update-rc.d service 27e202f meta/classes/qemu.bbclass: set -cpu of ppce5500/ppce6500 to e500mc 7c5823a shadow: Disable syslog for more commands 60a8719 devtool: upgrade: handle recipes where source is not first entry in SRC_URI 8353557 devtool: update-recipe: handle where SRC_URI is appended to with += aab3c8d linux-yocto: make aufs4 optional d75d2be linux-yocto: tiny and pin ctrl config updates 8547cbf linux-yocto/4.4: BXT enablement ffad386 linux-yocto/4.1: mainline SPI backports 4ba33a3 linux-yocto/4.4: gpio-pca953x: fix the "drive" property cannot read/write 86571db devtool: don't copy .git when building the eSDK 83eac65 package.bbclass: improve permission handling eeae2ac fs-perms.txt: fix ROOT_HOME's permission 1db3dc8 runqemu: let ramfs equal to cpio.gz a8c8e81 gcc-common.inc: String format tweak for available tunes a7c426a pbzip2: fix LIC_FILES_CHKSUM following 1.1.12 -> 1.1.13 upgrade 1229009 pbzip2: don't skip do_configure 1e4ee30 useradd_base.bbclass: remove flock option '-w' cb45ef3 matchbox-keyboard: Hide desktop launcher 69e20ca npm.bbclass: Stop packagenames containing underscores from being generated c3c55478 bind: CVE-2016-1285 CVE-2016-1286 c4387a8 image.bbclass: add DEB_{PRE, POST}PROCESS_COMMANDS to rootfs_command_variables list 967bc74 rootfs.py: apply ROOTFS_POSTINSTALL_COMMAND to all package formats f7352ca wic: fix bug in handling fsoptions b2f5de5 buildtools-tarball.bb: set TOOLCHAIN_NEED_CONFIGSITE_CACHE to null a460b04 rpm: more verbose errors in rpmTempFile a43991d rootfs-postcommands: handle broken links when writing manifest 2c81e17 socat: Use c_ispeed and c_ospeed based upon libc 5c8124d archiver: Improve debug output e912c46 kbd: remove uclibc-stdarg.patch 965fd3c image.bbclass: use max() instead of indexing booleans 6d85874 linux-yocto-tiny: fix KBRANCH 440d949 sudo: fix pam config on systemd systems 3fd5a6d sysvinit: make lastb.1 an alternative 175263e lib/oe/lsb: sanitise the distro identifier 9262d2f package.bbclass: handle links in sorted order 29cf263 sanity: allow sftp and ssh mirrors f503317 toaster.bbclass: improve package information collection 88f4178 rsync: remove upstream's rebuild logic 8d59d06 rsync: pass cached configure values through the right variable 384e41c rsync: don't install acinclude.m4 e80800e Revert "oeqa/selftest/wic: add test case for sparse images" 45c0763 Revert "wic/utils/partitionedfs.py: assemble .wic images as sparse files" e0e5426 bitbake: runqueue: Improve 'mulitiple .bb files are due to be built' message 380004b archiver: Ensure sstate-inputdir directory is created 3ad70a5 linux-yocto-tiny: fix COMPATIBLE_MACHINE 0e59727 glib-2.0: Put glib-compile-schemas back in -utils d27ca36 oeqa/runexported.py: Fix exported test 85dbd7b oeqa/selftest/sstatetests: split 32/64 build host from no-op action tests 57be6dd util-linux: take ownership of hwclock if installed acc1f96 meta: remove redundant ac_cv_sizeof_off_t assignments 92759d8 meta/site: remove sizeof_off_t 5602f64 archiver: Fix ASSUME_PROVIDED issues fab626c distrodata: Exclude DATETIME reference from sstate checksum faaeaf9 build-appliance-image: Support for VirtualBox guest additions 778121a local.conf.sample: Make it possible to override EXTRA_IMAGE_FEATURES f947c27 poky.conf: add Fedora 23 to supported distros f33a110 maintainers.inc: remove adt-installer 83d4fab local.conf.sample: remove reference to adt 52cfdb6 bitbake: toaster: fixes for customimage package not found dae4ffb bitbake: data_smart: Restrict expansion regexp to not include : characters 7e739ac bitbake: tests/utils.py: test origvalue in a callback matches what is expected e1e459e bitbake: lib/bb/utils.py: Fix a bug in edit_metadata() that could corrupt vars 43150ab oeqa/selftest/wic: add test case for sparse images 29bc2f7 wic/utils/partitionedfs.py: assemble .wic images as sparse files 7fdb061 image-vm.bbclass/image_types.bbclass: IMAGE_NAME -> IMAGE_LINK_NAME 04e1978 image_types.bbclass: fix elf 513ea49 image_types.bbclass: set nodesize for btrfs bad434b libxml2: fix AM_PATH_XML2 9fe3d01 useradd_base.bbclass: prevent variable expansion in $opts fb8e5f9 extrausers.bbclass: drop retry count for perform_user/group* calls f737af4 build-perf-test: add eSDK installed size to metrics 50f5ca3 rpm: brace expansion is a bashism 66ecbd3 openssl.inc: minor packaging cleanup e38ec0c systemd-systemctl-native: fix unit detection 4019058 apr-util: fix path in rules.mk for nativesdk bdf453f bdwgc: installed-vs-shipped for nativesdk 12ca8df libsolv: fix installed-vs-shipped for nativesdk c88c894 desktop-file-utils-native: disable emacs d4f6c0e toaster: add DL_DIR and SSTATE_DIR to oe toasterconf 69b3f87 toaster.bbclass: strip task from the target aa45c75 x11-common: Add PACKAGECONFIG for screen blanking d366a33 opkg-utils: re-do find/ls code to not fail on filenames with spaces 5e360ca image-live.bbclass: fix iso + efi only f5adb23 Add missing runtime dependency to python-pygobject 0720425 devtool: Create unlocked-sigs.inc containing items in the workspace 64cca7e sstatesig.py: Add a method to "unlock" recipes 1cb99dd populate_sdk_ext.bbclass: Enable locked sigs errors 2431ed7 sstatesig.py: Improve the SIGGEN_LOCKEDSIGS_TASKSIG_CHECK message 7e90280 sstatesig.py: Split single locked sigs check into multiple checks 7ce800c toasterconf.json: Set default distro to nodistro 1b7b548 dev-manual: Updated poky-floating-revisions file snippit example. 8d9e233 dev-manual: set correct task name for do_kernel_configme 6971029 poky-floating-revisions: Fix typo 14e2b90 toasterconf.json: Add DL_DIR and SSTATE_DIR to poky toasterconf 296dfbc build-appliance-image: Update to master head revision 00c4c9b poky: Convetion is 2.1, not 2.1.0 8cd1dec build-appliance-image: Update to master head revision ecd58bb poky.conf: Bump version for 2.1.0 krogoth release e955b5d bitbake: Update version to 1.30.0 4fd14e3 build-appliance-image: Update to master head revision 133224f documentation: Fixed references using the DISTRO_NAME variable 3831ca0 documentation: Updated release date in manual history tables. b590fab dev-manual, ref-manual, sdk-manual: Removing oprofile references. d2084cc Makefile: Removed adt-manual support 2677098 mega-manual: Removed the adt title .PNG file. d9b4c80 README: Updated to remove the ADT manual and add the SDK manual. 9796cbb mega-manual.sed: Removed adt-manual processing aa4b72b yocto-project-qs: Updated the minnowboard example. f2505af poky.ent: Added lower-case distro name variable. ee42a9b kernel-dev: Applied review comments to "Adding Recipe-Space Kernel Features" d57fe7c ref-manual: Updated the PREFERRED_VERSION variable description. 53bade8 dev-manual: Added new section describing hardware and non-hardware config 763ae4e ref-manual: Updated verbiage on proxy handling a1295ed ref-manual: Updated PREFERRED_VERSION variable description 879eec2 ref-manual: Updated debugging tips and tricks 23dbf81 kernel-dev: Added new "Adding Recipe-Space Kernel Features" section. f30bfe9 kernel-dev: Updated the "Kernel Metadata Location" section. 53729bc sdk-manual: Removed three sections of writer notes. 9f0c571 sdk-manual: Applied review edits. d4bdafa sdk-manual: Added sections in Appendix B. d94fa00 dev-manual, profile-manual: Removed oprofile section and link 4f3dfa8 bitbake: bitbake: update LICENSE file with QUnit details 013984d bitbake: tests: browser Add test to run the js unit tests 7609888 bitbake: toaster: views jsunittest Add MACHINE and an extra layer to test project fbc2c5d bitbake: toaster: tests Set MACHINE for the test projects cb6b4eb bitbake: toaster: Add quint to project so that it can be used offline 18cb7fe bitbake: toaster: add rev dep column to image detail pages 7a309d9 bitbake: buildinfohelper: work around unicode exceptions 860cba8 bitbake: toasterui: update build in internal state acb9407 bitbake: buildinfohelper: fix KeyError 52c8740 bitbake: toaster: get bitbake location from BBBASEDIR f5d3ef6 bitbake: toaster: export BBBASEDIR variable 71ff9b9 bitbake: toaster: update projectconf.html for DL_DIR and SSTATE_DIR 705d44f bitbake: toaster: update view to support DL_DIR and SSTATE_DIR 4aafcae bitbake: toaster: use empty token 5ce4665 bitbake: toaster: runbuilds Clean up runbuilds 55b6fab bitbake: toaster: runbuilds Make runbuilds aware of the build CANCELLED state f4cee88 bitbake: toaster: models Exclude the CANCELLED builds from get_number_of_builds 296d373 bitbake: toaster: mrb_section template Add build cancel button f1b49dc bitbake: toaster: tables BuildsTable exclude cancelled builds 22242ae bitbake: buildinfohelper: Add handler for cancelling a build 9dcb9cb bitbake: toaster: bldcontrol models Add a cancelling state the BuildRequest dfa8510 bitbake: toaster: models Add cancelled state to build outcome 5f862bb bitbake: toaster: update BuildEnvironmentController and BitbakeController 0db62c5 bitbake: toaster: libtoaster Update implementation of startABuild and cancelABuild afab95c bitbake: toaster: xhr Update the implementation of the build cancellation request eead032 bitbake: toaster: Move xhr calls for starting and stopping builds f5aa970 bitbake: toaster: bldcontrol Add forceShutDown function to BitbakeController d6992a8 bitbake: toasterui: shutdown on BuildCompleted event c4ae028 bitbake: toaster: use bash explicitly 4adddfd bitbake: toaster: fix jethro build b1a919a bitbake: toaster: update conf/local.conf 590a815 bitbake: toaster: stop bitbake server after the build a8f6001 bitbake: toaster: add new parameter to _shellcmd a43a16b bitbake: toaster: reimplement triggerBuild ab18c20 bitbake: toaster: modified setLayers API 22fba9b bitbake: toaster: add brbe parameter to triggerBuild 829a0bd bitbake: toaster: remove release API 7068e8a bitbake: toaster: remove startBBServer API 9d4c62d bitbake: toasterui: fix brbe reporting 5bcce68 bitbake: buildinfohelper: improve handling of providermap 61b6b98 bitbake: uievent: improve BBUIEventQueue code 0b0d754 bitbake: toasterui: add brbe parameter to buildinfohelper 94ac3f0 bitbake: toaster: set BITBAKE_UI environment variable e23a23b bitbake: toaster: get rid of noui option f77baec bitbake: toaster: don't start bitbake server 4127fef image_types: use compress framework to produce checksums for images 60786b8 runqemu-gen-tapdevs: Add note about NetworkManager & tap devices 634aeed libtool: fix contaminated path to lt_truncate_bin 298d875 create-pull-request: fix for newer git 4faeff9 wget: fix build when len(TMPDIR) == 410 b667f4d sanity.bbclass: fix a hardcode in check_path_length() 94b3583 grub: remove unused 0001-Fix-build-with-glibc-2.20.patch ef163ab glibc: remove unused CVE patches b050ab2 clutter-gst-3.0: remove unused enable-tests.patch 064ebd5 cmake: remove unused dont-run-cross-binaries.patch a71db4c tcl: remove unused fix-configure.patch 476eeea rpm: remove two unused patch 3d56864 ffmpeg, gstreamer1.0-libav: add textrel INSANE_SKIPs 8cc10a9 ffmpeg: Make configure options explicit 45c1944 bzip2: set correct soname cbe33ec useradd.bbclass: remove user/group created by the package in clean* task c115740 bitbake: fetch2/git.py: remove .indirectiondir workaround 4f07c22 bitbake: persist_data: Return str instead of unicode for sqlite3 text queries d8f1f42 scripts/oe-selftest: avoid the creation of coverage file when coverage not installed 6e5e225 scripts/oe-selftest: remove coverage file if any coverage option is given 5edfec4 scripts/oe-selftest: remove unneeded coverage warning 8109e93 patch.bbclass: remove useless path assignment 7963613 gstreamer: remove now-redundant expansion in do_split_packages 37f4f5b package: do_split_packages: expand variables in extra_depends 2ed2089 xf86-video-intel: Add patch to fix some poor image quality c1436b3 sanity: Increase minimum git version to 1.8.3.1 672545b scripts/oe-buildenv-internal: Fix regression in BB_ENV_EXTRAWHITE setting f7fed7c license.bbclass: fix warnings when run in unprivileged "container" env 43071a0 externalsrc: avoid race in temporary git index file f4f1d20 scripts/lib/bsp/help.py: Typo in help for yocto-bsp create 1bd2c8e bdwgc: use github repo for source location 0e6743b xf86-video-intel: Add patch to allow UXA to build 21e31c2 package_manager.py: better error handling in opkg's package listing f2d5e20 systemd: make systemd-serialgetty optional e699404 ncurses: reorder PACKAGES f94ad4d bluez5.inc: remove obsolete workaround a0cd8c0 buildtools-tarball: Add texinfo (for makeinfo) 9877795 cogl: fix G-I .typelib installation b13184c classes/buildhistory: fix grammar in comments e5c0a9f classes/buildhistory: fix filtering of depends-nokernel.dot 4d364f2 classes/buildhistory: optimise getting package size list af5f423 bitbake: siggen: Ensure tainted stamps are accounted for with writing custom stamps 47e9e12 bitbake: siggen: Fix nostamp taint handling 8033627 bitbake: siggen: Add checksum recalculation/checking code 3e1b5e0 bitbake: siggen: Fix check calculation problem with file_checksums 39b637c bitbake: siggen: Drop misleading duplicate method 2c722e2 bitbake: tests/fetch.py: Improve unit tests for trusted network check cf6d12d bitbake: fetch2: BB_ALLOWED_NETWORKS should not care about port numbers 158575c bitbake: toaster: orm better detect requires during CustomImageRecipe generation c634473 bitbake: toaster: Correct typo on build form help text c9ad1e6 bitbake: toaster: buildinfohelper Add additional metadata to the built layer 072a0b3 poky: Exclude DATE from DISTRO/SDK_VERSION checksums f3c029f build-appliance-image: Exclude DDATETIME from task signature 7833eb4 image-vm: Exclude DISK_SIGNATURE_GENERATED from task signature 85ff4ff populate_sdk_ext: Exclude BBTASKDEPDATA from task signature 66412ab opkg-utils: opkg-build exit when fail to list files. 6b8f8a4 kernel-yocto: enforce SRC_URI specified branch 6ebd43c linux-yocto/4.4: UVC: Add support for R200 depth camera 6d2299f linux-yocto/4.4: fix PAT for 32bit x86 5559301 Revert "linux-yocto: Work around PAT issue on qemux86" 686c74f linux-yocto-dev: bump to v4.6-rcX b3ba813 linux-yocto/4.1: ahci: backport AHCI runtime PM 8f7bbea linux-yocto/4.4: gpio-pca953x: add PCAL9535 interrupt support 4a50c05 linux-yocto/4.1: telemetry and dmaengine backports 31a10cb wic/isoimage-isohybrid.py: change cpio generated uid&gid to root 5cabf3b wic/isoimage-isohybrid.py: use glob to find initramfs location 5c60c36 bluez5: add ptest support fc8b24d oe/patch: print cleaner error message when patch fails to apply bf14014 oe/patch: more detailed error reporting a2bf9e3 insane.bbclass: avoid false positives on library location 1f2f43c grub-efi.bbclass: use GRUB_ROOT rather than APPEND for root device bf58526 bitbake.conf: Add BB_WORKERCONTEXT to HASHBASE_WHITELIST 1c1e851 gdb-cross-canadian: use PACKAGECONFIG for python and readline 370a50a base: Fixup PACKAGECONFIG incorrect mappings dea3423 classes/packagegroup: Refactor code to be simpler 5defbcd default-distrovars.inc: remove libassuan from LGPLv2_WHITELIST_GPL-3.0 58d8123 libassuan: use package specific licensing 1f2a01b init-install-efi.sh: remove all root=foo from grub.cfg 3ce7d8c init-install.sh: fix disk_size 46eed0a ltp: fix test_proc_kill hanging 207ee90 ltp: add periodic output for memcg stress test feafad1 epiphany: Depend on intltool-native for configure 2510239 image: Fix debugfs image type recursion loop 7dcb4c4 bitbake: toaster: tests Migrate landing page tests to Selenium 5b848fa bitbake: toaster: tests Migrate all projects page tests to Selenium f2a38ea bitbake: toaster: tests Migrate project builds page tests to Selenium 961cd90 bitbake: toaster: tests Migrate all builds page and project page tests to Selenium f859a3d bitbake: toaster: tests Migrate to Selenium for UI tests 965c72c yocto-bsp: Set correct default branches and branches base for i386, qemu and x86_64 archs d110eba selftest/signing: Use packagedata to obtain PR value for signing test 34f11b5 lib/oe/packagedata: Add import os 0012b90 base.bbclass: avoid duplicate call to d.getVar('LICENSE', True) efe73cb base.bbclass: drop obsolete HOSTTOOLS_WHITELIST_GPL-3.0 5293b83 man: use BUILD_CC and target include files for configure 5121705 scripts, lib: Don't limit traceback lengths to arbitrary values 3168134 bitbake: bitbake: Don't limit traceback lengths to arbitrary values 88ea0b9 image-vm.bbclass: remove invalid code 4d1df2c image-live.bbclass/image-vm.bbclass: remove duplicated code d6d7526 bootimg.bbclass: merge it into image-live.bbclass 723fa56 boot-directdisk.bbclass: merge it into image-vm.bbclass 9e588481 man: fix several annoying compile/build warnings aa13b97 image.bbclass: Make unneeded packages for a read-only rootfs configurable 4dde12f relocate_sdk: additional error checks 22bd875 systemd: fix build with gcrypt PACKAGECONFIG disabled 4b77909 devtool: modify: call shutdown on tinfoil when done 43da712 toolchain-shar-extract.sh: ensure all_proxy is allowed through 2aec71e oe-publish-sdk: exclude sstate-cache if publishing minimal SDK 8ef7016 oe-publish-sdk: prevent specifying a directory for the SDK argument 591b97c classes/populate_sdk_ext: support setting vars from environment at build time c37d542 scripts, lib: Don't limit traceback lengths to arbitrary values 8049f25 pyton-numpy: Add definition of off_t size b75505e image-live.bbclass: DEPENDS on syslinux 3ece012 ldconfig-native: Fix ELF flags on 64-bit binaries d492aec recipes-support/rng-tools: Change runlevel start from S to 2, 3, 4, 5. ab5c62e oeqa/runtime/parselogs.py: Add systemd unit circular dependencies errors. 9be3fb2 systemd-serialgetty: allow baud rate overriding cf6788c psmisc: Remove including sys/user.h and __WORDSIZE ede11b6 selftest: Added testcase decorator to tests ccfe48c linux-yocto: add overlayfs feature 6ae0224 linux-yocto/4.4: broxton and usb type-c backports e1ae3ee linux-yocto/4.4: drm/i915/skl: Fix DMC load on Skylake J0 and K0 0a1d621 linux-yocto/4.1: Intel Broxton: pwm backports 6ce8802 linux-yocto/4.1: Apollo Lake/Broxton mmc backports a256628 linux-yocto/4.1: i2c: designware: Backport i2c patches fbd209d linux-yocto/4.1: device property backports ccf1b33 linux-yocto/qemuarm64: enable 32 bit compatibility dacf9f2 linux-yocto/4.1: SMBus/iTCO backports ab6fd48 default-distrovars.inc: remove gnutls + libtasn1 from LGPLv2_WHITELIST_GPL-3.0 2123a7e sanity.bbclass: Use pythonexception to raise real exceptions without backtraces 6af88d8 sanity: Require bitbake 1.29.1 1b2df6e uninative: Switch md5sum -> sha256 f719386 bitbake: cookerdata.py: remove slash in the end e26087f bitbake: Bump version to 1.29.1 d73da22 bitbake: build/utils: Allow python functions to execute with real exception handling 672c07d bitbake: fetch2: Ensure that incorrect checksumed files are always renamed 2554be4 bitbake: cooker: fix CookerParser.shutdown() 53b5dc0 gcc: Fix musl ldso name for mips64 dd31bca selftest/buildoptions.py: use INHERIT += 71db079 archiver.bbclass: addtask do_deploy_archives_setscene 1ca71e5 bitbake: cooker: Ensure bbappend order is deterministic 292c3e8 bitbake: checksum: In FileChecksumCache don't follow directory symlinks 326fc29 gcc-5.3/gcc-4.9: -fdebug-prefix-map support to remap relative path 9e20f94 ptest-runner_2.0.bb: Update recipe to point git.yoctoproject.org repo. 437841c man: fix src/Makefile to work with parallel make abb5b46 oeqa/selftest/bbtests: Test bbappend order ddbeb56 bitbake: cookerdata: Improve handling of ParseError 6dff639 gcc: Backport fixes for musl ssp configuration ab20659 siteinfo: Fix musl 64bit targets cd16b65 musl: Update to tip 0883aff buildhistory.bbclass: create image directory when needed c093f7c runqemu: fix for iso f1f9f89 init-live.sh: fix overlay fs 4e7eaed init-live.sh: fix ROOT_MOUNT 1622077 no-static-libs.inc: build static libusb1-native b3e4a31 sstatesig: Ensure we keep native depends for allarch recipes 528a890 oe-selftest: generate .env only in test_image_env 21823cb build-appliance-image: Update to master head revision 7d251f7 build-appliance-image: Fix permissions 60656d0 bitbake: fetch2/wget.py: _check_latest_version_by_dir fix prefix detection 45ee2b1 bitbake: fetch2/wget.py: _check_latest_version_by_dir use group names 55cd35b conf/bitbake.conf package.bbclass: fix dbg package not contain sources while -fdebug-prefix-map used e2b919c externalsrc: remove nostamp from do_configure bbfc210 externalsrc: do not use do_configure[nostamp] for git srctrees 9ee403b archiver.bbclass: Just archive gcc-source for all gcc recipes 37683ef oeqa/utils/ftools: improve remove_from_file algorithm 3a934a8 scripts:/oe-selftest: Use timestamp instead of test names in coverage data file 71304d8 xcursor-transparent-theme: upgrade to latest git revision 7c5343a gdb: Fix build on mips64/musl 856be1f libunwind: Fix build on mips/mips64 for musl targets dd61341 toolchain-shar-extract.sh: check the length for target_sdk_dir c3c793b relocate_sdk: fixed .gccrelocprefix section handling cc97d57 glib-2.0: Fix packaging cef8bc9 gio-module-cache: Add class for Gio modules 0cda9d8 glib-2.0: Install gio-querymodules in main package 9ac1b6f oe-git-proxy: support username / password in http proxy a15541d oe-git-proxy: also check all_proxy and http_proxy env variables 92b2bc5 wic: Update after task ordering changes d6cb46c image.bbclass: run wicenv task only for wic images 5cb7705 wic: fix type of no-table option 1209eb2 matchbox-desktop: Do not close desktop on alt-F4 0361676 rootfs-postcommands: don't write manifest when IMAGE_MANIFEST empty abd5b24 bitbake.conf: rename 'gobject-introspection-data' machine feature to 'qemu-usermode' f81065f selftest/devtool: Update after make PROVIDER changes 25a04ee make, remake: make them properly exclude each other f3a92ff kernel.bbclass: consider .csp firmware files 0569b69 tzdata: update to 2016c a7e726a tzcode: update to 2016c 201d9d3 icecc.bbclass: replace icc with icecc da00f6c icecc.bbclass: expand package arch 3f1702c icecc.bbclass: add icc_is_allarch inherit check 39170fe classes/sanity: use proper multi-line string literals 33a6135 oe-buildenv-internal: simplify derivation of BB_ENV_EXTRAWHITE c6ab828 u-boot.inc: Add sub-dir support for SPL_BINARY ddedab4 quilt: run ptest as normal user afa4d5e site: Cache config vars for ccache 04344eb gdb-cross: use PACKAGECONFIG for python and readline 5005cab add !meta-poky to .gitignore file 1dd9348 scripts/lib/bsp/help.py: Add missing options to yocto-bsp help and usage 54eca75 poky-sanity.bbclass: update conf/templateconf.cfg for existing installations 2b992f3 site.conf.sample: fix reference to oe-git-proxy script af63b49 conf-notes: remove reference to adt-installer 1d219ce linux-yocto: Update SRCREV for genericx86* for 4.4 8d4f43e linux-yocto: Update SRCREV for genericx86* for 4.1 84d5924 bitbake: fetch2: Handle lockfiles for file:// urls redirected to mirrors b036afb bitbake: toaster: get all dependents for pkg for removal 9bf98a9 bitbake: toaster: new customise package-remove modal dlg d5a419d bitbake: toaster: show full list of dependents to remove fda94f4 bitbake: bitbake: fetch2/gitsm: Fix fetch when the repository contains nested submodules 1341c17 pseudo: backport a patch to fix xattr removal 07f0af3 uninative: don't try to relocate static binaries c3c0d0a lib/oe/qa: add method to check if static or dynamic linked 10b6037 uninative: ensure patchelf errors are visible 86d7e44 libmad: remove use of obsolete _thumb over-ride e7395c8 perf: package python modules into perf-python b47225f perf: fix python scripts QA errors ea8b914 linux-yocto/4.1: MFD backports b6563a1 linux-yocto/4.1: device property : Backport device property patches 46baceb linux-yocto: ktypes/standard: Add tmpfs-posix-acl feature bdf6b20 linux-firmware: Break out some additional firmware 6d8141f linux-firmware: Clean-up and sync license data cea2a21 linux-firmware: Collapse iwlwifi firmware blobs for 7260 and 7265 3b3fe1d linux-firmware: Update to latest HEAD d7cf2c3 archiver.bbclass: Fix tar name for git repositories 2cb4cb7 archiver.bbclass: Fix gcc-source corner case c29eea0 archiver.bbclass: Fix use of ARCHIVER_WORKDIR and ARCHIVER_OUTDIR 8b7ee6e archiver.bbclass: Don't expand python functions in dumpdata bc100b3 bind: /var/cache/bind 04d883c sysvinit: downgrade ALTERNATIVE_PRIORITY[mountpoint] 688d9a6 util-linux: split out util-linux-mountpoint 85ff75d gconf: fix buildpaths QA issue 7f7c9ab python-pygobject: use Python 2 instead of Python 3 e33124f sanity.bbclass: check host tool dependencies on change in NATIVELSBSTRING 4fe64d7 libunwind: Fix build with fstack-protector on musl 4aa08b8 ltp: Fix build on x86/musl 959b7f2 package.bbclass: Treat .node files same as .so when checking what to strip e0bc781 bootimg.bbclass: only inherit syslinux when pcbios 1b1de89 grub-efi.bbclass: make it can build vm and live together 4ebaeb2 bootimg.bbclass: fix settings for grub-efi.bbclass af1f77a pixz: Fix build on big-endian/musl systems 421289c sanity.bbclass cleanup 93e411e matchbox-wm: Update to fix XChangeProperty datatype issue c843022 matchbox-panel-2: Fix Home-button icon load issue 01f6818 gstreamer1.0: fix introspection support also for git recipes 171adb1 gstreamer1.0-plugins-bad: fix incorrect handling of Cflags in gstreamer-gl.pc file 6462d08 x86-base.inc: suggest the latest kernel c5c9ed6 at: fix configure option with/without-selinux 9b2b1f0 no-static-libs: just like target and native, nativesk-libcap doesn't like unrecognised options bf90d0c linux-firmware: package firmware for Marvell 88W8688 cd17ab0 tune-arm926ejs: Handle missing thumb suffix 5b70c7e nativesdk-coreutils: a lot of warnings fixed b47c53b runqemu-internal: split the code into functions fae732f runqemu-internal: cleanup unsed code e469bb7 runqemu: simplify checking for iso and ramfs 3610329 runqemu: add support for qcow2 and vdi d85ca4a runqemu: remove ISO and RAMFS from help text 58bc854 runqemu: simplify the checking for vm images 6716eb2 runqemu: fix ROOTFS for vmdk 258cfa8 python(3): Disable tkinter 5988b5c selftest/signing.py: RPM_GPG_PASSPHRASE_FILE -> RPM_GPG_PASSPHRASE 3e5c5fe gpg_sign.py: get rid of pexpect 05d7e0d rpm: check _gpg_passphrase before ask for input 13a31b1 oe-publish-sdk: fix remote publishing 9926425 oe-publish-sdk: improve help output slightly 905286c oe-publish-sdk: drop SDK installer file from published output 0523378 devtool: add: create git repository if URL specified as positional argument 11c1d30 devtool: add: delete externalsrc files on npm recipe do_install 552a68a devtool: configure-help: fix error if do_configure not already run eab3f06 bitbake.conf: whitelist proxy variables in config hash 58d2e56 classes/populate_sdk_ext: parse metadata on minimal SDK install 0684572 devtool: sdk-install: add option to allow building from source 50addfb classes/distutils*: don't hide logs when setup script fails 0ec30c7 classes/packagegroup: drop complementary -ptest if ptest not in DISTRO_FEATURES d96ea29 classes/packagegroup: fix dbg/dev/ptest complementary packages b58e5b1 bitbake: bitbake: xmlrpc: set single use mode differently 2df514b sdk-manual: Added note for running remote apps with SSH port forw enabled. 12f5c25 poky.ent: Added code name for 2.1 release to the variable 64241e0 sdk-manual: Applied more review edits to the manual per Eggleton. b44d9e5 ref-manual: Created distrodata and checkpkg tasks, updated distrodata class 54050ff sdk-manual: Applied 2nd round of review edits. 6db8cbc sdk-manual: Applied review edits to the manual. 922eaeb sdk-manual: Updated the SDK devtool modify flow diagram. 2bbf77a dev-manual: Fixed a grammar error 286b76f sdk-manual, mega-manual: Updated the SDK devtool modify diagram c3946bc dev-manual, profile-manual, ref-manual: Updates to remove meta-toolchain 7233e35 sdk-manual: Edits to add extensible SDK configuration sections. b31bf7c ref-manual, sdk-manual: Changed section heading. 670735e ref-manual: Added some SDK manual support to introduction 266742b profile-manual: Updated screen output for oe-init-build-env 0654224 kernel-dev: Changed a link from an example to in-text. 19e3648 dev-manual: Edits from a 2.1 read-through. a389684 poky.ent: Fixed a typo in one of the variables "ftar" to "tar" b5d3065 poky.ent, bsp-guide: Removed eMenlow example and updated 2.1 variables 884b528 yocto-project-qs: Performed a read-through edit. 4b42385 poky.ent: Updated copyright year and version variables. ae48b1f mega-manual: Added two new sections for the sdk manual 815d686 sdk-manual: Added some intro stuff about the SDK 4c5157f ref-manual: Resolving a conflict 4306f7f sdk-manual, mega-manual: Added new figure for Eclipse flow. 0bb6e48 sdk-manual: WIP on the book. 5a64701 sdk-manual, mega-manual, Makefile: Added new figures 32629e0 Makefile: Resolving a conflict af40e9a sdk-manual: Added a new figure for installed extensible sdk directory. 62477889 sdk-manual: Applied some "red" text formatting to indicate notes 7ab8afa Makefile: Added the ".png" part to a figure I forgot. fc43555 sdk-manual: Added a red-text "role" to the style sheet. d07100d sdk-manual: Added new section detailing installed SDK directory. b750729 sdk-manual-customization: Fixed XSL Appendix numbering parameter ad7a994 Makefile: Updated the figure list for the mega-manual. 890f721 sdk-manual: WIP - Various small edits as WIP f15f96c sdk-manual: New content for outline purposes. 4643b04 sdk-manual: Updated with two new appendices for new files. d05566b sdk-manual: Added sdk-environment.png diagram. 0936eed sdk-manual: Added two appendix files to SDK Manual. 6996a1c Makefile: Added sdk-environment.png to figure list for SDK Manual 6cdb356 toaster-manual: Edits to a previous patch. 77594c0 mega-manual, Makefile: Added support for three new toaster figures. 00fe95d toaster-manual: Explain the local release d06c7b8 documentation: remove all references to Hob be8af37 ref-manual: Updated COREBASE_FILES variable. 5c7e5aa bitbake: bitbake-user-manual: include/require checks current directory 7ec8f28 bitbake: bitbake-user-manual: Updated the "inherit Directive" section. 75cba54 bitbake: bitbake-user-manual: Updated the copyright year to 2016 2918b50 bitbake: toasterui: remove ParseStarted from the event list ab2abd4 bitbake: toasterui: Remove the excessive exception logging d8137be bitbake: cache: Make BB_DONT_CACHE variable external 1d1aaa2 bitbake: toaster: orm generate CustomImageRecipe contents try secondary path 5c49230 bitbake: toaster: localhostbecontroller put generated layer in the builddir b60c994 bitbake: toaster: localhostbecontroller Allow file:/// uri type for git repo 3025092 bitbake: toaster: orm Add a constant for the CustomImageRecipe's layer name 3df6551 bitbake: toaster: localhostbecontroller Don't clear out toaster custom layer dir 2f2f784 parselogs: add new whitelist entries to address 4.4.3 issues 8037ba4 bitbake: bb/tests/fetch: Update cups url dab6d59 oe-buildenv-internal: Correct the sed expression which updates $PATH 068afc5 tzdata: update to 2016b e140272 tzcode: update to 2016b c0b3667 ffmpeg: Remove RSUGGEST=mplayer e528a0a lttng-tools: Remove lttng-ust from PACKAGECONFIG for musl 42b9bdf packagegroup: Disable packages not available on musl f148a2e world-broken: Add packages broken on musl 624ca6a siteinfo: Move apr configure cache to common-linux 90234f1 parselogs: add new whitelist entries to address 4.4.3 issues 13a2a3f u-boot: Upgrade to 2016.03 release ecf3396 grub: add -Wno-error=trampolines to native CFLAGS 07515b0 dhcpd: create dhcpd user for dhcp dameon b9ad80d valgrind: fix buildpath QA issue 7985006 gcc-5.3/gcc-4.9:Reuse -fdebug-prefix-map to replace -ffile-prefix-map 2faa718 gcc-5.3/gcc-4.9:replace build path with target path in __FILE__ 76f10fd oe-buildenv-internal: Some clean up 4d1efc3 oe-buildenv-internal: Add variables individually to BB_ENV_EXTRAWHITE 39ac332 oe-buildenv-internal: Add paths to $PATH individually dd5f2f7 oe-init-build-env*: Make them actually return failures ea28de6 oe-init-build-env*: Remove unnecessary differences between the scripts 51aa00f oe-init-build-env*: Update/correct comment about specifying arguments 16fb9b8 oe-init-build-env*: Allow $OEROOT to be predefined 3173979 bluez5: allow D-Bus to spawn obexd in systems without systemd 10ef68f oeqa: remove RPM 4 self test d915965 lib/package_manager: remove RPM4 support code 03fce73 smartpm: remove rpm4 patch 1e9de52 rpm: remove RPM 4 a7dd04d grub: fix documentation rebuilds ee4f61b oe-selftest: Fixed --list-tests-by tag option 068e898 gcc-runtime.inc: set LICENSE for all gcc-runtime packages 788dfdd ParaTypeFFL-1.3: Add license file 62ddde6 externalsrc: use shared stamp directory if B=S 1969332 rpm: fix error when 'lua' is enabled a31301e matchbox-keyboard: Update to latest HEAD to fix 64bit issue 40a55f1 oeqa/selftest/buildoptions: test read-only-rootfs f64fdd2 oeqa/selftest/sstatetests: verify more variables don't impact the hash ac347da gobject-introspection.bbclass: wrap comments at 80 columns ae63b88 qemuarm64.conf: don't clear MACHINE_FEATURES cad415d sanity.bbclass: allow customizing config file update error messages 96a5cb4 sanity.bbclass: fix success message when config file was updated 805aca8 sanity.bbclass: expand error messages for version checks 7d6801c lighttpd: fix /usr/lib/mod_cgi.so: undefined symbol: chunkqueue_written 5f7b9f0 valgrind: Disable nios2 support aaaccc4 systemtap: Disable nios2 support 5857b20 lttng-modules: Add nios2 support 26248cd kexec: Disable on nios2 3e4d99b packagegroup-core-sdk: Disable sanitizers for nios2 797ffc8 bdgwc: Backport nios2 support 238e2c1 libatomic-ops: Backport nios2 support 7e83af3 selftest/buildoptions: Renamed one test case 0d9f515 python-numpy: Fix build on musl e1f3f4c socat: Access c_ispeed and c_ospeed via APIs bb4e6e0 watchdog: Disable nfs on musl targets f00cca8 bdwgc: Check for getcontext() API during configure 51464e7 devtool: change config symlink name to .config.new 8c0148f systemd: Fix and expand ptests 427e369 oeqa/utils/testexport.py: add functionality for exporting binaries 2191623 init-live : make it easier to add custom boot targets 57a525c useradd_base.bbclass: replace retry logic with flock 5d06f00 image.bbclass: track ROOTFS_POSTUNINSTALL_COMMAND in do_rootfs vardeps 6129d86 eudev: split eudev-hwdb from eudev 9aa27fe openssl: don't move libcrypto to base_libdir 370419e xcb-util-image: Fix build with clang 8727975 musl: Update to get mips64 port 4653fdd dhcp: enable gentle shutdown e382d96 coreutils: fix reporting 'unknown' by `uname -p' and `uname -i' 3b8cd1d ncurses_6: Improve installation 9cc65ed Revert "selftest: Added MACHINE = "qemux86" to tests that use runqemu" 3c5ee61 busybox: Drop -r passthrough patch 2c666af linux-yocto/4.1: usb: add usb_otg_caps to usb_gadget structure. 8dc9162 linux-yocto/4.1: Intel Broxton and Sunrisepoint-H: pinctrl and drm 99ad4c9 linux-yocto/4.1: powercap/RAPL: Backport powercap/RAPL c4f544e linux-yocto/4.1: Thermal: Enable Broxton SoC thermal reporting device 123c2c6 linux-yocto/4.1: usb backports for Apollo Lake/Broxton 600b700 recipetool: create: don't create extra files directory unconditionally 8debfea local.conf.sample: Disable prelink by default efa0881 oeqa/selftest/recipetool: Fix test_recipetool_create_simple c9d269c Revert "packagegroup-core-x11-sato: add python-pygobject and gtk+3" d24a39a oeqa/recipetool: Fix syntax error 55a1e52 oeqa/recipetool: Improve debugging output by adding dirlist 637b3c8 uninative: Add a fix for icu-native to use the correct ABI 9dbfbe9 scripts/oe-selftest: Add short names to most common options 681a452 gcc: Fix the license on GNU OpenMP 15c5b2a Revert "gcc: Fix the license on GNU OpenMP" d5cdb48 perl: fix missing dependency for perl-misc 0eb52b9 classes/buildhistory: record a few more variables for extensible SDK cbb4c5b package-deb: Ignore circular dependencies fcc7ff0 package_deb: Fix python runtime error 9155b24 python-numpy: fix buildpaths QA issue 9e69963 python: move ast module into python-core 1a35166 xserver: require sufficiently new libdrm 36bf666 package_manager.py: Fix race condition in OpkgIndexer.write_index() 35be679 scripts/oe-selftest: Add search expression matching to run/list options 4489ef1 glib-2.0: relocate the GIO module directory for native builds cf3402e image-buildinfo.bbclass: fix performance problems e2fe28c linux-yocto/4.4: gpio-pca953x: add "drive" property 3d45853 python3: fix do_configure check platform triplet error 03b167d ncurses_6: Fix an install race condition 09eab6b build-appliance: make the inclusion of downloaded sources optional 8ea5cdc builder: remove hob from autostart ff5d9f7 Revert "gstreamer1.0-plugins-XXX: move inherit gettext into common .inc file" c99da8d musl: disable building of gobject introspection data 0dea50e machine/include/arch-x86: Make x32 ABI not supporting gobject-introspection-data 8c14c74 bitbake.conf: add 'gobject-introspection-data' to DISTRO/MACHINE_FEATURES_BACKFILL 2e27994 packagegroup-core-x11-sato: add python-pygobject and gtk+3 8b1fa2a webkitgtk: enable gobject introspection 7bd32b9 recipes-gnome: fix introspection support efd37c5 python-pygobject: update to 3.18.2 ff3500b gnomebase.bbclass: do not disable gobject introspection ac5cc0c gstreamer: enable gobject introspection 03cd714 libsoup-2.4: enable gobject introspection c1d67e4 clutter: enable gobject introspection 0ec412b gtk+3: enable gobject-introspection d6f8028 gtk+: enable gobject introspection 0d1e4b2 avahi: enable gobject-introspection d2e0dc1 python-pygtk: remove the recipe 0c6d7cb avahi-ui: remove the dependency on python-pygtk by disabling avahi-discover 4fbf761 vala.bbclass: remove pre-packaged vapigen.m4 from tarballs 235455d vala: enable the use of vapigen by packages with vala support d1b96f1 gobject-introspection.bbclass: add a class that enables gobject introspection 96b5847 gtk-doc-stub: remove introspection stubs 3a1d9fb gobject-introspection: Override GIO_MODULE_DIR when scanning 10e9977 gobject-introspection: add the recipe 3c66619 bitbake: fetch2/npm: fix ud.registry so that alternative registries can be handled 0155472 ref-manual: Updated "Application Development SDK" section. 4438460 ref-manual: Applied review edits to several SDK variables. 3c727ff ref-manual: Updated "Cross-Development Toolchain Development" section. af1517c ref-manual: Updated "Build History SDK Information" section. d9fc04b dev-manual, mega-manual: Updated "Application Development SDK" section. 357aa33 ref-manual, mega-manual: Updated "SDK Generation" section. 54490c0 ref-manual: Added several extensible SDK variables to glossary. 6dfd441 ref-manual: Updated IMAGE_PKGTYPE variable. 77f002c ref-manual: Updated "Cross-Development Toolchain Generation" ee90cc6 ref-manual: Updated the "Build History SDK Information" section. 53dd8a0 dev-manual: Moved "Optionally Using an External Toolchain" to Tasks chapter. 9d76cfe meta: toolchain-shar-relocate.sh: Fix for extracting SDK in the same directory as SDK script. 054abad nettle: The variable named p in the patch file was incorrectly named. 93a5417 valgrind: Make dep on glibc-utils conditional on TCLIBC = glibc 40c9774 make 4.1: fix segfault when ttyname fails 7f27713 gcc: Disable libitm for MicroBlaze 81d58d6 sign_package_feed: add feed signature type 42f612c package_manager: sign IPK package feeds c637783 signing-keys: create ipk package 14e809e gpg_sign: export_pubkey: add signature type support 0b088e0 gpg_sign: detach_sign: fix gpg > 2.1 STDIN file descriptor 2fccd8a gpg_sign: add local ipk package signing functionality 6bd6a2b systemd: add comment stating that resolved needs gcrypt a5fd57d selftest/bblayers.py: Remove harcoded recipe files dce7290 selftest/prservice.py: Sanitize package version when looking for stamp cbd87f3 lsof: update UPSTREAM_CHECK_URI 57fb05a eudev: provide UPSTREAM_CHECK_URI 3f8d5bf toaster.bbclass: show packages that were setscened into existence too 39e1351 gcc: Fix the license on GNU OpenMP c6aeef3 linux-yocto/4.4: Galileo updates 37b61b0 siteinfo: Add ppc64le support. 0265fcc nettle: disable static for 2.7.1 8660cd1 nettle: Security fix CVE-2015-8804 dae5715 nettle: Security fix CVE-2015-8803 and CVE-2015-8805 24aea3a glib-2.0: silence warnings when parsing headers for introspection 3331992 qemu: Limit paths searched during user mode emulation b578a06 image-mklibs: handle position independent binaries c706b5e libpam: define limits.conf as CONFFILES of package libpam-runtime 82dec46 perl-rdepends: Remove circular dependencies 815c36f rpm: Sync CVS to regular version 775f22e rpm: Fix musl integration with RPM5 001bdef gcc: Disable libitm for nios2 d53413d bitbake: server/process: Try connecting 4 times before giving up 0f01059 bitbake: toaster: models List only have the specified project's imported layers 0dcab02 bitbake: toaster: rework task buildstats storage and display cc74a8a bitbake: toaster: use force_bytes to display non-ascii project names aebc22d bitbake: fetch2: Make SRC_URI[md5sum] and SRC_URI[sha256sum] expand their values d405f97 bitbake: xmlrpc: fix bug in setting XMLRPCServer.single_use c50bdb3 bitbake: fetch2/npm: add missing URL argument to ParameterError fbf27c4 bitbake: fetch2/npm: properly handle npm dependencies ef6a451 bitbake: fetch2/npm: fix errors with some version specifications ad50ce9 populate_sdk_ext: Correct commit 8b81bb56c69aabdea984352f8e267a9783c0bdbc bc0e99d recipetool: create: shrinkwrap and lockdown npm modules 309b2e6 recipetool: create: support creation of additional files by plugins 2279eb2 recipetool: create: check if npm available if npm:// URL specified 9145500 recipetool: create: split npm module dependencies into packages d46827c recipetool: create: add license file crunching 3fd244b recipetool: create: match *LICENSE* as a license file 2b6a352 recipetool: create: improve mapping for autotools program macros 1607fac recipetool: create: be more tolerant of spacing in configure.ac 9dca5c8 lib/sstatesig: skip shared_workdir when checking locked sigs 142bad3 python3: fix patching get_python_lib() in distutils/sysconfig.py 50d07e9 python3-native: use the previous version of python-config script 5dce2e3 qemu.bbclass: add qemu_wrapper_cmdline() 8b5afcd db: remove the NO_UPDATE_REASON and replace it a comment about RPM 5699c67 rpmresolve: It is not necessary to manually specify -lpopt 8ea55ba rpm: A number of the patches have been submitted upstream 6833c5d rpm: Enable specific crypto and digest settings via variables 59a4d99 security_flags.inc: Special flags are needed for RPM 007c284 rpm: Uprev to rpm-5.4.16 (pre) and rpm-5.4+cvs to current CVS head a27ca6d yocto-bsp: Update templates to 4.4 kernel 2d0933c conf/distro/include: drop old recipes 1fd183e bblayers.conf.sample: remove BBLAYERS_NON_REMOVABLE 477b8fb poky: Enable uninative 1b7cc9c linux-yocto/4.4: explicitly enable ftrace in tracing fragment aee7482 linux-yocto/4.4: iwlwifi: mvm: don't allow sched scans without matches to be started 2408f49 linux-yocto/kernel-meta: ktype refactoring: move DEBUG_KERNEL, EXPERT and EMBEDDED 9ac029b xmlto: tell xmlto where cp is 6d89b52 toaster.bbclass: improve how we gather buildstats for Toaster 4dd3e40 image-prelink: use STAGING_*_NATIVE variables 2193e9d strace: Backport fixes for compiling with clang ee8ff42 ghostscript: 9.16 -> 9.18 3f5725c fontconfig: Revert changes made to FcConfigAppFontAddDir() recently 433d866 populate_sdk_ext: Make populate_sdk_ext nostamp e186d6d systemd: binfmt should be added to SYSTEMD_PACKAGES only if binfmt is enabled b051a95 license.bbclass: fix host contamination warnings for license files f8a9774 oeqa/selftest/buildoptions: Test build does not fail without git rev 656aeff busybox.inc: add tail symlink so busybox can commit suicide cleanly a321f4e avahi-ui: add dbus to PACKAGECONFIG 1bd4b72 avahi: add missing intltool-native build dependency 72f9e39 avahi: make dbus optional but default 424466b oe-setup-builddir: tidy up local.conf and bblayers.conf commentary 07919e9 net-tools: Add SCTP option support e8254bc tune-corei7.inc: Fix PACKAGE_EXTRA_ARCHS for corei7-32 5346675 eudev: remove redundant udev_run assignment adad264 xcursor-transparent-theme: use a version glob in the selftest bbappend 946d00c populate_sdk_ext: Update after uninative changes ba57ba1 image.bbclass: support chaining compression (aka conversion) commands 5ac3dc7 image.bbclass: fix incomplete .rootfs customization 3322fa7 bitbake: toasterui: fix warning 'Unknown event' 621cbc8 bitbake: toasterui: exit on final events 8e138b7 bitbake: toasterui: make toasterui to work in build mode 0a61306 bitbake: toasterui: check if setEventMask succeeded ac941ac bitbake: command: make setEventMask readonly dd3da9a bitbake: toasterui: update list of events f56fa5d bitbake: toasterui: reformat list of events a71d32a bitbake: toaster: remove sshbecontroller module 3db71b4 bitbake: toaster: don't use sshbecontroller 790b2d1 bitbake: toaster: raise NotImplementedError 96535ba bitbake: toaster: bring back the strict directive 5b8b399 bitbake: toaster: change 'revision' to 'Git revision' 07ead98 bitbake: toaster: views api Package info return both kinds of RDEPENDS 9cda2ab bitbake: toaster: fixup dependency excludes for customimage a54cebe bitbake: fetch2/npm: ignore unknown headers in tarballs 0cd1be1 bitbake: fetch2/npm: handle alternative dependency syntax d999927 bitbake: fetch2/npm: fix indentation 26ee4dd image creation: allow overriding .rootfs suffix e43fcdf scripts/hob: drop 59b4cef classes/packageinfo: remove bbf2a5d conf/documentation.conf: remove BBLAYERS_NON_REMOVABLE 7054882 yocto-uninative: Add common include for uninative d2c96ca mtools: Drop GCONV_PATH manipulation d27644e uninative: Handle relocate of GCONV_PATH in libc 0523499 uninative: Add checksum support 73265d1 uninative: Refactor common code 4feb00d uninative: Use CXX11 ABI for interoperation between gcc4 and gcc5 013dd24 uninative: correctly enable uninative 034618d glibc: Add relocation of GCONV_PATH 8dca343 uninative-tarball: Add glibc-gconv-iso8859-1 for guile 1f50f29 dkpg: Use tar everywhere (not gtar) b158d6c gtk3+: Add missing DEPENDS on wayland-native e395e81 tune-cortexa17.inc: apply changes similar to a15 ea53d1e sstate: Allow late expansion of NATIVELSBSTRING bd3a1d5 linux-yocto: Update SRCREV for genericx86* for 4.4 70c6df2 linux-yocto: Update SRCREV for genericx86* for 4.1 ae85c4b linuxloader/image-prelink/image-mklibs: Fix non-standard path prelinking 0b84897 insane/prelink: Handle nonstandard library paths 6b564ae ext-sdk-prepare: Catch setscene tasks which should have run but didn't d8efd2e createrepo: Fix stat floating timestamps ce5a9df xmlto: ensure /bin/bash is used as bash 70b4f36 openssl: add a patch to fix parallel builds 1632742 xdg-utils: remove trailing whitespace in multiline string 816391a btrfs-tools: Add libgcc to RDEPENDS e467156 bitbake.conf: Add libgcc-native to ASSUME_PROVIDED a91713f net-tools: Override CFLAGS/LDFLAGS in do_install too fb0c3c5 nspr: Fix build regression on musl from last upgrade 37f5fb9 gdb: fix builds with internal readline and no static libraries 6518db4 feature-arm-thumb.inc: Fix thumb tune override warning afb1d09 recipetool: create: fix support for AX_CHECK_LIBRARY 463fd5e formfactor: assume a keyboard is plugged in e2107f5 acl: Fix re pattern in test cases 82a8064 gcc-runtime.inc: disable libitm for little endian MIPS too 25d9c4e devtool: add build-sdk subcommand 41eb36d devtool: build-image: rename module 82d0c8a oeqa/buildoptions: Improve unsafe references tests 4284fdf insane.bbclass: make the checking stricter for unsafe references in scripts 5cd71fe yocto-project-qs: Updated flow to mention Toaster cd041b7 dev-manual: Applied review comments to the devshell section. f54fe56 ref-manual: Updates for nativesdk clarifications. a882267 dev-manual: Fixed typo in the devshell section. 70c7e36 dev-manual: Created devtool upgrade section. b2b22d5 dev-manual, mega-manual, Makefile: Added support for new upgrade flow 0b7d8a4 dev-manual, mega-manual: Updated the workspace directory structure image 050e021 dev-manual: Applied review changes to the devtool section. 09ecf38 dev-manual, mega-manual: Updated three figures for devtool f33ffaa dev-manual: Applied more review comments to the section. fe70eb2 dev-manual, mega-manual: Updated the devtool modify flow diagram. eb3b414 dev-manual, mega-manual: Updated the devtool add flow diagram. 4c5bd3f dev-manual, mega-manual: Updated the devtool workspace figure. 9cee16b dev-manual: Applied review comments to the devtool section c678d1a dev-manual: Updated the devtool add section. a09238a dev-manual, mega-manual: Updated devtool add flow diagram 7699f0a dev-manual: Added section for devtool modify flow 1eecaea dev-manual, mega-manual: Added new figure for devtool modify flow 9582da6 dev-manual: Edits to the devtool-add section. 740369f dev-manual, mega-manual: Updated the devtool add flow figure a848e9f dev-manual, mega-manual: Updated the workflow layer content figure. 34e08b3 dev-manual: Added new "writernotes" style. 17a21e6 Makefile, dev-manual, mega-manual: Added new figure support d346c35 dev-manual: Applied review comments to devshell section. 3b41049 ref-manual, dev-manual: Clarifying "native" and "sdknative" a1970eb dev-manual: Updated devshell section. a58cde0 toaster-manual: Updated how manage.py createsuperuser command is run c5b4f69 ref-manual, dev-manual: Clarification of "native" and "sdknative" 952bcc7 toaster-manual: Removed prompts for json file. 34c75fa ref-manual: Updated the S variable description with feedback 2b2ced0 ref-manual: Updated the staging.bbclass description b9dddd5 ref-manual: Updated the S variable description. 41e9f7c dev-manual, ref-manual: Updated licensing text information. 5066fbc ref-manual: Added order information for conf file parsing. ad6b2f2 toaster-manual: Removed typo - double "allow" words. c8c533e ref-manual: Updated the do_populate_sysroot task. 2a3942b dev-manual: Updated section on adding license text. 77b3d06 ref-manual: Updated the S variable entry in the glossary. a1a4808 toaster-manual: Applied a patch to weed out build mode (modes). 353b755 bitbake: bitbake-user-manual: Added expand() function to list. 638ad17 bitbake: bitbake-user-manual: Added note for Python variable ref expansion. da22add bitbake: bitbake-user-manual: Enhance environment variable discussion. f11de9d e2fsprogs: do not enable non-stable features by default b04280a sdk_update.py: Enable local sdk-update tests 14dd07c sdk.py: Fix undefined variable c12e919 eudev: recipe formatting improvements 73a43fc openssl: Security fix Drown via 1.0.2g update ed14aef layer.conf: Update after replacement of udev with eudev e72233a bootimg: set default value for LABELS variable 4eaef67 sanity: Do not mistake meta-yocto-bsp for meta-yocto 86759de sanity.bbclass: remove conflict checking for image vm and live bb1c719 syslinux.bbclass: make vm and live can be built together 5c5c13d recipetool: create: add basic support for new npm fetcher/class 2be37a9 recipetool: create: add basic support for generating linux kernel recipes 5cf15ff recipetool: create: add support for out-of-tree kernel modules 937ecd0 bitbake: toaster: cleanup of bin/toaster startup code a7d1b95 bitbake: ui: remove the puccho ui a9dc72f bitbake: hob: removal of hob ui and associated ui files 27468db bitbake: fetch2/npm: Add missing ParameterError import 44e3461 bitbake: npm: in cases where shrinkwrap resolved a git URL, ignore it and grab dist.tarball 2a73181 bitbake: fetch2: Fix unpack for absolute file urls 865d2fe bitbake: fetch2: fixes copying of file://dir; subdir=foo, bug 6128 and bug 6129 fb437d3 meta-yocto-bsp: bump to linux-yocto 4.4 for the non-x86 BSPs fbedac4 maintainers.inc: Add new eudev package and change maintainership for udev 0138874 gcc: Add support for atomic opertions (libitm) where available 70153b4 classes/externalsrc: fix symlinking if symlink exists pointing to another path eac4061 populate_sdk_ext: Only write LCONF_VERSION to bblayers if it is set c366343 automake: don't delete .pyc files d6e63be cracklib: fix Python packaging a005d25 populate_sdk_base: handle empty SDK_PACKAGING_FUNC ec3be9f linux-yocto/4.4: update to 4.4.3 6ed16ff linux-yocto/4.1: iwlwifi: mvm: don't allow sched scans without matches to be started 2497e80 linux-yocto/4.4: update to -stable 4.4.2 aa2c1f7 linux-yocto: braswell: Remove feature and move DRM_I915_PRELIMINARY_HW_SUPPORT option 702701d linux-yocto/4.4: yaffs2 build fixes c2152b8 linux-yocto/4.1: update to 4.1.18 45d4cd7 linux-yocto/4.1: clkdev updates 79ecef6 linux-yocto/4.1: Galileo updates 5f61693 usbutils: Fix for new eudev implementation c89b777 libgudev: Fix for new eudev implementation 3e5e540 eudev: Replaces udev with eudev for compatibility when using sysvinit on newer kernels 674e55f populate_sdk_ext: Delete the buildtools tar file after installation d8acef2 libarchive: Set xattrs after setting times 431c1e1 combo-layer: handle empty commits during "init --history" 695cc45 classes/populate_sdk_ext: prepend to PATH rather than appending b145480 classes/module: allow substitution of the modules_install target name b03936c grub2.inc: drop bogus dependency on xz 7328765 grub2.inc: avoid passing -isystem to native builds 576587d grub2.inc: dont export TARGET_CFLAGS etc to grub2 configure 97a3322 harfbuzz: update 1.2.1 -> 1.2.3 edf93a0 gstreamer1.0-plugins-bad.inc: limit ARM_INSTRUCTION_SET over-rides to armv4/armv5 89140b0 dhcp: CVE-2015-8605 6ccd8cd sato/images: Add ptest image f38debb layer.conf: Whitelist cantarell-fonts fontconfig dependency b307937 pango: make ${PN}-ptest RDEPENDS on cantarell-fonts 0c80f29 cantarell-fonts: Add recipe 4006a7f sanity: Fix int verses string reference 2e27c4b bitbake: fetch2/npm: Enable fetcher 1c060d7 pseudo: Increase number of retries 030d920 bitbake: providers: Fix PREFERRED_VERSION lookup for '_' in PN c679a3d bitbake: fetch2: Skip lockfiles and donestamps for local files d01042e bitbake: fetch2/__init__.py: Error if lockfile path invalid ab7b7bf bitbake: fetch2/__init__: Fix decodeurl to better handle urls without paths 06b4d8f bitbake: fetch2/wget: Set localfile for directories 8d7e799 genericx86-common: Update PREFERRED_VERSION_linux-yocto to 4.4 65d6a62 gstreamer1.0-plugins-bad.inc: enable webp PACKAGECONFIG by default cd00748 gettext: Delete libintl.la file from install b33efa9 systemctl: handle RequiredBy dependencies 8caa592 ffmpeg: add bzlib, lzma and xv PACKAGECONFIGs 0011760 rootfs-postcommands: fix ssh_allow_empty_password checking 96f5f89 musl: Add linux-libc-headers to deps 3354878 mesa: Fix build on musl 7651342 dosfstools_2.11: fix build following removal of -e from EXTRA_OEMAKE 6c8abea uclibc support for rng-tools c7e5a38 oeqa/sdkext: Add sdk_update.SDKUpdateTest class. 738bd1a classes/testsdk: Pass tcname to SDK and SDKExt contexts 2a410b2 classes/testsdk: Move the removal of bitbake PATH to eSDK context only eb1f8b9 classes/testsdk: Move code for avoid PATHs to oeqa.utils 55d4849 gstreamer1.0-plugins-XXX: control orc PACKAGECONFIG via GSTREAMER_ORC 083c63d boost.inc: fix BJAM_OPTS --build-dir option f4e17c6 shared-mime-info: update to 1.6 4ffdfdf vala: update to 0.30.1 f53f374 python-git: update to 1.0.2 ec73437 pax-utils: update to 1.1.5 447ddb9 nettle: update to 3.2 26a3d25 ncurses: update to revision 20160213 dc42d30 libdrm: update to 2.4.67 0296e0a gtk+3: update to 3.18.8 e08ad62 gtk-icon-utils-native: update to 3.18.8 9daf153 git: update to 2.7.2 927dfaf gnupg: update to 2.1.11 2c39358 clutter-gst-3.0: update to 3.0.16 b8a1e59 ccache: update to 3.2.4 4d4aa1f libsolv: update to 0.6.19 8c2e420 ffmpeg: update to 3.0 afce247 nspr: update to 4.12 b19dbe5 pcmanfm: update to 1.2.4 6b41608 libfm: update to 1.2.4 325a9d3 epiphany: update to 3.18.4 d4da534 wic: don't throw away our created swap partition 5f82d17 automake: set test-driver path relative to top_builddir b41862d uninative-tarball: respect SDKMACHINE when building 4d1c14f boost.inc: enable more verbose build logs 7f84ad0 gstreamer1.0-plugins-XXX: move inherit gettext into common .inc file 2ce48e6 gstreamer1.0.inc: add explicit PACKAGECONFIG init 935d88a gstreamer1.0-libav: move LIBAV_EXTRA_CONFIGURE_COMMON_ARG into .inc 3a8ff19 gstreamer1.0-libav_git: add --ranlib option to LIBAV_EXTRA_CONFIGURE_COMMON_ARG b8bdb99 boost.inc: limit ARM_INSTRUCTION_SET over-rides to armv4/armv5 9ca8f30 populate_sdk_ext: Add images to SDK_INSTALL_TARGETS 07dc765 boot-directdisk.bbclass: drop IS_VM chechking a87574c image-live/boot-directdisk.bbclass: remove AUTO_SYSLINUXCFG 76eb815 testimage.bbclass: reuse generic test suites 6571a84 testimage.bbclass: add generic, image test suites 8c45747 gconf: remove redundant dependencies a74c389 gtk-doc-stub: don't inherit autotools 2269f90 os-release: sanitise VERSION_ID field 9d86b26 apr-util: add ldap crypto and sqlite3 to PACKAGECONFIG d8d2f57 apr-util: fix loadable module packaging 77cfa2b glibc.inc: improve optimisation level sanity checking 04c4719 rsync: add native variant 2c20fe4 core-tools-profile: add lttng tools for aarch64 8a0b997 lttng-ust: add support for aarch64_be 6081c35 liburcu: add support for aarch64_be 07a3c71 harfbuzz: add explicit dependency on fontconfig 73cc8b8 harfbuzz: update 1.2.0 -> 1.2.1 bb151b8 fontconfig: Don't add font directories from host e9f5134 musl: Upgrade to 1.1.14 bf4d380 oe-selftest: devtool: add an additional test for devtool upgrade 4bae2f2 oe-selftest: devtool: rework devtool upgrade test 10290f2 devtool: upgrade: print new recipe name 5cd3be3 devtool: upgrade: drop PR on upgrade e6f684b devtool: upgrade: eliminate unnecessary datastore copy 860574e devtool: upgrade: fix several issues with extraction of new source 66a781c devtool: upgrade: fix constructing new branch from tarball releases d30cc76 devtool: upgrade: fix renaming of recipe if PV is not in name 75eeeab devtool: upgrade: fix moving version-specific files directory 81ebb0b devtool: upgrade: fix version argument checking e953b57 devtool: upgrade: drop superfluous call to validate_pn 492b1eb devtool: upgrade: make source tree path optional 942ae25 devtool: modify: fix source tree default name when mapping virtuals e2334e1 devtool: add: tweak auto-determining name failure message 55ae566 uninative.bbclass: if the loader can't be found disable instead of failing 50b8740 uninative: use check_output instead of Popen directly 4495e8b lib/oe/qa: add explicit exception for 'file isn't an ELF' 4553bb1 libdrm: fix build with uclibc 4e5a871 strace: fix ptest execution e8e0489 clutter-1.0: Fix confgure test errors found by clang b748f40 oeqa/parselogs: Updated whitelist 4b32351 buildstats.bbclass: Don't assume /proc//io present 07e1f10 sysvinit-inittab: Move start_getty scrip to base_bindir. 8d07e14 oeqa/selftest/prservice: Added new TC: check pr-server starts and stop correctly on localhost. d2a563c oe-selftest: Add support for lib/oeqa/selftest subdirectories 7f58b92 musl: Upgrade to 1.1.14 73bf792 devtool: update-recipe: create config fragment 2fbd1d7 devtool: sync: update kernel config 26f951b git: fix installed-vs-shipped QA Issue 033db24 btrfs-tools: fix symlink creation multiple times 9af773f bison/gettext: add --with-bisonlocaledir to assign BISON_LOCALEDIR b14e2ae gcc: use relative path for configure script 1f00fb2 depmodwrapper-cross: nopackages to avoid QA [buildpaths] issue 00a6f5a oeqa/utils: added new network module 3f7aa6f scripts/oe-selftest: Use site.USER_SITE to run coverage configuration code for sub-process 1c6c76e scripts/oe-selftest: Add filtering to the coverage data gathered by oe-selftest 4a21827 oeqa/selftest/signing: Added test for locked signatures 604dc1c package: check inherit instead of PN to decide if a recipe is a packagegroup b4df005 tune-cortexa9.inc: add vfpv3 tunes 889a5cc mirrors/own-mirrors/sanity: Updates after npm fetcher addition 28d17cf npm.bbclass: Add npm class to match fetcher bc5a1d1 base: Add nodejs-native dependency for npm:// urls 9d5483c meta-yocto: Rename to meta-poky to better match its purpose ab3a718 adt-installer: Drop since its replaced by the extensible SDK c1c6a9d sanity: Improve configuration upgrade capabilities (support meta-yocto -> poky transition) 2587101 image: Run do_rootfs_wicenv after do_image e0fd964 bitbake: toaster: change 'delete layer' to 'remove layer' 6e82820 bitbake: toaster: rename 'run again' button c8dd72c bitbake: toaster: fix banner after customimage package add 149f574 bitbake: toaster: custom breadcrumb for the default project 4a12865 bitbake: prserv: Add dump_db() bdb51ab bitbake: toaster: remove custom images from Image Recipes 98d462c bitbake: toaster: show suffix for image files and basename for artifact files 88b5660 bitbake: toaster: add missing link to image recipe details 25b179d bitbake: toaster: adjust the search field width a97081b bitbake: toaster: make 'configuration' the first tab e1fc319 bitbake: toaster: link to configuration in all breadcrumbs df2808f bitbake: toaster: reduce max height of modal dialogs 6c51f08 bitbake: toaster: disable add layer button on click d4a663a bitbake: toaster: apply error class to name field 48f0ae2 bitbake: toaster: fix custom image name form 07eb4f2 bitbake: toaster: comment out project release change 12ade9b bitbake: fetch2/npm: Add mirroring support for npm fetcher ca5b6d6 bitbake: fetch2/npm: Add npm fetcher 813bd1f bitbake: utils.py: Add sha1_file call 7bb9e8d signing-keys: Make signing keys the only publisher of keys 64ab17b systemd: Upgrade to 229 44248af harfbuzz: update to version 1.2.0 f4f5573 perf: add sysroot handling to subcmd 7a95c2c oeqa/selftest/buildoptions: build -minimal instead of -sato images 2980ac0 bitbake.conf: add findutils-native to ASSUME_PROVIDED 2e152ff findutils: upgrade to 4.6.0 951ce18 mesa: add missing space to RRECOMMENDS append 2305610 uclibc: Do not use immediate expansion operator aab3900 security_flags: Disable ssp when compiling uclibc afb954e rpm: fix building rpm 5 with internal beecrypt 069cdbe alsa-lib: topology: Add missing include sys/stat.h b879aed libsdl2: Fix patch after upgrade 3d4f71d gstreamer1.0-libav_git: update 1.7.1 -> 1.7.2 9d83a3e gstreamer1.0-plugins-ugly_git: update 1.7.1 -> 1.7.2 6456a6f gstreamer1.0-plugins-bad_git: update 1.7.1 -> 1.7.2 821498f gstreamer1.0-plugins-good_git: update 1.7.1 -> 1.7.2 04e77c1 gstreamer1.0-plugins-base_git: update 1.7.1 -> 1.7.2 e67c91d gstreamer1.0_git: update 1.7.1 -> 1.7.2 ea8c34e libnewt: Fix build with PIE flags 66a833a pseudo: Fix build when security flags are enabled 91a1baa glibc: Upgrade to 2.23 c1f9507 no-static-libs: remove eglinfo 0ab67d6 freetype: use autotools instead of a manual do_configure 4883ccc classes/populate_sdk_ext: add a better config extension mechanism 524ee08 recipetool: create: improve CMake package mapping 7b6e5b0 recipetool: create: add additional extension mechanisms b2d4472 devtool: modify: tweak help description for behaviour change a8e0e5e devtool: deploy-target: preserve existing files 2059a34 devtool: undeploy-target: support undeploying all recipes b95c72c devtool: deploy-target: write deployed files list to target 62989ef devtool: sdk-update: tweak command-line handling of updateserver cada5a8 devtool: (un)deploy-target: add help descriptions 6bd88e6 scripts/lib/argparse_oe: tweak title above options 32ef523 devtool: categorise and order subcommands in help output 9f7df76 devtool: update-recipe: don't show workspace recipe warning if no update 51972ed devtool: reset: fix preserving patches/other files next to recipes e54f9c1 devtool / recipetool: use common code for launching editor dd35f69 devtool: minor fix for error message 41242a2 staging.bbclass: remove trail slash from SYSROOT_DESTDIR aeb8964 terminal.bbclass: import oe.terminal for oe.terminal.prioritized() bee556a recipe_sanity.bbclass: skip DataSmart in recipe_sanity_eh() 2d293bd image.bbclass: fix circular dependency when IMAGE_FSTYPES append hddimg a332360 toolchain-scripts.bbclass: add three other path to PATH in env.sh 4d2910f libsoup-2.4: disable libsoup-gnome by default 619f6c6 libsoup-2.4: prevent PACKAGECONFIG dependant package renaming 13e726f libsoup-2.4: minor formatting improvements dd0ef3c populate_sdk_ext.bbclass: Add SDK_RECRDEP_TASKS variable 4c5c40d devtool: Don't recursively look for .devtoolbase in --basepath 0220180 populate_sdk_ext: Don't ignore SDK_TARGETS value 8c0ba8d bitbake: toaster: toastergui Fix invalid char test and implementation 913e9b1 bitbake: toaster: PackagesTable show only installed packages 94bca58 bitbake: toaster: toastergui unit tests convert to use fixtures 8796ac8 bitbake: toaster: SoftwareRecipesTable apply default order_by 8469e58 bitbake: toaster: orm migrations Sort out migrations mess 78b6109 cml1/sstate: Fix missing getVar parameter 7e19f88 linux-yocto/4.1: capabilities backports 54bfbcc waf.bbclass: Remove --disable-static from EXTRA_OECONF 51fc304 gcc-5.3: backport fix for PR-target-65358 ed20c6c epiphany: Add libxml2-native to DEPENDS 2021f63 libsdl2: update to 2.0.4 947b3bf cmake: Update to 3.4.3. 4699483 sstate.bbclass: use oe.gpg_sign for gpg signing db7c7c2 oe/gpg_sign: add 'passphrase' argument to detach_sign method e845b75 sign_rpm.bbclass: do not store key details in signer instance d5be866 oe/gpg_sign: add 'armor' argument to detach_sign() 03554b7 oe/gpg_sign: add verify() method af7e516 ruby: break out ri-docs and rdoc into separate packages 8bcf139 insane.bbclass: print more info for build-deps and file-rdeps 5f3dfea curl: re-enable proxy support by default 1f61888 libtool: Don't hardcode grep paths a3b996a cml1.bbclass: fix do_menuconfig 91bfe50 cups: upgrade to 2.1.3 eeac0a9 coreutils: upgrade to 8.25 01dc859 findutils: upgrade to 4.5.19 bf7d5f6 diffstat: upgrade to 1.61 247f3b4 grep: upgrade to 2.23 4e5e501 bitbake: data_smart: Drop default expand=False to getVarFlag [API change] c7610aa bitbake: data_smart: Drop default expand=False to getVar [API change] 4f0ab27 bitbake: SignatureGeneratorBasic: make checksum cache file configurable 0cdf193 bitbake: MultiProcessCache: make cache filename configurable ca552bb bitbake: FileChecksumCache: add get_checksums() method 8f61f2d bitbake: bb/runqueue: save task file dependency cache onto disk 5177b1e bitbake: SignatureGenerator: add method for saving the file checksum cache 97617fd bitbake: bb/cache: drop some unused arguments 5a87d8c bitbake: Allow Hob to run images on a custom simulator, other than qemu 7fc38ea gma500-gfx-check: Fixes infinite calling to modprobe gma500_gfx be7b52a pulseaudio: 6.0 -> 8.0 c52b8f6 alsa-plugins: 1.0.29 -> 1.1.0 a231a4e alsa-utils: 1.0.29 -> 1.1.0 1adbb73 alsa-tools: 1.0.29 -> 1.1.0 3a82e2e avahi: update to version 0.6.32 14daeb5 no-static-libs.inc: Add libcap-native c001863 libsdl2: Fix build with static libraries disabled a46dc87 uboot-inc: Backport patch to fix Beaglebone Black bootloader c7355b9 busybox: drop patches that are not valid anymore 47d0119 pcmciautils: Update SRC_URI f37ac5b debianutils: Upgrade 4.5.1 -> 4.7 adfcaf2 busybox: Add musl config for _git recipe 46824dc debianutils: Fix SRC_URI to use debian snapshot 3df8701 nfs-utils: bugfix: adjust name of statd service unit c15bf55 musl: Upgrade to 1.1.13+ 07e7879 dpkg: Update to 1.18.4 5794b56 glew: upgrade to 1.13.0. aea0746 glew: rewrite to use upstream build system 0b1c324 socat: Fix build with musl 04c6a48 binutils: Fix useless rpaths QA warning eb6d14e image/populate_sdk: seprate variables to fix dependency c9e5e34 gcc: Backport nios2 r31 fix 012460d sqlite3: update 3.10.2 -> 3.11.0 f770a6e insane: wrap autotools checks in inherits_class(autotools) checks 35011d9 cmake: don't inherit autotools 9cd64ed oeqa/selftest/bbtests: Test bitbake --setscene-only option 7e5b451 glew: don't put our CFLAGS into the pkgconfig file b1145cc dbus: update large file patch fad63e3 coreutils: fix problem with acl for 6.9 version 351039f gcc-4.9/5.3: Ignore -fdebug-prefix-map in producer string 7a11650 bitbake.conf: use target path as compile dir in debugging info ef30119 glibc: Security fix CVE-2015-7547 c834ebc glibc: CVE-2015-8776 842177a glibc: CVE-2015-9761 efa1ae5 glibc: CVE-2015-8779 aefe1fa glibc: CVE-2015-8777.patch 152914f oeqa/parselogs: Whitelist dmi firmware failure message in 4.4 kernels 683ea31 rng-tools: Fix underquoted m4 and libgcrypt floating dependency 7a700f5 lib/qa.py: raise ValueError if file isn't an ELF 334e1b5 lib/oe/qa: ELFFile: check that a path is a file before opening it 11359e9 rng-tools: fix the build with musl a258589 bitbake: bb.ui.knotty: prefix task messages with recipe/task 4bf8b21 bitbake: Move bb.{debug,note,..} into their own logging domain 3b35de3 layer.conf: Add gstreamer1.0-meta-base to SIGGEN_EXCLUDERECIPES_ABISAFE 14e9385 sstate: Add ca-certificates-native to postinst recipes list 73e53e4 nss: define RPATH variable for nss-native 6e4e9f7 Revert "lsbinitscripts: fix the path for mountpoint" 6db39e1 libunwind: Fix build on ppc 47896a7 dbus-glib: 0.104 -> 0.106 93d8fc1 conf/no-static-libs: add explicit rule for libical 637b44c runtime/systemd: Fix for boot time string parse error ef5b8b4 security_flags: Add SECURITY_CFLAGS to TARGET_CC_ARCH for binutils 1387785 binutils: Use tip of 2.26 branch da13f0b buildhistory.bbclass: remove out-dated information on request a56da4a Remove obsolete references to exmap 8b21720 bitbake: knotty: Set exit failure code on runQueueTaskFailed events a9223e2 bitbake: taskdata: Fix traceback issue with missing provider 7593756 bitbake: cooker: Improve cache handling 9cb38c1 poky: Disable static libs by default f852014 bitbake.conf: Remove unhelpful default value for EXTRA_OEMAKE b050c50 apmd: fix build with static libraries disabled d585a71 oeqa: Update to handle domain specific references in build logs 9300749 libpng12: Handle no static libs 67ea65e ed_0.5: Handle --disable-static option 438d6d6 conf/distro/include: Add no-static-libs.inc 2eb19cc classes/buildhistory: fix for python function parsing change 1a3204c valgrind: Fix build with musl e8b0da1 rpm: Fix build with musl 48144e0 gstreamer1.0-meta-base: Mark as machine specific due to COMBINED_FEATURES ff8ca89 gdb-cross-canadian: Add missing virtual/* DEPENDS 120a160 e2fsprogs: Update to upstream version of a patch 5394ada gdb: Rationalise PACKAGECONFIG ce0f8ab insane: Add --disable-static to UNKNOWN_CONFIGURE_WHITELIST 94abdb2 linux-yocto: Work around PAT issue on qemux86 6fb493a libgcrypt: update 1.6.4 -> 1.6.5 bf9ad22 musl: Upgrade to tip of tree 5d156bc oe-selftest: don't use specific tasks 80e8928 oe-selftest: pylinted wic tests 9b6dc9b wic-image-minimal: use uuid for root partition ab7cb65 wic: fix processing of --use-uuid 51e0a8a oe-selftest: add new wic testcase 2100f82 wic-image-minimal: update .wks to boot by qemu 4b26601 wic-image-minimal: change IMAGE_FSTYPES f799e21 oeqa/targetcontrol: support wic image type 7066f16 oeqa/targetcontrol: make ssh control optional 0ade658 qemurunner: add parameter to method 'start' d083fec oe-selftest: remove unused parameter c26a9c3 runqemu: support path/to/-.wic c7f0578 runqemu: don't set KERNEL for wic images 2c3a009 runqemu: add support for wic images 64d2f13 scripts/sstate-cache-management.sh: Change wording 6740dd5 qemu.inc: Add rng-tools to qemu images ce3df21 rng-tools: Import recipe from meta-openembedded 36b43b2 lib/oe/terminal: set workdir for konsole terminal 03e1950 mmc-utils: upgrade to latest git version b5b8003 ltp: Upgrade to 20160126 and fix build on musl f6b3957 initscripts: start urandom after populate-volatiles 85ac8eb initscripts: populate-volatiles.sh: add mount-bind feature be5b72c libdrm: don't detect components that have been disabled 5fc5996 buildhistory: Fix regex to handle versions without spaces 7c3d4c0 debian: Fix superfluous setting for RPROVIDES 2eba066 autotools: Fix interaction with bitbake -b 9c8fee9 autotools: Correct dependency search logic error 971fafb maintainers.inc: include libjpeg-turbo and mmc-utils 4e0b334 scripts/runqemu-internal: Work around qemux86 PAT bugs in linux 4.4.1 283a302 sanity: Bump minimum version to 1.29.0 1c2d632 bitbake: Bump version post release to 1.29.0 a12dcc4 base.bbclass: fix support for gitsm:// bc72f64 linux-yocto: Update SRCREV for genericx86* for 4.4 be89a1d linux-yocto: Update SRCREV for genericx86* for 4.1 4a8d20a poky: update qemu* to prefer 4.4 kernel d255f4f linux-yocto/4.1: galileo backports and support fdcb373 linux-yocto/4.1: update to v4.1.17 5688cab linux-yocto/4.4: update to v4.4.1 f9f93ae bitbake: cooker: gracefully shutdown parsers 1f7f077 bitbake: buildinfohelper: unset brbe variable when build finishes 9a6cb10 nativesdk-buildtools-perl-dummy.bb: Fix variable expansion in python code 5e978d7 classes/testsdk: do_testsdkext avoid STAGING_DIR/BASE_WORKDIR in PATH f56e9aa freetype: update 2.6.2 -> 2.6.3 1ba1aa3 freetype: minor formatting improvements 0d5e611 piglit: upgrade SRCREV 72c6b62 libbsd: Security fix and update 0.8.2 78be954 gstreamer1.0-plugins-bad_git: fix gst_structure_get() etc compiler warnings fdd8979 gstreamer1.0-plugins-good_git: fix gst_structure_get() compiler warning a23a50e python-setuptools: Add python-compile on RDEPENDS 914ff14 qemu: Security fix CVE-2016-2198 0938353 qemu: Security fix CVE-2016-2197 1f3e1d1 curl: add PACKAGECONFIG options for less common / legacy protocols 19045ba toaster: tests Remove symlinks from toasteruitest folder 738a9b7 classes/sanity: check_perl_modules provide output when fail e64ce73 oe-selftest: devtool: add another devtool add test a5095d1 recipetool: create: set S when we set SRC_URI from local git repo ca5a36c recipetool: create: convert http git URLs that don't end in .git but contain /git/ 4c71afb recipetool: create: ensure URL parameters don't make it into the name 86f3464 devtool: add: fix adding from a local source directory fa50153 devtool: modify: make -x the default behaviour f767757 recipetool: create: determine name/version from github/bitbucket URLs d94c7e3 recipetool: create: support cmake find_library directive ddfe744 devtool: commit for extra tasks that modify source when extracting e36cb6c classes/externalsrc: create symlinks for workdir and logs 20034c3 classes/externalsrc: disable rm_work when active c38f253 uninative.bbclass: capture stdout/err from patchelf-uninative 9065222 db: update HOMEPAGE f0d5478 mdadm: update to version 3.4 79d5041 iproute2: update to version 4.4.0 21e3b2a image_types_uboot: add cpio.gz.uboot to supported IMAGE_TYPES 6fab5fc recipetool.newappend: add -e/--edit argument 252f97e liburcu: Add nios2 support e72ab70 strace: Fix build for arc, metag, nios2, or1k, tile 691277f udhcpc: specify full path for ip command calls f141f0b alsa-lib: avoid including directly a1ad3d0 oprofile: Add nios2 support fd7dd07 nspr: Add nios2 support 954dc45 guile: Fix nios2 support 611e3d8 binutils: Repair nios2 PLT and GP handling 027eac5 gstreamer1.0-meta-base: make gstreamer1.0-plugins-base-alsa conditional 056d82c curl: drop obsolete pkgconfig_fix.patch 0e62f01 iproute2: update to version 4.4.0 216e618 quota: update to version 4.03 25d2956 oeqa/selftest/sstatetests.py: check that PARALLEL_MAKE doesn't change signatures 2966016 bitbake.conf: remove unused ALLOWED_FLAGS 3bdeda5 libproxy: remove GPLv3 logic and spurious exports 86994fd libproxy: add PACKAGECONFIG control for gnome3 033d754 libproxy: replace PACKAGECONFIG equivalent with the real thing e65a29e openssh: Properly skip ptrace test if tools are missing e1a1e0b openssh: Fix regex that sets sftp-server path for tests d7faf67 insane.bbclass: Support MicroBlaze with musl 9937c93 hdparm: Explicitly set EXTRA_OEMAKE as required 7475c4c qemu: Security fix CVE-2016-1568 4857511 xserver-xorg: Add PACKAGECONFIG for crypto libraries 34798fa mesa: upgrade 10.6.3 -> 11.1.1 7edea7c initrdscripts: fix mmc device as install target c3ef2bb libsoup-2.4: Remove unnecessary gnutls dependency 04454b2 wpa-supplicant: Only depend on libgcrypt when needed 4de0ee6 systemd: Don't depend on gcrypt unnecessarily 0da96bf buildstats.bbclass: remove dead URL from comment 326592d Remove obsolete references to exmap a0cc1c3 curl: update 7.47.0 -> 7.47.1 a0d3eb9 sign_package_feed.bbclass: fix task dependencies 8cb1e83 oe/gpg_sign: fix incorrect variable name 902a68f meta/conf/layer.conf: adapt to more flexible initramfs-framework RDEPENDS 5b2b343 tune-corei7.inc: tell qemu to emulate a matching processor 5b70ee4 pixz: fix upstream version check 62a6f97 webkitgtk: update to 2.10.7 1cd6912 libwnck3: update to 3.14.1 e53eef9 iso-codes: update to 3.65 30cf8aa bash-completion: fix upstream version check 8098256 gstreamer1.0: fix upstream check for unstable versions from git c24b0ab ffmpeg: update to 2.8.6 9237097 python: merge python-elementtree into python-xml 5ac4172 piglit: add missing dependency on python-xml 4d3ca42 systemd: tighten timesyncd and journal-gateway user accounts 6be3031 systemd: extend PACKAGECONFIG flags 85728ec systemd: rename systemd-zsh to systemd-zsh-completion 22a2866 systemd: move some tools into systemd-extra-utils package 9909104 classes/useradd: handle whitespace only USERADD/GROUPADD/GROUPMEMS e485686 systemd: realign packages list 41d0f83 systemd: move bash completion into separate package 9a80afd nettle.inc: drop duplicate LIC_FILES_CHKSUM and SRC_URI hashes 72ec267 gdb: drop unnecessary CC_FOR_BUILD etc exports 00d6b67 gdb: build fix for MIPS + musl libc 40e4e8c strace: build fix for MIPS + musl libc 299b426 uclibc: fetch from master branch not 1.0 4ac4d28 uclibc-ng: Bump up to 1.0.12 release 70bfd4c musl: Upgrade to tip of tree d1496b4 e2fsprogs: Fix multiple xattr handling 9d4b526 cdrtools-native: Explicitly set EXTRA_OEMAKE as required 864797a oeqa/prservice: Fix whitespace problem 7cd8351 pseudo: uprev to 1.7.5 246b02e ptest-runner: Explicitly set EXTRA_OEMAKE as required 7932525 unzip: Explicitly set EXTRA_OEMAKE as required 4ef055c sysklogd: Explicitly set EXTRA_OEMAKE as required 625066b stat: Explicitly set EXTRA_OEMAKE as required 07e81c8 pigz: Explicitly set EXTRA_OEMAKE as required 936223b iputils: Explicitly set EXTRA_OEMAKE as required 1e3fdbb ed: Explicitly set EXTRA_OEMAKE as required ef36b6f gptfdisk: Explicitly set EXTRA_OEMAKE as required 59ee206 dmidecode: Explicitly set EXTRA_OEMAKE as required d17758a libacpi: Explicitly set EXTRA_OEMAKE as required 44e8d0f apmd: Explicitly set EXTRA_OEMAKE as required 961d898 perl: Explicitly set EXTRA_OEMAKE as required ecb9c34 oeqa: Improve test failure messages ae2f3a3 sstate: Ensure populate_lic sstate objects are cleaned 26f26e5 package_deb: Ensure allarch deb packages aren't target specific b3a2065 base: Make do_cleansstate nostamp 37357ab classes/testimage: Fix exportTests function. f895a61 classes/testsdk: Add help information on how to run tests. e22fbce oeqa/sdkext/devtool.py: Add location test to ensure that devtool is the eSDK one. 92d0cc5 oeqa/sdkext: Add devtool basic tests for eSDK. a619ea2 oeqa/oetest: Fix compatibility SDK tests using eSDK. 062dbd6 classes/populate_sdk_ext: Add SDK_EXT_TARGET_MANIFEST and SDK_EXT_HOST_MANIFEST 4cfdf17 testsdkext: Add skeleton for support Extensible SDK tests. 5580d7b classes/testsdk: Add compatibility SDK testsuite to eSDK 7181da7 oeqa/oetest: oeSDKTest when run a command redirect env output to null f3c2ce2 classes/testsdk: Add function run_test_context 3577c35 oetest.py/TestContext: Move loadTests and runTests inside it. 8009418 testimage/testsdk: Move get test suites routine inside TestContext. b588b80 testimage/testsdk: Modularize TestContext. 59791d1 toolchain-shar-extract.sh: Add proxy variable to new env. abd8158 classes/testsdk: Add call to export_proxies on testsdkext. 42f2ac4 classes/testsdk: Add testsdkext task only install. 90590ab get_test_suites: Add sdkext type for load test suites. 2ecc319 populate_sdk_ext: Set TOOLCHAINEXT_OUTPUTNAME. 7b459be classes/testimage: Add defeault inherit for testsdk. 24326a9 classes/testsdk: Add new class testsdk. 3d1d30b testimage: Modularize helper functions for get test lists. 8b5ee36 bitbake.conf/base: Improve handling of SRCPV 947e526 oeqa: setup bitbake logger after tinfoil.shutdown 400f530 bitbake: build: Improve python execution tracebacks aece748 bitbake: build/data: Don't expand python functions before execution [API change] e39cfb1 bitbake: cooker: Don't expand python functions in variable dumps f652b6b bitbake: data: Don't expand python functions for variable dependencies d3e0c44 bitbake: data_smart: Avoid expanding anonymous python functions e0eb2ea bitbake: toaster: models Remove manual transaction control from lsupdates 48622e1 bitbake: toaster: build section Improve display of builds when > 1 targets 4d0ba0f bitbake: toaster: templates make build data breadcrumb consistent 99184d7 bitbake: BBHandler/ast: Merge handMethod and handleMethodFlags 6ba69b4 bitbake: utils: Drop datastore function inspection during exception f8a44b1 bitbake: cooker: extended dot styling 30c132b bitbake: toaster: Enable Image Customisation feature 5e14a8f bitbake: toaster: xhr_customrecipe_packages Add dependencies to included packages 749f5a6 bitbake: toaster: orm generate_recipe_content only exclude locale packages 6269411 bitbake: toaster: customrecipe page Add last successful build link and conditionals 8d5b61e bitbake: toaster: models Add update_package_list for CustomImageRecipe 86db0bd bitbake: toaster: orm Add last_updated field to CustomImageRecipe 18d8b17 bitbake: toaster: models add get_last_successful_built_target method 8885b7b bitbake: toaster: pkg_dependencies_popover just show direct dependencies 40f6eff bitbake: toaster: models add all_depends method for Package_DependencyManager a8ab1c6 bitbake: toaster: buildinfohelper CustomImagePackage update dependency info 0fee829 bitbake: toaster: newcustomimage_modal add frontend name validation cb6d290 bitbake: toaster: API CustomImageRecipe check the recipe name supplied is valid 5634a25 bitbake: toaster: views CustomRecipe API add size information to the package lists 6fbceb0 bitbake: toaster: models Invalidate ToasterTables cache when a m2m field changes 998f9af bitbake: toaster: customrecipe Add dependency tracking to package selection 9976e4f bitbake: toaster: tables move template logic into the pkg_add_rm_btn d77c247 bitbake: toaster: CustomImageRecipe generate overwrite IMAGE_FEATURES 481dc11 bitbake: toaster: make locale packages uneditable in custom image page a757d39 bitbake: toaster: include locale and packagegroup packages in custom image baac458 bitbake: toaster: update custom image package table filters efbffe3 bitbake: toaster: move recent builds query to model b514785 bitbake: toaster: update customimagerecipe migration df58f5b bitbake: toaster: add merge migration to resolve conflict 38f4913 bitbake: toaster: orm generate_recipe_file_contents Handler for require recipe 769017e bitbake: toaster: project builds Poll the server to get latest progress for build 971d65c bitbake: toaster: localhostbectrl Update the dirpath of customrecipe's base layer 6d9f342 bitbake: toaster: tables Check layer presence in project for customise_btn 76c0008 bitbake: toaster: toastergui tests Add addtional data to the setUp for new tables 70a078e bitbake: toaster: tables SelectPackagesTable rename recipe_id to custrecipeid 7e4c231 bitbake: toaster: toastergui tests Update package test to use CustomImagePackage 4b3c9d6 bitbake: toaster: customrecipe Add further front end features using new API b213907 bitbake: toaster: xhr_customrecipe_packages add GET info for package response a9668ee bitbake: toaster: xhr_customrecipe_id change to use CustomImagePackage 439314c bitbake: toaster: API allow CustomImageRecipe to be updated after creation 9ea4de6 bitbake: toaster: tables Change SelectPackagesTable to use ProjectPackage 20f400b bitbake: toaster: tables add recipe download link to CustomImagesTable 1c9ce1c bitbake: toaster: newcustomimage_modal use libtoaster method for new CustomRecipe 8b1d043 bitbake: toaster: libtoaster Add createCustomRecipe method 32048fa bitbake: toaster: orm Add convenience method to get all pkgs in a CustomImageRecipe c80b7df bitbake: toaster: orm get_project_layer_versions to return layer_version objects 796e348 bitbake: toaster: toastergui tests Add unit test for download custom recipe 04d8c94 bitbake: toaster: toastergui tests Update to reflect changes to CustomImageRecipe 4e8a0aa bitbake: toaster: views xhr_customrecipe_packages clean up API 66b5608 bitbake: toaster: toastertable remove title from Show all in table ce72896 bitbake: toaster: Add recipe details page 5f52614 bitbake: toaster: newcustomimage Move modal dialog out of newcustomimage template 2a3dd32 bitbake: toaster: Continue front end features to custom image recipe page. d6e7e4a bitbake: toaster: tables Add table for Packages and update SelectPackagesTable 43f0a05 bitbake: toaster: views Add view to download custom recipe 2cf55af bitbake: toaster: move CustomImageRecipe generation to API entry point c402ac2 bitbake: toaster: orm add CustomImageRecipe generate contents function a6e4f94 bitbake: toaster: buildinfohelper Add the concept of CustomImagePackage e1bfe1c bitbake: toaster: orm: Add db migration for new CustomImagePackage table f760a78 bitbake: toaster: orm Add CustomImagePackage table 4117af2 bitbake: toaster: orm: Add db migration for new CustomImageRecipe inheritance change 1f10289 bitbake: toaster: orm make CustomImageRecipe inherit from Recipe 648753b bitbake: toaster: orm Add sum of dependencies size function to PackageDependencyManager a92fc30 bitbake: toaster: tablejs Add an event handler to manually trigger a data reload 4c82878 bitbake: toaster: ToasterTables simplify filter function move common part to widget 3e1e8e6 bitbake: toaster: models fall back to a sensible string for no vcs reference 14d09c8 bitbake: toaster: localhostbecontroller CustomRecipe now base_recipe is Recipe 7d5d8d0 scripts/lib/bsp/engine: trailing whitespace cleanup dfeda17 scripts/lib/bsp/engine: fix path separator d482d84 maintainers: remove gtk-theme-torturer and gnome-mime-data d0d85a4 bitbake: bb/fetch2: Move export_proxies function from wget to utils. 7226ce2 glibc-locale: fix QA warning 4a2f42f formfactor: add machconfig for Beaglebone eb53c54 sstatetests: Fix after change to sstate populate_lic SWSPEC a43b9ef gstreamer1.0-plugins-base: move freetype dependency into 1.6.3 recipe fb4f05b gstreamer1.0-plugins-base_git: update to git master 1.7.1-79-g6414289 fc81c80 gstreamer1.0-plugins-bad_git: avoid including directly 3f02474 gstreamer1.0-plugins-good_git: avoid including directly 9b0a74a gstreamer1.0: avoid including directly f9e565e gmp_4.2.1: fix build for MIPS 6d570c8 gmp.inc: limit ARM_INSTRUCTION_SET over-rides to armv4/armv5 3aecdd9 gmp: move BBCLASSEXTEND = "native nativesdk" from gmp.inc into 6.1.0 recipe 263a65d gmp: move SRC_URI out of gmp.inc + minor reformatting aacae25 image_types.bbclass: Embed IMAGE_NAME in ubinize config file 9c0d4ec toolchain-scripts: drop PYTHONHOME 6560f80 python: set PYTHONHOME for nativesdk 92ae4e2 gcc: musl related fixes for ppc/secure-plt and gthr 9e5222c gcc: Assume libssp and dl_iterate_phdr on musl 281bd41 security_flags: wipe security flags for gcc/glibc and related libraries 61a5875 security_flags: use -fstack-protector-strong a07f2fd security_flags: ensure security flags only apply to target builds 8d57d1d gcc: Fix build on musl with -fstack-protector eb134c6 isoimage-isohybrid.py: fix cpio working directory 8bedf76 glib-2.0: use the system libpcre 1ae132e libpcre: enable unicode properties by default 3adb8d5 python3: remove optimize by default patch 1df1ac9 security_flags.inc: don't do -pie for syslinux 562c75c neon: convert to PACKAGECONFIG 6228cf8 bitbake: toaster: reinstate ID on edit columns button 916c73d bitbake: cooker: shutdown cooker parser on shutdown 8857498 bitbake: fetch2/osc: Clean up old variable syntax 54da829 bitbake: fetch2/osc: Remove hardcoded url c57ba52 cross-localedef-native: add ABI breaking glibc patch 0cc825f uninative: Improve error handling 576a248 patchelf: Add patch to handle large files bbdbe00 package_manager.py: fix python indentation bug (opkg) ea40a0b populate_sdk_ext: Make populate_sdk_ext depend on sdk_extra_conf 4f7656a populate_sdk_ext: Add support for a "minimal" type 71bb332 populate_sdk_ext: Don't set sdk_update_targets in the config 5b7a43e toolchain-scripts.bbclass: Use PYTHONPATH instead of PYTHONHOME f1f8447 copy_buildsystem.py: Pass the nativelsb argument to gen-lockedsig-cache b130805 gnome-mime-data: remove 12d5fa8 gtk-theme-torturer: remove from oe-core 659d755 openssl.inc: drop obsolete mtx-1 and mtx-2 over-rides 32b498c scripts/devtool: Add getVarFlag expand argument ed5daa1 bitbake.conf/native/nativesdk: Set PKG_CONFIG_SYSTEM_ at top level 8fa2d52 pango: unset LDFLAGS when building gen_all_unicode edfaa04 pango: merge bb and inc 00ccf51 e2fsprogs: Ensure we use the right mke2fs.conf when restoring from sstate 66a6ec2 nativesdk: Set PKG_CONFIG_SYSTEM_ variables 34e95b0 local.conf.sample.extended: Document HOW-TO enable systemd or busbox for init system 077d32e local.conf.sample: Remove trailing whitespaces 6ae662a bitbake: parse/ast: Mark anonymous functions as python functions 9913fd8 bitbake: codeparser: Improve handling of data.expand() dependencies 4628fe1 bitbake: lib/bb: Add expansion parameter to getVarFlag b98866d bitbake: fetch2/gitsm: Fix when repository change submodules 390c2c1 bitbake: data_smart: Add missing expand parameter to getVar call 56454f6 bitbake: bitbake: prserv: do not clear umask when daemonizing abf8a8f bitbake: bitbake: prserv: SIGTERM handling hung process be032fc bitbake: bitbake: prserv: -wal and -shm sqlite lost when daemonizing 1e95ebd poky-tiny: Use musl for default system C library 6594bd5 maintainers.inc: Set me as Maintainer of QEMU. 86851d5 insane: Fix populate_sysroot sanity test path d09a25e socat: upgrade to 1.7.3.1 fad264b libffi: move from recipes-gnome to recipes-support d3753dd libffi: ensure sysroot paths are not in libffi.pc c72614b syslinux: remove LDFLAGS manipulation 8ad11fc lttng-tools: Fix ptest installed la files 66ed16b gnutls: update 3.4.8 -> 3.4.9 149cb17 python-distutils: add missing dependency on python-email 3473962 nss-myhostname: Fix build on musl 42e37d7 linux-firmware: update to latest revision 52442afee ce1bed7 license.bbclass: add LICENSE_CREATE_PACKAGE to perform_packagecopy vardeps e43504b i2c-tools: point SRC_URI at Yocto source mirrors 2d7622c gnutls.inc: allow libidn support to be controlled via PACKAGECONFIG 60ebe1c gnutls.inc: add gmp to DEPENDS 935aa96 gnutls.inc: minor formatting improvements 3fa1c54 Revert "kernel/kernel-arch: Explicitly mapping between i386/x86_64 and x86 for kernel ARCH" 0b82af2 wic: isoimage-isohybrid: check for syslinux-native 9699441 formfactor: add machconfig for qemumips64 4701dc9 ncurses: use closing curly brackets in FILES_${PN}-tools variable 9d9f233 util-linux: Change ALTERNATIVE_PRIORITY above busybox 8f2306c mktemp: lower the priority of standalone mktemp package 6251846 libxsettings-client: drop obsolete disable_Os_option.patch 7894633 wic: default to empty bootloader config 090fb51 copy_buildsystem: add ability to exclude layers 8dc600f toaster.bbclass: reinstate scan for artifacts in the sdk directory eee675b toaster.bbclass: attach image file scan postfunc to do_image_complete 0c0b072 meta: add ASSUME_PROVIDED dependency on wget-native for http fetches f926610 gtk+3: Tweak getVar to use True, not 1 7fa6eeb classes/lib: Add expand parameter to getVarFlag 252e645 python-pycurl: remove unnecessary exports 9fd214d sstate: Fix SSTATE_SWSPEC only used by populate_lic tasks 4ea6a64 package.bbclass: Add data expansion to do_split_packages() 6ab5001 busybox/gtk/perl/base-passwd: Ensure data is correctly expanded e8860f7 ref-manual: Fixed typo in FAQ 14.15 section. 9d2925e ref-manual: Updated FAQ entry regarding Proxy for SOCKS 29a44da ref-manual: Fixed type in LICENSE_CREATE_PACKAGE variable description 4181e58 ref-manual: Updated warning regarding libexecdir 0d8bd7d ref-manual: Added description for LICENSE_CREATE_PACKAGE variable. 6aca5b8 ref-manual: Added remove-libtool class 5e2201e toaster-manual: Updated the "Installation" to have TOASTER_DIR information 3aa162a p11-kit: fix packaging warnings 60c9759 piglit: don't use /tmp to write generated sources to b33e440 libical: Work around hardcoded paths in pkgconfig file a131b6e documentation.conf: align the documentation for DEBUG_OPTIMIZATION and FULL_OPTIMIZATION with bitbake.conf 974a8c0 pciutils: Explicitly set EXTRA_OEMAKE as required 2d3e6f3 openssl: Explicitly set EXTRA_OEMAKE as required b07e161 dbus: add user sessions support 877eae1 dbus: use ${systemd_system_unitdir} 6010088 populate_sdk_ext: Add SSTATE_MIRRORS to config blacklist 70ec867 insane: add test for -dev packaging containing real libraries 38d6f1f python3: set INSANE_SKIP as libpython3.so is a trampoline library 4ac4023 p11-kit: fix module packaging 9a27010 libnl: package the libnl-cli modules in libnl-cli 111af1d remove-libtool: add new class 333dce4 gtk-immodules-cache.bbclass: fix immodules-cache path b1e41f4 Revert "matchbox-keyboard: export GTK_IM_MODULE_FILE location" ac1f311 directfb: use Yocto source mirrors for SRC_URI 4d80f7a gcc-configure-common.inc: drop --enable-target-optspace from configure 654eddc machine/include: drop tune-cortexm*.inc and tune-cortexr4.inc 322015a liboil: drop recipe from oe-core 41d50f9 boost: Fix build on soft-float ABI arm systems 07a91a6 libnss-mdns: Check for nss.h before using 1b34f55 db: Use cross libtool 64089c6 libtool-cross: Unset pre|post dep objects 457f417 docbook-xsl-stylesheets: create a link for easy refer 1ba62f9 pth: Remove dead code a4a5d1f3 bitbake: cooker, bitbake-worker: Fix spelling of "received" 8f6b9c7 bitbake: cooker: Only start as many parse threads as we need 602da7c bitbake: knotty: Don't show errors for universe provider issues 1dd2d76 linux-yocto: Adds new genericx86 and genericx86-64 SRCREVs for kernel 4.4 b8fa9d3 poky: Add poky-world-exclude.inc and add qwt-as 5503a22 sstate: Revert using -m option to tar in sstate 6023798 libarchive-native: Disable libxml2 support b09b054 pcmciautils: Fix makefile race 89df5f1 binutils: Use target provided zlib c85c54f binutils: Upgrade to 2.26 ba2fdcd native.bbclass: Set CXXFLAGS from BUILD_CXXFLAGS not BUILD_CFLAGS 2394b15 gstreamer1.0-plugins-base: Add video crop supporting when convert frame 2724908 gstreamer1.0-plugins-bad: Fix memory leak of navigation thread db81fc9 lib/oe/package_manager: remove package feed lists c43da12 externalsrc: use shared CONFIGURESTAMPFILE if B=S c6b8227 Make sure that the directory for CONFIGURESTAMPFILE exists ca06179 autotools.bbclass: use oe_runmake instead of ${MAKE} f4f9f2f gcc, qemuppc: Explicitly disable forcing SPE flags 691f7e4 pango.inc: misc dependency fixes 70efb8d pango.inc: limit ptest specific do_compile_prepend to target builds c1273d4 systemtap_git.inc: do not immediate expand SELECTED_OPTIMIZATION e631be2 glibc.inc: do not immediate expand SELECTED_OPTIMIZATION 770d9ff mkelfimage: fix target cflags leaks to host c936bf0 base: Move COMPATIBLE_MACHINE out the scope of SOURCE_MIRROR_FETCH 3072361 bitbake: bitbake: BBUIHelper: Remove function findServerDetails 28c041c bitbake: fetch2: Simplify logic in verify_checksum() 5375e64 bitbake: bitbake: Set process names to be meaninful 5b234d1 bitbake: utils: Add ability to change the process name 0b06924 bitbake: data.py: avoid double newlines at the end of functions in emit_var() 68600ae bitbake: build.py: minor shell_trap_code() formatting tweaks 423a264 conf/distro/poky.conf: use example.com for connectivity check 6c058ce curl: update 7.46.0 -> 7.47.0 ( CVE-2016-0754 CVE-2016-0755 ) adbe63d openssl: update 1.0.2e -> 1.0.2f ( CVE-2016-0701 CVE-2015-3197 ) 85b6679 autotools.bbclass: don't create subshell to delete configure scripts 2f1bcc1 sstate: Add back packagedata on packagedata dependencies 346b225 libical: update to 2.0.0 b696bb3 kexec: package kdump init script/configuration file correctly 51cebbf connman: fix crash with iptables 1.6 7f54fab autotools_stage.bbclass: remove it 07c4bc1 gdb-common.inc: add PACKAGECONFIG for readline 5869e35 tzdata: update to 2016a c9cc707 tzcode: update to 2016a aff2f58 glibc-testing.inc: drop pruning of PATCH_GET from the testglibc script dfb9d41 gcc-cross.inc: drop pruning of PATCH_GET from the testgcc script 9e7d929 bitbake.conf: stop exporting PATCH_GET = "0" 5410aff sstate: Improve handling of useradd dependencies 9823802 gtk-icon-utils-native: Drop problematic dependency 6c04e0d glib.inc: limit ARM_INSTRUCTION_SET over-rides to armv4/armv5 83476b5 glib-2.0: drop add-march-i486-into-CFLAGS-automatically.patch fab76ae glib-2.0: refresh configure-libtool.patch 593dcd4 systemd: fix systemctl enable script for template units 3c90507 glib: use bash-completion.bbclass d88ed5d kmod: use bash-completion.bbclass 0f3780c git: use bash-completion.bbclass 9d20661 util-linux: use bash-completion.bbclass 0e5b0bf dbus-glib: use bash-completion.bbclass 9cddc0a bash-completion.bbclass: add class ddb786c bash-completion: move in recipe from meta-oe 74e2f68 ffmpeg: add a recipe, and remove the libav recipe eb7e554 lib/oe/patch: Make GitApplyTree._applypatch() support read-only .git/hooks 3ed566e gcc: fix hidden weak symbols by removing buggy gcc patch 51d9ba6 dpkg: fix CVE-2015-0860 f80d16e qemu.bbclass: clarify QEMU_EXTRAOPTIONS 3dca294 pango.inc: drop obsolete dependency on qemu-native a16e9a2f dbus: upgrade to 1.10.6 7081458 buildhistory: fix the check for existence of a git repo d74325e connman: tidy up connman-conf usage 79f4495 connman-conf: convert to systemd oneshot 5c35883 bitbake-whatchanged: avoid double do_ task name prefix 7881c02 netbase: add ipv6 host to /etc/hosts 93fcee6 linux-yocto/4.4: CVEs and preempt-rt update 07c182f linux-yocto/4.1: update to 4.1.16 7003698 gstreamer1.0-plugins-bad: fix compiler warnings with -Os in 1.7.1 6e90145 gstreamer1.0-plugins-good: fix compiler warnings with -Os in 1.7.1 3cd70c8 libsoup-2.4: add glib-2.0-native dependency d5b3b97 libtirpc: remove stray .orig file from Use-netbsd-queue.h.patch 209066c ptest-runner: Add ptest-runner_2.0 recipe. 4953e26 musl: Upgrade to tip of tree 52413d0 libdrm: Refresh patch to match upstream submission 66e215f fts: Correct LIC_FILES_CHKSUM be4c446 pth: Delete df95988 elfutils: Fix build with uclibc/musl 047ad2c grub: Backport fix for largefile detection/use 956be0c oeqa/runtime/rpm: be more verbose if test_rpm_query_nonroot fails 3b5288f libc-package.bbclass: add LOCALE_UTF8_IS_DEFAULT 4f3ef90 ref-manual: Updated the BBMASK variable description. b2b7214 dev-manual: Restored ptest-runner2 to ptest-runner d484e58 ref-manual: Removed obsolete do_deploy statement from "Shared State" 7705b87 toaster-manual: Updated instructions for production setup. 4b4a8a6 ref-manual: Updated the SDK figure. d7481ce ref-manual: Added do_image and do_image_complete tasks d39e9d1 ref-manual: Rewrite of "Image Generation" and devtool text. 1e7735e ref-manual, mega-manual: Updated the Image Creation figure fded4fa ref-manual: Updated configuration of auto.conf in closer look 9f192c8 dev-manual: Updated the devtool help examples. 4bbd39d dev-manual: Grammar fix to kickstart section. 75078dd dev-manual: Updated wic reference section 9ed7881 poky-ent: Grouped Fedora perl packages for niceness 3ac0416 local.conf.sample.extended: Update the info about BBMASK d61d290 bitbake: bitbake-user-manual-ref-variables: Update the help for BBMASK a948f52 bitbake: cooker: Allow BBMASK to contain multiple regular expressions e82101a bitbake: bitbake-user-manual-metadata: Updated 'dir' flag 100d6c2 bitbake: bitbake-user-manual: Updated the example BitBake directory 11be341 documentation.conf: Update the help for BBMASK 3d2c0f5 cmake: update to 3.4.2 4364850 at-spi2-core: update to 2.18.3 c763940 webkitgtk: update to 2.10.5 1e95815 libsecret: update to 0.18.4 9259a43 freetype: update to 2.6.2 5ec6dbb gdk-pixbuf: update to 2.32.3 9c84fbc glib-2.0: update to 2.46.2 bd7278c gtk+3: update to 3.18.6 d609cd5 gtk+: update to 2.24.29 6197313 gtk-icon-utils-native: update to 3.18.6 1556f0e libsoup-2.4: update to 2.52.2 dff038a waffle: update to 1.5.2 89bd19f vala: update to 0.30.0 6c02099 rxvt-unicode: update to 9.22 245af2b btrfs-tools: Disable backtrace on musl fa01d37 bsd-headers: Fix LICENCE and dev package RDEPENDS 05e11a5 gdb: Fix build failures on musl 72c1aa2 ltp: Add rdep on ldd 1d0332d argp-standalone: Fix build when S != B 9f22898 bitbake: fetch2/wget: fallback to GET if HEAD is rejected in checkstatus() d11cc29 busybox: fix stop -vs- start typo in rcS script 9f4b088 mtools: keep v3.9.9 recipe in sync with the v4.0.18 version 2c14be3 gen-lockedsig-cache: fix bad destination path joining 9dea876 distutils-common-base: do not set PACKAGES - use defaults from bitbake.conf 4ead707 insane: remove unused variable assignment 44e9c3b meta: fix capitalisation in Upstream-Status 06b4572 pixman: only check even upstream versions 0f74387 gcr: check only even upstream versions a2848ee avahi: Add patch to fix Win10 mDNS issues 04ef34f xf86-input-libinput: initial add 0.16.0 8a2dfa1 image.bbclass: check INITRAMFS_MAXSIZE 962cc37 systemd: make TEST_DIR configurable 9967746 bind: update to 9.10.3-P3 cac47db uninative: handle UNINATIVE_URL being file:/// 9995814 uninative: fix path to patchelf-uninative 2495dfa scripts/wipe-sysroot: also delete uninative sysroot bb97157 meta/lib: new module for handling GPG signing aadb879 devtool: extract: use the correct datastore for builddir fa801e7 busybox: backport upstream truncate open mode fix 6996b26 gstreamer1.0-plugins-base.inc: drop obsolete dependency on liboil 1c4a8cc e2fsprogs: disable blkid 0de8766 pango.inc: drop obsolete FULL_OPTIMIZATION over-ride 89a7ed5 devtool: add configure-help subcommand 84720c8 devtool: properly handle bb.build.FuncFailed when extracting source c3f0f7b devtool: add: warn if modified recipe found in attic directory e559b66 devtool: build-image: allow specifying packages to add to image e00eac8 devtool: move edit-recipe to a separate module 6720bda image: Don't create tasks with '.' in the name 88ca227 rootfs-postcommands: fix allow-empty-password on read-only rootfs fdac363 kernel: Clean DEPLOYDIR before do_deploy runs c2231de gcc-cross-canadian: Add missing DEPENDS on virtual/${HOST_PREFIX}gcc-crosssdk 5fdedb6 libtirpc: Drop unneeded xz-native dependency 7a98fb7 libuser: Drop unneeded xz-native dependency 72f98ba bitbake: toaster: Update UI test runner c192bd6 Revert "xz: Allow to work with ASSUME_PROVIDED xz-native" 6df607b acpid: upgrade to 2.0.26 7a52f67 build-perf-test.sh: add eSDK testing 5c367ec build-perf-test.sh: more generic timing function 44fee2b python3-pip: Upgrade to 8.0.0 9d95a9d orc: update HOMEPAGE 0c1c93e gstreamer1.0-plugins.inc: drop obsolete ${S}/po/Makefile.in.in workaround be145ad busybox: Add support for busybox-init 716fa93 pulseaudio.inc: drop obsolete dependency on liboil 55bfaa2 sqlite3: update 3.10.0 -> 3.10.2 6bb1dd1 sqlite3.inc: add PACKAGECONFIG to support building against libedit 39f6a9e sqlite3.inc: dynamically link the sqlite3 command-line utility 9b2835e sqlite: formatting improvements, move more stuff into sqlite3.inc 89ed462 sqlite3.inc: drop obsolete config_BUILD_CC, etc exports 6188419 sqlite3.inc: fix readline PACKAGECONFIG 939de8d sqlite3: fix the parallel build fix patch a304b82 weston: Add missing DEPENDS on wayland-native 4a5458f bitbake: fetch2: Don't show checksum warnings if a single checksum was supplied e66599f uninative: Fix conflicts with normal sysroot 4833bee insane: Drop do_stage test 861c916 populate_sdk: Use pixz instead of xz a1c35f3 lib/oe/sdk: Partially revert "sdk.py: fix conflicts of packages" 29c5eda uninative: Add fetch capability b54fa25 pixz: Add 1.0.6 d47572d xz: Allow to work with ASSUME_PROVIDED xz-native 0aeb33f lib/oe/package_manager: prevent testing an undefined variable c1f4e92 recipetool: create: better fix for fetch error handling 10c8d14 recipetool: create: fix extraction of name from URLs ending in / b307e0a recipetool: create: extract SRC_URI from local git repositories 50e40fc devtool / recipetool: support specifying a subdirectory within the fetched source 7e1691d recipetool: create: strip quotes from values extracted from CMakeLists.txt 477fa84 gen-lockedsig-cache: copy correct native sstate into ext SDK 204e4ab toolchain-shar-extract.sh: improve behaviour when xz is not installed 979c8fb classes/populate_sdk*: add dependencies on script files f220abc classes/populate_sdk_ext: drop ext-sdk-prepare.py when installing b435225 devtool: add sdk-install subcommand 44d1a2a devtool: sdk-update: improve SDK update process robustness 3360baa devtool: sdk-update: improve temp directory handling d193531 devtool: build: ensure pkgdata is written out d3a4f72 classes/populate_sdk_ext: add option to bring in pkgdata for world a9dfced linux-libc-headers: Port patches for linux-headers for musl 3cffa6d libsolv: Update to 0.6.17+ d9134cf glib-2.0: Fix locale location on musl 527cd95 syslinux: Set LD to avoid using build host ld 136db70 binutils: Fix gold linking errors due to unresolved R_ARM_MOVW_ABS_NC 704e342 puzzles: Silence warning on arm with clang bee65f9 eglinfo: Fix build on raspberrypi 6296c0f mdadm: Fix build with musl 67eef11 gpgme: Define __error_t_defined on musl 368e838 console-tools: Fix header inclusion when not using glibc 5a8c935 uclibc: Update to 1.0.11 1113d58 unfs3: Depend on libtirpc when building on musl 2ecfc02 guile: Fix build with musl 2df08b8 bsd-headers: Package cdefs.h 29deaf0 musl: Create ld.so as a relative symlink 2d028b3 fts: Fix linker hash-style option 8dd1aa8 dosfstools: Correct cross-compile CFLAGS and fix build with musl 21550d1 nss: Undefine HAVE_SYS_CDEFS_H 92e6a7a apmd: Fix build with musl 5d661c5 pcmciautils: Fix parallel build and include sys/types.h 86795ff kexec-tools: Define _GNU_SOURCE for getting loff_t definition ff8006f systemd: Skip parsing on musl based targets f2856a1 oprofile: fix build with musl 226c450 portmap: Point to tirpc headers and libraries on musl 5512c2f nfs-utils: Disable tcp-wrappers for musl 06d0204 bsd-headers,musl: Add recipe for bsd missing features c2c9202 tcf-agent: Implement canonicalize_file_name() for musl as well f294813 chkconfig: Avoid using caddr_t b2aca09 nspr: Drop older glibc code c0976fc irda-utils: Fix header inclusions a3f9721 iproute2: Fix build with musl 22333f0 libuser: Fix build when secure getenv is not there ea9dc99 iputils: Use member based initialization for mrghdr struct b207868 pax: Fix build with musl 1076499 tar: Fix build for musl based targets e451023 rt-tests: Fix build with non-gcc compilers 68da390 webkitgtk: Fix build with clang/musl da81635 console-tools: Include sys/types.h for u_char and u_short defs 205a07a sysklogd: untangle header inclusion maze 9f40dba babeltrace: Add missing header for MAXNAMLEN define 2458850 libunwind: backtrace APIs are glibc specific abdfacb apt: Add support for building for musl targets ec187d3 puzzles: Zero'ise structs before use 3cd0a8c dpkg: Add musleabi to known architectures aaa8516 xinetd: Fix build with musl 93fb408 watchdog: Fix build with musl 7509ffd gzip: Fix build with musl 1d28cbc directfb: Fix build with musl 7b6b312 net-tools: Link with libintl on uclibc ee1bfdb parted: Fix build with uclibc ed5da2a mtools: Fix build with uclibc 5384f08 gnutls: Link with libuargp on uclibc 493e557 guile: Fix build with uclibc 1636f6f packagegroup-self-hosted.bb: Move glibc-gconv-ibm850 to glibc only case 3e7d7ab util-linux: Fix ptest builds on musl 77825f8 gnutls: Link with libargp on musl and depend on argp-standalone 1a6fe71 argp-standalone: Add recipe a7d780c gdk-pixbuf: Fix latent build issue exposed by musl f2cf5d3 xserver-xorg: Fix build with musl b8de631 libcgroup: Add dependency on fts when building on musl 87c3e98 connman: include config.h for HAVE_STRUCT_IN6_PKTINFO_IPI6_ADDR cc55fc7 fts: Add recipe 6e3950b tcp-wrappers: Fix build with musl 68f88a5 ppp: Fix build with musl 4972edd blktrace: Include 1.6.3 a4b8e9a gstreamer1.0-plugins-ugly: update 1.6.2 -> 1.6.3 8170e06 gstreamer1.0-plugins-bad: update 1.6.2 -> 1.6.3 497ebc9 gstreamer1.0-plugins-good: update 1.6.2 -> 1.6.3 3d87902 gstreamer1.0-plugins-base: update 1.6.2 -> 1.6.3 1e256ee gstreamer1.0: update 1.6.2 -> 1.6.3 dacf2aa gst-plugins-package.inc: drop perl RDEPEND for XXX-apps packages 676275f gstreamer1.0-plugins.inc: don't set base SRC_URI via python 852f098 gstreamer1.0-plugins.inc: drop obsolete lib-link.m4 workaround a32ac26 gstreamer1.0-plugins-bad.inc: update hls dependency gnutls -> nettle 97e0752 gstreamer1.0-plugins-bad.inc: don't set ${S} or apply version specific patch 78e9361 gstreamer1.0-plugins-good.inc: remove duplicate --disable-examples 0edabfd gstreamer1.0-plugins.inc: convert GSTREAMER_1_0_DEBUG to a PACKAGECONFIG 81cd227 gstreamer1.0-plugins.inc: add missing glib-2.0-native dependency a0b1e66 gstreamer1.0.inc: add missing glib-2.0-native dependency e5fb79d gstreamer1.0-rtsp-server.inc: minor formatting improvements 434aa8e gstreamer1.0-omx: minor formatting improvements + update HOMEPAGE 69bcd33 gstreamer1.0-libav: minor formatting improvements + update HOMEPAGE 1d6e61a gstreamer1.0-plugins-ugly: minor formatting improvements c45ce26 gstreamer1.0-plugins-bad: minor formatting improvements c1ea981 gstreamer1.0-plugins-good: minor formatting improvements beb8091 gstreamer1.0-plugins-base: minor formatting improvements 61f30b4 gstreamer1.0-plugins.inc: minor formatting improvements 981145a gstreamer1.0: minor formatting improvements 9f1a943 gst-plugins-package.inc: minor formatting improvements 9e08b69 gst-player: minor formatting improvements a8ed2c8 valgrind: remove unused valgrind-remove-rpath.patch e24123d emptytest: exclude from world builds 6808035 build-appliance-image: bump version to 14.0.0 eb418c3 insane.bbclass: fix package_qa_walk() e185004 insane.bbclass: print all the QA messages 95fa36e weston: upgrade 1.8.0 -> 1.9.0 1bc0c89 wayland: upgrade 1.8.1 -> 1.9.0 03dae8e glib-2.0: fix the ptest 68c5e6d insane.bbclass:buildpaths: ignore ipkg/dpkg's CONTROL dir 258676b sstate: display the sysroot name when cleaning for clarity f35b2e2 bitbake: set default libexecdir to $prefix/libexec 40f0c2d gawk: fix libexecdir/libdir/BPN confusion 2458f41 mesa: update SRC_URI fdb12f9 e2fsprogs: set PV to 1.42.99+1.43+git${SRCPV} 9cf1ec0 valgrind: avoid neon for targets which don't support it b191f58 valgrind: re-enable ARM intdiv and vcvt_fixed_float_VFP tests b0b3412 valgrind: let valgrind determine its own optimisation flags 92abb5f meta/files/toolchain-shar-relocate.sh: Detect different python binaries and select one that exists. 924e2c3 python-nose: upgrade to 1.3.7 02440b5 python-native: Make python-native also RPROVIDE python-unittest-native b7ca05d linux-libc-headers: update to 4.4 f73ee59 libpng12: upgrade to 1.2.56 3a59486 libpng: upgrade to 1.6.21 63a49f8 libtirpc: remove redundant va_list patch 55a8df2 perl: Upgrade to 5.22.1 a840588 oeqa/selftest/signing: use temporary rpmdb 65c1de9 kexec-tools: inherit update-rc.d ba837f1 autotools: don't output the full config.log on configure failure 3e3cb62 bitbake.conf: Remove horrible variable expansion hacks b963efb mesa: add missing wayland-native build dependency 9dd6c81 maintainers.inc: Correct maintainership for several packages bd1a534 bitbake: toaster: run bitbake server with --read option 76a281c bitbake: taskdata: add the ability to access world targets list 11a1f49 bitbake: cache.py: check existence before add to cachedata.rproviders 05c1775 bitbake: taskdata.py: add RuntimeProviders to close matches cf9cb65 bitbake: data_smart: Don't show exceptions for EOL literals b80219e udev: Add 2 patches to support 4.4 kernel 1013385 gcc-runtime.inc: provide libquadmath 60b237f kexec: update supported architecture list 92a0032 strace: update 4.10 -> 4.11 0aa8169 strace: fix ARCH definition in tests/Makefile 2408149 strace: remove need for git-version-gen script 9ca6a5f strace: fix --disable-aio configure option dd90f32 strace: drop unnecessary dependency on acl aadae7b libnewt: Fix linking error due missing symbols 571289d lib/oe/package_manager.py: Remove list() from PkgsList class 6ebda8e lib/oe/rootfs: Use list_pkgs() instead of list() 03075f6 lib/oe/utils: Add function format_pkg_list() c708411 lib/oe/package_manager: Add list_pkgs() to PkgsList class 113e136 python3: Minor upgrade 3.5.0 -> 3.5.1 918149d python-numpy: upgrade to 1.10.4 eae7584 swig: upgrade to 3.0.8 21f7677 python-scons: upgrade to 2.4.1 7721652 python-pycurl: upgrade to 7.21.5 2ef401f python-mako: upgrade to 1.0.3 2a608cc python-setuptools: Upgrade to 19.2 6395bc8 python3-setuptools: upgrade to 19.2 40738af python: Upgrade 2.7.9 > 2.7.11 35855a0 wic: pylinted ksparser module e3b3bcf wic: add help for 'include' command bfaabe5 wic: move parts of canned .wks into common.wks.inc 50a3dc5 wic: implement search of includes 15ea180 wic: refactor get_boot_config d304162 wic: ksparser: add support for include 3fc6aaa wic: do not remove build dir in source plugins 8d34eea wic: use unique partition number 43b4058 wic: move wks parsing code to KickStart._parse 3860640 nss: update to 3.21 ea39ad0 libjpeg-turbo: fix upstream version check (sort of) 48a8a89 libical: fix upstream version check c6f71c5 gnutls: update to 3.4.8 7a80f84 sysstat: fix upstream version check 2aabf9a pbzip2: update to 1.1.13 77aee28 ncurses: fix upstream version check 56e4ff6 libsolv: fix upstream version check d46bc77 e2fsprogs: fix upstream version check 0436e3f build-appliance-image: bump version to 14.0 a206a19 btrfs-tools: update to 4.4 a1790bc bootchart2: update to 0.14.8 68c7113 poky.conf: Delete BB_SIGNATURE_HANDLER settings 0916235 rpm: remove bashisms: [ x == x ] -> [ x = x ] 2dbd61f uclibc: remove a use of immediate expansion and oe_filter_out () 32eeb00 gcc-runtime: switch to removal override syntax to modify CXXFLAGS c886a78 bitbake: tests/codeparser.py: Add filename/lineno flags to test variable f130033 bitbake: toaster: write variables to toaster.conf 1835768 sstate: replace verbose manifest removal with a single count d4c721a libdrm: Upgrade 2.4.65 -> 2.4.66 b5508a8 slang: Add dependency on ncurses 27b2df2 valgrind: make it explicit that valgrind supports armv7a and above 5dc38a3 sign_rpm.bbclass: fix task dependencies 27c39c4 opkg-utils: store alternatives in nonarch_libdir 77fde15 security_flags.inc: remove obsolete workarounds for curl 31ce027 cups: update systemd support a4b48c2 coreutils: Add xattr PACKAGECONFIG 7a0b1c1 oeqa/runtime/parselogs: use -F to search fixed strings for grep b8e11e2 libinput: Upgrade 0.21.0 -> 1.1.4 a9f2e87 postinst-intercepts: always use set -e de0848f maintainers: mark Khem as nominal owner for uclibc 3235f5e formfactor: remove unused beagleboard configuration 6c64700 alsa-state: remove beagleboard configuration f0d47a6 bitbake: Revert "runqueue.py: Ensure one setscene function doesn't mask out another which needs to run" 9e867ef sstate: Add packagedata to list of tasks not to recurse 5e881c1 classes/populate_sdk_ext: fix task dependency regression 2e9f092 image: Handle image types containing '-' correctly 0612ca4 oe-selftest: devtool: fix test_devtool_add_library if python was built first c1492c4 recipetool: create: add a couple more license checksums 2c8c9fe recipetool: create: add basic support for extracting dependencies from cmake 3eb397f recipetool: create: force GL libraries to virtual/* 726dbda recipetool: create: move dependency mapping code to RecipeHandler 788e4bb recipetool: create: fix overzealous mapping of git URLs ece0a2e recipetool: create: support additional autoconf macros from autoconf-archive 903d471 recipetool: create: detect flex/bison dependency a66f4ac recipetool: create: pick up boost macros in configure.ac dbe91a3 recipetool: create: improve extraction of pkg-config / lib deps e7bedb9 wic: rename kickstarter.py -> ksparser.py 3bb6ea6 wic: override ArgumentParser.error d652203 wic: removed unused imports d2090a6 wic: improve processing of parseing errors 1ed97cc wic: catch KickStartError bda77fd wic: add custom exception KickStartError ef211a5 bootimg/image-vm/image-live: Improve image dependencies 0910bc6 image: Always run do_rootfs_wicenv 12e37e7 selftest/buildhistory: Improve test to remove sources of error 05716dd bootimg/image: Enhance bootimg to respect RM_OLD_IMAGE 1c869a9 rootfs-postcommands: Ensure license manifests respect RM_OLD_IMAGE d27491b image: Ensure we don't expand TMPDIR in image commands ce8a206 image: Fix instability of do_image_* checksums fb1654f image: Fix wic environment issues 1da8f52 insane: Start to clean up do_configure_qa code dd28695 insane: Clean up horrible return value processing code 839fb18 e2fsprogs: fix PV b1236dc e2fsprogs: add PACKAGECONFIG for fuse f98e11c bitbake: toastergui: make artifact download more robust 68f3e1e bitbake: toasterui: log OSErrorException metadata events fb94754 bitbake: toasterui: listen for bb.event.MetadataEvent a2f23fa openssh: CVE-2016-1907 320a319 license.bbclass: fix license manifest 4339a82 wic/help.py: document requirements for valid fstab generation d688df8 glib-2.0: add dependency glib-2.0-native back 76e35f1 kernel-yocto.bbclass: move do_kernel_link_vmlinux() into kernel.bbclass d453fa1 kernel-yocto.bbclass: remove do_kernel_link_vmlinux from SRCTREECOVEREDTASKS 2b92f88 libarchive: Add bsdtar and bsdcpio packages e246905 toaster.bbclass: Separate artifact dump from image file dump 4f481bc pax-utils: 1.0.5 -> 1.1.4 f9974f2 sqlite3: upgrade to version 3.10.0 cd7910d connman: upgrade to 1.31 b9169b7 python3: add missing dependency on PN-misc to PN-modules 4b4dea7 useradd-staticids.bbclass: Remove unnecessary spaces 4f2c352 useradd-staticids.bbclass: Read passwd/group files before parsing 4cbdb15 useradd-staticids.bbclass: Simplify the logic for when to add groups b18e40c useradd-staticids.bbclass: Simplify some logic b689aa0 useradd-staticids.bbclass: Make --no-user-group have effect c03ea8d useradd-staticids.bbclass: Treat mutually exclusive options as such af8b005 wic: get rid of 2 getters 2573e28 wic: get rid of set_size and set_source_file setters 5cd222b wic: get rid of get_rootfs and set_rootfs 4d5d5dd wic: get rid of get_timeout getter 26fb2a1 wic: adjust code for new data structure c827238 wic: remove pykickstart code c15ea82 wic: use new kickstart parser f572f44 wic: add kickstart parser module e5e1905 wic: add partition module 180f170 alsa-lib: 1.0.29 -> 1.1.0 a8c25af matchbox-keyboard: export GTK_IM_MODULE_FILE location d75cb1f xf86-input-evdev: upgrade to 2.10.1 2283732 menu-cache: upgrade to 1.0.1 ec7e406 libxi: upgrade to 1.7.6 86f3f25 librsvg: upgrade to 2.40.13 72dd806 libgpg-error: upgrade to 1.21 3c02fe0 libevdev: upgrade to 1.4.6 33e9930 libcroco: upgrade to 0.6.11 5b63c44 gsettings-desktop-schemas: upgrade to 3.19.3 dfff167 gpgme: upgrade to 1.6.0 5abb691 u-boot: Update to 2016.01 release e9280d1 linux-yocto: introduce v4.4 standard/preempt-rt/standard kernel 8c3276e e2fsprogs: 1.42.9 -> 1.43 (master) b248e55 bitbake.conf: rename python-native-runtime 65d0bfc net-tools_1.60-26.bb: Fix do_patch dependency error 99923fc ncurses: 5.9 0 -> 6.0 44d283a autotools.bbclass: use relative path to run configure script b2f1de3 glibc-initial.inc: use relative path to run configure 0fe6e2d bitbake: toaster: increase timeout a5f34bc poky.ent: Added "perl-bignum" package for Fedora afc6cba dev-manual: Updated "Running ptset" section ec047ad yocto-project-qs: Updated the "Next Steps" section 57ddbe8 ref-manual: Removed all variables related to "QMAKE" 7814b33 ref-manual: Updates to cull out qt4 stuff. bf81969 toaster-manual: Updates on how to start Toaster. 798e8b8 bitbake: toastergui: code formatting and clean-up c4b5011 bitbake: toaster tests: fix Django tests for new ToasterTable pages 88a262c bitbake: toastergui: remove unused views and template code 059a274 bitbake: toastergui: fix error and warning counts for builds 4103e0c bitbake: toastergui: make "Apply" button state depend on filter range 6c2d88f bitbake: toastergui: mute label for filter actions with no records f08730a bitbake: toastergui: set default visible and hideable columns 112f374 bitbake: toastergui: serialise decimals correctly e024aab bitbake: toastergui: streamline construction of filter objects fcb20f9 bitbake: toastergui: ensure filter_value updates f9c46f5 bitbake: toastergui: don't hide all elements with .col class eaae82a bitbake: toastergui: convert project builds page to ToasterTable 33b011c bitbake: toastergui: implement "today" and "yesterday" filters f8d383d bitbake: toastergui: implement date range filters for builds b929889 bitbake: toastergui: show recent builds on all builds page 1a4b203 bitbake: toastergui: switch off filter highlights when inactive 809046c bitbake: toastergui: refactor ToasterTable filtering 294579b bitbake: toastergui: convert all builds page to ToasterTable 6c12ca7 bitbake: toastergui: use event delegates for hover help elements ef93dce bitbake: toastergui: switch projects/ view to ToasterTable 417f1d3 bitbake: toaster: check inferred file suffixes against list of known types c02ee05 bitbake: toaster: move image file suffix list to model d29e4cd bitbake: toastergui: use ToasterTable for projects page b1256db openssh: update to 7.1p2 c0e9f2d kernel/kernel-arch: Explicitly mapping between i386/x86_64 and x86 for kernel ARCH f8508de bitbake: Revert "fetch/git: Change to use clearer ssh url syntax for broken servers" b567235 image/image-live: Add back IMAGE_TYPES_MASKED support e914e2a image.bbclass: Handle image base type dependency properly ad32f65 autoconf: add missing perl-module-file-find to RDEPENDS d83dfe6 ca-certificates: update to 20160104 4440560 epiphany: upgrade to 3.18.3 dcf54b4 iso-codes: upgrade to 3.64 d7bee35 lighttpd: upgrade to 1.4.39 08c8923 libwebp: upgrade to 0.5.0 cf0aea7 classes/populate_sdk_ext: avoid unnecessary sstate being brought in ea29bec insane/package: Fix cases where QA errors aren't fatal 2e620a4 classes/populate_sdk_ext: check that extensible SDK prepared correctly 4685c33 classes/buildhistory: save auto.conf and bblayers.conf for extensible SDK 39f6472 classes/populate_sdk_ext: support auto.conf 91877aa classes/populate_sdk_ext.bbclass: handle if local.conf doesn't end with a newline 764c927 util-linux: create util-linux-runuser iff pam in DISTRO_FEATURES 95dce70 rsync: 3.1.1 -> 3.1.2 38aa0fc less: 479 -> 481 4cb2269 iputils: s20121221 -> s20151218 fe47dd7 wget: 1.17 -> 1.17.1 79886e9 git: 2.5.0 -> 2.7.0 d3e16b8 file: 5.24 -> 5.25 3549abc autogen-native: 5.18.5 -> 5.18.6 fb14627 curl: upgrade to 7.46 eaf88d7 xz: upgrade to 5.2.2 8516ff7 sysstat: upgrade to 11.2.0 ae73be1 at: upgrade to 3.18 21efab7 kmod: upgrade to 22 c88efae resolvconf: upgrade to 1.78 6729889 pciutils: upgrade to 3.4.1 edd319c gnupg: 2.1.7 -> 2.1.10 78b58b8 help2man-native: 1.47.1 -> 1.47.3 ac0e0d5 man-pages: 4.02 -> 4.04 1e0cbb9 libgcrypt: 1.6.3 -> 1.6.4 372c23d xmlto: 0.0.26 -> 0.0.28 aaafe33 elfutils: 0.163 -> 0.164 38901a7 dhcp: 4.3.2 -> 4.3.3 ea05e05 image.bbclass: Unconditional includes of populate_sdk_ext fails c08f272 tcmode-default.inc: Fix preferred provider nativesdk-sdk_prefix-libc-initial 5d2f783 dhcp: search libxml2 for bind b69652d tzdata: remove bashism 7c7c249 harfbuzz: update 1.1.2 -> 1.1.3 84623dc libpostproc: duplicate armv7a over-rides for armv7ve 1744198 libav.inc: duplicate armv7a over-rides for armv7ve 102dfa1 gcc-configure-common.inc: duplicate armv7a over-ride for armv7ve b08dfb5 subversion: Upgrade 1.9.2 -> 1.9.3 d6fae0c lttng-ust: Upgrade to 2.7.1 a9cc9b5 lttng-tools: Upgrade to 2.7.1 6b02575 lttng-modules: Upgrade to 2.7.1 a378430 gdb: upgrade to 7.10.1 92cc02f linux-yocto: Update Genericx86* BSPs to 4.1.15 da43a56 bitbake: Revert "fetch2/local.py: avoid using PREMIRROR" 96a34e7 conf/distro/poky-tiny: correctly disable python in opkg-utils 1724ffd bitbake: fetch2/git.py: Add missing "errno" module import. 74fa824 bitbake: bitbake: clean up stamp-base related codes f3f769a local.conf.sample: add qemumips64 43328fe bitbake: runqueue: Fix setscene task dependencies 7b905ca bitbake: toaster: settings Add uid to the toaster cache dir dff7a27 bitbake: toaster: show 'satisfied via' text for reverse deps 89f4932 bitbake: toaster: show 'satisfied via' text for build deps febb898 bitbake: toaster: show list of provides for the recipe 2ff4ccb bitbake: buildinfohelper: add provides info to the db 16a81fb bitbake: toaster: add Provider model 6a28ed3 bitbake: buildinfohelper: use providermap f2b7252 bitbake: cooker: add providermap to dep_tree 7e380d4 bitbake: taskdata: refactor get_providermap 46731da bitbake: main/runqueue: Add --setscene-only option to bitbake 34f8db9 update_font_cache: only scan system font directories e5c011b Add "CVE:" tag to current patches in OE-core f04fb88 scripts/create-pull-request: fix git request-pull syntax 928ceb6 qt4: fix-for-mips-n32.patch: remove it c4a3258 util-linux: create util-linux-runuser package 554ca68 valgrind: include aarch64 in COMPATIBLE_HOST 0ce775a valgrind: update to 3.11.0 21a94f6 valgrind: don't restrict to armv7a b8ebac9 DpkgRootfs: Fix logcheck_error false-positive when use multilib e265fbb package_deb.bbclass: add 'Multi-Arch: foreign' tag to allarch packages 4aeb69d package_manager.py: fixes for multilib deb packaging builds 9ea7428 package_deb.bbclass, cross-canadian.bbclass: DPKG_ARCH mapping function 72e6932 connman.inc: add missing RDEPENDS 675ff42 meta: rename perl-native-runtime 3f4fb39 dbus: support large-file for stat64 0d5e41f freetype: enable out-of-tree builds, and use host zlib 8f2ab19 bluez5: upgrade to 5.37 11f5a42 cogl-1.0: fix may be used uninitialized error 235606f oeqa/runtime/logrotate: fix hardcoded root directory cce6c3e oeqa/runtime/smart: fix hardcoded root directory cd2cf1f boost: update to 1.60.0 afc0255 bitbake.conf: remove 'stamp-base' c8fef7f gcc5: Fix build on NIOS2 eda3947 rpmresolve.c: Fix unfreed pointers that keep DB opened 3c8a451 tzdata: Make /etc/timezone optional b80da02 systemd: arrange for volatile /etc/resolv.conf 5548a76 systemd: add myhostname to nsswitch.conf d6bc841 opkg-utils: add update-alternatives PACKAGECONFIG c3b96ff linux-dtb.inc: use absolute upd-alt paths 3ad08c0 uclibc: Upgrade to 1.0.10 74c3667 populate_sdk_ext: Pass excluded_targets as a list to prune_lockedsigs e306d54 populate_sdk_ext: Change to include siginfo and non sstate task sigs e1a558a populate_sdk: Switch from bzip2 to xz 3341f3f classes: Fix do_rootfs references 0a4e1f9 image: Create separate tasks for rootfs construction fdced52 image: Move pre/post process commands to bbclass cdc0aee image.bbclass: Separate out image generation into a new task, do_image 0269219 populate_sdk_ext: Use new --setscene-only option to bitbake instead of workarounds 1ee0842 sstatesig: Handle special case of gcc-source shared-workdir for printdiff d93c212 bitbake.conf: add virtual/libiconv-native to ASSUME_PROVIDED b2fe2a8 devtool: build: support using BBCLASSEXTENDed names 38ed039 devtool: reset: support recipes with BBCLASSEXTEND 532f429 devtool: refactor code for getting local recipe file ec90168 devtool: add: support adding a native variant 99e3872 devtool: reset: do clean for multiple recipes at once with -a 5ef716c recipetool: create: support creating standalone native/nativesdk recipes 1e503c0 recipetool: create: lower case name when determining from filename 4deed25 devtool: sdk-update: add option to skip preparation step d586a11 devtool: sdk-update: fix error checking c1b7d83 devtool: sdk-update: fix metadata update step efead10 devtool: sdk-update: fix not using updateserver config file option 9348c91 classes/populate_sdk_ext: disable signature warnings d44dcd7 classes/populate_sdk_ext: fix cascading from preparation failure d11051c scripts/oe-publish-sdk: add missing call to git update-server-info fbc2147 libbsd: upgrade to 0.8.1 221d864 bitbake: fetch/git: Change to use clearer ssh url syntax for broken servers 46d62d0 bitbake: knotty: Use non-interactive mode as fallback for dumb terminals bfa7859 bitbake: cooker: fix findFilesMatchingInDir documentation 3d42737 bitbake: cooker: use in instead of count 0e83229 maintainers.inc: remove x11vnc d914c7f meta-yocto: drop qt4 references 0f3ad7c scripts/yocto-layer: Avoids duplication of "meta-" prefix 220ef32 poky-lsb/poky-tiny: update preferred kernel to 4.1 b82e228 yocto-bsp: remove 3.14 and 3.19 bbappends 685daeb conf/local.conf.sample: comment out ASSUME_PROVIDED=libsdl-native 2c5e7e0 image: Really remove lockfiles flag a500e3a boost: ensure boost to remain an empty metapackage b151506 image_types.bbclass: Rebuild when WICVARS change eb4159c gccmakedep: fix buildpaths qa check f54e53c bash: fix buildpaths qa check error 6d111c8 testimage: remove VNC test, x11vnc isn't in oe-core anymore 8bec5c5 x11vnc: remove all references to moved package 8f865e2 x11vnc: move recipe to meta-oe ae1fc96 classes/buildhistory: actually use KiB in extensible SDK sizes files 84f66b5 x11vnc: move recipe to meta-oe c44599d readline: move inputrc into readline f29d642 tune-*: use mcpu instead of mtune for ARM tunes c6a1991 arch-armv7ve: add tune include for armv7ve and use it from cortexa7 and cortexa15 21d61fa cortexa{7,15,17}: add VFPv4 tunes 7f2cb68 feature-arm-vfp.inc: Further simplify with TUNE_CCARGS_MFLOAT e9b2ffc feature-arm-{neon,vfp}.inc: refactor and fix issues 45f726c arch-armv7a.inc: add vfpv4 support also to softfp and big endiand tunes ebe8358 arch-armv7a.inc: Fix PACKAGE_EXTRA_ARCHS for tune-armv7atb-vfpv3, tune-armv7atb-vfpv3d16, cortexa7thf-neon-vfpv4 9280a8e arch-armv5.inc: drop duplicate ARMPKGSFX_DSP and PACKAGE_EXTRA_ARCHS_tune-armv5tehf-vfp 46d6b0e arch-armv[456]*.inc: improve indentation like armv7a 860663a arm/arch-arm*, tune-cortexa*, tune-thunderx.inc, powerpac/arch-powerpc64.inc: Use normal assignment 8c483a1 arch-armv7a, tune-cortexa*: improve indentation 7498b91 arch-armv7a, tune-cortexa*: improve comment VFP -> HF bb9b581 arch-armv7a: add missing space before ?= 15f8344 tune-cortexr4.inc: fix PACKAGE_EXTRA_ARCHS e2736f7 sanity.bbclass: add more information to error message about TUNE_PKGARCH missing in PACKAGE_ARCHS b68d947 mkefidisk.sh: add boot log on console 62d7c97 mkefidisk.sh: add startup script for automated boot 5aa3b93 oeqa/selftest/recipetool: update for libjpeg-turbo migration ffa7469 libjpeg: Replace libjpeg with libjpeg-turbo 29d273f python3: fix installed-vs-shipped when 64bit + multilib db7cee6 pulseaudio: add PACKAGECONFIG for lirc b900ec8 sstate-sysroot-cruft.sh: Extend the whitelist 20843fa iptables: upgrade to 1.6.0 c2bda6c scripts/oe-selftest: Allow to run tests on random/all MACHINEs 8e1435e selftest: Added testcase decorators for 2 tests 32f332c oe-selftest: New option --list-tests 17d886b oe-selftest: Improved --list-classes when determining test names 4ec2da7 selftest: moved tc test_buildhistory_does_not_change_signatures 02d259c scripts/oe-selftest: Remove extra coverage data added to unittests 30c06a4 expat: CVE-2015-1283 315bdc8 packagegroup-core-x11-sato: enable pcmanfm on mips a3e26f9 wic: rawcopy: Copy source file to build folder d6e0da4 grub2: Fix CVE-2015-8370 bb663b0 systemd: enable compatibility libraries by default 3fea163 systemd: add more compression and importd PACKAGECONFIGs d462b70 gcc-sanitizers: link directly against sysroot libstc++ 3eb6135 openjade: Fix build if not installing libtool .la files 6308c47 valgrind: Define __UCLIBC__ for uclibc based systems 3d19a1e security_flags.inc: disable -fstack-protector-XXX for valgrind 807ed8a meta/conf/layer.conf: bump layer version due to Qt4 removal 4fb3e05 packagegroup-core-lsb: treat qt4 packages same as qt3 packages 8b11ed8 qt4: remove recipes and classes 0baadc8 toaster-manual: Updates to toaster use chapter. 908bbff ref-manual: Updated the list of supported image types. 5d27451 dev-manual: Added the --configfile bootloader option. 7b3b1f9 dev-manual: Added three new wic option descriptions. eeffa64 dev-manual: Added the --overhead-factor wic option description. 2beb19b dev-manual: Added the --extra-space wic option description. 95851df dev-manual: Added wic --notable option description. 88a2794 dev-manual: 8bdc707 sdk-manual: Initial Manual framework f1f7625 bsp-guide: Updated the license statement. 6686a31 dev-manual: Correction to the KVM stuff in the runqemu commands. ccc830d documentation: Prepare for 2.1 builds 7af9314 mega-manual: Added four new figures for GUI example. f8185ff bitbake: ast: Add filename/lineno to mapped functions a178c5a bitbake: main: kill server without queue setup 773700d bitbake: xmplrpc: split connect method 05b4fbc bitbake: uievent: refactor retry loop ebc169c bitbake: uievent: get rid of EventHandler attribute 4e0de6e bitbake: uievent: add error to registerEventHandler return 01419d5 bitbake: cooker: add state.get_name method 763506d bitbake: fetch2/__init__.py: Add support for 7-Zip f5bfc1c bitbake: utils: Remove double compile from better_compile b4141f6 bitbake: fetch2/local.py: avoid using PREMIRROR 1ad3595 bitbake: siggen: Change exception note into a warning 4ba49ac bitbake: data: Drop misleading ExpansionError exception 2c94311 bitbake: cooker: Drop useless parsing exception a16b543 bitbake: data: Pass lineno/filename data from build_dependencies 958f0ff bitbake: codeparser: Add support for correct linenumbers db4376e udev-extraconf: introduce multiple blacklist files for more complex setups a8fb429 uclibc: disable parallel builds 401c632 image: Condense do_rootfs function/flags 0051510 image/rootfs-postcommands: Separate out post rootfs commands to separate class 3428edd image: Remove pointless rootfs lock eb5bb0e packagegroup-core-boot:replace busybox to variable cc7bb6c initramfs-framework_1.0:replace busybox for variable. d9ffa59 core-image-minimal-initramfs: replace base-utils 9349f42 base-utils:flexible dependency for command utilities c44b76a orc: Add missing PACKAGES_DYNAMIC 2cd061a bluez5: include the patch only for 5.36 4c35473 meta-yocto-bsp: remove 3.14 and 3.19 bbappends 6af8981 meta-yocto-bsp: Remove uvesafb (v86d) from generic x86 features 614e9ec qemu: add PACKAGECONFIG for Nettle crypto support 09705a4 oeqa/selftest: support sets in devtool comparisons 4b543f7 packagegroup-core-x11-sato: include pulseaudio-misc 23302ee devtool: use cp instead of shutil.copytree d6e7b5b xorg-lib: allow native building without x11 DISTRO_FEATURES 4cba706 busybox: generalize recipe to work with arbitrary install directories 9d001ae cairo: update 1.14.4 -> 1.14.6 6d561fb libdrm: Upgrade to 2.4.65 0f516f0 image-vm.bbclass: uses IMAGE_LINK_NAME c851096 image-live.bbclass: uses IMAGE_LINK_NAME 907b87d rpm: Generate per distribution and multilib macro files c910789 package_manager.py: add debugging support for rpm scriptlet execution 8dd27ef xinput-calibrator: get screen geometry when calibrating e8d36f4 scripts: hand the TEMPLATECONF local over to setup-builddir 0f4fb26 util-linux: Fix floating dependency upon 'readline' 2cb434a linux-firmware: package Broadcom BCM43340 firmware f70d46f rpcbind: Fix build with libtirpc 1.0.1 866c693 libtirpc: upgrade to 1.0.1 5754b83 gstreamer1.0-libav: upgrade to version 1.6.2 6ac601f gstreamer1.0-rtsp-server: upgrade to version 1.6.2 3ac3d33 gstreamer1.0-plugins-ugly: upgrade to version 1.6.2 823b623 gstreamer1.0-plugins-bad: upgrade to version 1.6.2 6d13f30 gstreamer1.0-plugins-good: upgrade to version 1.6.2 05896a5 gstreamer1.0-plugins-base: upgrade to version 1.6.2 a8eb77b gstreamer1.0: upgrade to version 1.6.2 dd5756b mirrors: add archive.apache.org to Apache mirrors cfbd804 guile: remove redundant replacement of .pc file c2e8079 bind: 9.10.2-P4 -> 9.10.3-P2 7204a0f libsndfile1: enable FLAC/Ogg/Vorbis support 35bd254 buildhistory: improve support for extensible SDK ea0abcd buildhistory: fix not recording SDK information b6d191d scripts/oe-selftest: Add support for selftest log with timestamp ab79287 selftest: Added MACHINE = "qemux86" to tests that use runqemu b09080d ncurses: fixes wrong paths in BINCONFIG 8df88fb xcb: don't build-depend on python-native d7759a5 tcmode-default: Use glibc for nativesdk version even on uclibc and musl a7eadc3 qemu: upgrade to 2.5.0 9988ab3 webkitgtk: update to 2.10.4 cedb027 epiphany: update to 3.18.2 6e27dd8 libwebp: update to 0.4.4 efcf4b4 libsecret: update to 0.18.3 0112274 gnome-desktop3: update to 3.18.2 88a656e gcr: update to 3.18.0 883193a linux-yocto: remove 3.14 and 3.19 recipes 4487e3a kernel-yocto: fix checkout bare-cloned kernel repositories 5161944 linux-yocto/4.1: update to v4.1.15 a462d16 linux-yocto-dev: bump to 4.4-rcX 862b3b3 lttng-modules: fix build issue against kernel 4.4 9563aa8 yaffs2: fix checkpoint functionality cefc24d mobile-broadband-provider-info: update to tagged release 20151214 04aa27c icu: fix upstream version check 2865e5f btrfs-tools: update to 4.3.1 5beb3bc iso-codes: update to 3.63 503c08d kexec-tools: update to 2.0.11 4fa2e4b lighttpd: update to 1.4.38 f7a7796 tiff: update to 4.0.6 2498065 libassuan: update to 2.4.2 f2192fa msmtp: update to 1.6.3 7fc3066 liburcu: update to 0.9.1 10d14bc trace-cmd: update to 2.6 fc774e9 python3-pip: update to 7.1.2 c3330aa pytnon-pexpect: update to 4.0.1 aa90b5d ifupdown: update to 0.8.2 4c98105 gptfdisk: update to 1.0.1 edde9af cryptodev: update to 1.8 9da9308 oe-selftest: devtool: add more explicit check for ls output c2435b1 oe-selftest: add tests for simple devtool add / recipetool create URL case 8916731 recipetool: create: fix error when extracting source to a specified directory fe28c25 recipetool: create: improve autotools support 498e483 devtool: sync: tweak help / messages b272c51 devtool: reset: print message about leaving source tree behind 95a234e devtool: status: list recipe file within workspace if one exists e116739 devtool: modify: default source tree path 110f433 devtool: add: allow specifying URL as positional argument ceaa4bf devtool: add: figure out recipe name from recipetool ee0d5a1 devtool: add: allow source tree to be omitted 0d8751f scripts/lib/argparse_oe: handle intermixing of optional positional arguments 1bd7793 devtool: update-recipe: use correct method to get bbappend filename 2074654 devtool: split out function for naming bbappend 6acbdc9 devtool: add: tweak help text 316b57b devtool: edit-recipe: add new subcommand ebe5f0b recipetool: create: basic extraction of name/version from filename db5f964 recipetool: create: support extracting name and version from build scripts 6a7661b recipetool: create: set up priority system for recipe handlers 38803e3 recipetool: create: detect when specified URL returns a web page e78a039 recipetool: create: prevent attempting to unpack entire DL_DIR e61645b recipetool: create: minor fix for potential issue in python handling ae2141b recipetool: create: fix do_install handling for makefile-only software c2f1742 recipetool: create: avoid traceback on fetch error 470f20b recipetool: create: handle https://....git URLs 8e0a84c scripts: print usage in argparse-using scripts when a command-line error occurs 548d433 directfb.inc: enable bfd linker workaround for all arm targets 2381f4a devtool: sdk-update: fix traceback without update server set 7540550 classes/populate_sdk_ext: error out of install if buildtools install fails ecce3d3 classes/populate_sdk_ext: hide build configuration in devtool build* output fd84d0f classes/base: don't print header if BUILDCFG_HEADER not set a4f496a classes/populate_sdk_ext: use uninative to set NATIVELSBSTRING a6f8a3f toaster.bbclass: fix TypeError when parsing build stats 937b7fd libxcb: Add a workaround for gcc5 bug on mips 86c8b8b flex: update to 2.6.0 dad130b opkg: upgrade to v0.3.1 d2b770c systemd: remove merge conflicts accidently left in ca69643 wic/help.py: document that mountpoint is optional for part command 5628dde pixman: check neon support via TUNE_FEATURES, not the _armv7a over-ride 9a74388 xdg-utils: Do not build the in-script documentation 520b37d gettext: Upgrade 0.19.4 -> 0.19.6 cae0e0f gcc-configure-common.inc: add gcc-runtime ABI fixes for armv7m and armv7r cba8fb3 tune-cortexr4.inc: provide an _armv7r over-ride via MACHINEOVERRIDES fd10723 tune-cortexm3.inc: provide an _armv7m over-ride via MACHINEOVERRIDES b6fe440 feature-arm-thumb.inc: drop 'no-thumb-interwork' tuning feature 1d5a4cf feature-arm-thumb.inc: drop legacy _thumb and _thumb-interwork over-rides ca64c16 feature-arm-thumb.inc: drop ARM -vs- thumb comments 95a79a5 rpm: Fix support for db5 and db6 75cec07 oe-buildenv-internal: fix return code 606c9e7 staging.bbclass: make already-stripped can be skipped 647e0e4 buildhistory-collect-srcrevs: hide empty sections d4b5a1f selftest/buildhistory.py: Test buildhistory does not change sigs 4b83f1f gcc5: Upgrade gcc-5.2 -> gcc-5.3 0381b78 bitbake: event/utils/methodpool: Add a cache of compiled code objects c61c1eb bitbake: BBHandler: Improve IN_PYTHON_EOF handling 2a94194 bitbake.conf: Add filename and lineno to BB_SIGNATURE_EXCLUDE_FLAGS 5f40691 bitbake: toaster: remove 2 confusing parameters 3960b6e bitbake: toaster: move setting of default values b194c0c bitbake: toaster: move startup checks to a better place 064d2c7 bitbake: toaster: remove 2 unused functions c505f24 bitbake: toaster: remove addtoConfiguration function c7e4404 bitbake: toaster: updated header of the toaster script af34920 bitbake: toaster: add MANAGE variable 563b786 bitbake: toaster: remove unused variable aa3cc12 bitbake: toaster: split long lines, add/remove whitespace 8e4acac bitbake: toaster: check if address:port is in use 847b935 bitbake: toaster: implement checksocket command 9f3681d buildstats-summary/toaster: Cope with removal of get_bn() 522dcaa bitbake: knotty: Improve exception error message 01d67bf bitbake: knotty: Fix row/column function return value issue 6c12efa bitbake: buildinfohelper: Update for buildstats layout change 28ea1a1 bitbake: fetch: use orig localpath when calling orig method 5cb6d83 bitbake: utils: Improve traceback from better_exec internal errors 0019edc bitbake: ast/event/utils: Improve tracebacks to include file and line numbers more correctly b14ccb2 bitbake: runqueue: Add support for - syntax 5069ab6 m4: Drop unused/unreferenced patch d7e766b toaster: Update for buildstats changes adfdca4 buildstats: Improve to add getrusage data and corrected IO stats 3187647 buildstats: Separate out the build and task data to allow improvements 38a2553 buildstats: Clean up e.data and bb.data references 7b1e48f buildstats: Drop get_bn/set_pn and just use BUILDNAME 7837162 buildstats: Drop disk data from buildstats 030c033 nativesdk-buildtools-perl-dummy: Bump PR e6f2761 combo-layer: Stop using filterdiff f1f3716 meta: more removals of redunant FILES_${PN}-dbg 5fb8fea clutter-gst-3.0: add dependency on libgudev 54f01ca systemd: Upgrade to 228 63bdadc uclibc: Switch to using uclibc-ng 0b5cddd cdrtools-native: update to 3.01 final c4dfb92 grep: update to 2.22 d8608bc procps: update to 3.3.11 52f6a01 babeltrace: update to 1.3.1 0c705d6 powertop: update to 2.8 516d8c9 nfs-utils: update to 1.3.3 9c39a4f systemtap: update to 2.9 fef0ec6 kbd: update to 2.0.3 8668e17 gmp: update to 6.1.0 86e02d0 docbook-xsl-stylesheets: fix UPSTREAM_CHECK_REGEX f065766 mtd-utils: update to 1.5.2 5d32aeb unfs3: update to r497 4e653b5 python-numpy: update to 1.10.1 90b7212 libxml-simple-perl: update to 2.22 689db13 dmidecode: update to 3.0 d301451 cpio: update to 2.12 2bea006 puzzles: update to current commit 2d04c83 gnutls: update to 3.4.7 cf1eb2b libidn: add native and nativesdk support dd58b3b libpng: Update SRC_URI to use GENTOO_MIRROR b763668 libpng12: Upgrade 1.2.54 -> 1.2.55 91c92fc libical: Upgrade 1.0.0 -> 1.0.1 5c6ff26 libxslt: use proper SRC_URI a444eb5 kexec-tools: added the script kdump be9f7f9 ltp: Upgrade 20150420 -> 20150903 81f1e41 musl: Update to latest 1.1.12 release c529e66 util-linux: Upgrade to 2.27.1 bdbc5ee packagegroup-core-sdk: Disable sanitizers for uclibc 692853d libsolv: add new recipe 8bba7de curl: upgrade to 7.45 2e3a172 libsndfile1: 1.0.25 -> 1.0.26 df18352 wget: Upgrade 1.16.3 -> 1.17 81eb101 unifdef: upgrade to 2.11 19c76ad sstate-sysroot-cruft: Add php, python, lua, fontcache generated files to whitelist f80f8ba oeqa/selftest: Added testcase decorators for 2 testcases a5dd1dd uninative.bbclass: Choose the correct loader based on BUILD_ARCH 388e580 license: Fix BB_TASKDEPDATA references f19e8de coreutils/procps: Revert priority change since coreutils > busybox 455ff32 meta: more removals of redunant FILES_${PN}-dbg e0890b6 meta: Drop now pointless manual -dbg packaging b7766e4 package: Add auto package splitting of .debug files 89f13c7 meta/conf/toasterconf.json: remove SDKMACHINE variable as it no longer used 03d715e bitbake: toaster: tables Set a default order for the software recipes table 4ff0d60 bitbake: toaster: rework checking of Django version 4a78416 bitbake: toaster: monkey patch Queryset c1c8eff bitbake: toaster: removed extra calls of migrate 507aafb bitbake: toaster: work around 'database is locked' error 322b470 bitbake: toaster: fixed format strings 84daa40 bitbake: toaster: use OneToOneField instead of ForeignKey c464f34 bitbake: toaster: Amend regex for MySQL database URLs f001a4a bitbake: toaster: Remove compatible_layerversions() method 0adffdf bitbake: toaster: Check Django version against toaster-requirements.txt 8d058cf bitbake: toaster: Update deprecated manage.py command 717c636 bitbake: toaster: Prevent deprecation warnings for RedirectView 0f602c1 bitbake: toaster: Update API used to make runbuilds methods run in transactions 93f5738 bitbake: toaster: rename get_query_set -> get_queryset 23c4806 bitbake: toaster: Start Django machinery for database access 7a0c45e bitbake: toaster: Create default project with get_or_create* method 9de8dfa bitbake: toaster: Fix references to app paths 535fc9b bitbake: toaster: Remove South migrations 8ca4664 bitbake: toaster: Upgrade to Django 1.8.6 and remove South b322dec bitbake: toasterui: process SetBRBE event 0274b68 bitbake: toaster: trigger SetBRBE event fdb8e74 bitbake: toaster: implement BitbakeController.triggerEvent 5de3800 bitbake: event: Fix subprocess event error traceback failures 0da1d71 nopackages: Add class for recipes which don't generate packages 5003d14 sstate: Ensure populate_lic dependencies are not followed 48aad51 populate_sdk_ext/sign_rpm/sign_package_feed: Add missing getVar parameter 98dcdcb autoconf: Disable macro which causes excessive delays when using dash as sh 28fa304 automake: Remove delays in configure scripts using automake f5e681d site/common-linux: Add some macros to avoid sleeps during configure 93adf46 meta-yocto/conf/toasterconf.json: remove SDKMACHINE variable as it no longer used b3d6872 lttng-tools: Revert wrong enforcement of Python 3.0 use 2c11bdd attr: Add patch to account for use of internal glibc header f1c034b libpam: Fix build with musl 33bab59 openssl: Add musl configuration support c4207ee busybox: Add config for musl 083d9d1 gettext: Delete libintl.h and charset.alias 3a0797f sysvinit: Fix build with musl fd21402 musl: Add recipe 781d34f mtools: Use proper glibc override to add glibc packages to recommendations 1b90d67 squashfs-tools: Define FNM_EXTMATCH if not defined 36a709a mtd-utils: Backport and create patches to support musl 41fd73f gdb: Fix build with musl 1ee97d8 autoconf: Add musl support a2ea58b gcc: Add support for building musl configuration 37c74e2 gstreamer1.0: Split bash completion information into separate package fc32a3b attr: add attr dependency to attr-ptest 9205f0a valgrind: import Debian link_tool patch for MIPS c27bbb4 slang: update upstream URI to (official) jedsoft.org 21e35df subversion: update to 1.9.2 39260c3 json-c: add manual upstream version check 4ff0017 mirrors: replace references to archive.apache.org 1672a18 mobile-broadband-provider-info: update to current commit b699b15 nspr: update to 4.11 dec8d20 python-setuptools: update to 18.7.1 b3535e2 openssl: update to 1.0.2e fce2ee7 dropbear.inc: drop legacy CFLAGS and LD tweaks f87063b dropbear: update 2015.70 -> 2015.71 a520495 texinfo: don't create dependency on INHERIT variable 2b2774b sudo: upgrade to 1.8.15 5eb0e90 linux-firmware: update to latest revision bbe4917 c147782 bluez5: upgrade to 5.36 64c3a09 sudo: remove libdir INSANE_SKIP b407a80 libsdl: expand PACKAGECONFIG and enable native builds 39facf9 buildtools-tarball.bb: 32bit tools need pseudo 32bit library bc26a7d rpm: fix file conflicts for MIPS64 N32 01c0285 rpm: Enable MIPS64 N32 transactions a742586 bash: fix testcase run-coproc/run-execscript/run-test/run-heredoc failed a6bb872 cpio: fix test case of symlink-bad-length 787d82b linux-libc-headers: update default KORG_ARCHIVE_COMPRESSION bz2 -> xz 94c0332 linux-libc-headers.inc: remove '-e MAKEFLAGS=' from EXTRA_OEMAKE c7ad779 gcc-4.9: import patch fixing compilation in thumb mode 1260ded gcc-5.2: import patch fixing compilation in thumb mode b4db53a dropbear: Upgrade 2015.68 -> 2015.70 e0162c1 gcc-cross-initial: make dependency on gnu-config-native and autoconf-native explicit fccb128 weston-init: add a native systemd unit file a1fa8d9 python: Fix cross compiling issue c9fdc1b icu: Upgrade 55.1 -> 56.1 95909bc kernel.bbclass: drop unnecessary 'eval' from kernel_do_configure() ec79a19 insane: in libdir test allow libraries in libexecdir 9c0186f rootfs.py: Change logic to unistall packages 23083e7 oeqa/systemd: get runtest target boot time and log c6330a2 oeqa/systemd: journalctl helper function 220a78b scripts: oe-selftest Added new features. 98d2485 oe-buildenv-internal: preserve existing BB_ENV_EXTRAWHITE 9cab798 toolchain-shar-extract.sh: fix ~ not working in path f27401d nativesdk-buildtools-perl-dummy: properly set PACKAGE_ARCH 5e3e2e0 poky.conf: Bump for 2.1 development 7e8ff7b bitbake: toaster: toasterui Add ParseStarted/ParseProgress events to mask f823601 build-appliance-image: Update to master head revision 992e577 linux-yocto: Update genericx86* BSPs to v4.1.13 b4f6950 cmake: Add nios2 support 27b9f04 boost: adjust hard-coded path after python3 upgrade 639cadd sdk.py / OpkgSdk: remove_packaging_data() after install fd4894f devtool: extract: update SRCTREECOVEREDTASKS for kernel 34f1d81 devtool: extract: copy kernel config to srctree 6650357 lib/oe/package_manager: Introducing PACKAGE_FEED_BASE_PATHS/PACKAGE_FEED_ARCHS d7baeb5 selftest/wic.py: Add test for custom bootloader config 8612f26 directdisk-bootloader-config.wks: Add example for custom bootloader config c59dc3b wic/help.py: Document the new option "configfile" 7033873 wic: Allow to use a custom config for bootloaders f95f729 wic/utils/misc.py: Added function to search for files in canned-wks 9773faa wic: Prepare wicboot to allow custom bootloader config 4515186 package_ipk: allow to specify OPKG_ARGS in local.conf 7cf7156 systemd.bbclass: Allow enabling of parameterised services 551cda0 base: check for existing prefix when expanding names in PACKAGECONFIG c093fd8 linux-yocto/4.1: Fix kernel oops on qemuarm boot cda3905 toolchain-shar-extract.sh: ensure cleaned environment will work for ext SDK f9384b0 bitbake: knotty: Enforce terminal line limit to stop crazy scrolling 7a775a1 initramfs-framework: create directory /var/run 2861399 libpcre: drop UPSTREAM_CHECK_ variables 35c28e3 libpcre: upgrade to 8.38 d50ef65 libpng: update 1.6.19 -> 1.6.20 (CVE-2015-8126) 2b736f2 ghostscript: add dependency for pnglibconf.h 976f0e3 package_regex.inc: split the rest of the entries to their recipes 74bfa62 package_regex.inc: split entries which blacklist specific versions to their recipes 75c6929 package_regex.inc: split sourceforge related entries to their own recipes cefeac2 package_regex.inc: split PyPi related entries to their own recipes aa5df2a package_regex.inc: split Debian-related entries into their own recipes 12ba5cc package_regex.inc: split GITTAGREGEX entries into recipe files 642e92f package_regex.inc: split entries with odd-even versioning into their own recipes 96eac69 package_regex.inc: deprecate the file b0bbea5 gstreamer: really fix the helper install race b822216 neard: fix libdir/libexecdir confusion cbfccc6 glibc: fix libdir/libexecdir path confusion d0577f9 sudo: handle libexecdir != libdir/PN. 6f837cc util-linux: Add ptest dbd02bd libav: Correctly handle prefix="" fda9859 libav: Add PACKAGECONFIG options: avdevice, avfilter, avplay, gpl 7ba85f1 libav: Remove deprecated --disable-avserver 2739ed0 busybox: backport upstream fixes for unzip 6decbbb qt4-4.8.7: fix build for mips n32 f1e8938 gstreamer1.0: Convert tests and valgrind config opts to PACKAGECONFIGs 11b9524 cracklib: fix for base_libdir == libdir d9f73ca libbsd: Upgrade to 0.8.0 10d6dc4 libcroco: Upgrade 0.6.8 -> 0.6.9 79b823a shared-mime-info: Upgrade 1.4 -> 1.5 f6ec8a4 xdg-utils: Upgrade to 1.1.1 a3f63f9 gsettings-desktop-schemas: Upgrade 2.16.1 -> 3.18.1 754f6b6 gnome-common: Upgrade 3.14.0 -> 3.18.0 75aba18 clutter-gtk-1.0: Upgrade 1.6.2 -> 1.6.6 c6a6212 clutter-gst-3.0: Upgrade 3.0.8 -> 3.0.14 2da6cd5 clutter-1.0: Upgrade 1.24.2 148c953 cogl-1.0: Upgrade 1.20.0 -> 1.22.0 f54d4e4 ghostscript: Add NIOS2 support 21ba42b harfbuzz: update 1.1.0 -> 1.1.2 058b91e xvideo-tests: move to the latest release 70d459c scripts/oe-pkgdata-util: sort the packages in list-pkg-files 80e3919 wic: insert local Python paths at front 9d788d7 toolchain-scripts.bbclass: unset command_not_found_handle 82ab99f waf.bbclass: remove unused parameter from get_waf_parallel_make() 68d3dfe toolchain-shar-extract.sh: proper fix for additional env setup scripts 0c5d239 base: Improve handling of switching virtual/x providers 3745479 bitbake: bitbake: rename REGEX, REGEX_URI, and GITTAGREGEX. dd282d4 bitbake: toaster: return back 'New project' button 2a8e970 bitbake: toaster: tests Update UI tests to work with 2.0 changes fe8a0a3 bitbake: toaster: tests Automated build-mode backend tests 0497b57 bitbake: toaster: unset environment variables 8b7a548 bitbake: toaster: get rid of complicated heuristics 556b8b6 bitbake: toaster: remove SDKMACHINE from project variables 4186f5b bitbake: toaster: stop using toaster-pre.conf 361faa3 bitbake: toaster: remove writeConfFile API fcbba5a bitbake: toaster: set varibales on bitbake server 993bc7e bitbake: toaster: implement BitbakeController.getVariable 53e981e bitbake: toaster: buildinfohelper Broaden the toaster created recipe data case 57e5f24 bitbake: toaster: do not create duplicate HelpText objects 4c1e5ec bitbake: toaster: remove usage of BUILD_MODE variable 9902895 bitbake: toaster: do not terminate bb server 58765a8 bitbake: toaster: remove stopBBServer API 95a3cf7 bitbake: toaster: reimplemented startBBServer method 76d53b5 bitbake: toaster: remove _setupBE function 87b2f95 bitbake: toaster: implement 'toaster restart-bitbake' 891484a bitbake: toaster: implement start_bitbake function bf25471 bitbake: toaster: implement stop_bitbake function 7c2b225 bitbake: toaster: update brbe and project attributes de812d0 bitbake: toaster: start 'manage.py runbuilds' in the script 28e8ccf bitbake: toaster: make runbuilds to loop a3871a3 bitbake: toaster: use parent of the build dir 2a96d35 bitbake: toaster: check for toaster configuration later d87a534 bitbake: toaster: remove unused variable dc6a489 bitbake: toaster: change toasterconf.json logic to use TEMPLATECONF, like oe-setup-builddir 5a42c2d bitbake: toaster: run bitbake the same way cac91db bitbake: toaster: set DATABASE_URL in toaster script a464bf2 bitbake: toaster: implement get-dburl command e473151 bitbake: toaster: don't allow to run toaster as a script 4de214f bitbake: lib/bb/utils: improve edit_bblayers_conf() handling of bblayers.conf formatting 0debb11 bitbake: lib/bb/utils: fix error in edit_metadata() when deleting first line 9d19dd9 bitbake: wget.py: parse only tags 71ede7b bitbake: toaster: toastergui tests Add generic test for ToasterTables widget 34b22cf bitbake: toaster: tables Fix invalid field name on NewCustomImagesTable 1c59846 bitbake: toaster: tables Add default_orderby field where it was missing or unset d82c541 bitbake: toaster: CustomImageRecipe add search_allowed_fields to this model bdf6241 bitbake: toaster: machines table Fix missing layers information needed for filter b90a8dc bitbake: toaster: tablejs Make sure click handlers consume click event c075bcf bitbake: toaster: projectpage Make sure build targets are space separated 698c74c libsdl: remove redundant configure_tweak patch 35945fd iw: upgrade to version 4.3 15969ae gstreamer1.0-plugins-good: fix PACKAGECONFIG for gudev and add one for v4l2 and libv4l2 e601b38 gstreamer1.0-plugins-bad: fix dependencies for uvch264 PACKAGECONFIG ddf2501 gudev: Add from meta-oe e406fa8 lsb: fix installed-vs-shipped for mips 39ecdce rpm: fix for N32 MIPS64 09b4da6 glibc/0029-fix-getmnt-empty-lines.patch: fix getmntent() 1781a9a init-install-efi: fix script for eMMC installation f808747 init-install-efi: fix script for gummiboot loader 2a55036 linux-firmware: rtl8192cx: Add latest available firmware b60af3b libsdl2: add missing dependency on libxkbcommon for PACKAGECONFIG[wayland] ed31874 libxml2: upgrade to 2.9.3 ecb1c71 libxml2: merge pointless bb/inc split 19a626d openssh: redesign ssh-agent.sh regression test case 81b59e7 gcr: Require x11 DISTRO_FEATURE 934e486 psplash: update to latest git version ccb2a57 sysvinit-inittab: Add wrapper script to verify console exists b7f610d linux-yocto/4.1: Bluetooth:Fix the connection fail of 6lowpan over BT LE d08e761 linux-yocto-rt/4.1: update to -rt15 6aa464c linux-yocto/4.1: fsl-mpc8315e-rdb: Enable EEPROM bd29006 linux-yocto/4.1: update to v4.1.13 5561407 uClibc: enable utmp for shadow compatibility 533fc01 glibc: Backported a patch to fix glibc's bug(18589) 598e372 ncurses: update SRC_URI 51b64ee openssl: enable parallel make 88e45cd busybox: enable resize applet 87de4a1 busybox: disable support for mounting NFS file systems on Linux < 2.6.23 73cc839 busybox: update 1.23.2 -> 1.24.1 f8ac408 busybox: re-order defconfig to align with busybox 1.24.1 3648a37 busybox.inc: remove '-e MAKEFLAGS=' from EXTRA_OEMAKE bf28ea9 busybox.inc: set CC=${CC} via make command line f21dce1 busybox.inc: fix CONFIG_EXTRA_CFLAGS configmangle 6167669 busybox.inc: don't set .config CROSS_COMPILER_PREFIX e1ecccd busybox: move EXTRA_OEMAKE etc into busybox.inc 0e63300 busybox.inc: don't export EXTRA_OEMAKE 3735776 busybox_git: Enable getopt applet b1774f4 harfbuzz: update 1.0.6 -> 1.1.0 31f803a sqlite3: update 3.9.0 -> 3.9.2 7e3474c readline: apply missing upstream patches 99b9d52 readline: prepare for readline6.3 upstream patches e0b6d0c dbus: merge .bb and .inc d99958a pulseaudio: Fix HDMI profile selection 2ba954f initscripts: hide the error in case system is not writeable 4ed84ff nativesdk-buildtools-perl-dummy: fix rebuilding when SDKMACHINE changes b8fdd09 xf86-video-vmware: Add vmwgfx PACKAGECONFIG option dfd5c4d pkgconfig: merge .bb and .inc 61c6887 pkgconfig: upgrade to version 0.29 744e89f ofono: upgrade to version 1.17 996f843 libxml2: remove legacy LDFLAGS += "-ldl" workaround dedabc1 apr: fix LTFLAGS to make it work with ccache 9470956 iproute2: install bridge tool by default 1b8f6a2 lttng-tools: add libgcc to RDEPENDS 22dd6e7 lttng-tools: Upgrade to 2.7 release ef73f21 lttng-tools: Drop unused patch c375976 lttng-ust: Upgrade to 2.7 release f5c1b57 lttng-modules: Upgrade to 2.7 release 8d708a5 libunistring: upgrade to version 0.9.6 f840e59 libtasn1: upgrade to 4.7 012ca02 wpa-supplicant: upgrade to 2.5 872e153 mesa: Make gl libraries RRECOMMEND mesa-megadriver a62fa23 directfb.inc: force bfd linker for armv7a 9b075ca libpng12: update to 1.2.54 6d1eb34 libpng: update to 1.6.19 92a881f orc: update to 0.4.24 2f479b1 libpcap: update to 1.7.4 bd4058f apr-util: add missing RDEPENDS for ptest 1408642 iproute2: update to 4.3.0 e677c25 ruby-native: Depend on openssl-native 9e37812 db: fix race issue for libdb-6.0.la c19036a pango: use ptest-gnome 43b29d9 gst-plugins-bad: improve FILES variables 9fc877f gstreamer1.0-plugins-base: add PACKAGECONFIG for libvisual 7a2bb0d python3: fix building nativesdk-python3 2268a70 python3: Upgrade from 3.4.3 to 3.5 ed8d1be python-git: Add missing dependency dee2a8c guile, mailx, gcc, opensp, gstreamer1.0-libav, libunwind: disable thumb where it fails for qemuarm c0b822f icu: force arm mode f42ef3f rpcbind: Security Advisory - rpcbind - CVE-2015-7236 04034e7 subversion: fix CVE-2015-3187 f91aedf subversion: fix CVE-2015-3184 40cd228 oeqa/sshcontrol: don't source profile d39192a oeqa/runtime/multilib: refactor ELF class extraction cc34104 oe-selftest: Enable code coverage on unit tests 06859de meta/conf/machine: use ' inside quoted values 6be94ec runqemu-internal: Replace wacom-tablet with tablet for usbdevice 0cc3810 recipetool: make plugin registration function name consistent with devtool b381f80 recipetool: add setvar subcommand 1fbd760 lib/oe/recipeutils: refactor patch_recipe_file() to use edit_metadata() 0b850cb devtool: clarify help text 5001f23 devtool: build: enable showing default task in help f79022d devtool: build: use bbappend to set PARALLEL_MAKE 21481bc lib/oe/recipeutils: check in validate_pn() for names instead of filenames 671f41e devtool: ensure we change back to the original dir on error 74505b4 devtool: search: print SUMMARY value 3f46af2 devtool: drop unused plugin_init() functions 176211a devtool: package: use DEPLOY_DIR_ to get deploy directory 0fe7426 devtool: disable creating workspace for extract and search subcommands a360fa7 lib/oe/patch: improve extraction of patch header f79cc4d devtool: upgrade: provide a means to update the source branch b4d4d21 devtool: upgrade: fetch remote repository before checking out new revision 9b7d45c devtool: upgrade: remove erroneous error when not renaming recipe 9a70444 devtool: upgrade: fix updating PV and SRCREV 6a52c73 devtool: upgrade: fix removing other recipes from workspace on reset 44ef78a devtool: include do_patch in SRCTREECOVEREDTASKS 804f5b8 image.py: avoid mkdir race when building multiple images 312862f package_manager.py: define info_dir and status_file when OPKGLIBDIR isn't the default b00f734 image.py: Avoid creating empty .env file in _write_wic_env a88505b lib/oe/terminal: use C locale when determining version 8d784ba toolchain-shar-extract.sh: Ensure it's ran in clean environment 7f3c20f toolchain-shar-extract.sh: do not allow $ in paths for ext SDK 2d21e5d create-pull-request: handle empty ODIR c63b36f scripts/gen-lockedsig-cache: improve output 67af6d6 wic: exec_native_cmd: implement support for pseudo 8ffba25 toolchain-shar-relocate: don't assume last state of env_setup_script is good b8ee7ae sanity: don't enforce DISPLAY for testimage b364183 oeqa/qemurunner: pass nographic to runqemu if DISPLAY isn't set 46755cc base: add automatic dependency on lzip-native for .lz SRC_URI 6ea39c2 base: decode SRC_URI before adding implicit fetch dependencies eded9c2 buildhistory.bbclass: support extending the content of the build history d95df11 license.bbclass: Create image license manifest efdab52 license.bbclass: Add function get_deployed_files cc0d044 license.bbclass: Added function get_deployed_dependencies d45e10e license.bbclass: Added get_boot_dependencies function 8b1e7bc license.bbclass: Split license create manifest 1a210e6 license.bbclass: Write recipeinfo file in license folder 74c7cd5 populate_sdk_ext.bbclass: Be more permissive on the name of the buildtools 5ba6382 populate_sdk_base: Add sysroot symlink check 7fed655 classes/populate_sdk_ext: fail if SDK_ARCH != BUILD_ARCH 2948169 classes/populate_sdk_ext: tweak reporting of workspace exclusion 28a2ea7 classes/populate_sdk_ext: make it clear when SDK installation has failed 124c6aa classes/populate_sdk_ext: tidy up preparation log file writing d348624 boot-directdisk.bbclass: remove HDDIMG before create 03f15e5 sstate: Ensure siginfo and sig files are also touched 615ccae weston: Add PACKAGECONFIG option for colord CMS cdad67c opkg: add cache filename length fixes 2ec77de openjade-native: statically link local libs 29747d4 sysklogd: inhibit updatercd for non-sysvinit add3451 connman: depend on readline 7a557a2 latencytop: obey LDFLAGS 8aeec87 tcf-agent: obey LDFLAGS 9025d2e blkspace: fix ldflags for iowatcher 1732a8a bluez5: enable sysvinit support 160fdd8 sysprof: use packageconfig for the gui 425d020 mc: upgrade to 4.8.15 7386647 packagegroup-core-directfb: Don't depend on pango-modules ac5ed8e xkeyboard-config: Upgrade 2.15 -> 2.16 3a71fab xkbcomp: Upgrade 1.3.0 -> 1.3.1 b7cb308 xinput: Upgrade 1.6.1 -> 1.6.2 05eca73 xf86-video-omap: Upgrade 0.4.3 -> 0.4.4 cfcc5e5 xf86-input-synaptics: Upgrade 1.8.2 -> 1.8.3 4c9256f xf86-input-evdev: Upgrade 2.9.2 -> 2.10.0 96ddcc5 xorg-driver-input: add xorg configuration to FILES a1003f5 xserver-xorg: Upgrade 1.17.2 -> 1.18.0 a336b8a libxcb: Remove unused git-version of the recipe 05ba0db libxcb: Upgrade 1.11 -> 1.11.1 44233d3 pixman: Upgrade 0.32.6 -> 0.32.8 7ab0466 libxi: Upgrade 1.7.4 -> 1.7.5 63feef0 gtk-icon-utils-native: Upgrade 3.16.6 -> 3.18.2 38924d9 package_regex.inc: Add gtk-icon-utils-native 060b482 gtk+3: Upgrade 3.16.6 -> 3.18.2 4f3d2b3 adwaita-icon-theme: Upgrade 3.16.2.1 -> 3.18.0 c8849ac librsvg: Upgrade 2.40.10 -> 2.40.11 81769ca pango: add RPROVIDES for removed packages c9b06f5 pango: Upgrade 1.36.8 -> 1.38.1 ced8d49 gdk-pixbuf: Upgrade 2.30.8 -> 2.32.1 918c773 libsoup-2.4: Upgrade 2.50.0 -> 2.52.1 5bd9305 at-spi2-atk: Upgrade 2.16.0 -> 2.18.1 8eb0c8f atk-spi2-core: Upgrade 2.16.0 -> 2.18.1 78130eb atk: Upgrade 2.16.0 -> 2.18.0 e7141ab glib-networking: Upgrade 2.44.0 -> 2.46.1 fcd7494 glib-2.0: build dependency cleanup 5357764 glib-2.0: Enable more tests while cross-compiling 1e271af glib-2.0: Upgrade 2.44.1 -> 2.46.1 bc1be07 qemu: Backport malloc-trace disabling bca5a7a logrotate: do not move binary logrotate to /usr/bin 0069c0d systemd: drop unneeded $D check in prerm cd1f2b4 systemd: chown hwdb.bin to root:root for do_rootfs 7ca8cd9 systemd: for valgrind, define VALGRIND=1 46fa8ab systemd: make coredump a PACKAGECONFIG ac34784 systemd: add machine-id to conffiles 04937cc systemd: ignore .so filenames in systemd-doc 6821854 systemd: fix Upstream-Status tag 82107b1 mdadm: fix CFLAGS and ptest issues d8adfd2 gcc-4.9: Fix various _FOR_BUILD and related variables 8ae27fa devtool: add sync command 6bfa1dc boost.inc: remove unused parameter from get_boost_parallel_make() 16d7bfd wireless-tools: remove unused files ee923bf gstreamer1.0: fix install race 0ae52c8 gcc-multilib-config: make aarch64 support multilib 8514d21 libxml2: fix CVE-2015-7942 and CVE-2015-8035 e864f71 terminal: Open a new window instead of split on older tmux versions (<1.9) 5056581 flex: fix test-bison-yylval and test-bison-yylloc failed c54540e gdbm 1.8.3: install libgdbm_compat b9f87ed harfbuzz: update to 1.0.6 3f75537 ethtool: bump version to 4.2 9a4da3c openssl: fix ptest issues 9163a5d base-files: stage /etc/skel d60c5ff mktemp: raise the priority to avoid conflicting with coreutils b06eacd libunwind: fix build for qemuarm c4acace gma500_gfx: Avoid inserting gma500_gfx module for certain devices 6c3f680 libsndfile: fix CVE-2014-9756 aa07eb1 python-pycurl: update version to 7.19.5.2 696aa7e rt-tests: upgrade to version 0.96 6ec7dc2 rpcbind: don't use '-w' for starting rpcbind eddd88f libsecret: add dependency on intltool-native 2e8efb1 openssl: use subdir= instead of moving files in do_configure_prepend() 036d2dc openssl: sanity check that the bignum module is present cf366d8 libsdl2: require GLES when building Wayland support 4b38be6 meta: add some missing Upstream-Status tags to patches 42c75cd weston: delete unused patch 521fac6 glibc: fix Upstream-Status tag 44a7bbc linux-firmware: package Broadcom BCM4339 firmware f9d51cd libusb1: fix make install race cb01f6d libusb1: upgrade from 1.0.19 to 1.0.20 b4e6f63 perl: fix spaces in brackets while using CC version a59d019 u-boot: Update to 2015.10 release e67c5b0 bitbake-prserv-tool: check file name 4e2c5e1 recipetool.append: don't choke on a trailing ; in a url a35f79d yocto-bsp: Set SRCREV meta/machine revisions to AUTOREV 9d585b5 yocto-bsp: Set KTYPE to user selected base branch 1542c2a yocto-bsp: Typo on the file extension f674ffa yocto-bsp: Avoid duplication of user patches ({{=machine}}-user-patches.scc) 49a465c package_manager.py: Delete installed_pkgs.txt file ace895d rootfs.py: Stop using installed_pkgs.txt ccb1616 lib/oe/distro_check: don't set empty proxy keys 8137a84 lib/oe/copy_buildsystem: Don't expand BB_TASKDEPDATA a6c68d8 oeqa/selftest/sstatetests: prettier output for allarch test 92328b4 oeqa/selftest/signing: Added new test for signing sstate. fbb03a8 oeqa/selftest/signing: New test for Signing packages in the package feeds. 13a4c38 qemu.bbclass: fix vardeps of QEMU_OPTIONS 51bd011 qemu.bbclass: correct the fsl ppc QEMU_EXTRAOPTIONS 753f31e autotools: Allow recipe-individual configure scripts e281791 allarch: Force TARGET_*FLAGS variable values e28e17e distro/maintainers.inc: include stress package details 76d2e46 image_types: improve wks path specification 70ae7a6 insane.bbclass: Avoid libdir QA check if PACKAGE_DEBUG_SPLIT_STYLE='debug-file-directory' cf0dfdb classes/cpan-base: fix libdir for nativesdk a205c4c bbclass: fix spelling mistakes cf218e5 rootfs_*.bbclass: don't add BUILDNAME to do_rootfs vardepsexclude 7d8616c insane: Don't depend on BB_TASKDEPDATA a9cc27e kernel: fix race condition between compile_kernelmodules and shared_workdir fecb077 classes: Ensure pass setVar/setVarFlag strings, not integers 9167f20 classes/license: fix intermittent license collection warning 43c8867 classes/metadata_scm: fix git errors showing up on non-git repositories 59b27d5 sstate: respect GPG_BIN and GPG_HOME 4415dc5 archiver.bbclass: add bbappend when do_ar_recipe kernel and gcc packages 2f0ff3a archiver.bbclass: fix previous issue regarding work-shared for linux-yocto 0cc4eef waf.bbclass: filter out non -j from PARALLEL_MAKE 95719b0 ptest-gnome: extend EXTRA_OECONF in all builds, not just target 1b25a70 yocto-project-qs, ref-manual, poky.ent: CentOS Package updates 2e649d7 dev-manual: Updated runqemu command options list bd62289 toaster-manual: Removed SDKMACHINE from the json file example. c674cd7 ref-manual: Updated list of supported distros. 33d8cff ref-manual: Updated the GCC 5 migration section for 2.0 d9aabf9 gcc: Drop 4.8 2cb1aee layer.conf: Correct gcc-cross dependency 88f9310 bitbake: toaster: builds pages Fix the download cooker log link d04af8b bitbake: toaster: project pages Link to image recipes table in notifications 70465c7 bitbake: toaster: tests: Re-write some cases to make them more maintainable 536b73f bitbake: data_smart: Only support lowercase OVERRIDES fb01a66 bitbake: fetch2: Remove crazy code in unpack 7db88aa bitbake: parse: Don't try to expand __base_depends/__depends 4c04ce0 bitbake: cache: Don't try to expand __inherit_data 9d8e36a bitbake: toaster: localhostbectrl Pass DATABASE_URL in via the process environment 4677d8b bitbake: toaster: Remove the new-build-input button widget 55f4494 bitbake: toaster: projecttopbar Use the project in context to get num builds e9d4962 bitbake: toaster: projectpage Disable/Enable build input if we have 0 layers 5fa4c73 bitbake: toaster: orm Fix get_number_of_builds to count all apart from IN_PROGRESS c4032f4 bitbake: codeparser: Only load the codeparser cache once e3b66c1 maintainers: mass reassign and cleanup 37ddd3e Revert "local.conf.sample: Disable image-prelink by default" 9cc221d yocto-bsp: Default kernel version to 4.1 on x86_64 7100c42 scripts: runqemu: remove QEMUARCH from help message f47e4ad cairo: update 1.14.2 -> 1.14.4 603b4de cairo.inc: drop obsolete CFLAGS += "-ffat-lto-objects" workaround e8833a6 cmake: update 3.3.1 -> 3.3.2 8b2b068 oe-selftest: add test for bitbake-layers show-recipes 480bbae oeqa/selftest/layerappend: fix test if build directory is not inside COREBASE a301f6e oeqa/selftest/devtool: fix test if build directory is not inside COREBASE fd6bf77 classes/distrodata: split SRC_URI properly before determining type 7cebff6 classes/buildhistory: split package history values only once 10fc534 conf/distro/include: drop old recipes from include files 37cfd80 gitignore: fix overzealous exclusion 1f6599b meta: Fix typos in Upstream-Status labels 7cace4c meta/conf/layer.conf: fix typo ca8e1e5 texinfo-dummy-native: set SUMMARY instead of DESCRIPTION 64cd113 gstreamer1.0-meta-base: set SUMMARY instead of DESCRIPTION 1d42d59 mmc-utils: set SUMMARY instead of DESCRIPTION 6692540 swig: set SUMMARY instead of DESCRIPTION 47ae8eb alsa-plugins: set SUMMARY instead of DESCRIPTION eac5fa9 tzcode-native: set SUMMARY instead of DESCRIPTION 0a30a1f linux-yocto.inc: set SUMMARY instead of DESCRIPTION 19e1a73 python-nose: add SUMMARY b5f58c1 stress: add SUMMARY 5f9392a libunwind: add SUMMARY 1460e01 gptfdisk: add SUMMARY 0821c36 verify-homepage: fix recipe file selection 0c48921 verify-homepage: tidy up output and comments 0e348e7 verify-homepage: get expanded HOMEPAGE value caaca00 verify-homepage: use scriptpath to find bitbake path 649b6bc libaio: don't disable linking to the system libraries 11a9c24 runqemu: don't specify IP when starting a VNC server 3b95964 qemurunner: Remove the timeout in run_serial bbd6d07 libxslt: CVE-2015-7995 a0d2ea9 gstreamer1.0-rtsp-server: upgrade to version 1.6.1 2459ec2 gstreamer1.0-libav: upgrade to version 1.6.1 bce06e7 gstreamer1.0-plugins-ugly: upgrade to version 1.6.1 0ec3c62 gstreamer1.0-plugins-bad: upgrade to version 1.6.1 ba1bc63 gstreamer1.0-plugins-good: upgrade to version 1.6.1 4a55d12 gstreamer1.0-plugins-base: upgrade to version 1.6.1 8360f23 gstreamer1.0: upgrade to version 1.6.1 8800033 prelink: Fix various prelink issues on IA32, ARM, and MIPS. 920fb96 gcc: Update default Power GCC settings to use secure-plt 7b1763a glibc: Fix ld.so / prelink interface for ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA e63e191 qemurunner: Enable timestamps on kernel boot-up a1ca788 openssl: fix mips64 configure support 5a10a6f at: modify sources in do_patch 78e0598 unzip: rename patch to reflect CVE fix b80935a readline: rename patch to contain CVE reference 86d84ff qemu: upgrade to 2.4.0.1 4f0d756 gnome-desktop-testing: fix ptest output format 834de84 default-distrovars: remove less from WHITELIST_GPL-3.0 29bba95 lsof: don't export EXTRA_OEMAKE 3d37768 cmake.bbclass: don't duplicate CMAKE_C_FLAGS in CMAKE_C_FLAGS_RELEASE efc07c2 rm_work.bbclass: Exclude do_rootfs stamp removal 5f9d16b cairo: fix license for cairo-script-interpreter 7328479 openssh: enable X11Forwarding if distro feature x11 is set adeb820 acpid: Upgrade to 2.0.25 781dfd8 libidn: 1.30 -> 1.32 351c69a sqlite: 3.8.10.2 -> 3.9.0 c0fe43c rt-tests: bump to v0.94 cf972f9 gbm: Fix "configure: error: gbm requires --enable-dri" 17733cc xinetd: install xinetd supported services configuration aa1844e combo-layer: introduce ability to exclude component from mass update dcc446f linux-dtb.inc: refactor common code to function get_real_dtb_path_in_kernel af9c7a4 linux-dtb.inc: refactor common code to function normalize_dtb 7eecb81 linux-dtb.inc: explicit test for empty string not needed 54df911 ptest-runner: Allow running of specific tests 54325b2 oeqa/testimage: Add support for test folder export. ecbe135 oeqa/runtime/multilib: run the arch tests on connmand not connman-applet 2d1071e oeqa/runtime: remove dmesg test 42a5378 nfs-utils/statd: fix a segfault 77e3246 qemu: enable user mode for mips64 and mips64el 70600fb gnupg: fix find-version for beta checking ab123ef rpm: define EM_AARCH64 for debugedit af8c136 xserver-xorg: drop empty ${PN}-security-policy package b667067 xserver-xorg: add Xwayland RRECOMMENDS 80f4d71 weston: add a PACKAGECONFIG option for xwayland support 883ab0f systemd: make dbus an optional build time dependency 2c5047f weston: add PACKAGECONFIG to build with systemd-login support 65ffeb5 systemd: add PACKAGECONFIG to build with compatibility libraries 4b29c80 os-release: put double-quotes around variable contents 0f516a5 cpio: fix testcase symlink-bad-lengths [ LIN8-947 ] bceb9cb cpio: Fix symlink-bad-length test for 64-bit [ LIN8-947 ] architectures. 0ff3fc7 gtk+3: fix ALTERNATIVE_PRIORITY conflict with gtk+ eca12a6 coreutils: fix ALTERNATIVE_PRIORITY conflict with procps and mktemp 8de5315 util-linux: fix ALTERNATIVE_PRIORITY conflict with ncurses procps and e2fsprogs 3befb43 console-tools: fix ALTERNATIVE_PRIORITY conflict with kbd 5385ea8 debianutils: fix ALTERNATIVE_PRIORITY conflict with which 3a0bd40 linux-dtb.inc: use same variable name DTB for all elements of KERNEL_DEVICETREE a879312 linux-dtb.inc: remove unneeded 'cd' a23d1ca webkitgtk: Add upstream patch to fix build problem 69836e8 python: don't append -D__SOFTFP__ to TARGET_CC_ARCH for armv6/armv7a 38d1d63 prexport.bbclass: avoid export for native and crosssdk d3da006 recipes: add distro_features_check for some packages 63690f0 scons.bbclass: SCons packages don't require do_configure bffdc65 busybox: Schedule mdev after mountall 13ce7c2 busybox: Fix mdev block device automounting b09f0f2 libarchive: rename patch to reflect CVE 116360f binutils: Fix XLP / Octeon 3 instruction clash fd4f4d2 binutils: Fix octeon3 disassembly patch REVERT: b1f23d1 build-appliance-image: Update to jethro head revision REVERT: 7fe17a2 qemu: Security fix CVE-2016-2198 REVERT: 50700a7 qemu: Security fix CVE-2016-2197 REVERT: 1f0e615 libgcrypt: Security fix CVE-2015-7511 REVERT: dc5f155 uclibc: Security fix CVE-2016-2225 REVERT: ef13511 uclibc: Security fix CVE-2016-2224 REVERT: ae57ea0 libbsd: Security fix CVE-2016-2090 REVERT: eb9666a glibc: Security fix CVE-2015-7547 REVERT: 5b12268 build-appliance-image: Update to jethro head revision REVERT: a3a374a curl: Secuirty fix CVE-2016-0755 REVERT: f4341a9 curl: Security fix CVE-2016-0754 REVERT: 35f4306 nettle: Security fix CVE-2015-8804 REVERT: 3e8a07b nettle: Security fix CVE-2015-8803 and CVE-2015-8805 REVERT: 5ffc326 socat: Security fix CVE-2016-2217 REVERT: 5cc5f99 libpng: Security fix CVE-2015-8472 REVERT: 21a816c libpng: Security fix CVE-2015-8126 REVERT: 6a0fbfa foomatic-filters: Security fixes CVE-2015-8327 REVERT: d57aaf7 foomatic-filters: Security fix CVE-2015-8560 REVERT: 941874a build-appliance-image: Update to jethro head revision REVERT: d74a3cb cross-localedef-native: add ABI breaking glibc patch REVERT: 12fae23 build-appliance-image: Update to jethro head revision REVERT: 67ac9d6 e2fsprogs: Ensure we use the right mke2fs.conf when restoring from sstate REVERT: 5812fc9 build-appliance-image: Update to jethro head revision REVERT: 3de2492 ref-manual: Updated host package install requirements CentOS REVERT: 79de8cf toaster-manual: Updated the "Installation" to have TOASTER_DIR information REVERT: a23d262 toaster-manual: Updated instructions for production setup. REVERT: b6def81 linux-yocto: Update SRCREV for genericx86* for 4.1, fixes CVE-2016-0728 REVERT: db0f8ac linux-yocto: Update SRCREV for genericx86* for 3.19, fixes CVE-2016-0728 REVERT: c8122a0 linux-yocto: Update SRCREV for genericx86* for 3.14, fixes CVE-2016-0728 REVERT: cdeb241 meta-yocto-bsp: Remove uvesafb (v86d) from generic x86 features REVERT: 52cd219 yocto-bsp: Set SRCREV meta/machine revisions to AUTOREV REVERT: a88d6cb yocto-bsp: Set KTYPE to user selected base branch REVERT: 4e74b36 yocto-bsp: Avoid duplication of user patches ({{=machine}}-user-patches.scc) REVERT: 6680773 yocto-bsp: Default kernel version to 4.1 on x86_64 REVERT: 4c075e7 piglit: don't use /tmp to write generated sources to REVERT: ee52ac6 gen-lockedsig-cache: fix bad destination path joining REVERT: e9f95df linux-yocto: Update SRCREV for qemux86* for 4.1, fixes CVE-2016-0728 REVERT: e63bab1 linux-yocto: Update SRCREV for qemux86* for 3.19, fixes CVE-2016-0728 REVERT: 64a4920 linux-yocto: Update SRCREV for qemux86* for 3.14, fixes CVE-2016-0728 REVERT: 5b043da libpng12: update URL that no longer exists REVERT: 655c8a5 libpng: update URL that no longer exists REVERT: 96fda8c busybox: fix build of last applet REVERT: ae037d9 ghostscript: add dependency for pnglibconf.h REVERT: 26eb877 gcr: Require x11 DISTRO_FEATURE REVERT: e632cdb uClibc: enable utmp for shadow compatibility REVERT: e8c9613 git: Security fix CVE-2015-7545 REVERT: 108ea6d glibc-locale: fix QA warning REVERT: 9a88c1d grub: Security fix CVE-2015-8370 REVERT: 443b09a gdk-pixbuf: Security fix CVE-2015-7674 REVERT: 6c91068 librsvg: Security fix CVE-2015-7558 REVERT: 9fd2349 bind: Security fix CVE-2015-8461 REVERT: 5a40d9f bind: Security fix CVE-2015-8000 REVERT: 1bbf183 libxml2: Security fix CVE-2015-8710 REVERT: 2ec6d1d libxml2: Security fix CVE-2015-8241 REVERT: 55aafb5 dpkg: Security fix CVE-2015-0860 REVERT: 029948b tzdata: update to 2016a REVERT: 2bcf141 tzcode: update to 2016a REVERT: cc3a391 kernel-yocto: fix checkout bare-cloned kernel repositories REVERT: 049be17 libpcre: bug fixes include security REVERT: 5e94ac7 qemu: Security fix CVE-2015-7295 REVERT: 7ee1828 qemu: Security fix CVE-2016-1568 REVERT: ca6ec2e qemu: Security fix CVE-2015-8345 REVERT: b55a677 qemu: Security fix CVE-2015-7512 REVERT: 4922f47 qemu: Security fix CVE-2015-7504 REVERT: 3ec0e95 qemu: Security fix CVE-2015-8504 REVERT: 942ce53 openssl: Security fix CVE-2016-0701 REVERT: ce8ae1c openssl: Security fix CVE-2015-3197 REVERT: 080e027 tiff: Security fix CVE-2015-8784 REVERT: c6ae9c1 tiff: Security fix CVE-2015-8781 REVERT: 049b7db bind: CVE-2015-8704 and CVE-2015-8705 REVERT: d632a92 rpmresolve.c: Fix unfreed pointers that keep DB opened REVERT: 5b993ed openssh: CVE-2016-1907 REVERT: 27ee5b4 glibc: CVE-2015-8776 REVERT: a4134af glibc: CVE-2015-9761 REVERT: e10ec6f glibc: CVE-2015-8779 REVERT: a5a965d glibc: CVE-2015-8777.patch REVERT: 2fb7ee2 bitbake: toaster: make runbuilds loop REVERT: b9ad87b nativesdk-buildtools-perl-dummy: Bump PR REVERT: 0a1c63a nativesdk-buildtools-perl-dummy: properly set PACKAGE_ARCH REVERT: d4b400e nativesdk-buildtools-perl-dummy: fix rebuilding when SDKMACHINE changes REVERT: 8c8c4ed Revert "gstreamer1.0-plugins-good.inc: add gudev back to PACKAGECONFIG" REVERT: b832202 Revert "gstreamer: Deal with merge conflict which breaks systemd builds" REVERT: dd0ba9e build-appliance-image: Update to jethro head revision REVERT: 325d205 gstreamer: Deal with merge conflict which breaks systemd builds REVERT: 53b114b build-appliance-image: Update to jethro head revision REVERT: 02be35d poky.conf: Bump version for 2.0.1 jethro release REVERT: f5551f8 ref-manual: Updated the list of supported image types. REVERT: aa179ae dev-manual: Added three new wic option descriptions. REVERT: 20007c8 dev-manual: Added the --overhead-factor wic option description. REVERT: 2dd7f46 dev-manual: Added the --extra-space wic option description. REVERT: 81cc737 dev-manual: Added wic --notable option description. REVERT: 2b1dce5 dev-manual: REVERT: a6f5293 kernel/kernel-arch: Explicitly mapping between i386/x86_64 and x86 for kernel ARCH REVERT: e79a538 openssh: update to 7.1p2 REVERT: b171076 devtool: reset: do clean for multiple recipes at once with -a REVERT: 255115f devtool: sdk-update: fix error checking REVERT: 3f69105 devtool: sdk-update: fix metadata update step REVERT: 5ba94af devtool: sdk-update: fix not using updateserver config file option REVERT: d03d145 classes/populate_sdk_ext: disable signature warnings REVERT: 00ff950 classes/populate_sdk_ext: fix cascading from preparation failure REVERT: 22446c6 scripts/oe-publish-sdk: add missing call to git update-server-info REVERT: 8597a61 devtool: use cp instead of shutil.copytree REVERT: 95cc641 buildhistory: fix not recording SDK information REVERT: 84d48ac recipetool: create: fix error when extracting source to a specified directory REVERT: 4369329 recipetool: create: detect when specified URL returns a web page REVERT: 4c3191f recipetool: create: prevent attempting to unpack entire DL_DIR REVERT: caca77e recipetool: create: fix do_install handling for makefile-only software REVERT: 383159e recipetool: create: avoid traceback on fetch error REVERT: be40baa recipetool: create: handle https://....git URLs REVERT: a897bfd devtool: sdk-update: fix traceback without update server set REVERT: 9c4b61e classes/populate_sdk_ext: error out of install if buildtools install fails REVERT: 4c07dd2 gstreamer1.0-plugins-good.inc: add gudev back to PACKAGECONFIG REVERT: 83b72d8 linux-yocto: Update Genericx86* BSP to 4.1.15 kernel REVERT: 44639bd libaio: don't disable linking to the system libraries REVERT: a0be9bd linux-yocto/4.1: update to v4.1.15 REVERT: 53f0290 libxml2: security fix CVE-2015-5312 REVERT: f4b0c49 libxml2: security fix CVE-2015-8242 REVERT: fb409c9 libxml2: security fix CVE-2015-7500 REVERT: 55d097a libxml2: security fix CVE-2015-7499 REVERT: 8e6b2d6 libxml2: security fix CVE-2015-7497 REVERT: 332eb1d libxml2: security fix CVE-2015-7498 REVERT: cbc4e83 libxml2: security fix CVE-2015-8035 REVERT: c4b71e1 libxml2: security fix CVE-2015-7942 REVERT: fdea03d libxml2: security fix CVE-2015-8317 REVERT: 6fc1109 libxml2: security fix CVE-2015-7941 REVERT: 9eb4ce0 openssl: fix for CVE-2015-3195 REVERT: 6880f82 openssl: fix for CVE-2015-3194 REVERT: 7dcaa84 openssl: fix for CVE-2015-3193 REVERT: 435139b logrotate: do not move binary logrotate to /usr/bin REVERT: 5f49c0a cairo: fix license for cairo-script-interpreter REVERT: a29ec81 glibc: Fix ld.so / prelink interface for ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA REVERT: b1e980f gcc: Update default Power GCC settings to use secure-plt REVERT: ed82690 prelink: Fix various prelink issues on IA32, ARM, and MIPS. REVERT: 9a620da autotools: Allow recipe-individual configure scripts REVERT: f828071 toolchain-scripts.bbclass: unset command_not_found_handle REVERT: 49858bd devtool: upgrade: fetch remote repository before checking out new revision REVERT: d213452 devtool: upgrade: remove erroneous error when not renaming recipe REVERT: fec97f6 devtool: upgrade: fix updating PV and SRCREV REVERT: 3b4f659 devtool: upgrade: fix removing other recipes from workspace on reset REVERT: 61a7de0 devtool: include do_patch in SRCTREECOVEREDTASKS REVERT: 82c0072 toolchain-shar-extract.sh: do not allow $ in paths for ext SDK REVERT: f181e72 scripts/gen-lockedsig-cache: improve output REVERT: 4b5d4ca toolchain-shar-extract.sh: proper fix for additional env setup scripts REVERT: d2ea8f1 toolchain-shar-relocate: don't assume last state of env_setup_script is good REVERT: 02ef437 populate_sdk_ext.bbclass: Be more permissive on the name of the buildtools REVERT: 3653b17 classes/populate_sdk_ext: fail if SDK_ARCH != BUILD_ARCH REVERT: 8879571 classes/populate_sdk_ext: tweak reporting of workspace exclusion REVERT: eeda3c6 classes/populate_sdk_ext: make it clear when SDK installation has failed REVERT: dee9fbe classes/populate_sdk_ext: tidy up preparation log file writing REVERT: d001d46 classes/license: fix intermittent license collection warning REVERT: 777451c classes/metadata_scm: fix git errors showing up on non-git repositories REVERT: cb0ca72 oeqa/selftest/layerappend: fix test if build directory is not inside COREBASE REVERT: 8970ad6 oeqa/selftest/devtool: fix test if build directory is not inside COREBASE REVERT: 4f7fdd0 classes/distrodata: split SRC_URI properly before determining type REVERT: 3b7df55 uninative.bbclass: Choose the correct loader based on BUILD_ARCH REVERT: f3d7c3f openssl: sanity check that the bignum module is present REVERT: 96b1b5c glibc: Backported a patch to fix glibc's bug(18589) REVERT: 7aecb57 directfb.inc: force bfd linker for armv7a REVERT: 75ca2c8 texinfo: don't create dependency on INHERIT variable REVERT: 02c7b3f package_manager.py: define info_dir and status_file when OPKGLIBDIR isn't the default REVERT: 003c94f libsdl2: require GLES when building Wayland support REVERT: ad6db01 gst-plugins-bad: add PACKAGECONFIGs for voamrwbenc, voaacenc, resindvd REVERT: f0d87fe gstreamer1.0-plugins-good: fix PACKAGECONFIG for gudev and add one for v4l2 and libv4l2 REVERT: 35f34a6 gstreamer1.0-plugins-bad: fix dependencies for uvch264 PACKAGECONFIG REVERT: 3b77e20 gstreamer1.0-plugins-{base,good}: update PACKAGECONFIGs REVERT: e2d4412 libunwind: fix build for qemuarm REVERT: ef69078 guile, mailx, gcc, opensp, gstreamer1.0-libav, libunwind: disable thumb where it fails for qemuarm REVERT: 4700e40 icu: force arm mode REVERT: 743ee04 libxcb: Add a workaround for gcc5 bug on mips REVERT: 8a3deca bitbake: fetch: use orig localpath when calling orig method REVERT: 0073b23 yocto-bsp: Typo on the file extension REVERT: 71dbbcd bsp-guide: Updated the license statement. REVERT: 41f1026 dev-manual: Correction to the KVM stuff in the runqemu commands. REVERT: 38e3c6e mega-manual: Added four new figures for GUI example. REVERT: b99ec28 poky.ent: Fixed POKYVERSION variable. REVERT: c670dc7 yocto-project-qs, ref-manual, poky.ent: CentOS Package updates REVERT: b968190 dev-manual: Updated runqemu command options list REVERT: 1278753 toaster-manual: Removed SDKMACHINE from the json file example. REVERT: 7b25b70 ref-manual: Updated list of supported distros. REVERT: d9423fb ref-manual: Updated the GCC 5 migration section for 2.0 REVERT: 347347a bitbake: lib/bb/utils: improve edit_bblayers_conf() handling of bblayers.conf formatting REVERT: 5935783 bitbake: lib/bb/utils: fix error in edit_metadata() when deleting first line REVERT: 7fdad70 rpcbind: Security Advisory - rpcbind - CVE-2015-7236 REVERT: 0cb2fa5 subversion: fix CVE-2015-3187 REVERT: 5b52e9b subversion: fix CVE-2015-3184 REVERT: 59bdde4 linux-firmware: rtl8192cx: Add latest available firmware REVERT: 8ad2bcc init-install-efi: fix script for gummiboot loader REVERT: c3087bd init-install-efi: fix script for eMMC installation REVERT: d2bf9fb pulseaudio: Fix HDMI profile selection REVERT: 0556c58 allarch: Force TARGET_*FLAGS variable values REVERT: e683dac libsndfile: fix CVE-2014-9756 REVERT: 092757e libxslt: CVE-2015-7995 REVERT: dab5555 unzip: rename patch to reflect CVE fix REVERT: 1753d4a readline: rename patch to contain CVE reference REVERT: 9dd3422 libarchive: rename patch to reflect CVE REVERT: 1401976 binutils: Fix octeon3 disassembly patch REVERT: a54a0db opkg: add cache filename length fixes git-subtree-dir: yocto-poky git-subtree-split: 8358e543ab95a1d2b1d19c1e944275daa17378c1 Signed-off-by: Patrick Williams --- .../meta/recipes-core/uclibc/uclibc-config.inc | 1 + yocto-poky/meta/recipes-core/uclibc/uclibc-git.inc | 22 +- ...-AT_EMPTY_PATH-for-all-and-O_PATH-for-arm.patch | 42 - ...zes-away-the-write-only-static-functions-.patch | 51 - .../uclibc/uclibc-git/0001-wire-in-syncfs.patch | 49 - ...-Add-implementation-for-copysignl-for-ppc.patch | 125 - .../uclibc-git/0003-Add-argp-implementation.patch | 5811 -------------------- ...t-localised-optimizations-this-helps-to-h.patch | 30 - .../0005-Always-use-O2-for-compiling-fork.c.patch | 33 - ...-ldso-limited-support-for-ORIGIN-in-rpath.patch | 233 - ...rk-Hide-pthread_atfork-in-shared-versions.patch | 35 - .../uclibc/uclibc-git/CVE-2016-2224.patch | 49 - .../uclibc/uclibc-git/CVE-2016-2225.patch | 32 - .../recipes-core/uclibc/uclibc-git/uClibc.distro | 4 +- .../meta/recipes-core/uclibc/uclibc-package.inc | 3 +- yocto-poky/meta/recipes-core/uclibc/uclibc.inc | 22 +- 16 files changed, 22 insertions(+), 6520 deletions(-) delete mode 100644 yocto-poky/meta/recipes-core/uclibc/uclibc-git/0001-fcntl-Add-AT_EMPTY_PATH-for-all-and-O_PATH-for-arm.patch delete mode 100644 yocto-poky/meta/recipes-core/uclibc/uclibc-git/0001-gcc5-optimizes-away-the-write-only-static-functions-.patch delete mode 100644 yocto-poky/meta/recipes-core/uclibc/uclibc-git/0001-wire-in-syncfs.patch delete mode 100644 yocto-poky/meta/recipes-core/uclibc/uclibc-git/0002-Add-implementation-for-copysignl-for-ppc.patch delete mode 100644 yocto-poky/meta/recipes-core/uclibc/uclibc-git/0003-Add-argp-implementation.patch delete mode 100644 yocto-poky/meta/recipes-core/uclibc/uclibc-git/0004-Dont-support-localised-optimizations-this-helps-to-h.patch delete mode 100644 yocto-poky/meta/recipes-core/uclibc/uclibc-git/0005-Always-use-O2-for-compiling-fork.c.patch delete mode 100644 yocto-poky/meta/recipes-core/uclibc/uclibc-git/0006-ldso-limited-support-for-ORIGIN-in-rpath.patch delete mode 100644 yocto-poky/meta/recipes-core/uclibc/uclibc-git/0007-nptl-atfork-Hide-pthread_atfork-in-shared-versions.patch delete mode 100644 yocto-poky/meta/recipes-core/uclibc/uclibc-git/CVE-2016-2224.patch delete mode 100644 yocto-poky/meta/recipes-core/uclibc/uclibc-git/CVE-2016-2225.patch (limited to 'yocto-poky/meta/recipes-core/uclibc') diff --git a/yocto-poky/meta/recipes-core/uclibc/uclibc-config.inc b/yocto-poky/meta/recipes-core/uclibc/uclibc-config.inc index 8b9e41c64..ed7b52226 100644 --- a/yocto-poky/meta/recipes-core/uclibc/uclibc-config.inc +++ b/yocto-poky/meta/recipes-core/uclibc/uclibc-config.inc @@ -119,6 +119,7 @@ def features_to_uclibc_settings(d): uclibc_cfg('thumb-interwork', distro_features,'USE_BX', cnf, rem) uclibc_cfg('xattr', distro_features, 'UCLIBC_HAS_XATTR', cnf, rem) uclibc_cfg('ssp', distro_features, 'UCLIBC_HAS_SSP', cnf, rem) + uclibc_cfg('ssp', distro_features, 'UCLIBC_BUILD_SSP', cnf, rem) uclibc_cfg('argp', distro_features, 'UCLIBC_HAS_ARGP', cnf, rem) uclibc_cfg('libc-posix-clang-wchar', distro_features,'UCLIBC_HAS_WCHAR', cnf, rem) return "\n".join(cnf), "\n".join(rem) diff --git a/yocto-poky/meta/recipes-core/uclibc/uclibc-git.inc b/yocto-poky/meta/recipes-core/uclibc/uclibc-git.inc index b7184794d..a56fa7cb6 100644 --- a/yocto-poky/meta/recipes-core/uclibc/uclibc-git.inc +++ b/yocto-poky/meta/recipes-core/uclibc/uclibc-git.inc @@ -1,25 +1,17 @@ -SRCREV = "ca1c74d67dd115d059a875150e10b8560a9c35a8" +SRCREV = "003b266cbeb370a8eae91dc256197f00798c6f93" -PV = "0.9.33+git${SRCPV}" +PV = "1.0.12+git${SRCPV}" FILESEXTRAPATHS =. "${FILE_DIRNAME}/uclibc-git:" -SRC_URI = "git://uclibc.org/uClibc.git;branch=master \ +SRC_URI = "git://uclibc-ng.org/git/uclibc-ng \ + file://0001-Disable-lrount_tes-function.patch \ file://uClibc.machine \ file://uClibc.distro \ file://obstack.cfg \ file://locale.cfg \ - file://0001-Disable-lrount_tes-function.patch \ - file://0002-Add-implementation-for-copysignl-for-ppc.patch \ - file://0003-Add-argp-implementation.patch \ - file://0004-Dont-support-localised-optimizations-this-helps-to-h.patch \ - file://0005-Always-use-O2-for-compiling-fork.c.patch \ - file://0006-ldso-limited-support-for-ORIGIN-in-rpath.patch \ - file://0007-nptl-atfork-Hide-pthread_atfork-in-shared-versions.patch \ - file://0001-gcc5-optimizes-away-the-write-only-static-functions-.patch \ - file://0001-fcntl-Add-AT_EMPTY_PATH-for-all-and-O_PATH-for-arm.patch \ - file://0001-wire-in-syncfs.patch \ - file://CVE-2016-2224.patch \ - file://CVE-2016-2225.patch \ " S = "${WORKDIR}/git" + +UPSTREAM_CHECK_GITTAGREGEX = "(?P\d+\.\d+(\.\d+)*)" + diff --git a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0001-fcntl-Add-AT_EMPTY_PATH-for-all-and-O_PATH-for-arm.patch b/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0001-fcntl-Add-AT_EMPTY_PATH-for-all-and-O_PATH-for-arm.patch deleted file mode 100644 index 6942db462..000000000 --- a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0001-fcntl-Add-AT_EMPTY_PATH-for-all-and-O_PATH-for-arm.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 4c8f5fe7d41493e8e181941ae5a01713155f44d1 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Thu, 15 Oct 2015 15:34:39 +0000 -Subject: [PATCH] fcntl: Add AT_EMPTY_PATH for all and O_PATH for arm - -Signed-off-by: Khem Raj ---- -Upstream-Status: Pending - - include/fcntl.h | 3 +++ - libc/sysdeps/linux/arm/bits/fcntl.h | 1 + - 2 files changed, 4 insertions(+) - -diff --git a/include/fcntl.h b/include/fcntl.h -index 11000dd..8a7ad9b 100644 ---- a/include/fcntl.h -+++ b/include/fcntl.h -@@ -65,6 +65,9 @@ __BEGIN_DECLS - # define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ - # define AT_EACCESS 0x200 /* Test access permitted for - effective IDs, not real IDs. */ -+# ifdef __USE_GNU -+# define AT_EMPTY_PATH 0x1000 /* Allow empty relative pathname. */ -+# endif - #endif - - /* Do the file control operation described by CMD on FD. -diff --git a/libc/sysdeps/linux/arm/bits/fcntl.h b/libc/sysdeps/linux/arm/bits/fcntl.h -index aedc154..c6ba958 100644 ---- a/libc/sysdeps/linux/arm/bits/fcntl.h -+++ b/libc/sysdeps/linux/arm/bits/fcntl.h -@@ -50,6 +50,7 @@ - # define O_DIRECT 0200000 /* Direct disk access. */ - # define O_NOATIME 01000000 /* Do not set atime. */ - # define O_CLOEXEC 02000000 /* Set close_on_exec. */ -+# define O_PATH 010000000 /* Resolve pathname but do not open file. */ - #endif - - /* For now Linux has synchronisity options for data and read operations. --- -2.6.1 - diff --git a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0001-gcc5-optimizes-away-the-write-only-static-functions-.patch b/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0001-gcc5-optimizes-away-the-write-only-static-functions-.patch deleted file mode 100644 index e622f87ba..000000000 --- a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0001-gcc5-optimizes-away-the-write-only-static-functions-.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 2659fb25d32f4b29c1c96aa5730fe40e19d53ab0 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Wed, 14 Oct 2015 17:38:37 -0700 -Subject: [PATCH] gcc5 optimizes away the write only static functions and we - end up with - - librt/librt_so.a(rt-unwind-resume.oS): In function `_Unwind_Resume': - rt-unwind-resume.c:(.text+0x3c): undefined reference to `libgcc_s_resume' - collect2: error: ld returned 1 exit status - make[2]: *** [lib/librt.so] Error 1 - -marking these functions explicitly used with __attribute_used__ avoids -that optimization. - -Signed-off-by: Khem Raj ---- -Upstream-Status: Pending - - libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c | 2 +- - libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c -index f4d6f41..0c2edd7 100644 ---- a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c -+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c -@@ -27,7 +27,7 @@ - #define __libc_fatal(x) {/*write(STDERR_FILENO, x, strlen(x));*/ abort();} - - static void *libgcc_s_handle; --static void (*libgcc_s_resume) (struct _Unwind_Exception *exc); -+static void (*libgcc_s_resume) (struct _Unwind_Exception *exc) __attribute_used__; - static _Unwind_Reason_Code (*libgcc_s_personality) - (_Unwind_State, struct _Unwind_Exception *, struct _Unwind_Context *); - static _Unwind_Reason_Code (*libgcc_s_forcedunwind) -diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c -index f9a4ffb..f0c3047 100644 ---- a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c -+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c -@@ -25,7 +25,7 @@ - #define __libc_dlclose dlclose - #define __libc_fatal(x) {/*write(STDERR_FILENO, x, strlen(x));*/ abort();} - --static void (*libgcc_s_resume) (struct _Unwind_Exception *exc); -+static void (*libgcc_s_resume) (struct _Unwind_Exception *exc) __attribute_used__; - static _Unwind_Reason_Code (*libgcc_s_personality) - (_Unwind_State, struct _Unwind_Exception *, struct _Unwind_Context *); - --- -2.6.1 - diff --git a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0001-wire-in-syncfs.patch b/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0001-wire-in-syncfs.patch deleted file mode 100644 index 079ad6b3b..000000000 --- a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0001-wire-in-syncfs.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 4f2db1b46bda5e376245ec36198b137709f069e8 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Thu, 15 Oct 2015 17:03:37 +0000 -Subject: [PATCH] wire in syncfs - -Signed-off-by: Khem Raj ---- -Upstream-Status: Pending - - include/unistd.h | 2 +- - libc/sysdeps/linux/common/syncfs.c | 13 +++++++++++++ - 2 files changed, 14 insertions(+), 1 deletion(-) - create mode 100644 libc/sysdeps/linux/common/syncfs.c - -diff --git a/include/unistd.h b/include/unistd.h -index 3793d2d..d01bb08 100644 ---- a/include/unistd.h -+++ b/include/unistd.h -@@ -1073,7 +1073,7 @@ extern char *getpass (const char *__prompt) __nonnull ((1)); - extern int fsync (int __fd); - #endif /* Use BSD || X/Open || Unix98. */ - --#if 0 /*def __USE_GNU */ -+#ifdef __USE_GNU - /* Make all changes done to all files on the file system associated - * with FD actually appear on disk. */ - extern int syncfs (int __fd) __THROW; -diff --git a/libc/sysdeps/linux/common/syncfs.c b/libc/sysdeps/linux/common/syncfs.c -new file mode 100644 -index 0000000..d2eed05 ---- /dev/null -+++ b/libc/sysdeps/linux/common/syncfs.c -@@ -0,0 +1,13 @@ -+/* vi: set sw=4 ts=4: */ -+/* -+ * fsync() for uClibc -+ * -+ * Copyright (C) 2000-2006 Erik Andersen -+ * -+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. -+ */ -+ -+#include -+#include -+ -+_syscall1(int, syncfs, int, fd) --- -2.6.1 - diff --git a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0002-Add-implementation-for-copysignl-for-ppc.patch b/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0002-Add-implementation-for-copysignl-for-ppc.patch deleted file mode 100644 index d4275c997..000000000 --- a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0002-Add-implementation-for-copysignl-for-ppc.patch +++ /dev/null @@ -1,125 +0,0 @@ -From 5d362074e5975b150a35bcfa77eab1bfa4e30de7 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Sun, 16 Aug 2015 20:50:56 -0700 -Subject: [PATCH 2/7] Add implementation for copysignl for ppc - -Signed-off-by: Khem Raj ---- -Upstream-Status: Pending - - libc/sysdeps/linux/powerpc/Makefile.arch | 2 +- - libc/sysdeps/linux/powerpc/copysignl.c | 89 ++++++++++++++++++++++++++++++++ - 2 files changed, 90 insertions(+), 1 deletion(-) - create mode 100644 libc/sysdeps/linux/powerpc/copysignl.c - -diff --git a/libc/sysdeps/linux/powerpc/Makefile.arch b/libc/sysdeps/linux/powerpc/Makefile.arch -index 4fbcb11..7c09c87 100644 ---- a/libc/sysdeps/linux/powerpc/Makefile.arch -+++ b/libc/sysdeps/linux/powerpc/Makefile.arch -@@ -5,7 +5,7 @@ - # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - # - --CSRC-y := __syscall_error.c ioctl.c -+CSRC-y := __syscall_error.c ioctl.c copysignl.c - - SSRC-y := \ - __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S brk.S \ -diff --git a/libc/sysdeps/linux/powerpc/copysignl.c b/libc/sysdeps/linux/powerpc/copysignl.c -new file mode 100644 -index 0000000..000f653 ---- /dev/null -+++ b/libc/sysdeps/linux/powerpc/copysignl.c -@@ -0,0 +1,89 @@ -+/* s_copysignl.c -- long double version of s_copysign.c. -+ * Conversion to long double by Ulrich Drepper, -+ * Cygnus Support, drepper@cygnus.com. -+ */ -+ -+/* -+ * ==================================================== -+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. -+ * -+ * Developed at SunPro, a Sun Microsystems, Inc. business. -+ * Permission to use, copy, modify, and distribute this -+ * software is freely granted, provided that this notice -+ * is preserved. -+ * ==================================================== -+ */ -+ -+/* -+ * copysignl(long double x, long double y) -+ * copysignl(x,y) returns a value with the magnitude of x and -+ * with the sign bit of y. -+ */ -+ -+#include -+#include -+ -+#if __FLOAT_WORD_ORDER == BIG_ENDIAN -+ -+typedef union -+{ -+ long double value; -+ struct -+ { -+ int sign_exponent:16; -+ unsigned int empty:16; -+ uint32_t msw; -+ uint32_t lsw; -+ } parts; -+} ieee_long_double_shape_type; -+ -+#endif -+ -+#if __FLOAT_WORD_ORDER == LITTLE_ENDIAN -+ -+typedef union -+{ -+ long double value; -+ struct -+ { -+ uint32_t lsw; -+ uint32_t msw; -+ int sign_exponent:16; -+ unsigned int empty:16; -+ } parts; -+} ieee_long_double_shape_type; -+ -+#endif -+ -+/* Get int from the exponent of a long double. */ -+ -+#define GET_LDOUBLE_EXP(exp,d) \ -+do { \ -+ ieee_long_double_shape_type ge_u; \ -+ ge_u.value = (d); \ -+ (exp) = ge_u.parts.sign_exponent; \ -+} while (0) -+ -+/* Set exponent of a long double from an int. */ -+ -+#define SET_LDOUBLE_EXP(d,exp) \ -+do { \ -+ ieee_long_double_shape_type se_u; \ -+ se_u.value = (d); \ -+ se_u.parts.sign_exponent = (exp); \ -+ (d) = se_u.value; \ -+} while (0) -+ -+long double copysignl(long double x, long double y); -+libc_hidden_proto(copysignl); -+ -+long double copysignl(long double x, long double y) -+{ -+ uint32_t es1,es2; -+ GET_LDOUBLE_EXP(es1,x); -+ GET_LDOUBLE_EXP(es2,y); -+ SET_LDOUBLE_EXP(x,(es1&0x7fff)|(es2&0x8000)); -+ return x; -+} -+ -+libc_hidden_def(copysignl); --- -2.1.4 - diff --git a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0003-Add-argp-implementation.patch b/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0003-Add-argp-implementation.patch deleted file mode 100644 index ee9448337..000000000 --- a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0003-Add-argp-implementation.patch +++ /dev/null @@ -1,5811 +0,0 @@ -From eaae816fb22929469aa4cc3402b91b512fc69549 Mon Sep 17 00:00:00 2001 -From: Salvatore Cro -Date: Sun, 16 Aug 2015 20:53:37 -0700 -Subject: [PATCH 3/7] Add argp implementation - -Argp is an advanced support for parsing unix-style argument vectors. -In addition to the common getopt interface, it provides automatic -response -to `--help' and `--version' options and use of custom parser in -conjunction -with argp native option parser, among others. -Argp support is required by elfutils package and prelink. - -In uClibc argp functionalities has been moved from C library to -libuargp.so -Further the libc.so linker script contains an AS_NEEDED entry so that -it doesn't need to link libuargp.so explicitely. - -Signed-off-by: Salvatore Cro -Signed-off-by: Filippo Arcidiacono -Signed-off-by: Carmelo Amoroso -Signed-off-by: Khem Raj ---- -Upstream-Status: Pending - - Makefile.in | 9 + - Makerules | 7 +- - Rules.mak | 13 + - extra/Configs/Config.in | 17 + - include/argp.h | 566 ++++++++ - libc/sysdeps/linux/common/bits/getopt_int.h | 136 ++ - libc/unistd/getopt.c | 19 +- - libuargp/Makefile | 14 + - libuargp/Makefile.in | 73 ++ - libuargp/argp-ba.c | 26 + - libuargp/argp-eexst.c | 32 + - libuargp/argp-fmtstream.c | 439 +++++++ - libuargp/argp-fmtstream.h | 314 +++++ - libuargp/argp-fs-xinl.c | 44 + - libuargp/argp-help.c | 1882 +++++++++++++++++++++++++++ - libuargp/argp-parse.c | 949 ++++++++++++++ - libuargp/argp-pv.c | 25 + - libuargp/argp-pvh.c | 32 + - libuargp/argp-xinl.c | 35 + - test/argp/Makefile | 7 + - test/argp/Makefile.in | 12 + - test/argp/argp-ex1.c | 15 + - test/argp/argp-ex2.c | 45 + - test/argp/argp-ex3.c | 153 +++ - test/argp/argp-ex4.c | 167 +++ - test/argp/argp-test.c | 209 +++ - test/argp/bug-argp1.c | 26 + - test/argp/tst-argp1.c | 118 ++ - test/argp/tst-argp2.c | 101 ++ - 29 files changed, 5481 insertions(+), 4 deletions(-) - create mode 100644 include/argp.h - create mode 100644 libc/sysdeps/linux/common/bits/getopt_int.h - create mode 100644 libuargp/Makefile - create mode 100644 libuargp/Makefile.in - create mode 100644 libuargp/argp-ba.c - create mode 100644 libuargp/argp-eexst.c - create mode 100644 libuargp/argp-fmtstream.c - create mode 100644 libuargp/argp-fmtstream.h - create mode 100644 libuargp/argp-fs-xinl.c - create mode 100644 libuargp/argp-help.c - create mode 100644 libuargp/argp-parse.c - create mode 100644 libuargp/argp-pv.c - create mode 100644 libuargp/argp-pvh.c - create mode 100644 libuargp/argp-xinl.c - create mode 100644 test/argp/Makefile - create mode 100644 test/argp/Makefile.in - create mode 100644 test/argp/argp-ex1.c - create mode 100644 test/argp/argp-ex2.c - create mode 100644 test/argp/argp-ex3.c - create mode 100644 test/argp/argp-ex4.c - create mode 100644 test/argp/argp-test.c - create mode 100644 test/argp/bug-argp1.c - create mode 100644 test/argp/tst-argp1.c - create mode 100644 test/argp/tst-argp2.c - -diff --git a/Makefile.in b/Makefile.in -index 04671a4..a450af9 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -39,6 +39,7 @@ include $(top_srcdir)libresolv/Makefile.in - include $(top_srcdir)libutil/Makefile.in - include $(top_srcdir)libpthread/Makefile.in - include $(top_srcdir)librt/Makefile.in -+include $(top_srcdir)libuargp/Makefile.in - include $(top_srcdir)libubacktrace/Makefile.in - - # last included to catch all the objects added by others (locales/threads) -@@ -262,6 +263,7 @@ HEADERS_RM- += sgtty.h - endif - HEADERS_RM-$(HAVE_SHARED) += dlfcn.h bits/dlfcn.h - HEADERS_RM-$(PTHREADS_DEBUG_SUPPORT) += thread_db.h -+HEADERS_RM-$(UCLIBC_HAS_ARGP) += argp.h - HEADERS_RM-$(UCLIBC_HAS_BSD_ERR) += err.h - HEADERS_RM-$(UCLIBC_HAS_CRYPT) += crypt.h - HEADERS_RM-$(UCLIBC_HAS_EPOLL) += sys/epoll.h -@@ -386,6 +388,13 @@ else - -$(INSTALL) -m 755 $(top_builddir)lib/libc.so $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/ - endif - echo "$(UBACKTRACE_ASNEEDED)" >> $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so -+ifeq ($(UCLIBC_HAS_ARGP),y) -+# Add the AS_NEEDED entry for libuargp.so -+ if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(SHARED_MAJORNAME) ] ; then \ -+ echo "GROUP ( $(UARGP_ASNEEDED) )" >> $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so; \ -+ fi -+endif -+ - ifeq ($(UCLIBC_HAS_THREADS),y) - ifneq ($(LINUXTHREADS_OLD),y) - ifeq ($(HARDWIRED_ABSPATH),y) -diff --git a/Makerules b/Makerules -index d6f7e24..e70050d 100644 ---- a/Makerules -+++ b/Makerules -@@ -48,6 +48,7 @@ $(eval $(call add_IS_IN_lib,libresolv,$(libresolv-a-y) $(libresolv-so-y))) - $(eval $(call add_IS_IN_lib,librt,$(librt-a-y) $(librt-so-y))) - $(eval $(call add_IS_IN_lib,libutil,$(libutil-a-y) $(libutil-so-y))) - $(eval $(call add_IS_IN_lib,libubacktrace,$(libubacktrace-a-y) $(libubacktrace-so-y))) -+$(eval $(call add_IS_IN_lib,libuargp,$(libuargp-a-y) $(libuargp-so-y))) - - shared_objs = $(libc-y:.o=.os) $(libc-shared-y) $(libc-nonshared-y) \ - $(libcrypt-so-y) $(libdl-so-y) \ -@@ -55,12 +56,12 @@ shared_objs = $(libc-y:.o=.os) $(libc-shared-y) $(libc-nonshared-y) \ - $(libpthread-so-y) $(libpthread-nonshared-y) $(libthread_db-so-y) \ - $(libresolv-so-y) $(librt-so-y) \ - $(ldso-y) \ -- $(libutil-so-y) $(libubacktrace-so-y) -+ $(libutil-so-y) $(libubacktrace-so-y) $(libuargp-so-y) - - ar_objs = $(libc-y) $(libc-static-y) $(libcrypt-a-y) \ - $(libdl-a-y) $(libintl-a-y) $(libm-a-y) $(libnsl-a-y) \ - $(libpthread-a-y) $(libthread_db-a-y) \ -- $(libresolv-a-y) $(librt-a-y) $(libutil-a-y) $(libubacktrace-a-y) -+ $(libresolv-a-y) $(librt-a-y) $(libutil-a-y) $(libubacktrace-a-y) $(libuargp-a-y) - ifeq ($(DOPIC),y) - ar_objs := $(ar_objs:.o=.os) - endif -@@ -498,7 +499,7 @@ files.dep := $(libc-a-y) $(libc-so-y) $(libc-nonshared-y) \ - $(librt-a-y) $(librt-so-y) $(libresolv-a-y) $(libresolv-so-y) \ - $(libcrypt-a-y) $(libcrypt-so-y) $(libutil-a-y) $(libutil-so-y) \ - $(libnsl-a-y) $(libnsl-so-y) $(ldso-y) $(libdl-a-y) $(libdl-so-y) \ -- $(libubacktrace-a-y) $(libubacktrace-so-y) -+ $(libubacktrace-a-y) $(libubacktrace-so-y) $(libuargp-so-y) $(libuargp-a-y) - .depends.dep := \ - $(patsubst %.s,%.s.dep,$(filter %.s,$(files.dep))) \ - $(patsubst %.o,%.o.dep,$(filter %.o,$(files.dep))) \ -diff --git a/Rules.mak b/Rules.mak -index de9ffb3..a2baf58 100644 ---- a/Rules.mak -+++ b/Rules.mak -@@ -602,6 +602,19 @@ export UBACKTRACE_ASNEEDED:=$(shell $(CC) -Wl,--help 2>/dev/null | grep -q -- -- - else - export UBACKTRACE_ASNEEDED:="" - endif -+ifeq ($(UCLIBC_HAS_ARGP),y) -+ifeq ($(HARDWIRED_ABSPATH),y) -+# Only used in installed libc.so linker script -+UARGP_FULL_NAME := $(subst //,/,$(RUNTIME_PREFIX)$(MULTILIB_DIR)/libuargp.so.$(MAJOR_VERSION)) -+else -+UARGP_FULL_NAME := libuargp.so.$(MAJOR_VERSION) -+endif -+export UARGP_ASNEEDED:=$(shell $(CC) -Wl,--help 2>/dev/null | grep -q -- --as-needed && \ -+ echo "GROUP ( AS_NEEDED ( $(UARGP_FULL_NAME) ) )" || \ -+ echo "GROUP ( $(UARGP_FULL_NAME) )") -+else -+export UARGP_ASNEEDED:="" -+endif - endif - - # Add a bunch of extra pedantic annoyingly strict checks -diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in -index 242e45a..b36d4c9 100644 ---- a/extra/Configs/Config.in -+++ b/extra/Configs/Config.in -@@ -1943,6 +1943,23 @@ config UCLIBC_HAS_GNU_GETSUBOPT - Answer Y if you want to include getsubopt(). - - Most people will answer Y. -+ -+config UCLIBC_HAS_ARGP -+ bool "Support argp (as standalone shared object)" -+ default n -+ help -+ Argp is an interface for parsing unix-style argument vectors. Unlike -+ the common getopt interface, it provides many advanced features in -+ addition to parsing options, such as automatic output in response to -+ `--help' and `--version' options. -+ A library can export an argp option parser, which programs can easily -+ use in conjunction with their own option parser. -+ A new shared object "libuargp" is created. The "libc.so" linker script -+ contains the AS_NEEDED entry for getting the libuargp linked automatically. -+ Argp support is needed by elfutils libdw. -+ -+ Most people can safely answer N. -+ - endmenu - - -diff --git a/include/argp.h b/include/argp.h -new file mode 100644 -index 0000000..9d53728 ---- /dev/null -+++ b/include/argp.h -@@ -0,0 +1,566 @@ -+/* Hierarchial argument parsing, layered over getopt. -+ Copyright (C) 1995-1999, 2003, 2004, 2005, 2006, 2007, 2009 -+ Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Miles Bader . -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. -+ -+ Modified for uClibc by: Salvatore Cro -+*/ -+ -+#ifndef _ARGP_H -+#define _ARGP_H -+ -+#include -+#include -+#include -+ -+#define __need_error_t -+#include -+ -+#ifndef __const -+# define __const const -+#endif -+ -+#ifndef __THROW -+# define __THROW -+#endif -+#ifndef __NTH -+# define __NTH(fct) fct __THROW -+#endif -+ -+#ifndef __attribute__ -+/* This feature is available in gcc versions 2.5 and later. */ -+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || defined(__STRICT_ANSI__) -+# define __attribute__(Spec) /* empty */ -+# endif -+/* The __-protected variants of `format' and `printf' attributes -+ are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ -+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || defined(__STRICT_ANSI__) -+# define __format__ format -+# define __printf__ printf -+# endif -+#endif -+ -+/* GCC 2.95 and later have "__restrict"; C99 compilers have -+ "restrict", and "configure" may have defined "restrict". */ -+#ifndef __restrict -+# if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__)) -+# if defined restrict || 199901L <= __STDC_VERSION__ -+# define __restrict restrict -+# else -+# define __restrict -+# endif -+# endif -+#endif -+ -+#ifndef __error_t_defined -+typedef int error_t; -+# define __error_t_defined -+#endif -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* A description of a particular option. A pointer to an array of -+ these is passed in the OPTIONS field of an argp structure. Each option -+ entry can correspond to one long option and/or one short option; more -+ names for the same option can be added by following an entry in an option -+ array with options having the OPTION_ALIAS flag set. */ -+struct argp_option -+{ -+ /* The long option name. For more than one name for the same option, you -+ can use following options with the OPTION_ALIAS flag set. */ -+ __const char *name; -+ -+ /* What key is returned for this option. If > 0 and printable, then it's -+ also accepted as a short option. */ -+ int key; -+ -+ /* If non-NULL, this is the name of the argument associated with this -+ option, which is required unless the OPTION_ARG_OPTIONAL flag is set. */ -+ __const char *arg; -+ -+ /* OPTION_ flags. */ -+ int flags; -+ -+ /* The doc string for this option. If both NAME and KEY are 0, This string -+ will be printed outdented from the normal option column, making it -+ useful as a group header (it will be the first thing printed in its -+ group); in this usage, it's conventional to end the string with a `:'. */ -+ __const char *doc; -+ -+ /* The group this option is in. In a long help message, options are sorted -+ alphabetically within each group, and the groups presented in the order -+ 0, 1, 2, ..., n, -m, ..., -2, -1. Every entry in an options array with -+ if this field 0 will inherit the group number of the previous entry, or -+ zero if it's the first one, unless its a group header (NAME and KEY both -+ 0), in which case, the previous entry + 1 is the default. Automagic -+ options such as --help are put into group -1. */ -+ int group; -+}; -+ -+/* The argument associated with this option is optional. */ -+#define OPTION_ARG_OPTIONAL 0x1 -+ -+/* This option isn't displayed in any help messages. */ -+#define OPTION_HIDDEN 0x2 -+ -+/* This option is an alias for the closest previous non-alias option. This -+ means that it will be displayed in the same help entry, and will inherit -+ fields other than NAME and KEY from the aliased option. */ -+#define OPTION_ALIAS 0x4 -+ -+/* This option isn't actually an option (and so should be ignored by the -+ actual option parser), but rather an arbitrary piece of documentation that -+ should be displayed in much the same manner as the options. If this flag -+ is set, then the option NAME field is displayed unmodified (e.g., no `--' -+ prefix is added) at the left-margin (where a *short* option would normally -+ be displayed), and the documentation string in the normal place. For -+ purposes of sorting, any leading whitespace and punctuation is ignored, -+ except that if the first non-whitespace character is not `-', this entry -+ is displayed after all options (and OPTION_DOC entries with a leading `-') -+ in the same group. */ -+#define OPTION_DOC 0x8 -+ -+/* This option shouldn't be included in `long' usage messages (but is still -+ included in help messages). This is mainly intended for options that are -+ completely documented in an argp's ARGS_DOC field, in which case including -+ the option in the generic usage list would be redundant. For instance, -+ if ARGS_DOC is "FOO BAR\n-x BLAH", and the `-x' option's purpose is to -+ distinguish these two cases, -x should probably be marked -+ OPTION_NO_USAGE. */ -+#define OPTION_NO_USAGE 0x10 -+ -+struct argp; /* fwd declare this type */ -+struct argp_state; /* " */ -+struct argp_child; /* " */ -+ -+/* The type of a pointer to an argp parsing function. */ -+typedef error_t (*argp_parser_t) (int __key, char *__arg, -+ struct argp_state *__state); -+ -+/* What to return for unrecognized keys. For special ARGP_KEY_ keys, such -+ returns will simply be ignored. For user keys, this error will be turned -+ into EINVAL (if the call to argp_parse is such that errors are propagated -+ back to the user instead of exiting); returning EINVAL itself would result -+ in an immediate stop to parsing in *all* cases. */ -+#define ARGP_ERR_UNKNOWN E2BIG /* Hurd should never need E2BIG. XXX */ -+ -+/* Special values for the KEY argument to an argument parsing function. -+ ARGP_ERR_UNKNOWN should be returned if they aren't understood. -+ -+ The sequence of keys to a parsing function is either (where each -+ uppercased word should be prefixed by `ARGP_KEY_' and opt is a user key): -+ -+ INIT opt... NO_ARGS END SUCCESS -- No non-option arguments at all -+ or INIT (opt | ARG)... END SUCCESS -- All non-option args parsed -+ or INIT (opt | ARG)... SUCCESS -- Some non-option arg unrecognized -+ -+ The third case is where every parser returned ARGP_KEY_UNKNOWN for an -+ argument, in which case parsing stops at that argument (returning the -+ unparsed arguments to the caller of argp_parse if requested, or stopping -+ with an error message if not). -+ -+ If an error occurs (either detected by argp, or because the parsing -+ function returned an error value), then the parser is called with -+ ARGP_KEY_ERROR, and no further calls are made. */ -+ -+/* This is not an option at all, but rather a command line argument. If a -+ parser receiving this key returns success, the fact is recorded, and the -+ ARGP_KEY_NO_ARGS case won't be used. HOWEVER, if while processing the -+ argument, a parser function decrements the NEXT field of the state it's -+ passed, the option won't be considered processed; this is to allow you to -+ actually modify the argument (perhaps into an option), and have it -+ processed again. */ -+#define ARGP_KEY_ARG 0 -+/* There are remaining arguments not parsed by any parser, which may be found -+ starting at (STATE->argv + STATE->next). If success is returned, but -+ STATE->next left untouched, it's assumed that all arguments were consume, -+ otherwise, the parser should adjust STATE->next to reflect any arguments -+ consumed. */ -+#define ARGP_KEY_ARGS 0x1000006 -+/* There are no more command line arguments at all. */ -+#define ARGP_KEY_END 0x1000001 -+/* Because it's common to want to do some special processing if there aren't -+ any non-option args, user parsers are called with this key if they didn't -+ successfully process any non-option arguments. Called just before -+ ARGP_KEY_END (where more general validity checks on previously parsed -+ arguments can take place). */ -+#define ARGP_KEY_NO_ARGS 0x1000002 -+/* Passed in before any parsing is done. Afterwards, the values of each -+ element of the CHILD_INPUT field, if any, in the state structure is -+ copied to each child's state to be the initial value of the INPUT field. */ -+#define ARGP_KEY_INIT 0x1000003 -+/* Use after all other keys, including SUCCESS & END. */ -+#define ARGP_KEY_FINI 0x1000007 -+/* Passed in when parsing has successfully been completed (even if there are -+ still arguments remaining). */ -+#define ARGP_KEY_SUCCESS 0x1000004 -+/* Passed in if an error occurs. */ -+#define ARGP_KEY_ERROR 0x1000005 -+ -+/* An argp structure contains a set of options declarations, a function to -+ deal with parsing one, documentation string, a possible vector of child -+ argp's, and perhaps a function to filter help output. When actually -+ parsing options, getopt is called with the union of all the argp -+ structures chained together through their CHILD pointers, with conflicts -+ being resolved in favor of the first occurrence in the chain. */ -+struct argp -+{ -+ /* An array of argp_option structures, terminated by an entry with both -+ NAME and KEY having a value of 0. */ -+ __const struct argp_option *options; -+ -+ /* What to do with an option from this structure. KEY is the key -+ associated with the option, and ARG is any associated argument (NULL if -+ none was supplied). If KEY isn't understood, ARGP_ERR_UNKNOWN should be -+ returned. If a non-zero, non-ARGP_ERR_UNKNOWN value is returned, then -+ parsing is stopped immediately, and that value is returned from -+ argp_parse(). For special (non-user-supplied) values of KEY, see the -+ ARGP_KEY_ definitions below. */ -+ argp_parser_t parser; -+ -+ /* A string describing what other arguments are wanted by this program. It -+ is only used by argp_usage to print the `Usage:' message. If it -+ contains newlines, the strings separated by them are considered -+ alternative usage patterns, and printed on separate lines (lines after -+ the first are prefix by ` or: ' instead of `Usage:'). */ -+ __const char *args_doc; -+ -+ /* If non-NULL, a string containing extra text to be printed before and -+ after the options in a long help message (separated by a vertical tab -+ `\v' character). */ -+ __const char *doc; -+ -+ /* A vector of argp_children structures, terminated by a member with a 0 -+ argp field, pointing to child argps should be parsed with this one. Any -+ conflicts are resolved in favor of this argp, or early argps in the -+ CHILDREN list. This field is useful if you use libraries that supply -+ their own argp structure, which you want to use in conjunction with your -+ own. */ -+ __const struct argp_child *children; -+ -+ /* If non-zero, this should be a function to filter the output of help -+ messages. KEY is either a key from an option, in which case TEXT is -+ that option's help text, or a special key from the ARGP_KEY_HELP_ -+ defines, below, describing which other help text TEXT is. The function -+ should return either TEXT, if it should be used as-is, a replacement -+ string, which should be malloced, and will be freed by argp, or NULL, -+ meaning `print nothing'. The value for TEXT is *after* any translation -+ has been done, so if any of the replacement text also needs translation, -+ that should be done by the filter function. INPUT is either the input -+ supplied to argp_parse, or NULL, if argp_help was called directly. */ -+ char *(*help_filter) (int __key, __const char *__text, void *__input); -+ -+ /* If non-zero the strings used in the argp library are translated using -+ the domain described by this string. Otherwise the currently installed -+ default domain is used. */ -+ const char *argp_domain; -+}; -+ -+/* Possible KEY arguments to a help filter function. */ -+#define ARGP_KEY_HELP_PRE_DOC 0x2000001 /* Help text preceeding options. */ -+#define ARGP_KEY_HELP_POST_DOC 0x2000002 /* Help text following options. */ -+#define ARGP_KEY_HELP_HEADER 0x2000003 /* Option header string. */ -+#define ARGP_KEY_HELP_EXTRA 0x2000004 /* After all other documentation; -+ TEXT is NULL for this key. */ -+/* Explanatory note emitted when duplicate option arguments have been -+ suppressed. */ -+#define ARGP_KEY_HELP_DUP_ARGS_NOTE 0x2000005 -+#define ARGP_KEY_HELP_ARGS_DOC 0x2000006 /* Argument doc string. */ -+ -+/* When an argp has a non-zero CHILDREN field, it should point to a vector of -+ argp_child structures, each of which describes a subsidiary argp. */ -+struct argp_child -+{ -+ /* The child parser. */ -+ __const struct argp *argp; -+ -+ /* Flags for this child. */ -+ int flags; -+ -+ /* If non-zero, an optional header to be printed in help output before the -+ child options. As a side-effect, a non-zero value forces the child -+ options to be grouped together; to achieve this effect without actually -+ printing a header string, use a value of "". */ -+ __const char *header; -+ -+ /* Where to group the child options relative to the other (`consolidated') -+ options in the parent argp; the values are the same as the GROUP field -+ in argp_option structs, but all child-groupings follow parent options at -+ a particular group level. If both this field and HEADER are zero, then -+ they aren't grouped at all, but rather merged with the parent options -+ (merging the child's grouping levels with the parents). */ -+ int group; -+}; -+ -+/* Parsing state. This is provided to parsing functions called by argp, -+ which may examine and, as noted, modify fields. */ -+struct argp_state -+{ -+ /* The top level ARGP being parsed. */ -+ __const struct argp *root_argp; -+ -+ /* The argument vector being parsed. May be modified. */ -+ int argc; -+ char **argv; -+ -+ /* The index in ARGV of the next arg that to be parsed. May be modified. */ -+ int next; -+ -+ /* The flags supplied to argp_parse. May be modified. */ -+ unsigned flags; -+ -+ /* While calling a parsing function with a key of ARGP_KEY_ARG, this is the -+ number of the current arg, starting at zero, and incremented after each -+ such call returns. At all other times, this is the number of such -+ arguments that have been processed. */ -+ unsigned arg_num; -+ -+ /* If non-zero, the index in ARGV of the first argument following a special -+ `--' argument (which prevents anything following being interpreted as an -+ option). Only set once argument parsing has proceeded past this point. */ -+ int quoted; -+ -+ /* An arbitrary pointer passed in from the user. */ -+ void *input; -+ /* Values to pass to child parsers. This vector will be the same length as -+ the number of children for the current parser. */ -+ void **child_inputs; -+ -+ /* For the parser's use. Initialized to 0. */ -+ void *hook; -+ -+ /* The name used when printing messages. This is initialized to ARGV[0], -+ or PROGRAM_INVOCATION_NAME if that is unavailable. */ -+ char *name; -+ -+ /* Streams used when argp prints something. */ -+ FILE *err_stream; /* For errors; initialized to stderr. */ -+ FILE *out_stream; /* For information; initialized to stdout. */ -+ -+ void *pstate; /* Private, for use by argp. */ -+}; -+ -+/* Flags for argp_parse (note that the defaults are those that are -+ convenient for program command line parsing): */ -+ -+/* Don't ignore the first element of ARGV. Normally (and always unless -+ ARGP_NO_ERRS is set) the first element of the argument vector is -+ skipped for option parsing purposes, as it corresponds to the program name -+ in a command line. */ -+#define ARGP_PARSE_ARGV0 0x01 -+ -+/* Don't print error messages for unknown options to stderr; unless this flag -+ is set, ARGP_PARSE_ARGV0 is ignored, as ARGV[0] is used as the program -+ name in the error messages. This flag implies ARGP_NO_EXIT (on the -+ assumption that silent exiting upon errors is bad behaviour). */ -+#define ARGP_NO_ERRS 0x02 -+ -+/* Don't parse any non-option args. Normally non-option args are parsed by -+ calling the parse functions with a key of ARGP_KEY_ARG, and the actual arg -+ as the value. Since it's impossible to know which parse function wants to -+ handle it, each one is called in turn, until one returns 0 or an error -+ other than ARGP_ERR_UNKNOWN; if an argument is handled by no one, the -+ argp_parse returns prematurely (but with a return value of 0). If all -+ args have been parsed without error, all parsing functions are called one -+ last time with a key of ARGP_KEY_END. This flag needn't normally be set, -+ as the normal behavior is to stop parsing as soon as some argument can't -+ be handled. */ -+#define ARGP_NO_ARGS 0x04 -+ -+/* Parse options and arguments in the same order they occur on the command -+ line -- normally they're rearranged so that all options come first. */ -+#define ARGP_IN_ORDER 0x08 -+ -+/* Don't provide the standard long option --help, which causes usage and -+ option help information to be output to stdout, and exit (0) called. */ -+#define ARGP_NO_HELP 0x10 -+ -+/* Don't exit on errors (they may still result in error messages). */ -+#define ARGP_NO_EXIT 0x20 -+ -+/* Use the gnu getopt `long-only' rules for parsing arguments. */ -+#define ARGP_LONG_ONLY 0x40 -+ -+/* Turns off any message-printing/exiting options. */ -+#define ARGP_SILENT (ARGP_NO_EXIT | ARGP_NO_ERRS | ARGP_NO_HELP) -+ -+/* Parse the options strings in ARGC & ARGV according to the options in ARGP. -+ FLAGS is one of the ARGP_ flags above. If ARG_INDEX is non-NULL, the -+ index in ARGV of the first unparsed option is returned in it. If an -+ unknown option is present, ARGP_ERR_UNKNOWN is returned; if some parser -+ routine returned a non-zero value, it is returned; otherwise 0 is -+ returned. This function may also call exit unless the ARGP_NO_HELP flag -+ is set. INPUT is a pointer to a value to be passed in to the parser. */ -+extern error_t argp_parse (__const struct argp *__restrict __argp, -+ int __argc, char **__restrict __argv, -+ unsigned __flags, int *__restrict __arg_index, -+ void *__restrict __input); -+ -+/* Global variables. */ -+ -+/* If defined or set by the user program to a non-zero value, then a default -+ option --version is added (unless the ARGP_NO_HELP flag is used), which -+ will print this string followed by a newline and exit (unless the -+ ARGP_NO_EXIT flag is used). Overridden by ARGP_PROGRAM_VERSION_HOOK. */ -+extern __const char *argp_program_version; -+ -+/* If defined or set by the user program to a non-zero value, then a default -+ option --version is added (unless the ARGP_NO_HELP flag is used), which -+ calls this function with a stream to print the version to and a pointer to -+ the current parsing state, and then exits (unless the ARGP_NO_EXIT flag is -+ used). This variable takes precedent over ARGP_PROGRAM_VERSION. */ -+extern void (*argp_program_version_hook) (FILE *__restrict __stream, -+ struct argp_state *__restrict -+ __state); -+ -+/* If defined or set by the user program, it should point to string that is -+ the bug-reporting address for the program. It will be printed by -+ argp_help if the ARGP_HELP_BUG_ADDR flag is set (as it is by various -+ standard help messages), embedded in a sentence that says something like -+ `Report bugs to ADDR.'. */ -+extern __const char *argp_program_bug_address; -+ -+/* The exit status that argp will use when exiting due to a parsing error. -+ If not defined or set by the user program, this defaults to EX_USAGE from -+ . */ -+extern error_t argp_err_exit_status; -+ -+/* Flags for argp_help. */ -+#define ARGP_HELP_USAGE 0x01 /* a Usage: message. */ -+#define ARGP_HELP_SHORT_USAGE 0x02 /* " but don't actually print options. */ -+#define ARGP_HELP_SEE 0x04 /* a `Try ... for more help' message. */ -+#define ARGP_HELP_LONG 0x08 /* a long help message. */ -+#define ARGP_HELP_PRE_DOC 0x10 /* doc string preceding long help. */ -+#define ARGP_HELP_POST_DOC 0x20 /* doc string following long help. */ -+#define ARGP_HELP_DOC (ARGP_HELP_PRE_DOC | ARGP_HELP_POST_DOC) -+#define ARGP_HELP_BUG_ADDR 0x40 /* bug report address */ -+#define ARGP_HELP_LONG_ONLY 0x80 /* modify output appropriately to -+ reflect ARGP_LONG_ONLY mode. */ -+ -+/* These ARGP_HELP flags are only understood by argp_state_help. */ -+#define ARGP_HELP_EXIT_ERR 0x100 /* Call exit(1) instead of returning. */ -+#define ARGP_HELP_EXIT_OK 0x200 /* Call exit(0) instead of returning. */ -+ -+/* The standard thing to do after a program command line parsing error, if an -+ error message has already been printed. */ -+#define ARGP_HELP_STD_ERR \ -+ (ARGP_HELP_SEE | ARGP_HELP_EXIT_ERR) -+/* The standard thing to do after a program command line parsing error, if no -+ more specific error message has been printed. */ -+#define ARGP_HELP_STD_USAGE \ -+ (ARGP_HELP_SHORT_USAGE | ARGP_HELP_SEE | ARGP_HELP_EXIT_ERR) -+/* The standard thing to do in response to a --help option. */ -+#define ARGP_HELP_STD_HELP \ -+ (ARGP_HELP_SHORT_USAGE | ARGP_HELP_LONG | ARGP_HELP_EXIT_OK \ -+ | ARGP_HELP_DOC | ARGP_HELP_BUG_ADDR) -+ -+/* Output a usage message for ARGP to STREAM. FLAGS are from the set -+ ARGP_HELP_*. */ -+extern void argp_help (__const struct argp *__restrict __argp, -+ FILE *__restrict __stream, -+ unsigned __flags, char *__restrict __name); -+ -+/* The following routines are intended to be called from within an argp -+ parsing routine (thus taking an argp_state structure as the first -+ argument). They may or may not print an error message and exit, depending -+ on the flags in STATE -- in any case, the caller should be prepared for -+ them *not* to exit, and should return an appropiate error after calling -+ them. [argp_usage & argp_error should probably be called argp_state_..., -+ but they're used often enough that they should be short] */ -+ -+/* Output, if appropriate, a usage message for STATE to STREAM. FLAGS are -+ from the set ARGP_HELP_*. */ -+extern void argp_state_help (__const struct argp_state *__restrict __state, -+ FILE *__restrict __stream, -+ unsigned int __flags); -+/* Possibly output the standard usage message for ARGP to stderr and exit. */ -+extern void argp_usage (__const struct argp_state *__state); -+ -+/* If appropriate, print the printf string FMT and following args, preceded -+ by the program name and `:', to stderr, and followed by a `Try ... --help' -+ message, then exit (1). */ -+extern void argp_error (__const struct argp_state *__restrict __state, -+ __const char *__restrict __fmt, ...) -+ __attribute__ ((__format__ (__printf__, 2, 3))); -+/* Similar to the standard gnu error-reporting function error(), but will -+ respect the ARGP_NO_EXIT and ARGP_NO_ERRS flags in STATE, and will print -+ to STATE->err_stream. This is useful for argument parsing code that is -+ shared between program startup (when exiting is desired) and runtime -+ option parsing (when typically an error code is returned instead). The -+ difference between this function and argp_error is that the latter is for -+ *parsing errors*, and the former is for other problems that occur during -+ parsing but don't reflect a (syntactic) problem with the input. */ -+extern void argp_failure (__const struct argp_state *__restrict __state, -+ int __status, int __errnum, -+ __const char *__restrict __fmt, ...) -+ __attribute__ ((__format__ (__printf__, 4, 5))); -+/* Returns true if the option OPT is a valid short option. */ -+extern int _option_is_short (__const struct argp_option *__opt) __THROW; -+extern int __option_is_short (__const struct argp_option *__opt) __THROW; -+ -+/* Returns true if the option OPT is in fact the last (unused) entry in an -+ options array. */ -+extern int _option_is_end (__const struct argp_option *__opt) __THROW; -+extern int __option_is_end (__const struct argp_option *__opt) __THROW; -+ -+/* Return the input field for ARGP in the parser corresponding to STATE; used -+ by the help routines. */ -+/* We think this should not be exported */ -+extern void *__argp_input (__const struct argp *__restrict __argp, -+ __const struct argp_state *__restrict __state) -+ __THROW; -+ -+#ifdef __USE_EXTERN_INLINES -+ -+# ifndef ARGP_EI -+# define ARGP_EI __extern_inline -+# endif -+ -+ARGP_EI void -+argp_usage (__const struct argp_state *__state) -+{ -+ argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE); -+} -+ -+ARGP_EI int -+__NTH (__option_is_short (__const struct argp_option *__opt)) -+{ -+ if (__opt->flags & OPTION_DOC) -+ return 0; -+ else -+ { -+ int __key = __opt->key; -+ return __key > 0 && __key <= UCHAR_MAX && isprint (__key); -+ } -+} -+ -+ARGP_EI int -+__NTH (__option_is_end (__const struct argp_option *__opt)) -+{ -+ return !__opt->key && !__opt->name && !__opt->doc && !__opt->group; -+} -+#endif /* Use extern inlines. */ -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif /* argp.h */ -diff --git a/libc/sysdeps/linux/common/bits/getopt_int.h b/libc/sysdeps/linux/common/bits/getopt_int.h -new file mode 100644 -index 0000000..291edfe ---- /dev/null -+++ b/libc/sysdeps/linux/common/bits/getopt_int.h -@@ -0,0 +1,136 @@ -+/* Internal declarations for getopt. -+ Copyright (C) 1989-1994,1996-1999,2001,2003,2004 -+ Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#ifndef _GETOPT_INT_H -+#define _GETOPT_INT_H 1 -+ -+extern int _getopt_internal (int ___argc, char *const *___argv, -+ const char *__shortopts, -+ const struct option *__longopts, int *__longind, -+ int __long_only) attribute_hidden; -+ -+ -+/* Reentrant versions which can handle parsing multiple argument -+ vectors at the same time. */ -+ -+/* For __ordering member */ -+enum { -+ REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER -+}; -+ -+/* Data type for reentrant functions. */ -+ -+struct _getopt_data -+{ -+ /* These have exactly the same meaning as the corresponding global -+ variables, except that they are used for the reentrant -+ versions of getopt. */ -+ int optind; -+ int opterr; -+ char *optarg; -+ smalluint optopt; /* we store characters here, a byte is enough */ -+ -+ /* Internal members. */ -+ -+ /* True if the internal members have been initialized. */ -+ smallint __initialized; -+ -+ /* Describe how to deal with options that follow non-option ARGV-elements. -+ -+ If the caller did not specify anything, -+ the default is REQUIRE_ORDER if the environment variable -+ POSIXLY_CORRECT is defined, PERMUTE otherwise. -+ -+ REQUIRE_ORDER means don't recognize them as options; -+ stop option processing when the first non-option is seen. -+ This is what Unix does. -+ This mode of operation is selected by either setting the environment -+ variable POSIXLY_CORRECT, or using `+' as the first character -+ of the list of option characters. -+ -+ PERMUTE is the default. We permute the contents of ARGV as we -+ scan, so that eventually all the non-options are at the end. -+ This allows options to be given in any order, even with programs -+ that were not written to expect this. -+ -+ RETURN_IN_ORDER is an option available to programs that were -+ written to expect options and other ARGV-elements in any order -+ and that care about the ordering of the two. We describe each -+ non-option ARGV-element as if it were the argument of an option -+ with character code 1. Using `-' as the first character of the -+ list of option characters selects this mode of operation. -+ -+ The special argument `--' forces an end of option-scanning regardless -+ of the value of `ordering'. In the case of RETURN_IN_ORDER, only -+ `--' can cause `getopt' to return -1 with `optind' != ARGC. */ -+ smallint __ordering; -+ -+ /* If the POSIXLY_CORRECT environment variable is set. */ -+ smallint __posixly_correct; -+ -+ /* The next char to be scanned in the option-element -+ in which the last option character we returned was found. -+ This allows us to pick up the scan where we left off. -+ -+ If this is zero, or a null string, it means resume the scan -+ by advancing to the next ARGV-element. */ -+ char *__nextchar; -+ -+ -+ /* Handle permutation of arguments. */ -+ -+ /* Describe the part of ARGV that contains non-options that have -+ been skipped. `first_nonopt' is the index in ARGV of the first -+ of them; `last_nonopt' is the index after the last of them. */ -+ -+ int __first_nonopt; -+ int __last_nonopt; -+ -+#if defined _LIBC && defined USE_NONOPTION_FLAGS -+ int __nonoption_flags_max_len; -+ int __nonoption_flags_len; -+# endif -+}; -+ -+/* The initializer is necessary to set OPTIND and OPTERR to their -+ default values and to clear the initialization flag. */ -+#define _GETOPT_DATA_INITIALIZER { 1, 1 } -+ -+#if 0 /* first is static on uClibc, the others not used */ -+extern int _getopt_internal_r (int ___argc, char *const *___argv, -+ const char *__shortopts, -+ const struct option *__longopts, int *__longind, -+ int __long_only, struct _getopt_data *__data); -+#endif -+#if defined __UCLIBC_HAS_GNU_GETOPT__ || defined __UCLIBC_HAS_GETOPT_LONG__ -+#ifndef __need_getopt -+extern int _getopt_long_r (int ___argc, char *const *___argv, -+ const char *__shortopts, -+ const struct option *__longopts, int *__longind, -+ struct _getopt_data *__data); -+ -+extern int _getopt_long_only_r (int ___argc, char *const *___argv, -+ const char *__shortopts, -+ const struct option *__longopts, -+ int *__longind, -+ struct _getopt_data *__data); -+#endif -+#endif -+#endif /* getopt_int.h */ -diff --git a/libc/unistd/getopt.c b/libc/unistd/getopt.c -index f63482b..db5e12c 100644 ---- a/libc/unistd/getopt.c -+++ b/libc/unistd/getopt.c -@@ -105,7 +105,7 @@ - they can distinguish the relative order of options and other arguments. */ - - #include --#include "getopt_int.h" -+#include - - - /* For communication from `getopt' to the caller. -@@ -1170,6 +1170,15 @@ getopt_long (int argc, char *const *argv, const char *options, - return _getopt_internal (argc, argv, options, long_options, opt_index, 0); - } - -+int -+_getopt_long_r (int argc, char *const *argv, const char *options, -+ const struct option *long_options, int *opt_index, -+ struct _getopt_data *d) -+{ -+ return _getopt_internal_r (argc, argv, options, long_options, opt_index, -+ 0, d); -+} -+ - /* Like getopt_long, but '-' as well as '--' can indicate a long option. - If an option that starts with '-' (not '--') doesn't match a long option, - but does match a short option, it is parsed as a short option -@@ -1183,4 +1192,12 @@ getopt_long_only (int argc, char *const *argv, const char *options, - } - #endif /* __UCLIBC_HAS_GETOPT_LONG__ */ - -+int -+_getopt_long_only_r (int argc, char *const *argv, const char *options, -+ const struct option *long_options, int *opt_index, -+ struct _getopt_data *d) -+{ -+ return _getopt_internal_r (argc, argv, options, long_options, opt_index, 1, d); -+} -+ - #endif /* Not ELIDE_CODE. */ -diff --git a/libuargp/Makefile b/libuargp/Makefile -new file mode 100644 -index 0000000..45acdd9 ---- /dev/null -+++ b/libuargp/Makefile -@@ -0,0 +1,14 @@ -+# Makefile for uClibc (libuargp) -+# -+# Copyright (C) 2010 STMicroelectronics Ltd -+# Author(s): Filippo Arcidiacono -+# -+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. -+# -+ -+top_srcdir=../ -+top_builddir=../ -+include $(top_builddir)Rules.mak -+all: libs -+include Makefile.in -+include $(top_srcdir)Makerules -diff --git a/libuargp/Makefile.in b/libuargp/Makefile.in -new file mode 100644 -index 0000000..1498abb ---- /dev/null -+++ b/libuargp/Makefile.in -@@ -0,0 +1,73 @@ -+# Makefile for uClibc (libuargp) -+# -+# Copyright (C) 2009, 2010 STMicroelectronics Ltd. -+# Author(s): Salvatore Cro -+# - First implementation, embedded into libc -+# Filippo Arcidiacono -+# - Reworked for stand-alone libuargp implementation -+ -+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. -+# -+ -+CFLAGS-libuargp := -DNOT_IN_libc -DIS_IN_libuargp $(SSP_ALL_CFLAGS) -+ -+LDFLAGS-libuargp.so := $(LDFLAGS) -+ -+LIBS-libuargp.so := $(LIBS) -+ -+libuargp_FULL_NAME := libuargp-$(VERSION).so -+ -+libuargp_DIR := $(top_srcdir)libuargp -+libuargp_OUT := $(top_builddir)libuargp -+ -+libuargp_SRC-y := -+libuargp_SRC-$(UCLIBC_HAS_ARGP) := $(addsuffix .c,$(addprefix argp-, ba \ -+ eexst fmtstream fs-xinl help parse pv pvh xinl)) -+ -+CFLAGS-argp-xinl.c = -fgnu89-inline -+ -+libuargp_SRC := $(addprefix $(libuargp_DIR)/,$(libuargp_SRC-y)) -+libuargp_OBJ := $(patsubst $(libuargp_DIR)/%.c,$(libuargp_OUT)/%.o,$(libuargp_SRC)) -+ -+libuargp_SRCS := $(libuargp_SRC) -+libuargp_OBJS := $(libuargp_OBJ) -+ -+ifeq ($(DOPIC),y) -+libuargp-a-y := $(libuargp_OBJS:.o=.os) -+else -+libuargp-a-y := $(libuargp_OBJS) -+endif -+libuargp-so-y := $(libuargp_OBJS:.o=.os) -+ -+lib-a-$(UCLIBC_HAS_ARGP) += $(top_builddir)lib/libuargp.a -+lib-so-$(UCLIBC_HAS_ARGP) += $(top_builddir)lib/libuargp.so -+ -+objclean-y += CLEAN_libuargp -+ -+ifeq ($(DOMULTI),n) -+ifeq ($(DOPIC),y) -+$(top_builddir)lib/libuargp.so: $(top_builddir)lib/libuargp.a $(libc.depend) -+else -+$(top_builddir)lib/libuargp.so: $(libuargp_OUT)/libuargp_so.a $(libc.depend) -+endif -+ $(call link.so,$(libuargp_FULL_NAME),$(MAJOR_VERSION)) -+else -+$(top_builddir)lib/libuargp.so: $(libuargp_OUT)/libuargp.oS $(libc.depend) -+ $(call linkm.so,$(libuargp_FULL_NAME),$(MAJOR_VERSION)) -+endif -+ -+$(libuargp_OUT)/libuargp_so.a: $(libuargp-so-y) -+ $(Q)$(RM) $@ -+ $(do_ar) -+ -+$(libuargp_OUT)/libuargp.oS: $(libuargp_SRCS) -+ $(Q)$(RM) $@ -+ $(compile-m) -+ -+$(top_builddir)lib/libuargp.a: $(libuargp-a-y) -+ $(Q)$(INSTALL) -d $(dir $@) -+ $(Q)$(RM) $@ -+ $(do_ar) -+ -+CLEAN_libuargp: -+ $(do_rm) $(addprefix $(libuargp_OUT)/*., o os oS a) -diff --git a/libuargp/argp-ba.c b/libuargp/argp-ba.c -new file mode 100644 -index 0000000..3522b02 ---- /dev/null -+++ b/libuargp/argp-ba.c -@@ -0,0 +1,26 @@ -+/* Default definition for ARGP_PROGRAM_BUG_ADDRESS. -+ Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Miles Bader . -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+/* If set by the user program, it should point to string that is the -+ bug-reporting address for the program. It will be printed by argp_help if -+ the ARGP_HELP_BUG_ADDR flag is set (as it is by various standard help -+ messages), embedded in a sentence that says something like `Report bugs to -+ ADDR.'. */ -+const char *argp_program_bug_address; -diff --git a/libuargp/argp-eexst.c b/libuargp/argp-eexst.c -new file mode 100644 -index 0000000..445b68d ---- /dev/null -+++ b/libuargp/argp-eexst.c -@@ -0,0 +1,32 @@ -+/* Default definition for ARGP_ERR_EXIT_STATUS -+ Copyright (C) 1997 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Miles Bader . -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#ifdef HAVE_CONFIG_H -+# include -+#endif -+ -+#include -+ -+#include -+ -+/* The exit status that argp will use when exiting due to a parsing error. -+ If not defined or set by the user program, this defaults to EX_USAGE from -+ . */ -+error_t argp_err_exit_status = EX_USAGE; -diff --git a/libuargp/argp-fmtstream.c b/libuargp/argp-fmtstream.c -new file mode 100644 -index 0000000..75227f9 ---- /dev/null -+++ b/libuargp/argp-fmtstream.c -@@ -0,0 +1,439 @@ -+/* Word-wrapping and line-truncating streams -+ Copyright (C) 1997-1999,2001,2002,2003,2005 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Miles Bader . -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. -+ -+ Modified for uClibc by: Salvatore Cro -+*/ -+ -+/* This package emulates glibc `line_wrap_stream' semantics for systems that -+ don't have that. */ -+ -+#ifdef HAVE_CONFIG_H -+# include -+#endif -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include "argp-fmtstream.h" -+ -+#ifndef ARGP_FMTSTREAM_USE_LINEWRAP -+ -+#ifndef isblank -+#define isblank(ch) ((ch)==' ' || (ch)=='\t') -+#endif -+ -+#if defined _LIBC && defined USE_IN_LIBIO -+# include -+# include -+# define __vsnprintf(s, l, f, a) _IO_vsnprintf (s, l, f, a) -+#else -+# define __vsnprintf(s, l, f, a) vsnprintf (s, l, f, a) -+#endif -+ -+#define INIT_BUF_SIZE 200 -+#define PRINTF_SIZE_GUESS 150 -+ -+/* Return an argp_fmtstream that outputs to STREAM, and which prefixes lines -+ written on it with LMARGIN spaces and limits them to RMARGIN columns -+ total. If WMARGIN >= 0, words that extend past RMARGIN are wrapped by -+ replacing the whitespace before them with a newline and WMARGIN spaces. -+ Otherwise, chars beyond RMARGIN are simply dropped until a newline. -+ Returns NULL if there was an error. */ -+argp_fmtstream_t -+__argp_make_fmtstream (FILE *stream, -+ size_t lmargin, size_t rmargin, ssize_t wmargin) -+{ -+ argp_fmtstream_t fs; -+ -+ fs = (struct argp_fmtstream *) malloc (sizeof (struct argp_fmtstream)); -+ if (fs != NULL) -+ { -+ fs->stream = stream; -+ -+ fs->lmargin = lmargin; -+ fs->rmargin = rmargin; -+ fs->wmargin = wmargin; -+ fs->point_col = 0; -+ fs->point_offs = 0; -+ -+ fs->buf = (char *) malloc (INIT_BUF_SIZE); -+ if (! fs->buf) -+ { -+ free (fs); -+ fs = 0; -+ } -+ else -+ { -+ fs->p = fs->buf; -+ fs->end = fs->buf + INIT_BUF_SIZE; -+ } -+ } -+ -+ return fs; -+} -+#if 0 -+/* Not exported. */ -+#ifdef weak_alias -+weak_alias (__argp_make_fmtstream, argp_make_fmtstream) -+#endif -+#endif -+ -+/* Flush FS to its stream, and free it (but don't close the stream). */ -+void -+__argp_fmtstream_free (argp_fmtstream_t fs) -+{ -+ __argp_fmtstream_update (fs); -+ if (fs->p > fs->buf) -+ { -+#ifdef USE_IN_LIBIO -+ __fxprintf (fs->stream, "%.*s", (int) (fs->p - fs->buf), fs->buf); -+#else -+ fwrite_unlocked (fs->buf, 1, fs->p - fs->buf, fs->stream); -+#endif -+ } -+ free (fs->buf); -+ free (fs); -+} -+#if 0 -+/* Not exported. */ -+#ifdef weak_alias -+weak_alias (__argp_fmtstream_free, argp_fmtstream_free) -+#endif -+#endif -+ -+/* Process FS's buffer so that line wrapping is done from POINT_OFFS to the -+ end of its buffer. This code is mostly from glibc stdio/linewrap.c. */ -+void -+__argp_fmtstream_update (argp_fmtstream_t fs) -+{ -+ char *buf, *nl; -+ size_t len; -+ -+ /* Scan the buffer for newlines. */ -+ buf = fs->buf + fs->point_offs; -+ while (buf < fs->p) -+ { -+ size_t r; -+ -+ if (fs->point_col == 0 && fs->lmargin != 0) -+ { -+ /* We are starting a new line. Print spaces to the left margin. */ -+ const size_t pad = fs->lmargin; -+ if (fs->p + pad < fs->end) -+ { -+ /* We can fit in them in the buffer by moving the -+ buffer text up and filling in the beginning. */ -+ memmove (buf + pad, buf, fs->p - buf); -+ fs->p += pad; /* Compensate for bigger buffer. */ -+ memset (buf, ' ', pad); /* Fill in the spaces. */ -+ buf += pad; /* Don't bother searching them. */ -+ } -+ else -+ { -+ /* No buffer space for spaces. Must flush. */ -+ size_t i; -+ for (i = 0; i < pad; i++) -+ { -+#ifdef USE_IN_LIBIO -+ if (_IO_fwide (fs->stream, 0) > 0) -+ putwc_unlocked (L' ', fs->stream); -+ else -+#endif -+ putc_unlocked (' ', fs->stream); -+ } -+ } -+ fs->point_col = pad; -+ } -+ -+ len = fs->p - buf; -+ nl = memchr (buf, '\n', len); -+ -+ if (fs->point_col < 0) -+ fs->point_col = 0; -+ -+ if (!nl) -+ { -+ /* The buffer ends in a partial line. */ -+ -+ if (fs->point_col + len < fs->rmargin) -+ { -+ /* The remaining buffer text is a partial line and fits -+ within the maximum line width. Advance point for the -+ characters to be written and stop scanning. */ -+ fs->point_col += len; -+ break; -+ } -+ else -+ /* Set the end-of-line pointer for the code below to -+ the end of the buffer. */ -+ nl = fs->p; -+ } -+ else if (fs->point_col + (nl - buf) < (ssize_t) fs->rmargin) -+ { -+ /* The buffer contains a full line that fits within the maximum -+ line width. Reset point and scan the next line. */ -+ fs->point_col = 0; -+ buf = nl + 1; -+ continue; -+ } -+ -+ /* This line is too long. */ -+ r = fs->rmargin - 1; -+ -+ if (fs->wmargin < 0) -+ { -+ /* Truncate the line by overwriting the excess with the -+ newline and anything after it in the buffer. */ -+ if (nl < fs->p) -+ { -+ memmove (buf + (r - fs->point_col), nl, fs->p - nl); -+ fs->p -= buf + (r - fs->point_col) - nl; -+ /* Reset point for the next line and start scanning it. */ -+ fs->point_col = 0; -+ buf += r + 1; /* Skip full line plus \n. */ -+ } -+ else -+ { -+ /* The buffer ends with a partial line that is beyond the -+ maximum line width. Advance point for the characters -+ written, and discard those past the max from the buffer. */ -+ fs->point_col += len; -+ fs->p -= fs->point_col - r; -+ break; -+ } -+ } -+ else -+ { -+ /* Do word wrap. Go to the column just past the maximum line -+ width and scan back for the beginning of the word there. -+ Then insert a line break. */ -+ -+ char *p, *nextline; -+ int i; -+ -+ p = buf + (r + 1 - fs->point_col); -+ while (p >= buf && !isblank (*p)) -+ --p; -+ nextline = p + 1; /* This will begin the next line. */ -+ -+ if (nextline > buf) -+ { -+ /* Swallow separating blanks. */ -+ if (p >= buf) -+ do -+ --p; -+ while (p >= buf && isblank (*p)); -+ nl = p + 1; /* The newline will replace the first blank. */ -+ } -+ else -+ { -+ /* A single word that is greater than the maximum line width. -+ Oh well. Put it on an overlong line by itself. */ -+ p = buf + (r + 1 - fs->point_col); -+ /* Find the end of the long word. */ -+ do -+ ++p; -+ while (p < nl && !isblank (*p)); -+ if (p == nl) -+ { -+ /* It already ends a line. No fussing required. */ -+ fs->point_col = 0; -+ buf = nl + 1; -+ continue; -+ } -+ /* We will move the newline to replace the first blank. */ -+ nl = p; -+ /* Swallow separating blanks. */ -+ do -+ ++p; -+ while (isblank (*p)); -+ /* The next line will start here. */ -+ nextline = p; -+ } -+ -+ /* Note: There are a bunch of tests below for -+ NEXTLINE == BUF + LEN + 1; this case is where NL happens to fall -+ at the end of the buffer, and NEXTLINE is in fact empty (and so -+ we need not be careful to maintain its contents). */ -+ -+ if ((nextline == buf + len + 1 -+ ? fs->end - nl < fs->wmargin + 1 -+ : nextline - (nl + 1) < fs->wmargin) -+ && fs->p > nextline) -+ { -+ /* The margin needs more blanks than we removed. */ -+ if (fs->end - fs->p > fs->wmargin + 1) -+ /* Make some space for them. */ -+ { -+ size_t mv = fs->p - nextline; -+ memmove (nl + 1 + fs->wmargin, nextline, mv); -+ nextline = nl + 1 + fs->wmargin; -+ len = nextline + mv - buf; -+ *nl++ = '\n'; -+ } -+ else -+ /* Output the first line so we can use the space. */ -+ { -+#if defined _LIBC && defined USE_IN_LIBIO -+ __fxprintf (fs->stream, "%.*s\n", -+ (int) (nl - fs->buf), fs->buf); -+#else -+ if (nl > fs->buf) -+ fwrite_unlocked (fs->buf, 1, nl - fs->buf, fs->stream); -+ putc_unlocked ('\n', fs->stream); -+#endif -+ -+ len += buf - fs->buf; -+ nl = buf = fs->buf; -+ } -+ } -+ else -+ /* We can fit the newline and blanks in before -+ the next word. */ -+ *nl++ = '\n'; -+ -+ if (nextline - nl >= fs->wmargin -+ || (nextline == buf + len + 1 && fs->end - nextline >= fs->wmargin)) -+ /* Add blanks up to the wrap margin column. */ -+ for (i = 0; i < fs->wmargin; ++i) -+ *nl++ = ' '; -+ else -+ for (i = 0; i < fs->wmargin; ++i) -+#ifdef USE_IN_LIBIO -+ if (_IO_fwide (fs->stream, 0) > 0) -+ putwc_unlocked (L' ', fs->stream); -+ else -+#endif -+ putc_unlocked (' ', fs->stream); -+ -+ /* Copy the tail of the original buffer into the current buffer -+ position. */ -+ if (nl < nextline) -+ memmove (nl, nextline, buf + len - nextline); -+ len -= nextline - buf; -+ -+ /* Continue the scan on the remaining lines in the buffer. */ -+ buf = nl; -+ -+ /* Restore bufp to include all the remaining text. */ -+ fs->p = nl + len; -+ -+ /* Reset the counter of what has been output this line. If wmargin -+ is 0, we want to avoid the lmargin getting added, so we set -+ point_col to a magic value of -1 in that case. */ -+ fs->point_col = fs->wmargin ? fs->wmargin : -1; -+ } -+ } -+ -+ /* Remember that we've scanned as far as the end of the buffer. */ -+ fs->point_offs = fs->p - fs->buf; -+} -+ -+/* Ensure that FS has space for AMOUNT more bytes in its buffer, either by -+ growing the buffer, or by flushing it. True is returned iff we succeed. */ -+int -+__argp_fmtstream_ensure (struct argp_fmtstream *fs, size_t amount) -+{ -+ if ((size_t) (fs->end - fs->p) < amount) -+ { -+ ssize_t wrote; -+ -+ /* Flush FS's buffer. */ -+ __argp_fmtstream_update (fs); -+ -+#if defined _LIBC && defined USE_IN_LIBIO -+ __fxprintf (fs->stream, "%.*s", (int) (fs->p - fs->buf), fs->buf); -+ wrote = fs->p - fs->buf; -+#else -+ wrote = fwrite_unlocked (fs->buf, 1, fs->p - fs->buf, fs->stream); -+#endif -+ if (wrote == fs->p - fs->buf) -+ { -+ fs->p = fs->buf; -+ fs->point_offs = 0; -+ } -+ else -+ { -+ fs->p -= wrote; -+ fs->point_offs -= wrote; -+ memmove (fs->buf, fs->buf + wrote, fs->p - fs->buf); -+ return 0; -+ } -+ -+ if ((size_t) (fs->end - fs->buf) < amount) -+ /* Gotta grow the buffer. */ -+ { -+ size_t old_size = fs->end - fs->buf; -+ size_t new_size = old_size + amount; -+ char *new_buf; -+ -+ if (new_size < old_size || ! (new_buf = realloc (fs->buf, new_size))) -+ { -+ __set_errno (ENOMEM); -+ return 0; -+ } -+ -+ fs->buf = new_buf; -+ fs->end = new_buf + new_size; -+ fs->p = fs->buf; -+ } -+ } -+ -+ return 1; -+} -+ -+ssize_t -+__argp_fmtstream_printf (struct argp_fmtstream *fs, const char *fmt, ...) -+{ -+ int out; -+ size_t avail; -+ size_t size_guess = PRINTF_SIZE_GUESS; /* How much space to reserve. */ -+ -+ do -+ { -+ va_list args; -+ -+ if (! __argp_fmtstream_ensure (fs, size_guess)) -+ return -1; -+ -+ va_start (args, fmt); -+ avail = fs->end - fs->p; -+ out = __vsnprintf (fs->p, avail, fmt, args); -+ va_end (args); -+ if ((size_t) out >= avail) -+ size_guess = out + 1; -+ } -+ while ((size_t) out >= avail); -+ -+ fs->p += out; -+ -+ return out; -+} -+#if 0 -+/* Not exported. */ -+#ifdef weak_alias -+weak_alias (__argp_fmtstream_printf, argp_fmtstream_printf) -+#endif -+#endif -+ -+#endif /* !ARGP_FMTSTREAM_USE_LINEWRAP */ -diff --git a/libuargp/argp-fmtstream.h b/libuargp/argp-fmtstream.h -new file mode 100644 -index 0000000..ca7c834 ---- /dev/null -+++ b/libuargp/argp-fmtstream.h -@@ -0,0 +1,314 @@ -+/* Word-wrapping and line-truncating streams. -+ Copyright (C) 1997 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Miles Bader . -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. -+ -+ Modified for uClibc by: Salvatore Cro -+*/ -+ -+/* This package emulates glibc `line_wrap_stream' semantics for systems that -+ don't have that. If the system does have it, it is just a wrapper for -+ that. This header file is only used internally while compiling argp, and -+ shouldn't be installed. */ -+ -+#ifndef _ARGP_FMTSTREAM_H -+#define _ARGP_FMTSTREAM_H -+ -+#include -+#include -+#include -+ -+#ifndef __attribute__ -+/* This feature is available in gcc versions 2.5 and later. */ -+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || defined(__STRICT_ANSI__) -+# define __attribute__(Spec) /* empty */ -+# endif -+/* The __-protected variants of `format' and `printf' attributes -+ are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ -+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || defined(__STRICT_ANSI__) -+# define __format__ format -+# define __printf__ printf -+# endif -+#endif -+ -+#if 0 /* uClibc: disabled */ -+#if (_LIBC - 0 && !defined (USE_IN_LIBIO)) \ -+ || (defined (__GNU_LIBRARY__) && defined (HAVE_LINEWRAP_H)) -+/* line_wrap_stream is available, so use that. */ -+#define ARGP_FMTSTREAM_USE_LINEWRAP -+#endif -+#else -+/* line_wrap stream NOT available */ -+# undef ARGP_FMTSTREAM_USE_LINEWRAP -+#endif -+ -+#ifdef ARGP_FMTSTREAM_USE_LINEWRAP -+/* Just be a simple wrapper for line_wrap_stream; the semantics are -+ *slightly* different, as line_wrap_stream doesn't actually make a new -+ object, it just modifies the given stream (reversibly) to do -+ line-wrapping. Since we control who uses this code, it doesn't matter. */ -+ -+#include -+ -+typedef FILE *argp_fmtstream_t; -+ -+#define argp_make_fmtstream line_wrap_stream -+#define __argp_make_fmtstream line_wrap_stream -+#define argp_fmtstream_free line_unwrap_stream -+#define __argp_fmtstream_free line_unwrap_stream -+ -+#define __argp_fmtstream_putc(fs,ch) putc(ch,fs) -+#define argp_fmtstream_putc(fs,ch) putc(ch,fs) -+#define __argp_fmtstream_puts(fs,str) fputs(str,fs) -+#define argp_fmtstream_puts(fs,str) fputs(str,fs) -+#define __argp_fmtstream_write(fs,str,len) fwrite(str,1,len,fs) -+#define argp_fmtstream_write(fs,str,len) fwrite(str,1,len,fs) -+#define __argp_fmtstream_printf fprintf -+#define argp_fmtstream_printf fprintf -+ -+#define __argp_fmtstream_lmargin line_wrap_lmargin -+#define argp_fmtstream_lmargin line_wrap_lmargin -+#define __argp_fmtstream_set_lmargin line_wrap_set_lmargin -+#define argp_fmtstream_set_lmargin line_wrap_set_lmargin -+#define __argp_fmtstream_rmargin line_wrap_rmargin -+#define argp_fmtstream_rmargin line_wrap_rmargin -+#define __argp_fmtstream_set_rmargin line_wrap_set_rmargin -+#define argp_fmtstream_set_rmargin line_wrap_set_rmargin -+#define __argp_fmtstream_wmargin line_wrap_wmargin -+#define argp_fmtstream_wmargin line_wrap_wmargin -+#define __argp_fmtstream_set_wmargin line_wrap_set_wmargin -+#define argp_fmtstream_set_wmargin line_wrap_set_wmargin -+#define __argp_fmtstream_point line_wrap_point -+#define argp_fmtstream_point line_wrap_point -+ -+#else /* !ARGP_FMTSTREAM_USE_LINEWRAP */ -+/* Guess we have to define our own version. */ -+ -+#ifndef __const -+#define __const const -+#endif -+ -+struct argp_fmtstream -+{ -+ FILE *stream; /* The stream we're outputting to. */ -+ -+ size_t lmargin, rmargin; /* Left and right margins. */ -+ ssize_t wmargin; /* Margin to wrap to, or -1 to truncate. */ -+ -+ /* Point in buffer to which we've processed for wrapping, but not output. */ -+ size_t point_offs; -+ /* Output column at POINT_OFFS, or -1 meaning 0 but don't add lmargin. */ -+ ssize_t point_col; -+ -+ char *buf; /* Output buffer. */ -+ char *p; /* Current end of text in BUF. */ -+ char *end; /* Absolute end of BUF. */ -+}; -+ -+typedef struct argp_fmtstream *argp_fmtstream_t; -+ -+/* Return an argp_fmtstream that outputs to STREAM, and which prefixes lines -+ written on it with LMARGIN spaces and limits them to RMARGIN columns -+ total. If WMARGIN >= 0, words that extend past RMARGIN are wrapped by -+ replacing the whitespace before them with a newline and WMARGIN spaces. -+ Otherwise, chars beyond RMARGIN are simply dropped until a newline. -+ Returns NULL if there was an error. */ -+extern argp_fmtstream_t __argp_make_fmtstream (FILE *__stream, -+ size_t __lmargin, -+ size_t __rmargin, -+ ssize_t __wmargin); -+extern argp_fmtstream_t argp_make_fmtstream (FILE *__stream, -+ size_t __lmargin, -+ size_t __rmargin, -+ ssize_t __wmargin); -+ -+/* Flush __FS to its stream, and free it (but don't close the stream). */ -+extern void __argp_fmtstream_free (argp_fmtstream_t __fs); -+extern void argp_fmtstream_free (argp_fmtstream_t __fs); -+ -+extern ssize_t __argp_fmtstream_printf (argp_fmtstream_t __fs, -+ __const char *__fmt, ...) -+ __attribute__ ((__format__ (printf, 2, 3))); -+extern ssize_t argp_fmtstream_printf (argp_fmtstream_t __fs, -+ __const char *__fmt, ...) -+ __attribute__ ((__format__ (printf, 2, 3))); -+ -+extern int __argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch); -+extern int argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch); -+ -+extern int __argp_fmtstream_puts (argp_fmtstream_t __fs, __const char *__str); -+extern int argp_fmtstream_puts (argp_fmtstream_t __fs, __const char *__str); -+ -+extern size_t __argp_fmtstream_write (argp_fmtstream_t __fs, -+ __const char *__str, size_t __len); -+extern size_t argp_fmtstream_write (argp_fmtstream_t __fs, -+ __const char *__str, size_t __len); -+ -+/* Access macros for various bits of state. */ -+#define argp_fmtstream_lmargin(__fs) ((__fs)->lmargin) -+#define argp_fmtstream_rmargin(__fs) ((__fs)->rmargin) -+#define argp_fmtstream_wmargin(__fs) ((__fs)->wmargin) -+#define __argp_fmtstream_lmargin argp_fmtstream_lmargin -+#define __argp_fmtstream_rmargin argp_fmtstream_rmargin -+#define __argp_fmtstream_wmargin argp_fmtstream_wmargin -+ -+/* Set __FS's left margin to LMARGIN and return the old value. */ -+extern size_t argp_fmtstream_set_lmargin (argp_fmtstream_t __fs, -+ size_t __lmargin); -+extern size_t __argp_fmtstream_set_lmargin (argp_fmtstream_t __fs, -+ size_t __lmargin); -+ -+/* Set __FS's right margin to __RMARGIN and return the old value. */ -+extern size_t argp_fmtstream_set_rmargin (argp_fmtstream_t __fs, -+ size_t __rmargin); -+extern size_t __argp_fmtstream_set_rmargin (argp_fmtstream_t __fs, -+ size_t __rmargin); -+ -+/* Set __FS's wrap margin to __WMARGIN and return the old value. */ -+extern size_t argp_fmtstream_set_wmargin (argp_fmtstream_t __fs, -+ size_t __wmargin); -+extern size_t __argp_fmtstream_set_wmargin (argp_fmtstream_t __fs, -+ size_t __wmargin); -+ -+/* Return the column number of the current output point in __FS. */ -+extern size_t argp_fmtstream_point (argp_fmtstream_t __fs); -+extern size_t __argp_fmtstream_point (argp_fmtstream_t __fs); -+ -+/* Internal routines. */ -+extern void _argp_fmtstream_update (argp_fmtstream_t __fs); -+extern void __argp_fmtstream_update (argp_fmtstream_t __fs); -+extern int _argp_fmtstream_ensure (argp_fmtstream_t __fs, size_t __amount); -+extern int __argp_fmtstream_ensure (argp_fmtstream_t __fs, size_t __amount); -+ -+#ifdef __OPTIMIZE__ -+/* Inline versions of above routines. */ -+ -+#if !_LIBC -+#define __argp_fmtstream_putc argp_fmtstream_putc -+#define __argp_fmtstream_puts argp_fmtstream_puts -+#define __argp_fmtstream_write argp_fmtstream_write -+#define __argp_fmtstream_set_lmargin argp_fmtstream_set_lmargin -+#define __argp_fmtstream_set_rmargin argp_fmtstream_set_rmargin -+#define __argp_fmtstream_set_wmargin argp_fmtstream_set_wmargin -+#define __argp_fmtstream_point argp_fmtstream_point -+#define __argp_fmtstream_update _argp_fmtstream_update -+#define __argp_fmtstream_ensure _argp_fmtstream_ensure -+#endif -+ -+#ifndef ARGP_FS_EI -+#define ARGP_FS_EI __extern_inline -+#endif -+ -+ARGP_FS_EI size_t -+__argp_fmtstream_write (argp_fmtstream_t __fs, -+ __const char *__str, size_t __len) -+{ -+ if (__fs->p + __len <= __fs->end || __argp_fmtstream_ensure (__fs, __len)) -+ { -+ memcpy (__fs->p, __str, __len); -+ __fs->p += __len; -+ return __len; -+ } -+ else -+ return 0; -+} -+ -+ARGP_FS_EI int -+__argp_fmtstream_puts (argp_fmtstream_t __fs, __const char *__str) -+{ -+ size_t __len = strlen (__str); -+ if (__len) -+ { -+ size_t __wrote = __argp_fmtstream_write (__fs, __str, __len); -+ return __wrote == __len ? 0 : -1; -+ } -+ else -+ return 0; -+} -+ -+ARGP_FS_EI int -+__argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch) -+{ -+ if (__fs->p < __fs->end || __argp_fmtstream_ensure (__fs, 1)) -+ return *__fs->p++ = __ch; -+ else -+ return EOF; -+} -+ -+/* Set __FS's left margin to __LMARGIN and return the old value. */ -+ARGP_FS_EI size_t -+__argp_fmtstream_set_lmargin (argp_fmtstream_t __fs, size_t __lmargin) -+{ -+ size_t __old; -+ if ((size_t) (__fs->p - __fs->buf) > __fs->point_offs) -+ __argp_fmtstream_update (__fs); -+ __old = __fs->lmargin; -+ __fs->lmargin = __lmargin; -+ return __old; -+} -+ -+/* Set __FS's right margin to __RMARGIN and return the old value. */ -+ARGP_FS_EI size_t -+__argp_fmtstream_set_rmargin (argp_fmtstream_t __fs, size_t __rmargin) -+{ -+ size_t __old; -+ if ((size_t) (__fs->p - __fs->buf) > __fs->point_offs) -+ __argp_fmtstream_update (__fs); -+ __old = __fs->rmargin; -+ __fs->rmargin = __rmargin; -+ return __old; -+} -+ -+/* Set FS's wrap margin to __WMARGIN and return the old value. */ -+ARGP_FS_EI size_t -+__argp_fmtstream_set_wmargin (argp_fmtstream_t __fs, size_t __wmargin) -+{ -+ size_t __old; -+ if ((size_t) (__fs->p - __fs->buf) > __fs->point_offs) -+ __argp_fmtstream_update (__fs); -+ __old = __fs->wmargin; -+ __fs->wmargin = __wmargin; -+ return __old; -+} -+ -+/* Return the column number of the current output point in __FS. */ -+ARGP_FS_EI size_t -+__argp_fmtstream_point (argp_fmtstream_t __fs) -+{ -+ if ((size_t) (__fs->p - __fs->buf) > __fs->point_offs) -+ __argp_fmtstream_update (__fs); -+ return __fs->point_col >= 0 ? __fs->point_col : 0; -+} -+ -+#if !_LIBC -+#undef __argp_fmtstream_putc -+#undef __argp_fmtstream_puts -+#undef __argp_fmtstream_write -+#undef __argp_fmtstream_set_lmargin -+#undef __argp_fmtstream_set_rmargin -+#undef __argp_fmtstream_set_wmargin -+#undef __argp_fmtstream_point -+#undef __argp_fmtstream_update -+#undef __argp_fmtstream_ensure -+#endif -+ -+#endif /* __OPTIMIZE__ */ -+ -+#endif /* ARGP_FMTSTREAM_USE_LINEWRAP */ -+ -+#endif /* argp-fmtstream.h */ -diff --git a/libuargp/argp-fs-xinl.c b/libuargp/argp-fs-xinl.c -new file mode 100644 -index 0000000..473cbbd ---- /dev/null -+++ b/libuargp/argp-fs-xinl.c -@@ -0,0 +1,44 @@ -+/* Real definitions for extern inline functions in argp-fmtstream.h -+ Copyright (C) 1997, 2003, 2004 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Miles Bader . -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#ifdef HAVE_CONFIG_H -+# include -+#endif -+ -+#define ARGP_FS_EI -+#undef __OPTIMIZE__ -+#define __OPTIMIZE__ 1 -+#include "argp-fmtstream.h" -+ -+#if 0 -+/* Not exported. */ -+/* Add weak aliases. */ -+#if _LIBC - 0 && !defined (ARGP_FMTSTREAM_USE_LINEWRAP) && defined (weak_alias) -+ -+weak_alias (__argp_fmtstream_putc, argp_fmtstream_putc) -+weak_alias (__argp_fmtstream_puts, argp_fmtstream_puts) -+weak_alias (__argp_fmtstream_write, argp_fmtstream_write) -+weak_alias (__argp_fmtstream_set_lmargin, argp_fmtstream_set_lmargin) -+weak_alias (__argp_fmtstream_set_rmargin, argp_fmtstream_set_rmargin) -+weak_alias (__argp_fmtstream_set_wmargin, argp_fmtstream_set_wmargin) -+weak_alias (__argp_fmtstream_point, argp_fmtstream_point) -+ -+#endif -+#endif -diff --git a/libuargp/argp-help.c b/libuargp/argp-help.c -new file mode 100644 -index 0000000..58a5e6e ---- /dev/null -+++ b/libuargp/argp-help.c -@@ -0,0 +1,1882 @@ -+/* Hierarchial argument parsing help output -+ Copyright (C) 1995-2003, 2004, 2005, 2006, 2007 -+ Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Miles Bader . -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. -+ -+ Modified for uClibc by: Salvatore Cro -+*/ -+ -+#ifndef _GNU_SOURCE -+# define _GNU_SOURCE 1 -+#endif -+ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+/* AIX requires this to be the first thing in the file. */ -+#ifndef __GNUC__ -+# if HAVE_ALLOCA_H || defined _LIBC -+# include -+# else -+# ifdef _AIX -+#pragma alloca -+# else -+# ifndef alloca /* predefined by HP cc +Olibcalls */ -+char *alloca (); -+# endif -+# endif -+# endif -+#endif -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#ifdef _LIBC -+# include -+#endif -+ -+#include -+#ifndef _ -+/* This is for other GNU distributions with internationalized messages. */ -+# if (defined HAVE_LIBINTL_H || defined _LIBC) && defined __UCLIBC_HAS_GETTEXT_AWARENESS__ -+# include -+# ifdef _LIBC -+# undef dgettext -+# define dgettext(domain, msgid) \ -+ INTUSE(__dcgettext) (domain, msgid, LC_MESSAGES) -+# endif -+# else -+# define dgettext(domain, msgid) (msgid) -+# endif -+#endif -+ -+#ifndef _LIBC -+# if HAVE_STRERROR_R -+# if !HAVE_DECL_STRERROR_R -+char *strerror_r (int errnum, char *buf, size_t buflen); -+# endif -+# else -+# if !HAVE_DECL_STRERROR -+char *strerror (int errnum); -+# endif -+# endif -+#endif -+ -+#include -+#include "argp-fmtstream.h" -+#include -+#include -+ -+#ifndef SIZE_MAX -+# define SIZE_MAX ((size_t) -1) -+#endif -+ -+/* User-selectable (using an environment variable) formatting parameters. -+ -+ These may be specified in an environment variable called `ARGP_HELP_FMT', -+ with a contents like: VAR1=VAL1,VAR2=VAL2,BOOLVAR2,no-BOOLVAR2 -+ Where VALn must be a positive integer. The list of variables is in the -+ UPARAM_NAMES vector, below. */ -+ -+/* Default parameters. */ -+#define DUP_ARGS 0 /* True if option argument can be duplicated. */ -+#define DUP_ARGS_NOTE 1 /* True to print a note about duplicate args. */ -+#define SHORT_OPT_COL 2 /* column in which short options start */ -+#define LONG_OPT_COL 6 /* column in which long options start */ -+#define DOC_OPT_COL 2 /* column in which doc options start */ -+#define OPT_DOC_COL 29 /* column in which option text starts */ -+#define HEADER_COL 1 /* column in which group headers are printed */ -+#define USAGE_INDENT 12 /* indentation of wrapped usage lines */ -+#define RMARGIN 79 /* right margin used for wrapping */ -+ -+/* User-selectable (using an environment variable) formatting parameters. -+ They must all be of type `int' for the parsing code to work. */ -+struct uparams -+{ -+ /* If true, arguments for an option are shown with both short and long -+ options, even when a given option has both, e.g. `-x ARG, --longx=ARG'. -+ If false, then if an option has both, the argument is only shown with -+ the long one, e.g., `-x, --longx=ARG', and a message indicating that -+ this really means both is printed below the options. */ -+ int dup_args; -+ -+ /* This is true if when DUP_ARGS is false, and some duplicate arguments have -+ been suppressed, an explanatory message should be printed. */ -+ int dup_args_note; -+ -+ /* Various output columns. */ -+ int short_opt_col; -+ int long_opt_col; -+ int doc_opt_col; -+ int opt_doc_col; -+ int header_col; -+ int usage_indent; -+ int rmargin; -+}; -+ -+/* This is a global variable, as user options are only ever read once. */ -+static struct uparams uparams = { -+ DUP_ARGS, DUP_ARGS_NOTE, -+ SHORT_OPT_COL, LONG_OPT_COL, DOC_OPT_COL, OPT_DOC_COL, HEADER_COL, -+ USAGE_INDENT, RMARGIN -+}; -+ -+/* A particular uparam, and what the user name is. */ -+struct uparam_name -+{ -+ const char name[14]; /* User name. */ -+ bool is_bool; /* Whether it's `boolean'. */ -+ uint8_t uparams_offs; /* Location of the (int) field in UPARAMS. */ -+}; -+ -+/* The name-field mappings we know about. */ -+static const struct uparam_name uparam_names[] = -+{ -+ { "dup-args", true, offsetof (struct uparams, dup_args) }, -+ { "dup-args-note", true, offsetof (struct uparams, dup_args_note) }, -+ { "short-opt-col", false, offsetof (struct uparams, short_opt_col) }, -+ { "long-opt-col", false, offsetof (struct uparams, long_opt_col) }, -+ { "doc-opt-col", false, offsetof (struct uparams, doc_opt_col) }, -+ { "opt-doc-col", false, offsetof (struct uparams, opt_doc_col) }, -+ { "header-col", false, offsetof (struct uparams, header_col) }, -+ { "usage-indent", false, offsetof (struct uparams, usage_indent) }, -+ { "rmargin", false, offsetof (struct uparams, rmargin) } -+}; -+#define nuparam_names (sizeof (uparam_names) / sizeof (uparam_names[0])) -+ -+/* Read user options from the environment, and fill in UPARAMS appropiately. */ -+static void -+fill_in_uparams (const struct argp_state *state) -+{ -+ const char *var = getenv ("ARGP_HELP_FMT"); -+ -+#define SKIPWS(p) do { while (isspace (*p)) p++; } while (0); -+ -+ if (var) -+ /* Parse var. */ -+ while (*var) -+ { -+ SKIPWS (var); -+ -+ if (isalpha (*var)) -+ { -+ size_t var_len; -+ const struct uparam_name *un; -+ int unspec = 0, val = 0; -+ const char *arg = var; -+ -+ while (isalnum (*arg) || *arg == '-' || *arg == '_') -+ arg++; -+ var_len = arg - var; -+ -+ SKIPWS (arg); -+ -+ if (*arg == '\0' || *arg == ',') -+ unspec = 1; -+ else if (*arg == '=') -+ { -+ arg++; -+ SKIPWS (arg); -+ } -+ -+ if (unspec) -+ { -+ if (var[0] == 'n' && var[1] == 'o' && var[2] == '-') -+ { -+ val = 0; -+ var += 3; -+ var_len -= 3; -+ } -+ else -+ val = 1; -+ } -+ else if (isdigit (*arg)) -+ { -+ val = atoi (arg); -+ while (isdigit (*arg)) -+ arg++; -+ SKIPWS (arg); -+ } -+ -+ un = uparam_names; -+ size_t u; -+ for (u = 0; u < nuparam_names; ++un, ++u) -+ if (strlen (un->name) == var_len -+ && strncmp (var, un->name, var_len) == 0) -+ { -+ if (unspec && !un->is_bool) -+ argp_failure (state, 0, 0, -+ dgettext (state == NULL ? NULL -+ : state->root_argp->argp_domain, -+ "\ -+%.*s: ARGP_HELP_FMT parameter requires a value"), -+ (int) var_len, var); -+ else -+ *(int *)((char *)&uparams + un->uparams_offs) = val; -+ break; -+ } -+ if (u == nuparam_names) -+ argp_failure (state, 0, 0, -+ dgettext (state == NULL ? NULL -+ : state->root_argp->argp_domain, "\ -+%.*s: Unknown ARGP_HELP_FMT parameter"), -+ (int) var_len, var); -+ -+ var = arg; -+ if (*var == ',') -+ var++; -+ } -+ else if (*var) -+ { -+ argp_failure (state, 0, 0, -+ dgettext (state == NULL ? NULL -+ : state->root_argp->argp_domain, -+ "Garbage in ARGP_HELP_FMT: %s"), var); -+ break; -+ } -+ } -+} -+ -+/* Returns true if OPT hasn't been marked invisible. Visibility only affects -+ whether OPT is displayed or used in sorting, not option shadowing. */ -+#define ovisible(opt) (! ((opt)->flags & OPTION_HIDDEN)) -+ -+/* Returns true if OPT is an alias for an earlier option. */ -+#define oalias(opt) ((opt)->flags & OPTION_ALIAS) -+ -+/* Returns true if OPT is an documentation-only entry. */ -+#define odoc(opt) ((opt)->flags & OPTION_DOC) -+ -+/* Returns true if OPT is the end-of-list marker for a list of options. */ -+#define oend(opt) __option_is_end (opt) -+ -+/* Returns true if OPT has a short option. */ -+#define oshort(opt) __option_is_short (opt) -+ -+/* -+ The help format for a particular option is like: -+ -+ -xARG, -yARG, --long1=ARG, --long2=ARG Documentation... -+ -+ Where ARG will be omitted if there's no argument, for this option, or -+ will be surrounded by "[" and "]" appropiately if the argument is -+ optional. The documentation string is word-wrapped appropiately, and if -+ the list of options is long enough, it will be started on a separate line. -+ If there are no short options for a given option, the first long option is -+ indented slighly in a way that's supposed to make most long options appear -+ to be in a separate column. -+ -+ For example, the following output (from ps): -+ -+ -p PID, --pid=PID List the process PID -+ --pgrp=PGRP List processes in the process group PGRP -+ -P, -x, --no-parent Include processes without parents -+ -Q, --all-fields Don't elide unusable fields (normally if there's -+ some reason ps can't print a field for any -+ process, it's removed from the output entirely) -+ -r, --reverse, --gratuitously-long-reverse-option -+ Reverse the order of any sort -+ --session[=SID] Add the processes from the session SID (which -+ defaults to the sid of the current process) -+ -+ Here are some more options: -+ -f ZOT, --foonly=ZOT Glork a foonly -+ -z, --zaza Snit a zar -+ -+ -?, --help Give this help list -+ --usage Give a short usage message -+ -V, --version Print program version -+ -+ The struct argp_option array for the above could look like: -+ -+ { -+ {"pid", 'p', "PID", 0, "List the process PID"}, -+ {"pgrp", OPT_PGRP, "PGRP", 0, "List processes in the process group PGRP"}, -+ {"no-parent", 'P', 0, 0, "Include processes without parents"}, -+ {0, 'x', 0, OPTION_ALIAS}, -+ {"all-fields",'Q', 0, 0, "Don't elide unusable fields (normally" -+ " if there's some reason ps can't" -+ " print a field for any process, it's" -+ " removed from the output entirely)" }, -+ {"reverse", 'r', 0, 0, "Reverse the order of any sort"}, -+ {"gratuitously-long-reverse-option", 0, 0, OPTION_ALIAS}, -+ {"session", OPT_SESS, "SID", OPTION_ARG_OPTIONAL, -+ "Add the processes from the session" -+ " SID (which defaults to the sid of" -+ " the current process)" }, -+ -+ {0,0,0,0, "Here are some more options:"}, -+ {"foonly", 'f', "ZOT", 0, "Glork a foonly"}, -+ {"zaza", 'z', 0, 0, "Snit a zar"}, -+ -+ {0} -+ } -+ -+ Note that the last three options are automatically supplied by argp_parse, -+ unless you tell it not to with ARGP_NO_HELP. -+ -+*/ -+ -+/* Returns true if CH occurs between BEG and END. */ -+static int -+find_char (char ch, char *beg, char *end) -+{ -+ while (beg < end) -+ if (*beg == ch) -+ return 1; -+ else -+ beg++; -+ return 0; -+} -+ -+struct hol_cluster; /* fwd decl */ -+ -+struct hol_entry -+{ -+ /* First option. */ -+ const struct argp_option *opt; -+ /* Number of options (including aliases). */ -+ unsigned num; -+ -+ /* A pointers into the HOL's short_options field, to the first short option -+ letter for this entry. The order of the characters following this point -+ corresponds to the order of options pointed to by OPT, and there are at -+ most NUM. A short option recorded in a option following OPT is only -+ valid if it occurs in the right place in SHORT_OPTIONS (otherwise it's -+ probably been shadowed by some other entry). */ -+ char *short_options; -+ -+ /* Entries are sorted by their group first, in the order: -+ 1, 2, ..., n, 0, -m, ..., -2, -1 -+ and then alphabetically within each group. The default is 0. */ -+ int group; -+ -+ /* The cluster of options this entry belongs to, or 0 if none. */ -+ struct hol_cluster *cluster; -+ -+ /* The argp from which this option came. */ -+ const struct argp *argp; -+}; -+ -+/* A cluster of entries to reflect the argp tree structure. */ -+struct hol_cluster -+{ -+ /* A descriptive header printed before options in this cluster. */ -+ const char *header; -+ -+ /* Used to order clusters within the same group with the same parent, -+ according to the order in which they occurred in the parent argp's child -+ list. */ -+ int index; -+ -+ /* How to sort this cluster with respect to options and other clusters at the -+ same depth (clusters always follow options in the same group). */ -+ int group; -+ -+ /* The cluster to which this cluster belongs, or 0 if it's at the base -+ level. */ -+ struct hol_cluster *parent; -+ -+ /* The argp from which this cluster is (eventually) derived. */ -+ const struct argp *argp; -+ -+ /* The distance this cluster is from the root. */ -+ int depth; -+ -+ /* Clusters in a given hol are kept in a linked list, to make freeing them -+ possible. */ -+ struct hol_cluster *next; -+}; -+ -+/* A list of options for help. */ -+struct hol -+{ -+ /* An array of hol_entry's. */ -+ struct hol_entry *entries; -+ /* The number of entries in this hol. If this field is zero, the others -+ are undefined. */ -+ unsigned num_entries; -+ -+ /* A string containing all short options in this HOL. Each entry contains -+ pointers into this string, so the order can't be messed with blindly. */ -+ char *short_options; -+ -+ /* Clusters of entries in this hol. */ -+ struct hol_cluster *clusters; -+}; -+ -+/* Create a struct hol from the options in ARGP. CLUSTER is the -+ hol_cluster in which these entries occur, or 0, if at the root. */ -+static struct hol * -+make_hol (const struct argp *argp, struct hol_cluster *cluster) -+{ -+ char *so; -+ const struct argp_option *o; -+ const struct argp_option *opts = argp->options; -+ struct hol_entry *entry; -+ unsigned num_short_options = 0; -+ struct hol *hol = malloc (sizeof (struct hol)); -+ -+ assert (hol); -+ -+ hol->num_entries = 0; -+ hol->clusters = 0; -+ -+ if (opts) -+ { -+ int cur_group = 0; -+ -+ /* The first option must not be an alias. */ -+ assert (! oalias (opts)); -+ -+ /* Calculate the space needed. */ -+ for (o = opts; ! oend (o); o++) -+ { -+ if (! oalias (o)) -+ hol->num_entries++; -+ if (oshort (o)) -+ num_short_options++; /* This is an upper bound. */ -+ } -+ -+ hol->entries = malloc (sizeof (struct hol_entry) * hol->num_entries); -+ hol->short_options = malloc (num_short_options + 1); -+ -+ assert (hol->entries && hol->short_options); -+#if SIZE_MAX <= UINT_MAX -+ assert (hol->num_entries <= SIZE_MAX / sizeof (struct hol_entry)); -+#endif -+ -+ /* Fill in the entries. */ -+ so = hol->short_options; -+ for (o = opts, entry = hol->entries; ! oend (o); entry++) -+ { -+ entry->opt = o; -+ entry->num = 0; -+ entry->short_options = so; -+ entry->group = cur_group = -+ o->group -+ ? o->group -+ : ((!o->name && !o->key) -+ ? cur_group + 1 -+ : cur_group); -+ entry->cluster = cluster; -+ entry->argp = argp; -+ -+ do -+ { -+ entry->num++; -+ if (oshort (o) && ! find_char (o->key, hol->short_options, so)) -+ /* O has a valid short option which hasn't already been used.*/ -+ *so++ = o->key; -+ o++; -+ } -+ while (! oend (o) && oalias (o)); -+ } -+ *so = '\0'; /* null terminated so we can find the length */ -+ } -+ -+ return hol; -+} -+ -+/* Add a new cluster to HOL, with the given GROUP and HEADER (taken from the -+ associated argp child list entry), INDEX, and PARENT, and return a pointer -+ to it. ARGP is the argp that this cluster results from. */ -+static struct hol_cluster * -+hol_add_cluster (struct hol *hol, int group, const char *header, int index, -+ struct hol_cluster *parent, const struct argp *argp) -+{ -+ struct hol_cluster *cl = malloc (sizeof (struct hol_cluster)); -+ if (cl) -+ { -+ cl->group = group; -+ cl->header = header; -+ -+ cl->index = index; -+ cl->parent = parent; -+ cl->argp = argp; -+ cl->depth = parent ? parent->depth + 1 : 0; -+ -+ cl->next = hol->clusters; -+ hol->clusters = cl; -+ } -+ return cl; -+} -+ -+/* Free HOL and any resources it uses. */ -+static void -+hol_free (struct hol *hol) -+{ -+ struct hol_cluster *cl = hol->clusters; -+ -+ while (cl) -+ { -+ struct hol_cluster *next = cl->next; -+ free (cl); -+ cl = next; -+ } -+ -+ if (hol->num_entries > 0) -+ { -+ free (hol->entries); -+ free (hol->short_options); -+ } -+ -+ free (hol); -+} -+ -+static int -+hol_entry_short_iterate (const struct hol_entry *entry, -+ int (*func)(const struct argp_option *opt, -+ const struct argp_option *real, -+ const char *domain, void *cookie), -+ const char *domain, void *cookie) -+{ -+ unsigned nopts; -+ int val = 0; -+ const struct argp_option *opt, *real = entry->opt; -+ char *so = entry->short_options; -+ -+ for (opt = real, nopts = entry->num; nopts > 0 && !val; opt++, nopts--) -+ if (oshort (opt) && *so == opt->key) -+ { -+ if (!oalias (opt)) -+ real = opt; -+ if (ovisible (opt)) -+ val = (*func)(opt, real, domain, cookie); -+ so++; -+ } -+ -+ return val; -+} -+ -+static __inline__ int -+__attribute__ ((always_inline)) -+hol_entry_long_iterate (const struct hol_entry *entry, -+ int (*func)(const struct argp_option *opt, -+ const struct argp_option *real, -+ const char *domain, void *cookie), -+ const char *domain, void *cookie) -+{ -+ unsigned nopts; -+ int val = 0; -+ const struct argp_option *opt, *real = entry->opt; -+ -+ for (opt = real, nopts = entry->num; nopts > 0 && !val; opt++, nopts--) -+ if (opt->name) -+ { -+ if (!oalias (opt)) -+ real = opt; -+ if (ovisible (opt)) -+ val = (*func)(opt, real, domain, cookie); -+ } -+ -+ return val; -+} -+ -+/* Iterator that returns true for the first short option. */ -+static __inline__ int -+until_short (const struct argp_option *opt, const struct argp_option *real, -+ const char *domain, void *cookie) -+{ -+ return oshort (opt) ? opt->key : 0; -+} -+ -+/* Returns the first valid short option in ENTRY, or 0 if there is none. */ -+static char -+hol_entry_first_short (const struct hol_entry *entry) -+{ -+ return hol_entry_short_iterate (entry, until_short, -+ entry->argp->argp_domain, 0); -+} -+ -+/* Returns the first valid long option in ENTRY, or 0 if there is none. */ -+static const char * -+hol_entry_first_long (const struct hol_entry *entry) -+{ -+ const struct argp_option *opt; -+ unsigned num; -+ for (opt = entry->opt, num = entry->num; num > 0; opt++, num--) -+ if (opt->name && ovisible (opt)) -+ return opt->name; -+ return 0; -+} -+ -+/* Returns the entry in HOL with the long option name NAME, or 0 if there is -+ none. */ -+static struct hol_entry * -+hol_find_entry (struct hol *hol, const char *name) -+{ -+ struct hol_entry *entry = hol->entries; -+ unsigned num_entries = hol->num_entries; -+ -+ while (num_entries-- > 0) -+ { -+ const struct argp_option *opt = entry->opt; -+ unsigned num_opts = entry->num; -+ -+ while (num_opts-- > 0) -+ if (opt->name && ovisible (opt) && strcmp (opt->name, name) == 0) -+ return entry; -+ else -+ opt++; -+ -+ entry++; -+ } -+ -+ return 0; -+} -+ -+/* If an entry with the long option NAME occurs in HOL, set it's special -+ sort position to GROUP. */ -+static void -+hol_set_group (struct hol *hol, const char *name, int group) -+{ -+ struct hol_entry *entry = hol_find_entry (hol, name); -+ if (entry) -+ entry->group = group; -+} -+ -+/* Order by group: 0, 1, 2, ..., n, -m, ..., -2, -1. -+ EQ is what to return if GROUP1 and GROUP2 are the same. */ -+static int -+group_cmp (int group1, int group2, int eq) -+{ -+ if (group1 == group2) -+ return eq; -+ else if ((group1 < 0 && group2 < 0) || (group1 >= 0 && group2 >= 0)) -+ return group1 - group2; -+ else -+ return group2 - group1; -+} -+ -+/* Compare clusters CL1 & CL2 by the order that they should appear in -+ output. */ -+static int -+hol_cluster_cmp (const struct hol_cluster *cl1, const struct hol_cluster *cl2) -+{ -+ /* If one cluster is deeper than the other, use its ancestor at the same -+ level, so that finding the common ancestor is straightforward. */ -+ while (cl1->depth > cl2->depth) -+ cl1 = cl1->parent; -+ while (cl2->depth > cl1->depth) -+ cl2 = cl2->parent; -+ -+ /* Now reduce both clusters to their ancestors at the point where both have -+ a common parent; these can be directly compared. */ -+ while (cl1->parent != cl2->parent) -+ cl1 = cl1->parent, cl2 = cl2->parent; -+ -+ return group_cmp (cl1->group, cl2->group, cl2->index - cl1->index); -+} -+ -+/* Return the ancestor of CL that's just below the root (i.e., has a parent -+ of 0). */ -+static struct hol_cluster * -+hol_cluster_base (struct hol_cluster *cl) -+{ -+ while (cl->parent) -+ cl = cl->parent; -+ return cl; -+} -+ -+/* Return true if CL1 is a child of CL2. */ -+static int -+hol_cluster_is_child (const struct hol_cluster *cl1, -+ const struct hol_cluster *cl2) -+{ -+ while (cl1 && cl1 != cl2) -+ cl1 = cl1->parent; -+ return cl1 == cl2; -+} -+ -+/* Given the name of a OPTION_DOC option, modifies NAME to start at the tail -+ that should be used for comparisons, and returns true iff it should be -+ treated as a non-option. */ -+static int -+canon_doc_option (const char **name) -+{ -+ int non_opt; -+ /* Skip initial whitespace. */ -+ while (isspace (**name)) -+ (*name)++; -+ /* Decide whether this looks like an option (leading `-') or not. */ -+ non_opt = (**name != '-'); -+ /* Skip until part of name used for sorting. */ -+ while (**name && !isalnum (**name)) -+ (*name)++; -+ return non_opt; -+} -+ -+/* Order ENTRY1 & ENTRY2 by the order which they should appear in a help -+ listing. */ -+static int -+hol_entry_cmp (const struct hol_entry *entry1, -+ const struct hol_entry *entry2) -+{ -+ /* The group numbers by which the entries should be ordered; if either is -+ in a cluster, then this is just the group within the cluster. */ -+ int group1 = entry1->group, group2 = entry2->group; -+ -+ if (entry1->cluster != entry2->cluster) -+ { -+ /* The entries are not within the same cluster, so we can't compare them -+ directly, we have to use the appropiate clustering level too. */ -+ if (! entry1->cluster) -+ /* ENTRY1 is at the `base level', not in a cluster, so we have to -+ compare it's group number with that of the base cluster in which -+ ENTRY2 resides. Note that if they're in the same group, the -+ clustered option always comes laster. */ -+ return group_cmp (group1, hol_cluster_base (entry2->cluster)->group, -1); -+ else if (! entry2->cluster) -+ /* Likewise, but ENTRY2's not in a cluster. */ -+ return group_cmp (hol_cluster_base (entry1->cluster)->group, group2, 1); -+ else -+ /* Both entries are in clusters, we can just compare the clusters. */ -+ return hol_cluster_cmp (entry1->cluster, entry2->cluster); -+ } -+ else if (group1 == group2) -+ /* The entries are both in the same cluster and group, so compare them -+ alphabetically. */ -+ { -+ int short1 = hol_entry_first_short (entry1); -+ int short2 = hol_entry_first_short (entry2); -+ int doc1 = odoc (entry1->opt); -+ int doc2 = odoc (entry2->opt); -+ const char *long1 = hol_entry_first_long (entry1); -+ const char *long2 = hol_entry_first_long (entry2); -+ -+ if (doc1) -+ doc1 = long1 != NULL && canon_doc_option (&long1); -+ if (doc2) -+ doc2 = long2 != NULL && canon_doc_option (&long2); -+ -+ if (doc1 != doc2) -+ /* `documentation' options always follow normal options (or -+ documentation options that *look* like normal options). */ -+ return doc1 - doc2; -+ else if (!short1 && !short2 && long1 && long2) -+ /* Only long options. */ -+ return strcasecmp (long1, long2); -+ else -+ /* Compare short/short, long/short, short/long, using the first -+ character of long options. Entries without *any* valid -+ options (such as options with OPTION_HIDDEN set) will be put -+ first, but as they're not displayed, it doesn't matter where -+ they are. */ -+ { -+ char first1 = short1 ? short1 : long1 ? *long1 : 0; -+ char first2 = short2 ? short2 : long2 ? *long2 : 0; -+#ifdef _tolower -+ int lower_cmp = _tolower (first1) - _tolower (first2); -+#else -+ int lower_cmp = tolower (first1) - tolower (first2); -+#endif -+ /* Compare ignoring case, except when the options are both the -+ same letter, in which case lower-case always comes first. */ -+ return lower_cmp ? lower_cmp : first2 - first1; -+ } -+ } -+ else -+ /* Within the same cluster, but not the same group, so just compare -+ groups. */ -+ return group_cmp (group1, group2, 0); -+} -+ -+/* Version of hol_entry_cmp with correct signature for qsort. */ -+static int -+hol_entry_qcmp (const void *entry1_v, const void *entry2_v) -+{ -+ return hol_entry_cmp (entry1_v, entry2_v); -+} -+ -+/* Sort HOL by group and alphabetically by option name (with short options -+ taking precedence over long). Since the sorting is for display purposes -+ only, the shadowing of options isn't effected. */ -+static void -+hol_sort (struct hol *hol) -+{ -+ if (hol->num_entries > 0) -+ qsort (hol->entries, hol->num_entries, sizeof (struct hol_entry), -+ hol_entry_qcmp); -+} -+ -+/* Append MORE to HOL, destroying MORE in the process. Options in HOL shadow -+ any in MORE with the same name. */ -+static void -+hol_append (struct hol *hol, struct hol *more) -+{ -+ struct hol_cluster **cl_end = &hol->clusters; -+ -+ /* Steal MORE's cluster list, and add it to the end of HOL's. */ -+ while (*cl_end) -+ cl_end = &(*cl_end)->next; -+ *cl_end = more->clusters; -+ more->clusters = 0; -+ -+ /* Merge entries. */ -+ if (more->num_entries > 0) -+ { -+ if (hol->num_entries == 0) -+ { -+ hol->num_entries = more->num_entries; -+ hol->entries = more->entries; -+ hol->short_options = more->short_options; -+ more->num_entries = 0; /* Mark MORE's fields as invalid. */ -+ } -+ else -+ /* Append the entries in MORE to those in HOL, taking care to only add -+ non-shadowed SHORT_OPTIONS values. */ -+ { -+ unsigned left; -+ char *so, *more_so; -+ struct hol_entry *e; -+ unsigned num_entries = hol->num_entries + more->num_entries; -+ struct hol_entry *entries = -+ malloc (num_entries * sizeof (struct hol_entry)); -+ unsigned hol_so_len = strlen (hol->short_options); -+ char *short_options = -+ malloc (hol_so_len + strlen (more->short_options) + 1); -+ -+ assert (entries && short_options); -+#if SIZE_MAX <= UINT_MAX -+ assert (num_entries <= SIZE_MAX / sizeof (struct hol_entry)); -+#endif -+ -+ mempcpy (mempcpy (entries, hol->entries, -+ hol->num_entries * sizeof (struct hol_entry)), -+ more->entries, -+ more->num_entries * sizeof (struct hol_entry)); -+ -+ mempcpy (short_options, hol->short_options, hol_so_len); -+ -+ /* Fix up the short options pointers from HOL. */ -+ for (e = entries, left = hol->num_entries; left > 0; e++, left--) -+ e->short_options += (short_options - hol->short_options); -+ -+ /* Now add the short options from MORE, fixing up its entries -+ too. */ -+ so = short_options + hol_so_len; -+ more_so = more->short_options; -+ for (left = more->num_entries; left > 0; e++, left--) -+ { -+ int opts_left; -+ const struct argp_option *opt; -+ -+ e->short_options = so; -+ -+ for (opts_left = e->num, opt = e->opt; opts_left; opt++, opts_left--) -+ { -+ int ch = *more_so; -+ if (oshort (opt) && ch == opt->key) -+ /* The next short option in MORE_SO, CH, is from OPT. */ -+ { -+ if (! find_char (ch, short_options, -+ short_options + hol_so_len)) -+ /* The short option CH isn't shadowed by HOL's options, -+ so add it to the sum. */ -+ *so++ = ch; -+ more_so++; -+ } -+ } -+ } -+ -+ *so = '\0'; -+ -+ free (hol->entries); -+ free (hol->short_options); -+ -+ hol->entries = entries; -+ hol->num_entries = num_entries; -+ hol->short_options = short_options; -+ } -+ } -+ -+ hol_free (more); -+} -+ -+/* Inserts enough spaces to make sure STREAM is at column COL. */ -+static void -+indent_to (argp_fmtstream_t stream, unsigned col) -+{ -+ int needed = col - __argp_fmtstream_point (stream); -+ while (needed-- > 0) -+ __argp_fmtstream_putc (stream, ' '); -+} -+ -+/* Output to STREAM either a space, or a newline if there isn't room for at -+ least ENSURE characters before the right margin. */ -+static void -+space (argp_fmtstream_t stream, size_t ensure) -+{ -+ if (__argp_fmtstream_point (stream) + ensure -+ >= __argp_fmtstream_rmargin (stream)) -+ __argp_fmtstream_putc (stream, '\n'); -+ else -+ __argp_fmtstream_putc (stream, ' '); -+} -+ -+/* If the option REAL has an argument, we print it in using the printf -+ format REQ_FMT or OPT_FMT depending on whether it's a required or -+ optional argument. */ -+static void -+arg (const struct argp_option *real, const char *req_fmt, const char *opt_fmt, -+ const char *domain, argp_fmtstream_t stream) -+{ -+ if (real->arg) -+ { -+ if (real->flags & OPTION_ARG_OPTIONAL) -+ __argp_fmtstream_printf (stream, opt_fmt, -+ dgettext (domain, real->arg)); -+ else -+ __argp_fmtstream_printf (stream, req_fmt, -+ dgettext (domain, real->arg)); -+ } -+} -+ -+/* Helper functions for hol_entry_help. */ -+ -+/* State used during the execution of hol_help. */ -+struct hol_help_state -+{ -+ /* PREV_ENTRY should contain the previous entry printed, or 0. */ -+ struct hol_entry *prev_entry; -+ -+ /* If an entry is in a different group from the previous one, and SEP_GROUPS -+ is true, then a blank line will be printed before any output. */ -+ int sep_groups; -+ -+ /* True if a duplicate option argument was suppressed (only ever set if -+ UPARAMS.dup_args is false). */ -+ int suppressed_dup_arg; -+}; -+ -+/* Some state used while printing a help entry (used to communicate with -+ helper functions). See the doc for hol_entry_help for more info, as most -+ of the fields are copied from its arguments. */ -+struct pentry_state -+{ -+ const struct hol_entry *entry; -+ argp_fmtstream_t stream; -+ struct hol_help_state *hhstate; -+ -+ /* True if nothing's been printed so far. */ -+ int first; -+ -+ /* If non-zero, the state that was used to print this help. */ -+ const struct argp_state *state; -+}; -+ -+/* If a user doc filter should be applied to DOC, do so. */ -+static const char * -+filter_doc (const char *doc, int key, const struct argp *argp, -+ const struct argp_state *state) -+{ -+ if (argp && argp->help_filter) -+ /* We must apply a user filter to this output. */ -+ { -+ void *input = __argp_input (argp, state); -+ return (*argp->help_filter) (key, doc, input); -+ } -+ else -+ /* No filter. */ -+ return doc; -+} -+ -+/* Prints STR as a header line, with the margin lines set appropiately, and -+ notes the fact that groups should be separated with a blank line. ARGP is -+ the argp that should dictate any user doc filtering to take place. Note -+ that the previous wrap margin isn't restored, but the left margin is reset -+ to 0. */ -+static void -+print_header (const char *str, const struct argp *argp, -+ struct pentry_state *pest) -+{ -+ const char *tstr = dgettext (argp->argp_domain, str); -+ const char *fstr = filter_doc (tstr, ARGP_KEY_HELP_HEADER, argp, pest->state); -+ -+ if (fstr) -+ { -+ if (*fstr) -+ { -+ if (pest->hhstate->prev_entry) -+ /* Precede with a blank line. */ -+ __argp_fmtstream_putc (pest->stream, '\n'); -+ indent_to (pest->stream, uparams.header_col); -+ __argp_fmtstream_set_lmargin (pest->stream, uparams.header_col); -+ __argp_fmtstream_set_wmargin (pest->stream, uparams.header_col); -+ __argp_fmtstream_puts (pest->stream, fstr); -+ __argp_fmtstream_set_lmargin (pest->stream, 0); -+ __argp_fmtstream_putc (pest->stream, '\n'); -+ } -+ -+ pest->hhstate->sep_groups = 1; /* Separate subsequent groups. */ -+ } -+ -+ if (fstr != tstr) -+ free ((char *) fstr); -+} -+ -+/* Inserts a comma if this isn't the first item on the line, and then makes -+ sure we're at least to column COL. If this *is* the first item on a line, -+ prints any pending whitespace/headers that should precede this line. Also -+ clears FIRST. */ -+static void -+comma (unsigned col, struct pentry_state *pest) -+{ -+ if (pest->first) -+ { -+ const struct hol_entry *pe = pest->hhstate->prev_entry; -+ const struct hol_cluster *cl = pest->entry->cluster; -+ -+ if (pest->hhstate->sep_groups && pe && pest->entry->group != pe->group) -+ __argp_fmtstream_putc (pest->stream, '\n'); -+ -+ if (cl && cl->header && *cl->header -+ && (!pe -+ || (pe->cluster != cl -+ && !hol_cluster_is_child (pe->cluster, cl)))) -+ /* If we're changing clusters, then this must be the start of the -+ ENTRY's cluster unless that is an ancestor of the previous one -+ (in which case we had just popped into a sub-cluster for a bit). -+ If so, then print the cluster's header line. */ -+ { -+ int old_wm = __argp_fmtstream_wmargin (pest->stream); -+ print_header (cl->header, cl->argp, pest); -+ __argp_fmtstream_set_wmargin (pest->stream, old_wm); -+ } -+ -+ pest->first = 0; -+ } -+ else -+ __argp_fmtstream_puts (pest->stream, ", "); -+ -+ indent_to (pest->stream, col); -+} -+ -+/* Print help for ENTRY to STREAM. */ -+static void -+hol_entry_help (struct hol_entry *entry, const struct argp_state *state, -+ argp_fmtstream_t stream, struct hol_help_state *hhstate) -+{ -+ unsigned num; -+ const struct argp_option *real = entry->opt, *opt; -+ char *so = entry->short_options; -+ int have_long_opt = 0; /* We have any long options. */ -+ /* Saved margins. */ -+ int old_lm = __argp_fmtstream_set_lmargin (stream, 0); -+ int old_wm = __argp_fmtstream_wmargin (stream); -+ /* PEST is a state block holding some of our variables that we'd like to -+ share with helper functions. */ -+ struct pentry_state pest = { entry, stream, hhstate, 1, state }; -+ -+ if (! odoc (real)) -+ for (opt = real, num = entry->num; num > 0; opt++, num--) -+ if (opt->name && ovisible (opt)) -+ { -+ have_long_opt = 1; -+ break; -+ } -+ -+ /* First emit short options. */ -+ __argp_fmtstream_set_wmargin (stream, uparams.short_opt_col); /* For truly bizarre cases. */ -+ for (opt = real, num = entry->num; num > 0; opt++, num--) -+ if (oshort (opt) && opt->key == *so) -+ /* OPT has a valid (non shadowed) short option. */ -+ { -+ if (ovisible (opt)) -+ { -+ comma (uparams.short_opt_col, &pest); -+ __argp_fmtstream_putc (stream, '-'); -+ __argp_fmtstream_putc (stream, *so); -+ if (!have_long_opt || uparams.dup_args) -+ arg (real, " %s", "[%s]", -+ state == NULL ? NULL : state->root_argp->argp_domain, -+ stream); -+ else if (real->arg) -+ hhstate->suppressed_dup_arg = 1; -+ } -+ so++; -+ } -+ -+ /* Now, long options. */ -+ if (odoc (real)) -+ /* A `documentation' option. */ -+ { -+ __argp_fmtstream_set_wmargin (stream, uparams.doc_opt_col); -+ for (opt = real, num = entry->num; num > 0; opt++, num--) -+ if (opt->name && ovisible (opt)) -+ { -+ comma (uparams.doc_opt_col, &pest); -+ /* Calling gettext here isn't quite right, since sorting will -+ have been done on the original; but documentation options -+ should be pretty rare anyway... */ -+ __argp_fmtstream_puts (stream, -+ dgettext (state == NULL ? NULL -+ : state->root_argp->argp_domain, -+ opt->name)); -+ } -+ } -+ else -+ /* A real long option. */ -+ { -+ __argp_fmtstream_set_wmargin (stream, uparams.long_opt_col); -+ for (opt = real, num = entry->num; num > 0; opt++, num--) -+ if (opt->name && ovisible (opt)) -+ { -+ comma (uparams.long_opt_col, &pest); -+ __argp_fmtstream_printf (stream, "--%s", opt->name); -+ arg (real, "=%s", "[=%s]", -+ state == NULL ? NULL : state->root_argp->argp_domain, stream); -+ } -+ } -+ -+ /* Next, documentation strings. */ -+ __argp_fmtstream_set_lmargin (stream, 0); -+ -+ if (pest.first) -+ { -+ /* Didn't print any switches, what's up? */ -+ if (!oshort (real) && !real->name) -+ /* This is a group header, print it nicely. */ -+ print_header (real->doc, entry->argp, &pest); -+ else -+ /* Just a totally shadowed option or null header; print nothing. */ -+ goto cleanup; /* Just return, after cleaning up. */ -+ } -+ else -+ { -+ const char *tstr = real->doc ? dgettext (state == NULL ? NULL -+ : state->root_argp->argp_domain, -+ real->doc) : 0; -+ const char *fstr = filter_doc (tstr, real->key, entry->argp, state); -+ if (fstr && *fstr) -+ { -+ unsigned int col = __argp_fmtstream_point (stream); -+ -+ __argp_fmtstream_set_lmargin (stream, uparams.opt_doc_col); -+ __argp_fmtstream_set_wmargin (stream, uparams.opt_doc_col); -+ -+ if (col > (unsigned int) (uparams.opt_doc_col + 3)) -+ __argp_fmtstream_putc (stream, '\n'); -+ else if (col >= (unsigned int) uparams.opt_doc_col) -+ __argp_fmtstream_puts (stream, " "); -+ else -+ indent_to (stream, uparams.opt_doc_col); -+ -+ __argp_fmtstream_puts (stream, fstr); -+ } -+ if (fstr && fstr != tstr) -+ free ((char *) fstr); -+ -+ /* Reset the left margin. */ -+ __argp_fmtstream_set_lmargin (stream, 0); -+ __argp_fmtstream_putc (stream, '\n'); -+ } -+ -+ hhstate->prev_entry = entry; -+ -+cleanup: -+ __argp_fmtstream_set_lmargin (stream, old_lm); -+ __argp_fmtstream_set_wmargin (stream, old_wm); -+} -+ -+/* Output a long help message about the options in HOL to STREAM. */ -+static void -+hol_help (struct hol *hol, const struct argp_state *state, -+ argp_fmtstream_t stream) -+{ -+ unsigned num; -+ struct hol_entry *entry; -+ struct hol_help_state hhstate = { 0, 0, 0 }; -+ -+ for (entry = hol->entries, num = hol->num_entries; num > 0; entry++, num--) -+ hol_entry_help (entry, state, stream, &hhstate); -+ -+ if (hhstate.suppressed_dup_arg && uparams.dup_args_note) -+ { -+ const char *tstr = dgettext (state == NULL ? NULL -+ : state->root_argp->argp_domain, "\ -+Mandatory or optional arguments to long options are also mandatory or \ -+optional for any corresponding short options."); -+ const char *fstr = filter_doc (tstr, ARGP_KEY_HELP_DUP_ARGS_NOTE, -+ state ? state->root_argp : 0, state); -+ if (fstr && *fstr) -+ { -+ __argp_fmtstream_putc (stream, '\n'); -+ __argp_fmtstream_puts (stream, fstr); -+ __argp_fmtstream_putc (stream, '\n'); -+ } -+ if (fstr && fstr != tstr) -+ free ((char *) fstr); -+ } -+} -+ -+/* Helper functions for hol_usage. */ -+ -+/* If OPT is a short option without an arg, append its key to the string -+ pointer pointer to by COOKIE, and advance the pointer. */ -+static int -+add_argless_short_opt (const struct argp_option *opt, -+ const struct argp_option *real, -+ const char *domain, void *cookie) -+{ -+ char **snao_end = cookie; -+ if (!(opt->arg || real->arg) -+ && !((opt->flags | real->flags) & OPTION_NO_USAGE)) -+ *(*snao_end)++ = opt->key; -+ return 0; -+} -+ -+/* If OPT is a short option with an arg, output a usage entry for it to the -+ stream pointed at by COOKIE. */ -+static int -+usage_argful_short_opt (const struct argp_option *opt, -+ const struct argp_option *real, -+ const char *domain, void *cookie) -+{ -+ argp_fmtstream_t stream = cookie; -+ const char *arg = opt->arg; -+ int flags = opt->flags | real->flags; -+ -+ if (! arg) -+ arg = real->arg; -+ -+ if (arg && !(flags & OPTION_NO_USAGE)) -+ { -+ arg = dgettext (domain, arg); -+ -+ if (flags & OPTION_ARG_OPTIONAL) -+ __argp_fmtstream_printf (stream, " [-%c[%s]]", opt->key, arg); -+ else -+ { -+ /* Manually do line wrapping so that it (probably) won't -+ get wrapped at the embedded space. */ -+ space (stream, 6 + strlen (arg)); -+ __argp_fmtstream_printf (stream, "[-%c %s]", opt->key, arg); -+ } -+ } -+ -+ return 0; -+} -+ -+/* Output a usage entry for the long option opt to the stream pointed at by -+ COOKIE. */ -+static int -+usage_long_opt (const struct argp_option *opt, -+ const struct argp_option *real, -+ const char *domain, void *cookie) -+{ -+ argp_fmtstream_t stream = cookie; -+ const char *arg = opt->arg; -+ int flags = opt->flags | real->flags; -+ -+ if (! arg) -+ arg = real->arg; -+ -+ if (! (flags & OPTION_NO_USAGE)) -+ { -+ if (arg) -+ { -+ arg = dgettext (domain, arg); -+ if (flags & OPTION_ARG_OPTIONAL) -+ __argp_fmtstream_printf (stream, " [--%s[=%s]]", opt->name, arg); -+ else -+ __argp_fmtstream_printf (stream, " [--%s=%s]", opt->name, arg); -+ } -+ else -+ __argp_fmtstream_printf (stream, " [--%s]", opt->name); -+ } -+ -+ return 0; -+} -+ -+/* Print a short usage description for the arguments in HOL to STREAM. */ -+static void -+hol_usage (struct hol *hol, argp_fmtstream_t stream) -+{ -+ if (hol->num_entries > 0) -+ { -+ unsigned nentries; -+ struct hol_entry *entry; -+ char *short_no_arg_opts = alloca (strlen (hol->short_options) + 1); -+ char *snao_end = short_no_arg_opts; -+ -+ /* First we put a list of short options without arguments. */ -+ for (entry = hol->entries, nentries = hol->num_entries -+ ; nentries > 0 -+ ; entry++, nentries--) -+ hol_entry_short_iterate (entry, add_argless_short_opt, -+ entry->argp->argp_domain, &snao_end); -+ if (snao_end > short_no_arg_opts) -+ { -+ *snao_end++ = 0; -+ __argp_fmtstream_printf (stream, " [-%s]", short_no_arg_opts); -+ } -+ -+ /* Now a list of short options *with* arguments. */ -+ for (entry = hol->entries, nentries = hol->num_entries -+ ; nentries > 0 -+ ; entry++, nentries--) -+ hol_entry_short_iterate (entry, usage_argful_short_opt, -+ entry->argp->argp_domain, stream); -+ -+ /* Finally, a list of long options (whew!). */ -+ for (entry = hol->entries, nentries = hol->num_entries -+ ; nentries > 0 -+ ; entry++, nentries--) -+ hol_entry_long_iterate (entry, usage_long_opt, -+ entry->argp->argp_domain, stream); -+ } -+} -+ -+/* Make a HOL containing all levels of options in ARGP. CLUSTER is the -+ cluster in which ARGP's entries should be clustered, or 0. */ -+static struct hol * -+argp_hol (const struct argp *argp, struct hol_cluster *cluster) -+{ -+ const struct argp_child *child = argp->children; -+ struct hol *hol = make_hol (argp, cluster); -+ if (child) -+ while (child->argp) -+ { -+ struct hol_cluster *child_cluster = -+ ((child->group || child->header) -+ /* Put CHILD->argp within its own cluster. */ -+ ? hol_add_cluster (hol, child->group, child->header, -+ child - argp->children, cluster, argp) -+ /* Just merge it into the parent's cluster. */ -+ : cluster); -+ hol_append (hol, argp_hol (child->argp, child_cluster)) ; -+ child++; -+ } -+ return hol; -+} -+ -+/* Calculate how many different levels with alternative args strings exist in -+ ARGP. */ -+static size_t -+argp_args_levels (const struct argp *argp) -+{ -+ size_t levels = 0; -+ const struct argp_child *child = argp->children; -+ -+ if (argp->args_doc && strchr (argp->args_doc, '\n')) -+ levels++; -+ -+ if (child) -+ while (child->argp) -+ levels += argp_args_levels ((child++)->argp); -+ -+ return levels; -+} -+ -+/* Print all the non-option args documented in ARGP to STREAM. Any output is -+ preceded by a space. LEVELS is a pointer to a byte vector the length -+ returned by argp_args_levels; it should be initialized to zero, and -+ updated by this routine for the next call if ADVANCE is true. True is -+ returned as long as there are more patterns to output. */ -+static int -+argp_args_usage (const struct argp *argp, const struct argp_state *state, -+ char **levels, int advance, argp_fmtstream_t stream) -+{ -+ char *our_level = *levels; -+ int multiple = 0; -+ const struct argp_child *child = argp->children; -+ const char *tdoc = dgettext (argp->argp_domain, argp->args_doc), *nl = 0; -+ const char *fdoc = filter_doc (tdoc, ARGP_KEY_HELP_ARGS_DOC, argp, state); -+ -+ if (fdoc) -+ { -+ const char *cp = fdoc; -+ nl = strchrnul (cp, '\n'); -+ if (*nl != '\0') -+ /* This is a `multi-level' args doc; advance to the correct position -+ as determined by our state in LEVELS, and update LEVELS. */ -+ { -+ int i; -+ multiple = 1; -+ for (i = 0; i < *our_level; i++) -+ cp = nl + 1, nl = strchrnul (cp, '\n'); -+ (*levels)++; -+ } -+ -+ /* Manually do line wrapping so that it (probably) won't get wrapped at -+ any embedded spaces. */ -+ space (stream, 1 + nl - cp); -+ -+ __argp_fmtstream_write (stream, cp, nl - cp); -+ } -+ if (fdoc && fdoc != tdoc) -+ free ((char *)fdoc); /* Free user's modified doc string. */ -+ -+ if (child) -+ while (child->argp) -+ advance = !argp_args_usage ((child++)->argp, state, levels, advance, stream); -+ -+ if (advance && multiple) -+ { -+ /* Need to increment our level. */ -+ if (*nl) -+ /* There's more we can do here. */ -+ { -+ (*our_level)++; -+ advance = 0; /* Our parent shouldn't advance also. */ -+ } -+ else if (*our_level > 0) -+ /* We had multiple levels, but used them up; reset to zero. */ -+ *our_level = 0; -+ } -+ -+ return !advance; -+} -+ -+/* Print the documentation for ARGP to STREAM; if POST is false, then -+ everything preceeding a `\v' character in the documentation strings (or -+ the whole string, for those with none) is printed, otherwise, everything -+ following the `\v' character (nothing for strings without). Each separate -+ bit of documentation is separated a blank line, and if PRE_BLANK is true, -+ then the first is as well. If FIRST_ONLY is true, only the first -+ occurrence is output. Returns true if anything was output. */ -+static int -+argp_doc (const struct argp *argp, const struct argp_state *state, -+ int post, int pre_blank, int first_only, -+ argp_fmtstream_t stream) -+{ -+ const char *text; -+ const char *inp_text; -+ void *input = 0; -+ int anything = 0; -+ size_t inp_text_limit = 0; -+ const char *doc = dgettext (argp->argp_domain, argp->doc); -+ const struct argp_child *child = argp->children; -+ -+ if (doc) -+ { -+ char *vt = strchr (doc, '\v'); -+ inp_text = post ? (vt ? vt + 1 : 0) : doc; -+ inp_text_limit = (!post && vt) ? (vt - doc) : 0; -+ } -+ else -+ inp_text = 0; -+ -+ if (argp->help_filter) -+ /* We have to filter the doc strings. */ -+ { -+ if (inp_text_limit) -+ /* Copy INP_TEXT so that it's nul-terminated. */ -+ inp_text = strndup (inp_text, inp_text_limit); -+ input = __argp_input (argp, state); -+ text = -+ (*argp->help_filter) (post -+ ? ARGP_KEY_HELP_POST_DOC -+ : ARGP_KEY_HELP_PRE_DOC, -+ inp_text, input); -+ } -+ else -+ text = (const char *) inp_text; -+ -+ if (text) -+ { -+ if (pre_blank) -+ __argp_fmtstream_putc (stream, '\n'); -+ -+ if (text == inp_text && inp_text_limit) -+ __argp_fmtstream_write (stream, inp_text, inp_text_limit); -+ else -+ __argp_fmtstream_puts (stream, text); -+ -+ if (__argp_fmtstream_point (stream) > __argp_fmtstream_lmargin (stream)) -+ __argp_fmtstream_putc (stream, '\n'); -+ -+ anything = 1; -+ } -+ -+ if (text && text != inp_text) -+ free ((char *) text); /* Free TEXT returned from the help filter. */ -+ if (inp_text && inp_text_limit && argp->help_filter) -+ free ((char *) inp_text); /* We copied INP_TEXT, so free it now. */ -+ -+ if (post && argp->help_filter) -+ /* Now see if we have to output a ARGP_KEY_HELP_EXTRA text. */ -+ { -+ text = (*argp->help_filter) (ARGP_KEY_HELP_EXTRA, 0, input); -+ if (text) -+ { -+ if (anything || pre_blank) -+ __argp_fmtstream_putc (stream, '\n'); -+ __argp_fmtstream_puts (stream, text); -+ free ((char *) text); -+ if (__argp_fmtstream_point (stream) -+ > __argp_fmtstream_lmargin (stream)) -+ __argp_fmtstream_putc (stream, '\n'); -+ anything = 1; -+ } -+ } -+ -+ if (child) -+ while (child->argp && !(first_only && anything)) -+ anything |= -+ argp_doc ((child++)->argp, state, -+ post, anything || pre_blank, first_only, -+ stream); -+ -+ return anything; -+} -+ -+/* Output a usage message for ARGP to STREAM. If called from -+ argp_state_help, STATE is the relevent parsing state. FLAGS are from the -+ set ARGP_HELP_*. NAME is what to use wherever a `program name' is -+ needed. */ -+static void -+_help (const struct argp *argp, const struct argp_state *state, FILE *stream, -+ unsigned flags, char *name) -+{ -+ int anything = 0; /* Whether we've output anything. */ -+ struct hol *hol = 0; -+ argp_fmtstream_t fs; -+ -+ if (! stream) -+ return; -+ -+#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE) -+ flockfile (stream); -+#endif -+ -+ fill_in_uparams (state); -+ -+ fs = __argp_make_fmtstream (stream, 0, uparams.rmargin, 0); -+ if (! fs) -+ { -+#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE) -+ funlockfile (stream); -+#endif -+ return; -+ } -+ -+ if (flags & (ARGP_HELP_USAGE | ARGP_HELP_SHORT_USAGE | ARGP_HELP_LONG)) -+ { -+ hol = argp_hol (argp, 0); -+ -+ /* If present, these options always come last. */ -+ hol_set_group (hol, "help", -1); -+ hol_set_group (hol, "version", -1); -+ -+ hol_sort (hol); -+ } -+ -+ if (flags & (ARGP_HELP_USAGE | ARGP_HELP_SHORT_USAGE)) -+ /* Print a short `Usage:' message. */ -+ { -+ int first_pattern = 1, more_patterns; -+ size_t num_pattern_levels = argp_args_levels (argp); -+ char *pattern_levels = alloca (num_pattern_levels); -+ -+ memset (pattern_levels, 0, num_pattern_levels); -+ -+ do -+ { -+ int old_lm; -+ int old_wm = __argp_fmtstream_set_wmargin (fs, uparams.usage_indent); -+ char *levels = pattern_levels; -+ -+ if (first_pattern) -+ __argp_fmtstream_printf (fs, "%s %s", -+ dgettext (argp->argp_domain, "Usage:"), -+ name); -+ else -+ __argp_fmtstream_printf (fs, "%s %s", -+ dgettext (argp->argp_domain, " or: "), -+ name); -+ -+ /* We set the lmargin as well as the wmargin, because hol_usage -+ manually wraps options with newline to avoid annoying breaks. */ -+ old_lm = __argp_fmtstream_set_lmargin (fs, uparams.usage_indent); -+ -+ if (flags & ARGP_HELP_SHORT_USAGE) -+ /* Just show where the options go. */ -+ { -+ if (hol->num_entries > 0) -+ __argp_fmtstream_puts (fs, dgettext (argp->argp_domain, -+ " [OPTION...]")); -+ } -+ else -+ /* Actually print the options. */ -+ { -+ hol_usage (hol, fs); -+ flags |= ARGP_HELP_SHORT_USAGE; /* But only do so once. */ -+ } -+ -+ more_patterns = argp_args_usage (argp, state, &levels, 1, fs); -+ -+ __argp_fmtstream_set_wmargin (fs, old_wm); -+ __argp_fmtstream_set_lmargin (fs, old_lm); -+ -+ __argp_fmtstream_putc (fs, '\n'); -+ anything = 1; -+ -+ first_pattern = 0; -+ } -+ while (more_patterns); -+ } -+ -+ if (flags & ARGP_HELP_PRE_DOC) -+ anything |= argp_doc (argp, state, 0, 0, 1, fs); -+ -+ if (flags & ARGP_HELP_SEE) -+ { -+ __argp_fmtstream_printf (fs, dgettext (argp->argp_domain, "\ -+Try `%s --help' or `%s --usage' for more information.\n"), -+ name, name); -+ anything = 1; -+ } -+ -+ if (flags & ARGP_HELP_LONG) -+ /* Print a long, detailed help message. */ -+ { -+ /* Print info about all the options. */ -+ if (hol->num_entries > 0) -+ { -+ if (anything) -+ __argp_fmtstream_putc (fs, '\n'); -+ hol_help (hol, state, fs); -+ anything = 1; -+ } -+ } -+ -+ if (flags & ARGP_HELP_POST_DOC) -+ /* Print any documentation strings at the end. */ -+ anything |= argp_doc (argp, state, 1, anything, 0, fs); -+ -+ if ((flags & ARGP_HELP_BUG_ADDR) && argp_program_bug_address) -+ { -+ if (anything) -+ __argp_fmtstream_putc (fs, '\n'); -+ __argp_fmtstream_printf (fs, dgettext (argp->argp_domain, -+ "Report bugs to %s.\n"), -+ argp_program_bug_address); -+ anything = 1; -+ } -+ -+#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE) -+ funlockfile (stream); -+#endif -+ -+ if (hol) -+ hol_free (hol); -+ -+ __argp_fmtstream_free (fs); -+} -+ -+/* Output a usage message for ARGP to STREAM. FLAGS are from the set -+ ARGP_HELP_*. NAME is what to use wherever a `program name' is needed. */ -+void argp_help (const struct argp *argp, FILE *stream, -+ unsigned flags, char *name) -+{ -+ _help (argp, 0, stream, flags, name); -+} -+ -+char * -+__argp_short_program_name (void) -+{ -+# ifdef __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__ -+/* -+ * uClibc provides both program_invocation_name and -+ * program_invocation_short_name -+ */ -+ return (char *) program_invocation_short_name; -+# else -+ /* FIXME: What now? Miles suggests that it is better to use NULL, -+ but currently the value is passed on directly to fputs_unlocked, -+ so that requires more changes. */ -+# if __GNUC__ -+# warning No reasonable value to return -+# endif /* __GNUC__ */ -+ return ""; -+# endif -+} -+ -+/* Output, if appropriate, a usage message for STATE to STREAM. FLAGS are -+ from the set ARGP_HELP_*. */ -+void -+argp_state_help (const struct argp_state *state, FILE *stream, unsigned flags) -+{ -+ if ((!state || ! (state->flags & ARGP_NO_ERRS)) && stream) -+ { -+ if (state && (state->flags & ARGP_LONG_ONLY)) -+ flags |= ARGP_HELP_LONG_ONLY; -+ -+ _help (state ? state->root_argp : 0, state, stream, flags, -+ state ? state->name : __argp_short_program_name ()); -+ -+ if (!state || ! (state->flags & ARGP_NO_EXIT)) -+ { -+ if (flags & ARGP_HELP_EXIT_ERR) -+ exit (argp_err_exit_status); -+ if (flags & ARGP_HELP_EXIT_OK) -+ exit (0); -+ } -+ } -+} -+ -+/* If appropriate, print the printf string FMT and following args, preceded -+ by the program name and `:', to stderr, and followed by a `Try ... --help' -+ message, then exit (1). */ -+void -+argp_error (const struct argp_state *state, const char *fmt, ...) -+{ -+ if (!state || !(state->flags & ARGP_NO_ERRS)) -+ { -+ FILE *stream = state ? state->err_stream : stderr; -+ -+ if (stream) -+ { -+ va_list ap; -+ -+#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE) -+ flockfile (stream); -+#endif -+ -+ va_start (ap, fmt); -+ -+#if defined _LIBC && defined USE_IN_LIBIO -+ char *buf; -+ -+ if (_IO_vasprintf (&buf, fmt, ap) < 0) -+ buf = NULL; -+ -+ __fxprintf (stream, "%s: %s\n", -+ state ? state->name : __argp_short_program_name (), buf); -+ -+ free (buf); -+#else -+ fputs_unlocked (state ? state->name : __argp_short_program_name (), -+ stream); -+ putc_unlocked (':', stream); -+ putc_unlocked (' ', stream); -+ -+ vfprintf (stream, fmt, ap); -+ -+ putc_unlocked ('\n', stream); -+#endif -+ -+ argp_state_help (state, stream, ARGP_HELP_STD_ERR); -+ -+ va_end (ap); -+ -+#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE) -+ funlockfile (stream); -+#endif -+ } -+ } -+} -+ -+/* Similar to the standard gnu error-reporting function error(), but will -+ respect the ARGP_NO_EXIT and ARGP_NO_ERRS flags in STATE, and will print -+ to STATE->err_stream. This is useful for argument parsing code that is -+ shared between program startup (when exiting is desired) and runtime -+ option parsing (when typically an error code is returned instead). The -+ difference between this function and argp_error is that the latter is for -+ *parsing errors*, and the former is for other problems that occur during -+ parsing but don't reflect a (syntactic) problem with the input. */ -+void -+argp_failure (const struct argp_state *state, int status, int errnum, -+ const char *fmt, ...) -+{ -+ if (!state || !(state->flags & ARGP_NO_ERRS)) -+ { -+ FILE *stream = state ? state->err_stream : stderr; -+ -+ if (stream) -+ { -+#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE) -+ flockfile (stream); -+#endif -+ -+#if defined _LIBC && defined USE_IN_LIBIO -+ __fxprintf (stream, "%s", -+ state ? state->name : __argp_short_program_name ()); -+#else -+ fputs_unlocked (state ? state->name : __argp_short_program_name (), -+ stream); -+#endif -+ -+ if (fmt) -+ { -+ va_list ap; -+ -+ va_start (ap, fmt); -+#if defined _LIBC && defined USE_IN_LIBIO -+ char *buf; -+ -+ if (_IO_vasprintf (&buf, fmt, ap) < 0) -+ buf = NULL; -+ -+ __fxprintf (stream, ": %s", buf); -+ -+ free (buf); -+#else -+ putc_unlocked (':', stream); -+ putc_unlocked (' ', stream); -+ -+ vfprintf (stream, fmt, ap); -+#endif -+ -+ va_end (ap); -+ } -+ -+ if (errnum) -+ { -+#if (defined _LIBC && defined USE_IN_LIBIO) || defined HAVE_STRERROR_R -+ char buf[200]; -+#endif -+#if defined _LIBC && defined USE_IN_LIBIO -+ __fxprintf (stream, ": %s", -+ strerror_r (errnum, buf, sizeof (buf))); -+#else -+ putc_unlocked (':', stream); -+ putc_unlocked (' ', stream); -+# ifdef HAVE_STRERROR_R -+ fputs (strerror_r (errnum, buf, sizeof (buf)), stream); -+# else -+ fputs (strerror (errnum), stream); -+# endif -+#endif -+ } -+ -+#ifdef USE_IN_LIBIO -+ if (_IO_fwide (stream, 0) > 0) -+ putwc_unlocked (L'\n', stream); -+ else -+#endif -+ putc_unlocked ('\n', stream); -+ -+#if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE) -+ funlockfile (stream); -+#endif -+ -+ if (status && (!state || !(state->flags & ARGP_NO_EXIT))) -+ exit (status); -+ } -+ } -+} -diff --git a/libuargp/argp-parse.c b/libuargp/argp-parse.c -new file mode 100644 -index 0000000..86b2b24 ---- /dev/null -+++ b/libuargp/argp-parse.c -@@ -0,0 +1,949 @@ -+/* Hierarchial argument parsing, layered over getopt -+ Copyright (C) 1995-2000, 2002, 2003, 2004 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Miles Bader . -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. -+ -+ Modified for uClibc by: Salvatore Cro -+*/ -+ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+/* AIX requires this to be the first thing in the file. */ -+#ifndef __GNUC__ -+# if HAVE_ALLOCA_H || defined _LIBC -+# include -+# else -+# ifdef _AIX -+#pragma alloca -+# else -+# ifndef alloca /* predefined by HP cc +Olibcalls */ -+char *alloca (); -+# endif -+# endif -+# endif -+#endif -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#ifndef _ -+/* This is for other GNU distributions with internationalized messages. -+ When compiling libc, the _ macro is predefined. */ -+# if (defined HAVE_LIBINTL_H || defined _LIBC) && defined __UCLIBC_HAS_GETTEXT_AWARENESS__ -+# include -+# ifdef _LIBC -+# undef dgettext -+# define dgettext(domain, msgid) \ -+ INTUSE(__dcgettext) (domain, msgid, LC_MESSAGES) -+# endif -+# else -+# define dgettext(domain, msgid) (msgid) -+# define gettext(msgid) (msgid) -+# endif -+#endif -+#ifndef N_ -+# define N_(msgid) (msgid) -+#endif -+ -+#include -+ -+/* Getopt return values. */ -+#define KEY_END (-1) /* The end of the options. */ -+#define KEY_ARG 1 /* A non-option argument. */ -+#define KEY_ERR '?' /* An error parsing the options. */ -+ -+/* The meta-argument used to prevent any further arguments being interpreted -+ as options. */ -+#define QUOTE "--" -+ -+/* The number of bits we steal in a long-option value for our own use. */ -+#define GROUP_BITS CHAR_BIT -+ -+/* The number of bits available for the user value. */ -+#define USER_BITS ((sizeof ((struct option *)0)->val * CHAR_BIT) - GROUP_BITS) -+#define USER_MASK ((1 << USER_BITS) - 1) -+ -+/* EZ alias for ARGP_ERR_UNKNOWN. */ -+#define EBADKEY ARGP_ERR_UNKNOWN -+ -+/* Default options. */ -+ -+/* When argp is given the --HANG switch, _ARGP_HANG is set and argp will sleep -+ for one second intervals, decrementing _ARGP_HANG until it's zero. Thus -+ you can force the program to continue by attaching a debugger and setting -+ it to 0 yourself. */ -+static volatile int _argp_hang; -+ -+#define OPT_PROGNAME -2 -+#define OPT_USAGE -3 -+#define OPT_HANG -4 -+ -+static const struct argp_option argp_default_options[] = -+{ -+ {"help", '?', 0, 0, N_("Give this help list"), -1}, -+ {"usage", OPT_USAGE, 0, 0, N_("Give a short usage message")}, -+ {"program-name",OPT_PROGNAME,"NAME", OPTION_HIDDEN, N_("Set the program name")}, -+ {"HANG", OPT_HANG, "SECS", OPTION_ARG_OPTIONAL | OPTION_HIDDEN, -+ N_("Hang for SECS seconds (default 3600)")}, -+ {0, 0} -+}; -+ -+static error_t -+argp_default_parser (int key, char *arg, struct argp_state *state) -+{ -+ switch (key) -+ { -+ case '?': -+ argp_state_help (state, state->out_stream, ARGP_HELP_STD_HELP); -+ break; -+ case OPT_USAGE: -+ argp_state_help (state, state->out_stream, -+ ARGP_HELP_USAGE | ARGP_HELP_EXIT_OK); -+ break; -+ -+ case OPT_PROGNAME: /* Set the program name. */ -+#if defined _LIBC || HAVE_DECL_PROGRAM_INVOCATION_NAME -+ program_invocation_name = arg; -+#endif -+ /* [Note that some systems only have PROGRAM_INVOCATION_SHORT_NAME (aka -+ __PROGNAME), in which case, PROGRAM_INVOCATION_NAME is just defined -+ to be that, so we have to be a bit careful here.] */ -+ -+ /* Update what we use for messages. */ -+ state->name = strrchr (arg, '/'); -+ if (state->name) -+ state->name++; -+ else -+ state->name = arg; -+ -+#if defined _LIBC || HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME -+ program_invocation_short_name = state->name; -+#endif -+ -+ if ((state->flags & (ARGP_PARSE_ARGV0 | ARGP_NO_ERRS)) -+ == ARGP_PARSE_ARGV0) -+ /* Update what getopt uses too. */ -+ state->argv[0] = arg; -+ -+ break; -+ -+ case OPT_HANG: -+ _argp_hang = atoi (arg ? arg : "3600"); -+ while (_argp_hang-- > 0) -+ sleep (1); -+ break; -+ -+ default: -+ return EBADKEY; -+ } -+ return 0; -+} -+ -+static const struct argp argp_default_argp = -+ {argp_default_options, &argp_default_parser, NULL, NULL, NULL, NULL, "libc"}; -+ -+ -+static const struct argp_option argp_version_options[] = -+{ -+ {"version", 'V', 0, 0, N_("Print program version"), -1}, -+ {0, 0} -+}; -+ -+static error_t -+argp_version_parser (int key, char *arg, struct argp_state *state) -+{ -+ switch (key) -+ { -+ case 'V': -+ if (argp_program_version_hook) -+ (*argp_program_version_hook) (state->out_stream, state); -+ else if (argp_program_version) -+ fprintf (state->out_stream, "%s\n", argp_program_version); -+ else -+ argp_error (state, dgettext (state->root_argp->argp_domain, -+ "(PROGRAM ERROR) No version known!?")); -+ if (! (state->flags & ARGP_NO_EXIT)) -+ exit (0); -+ break; -+ default: -+ return EBADKEY; -+ } -+ return 0; -+} -+ -+static const struct argp argp_version_argp = -+ {argp_version_options, &argp_version_parser, NULL, NULL, NULL, NULL, "libc"}; -+ -+/* Returns the offset into the getopt long options array LONG_OPTIONS of a -+ long option with called NAME, or -1 if none is found. Passing NULL as -+ NAME will return the number of options. */ -+static int -+find_long_option (struct option *long_options, const char *name) -+{ -+ struct option *l = long_options; -+ while (l->name != NULL) -+ if (name != NULL && strcmp (l->name, name) == 0) -+ return l - long_options; -+ else -+ l++; -+ if (name == NULL) -+ return l - long_options; -+ else -+ return -1; -+} -+ -+ -+/* The state of a `group' during parsing. Each group corresponds to a -+ particular argp structure from the tree of such descending from the top -+ level argp passed to argp_parse. */ -+struct group -+{ -+ /* This group's parsing function. */ -+ argp_parser_t parser; -+ -+ /* Which argp this group is from. */ -+ const struct argp *argp; -+ -+ /* Points to the point in SHORT_OPTS corresponding to the end of the short -+ options for this group. We use it to determine from which group a -+ particular short options is from. */ -+ char *short_end; -+ -+ /* The number of non-option args sucessfully handled by this parser. */ -+ unsigned args_processed; -+ -+ /* This group's parser's parent's group. */ -+ struct group *parent; -+ unsigned parent_index; /* And the our position in the parent. */ -+ -+ /* These fields are swapped into and out of the state structure when -+ calling this group's parser. */ -+ void *input, **child_inputs; -+ void *hook; -+}; -+ -+/* Call GROUP's parser with KEY and ARG, swapping any group-specific info -+ from STATE before calling, and back into state afterwards. If GROUP has -+ no parser, EBADKEY is returned. */ -+static error_t -+group_parse (struct group *group, struct argp_state *state, int key, char *arg) -+{ -+ if (group->parser) -+ { -+ error_t err; -+ state->hook = group->hook; -+ state->input = group->input; -+ state->child_inputs = group->child_inputs; -+ state->arg_num = group->args_processed; -+ err = (*group->parser)(key, arg, state); -+ group->hook = state->hook; -+ return err; -+ } -+ else -+ return EBADKEY; -+} -+ -+struct parser -+{ -+ const struct argp *argp; -+ -+ /* SHORT_OPTS is the getopt short options string for the union of all the -+ groups of options. */ -+ char *short_opts; -+ /* LONG_OPTS is the array of getop long option structures for the union of -+ all the groups of options. */ -+ struct option *long_opts; -+ /* OPT_DATA is the getopt data used for the re-entrant getopt. */ -+ struct _getopt_data opt_data; -+ -+ /* States of the various parsing groups. */ -+ struct group *groups; -+ /* The end of the GROUPS array. */ -+ struct group *egroup; -+ /* An vector containing storage for the CHILD_INPUTS field in all groups. */ -+ void **child_inputs; -+ -+ /* True if we think using getopt is still useful; if false, then -+ remaining arguments are just passed verbatim with ARGP_KEY_ARG. This is -+ cleared whenever getopt returns KEY_END, but may be set again if the user -+ moves the next argument pointer backwards. */ -+ int try_getopt; -+ -+ /* State block supplied to parsing routines. */ -+ struct argp_state state; -+ -+ /* Memory used by this parser. */ -+ void *storage; -+}; -+ -+/* The next usable entries in the various parser tables being filled in by -+ convert_options. */ -+struct parser_convert_state -+{ -+ struct parser *parser; -+ char *short_end; -+ struct option *long_end; -+ void **child_inputs_end; -+}; -+ -+/* Converts all options in ARGP (which is put in GROUP) and ancestors -+ into getopt options stored in SHORT_OPTS and LONG_OPTS; SHORT_END and -+ CVT->LONG_END are the points at which new options are added. Returns the -+ next unused group entry. CVT holds state used during the conversion. */ -+static struct group * -+convert_options (const struct argp *argp, -+ struct group *parent, unsigned parent_index, -+ struct group *group, struct parser_convert_state *cvt) -+{ -+ /* REAL is the most recent non-alias value of OPT. */ -+ const struct argp_option *real = argp->options; -+ const struct argp_child *children = argp->children; -+ -+ if (real || argp->parser) -+ { -+ const struct argp_option *opt; -+ -+ if (real) -+ for (opt = real; !__option_is_end (opt); opt++) -+ { -+ if (! (opt->flags & OPTION_ALIAS)) -+ /* OPT isn't an alias, so we can use values from it. */ -+ real = opt; -+ -+ if (! (real->flags & OPTION_DOC)) -+ /* A real option (not just documentation). */ -+ { -+ if (__option_is_short (opt)) -+ /* OPT can be used as a short option. */ -+ { -+ *cvt->short_end++ = opt->key; -+ if (real->arg) -+ { -+ *cvt->short_end++ = ':'; -+ if (real->flags & OPTION_ARG_OPTIONAL) -+ *cvt->short_end++ = ':'; -+ } -+ *cvt->short_end = '\0'; /* keep 0 terminated */ -+ } -+ -+ if (opt->name -+ && find_long_option (cvt->parser->long_opts, opt->name) < 0) -+ /* OPT can be used as a long option. */ -+ { -+ cvt->long_end->name = opt->name; -+ cvt->long_end->has_arg = -+ (real->arg -+ ? (real->flags & OPTION_ARG_OPTIONAL -+ ? optional_argument -+ : required_argument) -+ : no_argument); -+ cvt->long_end->flag = 0; -+ /* we add a disambiguating code to all the user's -+ values (which is removed before we actually call -+ the function to parse the value); this means that -+ the user loses use of the high 8 bits in all his -+ values (the sign of the lower bits is preserved -+ however)... */ -+ cvt->long_end->val = -+ ((opt->key | real->key) & USER_MASK) -+ + (((group - cvt->parser->groups) + 1) << USER_BITS); -+ -+ /* Keep the LONG_OPTS list terminated. */ -+ (++cvt->long_end)->name = NULL; -+ } -+ } -+ } -+ -+ group->parser = argp->parser; -+ group->argp = argp; -+ group->short_end = cvt->short_end; -+ group->args_processed = 0; -+ group->parent = parent; -+ group->parent_index = parent_index; -+ group->input = 0; -+ group->hook = 0; -+ group->child_inputs = 0; -+ -+ if (children) -+ /* Assign GROUP's CHILD_INPUTS field some space from -+ CVT->child_inputs_end.*/ -+ { -+ unsigned num_children = 0; -+ while (children[num_children].argp) -+ num_children++; -+ group->child_inputs = cvt->child_inputs_end; -+ cvt->child_inputs_end += num_children; -+ } -+ -+ parent = group++; -+ } -+ else -+ parent = 0; -+ -+ if (children) -+ { -+ unsigned index = 0; -+ while (children->argp) -+ group = -+ convert_options (children++->argp, parent, index++, group, cvt); -+ } -+ -+ return group; -+} -+ -+/* Find the merged set of getopt options, with keys appropiately prefixed. */ -+static void -+parser_convert (struct parser *parser, const struct argp *argp, int flags) -+{ -+ struct parser_convert_state cvt; -+ -+ cvt.parser = parser; -+ cvt.short_end = parser->short_opts; -+ cvt.long_end = parser->long_opts; -+ cvt.child_inputs_end = parser->child_inputs; -+ -+ if (flags & ARGP_IN_ORDER) -+ *cvt.short_end++ = '-'; -+ else if (flags & ARGP_NO_ARGS) -+ *cvt.short_end++ = '+'; -+ *cvt.short_end = '\0'; -+ -+ cvt.long_end->name = NULL; -+ -+ parser->argp = argp; -+ -+ if (argp) -+ parser->egroup = convert_options (argp, 0, 0, parser->groups, &cvt); -+ else -+ parser->egroup = parser->groups; /* No parsers at all! */ -+} -+ -+/* Lengths of various parser fields which we will allocated. */ -+struct parser_sizes -+{ -+ size_t short_len; /* Getopt short options string. */ -+ size_t long_len; /* Getopt long options vector. */ -+ size_t num_groups; /* Group structures we allocate. */ -+ size_t num_child_inputs; /* Child input slots. */ -+}; -+ -+/* For ARGP, increments the NUM_GROUPS field in SZS by the total number of -+ argp structures descended from it, and the SHORT_LEN & LONG_LEN fields by -+ the maximum lengths of the resulting merged getopt short options string and -+ long-options array, respectively. */ -+static void -+calc_sizes (const struct argp *argp, struct parser_sizes *szs) -+{ -+ const struct argp_child *child = argp->children; -+ const struct argp_option *opt = argp->options; -+ -+ if (opt || argp->parser) -+ { -+ szs->num_groups++; -+ if (opt) -+ { -+ int num_opts = 0; -+ while (!__option_is_end (opt++)) -+ num_opts++; -+ szs->short_len += num_opts * 3; /* opt + up to 2 `:'s */ -+ szs->long_len += num_opts; -+ } -+ } -+ -+ if (child) -+ while (child->argp) -+ { -+ calc_sizes ((child++)->argp, szs); -+ szs->num_child_inputs++; -+ } -+} -+ -+ -+extern char * __argp_short_program_name (void); -+/* Initializes PARSER to parse ARGP in a manner described by FLAGS. */ -+static error_t -+parser_init (struct parser *parser, const struct argp *argp, -+ int argc, char **argv, int flags, void *input) -+{ -+ error_t err = 0; -+ struct group *group; -+ struct parser_sizes szs; -+ struct _getopt_data opt_data = _GETOPT_DATA_INITIALIZER; -+ -+ szs.short_len = (flags & ARGP_NO_ARGS) ? 0 : 1; -+ szs.long_len = 0; -+ szs.num_groups = 0; -+ szs.num_child_inputs = 0; -+ -+ if (argp) -+ calc_sizes (argp, &szs); -+ -+ /* Lengths of the various bits of storage used by PARSER. */ -+#define GLEN (szs.num_groups + 1) * sizeof (struct group) -+#define CLEN (szs.num_child_inputs * sizeof (void *)) -+#define LLEN ((szs.long_len + 1) * sizeof (struct option)) -+#define SLEN (szs.short_len + 1) -+ -+ parser->storage = malloc (GLEN + CLEN + LLEN + SLEN); -+ if (! parser->storage) -+ return ENOMEM; -+ -+ parser->groups = parser->storage; -+ parser->child_inputs = parser->storage + GLEN; -+ parser->long_opts = parser->storage + GLEN + CLEN; -+ parser->short_opts = parser->storage + GLEN + CLEN + LLEN; -+ parser->opt_data = opt_data; -+ -+ memset (parser->child_inputs, 0, szs.num_child_inputs * sizeof (void *)); -+ parser_convert (parser, argp, flags); -+ -+ memset (&parser->state, 0, sizeof (struct argp_state)); -+ parser->state.root_argp = parser->argp; -+ parser->state.argc = argc; -+ parser->state.argv = argv; -+ parser->state.flags = flags; -+ parser->state.err_stream = stderr; -+ parser->state.out_stream = stdout; -+ parser->state.next = 0; /* Tell getopt to initialize. */ -+ parser->state.pstate = parser; -+ -+ parser->try_getopt = 1; -+ -+ /* Call each parser for the first time, giving it a chance to propagate -+ values to child parsers. */ -+ if (parser->groups < parser->egroup) -+ parser->groups->input = input; -+ for (group = parser->groups; -+ group < parser->egroup && (!err || err == EBADKEY); -+ group++) -+ { -+ if (group->parent) -+ /* If a child parser, get the initial input value from the parent. */ -+ group->input = group->parent->child_inputs[group->parent_index]; -+ -+ if (!group->parser -+ && group->argp->children && group->argp->children->argp) -+ /* For the special case where no parsing function is supplied for an -+ argp, propagate its input to its first child, if any (this just -+ makes very simple wrapper argps more convenient). */ -+ group->child_inputs[0] = group->input; -+ -+ err = group_parse (group, &parser->state, ARGP_KEY_INIT, 0); -+ } -+ if (err == EBADKEY) -+ err = 0; /* Some parser didn't understand. */ -+ -+ if (err) -+ return err; -+ -+ if (parser->state.flags & ARGP_NO_ERRS) -+ { -+ parser->opt_data.opterr = 0; -+ if (parser->state.flags & ARGP_PARSE_ARGV0) -+ /* getopt always skips ARGV[0], so we have to fake it out. As long -+ as OPTERR is 0, then it shouldn't actually try to access it. */ -+ parser->state.argv--, parser->state.argc++; -+ } -+ else -+ parser->opt_data.opterr = 1; /* Print error messages. */ -+ -+ if (parser->state.argv == argv && argv[0]) -+ /* There's an argv[0]; use it for messages. */ -+ { -+ char *short_name = strrchr (argv[0], '/'); -+ parser->state.name = short_name ? short_name + 1 : argv[0]; -+ } -+ else -+ parser->state.name = __argp_short_program_name (); -+ -+ return 0; -+} -+ -+/* Free any storage consumed by PARSER (but not PARSER itself). */ -+static error_t -+parser_finalize (struct parser *parser, -+ error_t err, int arg_ebadkey, int *end_index) -+{ -+ struct group *group; -+ -+ if (err == EBADKEY && arg_ebadkey) -+ /* Suppress errors generated by unparsed arguments. */ -+ err = 0; -+ -+ if (! err) -+ { -+ if (parser->state.next == parser->state.argc) -+ /* We successfully parsed all arguments! Call all the parsers again, -+ just a few more times... */ -+ { -+ for (group = parser->groups; -+ group < parser->egroup && (!err || err==EBADKEY); -+ group++) -+ if (group->args_processed == 0) -+ err = group_parse (group, &parser->state, ARGP_KEY_NO_ARGS, 0); -+ for (group = parser->egroup - 1; -+ group >= parser->groups && (!err || err==EBADKEY); -+ group--) -+ err = group_parse (group, &parser->state, ARGP_KEY_END, 0); -+ -+ if (err == EBADKEY) -+ err = 0; /* Some parser didn't understand. */ -+ -+ /* Tell the user that all arguments are parsed. */ -+ if (end_index) -+ *end_index = parser->state.next; -+ } -+ else if (end_index) -+ /* Return any remaining arguments to the user. */ -+ *end_index = parser->state.next; -+ else -+ /* No way to return the remaining arguments, they must be bogus. */ -+ { -+ if (!(parser->state.flags & ARGP_NO_ERRS) -+ && parser->state.err_stream) -+ fprintf (parser->state.err_stream, -+ dgettext (parser->argp->argp_domain, -+ "%s: Too many arguments\n"), -+ parser->state.name); -+ err = EBADKEY; -+ } -+ } -+ -+ /* Okay, we're all done, with either an error or success; call the parsers -+ to indicate which one. */ -+ -+ if (err) -+ { -+ /* Maybe print an error message. */ -+ if (err == EBADKEY) -+ /* An appropriate message describing what the error was should have -+ been printed earlier. */ -+ argp_state_help (&parser->state, parser->state.err_stream, -+ ARGP_HELP_STD_ERR); -+ -+ /* Since we didn't exit, give each parser an error indication. */ -+ for (group = parser->groups; group < parser->egroup; group++) -+ group_parse (group, &parser->state, ARGP_KEY_ERROR, 0); -+ } -+ else -+ /* Notify parsers of success, and propagate back values from parsers. */ -+ { -+ /* We pass over the groups in reverse order so that child groups are -+ given a chance to do there processing before passing back a value to -+ the parent. */ -+ for (group = parser->egroup - 1 -+ ; group >= parser->groups && (!err || err == EBADKEY) -+ ; group--) -+ err = group_parse (group, &parser->state, ARGP_KEY_SUCCESS, 0); -+ if (err == EBADKEY) -+ err = 0; /* Some parser didn't understand. */ -+ } -+ -+ /* Call parsers once more, to do any final cleanup. Errors are ignored. */ -+ for (group = parser->egroup - 1; group >= parser->groups; group--) -+ group_parse (group, &parser->state, ARGP_KEY_FINI, 0); -+ -+ if (err == EBADKEY) -+ err = EINVAL; -+ -+ free (parser->storage); -+ -+ return err; -+} -+ -+/* Call the user parsers to parse the non-option argument VAL, at the current -+ position, returning any error. The state NEXT pointer is assumed to have -+ been adjusted (by getopt) to point after this argument; this function will -+ adjust it correctly to reflect however many args actually end up being -+ consumed. */ -+static error_t -+parser_parse_arg (struct parser *parser, char *val) -+{ -+ /* Save the starting value of NEXT, first adjusting it so that the arg -+ we're parsing is again the front of the arg vector. */ -+ int index = --parser->state.next; -+ error_t err = EBADKEY; -+ struct group *group; -+ int key = 0; /* Which of ARGP_KEY_ARG[S] we used. */ -+ -+ /* Try to parse the argument in each parser. */ -+ for (group = parser->groups -+ ; group < parser->egroup && err == EBADKEY -+ ; group++) -+ { -+ parser->state.next++; /* For ARGP_KEY_ARG, consume the arg. */ -+ key = ARGP_KEY_ARG; -+ err = group_parse (group, &parser->state, key, val); -+ -+ if (err == EBADKEY) -+ /* This parser doesn't like ARGP_KEY_ARG; try ARGP_KEY_ARGS instead. */ -+ { -+ parser->state.next--; /* For ARGP_KEY_ARGS, put back the arg. */ -+ key = ARGP_KEY_ARGS; -+ err = group_parse (group, &parser->state, key, 0); -+ } -+ } -+ -+ if (! err) -+ { -+ if (key == ARGP_KEY_ARGS) -+ /* The default for ARGP_KEY_ARGS is to assume that if NEXT isn't -+ changed by the user, *all* arguments should be considered -+ consumed. */ -+ parser->state.next = parser->state.argc; -+ -+ if (parser->state.next > index) -+ /* Remember that we successfully processed a non-option -+ argument -- but only if the user hasn't gotten tricky and set -+ the clock back. */ -+ (--group)->args_processed += (parser->state.next - index); -+ else -+ /* The user wants to reparse some args, give getopt another try. */ -+ parser->try_getopt = 1; -+ } -+ -+ return err; -+} -+ -+/* Call the user parsers to parse the option OPT, with argument VAL, at the -+ current position, returning any error. */ -+static error_t -+parser_parse_opt (struct parser *parser, int opt, char *val) -+{ -+ /* The group key encoded in the high bits; 0 for short opts or -+ group_number + 1 for long opts. */ -+ int group_key = opt >> USER_BITS; -+ error_t err = EBADKEY; -+ -+ if (group_key == 0) -+ /* A short option. By comparing OPT's position in SHORT_OPTS to the -+ various starting positions in each group's SHORT_END field, we can -+ determine which group OPT came from. */ -+ { -+ struct group *group; -+ char *short_index = strchr (parser->short_opts, opt); -+ -+ if (short_index) -+ for (group = parser->groups; group < parser->egroup; group++) -+ if (group->short_end > short_index) -+ { -+ err = group_parse (group, &parser->state, opt, -+ parser->opt_data.optarg); -+ break; -+ } -+ } -+ else -+ /* A long option. We use shifts instead of masking for extracting -+ the user value in order to preserve the sign. */ -+ err = -+ group_parse (&parser->groups[group_key - 1], &parser->state, -+ (opt << GROUP_BITS) >> GROUP_BITS, -+ parser->opt_data.optarg); -+ -+ if (err == EBADKEY) -+ /* At least currently, an option not recognized is an error in the -+ parser, because we pre-compute which parser is supposed to deal -+ with each option. */ -+ { -+ static const char bad_key_err[] = -+ N_("(PROGRAM ERROR) Option should have been recognized!?"); -+ if (group_key == 0) -+ argp_error (&parser->state, "-%c: %s", opt, -+ dgettext (parser->argp->argp_domain, bad_key_err)); -+ else -+ { -+ struct option *long_opt = parser->long_opts; -+ while (long_opt->val != opt && long_opt->name) -+ long_opt++; -+ argp_error (&parser->state, "--%s: %s", -+ long_opt->name ? long_opt->name : "???", -+ dgettext (parser->argp->argp_domain, bad_key_err)); -+ } -+ } -+ -+ return err; -+} -+ -+/* Parse the next argument in PARSER (as indicated by PARSER->state.next). -+ Any error from the parsers is returned, and *ARGP_EBADKEY indicates -+ whether a value of EBADKEY is due to an unrecognized argument (which is -+ generally not fatal). */ -+static error_t -+parser_parse_next (struct parser *parser, int *arg_ebadkey) -+{ -+ int opt; -+ error_t err = 0; -+ -+ if (parser->state.quoted && parser->state.next < parser->state.quoted) -+ /* The next argument pointer has been moved to before the quoted -+ region, so pretend we never saw the quoting `--', and give getopt -+ another chance. If the user hasn't removed it, getopt will just -+ process it again. */ -+ parser->state.quoted = 0; -+ -+ if (parser->try_getopt && !parser->state.quoted) -+ /* Give getopt a chance to parse this. */ -+ { -+ /* Put it back in OPTIND for getopt. */ -+ parser->opt_data.optind = parser->state.next; -+ /* Distinguish KEY_ERR from a real option. */ -+ parser->opt_data.optopt = KEY_END; -+ if (parser->state.flags & ARGP_LONG_ONLY) -+ opt = _getopt_long_only_r (parser->state.argc, parser->state.argv, -+ parser->short_opts, parser->long_opts, 0, -+ &parser->opt_data); -+ else -+ opt = _getopt_long_r (parser->state.argc, parser->state.argv, -+ parser->short_opts, parser->long_opts, 0, -+ &parser->opt_data); -+ /* And see what getopt did. */ -+ parser->state.next = parser->opt_data.optind; -+ -+ if (opt == KEY_END) -+ /* Getopt says there are no more options, so stop using -+ getopt; we'll continue if necessary on our own. */ -+ { -+ parser->try_getopt = 0; -+ if (parser->state.next > 1 -+ && strcmp (parser->state.argv[parser->state.next - 1], QUOTE) -+ == 0) -+ /* Not only is this the end of the options, but it's a -+ `quoted' region, which may have args that *look* like -+ options, so we definitely shouldn't try to use getopt past -+ here, whatever happens. */ -+ parser->state.quoted = parser->state.next; -+ } -+ else if (opt == KEY_ERR && parser->opt_data.optopt != KEY_END) -+ /* KEY_ERR can have the same value as a valid user short -+ option, but in the case of a real error, getopt sets OPTOPT -+ to the offending character, which can never be KEY_END. */ -+ { -+ *arg_ebadkey = 0; -+ return EBADKEY; -+ } -+ } -+ else -+ opt = KEY_END; -+ -+ if (opt == KEY_END) -+ { -+ /* We're past what getopt considers the options. */ -+ if (parser->state.next >= parser->state.argc -+ || (parser->state.flags & ARGP_NO_ARGS)) -+ /* Indicate that we're done. */ -+ { -+ *arg_ebadkey = 1; -+ return EBADKEY; -+ } -+ else -+ /* A non-option arg; simulate what getopt might have done. */ -+ { -+ opt = KEY_ARG; -+ parser->opt_data.optarg = parser->state.argv[parser->state.next++]; -+ } -+ } -+ -+ if (opt == KEY_ARG) -+ /* A non-option argument; try each parser in turn. */ -+ err = parser_parse_arg (parser, parser->opt_data.optarg); -+ else -+ err = parser_parse_opt (parser, opt, parser->opt_data.optarg); -+ -+ if (err == EBADKEY) -+ *arg_ebadkey = (opt == KEY_END || opt == KEY_ARG); -+ -+ return err; -+} -+ -+/* Parse the options strings in ARGC & ARGV according to the argp in ARGP. -+ FLAGS is one of the ARGP_ flags above. If END_INDEX is non-NULL, the -+ index in ARGV of the first unparsed option is returned in it. If an -+ unknown option is present, EINVAL is returned; if some parser routine -+ returned a non-zero value, it is returned; otherwise 0 is returned. */ -+error_t -+argp_parse (const struct argp *argp, int argc, char **argv, unsigned flags, -+ int *end_index, void *input) -+{ -+ error_t err; -+ struct parser parser; -+ -+ /* If true, then err == EBADKEY is a result of a non-option argument failing -+ to be parsed (which in some cases isn't actually an error). */ -+ int arg_ebadkey = 0; -+ -+ if (! (flags & ARGP_NO_HELP)) -+ /* Add our own options. */ -+ { -+ struct argp_child *child = alloca (4 * sizeof (struct argp_child)); -+ struct argp *top_argp = alloca (sizeof (struct argp)); -+ -+ /* TOP_ARGP has no options, it just serves to group the user & default -+ argps. */ -+ memset (top_argp, 0, sizeof (*top_argp)); -+ top_argp->children = child; -+ -+ memset (child, 0, 4 * sizeof (struct argp_child)); -+ -+ if (argp) -+ (child++)->argp = argp; -+ (child++)->argp = &argp_default_argp; -+ if (argp_program_version || argp_program_version_hook) -+ (child++)->argp = &argp_version_argp; -+ child->argp = 0; -+ -+ argp = top_argp; -+ } -+ -+ /* Construct a parser for these arguments. */ -+ err = parser_init (&parser, argp, argc, argv, flags, input); -+ -+ if (! err) -+ /* Parse! */ -+ { -+ while (! err) -+ err = parser_parse_next (&parser, &arg_ebadkey); -+ err = parser_finalize (&parser, err, arg_ebadkey, end_index); -+ } -+ -+ return err; -+} -+ -+/* Return the input field for ARGP in the parser corresponding to STATE; used -+ by the help routines. */ -+void * -+__argp_input (const struct argp *argp, const struct argp_state *state) -+{ -+ if (state) -+ { -+ struct group *group; -+ struct parser *parser = state->pstate; -+ -+ for (group = parser->groups; group < parser->egroup; group++) -+ if (group->argp == argp) -+ return group->input; -+ } -+ -+ return 0; -+} -diff --git a/libuargp/argp-pv.c b/libuargp/argp-pv.c -new file mode 100644 -index 0000000..f1227b5 ---- /dev/null -+++ b/libuargp/argp-pv.c -@@ -0,0 +1,25 @@ -+/* Default definition for ARGP_PROGRAM_VERSION. -+ Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Miles Bader . -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+/* If set by the user program to a non-zero value, then a default option -+ --version is added (unless the ARGP_NO_HELP flag is used), which will -+ print this this string followed by a newline and exit (unless the -+ ARGP_NO_EXIT flag is used). Overridden by ARGP_PROGRAM_VERSION_HOOK. */ -+const char *argp_program_version; -diff --git a/libuargp/argp-pvh.c b/libuargp/argp-pvh.c -new file mode 100644 -index 0000000..1f1d962 ---- /dev/null -+++ b/libuargp/argp-pvh.c -@@ -0,0 +1,32 @@ -+/* Default definition for ARGP_PROGRAM_VERSION_HOOK. -+ Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Miles Bader . -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+ -+/* If set by the user program to a non-zero value, then a default option -+ --version is added (unless the ARGP_NO_HELP flag is used), which calls -+ this function with a stream to print the version to and a pointer to the -+ current parsing state, and then exits (unless the ARGP_NO_EXIT flag is -+ used). This variable takes precedent over ARGP_PROGRAM_VERSION. */ -+void (*argp_program_version_hook) (FILE *stream, struct argp_state *state); -diff --git a/libuargp/argp-xinl.c b/libuargp/argp-xinl.c -new file mode 100644 -index 0000000..f1d3000 ---- /dev/null -+++ b/libuargp/argp-xinl.c -@@ -0,0 +1,35 @@ -+/* Real definitions for extern inline functions in argp.h -+ Copyright (C) 1997, 1998, 2004 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Miles Bader . -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#ifdef HAVE_CONFIG_H -+# include -+#endif -+ -+#if defined _LIBC || defined HAVE_FEATURES_H -+# include -+#endif -+ -+#ifndef __USE_EXTERN_INLINES -+# define __USE_EXTERN_INLINES 1 -+#endif -+#define ARGP_EI -+#undef __OPTIMIZE__ -+#define __OPTIMIZE__ 1 -+#include -diff --git a/test/argp/Makefile b/test/argp/Makefile -new file mode 100644 -index 0000000..616fe71 ---- /dev/null -+++ b/test/argp/Makefile -@@ -0,0 +1,7 @@ -+# uClibc argp tests -+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. -+ -+top_builddir=../../ -+include ../Rules.mak -+-include Makefile.in -+include ../Test.mak -diff --git a/test/argp/Makefile.in b/test/argp/Makefile.in -new file mode 100644 -index 0000000..d81b359 ---- /dev/null -+++ b/test/argp/Makefile.in -@@ -0,0 +1,12 @@ -+# uClibc argp tests -+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. -+ -+TESTS := $(addprefix argp-, ex1 ex2 ex3 ex4 test) \ -+ bug-argp1 tst-argp1 tst-argp2 -+ -+EXTRA_LDFLAGS = -luargp -+ -+OPTS_argp-ex3 = ARG1 ARG2 -+OPTS_argp-ex4 = ARG1 string1 string2 string3 -+OPTS_bug-argp1 = -- --help -+ -diff --git a/test/argp/argp-ex1.c b/test/argp/argp-ex1.c -new file mode 100644 -index 0000000..7bb5f22 ---- /dev/null -+++ b/test/argp/argp-ex1.c -@@ -0,0 +1,15 @@ -+/* Argp example #1 -- a minimal program using argp */ -+ -+/* This is (probably) the smallest possible program that -+ uses argp. It won't do much except give an error -+ messages and exit when there are any arguments, and print -+ a (rather pointless) messages for --help. */ -+ -+#include -+#include -+ -+int main (int argc, char **argv) -+{ -+ argp_parse (0, argc, argv, 0, 0, 0); -+ exit (0); -+} -diff --git a/test/argp/argp-ex2.c b/test/argp/argp-ex2.c -new file mode 100644 -index 0000000..c49fbac ---- /dev/null -+++ b/test/argp/argp-ex2.c -@@ -0,0 +1,45 @@ -+/* Argp example #2 -- a pretty minimal program using argp */ -+ -+/* This program doesn't use any options or arguments, but uses -+ argp to be compliant with the GNU standard command line -+ format. -+ -+ In addition to making sure no arguments are given, and -+ implementing a --help option, this example will have a -+ --version option, and will put the given documentation string -+ and bug address in the --help output, as per GNU standards. -+ -+ The variable ARGP contains the argument parser specification; -+ adding fields to this structure is the way most parameters are -+ passed to argp_parse (the first three fields are usually used, -+ but not in this small program). There are also two global -+ variables that argp knows about defined here, -+ ARGP_PROGRAM_VERSION and ARGP_PROGRAM_BUG_ADDRESS (they are -+ global variables because they will almost always be constant -+ for a given program, even if it uses different argument -+ parsers for various tasks). */ -+ -+#include -+#include -+ -+const char *argp_program_version = -+ "argp-ex2 1.0"; -+const char *argp_program_bug_address = -+ ""; -+ -+/* Program documentation. */ -+static char doc[] = -+ "Argp example #2 -- a pretty minimal program using argp"; -+ -+/* Our argument parser. The @code{options}, @code{parser}, and -+ @code{args_doc} fields are zero because we have neither options or -+ arguments; @code{doc} and @code{argp_program_bug_address} will be -+ used in the output for @samp{--help}, and the @samp{--version} -+ option will print out @code{argp_program_version}. */ -+static struct argp argp = { 0, 0, 0, doc }; -+ -+int main (int argc, char **argv) -+{ -+ argp_parse (&argp, argc, argv, 0, 0, 0); -+ exit (0); -+} -diff --git a/test/argp/argp-ex3.c b/test/argp/argp-ex3.c -new file mode 100644 -index 0000000..24d5c50 ---- /dev/null -+++ b/test/argp/argp-ex3.c -@@ -0,0 +1,153 @@ -+/* Argp example #3 -- a program with options and arguments using argp */ -+ -+/* This program uses the same features as example 2, and uses options and -+ arguments. -+ -+ We now use the first four fields in ARGP, so here's a description of them: -+ OPTIONS -- A pointer to a vector of struct argp_option (see below) -+ PARSER -- A function to parse a single option, called by argp -+ ARGS_DOC -- A string describing how the non-option arguments should look -+ DOC -- A descriptive string about this program; if it contains a -+ vertical tab character (\v), the part after it will be -+ printed *following* the options -+ -+ The function PARSER takes the following arguments: -+ KEY -- An integer specifying which option this is (taken -+ from the KEY field in each struct argp_option), or -+ a special key specifying something else; the only -+ special keys we use here are ARGP_KEY_ARG, meaning -+ a non-option argument, and ARGP_KEY_END, meaning -+ that all arguments have been parsed -+ ARG -- For an option KEY, the string value of its -+ argument, or NULL if it has none -+ STATE-- A pointer to a struct argp_state, containing -+ various useful information about the parsing state; used here -+ are the INPUT field, which reflects the INPUT argument to -+ argp_parse, and the ARG_NUM field, which is the number of the -+ current non-option argument being parsed -+ It should return either 0, meaning success, ARGP_ERR_UNKNOWN, meaning the -+ given KEY wasn't recognized, or an errno value indicating some other -+ error. -+ -+ Note that in this example, main uses a structure to communicate with the -+ parse_opt function, a pointer to which it passes in the INPUT argument to -+ argp_parse. Of course, it's also possible to use global variables -+ instead, but this is somewhat more flexible. -+ -+ The OPTIONS field contains a pointer to a vector of struct argp_option's; -+ that structure has the following fields (if you assign your option -+ structures using array initialization like this example, unspecified -+ fields will be defaulted to 0, and need not be specified): -+ NAME -- The name of this option's long option (may be zero) -+ KEY -- The KEY to pass to the PARSER function when parsing this option, -+ *and* the name of this option's short option, if it is a -+ printable ascii character -+ ARG -- The name of this option's argument, if any -+ FLAGS -- Flags describing this option; some of them are: -+ OPTION_ARG_OPTIONAL -- The argument to this option is optional -+ OPTION_ALIAS -- This option is an alias for the -+ previous option -+ OPTION_HIDDEN -- Don't show this option in --help output -+ DOC -- A documentation string for this option, shown in --help output -+ -+ An options vector should be terminated by an option with all fields zero. */ -+ -+#include -+#include -+ -+const char *argp_program_version = -+ "argp-ex3 1.0"; -+const char *argp_program_bug_address = -+ ""; -+ -+/* Program documentation. */ -+static char doc[] = -+ "Argp example #3 -- a program with options and arguments using argp"; -+ -+/* A description of the arguments we accept. */ -+static char args_doc[] = "ARG1 ARG2"; -+ -+/* The options we understand. */ -+static struct argp_option options[] = { -+ {"verbose", 'v', 0, 0, "Produce verbose output" }, -+ {"quiet", 'q', 0, 0, "Don't produce any output" }, -+ {"silent", 's', 0, OPTION_ALIAS }, -+ {"output", 'o', "FILE", 0, -+ "Output to FILE instead of standard output" }, -+ { 0 } -+}; -+ -+/* Used by @code{main} to communicate with @code{parse_opt}. */ -+struct arguments -+{ -+ char *args[2]; /* @var{arg1} & @var{arg2} */ -+ int silent, verbose; -+ char *output_file; -+}; -+ -+/* Parse a single option. */ -+static error_t -+parse_opt (int key, char *arg, struct argp_state *state) -+{ -+ /* Get the @var{input} argument from @code{argp_parse}, which we -+ know is a pointer to our arguments structure. */ -+ struct arguments *arguments = state->input; -+ -+ switch (key) -+ { -+ case 'q': case 's': -+ arguments->silent = 1; -+ break; -+ case 'v': -+ arguments->verbose = 1; -+ break; -+ case 'o': -+ arguments->output_file = arg; -+ break; -+ -+ case ARGP_KEY_ARG: -+ if (state->arg_num >= 2) -+ /* Too many arguments. */ -+ argp_usage (state); -+ -+ arguments->args[state->arg_num] = arg; -+ -+ break; -+ -+ case ARGP_KEY_END: -+ if (state->arg_num < 2) -+ /* Not enough arguments. */ -+ argp_usage (state); -+ break; -+ -+ default: -+ return ARGP_ERR_UNKNOWN; -+ } -+ return 0; -+} -+ -+/* Our argp parser. */ -+static struct argp argp = { options, parse_opt, args_doc, doc }; -+ -+int main (int argc, char **argv) -+{ -+ struct arguments arguments; -+ -+ /* Default values. */ -+ arguments.silent = 0; -+ arguments.verbose = 0; -+ arguments.output_file = "-"; -+ -+ /* Parse our arguments; every option seen by @code{parse_opt} will -+ be reflected in @code{arguments}. */ -+ argp_parse (&argp, argc, argv, 0, 0, &arguments); -+ -+ printf ("ARG1 = %s\nARG2 = %s\nOUTPUT_FILE = %s\n" -+ "VERBOSE = %s\nSILENT = %s\n", -+ arguments.args[0], arguments.args[1], -+ arguments.output_file, -+ arguments.verbose ? "yes" : "no", -+ arguments.silent ? "yes" : "no"); -+ -+ exit (0); -+} -diff --git a/test/argp/argp-ex4.c b/test/argp/argp-ex4.c -new file mode 100644 -index 0000000..c77c7ef ---- /dev/null -+++ b/test/argp/argp-ex4.c -@@ -0,0 +1,167 @@ -+/* Argp example #4 -- a program with somewhat more complicated options */ -+ -+/* This program uses the same features as example 3, but has more -+ options, and somewhat more structure in the -help output. It -+ also shows how you can `steal' the remainder of the input -+ arguments past a certain point, for programs that accept a -+ list of items. It also shows the special argp KEY value -+ ARGP_KEY_NO_ARGS, which is only given if no non-option -+ arguments were supplied to the program. -+ -+ For structuring the help output, two features are used, -+ *headers* which are entries in the options vector with the -+ first four fields being zero, and a two part documentation -+ string (in the variable DOC), which allows documentation both -+ before and after the options; the two parts of DOC are -+ separated by a vertical-tab character ('\v', or '\013'). By -+ convention, the documentation before the options is just a -+ short string saying what the program does, and that afterwards -+ is longer, describing the behavior in more detail. All -+ documentation strings are automatically filled for output, -+ although newlines may be included to force a line break at a -+ particular point. All documentation strings are also passed to -+ the `gettext' function, for possible translation into the -+ current locale. */ -+ -+#include -+#include -+#include -+ -+const char *argp_program_version = -+ "argp-ex4 1.0"; -+const char *argp_program_bug_address = -+ ""; -+ -+/* Program documentation. */ -+static char doc[] = -+ "Argp example #4 -- a program with somewhat more complicated\ -+options\ -+\vThis part of the documentation comes *after* the options;\ -+ note that the text is automatically filled, but it's possible\ -+ to force a line-break, e.g.\n<-- here."; -+ -+/* A description of the arguments we accept. */ -+static char args_doc[] = "ARG1 [STRING...]"; -+ -+/* Keys for options without short-options. */ -+#define OPT_ABORT 1 /* --abort */ -+ -+/* The options we understand. */ -+static struct argp_option options[] = { -+ {"verbose", 'v', 0, 0, "Produce verbose output" }, -+ {"quiet", 'q', 0, 0, "Don't produce any output" }, -+ {"silent", 's', 0, OPTION_ALIAS }, -+ {"output", 'o', "FILE", 0, -+ "Output to FILE instead of standard output" }, -+ -+ {0,0,0,0, "The following options should be grouped together:" }, -+ {"repeat", 'r', "COUNT", OPTION_ARG_OPTIONAL, -+ "Repeat the output COUNT (default 10) times"}, -+ {"abort", OPT_ABORT, 0, 0, "Abort before showing any output"}, -+ -+ { 0 } -+}; -+ -+/* Used by @code{main} to communicate with @code{parse_opt}. */ -+struct arguments -+{ -+ char *arg1; /* @var{arg1} */ -+ char **strings; /* [@var{string}@dots{}] */ -+ int silent, verbose, abort; /* @samp{-s}, @samp{-v}, @samp{--abort} */ -+ char *output_file; /* @var{file} arg to @samp{--output} */ -+ int repeat_count; /* @var{count} arg to @samp{--repeat} */ -+}; -+ -+/* Parse a single option. */ -+static error_t -+parse_opt (int key, char *arg, struct argp_state *state) -+{ -+ /* Get the @code{input} argument from @code{argp_parse}, which we -+ know is a pointer to our arguments structure. */ -+ struct arguments *arguments = state->input; -+ -+ switch (key) -+ { -+ case 'q': case 's': -+ arguments->silent = 1; -+ break; -+ case 'v': -+ arguments->verbose = 1; -+ break; -+ case 'o': -+ arguments->output_file = arg; -+ break; -+ case 'r': -+ arguments->repeat_count = arg ? atoi (arg) : 10; -+ break; -+ case OPT_ABORT: -+ arguments->abort = 1; -+ break; -+ -+ case ARGP_KEY_NO_ARGS: -+ argp_usage (state); -+ -+ case ARGP_KEY_ARG: -+ /* Here we know that @code{state->arg_num == 0}, since we -+ force argument parsing to end before any more arguments can -+ get here. */ -+ arguments->arg1 = arg; -+ -+ /* Now we consume all the rest of the arguments. -+ @code{state->next} is the index in @code{state->argv} of the -+ next argument to be parsed, which is the first @var{string} -+ we're interested in, so we can just use -+ @code{&state->argv[state->next]} as the value for -+ arguments->strings. -+ -+ @emph{In addition}, by setting @code{state->next} to the end -+ of the arguments, we can force argp to stop parsing here and -+ return. */ -+ arguments->strings = &state->argv[state->next]; -+ state->next = state->argc; -+ -+ break; -+ -+ default: -+ return ARGP_ERR_UNKNOWN; -+ } -+ return 0; -+} -+ -+/* Our argp parser. */ -+static struct argp argp = { options, parse_opt, args_doc, doc }; -+ -+int main (int argc, char **argv) -+{ -+ int i, j; -+ struct arguments arguments; -+ -+ /* Default values. */ -+ arguments.silent = 0; -+ arguments.verbose = 0; -+ arguments.output_file = "-"; -+ arguments.repeat_count = 1; -+ arguments.abort = 0; -+ -+ /* Parse our arguments; every option seen by @code{parse_opt} will be -+ reflected in @code{arguments}. */ -+ argp_parse (&argp, argc, argv, 0, 0, &arguments); -+ -+ if (arguments.abort) -+ error (10, 0, "ABORTED"); -+ -+ for (i = 0; i < arguments.repeat_count; i++) -+ { -+ printf ("ARG1 = %s\n", arguments.arg1); -+ printf ("STRINGS = "); -+ for (j = 0; arguments.strings[j]; j++) -+ printf (j == 0 ? "%s" : ", %s", arguments.strings[j]); -+ printf ("\n"); -+ printf ("OUTPUT_FILE = %s\nVERBOSE = %s\nSILENT = %s\n", -+ arguments.output_file, -+ arguments.verbose ? "yes" : "no", -+ arguments.silent ? "yes" : "no"); -+ } -+ -+ exit (0); -+} -diff --git a/test/argp/argp-test.c b/test/argp/argp-test.c -new file mode 100644 -index 0000000..b3d573b ---- /dev/null -+++ b/test/argp/argp-test.c -@@ -0,0 +1,209 @@ -+/* Test program for argp argument parser -+ Copyright (C) 1997 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Miles Bader . -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+ -+const char *argp_program_version = "argp-test 1.0"; -+ -+struct argp_option sub_options[] = -+{ -+ {"subopt1", 's', 0, 0, "Nested option 1"}, -+ {"subopt2", 'S', 0, 0, "Nested option 2"}, -+ -+ { 0, 0, 0, 0, "Some more nested options:", 10}, -+ {"subopt3", 'p', 0, 0, "Nested option 3"}, -+ -+ {"subopt4", 'q', 0, 0, "Nested option 4", 1}, -+ -+ {0} -+}; -+ -+static const char sub_args_doc[] = "STRING...\n-"; -+static const char sub_doc[] = "\vThis is the doc string from the sub-arg-parser."; -+ -+static error_t -+sub_parse_opt (int key, char *arg, struct argp_state *state) -+{ -+ switch (key) -+ { -+ case ARGP_KEY_NO_ARGS: -+ printf ("NO SUB ARGS\n"); -+ break; -+ case ARGP_KEY_ARG: -+ printf ("SUB ARG: %s\n", arg); -+ break; -+ -+ case 's' : case 'S': case 'p': case 'q': -+ printf ("SUB KEY %c\n", key); -+ break; -+ -+ default: -+ return ARGP_ERR_UNKNOWN; -+ } -+ return 0; -+} -+ -+static char * -+sub_help_filter (int key, const char *text, void *input) -+{ -+ if (key == ARGP_KEY_HELP_EXTRA) -+ return strdup ("This is some extra text from the sub parser (note that it \ -+is preceded by a blank line)."); -+ else -+ return (char *)text; -+} -+ -+static struct argp sub_argp = { -+ sub_options, sub_parse_opt, sub_args_doc, sub_doc, 0, sub_help_filter -+}; -+ -+/* Structure used to communicate with the parsing functions. */ -+struct params -+{ -+ unsigned foonly; /* Value parsed for foonly. */ -+ unsigned foonly_default; /* Default value for it. */ -+}; -+ -+#define OPT_PGRP 1 -+#define OPT_SESS 2 -+ -+struct argp_option options[] = -+{ -+ {"pid", 'p', "PID", 0, "List the process PID"}, -+ {"pgrp", OPT_PGRP,"PGRP",0, "List processes in the process group PGRP"}, -+ {"no-parent", 'P', 0, 0, "Include processes without parents"}, -+ {0, 'x', 0, OPTION_ALIAS}, -+ {"all-fields",'Q', 0, 0, "Don't elide unusable fields (normally" -+ " if there's some reason ps can't" -+ " print a field for any process, it's" -+ " removed from the output entirely)" }, -+ {"reverse", 'r', 0, 0, "Reverse the order of any sort"}, -+ {"gratuitously-long-reverse-option", 0, 0, OPTION_ALIAS}, -+ {"session", OPT_SESS,"SID", OPTION_ARG_OPTIONAL, -+ "Add the processes from the session" -+ " SID (which defaults to the sid of" -+ " the current process)" }, -+ -+ {0,0,0,0, "Here are some more options:"}, -+ {"foonly", 'f', "ZOT", OPTION_ARG_OPTIONAL, "Glork a foonly"}, -+ {"zaza", 'z', 0, 0, "Snit a zar"}, -+ -+ {0} -+}; -+ -+static const char args_doc[] = "STRING"; -+static const char doc[] = "Test program for argp." -+ "\vThis doc string comes after the options." -+ "\nHey! Some manual formatting!" -+ "\nThe current time is: %s"; -+ -+static void -+popt (int key, char *arg) -+{ -+ char buf[10]; -+ if (isprint (key)) -+ sprintf (buf, "%c", key); -+ else -+ sprintf (buf, "%d", key); -+ if (arg) -+ printf ("KEY %s: %s\n", buf, arg); -+ else -+ printf ("KEY %s\n", buf); -+} -+ -+static error_t -+parse_opt (int key, char *arg, struct argp_state *state) -+{ -+ struct params *params = state->input; -+ -+ switch (key) -+ { -+ case ARGP_KEY_NO_ARGS: -+ printf ("NO ARGS\n"); -+ break; -+ -+ case ARGP_KEY_ARG: -+ if (state->arg_num > 0) -+ return ARGP_ERR_UNKNOWN; /* Leave it for the sub-arg parser. */ -+ printf ("ARG: %s\n", arg); -+ break; -+ -+ case 'f': -+ if (arg) -+ params->foonly = atoi (arg); -+ else -+ params->foonly = params->foonly_default; -+ popt (key, arg); -+ break; -+ -+ case 'p': case 'P': case OPT_PGRP: case 'x': case 'Q': -+ case 'r': case OPT_SESS: case 'z': -+ popt (key, arg); -+ break; -+ -+ default: -+ return ARGP_ERR_UNKNOWN; -+ } -+ return 0; -+} -+ -+static char * -+help_filter (int key, const char *text, void *input) -+{ -+ char *new_text; -+ struct params *params = input; -+ -+ if (key == ARGP_KEY_HELP_POST_DOC && text) -+ { -+ time_t now = time (0); -+ asprintf (&new_text, text, ctime (&now)); -+ } -+ else if (key == 'f') -+ /* Show the default for the --foonly option. */ -+ asprintf (&new_text, "%s (ZOT defaults to %x)", -+ text, params->foonly_default); -+ else -+ new_text = (char *)text; -+ -+ return new_text; -+} -+ -+static struct argp_child argp_children[] = { { &sub_argp }, { 0 } }; -+static struct argp argp = { -+ options, parse_opt, args_doc, doc, argp_children, help_filter -+}; -+ -+int -+main (int argc, char **argv) -+{ -+ struct params params; -+ params.foonly = 0; -+ params.foonly_default = random (); -+ argp_parse (&argp, argc, argv, 0, 0, ¶ms); -+ printf ("After parsing: foonly = %x\n", params.foonly); -+ return 0; -+} -diff --git a/test/argp/bug-argp1.c b/test/argp/bug-argp1.c -new file mode 100644 -index 0000000..a28cf4b ---- /dev/null -+++ b/test/argp/bug-argp1.c -@@ -0,0 +1,26 @@ -+#include -+ -+ -+static const struct argp_option test_options[] = -+{ -+ { NULL, 'a', NULL, OPTION_DOC, NULL }, -+ { NULL, 'b', NULL, OPTION_DOC, NULL }, -+ { NULL, 0, NULL, 0, NULL } -+}; -+ -+static struct argp test_argp = -+{ -+ test_options -+}; -+ -+ -+static int -+do_test (int argc, char *argv[]) -+{ -+ int i; -+ argp_parse (&test_argp, argc, argv, 0, &i, NULL); -+ return 0; -+} -+ -+#define TEST_FUNCTION do_test (argc, argv) -+#include "../test-skeleton.c" -diff --git a/test/argp/tst-argp1.c b/test/argp/tst-argp1.c -new file mode 100644 -index 0000000..827daca ---- /dev/null -+++ b/test/argp/tst-argp1.c -@@ -0,0 +1,118 @@ -+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Ulrich Drepper , 2002. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+ -+ -+ -+ -+#define OPT_TO_THREAD 300 -+#define OPT_TO_PROCESS 301 -+#define OPT_SYNC_SIGNAL 302 -+#define OPT_SYNC_JOIN 303 -+#define OPT_TOPLEVEL 304 -+ -+ -+static const struct argp_option test_options[] = -+ { -+ { NULL, 0, NULL, 0, "\ -+This is a test for threads so we allow ther user to selection the number of \ -+threads which are used at any one time. Independently the total number of \ -+rounds can be selected. This is the total number of threads which will have \ -+run when the process terminates:" }, -+ { "threads", 't', "NUMBER", 0, "Number of threads used at once" }, -+ { "starts", 's', "NUMBER", 0, "Total number of working threads" }, -+ { "toplevel", OPT_TOPLEVEL, "NUMBER", 0, -+ "Number of toplevel threads which start the other threads; this \ -+implies --sync-join" }, -+ -+ { NULL, 0, NULL, 0, "\ -+Each thread can do one of two things: sleep or do work. The latter is 100% \ -+CPU bound. The work load is the probability a thread does work. All values \ -+from zero to 100 (inclusive) are valid. How often each thread repeats this \ -+can be determined by the number of rounds. The work cost determines how long \ -+each work session (not sleeping) takes. If it is zero a thread would \ -+effectively nothing. By setting the number of rounds to zero the thread \ -+does no work at all and pure thread creation times can be measured." }, -+ { "workload", 'w', "PERCENT", 0, "Percentage of time spent working" }, -+ { "workcost", 'c', "NUMBER", 0, -+ "Factor in the cost of each round of working" }, -+ { "rounds", 'r', "NUMBER", 0, "Number of rounds each thread runs" }, -+ -+ { NULL, 0, NULL, 0, "\ -+There are a number of different methods how thread creation can be \ -+synchronized. Synchronization is necessary since the number of concurrently \ -+running threads is limited." }, -+ { "sync-signal", OPT_SYNC_SIGNAL, NULL, 0, -+ "Synchronize using a signal (default)" }, -+ { "sync-join", OPT_SYNC_JOIN, NULL, 0, "Synchronize using pthread_join" }, -+ -+ { NULL, 0, NULL, 0, "\ -+One parameter for each threads execution is the size of the stack. If this \ -+parameter is not used the system's default stack size is used. If many \ -+threads are used the stack size should be chosen quite small." }, -+ { "stacksize", 'S', "BYTES", 0, "Size of threads stack" }, -+ { "guardsize", 'g', "BYTES", 0, -+ "Size of stack guard area; must fit into the stack" }, -+ -+ { NULL, 0, NULL, 0, "Signal options:" }, -+ { "to-thread", OPT_TO_THREAD, NULL, 0, "Send signal to main thread" }, -+ { "to-process", OPT_TO_PROCESS, NULL, 0, -+ "Send signal to process (default)" }, -+ -+ { NULL, 0, NULL, 0, "Administrative options:" }, -+ { "progress", 'p', NULL, 0, "Show signs of progress" }, -+ { "timing", 'T', NULL, 0, -+ "Measure time from startup to the last thread finishing" }, -+ { NULL, 0, NULL, 0, NULL } -+ }; -+ -+/* Prototype for option handler. */ -+static error_t parse_opt (int key, char *arg, struct argp_state *state); -+ -+/* Data structure to communicate with argp functions. */ -+static struct argp argp = -+{ -+ test_options, parse_opt -+}; -+ -+ -+static int -+do_test (void) -+{ -+ int argc = 2; -+ char *argv[3] = { (char *) "tst-argp1", (char *) "--help", NULL }; -+ int remaining; -+ -+ /* Parse and process arguments. */ -+ argp_parse (&argp, argc, argv, 0, &remaining, NULL); -+ -+ return 0; -+} -+ -+ -+/* Handle program arguments. */ -+static error_t -+parse_opt (int key, char *arg, struct argp_state *state) -+{ -+ return ARGP_ERR_UNKNOWN; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff --git a/test/argp/tst-argp2.c b/test/argp/tst-argp2.c -new file mode 100644 -index 0000000..705cdca ---- /dev/null -+++ b/test/argp/tst-argp2.c -@@ -0,0 +1,101 @@ -+/* Copyright (C) 2007 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Jakub Jelinek , 2007. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+ -+static const struct argp_option opt1[] = -+ { -+ { "opt1", '1', "NUMBER", 0, "Option 1" }, -+ { NULL, 0, NULL, 0, NULL } -+ }; -+ -+static const struct argp_option opt2[] = -+ { -+ { "opt2", '2', "NUMBER", 0, "Option 2" }, -+ { NULL, 0, NULL, 0, NULL } -+ }; -+ -+static const struct argp_option opt3[] = -+ { -+ { "opt3", '3', "NUMBER", 0, "Option 3" }, -+ { NULL, 0, NULL, 0, NULL } -+ }; -+ -+static const struct argp_option opt4[] = -+ { -+ { "opt4", '4', "NUMBER", 0, "Option 4" }, -+ { NULL, 0, NULL, 0, NULL } -+ }; -+ -+static const struct argp_option opt5[] = -+ { -+ { "opt5", '5', "NUMBER", 0, "Option 5" }, -+ { NULL, 0, NULL, 0, NULL } -+ }; -+ -+static struct argp argp5 = -+ { -+ opt5, NULL, "args doc5", "doc5", NULL, NULL, NULL -+ }; -+ -+static struct argp argp4 = -+ { -+ opt4, NULL, "args doc4", "doc4", NULL, NULL, NULL -+ }; -+ -+static struct argp argp3 = -+ { -+ opt3, NULL, "args doc3", "doc3", NULL, NULL, NULL -+ }; -+ -+static struct argp_child children2[] = -+ { -+ { &argp4, 0, "child3", 3 }, -+ { &argp5, 0, "child4", 4 }, -+ { NULL, 0, NULL, 0 } -+ }; -+ -+static struct argp argp2 = -+ { -+ opt2, NULL, "args doc2", "doc2", children2, NULL, NULL -+ }; -+ -+static struct argp_child children1[] = -+ { -+ { &argp2, 0, "child1", 1 }, -+ { &argp3, 0, "child2", 2 }, -+ { NULL, 0, NULL, 0 } -+ }; -+ -+static struct argp argp1 = -+ { -+ opt1, NULL, "args doc1", "doc1", children1, NULL, NULL -+ }; -+ -+ -+static int -+do_test (void) -+{ -+ argp_help (&argp1, stdout, ARGP_HELP_LONG, (char *) "tst-argp2"); -+ return 0; -+} -+ -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" --- -2.1.4 - diff --git a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0004-Dont-support-localised-optimizations-this-helps-to-h.patch b/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0004-Dont-support-localised-optimizations-this-helps-to-h.patch deleted file mode 100644 index 629e13c76..000000000 --- a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0004-Dont-support-localised-optimizations-this-helps-to-h.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 31785c544abe8b215dbb2264fb11ee7051515797 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Sun, 16 Aug 2015 20:58:59 -0700 -Subject: [PATCH 4/7] Dont support localised optimizations this helps to have a - global -O level - -Signed-off-by: Khem Raj ---- -Upstream-Status: Pending - - libpthread/nptl/pthread_mutex_timedlock.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/libpthread/nptl/pthread_mutex_timedlock.c b/libpthread/nptl/pthread_mutex_timedlock.c -index 04187f6..f56f6c5 100644 ---- a/libpthread/nptl/pthread_mutex_timedlock.c -+++ b/libpthread/nptl/pthread_mutex_timedlock.c -@@ -28,7 +28,9 @@ - * error: can't find a register in class ‘GENERAL_REGS’ while reloading ‘asm’ - */ - int -+#ifndef __OPTIMIZE__ - attribute_optimize("Os") -+#endif - pthread_mutex_timedlock ( - pthread_mutex_t *mutex, - const struct timespec *abstime) --- -2.1.4 - diff --git a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0005-Always-use-O2-for-compiling-fork.c.patch b/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0005-Always-use-O2-for-compiling-fork.c.patch deleted file mode 100644 index ad9b246ab..000000000 --- a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0005-Always-use-O2-for-compiling-fork.c.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 883debc22e30a947fe5858cc07ee5aebd3d07a2e Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Sun, 16 Aug 2015 20:59:56 -0700 -Subject: [PATCH 5/7] Always use -O2 for compiling fork.c - -When compiling in thumb mode for arm with -Os gcc gives up since it can -not find registers to spill. So we use -O2 option for compiling fork.c -It may be addressable in gcc. - -Signed-off-by: Khem Raj ---- -Upstream-Status: Pending - - libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch -index 0ea0b29..0767e9c 100644 ---- a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch -+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch -@@ -21,3 +21,9 @@ ASFLAGS-pt-vfork.S = -marm - CFLAGS-OMIT-pt-vfork.S = -mthumb - ASFLAGS-vfork.S = -marm - CFLAGS-OMIT-vfork.S = -mthumb -+ -+# For arm fork.c does not compile with -Os when compiling -+# in thumb1 mode -+ifeq ($(COMPILE_IN_THUMB_MODE),y) -+CFLAGS-fork.c = -O2 -+endif --- -2.1.4 - diff --git a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0006-ldso-limited-support-for-ORIGIN-in-rpath.patch b/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0006-ldso-limited-support-for-ORIGIN-in-rpath.patch deleted file mode 100644 index f0d87371b..000000000 --- a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0006-ldso-limited-support-for-ORIGIN-in-rpath.patch +++ /dev/null @@ -1,233 +0,0 @@ -From b40c129ed2d53b69463883a5422dd4a012a398f9 Mon Sep 17 00:00:00 2001 -From: Junling Zheng -Date: Fri, 3 Apr 2015 05:02:27 +0000 -Subject: [PATCH 6/7] ldso: limited support for $ORIGIN in rpath -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Derived from: -http://lists.busybox.net/pipermail/uclibc/2011-March/045003.html - -However, the above patch introduced '_dl_strchr' in ldso/ldso/dl-elf.c, -and caused the following undefined referencing compiling error: - - | .../libdl.a(libdl.os): In function `search_for_named_library': - | .../dl-elf.c:156: undefined reference to `_dl_strchr' - | collect2: error: ld returned 1 exit status - -This problem would be reproduced through compiling gdb in static mode -using uclibc. - -So, add the definition of '_dl_strchr' to fix it. The '_dl_strstr' is -added as well. - -Upstream-Status: Submitted - -Signed-off-by: Timo Teräs -Signed-off-by: Junling Zheng -Signed-off-by: Khem Raj ---- -Upstream-Status: Pending - - ldso/include/dl-string.h | 2 ++ - ldso/ldso/dl-elf.c | 79 +++++++++++++++++++++++++----------------------- - ldso/ldso/ldso.c | 18 +++++++++-- - 3 files changed, 59 insertions(+), 40 deletions(-) - -diff --git a/ldso/include/dl-string.h b/ldso/include/dl-string.h -index aacad10..14ae617 100644 ---- a/ldso/include/dl-string.h -+++ b/ldso/include/dl-string.h -@@ -204,7 +204,9 @@ static __always_inline char * _dl_get_last_path_component(char *path) - # define _dl_strcat strcat - # define _dl_strcpy strcpy - # define _dl_strcmp strcmp -+# define _dl_strchr strchr - # define _dl_strrchr strrchr -+# define _dl_strstr strstr - # define _dl_memcpy memcpy - # define _dl_memcmp memcmp - # define _dl_memset memset -diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c -index 5631905..6ab7afe 100644 ---- a/ldso/ldso/dl-elf.c -+++ b/ldso/ldso/dl-elf.c -@@ -133,56 +133,60 @@ _dl_protect_relro (struct elf_resolve *l) - * in uClibc/ldso/util/ldd.c */ - static struct elf_resolve * - search_for_named_library(const char *name, unsigned rflags, const char *path_list, -- struct dyn_elf **rpnt) -+ struct dyn_elf **rpnt, const char* origin) - { -- char *path, *path_n, *mylibname; -+ char *mylibname; -+ const char *p, *pn; - struct elf_resolve *tpnt; -- int done; -+ int plen; - - if (path_list==NULL) - return NULL; - -- /* We need a writable copy of this string, but we don't -- * need this allocated permanently since we don't want -- * to leak memory, so use alloca to put path on the stack */ -- done = _dl_strlen(path_list); -- path = alloca(done + 1); -- - /* another bit of local storage */ - mylibname = alloca(2050); - -- _dl_memcpy(path, path_list, done+1); -- - /* Unlike ldd.c, don't bother to eliminate double //s */ - - /* Replace colons with zeros in path_list */ - /* : at the beginning or end of path maps to CWD */ - /* :: anywhere maps CWD */ - /* "" maps to CWD */ -- done = 0; -- path_n = path; -- do { -- if (*path == 0) { -- *path = ':'; -- done = 1; -+ for (p = path_list; p != NULL; p = pn) { -+ pn = _dl_strchr(p + 1, ':'); -+ if (pn != NULL) { -+ plen = pn - p; -+ pn++; -+ } else -+ plen = _dl_strlen(p); -+ -+ if (plen >= 7 && _dl_memcmp(p, "$ORIGIN", 7) == 0) { -+ int olen; -+ if (rflags && plen != 7) -+ continue; -+ if (origin == NULL) -+ continue; -+ for (olen = _dl_strlen(origin) - 1; olen >= 0 && origin[olen] != '/'; olen--) -+ ; -+ if (olen <= 0) -+ continue; -+ _dl_memcpy(&mylibname[0], origin, olen); -+ _dl_memcpy(&mylibname[olen], p + 7, plen - 7); -+ mylibname[olen + plen - 7] = 0; -+ } else if (plen != 0) { -+ _dl_memcpy(mylibname, p, plen); -+ mylibname[plen] = 0; -+ } else { -+ _dl_strcpy(mylibname, "."); - } -- if (*path == ':') { -- *path = 0; -- if (*path_n) -- _dl_strcpy(mylibname, path_n); -- else -- _dl_strcpy(mylibname, "."); /* Assume current dir if empty path */ -- _dl_strcat(mylibname, "/"); -- _dl_strcat(mylibname, name); -+ _dl_strcat(mylibname, "/"); -+ _dl_strcat(mylibname, name); - #ifdef __LDSO_SAFE_RUNPATH__ -- if (*mylibname == '/') -+ if (*mylibname == '/') - #endif -- if ((tpnt = _dl_load_elf_shared_library(rflags, rpnt, mylibname)) != NULL) -- return tpnt; -- path_n = path+1; -- } -- path++; -- } while (!done); -+ if ((tpnt = _dl_load_elf_shared_library(rflags, rpnt, mylibname)) != NULL) -+ return tpnt; -+ } - return NULL; - } - -@@ -234,7 +238,8 @@ struct elf_resolve *_dl_load_shared_library(unsigned rflags, struct dyn_elf **rp - if (pnt) { - pnt += (unsigned long) tpnt->dynamic_info[DT_STRTAB]; - _dl_if_debug_dprint("\tsearching RPATH='%s'\n", pnt); -- if ((tpnt1 = search_for_named_library(libname, rflags, pnt, rpnt)) != NULL) -+ if ((tpnt1 = search_for_named_library(libname, rflags, pnt, rpnt, -+ tpnt->libname)) != NULL) - return tpnt1; - } - #endif -@@ -243,7 +248,7 @@ struct elf_resolve *_dl_load_shared_library(unsigned rflags, struct dyn_elf **rp - /* Check in LD_{ELF_}LIBRARY_PATH, if specified and allowed */ - if (_dl_library_path) { - _dl_if_debug_dprint("\tsearching LD_LIBRARY_PATH='%s'\n", _dl_library_path); -- if ((tpnt1 = search_for_named_library(libname, rflags, _dl_library_path, rpnt)) != NULL) -+ if ((tpnt1 = search_for_named_library(libname, rflags, _dl_library_path, rpnt, NULL)) != NULL) - { - return tpnt1; - } -@@ -257,7 +262,7 @@ struct elf_resolve *_dl_load_shared_library(unsigned rflags, struct dyn_elf **rp - if (pnt) { - pnt += (unsigned long) tpnt->dynamic_info[DT_STRTAB]; - _dl_if_debug_dprint("\tsearching RUNPATH='%s'\n", pnt); -- if ((tpnt1 = search_for_named_library(libname, rflags, pnt, rpnt)) != NULL) -+ if ((tpnt1 = search_for_named_library(libname, rflags, pnt, rpnt, NULL)) != NULL) - return tpnt1; - } - #endif -@@ -291,7 +296,7 @@ struct elf_resolve *_dl_load_shared_library(unsigned rflags, struct dyn_elf **rp - /* Look for libraries wherever the shared library loader - * was installed */ - _dl_if_debug_dprint("\tsearching ldso dir='%s'\n", _dl_ldsopath); -- tpnt1 = search_for_named_library(libname, rflags, _dl_ldsopath, rpnt); -+ tpnt1 = search_for_named_library(libname, rflags, _dl_ldsopath, rpnt, NULL); - if (tpnt1 != NULL) - return tpnt1; - #endif -@@ -304,7 +309,7 @@ struct elf_resolve *_dl_load_shared_library(unsigned rflags, struct dyn_elf **rp - #ifndef __LDSO_CACHE_SUPPORT__ - ":" UCLIBC_RUNTIME_PREFIX "usr/X11R6/lib" - #endif -- , rpnt); -+ , rpnt, NULL); - if (tpnt1 != NULL) - return tpnt1; - -diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c -index f38f9e3..3812908 100644 ---- a/ldso/ldso/ldso.c -+++ b/ldso/ldso/ldso.c -@@ -402,6 +402,20 @@ static ptrdiff_t _dl_build_local_scope (struct elf_resolve **list, - p += _dl_build_local_scope (p, q->tpnt); - return p - list; - } -+ -+static void _dl_setup_progname(const char *argv0) -+{ -+ char image[PATH_MAX]; -+ ssize_t s; -+ -+ s = _dl_readlink("/proc/self/exe", image, sizeof(image)); -+ if (s > 0 && image[0] == '/') { -+ image[s] = 0; -+ _dl_progname = _dl_strdup(image); -+ } else if (argv0) { -+ _dl_progname = argv0; -+ } -+} - - void *_dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr, - ElfW(auxv_t) auxvt[AT_EGID + 1], char **envp, char **argv -@@ -454,9 +468,7 @@ void *_dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr, - * been fixed up by now. Still no function calls outside of this - * library, since the dynamic resolver is not yet ready. - */ -- if (argv[0]) { -- _dl_progname = argv[0]; -- } -+ _dl_setup_progname(argv[0]); - - #ifdef __DSBT__ - _dl_ldso_dsbt = (void *)tpnt->dynamic_info[DT_DSBT_BASE_IDX]; --- -2.1.4 - diff --git a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0007-nptl-atfork-Hide-pthread_atfork-in-shared-versions.patch b/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0007-nptl-atfork-Hide-pthread_atfork-in-shared-versions.patch deleted file mode 100644 index ee932c380..000000000 --- a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/0007-nptl-atfork-Hide-pthread_atfork-in-shared-versions.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 90516af9f776f9c2835b47fc52775dcb307a85ac Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Sat, 23 Jun 2012 15:59:01 -0700 -Subject: [PATCH 7/7] nptl/atfork: Hide pthread_atfork in shared versions - -Signed-off-by: Khem Raj -Upstream-Status: Pending ---- - libpthread/nptl/Makefile.in | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/libpthread/nptl/Makefile.in b/libpthread/nptl/Makefile.in -index 55eeba2..8cb8fa9 100644 ---- a/libpthread/nptl/Makefile.in -+++ b/libpthread/nptl/Makefile.in -@@ -16,6 +16,7 @@ libc-shared-routines-y = forward.c libc-cancellation.c - libc-static-routines-y = alloca_cutoff.c libc-cancellation.c - libpthread-shared-only-routines-y = version.c - libpthread-static-only-routines-y = pthread_atfork.c -+ - libpthread-routines- += $(notdir $(wildcard $(libpthread_DIR)/gen_*.c)) # dummy generated files - libpthread-routines- += allocatestack.c # dummy included by pthread_create.c - libpthread-routines- += pthread_mutex_getprioceiling.c pthread_mutex_setprioceiling.c # XXX: delete those or use them! -@@ -201,7 +202,7 @@ CFLAGS-msgsnd.c = -fexceptions -fasynchronous-unwind-tables - CFLAGS-tcdrain.c = -fexceptions -fasynchronous-unwind-tables - - CFLAGS-pt-system.c = -fexceptions -I$(top_srcdir)libc/stdlib -- -+CFLAGS-pthread_atfork.c = -DNOT_IN_libc - # - # The rest of this file is uClibc specific. - # --- -2.1.4 - diff --git a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/CVE-2016-2224.patch b/yocto-poky/meta/recipes-core/uclibc/uclibc-git/CVE-2016-2224.patch deleted file mode 100644 index 218b60a85..000000000 --- a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/CVE-2016-2224.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 16719c1a7078421928e6d31dd1dec574825ef515 Mon Sep 17 00:00:00 2001 -From: Waldemar Brodkorb -Date: Sun, 17 Jan 2016 15:47:22 +0100 -Subject: [PATCH] Do not follow compressed items forever. - -It is possible to get stuck in an infinite loop when receiving a -specially crafted DNS reply. Exit the loop after a number of iteration -and consider the packet invalid. - -Signed-off-by: Daniel Fahlgren -Signed-off-by: Waldemar Brodkorb - -Upstream-status: Backport -http://repo.or.cz/uclibc-ng.git/commit/16719c1a7078421928e6d31dd1dec574825ef515 - -CVE: CVE-2016-2224 -Signed-off-by: Armin Kuster - ---- - libc/inet/resolv.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -Index: git/libc/inet/resolv.c -=================================================================== ---- git.orig/libc/inet/resolv.c -+++ git/libc/inet/resolv.c -@@ -666,11 +666,12 @@ int __decode_dotted(const unsigned char - bool measure = 1; - unsigned total = 0; - unsigned used = 0; -+ unsigned maxiter = 256; - - if (!packet) - return -1; - -- while (1) { -+ while (--maxiter) { - if (offset >= packet_len) - return -1; - b = packet[offset++]; -@@ -707,6 +708,8 @@ int __decode_dotted(const unsigned char - else - dest[used++] = '\0'; - } -+ if (!maxiter) -+ return -1; - - /* The null byte must be counted too */ - if (measure) diff --git a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/CVE-2016-2225.patch b/yocto-poky/meta/recipes-core/uclibc/uclibc-git/CVE-2016-2225.patch deleted file mode 100644 index 0217e4bf5..000000000 --- a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/CVE-2016-2225.patch +++ /dev/null @@ -1,32 +0,0 @@ -From bb01edff0377f2585ce304ecbadcb7b6cde372ac Mon Sep 17 00:00:00 2001 -From: Waldemar Brodkorb -Date: Mon, 25 Jan 2016 21:11:34 +0100 -Subject: [PATCH] Make sure to always terminate decoded string - -Write a terminating '\0' to dest when the first byte of the encoded data -is 0. This corner case was previously missed. - -Signed-off-by: Daniel Fahlgren -Signed-off-by: Waldemar Brodkorb - -Upstream-Status: Backport -http://repo.or.cz/uclibc-ng.git/commit/bb01edff0377f2585ce304ecbadcb7b6cde372ac -CVE: CVE-2016-2225 -Signed-off-by: Armin Kuster - ---- - libc/inet/resolv.c | 1 + - 1 file changed, 1 insertion(+) - -Index: git/libc/inet/resolv.c -=================================================================== ---- git.orig/libc/inet/resolv.c -+++ git/libc/inet/resolv.c -@@ -671,6 +671,7 @@ int __decode_dotted(const unsigned char - if (!packet) - return -1; - -+ dest[0] = '\0'; - while (--maxiter) { - if (offset >= packet_len) - return -1; diff --git a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/uClibc.distro b/yocto-poky/meta/recipes-core/uclibc/uclibc-git/uClibc.distro index 3827b66e9..7785ce8bf 100644 --- a/yocto-poky/meta/recipes-core/uclibc/uclibc-git/uClibc.distro +++ b/yocto-poky/meta/recipes-core/uclibc/uclibc-git/uClibc.distro @@ -79,11 +79,11 @@ UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9 UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y # UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set -UCLIBC_HAS_STDIO_BUFSIZ_256=y +# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set # UCLIBC_HAS_STDIO_BUFSIZ_512 is not set # UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set # UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set -# UCLIBC_HAS_STDIO_BUFSIZ_4096 is not set +UCLIBC_HAS_STDIO_BUFSIZ_4096=y # UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y # UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set diff --git a/yocto-poky/meta/recipes-core/uclibc/uclibc-package.inc b/yocto-poky/meta/recipes-core/uclibc/uclibc-package.inc index c1815f9a3..439f84e4f 100644 --- a/yocto-poky/meta/recipes-core/uclibc/uclibc-package.inc +++ b/yocto-poky/meta/recipes-core/uclibc/uclibc-package.inc @@ -1,6 +1,6 @@ # Ensure the uclibc-dev package is processed before uclibc-staticdev to allow # *_nonshared.a libraries to be packaged in the uclibc-dev package. -PACKAGES = "ldd uclibc-utils-dbg uclibc-utils uclibc-gconv uclibc-thread-db uclibc-argp uclibc-backtrace uclibc-libcrypt uclibc-libintl uclibc-libnsl uclibc-libresolv uclibc-libm uclibc-libdl uclibc-libutil uclibc-libpthread uclibc-librt ${PN}-dbg ${PN}-dev ${PN}-staticdev ${PN}-doc ${PN}" +PACKAGES = "ldd uclibc-utils uclibc-gconv uclibc-thread-db uclibc-argp uclibc-backtrace uclibc-libcrypt uclibc-libintl uclibc-libnsl uclibc-libresolv uclibc-libm uclibc-libdl uclibc-libutil uclibc-libpthread uclibc-librt ${PN}-dbg ${PN}-dev ${PN}-staticdev ${PN}-doc ${PN}" FILES_uclibc-libcrypt = "${base_libdir}/libcrypt*.so.* ${base_libdir}/libcrypt-*.so" FILES_uclibc-libintl = "${base_libdir}/libintl*.so.* ${base_libdir}/libintl-*.so" @@ -14,7 +14,6 @@ FILES_uclibc-librt = "${base_libdir}/librt*.so.* ${base_libdir}/librt-*.so" FILES_ldd = "${bindir}/ldd" FILES_uclibc-utils = "${bindir} ${sbindir}" -FILES_uclibc-utils-dbg += "${bindir}/.debug ${sbindir}/.debug" FILES_uclibc-gconv = "${libdir}/gconv" FILES_uclibc-thread-db = "${base_libdir}/libthread_db*" FILES_uclibc-argp = "${base_libdir}/libuargp-*.so ${base_libdir}/libuargp*.so.*" diff --git a/yocto-poky/meta/recipes-core/uclibc/uclibc.inc b/yocto-poky/meta/recipes-core/uclibc/uclibc.inc index 533aa3d95..1d42284fb 100644 --- a/yocto-poky/meta/recipes-core/uclibc/uclibc.inc +++ b/yocto-poky/meta/recipes-core/uclibc/uclibc.inc @@ -13,7 +13,6 @@ SECTION = "libs" LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343 \ file://COPYING.LIB.boilerplate;md5=aaddeadcddeb918297e0e4afc52ce46f \ file://${S}/test/regex/testregex.c;beginline=1;endline=31;md5=234efb227d0a40677f895e4a1e26e960" -PR = "r9" require uclibc-config.inc @@ -40,6 +39,12 @@ COMPATIBLE_HOST = ".*-uclibc.*" INHIBIT_DEFAULT_DEPS = "1" +# There appears to be a parallel race in uclibc: +# GEN /extra/locale/locale_collate.h +# xargs: ../..//extra/locale/gen_collate: Text file busy +# make[1]: *** [../..//extra/locale/locale_collate.h] Error 126 +PARALLEL_MAKE = "" + # do_stage barfs on a CC with whitespace, therefore put the 'HOST_CC_ARCH' in # the CFLAGS (when building the utils). OEMAKE_NO_CC = "'STRIPTOOL=true' 'LD=${LD}'" @@ -57,13 +62,8 @@ export V="2" # -O -fno-omit-frame-pointer ends up with GCC ICE on thumb as reported # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44860 # -CFLAGS_arm := "${@oe_filter_out('-fno-omit-frame-pointer', '${CFLAGS}', d)}" -UCLIBC_EXTRA_CFLAGS := "${@oe_filter_out('(-I\S+|-i\S+)', '${CFLAGS}', d)}" - -do_compile_prepend () { - unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS - oe_runmake pregen -} +CFLAGS_remove_arm = "-fno-omit-frame-pointer" +UCLIBC_EXTRA_CFLAGS = "${@oe_filter_out('(-I\S+|-i\S+)', '${CFLAGS}', d)}" configmangle = '/^KERNEL_HEADERS/d; \ /^RUNTIME_PREFIX/d; \ @@ -71,7 +71,7 @@ configmangle = '/^KERNEL_HEADERS/d; \ /^SHARED_LIB_LOADER_PREFIX/d; \ /^UCLIBC_EXTRA_CFLAGS/d; \ s,.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g; \ - ${@["","s,.*COMPILE_IN_THUMB_MODE.*,COMPILE_IN_THUMB_MODE=y,;"][d.getVar("ARM_INSTRUCTION_SET", True) != "arm"]} \ + ${@["","s,.*COMPILE_IN_THUMB_MODE.*,COMPILE_IN_THUMB_MODE=y,;"][d.getVar("ARM_INSTRUCTION_SET", True) == "thumb"]} \ ${@["","s,.*UCLIBC_HAS_LOCALE.*,UCLIBC_HAS_LOCALE=y,;"][d.getVar("USE_NLS", True) == "yes"]} \ ${@["","s,.*LDSO_GNU_HASH_SUPPORT.*,# LDSO_GNU_HASH_SUPPORT is not set,;"][d.getVar("TARGET_ARCH", True) in ['mips', 'mipsel', 'mips64', 'mips64el', 'avr32']]} \ /^CROSS/d; \ @@ -82,8 +82,8 @@ configmangle = '/^KERNEL_HEADERS/d; \ /HAS_FPU/d; \ ${@["","s,.*MULTILIB_DIR.*,MULTILIB_DIR=\"${baselib}\",;"][d.getVar("baselib", True) != "lib"]} \ ' -OE_FEATURES := "${@features_to_uclibc_conf(d)}" -OE_DEL := "${@features_to_uclibc_del(d)}" +OE_FEATURES = "${@features_to_uclibc_conf(d)}" +OE_DEL = "${@features_to_uclibc_del(d)}" python () { if "${OE_DEL}": d.setVar('configmangle_append', "${OE_DEL}" + "\n") -- cgit v1.2.3