Bug 13086

Summary: Indirect depends on getopt will cause do_patch failures.
Product: [Build System, Metadata & Runtime] OE-Core Reporter: Lin Zhang <zhang.lin16>
Component: devtools / tool chainAssignee: Paul Eggleton <bluelightning>
Status: RESOLVED OBSOLETE QA Contact:
Severity: normal    
Priority: Undecided CC: meta.mr.watcher, meta.watcher, richard.purdie
Version: 2.6   
Target Milestone: ---   
Hardware: x86   
OS: Multiple   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: No (bug/feature does not impact docs)
Attachments:
Description Flags
A fix solution none

Description Lin Zhang 2018-12-17 02:25:27 UTC
Created attachment 4412 [details]
A fix solution

In poky/meta/classes/patch.bbclass, I found patch_do_patch depends on "${PATCHTOOL}-native:do_populate_sysroot". if ${PATCHTOOL} is quilt, we will find that quilt-native 
 has RDEPENDS on getopt in turn, while getopt is provided by util-linux. During the building process, if util-linux hasn't been DO_POPULATE_SYSROOTed yet, other packages depending on quilt will fail! eg:
===========
ERROR: pciutils-3.5.1-r0 do_patch: Command Error: 'quilt --quiltrc /mnt/JenkinsBuild/workspace/CGEL_V6/cgel_v6_tl_mergeci/cgel6x_yocto/build_output/build_aarch64-busybox-console/tmp/sysroots/x86_64-linux/etc/quiltrc push' exited with 0  Output:

/mnt/JenkinsBuild/workspace/CGEL_V6/cgel_v6_tl_mergeci/cgel6x_yocto/build_output/build_aarch64-busybox-console/tmp/sysroots/x86_64-linux/usr/share/quilt/push: line 299: /mnt/JenkinsBuild/workspace/CGEL_V6/cgel_v6_tl_mergeci/cgel6x_yocto/build_output/build_aarch64-busybox-console/tmp/sysroots/x86_64-linux/bin/getopt: No such file or directory

Usage: quilt push [-afqv] [--merge[=merge|diff3]] [--leave-rejects] [--color[=always|auto|never]] [--refresh] [num|patch]

ERROR: pciutils-3.5.1-r0 do_patch: Function failed: patch_do_patch

ERROR: Logfile of failure stored in: /mnt/JenkinsBuild/workspace/CGEL_V6/cgel_v6_tl_mergeci/cgel6x_yocto/build_output/build_aarch64-busybox-console/tmp/work/aarch64-poky-linux/pciutils/3.5.1-r0/temp/log.do_patch.4368

NOTE: recipe pciutils-3.5.1-r0: task do_patch: Failed

ERROR: Task (/mnt/JenkinsBuild/workspace/CGEL_V6/cgel_v6_tl_mergeci/cgel6x_yocto/sources/poky/meta/recipes-bsp/pciutils/pciutils_3.5.1.bb:do_patch) failed with exit code '1'

==========

In further debugging, I found that quilt has an private implementation on getopt, to fix this bug, just pass "--without-getopt" to EXTRA_OECONF of quilt-native.inc.
Comment 1 Richard Purdie 2018-12-20 15:43:25 UTC
pciutils 3.5.1 looks to be a version that is from before pyro. In pyro we added recipe specific sysroots and getopt is listed in HOSTTOOLS.

This bug therefore looks to be morty or earlier and is outside of our support window *and* has been fixed in releases beyond morty.

If this is a problem in rocko onwards, please reopen.