]> 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
4c43eec1f3467207e80e56b23780f9c0868669f0
[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.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 private 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 private Map<String, String> rpmmacros = new HashMap<String, String>();
20
21 public void writeRpmbuildConfigFiles(File topdir, File rpmmacroFile,
22 File rpmrcFile) {
23 try {
24 List<String> macroLines = new ArrayList<String>();
25 macroLines.add("%_topdir " + topdir.getCanonicalPath());
26 for (String macroKey : rpmmacros.keySet()) {
27 macroLines.add(macroKey + " " + rpmmacros.get(macroKey));
28 }
29 FileUtils.writeLines(rpmmacroFile, macroLines);
30
31 List<String> rpmrcLines = new ArrayList<String>();
32 rpmrcLines.add("include: /usr/lib/rpm/rpmrc");
33 rpmrcLines.add("macrofiles: " + defaultMacroFiles + ":"
34 + rpmmacroFile.getCanonicalPath());
35 FileUtils.writeLines(rpmrcFile, rpmrcLines);
36 } catch (IOException e) {
37 throw new SlcException("Cannot write rpmbuild config files", e);
38 }
39
40 }
41
42 public Map<String, String> getRpmmacros() {
43 return rpmmacros;
44 }
45
46 public void setRpmmacros(Map<String, String> rpmmacros) {
47 this.rpmmacros = rpmmacros;
48 }
49
50 public String getDefaultMacroFiles() {
51 return defaultMacroFiles;
52 }
53
54 public void setDefaultMacroFiles(String defaultMacroFiles) {
55 this.defaultMacroFiles = defaultMacroFiles;
56 }
57
58 }