Index: m3/pm3/intro/src/questions/m3makefile diff -c m3/pm3/intro/src/questions/m3makefile:1.1 m3/pm3/intro/src/questions/m3makefile:1.2 *** m3/pm3/intro/src/questions/m3makefile:1.1 Sat Jan 31 15:28:00 1998 --- m3/pm3/intro/src/questions/m3makefile Thu Apr 9 13:18:52 1998 *************** *** 29,31 **** --- 29,33 ---- HtmlFile("whatism3") HtmlFile("whereused") HtmlFile("xnotfound") + + if defined("BUILD_FAQ") HtmlRoot("questions") end Index: m3/pm3/intro/src/questions/questions.html diff -c m3/pm3/intro/src/questions/questions.html:1.2 m3/pm3/intro/src/questions/questions.html:1.3 *** m3/pm3/intro/src/questions/questions.html:1.2 Tue Feb 10 22:41:10 1998 --- m3/pm3/intro/src/questions/questions.html Thu Apr 9 13:18:52 1998 *************** *** 3,41 **** Modula-3 Frequently asked questions and answers

Modula-3 Frequently asked questions and answers

--- 3,74 ---- Modula-3 Frequently asked questions and answers + +
+ Michel Dagenais + Michel Dagenais, GNU General Public License, 1998 +
+ michel.dagenais@polymtl.ca
+ Ecole Polytechnique
+ C.P. 6079, Succ. Centre-Ville
+ Montreal, Quebec, H3C 3A7
+ 2 April 1998 +
+

Modula-3 Frequently asked questions and answers

+ Maintained by Michel Dagenais + (michel.dagenais@polymtl.ca), + suggestions are most welcome. + Last updated 2 April 1998. + The latest copy of this FAQ may be obtained from the + Polytechnique Montreal Modula-3 Home. + +

Introduction

! !

Troubleshooting

! + +

Miscellaneous Questions

+ ! !

Design Issues

