Browse Source

* fix unzipping

git-svn-id: trunk@6484 -
peter 18 years ago
parent
commit
0a4e18b37d
4 changed files with 32 additions and 10 deletions
  1. 9 3
      utils/fppkg/pkgarchive.pp
  2. 16 3
      utils/fppkg/pkgcommands.pp
  3. 3 0
      utils/fppkg/pkgfpmake.pp
  4. 4 4
      utils/fppkg/pkghandler.pp

+ 9 - 3
utils/fppkg/pkgarchive.pp

@@ -41,7 +41,10 @@ begin
     try
     try
       repeat
       repeat
         if (Info.Attr and faDirectory)=faDirectory then
         if (Info.Attr and faDirectory)=faDirectory then
-          DeleteDir(ADir+PathDelim+Info.Name)
+          begin
+            if (Info.Name<>'.') and (Info.Name<>'..') then
+              DeleteDir(ADir+PathDelim+Info.Name)
+          end
         else
         else
           DeleteFile(ADir+PathDelim+Info.Name);
           DeleteFile(ADir+PathDelim+Info.Name);
       until FindNext(Info)<>0;
       until FindNext(Info)<>0;
@@ -60,12 +63,15 @@ Var
 begin
 begin
   ArchiveFile:=PackageLocalArchive;
   ArchiveFile:=PackageLocalArchive;
   BuildDir:=PackageBuildPath;
   BuildDir:=PackageBuildPath;
