mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 16:39:19 +02:00
* Determine the path of the <currentdirectory> package within the
PackageStructure. Set it to the current-directory at application start. This because the creation of manifest files could change the current directory while scanning for packages. git-svn-id: trunk@34670 -
This commit is contained in:
parent
1d2dca50a9
commit
295c274940
@ -124,20 +124,7 @@ end;
|
|||||||
|
|
||||||
function PackageBuildPath(APackage:TFPPackage):String;
|
function PackageBuildPath(APackage:TFPPackage):String;
|
||||||
begin
|
begin
|
||||||
if APackage.Name=CurrentDirPackageName then
|
if (APackage.Name=CmdLinePackageName) or (APackage.Name=URLPackageName) then
|
||||||
begin
|
|
||||||
// It could be that to resolve some dependencies, the current directory changes. The first time
|
|
||||||
// PackageBuildPath is called the dependencies are not resolved yet, so store the current directory
|
|
||||||
// for later calls.
|
|
||||||
if CurrentDir='' then
|
|
||||||
begin
|
|
||||||
Result:='.';
|
|
||||||
CurrentDir := SysUtils.GetCurrentDir;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
Result:=CurrentDir;
|
|
||||||
end
|
|
||||||
else if (APackage.Name=CmdLinePackageName) or (APackage.Name=URLPackageName) then
|
|
||||||
Result:=GFPpkg.Options.GlobalSection.BuildDir+ChangeFileExt(ExtractFileName(APackage.LocalFileName),'')
|
Result:=GFPpkg.Options.GlobalSection.BuildDir+ChangeFileExt(ExtractFileName(APackage.LocalFileName),'')
|
||||||
else if Assigned(APackage.PackagesStructure) and (APackage.PackagesStructure.GetBuildPathDirectory(APackage)<>'') then
|
else if Assigned(APackage.PackagesStructure) and (APackage.PackagesStructure.GetBuildPathDirectory(APackage)<>'') then
|
||||||
Result:=APackage.PackagesStructure.GetBuildPathDirectory(APackage)
|
Result:=APackage.PackagesStructure.GetBuildPathDirectory(APackage)
|
||||||
|
@ -32,7 +32,7 @@ type
|
|||||||
FPath: string;
|
FPath: string;
|
||||||
FCompilerOptions: TCompilerOptions;
|
FCompilerOptions: TCompilerOptions;
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent; APath: string; ACompilerOptions: TCompilerOptions);
|
constructor Create(AOwner: TComponent; APath: string; ACompilerOptions: TCompilerOptions); virtual;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TFPInstalledPackagesStructure }
|
{ TFPInstalledPackagesStructure }
|
||||||
@ -53,7 +53,9 @@ type
|
|||||||
|
|
||||||
TFPCurrentDirectoryPackagesStructure = class(TFPCustomFileSystemPackagesStructure)
|
TFPCurrentDirectoryPackagesStructure = class(TFPCustomFileSystemPackagesStructure)
|
||||||
public
|
public
|
||||||
|
constructor Create(AOwner: TComponent; APath: string; ACompilerOptions: TCompilerOptions); override;
|
||||||
function AddPackagesToRepository(ARepository: TFPRepository): Boolean; override;
|
function AddPackagesToRepository(ARepository: TFPRepository): Boolean; override;
|
||||||
|
function GetBuildPathDirectory(APackage: TFPPackage): string; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TFPOriginalSourcePackagesStructure }
|
{ TFPOriginalSourcePackagesStructure }
|
||||||
@ -155,11 +157,27 @@ end;
|
|||||||
|
|
||||||
{ TFPCurrentDirectoryPackagesStructure }
|
{ TFPCurrentDirectoryPackagesStructure }
|
||||||
|
|
||||||
|
constructor TFPCurrentDirectoryPackagesStructure.Create(AOwner: TComponent; APath: string;
|
||||||
|
ACompilerOptions: TCompilerOptions);
|
||||||
|
begin
|
||||||
|
if APath = '' then
|
||||||
|
APath := GetCurrentDir;
|
||||||
|
inherited Create(AOwner, APath, ACompilerOptions);
|
||||||
|
end;
|
||||||
|
|
||||||
function TFPCurrentDirectoryPackagesStructure.AddPackagesToRepository(
|
function TFPCurrentDirectoryPackagesStructure.AddPackagesToRepository(
|
||||||
ARepository: TFPRepository): Boolean;
|
ARepository: TFPRepository): Boolean;
|
||||||
|
var
|
||||||
|
Package: TFPPackage;
|
||||||
begin
|
begin
|
||||||
Result := True;
|
Result := True;
|
||||||
ARepository.AddPackage(CurrentDirPackageName);
|
Package := ARepository.AddPackage(CurrentDirPackageName);
|
||||||
|
Package.PackagesStructure := Self;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TFPCurrentDirectoryPackagesStructure.GetBuildPathDirectory(APackage: TFPPackage): string;
|
||||||
|
begin
|
||||||
|
Result := FPath;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TFPRemotePackagesStructure }
|
{ TFPRemotePackagesStructure }
|
||||||
|
@ -370,7 +370,7 @@ begin
|
|||||||
Repo.RepositoryType := fprtAvailable;
|
Repo.RepositoryType := fprtAvailable;
|
||||||
Repo.RepositoryName := 'CurrentDirectory';
|
Repo.RepositoryName := 'CurrentDirectory';
|
||||||
Repo.Description := 'Package in current directory';
|
Repo.Description := 'Package in current directory';
|
||||||
InstPackages := TFPCurrentDirectoryPackagesStructure.Create(GFPpkg, '', GFPpkg.CompilerOptions);
|
InstPackages := TFPCurrentDirectoryPackagesStructure.Create(GFPpkg, OldCurrDir, GFPpkg.CompilerOptions);
|
||||||
InstPackages.AddPackagesToRepository(Repo);
|
InstPackages.AddPackagesToRepository(Repo);
|
||||||
Repo.DefaultPackagesStructure := InstPackages;
|
Repo.DefaultPackagesStructure := InstPackages;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user