#
-# TODO: ruby bindings
-#
# Conditional build:
-%bcond_without static_libs # don't build static libraries
+%bcond_without static_libs # static library
+%bcond_without python3 # CPython 3 module
+%bcond_without ocaml_opt # OCaml native optimized binaries (bytecode is always built)
+%bcond_without ruby # Ruby bindings
+
+%ifnarch %{ix86} %{x8664} arm aarch64 ppc sparc sparcv9
+%undefine with_ocaml_opt
+%endif
#
%include /usr/lib/rpm/macros.perl
Summary: Windows Registry "hive" extraction library
+Summary(pl.UTF-8): Biblioteka do wydobywania danych z plików "hive" Rejestru Windows
Name: hivex
-Version: 1.3.3
-Release: 1
+Version: 1.3.14
+Release: 5
License: LGPL v2.1
Group: Libraries
Source0: http://libguestfs.org/download/hivex/%{name}-%{version}.tar.gz
-# Source0-md5: 4ce781121f92e0f317db5ced5f55fda8
+# Source0-md5: 9fb5ed4525d30a84b216a05150be1558
+URL: http://libguestfs.org/
+BuildRequires: autoconf >= 2.50
BuildRequires: automake
-BuildRequires: autoconf
+BuildRequires: gettext-tools >= 0.17
BuildRequires: libtool
-BuildRequires: perl-tools-pod
-BuildRequires: readline-devel
-BuildRequires: libxml2-devel
+BuildRequires: libxml2-devel >= 2.0
BuildRequires: ocaml
-BuildRequires: ocaml-findlib-devel
+BuildRequires: ocaml-findlib
+BuildRequires: perl-ExtUtils-MakeMaker
+BuildRequires: perl-IO-stringy
+BuildRequires: perl-Test-Simple
BuildRequires: perl-base
-BuildRequires: perl(Test::More)
-BuildRequires: perl(ExtUtils::MakeMaker)
-BuildRequires: perl(IO::Stringy)
-BuildRequires: python
-BuildRequires: python-devel
-BuildRequires: rpmbuild(macros) >= 1.527
+BuildRequires: perl-tools-pod
+BuildRequires: pkgconfig
+BuildRequires: python >= 2
+BuildRequires: python-devel >= 2
+%if %{with python3}
+BuildRequires: python3 >= 1:3.2
+BuildRequires: python3-devel >= 1:3.2
+%endif
+BuildRequires: readline-devel
+BuildRequires: rpmbuild(macros) >= 1.714
+%if %{with ruby}
+BuildRequires: ruby-devel
+BuildRequires: ruby-rake
+%endif
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
"hive" files. It is designed to be secure against buggy or malicious
registry files.
+%description -l pl.UTF-8
+Hivex to biblioteka do wydobywania zawartości plików "hive" Rejestru
+Windows. Została zaprojektowana w celu ochrony przez błędnymi lub
+niebezpiecznymi plikami rejestru.
+
%package devel
Summary: Header files for hivex library
Summary(pl.UTF-8): Pliki nagłówkowe biblioteki hivex
%description static -l pl.UTF-8
Statyczna biblioteka hivex.
+%package -n ocaml-hivex
+Summary: OCaml bindings for hivex library
+Summary(pl.UTF-8): Wiązania OCamla do biblioteki hivex
+Group: Libraries
+Requires: %{name} = %{version}-%{release}
+
+%description -n ocaml-hivex
+OCaml bindings for hivex library.
+
+%description -n ocaml-hivex -l pl.UTF-8
+Wiązania OCamla do biblioteki hivex.
+
+%package -n ocaml-hivex-devel
+Summary: Development files for hivex OCaml bindings
+Summary(pl.UTF-8): Pliki programistyczne wiązań OCamla do biblioteki hivex
+Group: Development/Libraries
+Requires: ocaml-hivex = %{version}-%{release}
+
+%description -n ocaml-hivex-devel
+Development files for hivex OCaml bindings.
+
+%description -n ocaml-hivex-devel -l pl.UTF-8
+Pliki programistyczne wiązań OCamla do biblioteki hivex.
+
%package -n perl-hivex
Summary: Perl bindings for hivex library
+Summary(pl.UTF-8): Wiązania Perla do biblioteki hivex
Group: Development/Languages/Perl
Requires: %{name} = %{version}-%{release}
%description -n perl-hivex
Perl bindings for hivex library.
+%description -n perl-hivex -l pl.UTF-8
+Wiązania Perla do biblioteki hivex.
+
%package -n python-hivex
-Summary: Python bindings for hivex library
+Summary: Python 2 bindings for hivex library
+Summary(pl.UTF-8): Wiązania Pythona 2 do biblioteki hivex
Group: Development/Languages/Python
Requires: %{name} = %{version}-%{release}
%description -n python-hivex
-Python bindings for hivex library.
+Python 2 bindings for hivex library.
-%package -n ocaml-hivex
-Summary: OCaml bindings for hivex library
-Group: Libraries
+%description -n python-hivex -l pl.UTF-8
+Wiązania Pythona 2 do biblioteki hivex.
+
+%package -n python3-hivex
+Summary: Python 3 bindings for hivex library
+Summary(pl.UTF-8): Wiązania Pythona 3 do biblioteki hivex
+Group: Development/Languages/Python
Requires: %{name} = %{version}-%{release}
-%description -n ocaml-hivex
-OCaml bindings for hivex library.
+%description -n python3-hivex
+Python 3 bindings for hivex library.
-%package -n ocaml-hivex-devel
-Summary: Header files for ocamlhivex library
-Summary(pl.UTF-8): Pliki nagłówkowe biblioteki ocaml-hivex
-Group: Development/Libraries
-Requires: ocaml-hivex = %{version}-%{release}
+%description -n python3-hivex -l pl.UTF-8
+Wiązania Pythona 3 do biblioteki hivex.
-%description -n ocaml-hivex-devel
-Header files for ocaml-hivex library.
+%package -n ruby-hivex
+Summary: Ruby bindings for hivex library
+Summary(pl.UTF-8): Wiązania języka Ruby do biblioteki hivex
+Group: Development/Languages
+Requires: %{name} = %{version}-%{release}
-%description -n ocaml-hivex-devel -l pl.UTF-8
-Pliki nagłówkowe biblioteki ocaml-hivex.
+%description -n ruby-hivex
+Ruby bindings for hivex library.
+
+%description -n ruby-hivex -l pl.UTF-8
+Wiązania języka Ruby do biblioteki hivex.
%prep
%setup -q
%build
-%configure \
- ac_cv_lib_ruby_ruby_init=no \
- ac_cv_prog_RAKE=no \
- %{__enable_disable static_libs static} \
+%{__aclocal}
+%{__automake}
+%{__autoconf}
+
+%if %{with python3}
+install -d build-py3
+cd build-py3
+../%configure \
+ PYTHON="%{__python3}" \
+ --with-python-installdir=%{py3_sitedir} \
+ --disable-ocaml \
+ --disable-perl \
+ --disable-ruby \
--disable-silent-rules
+%{__make}
+cd ..
+%endif
+
+%configure \
+ --disable-silent-rules \
+ --with-python-installdir=%{py_sitedir} \
+ %{__enable_disable static_libs static}
+
%{__make} \
INSTALLDIRS=vendor
%install
rm -rf $RPM_BUILD_ROOT
+%if %{with python3}
+# lib is needed for relink on install
+%{__make} -C build-py3/lib install \
+ DESTDIR=$RPM_BUILD_ROOT
+%{__make} -C build-py3/python install \
+ DESTDIR=$RPM_BUILD_ROOT
+
+%py3_comp $RPM_BUILD_ROOT%{py3_sitedir}
+%py3_ocomp $RPM_BUILD_ROOT%{py3_sitedir}
+%{__rm} $RPM_BUILD_ROOT%{py3_sitedir}/*.la
+%endif
+
%{__make} install \
INSTALLDIRS=vendor \
DESTDIR=$RPM_BUILD_ROOT
%{__rm} $RPM_BUILD_ROOT%{_libdir}/*.la \
$RPM_BUILD_ROOT%{py_sitedir}/*.la
+%py_comp $RPM_BUILD_ROOT%{py_sitedir}
+%py_ocomp $RPM_BUILD_ROOT%{py_sitedir}
+%py_postclean
+
%find_lang %{name}
%clean
%files devel
%defattr(644,root,root,755)
-%{_libdir}/libhivex.so
+%attr(755,root,root) %{_libdir}/libhivex.so
%{_includedir}/hivex.h
%{_pkgconfigdir}/hivex.pc
%{_mandir}/man3/hivex.3*
%{_libdir}/libhivex.a
%endif
+%files -n ocaml-hivex
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/ocaml/stublibs/dllmlhivex.so
+%{_libdir}/ocaml/stublibs/dllmlhivex.so.owner
+
+%files -n ocaml-hivex-devel
+%defattr(644,root,root,755)
+%dir %{_libdir}/ocaml/hivex
+%{_libdir}/ocaml/hivex/META
+%{_libdir}/ocaml/hivex/hivex.cmi
+%{_libdir}/ocaml/hivex/hivex.mli
+%{_libdir}/ocaml/hivex/libmlhivex.a
+%{_libdir}/ocaml/hivex/mlhivex.cma
+%if %{with ocaml_opt}
+%{_libdir}/ocaml/hivex/hivex.cmx
+%{_libdir}/ocaml/hivex/mlhivex.a
+%{_libdir}/ocaml/hivex/mlhivex.cmxa
+%endif
+
%files -n perl-hivex
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/hivexregedit
%dir %{perl_vendorarch}/Win/Hivex
%{perl_vendorarch}/Win/Hivex.pm
%{perl_vendorarch}/Win/Hivex/Regedit.pm
-%{perl_vendorarch}/auto/Win/Hivex/Hivex.bs
%dir %{perl_vendorarch}/auto/Win
%dir %{perl_vendorarch}/auto/Win/Hivex
%attr(755,root,root) %{perl_vendorarch}/auto/Win/Hivex/Hivex.so
%{_mandir}/man1/hivexregedit.1*
-%{_mandir}/man3/Win::Hivex.3pm.*
-%{_mandir}/man3/Win::Hivex::Regedit.3pm.*
+%{_mandir}/man3/Win::Hivex.3pm*
+%{_mandir}/man3/Win::Hivex::Regedit.3pm*
%files -n python-hivex
%defattr(644,root,root,755)
-%{py_sitedir}/hivex.py
%attr(755,root,root) %{py_sitedir}/libhivexmod.so
+%dir %{py_sitedir}/hivex
+%{py_sitedir}/hivex/*.py[co]
-%files -n ocaml-hivex
+%if %{with python3}
+%files -n python3-hivex
%defattr(644,root,root,755)
-%{_libdir}/ocaml/stublibs/dllmlhivex.so
-%{_libdir}/ocaml/stublibs/dllmlhivex.so.owner
+%attr(755,root,root) %{py3_sitedir}/libhivexmod.cpython-*.so
+%{py3_sitedir}/hivex
+%endif
-%files -n ocaml-hivex-devel
+%if %{with ruby}
+%files -n ruby-hivex
%defattr(644,root,root,755)
-%dir %{_libdir}/ocaml/hivex
-%{_libdir}/ocaml/hivex/META
-%{_libdir}/ocaml/hivex/hivex.cmi
-%{_libdir}/ocaml/hivex/hivex.cmx
-%{_libdir}/ocaml/hivex/hivex.mli
-%{_libdir}/ocaml/hivex/libmlhivex.a
-%{_libdir}/ocaml/hivex/mlhivex.a
-%{_libdir}/ocaml/hivex/mlhivex.cma
-%{_libdir}/ocaml/hivex/mlhivex.cmxa
+%attr(755,root,root) %{ruby_vendorarchdir}/_hivex.so
+%{ruby_vendorlibdir}/hivex.rb
+%endif