mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-18 13:59:47 +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;
|
||||
begin
|
||||
if APackage.Name=CurrentDirPackageName 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
|
||||
if (APackage.Name=CmdLinePackageName) or (APackage.Name=URLPackageName) then
|
||||
Result:=GFPpkg.Options.GlobalSection.BuildDir+ChangeFileExt(ExtractFileName(APackage.LocalFileName),'')
|
||||
else if Assigned(APackage.PackagesStructure) and (APackage.PackagesStructure.GetBuildPathDirectory(APackage)<>'') then
|
||||
Result:=APackage.PackagesStructure.GetBuildPathDirectory(APackage)
|
||||
|
@ -32,7 +32,7 @@ type
|
||||
FPath: string;
|
||||
FCompilerOptions: TCompilerOptions;
|
||||
public
|
||||
constructor Create(AOwner: TComponent; APath: string; ACompilerOptions: TCompilerOptions);
|
||||
constructor Create(AOwner: TComponent; APath: string; ACompilerOptions: TCompilerOptions); virtual;
|
||||
end;
|
||||
|
||||
{ TFPInstalledPackagesStructure }
|
||||
@ -53,7 +53,9 @@ type
|
||||
|
||||
TFPCurrentDirectoryPackagesStructure = class(TFPCustomFileSystemPackagesStructure)
|
||||
public
|
||||
constructor Create(AOwner: TComponent; APath: string; ACompilerOptions: TCompilerOptions); override;
|
||||
function AddPackagesToRepository(ARepository: TFPRepository): Boolean; override;
|
||||
function GetBuildPathDirectory(APackage: TFPPackage): string; override;
|
||||
end;
|
||||
|
||||
{ TFPOriginalSourcePackagesStructure }
|
||||
@ -155,11 +157,27 @@ end;
|
||||
|
||||
{ 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(
|
||||
ARepository: TFPRepository): Boolean;
|
||||
var
|
||||
Package: TFPPackage;
|
||||
begin
|
||||
Result := True;
|
||||
ARepository.AddPackage(CurrentDirPackageName);
|
||||
Package := ARepository.AddPackage(CurrentDirPackageName);
|
||||
Package.PackagesStructure := Self;
|
||||
end;
|
||||
|
||||
function TFPCurrentDirectoryPackagesStructure.GetBuildPathDirectory(APackage: TFPPackage): string;
|
||||
begin
|
||||
Result := FPath;
|
||||
end;
|
||||
|
||||
{ TFPRemotePackagesStructure }
|
||||
|
@ -370,7 +370,7 @@ begin
|
||||
Repo.RepositoryType := fprtAvailable;
|
||||
Repo.RepositoryName := 'CurrentDirectory';
|
||||
Repo.Description := 'Package in current directory';
|
||||
InstPackages := TFPCurrentDirectoryPackagesStructure.Create(GFPpkg, '', GFPpkg.CompilerOptions);
|
||||
InstPackages := TFPCurrentDirectoryPackagesStructure.Create(GFPpkg, OldCurrDir, GFPpkg.CompilerOptions);
|
||||
InstPackages.AddPackagesToRepository(Repo);
|
||||
Repo.DefaultPackagesStructure := InstPackages;
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user