Menu

FreeDoko unter Ubuntu 16.04

Help
knob-creek
2016-04-24
2016-12-03
  • knob-creek

    knob-creek - 2016-04-24

    Da Ubuntu die Bibliothek gnet nicht mehr enthält, läßt sich FreeDoko in der aktuellen Version 16.04 nicht mehr bauen. Da gnet seit 2008 (!) kein Update mehr erfahren hat, scheint es mir tot zu sein. Auch die Abhängigkeiten zu gtkmm-2 etc. sollten vielleicht durch gtkmm-3 ersetzt werden.

     
  • Dr. Diether Knof

    Hallo,

    gnet wird nicht mehr weitergepflegt und hat schon seit längerem einen Nachfolger. Wir verwenden es noch, weil es funktioniert und wir daher keine Notwendigkeit sahen, umzustellen. Nun haben wir einen Anreiz, ich nehme das auf meine Merkliste mit auf. FreeDoko lässt sich einfach ohne gnet (und damit ohne Netzwerkunterstützung) bauen, dazu in der Makefile.lokal die Zeile

    #USE_NETWORK  = true
    

    durch

    USE_NETWORK  = false
    

    ersetzen.

    An der Umstellung von gtkmm-2.4 auf gtkmm-3 arbeite ich gerade. Ich habe allerdings dabei noch das Problem, dass ich unter Microsoft Windows noch kein gtkmm-3-Programm zum Laufen bekommen habe, die stürzen immer beim Start ab.

    Gruß
    Diether

     
  • knob-creek

    knob-creek - 2016-12-03

    Ich würde dieses Thema gerne noch einmal aufgreifen. Da es seit Ihrer Antwort keine neue Version gab, vermute ich, daß gnet immer noch verwendet wird? Leider ist das abschalten der Netzwerkfunktion keine Lösung, da meine Frau und ich gerne gegeneinander über das Netz spielen. ;-)
    Grüße
    - Thomas

     
  • knob-creek

    knob-creek - 2016-12-03

    Beim Bauen (mit g++ 6.2) sind ein paar Warnings aufgetreten (-Wmisleading-indentation und -Waddress, letzterer ist möglicherweise ernstzunehmen), die wg. -Werror zum Abbruch des Compilierens führen.
    Und daß "make install" nicht einfach von compile abhängig ist, sondern das Programm (mit explizit und ggf. anders gesetzten Variablen) neu baut, ist eigentlich auch ein Fehler.

     
  • Dr. Diether Knof

    Eine neue Version wird es spätestens Anfang 2017 geben. Ich habe bei InnoCard angefrag, ob wir die Lizenz für die Verwendung des Kartensatzes verlängern können und warte auf eine Antwort.
    Die Umstellung auf gtkmm3 ist fast vollständig abgeschlossen, nur Oberfläche für die Netzwerkeinstellungen fehlt noch, das gehe ich als nächstes an. Mit Windows kommen wir auch mitlerweile klar.
    gnet verwenden wir noch weiterhin, das plane ich 2017 durch das Netzwerkmodul von glibmm zu ersetzen.

    Mir ist es wichtig, FreeDoko direkt aus dem Verzeichnis starten zu können, ohne es erst installieren zu müssen. Beim normalen make werden daher relative Pfade verwendet (../data für das Datenverzeichnis). Das ist bei make install nicht sinnvoll, daher wird FreeDoko mit absoluten Pfaden zu den Daten neu kompiliert.

     
  • Dr. Diether Knof

    Was für Fehler/Warnungen werden denn ausgegeben?

     
  • knob-creek

    knob-creek - 2016-12-03
    g++ -c ./game/game.announcement.cpp
    game.announcement.cpp: In member function ‘Game::AnnouncementWithTrickno Game::announcement_of_team(const TEAM::Team&) const’:
    game.announcement.cpp:79:3: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
       if (   this->rule()(Rule::KNOCKING)
       ^~
    game.announcement.cpp:83:5: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘if’
         if ((*p)->team() == team)
         ^~
    
    g++ -c ./player/ai/ai.cpp
    In file included from ../../constants.h:221:0,
                     from ../constants.h:32,
                     from constants.h:32,
                     from ai.cpp:29:
    ai.cpp: In member function ‘virtual HandCards Ai::poverty_shift()’:
    ../../debug.h:259:5: warning: this ‘else’ clause does not guard... [-Wmisleading-indentation]
       } else
         ^
    ../../debug.h:262:37: note: in expansion of macro ‘DEBUG_ASSERTION’
     #define DEBUG_ASSERT( predicate )   DEBUG_ASSERTION(predicate, "failed")
                                         ^~~~~~~~~~~~~~~
    ai.cpp:3608:3: note: in expansion of macro ‘DEBUG_ASSERT’
       DEBUG_ASSERT(this->hand().numberoftrumps() <= 5 );
       ^~~~~~~~~~~~
    ai.cpp:3610:3: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘else’
       { // bug report replay
       ^
    
    g++ -c ./card/trick.cpp
    trick.cpp: In member function ‘Trick Trick::till_card(unsigned int) const’:
    trick.cpp:438:3: warning: this ‘for’ clause does not guard... [-Wmisleading-indentation]
       for (unsigned i = 0; i <= c; ++i)
       ^~~
    trick.cpp:441:5: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘for’
         return t;
         ^~~~~~
    
    g++ -c ./ui/gtkmm/game_summary.cpp
    game_summary.cpp: In member function ‘void UI_GTKMM_NS::GameSummary::update()’:
    game_summary.cpp:364:18: warning: the compiler can assume that the address of ‘party’ will never be NULL [-Waddress]
           if (&party == NULL)
                      ^
    
    g++ -c ./ui/gtkmm/preferences.cpp
    preferences.cpp: In member function ‘void UI_GTKMM_NS::Preferences::save()’:
    preferences.cpp:986:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
         if (::setting(Setting::AUTOMATIC_SAVINGS))
         ^~
    preferences.cpp:989:7: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘if’
           return ;
           ^~~~~~
    
    g++ -c ./os/os.cpp
    In file included from ../constants.h:221:0,
                     from constants.h:32,
                     from os.cpp:29:
    os.cpp: In function ‘OS* new_OS(OS_TYPE::OSType)’:
    ../debug.h:259:5: warning: this ‘else’ clause does not guard... [-Wmisleading-indentation]
       } else
         ^
    os.cpp:167:5: note: in expansion of macro ‘DEBUG_ASSERTION’
         DEBUG_ASSERTION(false,
         ^~~~~~~~~~~~~~~
    os.cpp:171:7: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘else’
           return NULL;
           ^~~~~~
    
     

    Last edit: knob-creek 2016-12-03
  • knob-creek

    knob-creek - 2016-12-03

    Bzgl. make targets: bei Open-Source-Projekten ist es üblich, die Quellen mit make zu bauen und mit sudo make install anschließend zu installieren. Von daher ist die komplett unterschiedliche Bedeutung von make compile und make install etwas verwirrend, zumal Ihr Hinweis von April (Änderung in Makefile.local) damit ausgehebelt wird.
    Da der Anwender / Integrator einer Distibution an einer Ausführung im build-Verzeichnis eher nicht interessiert ist, würde ich das compile Target aus der Dokumentation herausnehmen.
    (Haben Sie schon einmal über autoconf nachgedacht?)

     
  • Dr. Diether Knof

    Die Fehler/Warnungen habe ich (vermutlich) im svn-Repository korrigiert.
    Das make install werde ich überarbeiten, bisher gab es noch keinen entsprechenden Wunsch. Das wird aber auch erst 2017 etwas.
    Der Hauptgrund, dass wir autoconf nicht verwenden ist, dass wir das Kompilieren auch unter Windows in gleicher Form unterstützen. Dazu haben wir unser Makefile-System aufgebaut. Damit können wir unter Linux und Windows einfach mit make (aus einer Shell / DOS-Shell) kompilieren. Autoconf benötigt unter Windows gleich eine unix-artige Umgebung, das brauchen wir nicht. Ich habe mir mal mehrere configure-Skripte angeschaut. Die fand ich ziemlich überladen und allgemein auch nervig in der Anwendung. Ich habe auch keinen wirklichen Mehrwert vom configure-Skript gesehen.

     
  • knob-creek

    knob-creek - 2016-12-03

    Der Sinn von autoconf ist, auf verschiedenen (Unix-)Plattformen automatisch zu erkennen, welche Bibliotheken in welcher Version verfügbar sind. Im Falle fehlender Verfügbarkeit können Features abgeschaltet werden oder eine Fehlermeldung erzeugt werden. Für die Integration in unterschiedliche Linux-Distributionen ist das ein erheblicher Vorteil.
    Die Entwicklung unter Windows ist mir völlig fremd, daher kann ich dazu nichts sagen. Alles, was ich dort je gemacht habe (außer JAVA-Entwicklung, aber das ist ein anderes Universum), begann mit der Installation der cygwin-Tools.
    Da Sie vollständig auf Linux-basierte OSS-Bibliotheken setzen, hätte ich gedacht, daß eine Linux-ähnliche Umgebung unter Windows Ihnen das Leben leichter macht (und cygwin wird von autoconf unterstützt).

     
  • knob-creek

    knob-creek - 2016-12-03

    Anderes Thema -> anderer Thread

     

    Last edit: knob-creek 2016-12-03

Log in to post a comment.