! + Index: m3/pm3/language/m3quake/src/QMachine.m3 diff -c m3/pm3/language/m3quake/src/QMachine.m3:1.16 m3/pm3/language/m3quake/src/QMachine.m3:1.17 *** m3/pm3/language/m3quake/src/QMachine.m3:1.16 Wed Jan 28 12:47:53 1998 --- m3/pm3/language/m3quake/src/QMachine.m3 Thu Apr 9 13:17:52 1998 *************** *** 1172,1177 **** --- 1172,1178 ---- env: REF ARRAY OF TEXT := NIL): INTEGER RAISES {Error} = VAR stdin_file, stdout_file, stderr_file: File.T := NIL; + new_stdin, new_stdout, new_stderr: BOOLEAN := FALSE; n : INTEGER := -1; handle : Process.T; buffer : ARRAY [0 .. 4095] OF CHAR; *************** *** 1185,1191 **** --- 1186,1194 ---- stdin_file := FS.OpenFile(stdin, create := FS.CreateOption.Never, access := FS.AccessOption.ReadOnly); + new_stdin := TRUE; END; + IF stdout # NIL THEN IF (Text.Length(stdout) >= 2 AND Text.GetChar(stdout, 0) = '>') AND (Text.GetChar(stdout, 1) = '>') THEN *************** *** 1195,1201 **** --- 1198,1206 ---- ELSE stdout_file := FS.OpenFile(stdout); END; + new_stdout := TRUE; END; + IF stderr # NIL THEN IF (Text.Length(stderr) >= 2 AND Text.GetChar(stderr, 0) = '>') AND (Text.GetChar(stderr, 1) = '>') THEN *************** *** 1205,1211 **** --- 1210,1222 ---- ELSE stderr_file := FS.OpenFile(stderr); END; + new_stderr := TRUE; END; + + (* One of the output files is unspecified. Redirect to stdout if this + is where the current output is going. Otherwise create a pipe + to connect it to the current output writer. *) + IF stdout_file = NIL OR stderr_file = NIL THEN IF t.writer = Stdio.stdout THEN VAR dumb: File.T; *************** *** 1221,1241 **** Pipe.Open (hr := hrSelf, hw := hwChildOut); IF stdout_file = NIL THEN stdout_file := hwChildOut; END; IF stderr_file = NIL THEN stderr_file := hwChildOut; END; END; END; handle := Process.Create(cmd, args^, env, wd, stdin_file, stdout_file, stderr_file); ! IF stdin_file # NIL THEN stdin_file.close() END; ! IF t.writer # Stdio.stdout THEN ! IF stdout_file # NIL THEN stdout_file.close() END; ! IF stderr_file # NIL AND stderr_file # stdout_file THEN ! stderr_file.close() END; ! END; IF hrSelf # NIL THEN rd := NEW(FileRd.T).init(hrSelf); --- 1232,1256 ---- Pipe.Open (hr := hrSelf, hw := hwChildOut); IF stdout_file = NIL THEN stdout_file := hwChildOut; + new_stdout := TRUE; END; IF stderr_file = NIL THEN stderr_file := hwChildOut; + new_stderr := TRUE; END; END; END; handle := Process.Create(cmd, args^, env, wd, stdin_file, stdout_file, stderr_file); ! ! (* Close the file handles created *) ! ! IF new_stdin THEN stdin_file.close() END; ! IF new_stdout THEN stdout_file.close() END; ! IF new_stderr AND stderr_file # stdout_file THEN stderr_file.close() END; ! ! (* If a pipe was created, pump its content to the output writer *) IF hrSelf # NIL THEN rd := NEW(FileRd.T).init(hrSelf); Index: m3/pm3/language/modula3/m3compiler/m3bootstrap/src/m3makefile diff -c m3/pm3/language/modula3/m3compiler/m3bootstrap/src/m3makefile:1.8 m3/pm3/language/modula3/m3compiler/m3bootstrap/src/m3makefile:1.9 *** m3/pm3/language/modula3/m3compiler/m3bootstrap/src/m3makefile:1.8 Thu Mar 26 12:51:04 1998 --- m3/pm3/language/modula3/m3compiler/m3bootstrap/src/m3makefile Thu Apr 9 13:16:30 1998 *************** *** 70,81 **** write("packages:", CR) write("\tboot-" & target & "/" & "m3build" & "/" & target & "/" & ! "m3build -T ../m3config/src -DRECURSIVE -DBOOTSTRAP=TRUE", CR, CR) write("exportpackages:", CR) write("\tboot-" & target & "/" & "m3build" & "/" & target & "/" & "m3build -T ../m3config/src -DRECURSIVE -DBOOTSTRAP=TRUE " & ! exportrpath, CR, CR) write("boot:", CR) WriteMakefileLine("m3core",target,options) --- 70,91 ---- write("packages:", CR) write("\tboot-" & target & "/" & "m3build" & "/" & target & "/" & ! "m3build -T ../m3config/src -DRECURSIVE -DBOOTSTRAP=TRUE", ! " ${M3OPTIONS}",CR, CR) write("exportpackages:", CR) write("\tboot-" & target & "/" & "m3build" & "/" & target & "/" & "m3build -T ../m3config/src -DRECURSIVE -DBOOTSTRAP=TRUE " & ! "${M3OPTIONS} ",exportrpath, CR, CR) ! ! write("clean: pkg-clean boot-clean",CR, CR) ! ! write("pkg-clean:", CR) ! write("\tboot-" & target & "/" & "m3build" & "/" & target & "/" & ! "m3build -T ../m3config/src -DRECURSIVE -DBOOTSTRAP=TRUE -DCLEAN_ALL", ! " ${M3OPTIONS}",CR, CR) ! ! write("nothing:",CR,CR) write("boot:", CR) WriteMakefileLine("m3core",target,options) *************** *** 236,242 **** CleanPkg("m3build",target) CleanPkg("m3ship",target) ! local header = "" local options = "\"CC=${CC}\" \"CCFLAGS=${CCFLAGS}\"" & " \"AS=${AS}\" \"ASFLAGS=${ASFLAGS}\"" & " \"AR=${AR}\" \"ARFLAGS=${ARFLAGS}\"" & --- 246,252 ---- CleanPkg("m3build",target) CleanPkg("m3ship",target) ! local header = "M3OPTIONS=" & CR local options = "\"CC=${CC}\" \"CCFLAGS=${CCFLAGS}\"" & " \"AS=${AS}\" \"ASFLAGS=${ASFLAGS}\"" & " \"AR=${AR}\" \"ARFLAGS=${ARFLAGS}\"" & Index: m3/pm3/language/modula3/m3compiler/m3build/src/html/m3buildsteps.html diff -c m3/pm3/language/modula3/m3compiler/m3build/src/html/m3buildsteps.html:1.2 m3/pm3/language/modula3/m3compiler/m3build/src/html/m3buildsteps.html:1.3 *** m3/pm3/language/modula3/m3compiler/m3build/src/html/m3buildsteps.html:1.2 Tue Feb 10 22:56:31 1998 --- m3/pm3/language/modula3/m3compiler/m3build/src/html/m3buildsteps.html Thu Apr 9 13:19:19 1998 *************** *** 14,22 **** typical value.

The second step is to find and interpret the platform dependent template, ! specified in BUILD_DIR. The template directory may be specified on the command line, ! in the M3TEMPLATES environment variable, and defaults to m3config/src within the directory specified in PKG_USE when m3build was compiled. As a last resort, directory ../lib/m3/pkg/m3config/src is searched relative to the directory --- 14,23 ---- typical value.

