From: Richard W.M. Jones <"Richard W.M. Jones "> Date: Mon, 7 Jan 2008 17:39:05 +0000 (+0000) Subject: Bundle Gtk DLLs and support files in the Windows installer. X-Git-Tag: 1.0.4~87 X-Git-Url: http://git.annexia.org/?a=commitdiff_plain;h=7ae8ab4cf04a8d0705115af44fa7364ebc01b167;p=virt-top.git Bundle Gtk DLLs and support files in the Windows installer. * configure.ac: Detect library paths instead of hard- coding them. * wininstaller.nsis (removed): This file is now autogenerated. * wininstaller.nsis.in: Bundle Gtk DLLs and support files. * Makefile.in: More verbose messages from NSIS. --- diff --git a/.hgignore b/.hgignore index 33d3be5..098c551 100755 --- a/.hgignore +++ b/.hgignore @@ -30,3 +30,4 @@ mlvirsh/mlvirsh mlvirtmanager/mlvirtmanager virt-top/virt-top virt-df/virt-df +wininstaller.nsis \ No newline at end of file diff --git a/ChangeLog b/ChangeLog index 8683d58..c8b673a 100755 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2008-01-07 Richard Jones + Bundle Gtk DLLs and support files in the Windows installer. + * configure.ac: Detect library paths instead of hard- + coding them. + * wininstaller.nsis (removed): This file is now autogenerated. + * wininstaller.nsis.in: Bundle Gtk DLLs and support files. + * Makefile.in: More verbose messages from NSIS. + Include required libraries in the Windows installer. * wininstaller.nsis: Include *.dll files. diff --git a/Makefile.in b/Makefile.in index 3d3f561..a7cc00b 100755 --- a/Makefile.in +++ b/Makefile.in @@ -75,7 +75,7 @@ wininstaller: $(PACKAGE)-$(VERSION).exe $(PACKAGE)-$(VERSION).exe: wininstaller.nsis all # opt "$(MAKENSIS)" \ //DPACKAGE=$(PACKAGE) //DVERSION=$(VERSION) \ - //DOUTFILE=$@ //V2 $< + //DOUTFILE=$@ $< ls -l $@ endif diff --git a/configure.ac b/configure.ac index f0ec22a..2920cf3 100755 --- a/configure.ac +++ b/configure.ac @@ -147,20 +147,94 @@ AC_SUBST(subdirs) dnl Check for optional perldoc (for building manual pages). AC_CHECK_PROG(HAVE_PERLDOC,perldoc,perldoc) -dnl Check for optional NSIS. +dnl Check for optional NSIS (for building a Windows installer). AC_ARG_WITH([nsis], [AS_HELP_STRING([--with-nsis], [use NSIS to build a Windows installer])], [], [with_nsis=no]) + MAKENSIS= +LIBVIRT_DLL_PATH= +LIBXDR_DLL_PATH= +LIBXML2_DLL_PATH= +GNUTLS_DLL_PATH= +GTK_PATH= +GTK_DLL_PATH= + +[ +msys_to_win_dir () { + eval pushd "\$$1" > /dev/null + eval $1=`pwd -W` + popd > /dev/null +} +] + if test "x$with_nsis" != "xno"; then AC_PATH_PROG(MAKENSIS,makensis,[],[$with_nsis:$PATH]) if test "x$MAKENSIS" = "x"; then AC_MSG_FAILURE([--with-nsis was given, but could not find MAKENSIS.EXE]) fi + + # MAKENSIS is set so we will build a rule for making a Windows + # installer. To support this, generate wininstaller.nsis. + saved_IFS=$IFS + IFS=$PATH_SEPARATOR + for d in $PATH; do + IFS=$saved_IFS + echo Checking $d for DLLs ... >&5 + if test -f "$d/libvirt-0.dll"; then + LIBVIRT_DLL_PATH="$d" + fi + if test -f "$d/libxdr.dll"; then + LIBXDR_DLL_PATH="$d" + fi + if test -f "$d/libxml2-2.dll"; then + LIBXML2_DLL_PATH="$d" + fi + if test -f "$d/libgpg-error-0.dll"; then + GNUTLS_DLL_PATH="$d" + fi + if test -f "$d/libgtk-win32-2.0-0.dll"; then + GTK_DLL_PATH="$d" + GTK_PATH="$d/.." + fi + done + IFS=$saved_IFS + + if test "x$LIBVIRT_DLL_PATH" = "x"; then + AC_MSG_FAILURE([cannot find libvirt-0.dll in PATH]) + fi + if test "x$LIBXDR_DLL_PATH" = "x"; then + AC_MSG_FAILURE([cannot find libxdr.dll in PATH]) + fi + if test "x$LIBXML2_DLL_PATH" = "x"; then + AC_MSG_FAILURE([cannot find libxml2-2.dll in PATH]) + fi + if test "x$GNUTLS_DLL_PATH" = "x"; then + AC_MSG_FAILURE([cannot find GnuTLS DLLs in PATH]) + fi + if test "x$GTK_DLL_PATH" = "x"; then + AC_MSG_WARN([cannot find GTK DLLs in PATH]) + fi + + # Change the paths to Windows paths. + msys_to_win_dir LIBVIRT_DLL_PATH + msys_to_win_dir LIBXDR_DLL_PATH + msys_to_win_dir LIBXML2_DLL_PATH + msys_to_win_dir GNUTLS_DLL_PATH + if test "x$GTK_DLL_PATH" != "x"; then + msys_to_win_dir GTK_DLL_PATH + msys_to_win_dir GTK_PATH + fi fi AC_SUBST(MAKENSIS) +AC_SUBST(LIBVIRT_DLL_PATH) +AC_SUBST(LIBXDR_DLL_PATH) +AC_SUBST(LIBXML2_DLL_PATH) +AC_SUBST(GNUTLS_DLL_PATH) +AC_SUBST(GTK_DLL_PATH) +AC_SUBST(GTK_PATH) dnl Summary. echo "------------------------------------------------------------" @@ -181,4 +255,7 @@ AC_CONFIG_FILES([META virt-top/Makefile virt-df/Makefile ]) +if test "x$MAKENSIS" != "x"; then + AC_CONFIG_FILES([wininstaller.nsis]) +fi AC_OUTPUT diff --git a/wininstaller.nsis b/wininstaller.nsis.in similarity index 81% rename from wininstaller.nsis rename to wininstaller.nsis.in index 0ffba5c..f348540 100755 --- a/wininstaller.nsis +++ b/wininstaller.nsis.in @@ -1,4 +1,5 @@ #!Nsis Installer Command Script +# @configure_input@ # Copyright (C) 2008 Red Hat Inc., Richard W.M. Jones # # This library is free software; you can redistribute it and/or @@ -63,19 +64,29 @@ Section "Libvirt and its libraries (required)" SectionIn RO SetOutPath $INSTDIR - # XXX Get these paths automatically. - File "c:\msys\1.0\local\bin\libvirt-?.dll" - File "c:\msys\1.0\local\bin\libxdr.dll" - File "c:\msys\1.0\local\bin\libxml2-?.dll" - File "c:\gnutls\bin\libgcrypt-??.dll" - File "c:\gnutls\bin\libgnutls-??.dll" - File "c:\gnutls\bin\libgpg-error-?.dll" - File "c:\gnutls\bin\libtasn1-?.dll" + File "@LIBVIRT_DLL_PATH@\libvirt-0.dll" + File "@LIBXDR_DLL_PATH@\libxdr.dll" + File "@LIBXML2_DLL_PATH@\libxml2-2.dll" + File "@GNUTLS_DLL_PATH@\libgcrypt-??.dll" + File "@GNUTLS_DLL_PATH@\libgnutls-??.dll" + File "@GNUTLS_DLL_PATH@\libgpg-error-?.dll" + File "@GNUTLS_DLL_PATH@\libtasn1-?.dll" + File "@GTK_DLL_PATH@\*.dll" + + SetOutPath $INSTDIR\lib + File /r "@GTK_PATH@\lib\gtk-2.0" + File /r "@GTK_PATH@\lib\pango" + + SetOutPath $INSTDIR + File /r "@GTK_PATH@\etc" + + SetOutPath $INSTDIR SectionEnd Section "Programs (recommended)" SetOutPath $INSTDIR File "/oname=mlvirsh.exe" "mlvirsh\mlvirsh.opt" + #File "/oname=mlvirtmanager.exe" "mlvirsh\mlvirtmanager.opt" SectionEnd Section "OCaml Libvirt bindings (for developers only)" @@ -102,6 +113,8 @@ Section "Uninstall" RMDir "$SMPROGRAMS\${PACKAGE}" # Files in installation directory. + RMDir /r "$INSTDIR\etc" + RMDir /r "$INSTDIR\lib" Delete /rebootok "$INSTDIR\*.exe" Delete /rebootok "$INSTDIR\*.dll"