Browse Source

* Merged two versions of check if a package is broken
* If no repository is given, take all repositories into account while
checking if a package is broken

git-svn-id: trunk@35483 -

joost 8 years ago
parent
commit
3b723aa97f
2 changed files with 16 additions and 54 deletions
  1. 1 47
      packages/fppkg/src/fprepos.pp
  2. 15 7
      packages/fppkg/src/pkgfppkg.pp

+ 1 - 47
packages/fppkg/src/fprepos.pp

@@ -800,54 +800,8 @@ begin
 end;
 
 function TFPRepository.PackageIsBroken(APackage: TFPPackage): Boolean;
-var
-  j, i, ThisRepositoryIndex: Integer;
-  Dependency: TFPDependency;
-  Repository: TFPRepository;
-  DepPackage: TFPPackage;
 begin
-  result:=false;
-
-  // We should only check for dependencies in this repository, or repositories
-  // with a lower priority.
-  ThisRepositoryIndex := -1;
-  for i := GFPpkg.RepositoryList.Count -1 downto 0 do
-    begin
-      if GFPpkg.RepositoryList.Items[i] = Self then
-        ThisRepositoryIndex := i;
-    end;
-
-  for j:=0 to APackage.Dependencies.Count-1 do
-    begin
-      Dependency:=APackage.Dependencies[j];
-      if (GFPpkg.CompilerOptions.CompilerOS in Dependency.OSes) and
-         (GFPpkg.CompilerOptions.CompilerCPU in Dependency.CPUs) then
-        begin
-          for i := ThisRepositoryIndex downto 0 do
-            begin
-              Repository := GFPpkg.RepositoryList.Items[i] as TFPRepository;
-              DepPackage := Repository.FindPackage(Dependency.FPackageName);
-              if Assigned(DepPackage) then
-                Break;
-            end;
-
-          if assigned(DepPackage) then
-            begin
-              if (Dependency.RequireChecksum<>$ffffffff) and (DepPackage.Checksum<>Dependency.RequireChecksum) then
-                begin
-                  log(llInfo,SLogPackageChecksumChanged,[APackage.Name,Self.RepositoryName,Dependency.PackageName,Repository.RepositoryName]);
-                  result:=true;
-                  exit;
-                end;
-            end
-          else
-            begin
-              log(llDebug,SDbgObsoleteDependency,[APackage.Name,Dependency.PackageName]);
-              result:=true;
-              exit;
-            end;
-        end;
-    end;
+  Result := GFPpkg.PackageIsBroken(APackage, Self);
 end;
 
 constructor TFPRepository.Create(AOwner: TComponent);

+ 15 - 7
packages/fppkg/src/pkgfppkg.pp

@@ -324,13 +324,21 @@ var
 begin
   result:=false;
 
-  // We should only check for dependencies in this repository, or repositories
-  // with a lower priority.
-  ThisRepositoryIndex := -1;
-  for i := RepositoryList.Count -1 downto 0 do
+  if not Assigned(ARepository) then
     begin
-      if RepositoryList.Items[i] = ARepository then
-        ThisRepositoryIndex := i;
+    // Check with all repositories
+    ThisRepositoryIndex := RepositoryList.Count -1;
+    end
+  else
+    begin
+    // We should only check for dependencies in this repository, or repositories
+    // with a lower priority.
+    ThisRepositoryIndex := -1;
+    for i := RepositoryList.Count -1 downto 0 do
+      begin
+        if RepositoryList.Items[i] = ARepository then
+          ThisRepositoryIndex := i;
+      end;
     end;
 
   for j:=0 to APackage.Dependencies.Count-1 do
@@ -351,7 +359,7 @@ begin
             begin
               if (Dependency.RequireChecksum<>$ffffffff) and (DepPackage.Checksum<>Dependency.RequireChecksum) then
                 begin
-                  log(llInfo,SLogPackageChecksumChanged,[APackage.Name,ARepository.RepositoryName,Dependency.PackageName,Repository.RepositoryName]);
+                  log(llInfo,SLogPackageChecksumChanged,[APackage.Name,APackage.Repository.RepositoryName,Dependency.PackageName,Repository.RepositoryName]);
                   result:=true;
                   exit;
                 end;