Spectator - kompilace / nová verze

Pěkný den,

protože už od konce roku 2015 nebyla vydána nová verze Spectatoru a ta stávající neobsahuje později vydané opravy včetně korektně zobrazované záložky Updater, jsem se rozhodl ji podle dostupného návodu zkompilovat sám.

Komplikace bohužel skončí následující chybou. Poradíte mi, co dělám špatně, popř. ještě lépe, vydali byste novou verzi zahrnující dosud existující opravy? Pokus proběhl na Windows 8.1 s právy správce, všechny knihovny byly staženy v příslušných verzích a umístěny do správných adresářů.

C:\spectator-master-9ef0de5e163fd3f1470cd0a342cf13f0bc2a335a>spectator-build.bat

C:\spectator-master-9ef0de5e163fd3f1470cd0a342cf13f0bc2a335a>REM To use this scr
ipt you need to have QT installed to a standard location C:\Qt\ and qt was to co
ntain mingw32 compiler

C:\spectator-master-9ef0de5e163fd3f1470cd0a342cf13f0bc2a335a>REM

C:\spectator-master-9ef0de5e163fd3f1470cd0a342cf13f0bc2a335a>REM To run this scr
ipt from wine use 'wine cmd < spectator-build.bat'

C:\spectator-master-9ef0de5e163fd3f1470cd0a342cf13f0bc2a335a>REM

C:\spectator-master-9ef0de5e163fd3f1470cd0a342cf13f0bc2a335a>SET Path=C:\Qt\Qt5.
5.0\5.5\mingw492_32\bin;C:\Qt\Qt5.5.0\Tools\mingw492_32\bin;C:\Qt\Qt5.5.0\Tools\
QtCreator\bin;C:32;C:

C:\spectator-master-9ef0de5e163fd3f1470cd0a342cf13f0bc2a335a>qmake spectator.pro


C:\spectator-master-9ef0de5e163fd3f1470cd0a342cf13f0bc2a335a>mingw32-make
cd library\ && ( if not exist Makefile C:\Qt\Qt5.5.0\5.5\mingw492_32\bin\qmake.e
xe C:\spectator-master-9ef0de5e163fd3f1470cd0a342cf13f0bc2a335a\library\library.
pro -o Makefile ) && mingw32-make -f Makefile
Project MESSAGE: Spectator lib version 0.6
Project MESSAGE: Spectator lib version 0.6
Project MESSAGE: Spectator lib version 0.6
mingw32-make[1]: Entering directory 'C:/spectator-master-9ef0de5e163fd3f1470cd0a
342cf13f0bc2a335a/library'
mingw32-make -f Makefile.Release
mingw32-make[2]: Entering directory 'C:/spectator-master-9ef0de5e163fd3f1470cd0a
342cf13f0bc2a335a/library'
g++ -c -pipe -fno-keep-inline-dllexport -O2 -frtti -Wall -Wextra -fexceptions -m
threads -DUNICODE -DSPECTATOR_VERSION=\"0.6\" -DSPECTATOR_LIBRARY -DQT_NO_DEBUG
-DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_XML_LIB -DQT_CORE_LIB -I. -Iinclude -I..\..\Q
t\Qt5.5.0\5.5\mingw492_32\include -I..\..\Qt\Qt5.5.0\5.5\mingw492_32\include\QtG
ui -I..\..\Qt\Qt5.5.0\5.5\mingw492_32\include\QtANGLE -I..\..\Qt\Qt5.5.0\5.5\min
gw492_32\include\QtNetwork -I..\..\Qt\Qt5.5.0\5.5\mingw492_32\include\QtXml -I..
\..\Qt\Qt5.5.0\5.5\mingw492_32\include\QtCore -Ibuild -I..\..\Qt\Qt5.5.0\5.5\min
gw492_32\mkspecs\win32-g++  -o build\logging.o src\logging.cpp
In file included from C:/Qt/Qt5.5.0/Tools/mingw492_32/i686-w64-mingw32/include/c
++/cwchar:44:0,
                 from C:/Qt/Qt5.5.0/Tools/mingw492_32/i686-w64-mingw32/include/c
++/bits/postypes.h:40,
                 from C:/Qt/Qt5.5.0/Tools/mingw492_32/i686-w64-mingw32/include/c
++/iosfwd:40,
                 from C:/Qt/Qt5.5.0/Tools/mingw492_32/i686-w64-mingw32/include/c
++/ios:38,
                 from C:/Qt/Qt5.5.0/Tools/mingw492_32/i686-w64-mingw32/include/c
++/ostream:38,
                 from C:/Qt/Qt5.5.0/Tools/mingw492_32/i686-w64-mingw32/include/c
++/iterator:64,
                 from ..\..\Qt\Qt5.5.0\5.5\mingw492_32\include/QtCore/qlist.h:42
,
                 from ..\..\Qt\Qt5.5.0\5.5\mingw492_32\include/QtCore/qhash.h:40
