From: Paul K. <pki...@us...> - 2004-10-01 00:42:22
|
Update of /cvsroot/octave/octave-forge/admin/Windows In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5907 Modified Files: Makefile README Log Message: More refinements; still can't build octinst.exe directly (need links). Index: README =================================================================== RCS file: /cvsroot/octave/octave-forge/admin/Windows/README,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- README 29 Sep 2004 15:29:27 -0000 1.4 +++ README 1 Oct 2004 00:41:58 -0000 1.5 @@ -1,10 +1,18 @@ Most of the work of building a new release is encoded in admin/Windows/Makefile. +1) Setup environment + First you will need a cygwin environment. Search the net for details. As of this writing, only the gcc 3.2 compiler is acceptable, later -versions being too slow. +versions being too slow. + +Note that the gcc 3.2 compiler is missing stdint.h. +For our purposes you can do the following to get +around this using: + + cat "#include <sys/types.h>" >/usr/include/stdint.h You will need to download octave-forge (which presumably you have already done, otherwise you @@ -19,17 +27,33 @@ You will need a directory /opt which has a number of supplementary packages. These will be distributed from the octave-forge -download site. +download site. Grab all of the files listed +in the windows-dev section. The configuration options are hardcoded in config-octave. -Now you are ready to build. You should be -able to do: +2) Build octave and octave-forge + +Start in the Windows admin directory. + + cd /c/src/octave-forge/admin/Windows + +Update the octave-forge version from cvs: (cd /c/src/octave-forge; cvs -q update -dP) - make v=2.1.xx clean.forge - make v=2.1.xx + +Set your octave version: + + export OCTVER=2.1.xx + +Clean out any old version: + + make clean.forge + +Invoke the build: + + make The results of the build will be in: @@ -42,9 +66,25 @@ check.forge install.forge -You should be able to run the new octave with +If any stage fails for some reason (e.g., because +routines haven't been ported to cygwin yet), you +will need to remove the corresponding results file +in order to rebuild it. This will likely be +build.octave or build.forge. + +It may be helpful when fixing problems to run +octave-forge in place: + + make run.forge + +See the results of the tests: + + less check.octave + less check.forge + +Both will have some errors, but there shouldn't be +too many. - /opt/octave-2.1.xx/bin/octave The following make targets are available: @@ -69,12 +109,6 @@ docs * copies octave docs to the install directory - cygwin - * sets up a cygwin environment for octave, taken - from the current environment. The list of - cygwin files is hard-coded. You may need a - different list for your version of cygwin. - clean.forge * call make clean in the octave-forge directory config.forge -> config.forge @@ -86,32 +120,29 @@ install.forge -> install.forge * call make install in octave-forge - dist (not implemented) + + cygwin + * sets up a cygwin environment for octave, taken + from the current environment. The list of + cygwin files is hard-coded. You may need a + different list for your version of cygwin. This + is only needed for constructing a new distribution. + + dist * use nsis to build a new octave distribution. -Check the results files *.octave and *.forge for -questionable output. If you need to repeat your -build for some reason, you will need to remove -the output targets: +3) Try out the new build. - rm *.octave *.forge +You should be able to run the octave with + /opt/octave-2.1.xx/bin/octave -2004-07-14 +4) Create a new release -Octave+octave-forge windows old build instructions +To build a release distribution, you will need the Nullsoft NSIS 2.0 +installer from -Build /opt/octave-2.1.xx - rm -rf /opt/octave-2.1.xx - mkdir /opt/octave-2.1.xx - cd /opt/octave-2.1.xx - -Install epstk - cd /opt/octave/share/octave/site/m - # Grab the latest epstk from http://epstk.sf.net/down - # Skip the manual --- we can link directly to the web - unzip epstk2.zip - mv m epstk + http://www.nullsoft.com/free/nsis/#download Hack the links # Some hand modifications were done in /opt/octave/bin @@ -123,8 +154,9 @@ # find all links find /opt/octave-2.1.57 -type l -Grab nsis 2.0 from http://www.nullsoft.com/free/nsis/#download - cd <octave-forge>/admin/Windows - # Modify install_octave.sh to use the appropriate ARCH=dir - # then build the exe as follows: - <NSIS>/makensis /DVERSION=<ver> octave-install-win32.nsi +To build the installer, use: + + make dist + +Paul Kienzle +2004-09-29 Index: Makefile =================================================================== RCS file: /cvsroot/octave/octave-forge/admin/Windows/Makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Makefile 29 Sep 2004 15:29:27 -0000 1.2 +++ Makefile 1 Oct 2004 00:41:58 -0000 1.3 @@ -4,15 +4,21 @@ # octave-forge is in /c/src/octave-forge # install into /opt/octave-2.1.xx ROOT=/c/src -ifeq (,$(v)) - $(error usage: make v=2.1.xx) +ifeq (,$(OCTVER)) + $(error usage: OCTVER=2.1.xx make) +endif +ifneq (,$(minor)) + nsis_minor=/DMINOR=$minor endif -OCTVER=$v BUILD=$(ROOT)/cygwin/octave-$(OCTVER) SOURCE=$(ROOT)/octave-$(OCTVER) FORGE=$(ROOT)/octave-forge ADMIN=$(FORGE)/admin/Windows DEST=/opt/octave-$(OCTVER) +WINDEST=C:\\opt\\octave-$(OCTVER) +NSIS="/c/Program Files/NSIS/makensis" +NSISPARS=/DVERSION=$(OCTVER) $(nsis_minor) /DROOT=$(WINDEST) +PACKAGEDIR=/opt $(warning ADMIN=$(ADMIN)) $(warning SOURCE=$(SOURCE)) @@ -20,16 +26,17 @@ $(warning DEST=$(DEST)) $(warning OCTVER=$(OCTVER)) -EXTERNAL_PACKAGES=fftw3 hdf5 lapack gnuplot gsl ginac image qhull +EXTERNAL_PACKAGES=fftw3 hdf5 lapack gnuplot gsl ginac image qhull epstk PACKAGE_TARGETS=$(patsubst %,$(DEST)/unpack.%,$(EXTERNAL_PACKAGES)) # cygkey and octkey must be exactly the same length cygkey=Cygnus Solutions octkey=GNUoctave $(OCTVER) -.PHONY: all setup stdc++ ranlibhack confighack config build check install strip docs cygwin forge +.PHONY: all setup stdc++ ranlibhack confighack config build check \ + install strip docs forge epstk cygwin dist -all: build check install cygwin forge strip docs +all: build check install forge epstk strip docs @echo "Done octave build: test using $(DEST)/bin/octave" @@ -45,7 +52,7 @@ @echo "Preparing build directory $(BUILD)" -mkdir $(BUILD) -$(DEST)/unpack.% : /opt/%.tar.bz2 ; tar xjf $< -C $(DEST) ; touch $@ +$(DEST)/unpack.% : $(PACKAGEDIR)/%.tar.bz2 ; tar xjf $< -C $(DEST) ; touch $@ stdc++: $(DEST)/lib/libstdc++.dll.a $(DEST)/lib/libstdc++.dll.a: @@ -102,9 +109,10 @@ # ==== strip octave strip: install @echo "Stripping binaries for smaller distribution" - strip $(DEST)/bin/* - strip $(DEST)/base/oct/* - strip $(DEST)/site/oct/*/* + strip $(DEST)/bin/*.dll + strip $(DEST)/bin/*.exe + strip $(DEST)/base/oct/*.oct + strip $(DEST)/site/oct/*/*.oct # ==== install documentation docs: build @@ -118,10 +126,10 @@ # ==== generate a cygwin environment # Octave requires a hacked version of the cygwin dll so # that it doesn't conflict with an existing cygwin installation. -# These are stored in the cygwin directory of the installation -# which gets mounted as /bin in the installed system. The bin -# directory itself gets mounted as /usr/bin in the installed -# system. By keeping these separate, it is possible to run +# This is stored in the cygwin directory of the installation +# which gets mounted as /bin in the installed system. The octave +# bin directory gets mounted as /usr/bin in the installed +# system. By keeping these separate, it should be possible to run # octave from either the hacked cygwin or the users own cygwin, # assuming the cygwin1.dll API hasn't changed. @@ -172,10 +180,16 @@ -mkdir $(DEST)/cygwin # ==== build octave-forge -forge: config.forge build.forge check.forge install.forge +dist: forge cygwin + $(NSIS) $(NSISPARS) + + +# ==== build octave-forge +forge: install config.forge build.forge check.forge install.forge clean.forge: @echo "Cleaning octave-forge" + -rm config.forge build.forge check.forge install.forge cd $(FORGE) && make clean config.forge: @@ -199,4 +213,3 @@ run.forge: @echo "Running with an octave-forge environment" cd $(FORGE) && make run - |