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

  • olegus 07.10.2023
    AkhmedSataja:
    32. Это код из проекта из 97-го года.
    https://motif.ics.com/book/export/html/31
    http://www.sourcefiles.org/Wordprocessors/papyrus-1.1.1.src.tar.gz.shtml

    Не знаю как у Вас, но у меня по этим ссылкам ничего кроме списка программ и главной страницы Sourcefiles ничего не открывается.

    Не проще ли Abiword поставить? Если он есть под OpenBSD.
  • AkhmedSatajaAkhmedSataja 07.10.2023
    Abiword у меня жутко лагает, да и потом, неплохо было бы иметь инструменты на Motif, запущенные в DE, что так же основана на оном.

    Насчет ссылок - извиняйте. http://www.ibiblio.org/pub/Linux/apps/wp/papyrus/!INDEX.html вот - рабочая.
  • olegus 07.10.2023
    Хочу написать что tar'в скачанные с этой ссылки выбивают с ошибкой при распаковке(или же я рукожоп).

    Ещё раз посмтрел лог, в /usr/lib/crt0.o функция _start ссылается на то чего нет в main, то есть надо смотреть код там и очень внимательно(конечно если знаете этот язык программирования).
  • AkhmedSatajaAkhmedSataja 07.10.2023
    >конечно если знаете этот язык программирования
    Самые-самые основы (Hello World в BORLAND C 2 под DOS писал).

    Спасибо большое. То есть, этот код из коробки уже с ошибкой идет? Или это я своими "исправлениями" его испоганил?
  • AkhmedSatajaAkhmedSataja 07.10.2023
    Кстати, там француз понатыкал везде extern "C"{}
    Это для совместной работы сишного и c++ного кода?

    olegus:
    Хочу написать что tar'в скачанные с этой ссылки выбивают с ошибкой при распаковке(или же я рукожоп).

    Ещё раз посмтрел лог, в /usr/lib/crt0.o функция _start ссылается на то чего нет в main, то есть надо смотреть код там и очень внимательно(конечно если знаете этот язык программирования).
    http://www.ibiblio.org/pub/Linux/apps/wp/papyrus/papyrus-1.1.1.src.tar.gz

    Не знаю, может как-то скачался не так? Ввожу команду tar xzvf papyrus-1.1.1.src\(1\).tar.gz и он распаковывает.
    md5 сумма сего архива: 09f15aa89e795f5bad59096a2c95127f
  • AkhmedSatajaAkhmedSataja 07.10.2023
    Попробую без GUI собрать. Он вроде писал, что такое возможно.
  • AkhmedSatajaAkhmedSataja 07.10.2023
    Если позволите, дуратский вопрос - а что если без Makefile'а скомпилировать gcc все сишные файлы и библиотеки, а g++ - все фалы плюсов? Хотя да, это не исправит ошибки в коде.
  • olegus 08.10.2023
    AkhmedSataja:
    Кстати, там француз понатыкал везде extern "C"{}
    Это для совместной работы сишного и c++ного кода?
    Да.

    Знаете, ведь у C'ишных были версии языков (C89,C90,C99 и т.д.), может код написанный в версии C90, не может выполнится в C11,17? Несовместимость версий просто встречал в Python, где библиотеки от 3.x не работают в 2.x и наоборот. Вдруг тут такое же.

    Но все равно надо смотреть код в функции _start и main.
  • AkhmedSatajaAkhmedSataja 08.10.2023
    Мне не хватает знаний, чтобы понять что тут не так - по большому счету, ошибка ведь может быть и за пределами функции main? А там, если смотреть вместе с докам и pixmap'ами - 180 файлов.

    Listing of main.cc:
    /* 
     * main.cc --
     *
     *      This file contains the main functions of the 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.
     *
     *
     */
    
    extern "C" {
    #include <stdio.h>
    
    #include "globals.h"
    #include "../tcl/mytcl.h"
    
    #ifdef HAVE_GUI
     #include "../gui/mainWin.h"
    #endif
    
    extern int My_Tcl_Main(int, char **);
    }
    
    #include "papyrus.h"
    #include "../misc/env.h"
    
    #ifdef HAVE_GUI
    
    XrmOptionDescRec Desc[] = {
      {"-visual", "*visual", XrmoptionSepArg, NULL},
      {"-depth", "*depth", XrmoptionSepArg, NULL}
    };
    
    static XtAppContext app_context;
    static XtWorkProcId workProcId;
    
    Widget toplevel;
    int ac;
    char **av;
    Dimension appWidth, appHeight;
    
    extern "C" {
      extern void Scale_Increment();
      extern void Intro_Message(char *);
      extern void Set_Actions(XtAppContext);
      extern void CenterDialog_CB(Widget, XtPointer, XtPointer);
      extern void GUI_CreateWelcome_Dialog();
    }
    
    #else
     #include "events.h"
    #endif
    
    BOOL interactive_flag;
    Papyrus *papyrus;
    
    /*
     *----------------------------------------------------------------------
     *
     * Init_Papyrus --
     *
     *      This method is invoked to create some features of the
     *      application when PAPyRUS starts (tcl, gui, kernel).
     *
     * Results:
     *      None.
     *
     * Side effects:
     *      None.
     *
     *----------------------------------------------------------------------
     */
    
    #ifdef HAVE_GUI
    void
    Init_Papyrus(void) {
    
      /*
       * The following lines prevent a bug from my X version
       * so Init_Papyrus will be called only 1 time.
       */
      static int i=0;
    
      if( i != 0 )
        return;
      else
        i = 1;
    
      
      XtRemoveWorkProc(workProcId);
    
      Intro_Message("Creating main GUI");
      GUI_Create();
    
      Intro_Message("Setting actions");
      Set_Actions(app_context);
    
      Intro_Message("Initializing kernel");
      papyrus = new Papyrus( XtDisplay(toplevel) );
      Scale_Increment();
    
      /*
       * For the moment, XDisplay isn't know, and zoom is
       * initialised by XDisplay constructor.
       */
      zoom = 1;
    
      Intro_Message("Starting Tcl interpreter");
      My_Tcl_Main(ac, av);
      Tcl_LinkVar(theInterp, "interactive_flag", (char *)&interactive_flag, TCL_LINK_BOOLEAN);
      Scale_Increment();
    
      Intro_Message("Papyrus ready");
      Scale_Increment();
      XtRealizeWidget(toplevel);
      Scale_Increment();
      XtDestroyWidget(XtNameToWidget(toplevel, "*welcome"));
    }
    
    #endif
    
    /*
     *----------------------------------------------------------------------
     *
     * main --
     *
     *      This method is the main function of the application.
     *
     * Results:
     *      Standart C main function result.
     *
     * Side effects:
     *      None.
     *
     *----------------------------------------------------------------------
     */
    
    extern "C"{
    int main(int argc, char *argv[]) {
    
      interactive_flag = (BOOL)TRUE;
    
      Get_Environment();
    
    #ifdef HAVE_GUI
      Display *d;
    
      toplevel = XtVaAppInitialize(&app_context, "Papyrus",
    			       Desc, XtNumber(Desc), &argc, argv,
    			       NULL, NULL, NULL);
    
      d = XtDisplay(toplevel);
      appWidth = DisplayWidth(d, 0);
      appHeight = DisplayHeight(d, 0);
    
      GUI_CreateWelcome_Dialog();
    
      ac = argc;
      av = argv;
    
      workProcId = XtAppAddWorkProc(app_context, (XtWorkProc)Init_Papyrus, NULL);
      XtAppMainLoop(app_context);
    
    #else
    
      My_Display_Init();
    
      if( My_Tcl_Main(argc, argv) != TCL_OK )
        exit(1);
      
      Tcl_LinkVar(theInterp, "interactive_flag", (char *)&interactive_flag, TCL_LINK_BOOLEAN);
    
      Tcl_Eval(theInterp, "NewDocument");
      
      My_AppMainLoop();
    
    #endif
    
      return 0;
    }
    }
  • AkhmedSatajaAkhmedSataja 08.10.2023
    Listing of FILES:

    7	Makefile
    7	Makefile.std
    7	bin/Papyrus.ad.common
    12	bin/Papyrus.ad.eng
    15	bin/Papyrus.ad.fr
    35	bin
    3	doc/README.english
    4	doc/README.french
    19	doc/Copyright
    1	doc/WARNING
    2	doc/Changes
    30	doc
    2	gui/globals.h
    43	gui/callbacks.c
    2	gui/init.h
    6	gui/init.c
    9	gui/actions.c
    2	gui/modify_text.h
    2	gui/actions.h
    20	gui/dialogs.c
    1	gui/menus.h
    2	gui/dialogs.h
    11	gui/mainWin.c
    10	gui/modify_text.c
    2	gui/mainWin.h
    7	gui/menus.c
    35	gui/widgets.c
    4	gui/callbacks.h
    3	gui/widgets.h
    162	gui
    3	kernel/cursor.h
    19	kernel/ps_output.cc
    3	kernel/container.h
    15	kernel/util.cc
    11	kernel/display.cc
    2	kernel/image.h
    5	kernel/main.cc
    3	kernel/page.h
    3	kernel/line.h
    5	kernel/display.h
    2	kernel/isfuncs.h
    2	kernel/globals.h
    2	kernel/output.h
    2	kernel/papyrus.h
    2	kernel/util.h
    3	kernel/shape.h
    4	kernel/ascii_output.cc
    7	kernel/attributes.cc
    2	kernel/events.h
    6	kernel/isfuncs.cc
    2	kernel/wordSegment.h
    6	kernel/document.cc
    18	kernel/line.cc
    6	kernel/word.cc
    7	kernel/paragraph.cc
    5	kernel/events.cc
    9	kernel/image.cc
    17	kernel/page.cc
    3	kernel/cursor.cc
    2	kernel/document.h
    2	kernel/paragraph.h
    16	kernel/wordSegment.cc
    3	kernel/attributes.h
    2	kernel/thePosition.h
    7	kernel/frame.cc
    2	kernel/marker.h
    4	kernel/frame.h
    4	kernel/thePosition.cc
    2	kernel/word.h
    11	kernel/container.cc
    3	kernel/FontManager/fontFamily.h
    5	kernel/FontManager/fontFamily.cc
    6	kernel/FontManager/fontManager.cc
    2	kernel/FontManager/fontManager.h
    17	kernel/FontManager
    5	kernel/StyleManager/styleManager.cc
    2	kernel/StyleManager/styleManager.h
    5	kernel/StyleManager/styleItem.cc
    3	kernel/StyleManager/styleItem.h
    16	kernel/StyleManager
    2	kernel/margin.h
    9	kernel/papyrus_output.cc
    275	kernel
    125	lib/fonts/ps/Courier.pfa
    126	lib/fonts/ps
    16	lib/fonts/afm/Times-Roman.afm
    14	lib/fonts/afm/Courier.afm
    31	lib/fonts/afm
    158	lib/fonts
    3	lib/ps/iso_encode.ps
    4	lib/ps
    3	lib/scripts/papyrus-keys.tcl
    5	lib/scripts/papyrus-menus.tcl
    8	lib/scripts/qwerty-accents.tcl
    4	lib/scripts/papyrus-vars.tcl
    4	lib/scripts/tclIndex
    2	lib/scripts/keys-bindings.tcl
    3	lib/scripts/spell.tcl
    2	lib/scripts/papyrus-init.tcl
    6	lib/scripts/papyrus-debug.tcl
    6	lib/scripts/procedures.tcl
    44	lib/scripts
    100	lib/examples/vic20.xpm
    1	lib/examples/def.tcl
    1	lib/examples/iso-latin1.tcl
    2	lib/examples/ia.tcl
    187	lib/examples/amiga.xpm
    71	lib/examples/c64.xpm
    210	lib/examples/papyrus.xpm
    20	lib/examples/COPYING-2.0.tcl
    2	lib/examples/texte.tcl
    3	lib/examples/commodore.tcl
    598	lib/examples
    805	lib
    2	misc/shortcuts.h
    2	misc/env.c
    2	misc/env.h
    7	misc/shortcuts.c
    46	misc/parseAFM.c
    12	misc/parseAFM.h
    72	misc
    1	pixmaps/icopy.xpm
    1	pixmaps/icut.xpm
    1	pixmaps/ilist.xpm
    1	pixmaps/imacro.xpm
    1	pixmaps/imargin_add.xpm
    1	pixmaps/inew.xpm
    91	pixmaps/intro.xpm
    1	pixmaps/iopen.xpm
    1	pixmaps/ipaste.xpm
    2	pixmaps/iprint.xpm
    1	pixmaps/isave.xpm
    1	pixmaps/ispecial.xpm
    1	pixmaps/ispell.xpm
    1	pixmaps/justify.xpm
    2	pixmaps/landscape.xpm
    1	pixmaps/list.xpm
    1	pixmaps/macro.xpm
    1	pixmaps/margin_sub.xpm
    1	pixmaps/new.xpm
    1	pixmaps/oblique.xpm
    2	pixmaps/open.xpm
    2	pixmaps/paste.xpm
    2	pixmaps/portrait.xpm
    2	pixmaps/print.xpm
    4	pixmaps/question.xpm
    1	pixmaps/save.xpm
    1	pixmaps/underline.xpm
    1	pixmaps/bold.xpm
    1	pixmaps/center_align.xpm
    1	pixmaps/ijustify.xpm
    1	pixmaps/num_list.xpm
    1	pixmaps/clear.xpm
    1	pixmaps/right_align.xpm
    1	pixmaps/copy.xpm
    1	pixmaps/cut.xpm
    1	pixmaps/iright_align.xpm
    1	pixmaps/margin_add.xpm
    1	pixmaps/special.xpm
    1	pixmaps/iunderline.xpm
    4	pixmaps/error.xpm
    1	pixmaps/icenter_align.xpm
    1	pixmaps/ibold.xpm
    1	pixmaps/iclear.xpm
    1	pixmaps/imargin_sub.xpm
    1	pixmaps/left_align.xpm
    1	pixmaps/spell.xpm
    1	pixmaps/ioblique.xpm
    1	pixmaps/ileft_align.xpm
    3	pixmaps/icon.xpm
    155	pixmaps
    4	tcl/commands.h
    10	tcl/tclGet.cc
    41	tcl/commandsAM.cc
    6	tcl/tclMain.c
    34	tcl/commandsNZ.cc
    11	tcl/tclInit.cc
    2	tcl/mytcl.h
    2	tcl/tclGet.h
    111	tcl
    1659	total

    Может, просто в тупую начать исправлять каждое предупреждение в надежде, что это поможет?