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