mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-06 23:37:17 +01:00
IDE: package links: using more relative paths
git-svn-id: trunk@21939 -
This commit is contained in:
parent
f81283f7f1
commit
df02734dc8
@ -450,10 +450,10 @@ begin
|
||||
end else begin
|
||||
// package not loaded -> read values from .lpk
|
||||
PkgLink:=PkgLinks.FindLinkWithPackageID(PkgID);
|
||||
if (PkgLink<>nil) and FileExistsCached(PkgLink.Filename) then begin
|
||||
if (PkgLink<>nil) and FileExistsCached(PkgLink.GetEffectiveFilename) then begin
|
||||
// load the package file
|
||||
try
|
||||
XMLConfig:=TXMLConfig.Create(PkgLink.Filename);
|
||||
XMLConfig:=TXMLConfig.Create(PkgLink.GetEffectiveFilename);
|
||||
try
|
||||
Author:=XMLConfig.GetValue('Package/Author/Value','');
|
||||
Description:=XMLConfig.GetValue('Package/Description/Value','');
|
||||
|
||||
@ -89,6 +89,7 @@ type
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
function MakeSense: boolean;
|
||||
function GetEffectiveFilename: string;
|
||||
public
|
||||
property Origin: TPkgLinkOrigin read FOrigin write SetOrigin;
|
||||
property Filename: string read FFilename write SetFilename;
|
||||
@ -277,6 +278,14 @@ begin
|
||||
and (CompareText(Name,ExtractFileNameOnly(Filename))=0);
|
||||
end;
|
||||
|
||||
function TPackageLink.GetEffectiveFilename: string;
|
||||
begin
|
||||
Result:=Filename;
|
||||
if (not FilenameIsAbsolute(Result))
|
||||
and (EnvironmentOptions.LazarusDirectory<>'') then
|
||||
Result:=TrimFilename(EnvironmentOptions.LazarusDirectory+PathDelim+Result);
|
||||
end;
|
||||
|
||||
{ TPackageLinks }
|
||||
|
||||
function TPackageLinks.FindLeftMostNode(LinkTree: TAVLTree;
|
||||
@ -429,7 +438,11 @@ begin
|
||||
NewPkgLink.Name:=NewPkgName;
|
||||
NewPkgLink.Version.Assign(PkgVersion);
|
||||
IDEMacros.SubstituteMacros(NewFilename);
|
||||
NewPkgLink.Filename:=TrimFilename(NewFilename);
|
||||
NewFilename:=TrimFilename(NewFilename);
|
||||
if (EnvironmentOptions.LazarusDirectory<>'')
|
||||
and (FileIsInDirectory(NewFilename,EnvironmentOptions.LazarusDirectory)) then
|
||||
NewFilename:=CreateRelativePath(NewFilename,EnvironmentOptions.LazarusDirectory);
|
||||
NewPkgLink.Filename:=NewFilename;
|
||||
//debugln('TPackageLinks.UpdateGlobalLinks PkgName="',NewPkgLink.Name,'" ',
|
||||
// ' PkgVersion=',NewPkgLink.Version.AsString,
|
||||
// ' Filename="',NewPkgLink.Filename,'"',
|
||||
@ -553,7 +566,9 @@ begin
|
||||
if NextNode=nil then break;
|
||||
OldPkgLink:=TPackageLink(ANode.Data);
|
||||
NewPkgLink:=TPackageLink(NextNode.Data);
|
||||
if CompareFilenames(OldPkgLink.Filename,NewPkgLink.Filename)=0 then begin
|
||||
if CompareFilenames(OldPkgLink.GetEffectiveFilename,
|
||||
NewPkgLink.GetEffectiveFilename)=0
|
||||
then begin
|
||||
// 2 links to the same file -> delete the older
|
||||
//debugln('TPackageLinks.RemoveOldUserLinks Newer=',NewPkgLink.IDAsString,
|
||||
// ' Older=',OldPkgLink.IDAsString);
|
||||
@ -728,11 +743,7 @@ begin
|
||||
while ANode<>nil do begin
|
||||
PkgLink:=TPackageLink(ANode.Data);
|
||||
//debugln('TPackageLinks.IteratePackagesInTree PkgLink.Filename=',PkgLink.Filename);
|
||||
AFilename:=PkgLink.Filename;
|
||||
if not FilenameIsAbsolute(AFilename)
|
||||
and (EnvironmentOptions.LazarusDirectory<>'') then begin
|
||||
AFilename:=TrimFilename(EnvironmentOptions.LazarusDirectory+PathDelim+AFilename);
|
||||
end;
|
||||
AFilename:=PkgLink.GetEffectiveFilename;
|
||||
if (not MustExist) or FileExistsUTF8(AFilename) then
|
||||
Event(PkgLink);
|
||||
ANode:=LinkTree.FindSuccessor(ANode);
|
||||
@ -797,7 +808,7 @@ begin
|
||||
if (OldLink<>nil) then begin
|
||||
// link exists -> check if it is already the right value
|
||||
if (OldLink.Compare(APackage)=0)
|
||||
and (OldLink.Filename=APackage.Filename) then begin
|
||||
and (OldLink.GetEffectiveFilename=APackage.Filename) then begin
|
||||
Result:=OldLink;
|
||||
exit;
|
||||
end;
|
||||
@ -830,7 +841,7 @@ begin
|
||||
OldLink:=FindLinkWithPkgName(PkgName);
|
||||
if (OldLink<>nil) then begin
|
||||
// link exists
|
||||
if CompareFilenames(OldLink.Filename,PkgFilename)=0 then begin
|
||||
if CompareFilenames(OldLink.GetEffectiveFilename,PkgFilename)=0 then begin
|
||||
Result:=OldLink;
|
||||
exit;
|
||||
end;
|
||||
|
||||
@ -449,12 +449,7 @@ begin
|
||||
XMLConfig:=nil;
|
||||
BeginUpdate(false);
|
||||
try
|
||||
AFilename:=PkgLink.Filename;
|
||||
if (not FilenameIsAbsolute(AFilename))
|
||||
and (EnvironmentOptions.LazarusDirectory<>'') then begin
|
||||
// a package in the lazarus sources
|
||||
AFilename:=TrimFilename(EnvironmentOptions.LazarusDirectory+PathDelim+AFilename);
|
||||
end;
|
||||
AFilename:=PkgLink.GetEffectiveFilename;
|
||||
if not FileExistsUTF8(AFilename) then begin
|
||||
DebugLn('invalid Package Link: file "'+AFilename+'" does not exist.');
|
||||
PkgLink.FileDateValid:=false;
|
||||
|
||||
@ -165,8 +165,8 @@ begin
|
||||
else
|
||||
OriginStr:=lisPLDUser;
|
||||
PkgStringGrid.Cells[2,i]:=OriginStr;
|
||||
PkgStringGrid.Cells[3,i]:=dbgs(FileExistsCached(Link.Filename));
|
||||
PkgStringGrid.Cells[4,i]:=Link.Filename;
|
||||
PkgStringGrid.Cells[3,i]:=dbgs(FileExistsCached(Link.GetEffectiveFilename));
|
||||
PkgStringGrid.Cells[4,i]:=Link.GetEffectiveFilename;
|
||||
inc(i);
|
||||
Node:=FLinks.FindSuccessor(Node);
|
||||
end;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user