Macports Reduce build

Mark Brethen mark.brethen at gmail.com
Mon Sep 24 02:57:49 UTC 2018


I don’t know why he is using a special build of fox but I will forward your comments to the developer. 

Reduce uses a subset of Lisp. Each line of input must end with a semi-colon. 

Instructions to plot cos(x) in reduce using gnuplot:

1. In Terminal, type ‘redcsl' [enter]. This should open the gui in XQuartz. The window will display "Reduce (Free CSL version, revision 4715), 23-Sep-18 …” followed by ‘1:’

2. Type ‘load_package gnuplot;’ [enter]

3. Type ‘plot cos(x);’ [enter]

At this point AquaTerm should open and display a plot of the cosine for -10 < x < 10.




Mark Brethen
mark.brethen at gmail.com



> On Sep 23, 2018, at 9:41 PM, Ryan Schmidt <ryandesign at macports.org> wrote:
> 
> The 52 missing symbols are listed in the error message, but it looks like they're from fox. Reduce wants to build and use its own embedded copy of fox, but I had the MacPorts fox port installed. It looks like the -L flags are in the wrong order when reducebootstrap was being linked, putting -L/opt/local/lib before the -L flag for the directory where the embedded copy of fox is, which caused -lFOX-1.6 to refer to the fox port's library and not the embedded copy, and I guess they're different enough versions that they're not compatible. Deactivating the fox port before building reduce removed that problem. If you can fix the order of the -L flags, that would be good; otherwise, include "PortGroup conflicts_build 1.0" and add "conflicts_build fox".
> 
> Now that I can install it, my "port contents" output looks like what I'd expect; here's the first 20 lines:
> 
> Port reduce contains:
>  /Applications/MacPorts/reduce/bootstrapreduce.app
>  /Applications/MacPorts/reduce/csl.app
>  /Applications/MacPorts/reduce/reduce.app
>  /opt/local/bin/bootstrapreduce
>  /opt/local/bin/csl
>  /opt/local/bin/redcsl
>  /opt/local/bin/redpsl
>  /opt/local/bin/rfcsl
>  /opt/local/bin/rfpsl
>  /opt/local/libexec/reduce/README
>  /opt/local/libexec/reduce/csl/bootstrapreduce.app/Contents/Info.plist
>  /opt/local/libexec/reduce/csl/bootstrapreduce.app/Contents/MacOS/bootstrapreduce
>  /opt/local/libexec/reduce/csl/bootstrapreduce.app/Contents/MacOS/bootstrapreduce.img
>  /opt/local/libexec/reduce/csl/bootstrapreduce.app/Contents/MacOS/reduce.doc/BINARY-LICENSE.txt
>  /opt/local/libexec/reduce/csl/bootstrapreduce.app/Contents/MacOS/reduce.doc/BSD-LICENSE.txt
>  /opt/local/libexec/reduce/csl/bootstrapreduce.app/Contents/MacOS/reduce.doc/LGPL-2.1.txt
>  /opt/local/libexec/reduce/csl/bootstrapreduce.app/Contents/MacOS/reduce.doc/abstract.tex
>  /opt/local/libexec/reduce/csl/bootstrapreduce.app/Contents/MacOS/reduce.doc/acknowl.tex
>  /opt/local/libexec/reduce/csl/bootstrapreduce.app/Contents/MacOS/reduce.doc/appenda.tex
> 
> So getting back to your gnuplot question, since I know nothing about reduce, what do I do to get it try to launch gnuplot?
> 
> \r
> 
> 
> 
> 
> On Sep 23, 2018, at 21:23, Mark Brethen wrote:
> 
>> I built it on Sierra. What’s the missing symbol?
>> 
>> 
>> Mark Brethen
>> mark.brethen at gmail.com
>> 
>> 
>> 
>>> On Sep 23, 2018, at 8:16 PM, Ryan Schmidt wrote:
>>> 
>>> It doesn't build for me...
>>> 
>>> 
>>> Undefined symbols for architecture x86_64:
>>> "directoryp(char*, char const*, unsigned long)", referenced from:
>>>    Ldirectoryp(long, long) in csl-print.o
>>> "fwin_menus(char**, char**, void (*)())", referenced from:
>>>    cslstart(int, char const**, int (*)(int)) in csl-csl.o
>>> "delete_file(char*, char const*, unsigned long)", referenced from:
>>>    Lopen(long, long, long) in csl-print.o
>>>    Ldelete_file(long, long) in csl-print.o
>>> "file_exists(char*, char const*, unsigned long, char*)", referenced from:
>>>    Lfiledate(long, long) in csl-print.o
>>>    CSLtmpnam(char const*, unsigned long) in csl-sysfwin.o
>>> "file_length(char*, char const*, unsigned long)", referenced from:
>>>    Lfile_length(long, long) in csl-print.o
>>> "rename_file(char*, char const*, unsigned long, char*, char const*, unsigned long)", referenced from:
>>>    Lopen(long, long, long) in csl-print.o
>>>    Lrename_file(long, long, long) in csl-print.o
>>> "fwin_getchar()", referenced from:
>>>    wimpget(char*) in csl-sysfwin.o
>>> "fwin_putchar(int)", referenced from:
>>>    char_to_terminal(int, long) in csl-print.o
>>> "fwin_restore()", referenced from:
>>>    cslstart(int, char const**, int (*)(int)) in csl-csl.o
>>> "fwin_startup(int, char const**, int (*)(int, char const**))", referenced from:
>>>    _main in csl-csl.o
>>> "get_truename(char*, char const*, unsigned long)", referenced from:
>>>    Ltruename(long, long) in csl-print.o
>>> "file_readable(char*, char const*, unsigned long)", referenced from:
>>>    Lfile_readable(long, long) in csl-print.o
>>> "fwin_showmath(char const*)", referenced from:
>>>    Lmath_display(long, long) in csl-print.o
>>> "truncate_file(__sFILE*, long)", referenced from:
>>>    finished_with(int) in csl-preserve.o
>>> "file_writeable(char*, char const*, unsigned long)", referenced from:
>>>    Lfile_writeable(long, long) in csl-print.o
>>> "scan_directory(char const*, void (*)(char const*, int, long))", referenced from:
>>>    list_one_library(long, bool) in csl-preserve.o
>>>    Llibrary_members(long, long) in csl-preserve.o
>>> "delete_wildcard(char*, char const*, unsigned long)", referenced from:
>>>    Ldelete_wildcard(long, long) in csl-print.o
>>> "fwin_report_mid(char const*)", referenced from:
>>>    Lwindow_heading2(long, long, long) in csl-print.o
>>> "fwin_set_lookup(char* (*)(char*, int))", referenced from:
>>>    _main in csl-csl.o
>>> "fwin_set_prompt(char const*)", referenced from:
>>>    interrupted(long) in csl-csl.o
>>>    Lsetpchar(long, long) in csl-fasl.o
>>> "fwin_windowmode()", referenced from:
>>>    set_up_variables(int) in csl-restart.o
>>>    interrupted(long) in csl-csl.o
>>> "change_directory(char*, char const*, unsigned long)", referenced from:
>>>    Lchange_directory(long, long) in csl-print.o
>>> "create_directory(char*, char const*, unsigned long)", referenced from:
>>>    Lcreate_directory(long, long) in csl-print.o
>>> "fwin_report_left(char const*)", referenced from:
>>>    Lwindow_heading2(long, long, long) in csl-print.o
>>>    report_time(int, int) in csl-sysfwin.o
>>> "fwin_report_right(char const*)", referenced from:
>>>    Lwindow_heading2(long, long, long) in csl-print.o
>>>    report_space(unsigned long long, double, double) in csl-sysfwin.o
>>> "process_file_name(char*, char const*, unsigned long)", referenced from:
>>>    open_pds(char const*, int) in csl-preserve.o
>>> "fwin_ensure_screen()", referenced from:
>>>    ensure_screen() in csl-print.o
>>>    write_action_terminal(int, long) in csl-print.o
>>>    prin_to_terminal(long) in csl-print.o
>>>    prin_to_stdout(long) in csl-print.o
>>>    prin_to_error(long) in csl-print.o
>>>    prin_to_trace(long) in csl-print.o
>>>    prinhex_to_trace(char const*, long) in csl-print.o
>>>    ...
>>> "fwin_set_help_file(char const*, char const*)", referenced from:
>>>    Lset_help_file(long, long, long) in csl-fasl.o
>>> "get_home_directory(char*, unsigned long)", referenced from:
>>>    Luser_homedir_pathname(long) in csl-print.o
>>> "fwin_acknowledge_tick()", referenced from:
>>>    reclaim(long, char const*, int, unsigned long) in csl-cslgc.o
>>> "fwin_refresh_switches(char**, char**)", referenced from:
>>>    review_switch_settings() in csl-restart.o
>>> "get_current_directory(char*, unsigned long)", referenced from:
>>>    Lget_current_directory(long) in csl-print.o
>>>    cslstart(int, char const**, int (*)(int)) in csl-csl.o
>>> "list_directory_members(char*, char const*, unsigned long, void (*)(char const*, int, long))", referenced from:
>>>    Llist_directory(long, long) in csl-print.o
>>> "fwin_callback_to_interrupt(int (*)(int))", referenced from:
>>>    cslstart(int, char const**, int (*)(int)) in csl-csl.o
>>> "Cmkdir(char const*)", referenced from:
>>>    open_pds(char const*, int) in csl-preserve.o
>>>    unpending(directory*) in csl-preserve.o
>>> "my_getenv(char const*)", referenced from:
>>>    Lgetenv(long, long) in csl-cslread.o
>>> "my_system(char const*)", referenced from:
>>>    Lsystem(long, long) in csl-cslread.o
>>> "open_file(char*, char const*, unsigned long, char const*, __sFILE*)", referenced from:
>>>    Lopen(long, long, long) in csl-print.o
>>>    Lopen_url(long, long) in csl-print.o
>>>    Lbinary_open_output(long, long) in csl-print.o
>>>    Lbinary_open_input(long, long) in csl-print.o
>>>    Lspool(long, long) in csl-cslread.o
>>>    cslstart(int, char const**, int (*)(int)) in csl-csl.o
>>>    cslaction() in csl-csl.o
>>>    ...
>>> "FX::text", referenced from:
>>>    Lmath_display(long, long) in csl-print.o
>>> "_about_box_description", referenced from:
>>>    set_up_variables(int) in csl-restart.o
>>>    fwin_main(int, char const**) in csl-csl.o
>>> "_about_box_rights_1", referenced from:
>>>    set_up_variables(int) in csl-restart.o
>>> "_about_box_rights_2", referenced from:
>>>    set_up_variables(int) in csl-restart.o
>>> "_about_box_title", referenced from:
>>>    set_up_variables(int) in csl-restart.o
>>>    fwin_main(int, char const**) in csl-csl.o
>>> "_fullProgramName", referenced from:
>>>    set_up_variables(int) in csl-restart.o
>>> "_fwin_linelength", referenced from:
>>>    write_action_terminal(int, long) in csl-print.o
>>>    write_action_spool(int, long) in csl-print.o
>>> "_fwin_pause_at_end", referenced from:
>>>    cslstart(int, char const**, int (*)(int)) in csl-csl.o
>>> "_fwin_use_xft", referenced from:
>>>    cslstart(int, char const**, int (*)(int)) in csl-csl.o
>>> "_programDir", referenced from:
>>>    find_image_directory(int, char const**) in csl-sysfwin.o
>>>    find_gnuplot(char*) in csl-sysfwin.o
>>> "_programName", referenced from:
>>>    set_up_variables(int) in csl-restart.o
>>>    find_image_directory(int, char const**) in csl-sysfwin.o
>>> "_scan_leafstart", referenced from:
>>>    make_dir_list(char const*, int, long) in csl-print.o
>>> "_showmathInitialised", referenced from:
>>>    set_up_variables(int) in csl-restart.o
>>> "_texmacs_mode", referenced from:
>>>    set_up_variables(int) in csl-restart.o
>>>    setup(int, double) in csl-restart.o
>>> ld: symbol(s) not found for architecture x86_64
>>> clang: error: linker command failed with exit code 1 (use -v to see invocation)
>>> gmake[3]: *** [Makefile:4796: csl] Error 1
>>> make[2]: *** [all] Error 2
>>> 
>>> 
>>> But I guess the options are:
>>> 
>>> a) Figure out where in the code it calls the gnuplot executable, and change it to be the absolute path, so that the $PATH variable is not needed. I found lines such as these:
>>> 
>>> ./packages/plot/gnuintfc.red:   plotcommand!* := find!-gnuplot();
>>> ./packages/plot/gnuintfc.red:     plotcommand!* := find!-gnuplot();
>>> ./packages/plot/gnuintfc.red:   plotcommand!* := bldmsg("gnuplot %w",plotcmds!*);
>>> ./packages/plot/gnuintfc.red:  plotcommand!* := find!-gnuplot();
>>> 
>>> Maybe using the full "/opt/local/bin/gnuplot" on these lines is the answer.
>>> 
>>> b) Rename or move the real executable and in its place put a wrapper script that sets $PATH and then calls the original executable.
>>> 
>>> 
>>> 
>> 
> 



More information about the macports-dev mailing list