Browse Source

* give better error on corrupt packages.xml
* first installdependencies before downloading/unzipping packages
* delete corrupt file if download failed

git-svn-id: trunk@9240 -

peter 18 years ago
parent
commit
bd093b4b9e

+ 2 - 2
utils/fppkg/pkgcommands.pp

@@ -192,8 +192,8 @@ function TCommandCompile.Execute(const Args:TActionArgs):boolean;
 begin
   if assigned(CurrentPackage) then
     begin
-      ExecuteAction(CurrentPackage,'unzip',Args);
       ExecuteAction(CurrentPackage,'installdependencies',Args);
+      ExecuteAction(CurrentPackage,'unzip',Args);
     end;
   ExecuteAction(CurrentPackage,'fpmakecompile',Args);
   Result:=true;
@@ -204,8 +204,8 @@ function TCommandBuild.Execute(const Args:TActionArgs):boolean;
 begin
   if assigned(CurrentPackage) then
     begin
-      ExecuteAction(CurrentPackage,'unzip',Args);
       ExecuteAction(CurrentPackage,'installdependencies',Args);
+      ExecuteAction(CurrentPackage,'unzip',Args);
     end;
   ExecuteAction(CurrentPackage,'fpmakebuild',Args);
   Result:=true;

+ 10 - 5
utils/fppkg/pkgdownload.pp

@@ -106,11 +106,16 @@ Var
 begin
   If FileExists(DestFileName) and BackupFiles then
     BackupFile(DestFileName);
-  F:=TFileStream.Create(DestFileName,fmCreate);
-  Try
-    Download(URL,F);
-  Finally
-    F.Free;
+  try
+    F:=TFileStream.Create(DestFileName,fmCreate);
+    try
+      Download(URL,F);
+    finally
+      F.Free;
+    end;
+  except
+    DeleteFile(DestFileName);
+    raise;
   end;
 end;
 

+ 2 - 0
utils/fppkg/pkgglobals.pp

@@ -99,6 +99,8 @@ begin
   case Level of
     vWarning :
       Prefix:=SWarning;
+    vError :
+      Prefix:=SError;
 {    vInfo :
       Prefix:='I: ';
     vCommands :

+ 2 - 0
utils/fppkg/pkgmessages.pp

@@ -6,6 +6,7 @@ interface
 
 
 Resourcestring
+  SError                     = 'Error: ';
   SWarning                   = 'Warning: ';
   SDebug                     = 'Debug: ';
 
@@ -35,6 +36,7 @@ Resourcestring
   SErrInvalidVerbosity       = 'Invalid verbosity string: "%s"';
   SErrInvalidCommand         = 'Invalid command: %s';
   SErrChangeDirFailed        = 'Could not change directory to "%s"';
+  SErrCorruptPackagesFile    = 'Packages file "%s" is corrupt, delete file manual and retry';
 
   SErrHTTPGetFailed          = 'HTTP Download failed.';
   SErrLoginFailed            = 'FTP LOGIN command failed.';

+ 17 - 10
utils/fppkg/pkgrepos.pp

@@ -44,16 +44,23 @@ begin
   CurrentRepository:=TFPRepository.Create(Nil);
   // Repository
   Log(vDebug,SLogLoadingPackagesFile,[Options.LocalPackagesFile]);
-  if FileExists(Options.LocalPackagesFile) then
-    begin
-      X:=TFPXMLRepositoryHandler.Create;
-      With X do
-        try
-          LoadFromXml(CurrentRepository,Options.LocalPackagesFile);
-        finally
-          Free;
-        end;
-    end;
+  if not FileExists(Options.LocalPackagesFile) then
+    exit;
+  try
+    X:=TFPXMLRepositoryHandler.Create;
+    With X do
+      try
+        LoadFromXml(CurrentRepository,Options.LocalPackagesFile);
+      finally
+        Free;
+      end;
+  except
+    on E : Exception do
+      begin
+        Log(vError,E.Message);
+        Error(SErrCorruptPackagesFile,[Options.LocalPackagesFile]);
+      end;
+  end;
 end;