[Lazarus] suggestion for lazbuild

Mattias Gaertner nc-gaertnma at netcologne.de
Wed Mar 18 23:08:09 CET 2015

On Tue, 17 Mar 2015 14:54:12 -0700
Mehmet Erol Sanliturk <m.e.sanliturk at gmail.com> wrote:

> On Tue, Mar 17, 2015 at 2:12 PM, Mattias Gaertner <nc-gaertnma at netcologne.de
> > wrote:
> > > I am using a batch or shell script file to erase all of the .ppu and .o
> > > files before starting the compilation .
> > >
> > > Selecting "Build" from Lazarus "Run" menu is starting to build Lazarus
> > > itself which is NOT possible because Lazarus is owned by the "root" .
> >
> > I'm not sure what you mean 'build Lazarus itself' and 'Lazarus is owned
> > by the "root"'.
> > Can you give more details?
> >
> Units supplied by the Lazarus , i.e. , when Lazarus is installed by the
> "root" , such as
> /usr/lib64/lazarus/
> which its owner is "root" .

Ok. So /usr/lib64/lazarus/ is readable by normal users, but not
writable. This is normal when you installed for example a deb or rpm
The deb/rpm packages install ppu files compiled with a specific
Widgetset and some default compiler options.

> When "Build" is selected from the "Run" menu of Lazarus , it should NOT
> include building of units installed by the Lazarus , but units of the user
> program .

A project can effect the compiler parameters of its packages. For
example when you change the widgetset of the project to 'qt'. Or when
you add a parameter to 'Configure Build Lazarus'.
You can see what and why packages will be rebuilt in View / IDE
Internals / What needs building.
You can see why a package was rebuilt by selecting the message 'Compile
package FooBar', then right click / About / About Compile Package

> There is a menu item in "Tools" about building the Lazarus itself .
> > > Using -B option seems that it is NOT effective when there are existing
> > .ppu
> > > and .o files .
> >
> > Do you mean lazbuild -B or fpc -B?
> >
> >
> >
> In one of the fields of the Lazarus menus , ( I could not find it now ) I
> have set -B option to force the compilation in "Build" mode instead of
> "Make" mode to make it to recognize record element changes :

Probably you know, but just making sure: The -B option tells the
compiler to recompile every unit, which has a source. Even if the sources
have not changed. So basically all units of the project, but no unit of
the packages. 
Lazarus automatically appends -B when the compiler
parameter changes.

> When Lazarus is starting to compile in GUI mode , it is displaying "options
> changed , ... -B  ..."
> but it is not taken into consideration the record type changes mentioned
> above .

Are the altered units in the project or in a package?

> I am not using -B option in lazbuild command line statement because I am
> assuming that .lpi file contains such an option .
> I am not using fpc directly to compile the programs : Either by Lazarus GUI
> or lazbuild through scripts without -B option in the command line with the
> assumption that it is specified in .lpi file .
> Actually , in "Make" mode such changes should be detected .
> Deleting .ppu and .o files is causing a compile time more than 17 minutes
> for me instead of a shorter compilation time .

17 minutes? Even the 3+ millions lines of FPC and Lazarus normally only
takes a few minutes on a recent machine.


More information about the Lazarus mailing list