1 package org
.argeo
.slc
.lib
.linux
.rpmfactory
;
5 import org
.argeo
.slc
.core
.execution
.tasks
.SystemCall
;
7 /** Install an SRPM into a working copy */
8 public class ImportSrpm
implements Runnable
{
10 private File srpmFile
;
11 private RpmBuildEnvironment rpmBuildEnvironment
;
14 SystemCall rpmQuery
= new SystemCall(
15 "rpm --queryformat '%{NAME}\n' -qp " + srpmFile
);
16 String packageName
= rpmQuery
.function();
18 File topdir
= new File(baseDir
, packageName
);
21 // TODO: do it with SVNKit
23 new SystemCall("svn add " + topdir
).run();
24 new SystemCall("svn propset svn:ignore rpm*\nBUILD\nSRPMS\nRPMS " + topdir
).run();
25 File sourcesDir
= new File(topdir
, "SOURCES");
27 new SystemCall("svn add " + sourcesDir
).run();
28 new SystemCall("svn propset svn:ignore *gz\n*bz2\n*.zip\n*.jar " + sourcesDir
).run();
29 File specsDir
= new File(topdir
, "SPECS");
31 new SystemCall("svn add " + specsDir
).run();
33 // Write rpm config files
34 File rpmmacroFile
= new File(topdir
, "rpmmacros");
35 File rpmrcFile
= new File(topdir
, "rpmrc");
36 rpmBuildEnvironment
.writeRpmbuildConfigFiles(topdir
, rpmmacroFile
,
40 SystemCall installSrpm
= new SystemCall();
41 installSrpm
.arg("rpm");
42 installSrpm
.arg("-Uvh");
43 installSrpm
.arg("--rcfile=" + rpmrcFile
.getAbsolutePath());
44 installSrpm
.arg(srpmFile
.getAbsolutePath());
45 installSrpm
.setExecDir(topdir
.getAbsolutePath());
46 installSrpm
.setLogCommand(true);
50 public void setBaseDir(File basedir
) {
51 this.baseDir
= basedir
;
54 public void setSrpmFile(File srpmFile
) {
55 this.srpmFile
= srpmFile
;
58 public void setRpmBuildEnvironment(RpmBuildEnvironment rpmBuildEnvironment
) {
59 this.rpmBuildEnvironment
= rpmBuildEnvironment
;