Bug 2383208 - dash dependency disabled but rpmlint/checks/BashismsCheck.py still included
Summary: dash dependency disabled but rpmlint/checks/BashismsCheck.py still included
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora EPEL
Classification: Fedora
Component: rpmlint
Version: epel10
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Ulrik Haugen
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2025-07-24 11:18 UTC by Ulrik Haugen
Modified: 2025-08-06 01:04 UTC (History)
5 users (show)

Fixed In Version: rpmlint-2.7.0-6.el10_1
Clone Of:
Environment:
Last Closed: 2025-08-06 01:04:55 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
Example package to reproduce the problem (412.59 KB, application/x-rpm)
2025-07-24 11:18 UTC, Ulrik Haugen
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Fedora Package Sources rpmlint pull-request 52 0 None None None 2025-07-28 12:24:03 UTC
Red Hat Bugzilla 2335416 0 unspecified CLOSED Please branch and build dash in epel10 2025-08-06 01:04:58 UTC

Description Ulrik Haugen 2025-07-24 11:18:14 UTC
Created attachment 2098085 [details]
Example package to reproduce the problem

Description of problem:
I'm packaging pontos (from https://github.com/greenbone/pontos) with pyproject-rpm-macros.

When trying to run rpmlint on the resulting package it (understandably) takes https://github.com/greenbone/pontos/blob/main/pontos/updateheader/templates/AGPL-3.0-or-later/template.sh and it's cousins for shell scripts and tries to check for bashisms resulting in:

