* Do not install packages into a repository that does not allow new

packages, also not when they are installed from their original source.

git-svn-id: trunk@35699 -
This commit is contained in:
joost 2017-03-31 19:36:57 +00:00
parent a3f43a3661
commit 20c9a16fa9
2 changed files with 17 additions and 11 deletions

View File

@ -596,16 +596,19 @@ begin
for i := FRepositoryList.Count-1 downto 0 do
begin
Repo := FRepositoryList.Items[i] as TFPRepository;
AvailableRepo := TFPRepository.Create(Self);
FRepositoryList.Add(AvailableRepo);
AvailableRepo.RepositoryType := fprtAvailable;
AvailableRepo.RepositoryName := Repo.RepositoryName + '_source';
AvailableRepo.Description := Repo.Description + ' (original sources)';
AvailStruc := TFPOriginalSourcePackagesStructure.Create(Self, Repo);
AvailStruc.InitializeWithOptions(nil, FOptions, FCompilerOptions);
AvailStruc.AddPackagesToRepository(AvailableRepo);
AvailableRepo.DefaultPackagesStructure := AvailStruc;
if Repo.RepositoryType = fprtInstalled then
begin
AvailableRepo := TFPRepository.Create(Self);
FRepositoryList.Add(AvailableRepo);
AvailableRepo.RepositoryType := fprtAvailable;
AvailableRepo.RepositoryName := Repo.RepositoryName + '_source';
AvailableRepo.Description := Repo.Description + ' (original sources)';
AvailStruc := TFPOriginalSourcePackagesStructure.Create(Self, Repo);
AvailStruc.InitializeWithOptions(nil, FOptions, FCompilerOptions);
AvailStruc.InstallRepositoryName := Repo.RepositoryName;
AvailStruc.AddPackagesToRepository(AvailableRepo);
AvailableRepo.DefaultPackagesStructure := AvailStruc;
end;
end;
end;

View File

@ -56,6 +56,7 @@ type
TFPUninstalledSourcesPackagesStructure = class(TFPCustomFileSystemPackagesStructure)
private
FSourceRepositoryName: string;
FLinkedRepositoryName: string;
public
class function GetRepositoryOptionSectionClass: TFppkgRepositoryOptionSectionClass; override;
procedure InitializeWithOptions(ARepoOptionSection: TFppkgRepositoryOptionSection; AnOptions: TFppkgOptions; ACompilerOptions: TCompilerOptions); override;
@ -94,6 +95,7 @@ begin
RepoOptionSection := ARepoOptionSection as TFppkgUninstalledRepositoryOptionSection;
path := RepoOptionSection.Path;
SourceRepositoryName := RepoOptionSection.SourceRepositoryName;
FLinkedRepositoryName := RepoOptionSection.RepositoryName;
end;
function TFPUninstalledSourcesPackagesStructure.AddPackagesToRepository(ARepository: TFPRepository): Boolean;
@ -148,7 +150,8 @@ end;
function TFPUninstalledSourcesPackagesStructure.IsInstallationNeeded(APackage: TFPPackage): TFPInstallationNeeded;
begin
if APackage.Repository.RepositoryName=SourceRepositoryName then
if (APackage.Repository.RepositoryName=SourceRepositoryName) or
(Assigned(APackage.Repository.DefaultPackagesStructure) and (APackage.Repository.DefaultPackagesStructure.InstallRepositoryName=FLinkedRepositoryName)) then
Result := fpinNoInstallationNeeded
else
Result := fpinInstallationImpossible;