Skip to main content

Poll

Which kind of installer should be used by Otter?

  • Inno Setup
    2 (50%)
  • NSIS
    1 (25%)
  • Other
    0 (0%)
  • Custom
    1 (25%)

Total Members Voted: 4

Voting closed: 2014-06-25, 12:52:32

Topic: Windows installer - #216 (Read 4185 times)

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Windows installer - #216
First beta is nearing but so far we don't have installer for Windows...
For now something basic would be sufficient, just install files into selected directory (stuff like accepting license, installing only selected language, creating shortcut to launch in portable mode etc. could be added later).
So far it seems that people prefer Inno Setup over NSIS, but since currently we have no installer any will do, it could be always replaced or improved later.

Any volunteers with some experience in writing installer scripts? ;-)
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • Frenzie
  • [*][*][*][*][*]
  • Administrator
Re: Windows installer - #216
Reply #1
Not me, sorry. :)

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Windows installer - #216
Reply #2
OK, Moarc created basic installer script. ;-)
https://github.com/Emdek/otter/compare/4b43c36e46d5...ecad61ecdacb
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Windows installer - #216
Reply #3
Apparently not everyone likes Inno Setup, so I've added poll to check your preferences.
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • Somebody
  • [*]
Re: Windows installer - #216
Reply #4
Why is an installer needed? Is "installation" more complicated than unpacking an archive to some place?

Although this topic is about Windows, while at it, let me express that at least for the first beta version I hope for a ready-built executable binary for Linux, which does not seem to be provided for any alpha version. Is there a reason for that? Opera used to be available for Linux as one single file that could be run. Otter seems to suggest that users first load some several hundred MB large Qt-foo and spend an indefinite time to compile Otter from source for each release. This is not good.

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Windows installer - #216
Reply #5
@Somebody, yes, basic installer doesn't give any real advantages over basic ZIP file.
But apparently some users like to have it anyway, for unknown reasons. ;-)

I could try to provide such packages (32 and 64 bit) for Linux, shipping only needed SO files, but I have no idea if it will work fine with all of the most prominent distributions...
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • Somebody
  • [*]
Re: Windows installer - #216
Reply #6

@Somebody, yes, basic installer doesn't give any real advantages over basic ZIP file.
But apparently some users like to have it anyway, for unknown reasons. ;-)

I could try to provide such packages (32 and 64 bit) for Linux, shipping only needed SO files, but I have no idea if it will work fine with all of the most prominent distributions...


I think, there is only one thing to decide for installation, and that is whether Otter's profile should be managed for each system user individually (i.e., a profile directory in User folder on Windows or in home directory on Unix) or centrally for all users (i.e., portably in some specified folder; I think the Windows Opera installer had that option for a portable installation).

