]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/lib/linux/rpmfactory/RpmBuildEnvironment.java
5c2ba1ed2e67f04f88bff83350112a64525de6bc
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.simple / src / main / java / org / argeo / slc / lib / linux / rpmfactory / RpmBuildEnvironment.java
1 package org.argeo.slc.lib.linux.rpmfactory;
2
3 import java.io.File;
4 import java.io.IOException;
5 import java.util.ArrayList;
6 import java.util.HashMap;
7 import java.util.List;
8 import java.util.Map;
9
10 import org.apache.commons.exec.Executor;
11 import org.apache.commons.io.FileUtils;
12 import org.argeo.slc.SlcException;
13
14 /**
15 * Defines a build environment. This information is typically used by other
16 * components performing the various actions related to RPM build.
17 */
18 public class RpmBuildEnvironment {
19 static String defaultMacroFiles = "/usr/lib/rpm/macros:/usr/lib/rpm/ia32e-linux/macros:/usr/lib/rpm/redhat/macros:/etc/rpm/macros.*:/etc/rpm/macros:/etc/rpm/ia32e-linux/macros:~/.rpmmacros";
20
21 private Map<String, String> rpmmacros = new HashMap<String, String>();
22
23 private List<String> archs = new ArrayList<String>();
24
25 private String stagingBase = System.getProperty("user.home")
26 + "/dev/staging";
27
28 /** Write (topdir)/rpmmacros and (topdir)/rpmrc */
29 public void writeRpmbuildConfigFiles(File topdir) {
30 writeRpmbuildConfigFiles(topdir, new File(topdir, "rpmmacros"),
31 new File(topdir, "rpmrc"));
32 }
33
34 public void writeRpmbuildConfigFiles(File topdir, File rpmmacroFile,
35 File rpmrcFile) {
36 try {
37 List<String> macroLines = new ArrayList<String>();
38 macroLines.add("%_topdir " + topdir.getCanonicalPath());
39 for (String macroKey : rpmmacros.keySet()) {
40 macroLines.add(macroKey + " " + rpmmacros.get(macroKey));
41 }
42 FileUtils.writeLines(rpmmacroFile, macroLines);
43
44 List<String> rpmrcLines = new ArrayList<String>();
45 rpmrcLines.add("include: /usr/lib/rpm/rpmrc");
46 rpmrcLines.add("macrofiles: " + defaultMacroFiles + ":"
47 + rpmmacroFile.getCanonicalPath());
48 FileUtils.writeLines(rpmrcFile, rpmrcLines);
49 } catch (IOException e) {
50 throw new SlcException("Cannot write rpmbuild config files", e);
51 }
52
53 }
54
55 public Map<String, String> getRpmmacros() {
56 return rpmmacros;
57 }
58
59 public void setRpmmacros(Map<String, String> rpmmacros) {
60 this.rpmmacros = rpmmacros;
61 }
62
63 public String getDefaultMacroFiles() {
64 return defaultMacroFiles;
65 }
66
67 public void setDefaultMacroFiles(String defaultMacroFiles) {
68 this.defaultMacroFiles = defaultMacroFiles;
69 }
70
71 public void setArchs(List<String> archs) {
72 this.archs = archs;
73 }
74
75 public List<String> getArchs() {
76 return archs;
77 }
78
79 public String getStagingBase() {
80 return stagingBase;
81 }
82
83 public void setStagingBase(String stagingBase) {
84 this.stagingBase = stagingBase;
85 }
86 }