Description of problem: SPEC files that worked perfectly well with a Fedora 24 environment give errors like in the summary after upgrading to fedora 26. Version-Release number of selected component (if applicable): rpm-build-4.13.0.1-5.fc26.x86_64 How reproducible: Upgrade to Fedora 26. Try to build mythtv from git source using the packaging https://github.com/MythTV/packaging system Actual results: SPEC files give us: RPM build errors: Too many levels of recursion in macro expansion. It is likely caused by recursive macro declaration. Expected results: No such messages, proper executed build. Additional info:
Please write exact steps how to reproduce.
have MythTV git in /usr/src/mythtv, branch fixes/0.27 have packaging git in /usr/src/packaging, branch fixes/0.27 enter /usr/src/packaging/rpm run buildmyth [root@recorder src]# cd packaging/rpm/ [root@recorder rpm]# ./build_myth.sh Fetching latest information from git repository. remote: Counting objects: 8, done. remote: Compressing objects: 100% (5/5), done. remote: Total 8 (delta 3), reused 8 (delta 3), pack-reused 0 Unpacking objects: 100% (8/8), done. From git://github.com/MythTV/mythtv b2a2ccf5c2..4381e686c4 fixes/29 -> origin/fixes/29 Building 0.27.6.1 (latest revision) Updating mythtv.spec _gitver to 0.27.6.1 Updating mythweb.spec _gitver to 0.27.6.1 Creating tarball from git clones at /usr/src/mythtv /usr/src/packaging/rpm/mythtv/mythweb-0.27.6.tar.bz2 warning: bogus date in %changelog: Wed Mar 12 2012 Chris Petersen <cpetersen> 0.25-0.1.git warning: bogus date in %changelog: Sun Mar 03 2012 Chris Petersen <cpetersen> 0.25-0.1.git error: Too many levels of recursion in macro expansion. It is likely caused by recursive macro declaration. error: Too many levels of recursion in macro expansion. It is likely caused by recursive macro declaration. Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.XqhvCd /var/tmp/rpm-tmp.XqhvCd: line 5: unexpected EOF while looking for matching `"' error: Bad exit status from /var/tmp/rpm-tmp.XqhvCd (%prep) RPM build errors: bogus date in %changelog: Wed Mar 12 2012 Chris Petersen <cpetersen> 0.25-0.1.git bogus date in %changelog: Sun Mar 03 2012 Chris Petersen <cpetersen> 0.25-0.1.git Too many levels of recursion in macro expansion. It is likely caused by recursive macro declaration. Too many levels of recursion in macro expansion. It is likely caused by recursive macro declaration. Bad exit status from /var/tmp/rpm-tmp.XqhvCd (%prep) real 0m0,039s user 0m0,028s sys 0m0,004s MythWeb build error. Creating tarballs from git clones at /usr/src/mythtv /usr/src/packaging/rpm/mythtv/mythtv-0.27.6.tar.bz2 /usr/src/packaging/rpm/mythtv/mythplugins-0.27.6.tar.bz2 error: Too many levels of recursion in macro expansion. It is likely caused by recursive macro declaration. error: line 967: --extra-cflags="%{optflags} -fomit-frame-pointer" \ --extra-cxxflags="%{optflags} -fomit-frame-pointer" \ %endif real 0m0,071s user 0m0,036s sys 0m0,004s MythTV build error. [root@recorder rpm]# [root@recorder packaging]# cat /var/tmp/rpm-tmp.XqhvCd #!/bin/sh RPM_SOURCE_DIR="/usr/src/packaging/rpm/mythtv" RPM_BUILD_DIR="/root/rpmbuild/BUILD" RPM_OPT_FLAGS="-march=k8 -mtune=k8 -msse -msse2 -msse3 -m3dnow -march=k8 -mtune=k8 -msse -msse2 -msse3 -m3dnow -march=k8 -mtune=k8 -msse -msse2 -msse3 -m3dnow -march=k8 -mtune=k8 -msse -msse2 -msse3 -m3dnow -march=k8 -mtune=k8 -msse -msse2 -msse3 -m3dnow -march=k8 -mtune=k8 -msse -msse2 -msse3 -m3dnow cd '/root/rpmbuild/BUILD' rm -rf 'mythweb-0.27.6' /usr/bin/mkdir -p mythweb-0.27.6 cd 'mythweb-0.27.6' /usr/bin/bzip2 -dc '/usr/src/packaging/rpm/mythtv/mythweb-0.27.6.tar.bz2' | /usr/bin/tar -xof - STATUS=$? if [ $STATUS -ne 0 ]; then exit $STATUS fi /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . # Delete any git control files find . -name .git\* -exec rm {} \+ # Fix up permissions for MythWeb chmod -R g-w mythweb/* # Remove unwanted execute bits from php mythweb files find mythweb/ -name '*.php' -exec chmod -x {} \+ ################################################################################ exit 0[root@recorder packaging]# Notice missing quotation near the end of the RPM_OPT_FLAGS line.
I can't reproduce this. rpmspec -P doesn't fail here. moreover, requiring developer to review many thousands of lines of some 3rd-party broken spec file and cloning 323.46 MiB git repository and installing gazillions of dependencies is not really good thing. Please report this bug to MythTV developers.
I see: [root@recorder rpm]# rpmspec -P mythtv.spec error: Too many levels of recursion in macro expansion. It is likely caused by recursive macro declaration. error: line 967: --extra-cflags="%{optflags} -fomit-frame-pointer" \ --extra-cxxflags="%{optflags} -fomit-frame-pointer" \ %endif So what is causing this? What files can I check and what should I look for? What did change with the upgrade that could influence this?
Also: [root@recorder rpm]# rpmspec -P mythweb.spec warning: bogus date in %changelog: Wed Mar 12 2012 Chris Petersen <cpetersen> 0.25-0.1.git warning: bogus date in %changelog: Sun Mar 03 2012 Chris Petersen <cpetersen> 0.25-0.1.git error: Too many levels of recursion in macro expansion. It is likely caused by recursive macro declaration.
(In reply to udo from comment #4) > I see: > [root@recorder rpm]# rpmspec -P mythtv.spec > error: Too many levels of recursion in macro expansion. It is likely caused > by recursive macro declaration. > error: line 967: --extra-cflags="%{optflags} -fomit-frame-pointer" \ > --extra-cxxflags="%{optflags} -fomit-frame-pointer" \ > %endif > > So what is causing this? No idea. > What files can I check and what should I look for? *.spec > What did change with the upgrade that could influence this? Fedora might started defining some new macro which doesn't play with %define well, but works with %global. (In reply to udo from comment #5) > Also: > > [root@recorder rpm]# rpmspec -P mythweb.spec > warning: bogus date in %changelog: Wed Mar 12 2012 Chris Petersen > <cpetersen> 0.25-0.1.git > warning: bogus date in %changelog: Sun Mar 03 2012 Chris Petersen > <cpetersen> 0.25-0.1.git > error: Too many levels of recursion in macro expansion. It is likely caused > by recursive macro declaration. It is MythTV bug.
FWIW: [root@recorder rpm]# rpm -qa|grep ^rpm|while read a; do > rpm -V $a > done [root@recorder rpm]# This shows that all rpm-related rpms (and a few 'extra' ones) are unmodified on this box and are installed as intended. Right?
(In reply to udo from comment #7) > FWIW: > [root@recorder rpm]# rpm -qa|grep ^rpm|while read a; do > > rpm -V $a > > done > [root@recorder rpm]# > > This shows that all rpm-related rpms (and a few 'extra' ones) are unmodified > on this box and are installed as intended. > Right? Yes, and please stop re-opening bug. This is not support forum.
Furthermore, w.r.t. your %global suggestion, after replacing %define by %global: [root@recorder rpm]# grep define mythweb.spec [root@recorder rpm]# rpmspec -q -v mythweb.spec error: Too many levels of recursion in macro expansion. It is likely caused by recursive macro declaration. mythweb-0.27.6-0.1.git.1.fc26.x86_64 mythweb-debuginfo-0.27.6-0.1.git.1.fc26.x86_64 So I see no change here.
Report this bug to upstream.
Isn't rpm a redhat product?
(In reply to udo from comment #11) > Isn't rpm a redhat product? MythTV is not part of Fedora.
We are looking at the spec files. Not at the source tree. Nothing more about MythTV. You suggested, without real explanation, that %define should be replaced by %global. So I did that. And the rpmspec still complains. I did not change MyhthTV source while I upgraded to Fedora 26. So the change must be in Fedora. When things start functioning differently, or perhaps stop functioning completely, by such an upgrade, how to contact rpm upstream? Isn't redhat the rpm developer?
[root@recorder ~]# cat .rpmrc # #optflags: x86_64 %{__global_cflags} -m64 -mtune=nocona optflags: x86_64 -march=k8 -mtune=k8 -msse -msse2 -msse3 -m3dnow %{__global_cflags} -m64 [root@recorder ~]# mv .rpmrc rpmrc [root@recorder ~]# cd /usr/src/packaging/rpm/ [root@recorder rpm]# rpmspec -q mythweb.spec mythweb-0.27.6-0.1.git.1.fc26.x86_64 mythweb-debuginfo-0.27.6-0.1.git.1.fc26.x86_64 [root@recorder rpm]# I.e.: no error. So what is wrong about the config in .rpmrc? It used to work very well for years.
In /usr/lib/rpm/redhat/macros we find: %__global_cflags %{optflags} That explains the recursion. But it does not explain the change here; the .rpmrc has worked well for years and redhat/fedora/rpm-dev/... changed the macros. So yes the problem was caused by redhat/fedora/rpm-dev/... . Why didn't you ask me about rpm configuration?
(In reply to udo from comment #15) > In /usr/lib/rpm/redhat/macros we find: > > %__global_cflags %{optflags} > > That explains the recursion. > But it does not explain the change here; the .rpmrc has worked well for > years and redhat/fedora/rpm-dev/... changed the macros. > > So yes the problem was caused by redhat/fedora/rpm-dev/... . > > Why didn't you ask me about rpm configuration? Because this is not support forum. There is clearly no bug in here. Macros are changing over the time, it is expected. If this breaks your local configuration, it is not problem of RPM.
It /is/ a bug, in multiple ways: - Nobody asked or consulted me about this change (duh! I am as unreachable as the fedora thing) - You did not explain this change - You did not ask me about any local config besides the contents of the (verified!) rpms to help solve the issue - You wrote it was mythtv - You gave me a hard time by all this. And then I find a but about reorganizing them cflags stuff: https://bugzilla.redhat.com/show_bug.cgi?id=1393492 So yes it as a mess (see above) and yes the mess comes with a mess in solving all this.
*** Bug 1482509 has been marked as a duplicate of this bug. ***