% rpmlint -v --file .rpmlintrc pontos.spec rpmbuild/SRPMS/pontos-25.6.0-1liu1.el10.src.rpm rpmbuild/RPMS/noarch/pontos-25.6.0-1liu1.el10.noarch.rpm rpmbuild/RPMS/noarch/pontos-doc-25.6.0-1liu1.el10.noarch.rpm 
/bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
(none): E: fatal error while reading rpmbuild/RPMS/noarch/pontos-25.6.0-1liu1.el10.noarch.rpm: [Errno 2] No such file or directory: 'dash'
Traceback (most recent call last):
  File "/usr/bin/rpmlint", line 8, in <module>
    sys.exit(lint())
             ^^^^^^
  File "/usr/lib/python3.12/site-packages/rpmlint/cli.py", line 176, in lint
    sys.exit(lint.run())
             ^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/rpmlint/lint.py", line 108, in run
    return self._run()
           ^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/rpmlint/lint.py", line 76, in _run
    self.validate_files(self.options['rpmfile'])
  File "/usr/lib/python3.12/site-packages/rpmlint/lint.py", line 246, in validate_files
    self.validate_file(pkg, pkg == packages[-1])
  File "/usr/lib/python3.12/site-packages/rpmlint/lint.py", line 272, in validate_file
    raise e
  File "/usr/lib/python3.12/site-packages/rpmlint/lint.py", line 265, in validate_file
    self.run_checks(pkg, is_last)
  File "/usr/lib/python3.12/site-packages/rpmlint/lint.py", line 281, in run_checks
    fn(pkg)
  File "/usr/lib/python3.12/site-packages/rpmlint/checks/AbstractCheck.py", line 17, in check
    return self.check_binary(pkg)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/rpmlint/checks/AbstractCheck.py", line 60, in check_binary
    raise err
  File "/usr/lib64/python3.12/concurrent/futures/thread.py", line 59, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/rpmlint/checks/BashismsCheck.py", line 39, in check_file
    self.file_cache[pkgfile.md5] = list(self.check_bashisms(pkg, filepath, filename))
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/rpmlint/checks/BashismsCheck.py", line 53, in check_bashisms
    r = subprocess.run(['dash', '-n', filepath],
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/subprocess.py", line 550, in run
    with Popen(*popenargs, **kwargs) as process:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/subprocess.py", line 1028, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib64/python3.12/subprocess.py", line 1963, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'dash'

Version-Release number of selected component (if applicable):
% rpmlint --version
2.7.0


How reproducible:
Always

Steps to Reproduce:
Run rpmlint (on epel10) on the attached rpm.


Actual results:
Complaints about:
(none): E: fatal error while reading rpmbuild/RPMS/noarch/pontos-25.6.0-1liu1.el10.noarch.rpm: [Errno 2] No such file or directory: 'dash'


Expected results:
Errors but no errors fatal to rpmlint.

Additional info:
grep dash /usr/lib/python3.12/site-packages/rpmlint/checks/BashismsCheck.py 
        Run dash and then checkbashism on file
            r = subprocess.run(['dash', '-n', filepath],

I presume the requirement on dash is disabled on rhel because dash isn't packaged for epel (https://bugzilla.redhat.com/show_bug.cgi?id=2335416) but then perhaps rpmlint/checks/BashismsCheck.py shouldn't be included either?

Comment 1 Miro Hrončok 2025-07-24 11:38:30 UTC
Yes, the check needs to be disabled.

Perhaps https://src.fedoraproject.org/rpms/rpmlint/c/1a851a987dbb855fd89988ed0b6d41a05d1ba189?branch=rawhide was not 100 % correct.

Will you be able to submit a PR for this?

Comment 2 Ulrik Haugen 2025-07-25 08:05:55 UTC
I could take a stab at it next week.

Comment 3 Ulrik Haugen 2025-07-28 09:38:49 UTC
I just created https://src.fedoraproject.org/rpms/rpmlint/pull-request/52, it's my first pull request to a Fedora package so i have some questions.

I created it against the rawhide branch, should it have been the epel10 branch instead?

I assumed you'd want to handle the release tag and changelog.

Despite waiting for a long time after adding an ssh key to Fas src.fedoraproject.org never stopped saying "You need to upload SSH key to be able to clone over SSH", in the end i made the changes through the web editor, do you happen to know what i should have done?

Comment 4 Ulrik Haugen 2025-07-28 09:59:27 UTC
Also the green "merge" button in my pull request concerns me somewhat, have i somehow gotten permissions to do that?

Comment 5 Miro Hrončok 2025-07-28 10:04:44 UTC
(In reply to Ulrik Haugen from comment #3)
> I just created https://src.fedoraproject.org/rpms/rpmlint/pull-request/52,
> it's my first pull request to a Fedora package so i have some questions.

Congratulations!

> I created it against the rawhide branch, should it have been the epel10
> branch instead?

Depends on the package in question. Here we have epel10 and rawhide branches more or less in sync, so it doesn't really matter. You can open 2 PR form the smwe branch, so the CI build runs on rawhide + EPEL and we can verify the results.

> I assumed you'd want to handle the release tag and changelog.

Nah, it's better if you add that to your PR.

> Despite waiting for a long time after adding an ssh key to Fas
> src.fedoraproject.org never stopped saying "You need to upload SSH key to be
> able to clone over SSH", in the end i made the changes through the web
> editor, do you happen to know what i should have done?

If you are not in the packager group, you cannot push via SSH, you need to push via HTTPS. See https://docs.fedoraproject.org/en-US/ci/pull-requests/#_you_are_not_a_packager

(In reply to Ulrik Haugen from comment #4)
> Also the green "merge" button in my pull request concerns me somewhat, have
> i somehow gotten permissions to do that?

I think this is just a Pagure UI fail, the merge button will unroll a set of options, and you will see none. See https://pagure.io/pagure/issue/5251

Comment 6 Ulrik Haugen 2025-07-28 10:28:01 UTC
(In reply to Miro Hrončok from comment #5)
> (In reply to Ulrik Haugen from comment #3)
> > I created it against the rawhide branch, should it have been the epel10
> > branch instead?
> 
> Depends on the package in question. Here we have epel10 and rawhide branches
> more or less in sync, so it doesn't really matter. You can open 2 PR form
> the smwe branch, so the CI build runs on rawhide + EPEL and we can verify
> the results.

Ok, i'll hold off on the second pull request until after lunch to see if i get some more feedback in the first one.

> > I assumed you'd want to handle the release tag and changelog.
> 
> Nah, it's better if you add that to your PR.

Ok, i added that just now.

> > Despite waiting for a long time after adding an ssh key to Fas
> > src.fedoraproject.org never stopped saying "You need to upload SSH key to be
> > able to clone over SSH", in the end i made the changes through the web
> > editor, do you happen to know what i should have done?
> 
> If you are not in the packager group, you cannot push via SSH, you need to
> push via HTTPS. See
> https://docs.fedoraproject.org/en-US/ci/pull-requests/
> #_you_are_not_a_packager

I see, thank you for the pointer!

Comment 7 Fedora Update System 2025-07-28 15:15:21 UTC
FEDORA-EPEL-2025-cedf160322 (rpmlint-2.7.0-6.el10_1) has been submitted as an update to Fedora EPEL 10.1.
https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2025-cedf160322

Comment 8 Fedora Update System 2025-07-29 04:11:41 UTC
FEDORA-EPEL-2025-cedf160322 has been pushed to the Fedora EPEL 10.1 testing repository.

You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2025-cedf160322

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 9 Fedora Update System 2025-08-06 01:04:55 UTC
FEDORA-EPEL-2025-cedf160322 (rpmlint-2.7.0-6.el10_1) has been pushed to the Fedora EPEL 10.1 stable repository.
If problem still persists, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.