Hi all,
so I am trying to make a release version of my package. I have read a lot on the subject so far and tried to follow the instructions properly, specially from
http://prezi.com/vpuyxca-qboq/how-to-create-a-closed-source-package-with-lazarus/ .
The code was written in Lazarus 1.2.0, i386-win32, fpc 2.6.2, Windows 7 32 bit.
But the binary version cannot be installed in any other computer unless first I install the package with the source code, uninstall it, and install again the package only with the binary files. Which is not useful.
The majority of the tests was done on another computer with exactly the same configuration (Lazarus 1.2.0, i386-win32, fpc 2.6.2, Windows 7 32 bit). But I've also tried on a Windows 8 64, with both Lazarus 1.2.2 and 1.2.4 i386-win32, and the result was the same: only possible after compiling once with the source code first.
With "-vut" activated, the error is like this:
.
.
.
Unitsearch: PbAbout.ppu
Unitsearch: PbAbout.pp
Unitsearch: PbAbout.pas
Unitsearch: C:\release_0707141543\bin\LAZ\lib\i386-win32\PbAbout.ppu
PPU Loading C:\release_0707141543\bin\LAZ\lib\i386-win32\PbAbout.ppu
(PBABOUT) PPU Name: C:\release_0707141543\bin\LAZ\lib\i386-win32\PbAbout.ppu
(PBABOUT) PPU Time: 2014/07/07 15:43:38
(PBABOUT) PPU Flags: 741507
(PBABOUT) PPU Crc: C0E63896
(PBABOUT) PPU Crc: 1C86CAFE (intfc)
(PBABOUT) PPU Crc: 1249ECCF (indc)
(PBABOUT) Number of definitions: 66
(PBABOUT) Number of symbols: 74
(PBABOUT) PPU Source: PbAbout.pas not found
(PBABOUT) PPU Source: compilers.inc not found
(PBABOUT) Load from PBABOUT (interface) unit SYSTEM
(PBABOUT) Adding dependency: PBABOUT depends on SYSTEM
(PBABOUT) Load from PBABOUT (interface) unit OBJPAS
(PBABOUT) Adding dependency: PBABOUT depends on OBJPAS
(PBABOUT) Load from PBABOUT (interface) unit WINDOWS
(PBABOUT) Adding dependency: PBABOUT depends on WINDOWS
(PBABOUT) Load from PBABOUT (interface) unit LCLINTF
(PBABOUT) Adding dependency: PBABOUT depends on LCLINTF
(PBABOUT) Recompiling PbAbout, checksum changed for LCLIntf
Unitsearch: PbAbout.pp
Unitsearch: PbAbout.pas
Unitsearch: C:\lazarus\designer\PbAbout.pp
Unitsearch: C:\lazarus\designer\PbAbout.pas
Unitsearch: C:\lazarus\debugger\PbAbout.pp
Unitsearch: C:\lazarus\debugger\PbAbout.pas
Unitsearch: C:\lazarus\debugger\frames\PbAbout.pp
Unitsearch: C:\lazarus\debugger\frames\PbAbout.pas
.
.
.
Unitsearch: C:\lazarus\fpc\2.6.2\bin\i386-win32\PbAbout.pp
Unitsearch: C:\lazarus\fpc\2.6.2\bin\i386-win32\PbAbout.pas
PbAbout.pas(72,12) Fatal: Can not find PbAbout used by ssv1laz, ppu=C:\release_0707141543\bin\LAZ\lib\i386-win32\PbAbout.ppu, package ssv1laz
So I think the compiler tries to update the binary files because, in another Lazarus configuration, it finds mismatching dates between files PbAbout.ppu from my package and LCLIntf.ppu from target Lazarus installation. Of course it cannot compile without the source file PbAbout.pas and the installation stops.
I get the same error if I try to install the binary version from command line:
lazbuild --skip-dependencies --add-package ssv1laz.lpk --builde-ide=
and even if I remove the unit LCLIntf from PbAbout.pas, when the message is:
(PBABOUT) Recompiling PbAbout, checksum changed for LCLType
which is the same error for another necessary unit.
So what can be done about that? How to tell the compiler not to compile PbAbout.ppu if it finds an "old" LCLIntf.ppu? Shouldn't this be obvious, since "-Ur" is activated for the package?
Thanks for your time!