From: Michael G. <gof...@us...> - 2007-07-18 15:33:47
|
Update of /cvsroot/octave/octave-forge/admin/Windows/msvc In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv8254 Modified Files: octave.nsi.in octave_package.nsi.in run_compilation.sh Added Files: forge_autoload.ini Log Message: allow to configure autoload state in single-package installer Index: octave_package.nsi.in =================================================================== RCS file: /cvsroot/octave/octave-forge/admin/Windows/msvc/octave_package.nsi.in,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- octave_package.nsi.in 18 Jul 2007 12:40:45 -0000 1.2 +++ octave_package.nsi.in 18 Jul 2007 15:32:53 -0000 1.3 @@ -37,7 +37,10 @@ !define MUI_LICENSEPAGE_TEXT_BOTTOM "Click Next to continue." !define MUI_LICENSEPAGE_BUTTON "Next >" !insertmacro MUI_PAGE_LICENSE "${VCLIBS_ROOT}\license\COPYING.GPL" +; Components page !insertmacro MUI_PAGE_COMPONENTS +; Autoload page +Page custom Autoload AutoloadEnd ; Instfiles page !insertmacro MUI_PAGE_INSTFILES ; Finish page @@ -59,13 +62,18 @@ Var IS_WIN2K Var OCTAVE_EXEC +Var IS_AUTOLOAD 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}\*" - + SetOutPath "$INSTDIR\share\octave\packages\${PACKAGE_NAME}-${PACKAGE_VERSION}" + File /r /x ".autoload" "${OCTAVE_ROOT}\share\octave\packages\${PACKAGE_NAME}-${PACKAGE_VERSION}\*" + StrCmp $IS_AUTOLOAD 1 0 rebuild + FileOpen $0 "$INSTDIR\share\octave\packages\${PACKAGE_NAME}-${PACKAGE_VERSION}\packinfo\.autoload" w + FileWrite $0 " " + FileClose $0 +rebuild: ExecWait '"$OCTAVE_EXEC" -qf --eval "pkg rebuild ${PACKAGE_NAME}"' SectionEnd @@ -94,7 +102,7 @@ !macroend Function .onInit - ReadRegStr $INSTDIR ${PRODUCT_ROOT_KEY} "${PRODUCT_DIR_REGKEY}" Packages + ReadRegStr $INSTDIR ${PRODUCT_ROOT_KEY} "${PRODUCT_DIR_REGKEY}" Path StrCmp $INSTDIR "" 0 octave_present !insertmacro MissingComponent "Octave ${OCTAVE_VERSION}" Abort @@ -107,11 +115,22 @@ SetShellVarContext all endadmin: @PACKAGE_DEPENDENCY@ - IfFileExists "$INSTDIR\${PACKAGE_NAME}-*" 0 endinit + IfFileExists "$INSTDIR\share\octave\packages\${PACKAGE_NAME}-*" 0 endinit MessageBox MB_YESNOCANCEL|MB_ICONQUESTION "${PRODUCT_NAME} is already installed on this computer. The existing version must be uninstalled$\r$\nbefore running this installer. Do you want to remove the existing version?" IDYES +2 IDNO endinit Abort ExecWait '"$OCTAVE_EXEC" -qf --eval "pkg uninstall ${PACKAGE_NAME}"' endinit: + !insertmacro MUI_INSTALLOPTIONS_EXTRACT "forge_autoload.ini" + StrCpy $IS_AUTOLOAD @PACKAGE_AUTOLOAD@ +FunctionEnd + +Function Autoload + !insertmacro MUI_INSTALLOPTIONS_DISPLAY "forge_autoload.ini" + !insertmacro MUI_INSTALLOPTIONS_WRITE "forge_autoload.ini" "Field 1" "State" $IS_AUTOLOAD +FunctionEnd + +Function AutoLoadEnd + !insertmacro MUI_INSTALLOPTIONS_READ $IS_AUTOLOAD "forge_autoload.ini" "Field 1" "State" FunctionEnd Function DetectAdmin @@ -239,7 +258,7 @@ Exch $0 Push $2 Push $3 - FindFirst $2 $3 "$INSTDIR\$0-*" + FindFirst $2 $3 "$INSTDIR\share\octave\packages\$0-*" StrCmp $3 "" dep_not_ok StrCmp $1 "" dep_ok ${WordFind} "$3" "-" "-1" $3 --- NEW FILE: forge_autoload.ini --- ; Ini file generated by the HM NIS Edit IO designer. [Settings] NumFields=1 [Field 1] Type=Checkbox Text=Load package at Octave startup Left=0 Right=-1 Top=0 Bottom=10 Index: run_compilation.sh =================================================================== RCS file: /cvsroot/octave/octave-forge/admin/Windows/msvc/run_compilation.sh,v retrieving revision 1.25 retrieving revision 1.26 diff -u -d -r1.25 -r1.26 --- run_compilation.sh 18 Jul 2007 12:40:45 -0000 1.25 +++ run_compilation.sh 18 Jul 2007 15:32:53 -0000 1.26 @@ -22,10 +22,12 @@ if test "$machine_name" = "MACROCK"; then INSTALL_DIR=/c/Temp/vclibs_tmp CYGWIN_DIR=/c/Software/cygwin + NSI_DIR=/c/Software/NSIS else INSTALL_DIR=/d/Temp/vclibs_tmp CYGWIN_DIR=/d/Software/cygwin WGET_FLAGS="-e http_proxy=http://webproxy:8123 -e ftp_proxy=http://webproxy:8123" + NSI_DIR=/d/Software/NSIS fi DOWNLOAD_DIR=downloaded_packages DOATLAS=false @@ -39,6 +41,7 @@ octave_version= of_version= do_nsi=false +do_nsiclean=true ################################################################################### @@ -79,8 +82,17 @@ --forge=*) of_version=`echo $1 | sed -e 's/--forge=//'` ;; - --nsi) + --nsi | --nsi=*) do_nsi=true + nsiarg=`echo $1 | sed -e 's/--nsi=//'` + case $nsiarg in + keep) + do_nsiclean=false + ;; + clean) + do_nsiclean=true + ;; + esac ;; -*) echo "unknown flag: $1" @@ -1552,7 +1564,7 @@ # NSI package generation # ########################## -isolated_packages="fpl msh bim secs1d secs2d" +isolated_packages="fpl msh bim secs1d secs2d vrml" function get_nsi_additional_files() { @@ -1585,7 +1597,7 @@ echo " File \"\${VCLIBS_ROOT}\\bin\\units.exe\"" echo " File \"\${VCLIBS_ROOT}\\bin\\units.dat\"" ;; - secs2d) + msh) echo " SetOutPath \"\$INSTDIR\\bin\"" echo " File \"\${SOFTWARE_ROOT}\\Gmsh\\gmsh.exe\"" echo " SetOutPath \"\$INSTDIR\\license\"" @@ -1602,7 +1614,7 @@ descfile="$2" sed -n -e 's/ *$//' \ -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' \ - -e 's/^depends: //p' "$descfile" | \ + -e 's/^depends: *//p' "$descfile" | \ awk -F ', ' '{c=split($0, s); for(n=1; n<=c; ++n) printf("%s\n", s[n]) }' | \ sed -n -e 's/^octave.*$//' \ -e 's/\([a-zA-Z0-9_]\+\) *\(( *\([<>]=\?\) *\([0-9]\+\.[0-9]\+\.[0-9]\+\) *) *\)\?/ !insertmacro CheckDependency "\1" "\4" "\3"/p' @@ -1664,10 +1676,14 @@ 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 *: *//'` + if test -f "release-$octave_version/octave-$packname-$packver-setup.exe"; then + return 0 + fi + echo -n "creating installer for $packname... " + mkdir -p "release-$octave_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` @@ -1680,6 +1696,11 @@ echo "$packdeps" > octave_pkg_${packname}_deps.nsi packdeps="!include \\\"octave_pkg_${packname}_deps.nsi\\\"" fi + if test -f "$found/packinfo/.autoload"; then + packautoload=1 + else + packautoload=0 + fi sed -e "s/@PACKAGE_NAME@/$packname/" \ -e "s/@PACKAGE_LONG_NAME@/$packdesc/" \ -e "s/@PACKAGE_VERSION@/$packver/" \ @@ -1688,8 +1709,20 @@ -e "s/@VCLIBS_ROOT@/$tdir_w32/" \ -e "s/@PACKAGE_FILES@/$packfiles/" \ -e "s/@PACKAGE_DEPENDENCY@/$packdeps/" \ + -e "s/@PACKAGE_AUTOLOAD@/$packautoload/" \ -e "s/@SOFTWARE_ROOT@/$software_root/" octave_package.nsi.in > octave_pkg_$packname.nsi - echo "done" + $NSI_DIR/makensis.exe octave_pkg_$packname.nsi >&5 2>&1 + if $do_nsiclean; then + rm -f octave_pkg_$packname*.nsi + fi + if test ! -f "octave-$packname-$packver-setup.exe"; then + echo "failed" + return -1 + else + mv -f "octave-$packname-$packver-setup.exe" "release-$octave_version" + echo "done" + return 0 + fi fi } @@ -1725,51 +1758,71 @@ echo "Software directory not found" exit -1 fi - if test ! -f "octave_main.nsi"; then - echo -n "creating octave_main.nsi... " - sed -e "s/@OCTAVE_VERSION@/$octave_version/" -e "s/@VCLIBS_ROOT@/$tdir_w32/" \ - -e "s/@MSYS_ROOT@/$msys_root/" -e "s/@JHANDLES_VERSION@/$jhandles_version/" \ - -e "s/@SOFTWARE_ROOT@/$software_root/" octave.nsi.in > octave_main.nsi - echo "done" - fi - if test ! -f "octave_forge.nsi"; then - echo -n "creating octave_forge.nsi... " - echo "SectionGroup \"Main\" GRP_forge_main" > octave_forge.nsi - create_nsi_entries "$main_pkgs" "" 0 >> octave_forge.nsi - echo "SectionGroupEnd" >> octave_forge.nsi - echo "SectionGroup \"Extra\" GRP_forge_extra" >> octave_forge.nsi - create_nsi_entries "$extra_pkgs" "/o" 0 >> octave_forge.nsi - echo "SectionGroupEnd" >> octave_forge.nsi - echo "SectionGroup \"Language\" GRP_forge_lang" >> octave_forge.nsi - create_nsi_entries "$lang_pkgs" "/o" 0 >> octave_forge.nsi - echo "SectionGroupEnd" >> octave_forge.nsi - echo "SectionGroup \"Others\" GRP_forge_others" >> octave_forge.nsi - create_nsi_entries "$nonfree_pkgs" "" 0 >> octave_forge.nsi - echo "SectionGroupEnd" >> octave_forge.nsi - echo "done" - fi - if test ! -f "octave_forge_deps.nsi"; then - echo -n "creating octave_forge_deps.nsi... " - echo "# Dependency checking" > octave_forge_deps.nsi - create_nsi_entries "$main_pkgs" "" 2 >> octave_forge_deps.nsi - create_nsi_entries "$extra_pkgs" "" 2 >> octave_forge_deps.nsi - create_nsi_entries "$lang_pkgs" "" 2 >> octave_forge_deps.nsi - create_nsi_entries "$nonfree_pkgs" "" 2 >> octave_forge_deps.nsi - echo "done" - fi - if test ! -f "octave_forge_desc.nsi"; then - echo -n "creating octave_forge_desc.nsi... " - echo " !insertmacro MUI_DESCRIPTION_TEXT \${GRP_forge_main} \"\"" > octave_forge_desc.nsi - echo " !insertmacro MUI_DESCRIPTION_TEXT \${GRP_forge_extra} \"\"" >> octave_forge_desc.nsi - echo " !insertmacro MUI_DESCRIPTION_TEXT \${GRP_forge_lang} \"\"" >> octave_forge_desc.nsi - echo " !insertmacro MUI_DESCRIPTION_TEXT \${GRP_forge_others} \"\"" >> octave_forge_desc.nsi - create_nsi_entries "$main_pkgs" "" 1 >> octave_forge_desc.nsi - create_nsi_entries "$extra_pkgs" "" 1 >> octave_forge_desc.nsi - create_nsi_entries "$lang_pkgs" "" 1 >> octave_forge_desc.nsi - create_nsi_entries "$nonfree_pkgs" "" 1 >> octave_forge_desc.nsi - echo "done" + release_dir="release-$octave_version" + mkdir -p "$release_dir" + if test ! -f "$release_dir/octave-$octave_version-setup.exe"; then + if test ! -f "octave_main.nsi"; then + echo -n "creating octave_main.nsi... " + sed -e "s/@OCTAVE_VERSION@/$octave_version/" -e "s/@VCLIBS_ROOT@/$tdir_w32/" \ + -e "s/@MSYS_ROOT@/$msys_root/" -e "s/@JHANDLES_VERSION@/$jhandles_version/" \ + -e "s/@SOFTWARE_ROOT@/$software_root/" octave.nsi.in > octave_main.nsi + echo "done" + fi + if test ! -f "octave_forge.nsi"; then + echo -n "creating octave_forge.nsi... " + echo "SectionGroup \"Main\" GRP_forge_main" > octave_forge.nsi + create_nsi_entries "$main_pkgs" "" 0 >> octave_forge.nsi + echo "SectionGroupEnd" >> octave_forge.nsi + echo "SectionGroup \"Extra\" GRP_forge_extra" >> octave_forge.nsi + create_nsi_entries "$extra_pkgs" "/o" 0 >> octave_forge.nsi + echo "SectionGroupEnd" >> octave_forge.nsi + echo "SectionGroup \"Language\" GRP_forge_lang" >> octave_forge.nsi + create_nsi_entries "$lang_pkgs" "/o" 0 >> octave_forge.nsi + echo "SectionGroupEnd" >> octave_forge.nsi + echo "SectionGroup \"Others\" GRP_forge_others" >> octave_forge.nsi + create_nsi_entries "$nonfree_pkgs" "" 0 >> octave_forge.nsi + echo "SectionGroupEnd" >> octave_forge.nsi + echo "done" + fi + if test ! -f "octave_forge_deps.nsi"; then + echo -n "creating octave_forge_deps.nsi... " + echo "# Dependency checking" > octave_forge_deps.nsi + create_nsi_entries "$main_pkgs" "" 2 >> octave_forge_deps.nsi + create_nsi_entries "$extra_pkgs" "" 2 >> octave_forge_deps.nsi + create_nsi_entries "$lang_pkgs" "" 2 >> octave_forge_deps.nsi + create_nsi_entries "$nonfree_pkgs" "" 2 >> octave_forge_deps.nsi + echo "done" + fi + if test ! -f "octave_forge_desc.nsi"; then + echo -n "creating octave_forge_desc.nsi... " + echo " !insertmacro MUI_DESCRIPTION_TEXT \${GRP_forge_main} \"\"" > octave_forge_desc.nsi + echo " !insertmacro MUI_DESCRIPTION_TEXT \${GRP_forge_extra} \"\"" >> octave_forge_desc.nsi + echo " !insertmacro MUI_DESCRIPTION_TEXT \${GRP_forge_lang} \"\"" >> octave_forge_desc.nsi + echo " !insertmacro MUI_DESCRIPTION_TEXT \${GRP_forge_others} \"\"" >> octave_forge_desc.nsi + create_nsi_entries "$main_pkgs" "" 1 >> octave_forge_desc.nsi + create_nsi_entries "$extra_pkgs" "" 1 >> octave_forge_desc.nsi + create_nsi_entries "$lang_pkgs" "" 1 >> octave_forge_desc.nsi + create_nsi_entries "$nonfree_pkgs" "" 1 >> octave_forge_desc.nsi + echo "done" + fi + if test ! -f "$release_dir/octave-$octave_version-setup.exe"; then + echo -n "creating installer for octave... " + $NSI_DIR/makensis.exe octave_main.nsi + if test ! -f "octave-$octave_version-setup.exe"; then + echo "failed" + exit -1 + else + mv -f "octave-$octave_version-setup.exe" "$release_dir" + echo "done" + fi + fi + if $do_nsiclean; then + rm -f octave_main.nsi octave_forge*.nsi + fi fi for pack in $isolated_packages; do - create_nsi_package_file $pack + if ! create_nsi_package_file $pack; then + exit -1 + fi done fi Index: octave.nsi.in =================================================================== RCS file: /cvsroot/octave/octave-forge/admin/Windows/msvc/octave.nsi.in,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- octave.nsi.in 18 Jul 2007 12:40:45 -0000 1.4 +++ octave.nsi.in 18 Jul 2007 15:32:53 -0000 1.5 @@ -446,7 +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 HKLM "${PRODUCT_DIR_REGKEY}" "Path" "$INSTDIR" 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" |