diff --git a/extra-repos/systemd/dsme/0001-correct-paths.patch b/extra-repos/systemd/dsme/0001-correct-paths.patch new file mode 100644 index 000000000..b59b6b0d2 --- /dev/null +++ b/extra-repos/systemd/dsme/0001-correct-paths.patch @@ -0,0 +1,77 @@ +This scripts assumes locations that are not valid on our system. +Also, we do not have a shutdown command available + +This patch modifies the paths to our locations, and removes the shutdown command + +diff --git a/reboot-via-dsme.sh b/reboot-via-dsme.sh +index cc97de0..40aee0f 100644 +--- a/reboot-via-dsme.sh ++++ b/reboot-via-dsme.sh +@@ -11,9 +11,9 @@ + # commands from interactive shell, but do the shutdown/reboot + # via dsme. + # +-# If needed, the real systemd binaries (e.g. reboot) can still ++# If needed, the real binaries (e.g. reboot) can still + # be invoked by using the full path: +-# # /usr/sbin/reboot ++# # /sbin/reboot + # + # Or by ignoring the shell functions via command: + # # command reboot +@@ -21,51 +21,18 @@ + # Define shell functions for interactive shells only + case "$-" in *i*) ;; *) return ;; esac + +-# Replace simple poweroff/halt/reboot/shutdown invocations ++# Replace simple poweroff/halt/reboot invocations + # with equivalent dsmetool operations + + poweroff() + { +- [ "$#" -eq 0 ] && /usr/sbin/dsmetool --shutdown || /usr/sbin/poweroff "$@" ++ [ "$#" -eq 0 ] && /usr/sbin/dsmetool --shutdown || /sbin/poweroff "$@" + } + halt() + { +- [ "$#" -eq 0 ] && /usr/sbin/dsmetool --shutdown || /usr/sbin/halt "$@" ++ [ "$#" -eq 0 ] && /usr/sbin/dsmetool --shutdown || /sbin/halt "$@" + } + reboot() + { +- [ "$#" -eq 0 ] && /usr/sbin/dsmetool --reboot || /usr/sbin/reboot "$@" +-} +-shutdown() +-{ +- DSME_SHUTDOWN_MODE="--shutdown" +- DSME_SHUTDOWN_TIME="" +- DSME_SHUTDOWN_MESG="" +- DSME_SHUTDOWN_UNKN="" +- for f in "$@"; do +- case "$f" in +- -H|--halt|-P|--poweroff|-h) +- DSME_SHUTDOWN_MODE="--shutdown" +- ;; +- -r|--reboot) +- DSME_SHUTDOWN_MODE="--reboot" +- ;; +- -*) +- DSME_SHUTDOWN_UNKN="y" +- ;; +- *) +- if [ -z "$DSME_SHUTDOWN_TIME" ]; then +- DSME_SHUTDOWN_TIME="$f" +- else +- DSME_SHUTDOWN_MESG="$f" +- fi +- ;; +- esac +- done +- [ "${DSME_SHUTDOWN_TIME:-now}" = "now" ] && \ +- [ "$DSME_SHUTDOWN_MESG" = "" ] && \ +- [ "$DSME_SHUTDOWN_UNKN" = "" ] && \ +- /usr/sbin/dsmetool "$DSME_SHUTDOWN_MODE" || /usr/sbin/shutdown "$@" +- unset DSME_SHUTDOWN_MODE DSME_SHUTDOWN_TIME +- unset DSME_SHUTDOWN_MESG DSME_SHUTDOWN_UNKN ++ [ "$#" -eq 0 ] && /usr/sbin/dsmetool --reboot || /sbin/reboot "$@" + } diff --git a/extra-repos/systemd/dsme/0002-disable-werror.patch b/extra-repos/systemd/dsme/0002-disable-werror.patch new file mode 100644 index 000000000..f24ba9984 --- /dev/null +++ b/extra-repos/systemd/dsme/0002-disable-werror.patch @@ -0,0 +1,16 @@ +We don't care about warnings, we just want it to compile and work +Needed to compile on 32-bit arches + +diff --git a/configure.ac b/configure.ac +index ff15596..d502682 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -185,7 +185,7 @@ fi + + AC_SUBST(CPP_GENFLAGS, ["-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"]) + +-AC_SUBST(C_GENFLAGS, ["-pthread -g -std=c99 -Wall -Wwrite-strings -Wmissing-prototypes -Werror -Wshadow"]) ++AC_SUBST(C_GENFLAGS, ["-pthread -g -std=c99 -Wall -Wwrite-strings -Wmissing-prototypes -Wshadow"]) + AC_SUBST(C_OPTFLAGS, ["-O2"]) + AC_SUBST(C_DBGFLAGS, ["-g -DDEBUG"]) + diff --git a/extra-repos/systemd/dsme/APKBUILD b/extra-repos/systemd/dsme/APKBUILD new file mode 100644 index 000000000..7062935ac --- /dev/null +++ b/extra-repos/systemd/dsme/APKBUILD @@ -0,0 +1,88 @@ +# Forked from Alpine to enable systemd support + +maintainer="Bart Ribbers " +pkgname=dsme +pkgver=99990.84.4 +_pkgver=0.84.4 +pkgrel=0 +_commit_dbusglib="d42176ae4763e5288ef37ea314fe58387faf2005" +pkgdesc="Device State Management Entity" +url="https://github.com/sailfishos/dsme" +arch="all" +license="LGPL-2.1-only" +depends_dev=" + cryptsetup-dev + libiphb-dev + libngf-dev + " +makedepends="$depends_dev + autoconf + automake + libtool + systemd-dev + " +subpackages="$pkgname-dev $pkgname-openrc $pkgname-systemd" +source="https://github.com/sailfishos/dsme/archive/$_pkgver/dsme-$_pkgver.tar.gz + https://github.com/sailfishos-mirror/dbus-glib/archive/$_commit_dbusglib/dbus-glib-$_commit_dbusglib.tar.gz + 0001-correct-paths.patch + 0002-disable-werror.patch + dsme.initd + dsme.confd + " +options="!check" # Only test comes from dbus-glib and fails + +builddir="$srcdir/$pkgname-$_pkgver" + +prepare() { + default_prepare + + rmdir dbus-gmain + mv "$srcdir/dbus-glib-$_commit_dbusglib" dbus-gmain +} + +build() { + ./autogen.sh + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --exec_prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --disable-static \ + --disable-poweron-timer \ + --disable-upstart \ + --disable-validatorlistener \ + --enable-pwrkeymonitor \ + --enable-abootsettings \ + --enable-usewheel \ + --enable-systemd + make +} + +package() { + make DESTDIR="$pkgdir" install + install -Dm644 reboot-via-dsme.sh -t "$pkgdir"/etc/profile.d/ + + install -Dm755 "$srcdir"/dsme.initd "$pkgdir"/etc/init.d/dsme + install -Dm644 "$srcdir"/dsme.confd "$pkgdir"/etc/conf.d/dsme + + # Remove installed tests + rm -r "$pkgdir"/opt + + mkdir -p "$pkgdir"/usr/share/dbus-1/system.d/ + mv "$pkgdir"/etc/dbus-1/system.d/* "$pkgdir"/usr/share/dbus-1/system.d/ + + mkdir -p "$pkgdir"/usr/lib/systemd/system + sed -e "s|@LIBDIR@|/usr/lib|g" rpm/dsme.service.in > "$pkgdir"/usr/lib/systemd/system/dsme.service +} + +sha512sums=" +abda54469edb9470f4dd876758c9160d92bb4668083c9295f9e311f526797ffffc483a102f1d11fd55d6138f19cb05dc2bf29b20ebca9d7af6019ddac8ad1fb4 dsme-0.84.4.tar.gz +665cd6395ee0ea14086ba30188c62a72697b3f63484681e18fc7f54109c9aca162f2e33aa2fa4d45287c6c0b590e81ca310c143dac0232cd5887692cdaf51256 dbus-glib-d42176ae4763e5288ef37ea314fe58387faf2005.tar.gz +063ce9f2bd13fb2bd05ab9cd11544265eb5378562ee1fbed1cfa65d2345d092cfcff69f57589d3914005c31a00a58f3993cc13b59615ebe0f48458ba478d8772 0001-correct-paths.patch +2b18c6affaefa786358c07480968fd744370c48452c05e969cc8b26cba5307279ce51f782f42778fbd597bf29ec3d90b7b1ee4d182e8ab41675d1070be2f1954 0002-disable-werror.patch +786971b4a8f9cff0b66db658d9b8a2c4ceaaf1c5baa4b62346b9e0a2ab6f46ff3225a60678cb7ddd78e4e9e70fbe41432581e32ebccfa4174375dc79fea49a84 dsme.initd +b841282b96110ec59a7aa539db0737327b09549d55c78dc4b2c3b28b4a6ad1facf015b3175cb6d3a38f13e47aa6314ef3dc1514a4e60dd653a97409ec54ba706 dsme.confd +" diff --git a/extra-repos/systemd/dsme/dsme.confd b/extra-repos/systemd/dsme/dsme.confd new file mode 100644 index 000000000..9bd312c0c --- /dev/null +++ b/extra-repos/systemd/dsme/dsme.confd @@ -0,0 +1 @@ +supervisor=supervise-daemon diff --git a/extra-repos/systemd/dsme/dsme.initd b/extra-repos/systemd/dsme/dsme.initd new file mode 100644 index 000000000..3e086d36c --- /dev/null +++ b/extra-repos/systemd/dsme/dsme.initd @@ -0,0 +1,11 @@ +#!/sbin/openrc-run + +name="DSME" +description="Device State Management Entity" + +command=/usr/sbin/dsme +command_args="-- -p /usr/lib/dsme/startup.so" + +depend() { + need dbus +}