The second step is to find and interpret the platform dependent template, ! specified as BUILD_DIR, or found in the M3_TEMPLATE ! environment variable. The template directory may be specified on the command line, ! in the M3_TEMPLATE_DIR environment variable, and defaults to m3config/src within the directory specified in PKG_USE when m3build was compiled. As a last resort, directory ../lib/m3/pkg/m3config/src is searched relative to the directory Index: m3/pm3/language/modula3/m3compiler/m3export/src/CONFIG diff -c m3/pm3/language/modula3/m3compiler/m3export/src/CONFIG:1.3 m3/pm3/language/modula3/m3compiler/m3export/src/CONFIG:1.4 *** m3/pm3/language/modula3/m3compiler/m3export/src/CONFIG:1.3 Thu Mar 26 16:12:30 1998 --- m3/pm3/language/modula3/m3compiler/m3export/src/CONFIG Thu Apr 9 13:17:26 1998 *************** *** 1,4 **** ! EXPORT_TMP_ROOT = lookup("EXPORT_TMP_ROOT","/home/ftp/tmp/pm3") EXPORT_TMP_TMP = lookup("EXPORT_TMP_TMP",EXPORT_TMP_ROOT & "/tmp") EXPORT_TMP_SRC = lookup("EXPORT_TMP_SRC", EXPORT_TMP_ROOT & "/pkg") EXPORT_TMP_BOOTSTRAP = lookup("EXPORT_TMP_BOOTSTRAP", EXPORT_TMP_ROOT & --- 1,4 ---- ! EXPORT_TMP_ROOT = lookup("EXPORT_TMP_ROOT","/mnt/oppede/3/ftp/tmp/pm3") EXPORT_TMP_TMP = lookup("EXPORT_TMP_TMP",EXPORT_TMP_ROOT & "/tmp") EXPORT_TMP_SRC = lookup("EXPORT_TMP_SRC", EXPORT_TMP_ROOT & "/pkg") EXPORT_TMP_BOOTSTRAP = lookup("EXPORT_TMP_BOOTSTRAP", EXPORT_TMP_ROOT & *************** *** 13,18 **** --- 13,23 ---- EXPORT_SRC = lookup("EXPORT_SRC", EXPORT_ROOT & "/pkg") EXPORT_BOOTSTRAP = lookup("EXPORT_BOOTSTRAP", EXPORT_ROOT & "/bootstrap") EXPORT_BINARIES = lookup("EXPORT_BINARIES", EXPORT_ROOT & "/binaries") + EXPORT_DOWNLOAD = lookup("EXPORT_DOWNLOAD", EXPORT_ROOT & "/download") STORE_ROOT = lookup("STORE_ROOT","/home/m3/pm3") STORE_VERSION = lookup("STORE_VERSION",STORE_ROOT & "/version") + + Binaries = {"LINUXELF","SOLgnu"} + DOWNLOAD_SCRIPT = lookup("DOWNLOAD_SCRIPT","/m3htbin/pm3download") + PM3_WEB = lookup("PM3_WEB","http://m3.polymtl.ca/m3/pkg/pm3") Index: m3/pm3/language/modula3/m3compiler/m3export/src/dobinaries.sh diff -c m3/pm3/language/modula3/m3compiler/m3export/src/dobinaries.sh:1.4 m3/pm3/language/modula3/m3compiler/m3export/src/dobinaries.sh:1.5 *** m3/pm3/language/modula3/m3compiler/m3export/src/dobinaries.sh:1.4 Thu Mar 26 16:12:30 1998 --- m3/pm3/language/modula3/m3compiler/m3export/src/dobinaries.sh Thu Apr 9 13:17:26 1998 *************** *** 103,114 **** # if test ${SKIP_UPLOAD} = "F" ! then if test COMPLETED = "T" then ftp -n < EXPORT_DOWNLOAD & "/" & "index.html" in + write("",CR,"",CR, + "Downloading Polytechnique Montreal Modula-3",CR, + "",CR,"",CR, + "

Downloading Polytechnique Montreal Modula-3

",CR) + + if currentVersionExists + write("

Previous version: ", + VersionName(currentVersion),"",CR) + end + + write("

Latest version: ", + VersionName(version),"",CR) + write("",CR,"",CR) + end + + % Write the html file for the latest version + + > EXPORT_DOWNLOAD & "/" & VersionName(version) & ".html" in + write("",CR,"",CR,"Downloading " & + VersionName(version) & "",CR, + "",CR,"",CR,"

Downloading " & + VersionName(version) & "

",CR) + + write("

You may download the source code and compile everything",CR, + "yourself, provided that you have a previous version of the",CR, + "Modula-3 compiler installed, since everything is in Modula-3.",CR, + "Alternatively, you may download the source and a platform",CR, + "dependent bootstrap package (containing the ready to assemble and",CR, + "link assembly files for the compiler). If you need the source",CR, + "and bootstrap for several platforms, you may download the source",CR, + "and bootstrap for the first one, and the bootstrap only for the",CR, + "others. Finally, for some",CR, + "platforms, you may directly use the provided pre-compiled binaries.", + CR) + + write("

Source code only (requires a Modula-3 compiler): ", + "",VersionName(version) & "-src.tgz","",CR) + + write("

",CR) + foreach platform in Platforms + if Platforms{platform}[3] + write("
",platform,"
Source and bootstrap ",VersionName(version) & "-src-" & platform & "-boot.tgz", + "",", bootstrap only ",VersionName(version) & "-" & platform & "-boot.tgz", + "",CR) + if Binaries contains platform + write(", binaries ",VersionName(version) & "-" & platform & "-bin.tgz", + "",CR) + end + end + end + write("
",CR) + + write("",CR,"",CR) + end + end + + readonly proc DownloadQuery(vname,src,platform,boot,bin) is + local res = DOWNLOAD_SCRIPT & "/" & vname + local query = "?version=" & vname & "&platform=" & platform + + if src + res = res & "-src" + query = query & "&pkg=on" + else + query = query & "&pkg=off" + end + + if boot or bin + res = res & "-" & platform + end + + if boot + res = res & "-boot" + query = query & "&bootstrap=on" + else + query = query & "&bootstrap=off" + end + + if bin + res = res & "-bin" + query = query & "&binaries=on" + else + query = query & "&binaries=off" + end + + return res & ".tgz" & query + end + + % + % Build an up to date ASCII and Postscript version of the FAQ + % + + readonly proc BuildFAQ() is + local dir = EXPORT_TMP_TMP & "/" & versionName & "/" & "intro" + local ret = Exec(["mkdir",dir & "/" & TARGET],[],"") + + > dir & "/" & TARGET & "/" & "config.tmpl" in + write("M3DOC_PREFIX=[\"" & EXPORT_TMP_TMP & "/" & versionName & + "\",\"" & PM3_WEB & "\"]",CR) + end + CheckExec(["m3build","-DBUILD_FAQ","-F",dir & "/" & TARGET & "/" & + "config.tmpl"],[],dir,"build postscript FAQ failed") + + >> dir & "/" & TARGET & "/" & "config.tmpl" in + write("PLATFORM_SUPPORTS_LATEX=\"\"",CR) + end + CheckExec(["m3build","-DBUILD_FAQ","-F",dir & "/" & TARGET & "/" & + "config.tmpl"],[],dir,"build ASCII FAQ failed") + + CheckExec(["lynx","-dump",dir & "/" & TARGET & "/" & "questions_r.html"], + ["",dir & "/" & TARGET & "/" & "questions.txt",""],dir, + "failed to convert FAQ to ASCII") + CheckExec(["cp",dir & "/" & TARGET & "/" & "questions.ps", + EXPORT_ROOT & "/" & "faq.ps"],[],dir,"could not copy postscript FAQ") + CheckExec(["cp",dir & "/" & TARGET & "/" & "questions.txt", + EXPORT_ROOT & "/" & "faq.txt"],[],dir,"could not copy ASCII FAQ") + ret = Exec(["rm","-r",TARGET],[],dir) + end + + % % Write the information for the next versions % *************** *** 334,339 **** --- 474,641 ---- end % + % Use the package list to create the CVSsup configuration files + % + + readonly proc BuildCvsup() is + local ret = Exec(["mkdir","sup"],[],"") + + % define a procedure to be called for each package. This procedure + % writes the cvsup file for the package. + + proc PkgInfo(name,subdirectory,subtree,bundle,type,bundleHead,buildPhase, + dependency,buildPlatforms,buildReq,description) is + local ret = Exec(["mkdir","sup/" & name],[],"") + local fname = name + + if equal(subdirectory,".") subdirectory = "" + else subdirectory = subdirectory & "/" + end + + if equal(subtree,"src") + subdirectory = subdirectory & name + fname = "src" + end + + > "sup/" & name & "/files" in + write("upgrade " & fname,CR,"omitany *~",CR,"omitany *.bak",CR, + "omitany *.tar",CR,"omitany *.Z",CR,"omitany *.gz",CR, + "omitany *.tgz",CR,"omitany *.zip",CR) + end + + > "sup/" & name & "/releases" in + write("cvs list=files prefix=/home/cvsroot/m3/pm3/" & + subdirectory," keywordprefix=/home/cvsroot/m3/pm3/" & + subdirectory & " norsync",CR) + end + end + + % The above procedure will be called for each package described in this + % file. + + include("../../../../../src/PACKAGES") + end + + % + % Build the spec file required to produce an RPM file + % + + readonly proc BuildSpec() is + local ret = Exec(["rm","-r","files"],[],"") + ret = Exec(["mkdir","files"],[],"") + local bundles = {} + + > "spec" in + write( + "Name: pm3",CR, + "Version: " & VersionNumber(version),CR, + "Release: 1",CR, + "Group: Development/Languages/Modula3",CR, + "Source: ",versionName,".tgz",CR, + "CopyRight: Open Source, mostly BSD like, some LGPL/GPL",CR, + "Summary: The Polytechnique Montreal Modula-3 distribution",CR, + "%description",CR, + "The Polytechnique Montreal Modula-3 distribution is based on the DEC SRC",CR, + "Modula-3 programming environment.",CR, + CR, + "Modula-3 is a systems programming language that descends from Mesa,",CR, + "Modula-2, Cedar, and Modula-2+. It also resembles its cousins Object",CR, + "Pascal, Oberon, and Euclid.",CR, + CR, + "The goal of Modula-3 is to be as simple and safe as it can be while",CR, + "meeting the needs of modern systems programmers. Instead of exploring new",CR, + "features, they studied the features of the Modula family of languages",CR, + "that have proven themselves in practice and tried to simplify them into",CR, + "a harmonious language. They found that most of the successful features",CR, + "were aimed at one of two main goals: greater robustness, and a simpler,",CR, + "more systematic type system.",CR, + CR, + "Modula-3 retains one of Modula-2's most successful features, the",CR, + "provision for explicit interfaces between modules. It adds objects and",CR, + "classes, exception handling, garbage collection, lightweight processes",CR, + "(or threads), and the isolation of unsafe features.",CR, + CR, + "A large number of platform independant libraries are available for easily",CR, + "constructing distributed, graphical, multi-threaded applications",CR) + end + + proc PkgInfo(name,subdirectory,subtree,bundle,type,bundleHead,buildPhase, + dependency,buildPlatforms,buildReq,description) is + + local m3shipFile = EXPORT_TMP_TMP & "/" & versionName & + "/" & subdirectory & "/" & name & "/" & TARGET & "/.M3SHIP" + + % There is no m3ship file, this package was not built + + if stale(m3shipFile,m3shipFile) return end + + % for each bundle (subpackage), write a section in the spec file + + if bundleHead + >> "spec" in + write("%package ",bundle,CR,"Summary: ",bundle,CR, + "Group: ",subdirectory, + CR,"%description ",bundle,CR,description,CR) + end + end + + % accumulate a list of bundles + + if not bundles contains bundle bundles{bundle} = "" end + + % add the files in this M3 packake to the list of files in the current + % bundle. + + CheckExec(["../src/listfiles.sh", m3shipFile, + EXPORT_TMP_TMP & "/" & versionName & + "/src/../binaries/" & TARGET & + "/" & "usr/local/pm3","/usr"], ["",">>files/"& bundle,""],"", + "failed to list files") + end + + include("../../../../../src/PACKAGES") + + >> "spec" in + write( + "%prep",CR, + "%setup",CR, + "%build",CR, + "make M3OPTIONS=\"-DSETROOT=/usr\"",CR, + "%install",CR, + "make nothing",CR) + end + + foreach i in bundles + >> "spec" in + write("%files ",i,CR) + end + CheckExec(["cat","files/" & i],["",">>spec",""],"", + "failed to cat list") + end + end + + % + % Use the spec file to create an rpm file + % + + proc BuildRPM() is + local dir = EXPORT_TMP_TMP & "/" & versionName & "/" & "rpm" + local ret = Exec(["rm","-r",dir],[],"") + CheckExec(["mkdir",dir],[],"","mkdir failed") + CheckExec(["webcat", "-noProxy", "m3.polymtl.ca", + "http://m3.polymtl.ca/m3htbin/pm3download/" & + versionName & "-src-LINUXELF-boot.tgz?version=" & + versionName & "&platform=" & TARGET & "&pkg=on&bootstrap=on&" & + "binaries=off"], + ["","/usr/src/redhat/SOURCES" & "/" & versionName & ".tgz",""], + dir,"download pm3 failed") + CheckExec(["cp","spec",dir & "/" & versionName & ".spec"],[],"", + "copy spec failed") + CheckExec(["rpm","-ba",versionName & ".spec"], + ["",dir & "/out.tmp",dir & "/err.tmp"],dir, "building rpm failed") + end + + % % The processing begins here. % *************** *** 361,367 **** CheckExec(["mv", "boot-" & TARGET, "Makefile",path_of("../../../../..")], [], "../../m3bootstrap/" & TARGET & "/pm3-" & TARGET, "move bootstrap to build binaries failed") ! CheckExec(["make","exportall"], ["","make.stdout","make.stderr"], path_of("../../../../.."),"building bootstrap failed") return exit(1) --- 663,670 ---- CheckExec(["mv", "boot-" & TARGET, "Makefile",path_of("../../../../..")], [], "../../m3bootstrap/" & TARGET & "/pm3-" & TARGET, "move bootstrap to build binaries failed") ! CheckExec(["make","exportall","M3OPTIONS=" & M3MAKEOPTIONS], ! ["","make.stdout","make.stderr"], path_of("../../../../.."),"building bootstrap failed") return exit(1) *************** *** 444,455 **** end if DoStep("makeExportall") ! CheckExec(["make","exportall"], ["", EXPORT_TMP_TMP & "/" & versionName & "/" & "make.stdout", EXPORT_TMP_TMP & "/" & versionName & "/" & "make.stderr"], EXPORT_TMP_TMP & "/" & versionName,"building bootstrap failed") end % % Move the binaries to their correct location % --- 747,767 ---- end if DoStep("makeExportall") ! CheckExec(["make","exportall","M3OPTIONS=-DBUILD_ALL -DSHIP_ALL"], ["", EXPORT_TMP_TMP & "/" & versionName & "/" & "make.stdout", EXPORT_TMP_TMP & "/" & versionName & "/" & "make.stderr"], EXPORT_TMP_TMP & "/" & versionName,"building bootstrap failed") end + if DoStep("BuildSpec") + BuildSpec() + end + + if DoStep("makeClean") + CheckExec(["make","clean"], [], EXPORT_TMP_TMP & "/" & versionName, + "cleaning bootstrap failed") + end + % % Move the binaries to their correct location % *************** *** 476,482 **** --- 788,811 ---- InstallNextVersion() end + if DoStep("DownloadMenu") + DownloadMenu() + end + + if DoStep("BuildFAQ") + BuildFAQ() + end + + if DoStep("BuildCvsup") + BuildCvsup() + end + + if DoStep("BuildRPM") + BuildRPM() + end + if DoStep("UpdateVersionNumbers") UpdateVersionNumbers() end + error("Finished export",CR) Index: m3/pm3/language/modula3/m3compiler/m3export/src/mvbinaries.sh diff -c m3/pm3/language/modula3/m3compiler/m3export/src/mvbinaries.sh:1.2 m3/pm3/language/modula3/m3compiler/m3export/src/mvbinaries.sh:1.3 *** m3/pm3/language/modula3/m3compiler/m3export/src/mvbinaries.sh:1.2 Sat Jan 17 11:50:34 1998 --- m3/pm3/language/modula3/m3compiler/m3export/src/mvbinaries.sh Thu Apr 9 13:17:27 1998 *************** *** 3,19 **** EXPORT_TMP_BINARIES="/home/ftp/tmp/pm3/binaries" EXPORT_TMP_BOOTSTRAP="/home/ftp/tmp/pm3/bootstrap" EXPORT_BINARIES="/home/ftp/pub/m3/binaries" ! cd EXPORT_TMP_BINARIES for i in * ! do if test -f ${i}/DONE -a test -f ${EXPORT_TMP_BOOTSTRAP}/${i}/TODO \ ! -a `cat ${i}/DONE` = `cat ${EXPORT_TMP_BOOTSTRAP}/${i}/TODO` \ ! -a test -f ${i}/`cat ${i}/DONE`.tgz ! then (cd ${i}; tar -z -x -p --exclude '/*' --exclude '*../*' \ --exclude '*/..*' -f `cat DONE`.tgz) ! mv ${i}/`cat ${i}/DONE` ${EXPORT_BINARIES}/${i} ! rm ${EXPORT_TMP_BOOTSTRAP}/${i}/TODO ! rm ${i}/`cat ${i}/DONE`.tgz ! rm ${i}/DONE fi done --- 3,20 ---- EXPORT_TMP_BINARIES="/home/ftp/tmp/pm3/binaries" EXPORT_TMP_BOOTSTRAP="/home/ftp/tmp/pm3/bootstrap" EXPORT_BINARIES="/home/ftp/pub/m3/binaries" ! cd ${EXPORT_TMP_BINARIES} for i in * ! do if test -f ${i}/DONE -a -f ${EXPORT_TMP_BOOTSTRAP}/${i}/TODO ! then if test `cat ${i}/DONE` = `cat ${EXPORT_TMP_BOOTSTRAP}/${i}/TODO` \ ! -a -f ${i}/`cat ${i}/DONE`.tgz ! then (cd ${i}; tar -z -x -p --exclude '/*' --exclude '*../*' \ --exclude '*/..*' -f `cat DONE`.tgz) ! mv ${i}/`cat ${i}/DONE` ${EXPORT_BINARIES}/${i} ! rm ${EXPORT_TMP_BOOTSTRAP}/${i}/TODO ! rm ${i}/`cat ${i}/DONE`.tgz ! rm ${i}/DONE ! fi fi done Index: m3/pm3/language/modula3/m3tools/m3gdb/gdb/gdb/solib.c diff -c m3/pm3/language/modula3/m3tools/m3gdb/gdb/gdb/solib.c:1.1.1.1 m3/pm3/language/modula3/m3tools/m3gdb/gdb/gdb/solib.c:1.2 *** m3/pm3/language/modula3/m3tools/m3gdb/gdb/gdb/solib.c:1.1.1.1 Tue Feb 11 11:04:40 1997 --- m3/pm3/language/modula3/m3tools/m3gdb/gdb/gdb/solib.c Tue Mar 31 11:54:55 1998 *************** *** 67,72 **** --- 67,73 ---- #ifdef SVR4_SHARED_LIBS static char *solib_break_names[] = { + "rtld_db_dlactivity", "r_debug_state", "_r_debug_state", "_dl_debug_state", Index: m3/pm3/libs/libm3/src/os/WIN32/ProcessWin32.m3 diff -c m3/pm3/libs/libm3/src/os/WIN32/ProcessWin32.m3:1.1.1.1 m3/pm3/libs/libm3/src/os/WIN32/ProcessWin32.m3:1.2 *** m3/pm3/libs/libm3/src/os/WIN32/ProcessWin32.m3:1.1.1.1 Thu Jan 16 16:30:16 1997 --- m3/pm3/libs/libm3/src/os/WIN32/ProcessWin32.m3 Thu Apr 9 13:19:56 1998 *************** *** 175,181 **** BEGIN RETURN LOOPHOLE(p.info.hProcess, ID) END GetID; PROCEDURE GetMyID(): ID = ! BEGIN RETURN LOOPHOLE(WinBase.GetCurrentProcess(), ID) END GetMyID; VAR stdin_g := GetFileHandle(WinBase.STD_INPUT_HANDLE, FileWin32.Read); --- 175,181 ---- BEGIN RETURN LOOPHOLE(p.info.hProcess, ID) END GetID; PROCEDURE GetMyID(): ID = ! BEGIN RETURN LOOPHOLE(WinBase.GetCurrentProcessId(), ID) END GetMyID; VAR stdin_g := GetFileHandle(WinBase.STD_INPUT_HANDLE, FileWin32.Read); Index: m3/pm3/src/m3makefile diff -c m3/pm3/src/m3makefile:1.19 m3/pm3/src/m3makefile:1.20 *** m3/pm3/src/m3makefile:1.19 Thu Mar 26 16:15:55 1998 --- m3/pm3/src/m3makefile Thu Apr 9 13:18:40 1998 *************** *** 8,15 **** % % When BOOTSTRAP is true, m3build and m3ship are taken from the "boot" ! % directory. If EXPORTPATH or EXPORTRPATH are set, the binaries are ! % shipped in the absolute or relative path specified. % local currentPhase = 1 --- 8,33 ---- % % When BOOTSTRAP is true, m3build and m3ship are taken from the "boot" ! % directory. ! % ! % If EXPORTPATH or EXPORTRPATH are set, the binaries are ! % shipped in the absolute or relative path specified, even though ! % eventually the binaries will be used from the default path. ! % ! % If SETROOT is set, the binaries are built and shipped with the INSTALL_ROOT ! % specified. ! % ! % If BUILD_ALL is set, all the packages are built without being shipped. ! % ! % If SHIP_ALL is set, all the packages are shipped, assuming that they were ! % previously built. ! % ! % If CLEAN_ALL is set, the derived files are removed. ! % ! % By default, each package is built, shipped and cleaned before passing to ! % the next. Doing all the build, then all the ship, then all the clean ! % requires all the derived files to be kept in the intermediate steps ! % which eats up a LOT of disk space. % local currentPhase = 1 *************** *** 67,72 **** --- 85,119 ---- end end + if defined("SETROOT") + >> "config.tmpl" in + write("INSTALL_ROOT = \"" & escape(SETROOT) & "\"",CR) + write("setInstallRoot(\"\",\"\")",CR) + end + end + + if defined("BUILD_ALL") or defined("SHIP_ALL") or defined("CLEAN_ALL") + doBuild = "" + doShip = "" + doClean = "" + else + doBuild = "T" + doShip = "T" + doClean = "T" + end + + if defined("BUILD_ALL") + doBuild = "T" + end + + if defined("SHIP_ALL") + doShip = "T" + end + + if defined("CLEAN_ALL") + doClean = "T" + end + readonly proc BuildChunk (dir,pkg) is local ret = 0 local cmd = [m3build] *************** *** 78,84 **** if not stale (pkg, pkg) % we've already built this chunk write ("-- ", pkg, " done --", CR) ! %ret = exec ([ "rm", "-rf", BUILD_DIR] , [], wd) return end --- 125,133 ---- if not stale (pkg, pkg) % we've already built this chunk write ("-- ", pkg, " done --", CR) ! if doClean ! ret = exec ([ "rm", "-rf", BUILD_DIR] , [], wd) ! end return end *************** *** 94,110 **** if firstPhase cmd += "-DUSE_M3DOC=" end % build and ship the chunk ! write(cmd, CR) ! ret = exec (cmd, [], wd) ! if not equal(ret, 0) error ("m3build failed with error code: ", ret) end ! write(m3ship, CR) ! ret = exec (m3ship, [], wd) ! if not equal(ret, 0) error ("m3ship failed with error code: ", ret) end if not firstPhase ! % If you don't want to delete derived objects as soon as they are ! % installed, comment out the following line. ! ret = exec ([ "rm", "-rf", BUILD_DIR] , [], wd) % remember that we've built this chunk ret = exec (["touch", pkg]) --- 143,164 ---- if firstPhase cmd += "-DUSE_M3DOC=" end % build and ship the chunk ! if doBuild ! write(cmd, CR) ! ret = exec (cmd, [], wd) ! if not equal(ret, 0) error ("m3build failed with error code: ", ret) end ! end ! ! if doShip ! write(m3ship, CR) ! ret = exec (m3ship, [], wd) ! if not equal(ret, 0) error ("m3ship failed with error code: ", ret) end ! end if not firstPhase ! if doClean ! ret = exec ([ "rm", "-rf", BUILD_DIR] , [], wd) ! end % remember that we've built this chunk ret = exec (["touch", pkg]) *************** *** 156,195 **** % Build the remaining packages currentPhase = 3 include("PACKAGES") - - % Use the package list to create the CVSsup configuration files - - if defined("BUILD_CVSUP_FILES") - ret = exec(["mkdir","sup"]) - - proc PkgInfo(name,subdirectory,subtree,bundle,type,bundleHead,buildPhase, - dependency,buildPlatforms,buildReq,description) is - local ret = exec(["mkdir","sup/" & name]) - local fname = name - - if equal(subdirectory,".") subdirectory = "" - else subdirectory = subdirectory & "/" - end - - if equal(subtree,"src") - subdirectory = subdirectory & name - fname = "src" - end - - > "sup/" & name & "/files" in - write("upgrade " & fname,CR,"omitany *~",CR,"omitany *.bak",CR, - "omitany *.tar",CR,"omitany *.Z",CR,"omitany *.gz",CR, - "omitany *.tgz",CR,"omitany *.zip",CR) - end - - > "sub/" & name & "/releases" in - write("cvs list=files prefix=/home/cvsroot/m3/pm3/" & - subdirectory," keywordprefix=/home/cvsroot/m3/pm3/" & - subdirectory & " norsync",CR) - end - end - - include("PACKAGES") - end OtherPackage("pm3") --- 210,214 ---- Index: m3/pm3/text/sgmltools/m3doc/src/m3doc.tmpl diff -c m3/pm3/text/sgmltools/m3doc/src/m3doc.tmpl:1.5 m3/pm3/text/sgmltools/m3doc/src/m3doc.tmpl:1.6 *** m3/pm3/text/sgmltools/m3doc/src/m3doc.tmpl:1.5 Thu Feb 26 11:39:39 1998 --- m3/pm3/text/sgmltools/m3doc/src/m3doc.tmpl Thu Apr 9 13:18:14 1998 *************** *** 117,125 **** local tmp6 = nm & ".idx" local tmp7 = nm & ".ind" local tmp8 = nm & ".ilg" ! checkExec([BIN_USE & SL & "sgmllinear", "-html", "-f", ".i3", m3Sgml, "-f", ".ig", m3Sgml, "-f", ".m3", m3Sgml, ! "-f", ".mg", m3Sgml, "-dtd", dtdDir, src_file, tmp1],[],"") if PLATFORM_SUPPORTS_LATEX checkExec([BIN_USE & SL & "sgmlconv", "-report", "-htmltex", "-dtd", dtdDir, tmp1,tmp2], [],"") --- 117,130 ---- local tmp6 = nm & ".idx" local tmp7 = nm & ".ind" local tmp8 = nm & ".ilg" ! local linearCmd = [BIN_USE & SL & "sgmllinear", "-html", "-f", ".i3", m3Sgml, "-f", ".ig", m3Sgml, "-f", ".m3", m3Sgml, ! "-f", ".mg", m3Sgml, "-dtd", dtdDir, src_file, tmp1] ! ! if defined("M3DOC_PREFIX") linearCmd += ["-prefix",M3DOC_PREFIX] end ! ! checkExec(linearCmd,[],"") ! if PLATFORM_SUPPORTS_LATEX checkExec([BIN_USE & SL & "sgmlconv", "-report", "-htmltex", "-dtd", dtdDir, tmp1,tmp2], [],"") Index: m3/pm3/text/sgmltools/sgmlconv/src/Main.m3 diff -c m3/pm3/text/sgmltools/sgmlconv/src/Main.m3:1.3 m3/pm3/text/sgmltools/sgmlconv/src/Main.m3:1.4 *** m3/pm3/text/sgmltools/sgmlconv/src/Main.m3:1.3 Tue Feb 10 22:41:48 1998 --- m3/pm3/text/sgmltools/sgmlconv/src/Main.m3 Thu Apr 9 13:18:16 1998 *************** *** 863,869 **** ELSE Wr.PutText(wr," "); END; | 191..255 => ! Wr.PutText(wr,IsoLatinTbl[ORD(c) - 161]); | 161 => Wr.PutText(wr,"!`"); | 162 => Wr.PutText(wr,"c\\llap/"); --- 863,869 ---- ELSE Wr.PutText(wr," "); END; | 191..255 => ! Wr.PutText(wr,IsoLatinTbl[car - 191]); | 161 => Wr.PutText(wr,"!`"); | 162 => Wr.PutText(wr,"c\\llap/"); Index: m3/pm3/text/sgmltools/sgmllinear/src/Main.m3 diff -c m3/pm3/text/sgmltools/sgmllinear/src/Main.m3:1.2 m3/pm3/text/sgmltools/sgmllinear/src/Main.m3:1.3 *** m3/pm3/text/sgmltools/sgmllinear/src/Main.m3:1.2 Thu Jan 29 10:32:11 1998 --- m3/pm3/text/sgmltools/sgmllinear/src/Main.m3 Thu Apr 9 13:18:18 1998 *************** *** 381,391 **** pos := Text.FindChar(link,':'); BEGIN (* We have a full url like http://xxxxx. We assume that it is canonical ! and no processing is required. *) ! IF (pos > 0) AND (Text.Length(link) > pos + 2) AND ! (Text.GetChar(link,pos + 1) = '/') AND ! (Text.GetChar(link,pos + 2) = '/') THEN RETURN link; END; --- 381,395 ---- pos := Text.FindChar(link,':'); BEGIN (* We have a full url like http://xxxxx. We assume that it is canonical ! and no processing is required. Should we use a more complex ! condition like the following... that would tolerate a ':' in a file ! name but would miss things like mailto:joe@m3.org ! (Text.Length(link) > pos + 2) AND ! (Text.GetChar(link,pos + 1) = '/') AND ! (Text.GetChar(link,pos + 2) = '/') *) ! ! IF (pos > 0) THEN RETURN link; END;