-  { Remove existing builddir }
+  { Download file if it doesn't exists yet }
+  if not FileExists(ArchiveFile) then
+    ExecuteAction(CurrentPackage,'downloadpackage');
+  { Create builddir, remove it first if needed }
   if DirectoryExists(BuildDir) then
   if DirectoryExists(BuildDir) then
     DeleteDir(BuildDir);
     DeleteDir(BuildDir);
-  { Unzip Archive }
   ForceDirectories(BuildDir);
   ForceDirectories(BuildDir);
   SetCurrentDir(BuildDir);
   SetCurrentDir(BuildDir);
+  { Unzip Archive }
   With TUnZipper.Create do
   With TUnZipper.Create do
     try
     try
       Log(vCommands,SLogUnzippping,[ArchiveFile]);
       Log(vCommands,SLogUnzippping,[ArchiveFile]);

+ 16 - 3
utils/fppkg/pkgcommands.pp

@@ -22,6 +22,13 @@ type
     Function Execute(const Args:TActionArgs):boolean;override;
     Function Execute(const Args:TActionArgs):boolean;override;
   end;
   end;
 
 
+  { TCommandUnzip }
+
+  TCommandUnzip = Class(TPackagehandler)
+  Public
+    Function Execute(const Args:TActionArgs):boolean;override;
+  end;
+
   { TCommandBuild }
   { TCommandBuild }
 
 
   TCommandBuild = Class(TPackagehandler)
   TCommandBuild = Class(TPackagehandler)
@@ -61,17 +68,22 @@ begin
 end;
 end;
 
 
 
 
+function TCommandUnzip.Execute(const Args:TActionArgs):boolean;
+begin
+  if not assigned(CurrentPackage) then
+    Error(SErrNoPackageSpecified);
+  ExecuteAction(CurrentPackage,'unziparchive',Args);
+end;
+
+
 function TCommandBuild.Execute(const Args:TActionArgs):boolean;
 function TCommandBuild.Execute(const Args:TActionArgs):boolean;
 begin
 begin
   if assigned(CurrentPackage) then
   if assigned(CurrentPackage) then
     begin
     begin
-      if not FileExists(PackageLocalArchive) then
-        ExecuteAction(CurrentPackage,'downloadpackage',Args);
       if not DirectoryExists(PackageBuildPath) then
       if not DirectoryExists(PackageBuildPath) then
         ExecuteAction(CurrentPackage,'unziparchive',Args);
         ExecuteAction(CurrentPackage,'unziparchive',Args);
     end;
     end;
   ExecuteAction(CurrentPackage,'fpmakebuild',Args);
   ExecuteAction(CurrentPackage,'fpmakebuild',Args);
-  ExecuteAction(CurrentPackage,'compilefpmake',Args);
 end;
 end;
 
 
 
 
@@ -85,6 +97,7 @@ end;
 initialization
 initialization
   RegisterPkgHandler('update',TCommandUpdate);
   RegisterPkgHandler('update',TCommandUpdate);
   RegisterPkgHandler('download',TCommandDownload);
   RegisterPkgHandler('download',TCommandDownload);
+  RegisterPkgHandler('unzip',TCommandUnzip);
   RegisterPkgHandler('build',TCommandBuild);
   RegisterPkgHandler('build',TCommandBuild);
   RegisterPkgHandler('install',TCommandInstall);
   RegisterPkgHandler('install',TCommandInstall);
 end.
 end.

+ 3 - 0
utils/fppkg/pkgfpmake.pp

@@ -101,6 +101,9 @@ Var
   I : integer;
   I : integer;
   FPMakeBin : string;
   FPMakeBin : string;
 begin
 begin
+  { Maybe compile fpmake executable? }
+  ExecuteAction(CurrentPackage,'compilefpmake');
+  { Run FPMake }
   FPMakeBin:='fpmake'+ExeExt;
   FPMakeBin:='fpmake'+ExeExt;
   SetCurrentDir(PackageBuildPath);
   SetCurrentDir(PackageBuildPath);
   Result:=ExecuteProcess(FPMakeBin,Command);
   Result:=ExecuteProcess(FPMakeBin,Command);

+ 4 - 4
utils/fppkg/pkghandler.pp

@@ -44,7 +44,7 @@ type
     Procedure Log(Level: TVerbosity;Fmt : String; const Args : array of const);
     Procedure Log(Level: TVerbosity;Fmt : String; const Args : array of const);
     Procedure Error(Msg : String);
     Procedure Error(Msg : String);
     Procedure Error(Fmt : String; const Args : array of const);
     Procedure Error(Fmt : String; const Args : array of const);
-    procedure ExecuteAction(APackage:TFPPackage;const AAction:string;const Args:TActionArgs);
+    procedure ExecuteAction(APackage:TFPPackage;const AAction:string;const Args:TActionArgs=nil);
     Function ExecuteProcess(Const Prog,Args:String):Integer;
     Function ExecuteProcess(Const Prog,Args:String):Integer;
     Procedure SetCurrentDir(Const ADir:String);
     Procedure SetCurrentDir(Const ADir:String);
     function PackageBuildPath:String;
     function PackageBuildPath:String;
@@ -63,7 +63,7 @@ type
 // Actions/PkgHandler
 // Actions/PkgHandler
 procedure RegisterPkgHandler(const AAction:string;pkghandlerclass:TPackageHandlerClass);
 procedure RegisterPkgHandler(const AAction:string;pkghandlerclass:TPackageHandlerClass);
 function GetPkgHandler(const AAction:string):TPackageHandlerClass;
 function GetPkgHandler(const AAction:string):TPackageHandlerClass;
-procedure ExecuteAction(APackage:TFPPackage;const AAction:string;const Args:TActionArgs);
+procedure ExecuteAction(APackage:TFPPackage;const AAction:string;const Args:TActionArgs=nil);
 
 
 
 
 Implementation
 Implementation
@@ -96,7 +96,7 @@ begin
 end;
 end;
 
 
 
 
-procedure ExecuteAction(APackage:TFPPackage;const AAction:string;const Args:TActionArgs);
+procedure ExecuteAction(APackage:TFPPackage;const AAction:string;const Args:TActionArgs=nil);
 var
 var
   pkghandlerclass : TPackageHandlerClass;
   pkghandlerclass : TPackageHandlerClass;
   i : integer;
   i : integer;
@@ -203,7 +203,7 @@ begin
 end;
 end;
 
 
 
 
-procedure TPackageHandler.ExecuteAction(APackage: TFPPackage; const AAction: string; const Args: TActionArgs);
+procedure TPackageHandler.ExecuteAction(APackage: TFPPackage; const AAction: string; const Args: TActionArgs=nil);
 begin
 begin
   pkghandler.ExecuteAction(APackage,AAction,Args);
   pkghandler.ExecuteAction(APackage,AAction,Args);
 end;
 end;