diff options
Diffstat (limited to 'shar')
| -rw-r--r-- | shar/README.md | 29 | ||||
| -rw-r--r-- | shar/compile.patch | 390 |
2 files changed, 419 insertions, 0 deletions
diff --git a/shar/README.md b/shar/README.md new file mode 100644 index 0000000..7a97c8c --- /dev/null +++ b/shar/README.md @@ -0,0 +1,29 @@ +Notes on building Python 0.9.1 +============================== + +A note to [email protected] referred us to Guido's 0.9.1 release as +a set of shell archive files posted to alt.sources: + +https://groups.google.com/g/alt.sources/search?q=%22python%200.9.1%22 + +I downloaded them as well as a single patch. I then made a few edits +to get the interpreter to build. The shar files as well as a single +patch file Guido posted are in this directory. Note the missing +part 02. As Guido explained: + +> In case anyone wondered where the real part 02 is, it isn't needed. +> It contained a generated file of 151K that shouldn't be in the +> distribution, and I cancelled it. +> -- +> Guido van Rossum, CWI, Amsterdam <[email protected]> +> "PS I have never kissed the editor of the Radio Times" + +(I have no idea what is going on in Guido's .sig. You will have to ask +him. <wink>) + +The patch didn't apply for me (structural issues), so I just applied +its edits manually. I then set about getting the interpreter to +compile. That was pretty straightforward. The result is in +compile.patch in this directory. + +-- Skip Montanaro - 2021-02-16 diff --git a/shar/compile.patch b/shar/compile.patch new file mode 100644 index 0000000..e15642c --- /dev/null +++ b/shar/compile.patch @@ -0,0 +1,390 @@ +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..6d0fbd0 +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,4 @@ ++*.o ++*.a ++python ++*~ +diff --git a/src/Makefile b/src/Makefile +index d47eceb..3811b77 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -86,8 +86,8 @@ DEFPYTHONPATH= .:/usr/local/lib/python:/ufs/guido/lib/python:../lib + # is missing in most systems I have encountered, so it is turned on + # in the Makefile. Turn it off if your system doesn't have sys_errlist.) + +-STRERROR_SRC= strerror.c +-STRERROR_OBJ= strerror.o ++# STRERROR_SRC= strerror.c ++# STRERROR_OBJ= strerror.o + + # If your BSD system does not have a fmod() function in the library, + # uncomment the following two lines to use one I wrote. +@@ -317,83 +317,82 @@ STRERROR_OBJ= strerror.o + # ================= + + STANDARD_OBJ= acceler.o bltinmodule.o ceval.o classobject.o \ +- compile.o dictobject.o errors.o fgetsintr.o \ +- fileobject.o floatobject.o $(FMOD_OBJ) frameobject.o \ +- funcobject.o $(GETCWD_OBJ) \ +- graminit.o grammar1.o import.o \ +- intobject.o intrcheck.o listnode.o listobject.o \ +- mathmodule.o methodobject.o modsupport.o \ +- moduleobject.o node.o object.o parser.o \ +- parsetok.o posixmodule.o regexp.o regexpmodule.o \ +- strdup.o $(STRERROR_OBJ) \ +- stringobject.o $(STRTOL_OBJ) structmember.o \ +- sysmodule.o timemodule.o tokenizer.o traceback.o \ +- tupleobject.o typeobject.o ++ compile.o dictobject.o errors.o fgetsintr.o \ ++ fileobject.o floatobject.o $(FMOD_OBJ) frameobject.o \ ++ funcobject.o $(GETCWD_OBJ) \ ++ graminit.o grammar1.o import.o \ ++ intobject.o intrcheck.o listnode.o listobject.o \ ++ mathmodule.o methodobject.o modsupport.o \ ++ moduleobject.o node.o object.o parser.o \ ++ parsetok.o posixmodule.o regexp.o regexpmodule.o \ ++ strdup.o $(STRERROR_OBJ) \ ++ stringobject.o $(STRTOL_OBJ) structmember.o \ ++ sysmodule.o timemodule.o tokenizer.o traceback.o \ ++ tupleobject.o typeobject.o + + STANDARD_SRC= acceler.c bltinmodule.c ceval.c classobject.c \ +- compile.c dictobject.c errors.c fgetsintr.c \ +- fileobject.c floatobject.c $(FMOD_SRC) frameobject.c \ +- funcobject.c $(GETCWD_SRC) \ +- graminit.c grammar1.c import.c \ +- intobject.c intrcheck.c listnode.c listobject.c \ +- mathmodule.c methodobject.c modsupport.c \ +- moduleobject.c node.c object.c parser.c \ +- parsetok.c posixmodule.c regexp.c regexpmodule.c \ +- strdup.c $(STRERROR_SRC) \ +- stringobject.c $(STRTOL_SRC) structmember.c \ +- sysmodule.c timemodule.c tokenizer.c traceback.c \ +- tupleobject.c typeobject.c ++ compile.c dictobject.c errors.c fgetsintr.c \ ++ fileobject.c floatobject.c $(FMOD_SRC) frameobject.c \ ++ funcobject.c $(GETCWD_SRC) \ ++ graminit.c grammar1.c import.c \ ++ intobject.c intrcheck.c listnode.c listobject.c \ ++ mathmodule.c methodobject.c modsupport.c \ ++ moduleobject.c node.c object.c parser.c \ ++ parsetok.c posixmodule.c regexp.c regexpmodule.c \ ++ strdup.c $(STRERROR_SRC) \ ++ stringobject.c $(STRTOL_SRC) structmember.c \ ++ sysmodule.c timemodule.c tokenizer.c traceback.c \ ++ tupleobject.c typeobject.c + + CONFIGDEFS= $(STDW_USE) $(AM_USE) $(AUDIO_USE) $(GL_USE) $(PANEL_USE) \ +- '-DPYTHONPATH="$(DEFPYTHONPATH)"' ++ '-DPYTHONPATH="$(DEFPYTHONPATH)"' + + CONFIGINCLS= $(STDW_INCL) + + LIBDEPS= libpython.a $(STDW_LIBDEPS) $(AM_LIBDEPS) \ +- $(GL_LIBDEPS) $(PANEL_LIBSDEP) $(RL_LIBDEPS) ++ $(GL_LIBDEPS) $(PANEL_LIBSDEP) $(RL_LIBDEPS) + + # NB: the ordering of items in LIBS is significant! + LIBS= libpython.a $(STDW_LIBS) $(AM_LIBS) \ +- $(PANEL_LIBS) $(GL_LIBS) $(RL_LIBS) -lm ++ $(PANEL_LIBS) $(GL_LIBS) $(RL_LIBS) -lm + + LIBOBJECTS= $(STANDARD_OBJ) $(STDW_OBJ) $(AM_OBJ) $(AUDIO_OBJ) \ +- $(GL_OBJ) $(PANEL_OBJ) ++ $(GL_OBJ) $(PANEL_OBJ) + + LIBSOURCES= $(STANDARD_SRC) $(STDW_SRC) $(AM_SRC) $(AUDIO_SRC) \ +- $(GL_SRC) $(PANEL_SRC) ++ $(GL_SRC) $(PANEL_SRC) + + OBJECTS= pythonmain.o config.o + + SOURCES= $(LIBSOURCES) pythonmain.c config.c + + GENOBJECTS= acceler.o fgetsintr.o grammar1.o \ +- intrcheck.o listnode.o node.o parser.o \ +- parsetok.o strdup.o tokenizer.o bitset.o \ +- firstsets.o grammar.o metagrammar.o pgen.o \ +- pgenmain.o printgrammar.o ++ intrcheck.o listnode.o node.o parser.o \ ++ parsetok.o strdup.o tokenizer.o bitset.o \ ++ firstsets.o grammar.o metagrammar.o pgen.o \ ++ pgenmain.o printgrammar.o + + GENSOURCES= acceler.c fgetsintr.c grammar1.c \ +- intrcheck.c listnode.c node.c parser.c \ +- parsetok.c strdup.c tokenizer.c bitset.c \ +- firstsets.c grammar.c metagrammar.c pgen.c \ +- pgenmain.c printgrammar.c ++ intrcheck.c listnode.c node.c parser.c \ ++ parsetok.c strdup.c tokenizer.c bitset.c \ ++ firstsets.c grammar.c metagrammar.c pgen.c \ ++ pgenmain.c printgrammar.c + + + # Main Targets + # ============ + + python: libpython.a $(OBJECTS) $(LIBDEPS) Makefile +- $(CC) $(CFLAGS) $(OBJECTS) $(LIBS) -o @python +- mv @python python ++ $(CC) $(CFLAGS) $(OBJECTS) $(LIBS) -o python + + libpython.a: $(LIBOBJECTS) +- -rm -f @lib +- ar cr @lib $(LIBOBJECTS) +- $(RANLIB) @lib +- mv @lib libpython.a ++ -rm -f @lib ++ ar cr @lib $(LIBOBJECTS) ++ $(RANLIB) @lib ++ mv @lib libpython.a + + python_gen: $(GENOBJECTS) $(RL_LIBDEPS) +- $(CC) $(CFLAGS) $(GENOBJECTS) $(RL_LIBS) -o python_gen ++ $(CC) $(CFLAGS) $(GENOBJECTS) $(RL_LIBS) -o python_gen + + + # Utility Targets +@@ -405,15 +404,15 @@ python_gen: $(GENOBJECTS) $(RL_LIBDEPS) + LINTFLAGS= -h + + LINTCPPFLAGS= $(CONFIGDEFS) $(CONFIGINCLS) $(SYSVDEF) \ +- $(AM_INCL) $(PANEL_INCL) ++ $(AM_INCL) $(PANEL_INCL) + + LINT= lint + + lint:: $(SOURCES) +- $(LINT) $(LINTFLAGS) $(LINTCPPFLAGS) $(SOURCES) ++ $(LINT) $(LINTFLAGS) $(LINTCPPFLAGS) $(SOURCES) + + lint:: $(GENSOURCES) +- $(LINT) $(LINTFLAGS) $(GENSOURCES) ++ $(LINT) $(LINTFLAGS) $(GENSOURCES) + + # Generating dependencies is only necessary if you intend to hack Python. + # You may change $(MKDEP) to your favorite dependency generator (it should +@@ -422,7 +421,7 @@ lint:: $(GENSOURCES) + MKDEP= mkdep + + depend:: +- $(MKDEP) $(LINTCPPFLAGS) $(SOURCES) $(GENSOURCES) ++ $(MKDEP) $(LINTCPPFLAGS) $(SOURCES) $(GENSOURCES) + + # You may change $(CTAGS) to suit your taste... + +@@ -431,13 +430,13 @@ CTAGS= ctags -t -w + HEADERS= *.h + + tags: $(SOURCES) $(GENSOURCES) $(HEADERS) +- $(CTAGS) $(SOURCES) $(GENSOURCES) $(HEADERS) ++ $(CTAGS) $(SOURCES) $(GENSOURCES) $(HEADERS) + + clean:: +- -rm -f *.o core [,#@]* ++ -rm -f *.o core [,#@]* + + clobber:: clean +- -rm -f python python_gen libpython.a tags ++ -rm -f python python_gen libpython.a tags + + + # Build Special Objects +@@ -448,37 +447,37 @@ clobber:: clean + COMPILE= $(CC) -c $(CFLAGS) + + amoebamodule.o: amoebamodule.c +- $(COMPILE) $(AM_INCL) $*.c ++ $(COMPILE) $(AM_INCL) $*.c + + config.o: config.c Makefile +- $(COMPILE) $(CONFIGDEFS) $(CONFIGINCLS) $*.c ++ $(COMPILE) $(CONFIGDEFS) $(CONFIGINCLS) $*.c + + fgetsintr.o: fgetsintr.c +- $(COMPILE) $(SIGTYPEDEF) $*.c ++ $(COMPILE) $(SIGTYPEDEF) $*.c + + intrcheck.o: intrcheck.c +- $(COMPILE) $(SIGTYPEDEF) $*.c ++ $(COMPILE) $(SIGTYPEDEF) $*.c + + panelmodule.o: panelmodule.c +- $(COMPILE) $(PANEL_INCL) $*.c ++ $(COMPILE) $(PANEL_INCL) $*.c + + posixmodule.o: posixmodule.c +- $(COMPILE) $(SYSVDEF) $(NOSYMLINKDEF) $*.c ++ $(COMPILE) $(SYSVDEF) $(NOSYMLINKDEF) $*.c + + sc_interpr.o: sc_interpr.c +- $(COMPILE) $(AM_INCL) $*.c ++ $(COMPILE) $(AM_INCL) $*.c + + sc_error.o: sc_error.c +- $(COMPILE) $(AM_INCL) $*.c ++ $(COMPILE) $(AM_INCL) $*.c + + stdwinmodule.o: stdwinmodule.c +- $(COMPILE) $(STDW_INCL) $*.c ++ $(COMPILE) $(STDW_INCL) $*.c + + timemodule.o: timemodule.c +- $(COMPILE) $(SIGTYPEDEF) $(BSDTIMEDEF) $*.c ++ $(COMPILE) $(SIGTYPEDEF) $(BSDTIMEDEF) $*.c + + tokenizer.o: tokenizer.c +- $(COMPILE) $(RL_USE) $*.c ++ $(COMPILE) $(RL_USE) $*.c + + .PRECIOUS: python libpython.a glmodule.c graminit.c graminit.h + +@@ -497,8 +496,8 @@ tokenizer.o: tokenizer.c + # Also ignore the warnings emitted while compiling glmodule.c; it works. + + glmodule.c: cstubs cgen +- python cgen <cstubs >@glmodule.c +- mv @glmodule.c glmodule.c ++ python cgen <cstubs >@glmodule.c ++ mv @glmodule.c glmodule.c + + # The dependencies for graminit.[ch] are not turned on in the + # distributed Makefile because the files themselves are distributed. +diff --git a/src/allobjects.h b/src/allobjects.h +index b6b487b..fe46f54 100644 +--- a/src/allobjects.h ++++ b/src/allobjects.h +@@ -26,6 +26,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + #include <stdio.h> + #include <string.h> ++#include <stdlib.h> + + #include "PROTO.h" + +diff --git a/src/import.c b/src/import.c +index d461007..59ea07e 100644 +--- a/src/import.c ++++ b/src/import.c +@@ -167,6 +167,8 @@ load_module(name) + return m; + } + ++static int init_builtin(char *name); ++ + object * + import_module(name) + char *name; +diff --git a/src/listobject.c b/src/listobject.c +index be1382c..9a32eac 100644 +--- a/src/listobject.c ++++ b/src/listobject.c +@@ -25,6 +25,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + /* List object implementation */ + + #include "allobjects.h" ++#include "modsupport.h" + + object * + newlistobject(size) +@@ -318,24 +319,6 @@ list_concat(a, bb) + #undef b + } + +-static int +-list_ass_item(a, i, v) +- listobject *a; +- int i; +- object *v; +-{ +- if (i < 0 || i >= a->ob_size) { +- err_setstr(IndexError, "list assignment index out of range"); +- return -1; +- } +- if (v == NULL) +- return list_ass_slice(a, i, i+1, v); +- INCREF(v); +- DECREF(a->ob_item[i]); +- a->ob_item[i] = v; +- return 0; +-} +- + static int + list_ass_slice(a, ilow, ihigh, v) + listobject *a; +@@ -400,6 +383,24 @@ list_ass_slice(a, ilow, ihigh, v) + #undef b + } + ++static int ++list_ass_item(a, i, v) ++ listobject *a; ++ int i; ++ object *v; ++{ ++ if (i < 0 || i >= a->ob_size) { ++ err_setstr(IndexError, "list assignment index out of range"); ++ return -1; ++ } ++ if (v == NULL) ++ return list_ass_slice(a, i, i+1, v); ++ INCREF(v); ++ DECREF(a->ob_item[i]); ++ a->ob_item[i] = v; ++ return 0; ++} ++ + static object * + ins(self, where, v) + listobject *self; +diff --git a/src/malloc.h b/src/malloc.h +index c2d9969..de2cc9f 100644 +--- a/src/malloc.h ++++ b/src/malloc.h +@@ -36,6 +36,11 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + #define HAVE_STDLIB + #endif + ++#ifdef __STDC__ ++#define ANY void ++#define HAVE_STDLIB ++#endif ++ + #ifndef ANY + #define ANY char + #endif +diff --git a/src/modsupport.h b/src/modsupport.h +index 843b209..bc9929a 100644 +--- a/src/modsupport.h ++++ b/src/modsupport.h +@@ -25,3 +25,5 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + /* Module support interface */ + + extern object *initmodule PROTO((char *, struct methodlist *)); ++extern int getintarg(object *v, int *a); ++extern void fatal(char *msg); +diff --git a/src/patchlevel.h b/src/patchlevel.h +index d00491f..110c86f 100644 +--- a/src/patchlevel.h ++++ b/src/patchlevel.h +@@ -1 +1 @@ +-1 ++#define PATCHLEVEL 1 +diff --git a/src/regexpmodule.c b/src/regexpmodule.c +index 7c87217..62b22f2 100644 +--- a/src/regexpmodule.c ++++ b/src/regexpmodule.c +@@ -38,7 +38,7 @@ typedef struct { + regexp *re_prog; /* The compiled regular expression */ + } regexpobject; + +-extern typeobject Regexptype; /* Really static, forward */ ++static typeobject Regexptype; + + static regexpobject * + newregexpobject(string, prog) |
