mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-04-06 13:10:33 +02:00
Reapply "gnu: squeak-vm: Fix build and modernize definition."
This reverts commit 9ab50a57ac. Now with the
missing patch added.
* gnu/packages/patches/squeak-vm-gcc-14-fix.patch: New file.
This commit is contained in:
@@ -2077,6 +2077,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/smalltalk-multiplication-overflow.patch \
|
||||
%D%/packages/patches/soci-mysql-ddl-types.patch \
|
||||
%D%/packages/patches/sqlite-hurd.patch \
|
||||
%D%/packages/patches/squeak-vm-gcc-14-fix.patch \
|
||||
%D%/packages/patches/stepmania-ffmpeg-compat.patch \
|
||||
%D%/packages/patches/stk-5.0.1-fix-typo.patch \
|
||||
%D%/packages/patches/strace-readlink-tests.patch \
|
||||
|
||||
675
gnu/packages/patches/squeak-vm-gcc-14-fix.patch
Normal file
675
gnu/packages/patches/squeak-vm-gcc-14-fix.patch
Normal file
@@ -0,0 +1,675 @@
|
||||
Retrieved from: https://src.fedoraproject.org/rpms/squeak-vm/raw/rawhide/f/squeak-vm-4.10.2-gcc-14-fix.patch
|
||||
|
||||
diff --git a/Cross/vm/sqVirtualMachine.c b/Cross/vm/sqVirtualMachine.c
|
||||
index 59b6a6e..d367251 100644
|
||||
--- a/Cross/vm/sqVirtualMachine.c
|
||||
+++ b/Cross/vm/sqVirtualMachine.c
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <setjmp.h>
|
||||
+#include <unistd.h>
|
||||
|
||||
#include "sqVirtualMachine.h"
|
||||
|
||||
diff --git a/unix/plugins/AsynchFilePlugin/sqUnixAsynchFile.c b/unix/plugins/AsynchFilePlugin/sqUnixAsynchFile.c
|
||||
index 788287f..b916c86 100644
|
||||
--- a/unix/plugins/AsynchFilePlugin/sqUnixAsynchFile.c
|
||||
+++ b/unix/plugins/AsynchFilePlugin/sqUnixAsynchFile.c
|
||||
@@ -142,7 +142,7 @@ INLINE static FilePtr newFileRec(int fd, int sema)
|
||||
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;
|
||||
diff --git a/unix/plugins/CameraPlugin/sqCamera-linux.c b/unix/plugins/CameraPlugin/sqCamera-linux.c
|
||||
index 218322f..c5a6815 100644
|
||||
--- a/unix/plugins/CameraPlugin/sqCamera-linux.c
|
||||
+++ b/unix/plugins/CameraPlugin/sqCamera-linux.c
|
||||
@@ -181,7 +181,7 @@ libCon(void)
|
||||
vd_dup = dup;
|
||||
vd_ioctl = ioctl;
|
||||
vd_read = read;
|
||||
- vd_mmap = mmap;
|
||||
+ vd_mmap = (void * (*)(void *, size_t, int, int, int, int64_t))mmap;
|
||||
vd_munmap = munmap;
|
||||
|
||||
/* Use libv4l2: use if available... */
|
||||
diff --git a/unix/plugins/HostWindowPlugin/sqUnixHostWindowPlugin.c b/unix/plugins/HostWindowPlugin/sqUnixHostWindowPlugin.c
|
||||
index c963f53..4788120 100644
|
||||
--- a/unix/plugins/HostWindowPlugin/sqUnixHostWindowPlugin.c
|
||||
+++ b/unix/plugins/HostWindowPlugin/sqUnixHostWindowPlugin.c
|
||||
@@ -78,7 +78,7 @@ sqInt ioShowDisplayOnWindow(
|
||||
return 0;
|
||||
else
|
||||
return dpy->hostWindowShowDisplay(
|
||||
- dispBitsIndex, width, height, depth, affectedL, affectedR, affectedT, affectedB, windowIndex);
|
||||
+ (unsigned int *)dispBitsIndex, width, height, depth, affectedL, affectedR, affectedT, affectedB, windowIndex);
|
||||
}
|
||||
|
||||
|
||||
diff --git a/unix/plugins/MIDIPlugin/sqUnixMIDIALSA.inc b/unix/plugins/MIDIPlugin/sqUnixMIDIALSA.inc
|
||||
index cc4bbad..1d451da 100644
|
||||
--- a/unix/plugins/MIDIPlugin/sqUnixMIDIALSA.inc
|
||||
+++ b/unix/plugins/MIDIPlugin/sqUnixMIDIALSA.inc
|
||||
@@ -333,7 +333,7 @@ int sqMIDIParameter(int whichParameter, int modify, int newValue)
|
||||
{
|
||||
snd_seq_queue_tempo_t *tempo= 0;
|
||||
snd_seq_queue_tempo_alloca(&tempo);
|
||||
- snd_seq_get_queue_tempo(seq, queue, &tempo);
|
||||
+ snd_seq_get_queue_tempo(seq, queue, (snd_seq_queue_tempo_t *)&tempo);
|
||||
return snd_seq_queue_tempo_get_tempo(tempo) / 1000.0;
|
||||
}
|
||||
break;
|
||||
diff --git a/unix/plugins/SerialPlugin/sqUnixSerial.c b/unix/plugins/SerialPlugin/sqUnixSerial.c
|
||||
index 2e61099..f3bc6b1 100644
|
||||
--- a/unix/plugins/SerialPlugin/sqUnixSerial.c
|
||||
+++ b/unix/plugins/SerialPlugin/sqUnixSerial.c
|
||||
@@ -157,21 +157,6 @@ void make_portname_from_portnum(char *serialPortName, const int portNum)
|
||||
/*** Public Functions ***/
|
||||
|
||||
/* return value ignored */
|
||||
-int serialPortClose(int portNum)
|
||||
-{
|
||||
- char serialPortName[PORT_NAME_SIZE];
|
||||
-
|
||||
- if (portNum < 0 || portNum >= MAX_SERIAL_PORTS)
|
||||
- {
|
||||
- success(false);
|
||||
- return 0;
|
||||
- }
|
||||
-
|
||||
- make_portname_from_portnum(serialPortName, portNum);
|
||||
-
|
||||
- return serialPortCloseByName(serialPortName);
|
||||
-}
|
||||
-
|
||||
int serialPortCloseByName(const char *portName)
|
||||
{
|
||||
serial_port_type * sp= find_stored_serialport(portName);
|
||||
@@ -205,16 +190,19 @@ int serialPortCloseByName(const char *portName)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-/* Open the given serial port using the given port number.
|
||||
- * "/dev/ttySxx" port name are assumed. */
|
||||
-int serialPortOpen(int portNum, int dataRate, int stopBitsType, int parityType, int dataBits,
|
||||
- int inFlowCtrl, int outFlowCtrl, int xOnChar, int xOffChar)
|
||||
-{
|
||||
+int serialPortClose(int portNum)
|
||||
+{
|
||||
char serialPortName[PORT_NAME_SIZE];
|
||||
+
|
||||
+ if (portNum < 0 || portNum >= MAX_SERIAL_PORTS)
|
||||
+ {
|
||||
+ success(false);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
make_portname_from_portnum(serialPortName, portNum);
|
||||
-
|
||||
- return serialPortOpenByName(serialPortName, dataRate, stopBitsType, parityType, dataBits,
|
||||
- inFlowCtrl, outFlowCtrl, xOnChar, xOffChar);
|
||||
+
|
||||
+ return serialPortCloseByName(serialPortName);
|
||||
}
|
||||
|
||||
/* If anything goes wrong during opening make sure the file descriptor
|
||||
@@ -356,6 +344,18 @@ int serialPortOpenByName(char *portName, int dataRate, int stopBitsType, int par
|
||||
return 0;
|
||||
}
|
||||
|
||||
+/* Open the given serial port using the given port number.
|
||||
+ * "/dev/ttySxx" port name are assumed. */
|
||||
+int serialPortOpen(int portNum, int dataRate, int stopBitsType, int parityType, int dataBits,
|
||||
+ int inFlowCtrl, int outFlowCtrl, int xOnChar, int xOffChar)
|
||||
+{
|
||||
+ char serialPortName[PORT_NAME_SIZE];
|
||||
+ make_portname_from_portnum(serialPortName, portNum);
|
||||
+
|
||||
+ return serialPortOpenByName(serialPortName, dataRate, stopBitsType, parityType, dataBits,
|
||||
+ inFlowCtrl, outFlowCtrl, xOnChar, xOffChar);
|
||||
+}
|
||||
+
|
||||
/* Read up to count bytes from the given serial port into the given
|
||||
byte array. Read only up to the number of bytes in the port's
|
||||
input buffer; if fewer bytes than count have been received, do not
|
||||
diff --git a/unix/plugins/WeDoPlugin/WeDoLinux.c b/unix/plugins/WeDoPlugin/WeDoLinux.c
|
||||
index 973c2d3..1dc4de1 100644
|
||||
--- a/unix/plugins/WeDoPlugin/WeDoLinux.c
|
||||
+++ b/unix/plugins/WeDoPlugin/WeDoLinux.c
|
||||
@@ -38,6 +38,7 @@
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <linux/hiddev.h>
|
||||
+#include <unistd.h>
|
||||
|
||||
|
||||
#define true 1
|
||||
diff --git a/unix/src/plugins/ClipboardExtendedPlugin/ClipboardExtendedPlugin.c b/unix/src/plugins/ClipboardExtendedPlugin/ClipboardExtendedPlugin.c
|
||||
index 4c71420..7f54955 100644
|
||||
--- a/unix/src/plugins/ClipboardExtendedPlugin/ClipboardExtendedPlugin.c
|
||||
+++ b/unix/src/plugins/ClipboardExtendedPlugin/ClipboardExtendedPlugin.c
|
||||
@@ -75,6 +75,8 @@ static sqInt halt(void) {
|
||||
;
|
||||
}
|
||||
|
||||
+extern void sqPasteboardPutItemFlavordatalengthformatTypeformatLength(sqInt, char*, int, char*, int);
|
||||
+
|
||||
EXPORT(sqInt) ioAddClipboardData(void) {
|
||||
sqInt clipboardAddress;
|
||||
sqInt formatLength;
|
||||
@@ -102,6 +104,8 @@ EXPORT(sqInt) ioAddClipboardData(void) {
|
||||
return null;
|
||||
}
|
||||
|
||||
+extern void sqPasteboardClear(sqInt);
|
||||
+
|
||||
EXPORT(sqInt) ioClearClipboard(void) {
|
||||
sqInt clipboardAddress;
|
||||
sqInt clipboard;
|
||||
@@ -119,6 +123,8 @@ EXPORT(sqInt) ioClearClipboard(void) {
|
||||
return null;
|
||||
}
|
||||
|
||||
+sqInt sqCreateClipboard(void);
|
||||
+
|
||||
EXPORT(sqInt) ioCreateClipboard(void) {
|
||||
sqInt clipboardAddress;
|
||||
|
||||
@@ -130,6 +136,10 @@ EXPORT(sqInt) ioCreateClipboard(void) {
|
||||
return null;
|
||||
}
|
||||
|
||||
+extern int sqPasteboardGetItemCount(sqInt);
|
||||
+extern int sqPasteboardCopyItemFlavorsitemNumber (sqInt, int);
|
||||
+extern int sqPasteboardCopyItemFlavorDataformatformatLength (sqInt, char*, int);
|
||||
+
|
||||
EXPORT(sqInt) ioGetClipboardFormat(void) {
|
||||
sqInt clipboardAddress;
|
||||
sqInt itemCount;
|
||||
diff --git a/unix/src/plugins/DBusPlugin/DBusPlugin.c b/unix/src/plugins/DBusPlugin/DBusPlugin.c
|
||||
index b3b8027..11bc22e 100644
|
||||
--- a/unix/src/plugins/DBusPlugin/DBusPlugin.c
|
||||
+++ b/unix/src/plugins/DBusPlugin/DBusPlugin.c
|
||||
@@ -474,7 +474,7 @@ static sqInt halt(void) {
|
||||
}
|
||||
|
||||
static sqInt handleflag(int fd, int flag) {
|
||||
- aioHandle(fd, handleReadForFDwithDataandFlag , flag);
|
||||
+ aioHandle(fd, (void (*)(int, void *, int)) handleReadForFDwithDataandFlag , flag);
|
||||
}
|
||||
|
||||
|
||||
@@ -1796,8 +1796,8 @@ static dbus_bool_t sqDBusPluginAddWatchwithData(DBusWatch*watch, void*data) {
|
||||
fd = dbus_watch_get_fd(watch);
|
||||
((sqDBusData*)data)->watch = watch;
|
||||
if (flag & DBUS_WATCH_READABLE) {
|
||||
- aioEnable(fd, data, NULL);
|
||||
- aioHandle(fd, handleReadForFDwithDataandFlag , 1<<0 | 1<<1 | 1<<3);
|
||||
+ aioEnable(fd, data, 0);
|
||||
+ aioHandle(fd, (void (*)(int, void *, int)) handleReadForFDwithDataandFlag , 1<<0 | 1<<1 | 1<<3);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -1830,7 +1830,7 @@ static void sqDBusPluginToggleWatchwithData(DBusWatch*watch, void*data) {
|
||||
fd = dbus_watch_get_fd(watch);
|
||||
if (enable) {
|
||||
((sqDBusData*)data)->watch = watch;
|
||||
- aioEnable(fd, data, NULL);
|
||||
+ aioEnable(fd, data, 0);
|
||||
} else {
|
||||
aioDisable(fd);
|
||||
}
|
||||
diff --git a/unix/src/plugins/FileCopyPlugin/FileCopyPlugin.c b/unix/src/plugins/FileCopyPlugin/FileCopyPlugin.c
|
||||
index e2f1b5a..16a3066 100644
|
||||
--- a/unix/src/plugins/FileCopyPlugin/FileCopyPlugin.c
|
||||
+++ b/unix/src/plugins/FileCopyPlugin/FileCopyPlugin.c
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "sqConfig.h"
|
||||
/* Platform specific definitions */
|
||||
#include "sqPlatformSpecific.h"
|
||||
+#include "FileCopyPlugin.h"
|
||||
|
||||
#define true 1
|
||||
#define false 0
|
||||
diff --git a/unix/src/plugins/HostWindowPlugin/HostWindowPlugin.c b/unix/src/plugins/HostWindowPlugin/HostWindowPlugin.c
|
||||
index ea5c0d7..54bb88b 100644
|
||||
--- a/unix/src/plugins/HostWindowPlugin/HostWindowPlugin.c
|
||||
+++ b/unix/src/plugins/HostWindowPlugin/HostWindowPlugin.c
|
||||
@@ -312,7 +312,7 @@ EXPORT(sqInt) primitiveShowHostWindowRect(void) {
|
||||
if (interpreterProxy->failed()) {
|
||||
return null;
|
||||
}
|
||||
- ok = ioShowDisplayOnWindow(dispBits, w, h, d, left, right, top,
|
||||
+ ok = ioShowDisplayOnWindow((unsigned char *)dispBits, w, h, d, left, right, top,
|
||||
bottom, windowIndex);
|
||||
if (!(ok)) {
|
||||
interpreterProxy->primitiveFail();
|
||||
diff --git a/unix/src/plugins/MIDIPlugin/MIDIPlugin.c b/unix/src/plugins/MIDIPlugin/MIDIPlugin.c
|
||||
index a3fae58..8ec2eaa 100644
|
||||
--- a/unix/src/plugins/MIDIPlugin/MIDIPlugin.c
|
||||
+++ b/unix/src/plugins/MIDIPlugin/MIDIPlugin.c
|
||||
@@ -161,7 +161,7 @@ EXPORT(sqInt) primitiveMIDIGetPortName(void) {
|
||||
if (interpreterProxy->failed()) {
|
||||
return null;
|
||||
}
|
||||
- sz = sqMIDIGetPortName(portNum, &portName, 255);
|
||||
+ sz = sqMIDIGetPortName(portNum, (int)&portName, 255);
|
||||
nameObj = interpreterProxy->instantiateClassindexableSize(interpreterProxy->classString(), sz);
|
||||
if (interpreterProxy->failed()) {
|
||||
return null;
|
||||
diff --git a/unix/src/plugins/RomePlugin/RomePlugin.c b/unix/src/plugins/RomePlugin/RomePlugin.c
|
||||
index aed0e19..f9ff990 100644
|
||||
--- a/unix/src/plugins/RomePlugin/RomePlugin.c
|
||||
+++ b/unix/src/plugins/RomePlugin/RomePlugin.c
|
||||
@@ -49,6 +49,7 @@
|
||||
|
||||
|
||||
#include "sqMemoryAccess.h"
|
||||
+#include "sq.h"
|
||||
|
||||
|
||||
/*** Constants ***/
|
||||
diff --git a/unix/src/plugins/Squeak3D/Squeak3D.c b/unix/src/plugins/Squeak3D/Squeak3D.c
|
||||
index 3732e62..2127bb3 100644
|
||||
--- a/unix/src/plugins/Squeak3D/Squeak3D.c
|
||||
+++ b/unix/src/plugins/Squeak3D/Squeak3D.c
|
||||
@@ -1657,8 +1657,8 @@ static sqInt halt(void) {
|
||||
}
|
||||
|
||||
EXPORT(sqInt) initialiseModule(void) {
|
||||
- loadBBFn = interpreterProxy->ioLoadFunctionFrom("loadBitBltFrom", bbPluginName);
|
||||
- copyBitsFn = interpreterProxy->ioLoadFunctionFrom("copyBitsFromtoat", bbPluginName);
|
||||
+ loadBBFn = (sqInt) interpreterProxy->ioLoadFunctionFrom("loadBitBltFrom", bbPluginName);
|
||||
+ copyBitsFn = (sqInt) interpreterProxy->ioLoadFunctionFrom("copyBitsFromtoat", bbPluginName);
|
||||
return (loadBBFn != 0) && (copyBitsFn != 0);
|
||||
}
|
||||
|
||||
diff --git a/unix/src/plugins/SqueakFFIPrims/SqueakFFIPrims.c b/unix/src/plugins/SqueakFFIPrims/SqueakFFIPrims.c
|
||||
index 24601e4..07e4714 100644
|
||||
--- a/unix/src/plugins/SqueakFFIPrims/SqueakFFIPrims.c
|
||||
+++ b/unix/src/plugins/SqueakFFIPrims/SqueakFFIPrims.c
|
||||
@@ -1215,6 +1215,8 @@ static sqInt halt(void) {
|
||||
;
|
||||
}
|
||||
|
||||
+extern void initSurfacePluginFunctionPointers();
|
||||
+
|
||||
EXPORT(sqInt) initialiseModule(void) {
|
||||
initSurfacePluginFunctionPointers();
|
||||
}
|
||||
diff --git a/unix/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c b/unix/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c
|
||||
index 1a53f09..ed3a446 100644
|
||||
--- a/unix/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c
|
||||
+++ b/unix/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c
|
||||
@@ -132,6 +132,10 @@ EXPORT(sqInt) primitiveCanConnectToDisplay(void) {
|
||||
}
|
||||
}
|
||||
|
||||
+extern void forgetXDisplay(void);
|
||||
+extern void synchronizeXDisplay(void);
|
||||
+extern void openXDisplay(void);
|
||||
+extern int disconnectXDisplay(void);
|
||||
|
||||
/* Call an internal function which will disconnect the X display session. The actual
|
||||
Squeak window on the X server is not effected, but this instance of Squeak will
|
||||
diff --git a/unix/src/vm/interp.c b/unix/src/vm/interp.c
|
||||
index 85f416d..c179a34 100644
|
||||
--- a/unix/src/vm/interp.c
|
||||
+++ b/unix/src/vm/interp.c
|
||||
@@ -15665,6 +15665,9 @@ sqInt primitiveAtPut(void) {
|
||||
}
|
||||
|
||||
|
||||
+extern sqInt ioSetCursorARGB(sqInt, sqInt, sqInt, sqInt, sqInt);
|
||||
+
|
||||
+
|
||||
/* Set the cursor to the given shape. The Mac only supports 16x16 pixel cursors. Cursor offsets are handled by Smalltalk. */
|
||||
|
||||
sqInt primitiveBeCursor(void) {
|
||||
diff --git a/unix/src/vm/intplugins/AsynchFilePlugin/AsynchFilePlugin.c b/unix/src/vm/intplugins/AsynchFilePlugin/AsynchFilePlugin.c
|
||||
index f0b72e7..f53d7f3 100644
|
||||
--- a/unix/src/vm/intplugins/AsynchFilePlugin/AsynchFilePlugin.c
|
||||
+++ b/unix/src/vm/intplugins/AsynchFilePlugin/AsynchFilePlugin.c
|
||||
@@ -162,7 +162,7 @@ EXPORT(sqInt) primitiveAsyncFileOpen(void) {
|
||||
fOop = interpreterProxy->instantiateClassindexableSize(interpreterProxy->classByteArray(), sizeof(AsyncFile));
|
||||
f = asyncFileValueOf(fOop);
|
||||
if (!(interpreterProxy->failed())) {
|
||||
- asyncFileOpen(f, fileName, fileNameSize, writeFlag, semaIndex);
|
||||
+ asyncFileOpen(f, (int) fileName, fileNameSize, writeFlag, semaIndex);
|
||||
}
|
||||
if (interpreterProxy->failed()) {
|
||||
return null;
|
||||
@@ -209,7 +209,7 @@ EXPORT(sqInt) primitiveAsyncFileReadResult(void) {
|
||||
interpreterProxy->success((startIndex >= 1) && (((startIndex + count) - 1) <= bufferSize));
|
||||
bufferPtr = (((pointerForOop(buffer)) + (BASE_HEADER_SIZE)) + startIndex) - 1;
|
||||
if (!(interpreterProxy->failed())) {
|
||||
- r = asyncFileReadResult(f, bufferPtr, count);
|
||||
+ r = asyncFileReadResult(f, (int) bufferPtr, count);
|
||||
}
|
||||
_return_value = interpreterProxy->integerObjectOf(r);
|
||||
if (interpreterProxy->failed()) {
|
||||
@@ -301,7 +301,7 @@ EXPORT(sqInt) primitiveAsyncFileWriteStart(void) {
|
||||
interpreterProxy->success((startIndex >= 1) && (((startIndex + count) - 1) <= bufferSize));
|
||||
bufferPtr = (((pointerForOop(buffer)) + (BASE_HEADER_SIZE)) + startIndex) - 1;
|
||||
if (!(interpreterProxy->failed())) {
|
||||
- asyncFileWriteStart(f, fPosition, bufferPtr, count);
|
||||
+ asyncFileWriteStart(f, fPosition, (int) bufferPtr, count);
|
||||
}
|
||||
if (interpreterProxy->failed()) {
|
||||
return null;
|
||||
diff --git a/unix/src/vm/intplugins/CroquetPlugin/CroquetPlugin.c b/unix/src/vm/intplugins/CroquetPlugin/CroquetPlugin.c
|
||||
index ae84066..c27ac3c 100644
|
||||
--- a/unix/src/vm/intplugins/CroquetPlugin/CroquetPlugin.c
|
||||
+++ b/unix/src/vm/intplugins/CroquetPlugin/CroquetPlugin.c
|
||||
@@ -512,6 +512,8 @@ EXPORT(sqInt) primitiveTransposeMatrix(void) {
|
||||
|
||||
/* Primitive. Answer whether an AABB intersects with a given triangle */
|
||||
|
||||
+extern sqInt triBoxOverlap(float*, float*, float*, float*, float*);
|
||||
+
|
||||
EXPORT(sqInt) primitiveTriBoxIntersects(void) {
|
||||
float*maxCorner;
|
||||
float*minCorner;
|
||||
diff --git a/unix/src/vm/intplugins/FilePlugin/FilePlugin.c b/unix/src/vm/intplugins/FilePlugin/FilePlugin.c
|
||||
index 0495a0f..baf618c 100644
|
||||
--- a/unix/src/vm/intplugins/FilePlugin/FilePlugin.c
|
||||
+++ b/unix/src/vm/intplugins/FilePlugin/FilePlugin.c
|
||||
@@ -734,7 +734,7 @@ EXPORT(sqInt) primitiveFileStdioHandles(void) {
|
||||
return interpreterProxy->primitiveFail();
|
||||
}
|
||||
}
|
||||
- validMask = sqFileStdioHandlesInto((&fileRecords));
|
||||
+ validMask = sqFileStdioHandlesInto((SQFile*)(&fileRecords));
|
||||
if (validMask == 0) {
|
||||
return interpreterProxy->primitiveFail();
|
||||
}
|
||||
diff --git a/unix/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c b/unix/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
|
||||
index 501077a..53767a4 100644
|
||||
--- a/unix/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
|
||||
+++ b/unix/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
|
||||
@@ -101,6 +101,10 @@ static sqInt halt(void) {
|
||||
}
|
||||
|
||||
|
||||
+sqInt _isBytes(sqInt oop) {
|
||||
+ return ((oop & 1) == 0) && (((((usqInt) (longAt(oop))) >> 8) & 15) >= 8);
|
||||
+}
|
||||
+
|
||||
/* Return 1, 2 or 3, if string1 is <, =, or > string2, with the collating order of characters given by the order array. */
|
||||
|
||||
EXPORT(sqInt) primitiveCompareString(void) {
|
||||
@@ -115,17 +119,17 @@ EXPORT(sqInt) primitiveCompareString(void) {
|
||||
sqInt len2;
|
||||
|
||||
rcvr = stackValue(3);
|
||||
- if (!(isBytes(stackValue(2)))) {
|
||||
+ if (!(_isBytes(stackValue(2)))) {
|
||||
return primitiveFail();
|
||||
}
|
||||
string1 = arrayValueOf(stackValue(2));
|
||||
string1 -= 1;
|
||||
- if (!(isBytes(stackValue(1)))) {
|
||||
+ if (!(_isBytes(stackValue(1)))) {
|
||||
return primitiveFail();
|
||||
}
|
||||
string2 = arrayValueOf(stackValue(1));
|
||||
string2 -= 1;
|
||||
- if (!(isBytes(stackValue(0)))) {
|
||||
+ if (!(_isBytes(stackValue(0)))) {
|
||||
return primitiveFail();
|
||||
}
|
||||
order = arrayValueOf(stackValue(0));
|
||||
@@ -225,7 +229,7 @@ EXPORT(sqInt) primitiveCompressToByteArray(void) {
|
||||
rcvr = stackValue(2);
|
||||
bm = arrayValueOf(stackValue(1));
|
||||
bm -= 1;
|
||||
- if (!(isBytes(stackValue(0)))) {
|
||||
+ if (!(_isBytes(stackValue(0)))) {
|
||||
return primitiveFail();
|
||||
}
|
||||
ba = arrayValueOf(stackValue(0));
|
||||
@@ -393,7 +397,7 @@ EXPORT(sqInt) primitiveConvert8BitSigned(void) {
|
||||
sqInt s;
|
||||
|
||||
rcvr = stackValue(2);
|
||||
- if (!(isBytes(stackValue(1)))) {
|
||||
+ if (!(_isBytes(stackValue(1)))) {
|
||||
return primitiveFail();
|
||||
}
|
||||
aByteArray = arrayValueOf(stackValue(1));
|
||||
@@ -453,7 +457,7 @@ EXPORT(sqInt) primitiveDecompressFromByteArray(void) {
|
||||
rcvr = stackValue(3);
|
||||
bm = arrayValueOf(stackValue(2));
|
||||
bm -= 1;
|
||||
- if (!(isBytes(stackValue(1)))) {
|
||||
+ if (!(_isBytes(stackValue(1)))) {
|
||||
return primitiveFail();
|
||||
}
|
||||
ba = arrayValueOf(stackValue(1));
|
||||
@@ -556,12 +560,12 @@ EXPORT(sqInt) primitiveFindFirstInString(void) {
|
||||
sqInt stringSize;
|
||||
|
||||
rcvr = stackValue(3);
|
||||
- if (!(isBytes(stackValue(2)))) {
|
||||
+ if (!(_isBytes(stackValue(2)))) {
|
||||
return primitiveFail();
|
||||
}
|
||||
aString = arrayValueOf(stackValue(2));
|
||||
aString -= 1;
|
||||
- if (!(isBytes(stackValue(1)))) {
|
||||
+ if (!(_isBytes(stackValue(1)))) {
|
||||
return primitiveFail();
|
||||
}
|
||||
inclusionMap = arrayValueOf(stackValue(1));
|
||||
@@ -614,18 +618,18 @@ EXPORT(sqInt) primitiveFindSubstring(void) {
|
||||
sqInt startIndex;
|
||||
|
||||
rcvr = stackValue(4);
|
||||
- if (!(isBytes(stackValue(3)))) {
|
||||
+ if (!(_isBytes(stackValue(3)))) {
|
||||
return primitiveFail();
|
||||
}
|
||||
key = arrayValueOf(stackValue(3));
|
||||
key -= 1;
|
||||
- if (!(isBytes(stackValue(2)))) {
|
||||
+ if (!(_isBytes(stackValue(2)))) {
|
||||
return primitiveFail();
|
||||
}
|
||||
body = arrayValueOf(stackValue(2));
|
||||
body -= 1;
|
||||
start = stackIntegerValue(1);
|
||||
- if (!(isBytes(stackValue(0)))) {
|
||||
+ if (!(_isBytes(stackValue(0)))) {
|
||||
return primitiveFail();
|
||||
}
|
||||
matchTable = arrayValueOf(stackValue(0));
|
||||
@@ -673,7 +677,7 @@ EXPORT(sqInt) primitiveIndexOfAsciiInString(void) {
|
||||
|
||||
rcvr = stackValue(3);
|
||||
anInteger = stackIntegerValue(2);
|
||||
- if (!(isBytes(stackValue(1)))) {
|
||||
+ if (!(_isBytes(stackValue(1)))) {
|
||||
return primitiveFail();
|
||||
}
|
||||
aString = arrayValueOf(stackValue(1));
|
||||
@@ -719,7 +723,7 @@ EXPORT(sqInt) primitiveStringHash(void) {
|
||||
sqInt pos;
|
||||
|
||||
rcvr = stackValue(2);
|
||||
- if (!(isBytes(stackValue(1)))) {
|
||||
+ if (!(_isBytes(stackValue(1)))) {
|
||||
return primitiveFail();
|
||||
}
|
||||
aByteArray = arrayValueOf(stackValue(1));
|
||||
@@ -758,14 +762,14 @@ EXPORT(sqInt) primitiveTranslateStringWithTable(void) {
|
||||
sqInt i;
|
||||
|
||||
rcvr = stackValue(4);
|
||||
- if (!(isBytes(stackValue(3)))) {
|
||||
+ if (!(_isBytes(stackValue(3)))) {
|
||||
return primitiveFail();
|
||||
}
|
||||
aString = arrayValueOf(stackValue(3));
|
||||
aString -= 1;
|
||||
start = stackIntegerValue(2);
|
||||
stop = stackIntegerValue(1);
|
||||
- if (!(isBytes(stackValue(0)))) {
|
||||
+ if (!(_isBytes(stackValue(0)))) {
|
||||
return primitiveFail();
|
||||
}
|
||||
table = arrayValueOf(stackValue(0));
|
||||
diff --git a/unix/src/vm/intplugins/RePlugin/RePlugin.c b/unix/src/vm/intplugins/RePlugin/RePlugin.c
|
||||
index 97a99c9..4f09246 100644
|
||||
--- a/unix/src/vm/intplugins/RePlugin/RePlugin.c
|
||||
+++ b/unix/src/vm/intplugins/RePlugin/RePlugin.c
|
||||
@@ -252,7 +252,7 @@ EXPORT(sqInt) primPCREExec(void) {
|
||||
/* begin rcvrExtraPtr */
|
||||
extraObj = interpreterProxy->fetchPointerofObject(3, rcvr);
|
||||
if (extraObj == (interpreterProxy->nilObject())) {
|
||||
- extraPtr = NULL;
|
||||
+ extraPtr = 0;
|
||||
goto l1;
|
||||
}
|
||||
extraPtr = ((int) (interpreterProxy->arrayValueOf(extraObj)));
|
||||
@@ -317,7 +317,7 @@ EXPORT(sqInt) primPCREExecfromto(void) {
|
||||
/* begin rcvrExtraPtr */
|
||||
extraObj = interpreterProxy->fetchPointerofObject(3, rcvr);
|
||||
if (extraObj == (interpreterProxy->nilObject())) {
|
||||
- extraPtr = NULL;
|
||||
+ extraPtr = 0;
|
||||
goto l1;
|
||||
}
|
||||
extraPtr = ((int) (interpreterProxy->arrayValueOf(extraObj)));
|
||||
diff --git a/unix/src/vm/intplugins/SerialPlugin/SerialPlugin.c b/unix/src/vm/intplugins/SerialPlugin/SerialPlugin.c
|
||||
index a40a64d..ecc29f5 100644
|
||||
--- a/unix/src/vm/intplugins/SerialPlugin/SerialPlugin.c
|
||||
+++ b/unix/src/vm/intplugins/SerialPlugin/SerialPlugin.c
|
||||
@@ -100,6 +100,9 @@ EXPORT(sqInt) primitiveSerialPortClose(void) {
|
||||
return null;
|
||||
}
|
||||
|
||||
+extern sqInt serialPortCloseByName(const char*);
|
||||
+extern sqInt serialPortOpenByName(char*, int, int, int, int, int, int, int, int);
|
||||
+
|
||||
EXPORT(sqInt) primitiveSerialPortCloseByName(void) {
|
||||
char * cString;
|
||||
char *deviceName;
|
||||
diff --git a/unix/src/vm/intplugins/SlangTestSupportPlugin/SlangTestSupportPlugin.c b/unix/src/vm/intplugins/SlangTestSupportPlugin/SlangTestSupportPlugin.c
|
||||
index 72f9def..46280d9 100644
|
||||
--- a/unix/src/vm/intplugins/SlangTestSupportPlugin/SlangTestSupportPlugin.c
|
||||
+++ b/unix/src/vm/intplugins/SlangTestSupportPlugin/SlangTestSupportPlugin.c
|
||||
@@ -147,7 +147,7 @@ static sqInt inlineByMethod(void) {
|
||||
sqInt bar;
|
||||
sqInt foo;
|
||||
|
||||
- foo = "foo";
|
||||
+ foo = (sqInt) "foo";
|
||||
bar = methodThatShouldNotBeInlinedByMethod();
|
||||
}
|
||||
|
||||
@@ -159,24 +159,24 @@ static sqInt inlineByPragma(void) {
|
||||
sqInt bar;
|
||||
sqInt foo;
|
||||
|
||||
- foo = "foo";
|
||||
+ foo = (sqInt) "foo";
|
||||
bar = methodThatShouldNotBeInlinedByPragma();
|
||||
}
|
||||
|
||||
static sqInt methodThatShouldBeInlinedByMethod(void) {
|
||||
- return "foo";
|
||||
+ return (sqInt) "foo";
|
||||
}
|
||||
|
||||
static sqInt methodThatShouldBeInlinedByPragma(void) {
|
||||
- return "foo";
|
||||
+ return (sqInt) "foo";
|
||||
}
|
||||
|
||||
static sqInt methodThatShouldNotBeInlinedByMethod(void) {
|
||||
- return "bar";
|
||||
+ return (sqInt) "bar";
|
||||
}
|
||||
|
||||
static sqInt methodThatShouldNotBeInlinedByPragma(void) {
|
||||
- return "bar";
|
||||
+ return (sqInt) "bar";
|
||||
}
|
||||
|
||||
|
||||
diff --git a/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c b/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c
|
||||
index 18d0f7f..8b0f35d 100644
|
||||
--- a/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c
|
||||
+++ b/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c
|
||||
@@ -995,10 +995,10 @@ DBGMSG("<sound_StartRecording()");
|
||||
static sqInt sound_StopRecording(void) {
|
||||
DBGMSG(">sound_StopRecording()");
|
||||
|
||||
- if (!audioIn.open) return;
|
||||
+ if (!audioIn.open) return 0;
|
||||
audioIn.open = false;
|
||||
|
||||
- if (NULL == audioIn.pa_conn) return;
|
||||
+ if (NULL == audioIn.pa_conn) return 0;
|
||||
|
||||
ioThreadStall(&audioIn);
|
||||
|
||||
diff --git a/unix/vm/SqSound.h b/unix/vm/SqSound.h
|
||||
index bddbf24..973db1b 100644
|
||||
--- a/unix/vm/SqSound.h
|
||||
+++ b/unix/vm/SqSound.h
|
||||
@@ -47,7 +47,7 @@ static struct SqSound sound_##NAME##_itf= { \
|
||||
sound_RecordSamplesIntoAtLength, \
|
||||
sound_Volume, \
|
||||
sound_SetVolume, \
|
||||
- sound_SetRecordLevel, \
|
||||
+ (void (*)(sqInt))sound_SetRecordLevel, \
|
||||
sound_GetSwitch, \
|
||||
sound_SetSwitch, \
|
||||
sound_SetDevice \
|
||||
diff --git a/unix/vm/aio.c b/unix/vm/aio.c
|
||||
index 57e054e..f133c8e 100644
|
||||
--- a/unix/vm/aio.c
|
||||
+++ b/unix/vm/aio.c
|
||||
@@ -31,6 +31,7 @@
|
||||
*/
|
||||
|
||||
#include "sqaio.h"
|
||||
+#include "sq.h"
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
||||
diff --git a/unix/vm/sqUnixMain.c b/unix/vm/sqUnixMain.c
|
||||
index 98ea3bc..76391f7 100644
|
||||
--- a/unix/vm/sqUnixMain.c
|
||||
+++ b/unix/vm/sqUnixMain.c
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "sqMemoryAccess.h"
|
||||
#include "sqaio.h"
|
||||
#include "sqUnixCharConv.h"
|
||||
+#include "sqUnixGlobals.h"
|
||||
#include "debug.h"
|
||||
|
||||
#ifdef ioMSecs
|
||||
@@ -42,6 +43,7 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
+#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
@@ -511,6 +513,8 @@ sqInt ioRelinquishProcessorForMicroseconds(sqInt us)
|
||||
|
||||
sqInt ioBeep(void) { return dpy->ioBeep(); }
|
||||
|
||||
+extern sqInt printCallStack(void);
|
||||
+
|
||||
#if defined(IMAGE_DUMP)
|
||||
|
||||
static void emergencyDump(int quit)
|
||||
@@ -229,9 +229,9 @@ such as ones for networking and GUI programming.")
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://squeakvm.org/unix/release/"
|
||||
"Squeak-" version "-src.tar.gz"))
|
||||
"Squeak-" version "-src-no-mp3.tar.gz"))
|
||||
(sha256
|
||||
(base32 "0bpwbnpy2sb4gylchfx50sha70z36bwgdxraym4vrr93l8pd3dix"))
|
||||
(base32 "01miyjpka9x24xsp4j54mm9zjiaci670sss50qvd94y5q2iq9cx7"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
;; Make builds bit-reproducible.
|
||||
@@ -243,8 +243,29 @@ such as ones for networking and GUI programming.")
|
||||
"ux_version = \"GNU\";\n"))
|
||||
(substitute* "unix/vm/config.cmake"
|
||||
(("\\(VM_BUILD_STRING.*")
|
||||
"(VM_BUILD_STRING \\\"Built with GNU Guix\\\")"))
|
||||
#t))))
|
||||
"(VM_BUILD_STRING \\\"Built with GNU Guix\\\")"))))
|
||||
(patches (search-patches "squeak-vm-gcc-14-fix.patch"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list #:tests? #f ;no check target
|
||||
#:configure-flags
|
||||
#~(list (string-append "-DVM_HOST=" #$(nix-system->gnu-triplet
|
||||
(or (%current-target-system)
|
||||
(%current-system))))
|
||||
(string-append "-DVM_VERSION=" #$version)
|
||||
"-DCMAKE_VERBOSE_MAKEFILE=ON")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'chdir
|
||||
(lambda _
|
||||
(chdir "unix")))
|
||||
(add-after 'chdir 'remove-hardcoded-PATH
|
||||
(lambda _
|
||||
;; Remove hard-coded FHS PATH entries.
|
||||
(substitute* '("cmake/squeak.in"
|
||||
"cmake/squeak.sh.in")
|
||||
(("^PATH=.*") "")))))))
|
||||
(native-inputs (list pkg-config))
|
||||
(inputs
|
||||
(list alsa-lib
|
||||
dbus
|
||||
@@ -253,32 +274,6 @@ such as ones for networking and GUI programming.")
|
||||
libxrender
|
||||
mesa
|
||||
pulseaudio))
|
||||
(native-inputs
|
||||
(list pkg-config))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ;no check target
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'remove-hardcoded-PATH
|
||||
(lambda _
|
||||
;; Remove hard-coded FHS PATH entries.
|
||||
(substitute* '("unix/cmake/squeak.in"
|
||||
"unix/cmake/squeak.sh.in")
|
||||
(("^PATH=.*") ""))
|
||||
#t))
|
||||
(add-before 'configure 'enter-build-directory
|
||||
(lambda _
|
||||
(mkdir "build")
|
||||
(chdir "build")
|
||||
#t))
|
||||
(replace 'configure
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(invoke "../unix/cmake/configure"
|
||||
(string-append "--prefix=" out)
|
||||
"--without-quartz")
|
||||
#t))))))
|
||||
(synopsis "Smalltalk programming language and environment")
|
||||
(description "Squeak is a full-featured implementation of the Smalltalk
|
||||
programming language and environment based on (and largely compatible with)
|
||||
|
||||
Reference in New Issue
Block a user