Browse Source

* 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 -

joost 8 years ago
parent
commit
20c9a16fa9
2 changed files with 17 additions and 11 deletions
  1. 13 10
      packages/fppkg/src/pkgfppkg.pp
  2. 4 1
      packages/fppkg/src/pkguninstalledsrcsrepo.pp

+ 13 - 10
packages/fppkg/src/pkgfppkg.pp

@@ -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;
 

+ 4 - 1
packages/fppkg/src/pkguninstalledsrcsrepo.pp

@@ -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;