Skip to content

Implement the specfile preprocessing without RPM parsing of specfile #211

@praiskup

Description

@praiskup

Parsing specfiles might be problematic, as specfiles are distribution specific.

On Fedora 41, e.g., it is impossible to parse some of the old spec
files, because:

error: %patchN is obsolete, use %patch N (or %patch -P N): %patch1 -p1 -b .loneZeroWarning

On older systems, it is impossible to parse new specfiles, because, e.g.:

SpecParseFailure: Couldn’t parse spec file jello.spec:
error: line 18: Unknown tag: BuildSystem:            pyproject

The rmpautospec should avoid the specfile-parsing-by-RPM business,
somehow. The tooling is a terribly low-level. Consider a simple
task like:

Generating a source archive from dist-git checkout

This would be as simple as having a git checkout, and archiving
git ls-files HEAD + lookaside files (call /bin/dist-git-client, e.g.)
Then, with rpmautospec we have to git fetch --unshallow first
(we have to deal with its problems, somehow #210, but still good!).

Now, to process the specfile with rpmautospec, we are actually
parsing the specfile by RPM. This can not be done safely in general -> to
stay on the safe side, we have to switch into an appropriate Mock chroot,
and run rpmautospec there.

I'm not sure how the commit c7e1796 is related.
I'm aware there's error_on_unparseable_spec, but I'm not sure what's the
risk of setting it to False.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions