Ergebnis 1 bis 8 von 8
  1. Avatar von vmc
    Titel
    Senior Member

    Bewertung

    Registriert am
    20.08.2009

    Ort
    Nürnberg

    Beiträge
    481

    Danke
    Danke gesagt 11   Danke erhalten 3

    #1

    Standard woinc - Eine Alternative zu boincmgr

    Hi,

    um es kurz zu machen, es geht um woinc, eine Reimplementierung von boinccmd und boincmgr + eine Library die das BOINC-Protokoll implementiert.
    Die nicht ganz aktuellen Screenshots findet ihr hier: http://83.169.22.26/tmp/woinc/

    Warum?
    - modernes C++ lernen, also mich selber updaten
    - Qt lernen
    - ich bin kein Fan von wx und will das nicht auf meinem Rechner haben, boincmgr hat das aber als Dependency ..

    Status:
    - Mit einem aktuellen Qt und Compiler kompiliert das. Das ist C++14, wobei ich zeitnah auf C++17 wechsel.
    - Die Libui unterstuetzt mehrere Clients, das UI nicht.
    - Das UI entspricht dem, was ich selber nutze (mal abgesehen von den Stats, das war eher Spielerei). wenn ihr da mehr wollt, sagt mir das
    - CLI hat ein paar extra Options .. die sind bei moderneren Installationen mehr oder weniger obsolet. Eine davon ist fuer Challanges ok, wobei dabei aber die Ressourcen nicht beachtet werden. Seht diese Opts eher als Spielzeug fuer mich. War nie fuer euch gedacht.

    Abhaenigkeiten:
    Laufzeit:
    • qt 5.?; ich vermute gegen >= 5.9 kann man kompilieren, diverse Bugs werden aber auftreten; ich empfehle >=5.12; gerne eine Rueckmeldungen an mich, mit welchen Versionen ihr das getestet hattet. Ich weiss, dass 5.14 funktioniert.
      Komponenten von Qt:
      • Qt5Widgets: fuer das UI eben
      • Qt5Charts: fuer das Statistik- und das Diks-Tab, die Qt-Komponente ist relativ neu und noch nicht sehr verbreitet; Spielerei, kann ich bei Bedarf optional machen
      • Qt5Network: Um Images in den News nachzuladen; Spielerei, kann ich bei Bedarf optional machen
    • pugixml (sicher mit 1.9.*, 1.10 noch nicht getestet)

    Compilierungzeit:
    - Alle Laufzeitabhaenigkeiten
    - cmake >= 3.8
    - make, Ninja oder aehnliches, was du als Makefile-Generator an cmake uebergeben kannst. in den Bsp hier immer make

    Woher bekomme ich das?
    https://github.com/vmc-coding/woinc

    Das ganze ist ein Hobbybprojekt, bitte bei Rueckfragen immer mit beachten.

    edit 30.06.2020
    Das ist schon auf C++14, wollte auf C++17 updaten; im Text angepasst.
    Geändert von vmc (30.06.2020 um 23:56 Uhr)

  2. Die folgenden 2 Benutzer haben sich bei vmc bedankt für diesen nützlichen Beitrag:

    No_Name (29.06.2020), oki (28.06.2020)

  3. Avatar von oki
    Titel
    Freie Cruncher

    Bewertung

    Registriert am
    27.11.2010

    Ort
    Friedrichsgraben

    Beiträge
    456

    Danke
    Danke gesagt 46   Danke erhalten 5

    #2

    Standard

    Hallo vmc,

    nachdem ich eine ganze Reihe Qt5-stuff nachinstalliert habe, sagt er

    $ > cmake .
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/me/adds/woinc


    Und nun? Ich habe von C++ und cmake keine Ahnung.

    Schöne Grüße

  4. Avatar von Dennis-TW
    Titel
    Gold Member

    Bewertung

    Registriert am
    25.01.2008

    Ort
    Taiwan

    Beiträge
    1.145

    Danke
    Danke gesagt 4   Danke erhalten 62

    #3

    Standard

    Bin interessiert, da ich zufällig gestern komplett neu mit Linux Mint 20 (Cinnamon) angefangen habe.

    Allerdings bin ich ohne Installationsanleitung bei sowas aufgeschmissen. Git habe ich installiert und das Repository auch erfolgreich geklont. Jetzt weiß ich allerdings nicht weiter.
    Grüße aus dem fernen Taiwan

  5. Avatar von vmc
    Titel
    Senior Member

    Bewertung

    Registriert am
    20.08.2009

    Ort
    Nürnberg

    Beiträge
    481

    Danke
    Danke gesagt 11   Danke erhalten 3

    #4

    Standard

    Ja sorry, das Readme inkl. Installationsanleitung wollte ich schreiben, wurde dann aber abgelenkt und haja, heute nicht dazu gekommen. Hole ich hoffentlich diese Woche noch nach

    Hier mein Gedankengang wie man das baut. Bitte alles lesen und nicht einfach nur Zeug kopieren und ausfuehren!


    Ich verwende ueblicherweise meine dev-configs, die sind ein bisschen anders, aber werde beschreiben was zu tun ist. Die Dev-Configs kommen aber am Ende wieder

    Code:
    git clone https://github.com/vmc-coding/woinc.git woinc
    mkdir -p woinc/build && cd woinc/build
    cmake ..
    make -j$(nproc)
    Ueblicherweise will man noch den Installpfad angeben, dann uebergibt man dem cmake -DCMAKE_INSTALL_PREFIX
    Also sowas
    Code:
    cmake -DCMAKE_INSTALL_PREFIX=~/bin/woinc ..
    Compilerflags kann man natuerlich auch angeben:
    Code:
    cmake -DCMAKE_CXX_FLAGS="-march=native -O2" ..
    Hier nochmal zusammengefasst, wie gesagt, eine echtes Readme kommt hoffentlich diese Woche noch:
    Code:
    git clone https://github.com/vmc-coding/woinc.git woinc
    mkdir -p woinc/build && cd woinc/build
    cmake  -DCMAKE_INSTALL_PREFIX=~/bin/woinc -DCMAKE_CXX_FLAGS="-march=native -O2" ..
    make -j$(nproc) install
    In dem Beispiel sind die beiden Binaries (woinccmd und woincqt) dann unter ~/bin/woinc/bin installiert und solltet ihr unter Angabe des Pfades aufrufen koennen. Intern sind die statisch gelinkt, die Deps von aussen dynamisch. Heisst, ihr solltet die auch aus dem Ordner nach zB ~/bin verschieben koennen und sie sollten tun.

    Falls ihr euch nicht mit CXX_FLAGS rumschlagen wollt, meine Dev-Configs sind als Buildconfig hinterlegt. Ich schalte da meist ziemlich aggressiv die Warnings ein, spiele aber auch mit LTO. Fuer Dev-Debug:
    Code:
    cmake -DCMAKE_BUILD_TYPE=dev_debug -DCMAKE_INSTALL_PREFIX=~/bin/woinc ..
    oder Dev-Release:
    Code:
    cmake -DCMAKE_BUILD_TYPE=dev_release -DCMAKE_INSTALL_PREFIX=~/bin/woinc ..
    Nachdem ich bisher nur auf meinem Rechner getestet habe, wollt ihr vllt. sogar das Dev-Debug-Profil aktivieren. Das wuerde mir bei Analysen helfen, wenn bei euch Fehler zur Laufzeit auftreten. Dafuer muesste man die Anwendung aber aus einem Terminal starten und dieses nicht schliessen (oder den stderr-Output in eine Datei umleiten). Einen Logger gibt es nicht, das fand ich nicht notwendig.

    Danke euch Beiden fuers Antesten

    - - - Aktualisiert - - -

    Aufruf von woinccmd ist analog boinccmd, ich habe es aber noch nicht geschafft ::1 zu unterstuetzen (deswegen btw, der Debug-Output im initial Import .., pullt mal bitte ). Muss man halt doch localhost eintippern .. so what. Einfache Textersetzung will ich da sicherlich nicht.

    Aufruf von woincqt hat einen Fallback, man kann das aus der cli aufrufen: woincqt <password>. Funktioniert natuerlich nur lokal, aber ist einfach fuer Dev, damit ich das nicht ueber die UI machen muss. Problem: andere User auf dem Rechner sehen das Passwort!
    Eine Art Host + Passwort merken habe ich mir schon ueberlegt, bin mir aber noch unschluessig. Plaintext will ich das nicht iwie abspeichern, Master-Password ist aber auch nur so semi gut. Wobei das eine Loesung waere, wenn das UI mal mehr als einen Client unterstuetzt. Habe noch nicht geschaut wie der boincmgr das macht und noch nicht entschieden wir woinc das tun wird.

    - - - Aktualisiert - - -

    @Dennis: Bei dir klingt dass danach, dass du einen Nachbau vom boincclient in woinc erwartest, also das Programm was WUs ausfuehrt. Dem ist nicht der Fall, woinc stellt nur die Tools bereit um (remote) mit diesen Clients zu kommunizieren.
    Geändert von vmc (30.06.2020 um 03:16 Uhr)

  6. Avatar von Dennis-TW
    Titel
    Gold Member

    Bewertung

    Registriert am
    25.01.2008

    Ort
    Taiwan

    Beiträge
    1.145

    Danke
    Danke gesagt 4   Danke erhalten 62

    #5

    Standard

    Zitat Zitat von vmc Beitrag anzeigen
    @Dennis: Bei dir klingt dass danach, dass du einen Nachbau vom boincclient in woinc erwartest, also das Programm was WUs ausfuehrt. Dem ist nicht der Fall, woinc stellt nur die Tools bereit um (remote) mit diesen Clients zu kommunizieren.
    Ähm....nö, der Unterschied von boinc-client und boinc-manager ist mir schon bekannt. Ging mir darum, dass der boinc-manager in Sachen Darstellung auch bei mir oft schlecht wegkommt. Bislang hab ich dann Boinctasks als Alternative genommen, aber dafür immer extra wine zu installieren ist auch nicht so toll (obwohl es funktioniert). Hab allerdings erst wieder am Wochenende Zeit zum testen.
    Grüße aus dem fernen Taiwan

  7. Avatar von vmc
    Titel
    Senior Member

    Bewertung

    Registriert am
    20.08.2009

    Ort
    Nürnberg

    Beiträge
    481

    Danke
    Danke gesagt 11   Danke erhalten 3

    #6

    Standard

    Zitat Zitat von Dennis-TW Beitrag anzeigen
    Ähm....nö, der Unterschied von boinc-client und boinc-manager ist mir schon bekannt. Ging mir darum, dass der boinc-manager in Sachen Darstellung auch bei mir oft schlecht wegkommt. Bislang hab ich dann Boinctasks als Alternative genommen, aber dafür immer extra wine zu installieren ist auch nicht so toll (obwohl es funktioniert). Hab allerdings erst wieder am Wochenende Zeit zum testen.
    Ui, wenn ich dann damit helfen kann/konnte, gerne An Sowas habe ich da bei der Entwicklung nicht gedacht, aber hey .

  8. Avatar von oki
    Titel
    Freie Cruncher

    Bewertung

    Registriert am
    27.11.2010

    Ort
    Friedrichsgraben

    Beiträge
    456

    Danke
    Danke gesagt 46   Danke erhalten 5

    #7

    Standard

    Auf meiner openSUSE-gcc-per-yast-out-of-the-box bekomme ich jetzt diese Fehlermeldung:




    me@pc:~/add >
    git clone https://github.com/vmc-coding/woinc.git
    Klone nach 'woinc' ...
    remote: Enumerating objects: 156, done.
    remote: Counting objects: 100% (156/156), done.
    remote: Compressing objects: 100% (110/110), done.
    remote: Total 156 (delta 40), reused 152 (delta 39), pack-reused 0
    Empfange Objekte: 100% (156/156), 194.27 KiB | 1009.00 KiB/s, Fertig.
    Löse Unterschiede auf: 100% (40/40), Fertig.

    me@pc:~/add >
    mkdir -p woinc/build && cd woinc/build

    me@pc:~/add/woinc/build
    cmake ..
    -- The CXX compiler identification is GNU 7.4.1
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Looking for C++ include pthread.h
    -- Looking for C++ include pthread.h - found
    -- Looking for pthread_create
    -- Looking for pthread_create - not found
    -- Looking for pthread_create in pthreads
    -- Looking for pthread_create in pthreads - not found
    -- Looking for pthread_create in pthread
    -- Looking for pthread_create in pthread - found
    -- Found Threads: TRUE
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/me/add/woinc/build

    me@pc:~/add/woinc/build >
    make -j$(nproc)
    Scanning dependencies of target woinc_ui_common
    Scanning dependencies of target woinc
    [ 4%] Building CXX object ui/common/CMakeFiles/woinc_ui_common.dir/types_to_string.cc.o
    [ 4%] Building CXX object lib/CMakeFiles/woinc.dir/src/md5.cc.o
    [ 6%] Building CXX object lib/CMakeFiles/woinc.dir/src/rpc_command.cc.o
    [ 8%] Building CXX object lib/CMakeFiles/woinc.dir/src/rpc_connection.cc.o
    [ 8%] Built target woinc_ui_common
    [ 10%] Building CXX object lib/CMakeFiles/woinc.dir/src/rpc_parsing.cc.o
    In file included from /usr/include/c++/7/cassert:44:0,
    from /home/me/add/woinc/lib/src/rpc_command.cc:22:
    /home/me/add/woinc/lib/src/rpc_command.cc: In function ‘constexpr woinc::rpc::COMMAND_STATUS {anonymous}::map__(woinc::rpc::CONNECTION_STATUS)’ :
    /home/me/add/woinc/lib/src/rpc_command.cc:50:5: error: call to non-constexpr function ‘void __assert_fail(const char*, const char*, unsigned int, const char*)’
    assert(false);
    ^
    [ 12%] Building CXX object lib/CMakeFiles/woinc.dir/src/socket_posix.cc.o
    [ 14%] Building CXX object lib/CMakeFiles/woinc.dir/src/types.cc.o
    make[2]: *** [lib/CMakeFiles/woinc.dir/build.make:87: lib/CMakeFiles/woinc.dir/src/rpc_command.cc.o] Fehler 1
    make[2]: *** Es wird auf noch nicht beendete Prozesse gewartet....
    make[1]: *** [CMakeFiles/Makefile2:88: lib/CMakeFiles/woinc.dir/all] Fehler 2
    make: *** [Makefile:141: all] Fehler 2

    me@pc:~/add/woinc/build >

    Schöne Grüße

  9. Avatar von vmc
    Titel
    Senior Member

    Bewertung

    Registriert am
    20.08.2009

    Ort
    Nürnberg

    Beiträge
    481

    Danke
    Danke gesagt 11   Danke erhalten 3

    #8

    Standard

    wtf? bei GCC 7.4.1 scheint assert(false); keine constexpr zu sein. Hm, ok, wegpatchen will ich das an der Stelle aber auch nicht, zumal das bestimmt noch andere Stellen betrifft. Wenn du moechtest, kannst du die Assertions (und damit den kompletten assert()-Aufruf) via Preprocessor deaktivieren:
    Code:
    cmake -DCMAKE_CXX_FLAGS="-DNDEBUG" ..
    Ansonsten muesste man halt das constexpr weg machen, lib/src/rpc_command.cc in Zeile 41. Aber wie gesagt, ich vermute dass das nicht die einzige Stelle sein wird.

    Das constexpr kannst du auch global wegmachen, das ist nur ein Hint an den Compiler, aendert nichts an der Logik. Sowas wie 'sed -i "s/constexpr //g" */*/*.h */*/*/*.h */*/*.cc */*/*/*.cc'. Ich sag nicht, dass man das tun sollte, waere da fuer andere Loesungsfindungen, aber als Schnellloesung machbar ..

    Und ich schau mal, was der GCC-7.4.1 von C++-14 alles unterstuetzt. Das koennte noch mehr Probleme geben, weil halt doch schon alt der Compiler :/

    - - - Aktualisiert - - -

    Kompilier mal bitte mit make VERBOSE=1. Ich brauch nicht alles, nur eine dieser 'Building CXX object' Zeilen + ein paar Zeilen danach. Der g++-Aufruf sollte zu sehen sein.

    Verwendest du cmake >= 3.8?

    Q&A: Warum ist es ok Assertions zu deaktivieren und warum tu ich das nicht per Default?

    Das ist eine Hilfe zur Entwicklungszeit. Damit kann man Vorbedingungen, Invarianten, Nachbedingungen im Code beschreiben und Fehler fruehzeitig finden. Ueblicherweise deaktiviert man die fuer den Releasebuild und hat sie per Default aktiviert, weil das der Regelfall in der Softwareentwicklung ist. Einen Releasebuild gibt es eher selten. Ist btw Default der C-Lib (des C-Standards), nicht von mir.
    Du baust keinen Releasebuild, deswegen sind die aktiv. Tut aber nicht weh die zu deaktiveren, aendert nichts an der Logik des Programms, es fallen nur Laufzeitchecks weg.
    Du koenntest natuerlich auch ein Release bauen Am Ende passiert da aber genau das Gleiche (-DNDEBUG), nur dass noch Optimierungsflags (-O2 oder was auch immer du angibst) aktiv sind, s. auch das Bsp mit Buildprofile dev_release, wo das hardcoded im Setupfile passiert.
    Geändert von vmc (Gestern um 00:33 Uhr)

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 12.06.2015, 11:01
  2. Antworten: 9
    Letzter Beitrag: 02.06.2012, 23:33
  3. Alternative zu Seti
    Von ssy im Forum Das Hauptforum
    Antworten: 9
    Letzter Beitrag: 31.01.2010, 15:43
  4. PC fährt nicht herunter / BOINCMGR.EXE
    Von [SG-SPEG]stefan78 im Forum Software - Installation, Probleme usw.
    Antworten: 2
    Letzter Beitrag: 30.09.2007, 16:25

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
Single Sign On provided by vBSSO