[Starlingx-discuss] build-pkgs cannot complete std build
Scott Little
scott.little at windriver.com
Thu Sep 27 16:10:59 UTC 2018
On 18-09-26 08:05 PM, Cordoba Malibran, Erich wrote:
> On Wed, 2018-09-26 at 16:44 -0700, Saul Wold wrote:
>> On 09/26/2018 02:08 PM, Scott Little wrote:
>>> I have also been investigating another intermittent build error
>>> affecting initscripts.
>>>
>>> https://bugs.launchpad.net/starlingx/+bug/1794611
>>>
>>> So any given package might be built by rpm-4.11.3, or by rpm-
>>> 4.14.0.
>>> It's a race with many inputs. Ideally it shouldn't matter, but it
>>> does. build-pkgs --serial might reduce the odds, but likely won't
>>> solve
>>> it entirely.
>>>
>> Why is this the case in the first place, can't we ensure we only
>> build
>> rpm-4.14.0?
>>
>>> In this case it is a new option that rpm passes to the patch
>>> command,
>>> --no-backup-if-mismatch, first introduced by rpm-4.13.
>>> This option has the effect of suppressing the creation of '.orig'
>>> files.
>>>
>>> Creation of .orig files are a consequence of applying patches that
>>> are
>>> not clean. Unclean patches are ones that require 'fuzzing', i.e.
>>> treat
>>> the patch line numbers as approximate, rather than a strict
>>> requirement,
>>> just so long as the before/after context seems to be correct.
>>>
>>> Prior to StarlingX, my policy for rebasing patches was that no fuzz
>>> is
>>> tolerated in our patches.
>>>
>>> All the work to upgrade to 7.5 has created a lot of fuzzy patches.
>>>
>> Wow, sorry I was not aware that they were all fuzzy patches.
>>
> How did you got this list? There were .orig files in those folder?
My query was ...
for f in $(grep -l 'Hunk' $MY_WORKSPACE/std/results/*/*/build.log); do
basename $(dirname $f); done
As noted in another thread, we might get false positives in the form of
CentOS/EL7 patches that are fuzzy, not our own.
>
>>> audit-2.8.1-3.el7.tis.2
>>> bash-4.2.46-30.el7.tis.3
>>> dhcp-4.2.5-68.el7.centos.1.tis.8
>>> dnsmasq-2.76-5.el7.tis.6
>>> drbd-8.4.3-0.tis.6
>>> facter-2.4.4-4.el7.tis.4
>>> haproxy-1.5.18-7.el7.tis.7
>>> initscripts-9.49.41-1.el7.tis.16
>>> iptables-1.4.21-24.1.el7_5.tis.3
>>> kubernetes-1.10.0-1.tis.1
>>> libevent-2.0.21-4.el7.tis.2
>>> lighttpd-1.4.50-1.el7.tis.6
>>> logrotate-3.8.6-15.el7.tis.3
>>> netpbm-10.79.00-7.el7.tis.2
>>> net-snmp-5.7.2-33.el7_5.2.tis.10
>>> net-tools-2.0-0.22.20131004git.el7.tis.2
>>> nfs-utils-1.3.0-0.54.el7.tis.4
>>> nss-pam-ldapd-0.8.13-16.el7.tis.4
>>> ntp-4.2.6p5-28.el7.centos.tis.3
>>> openldap-2.4.44-15.el7_5.tis.8
>>> openssh-7.4p1-16.el7_4.tis.9
>>> pam-1.1.8-22.el7.tis.4
>>> puppet-4.8.2-1.el7.tis.2
>>> puppet-ceph-2.4.1-1.el7.tis.4
>>> puppet-horizon-11.5.0-1.el7.tis.1
>>> python-2.7.5-69.el7_5.tis.3
>>> python-keyring-5.7.1-1.tis.2
>>> python-wsme-0.9.2-1.el7.tis.3
>>> resource-agents-3.9.5-124.el7.tis.12
>>> rsync-3.1.2-4.el7.tis.2
>>> shadow-utils-4.1.5.1-24.el7.tis.4
>>> sudo-1.8.19p2-14.el7_5.tis.3
>>> watchdog-5.13-11.el7.tis.2
>>>
>>> So any of these packages might or might not produce unwanted .orig
>>> files.
>>> The .orig files might or might not be packaged, or break packaging.
>>>
>>> So there are a number of threads to pull at here.
>>> 1) Are fuzzy patches tolerated. I vote no. Sooner or later a
>>> fuzzy
>>> patch will be mis-applied and cause us problems.
>> Agreed, when updating patches should be rebased and de-fuzzed.
>>
>>> 2) Can we force rpmbuild within mock to use a consistent policy
>>> with
>>> respect to creation of orig files?
>> It would be good to investigate that.
>>
> Seems we can pass _default_patch_fuzz 0 as a variable to rpmbuild.
>
> What could be the course of action here?
> - Wire rpmbuild to not allow fuzzy patches.
> - Then iteratively try to build until all the index are correct
>
>
> -Erich
I usually start by using a combination of 'build-pkgs --edit', 'git
format-patch', and meld (a graphical diff/merge tool).
e.g.
# If 'build-pkgs --edit' works, it's rather fragile as it's more or less
parsing spec files, it produces
# two gits, on for working on the tarball content, and a second for the
spec file and other files outside the tarball.
# Patches are seen as commits, applied with fuzz allowed. STX patches
will get a WRS prefix (sorry, I'll make that STX in future)
build-pkgs --edit --clean initscripts
build-pkgs --edit initscripts
...
11:36:45 b7: ===== 'initscripts' has been extracted for editing. =====
11:36:45 b7: ===== Metadata can be found at:
/localdisk/loadbuild/slittle1/starlingx-4/std/srpm_work/initscripts/rpmbuild
11:36:45 b7: ===== Source code can be found at:
/localdisk/loadbuild/slittle1/starlingx-4/std/srpm_work/initscripts/gits/initscripts.spec/initscripts-9.49.41
cd
/localdisk/loadbuild/slittle1/starlingx-4/std/srpm_work/initscripts/gits/initscripts.spec/initscripts-9.49.41
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s
%Cgreen(%ci) %C(bold blue)<%an>%Creset' --abbrev-commit
* 3aaf0ca - (HEAD, initscripts-9.49.41-1.el7) WRS: Patch15:
run-dhclient-as-daemon-for-ipv6.patch (2018-09-27 11:36:45 -0400) <Scott
Little>
* 126e810 - WRS: Patch14: ifup-eth-stop-waiting-if-link-is-up.patch
(2018-09-27 11:36:44 -0400) <Scott Little>
* df98ada - WRS: Patch13: ipv6-static-route-support.patch (2018-09-27
11:36:44 -0400) <Scott Little>
* cc391dd - WRS: Patch12:
sysconfig-unsafe-usage-of-linkdelay-variable.patch (2018-09-27 11:36:44
-0400) <Scott Little>
* 398cdf6 - WRS: Patch11:
sysconfig-affirmative-check-for-link-carrier.patch (2018-09-27 11:36:43
-0400) <Scott Little>
* a3ebe9e - WRS: Patch10: run-ifdown-on-all-interfaces.patch
(2018-09-27 11:36:43 -0400) <Scott Little>
* 0a6e1fc - WRS: Patch9: 0001-force-delay-check-link-down.patch
(2018-09-27 11:36:43 -0400) <Scott Little>
* 45075af - WRS: Patch8: 0001-dhclient-remove-1-arg.patch (2018-09-27
11:36:42 -0400) <Scott Little>
* 02f8215 - WRS: Patch7: support-interface-promisc.patch (2018-09-27
11:36:42 -0400) <Scott Little>
* c5b8eab - WRS: Patch6:
dhclient-restrict-interfaces-to-those-on-c.patch (2018-09-27 11:36:41
-0400) <Scott Little>
* 6d8bcb5 - WRS: Patch5: relocate-dhclient-leases-to-var-run.patch
(2018-09-27 11:36:41 -0400) <Scott Little>
* 480e9a5 - WRS: Patch4: support-interface-scriptlets.patch
(2018-09-27 11:36:41 -0400) <Scott Little>
* 487fdfa - (tag: pre_wrs_initscripts-9.49.41-1.el7) ORIGINAL:
extracted archive (2018-09-27 11:36:39 -0400) <Scott Little>
* 7ca8368 - (master) ORIGINAL: initial commit (2018-09-27 11:36:39
-0400) <Scott Little>
# Create new patches without fuzz. Note: patch comment text is often
discarded
# git format-patch <SHA_prior_to_first_WRS_patch>
git format-patch $(git tag | grep pre_wrs_)
# use meld or other diff/merge tool to transfer the revised line
numbers. A bit of coding magic is required to translate patch names.
cd $MY_REPO/stx/stx-integ/base/initscripts/centos/patches/
for src in $(ls -1
/localdisk/loadbuild/slittle1/starlingx-4/std/srpm_work/initscripts/gits/initscripts.spec/initscripts-9.49.41/00*patch);
do dest=$(ls -1 $(basename $src | cut -d '-' -f 4- | sed
's#.patch$#*#')); meld $src $dest; done
cd
/localdisk/loadbuild/slittle1/starlingx-4/std/srpm_work/initscripts/rpmbuild
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s
%Cgreen(%ci) %C(bold blue)<%an>%Creset' --abbrev-commit
* 4ecfd77 - (HEAD, initscripts-9.49.41-1.el7) WRS:
spec-run-dhclient-as-daemon-for-ipv6.patch (2018-09-27 11:36:40 -0400)
<Scott Little>
* 69d0bb4 - WRS: spec-ifup-eth-stop-waiting-if-link-is-up.patch
(2018-09-27 11:36:40 -0400) <Scott Little>
* e2942ca - WRS: ipv6-static-route-support.patch (2018-09-27 11:36:40
-0400) <Scott Little>
* 4e0368a - WRS: fix-build-failures-due-to-unwanted-sgid.patch
(2018-09-27 11:36:40 -0400) <Scott Little>
* bc43676 - WRS:
spec-sysconfig-unsafe-usage-of-linkdelay-variable.patch (2018-09-27
11:36:40 -0400) <Scott Little>
* 6a38a1d - WRS:
spec-sysconfig-affirmative-check-for-link-carrier.patch (2018-09-27
11:36:40 -0400) <Scott Little>
* 730fe3c - WRS: 0001-Update-package-versioning-for-TIS-format.patch
(2018-09-27 11:36:39 -0400) <Scott Little>
* a083a54 - WRS: run-ifdown-on-all-interfaces.patch (2018-09-27
11:36:39 -0400) <Scott Little>
* 7f02bc2 - WRS: force-delay-check-link-down.patch (2018-09-27
11:36:39 -0400) <Scott Little>
* dbdb232 - WRS:
0001-Fix-Interfaces-intermittenly-do-not-come-up-on-boot.patch
(2018-09-27 11:36:39 -0400) <Scott Little>
* c51c427 - WRS: spec-add-mountnfs-init-script.patch (2018-09-27
11:36:39 -0400) <Scott Little>
* 0a5a833 - WRS: 0001-Support-PROMISC-for-interfaces-config.patch
(2018-09-27 11:36:39 -0400) <Scott Little>
* e0bbac3 - WRS: 0001-Disable-zeroconf-route.patch (2018-09-27
11:36:39 -0400) <Scott Little>
* 6485d13 - WRS: stop-creating-shared-dirs.patch (2018-09-27 11:36:39
-0400) <Scott Little>
* 7223930 - WRS: spec-include-TiS-changes.patch (2018-09-27 11:36:39
-0400) <Scott Little>
* b63eb3d - (tag: wrs_post_copy_list_initscripts-9.49.41-1.el7) WRS:
COPY_LIST content (2018-09-27 11:36:39 -0400) <Scott Little>
* 8e1e97a - (tag: pre_wrs_initscripts-9.49.41-1.el7) ORIGINAL: srpm
extract (2018-09-27 11:36:38 -0400) <Scott Little>
* a6928fd - (master) ORIGINAL: initial commit (2018-09-27 11:36:38
-0400) <Scott Little>
# Create new meta-patches without fuzz. Note: patch comment text is
often discarded
# git format-patch <SHA_prior_to_first_WRS_patch>
git format-patch $(git tag | grep wrs_post_copy)
# use meld or other diff/merge tool to transfer the revised line
numbers. A bit of coding magic is required to translate patch names.
cd $MY_REPO/stx/stx-integ/base/initscripts/centos/meta_patches/
for src in $(ls -1
/localdisk/loadbuild/slittle1/starlingx-4/std/srpm_work/initscripts/rpmbuild/00*patch);
do dest=$(ls -1 $(basename $src | cut -d '-' -f 3- | sed
's#.patch$#*#')); meld $src $dest; done
>
>>> 3) Can we pre-build rpm, such that all packages build against the
>>> same
>>> rpm version?
>> Yes, as mentioned above we should use a consistent version.
>>
>>> 4) Are we patching any other low level build tools that have
>>> similar
>>> issues? Possibly explaining ceph? TBD
>>>
>> Yup more info is needed
>>
>> Sau!
>>
>>
>>>
>>> On 18-09-26 12:16 PM, Scott Little wrote:
>>>> aclocal 'too many loops' has been popping up sporadically for a
>>>> week
>>>> or two now. Possibly 7.5 related.
>>>>
>>>> I suspect that there is a build order and/or race condition
>>>> element to
>>>> this. It often goes away if you just run build-pkgs a second
>>>> time.
>>>>
>>>> The second possible element is that build-pkgs is using flags
>>>> that
>>>> preserve the mock environment between packages. The goal was to
>>>> avoid
>>>> reinstalling required packages that are often common across the
>>>> packages we build. It was a build time speedup that has been in
>>>> use
>>>> for 2-3 years now without incident.
>>>>
>>>> Google shows that other folks have hit 'aclocal too many loops'
>>>> as
>>>> well, and there are suggestions that it might be fixed in a
>>>> recent
>>>> update to automake. Scanning the changelog for the latest and
>>>> greatest from gnu.org doesn't show any obvious fixes addressing
>>>> this
>>>> issue.
>>>>
>>>> Scott
>>>>
>>>>
>>>> On 18-09-26 11:32 AM, Cordoba Malibran, Erich wrote:
>>>>> BUILDSTDERR: aclocal: error: too many loops
>>>>> BUILDSTDERR: aclocal: Please contact<bug-automake at gnu.org>.
>>>>> BUILDSTDERR: at /usr/share/automake-1.13/Automake/Channels.pm
>>>>> line 662.
>>>>> BUILDSTDERR: Automake::Channels::msg('automake', '',
>>>>> 'too many loops') called at /usr/share/automake-
>>>>> 1.13/Automake/ChannelDefs.pm line 212
>>>>> BUILDSTDERR: Automake::ChannelDefs::prog_error('too
>>>>> many loops') called at /usr/bin/aclocal line 1187
>>>>> BUILDSTDERR: error: Bad exit status from /var/tmp/rpm-
>>>>> tmp.Sj0E7c (%build)
>>>>> BUILDSTDERR: Macro expanded in comment on line 214: %global
>>>>> _libexecdir %{_exec_prefix}/lib
>>>>> BUILDSTDERR: Bad exit status from /var/tmp/rpm-tmp.Sj0E7c
>>>>> (%build)
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Starlingx-discuss mailing list
>>>> Starlingx-discuss at lists.starlingx.io
>>>> http://lists.starlingx.io/cgi-bin/mailman/listinfo/starlingx-disc
>>>> uss
>>>
>>>
>>>
>>> _______________________________________________
>>> Starlingx-discuss mailing list
>>> Starlingx-discuss at lists.starlingx.io
>>> http://lists.starlingx.io/cgi-bin/mailman/listinfo/starlingx-discus
>>> s
>>>
>> _______________________________________________
>> Starlingx-discuss mailing list
>> Starlingx-discuss at lists.starlingx.io
>> http://lists.starlingx.io/cgi-bin/mailman/listinfo/starlingx-discuss
> _______________________________________________
> Starlingx-discuss mailing list
> Starlingx-discuss at lists.starlingx.io
> http://lists.starlingx.io/cgi-bin/mailman/listinfo/starlingx-discuss
More information about the Starlingx-discuss
mailing list