I'm trying to build the VM with a C compiler which does not accept implicit function declarations or implici int.
This is in preparation for a future change in GCC and Clang defaults. More information is here:
https://fedoraproject.org/wiki/Changes/PortingToModernC https://fedoraproject.org/wiki/Toolchain/PortingToModernC
(The second link points to a container image with an instrumented GCC that can be used for experiments, or you can just inject -Werror=implicit-function-declaration -Werror=implicit-int into the build, which has the same results if compiler flags injection works reliably throughout the build environment.)
According to Fedora's records Squeak-4.10.2.2614-src-no-mp3 was downloaded from http://squeakvm.org/unix/release/.
I got passed the first obstacle with these little changes:
diff -ur Squeak-4.10.2.2614-src-no-mp3.orig/Cross/plugins/CroquetPlugin/CroquetPlugin.h Squeak-4.10.2.2614-src-no-mp3/Cross/plugins/CroquetPlugin/CroquetPlugin.h --- Squeak-4.10.2.2614-src-no-mp3.orig/Cross/plugins/CroquetPlugin/CroquetPlugin.h 2006-09-14 19:52:45.000000000 +0200 +++ Squeak-4.10.2.2614-src-no-mp3/Cross/plugins/CroquetPlugin/CroquetPlugin.h 2022-11-29 12:30:00.834158643 +0100 @@ -20,4 +20,6 @@ */ int ioGatherEntropy(char *bufPtr, int bufSize);
+int triBoxOverlap(float *a, float *b, float *c, float *d, float *e); + #endif /* CROQUET_PLUGIN_H */ diff -ur Squeak-4.10.2.2614-src-no-mp3.orig/Cross/plugins/CroquetPlugin/TriBoxStub.c Squeak-4.10.2.2614-src-no-mp3/Cross/plugins/CroquetPlugin/TriBoxStub.c --- Squeak-4.10.2.2614-src-no-mp3.orig/Cross/plugins/CroquetPlugin/TriBoxStub.c 2009-05-26 23:15:18.000000000 +0200 +++ Squeak-4.10.2.2614-src-no-mp3/Cross/plugins/CroquetPlugin/TriBoxStub.c 2022-11-29 12:30:10.184066148 +0100 @@ -1,3 +1,5 @@ +#include "CroquetPlugin.h" + /* a stub for triboxoverlap */ int triBoxOverlap(float *a, float *b, float *c, float *d, float *e) { return 0; diff -ur Squeak-4.10.2.2614-src-no-mp3.orig/Cross/plugins/SerialPlugin/SerialPlugin.h Squeak-4.10.2.2614-src-no-mp3/Cross/plugins/SerialPlugin/SerialPlugin.h --- Squeak-4.10.2.2614-src-no-mp3.orig/Cross/plugins/SerialPlugin/SerialPlugin.h 2009-08-27 03:48:06.000000000 +0200 +++ Squeak-4.10.2.2614-src-no-mp3/Cross/plugins/SerialPlugin/SerialPlugin.h 2022-11-29 13:02:56.418443376 +0100 @@ -6,9 +6,13 @@
#pragma export on int serialPortClose(int portNum); +int serialPortCloseByName(const char *portName); + int serialPortCount(void); int serialPortOpen(int portNum, int baudRate, int stopBitsType, int parityType, int dataBits, int inFlowCtrl, int outFlowCtrl, int xOnChar, int xOffChar); +int serialPortOpenByName(char *portName, int dataRate, int stopBitsType, int parityType, int dataBits, + int inFlowCtrl, int outFlowCtrl, int xOnChar, int xOffChar); int serialPortReadInto(int portNum, int count, void *bufferPtr); int serialPortReadIntoByName(const char *portName, int count, void *bufferPtr); int serialPortWriteFrom(int portNum, int count, void *bufferPtr); diff -ur Squeak-4.10.2.2614-src-no-mp3.orig/unix/plugins/AsynchFilePlugin/sqUnixAsynchFile.c Squeak-4.10.2.2614-src-no-mp3/unix/plugins/AsynchFilePlugin/sqUnixAsynchFile.c --- Squeak-4.10.2.2614-src-no-mp3.orig/unix/plugins/AsynchFilePlugin/sqUnixAsynchFile.c 2006-10-18 19:10:25.000000000 +0200 +++ Squeak-4.10.2.2614-src-no-mp3/unix/plugins/AsynchFilePlugin/sqUnixAsynchFile.c 2022-11-29 12:30:44.062730997 +0100 @@ -142,7 +142,7 @@ return fp; }
-INLINE static allocateBuffer(struct FileBuf *buf, int size) +INLINE static int allocateBuffer(struct FileBuf *buf, int size) { if (buf->capacity >= size) return 1;
A few more changes like these seem to be needed.
But now I'm hitting this error:
…/unix/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:118: implicit function declaration: isBytes
This error is harder to deal with because it seems to be a bug in the code generator. There probably should be a macro definition for isBytes similar to arrayValueOf, like this:
#define isBytes(oop) (interpreterProxy->isBytes(oop))
Otherwise, the global function definition is picked up instead, and that does not seem to be the right pattern.
Thanks, Florian
Hi Florian,
which vm are you trying to build? https://github.com/OpenSmalltalk/opensmalltalk-vm or some other vm?
_,,,^..^,,,_ (phone)
On Nov 29, 2022, at 4:10 AM, Florian Weimer fweimer@redhat.com wrote:
I'm trying to build the VM with a C compiler which does not accept implicit function declarations or implici int.
This is in preparation for a future change in GCC and Clang defaults. More information is here:
https://fedoraproject.org/wiki/Changes/PortingToModernC https://fedoraproject.org/wiki/Toolchain/PortingToModernC
(The second link points to a container image with an instrumented GCC that can be used for experiments, or you can just inject -Werror=implicit-function-declaration -Werror=implicit-int into the build, which has the same results if compiler flags injection works reliably throughout the build environment.)
According to Fedora's records Squeak-4.10.2.2614-src-no-mp3 was downloaded from http://squeakvm.org/unix/release/.
I got passed the first obstacle with these little changes:
diff -ur Squeak-4.10.2.2614-src-no-mp3.orig/Cross/plugins/CroquetPlugin/CroquetPlugin.h Squeak-4.10.2.2614-src-no-mp3/Cross/plugins/CroquetPlugin/CroquetPlugin.h --- Squeak-4.10.2.2614-src-no-mp3.orig/Cross/plugins/CroquetPlugin/CroquetPlugin.h 2006-09-14 19:52:45.000000000 +0200 +++ Squeak-4.10.2.2614-src-no-mp3/Cross/plugins/CroquetPlugin/CroquetPlugin.h 2022-11-29 12:30:00.834158643 +0100 @@ -20,4 +20,6 @@ */ int ioGatherEntropy(char *bufPtr, int bufSize);
+int triBoxOverlap(float *a, float *b, float *c, float *d, float *e);
#endif /* CROQUET_PLUGIN_H */ diff -ur Squeak-4.10.2.2614-src-no-mp3.orig/Cross/plugins/CroquetPlugin/TriBoxStub.c Squeak-4.10.2.2614-src-no-mp3/Cross/plugins/CroquetPlugin/TriBoxStub.c --- Squeak-4.10.2.2614-src-no-mp3.orig/Cross/plugins/CroquetPlugin/TriBoxStub.c 2009-05-26 23:15:18.000000000 +0200 +++ Squeak-4.10.2.2614-src-no-mp3/Cross/plugins/CroquetPlugin/TriBoxStub.c 2022-11-29 12:30:10.184066148 +0100 @@ -1,3 +1,5 @@ +#include "CroquetPlugin.h"
/* a stub for triboxoverlap */ int triBoxOverlap(float *a, float *b, float *c, float *d, float *e) { return 0; diff -ur Squeak-4.10.2.2614-src-no-mp3.orig/Cross/plugins/SerialPlugin/SerialPlugin.h Squeak-4.10.2.2614-src-no-mp3/Cross/plugins/SerialPlugin/SerialPlugin.h --- Squeak-4.10.2.2614-src-no-mp3.orig/Cross/plugins/SerialPlugin/SerialPlugin.h 2009-08-27 03:48:06.000000000 +0200 +++ Squeak-4.10.2.2614-src-no-mp3/Cross/plugins/SerialPlugin/SerialPlugin.h 2022-11-29 13:02:56.418443376 +0100 @@ -6,9 +6,13 @@
#pragma export on int serialPortClose(int portNum); +int serialPortCloseByName(const char *portName);
int serialPortCount(void); int serialPortOpen(int portNum, int baudRate, int stopBitsType, int parityType, int dataBits, int inFlowCtrl, int outFlowCtrl, int xOnChar, int xOffChar); +int serialPortOpenByName(char *portName, int dataRate, int stopBitsType, int parityType, int dataBits,
int inFlowCtrl, int outFlowCtrl, int xOnChar, int xOffChar);
int serialPortReadInto(int portNum, int count, void *bufferPtr); int serialPortReadIntoByName(const char *portName, int count, void *bufferPtr); int serialPortWriteFrom(int portNum, int count, void *bufferPtr); diff -ur Squeak-4.10.2.2614-src-no-mp3.orig/unix/plugins/AsynchFilePlugin/sqUnixAsynchFile.c Squeak-4.10.2.2614-src-no-mp3/unix/plugins/AsynchFilePlugin/sqUnixAsynchFile.c --- Squeak-4.10.2.2614-src-no-mp3.orig/unix/plugins/AsynchFilePlugin/sqUnixAsynchFile.c 2006-10-18 19:10:25.000000000 +0200 +++ Squeak-4.10.2.2614-src-no-mp3/unix/plugins/AsynchFilePlugin/sqUnixAsynchFile.c 2022-11-29 12:30:44.062730997 +0100 @@ -142,7 +142,7 @@ return fp; }
-INLINE static allocateBuffer(struct FileBuf *buf, int size) +INLINE static int allocateBuffer(struct FileBuf *buf, int size) { if (buf->capacity >= size) return 1;
A few more changes like these seem to be needed.
But now I'm hitting this error:
…/unix/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:118: implicit function declaration: isBytes
This error is harder to deal with because it seems to be a bug in the code generator. There probably should be a macro definition for isBytes similar to arrayValueOf, like this:
#define isBytes(oop) (interpreterProxy->isBytes(oop))
Otherwise, the global function definition is picked up instead, and that does not seem to be the right pattern.
Thanks, Florian
* Eliot Miranda:
Hi Florian,
which vm are you trying to build? https://github.com/OpenSmalltalk/opensmalltalk-vm or some other vm?
I don't really know.
I have this piece of information:
According to Fedora's records Squeak-4.10.2.2614-src-no-mp3 was downloaded from http://squeakvm.org/unix/release/.
There seems to be some overlap with opensmalltalk/opensmalltalk-vm, but it's not the same code base.
Is Fedora using outdated sources?
Thanks, Florian
On 2022-11-30, at 12:56 AM, Florian Weimer fweimer@redhat.com wrote:
Is Fedora using outdated sources?
Yes, very much so. Just like Debian etc. PhilB was working on solving the problem but ran out of time and so far nobody has been able to take up the challenge.
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Useful random insult:- Teflon brain -- nothing sticks.
* tim Rowledge:
On 2022-11-30, at 12:56 AM, Florian Weimer fweimer@redhat.com wrote:
Is Fedora using outdated sources?
Yes, very much so. Just like Debian etc. PhilB was working on solving the problem but ran out of time and so far nobody has been able to take up the challenge.
Should I propose to retire the Fedora package (i.e., remove it from future Fedora releases)? It's really ancient, and I'm worried we do the community a disservice here by misrepresenting the current state of the project.
Anyway, I built the real sources with the instrumented compiler and submitted
configure.ac: Fix tzet typo for tzset https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/660
and it already got merged. Thanks!
I found a couple of other places where implicit function declarations were involved, but don't really know what to do with these.
diff --git a/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/slice.h b/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/slice.h index d21984e0c..2726be3cb 100755 --- a/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/slice.h +++ b/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/slice.h @@ -44,6 +44,8 @@ typedef struct #endif } mpeg3_slice_t;
+void mpeg3_slice_loop(mpeg3_slice_t *slice); + #define mpeg3slice_fillbits(buffer, nbits) \ while(((mpeg3_slice_buffer_t*)(buffer))->bits_size < (nbits)) \ { \
That is probably an okay as a fix?
diff --git a/platforms/unix/plugins/DropPlugin/sqUnixDragDrop.c b/platforms/unix/plugins/DropPlugin/sqUnixDragDrop.c index 5a68ec982..ddd733dc8 100644 --- a/platforms/unix/plugins/DropPlugin/sqUnixDragDrop.c +++ b/platforms/unix/plugins/DropPlugin/sqUnixDragDrop.c @@ -42,6 +42,8 @@ #include "FilePlugin.h" #include "DropPlugin.h"
+extern usqIntptr_t fileRecordSize(void); + extern struct VirtualMachine *interpreterProxy; extern int uxDropFileCount; extern char **uxDropFileNames;
This is way more questionable. I couldn't find the right header for this declaration.
diff --git a/platforms/unix/vm-display-X11/sqUnixX11.c b/platforms/unix/vm-display-X11/sqUnixX11.c index 09b3f03f9..a07377ee9 100644 --- a/platforms/unix/vm-display-X11/sqUnixX11.c +++ b/platforms/unix/vm-display-X11/sqUnixX11.c @@ -4144,7 +4144,9 @@ void initPixmap(void) for (b= 0; b < 6; b++) { int i= 40 + ((36 * r) + (6 * b) + g); - if (i > 255) error("index out of range in color table compuation"); + if (i > 255) + fprintf(stderr, + "index out of range in color table compuation\n"); initColourmap(i, (r * 65535) / 5, (g * 65535) / 5, (b * 65535) / 5); } }
I think the call goes to the error function in platforms/unix/vm/sqUnixMain.c, but its name is unfortunate because it interposes the function of the same name in glibc (which as a different prototype).
diff --git a/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c b/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c index 64c384ba6..48372180f 100644 --- a/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c +++ b/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c @@ -33,6 +33,10 @@ static char __buildInfo[] = "XDisplayControlPlugin VMConstruction-Plugins-XDispl # define INT_EXT "(e)" #endif
+void openXDisplay(void); +void forgetXDisplay(void); +void synchronizeXDisplay(void); +void disconnectXDisplay(void);
/*** Function Prototypes ***/ EXPORT(const char*) getModuleName(void);
This is obviously the wrong fix because it's in generated code, but it gets the build to pass.
The logged errors are:
…/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/getpicture.c:695: implicit function declaration: mpeg3_slice_loop …/platforms/unix/plugins/DropPlugin/sqUnixDragDrop.c:120: implicit function declaration: fileRecordSize …/platforms/unix/vm-display-X11/sqUnixX11.c:4147: implicit function declaration: error …/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c:188: implicit function declaration: forgetXDisplay …/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c:200: implicit function declaration: synchronizeXDisplay …/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c:259: implicit function declaration: disconnectXDisplay …/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c:284: implicit function declaration: openXDisplay
You should be able to replicate this with unpatched GCC by building with -Werror=implicit-function-declaration. The instrumentation is only really needed for cases where errors do not fail the build and tend to be hidden (such as configure scripts).
Thanks, Florian
On Nov 30, 2022, at 11:41 AM, Florian Weimer fweimer@redhat.com wrote:
* tim Rowledge:
On 2022-11-30, at 12:56 AM, Florian Weimer fweimer@redhat.com wrote:
Is Fedora using outdated sources?
Yes, very much so. Just like Debian etc. PhilB was working on solving the problem but ran out of time and so far nobody has been able to take up the challenge.
Should I propose to retire the Fedora package (i.e., remove it from future Fedora releases)? It's really ancient, and I'm worried we do the community a disservice here by misrepresenting the current state of the project.
+1
Anyway, I built the real sources with the instrumented compiler and submitted
configure.ac: Fix tzet typo for tzset https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/660
and it already got merged. Thanks!
Wow, thanks Florian!
I found a couple of other places where implicit function declarations were involved, but don't really know what to do with these.
diff --git a/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/slice.h b/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/slice.h index d21984e0c..2726be3cb 100755 --- a/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/slice.h +++ b/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/slice.h @@ -44,6 +44,8 @@ typedef struct #endif } mpeg3_slice_t;
+void mpeg3_slice_loop(mpeg3_slice_t *slice);
#define mpeg3slice_fillbits(buffer, nbits) \ while(((mpeg3_slice_buffer_t*)(buffer))->bits_size < (nbits)) \ { \
That is probably an okay as a fix?
diff --git a/platforms/unix/plugins/DropPlugin/sqUnixDragDrop.c b/platforms/unix/plugins/DropPlugin/sqUnixDragDrop.c index 5a68ec982..ddd733dc8 100644 --- a/platforms/unix/plugins/DropPlugin/sqUnixDragDrop.c +++ b/platforms/unix/plugins/DropPlugin/sqUnixDragDrop.c @@ -42,6 +42,8 @@ #include "FilePlugin.h" #include "DropPlugin.h"
+extern usqIntptr_t fileRecordSize(void);
extern struct VirtualMachine *interpreterProxy; extern int uxDropFileCount; extern char **uxDropFileNames;
This is way more questionable. I couldn't find the right header for this declaration.
diff --git a/platforms/unix/vm-display-X11/sqUnixX11.c b/platforms/unix/vm-display-X11/sqUnixX11.c index 09b3f03f9..a07377ee9 100644 --- a/platforms/unix/vm-display-X11/sqUnixX11.c +++ b/platforms/unix/vm-display-X11/sqUnixX11.c @@ -4144,7 +4144,9 @@ void initPixmap(void) for (b= 0; b < 6; b++) { int i= 40 + ((36 * r) + (6 * b) + g);
if (i > 255) error("index out of range in color table compuation");
if (i > 255)
fprintf(stderr,
} }"index out of range in color table compuation\n"); initColourmap(i, (r * 65535) / 5, (g * 65535) / 5, (b * 65535) / 5);
I think the call goes to the error function in platforms/unix/vm/sqUnixMain.c, but its name is unfortunate because it interposes the function of the same name in glibc (which as a different prototype).
diff --git a/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c b/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c index 64c384ba6..48372180f 100644 --- a/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c +++ b/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c @@ -33,6 +33,10 @@ static char __buildInfo[] = "XDisplayControlPlugin VMConstruction-Plugins-XDispl # define INT_EXT "(e)" #endif
+void openXDisplay(void); +void forgetXDisplay(void); +void synchronizeXDisplay(void); +void disconnectXDisplay(void);
/*** Function Prototypes ***/ EXPORT(const char*) getModuleName(void);
This is obviously the wrong fix because it's in generated code, but it gets the build to pass.
The logged errors are:
…/platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/getpicture.c:695: implicit function declaration: mpeg3_slice_loop …/platforms/unix/plugins/DropPlugin/sqUnixDragDrop.c:120: implicit function declaration: fileRecordSize …/platforms/unix/vm-display-X11/sqUnixX11.c:4147: implicit function declaration: error …/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c:188: implicit function declaration: forgetXDisplay …/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c:200: implicit function declaration: synchronizeXDisplay …/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c:259: implicit function declaration: disconnectXDisplay …/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c:284: implicit function declaration: openXDisplay
You should be able to replicate this with unpatched GCC by building with -Werror=implicit-function-declaration. The instrumentation is only really needed for cases where errors do not fail the build and tend to be hidden (such as configure scripts).
Thanks, Florian
Hi Florian,
On Tue, Nov 29, 2022 at 01:10:45PM +0100, Florian Weimer wrote:
I'm trying to build the VM with a C compiler which does not accept implicit function declarations or implici int.
This is in preparation for a future change in GCC and Clang defaults. More information is here:
https://fedoraproject.org/wiki/Changes/PortingToModernC https://fedoraproject.org/wiki/Toolchain/PortingToModernC
(The second link points to a container image with an instrumented GCC that can be used for experiments, or you can just inject -Werror=implicit-function-declaration -Werror=implicit-int into the build, which has the same results if compiler flags injection works reliably throughout the build environment.)
According to Fedora's records Squeak-4.10.2.2614-src-no-mp3 was downloaded from http://squeakvm.org/unix/release/.
This is the traditional Squeak VM, which is useful for Squeak images up through Squeak 4.6. This VM is hosted at http://squeakvm.org. Newer and current Squeak images use the opensmalltalk-vm VM, which is hosted at https://github.com/OpenSmalltalk/opensmalltalk-vm.
Recently we had some work under way to update the Debian distribution, which currently has only the older traditional Squeak VM, so that the installed VMs on Debian would include both the older and newer VMs. This would enable users to run various Squeak images without worrying about what VM to select. The work is incomplete and I don't know if it will ever be finished, but the basic package strategy would presumably be similar for RH and Debian.
I am attaching a script that you can use to pull the latest sources for the traditional VM, and create a source tarball. This is the tarball that we were using for the Debian package update (unfinished) and it would give you a set of up to date sources that would probably be suitable for RH also. You will need to install Subversion, then just run the script in a clean directory to produce the source tar Squeak-4.19.15-3822-src.tar.gz.
For reference, the script comes from the Subversion repository at http://squeakvm.org/cgi-bin/viewvc.cgi/squeak/trunk/platforms/unix/cmake/mku...
General information on building the VM for unix is at https://wiki.squeak.org/squeak/6354.
HTH, Dave
* David T. Lewis:
Hi Florian,
On Tue, Nov 29, 2022 at 01:10:45PM +0100, Florian Weimer wrote:
I'm trying to build the VM with a C compiler which does not accept implicit function declarations or implici int.
This is in preparation for a future change in GCC and Clang defaults. More information is here:
https://fedoraproject.org/wiki/Changes/PortingToModernC https://fedoraproject.org/wiki/Toolchain/PortingToModernC
(The second link points to a container image with an instrumented GCC that can be used for experiments, or you can just inject -Werror=implicit-function-declaration -Werror=implicit-int into the build, which has the same results if compiler flags injection works reliably throughout the build environment.)
According to Fedora's records Squeak-4.10.2.2614-src-no-mp3 was downloaded from http://squeakvm.org/unix/release/.
This is the traditional Squeak VM, which is useful for Squeak images up through Squeak 4.6. This VM is hosted at http://squeakvm.org. Newer and current Squeak images use the opensmalltalk-vm VM, which is hosted at https://github.com/OpenSmalltalk/opensmalltalk-vm.
So is it useful for Fedora to keep shipping this, or should we drop the package because it gives a false impression this is the most recent available version if it's in Fedora? Eliot set in the parallel subthread we should remove it.
Sorry, I'm just trying to port Fedora to newer C compilers, and this package popped up. I'm not really interested in Squeak as such.
Thanks, Florian
Hi Florian,
On Fri, Dec 02, 2022 at 09:36:37AM +0100, Florian Weimer wrote:
- David T. Lewis:
Hi Florian,
On Tue, Nov 29, 2022 at 01:10:45PM +0100, Florian Weimer wrote:
I'm trying to build the VM with a C compiler which does not accept implicit function declarations or implici int.
This is in preparation for a future change in GCC and Clang defaults. More information is here:
https://fedoraproject.org/wiki/Changes/PortingToModernC https://fedoraproject.org/wiki/Toolchain/PortingToModernC
(The second link points to a container image with an instrumented GCC that can be used for experiments, or you can just inject -Werror=implicit-function-declaration -Werror=implicit-int into the build, which has the same results if compiler flags injection works reliably throughout the build environment.)
According to Fedora's records Squeak-4.10.2.2614-src-no-mp3 was downloaded from http://squeakvm.org/unix/release/.
This is the traditional Squeak VM, which is useful for Squeak images up through Squeak 4.6. This VM is hosted at http://squeakvm.org. Newer and current Squeak images use the opensmalltalk-vm VM, which is hosted at https://github.com/OpenSmalltalk/opensmalltalk-vm.
So is it useful for Fedora to keep shipping this, or should we drop the package because it gives a false impression this is the most recent available version if it's in Fedora? Eliot set in the parallel subthread we should remove it.
Sorry, I'm just trying to port Fedora to newer C compilers, and this package popped up. I'm not really interested in Squeak as such.
If you can identify the people who were maintaining this package for Fedora, then I would suggest that you contact them for guidance. Otherwise you can safely assume that no one is working on it, and in that case you should follow Eliot's advice.
Dave
Hi Florian,
I should add one more note in case you are interested in updating your sources.
There is a much newer source tarball for the traditional Squeak VM here:
files.squeak.org/debian/tarball/Squeak-4.19.9-3814-src.tar.gz.
This the tarball that we provided for the proposed Debian package update, and it would probably be the most suitable replacement for the outdated Squeak-4.10.2.2614-src-no-mp3 from http://squeakvm.org/unix/release/.
Again to be clear, this is the VM for old Squeak images and the effort to update the Debian package to add the opensmalltalk-vm to the Debian package has not been completed.
Dave
On Fri, Dec 02, 2022 at 01:38:17PM -0500, David T. Lewis wrote:
Hi Florian,
On Fri, Dec 02, 2022 at 09:36:37AM +0100, Florian Weimer wrote:
- David T. Lewis:
Hi Florian,
On Tue, Nov 29, 2022 at 01:10:45PM +0100, Florian Weimer wrote:
I'm trying to build the VM with a C compiler which does not accept implicit function declarations or implici int.
This is in preparation for a future change in GCC and Clang defaults. More information is here:
https://fedoraproject.org/wiki/Changes/PortingToModernC https://fedoraproject.org/wiki/Toolchain/PortingToModernC
(The second link points to a container image with an instrumented GCC that can be used for experiments, or you can just inject -Werror=implicit-function-declaration -Werror=implicit-int into the build, which has the same results if compiler flags injection works reliably throughout the build environment.)
According to Fedora's records Squeak-4.10.2.2614-src-no-mp3 was downloaded from http://squeakvm.org/unix/release/.
This is the traditional Squeak VM, which is useful for Squeak images up through Squeak 4.6. This VM is hosted at http://squeakvm.org. Newer and current Squeak images use the opensmalltalk-vm VM, which is hosted at https://github.com/OpenSmalltalk/opensmalltalk-vm.
So is it useful for Fedora to keep shipping this, or should we drop the package because it gives a false impression this is the most recent available version if it's in Fedora? Eliot set in the parallel subthread we should remove it.
Sorry, I'm just trying to port Fedora to newer C compilers, and this package popped up. I'm not really interested in Squeak as such.
If you can identify the people who were maintaining this package for Fedora, then I would suggest that you contact them for guidance. Otherwise you can safely assume that no one is working on it, and in that case you should follow Eliot's advice.
Dave
squeak-dev@lists.squeakfoundation.org