[Rpm-maint] [rpm-software-management/rpm] specfile parsing: why does `Source` files need to be present? (#1592)

Nikola Forró notifications at github.com
Tue Mar 23 10:36:58 UTC 2021


To illustrate the problem (even without rebase-helper):

```bash
$ rhpkg clone -a cronie
$ cd cronie && git checkout rhel-8.5.0
$ cat cronie.spec
...
%prep
%setup -q

%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
...
```
```bash
$ python3 -c 'import os, rpm; rpm.addMacro("_sourcedir", os.getcwd()); print(rpm.spec("cronie.spec", flags=rpm.RPMSPEC_FORCE).prep)'
warning: line 31: It's not recommended to have unversioned Obsoletes: Obsoletes:        cronie-sysvinit
cd '/home/nforro/rpmbuild/BUILD'
rm -rf 'cronie-1.5.2'
/usr/bin/tar -xof '/tmp/cronie/cronie-1.5.2.tar.gz'
STATUS=$?
if [ $STATUS -ne 0 ]; then
  exit $STATUS
fi
cd 'cronie-1.5.2'
/usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
```
```bash
$ python3 -c 'import os, rpm; rpm.addMacro("_sourcedir", os.getcwd()); print(rpm.spec("cronie.spec", flags=0).prep)'
warning: line 31: It's not recommended to have unversioned Obsoletes: Obsoletes:        cronie-sysvinit
error: Bad source: /tmp/cronie/cronie-1.5.2.tar.gz: No such file or directory
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ValueError: can't parse specfile
```
```bash
$ rhpkg sources
Downloading cronie-1.5.2.tar.gz
```
```bash
$ python3 -c 'import os, rpm; rpm.addMacro("_sourcedir", os.getcwd()); print(rpm.spec("cronie.spec", flags=rpm.RPMSPEC_FORCE).prep)'
warning: line 31: It's not recommended to have unversioned Obsoletes: Obsoletes:        cronie-sysvinit
cd '/home/nforro/rpmbuild/BUILD'
rm -rf 'cronie-1.5.2'
/usr/bin/tar -xof '/tmp/cronie/cronie-1.5.2.tar.gz'
STATUS=$?
if [ $STATUS -ne 0 ]; then
  exit $STATUS
fi
cd 'cronie-1.5.2'
/usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
```
```bash
$ python3 -c 'import os, rpm; rpm.addMacro("_sourcedir", os.getcwd()); print(rpm.spec("cronie.spec", flags=0).prep)'
warning: line 31: It's not recommended to have unversioned Obsoletes: Obsoletes:        cronie-sysvinit
cd '/home/nforro/rpmbuild/BUILD'
rm -rf 'cronie-1.5.2'
/usr/bin/gzip -dc '/tmp/cronie/cronie-1.5.2.tar.gz' | /usr/bin/tar -xof -
STATUS=$?
if [ $STATUS -ne 0 ]; then
  exit $STATUS
fi
cd 'cronie-1.5.2'
/usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .

echo "Patch #0 (fix-memory-leaks.patch):"
/usr/bin/patch --no-backup-if-mismatch -p1  --fuzz=0 < /tmp/cronie/fix-memory-leaks.patch

echo "Patch #1 (fix-unsafe-code.patch):"
/usr/bin/patch --no-backup-if-mismatch -p1  --fuzz=0 < /tmp/cronie/fix-unsafe-code.patch

echo "Patch #2 (cronie-1.5.2-context-role.patch):"
/usr/bin/patch --no-backup-if-mismatch -p1  --fuzz=0 < /tmp/cronie/cronie-1.5.2-context-role.patch

echo "Patch #3 (cronie-1.5.2-restart-on-failure.patch):"
/usr/bin/patch --no-backup-if-mismatch -p1  --fuzz=0 < /tmp/cronie/cronie-1.5.2-restart-on-failure.patch
```

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/1592#issuecomment-804795963
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rpm.org/pipermail/rpm-maint/attachments/20210323/1f1fc553/attachment.html>


More information about the Rpm-maint mailing list