From a80f0fb0b313b42abc76cd28d7e79e7c15b16ec4 Mon Sep 17 00:00:00 2001 From: Andy Keep Date: Fri, 6 May 2016 18:30:06 -0400 Subject: [PATCH] - added custom install options. workarea creates an empty config.h, and configure creates a config.h that sets the default scheme heap path and scheme-script name based on the actual configuration. configure, newrelease, workarea, checkin, c/Mf-base, scheme.c, main.c, Mf-install.in - renamed the installed example directory from lib to examples. Mf-install.in, scheme.1.in - added force option to gzip during man page install to prevent gzip from asking for permission to overwrite existing man page files. Mf-install.in - removed ~/lib/csv%v/%m from the default scheme heap path on unix-like systems. documented inclusion of %x\..\..\boot\%m in the Windows default scheme heap path. main.c, use.stex - added new configuration options: --installbin, --installlib, --installschemename, --installpetitename, and --installscriptname. configure - updated the example library link to the nanopass framework. CONTRIBUTING.md - now cleaning up petite.1 and scheme.1 left behind by make install Makefile-workarea.in, checkin - now removing workarea after cleaning csug and release_notes so Mf-stex (included from csug/Makefile and release_notes/Makefile) doesn't complain trying to determine the machine type. Makefile.in - added installsh support for --ifdiff so the csug make file can use it for the install target. installsh, csug/Makefile - added instructions for building (cross-compiling) a boot file for a supported machine type for which a boot file is not built by default. BUILDING original commit: df4194c83a9e67d1ec20165fc3e2def4ed8e8986 --- BUILDING | 9 ++++ CONTRIBUTING.md | 6 +-- LOG | 37 +++++++++++++- c/Mf-base | 3 +- c/heappath.h.in | 32 ------------ c/main.c | 7 ++- c/scheme.c | 25 +++++---- checkin | 5 +- configure | 93 +++++++++++++++++++++++----------- csug/Makefile | 17 ++++--- csug/use.stex | 5 +- makefiles/Makefile-workarea.in | 1 + makefiles/Makefile.in | 2 +- makefiles/Mf-install.in | 67 ++++++++++++------------ makefiles/installsh | 21 ++++---- newrelease | 4 -- scheme.1.in | 6 +-- workarea | 3 ++ 18 files changed, 198 insertions(+), 145 deletions(-) delete mode 100644 c/heappath.h.in diff --git a/BUILDING b/BUILDING index f5e1943947..c8643c6ae7 100644 --- a/BUILDING +++ b/BUILDING @@ -150,6 +150,15 @@ The make file supports several targets: boot and header files can be committed as well. 'make bootfiles' can take 5 minutes or more. + 'make bootfiles' builds boot files for each machine type for which + a subdirectory exists in the top-level boot directory. to build + for a supported machine type that isn't built by default, simply + add the appropriate subdirectory, i.e., 'mkdir boot/$M', where M + is the machine type, before running 'make bootfiles'. You can + also run '(cd $W ; make -f Mf-boot $M.boot)', where W is the name + of a built work area for the host machine type, to build just the + boot files for machine-type M. + 'make clean' removes binaries from the workarea. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 31389cadb2..e63df22966 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -85,9 +85,9 @@ Please keep in mind the following guidance when preparing contributions: of their own. If you are contributing a significant extension built using Chez Scheme, consider whether your contribution is such an independent project. An example of such a project is the [Nanopass - Framework](http://github.com/akeep/nanopass-framework) which is - both used by Chez Scheme and was initially written using Chez Scheme, - but evolves separately. + Framework](http://github.com/nanopass/nanopass-framework-scheme) + which is both used by Chez Scheme and was initially written using + Chez Scheme, but evolves separately. Before investing significant effort preparing a contribution, consider running the idea by one of the committers for additional diff --git a/LOG b/LOG index eaaa45447e..8ab0a99b6f 100644 --- a/LOG +++ b/LOG @@ -104,5 +104,38 @@ configure, makefiles/Makefile.in, csug/Makefile, copyright.stex, csug.stex, release_notes/Makefile -- added custom install options. - configure newrelease scheme.c heappath.h.in +- added custom install options. workarea creates an empty config.h, + and configure creates a config.h that sets the default scheme heap + path and scheme-script name based on the actual configuration. + configure, newrelease, workarea, checkin, + c/Mf-base, scheme.c, main.c, + Mf-install.in +- renamed the installed example directory from lib to examples. + Mf-install.in, + scheme.1.in +- added force option to gzip during man page install to prevent gzip from + asking for permission to overwrite existing man page files. + Mf-install.in +- removed ~/lib/csv%v/%m from the default scheme heap path on unix-like + systems. documented inclusion of %x\..\..\boot\%m in the Windows + default scheme heap path. + main.c, + use.stex +- added new configuration options: --installbin, --installlib, + --installschemename, --installpetitename, and --installscriptname. + configure +- updated the example library link to the nanopass framework. + CONTRIBUTING.md +- now cleaning up petite.1 and scheme.1 left behind by make install + Makefile-workarea.in, checkin +- now removing workarea after cleaning csug and release_notes so + Mf-stex (included from csug/Makefile and release_notes/Makefile) + doesn't complain trying to determine the machine type. + Makefile.in +- added installsh support for --ifdiff so the csug make file can use it + for the install target. + installsh, + csug/Makefile +- added instructions for building (cross-compiling) a boot file for + a supported machine type for which a boot file is not built by default. + BUILDING diff --git a/c/Mf-base b/c/Mf-base index 1065c1a27b..ed38415916 100644 --- a/c/Mf-base +++ b/c/Mf-base @@ -27,7 +27,7 @@ kernelsrc=statics.c segment.c alloc.c symbol.c intern.c gcwrapper.c gc-ocd.c gc- kernelobj=${kernelsrc:%.c=%.$o} ${mdobj} -kernelhdr=system.h types.h version.h globals.h externs.h segment.h gc.c sort.h thread.h itest.c +kernelhdr=system.h types.h version.h globals.h externs.h segment.h gc.c sort.h thread.h config.h itest.c mainsrc=main.c @@ -44,6 +44,7 @@ rootsrc=$(shell cd ../../c; echo *) ${rootsrc}: ; ln -s ../../c/$@ $@ scheme.o: itest.c +scheme.o main.o: config.h ${kernelobj}: system.h types.h version.h externs.h globals.h segment.h thread.h sort.h ${kernelobj}: ${Include}/equates.h ${Include}/scheme.h ${mainobj}: ${Include}/scheme.h diff --git a/c/heappath.h.in b/c/heappath.h.in deleted file mode 100644 index fe53d691f0..0000000000 --- a/c/heappath.h.in +++ /dev/null @@ -1,32 +0,0 @@ -/* heappath.h - * Copyright 1984-2016 Cisco Systems, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* This file sets the default search path for the scheme boot directory. */ - -#define SEARCHPATHMAXSIZE 8192 -#ifdef WIN32 - -#define SEARCHPATHSEP ';' -/* by default, look in executable directory or in parallel boot directory */ -#define defaultsystemheappath "%x;%x\\..\\..\\boot\\%m" - -#else /* not WIN32: */ - -#define SEARCHPATHSEP ':' -/* keep in sync with scheme.1 */ -#define defaultsystemheappath "/usr/lib/csv%v/%m:/usr/local/lib/csv%v/%m" - -#endif diff --git a/c/main.c b/c/main.c index a9bb6f8a22..279091f285 100644 --- a/c/main.c +++ b/c/main.c @@ -25,6 +25,7 @@ #include #include #include "scheme.h" +#include "config.h" /**** CUSTOM_INIT may be defined as a function with the signature shown to @@ -45,6 +46,10 @@ #define ABNORMAL_EXIT ((void (*)(void))0) #endif /* ABNORMAL_EXIT */ +#ifndef SCHEME_SCRIPT +#define SCHEME_SCRIPT "scheme-script" +#endif + static const char *path_last(const char *p) { const char *s; #ifdef WIN32 @@ -92,7 +97,7 @@ int main(int argc, const char *argv[]) { Sscheme_init(ABNORMAL_EXIT); - if (strcmp(path_last(execpath), "scheme-script") == 0) { + if (strcmp(path_last(execpath), SCHEME_SCRIPT) == 0) { if (argc < 2) { (void) fprintf(stderr,"%s requires program-path argument\n", execpath); exit(1); diff --git a/c/scheme.c b/c/scheme.c index 46e541d8d2..036b4b4ada 100644 --- a/c/scheme.c +++ b/c/scheme.c @@ -15,6 +15,7 @@ */ #include "system.h" +#include "config.h" #include #include #ifdef WIN32 @@ -403,8 +404,13 @@ static const char *path_last(p) const char *p; { return p; } -#include "heappath.h" +#define SEARCHPATHMAXSIZE 8192 #ifdef WIN32 +#ifndef DEFAULT_HEAP_PATH +/* by default, look in executable directory or in parallel boot directory */ +#define DEFAULT_HEAP_PATH "%x;%x\\..\\..\\boot\\%m" +#endif +#define SEARCHPATHSEP ';' static char *get_defaultheapdirs() { char *result; @@ -412,20 +418,17 @@ static char *get_defaultheapdirs() { char key[PATH_MAX]; snprintf(key, PATH_MAX, "HKEY_LOCAL_MACHINE\\Software\\Chez Scheme\\csv%s\\HeapSearchPath", VERSION); result = S_GetRegistry(defaultheapdirs, SEARCHPATHMAXSIZE, key); - if (result == NULL) result = defaultsystemheappath; + if (result == NULL) result = DEFAULT_HEAP_PATH; return result; } #else /* not WIN32: */ -static char *get_defaultheapdirs() { - static char defaultheapdirs[SEARCHPATHMAXSIZE]; - const char *home; +#define SEARCHPATHSEP ':' +#ifndef DEFAULT_HEAP_PATH +#define DEFAULT_HEAP_PATH "/usr/lib/csv%v/%m:/usr/local/lib/csv%v/%m" +#endif - if ((home = S_homedir()) != NULL && - (snprintf(defaultheapdirs, SEARCHPATHMAXSIZE, "%s/lib/csv%%v/%%m:%s", - home, defaultsystemheappath) < SEARCHPATHMAXSIZE)) - return defaultheapdirs; - else - return defaultsystemheappath; +static char *get_defaultheapdirs() { + return DEFAULT_HEAP_PATH; } #endif /* WIN32 */ diff --git a/checkin b/checkin index ac1e8b27ef..403398b8ba 100755 --- a/checkin +++ b/checkin @@ -90,6 +90,7 @@ echo '*** running "make clean" in source directories ***' foreach x ($sdirs) switch ($x) case .: + (cd $W; /bin/rm -f petite.1 scheme.1) (cd $W; /bin/rm -f Make.out) case unicode: case unicode/UNIDATA: @@ -121,7 +122,7 @@ end set sfiles = () foreach x ($tmpsfiles) - if ("$x" == "./Makefile" || "$x" == "./Mf-install" || "$x" == "./Mf-boot") then + if ("$x" == "./Makefile" || "$x" == "./Mf-install" || "$x" == "./Mf-boot" || "$x" == "c/config.h") then set ignorefiles = ($ignorefiles $x) else cmp $W/$x $x >& /dev/null @@ -190,7 +191,7 @@ set RESPONSE = "" while ("$RESPONSE" != "y") echo -n "proceed with check in? (y/n): " set RESPONSE = $< - if ("$RESPONSE" == "n") goto error + if ("$RESPONSE" == "n") exit 0 end set oldsfiles = () diff --git a/configure b/configure index 45eb81f703..c801e1d728 100755 --- a/configure +++ b/configure @@ -31,6 +31,12 @@ help=no gzipmanpages=yes installowner="" installgroup="" +installbin="" +installlib="" +installman="" +installschemename="scheme" +installpetitename="petite" +installscriptname="scheme-script" case `uname` in Linux) @@ -46,8 +52,7 @@ case `uname` in tm64="" fi installprefix=/usr - installlib=$installprefix/lib - installman=$installprefix/share/man + installmansuffix=share/man ;; QNX) if uname -a | egrep 'x86' > /dev/null 2>&1 ; then @@ -55,8 +60,7 @@ case `uname` in tm32=ti3qnx fi installprefix=/usr/local - installlib=$installprefix/lib - installman=$installprefix/man + installmansuffix=man ;; FreeBSD) if uname -a | egrep 'i386|i686|amd64|athlon|x86_64' > /dev/null 2>&1 ; then @@ -66,8 +70,7 @@ case `uname` in tm64=ta6fb fi installprefix=/usr/local - installlib=$installprefix/lib - installman=$installprefix/man + installmansuffix=man ;; OpenBSD) if uname -a | egrep 'i386|i686|amd64|athlon|x86_64' > /dev/null 2>&1 ; then @@ -77,8 +80,7 @@ case `uname` in tm64=ta6ob fi installprefix=/usr/local - installlib=$installprefix/lib - installman=$installprefix/man + installmansuffix=man ;; NetBSD) if uname -a | egrep 'i386|i686|amd64|athlon|x86_64' > /dev/null 2>&1 ; then @@ -88,8 +90,7 @@ case `uname` in tm64=ta6nb fi installprefix=/usr - installlib=$installprefix/lib - installman=$installprefix/share/man + installmansuffix=share/man gzipmanpages=no ;; Darwin) @@ -100,8 +101,7 @@ case `uname` in tm64=ta6osx fi installprefix=/usr/local - installlib=$installprefix/lib - installman=$installprefix/share/man + installmansuffix=share/man ;; SunOS) if uname -a | egrep 'i386|i686|amd64|athlon|x86_64' > /dev/null 2>&1 ; then @@ -110,8 +110,7 @@ case `uname` in tm32=ti3s2 tm64=ta6s2 installprefix=/usr - installlib=$installprefix/lib - installman=$installprefix/share/man + installmansuffix=share/man gzipmanpages=no fi ;; @@ -143,6 +142,9 @@ while [ $# != 0 ] ; do --installlib=*) installlib=`echo $1 | sed -e 's/^--installlib=//'` ;; + --installbin=*) + installbin=`echo $1 | sed -e 's/^--installbin=//'` + ;; --installman=*) installman=`echo $1 | sed -e 's/^--installman=//'` ;; @@ -152,6 +154,15 @@ while [ $# != 0 ] ; do --installgroup=*) installgroup=`echo $1 | sed -e 's/^--installgroup=//'` ;; + --installschemename=*) + installschemename=`echo $1 | sed -e 's/^--installschemename=//'` + ;; + --installpetitename=*) + installpetitename=`echo $1 | sed -e 's/^--installpetitename=//'` + ;; + --installscriptname=*) + installscriptname=`echo $1 | sed -e 's/^--installscriptname=//'` + ;; --gzip-man-pages) gzipmanpages=yes ;; @@ -188,7 +199,7 @@ if [ "$threads" = "" ] ; then fi if [ "$m" = "" ] ; then - if [ $bits = 64 ] ; then + if [ $bits = 64 ] ; then if [ $threads = yes ] ; then m=$tm64 ; else m=$m64 ; fi else if [ $threads = yes ] ; then m=$tm32 ; else m=$m32 ; fi @@ -199,24 +210,40 @@ if [ "$w" = "" ] ; then w=$m fi +if [ "$installbin" = "" ] ; then + installbin=$installprefix/bin +fi + +if [ "$installlib" = "" ] ; then + installlib=$installprefix/lib +fi + +if [ "$installman" = "" ] ; then + installman=$installprefix/$installmansuffix +fi + if [ "$help" = "yes" ]; then echo "Purpose:" echo " $0 determines the machine type and constructs a custom Makefile" echo " and Mf-install, taking into account the options below." echo "" echo "Options (defaults shown in parens):" - echo " --machine= explicitly specify machine type ($m)" - echo " -m= same as --machine ($m)" - echo " --threads specify threaded version ($threads)" - echo " --32|--64 specify 32/64-bit version ($bits)" - echo " --installprefix= final installation root ($installprefix)" - echo " --installlib= lib directory ($installlib)" - echo " --installman= manpage directory ($installman)" - echo " --temproot= staging root ($temproot)" - echo " --installowner= install with owner ($installowner)" - echo " --installgroup= install with group ($installgroup)" - echo " --[no]gzip-man-pages compress manual pages ($gzipmanpages)" - echo " --workarea= build directory ($w)" + echo " --machine= explicitly specify machine type ($m)" + echo " -m= same as --machine ($m)" + echo " --threads specify threaded version ($threads)" + echo " --32|--64 specify 32/64-bit version ($bits)" + echo " --installprefix= final installation root ($installprefix)" + echo " --installbin= lib directory ($installbin)" + echo " --installlib= lib directory ($installlib)" + echo " --installman= manpage directory ($installman)" + echo " --temproot= staging root ($temproot)" + echo " --installowner= install with owner ($installowner)" + echo " --installgroup= install with group ($installgroup)" + echo " --installschemename= install with group ($installschemename)" + echo " --installpetitename= install with group ($installpetitename)" + echo " --installscriptname= install with group ($installscriptname)" + echo " --[no]gzip-man-pages compress manual pages ($gzipmanpages)" + echo " --workarea= build directory ($w)" echo "" echo "Available machine types: $machs" echo "" @@ -262,13 +289,19 @@ sed -e 's/$(m)/'$m'/g'\ sed -e "s;^m=none\$;m=$m;"\ -e "s;^InstallPrefix=.*\$;InstallPrefix=$installprefix;"\ - -e "s;^InstallLib=.*\$;InstallLib=$installlib/csv9.4;"\ + -e "s;^InstallBin=.*\$;InstallBin=$installbin;"\ + -e "s;^InstallLib=.*\$;InstallLib=$installlib;"\ -e "s;^InstallMan=.*\$;InstallMan=$installman/man1;"\ -e "s;^InstallOwner=.*\$;InstallOwner=$installowner;"\ -e "s;^InstallGroup=.*\$;InstallGroup=$installgroup;"\ -e "s;^TempRoot=.*;TempRoot=$temproot;"\ -e "s;^GzipManPages=.*$;GzipManPages=$gzipmanpages;"\ + -e "s;^InstallSchemeName=.*$;InstallSchemeName=$installschemename;"\ + -e "s;^InstallPetiteName=.*$;InstallPetiteName=$installpetitename;"\ + -e "s;^InstallScriptName=.*$;InstallScriptName=$installscriptname;"\ makefiles/Mf-install.in > $w/Mf-install -sed -e "s;\#define defaultsystemheappath \"/usr/lib/csv%v/%m:.*\$;\#define defaultsystemheappath \"$installlib/csv%v/%m\";"\ - c/heappath.h.in > $w/c/heappath.h +cat > $w/c/config.h << END +#define SCHEME_SCRIPT "$installscriptname" +#define DEFAULT_HEAP_PATH "$installlib/csv%v/%m" +END diff --git a/csug/Makefile b/csug/Makefile index 8029d02adc..af6b9af205 100644 --- a/csug/Makefile +++ b/csug/Makefile @@ -2,6 +2,7 @@ m = a6le Scheme=../$m/bin/$m/scheme -b ../$m/boot/$m/petite.boot -b ../$m/boot/$m/scheme.boot STEXLIB=../stex installdir=/tmp/csug9 +INSTALL=../$m/installsh x = csug latex = pdflatex @@ -14,14 +15,14 @@ DIR=$(shell basename `pwd`) target: logcheck1 logcheck2 checklibs $(x).html install: target - installsh -m 2755 -d $(installdir) - installsh -m 0644 --ifdiff *.html *.css $(installdir) - installsh -m 2755 -d $(installdir)/canned - installsh -m 0644 --ifdiff canned/* $(installdir)/canned - installsh -m 2755 -d $(installdir)/gifs - installsh -m 0644 --ifdiff gifs/*.gif $(installdir)/gifs - installsh -m 2755 -d $(installdir)/$(mathdir) - installsh -m 0644 --ifdiff $(mathdir)/*.gif $(installdir)/$(mathdir) + $(INSTALL) -m 2755 -d $(installdir) + $(INSTALL) -m 0644 --ifdiff *.html *.css $(installdir) + $(INSTALL) -m 2755 -d $(installdir)/canned + $(INSTALL) -m 0644 --ifdiff canned/* $(installdir)/canned + $(INSTALL) -m 2755 -d $(installdir)/gifs + $(INSTALL) -m 0644 --ifdiff gifs/*.gif $(installdir)/gifs + $(INSTALL) -m 2755 -d $(installdir)/$(mathdir) + $(INSTALL) -m 0644 --ifdiff $(mathdir)/*.gif $(installdir)/$(mathdir) (cd $(installdir); ln -s -f $(x).html index.html) # thrice is not enough when starting from scratch diff --git a/csug/use.stex b/csug/use.stex index 952bc1e10a..70d341fb7a 100644 --- a/csug/use.stex +++ b/csug/use.stex @@ -1793,7 +1793,7 @@ arguments for which search tracing is desired. Ordinarily, the search for boot files is limited to a set of -default installation directories, but this may be overridden by setting +installation directories, but this may be overridden by setting the environment variable \index{\scheme{SCHEMEHEAPDIRS}}\scheme{SCHEMEHEAPDIRS}. \scheme{SCHEMEHEAPDIRS} should be a colon-separated list of directories, listed in the order in which they should be searched. @@ -1810,7 +1810,8 @@ searched after those in \scheme{SCHEMEHEAPDIRS}; otherwise, only those listed in Under Windows, semi-colons are used in place of colons, and one additional escape is recognized: ``\scheme{%x},'' which is replaced by the directory in which the executable file resides. -The default search path under Windows consists only of ``\scheme{%x}.'' +The default search path under Windows consists of ``\scheme{%x}'' +and ``\scheme{%x\..\..\boot\%m}.'' The registry key \scheme{HeapSearchPath} in \scheme{HKLM\SOFTWARE\Chez Scheme\csv\var{version}}, where \var{version} is the {\ChezScheme} version number, e.g., diff --git a/makefiles/Makefile-workarea.in b/makefiles/Makefile-workarea.in index 300023c49a..800d4777a9 100644 --- a/makefiles/Makefile-workarea.in +++ b/makefiles/Makefile-workarea.in @@ -31,6 +31,7 @@ bootfiles: build $(MAKE) -f Mf-boot clean: + rm -f petite.1 scheme.1 (cd s ; $(MAKE) clean) (cd c ; $(MAKE) clean) (cd mats ; $(MAKE) clean) diff --git a/makefiles/Makefile.in b/makefiles/Makefile.in index 861e84bab4..16b05436be 100644 --- a/makefiles/Makefile.in +++ b/makefiles/Makefile.in @@ -35,8 +35,8 @@ clean: (cd $(workarea) && $(MAKE) clean) distclean: - rm -rf $(workarea) (cd csug ; make reallyreallyclean) (cd release_notes ; make reallyreallyclean) + rm -rf $(workarea) rm -f Makefile rm -f Make.out diff --git a/makefiles/Mf-install.in b/makefiles/Mf-install.in index c9952407ac..628e26eac5 100644 --- a/makefiles/Mf-install.in +++ b/makefiles/Mf-install.in @@ -1,4 +1,4 @@ -# Mf-boot.in +# Mf-install.in # Copyright 1984-2016 Cisco Systems, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,6 +13,10 @@ # See the License for the specific language governing permissions and # limitations under the License. +############################################################################### +# the following variables are set up by configure # +############################################################################### + m=none # The following variables determine where the executables, boot files, @@ -22,56 +26,50 @@ m=none # in the generated manual page InstallPrefix=/usr +# executable directory +InstallBin=${InstallPrefix}/bin + +# library directory +InstallLib=${InstallPrefix}/lib + +# man page directory +InstallMan=${InstallPrefix}/man/man1 + # installation owner InstallOwner= # installation group InstallGroup= -# executable directory -InstallBin=${InstallPrefix}/bin - -# library directory -InstallLib=${InstallPrefix}/lib/csv9.4 - -# example program directory -InstallLibLib=${InstallLib}/lib - -# base executable and heap file directory -InstallLibBin=${InstallLib}/$m - -# man page directory -InstallMan=${InstallPrefix}/man/man1 - -# compress man pages? -GzipManPages=yes - -# executable names -InstallPetiteName=petite -InstallSchemeName=scheme -# the name "scheme-script" is hardwired in custom.c, so if -# InstallScriptName is changed, the executable may have to be -# rebuilt with a modified custom.c that looks for the new name -InstallScriptName=scheme-script - # Files are actually installed at ${TempRoot}${InstallPrefix} # This useful for testing the install process and for building # installation scripts TempRoot= +# compress man pages? +GzipManPages=yes + +# executable names +InstallSchemeName=scheme +InstallPetiteName=petite +InstallScriptName=scheme-script + ############################################################################### # no changes should be needed below this point # ############################################################################### +Version=csv9.4 Include=boot/$m PetiteBoot=boot/$m/petite.boot SchemeBoot=boot/$m/scheme.boot Scheme=bin/$m/scheme Petite=bin/$m/petite +InstallLibExamples=${InstallLib}/${Version}/examples +InstallLibBin=${InstallLib}/${Version}/$m Bin=${TempRoot}${InstallBin} -Lib=${TempRoot}${InstallLib} -LibLib=${TempRoot}${InstallLibLib} +Lib=${TempRoot}${InstallLib}/${Version} +LibExamples=${TempRoot}${InstallLibExamples} LibBin=${TempRoot}${InstallLibBin} Man=${TempRoot}${InstallMan} PetitePath=${Bin}/${InstallPetiteName} @@ -95,8 +93,7 @@ uninstall: scheme.1 petite.1: scheme.1.in sed -e "s;{InstallBin};${InstallBin};g" \ - -e "s;{InstallLib};${InstallLib};g" \ - -e "s;{InstallLibLib};${InstallLibLib};g" \ + -e "s;{InstallLibExamples};${InstallLibExamples};g" \ -e "s;{InstallLibBin};${InstallLibBin};g" \ -e "s;{InstallPetiteName};${InstallPetiteName};g" \ -e "s;{InstallSchemeName};${InstallSchemeName};g" \ @@ -134,8 +131,8 @@ maninstall: scheme.1 petite.1 ${Man} $I -m 444 petite.1 ${Man}/${InstallPetiteName}.1 if [ ${GzipManPages} = yes ] ; then gzip -f ${Man}/${InstallPetiteName}.1 ; fi -liblibinstall: ${LibLib} - $I -m 444 ../examples/* ${LibLib} +liblibinstall: ${LibExamples} + $I -m 444 ../examples/* ${LibExamples} ${Lib}: $I -d -m 755 ${Lib} @@ -143,8 +140,8 @@ ${Lib}: ${LibBin}: ${Lib} $I -d -m 755 ${LibBin} -${LibLib}: ${Lib} - $I -d -m 755 ${LibLib} +${LibExamples}: ${Lib} + $I -d -m 755 ${LibExamples} ${Bin}: $I -d -m 755 ${Bin} diff --git a/makefiles/installsh b/makefiles/installsh index 88c770ff5d..04235042d7 100755 --- a/makefiles/installsh +++ b/makefiles/installsh @@ -6,6 +6,7 @@ fi while ${TRUE} ; do mkdirs=0 + ifdiff=0 while [ $# -ge 0 ] ; do case $1 in @@ -13,27 +14,27 @@ while ${TRUE} ; do -o) shift; owner=$1 ;; -g) shift; group=$1 ;; -m) shift; mode=$1 ;; + --ifdiff) ifdiff=1 ;; -*) break 2 ;; *) break ;; esac shift done + if [ $mkdirs -eq 1 ] && [ $ifdiff -eq 1 ] ; then + break + fi + if [ $mkdirs -eq 1 ] ; then dirs=$* for dir in $dirs ; do - case $dir in - /*) ;; - *) echo "directory name must begin with /; $dir does not" ; exit 1 ;; - esac - stack="" - while [ "$dir" != "/" ] ; do + while [ "$dir" != "/" -a "$dir" != "." -a "$dir" != ".." ] ; do stack="$dir $stack" dir=`dirname $dir` done - + for dir in $stack ; do if [ ! -d $dir ] ; then if mkdir $dir ; then @@ -60,7 +61,7 @@ while ${TRUE} ; do for file in $files ; do destfile=$dest if [ -d $destfile ] ; then destfile=$destfile/`basename $file` ; fi - if cp -f -p $file $destfile ; then + if [ $ifdiff == 1 ] && cmp -s $file $destfile || cp -f -p $file $destfile ; then if [ "$owner" != "" ] ; then chown $owner $destfile ; fi if [ "$group" != "" ] ; then chgrp $group $destfile ; fi if [ "$mode" != "" ] ; then chmod $mode $destfile ; fi @@ -71,7 +72,7 @@ while ${TRUE} ; do exit 0 done -echo "usage: $0 [ -o owner] [ -g group ] [ -m mode ] file dest" -echo " $0 [ -o owner] [ -g group ] [ -m mode ] file file ... dir" +echo "usage: $0 [ -o owner] [ -g group ] [ -m mode ] [ --ifdiff] file dest" +echo " $0 [ -o owner] [ -g group ] [ -m mode ] [ --ifdiff] file file ... dir" echo " $0 -d [ -o owner] [ -g group ] [ -m mode ] dir dir ..." exit 1 diff --git a/newrelease b/newrelease index 8cedc6b694..554a416e79 100755 --- a/newrelease +++ b/newrelease @@ -87,10 +87,6 @@ sed -e "s/Chez Scheme Version [^ ]*/Chez Scheme Version $R/" \ ../NOTICE > NOTICE set updatedfiles = ($updatedfiles NOTICE) -sed -e "s/csv[0-9]\.[0-9]\(\.[0-9]\)\?/csv$R/" ../configure > configure -chmod +x configure -set updatedfiles = ($updatedfiles configure) - mkdir makefiles sed -e "s/csv[0-9]\.[0-9]\(\.[0-9]\)\?/csv$R/" ../makefiles/Mf-install.in > makefiles/Mf-install.in set updatedfiles = ($updatedfiles makefiles/Mf-install.in) diff --git a/scheme.1.in b/scheme.1.in index 9bcfc14c55..d325895868 100644 --- a/scheme.1.in +++ b/scheme.1.in @@ -3,7 +3,7 @@ .if t .ds c caf\o'\'e' .if n .ds c cafe .ds ]W -.TH SCHEME 1 "April 2016 Cisco Systems, Inc." +.TH SCHEME 1 "May 2016 Cisco Systems, Inc." .SH NAME \fIChez Scheme\fP .br @@ -741,14 +741,14 @@ to a colon-separated (semi-colon under Windows) list of directories in which to search for boot files. .SH FILES .if 0 COMMENT: put the longest path from below in the tab computation: -.ta \w'{InstallLibBin}'u+.25i +.ta \w'{InstallLibExamples}'u+.25i {InstallBin}/{InstallSchemeName} executable file .br {InstallBin}/{InstallPetiteName} executable file .br {InstallBin}/{InstallScriptName} executable file .br -{InstallLibLib} example program library +{InstallLibExamples} example program library .br {InstallLibBin} boot and include files .sp diff --git a/workarea b/workarea index 5a4048dcd9..0c41424b0b 100755 --- a/workarea +++ b/workarea @@ -113,6 +113,9 @@ workdir $W/c (cd $W/c; workln ../../c/Mf-$M Mf-$M) (cd $W/c; forceworkln Mf-$M Makefile) (cd $W/c; workln ../../c/Mf-base Mf-base) +if [ ! -e $W/c/config.h ] ; then + touch $W/c/config.h +fi workdir $W/s (cd $W/s; workln ../../s/Mf-$M Mf-$M)