[Lazarus] How to tell lazarus the location of a used package?

Bo Berglund bo.berglund at gmail.com
Wed Nov 24 15:43:31 CET 2010

On Wed, 24 Nov 2010 11:06:15 +0100, Mattias Gaertner
<nc-gaertnma at netcologne.de> wrote:

>On Wed, 24 Nov 2010 09:30:01 +0100
>Bo Berglund <bo.berglund at gmail.com> wrote:
>> On Tue, 23 Nov 2010 23:57:11 +0100, Mattias Gaertner
>> <nc-gaertnma at netcologne.de> wrote:
>> >On Tue, 23 Nov 2010 20:03:26 +0100
>> >Bo Berglund <bo.berglund at gmail.com> wrote:
>> >> Why is one Lazarus using a relative path and the other an absolute
>> >> path?
>> >
>> >0.9.29 uses relative paths for packages in the Lazarus source
>> >directory. When a new Lazarus is installed under a different path
>> >(e.g. the path contains the Lazarus version) all new packages are used
>> >automatically. 
>> Makes sense to use relative paths to make the environment portable.
>> But if Lazarus only uses relative paths for packages below the lazarus
>> top folder and not for other packages, it might impact portability and
>> co-operation unless all involved developers put the packages below
>> lazarus.
>Your config files are not ported. They belong to your machine.
>> Is it possible to use an environment variable as the top locator? Like
>> for example:
>> {$PROJECTPACKAGES}\Mypackage\mypackagelaz.lpk
>That would only make sense if PROJECTPACKAGES would change from time
>to time.
I am trying to get my head around this concept...
Currently we work in Delphi.

Say that we develop a number of different programs.
These programs have sourcefiles that are private to each.
But they also use common sources in various degrees.
We check out each project via CVS using modules definitions.
This way we get all needed sources including common ones into the
project folder in different subfolders.
The Delphi project file has search paths (relative) to these.

Now we can develop our program on differet workstations and check out
the same program sources several times if need be and all will work.
We also can make a change to common code that will not (yet) impact
any others using the same common code in another project.
At regulat intervals we tag from the top folder and after this we can
work onwards.
Using the CVS tags we can later return to exactly this place in time
for all of our files so we can reproduce a bug.

One of our big headaches in this scenario has been the custom
components that we (unwisely) created and installed in Delphi, because
the IDE could very well pick up code from the IDE tree rather than the
checked out code, which we want to keep very tight reigns on.

Now, the description on how packages work in lazarus leads me to
believe that any given package can only exist in one single copy and
this location is not inside the project code space.

So if we want to return later to a version that was tagged in order to
solve a bug we cannot get everything back to that state because we
will still use newer packages than those active at the time the bug
was created. Not good at all...

By having an environment variable one could in principle set that to
point to a new place when starting work on a particular project and
reset it afterwards....


Bo Berglund
Developer in Sweden

More information about the Lazarus mailing list