file/file.spec
2024-02-26 09:12:49 +00:00

216 lines
6.5 KiB
RPMSpec

#
# spec file for package file
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define somajor 1
%define libname libmagic%{somajor}
Name: file
BuildRequires: bash >= 4.0
BuildRequires: libtool
BuildRequires: pkgconfig(bzip2)
BuildRequires: pkgconfig(liblzma)
BuildRequires: pkgconfig(libseccomp)
BuildRequires: pkgconfig(libzstd)
BuildRequires: pkgconfig(zlib)
URL: http://www.darwinsys.com/file/
# bug437293
%ifarch ppc64
Obsoletes: file-64bit
%endif
#
# Set Version also in python-magic.spec
Version: 5.45
Release: 0
Summary: A Tool to Determine File Types
License: BSD-2-Clause
Group: Productivity/File utilities
Source0: https://www.astron.com/pub/file/file-%{version}.tar.gz
Source2: baselibs.conf
Source3: file-rpmlintrc
Source4: https://www.astron.com/pub/file/file-%{version}.tar.gz.asc
Source5: file.keyring
Patch0: file-5.45.dif
Patch1: file-5.19-misc.dif
Patch4: file-4.24-autoconf.dif
Patch5: file-5.14-tex.dif
Patch7: file-4.20-ssd.dif
Patch8: file-4.20-xen.dif
Patch9: file-5.22-elf.dif
Patch10: file-5.19-printf.dif
Patch12: file-5.17-option.dif
Patch13: file-4.21-scribus.dif
Patch15: file-4.21-xcursor.dif
Patch22: file-5.19-cromfs.dif
Patch25: file-5.18-javacheck.dif
Patch26: file-5.19-solv.dif
Patch27: file-5.19-zip2.0.dif
Patch31: file-5.19-biorad.dif
Patch32: file-5.19-clicfs.dif
Patch37: file-secure_getenv.patch
Patch39: file-5.28-btrfs-image.dif
# PATCH-FIX-UPSTREAM: Support max time_t on 32bit
Patch42: file-5.45-type_t.dif
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%global _sysconfdir /etc
%global magicdir %{_datadir}/file
%global _miscdir %{_datadir}/misc
%description
With the file command, you can obtain information on the file type of a
specified file. File type recognition is controlled by the file
/etc/magic, which contains the classification criteria. This command is
used by apsfilter to permit automatic printing of different file types.
%package magic
Summary: Database for libmagic to help identify files
Group: Productivity/File utilities
Obsoletes: libmagic-data < %{version}
Provides: libmagic-data = %{version}
BuildArch: noarch
%description magic
This package contains the basic magic files that libmagic reads and uses
to estimate a file's type.
%package -n %libname
Summary: Library for heuristic file type identification
Group: System/Libraries
Provides: file:%{_libdir}/libmagic.so.%{somajor}
Requires: file-magic = %{version}
%description -n %libname
This library reads magic files and detects file types. Used by file command
%package devel
Summary: Development files for libmagic, a library to determine file types
Group: Development/Libraries/C and C++
Provides: file:/usr/include/magic.h
Requires: %libname = %{version}
Requires: glibc-devel
%description devel
This package contains all necessary include files and libraries needed
to develop applications that require the magic "file" interface.
%prep
%setup -q -n file-%{version}
%patch -P 42 -p0 -b .t_t
%patch -P 1 -p0 -b .misc
%patch -P 4 -p0 -b .conf
%patch -P 5 -p0 -b .tex
%patch -P 7 -p0 -b .ssd
%patch -P 8 -p0 -b .xen
%patch -P 9 -p0 -b .elf
%patch -P 10 -p0 -b .prtf
%patch -P 12 -p1 -b .opt
%patch -P 13 -p0 -b .scri
%patch -P 15 -p0 -b .xcur
%patch -P 22 -p0 -b .cromfs
%patch -P 25 -p0 -b .javacheck
%patch -P 26 -p0 -b .solv
%patch -P 27 -p0 -b .zip2.0
%patch -P 31 -p0 -b .biorad
%patch -P 32 -p0 -b .clicfs
%patch -P 37 -p1 -b .getenv
%patch -P 39 -p1 -b .btrfs
%patch -P 0 -b .0
test -s src/magic.h.in || cp -p src/magic.h src/magic.h.in
rm -fv src/magic.h
%build
export LANG=POSIX
export LC_ALL=POSIX
rm -f Magdir/*,v Magdir/*~
rm -f ltcf-c.sh ltconfig ltmain.sh
autoreconf -fiv
export CFLAGS="%{optflags} -DHOWMANY=69632 -fPIE $(pkg-config libseccomp --cflags)"
%configure --disable-silent-rules --datadir=%{magicdir} \
--disable-static \
--enable-fsect-man5
make %{?_smp_mflags} pkgdatadir='$(datadir)' LDFLAGS="-pie"
%install
export LANG=POSIX
export LC_ALL=POSIX
mkdir %{buildroot}/etc
make DESTDIR=%{buildroot} install pkgdatadir='$(datadir)'
rm -vf %{buildroot}%{_sysconfdir}/magic
echo '# Localstuff: file(1) magic(5) for locally observed files' > %{buildroot}%{_sysconfdir}/magic
echo '# global magic file is %{magicdir}/magic(.mgc)' >> %{buildroot}%{_sysconfdir}/magic
# Does not build
mkdir -p %{buildroot}%{_miscdir}
ln -s %{magicdir}/magic %{buildroot}%{_miscdir}/magic
ln -s %{magicdir}/magic.mgc %{buildroot}%{_miscdir}/magic.mgc
%if %{with decore}
install -s dcore %{buildroot}%{_bindir}
%endif
rm -f %{buildroot}%{_libdir}/*.la
%check
# Standard checks
make check
# Check out that the binary does not bail out:
LD_LIBRARY_PATH=%{buildroot}%{_libdir}
export LD_LIBRARY_PATH
%{buildroot}%{_bindir}/file -m %{buildroot}%{_miscdir}/magic %{buildroot}%{_bindir}/file
shopt -s globstar
for dir in %{_bindir} /%{_lib} %{_libdir} ; do
echo $dir/** | \
xargs %{buildroot}%{_bindir}/file -m %{buildroot}%{_miscdir}/magic
done
unset LD_LIBRARY_PATH
%post -n %libname -p /sbin/ldconfig
%postun -n %libname -p /sbin/ldconfig
%files -n %libname
%defattr (-,root,root)
%{_libdir}/lib*.so.*
%files magic
%defattr (-,root,root)
%config(noreplace) %{_sysconfdir}/magic
%{_miscdir}/magic
%{_miscdir}/magic.mgc
%dir %{magicdir}
%{magicdir}/magic
%{magicdir}/magic.mgc
%doc %{_mandir}/man5/magic.5.gz
%files
%defattr (-,root,root)
%if %{with decore}
%attr(755,root,root) %{_bindir}/dcore
%endif
%attr(755,root,root) %{_bindir}/file
%doc %{_mandir}/man1/file.1.gz
%license COPYING
%doc AUTHORS NEWS ChangeLog
%files devel
%defattr (-,root,root)
%{_libdir}/lib*.so
%{_includedir}/magic.h
%{_libdir}/pkgconfig/libmagic.pc
%doc %{_mandir}/man3/libmagic.3.gz
%license COPYING
%doc README.DEVELOPER AUTHORS NEWS ChangeLog
%changelog