Improve freed-init
authorMathieu Baudier <mbaudier@argeo.org>
Tue, 30 May 2023 11:27:46 +0000 (13:27 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Tue, 30 May 2023 11:27:46 +0000 (13:27 +0200)
etc/freed/config.ini [deleted file]
etc/freed/init/config.ini [new file with mode: 0644]
etc/freed/init/jvm.args [new file with mode: 0644]
etc/freed/init/system.properties [new file with mode: 0644]
usr/jbin/Makefile
usr/jbin/src/FREEdInit.java [deleted file]
usr/jbin/src/freed-init.java [new file with mode: 0644]
usr/jbin/src/test-shebang.java [new file with mode: 0644]

diff --git a/etc/freed/config.ini b/etc/freed/config.ini
deleted file mode 100644 (file)
index 3ee3218..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-osgi.clean=true
-
-argeo.osgi.start.2=\
-org.eclipse.equinox.http.servlet,\
-org.apache.felix.scr,\
-org.eclipse.rap.rwt.osgi,\
-org.apache.tika.parsers,\
-org.argeo.init
-
-argeo.osgi.start.3=\
-org.argeo.cms,\
-org.argeo.cms.swt.rap,\
-org.argeo.cms.swt.rcp,\
-org.argeo.cms.ee,\
-org.argeo.cms.lib.sshd,\
-org.argeo.cms.lib.equinox,\
-org.argeo.cms.lib.jetty,\
-org.argeo.cms.jshell,\
-
-argeo.http.port=80
-argeo.sshd.port=22
-
-argeo.osgi.sources=\
-a2:///?swt=rap,\
diff --git a/etc/freed/init/config.ini b/etc/freed/init/config.ini
new file mode 100644 (file)
index 0000000..bdb2a9a
--- /dev/null
@@ -0,0 +1,28 @@
+osgi.clean=true
+osgi.console=true
+
+argeo.osgi.start.2=\
+org.eclipse.equinox.http.servlet,\
+org.apache.felix.scr,\
+org.eclipse.rap.rwt.osgi,\
+org.apache.tika.parsers,\
+org.argeo.init
+
+argeo.osgi.start.3=\
+org.argeo.cms,\
+org.argeo.cms.swt.rap,\
+org.argeo.cms.swt.rcp,\
+org.argeo.cms.ee,\
+org.argeo.cms.lib.sshd,\
+org.argeo.cms.lib.equinox,\
+org.argeo.cms.lib.jetty,\
+org.argeo.cms.jshell,\
+
+argeo.http.port=80
+argeo.sshd.port=22
+
+argeo.osgi.sources=\
+a2:///?\
+osgi=equinox&\
+log=syslogger&\
+crypto=fips&\
diff --git a/etc/freed/init/jvm.args b/etc/freed/init/jvm.args
new file mode 100644 (file)
index 0000000..6e7d6a6
--- /dev/null
@@ -0,0 +1,10 @@
+-Dosgi.configuration.cascaded=true
+-Dosgi.sharedConfiguration.area=/etc/freed/init
+-Dosgi.sharedConfiguration.area.readOnly=true
+-Dosgi.configuration.area=/var/lib/freed/init/state/
+-Dosgi.instance.area=/var/lib/freed/init/data/
+
+-Dorg.osgi.framework.system.packages.extra=sun.security.internal.spec,sun.security.provider,com.sun.net.httpserver,com.sun.jndi.ldap,com.sun.jndi.ldap.sasl,com.sun.jndi.dns,com.sun.security.jgss,com.sun.nio.file,com.sun.nio.sctp
+-Dorg.eclipse.equinox.http.jetty.autostart=false
+
+-cp /usr/local/share/a2/osgi/equinox/org.argeo.tp.osgi/org.eclipse.osgi.3.18.jar:/usr/local/share/a2/org.argeo.cms/org.argeo.init.2.3.jar
\ No newline at end of file
diff --git a/etc/freed/init/system.properties b/etc/freed/init/system.properties
new file mode 100644 (file)
index 0000000..5ee8524
--- /dev/null
@@ -0,0 +1 @@
+log.org.argeo=DEBUG
\ No newline at end of file
index e748529fe6a1bf1c384f0e92990d401795658fce..94f73a1dec4c973990417140add1125a3e66da3a 100644 (file)
@@ -2,14 +2,22 @@
 prefix ?= /usr/local
 exec_prefix ?= $(prefix)
 sbindir ?= $(exec_prefix)/sbin
+sysconfdir = $(prefix)/etc
+srcdir ?= src
 
-all:
-       cp src/FREEdInit.java src/freed-init
-       sed -i '1!b;s|//#!|#!|' src/freed-init
+EXECUTABLES=$(notdir $(patsubst %.java,%,$(wildcard $(srcdir)/*.java)))
+#EXECUTABLES=$(FILE:src/%.java=%)
+
+all: $(EXECUTABLES)
+
+%: $(srcdir)/%.java
+       cp $< $@
+       sed -i '1!b;s|//#!|#!|' $@
+       chmod a+x $@
 
 clean:
-       $(RM) src/freed-init
+       $(RM) $(EXECUTABLES)
 
 install:
-       cp src/freed-init $(DESTDIR)$(sbindir)
-       chmod u+x $(DESTDIR)$(sbindir)/freed-init
+       cp -v --preserve=mode  freed-init $(DESTDIR)$(sbindir)
+       cp -v ../../etc/freed/init/* $(DESTDIR)$(sysconfdir)/freed/init
diff --git a/usr/jbin/src/FREEdInit.java b/usr/jbin/src/FREEdInit.java
deleted file mode 100644 (file)
index 75da69a..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//#! /usr/bin/java --source 17 -cp /usr/local/share/a2/osgi/equinox/org.argeo.tp.osgi/org.eclipse.osgi.3.18.jar:/usr/local/share/a2/org.argeo.cms/org.argeo.init.2.3.jar -Dosgi.configuration.cascaded=true -Dosgi.sharedConfiguration.area=/etc/freed -Dosgi.sharedConfiguration.area.readOnly=true -Dosgi.configuration.area=/var/lib/freed/state/ -Dosgi.instance.area=/var/lib/freed/data/ -Dorg.osgi.framework.system.packages.extra=sun.security.internal.spec,sun.security.provider,com.sun.net.httpserver,com.sun.jndi.ldap,com.sun.jndi.ldap.sasl,com.sun.jndi.dns,com.sun.security.jgss,com.sun.nio.file,com.sun.nio.sctp -Dorg.eclipse.equinox.http.jetty.autostart=false
-
-import java.lang.management.ManagementFactory;
-
-import org.argeo.init.Service;
-
-import jdk.jshell.tool.JavaShellToolBuilder;
-import sun.misc.Signal;
-
-public class FREEdInit {
-       public static void main(String... args) {
-               final long pid = ProcessHandle.current().pid();
-               System.out.println("FREEd Init daemon starting with pid " + pid + "...");
-//             System.out.println(System.getProperty("user.dir"));
-//             System.out.println(System.getProperty("user.name"));
-//             System.out.println(System.getProperty("user.home"));
-               System.out.flush();
-
-               Signal.handle(new Signal("TERM"), (signal) -> {
-                       System.out.println("SIGTERM caught");
-                       System.exit(0);
-               });
-               Signal.handle(new Signal("INT"), (signal) -> {
-                       System.out.println("SIGINT caught");
-                       System.exit(0);
-               });
-               Signal.handle(new Signal("HUP"), (signal) -> {
-                       System.out.println("SIGHUP caught");
-                       System.exit(0);
-               });
-
-               if (args.length > 0 && ("1".equals(args[0]) //
-                               || "single".equals(args[0]) //
-                               || "emergency".equals(args[0]))) {
-                       // TODO check if we can remove dependency to management
-                       String classpath = ManagementFactory.getRuntimeMXBean().getClassPath();
-                       String feedbackMode = "concise";
-                       // TODO --startup script
-                       JavaShellToolBuilder builder = JavaShellToolBuilder.builder();
-                       try {
-                               builder.start("--execution", "direct", "--class-path", classpath, "--feedback", feedbackMode);
-                       } catch (Exception e) {
-                               e.printStackTrace();
-                               System.err.flush();
-                               System.exit(1);
-                               return;
-                       }
-
-               } else {
-                       Service.main(args);
-               }
-       }
-}
diff --git a/usr/jbin/src/freed-init.java b/usr/jbin/src/freed-init.java
new file mode 100644 (file)
index 0000000..f9e9cb8
--- /dev/null
@@ -0,0 +1,60 @@
+//#! /usr/bin/java --source 17 @/etc/freed/init/jvm.args
+
+import java.lang.management.ManagementFactory;
+import java.util.TreeMap;
+
+import org.argeo.init.Service;
+
+import jdk.jshell.tool.JavaShellToolBuilder;
+import sun.misc.Signal;
+
+class FreedInit {
+       public static void main(String... args) {
+               final long pid = ProcessHandle.current().pid();
+               System.out.println("FREEd Init daemon starting with pid " + pid + "...");
+//             System.out.println(System.getProperty("user.dir"));
+//             System.out.println(System.getProperty("user.name"));
+//             System.out.println(System.getProperty("user.home"));
+               
+               // System.setProperty("user.dir", "/tmp");
+               for (Object key : new TreeMap<>(System.getProperties()).keySet()) {
+                       System.out.println(key + "=" + System.getProperty(key.toString()));
+               }
+
+               System.out.flush();
+
+               Signal.handle(new Signal("TERM"), (signal) -> {
+                       System.out.println("SIGTERM caught");
+                       System.exit(0);
+               });
+               Signal.handle(new Signal("INT"), (signal) -> {
+                       System.out.println("SIGINT caught");
+                       System.exit(0);
+               });
+               Signal.handle(new Signal("HUP"), (signal) -> {
+                       System.out.println("SIGHUP caught");
+                       System.exit(0);
+               });
+
+               if (args.length > 0 && ("1".equals(args[0]) //
+                               || "single".equals(args[0]) //
+                               || "emergency".equals(args[0]))) {
+                       // TODO check if we can remove dependency to management
+                       String classpath = ManagementFactory.getRuntimeMXBean().getClassPath();
+                       String feedbackMode = "concise";
+                       // TODO --startup script
+                       JavaShellToolBuilder builder = JavaShellToolBuilder.builder();
+                       try {
+                               builder.start("--execution", "direct", "--class-path", classpath, "--feedback", feedbackMode);
+                       } catch (Exception e) {
+                               e.printStackTrace();
+                               System.err.flush();
+                               System.exit(1);
+                               return;
+                       }
+
+               } else {
+                       Service.main(args);
+               }
+       }
+}
diff --git a/usr/jbin/src/test-shebang.java b/usr/jbin/src/test-shebang.java
new file mode 100644 (file)
index 0000000..6332701
--- /dev/null
@@ -0,0 +1,16 @@
+//#! /usr/bin/java --source 17
+
+//usr/bin/env java --source 17 "$0" "$@" ; exit $?
+
+import java.util.TreeMap;
+
+class TestShebang {
+       public static void main(String... args) {
+               System.out.println(org.argeo.init.Service.class);
+
+               // System.setProperty("user.dir", "/tmp");
+               for (Object key : new TreeMap<>(System.getProperties()).keySet()) {
+                       System.out.println(key + "=" + System.getProperty(key.toString()));
+               }
+       }
+}