1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.argeo.slc.lib.linux.rpmfactory;
17
18 import java.io.File;
19
20 import org.argeo.slc.core.execution.tasks.SystemCall;
21
22
23 public class ImportSrpm implements Runnable {
24 private File baseDir;
25 private File srpmFile;
26 private RpmBuildEnvironment rpmBuildEnvironment;
27
28 public void run() {
29 SystemCall rpmQuery = new SystemCall(
30 "rpm --queryformat '%{NAME}\n' -qp " + srpmFile);
31 String packageName = rpmQuery.function();
32
33 File topdir = new File(baseDir, packageName);
34
35
36
37 topdir.mkdirs();
38 new SystemCall("svn add " + topdir).run();
39 new SystemCall("svn propset svn:ignore rpm*\nBUILD\nSRPMS\nRPMS " + topdir).run();
40 File sourcesDir = new File(topdir, "SOURCES");
41 sourcesDir.mkdirs();
42 new SystemCall("svn add " + sourcesDir).run();
43 new SystemCall("svn propset svn:ignore *gz\n*bz2\n*.zip\n*.jar " + sourcesDir).run();
44 File specsDir = new File(topdir, "SPECS");
45 specsDir.mkdirs();
46 new SystemCall("svn add " + specsDir).run();
47
48
49 File rpmmacroFile = new File(topdir, "rpmmacros");
50 File rpmrcFile = new File(topdir, "rpmrc");
51 rpmBuildEnvironment.writeRpmbuildConfigFiles(topdir, rpmmacroFile,
52 rpmrcFile);
53
54
55 SystemCall installSrpm = new SystemCall();
56 installSrpm.arg("rpm");
57 installSrpm.arg("-Uvh");
58 installSrpm.arg("--rcfile=" + rpmrcFile.getAbsolutePath());
59 installSrpm.arg(srpmFile.getAbsolutePath());
60 installSrpm.setExecDir(topdir.getAbsolutePath());
61 installSrpm.setLogCommand(true);
62 installSrpm.run();
63 }
64
65 public void setBaseDir(File basedir) {
66 this.baseDir = basedir;
67 }
68
69 public void setSrpmFile(File srpmFile) {
70 this.srpmFile = srpmFile;
71 }
72
73 public void setRpmBuildEnvironment(RpmBuildEnvironment rpmBuildEnvironment) {
74 this.rpmBuildEnvironment = rpmBuildEnvironment;
75 }
76
77 }