diff --git a/dev-libs/libsignal-ffi/Manifest b/dev-libs/libsignal-ffi/Manifest new file mode 100644 index 0000000..3cfcc99 --- /dev/null +++ b/dev-libs/libsignal-ffi/Manifest @@ -0,0 +1,5 @@ +AUX vendor-config.toml 726 BLAKE2B 01bf8d66c92199545172de2351ad6e447847a5b670e23a56d01d9268439101610df34613017cad1a9dc2c856f7eb44ed3a47f8f35f3a698e1e06d11f75491edb SHA512 913d8e163d3364796cf105eb714cb5182e7a271f3f9a24916415d9a2e61cfef61416913c57c3c63c84bbec8667e96e3de424334dd2af5476faf2289b167fa78d +DIST libsignal-ffi-0.72.1-vendor.tar.xz 36411120 BLAKE2B d100c512d03f0131c9575a5b10222eacbd6cda4977c3eca312548ac8ab4fe5673333c9a6999c40a776e9f330907466b3fa7fdc979a7e7b4dd1c159fce75eedfa SHA512 e911e684e4a33c8319ed219f038a74d214b2d07681f855575bf2f47230c5079144cb6d1566781302291b4c27b989b011518cf85f2da15abe53659e8713d32351 +DIST libsignal-ffi-0.72.1.gh.tar.gz 2077464 BLAKE2B 787648f746be965b9bef3e9eb519337d5d3c4f8bb329fc83f213efad709f18f406b6d017225edf4afd14ce0760fdd7da877d20af3913250377a622155b285254 SHA512 e7e08e2909080f34a6c9e65065cfd107e922415727dcdaf9b61aa0e9fb91c7906326c233b3bb7e26eb665e6b4a1b771e2af13e58d8f6ea0f79c39306c9a071cf +EBUILD libsignal-ffi-0.72.1.ebuild 2079 BLAKE2B c17325dc75171c8727f9dadce2583bab3d7928f965635863be0d913592b973010d3e13fbc82381c9920124f248c9998f78b289c8ae1803a7c47f65c1fef1c97b SHA512 e04857349b8a71d4722a6c7e6b46d3d22f367b6ffc2cfa7b5b58f0ed3de61f6b44ddbdd861f325b9130eecba6ce42330b45521a59054967995e858352ad7ac9f +MISC metadata.xml 465 BLAKE2B 7033371ed6085fb963ab1032513fcc47aca16cb13ca1126b2c63ca92b402286a7314751b2a54f2ea71a79d19687b0fc71a1ca83c6e0efc3ac0c9b2f7479b1c49 SHA512 6471ed95b2ef6f4b6857bd7443d650108025a5a5d1d338fd878166bedeeee0977591a6e52891032cfcaf2b8f0f50605ea5d4849268fa55349559c5eb9f5677ee diff --git a/dev-libs/libsignal-ffi/files/vendor-config.toml b/dev-libs/libsignal-ffi/files/vendor-config.toml new file mode 100644 index 0000000..29aafab --- /dev/null +++ b/dev-libs/libsignal-ffi/files/vendor-config.toml @@ -0,0 +1,20 @@ +[source.crates-io] +replace-with = "vendored-sources" + +[source."git+https://github.com/JesperAxelsson/rust-intmap?rev=e7edd6e8fb452506ca2570e91f62b14dc29a950c"] +git = "https://github.com/JesperAxelsson/rust-intmap" +rev = "e7edd6e8fb452506ca2570e91f62b14dc29a950c" +replace-with = "vendored-sources" + +[source."git+https://github.com/signalapp/boring?tag=signal-v4.15.0"] +git = "https://github.com/signalapp/boring" +tag = "signal-v4.15.0" +replace-with = "vendored-sources" + +[source."git+https://github.com/signalapp/curve25519-dalek?tag=signal-curve25519-4.1.3"] +git = "https://github.com/signalapp/curve25519-dalek" +tag = "signal-curve25519-4.1.3" +replace-with = "vendored-sources" + +[source.vendored-sources] +directory = "vendor" \ No newline at end of file diff --git a/dev-libs/libsignal-ffi/libsignal-ffi-0.72.1.ebuild b/dev-libs/libsignal-ffi/libsignal-ffi-0.72.1.ebuild new file mode 100644 index 0000000..596a15f --- /dev/null +++ b/dev-libs/libsignal-ffi/libsignal-ffi-0.72.1.ebuild @@ -0,0 +1,68 @@ +# Copyright 2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# Autogenerated by pycargoebuild 0.15.0 + +EAPI=8 + +LLVM_COMPAT=( {18..19} ) +RUST_NEEDS_LLVM=1 + +CRATES=" +" + +declare -A GIT_CRATES=( + [boring-sys]='https://github.com/signalapp/boring;bb42da53b3900aea1936d41decf9403f25c4259c;boring-%commit%/boring-sys' + [boring]='https://github.com/signalapp/boring;bb42da53b3900aea1936d41decf9403f25c4259c;boring-%commit%/boring' + [curve25519-dalek-derive]='https://github.com/signalapp/curve25519-dalek;7c6d34756355a3566a704da84dce7b1c039a6572;curve25519-dalek-%commit%/curve25519-dalek-derive' + [curve25519-dalek]='https://github.com/signalapp/curve25519-dalek;7c6d34756355a3566a704da84dce7b1c039a6572;curve25519-dalek-%commit%/curve25519-dalek' + [tokio-boring]='https://github.com/signalapp/boring;bb42da53b3900aea1936d41decf9403f25c4259c;boring-%commit%/tokio-boring' +) + +inherit llvm-r1 cargo + +DESCRIPTION="A C ABI library which exposes Signal protocol logic" +HOMEPAGE="https://github.com/signalapp/libsignal" +SRC_URI=" + https://github.com/signalapp/libsignal/archive/v${PV}.tar.gz -> ${P}.gh.tar.gz + ${P}-vendor.tar.xz +" +S="${WORKDIR}/libsignal-${PV}/rust/bridge/ffi" +if [[ ${PKGBUMPING} != ${PVR} ]]; then + SRC_URI+=" +" +fi + +LICENSE="AGPL-3" +# Dependent crate licenses +LICENSE+=" + AGPL-3 Apache-2.0 BSD-2 BSD GPL-3+ ISC MIT MPL-2.0 Unicode-3.0 +" +SLOT="0" +KEYWORDS="~amd64" + +BDEPEND=" + dev-libs/protobuf + $(llvm_gen_dep 'llvm-core/clang:${LLVM_SLOT}') +" + +pkg_setup() { + llvm-r1_pkg_setup + rust_pkg_setup +} + +src_unpack() { + default + cargo_gen_config + ln -s "${WORKDIR}/vendor/" "${WORKDIR}/libsignal-${PV}/vendor" || die + sed -i "${ECARGO_HOME}/config.toml" \ + -e '/source.crates-io/d' \ + -e '/replace-with = "gentoo"/d' \ + -e '/local-registry = "\/nonexistent"/d' \ + || die + cat "${FILESDIR}/vendor-config.toml" >> "${ECARGO_HOME}/config.toml" || die +} + +src_install() { + dolib.a "${WORKDIR}/${P/-ffi/}/$(cargo_target_dir)/${PN/-/_}.a" +} diff --git a/dev-libs/libsignal-ffi/metadata.xml b/dev-libs/libsignal-ffi/metadata.xml new file mode 100644 index 0000000..96e7494 --- /dev/null +++ b/dev-libs/libsignal-ffi/metadata.xml @@ -0,0 +1,13 @@ + + + + + Julien Roy + julien@jroy.ca + + + https://github.com/signalapp/libsignal/issues + https://github.com/signalapp/libsignal/releases + signalapp/libsignal + + diff --git a/metadata/md5-cache/dev-libs/libsignal-ffi-0.72.1 b/metadata/md5-cache/dev-libs/libsignal-ffi-0.72.1 new file mode 100644 index 0000000..455eb61 --- /dev/null +++ b/metadata/md5-cache/dev-libs/libsignal-ffi-0.72.1 @@ -0,0 +1,14 @@ +BDEPEND=dev-libs/protobuf llvm_slot_18? ( llvm-core/clang:18 ) llvm_slot_19? ( llvm-core/clang:19 ) llvm_slot_18? ( || ( dev-lang/rust-bin:1.81.0[llvm_slot_18] dev-lang/rust:1.81.0[llvm_slot_18] dev-lang/rust-bin:1.80.1[llvm_slot_18] dev-lang/rust:1.80.1[llvm_slot_18] dev-lang/rust-bin:1.79.0[llvm_slot_18] dev-lang/rust:1.79.0[llvm_slot_18] dev-lang/rust-bin:1.78.0[llvm_slot_18] dev-lang/rust:1.78.0[llvm_slot_18] ) ) llvm_slot_19? ( || ( dev-lang/rust-bin:1.86.0[llvm_slot_19] dev-lang/rust:1.86.0[llvm_slot_19] dev-lang/rust-bin:1.85.1[llvm_slot_19] dev-lang/rust:1.85.1[llvm_slot_19] dev-lang/rust-bin:1.85.0[llvm_slot_19] dev-lang/rust:1.85.0[llvm_slot_19] dev-lang/rust-bin:1.84.1[llvm_slot_19] dev-lang/rust:1.84.1[llvm_slot_19] dev-lang/rust-bin:1.84.0[llvm_slot_19] dev-lang/rust:1.84.0[llvm_slot_19] dev-lang/rust-bin:1.83.0[llvm_slot_19] dev-lang/rust:1.83.0[llvm_slot_19] dev-lang/rust-bin:1.82.0[llvm_slot_19] dev-lang/rust:1.82.0[llvm_slot_19] ) ) +DEFINED_PHASES=compile configure install setup test unpack +DESCRIPTION=A C ABI library which exposes Signal protocol logic +EAPI=8 +HOMEPAGE=https://github.com/signalapp/libsignal +INHERIT=llvm-r1 cargo +IUSE=+llvm_slot_19 llvm_slot_18 debug +KEYWORDS=~amd64 +LICENSE=AGPL-3 AGPL-3 Apache-2.0 BSD-2 BSD GPL-3+ ISC MIT MPL-2.0 Unicode-3.0 +REQUIRED_USE=^^ ( llvm_slot_18 llvm_slot_19 ) +SLOT=0 +SRC_URI=https://github.com/signalapp/libsignal/archive/v0.72.1.tar.gz -> libsignal-ffi-0.72.1.gh.tar.gz libsignal-ffi-0.72.1-vendor.tar.xz +_eclasses_=llvm-utils 64536677f4b4365e25e9b739163bed58 llvm-r1 0bd586d3786517cd63802a520b404dda toolchain-funcs f9d71a6efe9d083aec750dd13968e169 flag-o-matic b892042b2667b8ac69ec8a2571dc290a multiprocessing 1e32df7deee68372153dca65f4a7c21f rust 205f396579fe93ffb2775ef7e36a1b20 rust-toolchain 76468983281b0a7fc167ca224f84ecfd cargo 5da01b45ec362e78575502b4fb82773a +_md5_=b2b2721a42d2dfc987d24e07798b0e4d diff --git a/metadata/md5-cache/net-im/mautrix-signal-25.10 b/metadata/md5-cache/net-im/mautrix-signal-25.10 new file mode 100644 index 0000000..0912509 --- /dev/null +++ b/metadata/md5-cache/net-im/mautrix-signal-25.10 @@ -0,0 +1,14 @@ +BDEPEND=>=dev-lang/go-1.20:= app-arch/unzip virtual/pkgconfig +DEFINED_PHASES=compile config install postinst setup test unpack +DEPEND=acct-user/mautrix-signal dev-libs/olm virtual/zlib:= ~dev-libs/libsignal-ffi-0.84.0 +DESCRIPTION=Matrix-Signal puppeting bridge +EAPI=8 +HOMEPAGE=https://github.com/mautrix/signal +INHERIT=go-module systemd toolchain-funcs +KEYWORDS=~amd64 +LICENSE=AGPL-3+ AGPL-3 Apache-2.0 BSD GPL-3+ ISC MIT MPL-2.0 public-domain +RDEPEND=acct-user/mautrix-signal dev-libs/olm virtual/zlib:= +SLOT=0 +SRC_URI=https://github.com/mautrix/signal/archive/refs/tags/v0.2510.0.tar.gz -> mautrix-signal-25.10.tar.gz https://github.com/gentoo-golang-dist/signal/releases/download/v0.2510.0/signal-0.2510.0-vendor.tar.xz +_eclasses_=multiprocessing 1e32df7deee68372153dca65f4a7c21f toolchain-funcs 30214924c0c3b92ec7dbf24fc70d60d3 flag-o-matic a7afe42e95fb46ce9691605acfb24672 go-env 0e2babf96e7d0b045fc07ad199eb2399 go-module d96f2a2fd6d8fbad6d94516bf238f885 systemd a964c0cbe818b5729da1dbfcee5be861 +_md5_=10be7987fbc6b86922504ed6f059ff3f diff --git a/net-im/mautrix-signal/Manifest b/net-im/mautrix-signal/Manifest new file mode 100644 index 0000000..de29af1 --- /dev/null +++ b/net-im/mautrix-signal/Manifest @@ -0,0 +1,7 @@ +AUX mautrix-signal.confd 133 BLAKE2B a232ec04a3749aaace59c1d78d55c1b6f20dccf985aa9670103001fadff4b72e30e73477235449e3b69942b86bb279a155aa6f1bf3e1ed8756876a7a49a68f81 SHA512 3ce719ab7a309399e75c03bef0f6561472f80386b2186c1baf1eb70fef4f02275b6f4bd73d939e952fc981a92d96f4ca017045542024567923f380934e3c4d7b +AUX mautrix-signal.initd 702 BLAKE2B ee6ca26f46db90054078df666ddfc9b3b351a79ed053bd5eb38476cd4ca22cc117214fe1ab1fdbc1721252c25e667608e7a4e60ad40fc5d2f3a662887443bdd2 SHA512 73fc46a0bcd6d7398e2aa30e103793c9a0e3f24dc0db1396b28982e77544e8621ff37c12ed221579d44f84478b803126b4a2386d2bfa460730e14b3b5c73df05 +AUX mautrix-signal.initd-r1 525 BLAKE2B e29f39777296b867d972d4f4e9b8015c0846eb9676bdd3e49145d8e62c80109a6e3a3eb6cf528772e0220cfdcb802af47c6b20c2e7a794b3ea1e2213c9559daa SHA512 209967f9dfe2ec5c425bbb7606c015be17bbc98aaba94add823a26575bde53db3bfc7eca0f8d662bbb2e26d67a973ac0b13145f4c65b5c61115a8ef935832ce2 +AUX mautrix-signal.service 285 BLAKE2B 169ec40950631a2c572a814becb7cb9def22ec343fa0703a544a9c02d0777ac292698cfb2b125a90130680e2c4bd26745d2c48c448191b213bb36dba67ffa553 SHA512 bf7e63cadf37eef583f57aeb0c16fc1bb21877b102dcb79410b29f512887c028d6cdf4834fd9ba2d85e52fc6ac1a484f4cd6a27ef5bba3aece7e452d3cb22457 +DIST mautrix-signal-25.10.tar.gz 381872 BLAKE2B 706f8fd175bbc1e73ea41b7f4cb5d55c09a5d339d9acf7e27da21104710c4342aca6e421ab6827de35650c8bf877c46f14dc93e8b58fbd124432c26315d738e2 SHA512 85abb9715f0239ce647ce7a7f9f9332a1060e2fb95ed10a33399f31728df29864e207c2f8f1eacdf446125db67ba0d0e01fc5d762bbda53adbc39ab1d0eb08ac +DIST signal-0.2510.0-vendor.tar.xz 3697400 BLAKE2B 7d6a9f36d7707f5e93318c32f2a98e50ca6d63d0c728f3c38adfdb456146df03a5e22f3a3bcfd94e8631e20accd30e7931d0cda3a6175bb9075db6777e3749c1 SHA512 4112a3d3fe67c3ddcc60a9580ff92f2008739ff2cc1ed37a8a64071e782d4030b407df4f1e9dec514972060de68033c19be6c4fe0fd781fd25b16510ffc8f0ee +EBUILD mautrix-signal-25.10.ebuild 2749 BLAKE2B c1f8a6fc4c600e280ccc95a8a83ad2cdd9739333ef0f68f7e007a6a225c8840e4773e4690525ea71bddc4ad224f6f97b6218f734b72ec6c7783262c0b2ef239a SHA512 022d02eb8752291140481c80222845f19ba9a38db652a028764c3747327a638be3764ef3111dcf756375bfd4bd9107a898bb646d08b217ade9f5e301d7aee17c diff --git a/net-im/mautrix-signal/files/mautrix-signal.confd b/net-im/mautrix-signal/files/mautrix-signal.confd new file mode 100644 index 0000000..48d3309 --- /dev/null +++ b/net-im/mautrix-signal/files/mautrix-signal.confd @@ -0,0 +1,5 @@ +# Configuration file +#MAUTRIX_SIGNAL_CONFIG="/etc/mautrix/mautrix_signal.yaml" + +# Extra command-line options +#MAUTRIX_SIGNAL_OPTS="" diff --git a/net-im/mautrix-signal/files/mautrix-signal.initd b/net-im/mautrix-signal/files/mautrix-signal.initd new file mode 100644 index 0000000..c59dbd0 --- /dev/null +++ b/net-im/mautrix-signal/files/mautrix-signal.initd @@ -0,0 +1,25 @@ +#!/sbin/openrc-run +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +name="mautrix-signal daemon" +description="A Matrix-Signal puppeting bridge" +module="mautrix_signal" + +pidfile="/run/${RC_SVCNAME}.pid" +command="/usr/bin/mautrix-signal" +command_args="-c /etc/mautrix/${module}.yaml -r /var/lib/mautrix/signal/registration.yaml" +command_background=true +command_user="mautrix-signal:mautrix" + +output_log="/var/log/mautrix/signal/daemon.log" +error_log="/var/log/mautrix/signal/daemon.log" + +depend() { + need net +} + +start_pre() { + checkpath -d -m 0755 -o "$command_user" /var/lib/mautrix/signal + checkpath -f -m 0644 -o "$command_user" "$output_log" +} diff --git a/net-im/mautrix-signal/files/mautrix-signal.initd-r1 b/net-im/mautrix-signal/files/mautrix-signal.initd-r1 new file mode 100644 index 0000000..62737c7 --- /dev/null +++ b/net-im/mautrix-signal/files/mautrix-signal.initd-r1 @@ -0,0 +1,21 @@ +#!/sbin/openrc-run +# shellcheck shell=sh +# +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +description="Matrix-Signal puppeting bridge" +supervisor="supervise-daemon" +command="/usr/bin/mautrix-signal" +command_args="-c ${MAUTRIX_SIGNAL_CONFIG} ${MAUTRIX_SIGNAL_OPTS}" +command_user="mautrix-signal:mautrix" +pidfile="/run/mautrix-signal/${RC_SVCNAME}.pid" + +depend() { + need net + use dns postgresql +} + +start_pre() { + checkpath -d -o "${command_user}" /run/mautrix-signal +} diff --git a/net-im/mautrix-signal/files/mautrix-signal.service b/net-im/mautrix-signal/files/mautrix-signal.service new file mode 100644 index 0000000..2f5484f --- /dev/null +++ b/net-im/mautrix-signal/files/mautrix-signal.service @@ -0,0 +1,12 @@ +[Unit] +Description=A Matrix-Signal puppeting bridge +After=network.target + +[Service] +User=mautrix-signal +Group=mautrix +Restart=always +ExecStart=/usr/bin/mautrix-signal -c /etc/mautrix/mautrix_signal.yaml -r /var/lib/mautrix/signal/registration.yaml + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/net-im/mautrix-signal/mautrix-signal-25.10.ebuild b/net-im/mautrix-signal/mautrix-signal-25.10.ebuild new file mode 100644 index 0000000..3c58d6a --- /dev/null +++ b/net-im/mautrix-signal/mautrix-signal-25.10.ebuild @@ -0,0 +1,95 @@ +# Copyright 2022-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit go-module systemd toolchain-funcs + +MY_PV="0.$(ver_rs 1-2 '').0" +DESCRIPTION="Matrix-Signal puppeting bridge" +HOMEPAGE="https://github.com/mautrix/signal" +SRC_URI="https://github.com/mautrix/signal/archive/refs/tags/v${MY_PV}.tar.gz -> ${P}.tar.gz + https://github.com/gentoo-golang-dist/signal/releases/download/v${MY_PV}/signal-${MY_PV}-vendor.tar.xz" +S="${WORKDIR}/signal-${MY_PV}" + +LICENSE="AGPL-3+" +# Go dependency licenses +LICENSE+=" AGPL-3 Apache-2.0 BSD GPL-3+ ISC MIT MPL-2.0 public-domain" +SLOT="0" +KEYWORDS="~amd64" + +RDEPEND=" + acct-user/mautrix-signal + dev-libs/olm + virtual/zlib:= +" +DEPEND="${RDEPEND} + ~dev-libs/libsignal-ffi-0.84.0 +" + +DOCS=( {CHANGELOG,README,ROADMAP}.md ) + +pkg_setup() { + [[ ${MERGE_TYPE} == "binary" ]] && return 0 + + # https://github.com/mautrix/signal/issues/595 + tc-is-clang && die "Clang compiler is not supported" +} + +src_compile() { + local MAUTRIX_VERSION=$(awk '/maunium\.net\/go\/mautrix / { print $2 }' go.mod) + local BUILD_TIME=$(date -Iseconds) + local go_ldflags=( + -X "main.Tag=v${MY_PV}" + -X "main.BuildTime=${BUILD_TIME}" + -X "maunium.net/go/mautrix.GoModVersion=${MAUTRIX_VERSION}" + ) + + ego build -ldflags "${go_ldflags[*]}" ./cmd/mautrix-signal +} + +src_install() { + dobin mautrix-signal + einstalldocs + + newinitd "${FILESDIR}"/mautrix-signal.initd-r1 mautrix-signal + newconfd "${FILESDIR}"/mautrix-signal.confd mautrix-signal + systemd_dounit "${FILESDIR}"/mautrix-signal.service + + local dir + for dir in /var/log/mautrix /etc/mautrix; do + keepdir "${dir}" + fowners -R root:mautrix "${dir}" + fperms 770 "${dir}" + done + + keepdir /var/lib/mautrix/signal + fowners -R mautrix-signal:mautrix /var/lib/mautrix/signal +} + +src_test() { + ego test -vet=off ./... +} + +pkg_postinst() { + einfo + elog "Before you can use mautrix-signal, you need to configure it correctly." + elog "To generate the configuration file, use the following command:" + elog " # runuser -u mautrix-signal -g mautrix -- mautrix-signal -c /etc/mautrix/mautrix_signal.yaml -e" + elog + elog "Configure the /etc/mautrix/mautrix_signal.yaml file according to your" + elog "homeserver. When done, run the following command:" + elog " # emerge --config ${CATEGORY}/${PN}" + elog + elog "Then, you need to register the bridge with your homeserver." + elog "Refer your homeserver's documentation for instructions." + elog "The registration file is located at /var/lib/mautrix/signal/registration.yaml" + elog + elog "Finally, you may start the mautrix-signal daemon." + einfo +} + +pkg_config() { + runuser -u mautrix-signal -g mautrix -- \ + mautrix-signal -c /etc/mautrix/mautrix_signal.yaml -g -r /var/lib/mautrix/signal/registration.yaml +}