Проблема сборки PAPyRUS под OpenBSD 6.2

  • AkhmedSatajaAkhmedSataja 05.10.2023
    Доброго времени суток, дамы и господа.
    Я пишу в связи с неприятной ситуацией, а именно, с трудностями при попытке скомпилировать исходный код программы PAPyRUS на OpenBSD.

    ОС: OpenBSD 6.2 i386.
    Железо:
    Модель: Thinkpad T43.

    Motif установлен, ровно как и TCL (правда, версии 8.6, что гораздо выше оной в требованиях к системе в README PAPyRUS).
    Функции tcl подправлены в соответствии с новой версией оной.
    Исправлены проблемы вида:

    #include <malloc.h>
    #include <tcl.h>

    заменено на
    #include <sys/malloc.h>
    #include <tcl8.6/tcl.h>
    и так далее.

    Однако, при компиляции выдает следующее:
    /usr/lib/crt0.o: In function `_start':
    (.text+0x52): undefined reference to `main'
    collect2: ld returned 1 exit status

    Читал про неободимость выставить флаг -ldl, но так же читал, что то - чисто линуховая особенность, и что в "опенке" нет нужды, это встроено.

    Я новичок в этой теме.
    Буду благодарен за любую помощь, даже за RTFM, если ссылочку на оные, конечно, укажите.

    Makefile и (не)полный лог прилагается.

    Makefile:
    #
    # Makefile --
    #
    #      This file contains the Makefile of the PAPyRUS application.
    #
    # Copyright (C) 1996-1997  Carlos Nunes - loscar@mime.univ-paris8.fr
    #
    # This program is free software; you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation; either version 2 of the License, or
    # (at your option) any later version.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU General Public License for more details.
    #
    # You should have received a copy of the GNU General Public License
    # along with this program; if not, write to the Free Software
    # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    
    #
    # If you change the INSTALL_LIB variable, you MUST set the PAPYRUS_DIR
    # shell variable to the correct value, each time you run PAPyRUS.
    #
    
    # Directory for Papyrus libs
    INSTALL_LIB = /usr/local/lib
    
    # Directory for Papyrus binary
    INSTALL_DIR = /usr/local/bin
    
    CC  = gcc
    CCC = g++
    CXX = g++
    
    #RES_FILE = Papyrus.ad.fr     # French version of the App defaults
    RES_FILE = Papyrus.ad.eng     # English version of the App defaults
    
    #
    # Tcl library (7.5 or newer)
    #
    
    TCL = 
    TCL_INCLUDE = /usr/local/include/
    TCL_LIB = /usr/local/lib/tcl/tcl8.6
    
    #
    # X11R6 library
    #
    
    X11 = -lX11
    X11_INCLUDE = /usr/X11R6/include -I/usr/local/include  -I/usr/dt/include/ -I/usr/X11R6/include/
    X11_LIB = /usr/X11R6/lib
    
    #
    # Xpm library
    #
    
    XPM = -lXpm
    XPM_INCLUDE = /usr/X11R6/include
    XPM_LIB = /usr/X11R6/lib
    
    #
    # Motif 2.0 library
    #
    
    XM = -lXm
    XM_INCLUDE = /usr/X11R6/include 
    XM_LIB = /usr/X11R6/lib
    
    FLAGS = -O2 -Wall -ansi -DUSE_NON_CONST -nostartfiles -g  -v
    #FLAGS = -g -Wall -ansi -pedantic
    
    #########################################################################################
    #
    # You may not have to change anything after this message.
    #
    #########################################################################################
    
    CXXDEFINES =  -DHAVE_GUI -I$(TCL_INCLUDE) -I$(XPM_INCLUDE)	\
    	      -I$(XM_INCLUDE) -I$(X11_INCLUDE)
    CDEFINES   =  -DHAVE_GUI -I$(TCL_INCLUDE) -I$(XPM_INCLUDE)	\
    	      -I$(XM_INCLUDE) -I$(X11_INCLUDE)
    
    CXXFLAGS = $(FLAGS) $(CXXDEFINES)  -fpermissive -g -Wall -v
    CFLAGS   = $(FLAGS) $(CDEFINES) -g -Wall
    
    LIBS =  -L$(XM_LIB) $(XM) -L$(X11_LIB) -L$(X11_LIB) 		\
    	-lXmu -lXt -lSM -lICE -lXext 				\
    	-L$(XPM_LIB) $(XPM) -lX11 -L$(TCL_LIB) $(TCL)           \
    	-L/usr/local/lib -L/usr/dt/lib/ -L/usr/X11R6/lib/       \
    	-lX11 -L/usr/local/lib/tcl/ 
    
    SRCS =	gui/callbacks.c      	gui/menus.c		gui/widgets.c			\
            gui/modify_text.c    	gui/mainWin.c   	gui/dialogs.c			\
    	gui/actions.c		gui/init.c		kernel/isfuncs.cc		\
    	kernel/attributes.cc	kernel/main.cc 		kernel/papyrus_output.cc	\
    	kernel/container.cc	kernel/ps_output.cc	kernel/ascii_output.cc		\
    	kernel/frame.cc		kernel/cursor.cc	kernel/display.cc		\
    	kernel/events.cc   	kernel/page.cc  	kernel/paragraph.cc   		\
    	kernel/document.cc   	kernel/line.cc     	kernel/word.cc			\
    	kernel/wordSegment.cc	kernel/thePosition.cc	kernel/image.cc			\
    	kernel/util.cc									\
    	kernel/FontManager/fontManager.cc       	kernel/FontManager/fontFamily.cc\
    	kernel/StyleManager/styleManager.cc		kernel/StyleManager/styleItem.cc\
    	tcl/tclMain.c		tcl/tclInit.cc		tcl/tclGet.cc			\
    	tcl/commandsAM.cc	tcl/commandsNZ.cc					\
    	misc/shortcuts.c	misc/parseAFM.c		misc/env.c
    
    OBJS =	gui/callbacks.o      	gui/menus.o		gui/widgets.o			\
            gui/modify_text.o    	gui/mainWin.o   	gui/dialogs.o			\
    	gui/actions.o		gui/init.o		kernel/isfuncs.o		\
    	kernel/attributes.o	kernel/main.o		kernel/papyrus_output.o		\
    	kernel/container.o	kernel/ps_output.o	kernel/ascii_output.o		\
    	kernel/frame.o		kernel/cursor.o		kernel/display.o		\
    	kernel/events.o   	kernel/page.o  		kernel/paragraph.o   		\
    	kernel/document.o   	kernel/line.o     	kernel/word.o			\
    	kernel/wordSegment.o	kernel/thePosition.o	kernel/image.o			\
    	kernel/util.o									\
    	kernel/FontManager/fontManager.o 	      	kernel/FontManager/fontFamily.o \
    	kernel/StyleManager/styleManager.o		kernel/StyleManager/styleItem.o \
    	tcl/tclMain.o		tcl/tclInit.o		tcl/tclGet.o			\
    	tcl/commandsAM.o	tcl/commandsNZ.o					\
    	misc/shortcuts.o	misc/parseAFM.o		misc/env.o
    
    INCS =  gui/actions.h		gui/callbacks.h		gui/dialogs.h			\
    	gui/globals.h		gui/mainWin.h		gui/menus.h			\
    	gui/widgets.h		gui/init.h		gui/modify_text.h		\
    	kernel/container.h	kernel/events.h		kernel/marker.h			\
    	kernel/line.h		kernel/attributes.h					\
    	kernel/cursor.h		kernel/frame.h		kernel/page.h			\
    	kernel/word.h		kernel/display.h	kernel/papyrus.h		\
    	kernel/globals.h	kernel/paragraph.h	kernel/margin.h			\
    	kernel/wordSegment.h	kernel/shape.h		kernel/document.h		\
    	kernel/isfuncs.h	kernel/thePosition.h	kernel/image.h			\
    	kernel/util.h		kernel/output.h		kernel/FontManager/fontFamily.h	\
    	kernel/FontManager/fontManager.h		kernel/StyleManager/styleItem.h	\
    	kernel/StyleManager/styleManager.h						\
    	tcl/mytcl.h		tcl/tclGet.h		tcl/commands.h			\
    	misc/shortcuts.h	misc/parseAFM.h		misc/env.h
    
    all:	bin/papyrus
    
    bin/papyrus: $(OBJS)
    	$(CC) -o $@ $^ -lpcap -v $(LIBS) 
    
    clean:
    	\rm -f $(OBJS) *~ *.bak *.BAK bin/papyrus *.ps
    
    install: uninstall bin/papyrus
    	mkdir -p -m 755 $(INSTALL_LIB)/Papyrus/examples
    	install -m 644 lib/examples/* $(INSTALL_LIB)/Papyrus/examples
    
    	mkdir -p -m 755 $(INSTALL_LIB)/Papyrus/scripts
    	install -m 644 lib/scripts/* $(INSTALL_LIB)/Papyrus/scripts
    
    	mkdir -p -m 755 $(INSTALL_LIB)/Papyrus/fonts/afm
    	install -m 644 lib/fonts/afm/* $(INSTALL_LIB)/Papyrus/fonts/afm
    	mkdir -m 755 $(INSTALL_LIB)/Papyrus/fonts/ps
    
    	mkdir -m 755 $(INSTALL_LIB)/Papyrus/ps
    	install -m 644 lib/ps/* $(INSTALL_LIB)/Papyrus/ps
    
    	install -s -m 755 bin/papyrus $(INSTALL_DIR)
    	install -m 644 bin/Papyrus.ad.common /usr/X11R6/lib/X11/app-defaults/Papyrus
    	cat bin/$(RES_FILE) >> /usr/X11R6/lib/X11/app-defaults/Papyrus
    
    	sed s/auto_mkindex/#auto_mkindex/ $(INSTALL_LIB)/Papyrus/scripts/papyrus-init.tcl \
    		> $(INSTALL_LIB)/Papyrus/scripts/papyrus-init.tcl.new
    	mv -f $(INSTALL_LIB)/Papyrus/scripts/papyrus-init.tcl.new \
    		$(INSTALL_LIB)/Papyrus/scripts/papyrus-init.tcl
    
    	mkdir -m 755 $(INSTALL_LIB)/Papyrus/doc
    	install -m644 doc/* $(INSTALL_LIB)/Papyrus/doc
    
    uninstall:
    	@\rm -rf $(INSTALL_LIB)/Papyrus
    	@\rm -f $(INSTALL_DIR)/papyrus
    
    depend:	
    	cp Makefile Makefile.bak
    	sed '/^#----- dependences -----/q' Makefile.bak >Makefile
    	echo >>Makefile
    	$(CXX) $(CXXFLAGS) -M $(SRCS) >>Makefile

    #dependencies не вместились в поле "Body".
  • AkhmedSatajaAkhmedSataja 05.10.2023
    Лог:
    Лог (далеко не полный, ибо полный не вместился):

    Script started on Thu Oct  5 13:02:25 2023
    $ make depend
    
    cp Makefile Makefile.bak
    sed '/^#----- dependences -----/q' Makefile.bak >Makefile
    echo >>Makefile
    g++ -O2 -Wall -ansi -DUSE_NON_CONST -nostartfiles -g  -v -DHAVE_GUI -I/usr/local/include/ -I/usr/X11R6/include   -I/usr/X11R6/include  -I/usr/X11R6/include -I/usr/local/include  -I/usr/dt/include/ -I/usr/X11R6/include/  -fpermissive -g -Wall -v -M gui/callbacks.c         gui/menus.c             gui/widgets.c                    gui/modify_text.c      gui/mainWin.c           gui/dialogs.c                    gui/actions.c          gui/init.c              kernel/isfuncs.cc                kernel/attributes.cc   kernel/main.cc          kernel/papyrus_output.cc         kernel/container.cc    kernel/ps_output.cc     kernel/ascii_output.cc           kernel/frame.cc                kernel/cursor.cc        kernel/display.cc                kernel/events.cc       kernel/page.cc          kernel/paragraph.cc              kernel/document.cc     kernel/line.cc          kernel/word.cc                   kernel/wordSegment.cc  kernel/thePosition.cc   kernel/image.cc                  kernel/util.cc                                                                  kernel/FontManager/fontManager.cc              kernel/FontManager/fontFamily.cc kernel/StyleManager/styleManager.cc            kernel/StyleManager/styleItem.cc tcl/tclMain.c          tcl/tclInit.cc          tcl/tclGet.cc                    tcl/commandsAM.cc      tcl/commandsNZ.cc                                        misc/shortcuts.c       misc/parseAFM.c         misc/env.c >>Makefile
    Reading specs from /usr/lib/gcc-lib/i386-unknown-openbsd6.2/4.2.1/specs
    Target: i386-unknown-openbsd6.2
    Configured with: OpenBSD/i386 system compiler
    Thread model: posix
    gcc version 4.2.1 20070719 
     /usr/lib/gcc-lib/i386-unknown-openbsd6.2/4.2.1/cc1plus -E -quiet -v -v -I/usr/local/include/ -I/usr/X11R6/include -I/usr/X11R6/include -I/usr/X11R6/include -I/usr/local/include -I/usr/dt/include/ -I/usr/X11R6/include/ -M -DUSE_NON_CONST -DHAVE_GUI gui/callbacks.c -ansi -Wall -fpermissive -fworking-directory -O2
    ignoring duplicate directory "/usr/include"
    ignoring duplicate directory "/usr/X11R6/include"
    ignoring duplicate directory "/usr/X11R6/include"
    ignoring duplicate directory "/usr/local/include"
    ignoring duplicate directory "/usr/X11R6/include/"
    #include "..." search starts here:
    #include <...> search starts here:
    
    <b>####BLA_BLA
  • AkhmedSatajaAkhmedSataja 05.10.2023
    /usr/lib/gcc-lib/i386-unknown-openbsd6.2/4.2.1/cc1plus -E -quiet -v -v -I/usr/local/include/ -I/usr/X11R6/include -I/usr/X11R6/include -I/usr/X11R6/include -I/usr/local/include -I/usr/dt/include/ -I/usr/X11R6/include/ -M -DUSE_NON_CONST -DHAVE_GUI kernel/events.cc -ansi -Wall -fpermissive -fworking-directory -O2
    ignoring duplicate directory "/usr/include"
    ignoring duplicate directory "/usr/X11R6/include"
    ignoring duplicate directory "/usr/X11R6/include"
    ignoring duplicate directory "/usr/local/include"
    ignoring duplicate directory "/usr/X11R6/include/"
    #include "..." search starts here:
    #include <...> search starts here:
     /usr/local/include/
    
    <b>####BLA-BLA-BLA</b>
    tcl/tclInit.cc:111: warning: deprecated conversion from string constant to 'char*'
    tcl/tclInit.cc:111: warning: deprecated conversion from string constant to 'char*'
    
    <b>####BLA-BLA-BLA</b>
    
    End of search list.
    GNU C version 4.2.1 20070719  (i386-unknown-openbsd6.2)
            compiled by GNU C version 4.2.1 20070719 .
    GGC heuristics: --param ggc-min-expand=65 --param ggc-min-heapsize=129842
    Compiler executable checksum: 7fcbccfe3890321320d6e1c8d4f51ffa
     as -o env.o /tmp//ccf9ezVm.s
    gcc -o bin/papyrus  -lpcap -v -L/usr/X11R6/lib -lXm -L/usr/X11R6/lib -L/usr/X11R6/lib            -lXmu -lXt -lSM -lICE -lXext                            -L/usr/X11R6/lib -lXpm -lX11 -L/usr/local/lib/tcl/tcl8.6             -L/usr/local/lib -L/usr/dt/lib/ -L/usr/X11R6/lib/        -lX11 -L/usr/local/lib/tcl/  
    Reading specs from /usr/lib/gcc-lib/i386-unknown-openbsd6.2/4.2.1/specs
    Target: i386-unknown-openbsd6.2
    Configured with: OpenBSD/i386 system compiler
    Thread model: posix
    gcc version 4.2.1 20070719 
     /usr/lib/gcc-lib/i386-unknown-openbsd6.2/4.2.1/collect2 --eh-frame-hdr -e __start -Bdynamic -dynamic-linker /usr/libexec/ld.so -o bin/papyrus /usr/lib/crt0.o /usr/lib/crtbegin.o -L/usr/X11R6/lib -L/usr/X11R6/lib -L/usr/X11R6/lib -L/usr/X11R6/lib -L/usr/local/lib/tcl/tcl8.6 -L/usr/local/lib -L/usr/dt/lib/ -L/usr/X11R6/lib/ -L/usr/local/lib/tcl/ -L/usr/lib/gcc-lib/i386-unknown-openbsd6.2/4.2.1 -lpcap -lXm -lXmu -lXt -lSM -lICE -lXext -lXpm -lX11 -lX11 -lgcc -lc -lgcc /usr/lib/crtend.o
    /usr/local/lib/libXm.so.6.1: warning: warning: wcscat() is almost always misused, please use wcslcat()
    /usr/local/lib/libXm.so.6.1: warning: warning: sprintf() is often misused, please use snprintf()
    /usr/local/lib/libXm.so.6.1: warning: warning: strcpy() is almost always misused, please use strlcpy()
    /usr/local/lib/libXm.so.6.1: warning: warning: wcscpy() is almost always misused, please use wcslcpy()
    /usr/local/lib/libXm.so.6.1: warning: warning: strcat() is almost always misused, please use strlcat()
    /usr/lib/crt0.o: In function `_start':
    (.text+0x52): undefined reference to `main'
    collect2: ld returned 1 exit status
    *** Error 1 in /home/Sataja/Papyrus1.1.1 (Makefile:152 'bin/papyrus')
    $ exit
    
    Script done on Thu Oct  5 13:03:20 2023
  • olegus 06.10.2023
    А точно ли в OpenBSD тот libc? И разрядность системы?
  • AkhmedSatajaAkhmedSataja 06.10.2023
    Хм. Вывод команды ldd --version не дал ничего, кроме :

    ldd --version
    ldd: unknown option -- -
    usage: ldd program ...

    но из pkg_info я узнал, что у меня стоит
    glib2-2.52.3 (installed).
  • AkhmedSatajaAkhmedSataja 06.10.2023
    А так, я не являюсь большим специалистом по программированию в linux, но подозреваю, что некоторые функции обязаны отличаться, однако, скажем, Hello World, даже с использованием Motif скомпилировался удачно, ровно как и Xbae.

    А вот ни GNU Oleo, ни, тем более, продукт того француза PAPyRUS, ну ни в какую не хотят собираться. Даже компиляция XmHTML вызывает трудности, критические. Но на них я пока и не замахиваюсь, мне бы с этим аналогом Word'а разобраться.

    > OpenBSD 6.2 i386

    32-битная.
  • olegus 06.10.2023
    А код для какой системы? 64 или 32?
  • AkhmedSatajaAkhmedSataja 06.10.2023
    32. Это код из проекта из 97-го года.
    https://motif.ics.com/book/export/html/31
    http://www.sourcefiles.org/Wordprocessors/papyrus-1.1.1.src.tar.gz.shtml

    $ file Downloads/papyrus-1.1.1.src.tar.gz
    Downloads/papyrus-1.1.1.src.tar.gz: gzip compressed data, was "papyrus-1.1.1.src.tar", last modified: Wed Apr 16 21:38:20 1997, max compression, from Unix
  • olegus 06.10.2023
    97 года? Думаю, надо искать компилятор того же года((( Больше вариантов не знаю(((
  • olegus 06.10.2023
    А что делает эта программа?
  • AkhmedSatajaAkhmedSataja 06.10.2023
    PAPyRUS (как перевести акроним не знаю, да и акроним ли это?)- редактор текстов, вроде LibreOffice Writer, только на Motif.
    GNU Oleo - редактор таблиц. На Xbae (виджет таблиц) и Motif.
    XmHTML - тут из названия все ясно.

    olegus:
    97 года? Думаю, надо искать компилятор того же года((( Больше вариантов не знаю(((


    А кроме этого? Ибо я не собираюсь ставить систему 2000-х годов.)