From b27ec4b5db6467752588a5e62c89fb215bfd9da2 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Tue, 12 Mar 2024 15:55:09 +0100 Subject: [PATCH] Makefile build for freed --- .gitignore | 1 + {usr/bin => bin}/argeo | 0 {usr/bin => bin}/jshc | 0 etc/argeo.d/jvm.args.monitoring | 1 - etc/argeo.user.d/jvm.args | 0 {usr/lib => etc}/argeo/all.policy | 0 etc/argeo/jvm.args | 5 ++ etc/{argeo.d => argeo}/jvm.args.debug | 0 etc/argeo/system/jvm.args.monitoring | 5 ++ etc/argeo/user/slc/debug.ini | 2 +- etc/default/argeo | 2 - {etc/freed/pid1 => lib/sysj}/config.ini | 0 {etc/freed/pid1 => lib/sysj}/jvm.args | 16 +++--- .../freed/pid1 => lib/sysj}/system.properties | 0 .../lib => lib}/systemd/system/argeo@.service | 13 ++--- .../system/freed-ipsec-roaming@.service | 0 .../systemd/system/freed-onresume.service | 0 .../systemd/system/freed-onsuspend.service | 0 {usr/lib => lib}/systemd/user/argeo.service | 11 ++-- .../ipsec/_updown.host4client6 | 0 local.mk | 50 ++++++++++++------- usr/lib/argeo/jvm.args | 12 ----- 22 files changed, 65 insertions(+), 53 deletions(-) create mode 100644 .gitignore rename {usr/bin => bin}/argeo (100%) rename {usr/bin => bin}/jshc (100%) delete mode 100644 etc/argeo.d/jvm.args.monitoring delete mode 100644 etc/argeo.user.d/jvm.args rename {usr/lib => etc}/argeo/all.policy (100%) create mode 100644 etc/argeo/jvm.args rename etc/{argeo.d => argeo}/jvm.args.debug (100%) create mode 100644 etc/argeo/system/jvm.args.monitoring rename {etc/freed/pid1 => lib/sysj}/config.ini (100%) rename {etc/freed/pid1 => lib/sysj}/jvm.args (58%) rename {etc/freed/pid1 => lib/sysj}/system.properties (100%) rename {usr/lib => lib}/systemd/system/argeo@.service (71%) rename {usr/lib => lib}/systemd/system/freed-ipsec-roaming@.service (100%) rename {usr/lib => lib}/systemd/system/freed-onresume.service (100%) rename {usr/lib => lib}/systemd/system/freed-onsuspend.service (100%) rename {usr/lib => lib}/systemd/user/argeo.service (59%) rename {usr/libexec => libexec}/ipsec/_updown.host4client6 (100%) delete mode 100644 usr/lib/argeo/jvm.args diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..16be8f2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/output/ diff --git a/usr/bin/argeo b/bin/argeo similarity index 100% rename from usr/bin/argeo rename to bin/argeo diff --git a/usr/bin/jshc b/bin/jshc similarity index 100% rename from usr/bin/jshc rename to bin/jshc diff --git a/etc/argeo.d/jvm.args.monitoring b/etc/argeo.d/jvm.args.monitoring deleted file mode 100644 index d7275ee..0000000 --- a/etc/argeo.d/jvm.args.monitoring +++ /dev/null @@ -1 +0,0 @@ --Dcom.sun.management.jmxremote.port=8099 -Dcom.sun.management.jmxremote.rmi.port=8099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname= \ No newline at end of file diff --git a/etc/argeo.user.d/jvm.args b/etc/argeo.user.d/jvm.args deleted file mode 100644 index e69de29..0000000 diff --git a/usr/lib/argeo/all.policy b/etc/argeo/all.policy similarity index 100% rename from usr/lib/argeo/all.policy rename to etc/argeo/all.policy diff --git a/etc/argeo/jvm.args b/etc/argeo/jvm.args new file mode 100644 index 0000000..fd2c6c0 --- /dev/null +++ b/etc/argeo/jvm.args @@ -0,0 +1,5 @@ +# Force UTF-8 encoding +-Dfile.encoding=UTF-8 + +# Ensure OpenJDK and OpenJ9 are compatible +-XX:+IgnoreUnrecognizedVMOptions diff --git a/etc/argeo.d/jvm.args.debug b/etc/argeo/jvm.args.debug similarity index 100% rename from etc/argeo.d/jvm.args.debug rename to etc/argeo/jvm.args.debug diff --git a/etc/argeo/system/jvm.args.monitoring b/etc/argeo/system/jvm.args.monitoring new file mode 100644 index 0000000..86a6e94 --- /dev/null +++ b/etc/argeo/system/jvm.args.monitoring @@ -0,0 +1,5 @@ +-Dcom.sun.management.jmxremote.port=8099 \ +-Dcom.sun.management.jmxremote.rmi.port=8099 \ +-Dcom.sun.management.jmxremote.authenticate=false \ +-Dcom.sun.management.jmxremote.ssl=false \ +#-Djava.rmi.server.hostname= \ No newline at end of file diff --git a/etc/argeo/user/slc/debug.ini b/etc/argeo/user/slc/debug.ini index 82da55a..ed7d121 100644 --- a/etc/argeo/user/slc/debug.ini +++ b/etc/argeo/user/slc/debug.ini @@ -1,2 +1,2 @@ -osgi.console=localhost:2023 +#osgi.console=localhost:2023 osgi.clean=true \ No newline at end of file diff --git a/etc/default/argeo b/etc/default/argeo index 946ce09..e69de29 100644 --- a/etc/default/argeo +++ b/etc/default/argeo @@ -1,2 +0,0 @@ -# Native libraries search path -A2_LIBRARY_PATH=/usr/local/lib/a2:/usr/lib/a2 \ No newline at end of file diff --git a/etc/freed/pid1/config.ini b/lib/sysj/config.ini similarity index 100% rename from etc/freed/pid1/config.ini rename to lib/sysj/config.ini diff --git a/etc/freed/pid1/jvm.args b/lib/sysj/jvm.args similarity index 58% rename from etc/freed/pid1/jvm.args rename to lib/sysj/jvm.args index 708fab1..a229195 100644 --- a/etc/freed/pid1/jvm.args +++ b/lib/sysj/jvm.args @@ -1,15 +1,15 @@ #-Xmx64m -#-Xshareclasses:name=pid1 +#-Xshareclasses:name=sysj #-XX:+IdleTuningGcOnIdle --Dargeo.logging.file=/var/log/freed-pid1.log --Dlog.FreedPid1=DEBUG +-Dargeo.logging.file=/var/log/sysj.log +-Dlog.org.argeo=DEBUG -Dosgi.configuration.cascaded=true --Dosgi.sharedConfiguration.area=/usr/local/etc/freed/pid1 +-Dosgi.sharedConfiguration.area=/usr/local/lib/sysj -Dosgi.sharedConfiguration.area.readOnly=true --Dosgi.configuration.area=/var/lib/freed/pid1/state/ --Dosgi.instance.area=/var/lib/freed/pid1/data/ +-Dosgi.configuration.area=/var/lib/sysj/state/ +-Dosgi.instance.area=/var/lib/sysj/data/ -Dorg.osgi.framework.system.packages.extra=sun.security.utils,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 @@ -20,4 +20,6 @@ -Dsun.stderr.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 --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 +-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/pid1/system.properties b/lib/sysj/system.properties similarity index 100% rename from etc/freed/pid1/system.properties rename to lib/sysj/system.properties diff --git a/usr/lib/systemd/system/argeo@.service b/lib/systemd/system/argeo@.service similarity index 71% rename from usr/lib/systemd/system/argeo@.service rename to lib/systemd/system/argeo@.service index 8c05d3c..816206b 100644 --- a/usr/lib/systemd/system/argeo@.service +++ b/lib/systemd/system/argeo@.service @@ -13,22 +13,23 @@ StateDirectory=argeo.d/%I LogsDirectory=argeo.d/%I ConfigurationDirectory=argeo.d/%I CacheDirectory=argeo.d/%I +EnvironmentFile=/usr/local/etc/default/argeo WorkingDirectory=/var/lib/argeo.d/%I ExecStart=java \ +-Djava.library.path=/usr/local/lib/a2/org.argeo.slc:/usr/local/lib/a2/org.argeo.tp.sys \ -Dosgi.configuration.cascaded=true \ --Dosgi.sharedConfiguration.area=/etc/argeo.d/%I/ \ +-Dosgi.sharedConfiguration.area=${CONFIGURATION_DIRECTORY} \ -Dosgi.sharedConfiguration.area.readOnly=true \ -Dosgi.configuration.area=${STATE_DIRECTORY}/state/ \ -Dosgi.instance.area=${STATE_DIRECTORY}/data/ \ -Dargeo.node.repo.indexesBase=${CACHE_DIRECTORY}/indexes \ -Dorg.osgi.framework.system.packages.extra=sun.security.util,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 \ --Declipse.ignoreApp=true \ --Dosgi.noShutdown=true \ -Dorg.eclipse.equinox.http.jetty.autostart=false \ -@/etc/argeo.d/jvm.args \ +@/usr/local/etc/argeo/jvm.args \ +@${CONFIGURATION_DIRECTORY}/../jvm.args \ @${CONFIGURATION_DIRECTORY}/jvm.args \ -@lib/argeo/jvm.args \ +-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" \ org.argeo.init.ServiceMain # Exit codes of the JVM when SIGTERM or SIGINT have been caught: @@ -41,4 +42,4 @@ IOAccounting=true IPAccounting=true [Install] -WantedBy=multi-user.target +WantedBy=network-online.target diff --git a/usr/lib/systemd/system/freed-ipsec-roaming@.service b/lib/systemd/system/freed-ipsec-roaming@.service similarity index 100% rename from usr/lib/systemd/system/freed-ipsec-roaming@.service rename to lib/systemd/system/freed-ipsec-roaming@.service diff --git a/usr/lib/systemd/system/freed-onresume.service b/lib/systemd/system/freed-onresume.service similarity index 100% rename from usr/lib/systemd/system/freed-onresume.service rename to lib/systemd/system/freed-onresume.service diff --git a/usr/lib/systemd/system/freed-onsuspend.service b/lib/systemd/system/freed-onsuspend.service similarity index 100% rename from usr/lib/systemd/system/freed-onsuspend.service rename to lib/systemd/system/freed-onsuspend.service diff --git a/usr/lib/systemd/user/argeo.service b/lib/systemd/user/argeo.service similarity index 59% rename from usr/lib/systemd/user/argeo.service rename to lib/systemd/user/argeo.service index 888b205..f6783f0 100644 --- a/usr/lib/systemd/user/argeo.service +++ b/lib/systemd/user/argeo.service @@ -7,21 +7,20 @@ StateDirectory=argeo/slc LogsDirectory=argeo/slc ConfigurationDirectory=argeo/slc CacheDirectory=argeo/slc -WorkingDirectory=/usr/local/ EnvironmentFile=/usr/local/etc/default/argeo +WorkingDirectory=/usr/local/ # Optional files ExecStartPre=/usr/bin/mkdir -p ${CONFIGURATION_DIRECTORY} ExecStartPre=/usr/bin/touch ${CONFIGURATION_DIRECTORY}/jvm.args ExecStart=java \ --Djava.library.path=${A2_LIBRARY_PATH} \ +-Djava.library.path=/usr/local/lib/a2/org.argeo.slc:/usr/local/lib/a2/org.argeo.tp.sys:/usr/local/lib/a2/swt/rcp/org.argeo.tp.swt \ -Dosgi.framework.useSystemProperties=false \ --Dosgi.noShutdown=true \ --Declipse.ignoreApp=true \ -@etc/argeo/user/jvm.args \ +@/usr/local/etc/argeo/jvm.args \ +@/usr/local/etc/argeo/user/jvm.args \ @${CONFIGURATION_DIRECTORY}/jvm.args \ -@lib/argeo/jvm.args \ +-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:/usr/local/lib/a2/org.argeo.slc/*:/usr/local/lib/a2/org.argeo.tp.sys/*:/usr/local/lib/a2/swt/rcp/org.argeo.tp.swt/*" \ org.argeo.init.RuntimeManagerMain \ etc/argeo/user/slc diff --git a/usr/libexec/ipsec/_updown.host4client6 b/libexec/ipsec/_updown.host4client6 similarity index 100% rename from usr/libexec/ipsec/_updown.host4client6 rename to libexec/ipsec/_updown.host4client6 diff --git a/local.mk b/local.mk index 7284143..dabffac 100644 --- a/local.mk +++ b/local.mk @@ -6,35 +6,49 @@ sbindir ?= $(exec_prefix)/sbin libdir ?= $(exec_prefix)/lib libexecdir ?= $(exec_prefix)/libexec sysconfdir ?= $(prefix)/etc -srcdir ?= src +srcdir ?= $(prefix)/src datarootdir ?= $(prefix)/share +## Utilities +# Install to a target directory without executable bit +INSTALL=install -m644 -D --target-directory +# Always try copy-on-write COPY=cp --reflink=auto +# TODO use argeo-build +BUILD_BASE = output/argeo-freed all: - $(MAKE) -C sjbin all + mkdir -p $(BUILD_BASE)$(sysconfdir) $(BUILD_BASE)$(bindir) $(BUILD_BASE)$(libdir) $(BUILD_BASE)$(libexecdir) + $(COPY) -r etc/* $(BUILD_BASE)$(sysconfdir) + $(COPY) -r bin/* $(BUILD_BASE)$(bindir) + $(COPY) -r lib/* $(BUILD_BASE)$(libdir) + $(COPY) -r libexec/* $(BUILD_BASE)$(libexecdir) + sed -i 's|/usr/local/etc|$(sysconfdir)|' $(BUILD_BASE)$(libdir)/systemd/*/argeo*.service + sed -i 's|/usr/local/lib|$(libdir)|' $(BUILD_BASE)$(libdir)/systemd/*/argeo*.service + sed -i 's|/usr/local/share|$(datarootdir)|' $(BUILD_BASE)$(libdir)/systemd/*/argeo*.service + sed -i 's|/usr/local/share|$(datarootdir)|' $(BUILD_BASE)$(bindir)/* + sed -i 's|/usr/local/lib|$(libdir)|' $(BUILD_BASE)$(libdir)/sysj/jvm.args +# $(MAKE) -C sjbin all clean: - $(MAKE) -C sjbin clean + $(RM) -r $(BUILD_BASE) +# $(MAKE) -C sjbin clean install: # TODO use install and wildcard ? - $(COPY) -v -r --no-clobber etc/* $(DESTDIR)$(sysconfdir) - $(COPY) -v -r usr/bin/* $(DESTDIR)$(bindir) -# $(COPY) -v -r usr/share/* $(DESTDIR)$(datarootdir) - $(COPY) -v -r usr/lib/* $(DESTDIR)$(libdir) - sed -i 's|/usr/local|$(prefix)|' $(DESTDIR)$(libdir)/systemd/system/argeo*.service - sed -i 's|/usr/local|$(prefix)|' $(DESTDIR)$(libdir)/systemd/user/argeo*.service - sed -i 's|/usr/local|$(prefix)|' $(DESTDIR)$(libdir)/argeo/*.args - $(COPY) -v -r usr/libexec/* $(DESTDIR)$(libexecdir) -# $(MAKE) -C sjbin install - systemctl daemon-reload + $(COPY) -v -r --no-clobber $(BUILD_BASE)$(sysconfdir)/* $(DESTDIR)$(sysconfdir) + $(COPY) -v -r $(BUILD_BASE)$(libdir)/* $(DESTDIR)$(libdir) + install -m755 -D --target-directory $(DESTDIR)$(bindir) $(BUILD_BASE)$(bindir)/* + install -m755 -D --target-directory $(DESTDIR)$(libexecdir)/ipsec $(BUILD_BASE)$(libexecdir)/ipsec/* +# systemctl daemon-reload uninstall: - $(foreach f, $(shell cd usr/bin/ && find . -type f), $(RM) $(DESTDIR)$(bindir)/$(f);) -# $(foreach f, $(shell find usr/share/ -type f), $(RM) $(DESTDIR)$(datarootdir)/$(f);) - $(foreach f, $(shell cd usr/lib/ && find . -type f), $(RM) $(DESTDIR)$(libdir)/$(f);) - $(foreach f, $(shell cd usr/libexec/ && find . -type f), $(RM) $(DESTDIR)$(libexecdir)/$(f);) +# TODO fix warning when directory does not exist + $(foreach f, $(shell cd $(BUILD_BASE)$(bindir) && find . -type f), $(RM) $(DESTDIR)$(bindir)/$(f);) + $(foreach f, $(shell cd $(BUILD_BASE)$(libdir) && find . -type f), $(RM) $(DESTDIR)$(libdir)/$(f);) + $(foreach f, $(shell cd $(BUILD_BASE)$(libexecdir) && find . -type f), $(RM) $(DESTDIR)$(libexecdir)/$(f);) +# TODO remove empty directories +# @if [ -d $(A2_INSTALL_TARGET) ]; then find $(A2_INSTALL_TARGET) -empty -type d -delete; fi purge: uninstall - $(foreach f, $(shell cd etc/ && find . -type f), $(RM) $(DESTDIR)$(sysconfdir)/$(f);) + $(foreach f, $(shell cd $(BUILD_BASE)$(sysconfdir) && find . -type f), $(RM) $(DESTDIR)$(sysconfdir)/$(f);) diff --git a/usr/lib/argeo/jvm.args b/usr/lib/argeo/jvm.args deleted file mode 100644 index 797aa82..0000000 --- a/usr/lib/argeo/jvm.args +++ /dev/null @@ -1,12 +0,0 @@ -# Force UTF-8 encoding --Dfile.encoding=UTF-8 - -# Ensure OpenJDK and OpenJ9 are compatible --XX:+IgnoreUnrecognizedVMOptions - --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\ -:/usr/local/lib/a2/org.argeo.tp.sys/*\ -:/usr/local/lib/a2/swt/rcp/org.argeo.tp.swt/*\ -" \ No newline at end of file -- 2.30.2