2

I'm attempting to package libmp3lame and libmp3lame-devel much the same way that Debian packages it: they have libmp3lame as a package providing the libmp3lame.so shared library, libmp3lame-dev providing header files and documentation, and lame depending on libmp3lame providing the actual binary.

Here is my spec file, libmp3lame.spec:

Summary: Shared libraries for LAME.
Name: libmp3lame
Version: 3.99.5
Release: 1
License: LGPL
Vendor: The LAME Project
Packager: Naftuli Tzvi Kay <--->
URL: http://www.mp3dev.org
Group: Applications/Multimedia
Source: lame-%{version}.tar.gz
BuildRequires: gcc => 3.0.1, /usr/bin/find, ncurses-devel, nasm

%description
Shared libraries for LAME.

%package devel
Summary: Shared libraries for LAME (development files).
Group: Development/Libraries
Requires: %{name} = %{version}

%description devel
Shared libraries for LAME (development files).

%prep
%setup -n lame-%{version}

%build

# Vorbis makes the build fail for now. . .
rm -f config.cache

# configuration swiped from debian
%configure \
    --enable-nasm \
    --disable-rpath \
    --enable-dynamic-frontends \
    --enable-expopt=full \
    --enable-nasm \
    --with-fileio=lame
%{__make} %{?_smp_mflags} test CFLAGS="%{optflags}"

%install

%makeinstall
%{__ln_s} -f lame/lame.h %{buildroot}%{_includedir}/lame.h
### make install really shouldn't install these
# %{__rm} -rf %{buildroot}%{_docdir}/lame/

%post
/sbin/ldconfig

%postun
/sbin/ldconfig

%clean
%{__rm} -rf %{buildroot}

%files
%defattr (-,root,root)
%{_libdir}/libmp3lame.so.*
%{_libdir}/libmp3lame.so

%files devel
%defattr (-, root, root)
%doc API HACKING STYLEGUIDE
%{_includedir}/*

%changelog

* Mon Jan 11 2016 Naftuli Tzvi Kay <---> - 3.99.5-1
- Repackaged for reasons.

I'm seeing the following build errors:

RPM build errors:
    Installed (but unpackaged) file(s) found:
   /usr/bin/lame
   /usr/lib64/libmp3lame.a
   /usr/lib64/libmp3lame.la
   /usr/share/doc/lame/html/about.html
   /usr/share/doc/lame/html/abr.html
   /usr/share/doc/lame/html/cbr.html
   /usr/share/doc/lame/html/contact.html
   /usr/share/doc/lame/html/contributors.html
   /usr/share/doc/lame/html/detailed.html
   /usr/share/doc/lame/html/history.html
   /usr/share/doc/lame/html/index.html
   /usr/share/doc/lame/html/introduction.html
   /usr/share/doc/lame/html/links.html
   /usr/share/doc/lame/html/list.html
   /usr/share/doc/lame/html/ms_stereo.html
   /usr/share/doc/lame/html/usage.html
   /usr/share/doc/lame/html/vbr.html
   /usr/share/man/man1/lame.1.gz

I'm trying to only include the files I need in the final RPMs, but it seems to still complain about this.

  • because they're not being included in any %files section – Jeff Schaller Jan 12 '16 at 21:00
  • %{_libdir}/libmp3lame.so belongs in the devel package. just sayin' :) – Rich Homolka Jun 10 '16 at 0:33
3

Built files that get created with make install during the %makeinstall phase need to be explicitly included or excluded.

I was able to work around this by running manual rm commands after %makeinstall, but there appears to be another workaround in the %files section using %exclude clauses:

%files
%defattr (-,root,root)
%{_libdir}/libmp3lame.so.*
%{_libdir}/libmp3lame.so
%exclude %{_bindir}/lame
%exclude %{_libdir}/libmp3lame.a
%exclude %{_libdir}/libmp3lame.la

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.