Project

General

Profile

CoCoALib-0.99800_gui.sh

Ulrich von der Ohe, 07 Apr 2022 03:53

 
1
#!/usr/bin/env sh
2

    
3
# In the CoCoALib-0.99800 release some files necessary for building the GUI
4
# are missing. See https://cocoa.dima.unige.it/redmine/issues/1393#note-13
5
# This script copies these files from the previous release 0.99718 and patches
6
# them for Qt5 support.
7
#
8
# Executing this script in an empty folder will download both releases of
9
# CoCoALib; releases already present will not be downloaded again.
10
#
11
# The files in the folder CoCoALib-0.99800_gui will afterwards be patched. To
12
# compile with the Qt5 GUI pass the option --Qt-gui to the configure script.
13

    
14
VER1=0.99718
15
VER2=0.99800
16

    
17
COCOALIB_VER1_DIR=CoCoALib-$VER1
18
COCOALIB_VER2_DIR=CoCoALib-$VER2
19

    
20
COCOALIB_VER1_SHA256=1b822387c4482c1e81b1d060abca726a27507702c7c642c10c094527fc0e7bbc
21
#COCOALIB_VER2_SHA256=6f38dbf9156d5598e67c05c9557f03281880527afd579d71cd4076be535ec523
22
COCOALIB_VER2_SHA256=f8bb227e2e1729e171cf7ac2008af71df25914607712c35db7bcb5a044a928c6
23

    
24
# Check if directory is clean enough:
25

    
26
echo -n "Checking directory... "
27
if [ -e $COCOALIB_VER1_DIR ]; then
28
    echo "Error: $COCOALIB_VER1_DIR already exists, exiting"
29
    exit 1
30
fi
31
if [ -e $COCOALIB_VER2_DIR ]; then
32
    echo "Error: $COCOALIB_VER2_DIR already exists, exiting"
33
    exit 1
34
fi
35
if [ -e ${COCOALIB_VER2_DIR}_gui ]; then
36
    echo "Error: ${COCOALIB_VER2_DIR}_gui already exists, exiting"
37
    exit 1
38
fi
39
echo "done"
40

    
41
# Download CoCoALib and check SHA256 sums:
42

    
43
for i in $VER1 $VER2; do
44
    if [ $i = $VER1 ]; then
45
        SHA256SUM=$COCOALIB_VER1_SHA256
46
    elif [ $i = $VER2 ]; then
47
        SHA256SUM=$COCOALIB_VER2_SHA256
48
    else
49
        echo "An error occured: \$i = $i" 2>&1
50
        exit 1
51
    fi
52
    if [ ! -e CoCoALib-$i.tgz ]; then
53
        echo -n "Downloading CoCoALib-$i.tgz... "
54
        wget -q https://cocoa.dima.unige.it/cocoa/cocoalib/tgz/CoCoALib-$i.tgz
55
        echo "done"
56
    fi
57
    echo -n "Verifying CoCoALib-$i.tgz... "
58
    sha256sum --status -c <<-EOF
59
	$SHA256SUM  CoCoALib-$i.tgz
60
	EOF
61
    if [ $? -ne 0 ]; then
62
        echo "\nCoCoALib-$i.tgz invalid" 1>&2
63
        exit 1
64
    fi
65
    echo "done"
66
done
67

    
68
# Unpack CoCoALib:
69

    
70
for i in $VER1 $VER2; do
71
    echo -n "Unpacking CoCoALib-$i... "
72
    tar xf CoCoALib-$i.tgz
73
    echo "done"
74
done
75

    
76
# Copy the missing files from the old release to the new one:
77

    
78
echo -n "Copying files... "
79
SRC=$COCOALIB_VER1_DIR
80
DST=$COCOALIB_VER2_DIR
81

    
82
mkdir -p $DST/src/CoCoA-5
83
cp -p \
84
$SRC/src/CoCoA-5/C5.pro.in \
85
$SRC/src/CoCoA-5/C5.qrc \
86
$SRC/src/CoCoA-5/Console.ui \
87
$SRC/src/CoCoA-5/Debugger.ui \
88
$SRC/src/CoCoA-5/MainWindow.ui \
89
$SRC/src/CoCoA-5/make-c5makefile.sh \
90
$SRC/src/CoCoA-5/make-gui-finish.sh \
91
$SRC/src/CoCoA-5/make-qcodeeditmakefile.sh \
92
$SRC/src/CoCoA-5/SourceEditor.ui \
93
$DST/src/CoCoA-5
94

    
95
mkdir -p $DST/src/CoCoA-5/images
96
cp -p \
97
$SRC/src/CoCoA-5/images/applications-graphics.png \
98
$SRC/src/CoCoA-5/images/CoCoALogo-icon.png \
99
$SRC/src/CoCoA-5/images/dialog-information.png \
100
$SRC/src/CoCoA-5/images/document-new.png \
101
$SRC/src/CoCoA-5/images/document-open.png \
102
$SRC/src/CoCoA-5/images/document-save-as.png \
103
$SRC/src/CoCoA-5/images/document-save.png \
104
$SRC/src/CoCoA-5/images/emblem-system.png \
105
$SRC/src/CoCoA-5/images/go-jump.png \
106
$SRC/src/CoCoA-5/images/go-last.png \
107
$SRC/src/CoCoA-5/images/go-next.png \
108
$SRC/src/CoCoA-5/images/go-top.png \
109
$SRC/src/CoCoA-5/images/go-up.png \
110
$SRC/src/CoCoA-5/images/help-browser.png \
111
$SRC/src/CoCoA-5/images/preferences-desktop-font.png \
112
$SRC/src/CoCoA-5/images/preferences-desktop-keyboard-shortcuts.png \
113
$SRC/src/CoCoA-5/images/preferences-system.png \
114
$SRC/src/CoCoA-5/images/preferences-system-windows.png \
115
$SRC/src/CoCoA-5/images/process-stop.png \
116
$SRC/src/CoCoA-5/images/system-log-out.png \
117
$SRC/src/CoCoA-5/images/utilities-system-monitor.png \
118
$SRC/src/CoCoA-5/images/utilities-terminal.png \
119
$DST/src/CoCoA-5/images
120

    
121
mkdir -p $DST/src/CoCoA-5/QCodeEdit/document
122
cp -p \
123
$SRC/src/CoCoA-5/QCodeEdit/document/qdocumentbuffer.cpp \
124
$SRC/src/CoCoA-5/QCodeEdit/document/qdocumentbuffer.h \
125
$SRC/src/CoCoA-5/QCodeEdit/document/qdocumentcommand.cpp \
126
$SRC/src/CoCoA-5/QCodeEdit/document/qdocumentcommand.h \
127
$SRC/src/CoCoA-5/QCodeEdit/document/qdocument.cpp \
128
$SRC/src/CoCoA-5/QCodeEdit/document/qdocumentcursor.cpp \
129
$SRC/src/CoCoA-5/QCodeEdit/document/qdocumentcursor.h \
130
$SRC/src/CoCoA-5/QCodeEdit/document/qdocumentcursor_p.h \
131
$SRC/src/CoCoA-5/QCodeEdit/document/qdocument.h \
132
$SRC/src/CoCoA-5/QCodeEdit/document/qdocumentline.cpp \
133
$SRC/src/CoCoA-5/QCodeEdit/document/qdocumentline.h \
134
$SRC/src/CoCoA-5/QCodeEdit/document/qdocumentline_p.h \
135
$SRC/src/CoCoA-5/QCodeEdit/document/qdocument_p.h \
136
$SRC/src/CoCoA-5/QCodeEdit/document/qdocumentsearch.cpp \
137
$SRC/src/CoCoA-5/QCodeEdit/document/qdocumentsearch.h \
138
$DST/src/CoCoA-5/QCodeEdit/document
139

    
140
mkdir -p $DST/src/CoCoA-5/QCodeEdit/images
141
cp -p \
142
$SRC/src/CoCoA-5/QCodeEdit/images/bold.png \
143
$SRC/src/CoCoA-5/QCodeEdit/images/closeall.png \
144
$SRC/src/CoCoA-5/QCodeEdit/images/comment.png \
145
$SRC/src/CoCoA-5/QCodeEdit/images/copy.png \
146
$SRC/src/CoCoA-5/QCodeEdit/images/cut.png \
147
$SRC/src/CoCoA-5/QCodeEdit/images/down.png \
148
$SRC/src/CoCoA-5/QCodeEdit/images/editor.png \
149
$SRC/src/CoCoA-5/QCodeEdit/images/Edyuk.qrc \
150
$SRC/src/CoCoA-5/QCodeEdit/images/exit.png \
151
$SRC/src/CoCoA-5/QCodeEdit/images/fillcolor.png \
152
$SRC/src/CoCoA-5/QCodeEdit/images/find.png \
153
$SRC/src/CoCoA-5/QCodeEdit/images/formats.png \
154
$SRC/src/CoCoA-5/QCodeEdit/images/goto.png \
155
$SRC/src/CoCoA-5/QCodeEdit/images/indent.png \
156
$SRC/src/CoCoA-5/QCodeEdit/images/italic.png \
157
$SRC/src/CoCoA-5/QCodeEdit/images/new.png \
158
$SRC/src/CoCoA-5/QCodeEdit/images/open.png \
159
$SRC/src/CoCoA-5/QCodeEdit/images/package_settings.png \
160
$SRC/src/CoCoA-5/QCodeEdit/images/paste.png \
161
$SRC/src/CoCoA-5/QCodeEdit/images/print.png \
162
$SRC/src/CoCoA-5/QCodeEdit/images/redo.png \
163
$SRC/src/CoCoA-5/QCodeEdit/images/reload.png \
164
$SRC/src/CoCoA-5/QCodeEdit/images/replace.png \
165
$SRC/src/CoCoA-5/QCodeEdit/images/saveas.png \
166
$SRC/src/CoCoA-5/QCodeEdit/images/save.png \
167
$SRC/src/CoCoA-5/QCodeEdit/images/settings.png \
168
$SRC/src/CoCoA-5/QCodeEdit/images/strikeout.png \
169
$SRC/src/CoCoA-5/QCodeEdit/images/strokecolor.png \
170
$SRC/src/CoCoA-5/QCodeEdit/images/textcolor.png \
171
$SRC/src/CoCoA-5/QCodeEdit/images/uncomment.png \
172
$SRC/src/CoCoA-5/QCodeEdit/images/underline.png \
173
$SRC/src/CoCoA-5/QCodeEdit/images/undo.png \
174
$SRC/src/CoCoA-5/QCodeEdit/images/unindent.png \
175
$SRC/src/CoCoA-5/QCodeEdit/images/up.png \
176
$DST/src/CoCoA-5/QCodeEdit/images
177

    
178
mkdir -p $DST/src/CoCoA-5/QCodeEdit/qnfa
179
cp -p \
180
$SRC/src/CoCoA-5/QCodeEdit/qnfa/light_vector.h \
181
$SRC/src/CoCoA-5/QCodeEdit/qnfa/qnfa.cpp \
182
$SRC/src/CoCoA-5/QCodeEdit/qnfa/qnfadefinition.cpp \
183
$SRC/src/CoCoA-5/QCodeEdit/qnfa/qnfadefinition.h \
184
$SRC/src/CoCoA-5/QCodeEdit/qnfa/qnfa.h \
185
$SRC/src/CoCoA-5/QCodeEdit/qnfa/xml2qnfa.cpp \
186
$DST/src/CoCoA-5/QCodeEdit/qnfa
187

    
188
mkdir -p $DST/src/CoCoA-5/QCodeEdit/snippets
189
cp -p \
190
$SRC/src/CoCoA-5/QCodeEdit/snippets/qsnippetbinding.cpp \
191
$SRC/src/CoCoA-5/QCodeEdit/snippets/qsnippetbinding.h \
192
$SRC/src/CoCoA-5/QCodeEdit/snippets/qsnippet.cpp \
193
$SRC/src/CoCoA-5/QCodeEdit/snippets/qsnippetedit.cpp \
194
$SRC/src/CoCoA-5/QCodeEdit/snippets/qsnippetedit.h \
195
$SRC/src/CoCoA-5/QCodeEdit/snippets/qsnippet.h \
196
$SRC/src/CoCoA-5/QCodeEdit/snippets/qsnippetmanager.cpp \
197
$SRC/src/CoCoA-5/QCodeEdit/snippets/qsnippetmanager.h \
198
$SRC/src/CoCoA-5/QCodeEdit/snippets/qsnippetpatternloader.h \
199
$SRC/src/CoCoA-5/QCodeEdit/snippets/qsnippet_p.h \
200
$SRC/src/CoCoA-5/QCodeEdit/snippets/snippetedit.ui \
201
$DST/src/CoCoA-5/QCodeEdit/snippets
202

    
203
mkdir -p $DST/src/CoCoA-5/QCodeEdit/widgets
204
cp -p \
205
$SRC/src/CoCoA-5/QCodeEdit/widgets/editconfig.ui \
206
$SRC/src/CoCoA-5/QCodeEdit/widgets/formatconfig.ui \
207
$SRC/src/CoCoA-5/QCodeEdit/widgets/gotolinedialog.ui \
208
$SRC/src/CoCoA-5/QCodeEdit/widgets/gotoline.ui \
209
$SRC/src/CoCoA-5/QCodeEdit/widgets/qcalltip.cpp \
210
$SRC/src/CoCoA-5/QCodeEdit/widgets/qcalltip.h \
211
$SRC/src/CoCoA-5/QCodeEdit/widgets/qeditconfig.cpp \
212
$SRC/src/CoCoA-5/QCodeEdit/widgets/qeditconfig.h \
213
$SRC/src/CoCoA-5/QCodeEdit/widgets/qfoldpanel.cpp \
214
$SRC/src/CoCoA-5/QCodeEdit/widgets/qfoldpanel.h \
215
$SRC/src/CoCoA-5/QCodeEdit/widgets/qformatconfig.cpp \
216
$SRC/src/CoCoA-5/QCodeEdit/widgets/qformatconfig.h \
217
$SRC/src/CoCoA-5/QCodeEdit/widgets/qgotolinedialog.cpp \
218
$SRC/src/CoCoA-5/QCodeEdit/widgets/qgotolinedialog.h \
219
$SRC/src/CoCoA-5/QCodeEdit/widgets/qgotolinepanel.cpp \
220
$SRC/src/CoCoA-5/QCodeEdit/widgets/qgotolinepanel.h \
221
$SRC/src/CoCoA-5/QCodeEdit/widgets/qlinechangepanel.cpp \
222
$SRC/src/CoCoA-5/QCodeEdit/widgets/qlinechangepanel.h \
223
$SRC/src/CoCoA-5/QCodeEdit/widgets/qlinemarkpanel.cpp \
224
$SRC/src/CoCoA-5/QCodeEdit/widgets/qlinemarkpanel.h \
225
$SRC/src/CoCoA-5/QCodeEdit/widgets/qlinenumberpanel.cpp \
226
$SRC/src/CoCoA-5/QCodeEdit/widgets/qlinenumberpanel.h \
227
$SRC/src/CoCoA-5/QCodeEdit/widgets/qpanel.cpp \
228
$SRC/src/CoCoA-5/QCodeEdit/widgets/qpanel.h \
229
$SRC/src/CoCoA-5/QCodeEdit/widgets/qsearchreplacepanel.cpp \
230
$SRC/src/CoCoA-5/QCodeEdit/widgets/qsearchreplacepanel.h \
231
$SRC/src/CoCoA-5/QCodeEdit/widgets/qsimplecolorpicker.cpp \
232
$SRC/src/CoCoA-5/QCodeEdit/widgets/qsimplecolorpicker.h \
233
$SRC/src/CoCoA-5/QCodeEdit/widgets/qstatuspanel.cpp \
234
$SRC/src/CoCoA-5/QCodeEdit/widgets/qstatuspanel.h \
235
$SRC/src/CoCoA-5/QCodeEdit/widgets/searchreplace.ui \
236
$DST/src/CoCoA-5/QCodeEdit/widgets
237

    
238
mkdir -p $DST/src/CoCoA-5/qxs
239
cp -p \
240
$SRC/src/CoCoA-5/qxs/cocoa5.qnfa \
241
$DST/src/CoCoA-5/qxs
242
echo "done"
243

    
244
# Apply Qt5 patches to the copied files:
245

    
246
echo -n "Applying Qt5 patches to copied files... "
247
patch -p0 -s << 'EOF'
248
diff -Naur CoCoALib-0.99800/src/CoCoA-5/C5.pro.in CoCoALib-0.99800_gui/src/CoCoA-5/C5.pro.in
249
--- CoCoALib-0.99800/src/CoCoA-5/C5.pro.in	2019-12-18 09:25:25.000000000 +0100
250
+++ CoCoALib-0.99800_gui/src/CoCoA-5/C5.pro.in	2022-03-03 20:32:17.711894478 +0100
251
@@ -1,10 +1,10 @@
252
 
253
 #QMAKE_CXXFLAGS += -ansi -Wall -Wextra -pedantic -O0 -g3
254
 #QMAKE_CXXFLAGS += -ansi -Wall -Wextra -pedantic # for bug in gcc-4.5.2
255
-QMAKE_CXXFLAGS += -std=c++11 -ansi -Wall -Wextra -pedantic -O2
256
+QMAKE_CXXFLAGS += -std=c++14 -Wall -pedantic -O2
257
 QMAKE_MAKEFILE = C5Makefile
258
 DESTDIR = .
259
-CONFIG += c++11 debug qt thread
260
+CONFIG += c++14 debug qt thread
261
 TEMPLATE = app
262
 TARGET = C5
263
 DEPENDPATH += .
264
@@ -16,7 +16,7 @@
265
 MOC_DIR = 
266
 UI_DIR =
267
 OBJECTS_DIR = Debug
268
-QT += xml
269
+QT += xml webkitwidgets printsupport
270
 HEADERS += AST.H \
271
            C5.H \
272
 	   CoCoALibSupplement.H \
273
@@ -34,6 +34,7 @@
274
 SOURCES += AST.C \
275
            BuiltInFunctions.C \
276
            BuiltInFunctions-CoCoALib.C \
277
+           BuiltInFunctionsVarArgs-CoCoALib.C \
278
            BuiltInOneLiners-CoCoALib.C \
279
            BuiltInFunctions-Frobby.C \
280
            BuiltInFunctions-GFan.C \
281
@@ -49,6 +50,7 @@
282
            Banner.C \
283
 	   OnlineHelp.C \
284
            VersionInfo.C \
285
-           Parser.C 
286
+           Parser.C \
287
+           globals.C 
288
 RESOURCES += C5.qrc
289
 
290
diff -Naur CoCoALib-0.99800/src/CoCoA-5/QCodeEdit/document/qdocument.cpp CoCoALib-0.99800_gui/src/CoCoA-5/QCodeEdit/document/qdocument.cpp
291
--- CoCoALib-0.99800/src/CoCoA-5/QCodeEdit/document/qdocument.cpp	2010-08-23 21:57:39.000000000 +0200
292
+++ CoCoALib-0.99800_gui/src/CoCoA-5/QCodeEdit/document/qdocument.cpp	2022-02-25 15:35:53.956652017 +0100
293
@@ -6157,7 +6157,8 @@
294
 			
295
 		it = areas.insert(m.line, n);
296
 		
297
-		if ( it != areas.end() && (it - 1) != areas.end() )
298
+		// if ( it != areas.end() && (it - 1) != areas.end() )
299
+		if ( it != areas.end() && it != areas.begin() )
300
 		{
301
 			tmp = it - 1;
302
 			int off = tmp.key() + *tmp - l;
303
diff -Naur CoCoALib-0.99800/src/CoCoA-5/QCodeEdit/document/qdocumentsearch.cpp CoCoALib-0.99800_gui/src/CoCoA-5/QCodeEdit/document/qdocumentsearch.cpp
304
--- CoCoALib-0.99800/src/CoCoA-5/QCodeEdit/document/qdocumentsearch.cpp	2010-08-23 21:57:39.000000000 +0200
305
+++ CoCoALib-0.99800_gui/src/CoCoA-5/QCodeEdit/document/qdocumentsearch.cpp	2022-02-25 15:35:53.956652017 +0100
306
@@ -566,7 +566,7 @@
307
 				{
308
 					QString replacement = m_replace;
309
 					
310
-					for ( int i = m_regexp.numCaptures(); i >= 0; --i )
311
+					for ( int i = m_regexp.captureCount(); i >= 0; --i )
312
 						replacement.replace(QString("\\") + QString::number(i),
313
 											m_regexp.cap(i));
314
 					
315
diff -Naur CoCoALib-0.99800/src/CoCoA-5/QCodeEdit/snippets/qsnippetmanager.h CoCoALib-0.99800_gui/src/CoCoA-5/QCodeEdit/snippets/qsnippetmanager.h
316
--- CoCoALib-0.99800/src/CoCoA-5/QCodeEdit/snippets/qsnippetmanager.h	2010-08-23 21:57:39.000000000 +0200
317
+++ CoCoALib-0.99800_gui/src/CoCoA-5/QCodeEdit/snippets/qsnippetmanager.h	2022-02-25 15:35:53.960652065 +0100
318
@@ -23,6 +23,7 @@
319
 	\brief Definition of the QSnippetManager class
320
 */
321
 
322
+#include <QObject>
323
 #include <QStringList>
324
 
325
 class QSnippet;
326
EOF
327
echo "done"
328

    
329
# Clean up:
330

    
331
echo -n "Cleaning up... "
332
rm -r $COCOALIB_VER1_DIR
333
mv $COCOALIB_VER2_DIR ${COCOALIB_VER2_DIR}_gui
334
echo "done"