|
@@ -10,11 +10,13 @@ uses
|
|
implementation
|
|
implementation
|
|
|
|
|
|
uses
|
|
uses
|
|
|
|
+ zipper,
|
|
pkgmessages,
|
|
pkgmessages,
|
|
pkgglobals,
|
|
pkgglobals,
|
|
pkgoptions,
|
|
pkgoptions,
|
|
pkgdownload,
|
|
pkgdownload,
|
|
- pkgrepos;
|
|
|
|
|
|
+ pkgrepos,
|
|
|
|
+ fprepos;
|
|
|
|
|
|
type
|
|
type
|
|
{ TCommandAddConfig }
|
|
{ TCommandAddConfig }
|
|
@@ -59,6 +61,13 @@ type
|
|
Function Execute(const Args:TActionArgs):boolean;override;
|
|
Function Execute(const Args:TActionArgs):boolean;override;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+ { TCommandCompile }
|
|
|
|
+
|
|
|
|
+ TCommandCompile = Class(TPackagehandler)
|
|
|
|
+ Public
|
|
|
|
+ Function Execute(const Args:TActionArgs):boolean;override;
|
|
|
|
+ end;
|
|
|
|
+
|
|
{ TCommandBuild }
|
|
{ TCommandBuild }
|
|
|
|
|
|
TCommandBuild = Class(TPackagehandler)
|
|
TCommandBuild = Class(TPackagehandler)
|
|
@@ -80,6 +89,13 @@ type
|
|
Function Execute(const Args:TActionArgs):boolean;override;
|
|
Function Execute(const Args:TActionArgs):boolean;override;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+ { TCommandInstallDependencies }
|
|
|
|
+
|
|
|
|
+ TCommandInstallDependencies = Class(TPackagehandler)
|
|
|
|
+ Public
|
|
|
|
+ Function Execute(const Args:TActionArgs):boolean;override;
|
|
|
|
+ end;
|
|
|
|
+
|
|
|
|
|
|
function TCommandAddConfig.Execute(const Args:TActionArgs):boolean;
|
|
function TCommandAddConfig.Execute(const Args:TActionArgs):boolean;
|
|
begin
|
|
begin
|
|
@@ -127,10 +143,42 @@ end;
|
|
|
|
|
|
|
|
|
|
function TCommandUnzip.Execute(const Args:TActionArgs):boolean;
|
|
function TCommandUnzip.Execute(const Args:TActionArgs):boolean;
|
|
|
|
+Var
|
|
|
|
+ BuildDir : string;
|
|
|
|
+ ArchiveFile : String;
|
|
begin
|
|
begin
|
|
|
|
+ BuildDir:=PackageBuildPath;
|
|
|
|
+ ArchiveFile:=PackageLocalArchive;
|
|
if not assigned(CurrentPackage) then
|
|
if not assigned(CurrentPackage) then
|
|
Error(SErrNoPackageSpecified);
|
|
Error(SErrNoPackageSpecified);
|
|
- ExecuteAction(CurrentPackage,'unziparchive',Args);
|
|
|
|
|
|
+ if not FileExists(ArchiveFile) then
|
|
|
|
+ ExecuteAction(CurrentPackage,'downloadpackage');
|
|
|
|
+ { Create builddir, remove it first if needed }
|
|
|
|
+ if DirectoryExists(BuildDir) then
|
|
|
|
+ DeleteDir(BuildDir);
|
|
|
|
+ ForceDirectories(BuildDir);
|
|
|
|
+ SetCurrentDir(BuildDir);
|
|
|
|
+ { Unzip Archive }
|
|
|
|
+ With TUnZipper.Create do
|
|
|
|
+ try
|
|
|
|
+ Log(vCommands,SLogUnzippping,[ArchiveFile]);
|
|
|
|
+ OutputPath:=PackageBuildPath;
|
|
|
|
+ UnZipAllFiles(ArchiveFile);
|
|
|
|
+ Finally
|
|
|
|
+ Free;
|
|
|
|
+ end;
|
|
|
|
+ Result:=true;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+function TCommandCompile.Execute(const Args:TActionArgs):boolean;
|
|
|
|
+begin
|
|
|
|
+ if assigned(CurrentPackage) then
|
|
|
|
+ begin
|
|
|
|
+ ExecuteAction(CurrentPackage,'unzip',Args);
|
|
|
|
+ ExecuteAction(CurrentPackage,'installdependencies',Args);
|
|
|
|
+ end;
|
|
|
|
+ ExecuteAction(CurrentPackage,'fpmakecompile',Args);
|
|
Result:=true;
|
|
Result:=true;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -139,8 +187,8 @@ function TCommandBuild.Execute(const Args:TActionArgs):boolean;
|
|
begin
|
|
begin
|
|
if assigned(CurrentPackage) then
|
|
if assigned(CurrentPackage) then
|
|
begin
|
|
begin
|
|
- if not DirectoryExists(PackageBuildPath) then
|
|
|
|
- ExecuteAction(CurrentPackage,'unziparchive',Args);
|
|
|
|
|
|
+ ExecuteAction(CurrentPackage,'unzip',Args);
|
|
|
|
+ ExecuteAction(CurrentPackage,'installdependencies',Args);
|
|
end;
|
|
end;
|
|
ExecuteAction(CurrentPackage,'fpmakebuild',Args);
|
|
ExecuteAction(CurrentPackage,'fpmakebuild',Args);
|
|
Result:=true;
|
|
Result:=true;
|
|
@@ -149,6 +197,8 @@ end;
|
|
|
|
|
|
function TCommandInstall.Execute(const Args:TActionArgs):boolean;
|
|
function TCommandInstall.Execute(const Args:TActionArgs):boolean;
|
|
begin
|
|
begin
|
|
|
|
+ if assigned(CurrentPackage) then
|
|
|
|
+ ExecuteAction(CurrentPackage,'build',Args);
|
|
ExecuteAction(CurrentPackage,'fpmakeinstall',Args);
|
|
ExecuteAction(CurrentPackage,'fpmakeinstall',Args);
|
|
Result:=true;
|
|
Result:=true;
|
|
end;
|
|
end;
|
|
@@ -161,13 +211,57 @@ begin
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
+function TCommandInstallDependencies.Execute(const Args:TActionArgs):boolean;
|
|
|
|
+var
|
|
|
|
+ i : Integer;
|
|
|
|
+ D : TFPDependency;
|
|
|
|
+ DepPackage : TFPPackage;
|
|
|
|
+ L : TStringList;
|
|
|
|
+ status : string;
|
|
|
|
+begin
|
|
|
|
+ if not assigned(CurrentPackage) then
|
|
|
|
+ Error(SErrNoPackageSpecified);
|
|
|
|
+ // List dependencies
|
|
|
|
+ L:=TStringList.Create;
|
|
|
|
+ for i:=0 to CurrentPackage.Dependencies.Count-1 do
|
|
|
|
+ begin
|
|
|
|
+ D:=CurrentPackage.Dependencies[i];
|
|
|
|
+ DepPackage:=CurrentRepository.PackageByName(D.PackageName);
|
|
|
|
+ // Need installation?
|
|
|
|
+ if (not DepPackage.InstalledVersion.Empty) and
|
|
|
|
+ (DepPackage.InstalledVersion.CompareVersion(D.MinVersion)<0) then
|
|
|
|
+ begin
|
|
|
|
+ if DepPackage.Version.CompareVersion(D.MinVersion)<0 then
|
|
|
|
+ status:='Required Version Not Available!'
|
|
|
|
+ else
|
|
|
|
+ status:='Needs update';
|
|
|
|
+ L.Add(DepPackage.Name);
|
|
|
|
+ end
|
|
|
|
+ else
|
|
|
|
+ status:='OK';
|
|
|
|
+ Log(vDebug,'Dependency '+D.PackageName+'-'+D.MinVersion.AsString+' ('+status+')');
|
|
|
|
+ end;
|
|
|
|
+ // Install needed updates
|
|
|
|
+ for i:=0 to L.Count-1 do
|
|
|
|
+ begin
|
|
|
|
+ DepPackage:=CurrentRepository.PackageByName(L[i]);
|
|
|
|
+ ExecuteAction(DepPackage,'install');
|
|
|
|
+ end;
|
|
|
|
+
|
|
|
|
+ FreeAndNil(L);
|
|
|
|
+ Result:=true;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+
|
|
initialization
|
|
initialization
|
|
RegisterPkgHandler('update',TCommandUpdate);
|
|
RegisterPkgHandler('update',TCommandUpdate);
|
|
RegisterPkgHandler('avail',TCommandAvail);
|
|
RegisterPkgHandler('avail',TCommandAvail);
|
|
RegisterPkgHandler('scan',TCommandScanPackages);
|
|
RegisterPkgHandler('scan',TCommandScanPackages);
|
|
RegisterPkgHandler('download',TCommandDownload);
|
|
RegisterPkgHandler('download',TCommandDownload);
|
|
RegisterPkgHandler('unzip',TCommandUnzip);
|
|
RegisterPkgHandler('unzip',TCommandUnzip);
|
|
|
|
+ RegisterPkgHandler('compile',TCommandCompile);
|
|
RegisterPkgHandler('build',TCommandBuild);
|
|
RegisterPkgHandler('build',TCommandBuild);
|
|
RegisterPkgHandler('install',TCommandInstall);
|
|
RegisterPkgHandler('install',TCommandInstall);
|
|
RegisterPkgHandler('archive',TCommandArchive);
|
|
RegisterPkgHandler('archive',TCommandArchive);
|
|
|
|
+ RegisterPkgHandler('installdependencies',TCommandInstallDependencies);
|
|
end.
|
|
end.
|