Hi Todd, Thanks for this!
On Sun Jun15'25 08:45:38PM, Todd Zullinger wrote: > From: Todd Zullinger <t...@pobox.com> > Date: Sun, 15 Jun 2025 20:45:38 -0400 > To: users@lists.fedoraproject.org > Reply-To: Community support for Fedora users <users@lists.fedoraproject.org> > Subject: Re: is there a way to disable dnf from ignoring conflicting > requests > > Hi, > > Ranjan Maitra via users wrote: > > I have a program called gbuffy which is very old, but used to compile fine > > in F41 (and even in F42). > > > > I am able to create a RPM but I have a strange problem in that while > > installing it, I get: > > > > $ sudo dnf install ../RPMS/x86_64/gbuffy-0.2.8-3.fc42.x86_64.rpm > > Updating and loading repositories: > > Repositories loaded. > > Failed to resolve the transaction: > > Problem: conflicting requests > > - nothing provides libcrypto.so.1.1()(64bit) needed by > > gbuffy-0.2.8-3.fc42.x86_64 from @commandline > > - nothing provides libssl.so.1.1()(64bit) needed by > > gbuffy-0.2.8-3.fc42.x86_64 from @commandline > > - nothing provides libssl.so.1.1(OPENSSL_1_1_0)(64bit) needed by > > gbuffy-0.2.8-3.fc42.x86_64 from @commandline > > You can try to add to command line: > > --skip-broken to skip uninstallable packages > > > > I do not understand what the issue is. The spec file explicitly disables > > openssl and does not even require it. > > The build section of the spec file you pasted contains: > > %build > ./configure --with-ssl=no --disable-ssl > %configure > %make_build > > It's calling %configure again, which overwrites the build > options you passed to the manual ./configure call on the > previous line. OK, got it. > > Without seeing the configure script, it's hard to know > whether you really want or need both the --with-ssl=no and > --disable-ssl. That _seems_ rather unusual. Right, the --disable-ssl is not really valid (and is ignored). But the example --with-ssl=no does not appear to do anything. However, I do not actually understand the call --with-ssl, it appears to say --with-ssl=SSL-ROOT (in the configure file). Here is the configure file, btw: https://paste.centos.org/view/0aab63ce I think that the --with-ssl is being ignored so I am not specifying this correctly. > > If they are both needed (./configure --help might help, or > reading the configure.(ac|in) file should clarify that), I'd > move those to the %configure line and drop the direct call > to ./configure, That's what the %configure macro does, after > all. > > %build > %configure --with-ssl=no --disable-ssl > %make_build > > You can use `rpm -E %configure` to see the fully expanded > macro, BTW. Thanks for this. The fully expanded macro does not have the characters ssl (which makes me think that is being ignored). > > > The RPM requires libPropList but that RPM (mine) installs > > without error. > > If you look through the build output carefully, you should > notice configure being run twice and, I suspect, the second > enables ssl. It may show what it linked against (which, I > guess, is a locally installed openssl1<something>). Right, I took the first one off, and updated my spec file to match what you are writing. https://paste.centos.org/view/e20a1db5 With regard to local files, I can not see where it is: $ locate libssl.so.1 $ comes back empty. So, I can not find it, and it appears to not be called when the executable is built outside the RPM. > > I see libPropList is listed as a BuildRequires. Is it > needed at build or install time? Typically, I'd expect the > BuildRequires to be more like: libPropList-devel to get the > necessary headers and such to build against. Right, I was working off a RH7 spec file. It should be BuildRequires, and this appears to have the header file. I will put my updated source code up on github so that there is something to reference. (It is similar to the old source code by Brandon Long, but was slightly modified to make it work with earlier versions of Fedora.) I dislike mock (for its tediousness:-( as you guessed:-) but will work on setting it up. Thanks again for all your help! Best wishes, Ranjan > > > Btw, here is the spec file: > > https://paste.centos.org/view/0e22b18d > > > > However, I am not sure where to put the bz2 or the > > libPropList RPM, so the spec file can not be compiled > > without these. > > I see the Source0 file you have specified as an absolute > path. That suggests that you're building this directly on > your host system as opposed to using an isolated build > environment like mock provides. While you can do that, it > is likely to hide other missing BuildRequires from you, > which might cause you problems if you build a new system and > trying to build this rpm again. > > So, only a little tangentially, I'd suggest using mock to > build the rpm to help ensure you're not missing other > BuildRequires. That also helps make sure that running > ./configure doesn't find older openssl 1.1 headers/libraries > on your system. > > As far as where to put Source0 and the libPropList rpm, > Source0 is ideally placed in the location specified by the > %{_sourcedir} macro. On current Fedora/rpm releases, that > is: ~/rpmbuild/SOURCES. Similarly, the spec file, by > default, would go in ~/rpmbuild/SPECS. Installing the > rpmdevtools package and running rpmdev-setuptree will create > the ~/rpmbuild directory and its various children, if you > don't already have it. > > Then you can simply specify it as: > > Source0: %{name}-%{version}.tar.bz2 > > in your spec file. > > For the libPropList rpm (and your eventual gbuffy package), > placing them in a directory and using createrepo is a > relatively simple way to get a local repository. That can > be served over https:// or some other network protocols, but > it's also trivial to use on the local host. > > Let's say you put your packages in ~/repo/fedora/41/x86_64. > You would create a yum repo file in /etc/yum.repos.d/, maybe > called ranjan.repo: > > cat <<-EOF >/etc/yum.repos.d/ranjan.repo > [ranjan] > name=Ranjan's Packages for Fedora $releasever - $basearch > baseurl=file:///home/ranjan/repo/fedora/$releasever/$basearch > enabled=1 > # a next step is to sign the packages and let dnf verify > # them > #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ranjan > gpgcheck=0 > metadata_expire=60 > EOF > > Then you move the rpms you have into the repo directory and > run `createrepo ~/repo/fedora/41/x86_64` to generate the > repodata directory and files which dnf will read. Then you > can install package from your local repo just like you do > from any other. > > That can be integrated with mock as well, should you get to > the point where you are using it to build your packages > instead of doing it directly on your host system. > > In /etc/mock/fedora-41-x86_64-ranjan.cfg, you'd put this, > which just includes the main fedora-41 mock config and a > template for your local repo: > > include('fedora-41-x86_64.cfg') > include('templates/ranjan.tpl') > > And in /etc/mock/templates/ranjan.tpl, you'd have what is > essentially a copy of your repo config: > > config_opts['dnf.conf'] += """ > [ranjan] > name=ranjan > baseurl=file:///home/ranjan/repo/fedora/{{ releasever }}/{{ target_arch }} > gpgcheck=0 > """ > > Using mock is some extra work initially, but it does save a > lot of hassle over time. It ensures you're building > packages which have the requisite BuildRequires as opposed > to maybe missing some which you happened to have installed > on your main system. And it allows you to not install all > of those devel packages on your host in the first place. > > You can also build for different version of Fedora, RHEL > (and Rocky or Alma) as well as a number of other RPM-based > distributions. > > -- > Todd > -- > _______________________________________________ > users mailing list -- users@lists.fedoraproject.org > To unsubscribe send an email to users-le...@lists.fedoraproject.org > Fedora Code of Conduct: > https://docs.fedoraproject.org/en-US/project/code-of-conduct/ > List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines > List Archives: > https://lists.fedoraproject.org/archives/list/users@lists.fedoraproject.org > Do not reply to spam, report it: > https://pagure.io/fedora-infrastructure/new_issue -- _______________________________________________ users mailing list -- users@lists.fedoraproject.org To unsubscribe send an email to users-le...@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/users@lists.fedoraproject.org Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue