Ravenports generated: 05 Aug 2023 23:27
[ravenports.git] / bucket_48 / reduce
1 # Buildsheet autogenerated by ravenadm tool -- Do not edit.
2
3 NAMEBASE=               reduce
4 VERSION=                20230308
5 KEYWORDS=               math lang
6 VARIANTS=               standard
7 SDESC[standard]=        Codemist Std Lisp general-purpose computer system
8 HOMEPAGE=               http://www.reduce-algebra.com/
9 CONTACT=                nobody
10
11 DOWNLOAD_GROUPS=        main
12 SITES[main]=            SF/reduce-algebra/snapshot_2023-03-08
13 DISTFILE[1]=            Reduce-svn6547-src.tar.gz:main
14 DF_INDEX=               1
15 SPKGS[standard]=        complete
16                         primary
17                         docs
18
19 OPTIONS_AVAILABLE=      none
20 OPTIONS_STANDARD=       none
21
22 BUILD_DEPENDS=          libtool:single:standard
23                         autoconf:single:standard
24                         automake:single:standard
25 RUN_DEPENDS=            gnuplot:complete:standard
26
27 USES=                   gmake jpeg png tiff ncurses shebangfix zstd:build
28                         zlib:build fontconfig:build
29 XORG_COMPONENTS=        x11 xext xft xrender
30
31 DISTNAME=               Reduce-svn6547-src
32
33 LICENSE=                BSD2CLAUSE:primary
34 LICENSE_FILE=           BSD2CLAUSE:{{WRKSRC}}/csl/reduce.doc/BSD-LICENSE.txt
35 LICENSE_SCHEME=         solo
36
37 FPC_EQUIVALENT=         math/reduce
38 SHEBANG_ADD_SH=         scripts/here.sh
39
40 MUST_CONFIGURE=         gnu
41 CONFIGURE_TARGET=       {{VAR1}}
42 CONFIGURE_ARGS=         --with-csl
43                         --with-autogen=no
44                         AMDEP_TRUE="\#"
45                         am__fastdepCC_TRUE="\#"
46                         am__fastdepCXX_TRUE="\#"
47
48 BUILD_TARGET=           #
49 SINGLE_JOB=             yes
50
51 SUB_FILES=              redcsl
52
53 CPPFLAGS=               `freetype-config
54                         --cflags`
55                         -I{{NCURSESINC}}
56                         -fcommon
57 LDFLAGS=                `freetype-config
58                         --libs`
59                         -ltinfo
60 VAR_OPSYS[freebsd]=     VAR1={{ARCH_STANDARD}}-raven-freebsd{{MAJOR}}
61 VAR_OPSYS[sunos]=       VAR1={{ARCH_STANDARD}}-raven-solaris2.10
62 VAR_OPSYS[linux]=       VAR1={{ARCH_STANDARD}}-raven-linux-gnu{{MAJOR}}
63 VAR_OPSYS[netbsd]=      VAR1={{ARCH_STANDARD}}-raven-netbsd{{MAJOR}}
64 VAR_OPSYS[dragonfly]=   VAR1={{ARCH_STANDARD}}-raven-dragonfly{{MAJOR}}
65 VAR_OPSYS[midnightbsd]= VAR1=x86_64-raven-freebsd12.3
66
67 post-patch:
68         ${REINPLACE_CMD} -e 's|/usr/pkg/|${LOCALBASE}/|' \
69                 -e 's|`./config.guess`|${CONFIGURE_TARGET}|' \
70                 ${WRKSRC}/scripts/make.sh
71         ${REINPLACE_CMD} -e '/AC_CONFIG_MACRO_DIR(/d' \
72                 ${WRKSRC}/configure.ac \
73                 ${WRKSRC}/generic/newfront/configure.ac \
74                 ${WRKSRC}/csl/cslbase/configure.ac \
75                 ${WRKSRC}/psl/configure.ac
76         ${REINPLACE_CMD} -e "s|am__api_version='1.15'|am__api_version='1.16'|" \
77                 ${WRKSRC}/csl/cslbase/aclocal.m4 \
78                 ${WRKSRC}/psl/aclocal.m4
79
80 pre-configure:
81         (cd ${WRKSRC} && ./autogen.sh --sequential --with-csl)
82
83 do-install:
84         ${MKDIR} ${STAGEDIR}${PREFIX}/share/reduce ${STAGEDIR}${STD_DOCDIR}
85         ${INSTALL_DATA} ${WRKSRC}/cslbuild/${CONFIGURE_TARGET}/csl/reduce.img \
86                 ${STAGEDIR}${PREFIX}/share/reduce
87         ${INSTALL_PROGRAM} ${WRKSRC}/cslbuild/${CONFIGURE_TARGET}/csl/reduce \
88                 ${STAGEDIR}${PREFIX}/share/reduce
89         ${INSTALL_SCRIPT} ${WRKDIR}/redcsl ${STAGEDIR}${PREFIX}/bin/
90         ${INSTALL_MAN} ${FILESDIR}/redcsl.1 ${STAGEDIR}${MANPREFIX}/man/man1/
91         (cd ${WRKSRC}/cslbuild/${CONFIGURE_TARGET}/csl/reduce.doc && \
92                 ${COPYTREE_SHARE} . ${STAGEDIR}${STD_DOCDIR})
93         ${RM} ${STAGEDIR}${STD_DOCDIR}/*-LICENSE.txt
94         ${RM} ${STAGEDIR}${STD_DOCDIR}/LGPL-2.1.txt
95         (cd ${WRKSRC}/cslbuild/${CONFIGURE_TARGET}/csl/reduce.fonts && \
96                 ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/share/reduce/reduce.fonts)
97         ${INSTALL_DATA} ${WRKSRC}/doc/manual/manual.pdf \
98                 ${STAGEDIR}${STD_DOCDIR}
99         ${INSTALL_DATA} ${WRKSRC}/doc/primers/*.pdf \
100                 ${STAGEDIR}${STD_DOCDIR}
101
102 [FILE:1067:descriptions/desc.primary]
103 REDUCE Codemist Standard Lisp, (CSL) version
104
105 REDUCE is an interactive system for general algebraic computations of
106 interest to mathematicians, scientists and engineers.
107
108 CSL is a newer Lisp system that continues to evolve and is now written 
109 completely in C++, which makes it very easy to port to a new machine. 
110 Like PSL, it is a faithful implementation of Standard Lisp and has been 
111 optimized for running REDUCE. It requires a very small memory partition 
112 for its Lisp support. Furthermore, most of the REDUCE facilities are 
113 supported as machine independent pseudocode, which is quite compact. In 
114 the worst case, the performance of this system is about a factor of two 
115 slower than PSL, though in many cases it matches PSL performance. 
116 However, the memory use is smaller. All CSL versions are distributed with 
117 sufficient CSL support to run on the given computing system. This is also
118 an ideal system for those wishing to embed algebraic calculations in a C 
119 or C++ programming environment. The developer of CSL before it became 
120 Open Source was Codemist Ltd.
121
122
123 [FILE:104:distinfo]
124 2890beac30d8c497c58bd7c73f6c507ecabe318ace28e85d9c5a15e7884ea5a8    242413830 Reduce-svn6547-src.tar.gz
125
126
127 [FILE:730:manifests/plist.primary]
128 bin/redcsl
129 share/man/man1/redcsl.1.gz
130 share/reduce/
131  reduce
132  reduce.img
133 share/reduce/reduce.fonts/
134  README
135  README.BaKoMa
136  README.cmps-fonts
137  cmex10.pfa
138  cmex10.pfb
139  cmex10.ttf
140  cmex7.ttf
141  cmex8.ttf
142  cmex9.ttf
143  cmmi10.pfa
144  cmmi10.pfb
145  cmmi10.ttf
146  cmmi12.ttf
147  cmmi5.ttf
148  cmmi6.ttf
149  cmmi7.ttf
150  cmmi8.ttf
151  cmmi9.ttf
152  cmr10.pfa
153  cmr10.pfb
154  cmr10.ttf
155  cmr12.ttf
156  cmr17.ttf
157  cmr5.ttf
158  cmr6.ttf
159  cmr7.ttf
160  cmr8.ttf
161  cmr9.ttf
162  cmsy10.pfa
163  cmsy10.pfb
164  cmsy10.ttf
165  cmsy5.ttf
166  cmsy6.ttf
167  cmsy7.ttf
168  cmsy8.ttf
169  cmsy9.ttf
170  cmuntt.pfb
171  cmuntt.ttf
172  fonts.dir
173  fonts.scale
174 share/reduce/reduce.fonts/pfmfiles/
175  cmex10.pfm
176  cmmi10.pfm
177  cmr10.pfm
178  cmsy10.pfm
179 share/reduce/reduce.fonts/src/
180  cmex10.asm.gz
181  cmmi10.asm.gz
182  cmr10.asm.gz
183  cmsy10.asm.gz
184
185
186 [FILE:741:manifests/plist.docs]
187 share/doc/reduce/
188  abstract.tex
189  acknowl.tex
190  appenda.tex
191  aprop.tex
192  cfrac.tex
193  command.tex
194  convert.tex
195  exprn.tex
196  header.tex
197  hephys.tex
198  heugcd.tex
199  index.html
200  insidereduce.pdf
201  inter.tex
202  intro.tex
203  io.tex
204  list.tex
205  macros.tex
206  maintain.tex
207  manual.pdf
208  manual.tex
209  map.tex
210  matrix.tex
211  oper.tex
212  oper2.tex
213  polyrat.tex
214  primer.pdf
215  proc.tex
216  progstr.tex
217  r38_0001.html
218  r38_0050.html
219  r38_0100.html
220  r38_0150.html
221  r38_0200.html
222  r38_0250.html
223  r38_0300.html
224  r38_0350.html
225  r38_0400.html
226  r38_0450.html
227  r38_0500.html
228  r38_0550.html
229  r38_0600.html
230  r38_0650.html
231  r38_idx.html
232  redlogo.gif
233  rememb.tex
234  rest.tex
235  rlisp88.tex
236  rlispref.tex
237  sl.pdf
238  solve.tex
239  statemnt.tex
240  structr.tex
241  subst.tex
242  symbolic.tex
243  title.tex
244  util.tex
245
246
247 [FILE:1478:patches/patch-csl_cslbase_arith08.cpp]
248 --- csl/cslbase/arith08.cpp.orig        2023-01-02 21:45:46 UTC
249 +++ csl/cslbase/arith08.cpp
250 @@ -880,13 +880,13 @@ inline int nlz(uint64_t x)
251  #ifndef POPCOUNT_DEFINED
252  #ifdef __GNUC__
253  
254 -inline int popcount(uint64_t x)
255 +inline int my_popcount(uint64_t x)
256  {   return __builtin_popcountll(x);
257  }
258  
259  #else // __GNUC__
260  
261 -inline int popcount(uint64_t x)
262 +inline int my_popcount(uint64_t x)
263  {   x = (x & 0x5555555555555555U) + (x >> 1 & 0x5555555555555555U);
264      x = (x & 0x3333333333333333U) + (x >> 2 & 0x3333333333333333U);
265      x = x + (x >> 4) & 0x0f0f0f0f0f0f0f0fU;
266 @@ -902,19 +902,19 @@ static LispObject Llogcount(LispObject e
267  {   SingleValued fn;
268      if (is_fixnum(a))
269      {   intptr_t n = int_of_fixnum(a);
270 -        if (a >= 0) return fixnum_of_int(popcount(n));
271 -        else return fixnum_of_int(popcount(~n));
272 +        if (a >= 0) return fixnum_of_int(my_popcount(n));
273 +        else return fixnum_of_int(my_popcount(~n));
274      }
275      else if (is_bignum(a))
276      {   size_t len = (length_of_header(numhdr(a)) - CELL)/4;
277          int n = 0;
278          if ((int32_t)bignum_digits(a)[len-1] < 0)
279          {   for (size_t i=0; i<len; i++)
280 -                n += popcount(~bignum_digits(a)[i]);
281 +                n += my_popcount(~bignum_digits(a)[i]);
282          }
283          else
284          {   for (size_t i=0; i<len; i++)
285 -                n += popcount(bignum_digits(a)[i]);
286 +                n += my_popcount(bignum_digits(a)[i]);
287          }
288          return fixnum_of_int(n);
289      }
290
291
292 [FILE:7925:files/redcsl.1]
293 .TH REDCSL 1 "2010 October 10" "redcsl"
294 .
295 .
296 .SH NAME
297 redcsl \- Run REDUCE under CSL
298 .
299 .
300 .SH Synopsis
301 .B redcsl
302 [
303 .I command-line switches
304 ] [
305 .I file ...\&
306 ]
307 .
308 .
309 .SH DESCRIPTION
310 .I redcsl
311 runs REDUCE based on the 
312 .BR CSL
313 Lisp system.
314 .
315 .
316 .SH REDCSL Options
317 .TP
318 .I file
319 read input from file. 
320
321 After all other options have been processed, the files given on the rest of
322 the command line are read in and processed. A filename of
323 .B -
324 can be used to designate standard input.
325 .TP
326 .B -b [OIP]
327 tells the system to avoid any attempt to recolour prompts and input text.
328 It will mainly be needed on X terminals that have been set up so that they
329 use colours that make the defaults here unhelpful, like white-on-black.
330
331 This option can be followed by colour specifications to make things yet
332 more specific. It is supposed to be the idea that three colours can be
333 specified after it for output, input and prompts, with the letters KRGYbMCW
334 standing for blacK, Red, Green, Yellow, blue, Magenta, Cyan and White.
335
336 This may not fully work yet!
337 .TP
338 .BI -d " symbol[=value]"
339 defines Lisp symbol
340 .I symbol
341 at system start, with value 
342 .I value
343 .
344 .TP
345 .B -g
346 enables debugging mode.  It sets a lisp variable
347 .SB !*backtrace
348 and arranges that all backtraces are displayed notwithstanding use of
349 .SB errorset.
350 .TP
351 .BI \-i " imagefile\fR,\fP " \-i-
352 CSL and Reduce use image files to keep both initial heap images and
353 .I fasl
354 loadable modules. By default if the executable launched has some name,
355 say xxx, then an image file xxx.img is used. But to support greater
356 generality 
357 .B -i
358 introduces a new image,
359 .B -i-
360 indicates the default one and a sequence of such directives list
361 image files that are searched in the order given. These are read-only.
362 The similar option 
363 .B -o
364 equally introduces image files that are scanned for input, but that
365 can also be used for output. Normally there would only be one
366 .B -o
367 directive.
368 .TP
369 .BI -j " dumpfile"
370 dumps a record of all the files read during the Lisp run into
371 .I dumpfile
372 with a view that it can be included in a Makefile to document dependencies.
373 .TP
374 .BI -k " nnn[/ss]"
375 sets the size of the heap to be used.  If 
376 .BI -k nnn 
377 is given then that much
378 memory will be allocated and the heap will never expand.  Without this 
379 option a default amount is used, and (on many machines) it will grow
380 if space seems tight.
381
382 If this options is given as
383 .B -k 
384 .I nnn/ss
385 then ss is the number of CSL pages to be allocated to the Lisp stack.
386 The default value (which is 1) should suffice for almost all users, and
387 it should be noted that the C stack is separate from and independent of
388 this one and it too could overflow.
389
390 A suffix K, M or G on the number indicates units of kilobytes,
391 megabytes or gigabytes, with megabytes being the default. so
392 .B -k200M
393 might represent typical usage.
394 .TP
395 .BI -l " logfile"
396 sends a copy of the standard output to 
397 .I logfile\fR.\fP
398 It is very much as if the Lisp function
399 .SB (spool logfile)
400 had been invoked at the start of the run.
401 .TP
402 .B -n
403 ignore startup function.
404
405 Normally when the system is started it will run a 
406 .I restart function
407 as indicated in its heap image. There can be cases where a heap image has
408 been created in a bad way such that the saved restart function always fails
409 abruptly, and hence working out what was wrong becomes hard. In such cases
410 it may be useful to give the
411 .B -n
412 options that forces CSL to ignore any startup function and merely begin
413 in a minimal Lisp-style read-eval-print loop.
414 .TP 
415 .B -o
416 see 
417 .B -i
418 .TP
419 .B -q
420 quiet run: sets
421 .SB !*echo
422 to
423 .SB nil
424 and switches off garbage collector messages.
425 .TP
426 .BI -r " nnn[,mmm]"
427 seed random number generator.
428
429 The random-number generator in CSL is normally initialised to a value
430 based on the time of day and is hence not reproducible from run to run.
431 In many cases that behavious is desirable, but for debugging it can be useful
432 to force a seed. The directive
433 .B -r 
434 .I nnn[,mmm]
435 sets the seed to up to 64 bits taken from the values 
436 .I nnn 
437 and 
438 .I mmm. 
439 THe second value is optional, and specifying 
440 .B -r0
441 explicitly asks for the non-reproducible behaviour (I hope). Note that
442 the main Reduce-level random number source is coded at a higher level
443 and does not get reset this way - this is the lower level CSL
444 generator.
445 .TP 
446 .B -s
447 sets the Lisp variable 
448 .SB !*plap
449 and hence the compiler generates an assembly listing.
450 .TP
451 .BI -t " name"
452 reports the time-stamp on the named module, and then exits. This is
453 for use in perl scripts and the like, and is needed because the stamps
454 on modules within an image or library file are not otherwise instantly
455 available.
456
457 Note that especially on windowed systems it may be necessary to use
458 this with 
459 .BI -- " filename"
460 since the information generated here goes to the default output, which
461 in some cases is just the screen.
462 .TP
463 .BI -u " symbol"
464 forcibly undefine a Lisp symbol. There are probably very very few
465 cases where it is useful since I do not have a large number of
466 system-specific predefined names.
467 .TP
468 .B -v
469 An option to make things mildly more verbose. It displays more of a
470 banner at startup and switches garbage collection messages on.
471 .TP
472 .B -w
473 force console mode.
474
475 On a typical system if the system is launched it creates a new window and uses
476 its own windowed intarface in that. If it is run such that at startup the
477 standard input or output are associated with a file or pipe, or under X the
478 variable 
479 .SB DISPLAY
480 is not set it will try to start up in console
481 mode. The flag 
482 .B -w
483 indicates that the system should run in console
484 more regadless, while 
485 .B -w+
486 attempts a window even if that seems doomed to failure. When running
487 the system to obey a script it will often make sense to use the
488 .B -w
489 option. Note that on Windows the system is provided as
490 two separate (but almost identical) binaries. For example the file
491 .SB csl.exe
492 is linked in windows mode. A result is that if launched from the
493 command line it detaches from its console, and if launched by
494 double-clicking it does not create a console. It is in fact very ugly
495 when double clicking on an application causes an unwanted console
496 window to appear. In contrast
497 .SB csl.com
498 is a console mode version of just the same program, so when launched
499 from a command line it can communicate with the console in the
500 ordinary expected manner.
501 .TP
502 .B -z 
503 start without image.
504
505 When bootstrapping it is necessary to start up the system for one initial time
506 without the benefit of any image file at all. This option makes
507 this happen, so when it is specified the system starts up with a minimal
508 environment and only those capabilities that are present in the CSL
509 kernel. It will normally make sense to start loading some basic Lisp
510 definitions rather rapidly. The files
511 .SB compat.lsp
512 ,
513 .SB extras.lsp 
514 and 
515 .SB compiler.lsp
516 have Lisp source for the main things I use, and once they are loaded
517 the Lisp compiler can be used to compile itself.
518 .TP
519 .B --help
520 It is probably obvious what this option does! But in particular it
521 displays an explanation of the 
522 .B --dump-source
523 option, and hence should count as a prominent and easy-to-find way of
524 alerting people to their rights and obligations. Note that on Windows
525 of the application was linked as a windows binary it carefully creates
526 a console to display the help text in, and organizes a delay to give
527 people a chance to read it.
528 .TP
529 .BI -- " filename"
530 If the application is run in console mode then its standard output could
531 be redirected to a file using shell facilities. But the
532 .B --
533 directive (followed by a file name) redirects output within the Lisp
534 rather than outside it. If this is done a very limited capability for
535 sending progress or status reports to stderr (or the title-bar when
536 running in windowed mode) remains via the 
537 .SB report!-right
538 function.
539
540 The 
541 .B -w 
542 option may frequently make sense in such cases, but if that
543 is not used and the system tries to run in a window it will create it
544 starting off minimised.
545 .
546
547
548 [FILE:50:files/redcsl.in]
549 #!/bin/sh
550
551 exec %%PREFIX%%/share/reduce/reduce $*
552