2012/10/17 Mattias Gaertner <[email protected]>: > True. But Lazarus and fpc easily need one or two GB, so 45MB is not that much. > And it is some kind of show stopper if the IDE recompiles everything to > install > one package. > Of course the binary will be smaller and some users have slow internet. > So it has pros and cons. I can live with it.
Yesterday after doing more rigorous attempts to remove *all* binaries from the install directory (so that contents of /usr/share/ becomes truly architecture independent which is a *must* and the very definition and purpose of /usr/share/) I noticed that this gives some more subtle problems, when restarting the IDE after successful rebuild of the IDE it will look for startlazarus in the lazarus folder (and not on the search path). Therefore I have for now decided to install the entire lazarus into /usr/lib/lazarus and leave the executables it is looking for where they are. This would make it possible to leave also the compiled units in the lazarus folder again (but of course only makes sense if I don't compile them with custom options). In the end this is only a change of one line in the rues file and does not break other things and it is nice to know that it is at least possible to make such a stripped down installer that still provides a fully functional Lazarus. > I'm not sure I can follow you here. How can I reproduce the bug? It is because of the typical directory layout when building a .deb package. I will try to explain. Consider this simple hello world directory layout after unzipping and preparing the source for package building immediately before the actual build is started: hello-world-1.0/debian/changelog hello-world-1.0/debian/control hello-world-1.0/debian/rules hello-world-1.0/Makefile hello-world-1.0/hello.lpi hello-world-1.0/hello.lpr after "make all" it might look like this: hello-world-1.0/debian/changelog hello-world-1.0/debian/control hello-world-1.0/debian/rules hello-world-1.0/Makefile hello-world-1.0/hello.lpi hello-world-1.0/hello.lpr hello-world-1.0/hello.ppu hello-world-1.0/hello.o hello-world-1.0/hello now it will call "make install" with PREFIX set to a special path that it will later use to zip the installation contents. This PREFIX folder is a subdirectory of the debian folder! Our example makefile (just for illustration purpose) would for example install into $(PREFIX)/lib/hello and also a symlink into $(PREFIX)/bin so after make install it should look like this: hello-world-1.0/debian/hello-world/usr/lib/hello/hello hello-world-1.0/debian/hello-world/usr/bin/hello -> ../lib/hello/hello hello-world-1.0/debian/changelog hello-world-1.0/debian/control hello-world-1.0/debian/rules hello-world-1.0/Makefile hello-world-1.0/hello.lpi hello-world-1.0/hello.lpr hello-world-1.0/hello.ppu hello-world-1.0/hello.o hello-world-1.0/hello then after make install has completed debhelper tools will zip everything below debian/hello-world/ and make it the data.tar.gz member of the .deb the reason why "make install" of lazarus fails is that at one point it does a cp -r . $(PREFIX)/share/lazarus/ and with prefix set to ./debian/lazarus/usr this will expand like that: cp -r . ./debian/lazarus/usr/share/lazarus/ which would attempt to copy the entire folder (*including* the debian folder!) into a subdirectory of itself (into the debian folder) and this will fail with error, cp will refuse to do this, it will start copying a few files but then when it comes to copying the ./debian folder into ./debian/lazarus/usr/share/lazarus/ it will abort with error. this can be avoided by either copying only the needed files explicitly. I worked around this by installing into a temp dir *outside* the current directory and then in a separate step moving it back into ./debian/lazarus/usr where debhelper tools will expect it to be and removing the debian directory (and other unwanted stuff) from the final install directory again. -- _______________________________________________ Lazarus mailing list [email protected] http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
