Skip to content

Commit

Permalink
Add support for rm-sync in xochitl package (#718)
Browse files Browse the repository at this point in the history
* Add support for rm-sync in xochitl package

Recent xochitl versions renamed the sync service and binary to rm-sync.
This updates the xochitl package to support both.

* Use file checks to determine rm-sync vs sync

* Update package/xochitl/package

Co-authored-by: Nathaniel van Diepen <[email protected]>

* Update to use new disable-unit method

* Update package

* Update package version

* Fix unit-exists

---------

Co-authored-by: Nathaniel van Diepen <[email protected]>
  • Loading branch information
timower and Eeems committed May 24, 2024
1 parent f60776d commit 30cc8c2
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ Description=reMarkable Document Sync without the xochitl.service dependency
After=dbus.socket
StartLimitIntervalSec=60
StartLimitBurst=4
Conflicts=sync.service
Conflicts=%i.service

[Service]
# Do NOT make this dbus, systemd will kill the service when it should be
# running otherwise.
Type=simple
BusName=no.remarkable.sync
ExecStart=/usr/bin/sync --service
ExecStart=/usr/bin/%i --service
Restart=on-failure
RestartForceExitStatus=SIGHUP SIGINT SIGTERM SIGPIPE

Expand Down
37 changes: 26 additions & 11 deletions package/xochitl/package
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
pkgnames=(xochitl)
pkgdesc="Read documents and take notes"
url=https://remarkable.com
pkgver=0.0.0-17
pkgver=0.0.0-18
timestamp=2022-11-07T20:19:57Z
section="readers"
maintainer="Mattéo Delabre <[email protected]>"
Expand All @@ -24,7 +24,7 @@ source=(
toltec-after-launcher.conf
toltec-wrapper.conf
env-readme
manual-sync.service
manual-sync@.service
)
sha256sums=(
SKIP
Expand Down Expand Up @@ -59,19 +59,30 @@ package() {
install -D -m 644 -t "$pkgdir"/etc/systemd/system/remarkable-reboot.service.d \
"$srcdir"/toltec-after-launcher.conf
install -D -m 644 -t "$pkgdir"/etc/systemd/system \
"$srcdir"/manual-sync.service
"$srcdir"/manual-sync@.service
}

configure() {
systemctl daemon-reload

# sync.service interferes with launchers
# we use manual-sync.service instead
if [[ "x$(systemctl is-enabled sync.service)" != "xmasked" ]]; then
# sync.service and rm-sync.service interfere with launchers
# we use manual-sync@.service instead
if [ -f /usr/bin/sync ] && ! is-masked sync.service; then
systemctl mask sync.service
fi
if ! is-active manual-sync.service; then
systemctl enable --now manual-sync.service

if [ -f /usr/bin/rm-sync ] && ! is-masked rm-sync.service; then
systemctl mask rm-sync.service
fi

# manual-sync.service has been changed to [email protected]
# Make sure to disable and stop the old version
disable-unit manual-sync.service

if [ -f /usr/bin/rm-sync ] && ! is-active [email protected]; then
systemctl enable --now [email protected]
elif [ -f /usr/bin/sync ] && ! is-active [email protected]; then
systemctl enable --now [email protected]
fi

if is-enabled xochitl.service && ! is-enabled launcher.service; then
Expand All @@ -83,14 +94,18 @@ configure() {
}

preremove() {
disable-unit manual-sync.service
disable-unit [email protected]
disable-unit [email protected]
}

postremove() {
systemctl daemon-reload

if [[ "x$(systemctl is-enabled sync.service)" == "xmasked" ]]; then
systemctl unmask sync.service 2> /dev/null
if [ -f /usr/bin/sync ] && is-masked sync.service; then
systemctl unmask sync.service
fi
if [ -f /usr/bin/rm-sync ] && is-masked rm-sync.service; then
systemctl unmask rm-sync.service
fi

if is-enabled xochitl.service && is-enabled launcher.service; then
Expand Down
13 changes: 11 additions & 2 deletions package/xochitl/xochitl
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,22 @@ for file in /opt/etc/xochitl.env.d/*.env; do
source "$file"
fi
done

# If for some reason, sync.service is no longer masked, re-mask it
# The package install should have handled this, but something may
# have changed it.
if [[ "x$(systemctl is-enabled sync.service)" != "xmasked" ]]; then
systemctl mask sync.service
fi
if ! systemctl is-active --quiet manual-sync.service; then
systemctl enable --now manual-sync.service

if [[ "x$(systemctl is-enabled rm-sync.service)" != "xmasked" ]]; then
systemctl mask rm-sync.service
fi

if [ -f /usr/bin/rm-sync ] && ! is-active [email protected]; then
systemctl enable --now [email protected]
elif [ -f /usr/bin/sync ] && ! is-active [email protected]; then
systemctl enable --now [email protected]
fi

exec -a /usr/bin/xochitl /usr/bin/xochitl "$@"
2 changes: 1 addition & 1 deletion scripts/install-lib
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ remove-bind-mount() {
#
# $1 - Full name of the systemd unit, e.g. "draft.service"
unit-exists() {
[ "$(systemctl --quiet list-unit-files "${1}" | /bin/grep -c "${1}" 2> /dev/null || echo "0")" -eq 1 ]
[ "$(systemctl --quiet list-unit-files "${1}" | /bin/grep -c "${1}" 2> /dev/null)" -eq 1 ]
}

# Stops and disabled a unit
Expand Down

0 comments on commit 30cc8c2

Please sign in to comment.