Macports Reduce build

Ryan Schmidt ryandesign at macports.org
Mon Sep 24 02:41:56 UTC 2018


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