rpmbuild ignores /usr/lib/macros if option --macros=file is used

Bug #1597074 reported by Fraser
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
rpm (Ubuntu)
New
Undecided
Unassigned

Bug Description

Building on Ubuntu 15.10 with RPM version 4.12.0.1+dfsg1-3build2

I expect that specifying a macros file with --macros <filename> should allow me to add or redefine the existing macros.

Instead it seems that only the macros file I specify is read, and the macros in the "official" macros file are no longer able to be evaluated.

# Simple test case: Command fails when any macros file is specified, even an empty one:
fhanson@fhanson-linux:~/$ rpm --macros=/dev/null --eval '%{__spec_install_template}'
%{__spec_install_template}

# expected output:
fhanson@fhanson-linux:~/$ rpm --eval '%{__spec_install_template}'
#!/bin/sh

  RPM_SOURCE_DIR="/ssd/home/fhanson/rpmbuild/SOURCES"
  RPM_BUILD_DIR="/ssd/home/fhanson/rpmbuild/BUILD"
  RPM_OPT_FLAGS="-O2 -g"
  RPM_ARCH="x86_64"
  RPM_OS="linux"
  export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS
  RPM_DOC_DIR="%{_docdir}"
  export RPM_DOC_DIR
  RPM_PACKAGE_NAME="%{name}"
  RPM_PACKAGE_VERSION="%{version}"
  RPM_PACKAGE_RELEASE="%{release}"
  export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE
  LANG=C
  export LANG
  unset CDPATH DISPLAY ||:
  RPM_BUILD_ROOT="/ssd/home/fhanson/rpmbuild/BUILDROOT/%{name}-%{version}-%{release}.x86_64"
  export RPM_BUILD_ROOT

  PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:/usr/lib64/pkgconfig:/usr/share/pkgconfig"
  export PKG_CONFIG_PATH

  exec > /dev/null
  umask 022
  cd "/ssd/home/fhanson/rpmbuild/BUILD"

I attempted to reproduce this on SLES11Sp2 (rpm 4.4.2.3) and could not.
This causes all of my rpm builds to fail that use a macros file, because all stage scripts are created with un-expanded macros.
Instead of my prep stage looking like this:
#!/bin/sh
...stuff

It looks like this:
%{__spec_prep_template}
cd '/ssd/home/fhanson/git/sustaining/sustaining/src/define/build/rpmbuild/BUILD'
rm -rf 'define-0.1'
%{__gzip} -dc '/ssd/home/fhanson/git/sustaining/sustaining/src/define/build/rpmbuild/SOURCES/define-0.1.tar.gz' | %{__tar} -xf -
STATUS=$?
if [ $STATUS -ne 0 ]; then
  exit $STATUS
fi
cd 'define-0.1'

This results in a failed build, because of course %{__spec_prep_template} is not a valid shebang line.

%{__spec_prep_post}fhanson@fhanson-linux:~/git/sustaining/sustaining/src/define (master)$ cat /ssd/home/fhanson/git/sustaining/sustaining/src/define/build/rpmbuild/tmp/rpm-tmp.OGXomQ make rpm
Building rpm package version 0.1 ...
mkdir -p build
cp -r rpmbuild build/
rpm --initdb --dbpath /ssd/home/fhanson/git/sustaining/sustaining/src/define/build/rpmbuild/rpmdb
tar xzf rpmbuild/SOURCES/define-0.1.tar.gz -C build/rpmbuild/BUILDROOT --strip-components=1
cd build/rpmbuild/; rpmbuild -vv --macros=rpmmacros --define="_topdir /ssd/home/fhanson/git/sustaining/sustaining/src/define/build/rpmbuild" -bb SPECS/define.spec
ufdio: 1 reads, 15439 total bytes in 0.000006 secs
Executing(%prep): %{__spec_prep_cmd} /ssd/home/fhanson/git/sustaining/sustaining/src/define/build/rpmbuild/tmp/rpm-tmp.6vTHsV
error: Exec of /ssd/home/fhanson/git/sustaining/sustaining/src/define/build/rpmbuild/tmp/rpm-tmp.6vTHsV failed (%prep): No such file or directory
error: Bad exit status from /ssd/home/fhanson/git/sustaining/sustaining/src/define/build/rpmbuild/tmp/rpm-tmp.6vTHsV (%prep)

RPM build errors:
    Bad exit status from /ssd/home/fhanson/git/sustaining/sustaining/src/define/build/rpmbuild/tmp/rpm-tmp.6vTHsV (%prep)
Makefile:91: recipe for target 'rpm' failed
make: *** [rpm] Error 1

summary: - rpmbuild fails with /usr/lib/macros syntax error if option --macros=file
- is used
+ rpmbuild ignores /usr/lib/macros if option --macros=file is used
description: updated
affects: rpm → rpm (Ubuntu)
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.