]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/lib/linux/rpmfactory/ImportSrpm.java
e00560832a463f25262d59aadfd3f5d74fd9818e
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.simple / src / main / java / org / argeo / slc / lib / linux / rpmfactory / ImportSrpm.java
1 package org.argeo.slc.lib.linux.rpmfactory;
2
3 import java.io.File;
4
5 import org.argeo.slc.core.execution.tasks.SystemCall;
6
7 /** Install an SRPM into a working copy */
8 public class ImportSrpm implements Runnable {
9 private File baseDir;
10 private File srpmFile;
11 private RpmBuildEnvironment rpmBuildEnvironment;
12
13 public void run() {
14 SystemCall rpmQuery = new SystemCall(
15 "rpm --queryformat '%{NAME}\n' -qp " + srpmFile);
16 String packageName = rpmQuery.function();
17
18 File topdir = new File(baseDir, packageName);
19
20 // prepare SVN
21 // TODO: do it with SVNKit
22 topdir.mkdirs();
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");
26 sourcesDir.mkdirs();
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");
30 specsDir.mkdirs();
31 new SystemCall("svn add " + specsDir).run();
32
33 // Write rpm config files
34 File rpmmacroFile = new File(topdir, "rpmmacros");
35 File rpmrcFile = new File(topdir, "rpmrc");
36 rpmBuildEnvironment.writeRpmbuildConfigFiles(topdir, rpmmacroFile,
37 rpmrcFile);
38
39 // Install SRPM
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);
47 installSrpm.run();
48 }
49
50 public void setBaseDir(File basedir) {
51 this.baseDir = basedir;
52 }
53
54 public void setSrpmFile(File srpmFile) {
55 this.srpmFile = srpmFile;
56 }
57
58 public void setRpmBuildEnvironment(RpmBuildEnvironment rpmBuildEnvironment) {
59 this.rpmBuildEnvironment = rpmBuildEnvironment;
60 }
61
62 }