X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=runtime%2Forg.argeo.slc.rpmfactory%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Frpmfactory%2Fcore%2FRpmFactory.java;h=4daf3b1eadb239839b3700f55cf18201e1032ec9;hb=e03b993a84bb39e3f146a0ef8782a09661239be7;hp=8396a9bbe0fd9da31ad21518178a0e82f2cccc97;hpb=9a664d1631d98dbcd75a7200fa21ed85779b4328;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.rpmfactory/src/main/java/org/argeo/slc/rpmfactory/core/RpmFactory.java b/runtime/org.argeo.slc.rpmfactory/src/main/java/org/argeo/slc/rpmfactory/core/RpmFactory.java index 8396a9bbe..4daf3b1ea 100644 --- a/runtime/org.argeo.slc.rpmfactory/src/main/java/org/argeo/slc/rpmfactory/core/RpmFactory.java +++ b/runtime/org.argeo.slc.rpmfactory/src/main/java/org/argeo/slc/rpmfactory/core/RpmFactory.java @@ -17,7 +17,11 @@ package org.argeo.slc.rpmfactory.core; import java.io.File; import java.io.IOException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Calendar; +import java.util.GregorianCalendar; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -52,6 +56,8 @@ public class RpmFactory { private String mockVar = "/var/lib/mock"; private String mockEtc = "/etc/mock"; + private DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHmm"); + private String gitWorkspace = "git"; private String localUrlBase = "http://localhost:7070/"; @@ -144,6 +150,26 @@ public class RpmFactory { } } + /** Caller must logout the underlying session. */ + protected Node newDistribution(String distributionId) { + Session session = null; + try { + session = JcrUtils.loginOrCreateWorkspace(rpmRepository, + distributionId); + JcrUtils.addPrivilege(session, "/", "anonymous", "jcr:read"); + JcrUtils.addPrivilege(session, "/", SlcConstants.ROLE_SLC, + "jcr:all"); + + Calendar now = new GregorianCalendar(); + String folderName = dateFormat.format(now.getTime()); + return JcrUtils.mkfolders(session, "/" + folderName); + } catch (Exception e) { + JcrUtils.logoutQuietly(session); + throw new SlcException("Cannot initialize distribution workspace " + + distributionId, e); + } + } + protected void initGitWorkspace() { Session session = null; try { @@ -217,6 +243,10 @@ public class RpmFactory { buf.append("baseurl=").append(proxiedReposBase) .append(repository.getId()).append('/').append(arch) .append('/').append("\n"); + if (((ThirdPartyRpmRepository) repository).getYumConf() != null) + buf.append( + ((ThirdPartyRpmRepository) repository).getYumConf() + .trim()).append('\n'); } } @@ -233,6 +263,7 @@ public class RpmFactory { buf.append('[').append(workspace).append("]\n"); buf.append("baseurl=").append(managedReposBase).append(workspace) .append('/').append(arch).append('/').append("\n"); + buf.append("gpgcheck=0").append("\n"); } /** Creates a mock config file. */ @@ -258,8 +289,8 @@ public class RpmFactory { } /** Creates a yum config file. */ - public File getYumConfigFile(String arch) { - File yumConfigFile = new File(yumConfDir, getIdWithArch(arch) + ".conf"); + public File getYumRepoFile(String arch) { + File yumConfigFile = new File(yumConfDir, getIdWithArch(arch) + ".repo"); try { FileUtils.writeStringToFile(yumConfigFile, generateYumConfigFile(arch)); @@ -279,7 +310,7 @@ public class RpmFactory { } public File getSourcesDir() { - return new File(distBase + "/" + stagingWorkspace); + return new File(distBase + "/" + stableWorkspace); } public String getMockConfig(String arch) {