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

View File

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