Apocrypha

pimsync-0.5.9jacksonchen666

# Copyright 2026 JacksonChen666
# Distributed under the terms of the GNU General Public License v2

# Autogenerated by pycargoebuild 0.15.1

EAPI=8

CRATES="
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]+wasi-snapshot-preview1
	[email protected]+wasi-0.2.4
	[email protected]+wasi-0.2.4
	[email protected]+wasi-0.3.0-rc-2026-01-06
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
	[email protected]
"

RUST_MIN_VER="1.88.0"
inherit cargo shell-completion systemd

DESCRIPTION="Synchronize calendars and contacts (vdirsyncer rewrite)"
HOMEPAGE="https://pimsync.whynothugo.nl/"
SRC_URI="
	https://git.sr.ht/~whynothugo/pimsync/archive/v${PV}.tar.gz -> ${P}.tar.gz
	${CARGO_CRATE_URIS}
"
# SRC_URI only strictly needed for any dev/commits in between releases builds.
# also must match what upstream is using at the exact commit
#https://git.sr.ht/~whynothugo/vstorage/archive/f77520288df1a2c439bbe578289aa8c3f2c2b972.tar.gz ->
#	vstorage-f77520288df1a2c439bbe578289aa8c3f2c2b972.tar.gz
#https://git.sr.ht/~whynothugo/libdav/archive/v0.10.4.tar.gz -> libdav-0.10.4.tar.gz
#https://git.sr.ht/~whynothugo/libjmap/archive/2fb17ed328d4d7692ffd64024f67e908c574c0a3.tar.gz ->
#	libjmap-2fb17ed328d4d7692ffd64024f67e908c574c0a3.tar.gz
S="${WORKDIR}/${PN}-v${PV}"

# upstream asks for this, build script requires this
export PIMSYNC_VERSION="${PVR}+jacksonchen666-gentoo"

# https://pimsync.whynothugo.nl/install.html#requirements
# make is a @system dependency
DEPEND="
	dev-db/sqlite
"
BDEPEND="
	doc? (
		app-text/mandoc
		dev-python/sphinx
	)
"

LICENSE="EUPL-1.2"
# Dependent crate licenses
LICENSE+=" Apache-2.0 BSD EUPL-1.2 ISC MIT MPL-2.0 Unicode-3.0 ZLIB"
SLOT="0"
KEYWORDS="~amd64"
IUSE="jmap doc lto"
# while there's no mirror for pimsync, there's probably gonna be a mirror on
# everything. crates.io is also slower than gentoo mirrors, so it's annoying
# to disable mirrors
#RESTRICT="mirror"

src_configure() {
	local myfeatures=(
		$(usev jmap)
	)
	cargo_src_configure
}

src_prepare() {
	default

	if use lto; then
		sed -E -i 's/lto = .*/lto = true/' Cargo.toml || die
	else
		sed -E -i 's/lto = .*/lto = false/' Cargo.toml || die
	fi
}

# only strictly needed for any dev/commits in between releases builds
#src_unpack() {
#	# this seems to unpack everything else too, even the other .tar.gz, even
#	# though that won't be used as it's unpacked into directories
#	# separately. that will be used in this ebuild
#	cargo_src_unpack
#
#	# due to 16fe0fc in upstream pimsync making the vstorage rust dependency
#	# a git submodule, the same must be emulated (or it could be reverted
#	# for whatever reason, but not sure about that).
#	#
#	# the submodules:
#	# ./vstorage
#	# ./vstorage/libdav
#	# ./vstorage/libjmap (optional dependency, but cargo refuses to work
#	#                     without it)
#	cd "$S"
#	rmdir vstorage || die
#	mv "${WORKDIR}/vstorage-"* "vstorage/" || die
#
#	cd "./vstorage"
#	rmdir libdav libjmap || die
#	mv "${WORKDIR}/libdav-"* "libdav" || die
#	mv "${WORKDIR}/libjmap-"* "libjmap" || die
#}

src_compile() {
	cargo_src_compile
	if use doc; then
		emake docs
		HTML_DOCS="${S}/docs/build/html/"
	fi
}

src_install() {
	cargo_src_install
	doman pimsync.1
	doman pimsync.conf.5
	doman pimsync-migration.7
	dozshcomp contrib/_pimsync

	exeinto /etc/user/init.d
	newexe contrib/pimsync.openrc pimsync
	systemd_douserunit "${FILESDIR}/pimsync.service"

	if use doc; then
		einstalldocs
	fi
}

src_test() {
	local CARGO_SKIP_TESTS=(
		sync_vdir_to_xandikos_via_unix_socket # uses external program
	)
	cargo_src_test
}

# XXX: test jmap functionality
# TODO: linux-raw-sys
# TODO: inotify-sys