Mercurial > forge
changeset 3664:41f860e3d879 octave-forge
allow to build some o-f packages into separate installers
author | goffioul |
---|---|
date | Tue, 17 Jul 2007 17:14:51 +0000 |
parents | 0a9a72793747 |
children | 4e16cc19161b |
files | admin/Windows/msvc/.cvsignore admin/Windows/msvc/octave.nsi.in admin/Windows/msvc/octave_package.nsi.in admin/Windows/msvc/run_compilation.sh |
diffstat | 4 files changed, 253 insertions(+), 37 deletions(-) [+] |
line wrap: on
line diff
--- a/admin/Windows/msvc/.cvsignore Tue Jul 17 16:40:57 2007 +0000 +++ b/admin/Windows/msvc/.cvsignore Tue Jul 17 17:14:51 2007 +0000 @@ -2,4 +2,5 @@ octave_forge.nsi octave_forge_desc.nsi octave_main.nsi +octave_pkg_*.nsi octave-*-setup.exe
--- a/admin/Windows/msvc/octave.nsi.in Tue Jul 17 16:40:57 2007 +0000 +++ b/admin/Windows/msvc/octave.nsi.in Tue Jul 17 17:14:51 2007 +0000 @@ -446,6 +446,7 @@ Section -Post WriteUninstaller "$INSTDIR\uninst.exe" WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\bin\octave-${OCTAVE_VERSION}.exe" + WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Packages" "$INSTDIR\share\octave\packages" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\bin\octave-${OCTAVE_VERSION}.exe"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/admin/Windows/msvc/octave_package.nsi.in Tue Jul 17 17:14:51 2007 +0000 @@ -0,0 +1,172 @@ +; Script generated by the HM NIS Edit Script Wizard. + +!define PACKAGE_NAME "@PACKAGE_NAME@" +!define PACKAGE_LONG_NAME "@PACKAGE_LONG_NAME@" +!define PACKAGE_VERSION "@PACKAGE_VERSION@" +!define PACKAGE_INFO "@PACKAGE_INFO@" +!define OCTAVE_VERSION "@OCTAVE_VERSION@" +!define VCLIBS_ROOT "@VCLIBS_ROOT@" +!define SOFTWARE_ROOT "@SOFTWARE_ROOT@" + +!define OCTAVE_BASE "octave-${OCTAVE_VERSION}" +!define OCTAVE_ROOT "${VCLIBS_ROOT}\local\${OCTAVE_BASE}" + +; HM NIS Edit Wizard helper defines +!define PRODUCT_NAME "${PACKAGE_LONG_NAME}" +!define PRODUCT_VERSION "${PACKAGE_VERSION}" +!define PRODUCT_PUBLISHER "" +!define PRODUCT_WEB_SITE "http://octave.sourceforge.net" +!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\octave-${OCTAVE_VERSION}.exe" +!define PRODUCT_ROOT_KEY "HKLM" + +; MUI 1.67 compatible ------ +!include "MUI.nsh" +!include "Sections.nsh" +!include "WordFunc.nsh" +!insertmacro WordReplace + +; MUI Settings +!define MUI_ABORTWARNING +!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" +!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" + +; Welcome page +!insertmacro MUI_PAGE_WELCOME +; License page +!define MUI_LICENSEPAGE_TEXT_BOTTOM "Click Next to continue." +!define MUI_LICENSEPAGE_BUTTON "Next >" +!insertmacro MUI_PAGE_LICENSE "${VCLIBS_ROOT}\license\COPYING.GPL" +!insertmacro MUI_PAGE_COMPONENTS +; Instfiles page +!insertmacro MUI_PAGE_INSTFILES +; Finish page +!insertmacro MUI_PAGE_FINISH + +; Language files +!insertmacro MUI_LANGUAGE "English" + +; MUI end ------ + +Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" +OutFile "octave-${PACKAGE_NAME}-${PACKAGE_VERSION}-setup.exe" +InstallDir "$PROGRAMFILES\Octave" +#InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" +ShowInstDetails show +ShowUnInstDetails show +XPStyle on + +Var IS_WIN2K + +Section "${PACKAGE_LONG_NAME}" SEC_@PACKAGE_NAME@ + SetOverwrite try +@PACKAGE_FILES@ + SetOutPath "$INSTDIR\${PACKAGE_NAME}-${PACKAGE_VERSION}" + File /r "${OCTAVE_ROOT}\share\octave\packages\${PACKAGE_NAME}-${PACKAGE_VERSION}\*" + + ExecWait '"$INSTDIR\..\..\..\bin\octave.exe" -qf --eval "pkg rebuild ${PACKAGE_NAME}"' +SectionEnd + +; Section descriptions +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SEC_@PACKAGE_NAME@} "${PACKAGE_INFO}" +!insertmacro MUI_FUNCTION_DESCRIPTION_END + +Function .onInit + ReadRegStr $INSTDIR ${PRODUCT_ROOT_KEY} "${PRODUCT_DIR_REGKEY}" Packages + StrCmp $INSTDIR "" 0 octave_present + MessageBox MB_ICONSTOP|MB_OK "Octave ${OCTAVE_VERSION} not found on this system.$\r$\nThis package cannot be installed" + Abort +octave_present: + Call DetectWinVer + Call DetectAdmin + Pop $0 + StrCmp $0 1 0 endadmin + SetShellVarContext all +endadmin: +FunctionEnd + +Function DetectAdmin + Push $0 + Push $1 + ClearErrors + UserInfo::GetName + IfErrors win9x + Pop $0 + UserInfo::GetAccountType + Pop $1 + StrCmp $1 "Admin" win9x 0 + StrCpy $0 0 + Goto done +win9x: + StrCpy $0 1 +done: + Pop $1 + Exch $0 +FunctionEnd + +Function ReplaceOctDir + Push $0 + Push $1 + Push $2 + Push $3 + ClearErrors + FileOpen $2 $0 r + IfErrors done + FileOpen $3 $1 w + IfErrors close +doit: + FileRead $2 $0 + StrCmp $0 "" close1 0 + ${WordReplace} $0 "@OCTAVE_DIR@" "$INSTDIR" "+" $1 + FileWrite $3 $1 + Goto doit +close1: + FileClose $3 +close: + FileClose $2 +done: + Pop $3 + Pop $2 + Pop $1 + Pop $0 +FunctionEnd + +Function DetectJVM + Push $0 + ReadRegStr $0 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" CurrentVersion + Exch $0 +FunctionEnd + +Function DetectWinVer + Push $0 + Push $1 + ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion + IfErrors is_error is_winnt +is_winnt: + StrCpy $1 $0 1 + StrCmp $1 6 is_winxp + StrCmp $1 5 0 is_error + StrCmp $0 "5.0" is_win2k + StrCmp $0 "5.1" is_winxp + StrCmp $0 "5.2" is_winxp64 + Goto is_error +is_win2k: + StrCpy $IS_WIN2K 1 + Goto done +is_winxp64: +is_winxp: + StrCpy $IS_WIN2K 0 + Goto done +is_error: + StrCpy $1 $0 + ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" ProductName + IfErrors 0 +4 + ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion" Version + IfErrors 0 +2 + StrCpy $0 "Unknown" + MessageBox MB_ICONSTOP|MB_OK "This version of Octave cannot be installed on this system.$\r$\nSupported systems are Windows 2000 and Windows XP.$\r$\n$\r$\nCurrent system: $0 (version: $1)" + Abort +done: + Pop $1 + Pop $0 +FunctionEnd
--- a/admin/Windows/msvc/run_compilation.sh Tue Jul 17 16:40:57 2007 +0000 +++ b/admin/Windows/msvc/run_compilation.sh Tue Jul 17 17:14:51 2007 +0000 @@ -1552,6 +1552,50 @@ # NSI package generation # ########################## +isolated_packages="fpl bim msh secs1d secs2d" + +function get_nsi_additional_files() +{ + packname=$1 + case "$packname" in + image) + echo " SetOutPath \"\$INSTDIR\\bin\"" + echo " File \"\${VCLIBS_ROOT}\\bin\\jpeg6b.dll\"" + echo " File \"\${VCLIBS_ROOT}\\bin\\libpng13.dll\"" + ;; + octcdf) + echo " SetOutPath \"\$INSTDIR\\bin\"" + echo " File \"\${VCLIBS_ROOT}\\bin\\netcdf.dll\"" + echo " SetOutPath \"\$INSTDIR\\license\"" + echo " File \"\${VCLIBS_ROOT}\\license\\COPYING.NETCDF\"" + ;; + gsl) + echo " SetOutPath \"\$INSTDIR\\bin\"" + echo " File \"\${VCLIBS_ROOT}\\bin\\libgsl.dll\"" + echo " File \"\${VCLIBS_ROOT}\\bin\\libgslcblas.dll\"" + ;; + arpack) + echo " SetOutPath \"\$INSTDIR\\bin\"" + echo " File \"\${VCLIBS_ROOT}\\bin\\arpack.dll\"" + echo " SetOutPath \"\$INSTDIR\\license\"" + echo " File \"\${VCLIBS_ROOT}\\license\\COPYING.ARPACK.doc\"" + ;; + miscellaneous) + echo " SetOutPath \"\$INSTDIR\\bin\"" + echo " File \"\${VCLIBS_ROOT}\\bin\\units.exe\"" + echo " File \"\${VCLIBS_ROOT}\\bin\\units.dat\"" + ;; + secs2d) + echo " SetOutPath \"\$INSTDIR\\bin\"" + echo " File \"\${SOFTWARE_ROOT}\\Gmsh\\gmsh.exe\"" + echo " SetOutPath \"\$INSTDIR\\license\"" + echo " File /oname=COPYING.GMSH \"\${SOFTWARE_ROOT}\\Gmsh\\LICENSE.txt\"" + echo " SetOutPath \"\$INSTDIR\\tools\\gmsh\"" + echo " File /r /x gmsh.exe \"\${SOFTWARE_ROOT}\\Gmsh\\*.*\"" + ;; + esac +} + function create_nsi_entries() { pkgs=`for d in $1; do echo $d; done | sort - | sed -e ':a;N;$!ba;s/\n/\ /g'` @@ -1561,6 +1605,9 @@ if test "$packname" = "jhandles"; then continue fi + if `echo $isolated_packages | grep -e $packname > /dev/null`; then + continue + fi found=`find "$octave_prefix/share/octave/packages" -type d -a -name "$packname-*" -maxdepth 1` if test ! -z "$found"; then packdesc=`grep -e '^Name:' "$found/packinfo/DESCRIPTION" | sed -e 's/^Name *: *//'` @@ -1575,43 +1622,7 @@ fi echo "Section $flag_ \"$packdesc\" SEC_$packname" echo " SetOverwrite try" - case "$packname" in - image) - echo " SetOutPath \"\$INSTDIR\\bin\"" - echo " File \"\${VCLIBS_ROOT}\\bin\\jpeg6b.dll\"" - echo " File \"\${VCLIBS_ROOT}\\bin\\libpng13.dll\"" - ;; - octcdf) - echo " SetOutPath \"\$INSTDIR\\bin\"" - echo " File \"\${VCLIBS_ROOT}\\bin\\netcdf.dll\"" - echo " SetOutPath \"\$INSTDIR\\license\"" - echo " File \"\${VCLIBS_ROOT}\\license\\COPYING.NETCDF\"" - ;; - gsl) - echo " SetOutPath \"\$INSTDIR\\bin\"" - echo " File \"\${VCLIBS_ROOT}\\bin\\libgsl.dll\"" - echo " File \"\${VCLIBS_ROOT}\\bin\\libgslcblas.dll\"" - ;; - arpack) - echo " SetOutPath \"\$INSTDIR\\bin\"" - echo " File \"\${VCLIBS_ROOT}\\bin\\arpack.dll\"" - echo " SetOutPath \"\$INSTDIR\\license\"" - echo " File \"\${VCLIBS_ROOT}\\license\\COPYING.ARPACK.doc\"" - ;; - miscellaneous) - echo " SetOutPath \"\$INSTDIR\\bin\"" - echo " File \"\${VCLIBS_ROOT}\\bin\\units.exe\"" - echo " File \"\${VCLIBS_ROOT}\\bin\\units.dat\"" - ;; - secs2d) - echo " SetOutPath \"\$INSTDIR\\bin\"" - echo " File \"\${GMSH_ROOT}\\gmsh.exe\"" - echo " SetOutPath \"\$INSTDIR\\license\"" - echo " File /oname=COPYING.GMSH \"\${GMSH_ROOT}\\LICENSE.txt\"" - echo " SetOutPath \"\$INSTDIR\\tools\\gmsh\"" - echo " File /r /x gmsh.exe \"\${GMSH_ROOT}\\*.*\"" - ;; - esac + get_nsi_additional_files $packname echo " SetOutPath \"\$INSTDIR\\share\\octave\\packages\\$packinstdir\"" echo " File /r \"\${OCTAVE_ROOT}\\share\\octave\\packages\\$packinstdir\\*\"" echo "SectionEnd" @@ -1623,6 +1634,34 @@ done } +function create_nsi_package_file() +{ + packname=$1 + found=`find "$octave_prefix/share/octave/packages" -type d -a -name "$packname-*" -maxdepth 1` + if test ! -z "$found"; then + echo -n "creating installer for $packname... " + packdesc=`grep -e '^Name:' "$found/packinfo/DESCRIPTION" | sed -e 's/^Name *: *//'` + packdesc_low=`echo $packdesc | sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + packver=`grep -e '^Version:' "$found/packinfo/DESCRIPTION" | sed -e 's/^Version *: *//'` + packinstdir=$packdesc_low-$packver + packinfo=`sed -e '/^ /{H;$!d;}' -e 'x;/^Description: /!d;' "$found/packinfo/DESCRIPTION" | sed -e ':a;N;$!ba;s/\n */\ /g' | sed -e 's/^Description: //'` + packfiles=`get_nsi_additional_files $packname` + if test ! -z "$packfiles"; then + echo "$packfiles" > octave_pkg_${packname}_files.nsi + packfiles="!include \\\"octave_pkg_${packname}_files.nsi\\\"" + fi + sed -e "s/@PACKAGE_NAME@/$packname/" \ + -e "s/@PACKAGE_LONG_NAME@/$packdesc/" \ + -e "s/@PACKAGE_VERSION@/$packver/" \ + -e "s/@PACKAGE_INFO@/$packinfo/" \ + -e "s/@OCTAVE_VERSION@/$octave_version/" \ + -e "s/@VCLIBS_ROOT@/$tdir_w32/" \ + -e "s/@PACKAGE_FILES@/$packfiles/" \ + -e "s/@SOFTWARE_ROOT@/$software_root/" octave_package.nsi.in > octave_pkg_$packname.nsi + echo "done" + fi +} + if $do_nsi; then if test -z "$octave_version" || test ! -d "$INSTALL_DIR/local/octave-$octave_version"; then echo "no octave or octave-forge installed, cannot create installer" @@ -1682,4 +1721,7 @@ create_nsi_entries "$main_pkgs" "" 1 >> octave_forge_desc.nsi create_nsi_entries "$extra_pkgs" "" 1 >> octave_forge_desc.nsi echo "done" + for pack in $isolated_packages; do + create_nsi_package_file $pack + done fi