When building packages for Linux, you should test them with a minimal distribution like Tiny Core Linux (http://tinycorelinux.net/), since it should work everywhere if it works there. All dependencies should be statically linked, lest there's any chance that some component is not available in some distribution. You should be able to use Tiny Core Linux without hassle alonside your normal installation, since it runs completely in RAM. You just need an empty USB stick, to which you can write their 72 MB CorePlus image with dd. To get a minimal build environment in a running Tiny Core Linux, the "compiletc" package can be used from their graphical "Apps" package manager.

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Windows installer - #216
Reply #7
@Somebody, uhm... Static build sounds nice, but it would be harder to accomplish, it would require statically compiled Qt which would take many hours to compile (and then the same amount for 32 bit build) due to enormous size of WebKit itself.
For beta I would go for shipping .so files from SDK, static build could be reconsidered later.
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • Somebody
  • [*]
Re: Windows installer - #216
Reply #8

@Somebody, uhm... Static build sounds nice, but it would be harder to accomplish, it would require statically compiled Qt which would take many hours to compile (and then the same amount for 32 bit build) due to enormous size of WebKit itself.
For beta I would go for shipping .so files from SDK, static build could be reconsidered later.


OK, maybe break it into individual component blocks, such that large components like WebKit and Qt are included alongside Otter itself inside an archive. Otter could then be linked dynamically to the large dependencies, that you don't want to build each time, but the libraries necessary to run Otter would be delivered together with Otter, just like (I assume) it is done for the Windows version.

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Windows installer - #216
Reply #9
@Somebody, yes, Windows version uses DLLs from official Qt SDK, precompiled (it would take forever to build it on my Windows machine, it's Turion ;-)).
The same would apply to Linux (using libraries from SDK, optimized by upstream), although it would be still required to install few dependencies like GStreamer (I'm not sure if it is hard requirement, for sure it's needed to play native video and audio), it's bad idea to ship it in tarball.
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • Somebody
  • [*]
Re: Windows installer - #216
Reply #10
I have now downloaded the latest Qt Creator and installed. I'll soon try to build Otter. Since there are weekly releases now, is there some place where to find the weekly release's source code? I didn't see a file on the sourceforge download page. Oh, and in case you intend to try to install Qt Creator on Tiny Core Linux, I found that some libgl or so file was missing. Installing the Xorg package made the error message go away.

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Windows installer - #216
Reply #11
@Somebody, these probably won't be tagged, this one is  commit  8834418af717684faf2a506445598c1fcc3c5950 plus minor fixes.
You will need GStreamer 0.10 header files to be able to compile, including plugins-base package (it's quite odd how they splitted that package...).
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • Somebody
  • [*]
Re: Windows installer - #216
Reply #12
I guess I need to find some other setup. While I was able to install Qt Creator from the provided installer and compiling Otter (after installing Xorg and gst-plugins-base and libxslt from Tiny Core Linux's package manager), trying to start either of Qt Creator or Otter fails immediately with the notice "Segmentation fault". Is there any way to get a more detailed report about the problem than that?

Note also, that the instructions in Otter's INSTALL file did not work for me as described there. "qmake" could not be found, so I looked for it in the folder that the Qt Creator installer created and found there a qmake file in a gcc/bin/ folder, which I then used with its full path instead. "make" didn't work either. So I installed GNU Make from Tiny Core Linux's package manager and entered the command again. This lead to "g++" not found. So I installed the "compiletc" package from Tiny Core Linux's package manager, which installs a couple of packages for a build environment, like gcc, make, patch and somesuch. After doing that, I tried again and compilation started. Building Otter took about ten minutes on my computer, which uses an Intel Atom D525 (http://ark.intel.com/products/49490) as its processor.

I'm not sure, whether the Qt Creator installer also installed its own compiler that I could have used, and if so, how? Would I have to pass some information about its existence to the "make" program? Or do I have to define some environment variable? How would that be done? Sorry, if these appear to be trivial questions, I'm not that familiar with how to do advanced things on Linux. Windows makes it easier to create environment variables and configure other things, since graphic tools exist, where you can click on what looks like it could be what you want.

The compilation environment I installed from Tiny Core Linux's package manager might have come with different configurations than Qt Creator's own compiler, if one was included. I think, for instance, that Tiny Core Linux uses eglibc by default as its C library. I'm not sure, if Qt uses any C libraries and assumes, perhaps, that it can call gclibc. Could this be a cause for Otter and Qt Creator immediately quitting with "Segmentation fault"? Note, that Qt Creator's graphical installer program itself ran fine.

Anyway, I see the ten minutes it took to compile Otter as a confirmation to my wish to find an already compiled package of Otter for download. Casual users might otherwise find installation too lengthy, and if for some reason it doesn't work the first time, the software might be considered broken, causing people not to come back.

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Windows installer - #216
Reply #13
@Somebody, the stack you had described is far from standard, usually it's enough to just install dependencies and run, the only part more complicated than in Windows being header files and missing compiler.
I've found some results related to that distribution and Qt5, maybe it will help a bit:
http://forum.tinycorelinux.net/index.php?topic=14566.0

Yes, INSTALL could be improved, but better idea could be to add some wiki page with instructions for different distributions.

QtCreator doesn't ship compilers under Linux, it depends on system wide one, installed as dependency when installing from repository.

It's possible that indeed eglibc might be the reason.

You can try to use gdb to get backtrace, these instructions seems to be pretty good:
http://wiki.lazarus.freepascal.org/Creating_a_Backtrace_with_GDB#Linux.2FBSD_Users
Simply run gdb ./qtcreator from its bin directory and follow instructions from wiki.

BTW, 10 minutes for an Atom CPU is not that bad result, it takes much longer on my Windows XP machine with old Turion. ;-)
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • tt92
  • [*][*][*][*][*]
Re: Windows installer - #216
Reply #14
Is there a Windows installer called "Glazier"?
If not, there should be.

  • Somebody
  • [*]
Re: Windows installer - #216
Reply #15
OK, I ran the debugger gdb and it said there are no debug symbols in Otter and Qt Creator. Backtrace was short, for Otter it was:

Program received signal SIGSEGV, Segmentation fault.
#0  0xb137a445 in XGetXCBConnection () from /usr/local/lib/libX11-xcb.so.1
#1  0x00000000 in ?? ()

For Qt Creator, it was almost the same, except that there was only line #0 and no line #1 and the first number (memory address?) in line #0 was different. Both apparently failed in XGetXCBConnection () from /usr/local/lib/libX11-xcb.so.1.

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Windows installer - #216
Reply #16
@tt92, I've not heard about that one.

@Somebody, I've found this:
http://qt-project.org/forums/viewthread/37355
Quote
The EGL implementation is not compatible with X. You should build with -no-xcb and use the eglfs platform plugin. This way you will be using EGL/GLES directly, bypassing X entirely.

If this is the case then it would require rebuilding Qt which would take many hours on Atom CPU...

Maybe there exists somewhere binary packages targeting this distribution (preferably Qt 5.2, but with minor tweaks Qt 5.1 should be enough)?
If not then I could later try to rebuild Qt on my machine (my main system has i7 3770K, it should take less than hour to build Qt including QtWebKit) and then ship special packages.
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • Somebody
  • [*]
Re: Windows installer - #216
Reply #17
I don't think there are binary packages just yet. All I've seen is are packages for Qt 4.x. I have yet to attempt a full build on my computer, but it looks as if building everything from scratch might be the most fail-safe option. Do you know of any memory requirements to build Qt and other dependencies of Otter? I read somewhere some time ago, that it is difficult to built Firefox on some machines, because it requires outrageous amounts of RAM.

It would be nice, if you could prepare a fail-safe make script, ideally somewhat configurable to test several settings, that builds Otter and all its dependencies from scratch. I would like to build it on an unused web server. This would probably be far from fast, but since the server could built Otter all the time, it would allow daily builds, unless building takes more than 24 hours. Users who want to test daily builds could download them from there. For that, I would have to investigate how to automate the process.

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Windows installer - #216
Reply #18
@Somebody, Qt itself shouldn't be that bad, but QtWebKit is a monster on its own, compiling similar (it's a fork) QtWebEngine took up to 5 GB of memory on my machine...
So far Qt is the only direct dependency (indirect include GStreamer, gettext and other usual stuff).
I could try to prepare such script later, it should be quite straightforward, just build Qt once when there is new upstream release (few times per year), simply run configure with custom parameters (they don't add new dependencies too often, so it should be enough to update them once when there is new major release, up to two times per year) and rebuild Otter against it. It's important to note that QtWebKit must be downloaded separately.
There should be some instructions to do that, as there for sure exists instructions to cross compile for Windows in similar way.
I was considering use of some VPS to both serve main page and automate builds, but so far I'm busy with other stuff...
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.