diff --git a/.gitignore b/.gitignore index 424c45f..b74743b 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,12 @@ hivex-1.2.2.tar.gz +/hivex-1.2.3.tar.gz +/hivex-1.2.4.tar.gz +/hivex-1.2.5.tar.gz +/hivex-1.2.6.tar.gz +/hivex-1.2.7.tar.gz +/hivex-1.2.8.tar.gz +/hivex-1.3.0.tar.gz +/hivex-1.3.1.tar.gz +/hivex-1.3.2.tar.gz +/hivex-1.3.3.tar.gz +/hivex-1.3.5.tar.gz diff --git a/0001-RHEL-5-configure-Fix-test-for-caml_raise_with_args.patch b/0001-RHEL-5-configure-Fix-test-for-caml_raise_with_args.patch new file mode 100644 index 0000000..26758dd --- /dev/null +++ b/0001-RHEL-5-configure-Fix-test-for-caml_raise_with_args.patch @@ -0,0 +1,29 @@ +From 7fdaaf443f20224ce6bf6de53f3194974da315f6 Mon Sep 17 00:00:00 2001 +From: Richard W.M. Jones +Date: Fri, 30 Mar 2012 10:54:50 +0100 +Subject: [PATCH 1/3] RHEL 5: configure: Fix test for caml_raise_with_args. + +--- + configure.ac | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index d1604f7..fb4e074 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -211,9 +211,9 @@ if test "x$OCAMLC" != "xno"; then + echo "char $f (); char foo() { return $f (); }" > conftest.c + rm -f conftest_ml.ml + touch conftest_ml.ml +- if $OCAMLC -c conftest.c 2>/dev/null && \ +- $OCAMLC -c conftest_ml.ml 2>/dev/null && \ +- $OCAMLC conftest.o conftest_ml.cmo -o conftest 2>/dev/null ; then ++ if $OCAMLC -c conftest.c >&AS_MESSAGE_LOG_FD 2>&1 && \ ++ $OCAMLC -c conftest_ml.ml >&AS_MESSAGE_LOG_FD 2>&1 && \ ++ $OCAMLC -custom conftest.o conftest_ml.cmo -o conftest >&AS_MESSAGE_LOG_FD 2>&1 ; then + AC_DEFINE([HAVE_CAML_RAISE_WITH_ARGS],[1], + [Defined if function caml_raise_with_args exists.]) + AC_MSG_RESULT([found]) +-- +1.7.4.1 + diff --git a/0002-RHEL-5-build-Fix-some-C99-isms-that-confuse-old-gcc.patch b/0002-RHEL-5-build-Fix-some-C99-isms-that-confuse-old-gcc.patch new file mode 100644 index 0000000..1b30eda --- /dev/null +++ b/0002-RHEL-5-build-Fix-some-C99-isms-that-confuse-old-gcc.patch @@ -0,0 +1,53 @@ +From 0030147305c41d289d924b003fa67977c2dea6ff Mon Sep 17 00:00:00 2001 +From: Richard W.M. Jones +Date: Fri, 30 Mar 2012 10:55:34 +0100 +Subject: [PATCH 2/3] RHEL 5: build: Fix some C99-isms that confuse old gcc. + +--- + generator/generator.ml | 3 ++- + lib/hivex.c | 8 +++++--- + 2 files changed, 7 insertions(+), 4 deletions(-) + +diff --git a/generator/generator.ml b/generator/generator.ml +index b0c10eb..ed152af 100755 +--- a/generator/generator.ml ++++ b/generator/generator.ml +@@ -1885,7 +1885,8 @@ static void raise_closed (const char *) Noreturn; + pr " free (r);\n" + | RStringList -> + pr " rv = caml_copy_string_array ((const char **) r);\n"; +- pr " for (int i = 0; r[i] != NULL; ++i) free (r[i]);\n"; ++ pr " int i;\n"; ++ pr " for (i = 0; r[i] != NULL; ++i) free (r[i]);\n"; + pr " free (r);\n" + | RLenType -> pr " rv = copy_type_len (len, t);\n" + | RLenValue -> pr " rv = copy_len_value (len, r);\n" +diff --git a/lib/hivex.c b/lib/hivex.c +index df313bf..711b058 100644 +--- a/lib/hivex.c ++++ b/lib/hivex.c +@@ -2819,7 +2819,8 @@ hivex_node_set_value (hive_h *h, hive_node_h node, + int retval = -1; + + size_t nr_values = 0; +- for (hive_value_h *itr = prev_values; *itr != 0; ++itr) ++ hive_value_h *itr; ++ for (itr = prev_values; *itr != 0; ++itr) + ++nr_values; + + hive_set_value *values = malloc ((nr_values + 1) * (sizeof (hive_set_value))); +@@ -2874,8 +2875,9 @@ hivex_node_set_value (hive_h *h, hive_node_h node, + + retval = hivex_node_set_values (h, node, nr_values, values, 0); + +- leave_partial: +- for (int i = 0; i < alloc_ct; i += 2) { ++ leave_partial: ; ++ int i; ++ for (i = 0; i < alloc_ct; i += 2) { + free (values[i / 2].value); + if (i + 1 < alloc_ct && values[i / 2].key != NULL) + free (values[i / 2].key); +-- +1.7.4.1 + diff --git a/0003-RHEL-5-build-Define-builddir-abs_srcdir-if-they-don-.patch b/0003-RHEL-5-build-Define-builddir-abs_srcdir-if-they-don-.patch new file mode 100644 index 0000000..17b74b6 --- /dev/null +++ b/0003-RHEL-5-build-Define-builddir-abs_srcdir-if-they-don-.patch @@ -0,0 +1,42 @@ +From ebd2da993de7f5a18d4c9aa5ea87b56127e8788c Mon Sep 17 00:00:00 2001 +From: Richard W.M. Jones +Date: Fri, 30 Mar 2012 10:55:52 +0100 +Subject: [PATCH 3/3] RHEL 5: build: Define builddir, abs_srcdir if they don't exist. + +--- + images/Makefile.am | 3 +++ + perl/Makefile.am | 4 ++++ + 2 files changed, 7 insertions(+), 0 deletions(-) + +diff --git a/images/Makefile.am b/images/Makefile.am +index 7ae6325..b0087f3 100644 +--- a/images/Makefile.am ++++ b/images/Makefile.am +@@ -15,6 +15,9 @@ + # along with this program; if not, write to the Free Software + # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + ++# Old RHEL 5 autoconf doesn't have builddir. ++builddir ?= $(top_builddir)/images ++ + EXTRA_DIST = minimal rlenvalue_test_hive + + # 'large' is a large hive used for testing purposes. It is generated +diff --git a/perl/Makefile.am b/perl/Makefile.am +index 1722bcf..22dd98c 100644 +--- a/perl/Makefile.am ++++ b/perl/Makefile.am +@@ -15,6 +15,10 @@ + # along with this program; if not, write to the Free Software + # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + ++# Old RHEL 5 autoconf doesn't have builddir or abs_srcdir. ++builddir ?= $(top_builddir)/perl ++abs_srcdir ?= $(shell unset CDPATH; cd $(srcdir) && pwd) ++ + EXTRA_DIST = \ + Makefile.PL.in \ + run-perl-tests \ +-- +1.7.4.1 + diff --git a/hivex-1.2.3-dirs.patch b/hivex-1.2.3-dirs.patch new file mode 100644 index 0000000..340d72e --- /dev/null +++ b/hivex-1.2.3-dirs.patch @@ -0,0 +1,24 @@ +diff -up hivex-1.2.3/perl/Makefile.am.dirs hivex-1.2.3/perl/Makefile.am +--- hivex-1.2.3/perl/Makefile.am.dirs 2010-11-19 12:44:02.177644892 -0500 ++++ hivex-1.2.3/perl/Makefile.am 2010-11-19 12:44:17.137516124 -0500 +@@ -40,7 +40,7 @@ $(TESTS): src_deps all + TESTS_ENVIRONMENT = \ + LD_LIBRARY_PATH=$(top_builddir)/lib/.libs + +-INSTALLDIRS = site ++INSTALLDIRS = vendor + + all: Makefile-pl src_deps + $(MAKE) -f Makefile-pl +diff -up hivex-1.2.3/perl/Makefile.in.dirs hivex-1.2.3/perl/Makefile.in +--- hivex-1.2.3/perl/Makefile.in.dirs 2010-11-19 12:44:08.577393593 -0500 ++++ hivex-1.2.3/perl/Makefile.in 2010-11-19 12:44:32.717483099 -0500 +@@ -740,7 +740,7 @@ EXTRA_DIST = \ + @HAVE_PERL_TRUE@TESTS_ENVIRONMENT = \ + @HAVE_PERL_TRUE@ LD_LIBRARY_PATH=$(top_builddir)/lib/.libs + +-@HAVE_PERL_TRUE@INSTALLDIRS = site ++@HAVE_PERL_TRUE@INSTALLDIRS = vendor + all: all-am + + .SUFFIXES: diff --git a/hivex.spec b/hivex.spec index 9597d41..8f3742a 100644 --- a/hivex.spec +++ b/hivex.spec @@ -1,12 +1,12 @@ Name: hivex -Version: 1.2.2 -Release: 1%{?dist} +Version: 1.3.5 +Release: 5%{?dist} Summary: Read and write Windows Registry binary hive files Group: Development/Libraries License: LGPLv2 URL: http://libguestfs.org/ -Source0: http://libguestfs.org/download/%{name}-%{version}.tar.gz +Source0: http://libguestfs.org/download/hivex/%{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: perl @@ -16,8 +16,7 @@ BuildRequires: perl-Test-Pod-Coverage #BuildRequires: perl-ExtUtils-MakeMaker BuildRequires: perl-IO-stringy BuildRequires: perl-libintl -BuildRequires: ocaml -BuildRequires: ocaml-findlib-devel +BuildRequires: python-devel BuildRequires: readline-devel BuildRequires: libxml2-devel @@ -25,6 +24,15 @@ BuildRequires: libxml2-devel # the old version of libguestfs that included this library: Conflicts: libguestfs <= 1:1.0.84 +# Upstream patches for EPEL 5. +Patch0001: 0001-RHEL-5-configure-Fix-test-for-caml_raise_with_args.patch +Patch0002: 0002-RHEL-5-build-Fix-some-C99-isms-that-confuse-old-gcc.patch +Patch0003: 0003-RHEL-5-build-Define-builddir-abs_srcdir-if-they-don-.patch + +# Fix Perl directory install path. +Patch4: %{name}-1.2.3-dirs.patch +BuildRequires: autoconf, automake, libtool + %description Hive files are the undocumented binary blobs that Windows uses to @@ -50,7 +58,7 @@ an existing Windows VM. For Perl bindings, see 'perl-hivex'. -For OCaml bindings, see 'ocaml-hivex-devel'. +For Python bindings, see 'python-hivex'. %package devel @@ -65,28 +73,15 @@ Requires: pkgconfig for %{name}. -%package -n ocaml-%{name} -Summary: OCaml bindings for %{name} -Group: Development/Libraries -Requires: %{name} = %{version}-%{release} +%package static +Summary: Statically linked library for %{name} +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} -%description -n ocaml-%{name} -ocaml-%{name} contains OCaml bindings for %{name}. - -This is for toplevel and scripting access only. To compile OCaml -programs which use %{name} you will also need ocaml-%{name}-devel. - - -%package -n ocaml-%{name}-devel -Summary: OCaml bindings for %{name} -Group: Development/Libraries -Requires: ocaml-%{name} = %{version}-%{release} - - -%description -n ocaml-%{name}-devel -ocaml-%{name}-devel contains development libraries -required to use the OCaml bindings for %{name}. +%description static +%{name}-static contains the statically linked library +for %{name}. %package -n perl-%{name} @@ -100,16 +95,36 @@ Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $versio perl-%{name} contains Perl bindings for %{name}. +%package -n python-%{name} +Summary: Python bindings for %{name} +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} +%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} + +%description -n python-%{name} +python-%{name} contains Python bindings for %{name}. + + %prep %setup -q +%patch0001 -p1 +%patch0002 -p1 +%patch0003 -p1 +%patch4 -p1 -b .dirs +autoreconf + %build -%configure --disable-static +export OCAMLC=no +%configure --disable-ruby +make %{?_smp_mflags} -# 'INSTALLDIRS' ensures that perl libs are installed in the vendor dir -# not the site dir. -make INSTALLDIRS=vendor %{?_smp_mflags} + +%check +make check %install @@ -124,6 +139,9 @@ find $RPM_BUILD_ROOT -name perllocal.pod -delete find $RPM_BUILD_ROOT -name .packlist -delete find $RPM_BUILD_ROOT -name '*.bs' -delete +# Remove unwanted Python files: +rm $RPM_BUILD_ROOT%{python_sitearch}/libhivexmod.la + %find_lang %{name} @@ -159,24 +177,10 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/pkgconfig/hivex.pc -%files -n ocaml-%{name} +%files static %defattr(-,root,root,-) -%doc README -%{_libdir}/ocaml/hivex -%exclude %{_libdir}/ocaml/hivex/*.a -%exclude %{_libdir}/ocaml/hivex/*.cmxa -%exclude %{_libdir}/ocaml/hivex/*.cmx -%exclude %{_libdir}/ocaml/hivex/*.mli -%{_libdir}/ocaml/stublibs/*.so -%{_libdir}/ocaml/stublibs/*.so.owner - - -%files -n ocaml-%{name}-devel -%defattr(-,root,root,-) -%{_libdir}/ocaml/hivex/*.a -%{_libdir}/ocaml/hivex/*.cmxa -%{_libdir}/ocaml/hivex/*.cmx -%{_libdir}/ocaml/hivex/*.mli +%doc LICENSE +%{_libdir}/libhivex.a %files -n perl-%{name} @@ -186,21 +190,138 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man3/Win::Hivex::Regedit.3pm* +%files -n python-%{name} +%defattr(-,root,root,-) +%{python_sitearch}/*.py +%{python_sitearch}/*.pyc +%{python_sitearch}/*.pyo +%{python_sitearch}/*.so + + %changelog +* Fri Mar 30 2012 Richard W.M. Jones - 1:1.3.5-5 +- Copy Fedora Rawhide to EPEL 5 (RHBZ#808193). +- Disable OCaml, Ruby bindings, since these can't be built on RHEL 5. +- Include upstream patches to fix RHEL 5 build. + +* Fri Mar 23 2012 Richard W.M. Jones - 1:1.3.5-5 +- Don't need to rerun the generator (thanks Dan Horák). + +* Tue Mar 13 2012 Richard W.M. Jones - 1:1.3.5-4 +- New upstream version 1.3.5. +- Remove upstream patch. +- Depend on automake etc. for the patch. + +* Thu Feb 9 2012 Richard W.M. Jones - 1.3.3-8 +- ruby(abi) 1.9.1. + +* Wed Feb 8 2012 Richard W.M. Jones - 1.3.3-7 +- Bump and rebuild for Ruby update. +- Add upstream patch to fix bindings for Ruby 1.9. +- Add non-upstream patch to pass --vendor flag to extconf.rb + +* Fri Jan 06 2012 Richard W.M. Jones - 1.3.3-3 +- Rebuild for OCaml 3.12.1. + +* Thu Dec 8 2011 Richard W.M. Jones - 1.3.3-2 +- Disable OCaml on ppc64. +- Ensure OCaml files are deleted when not packaged. + +* Tue Nov 29 2011 Richard W.M. Jones - 1.3.3-1 +- New upstream version 1.3.3. +- Rebased gnulib to work around RHBZ#756981. +- Remove patches which are now upstream. + +* Mon Oct 24 2011 Richard W.M. Jones - 1.3.2-3 +- New upstream version 1.3.2. +- Add upstream patch to fix building of hivexsh, hivexget. + +* Fri Aug 26 2011 Richard W.M. Jones - 1.3.1-2 +- New upstream version 1.3.1. +- Remove patch, now upstream. +- Don't need hack for making an unversioned Python module. + +* Mon Aug 15 2011 Richard W.M. Jones - 1.3.0-3 +- New upstream version 1.3.0. +- This version adds Ruby bindings, so there is a new subpackage 'ruby-hivex'. +- Add upstream patch to fix Ruby tests. +- Remove epoch macro in ruby-hivex dependency. + +* Fri Aug 12 2011 Richard W.M. Jones - 1.2.8-1 +- New upstream version 1.2.8. +- Remove 4 upstream patches. + +* Fri Jul 22 2011 Richard W.M. Jones - 1.2.7-9 +- Add upstream patch to fix Perl CCFLAGS for Perl 5.14 on i686. +- Enable 'make check'. + +* Thu Jul 21 2011 Richard W.M. Jones - 1.2.7-6 +- i686 package is broken, experimentally rebuild it. + +* Fri Jun 17 2011 Marcela Mašláňová - 1.2.7-5 +- Perl mass rebuild + +* Fri Jun 10 2011 Marcela Mašláňová - 1.2.7-4 +- Perl 5.14 mass rebuild + +* Tue May 17 2011 Richard W.M. Jones - 1.2.7-3 +- New upstream version 1.2.7. +- Removed patch which is now upstream. +- Add upstream patches to fix ocaml install rule. + +* Thu May 12 2011 Richard W.M. Jones - 1.2.6-2 +- New upstream version 1.2.6. +- Removed patch which is now upstream. +- Add upstream patch to fix ocaml tests. + +* Thu Apr 28 2011 Richard W.M. Jones - 1.2.5-2 +- Fix Python bindings on 32 bit arch with upstream patch. + +* Wed Apr 13 2011 Richard W.M. Jones - 1.2.5-1 +- New upstream version 1.2.5. +- This version fixes a number of important memory issues found by + valgrind and upgrading to this version is recommended for all users. +- Remove patch now upstream. + +* Wed Feb 09 2011 Fedora Release Engineering - 1.2.4-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Jan 14 2011 Richard W.M. Jones - 1.2.4-6 +- Fix multilib conflicts in *.pyc and *.pyo files. +- Only install unversioned *.so file for Python bindings. + +* Wed Jan 5 2011 Richard W.M. Jones - 1.2.4-4 +- Rebuild against OCaml 3.12.0. + +* Thu Dec 16 2010 Richard W.M. Jones - 1.2.4-3 +- Backport upstream patch to fix segfault in Hivex.value_value binding. + +* Thu Dec 2 2010 Richard W.M. Jones - 1.2.4-1 +- New upstream version 1.2.4. +- This adds Python bindings (python-hivex subpackage). +- Fix Source0. + +* Fri Nov 19 2010 Dan Horák - 1.2.3-3 +- fix built with recent perl + +* Tue Sep 7 2010 Dan Horák - 1.2.3-2 +- conditionalize ocaml support + +* Fri Aug 27 2010 Richard W.M. Jones - 1.2.3-1 +- New upstream version 1.2.3. + +* Wed Aug 25 2010 Richard W.M. Jones - 1.2.2-3 +- Create a hivex-static subpackage. + +* Thu Apr 29 2010 Marcela Maslanova - 1.2.2-2 +- Mass rebuild with perl-5.12.0 + * Wed Apr 28 2010 Richard W.M. Jones - 1.2.2-1 - New upstream version 1.2.2. -* Mon Apr 12 2010 Richard W.M. Jones - 1.2.1-1 +* Tue Mar 30 2010 Richard W.M. Jones - 1.2.1-1 - New upstream version 1.2.1. - -* Mon Mar 1 2010 Richard W.M. Jones - 1.2.0-2.el5.2 -- Fix for old version of OCaml in EPEL 5 (upstream after 1.2.0 released). -- We have to pass INSTALLDIRS=vendor to 'make' to get Perl package - installed in vendordir instead of sitedir. - -* Mon Mar 1 2010 Richard W.M. Jones - 1.2.0-2.el5.1 -- Remove BRs of ExtUtils::MakeMaker and Test::Simple since these are - not a part of EPEL-5. +- Includes new tool for exporting and merging in regedit format. * Mon Mar 1 2010 Richard W.M. Jones - 1.2.0-2 - New upstream version 1.2.0. diff --git a/sources b/sources index 4b57623..03939b8 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -b8a5c735e35fb62fb8886af7872a20a8 hivex-1.2.2.tar.gz +89e185f2c698863defbc8a22a4470a6c hivex-1.3.5.tar.gz