Browse Source

* Clear packages to avoid duplicates on a re-scan

git-svn-id: trunk@35650 -
joost 8 years ago
parent
commit
9d6ff959f4
1 changed files with 20 additions and 0 deletions
  1. 20 0
      packages/fppkg/src/pkgfppkg.pp

+ 20 - 0
packages/fppkg/src/pkgfppkg.pp

@@ -40,6 +40,8 @@ type
     function  SelectRemoteMirror:string;
     procedure EnterFindBrokenPackages;
     procedure LeaveFindBrokenpackages;
+
+    procedure ClearRepositories(ARepositoryList: TComponentList);
   public
     constructor Create(AOwner: TComponent); override;
     destructor Destroy; override;
@@ -315,10 +317,12 @@ begin
   // FPMakeRepositoryList. Beside that it could lead to problems
   // when the scan of one of the available-repositories tries to compile an
   // fpmake-executable. (Like TFPUninstalledSourcesAvailablePackagesStructure does)
+  ClearRepositories(FPMakeRepositoryList);
   ScanPackagesOnDisk(FFpmakeCompilerOptions, pkgpkInstalled, FPMakeRepositoryList);
 
   CheckFPMakeDependencies;
 
+  ClearRepositories(RepositoryList);
   ScanPackagesOnDisk(FCompilerOptions, pkgpkBoth, RepositoryList);
   ScanAvailablePackages;
 end;
@@ -499,6 +503,22 @@ begin
     FBrokenPackagesDictionary.Clear;
 end;
 
+procedure TpkgFPpkg.ClearRepositories(ARepositoryList: TComponentList);
+var
+  i: Integer;
+  Repo: TFPRepository;
+begin
+  for i := ARepositoryList.Count -1 downto 0 do
+    begin
+      Repo := ARepositoryList.Items[i] as TFPRepository;
+      if Repo.Name <> 'Available' then
+        begin
+          ARepositoryList.Delete(i);
+          Repo.Free;
+        end;
+    end;
+end;
+
 function TpkgFPpkg.PackageByName(APackageName: string; APackageKind: TpkgPackageKind): TFPPackage;
 var
   ErrStr: string;