From ff075f6ee795a590b244d70a90cc312ba1f2d83d Mon Sep 17 00:00:00 2001 From: Brad Bishop Date: Fri, 31 Aug 2018 06:25:51 -0400 Subject: meta-phosphor: Move layer content from common/ Adopt a more conventional directory hierarchy. meta-phosphor is still a _long_ way from suitable for hosting on yoctoproject.org but things like this don't help. (From meta-phosphor rev: 471cfcefa74b8c7ceb704cb670e6d915cf27c63b) Change-Id: I3f106b2f6cdc6cec734be28a6090800546f362eb Signed-off-by: Brad Bishop --- .../recipes-core/base-files/base-files/fstab | 9 ++ .../recipes-core/base-files/base-files_%.bbappend | 7 ++ .../0001-Stop-watchdog-first-on-startup.patch | 63 +++++++++++++ .../recipes-core/busybox/busybox/busybox.cfg | 6 ++ .../recipes-core/busybox/busybox/flash.cfg | 4 + .../recipes-core/busybox/busybox/mountpoint.cfg | 1 + .../recipes-core/busybox/busybox_%.bbappend | 5 + ...ropbear-default-host-keys-if-a-key-is-not.patch | 42 +++++++++ ...d-c-command-option-to-force-a-specific-co.patch | 91 ++++++++++++++++++ .../dropbear/dropbear/dropbearkey.service | 18 ++++ .../recipes-core/dropbear/dropbear_%.bbappend | 7 ++ .../recipes-core/glib-2.0/glib-2.0%.bbappend | 4 + .../recipes-core/os-release/os-release.bbappend | 35 +++++++ .../nativesdk-packagegroup-sdk-host.bbappend | 6 ++ ...ackagegroup-core-standalone-sdk-target.bbappend | 1 + .../packagegroup-core-tools-profile.bbappend | 12 +++ meta-phosphor/recipes-core/systemd/obmc-targets.bb | 91 ++++++++++++++++++ .../obmc-chassis-hard-poweroff@.target | 11 +++ .../obmc-targets/obmc-chassis-powered-off@.target | 9 ++ .../obmc-targets/obmc-chassis-poweroff@.target | 9 ++ .../obmc-targets/obmc-chassis-poweron@.target | 12 +++ .../obmc-targets/obmc-chassis-powerreset@.target | 7 ++ .../obmc-targets/obmc-fan-control-ready@.target | 4 + .../systemd/obmc-targets/obmc-fan-control.target | 4 + .../obmc-targets/obmc-fan-watchdog-takeover.target | 6 ++ .../systemd/obmc-targets/obmc-fans-ready.target | 4 + .../systemd/obmc-targets/obmc-host-crash@.target | 4 + .../systemd/obmc-targets/obmc-host-quiesce@.target | 6 ++ .../systemd/obmc-targets/obmc-host-reboot@.target | 10 ++ .../obmc-targets/obmc-host-reset-running@.target | 5 + .../systemd/obmc-targets/obmc-host-reset@.target | 7 ++ .../obmc-targets/obmc-host-shutdown@.target | 6 ++ .../obmc-targets/obmc-host-start-pre@.target | 7 ++ .../systemd/obmc-targets/obmc-host-start@.target | 10 ++ .../systemd/obmc-targets/obmc-host-started@.target | 7 ++ .../obmc-targets/obmc-host-starting@.target | 7 ++ .../obmc-targets/obmc-host-startmin@.target | 10 ++ .../obmc-targets/obmc-host-stop-pre@.target | 8 ++ .../systemd/obmc-targets/obmc-host-stop@.target | 11 +++ .../systemd/obmc-targets/obmc-host-stopped@.target | 9 ++ .../obmc-targets/obmc-host-stopping@.target | 10 ++ .../systemd/obmc-targets/obmc-host-timeout@.target | 4 + .../systemd/obmc-targets/obmc-mapper.target | 4 + .../systemd/obmc-targets/obmc-power-off@.target | 7 ++ .../systemd/obmc-targets/obmc-power-on@.target | 7 ++ .../obmc-targets/obmc-power-reset-on@.target | 5 + .../obmc-targets/obmc-power-start-pre@.target | 7 ++ .../systemd/obmc-targets/obmc-power-start@.target | 7 ++ .../obmc-targets/obmc-power-stop-pre@.target | 9 ++ .../systemd/obmc-targets/obmc-power-stop@.target | 9 ++ .../systemd/obmc-targets/obmc-standby.target | 9 ++ .../systemd/obmc-targets/obmc-webserver-pre.target | 2 + ...bus-Don-t-automatically-add-ObjectManager.patch | 56 +++++++++++ ...r-out-string-checking-from-name_to_prefix.patch | 103 +++++++++++++++++++++ ...ath-escaping-when-mangling-path-instances.patch | 69 ++++++++++++++ ...ror-if-unable-to-create-network-namespace.patch | 39 ++++++++ .../recipes-core/systemd/systemd/default.network | 4 + .../recipes-core/systemd/systemd_%.bbappend | 22 +++++ 58 files changed, 948 insertions(+) create mode 100644 meta-phosphor/recipes-core/base-files/base-files/fstab create mode 100644 meta-phosphor/recipes-core/base-files/base-files_%.bbappend create mode 100644 meta-phosphor/recipes-core/busybox/busybox/0001-Stop-watchdog-first-on-startup.patch create mode 100644 meta-phosphor/recipes-core/busybox/busybox/busybox.cfg create mode 100644 meta-phosphor/recipes-core/busybox/busybox/flash.cfg create mode 100644 meta-phosphor/recipes-core/busybox/busybox/mountpoint.cfg create mode 100644 meta-phosphor/recipes-core/busybox/busybox_%.bbappend create mode 100644 meta-phosphor/recipes-core/dropbear/dropbear/0001-Only-load-dropbear-default-host-keys-if-a-key-is-not.patch create mode 100644 meta-phosphor/recipes-core/dropbear/dropbear/0001-dropbear-Add-c-command-option-to-force-a-specific-co.patch create mode 100644 meta-phosphor/recipes-core/dropbear/dropbear/dropbearkey.service create mode 100644 meta-phosphor/recipes-core/dropbear/dropbear_%.bbappend create mode 100644 meta-phosphor/recipes-core/glib-2.0/glib-2.0%.bbappend create mode 100644 meta-phosphor/recipes-core/os-release/os-release.bbappend create mode 100644 meta-phosphor/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend create mode 100644 meta-phosphor/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bbappend create mode 100644 meta-phosphor/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets.bb create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-hard-poweroff@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-powered-off@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-poweroff@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-poweron@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-powerreset@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-fan-control-ready@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-fan-control.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-fan-watchdog-takeover.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-fans-ready.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-crash@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-quiesce@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-reboot@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-reset-running@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-reset@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-shutdown@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-start-pre@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-start@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-started@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-starting@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-startmin@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-stop-pre@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-stop@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-stopped@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-stopping@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-timeout@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-mapper.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-off@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-on@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-reset-on@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-start-pre@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-start@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-stop-pre@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-stop@.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-standby.target create mode 100644 meta-phosphor/recipes-core/systemd/obmc-targets/obmc-webserver-pre.target create mode 100644 meta-phosphor/recipes-core/systemd/systemd/0001-sd-bus-Don-t-automatically-add-ObjectManager.patch create mode 100644 meta-phosphor/recipes-core/systemd/systemd/0003-basic-Factor-out-string-checking-from-name_to_prefix.patch create mode 100644 meta-phosphor/recipes-core/systemd/systemd/0004-basic-Use-path-escaping-when-mangling-path-instances.patch create mode 100644 meta-phosphor/recipes-core/systemd/systemd/0005-dont-return-error-if-unable-to-create-network-namespace.patch create mode 100644 meta-phosphor/recipes-core/systemd/systemd/default.network create mode 100644 meta-phosphor/recipes-core/systemd/systemd_%.bbappend (limited to 'meta-phosphor/recipes-core') diff --git a/meta-phosphor/recipes-core/base-files/base-files/fstab b/meta-phosphor/recipes-core/base-files/base-files/fstab new file mode 100644 index 0000000000..4a07668768 --- /dev/null +++ b/meta-phosphor/recipes-core/base-files/base-files/fstab @@ -0,0 +1,9 @@ +# openbmc fstab + +/dev/root / auto defaults 1 1 +proc /proc proc defaults 0 0 +devpts /dev/pts devpts mode=0620,gid=5 0 0 +tmpfs /run tmpfs mode=0755,nodev,nosuid,strictatime 0 0 +tmpfs /var/volatile tmpfs defaults 0 0 +tmpfs /media tmpfs defaults 0 0 +/var/persist/home /home none bind 0 0 diff --git a/meta-phosphor/recipes-core/base-files/base-files_%.bbappend b/meta-phosphor/recipes-core/base-files/base-files_%.bbappend new file mode 100644 index 0000000000..4b48dc78bc --- /dev/null +++ b/meta-phosphor/recipes-core/base-files/base-files_%.bbappend @@ -0,0 +1,7 @@ +FILESEXTRAPATHS_prepend_df-obmc-ubi-fs := "${THISDIR}/${PN}:" + +RDEPENDS_${PN}_append_df-obmc-ubi-fs = " preinit-mounts" + +do_install_append() { + install -d ${D}/srv +} diff --git a/meta-phosphor/recipes-core/busybox/busybox/0001-Stop-watchdog-first-on-startup.patch b/meta-phosphor/recipes-core/busybox/busybox/0001-Stop-watchdog-first-on-startup.patch new file mode 100644 index 0000000000..7128b8108d --- /dev/null +++ b/meta-phosphor/recipes-core/busybox/busybox/0001-Stop-watchdog-first-on-startup.patch @@ -0,0 +1,63 @@ +From a4c493ae42926ab36fdc805a5da9f0682bb98b45 Mon Sep 17 00:00:00 2001 +From: Matt Spinler +Date: Tue, 13 Jun 2017 15:26:49 -0500 +Subject: [PATCH] Stop watchdog first on startup + +Some watchdog implementations may do things other than issue +a reboot on a watchdog timeout. In this case, there's the +possibility of restarting this program from the state of +the watchdog device not being properly stopped (done by writing +a 'V' and closing the device). Since it wasn't stopped, the +driver may not be able to restart the watchdog when this program +reopens it and starts pinging it. + +To fix this, the code will always first issue the stop when it +starts up. + +Signed-off-by: Matt Spinler +--- + miscutils/watchdog.c | 21 +++++++++++++++++++-- + 1 file changed, 19 insertions(+), 2 deletions(-) + +diff --git a/miscutils/watchdog.c b/miscutils/watchdog.c +index 07ae64e52..223e3c32d 100644 +--- a/miscutils/watchdog.c ++++ b/miscutils/watchdog.c +@@ -53,6 +53,24 @@ static void watchdog_shutdown(int sig UNUSED_PARAM) + _exit(EXIT_SUCCESS); + } + ++static void watchdog_open(const char* device) ++{ ++ static const char magic_value = 'V'; ++ ++ /* If the watchdog driver can do something other than cause a reboot ++ * on a timeout, then it's possible this program may be starting from ++ * a state when the watchdog hadn't been previously stopped with ++ * the magic write followed by a close. In this case the driver may ++ * not start properly, so always do the proper stop first just in case. ++ */ ++ ++ /* Use known fd # - avoid needing global 'int fd' */ ++ xmove_fd(xopen(device, O_WRONLY), 3); ++ write(3, &magic_value, 1); ++ close(3); ++ xmove_fd(xopen(device, O_WRONLY), 3); ++} ++ + int watchdog_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; + int watchdog_main(int argc, char **argv) + { +@@ -88,8 +106,7 @@ int watchdog_main(int argc, char **argv) + + bb_signals(BB_FATAL_SIGS, watchdog_shutdown); + +- /* Use known fd # - avoid needing global 'int fd' */ +- xmove_fd(xopen(argv[argc - 1], O_WRONLY), 3); ++ watchdog_open(argv[argc - 1]); + + /* WDIOC_SETTIMEOUT takes seconds, not milliseconds */ + htimer_duration = htimer_duration / 1000; +-- +2.11.0 + diff --git a/meta-phosphor/recipes-core/busybox/busybox/busybox.cfg b/meta-phosphor/recipes-core/busybox/busybox/busybox.cfg new file mode 100644 index 0000000000..99e83dbd93 --- /dev/null +++ b/meta-phosphor/recipes-core/busybox/busybox/busybox.cfg @@ -0,0 +1,6 @@ +CONFIG_DEVMEM=y +CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y +CONFIG_FEATURE_LESS_TRUNCATE=y +CONFIG_FEATURE_LESS_REGEXP=y +CONFIG_WATCHDOG=y +CONFIG_EXPAND=y diff --git a/meta-phosphor/recipes-core/busybox/busybox/flash.cfg b/meta-phosphor/recipes-core/busybox/busybox/flash.cfg new file mode 100644 index 0000000000..39ba10d74f --- /dev/null +++ b/meta-phosphor/recipes-core/busybox/busybox/flash.cfg @@ -0,0 +1,4 @@ +CONFIG_FLASHCP=y +CONFIG_FLASH_LOCK=y +CONFIG_FLASH_UNLOCK=y +CONFIG_FLASH_ERASEALL=y diff --git a/meta-phosphor/recipes-core/busybox/busybox/mountpoint.cfg b/meta-phosphor/recipes-core/busybox/busybox/mountpoint.cfg new file mode 100644 index 0000000000..8b009511ab --- /dev/null +++ b/meta-phosphor/recipes-core/busybox/busybox/mountpoint.cfg @@ -0,0 +1 @@ +CONFIG_MOUNTPOINT=y diff --git a/meta-phosphor/recipes-core/busybox/busybox_%.bbappend b/meta-phosphor/recipes-core/busybox/busybox_%.bbappend new file mode 100644 index 0000000000..e6678fc8a0 --- /dev/null +++ b/meta-phosphor/recipes-core/busybox/busybox_%.bbappend @@ -0,0 +1,5 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" +SRC_URI += "file://busybox.cfg" +SRC_URI += "file://flash.cfg" +SRC_URI += "file://mountpoint.cfg" +SRC_URI += "file://0001-Stop-watchdog-first-on-startup.patch" diff --git a/meta-phosphor/recipes-core/dropbear/dropbear/0001-Only-load-dropbear-default-host-keys-if-a-key-is-not.patch b/meta-phosphor/recipes-core/dropbear/dropbear/0001-Only-load-dropbear-default-host-keys-if-a-key-is-not.patch new file mode 100644 index 0000000000..e32baec83f --- /dev/null +++ b/meta-phosphor/recipes-core/dropbear/dropbear/0001-Only-load-dropbear-default-host-keys-if-a-key-is-not.patch @@ -0,0 +1,42 @@ +From 95eff1ca0beea55259c2cdc7f1bb9f930bf57bc8 Mon Sep 17 00:00:00 2001 +From: CamVan Nguyen +Date: Tue, 13 Feb 2018 15:37:47 -0600 +Subject: [PATCH 1/1] Only load dropbear default host keys if a key is not + specified + +--- + svr-runopts.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/svr-runopts.c b/svr-runopts.c +index 8f60059..c5c2148 100644 +--- a/svr-runopts.c ++++ b/svr-runopts.c +@@ -488,17 +488,21 @@ void load_all_hostkeys() { + m_free(hostkey_file); + } + ++ /* Only load default host keys if a host key is not specified by the ++ * user */ ++ if (0 == svr_opts.num_hostkey_files) { + #ifdef DROPBEAR_RSA +- loadhostkey(RSA_PRIV_FILENAME, 0); ++ loadhostkey(RSA_PRIV_FILENAME, 0); + #endif + + #ifdef DROPBEAR_DSS +- loadhostkey(DSS_PRIV_FILENAME, 0); ++ loadhostkey(DSS_PRIV_FILENAME, 0); + #endif + + #ifdef DROPBEAR_ECDSA +- loadhostkey(ECDSA_PRIV_FILENAME, 0); ++ loadhostkey(ECDSA_PRIV_FILENAME, 0); + #endif ++ } + + #ifdef DROPBEAR_DELAY_HOSTKEY + if (svr_opts.delay_hostkey) { +-- +1.8.2.2 + diff --git a/meta-phosphor/recipes-core/dropbear/dropbear/0001-dropbear-Add-c-command-option-to-force-a-specific-co.patch b/meta-phosphor/recipes-core/dropbear/dropbear/0001-dropbear-Add-c-command-option-to-force-a-specific-co.patch new file mode 100644 index 0000000000..88d0ac0bb1 --- /dev/null +++ b/meta-phosphor/recipes-core/dropbear/dropbear/0001-dropbear-Add-c-command-option-to-force-a-specific-co.patch @@ -0,0 +1,91 @@ +From b4e094381ec846f4387dc6a3c210c2205a8db58a Mon Sep 17 00:00:00 2001 +From: Jeremy Kerr +Date: Tue, 12 Apr 2016 11:11:40 +0800 +Subject: [PATCH] dropbear: Add -c option to force a specific command + +This change adds a -c option to dropbear, to force the session to use a +specific command, in a similar fashion to OpenSSH's ForceCommand +configuration option. + +This is useful to provide a simple fixed service over ssh, without +requiring an authorized key file for the per-key forced_command option. + +This setting takes precedence over the channel session's provided +command, and the per-key forced_command setting. + +Signed-off-by: Jeremy Kerr +--- + runopts.h | 2 ++ + svr-chansession.c | 12 ++++++++++-- + svr-runopts.c | 5 +++++ + 3 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/runopts.h b/runopts.h +index f7c869d..ffb573e 100644 +--- a/runopts.h ++++ b/runopts.h +@@ -114,6 +114,8 @@ typedef struct svr_runopts { + buffer * banner; + char * pidfile; + ++ char * command; ++ + } svr_runopts; + + extern svr_runopts svr_opts; +diff --git a/svr-chansession.c b/svr-chansession.c +index bfaf7f6..d6c9330 100644 +--- a/svr-chansession.c ++++ b/svr-chansession.c +@@ -671,8 +671,16 @@ static int sessioncommand(struct Channel *channel, struct ChanSess *chansess, + } + } + +- /* take public key option 'command' into account */ +- svr_pubkey_set_forced_command(chansess); ++ ++ /* take global command into account */ ++ if (svr_opts.command) { ++ chansess->original_command = chansess->cmd ? : m_strdup(""); ++ chansess->cmd = m_strdup(svr_opts.command); ++ } else { ++ /* take public key option 'command' into account */ ++ svr_pubkey_set_forced_command(chansess); ++ } ++ + + #ifdef LOG_COMMANDS + if (chansess->cmd) { +diff --git a/svr-runopts.c b/svr-runopts.c +index 8f60059..f845300 100644 +--- a/svr-runopts.c ++++ b/svr-runopts.c +@@ -79,6 +79,7 @@ static void printhelp(const char * progname) { + #ifdef ENABLE_SVR_REMOTETCPFWD + "-k Disable remote port forwarding\n" + "-a Allow connections to forwarded ports from any host\n" ++ "-c command Force executed command\n" + #endif + "-p [address:]port\n" + " Listen on specified tcp port (and optionally address),\n" +@@ -125,6 +126,7 @@ void svr_getopts(int argc, char ** argv) { + /* see printhelp() for options */ + svr_opts.bannerfile = NULL; + svr_opts.banner = NULL; ++ svr_opts.command = NULL; + svr_opts.forkbg = 1; + svr_opts.norootlogin = 0; + svr_opts.noauthpass = 0; +@@ -177,6 +179,9 @@ void svr_getopts(int argc, char ** argv) { + case 'b': + next = &svr_opts.bannerfile; + break; ++ case 'c': ++ next = &svr_opts.command; ++ break; + case 'd': + case 'r': + next = &keyfile; +-- +2.5.0 + diff --git a/meta-phosphor/recipes-core/dropbear/dropbear/dropbearkey.service b/meta-phosphor/recipes-core/dropbear/dropbear/dropbearkey.service new file mode 100644 index 0000000000..dfeb17f41d --- /dev/null +++ b/meta-phosphor/recipes-core/dropbear/dropbear/dropbearkey.service @@ -0,0 +1,18 @@ +[Unit] +Description=SSH Key Generation + +[Service] +# Set the default RSA key path then load environment variables from the +# environment file, which might override the default RSA key path. +Environment="DROPBEAR_RSAKEY_DIR=/etc/dropbear" +EnvironmentFile=-/etc/default/dropbear +Type=oneshot +ExecStart=@BASE_BINDIR@/sh -c \ + "if [[ ! -f ${DROPBEAR_RSAKEY_DIR}/dropbear_rsa_host_key ]]; then \ + @BASE_BINDIR@/mkdir -p ${DROPBEAR_RSAKEY_DIR}; \ + @SBINDIR@/dropbearkey -t rsa -f ${DROPBEAR_RSAKEY_DIR}/dropbear_rsa_host_key; \ + fi" +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/meta-phosphor/recipes-core/dropbear/dropbear_%.bbappend b/meta-phosphor/recipes-core/dropbear/dropbear_%.bbappend new file mode 100644 index 0000000000..80714977b7 --- /dev/null +++ b/meta-phosphor/recipes-core/dropbear/dropbear_%.bbappend @@ -0,0 +1,7 @@ +# 0001-Only-load-dropbear-default-host-keys-if-a-key-is-not.patch +# has been upstreamed. This patch can be removed once we upgrade +# to yocto 2.5 or later which will pull in the latest dropbear code. +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" +SRC_URI += "file://dropbearkey.service \ + file://0001-dropbear-Add-c-command-option-to-force-a-specific-co.patch \ + file://0001-Only-load-dropbear-default-host-keys-if-a-key-is-not.patch" diff --git a/meta-phosphor/recipes-core/glib-2.0/glib-2.0%.bbappend b/meta-phosphor/recipes-core/glib-2.0/glib-2.0%.bbappend new file mode 100644 index 0000000000..f003a6b431 --- /dev/null +++ b/meta-phosphor/recipes-core/glib-2.0/glib-2.0%.bbappend @@ -0,0 +1,4 @@ +## We do not currently use any gio-modules, set clear this variable to prevent +## the postinstall hook from being done. The postinstall hook prevents +## the read-only-rootfs IMAGE_FEATURE. +GIO_MODULE_PACKAGES = "" diff --git a/meta-phosphor/recipes-core/os-release/os-release.bbappend b/meta-phosphor/recipes-core/os-release/os-release.bbappend new file mode 100644 index 0000000000..77249fc509 --- /dev/null +++ b/meta-phosphor/recipes-core/os-release/os-release.bbappend @@ -0,0 +1,35 @@ +# WARNING! +# +# These modifications to os-release disable the bitbake parse +# cache (for the os-release recipe only). Before copying +# and pasting into another recipe ensure it is understood +# what that means! + +def run_git(d, cmd): + try: + oeroot = d.getVar('COREBASE', True) + return bb.process.run("git --work-tree %s --git-dir %s/.git %s" + % (oeroot, oeroot, cmd))[0].strip('\n') + except: + pass + +python() { + version_id = run_git(d, 'describe --dirty --long') + if version_id: + d.setVar('VERSION_ID', version_id) + versionList = version_id.split('-') + version = versionList[0] + "-" + versionList[1] + d.setVar('VERSION', version) + + build_id = run_git(d, 'describe --abbrev=0') + if build_id: + d.setVar('BUILD_ID', build_id) +} + +OS_RELEASE_FIELDS_append = " BUILD_ID" + +# Ensure the git commands run every time bitbake is invoked. +BB_DONT_CACHE = "1" + +# Make os-release available to other recipes. +SYSROOT_DIRS_append = " ${sysconfdir}" diff --git a/meta-phosphor/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend b/meta-phosphor/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend new file mode 100644 index 0000000000..96236ca73c --- /dev/null +++ b/meta-phosphor/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend @@ -0,0 +1,6 @@ +RDEPENDS_${PN}_append = " \ + nativesdk-autoconf-archive \ + nativesdk-phosphor-dbus-interfaces-yaml \ + nativesdk-sdbus++ \ + nativesdk-phosphor-logging-elog \ + " diff --git a/meta-phosphor/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bbappend b/meta-phosphor/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bbappend new file mode 100644 index 0000000000..7eef4f9bb6 --- /dev/null +++ b/meta-phosphor/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bbappend @@ -0,0 +1 @@ +RRECOMMENDS_${PN}_append = " gtest sdbusplus phosphor-logging libstdc++-staticdev" diff --git a/meta-phosphor/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend b/meta-phosphor/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend new file mode 100644 index 0000000000..78b78e40b6 --- /dev/null +++ b/meta-phosphor/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend @@ -0,0 +1,12 @@ +RDEPENDS_${PN}_remove = " \ + lttng-tools \ + lttng-ust \ + lttng-modules \ + powertop \ + latencytop \ + " + +RRECOMMENDS_${PN}_remove = " \ + perf \ + trace-cmd \ + " diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets.bb b/meta-phosphor/recipes-core/systemd/obmc-targets.bb new file mode 100644 index 0000000000..ac7835e6bf --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets.bb @@ -0,0 +1,91 @@ +SUMMARY = "Phosphor Systemd targets" +DESCRIPTION = "Provides well known Systemd synchronization points for OpenBMC." +HOMEPAGE = "http://github.com/openbmc" +PR = "r1" + +inherit obmc-phosphor-systemd +inherit obmc-phosphor-license +inherit allarch + +# Chassis power synchronization targets +# - start-pre: Services to run before we start power on process +# - start: Services to run to do the chassis power on +# - on: Services to run once power is on +# - stop-pre,stop,off: Same as above but applied to powering off +# - reset-on: Services to check if chassis power is on after bmc reset +CHASSIS_SYNCH_TARGETS = "start-pre start on stop-pre stop off reset-on" + +# Chassis action power targets +# - on: Services to run to power on the chassis +# - off: Services to run to power off the chassis +# - powered-off: Services to run once chassis power is off +# - reset: Services to check chassis power state and update chassis "on" target +# - hard-off: Services to force an immediate power off of the chassis +CHASSIS_ACTION_TARGETS = "poweron poweroff powered-off powerreset hard-poweroff" + +# Track all host synchronization point targets +# - start-pre: Services to run before we start host boot +# - starting: Services to run to do the host boot +# - started: Services to run once the host is booted +# - stop-pre,stopping,stopped: Same as above but applied to shutting down the host +# - reset-running: Services to check if host is running after bmc reset +HOST_SYNCH_TARGETS = "start-pre starting started stop-pre stopping stopped reset-running" + +# Track all host action targets +# - start: Will run startmin target, this target used for any additional +# services that user needs for an initial power on of host. +# For example, resetting the host reboot count could be put in +# this target so on any fresh power on, this count is reset. +# - startmin: Minimum services required to start the host. This target will +# be called by reboot and start target. +# - stop: Services to run to shutdown the host +# - quiesce: Target to enter on host boot failure +# - shutdown: Tell host to shutdown, then stop system +# - reset: Services to check if host is running and update host "start" target +# - crash: Target to run when host crashes. it is very much similar to +# quiesce target but the only delta is that this target contains +# multiple services and one of them is the quiesce target. +# - timeout: Target to run when host watchdog times out +# - reboot: Reboot the host +HOST_ACTION_TARGETS = "start startmin stop quiesce reset shutdown crash timeout reboot" + +CHASSIS_SYNCH_FMT = "obmc-power-{0}@.target" +CHASSIS_ACTION_FMT = "obmc-chassis-{0}@.target" +HOST_SYNCH_FMT = "obmc-host-{0}@.target" +HOST_ACTION_FMT = "obmc-host-{0}@.target" + +CHASSIS_LINK_SYNCH_FMT = "${CHASSIS_SYNCH_FMT}:obmc-power-{0}@{1}.target" +CHASSIS_LINK_ACTION_FMT = "${CHASSIS_ACTION_FMT}:obmc-chassis-{0}@{1}.target" +HOST_LINK_SYNCH_FMT = "${HOST_SYNCH_FMT}:obmc-host-{0}@{1}.target" +HOST_LINK_ACTION_FMT = "${HOST_ACTION_FMT}:obmc-host-{0}@{1}.target" +FAN_LINK_FMT = "obmc-fan-control-ready@.target:obmc-fan-control-ready@{0}.target" + +# Targets to be executed on checkstop and watchdog timeout +HOST_ERROR_TARGETS = "crash timeout" + +QUIESCE_TMPL = "obmc-host-quiesce@.target" +CRASH_TIMEOUT_TGTFMT = "obmc-host-{0}@{1}.target" +QUIESCE_INSTFMT = "obmc-host-quiesce@{1}.target" +QUIESCE_FMT = "../${QUIESCE_TMPL}:${CRASH_TIMEOUT_TGTFMT}.wants/${QUIESCE_INSTFMT}" + +SYSTEMD_SERVICE_${PN} += " \ + obmc-mapper.target \ + obmc-webserver-pre.target \ + obmc-fans-ready.target \ + obmc-fan-control.target \ + obmc-fan-control-ready@.target \ + obmc-fan-watchdog-takeover.target \ + obmc-standby.target \ + " + +SYSTEMD_SERVICE_${PN} += "${@compose_list(d, 'CHASSIS_SYNCH_FMT', 'CHASSIS_SYNCH_TARGETS')}" +SYSTEMD_SERVICE_${PN} += "${@compose_list(d, 'CHASSIS_ACTION_FMT', 'CHASSIS_ACTION_TARGETS')}" +SYSTEMD_SERVICE_${PN} += "${@compose_list(d, 'HOST_SYNCH_FMT', 'HOST_SYNCH_TARGETS')}" +SYSTEMD_SERVICE_${PN} += "${@compose_list(d, 'HOST_ACTION_FMT', 'HOST_ACTION_TARGETS')}" + +SYSTEMD_LINK_${PN} += "${@compose_list(d, 'CHASSIS_LINK_SYNCH_FMT', 'CHASSIS_SYNCH_TARGETS', 'OBMC_CHASSIS_INSTANCES')}" +SYSTEMD_LINK_${PN} += "${@compose_list(d, 'CHASSIS_LINK_ACTION_FMT', 'CHASSIS_ACTION_TARGETS', 'OBMC_CHASSIS_INSTANCES')}" +SYSTEMD_LINK_${PN} += "${@compose_list(d, 'HOST_LINK_SYNCH_FMT', 'HOST_SYNCH_TARGETS', 'OBMC_HOST_INSTANCES')}" +SYSTEMD_LINK_${PN} += "${@compose_list(d, 'HOST_LINK_ACTION_FMT', 'HOST_ACTION_TARGETS', 'OBMC_HOST_INSTANCES')}" +SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FAN_LINK_FMT', 'OBMC_CHASSIS_INSTANCES')}" +SYSTEMD_LINK_${PN} += "${@compose_list(d, 'QUIESCE_FMT', 'HOST_ERROR_TARGETS', 'OBMC_HOST_INSTANCES')}" diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-hard-poweroff@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-hard-poweroff@.target new file mode 100644 index 0000000000..48fc441694 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-hard-poweroff@.target @@ -0,0 +1,11 @@ +[Unit] +Description=Chassis%i (Hard Power Off) +Wants={SYSTEMD_DEFAULT_TARGET} +After={SYSTEMD_DEFAULT_TARGET} +Wants=mapper-wait@-xyz-openbmc_project-state-chassis%i.service +After=mapper-wait@-xyz-openbmc_project-state-chassis%i.service +Conflicts=obmc-chassis-poweron@%i.target +Conflicts=obmc-chassis-powerreset@%i.target +Conflicts=obmc-host-shutdown@%i.target +Conflicts=xyz.openbmc_project.Ipmi.Internal.SoftPowerOff.service +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-powered-off@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-powered-off@.target new file mode 100644 index 0000000000..84c1ddab1f --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-powered-off@.target @@ -0,0 +1,9 @@ +[Unit] +Description=Chassis%i (Powered Off) +Wants={SYSTEMD_DEFAULT_TARGET} +After={SYSTEMD_DEFAULT_TARGET} +Wants=mapper-wait@-xyz-openbmc_project-state-chassis%i.service +After=mapper-wait@-xyz-openbmc_project-state-chassis%i.service +Conflicts=obmc-chassis-poweron@%i.target +Conflicts=obmc-chassis-powerreset@%i.target +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-poweroff@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-poweroff@.target new file mode 100644 index 0000000000..080d72456b --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-poweroff@.target @@ -0,0 +1,9 @@ +[Unit] +Description=Chassis%i (Power Off) +Wants={SYSTEMD_DEFAULT_TARGET} +After={SYSTEMD_DEFAULT_TARGET} +Wants=mapper-wait@-xyz-openbmc_project-state-chassis%i.service +After=mapper-wait@-xyz-openbmc_project-state-chassis%i.service +Conflicts=obmc-chassis-poweron@%i.target +Conflicts=obmc-chassis-powerreset@%i.target +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-poweron@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-poweron@.target new file mode 100644 index 0000000000..55f6d919b0 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-poweron@.target @@ -0,0 +1,12 @@ +[Unit] +Description=Chassis%i (Power On) +Wants={SYSTEMD_DEFAULT_TARGET} +After={SYSTEMD_DEFAULT_TARGET} +Wants=mapper-wait@-xyz-openbmc_project-state-chassis%i.service +After=mapper-wait@-xyz-openbmc_project-state-chassis%i.service +Wants=mapper-subtree-remove@-xyz-openbmc\x5fproject-software\x3Axyz.openbmc_project.Software.ActivationBlocksTransition.service +After=mapper-subtree-remove@-xyz-openbmc\x5fproject-software\x3Axyz.openbmc_project.Software.ActivationBlocksTransition.service +Conflicts=obmc-chassis-poweroff@%i.target +RefuseManualStop=yes +OnFailure=obmc-chassis-poweroff@%i.target +OnFailureJobMode=flush diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-powerreset@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-powerreset@.target new file mode 100644 index 0000000000..8d7c47e6bc --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-chassis-powerreset@.target @@ -0,0 +1,7 @@ +[Unit] +Description=Chassis%i (Reset Check) +Conflicts=obmc-chassis-poweroff@%i.target +RefuseManualStop=yes + +[Install] +WantedBy={SYSTEMD_DEFAULT_TARGET} diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-fan-control-ready@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-fan-control-ready@.target new file mode 100644 index 0000000000..e041a55080 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-fan-control-ready@.target @@ -0,0 +1,4 @@ +[Unit] +Description=Fan Control Ready +RefuseManualStop=yes +Conflicts=obmc-chassis-powered-off@%i.target diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-fan-control.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-fan-control.target new file mode 100644 index 0000000000..50665db4a8 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-fan-control.target @@ -0,0 +1,4 @@ +[Unit] +Description=Fan Control +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-fan-watchdog-takeover.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-fan-watchdog-takeover.target new file mode 100644 index 0000000000..8034083345 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-fan-watchdog-takeover.target @@ -0,0 +1,6 @@ +#The system implementation should start this target when dynamic fan control +#is no longer desired or possible. It should also add units to this target +#that enabled continued operation after dynamic fan control is no longer +#desired or possible. +[Unit] +Description=Fan watchdog takeover target diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-fans-ready.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-fans-ready.target new file mode 100644 index 0000000000..59e61c626a --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-fans-ready.target @@ -0,0 +1,4 @@ +[Unit] +Description=Fans Ready +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-crash@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-crash@.target new file mode 100644 index 0000000000..ea3798b522 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-crash@.target @@ -0,0 +1,4 @@ +[Unit] +Description=Host instance %i crashed +Conflicts=obmc-chassis-poweroff@%i.target +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-quiesce@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-quiesce@.target new file mode 100644 index 0000000000..4f10419abc --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-quiesce@.target @@ -0,0 +1,6 @@ +[Unit] +Description=Quiesce Target +Wants={SYSTEMD_DEFAULT_TARGET} +After={SYSTEMD_DEFAULT_TARGET} +RefuseManualStop=yes +Conflicts=obmc-chassis-poweroff@%i.target diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-reboot@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-reboot@.target new file mode 100644 index 0000000000..dc280ea653 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-reboot@.target @@ -0,0 +1,10 @@ +[Unit] +Description=Reboot Host%i +Wants={SYSTEMD_DEFAULT_TARGET} +After={SYSTEMD_DEFAULT_TARGET} +Wants=mapper-wait@-org-openbmc-control-chassis%i.service +After=mapper-wait@-org-openbmc-control-chassis%i.service +Conflicts=obmc-host-startmin@%i.target +RefuseManualStop=yes +OnFailure=obmc-chassis-poweroff@%i.target +OnFailureJobMode=flush diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-reset-running@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-reset-running@.target new file mode 100644 index 0000000000..94bb2b130d --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-reset-running@.target @@ -0,0 +1,5 @@ +[Unit] +Description=Host%i running after reset +Conflicts=obmc-host-stop@%i.target +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-reset@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-reset@.target new file mode 100644 index 0000000000..ca95d843c2 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-reset@.target @@ -0,0 +1,7 @@ +[Unit] +Description=Host%i (Reset Check) +Conflicts=obmc-host-stop@%i.target +RefuseManualStop=yes + +[Install] +WantedBy={SYSTEMD_DEFAULT_TARGET} diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-shutdown@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-shutdown@.target new file mode 100644 index 0000000000..4768a567fa --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-shutdown@.target @@ -0,0 +1,6 @@ +[Unit] +Description=Power%i Host Off +Wants={SYSTEMD_DEFAULT_TARGET} +RefuseManualStop=yes +OnFailure=obmc-chassis-poweroff@%i.target +OnFailureJobMode=flush diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-start-pre@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-start-pre@.target new file mode 100644 index 0000000000..2bc270c146 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-start-pre@.target @@ -0,0 +1,7 @@ +[Unit] +Description=Start Host%i (Pre) +Wants={SYSTEMD_DEFAULT_TARGET} +After={SYSTEMD_DEFAULT_TARGET} +Conflicts=obmc-host-stop@%i.target +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-start@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-start@.target new file mode 100644 index 0000000000..144b633878 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-start@.target @@ -0,0 +1,10 @@ +[Unit] +Description=Start Host%i +Wants={SYSTEMD_DEFAULT_TARGET} +After={SYSTEMD_DEFAULT_TARGET} +Wants=mapper-wait@-org-openbmc-control-chassis%i.service +After=mapper-wait@-org-openbmc-control-chassis%i.service +Conflicts=obmc-host-stop@%i.target +RefuseManualStop=yes +OnFailure=obmc-host-quiesce@%i.target +OnFailureJobMode=flush diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-started@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-started@.target new file mode 100644 index 0000000000..eb0a9383be --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-started@.target @@ -0,0 +1,7 @@ +[Unit] +Description=Host%i (Started) +Wants={SYSTEMD_DEFAULT_TARGET} +After=obmc-host-starting@%i.target +Conflicts=obmc-host-stop@%i.target +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-starting@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-starting@.target new file mode 100644 index 0000000000..408139dd43 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-starting@.target @@ -0,0 +1,7 @@ +[Unit] +Description=Host%i (Starting) +Wants={SYSTEMD_DEFAULT_TARGET} +After=obmc-host-start-pre@%i.target +Conflicts=obmc-host-stop@%i.target +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-startmin@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-startmin@.target new file mode 100644 index 0000000000..6e924adcd7 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-startmin@.target @@ -0,0 +1,10 @@ +[Unit] +Description=Start Host%i Minimum +Wants={SYSTEMD_DEFAULT_TARGET} +After={SYSTEMD_DEFAULT_TARGET} +Wants=mapper-wait@-org-openbmc-control-chassis%i.service +After=mapper-wait@-org-openbmc-control-chassis%i.service +Conflicts=obmc-host-stop@%i.target +RefuseManualStop=yes +OnFailure=obmc-host-quiesce@%i.target +OnFailureJobMode=flush diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-stop-pre@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-stop-pre@.target new file mode 100644 index 0000000000..e88d3ea587 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-stop-pre@.target @@ -0,0 +1,8 @@ +[Unit] +Description=Stop Host%i (Pre) +Wants={SYSTEMD_DEFAULT_TARGET} +After={SYSTEMD_DEFAULT_TARGET} +Before=obmc-host-stopping@%i.target +Conflicts=obmc-host-startmin@%i.target +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-stop@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-stop@.target new file mode 100644 index 0000000000..8e99bccdb9 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-stop@.target @@ -0,0 +1,11 @@ +[Unit] +Description=Stop Host%i +Wants={SYSTEMD_DEFAULT_TARGET} +After={SYSTEMD_DEFAULT_TARGET} +Wants=mapper-wait@-org-openbmc-control-chassis%i.service +After=mapper-wait@-org-openbmc-control-chassis%i.service +After=obmc-chassis-poweroff@%i.target +Conflicts=obmc-host-startmin@%i.target +RefuseManualStop=yes +OnFailure=obmc-chassis-poweroff@%i.target +OnFailureJobMode=flush diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-stopped@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-stopped@.target new file mode 100644 index 0000000000..74039fc25c --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-stopped@.target @@ -0,0 +1,9 @@ +[Unit] +Description=Host%i (Stopped) +Wants={SYSTEMD_DEFAULT_TARGET} +Wants=obmc-host-stopping@%i.target +After=obmc-host-stopping@%i.target +Before=obmc-power-stop-pre@%i.target +Conflicts=obmc-host-startmin@%i.target +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-stopping@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-stopping@.target new file mode 100644 index 0000000000..f087dea723 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-stopping@.target @@ -0,0 +1,10 @@ +[Unit] +Description=Host%i (Stopping) +Wants={SYSTEMD_DEFAULT_TARGET} +Wants=obmc-host-stop-pre@%i.target +After=obmc-host-stop-pre@%i.target +Before=obmc-host-stopped@%i.target +Conflicts=obmc-host-startmin@%i.target +Conflicts=obmc-host-starting@%i.target +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-timeout@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-timeout@.target new file mode 100644 index 0000000000..b87507bf10 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-host-timeout@.target @@ -0,0 +1,4 @@ +[Unit] +Description=Host instance %i timed out refreshing Watchdog +Conflicts=obmc-chassis-poweroff@%i.target +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-mapper.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-mapper.target new file mode 100644 index 0000000000..5e52f4cd53 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-mapper.target @@ -0,0 +1,4 @@ +[Unit] +Description=Phosphor Object Mapper +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-off@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-off@.target new file mode 100644 index 0000000000..c47b21e477 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-off@.target @@ -0,0 +1,7 @@ +[Unit] +Description=Power%i (Off) +Wants={SYSTEMD_DEFAULT_TARGET} +After=obmc-power-stop@%i.target +Conflicts=obmc-chassis-poweron@%i.target +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-on@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-on@.target new file mode 100644 index 0000000000..52135ffc9c --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-on@.target @@ -0,0 +1,7 @@ +[Unit] +Description=Power%i (On) +Wants={SYSTEMD_DEFAULT_TARGET} +After=obmc-power-start@%i.target +Conflicts=obmc-chassis-poweroff@%i.target +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-reset-on@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-reset-on@.target new file mode 100644 index 0000000000..d24d401bfa --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-reset-on@.target @@ -0,0 +1,5 @@ +[Unit] +Description=Chassis%i power on after reset +Conflicts=obmc-chassis-poweroff@%i.target +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-start-pre@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-start-pre@.target new file mode 100644 index 0000000000..1a1ea63191 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-start-pre@.target @@ -0,0 +1,7 @@ +[Unit] +Description=Power%i On (Pre) +Wants={SYSTEMD_DEFAULT_TARGET} +After={SYSTEMD_DEFAULT_TARGET} +Conflicts=obmc-chassis-poweroff@%i.target +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-start@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-start@.target new file mode 100644 index 0000000000..a977d5ad3c --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-start@.target @@ -0,0 +1,7 @@ +[Unit] +Description=Power%i On +After=obmc-power-start-pre@%i.target +Wants={SYSTEMD_DEFAULT_TARGET} +Conflicts=obmc-chassis-poweroff@%i.target +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-stop-pre@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-stop-pre@.target new file mode 100644 index 0000000000..50d5050bb5 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-stop-pre@.target @@ -0,0 +1,9 @@ +[Unit] +Description=Power%i Off (Pre) +Wants={SYSTEMD_DEFAULT_TARGET} +After={SYSTEMD_DEFAULT_TARGET} +Wants=obmc-host-stopped@%i.target +After=obmc-host-stopped@%i.target +Conflicts=obmc-chassis-poweron@%i.target +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-stop@.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-stop@.target new file mode 100644 index 0000000000..f0429d7865 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-power-stop@.target @@ -0,0 +1,9 @@ +[Unit] +Description=Power%i Off +Wants=obmc-power-stop-pre@%i.target +After=obmc-power-stop-pre@%i.target +Wants={SYSTEMD_DEFAULT_TARGET} +Conflicts=obmc-chassis-poweron@%i.target +Conflicts=fsi-disable.service +RefuseManualStart=yes +RefuseManualStop=yes diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-standby.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-standby.target new file mode 100644 index 0000000000..95044a4044 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-standby.target @@ -0,0 +1,9 @@ +[Unit] +Description=Phosphor System - Standby +Requires=multi-user.target +RefuseManualStart=yes +RefuseManualStop=yes +AllowIsolate=yes + +[Install] +WantedBy=multi-user.target diff --git a/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-webserver-pre.target b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-webserver-pre.target new file mode 100644 index 0000000000..ea5200c006 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/obmc-targets/obmc-webserver-pre.target @@ -0,0 +1,2 @@ +[Unit] +Description=Webserver (pre) diff --git a/meta-phosphor/recipes-core/systemd/systemd/0001-sd-bus-Don-t-automatically-add-ObjectManager.patch b/meta-phosphor/recipes-core/systemd/systemd/0001-sd-bus-Don-t-automatically-add-ObjectManager.patch new file mode 100644 index 0000000000..f8f5b08a96 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/systemd/0001-sd-bus-Don-t-automatically-add-ObjectManager.patch @@ -0,0 +1,56 @@ +From 44562e33655668033a8ee0a7a686671226da2110 Mon Sep 17 00:00:00 2001 +From: Brad Bishop +Date: Tue, 13 Mar 2018 15:34:30 -0400 +Subject: [PATCH] sd-bus: Don't automatically add ObjectManager + +Even though sdbus helps manage org.freedesktop.DBus.ObjectManager +it must still be explicitly enabled by a library client. + +As such do not automatically add ObjectManager to GetManagedObjects +method call responses or InterfacesAdded/Removed signals. Bus +service client applications can potentially react to the appearance +of ObjectManager in these messages and follow up with a method call +on the interface, which isn't actually implemented on the objects +within the subtree, below the manager. +--- + src/libsystemd/sd-bus/bus-objects.c | 10 ---------- + 1 file changed, 10 deletions(-) + +diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c +index 6e00255b2..59f698402 100644 +--- a/src/libsystemd/sd-bus/bus-objects.c ++++ b/src/libsystemd/sd-bus/bus-objects.c +@@ -1076,10 +1076,6 @@ static int object_manager_serialize_path( + if (r < 0) + return r; + +- r = sd_bus_message_append(reply, "{sa{sv}}", "org.freedesktop.DBus.ObjectManager", 0); +- if (r < 0) +- return r; +- + found_something = true; + } + +@@ -2302,9 +2298,6 @@ static int object_added_append_all(sd_bus *bus, sd_bus_message *m, const char *p + if (r < 0) + return r; + r = sd_bus_message_append(m, "{sa{sv}}", "org.freedesktop.DBus.Properties", 0); +- if (r < 0) +- return r; +- r = sd_bus_message_append(m, "{sa{sv}}", "org.freedesktop.DBus.ObjectManager", 0); + if (r < 0) + return r; + +@@ -2473,9 +2466,6 @@ static int object_removed_append_all(sd_bus *bus, sd_bus_message *m, const char + if (r < 0) + return r; + r = sd_bus_message_append(m, "s", "org.freedesktop.DBus.Properties"); +- if (r < 0) +- return r; +- r = sd_bus_message_append(m, "s", "org.freedesktop.DBus.ObjectManager"); + if (r < 0) + return r; + +-- +2.14.3 + diff --git a/meta-phosphor/recipes-core/systemd/systemd/0003-basic-Factor-out-string-checking-from-name_to_prefix.patch b/meta-phosphor/recipes-core/systemd/systemd/0003-basic-Factor-out-string-checking-from-name_to_prefix.patch new file mode 100644 index 0000000000..cd4dcad164 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/systemd/0003-basic-Factor-out-string-checking-from-name_to_prefix.patch @@ -0,0 +1,103 @@ +From 899173e241f781ad4dfb6b40e7c5f35104164435 Mon Sep 17 00:00:00 2001 +From: Brad Bishop +Date: Thu, 12 Jan 2017 09:56:54 -0500 +Subject: [PATCH 1/2] basic: Factor out string checking from + name_to_prefix/instance + +Add two new functions: string_to_prefix/instance that enable +prefix/instance extraction from a name before the name is +mangled. + +Signed-off-by: Brad Bishop +--- + src/basic/unit-name.c | 48 +++++++++++++++++++++++++++++++----------------- + 1 file changed, 31 insertions(+), 17 deletions(-) + +diff --git a/src/basic/unit-name.c b/src/basic/unit-name.c +index 0a6efa4..93c4838 100644 +--- a/src/basic/unit-name.c ++++ b/src/basic/unit-name.c +@@ -135,42 +135,46 @@ bool unit_suffix_is_valid(const char *s) { + return true; + } + +-int unit_name_to_prefix(const char *n, char **ret) { ++static int string_to_prefix(const char *s, char **ret) { + const char *p; +- char *s; ++ char *r; + +- assert(n); ++ assert(s); + assert(ret); + +- if (!unit_name_is_valid(n, UNIT_NAME_ANY)) +- return -EINVAL; +- +- p = strchr(n, '@'); ++ p = strchr(s, '@'); + if (!p) +- p = strrchr(n, '.'); ++ p = strrchr(s, '.'); + + assert_se(p); + +- s = strndup(n, p - n); +- if (!s) ++ r = strndup(s, p - s); ++ if (!r) + return -ENOMEM; + +- *ret = s; ++ *ret = r; + return 0; + } + +-int unit_name_to_instance(const char *n, char **instance) { +- const char *p, *d; +- char *i; +- ++int unit_name_to_prefix(const char *n, char **ret) { + assert(n); +- assert(instance); ++ assert(ret); + + if (!unit_name_is_valid(n, UNIT_NAME_ANY)) + return -EINVAL; + ++ return string_to_prefix(n, ret); ++} ++ ++static int string_to_instance(const char *s, char **instance) { ++ const char *p, *d; ++ char *i; ++ ++ assert(s); ++ assert(instance); ++ + /* Everything past the first @ and before the last . is the instance */ +- p = strchr(n, '@'); ++ p = strchr(s, '@'); + if (!p) { + *instance = NULL; + return 0; +@@ -190,6 +194,16 @@ int unit_name_to_instance(const char *n, char **instance) { + return 1; + } + ++int unit_name_to_instance(const char *n, char **instance) { ++ assert(n); ++ assert(instance); ++ ++ if (!unit_name_is_valid(n, UNIT_NAME_ANY)) ++ return -EINVAL; ++ ++ return string_to_instance(n, instance); ++} ++ + int unit_name_to_prefix_and_instance(const char *n, char **ret) { + const char *d; + char *s; +-- +1.8.3.1 + diff --git a/meta-phosphor/recipes-core/systemd/systemd/0004-basic-Use-path-escaping-when-mangling-path-instances.patch b/meta-phosphor/recipes-core/systemd/systemd/0004-basic-Use-path-escaping-when-mangling-path-instances.patch new file mode 100644 index 0000000000..fca28de59f --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/systemd/0004-basic-Use-path-escaping-when-mangling-path-instances.patch @@ -0,0 +1,69 @@ +From b7565b3f2d3b13c4ae5734407a2c3f27658c7b4b Mon Sep 17 00:00:00 2001 +From: Brad Bishop +Date: Thu, 12 Jan 2017 08:52:42 -0500 +Subject: [PATCH 2/2] basic: Use path escaping when mangling path instances + +Allow path instances with dashes in them to be unescaped +properly. + +Fixes systemd/systemd#5072 + +Signed-off-by: Brad Bishop +--- + src/basic/unit-name.c | 18 ++++++++++++++++++ + src/test/test-unit-name.c | 3 +++ + 2 files changed, 21 insertions(+) + +diff --git a/src/basic/unit-name.c b/src/basic/unit-name.c +index 93c4838..c91b0e7 100644 +--- a/src/basic/unit-name.c ++++ b/src/basic/unit-name.c +@@ -684,6 +684,8 @@ static char *do_escape_mangle(const char *f, UnitNameMangle allow_globs, char *t + * If @allow_globs, globs characters are preserved. Otherwise, they are escaped. + */ + int unit_name_mangle_with_suffix(const char *name, UnitNameMangle allow_globs, const char *suffix, char **ret) { ++ _cleanup_free_ char *instance = NULL; ++ _cleanup_free_ char *prefix = NULL; + char *s, *t; + int r; + +@@ -723,6 +725,22 @@ int unit_name_mangle_with_suffix(const char *name, UnitNameMangle allow_globs, c + return r; + } + ++ r = string_to_instance(name, &instance); ++ if(r < 0 && r != -EINVAL) ++ return r; ++ ++ if(instance && path_is_absolute(instance)) { ++ r = string_to_prefix(name, &prefix); ++ if(r < 0 && r != -EINVAL) ++ return r; ++ ++ r = unit_name_from_path_instance(prefix, instance, suffix, ret); ++ if (r >= 0) ++ return 1; ++ if (r != -EINVAL) ++ return r; ++ } ++ + s = new(char, strlen(name) * 4 + strlen(suffix) + 1); + if (!s) + return -ENOMEM; +diff --git a/src/test/test-unit-name.c b/src/test/test-unit-name.c +index 2fd83f3..f2cb047 100644 +--- a/src/test/test-unit-name.c ++++ b/src/test/test-unit-name.c +@@ -192,6 +192,9 @@ static void test_unit_name_mangle(void) { + test_unit_name_mangle_one(UNIT_NAME_GLOB, "foo", "foo.service", 1); + test_unit_name_mangle_one(UNIT_NAME_GLOB, "foo*", "foo*", 0); + test_unit_name_mangle_one(UNIT_NAME_GLOB, "ΓΌ*", "\\xc3\\xbc*", 1); ++ test_unit_name_mangle_one(UNIT_NAME_GLOB, "foo@/bar.service", "foo@bar.service", 1); ++ test_unit_name_mangle_one(UNIT_NAME_GLOB, "foo@/bar/baz-boo.service", "foo@bar-baz\\x2dboo.service", 1); ++ test_unit_name_mangle_one(UNIT_NAME_GLOB, "foo@bar/baz-boo.service", "foo@bar-baz-boo.service", 1); + } + + static int test_unit_printf(void) { +-- +1.8.3.1 + diff --git a/meta-phosphor/recipes-core/systemd/systemd/0005-dont-return-error-if-unable-to-create-network-namespace.patch b/meta-phosphor/recipes-core/systemd/systemd/0005-dont-return-error-if-unable-to-create-network-namespace.patch new file mode 100644 index 0000000000..d83bf72ef4 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/systemd/0005-dont-return-error-if-unable-to-create-network-namespace.patch @@ -0,0 +1,39 @@ +From 870b79559cd5841b3f680c914b4b2e770a9961cf Mon Sep 17 00:00:00 2001 +From: Ratan Gupta +Date: Thu, 20 Jul 2017 11:59:14 +0530 +Subject: [PATCH] Don't return the error if unable to create the network + namespace + +On systems where kernel is not configured with namespace support +then don't return error during setting up network namespace. + +Signed-off-by: Ratan Gupta +--- + src/core/namespace.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/core/namespace.c b/src/core/namespace.c +index 1195e9a..f30dacf 100644 +--- a/src/core/namespace.c ++++ b/src/core/namespace.c +@@ -986,7 +986,7 @@ int setup_netns(int netns_storage_socket[2]) { + /* Nothing stored yet, so let's create a new namespace */ + + if (unshare(CLONE_NEWNET) < 0) { +- r = -errno; ++ r = 0; + goto fail; + } + +@@ -994,7 +994,7 @@ int setup_netns(int netns_storage_socket[2]) { + + netns = open("/proc/self/ns/net", O_RDONLY|O_CLOEXEC|O_NOCTTY); + if (netns < 0) { +- r = -errno; ++ r = 0; + goto fail; + } + +-- +1.9.1 + diff --git a/meta-phosphor/recipes-core/systemd/systemd/default.network b/meta-phosphor/recipes-core/systemd/systemd/default.network new file mode 100644 index 0000000000..c75c3d60de --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/systemd/default.network @@ -0,0 +1,4 @@ +[Match] +Name=eth* +[Network] +DHCP=ipv4 diff --git a/meta-phosphor/recipes-core/systemd/systemd_%.bbappend b/meta-phosphor/recipes-core/systemd/systemd_%.bbappend new file mode 100644 index 0000000000..b403069a58 --- /dev/null +++ b/meta-phosphor/recipes-core/systemd/systemd_%.bbappend @@ -0,0 +1,22 @@ +FILES_${PN}-catalog-extralocales = \ + "${exec_prefix}/lib/systemd/catalog/*.*.catalog" +PACKAGES =+ "${PN}-catalog-extralocales" +PACKAGECONFIG_append = " networkd coredump" +PACKAGECONFIG_remove = "machined hibernate ldconfig binfmt backlight localed \ + quotacheck kdbus ima smack polkit logind bootchart utmp \ + manpages" +FILESEXTRAPATHS_append := "${THISDIR}/${PN}:" +SRC_URI += "file://default.network" +SRC_URI += "file://0001-sd-bus-Don-t-automatically-add-ObjectManager.patch" +SRC_URI += "file://0003-basic-Factor-out-string-checking-from-name_to_prefix.patch" +SRC_URI += "file://0004-basic-Use-path-escaping-when-mangling-path-instances.patch" +#TODO upstream the below patch via below issue +#https://github.com/openbmc/openbmc/issues/2016 +SRC_URI += "file://0005-dont-return-error-if-unable-to-create-network-namespace.patch" + +RRECOMMENDS_${PN} += "obmc-targets" +FILES_${PN} += "${systemd_unitdir}/network/default.network" + +do_install_append() { + install -m 644 ${WORKDIR}/default.network ${D}${systemd_unitdir}/network/ +} -- cgit v1.2.3