From 525af6a9f3372fa609225fc6da9ecd8e95c9c025 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sun, 2 Oct 2011 18:25:08 +0000 Subject: [PATCH 1/1] Improve RPM Factory git-svn-id: https://svn.argeo.org/slc/trunk@4776 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../java/org/argeo/slc/jsch/JschExecutor.java | 2 ++ .../slc/lib/linux/rpmfactory/BuildInMock.java | 7 ++++++- .../slc/lib/linux/rpmfactory/RpmRepoInit.java | 11 +++++++++++ .../org/argeo/slc/log4j/SlcExecutionAppender.java | 15 ++++++++++++--- 4 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/lib/linux/rpmfactory/RpmRepoInit.java diff --git a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/jsch/JschExecutor.java b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/jsch/JschExecutor.java index dbf62721a..b9d5f55c7 100644 --- a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/jsch/JschExecutor.java +++ b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/jsch/JschExecutor.java @@ -77,6 +77,8 @@ public class JschExecutor implements Executor { public int execute(CommandLine command, Map environment) throws ExecuteException, IOException { String cmd = command.toString(); + if(workingDirectory!=null) + cmd = "cd "+workingDirectory.getPath()+" && "+cmd; RemoteExec remoteExec = new RemoteExec(); remoteExec.setSshTarget(sshTarget); remoteExec.setStreamHandler(streamHandler); diff --git a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/lib/linux/rpmfactory/BuildInMock.java b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/lib/linux/rpmfactory/BuildInMock.java index c4b35a9a7..c71507581 100644 --- a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/lib/linux/rpmfactory/BuildInMock.java +++ b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/lib/linux/rpmfactory/BuildInMock.java @@ -43,6 +43,8 @@ public class BuildInMock implements Runnable { private RpmBuildEnvironment buildEnvironment; private Executor executor; + private String debuginfoDirName = "debuginfo"; + public void run() { // TODO check if caller is in mock group @@ -78,7 +80,7 @@ public class BuildInMock implements Runnable { File debuginfoDir = null; if (!arch.equals(NOARCH)) { archDir = new File(repoDir, arch); - debuginfoDir = new File(archDir, "debuginfo"); + debuginfoDir = new File(archDir, debuginfoDirName); debuginfoDir.mkdirs(); } @@ -120,6 +122,9 @@ public class BuildInMock implements Runnable { createrepo.arg("createrepo"); // sqllite db createrepo.arg("-d"); + // debuginfo + if (!repoToRecreate.getName().equals(debuginfoDirName)) + createrepo.arg("-x").arg(debuginfoDirName + "/*"); // quiet createrepo.arg("-q"); createrepo.arg(repoToRecreate.getAbsolutePath()); diff --git a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/lib/linux/rpmfactory/RpmRepoInit.java b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/lib/linux/rpmfactory/RpmRepoInit.java new file mode 100644 index 000000000..acf5221bc --- /dev/null +++ b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/lib/linux/rpmfactory/RpmRepoInit.java @@ -0,0 +1,11 @@ +package org.argeo.slc.lib.linux.rpmfactory; + +/** Initialize a repository factory. */ +public class RpmRepoInit implements Runnable { + + public void run() { + // TODO Auto-generated method stub + + } + +} diff --git a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/log4j/SlcExecutionAppender.java b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/log4j/SlcExecutionAppender.java index f8930fff8..96d6ed9fa 100644 --- a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/log4j/SlcExecutionAppender.java +++ b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/log4j/SlcExecutionAppender.java @@ -17,6 +17,7 @@ package org.argeo.slc.log4j; import java.util.Date; +import java.util.concurrent.BlockingQueue; import org.apache.log4j.AppenderSkeleton; import org.apache.log4j.Level; @@ -110,8 +111,16 @@ public class SlcExecutionAppender extends AppenderSkeleton { try { dispatching.set(true); - ((ProcessThreadGroup) currentThread.getThreadGroup()) - .getSteps().add(step); + BlockingQueue steps = ((ProcessThreadGroup) currentThread + .getThreadGroup()).getSteps(); + if (steps.remainingCapacity() == 0) { + stdOut("WARNING: execution steps queue is full, skipping step: " + + step); + // FIXME understand why it block indefinitely: the queue + // should be emptied by the logging thread + } else { + steps.add(step); + } } finally { dispatching.set(false); } @@ -134,7 +143,7 @@ public class SlcExecutionAppender extends AppenderSkeleton { // } /** For development purpose, since using regular logging is not easy here */ - private static void stdOut(Object obj) { + static void stdOut(Object obj) { System.out.println(obj); } -- 2.39.2