,
                 from ..\..\Qt\Qt5.5.0\5.5\mingw492_32\include/QtCore/qdebug.h:3
8,
                 from ..\..\Qt\Qt5.5.0\5.5\mingw492_32\include\QtCore/qloggingca
tegory.h:38,
                 from ..\..\Qt\Qt5.5.0\5.5\mingw492_32\include\QtCore/QLoggingCa
tegory:1,
                 from include/spectator/logging.h:25,
                 from src\logging.cpp:19:
include/spectator/logging.h:43:32: error: declaration of '_imp___iob' as array o
f references
 extern SPECTATOR_LIB_MODE bool stdout;
                                ^
src\logging.cpp:31:6: error: declaration of '_imp___iob' as array of references
 bool stdout = false;
      ^
src\logging.cpp: In function 'void spectatorMessageHandler(QtMsgType, const QMes
sageLogContext&, const QString&)':
src\logging.cpp:83:24: error: expected unqualified-id before '(' token
  if (SpectatorLogging::stdout || type == QtFatalMsg) {
                        ^
Makefile.Release:396: recipe for target 'build/logging.o' failed
mingw32-make[2]: *** [build/logging.o] Error 1
mingw32-make[2]: Leaving directory 'C:/spectator-master-9ef0de5e163fd3f1470cd0a3
42cf13f0bc2a335a/library'
Makefile:34: recipe for target 'release' failed
mingw32-make[1]: *** [release] Error 2
mingw32-make[1]: Leaving directory 'C:/spectator-master-9ef0de5e163fd3f1470cd0a3
42cf13f0bc2a335a/library'
makefile:39: recipe for target 'sub-library-make_first' failed
mingw32-make: *** [sub-library-make_first] Error 2

O podobnou opravu se již pokoušel @mkyral … možná Vám s tím dokáže poradit on.

Já se nepokouším o opravu, ale kompilaci kódu z repozitáře projektu. Úplně by mi přitom stačilo, kdyby vyšla nová verze Spectatoru, která bude již existující opravy zahrnovat.

S kompilací na windows bohužel nepomohu. Na linuxu to kompiluji proti systémovým qt knihovnám - aktuálně 5.9.4. Možná by pomohlo zkusit novější knihovny:

obrazek

S požadavkem na nový build pro windows by asi bylo dobré obrátit se na někoho z turris týmu. @Tangero ?

S verzí 5.9.4 a samozřejmě upravenými cestami dopadne kompilace bohužel úplně stejně. Tentokrát vyzkoušeno na jiném počítači, taktéž s Windows 8.1 a právy správce.

Zdravím,
se Spectatorem a Nuci (mimo jiné zajišťuje sběr dat pro Spectator) je to trochu komplikovanější.

Zjistím, co se s tím dá dělat.

1 Like

Koukám na to readme výše - tam není ani slovo o tom, že by to mělo jít zkompilovat na windows :smiley:

Windows packaging on Linux

A proč by nemělo? Veškeré knihovny jsou pro Window a jejich instalace i proces kompilace se spouští pod wine. Jiný důvod, než že autor má na svém pracovním počítači Linux a nechce si kvůli přípravě balíčku pro Windows instalovat tento systém nevidím, na funkčnost to nemá mít žádný vliv.

Ale jak píšu výše, pokud někdo podle příslušného návodu kompilaci provede a výsledek zpřístupní, bude to řešení tohoto vlákna. Minimálně pro autora je otázka několika minut.

No třeba proto, že wine jede v režimu ‘Win XP’. Netuším co vše se změnilo ve Win 8.1. Třeba s kompilací pomůže google.

To záleží na verzi wine. Třetí řada např. používá jako výchozí Windows 7, ale nemyslím, že by to mělo nějakou souvislost. Apropo, nepomohl byste s kompilací Vy?

Linky z návodu už nejsou aktuální, ale naštěstí pomohl Google.

https://download.qt.io/archive/qt/5.5/5.5.0/qt-opensource-windows-x86-mingw492-5.5.0.exe.mirrorlist
https://slproweb.com/download/Win32OpenSSL-1_0_2n.exe

Dneska určitě ne a zítra to taky není moc jisté. Mám teď trochu honičku v práci. Ale ve středu snad už bude volněji.

1 Like

Tak prima, díky že to zkusíte.

Tak jsem se k tomu konečně dostal a dopadl jsem stejně.

$ wine cmd < spectator-build.bat
Microsoft Windows 5.2.3790 (2.0.3)

C:\users\marian\spectator\spectator>
C:\users\marian\spectator\spectator>
C:\users\marian\spectator\spectator>
C:\users\marian\spectator\spectator>
C:\users\marian\spectator\spectator>
C:\users\marian\spectator\spectator>
C:\users\marian\spectator\spectator>
C:\users\marian\spectator\spectator>
C:\users\marian\spectator\spectator>cd library\ && ( if not exist Makefile C:\Qt\Qt5.5.0\5.5\mingw492_32\bin\qmake.exe C:\users\marian\spectator\spectator\library\library.pro -o Makefile ) && mingw32-make -f Makefile
Project MESSAGE: Spectator lib version 0.6
Project MESSAGE: Spectator lib version 0.6
Project MESSAGE: Spectator lib version 0.6
mingw32-make[1]: Entering directory 'C:/users/marian/spectator/spectator/library'
mingw32-make -f Makefile.Release
mingw32-make[2]: Entering directory 'C:/users/marian/spectator/spectator/library'
g++ -c -pipe -fno-keep-inline-dllexport -O2 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DSPECTATOR_VERSION=\"0.6\" -DSPECTATOR_LIBRARY -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_XML_LIB -DQT_CORE_LIB -I. -Iinclude -IC:\Qt\Qt5.5.0\5.5\mingw492_32\include -IC:\Qt\Qt5.5.0\5.5\mingw492_32\include\QtGui -IC:\Qt\Qt5.5.0\5.5\mingw492_32\include\QtANGLE -IC:\Qt\Qt5.5.0\5.5\mingw492_32\include\QtNetwork -IC:\Qt\Qt5.5.0\5.5\mingw492_32\include\QtXml -IC:\Qt\Qt5.5.0\5.5\mingw492_32\include\QtCore -Ibuild -IC:\Qt\Qt5.5.0\5.5\mingw492_32\mkspecs\win32-g++  -o build\logging.o src\logging.cpp
In file included from C:/Qt/Qt5.5.0/Tools/mingw492_32/i686-w64-mingw32/include/c++/cwchar:44:0,
                 from C:/Qt/Qt5.5.0/Tools/mingw492_32/i686-w64-mingw32/include/c++/bits/postypes.h:40,
                 from C:/Qt/Qt5.5.0/Tools/mingw492_32/i686-w64-mingw32/include/c++/iosfwd:40,
                 from C:/Qt/Qt5.5.0/Tools/mingw492_32/i686-w64-mingw32/include/c++/ios:38,
                 from C:/Qt/Qt5.5.0/Tools/mingw492_32/i686-w64-mingw32/include/c++/ostream:38,
                 from C:/Qt/Qt5.5.0/Tools/mingw492_32/i686-w64-mingw32/include/c++/iterator:64,
                 from C:\Qt\Qt5.5.0\5.5\mingw492_32\include/QtCore/qlist.h:42,
                 from C:\Qt\Qt5.5.0\5.5\mingw492_32\include/QtCore/qhash.h:40,
                 from C:\Qt\Qt5.5.0\5.5\mingw492_32\include/QtCore/qdebug.h:38,
                 from C:\Qt\Qt5.5.0\5.5\mingw492_32\include\QtCore/qloggingcategory.h:38,
                 from C:\Qt\Qt5.5.0\5.5\mingw492_32\include\QtCore/QLoggingCategory:1,
                 from include/spectator/logging.h:25,
                 from src\logging.cpp:19:
include/spectator/logging.h:43:32: error: declaration of '_imp___iob' as array of references
 extern SPECTATOR_LIB_MODE bool stdout;
                                ^
src\logging.cpp:31:6: error: declaration of '_imp___iob' as array of references
 bool stdout = false;
      ^
src\logging.cpp: In function 'void spectatorMessageHandler(QtMsgType, const QMessageLogContext&, const QString&)':
src\logging.cpp:83:24: error: expected unqualified-id before '(' token
  if (SpectatorLogging::stdout || type == QtFatalMsg) {
                        ^
Makefile.Release:396: recipe for target 'build/logging.o' failed
mingw32-make[2]: *** [build/logging.o] Error 1
mingw32-make[2]: Leaving directory 'C:/users/marian/spectator/spectator/library'
Makefile:34: recipe for target 'release' failed
mingw32-make[1]: *** [release] Error 2
mingw32-make[1]: Leaving directory 'C:/users/marian/spectator/spectator/library'
makefile:39: recipe for target 'sub-library-make_first' failed
mingw32-make: *** [sub-library-make_first] Error 2

Moc díky za zprávu. Teď už opravdu může pomoci jen CZ.NIC, @pepe, @shenek, @tangero, podíváte se na to prosím?

dobrý den, Spectator není od počátku 2017 podporován. Ze systému se odstraňuje komponenta, na které závisí a není možné jej nadále udržovat v tomto stavu. Uvažujeme o větší změně, ale není to v plánu v nejbližší době.

Děkuji za zprávu, a zkompilovat naposledy zdrojové kódy z oficiálního repozitáře, klidně jako neoficiální sestavení možné není?

mrkneme se na to. Zkompilovat to jistě jde, hloupé je, jestli to ještě bude fungovat :frowning:

1 Like

Na Linuxu mi Spectator stále funguje.

Na Windows právě také, kromě záložky Updater, na kterou je v oficiálním repozitáři patch. Už pak nikdo Spectator nezkompiloval a původní návod na přeložení nefunguje, jak uvádím ve své zprávě na začátku tohoto vlákna. Pokuste se o to prosím.

Je posím v této záležitosti něco nového?