X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.rpmfactory%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Frpmfactory%2Fcore%2FBuildInMock.java;h=11b772be9eadafc72d7a570d1dd6b0570b99845d;hb=3752fba0edf87a770b5763f5a4aab43c4a0a4e4e;hp=0bdb4c7ce2f772451fb0157e28d23e9e6351eba0;hpb=b301144d5f9dc598da7d75bd1eb515f02f32f5ca;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.rpmfactory/src/main/java/org/argeo/slc/rpmfactory/core/BuildInMock.java b/runtime/org.argeo.slc.rpmfactory/src/main/java/org/argeo/slc/rpmfactory/core/BuildInMock.java index 0bdb4c7ce..11b772be9 100644 --- a/runtime/org.argeo.slc.rpmfactory/src/main/java/org/argeo/slc/rpmfactory/core/BuildInMock.java +++ b/runtime/org.argeo.slc.rpmfactory/src/main/java/org/argeo/slc/rpmfactory/core/BuildInMock.java @@ -36,28 +36,34 @@ public class BuildInMock implements Runnable { private final static String NOARCH = "noarch"; private String rpmPackage = null; + private String branch = null; private String arch = NOARCH; - private RpmBuildEnvironment buildEnvironment; + private RpmFactory factory; private Executor executor; private String debuginfoDirName = "debuginfo"; + private String mockExecutable = "/usr/bin/mock"; public void run() { - String mockCfg = buildEnvironment.getMockConfig(arch); - File mockConfigFile = buildEnvironment.getMockConfigFile(arch); + String mockCfg = factory.getMockConfig(arch); + File mockConfigFile = factory.getMockConfigFile(arch, branch); // prepare mock call SystemCall mock = new SystemCall(); if (arch != null) mock.arg("setarch").arg(arch); - mock.arg("mock"); + mock.arg(mockExecutable); mock.arg("-v"); mock.arg("--configdir=" + mockConfigFile.getAbsoluteFile().getParent()); if (arch != null) mock.arg("--arch=" + arch); mock.arg("-r").arg(mockCfg); mock.arg("--scm-enable"); + // mock.arg("--scm-option"); + // mock.arg("git_get='git clone " + (branch != null ? "-b " + branch : + // "") + // + " " + factory.getGitBaseUrl() + "/SCM_PKG SCM_PKG'"); mock.arg("--scm-option").arg("package=" + rpmPackage); mock.setLogCommand(true); @@ -69,7 +75,8 @@ public class BuildInMock implements Runnable { mock.run(); // - File stagingDir = buildEnvironment.getStagingDir(); + File stagingDir = factory + .getWorkspaceDir(factory.getStagingWorkspace()); File srpmDir = new File(stagingDir, "SRPMS"); srpmDir.mkdirs(); File archDir = null; @@ -82,36 +89,37 @@ public class BuildInMock implements Runnable { // copy RPMs Set reposToRecreate = new HashSet(); - File resultDir = buildEnvironment.getResultDir(arch); - rpms: for (File file : resultDir.listFiles()) { - if (file.isDirectory()) - continue rpms; - - File[] targetDirs; - if (file.getName().contains(".src.rpm")) - targetDirs = new File[] { srpmDir }; - else if (file.getName().contains("-debuginfo-")) - targetDirs = new File[] { debuginfoDir }; - else if (!arch.equals(NOARCH) - && file.getName().contains("." + arch + ".rpm")) - targetDirs = new File[] { archDir }; - else if (file.getName().contains(".noarch.rpm")) { - List dirs = new ArrayList(); - for (String arch : buildEnvironment.getArchs()) - dirs.add(new File(stagingDir, arch)); - targetDirs = dirs.toArray(new File[dirs.size()]); - } else if (file.getName().contains(".rpm")) - throw new SlcException("Don't know where to copy " + file); - else { - if (log.isTraceEnabled()) - log.trace("Skip " + file); - continue rpms; + File resultDir = factory.getResultDir(arch); + if (resultDir.exists()) + rpms: for (File file : resultDir.listFiles()) { + if (file.isDirectory()) + continue rpms; + + File[] targetDirs; + if (file.getName().contains(".src.rpm")) + targetDirs = new File[] { srpmDir }; + else if (file.getName().contains("-debuginfo-")) + targetDirs = new File[] { debuginfoDir }; + else if (!arch.equals(NOARCH) + && file.getName().contains("." + arch + ".rpm")) + targetDirs = new File[] { archDir }; + else if (file.getName().contains(".noarch.rpm")) { + List dirs = new ArrayList(); + for (String arch : factory.getArchs()) + dirs.add(new File(stagingDir, arch)); + targetDirs = dirs.toArray(new File[dirs.size()]); + } else if (file.getName().contains(".rpm")) + throw new SlcException("Don't know where to copy " + file); + else { + if (log.isTraceEnabled()) + log.trace("Skip " + file); + continue rpms; + } + + reposToRecreate.addAll(Arrays.asList(targetDirs)); + copyToDirs(file, targetDirs); } - reposToRecreate.addAll(Arrays.asList(targetDirs)); - copyToDirs(file, targetDirs); - } - // recreate changed repos for (File repoToRecreate : reposToRecreate) { SystemCall createrepo = new SystemCall(); @@ -129,6 +137,9 @@ public class BuildInMock implements Runnable { createrepo.run(); log.info("Updated repo " + repoToRecreate); } + + // index staging workspace + factory.indexWorkspace(factory.getStagingWorkspace()); } protected void copyToDirs(File file, File[] dirs) { @@ -151,11 +162,20 @@ public class BuildInMock implements Runnable { this.rpmPackage = rpmPackage; } - public void setBuildEnvironment(RpmBuildEnvironment buildEnvironment) { - this.buildEnvironment = buildEnvironment; + public void setBranch(String branch) { + this.branch = branch; + } + + public void setFactory(RpmFactory env) { + this.factory = env; } public void setExecutor(Executor executor) { this.executor = executor; } + + public void setMockExecutable(String mockExecutable) { + this.mockExecutable = mockExecutable; + } + } \ No newline at end of file