[mingw-libxml2: 5/29] - Fixed %defattr line - Added -static subpackage. Applications which want to link against this s

Kalev Lember kalev at fedoraproject.org
Tue Mar 6 19:56:45 UTC 2012


commit bace0792d89b875a87294ee19c490dcee3be57cb
Author: epienbro <epienbro at fedoraproject.org>
Date:   Tue Apr 14 19:28:52 2009 +0000

    - Fixed %defattr line
    - Added -static subpackage. Applications which want to link against this
        static library needs to add -DLIBXML_STATIC to the CFLAGS
    - This package shouldn't own %%{_mingw32_libdir}/pkgconfig

 mingw32-libxml2-static-build-compile-fix.patch |   13 +++++
 mingw32-libxml2.spec                           |   58 +++++++++++++++++++++---
 2 files changed, 64 insertions(+), 7 deletions(-)
---
diff --git a/mingw32-libxml2-static-build-compile-fix.patch b/mingw32-libxml2-static-build-compile-fix.patch
new file mode 100644
index 0000000..e4c32e4
--- /dev/null
+++ b/mingw32-libxml2-static-build-compile-fix.patch
@@ -0,0 +1,13 @@
+--- threads.c.orig	2009-04-03 19:12:55.382657819 +0200
++++ threads.c	2009-04-03 19:13:10.362407937 +0200
+@@ -975,8 +975,8 @@
+  */
+ #if defined(HAVE_WIN32_THREADS) && !defined(HAVE_COMPILER_TLS) && (!defined(LIBXML_STATIC) || defined(LIBXML_STATIC_FOR_DLL))
+ #if defined(LIBXML_STATIC_FOR_DLL)
+-BOOL XMLCALL
+-xmlDllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
++int XMLCALL
++xmlDllMain(void *hinstDLL, unsigned long fdwReason, void *lpvReserved)
+ #else
+ BOOL WINAPI
+ DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
diff --git a/mingw32-libxml2.spec b/mingw32-libxml2.spec
index 78098da..db14fd3 100644
--- a/mingw32-libxml2.spec
+++ b/mingw32-libxml2.spec
@@ -6,7 +6,7 @@
 
 Name:           mingw32-libxml2
 Version:        2.7.2
-Release:        8%{?dist}
+Release:        9%{?dist}
 Summary:        MinGW Windows libxml2 XML processing library
 
 License:        MIT
@@ -20,6 +20,7 @@ BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 # MinGW-specific patches.
 Patch1000:      mingw32-libxml2-2.7.2-with-modules.patch
+Patch1001:      mingw32-libxml2-static-build-compile-fix.patch
 
 BuildArch:      noarch
 
@@ -41,10 +42,20 @@ Requires:       pkgconfig
 MinGW Windows libxml2 XML processing library.
 
 
+%package static
+Summary:        Static version of the MinGW Windows XML processing library
+Requires:       %{name} = %{version}-%{release}
+Group:          Development/Libraries
+
+%description static
+Static version of the MinGW Windows XML processing library.
+
+
 %prep
 %setup -q -n libxml2-%{version}
 
 %patch1000 -p1
+%patch1001 -p0
 
 # Patched configure.in, so rebuild configure.
 libtoolize --force --copy
@@ -52,15 +63,39 @@ autoreconf
 
 
 %build
-LDFLAGS="-no-undefined" \
-%{_mingw32_configure} --without-python --with-modules --disable-static
-make %{?_smp_mflags}
+# LibXML2 can't build static and shared libraries in one go, so we
+# build LibXML2 twice here
+mkdir build_static
+pushd build_static
+    LDFLAGS="-no-undefined" \
+    %{_mingw32_configure} --without-python --with-modules --enable-static --disable-shared CFLAGS="$CFLAGS -DLIBXML_STATIC_FOR_DLL"
+    make %{?_smp_mflags}
+popd
+
+mkdir build_shared
+pushd build_shared
+    LDFLAGS="-no-undefined" \
+    %{_mingw32_configure} --without-python --with-modules --disable-static --enable-shared
+    make %{?_smp_mflags}
+popd
 
 
 %install
 rm -rf $RPM_BUILD_ROOT
 
-make DESTDIR=$RPM_BUILD_ROOT install
+# First install all the files belonging to the shared build
+make -C build_shared DESTDIR=$RPM_BUILD_ROOT install
+
+# Install all the files from the static build in a seperate folder
+# and move the static libraries to the right location
+make -C build_static DESTDIR=$RPM_BUILD_ROOT/build_static install
+mv $RPM_BUILD_ROOT/build_static%{_mingw32_libdir}/*.a $RPM_BUILD_ROOT%{_mingw32_libdir}
+
+# Manually merge the libtool files
+sed -i s/"old_library=''"/"old_library='libxml2.a'"/ $RPM_BUILD_ROOT%{_mingw32_libdir}/libxml2.la
+
+# Drop the folder which was temporary used for installing the static bits
+rm -rf $RPM_BUILD_ROOT/build_static
 
 # Remove manpages which duplicate Fedora native.
 rm -rf $RPM_BUILD_ROOT%{_mingw32_mandir}
@@ -71,14 +106,13 @@ rm -rf $RPM_BUILD_ROOT
 
 
 %files
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %{_mingw32_bindir}/libxml2-2.dll
 %{_mingw32_bindir}/xml2-config
 %{_mingw32_bindir}/xmlcatalog.exe
 %{_mingw32_bindir}/xmllint.exe
 %{_mingw32_libdir}/libxml2.dll.a
 %{_mingw32_libdir}/libxml2.la
-%{_mingw32_libdir}/pkgconfig
 %{_mingw32_libdir}/pkgconfig/libxml-2.0.pc
 %{_mingw32_libdir}/xml2Conf.sh
 %{_mingw32_includedir}/libxml2
@@ -87,7 +121,17 @@ rm -rf $RPM_BUILD_ROOT
 %{_mingw32_datadir}/gtk-doc/html/libxml2/
 
 
+%files static
+%defattr(-,root,root,-)
+%{_mingw32_libdir}/libxml2.a
+
 %changelog
+* Fri Apr  3 2009 Erik van Pienbroek <epienbro at fedoraproject.org> - 2.7.2-9
+- Fixed %%defattr line
+- Added -static subpackage. Applications which want to link
+  against this static library needs to add -DLIBXML_STATIC to the CFLAGS
+- This package shouldn't own %%{_mingw32_libdir}/pkgconfig
+
 * Wed Feb 25 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2.7.2-8
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
 


More information about the mingw mailing list