# Copyright 2020-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 CRATES=" atty-0.2.14 autocfg-1.0.1 base64-0.13.0 bitflags-1.2.1 block-buffer-0.9.0 bumpalo-3.8.0 bytes-1.1.0 cc-1.0.72 cfg-if-1.0.0 chrono-0.4.19 colored-1.9.3 cpufeatures-0.2.1 data-encoding-2.3.2 der-oid-macro-0.5.0 der-parser-6.0.0 digest-0.9.0 form_urlencoded-1.0.1 futures-core-0.3.19 futures-macro-0.3.19 futures-task-0.3.19 futures-util-0.3.19 generic-array-0.14.4 half-1.7.1 hermit-abi-0.1.19 idna-0.2.3 instant-0.1.12 itoa-0.4.8 js-sys-0.3.55 lazy_static-1.4.0 libc-0.2.112 lock_api-0.4.5 log-0.4.14 matches-0.1.9 memchr-2.4.1 mime-0.3.16 minimal-lexical-0.2.1 mio-0.7.14 miow-0.3.7 new_mime_guess-3.0.2 nom-7.1.0 ntapi-0.3.6 num-bigint-0.4.3 num-integer-0.1.44 num-traits-0.2.14 num_cpus-1.13.1 oid-registry-0.2.0 once_cell-1.9.0 opaque-debug-0.3.0 parking_lot-0.11.2 parking_lot_core-0.8.5 percent-encoding-2.1.0 pin-project-lite-0.2.7 pin-utils-0.1.0 proc-macro2-1.0.34 quote-1.0.10 redox_syscall-0.2.10 ring-0.16.20 rusticata-macros-4.0.0 rustls-0.20.2 rustls-pemfile-0.2.1 scopeguard-1.1.0 sct-0.7.0 serde-1.0.132 serde_derive-1.0.132 sha2-0.9.8 signal-hook-registry-1.4.0 simple_logger-1.16.0 slab-0.4.5 smallvec-1.7.0 spin-0.5.2 syn-1.0.83 thiserror-1.0.30 thiserror-impl-1.0.30 time-0.3.5 time-macros-0.2.3 tinyvec-1.5.1 tinyvec_macros-0.1.0 tokio-1.15.0 tokio-macros-1.7.0 tokio-rustls-0.23.2 toml-0.5.8 typenum-1.14.0 unicase-2.6.0 unicode-bidi-0.3.7 unicode-normalization-0.1.19 unicode-xid-0.2.2 untrusted-0.7.1 url-2.2.2 version_check-0.9.3 wasm-bindgen-0.2.78 wasm-bindgen-backend-0.2.78 wasm-bindgen-macro-0.2.78 wasm-bindgen-macro-support-0.2.78 wasm-bindgen-shared-0.2.78 web-sys-0.3.55 webpki-0.22.0 winapi-0.3.9 winapi-i686-pc-windows-gnu-0.4.0 winapi-x86_64-pc-windows-gnu-0.4.0 x509-parser-0.12.0 " inherit cargo systemd DESCRIPTION="A gemini Server written in rust" HOMEPAGE="https://git.sr.ht/~int80h/gemserv" SRC_URI=" https://git.sr.ht/~int80h/gemserv/archive/v${PV}.tar.gz -> ${P}.tar.gz $(cargo_crate_uris ${CRATES}) " # openssl and SSLeay come from the “ring” crate. LICENSE="Apache-2.0 BSD ISC MIT MPL-2.0 openssl SSLeay ZLIB" SLOT="0" KEYWORDS="~amd64" RDEPEND=" acct-user/gemini " DEPEND="${RDEPEND}" S="${WORKDIR}/${PN}-v${PV}" # Rust packages ignore CFLAGS and LDFLAGS so let's silence the QA warnings. QA_FLAGS_IGNORED="usr/bin/gemserv" src_prepare() { # Fix paths in systemd unit. sed -i 's@/path/to/bin /path/to/config@'"${EPREFIX}"'/usr/bin/gemserv '"${EPREFIX}"'/etc/gemserv/config.toml@' \ init-scripts/gemserv.service || die # Fix paths in config. sed -Ei 's@/path/to/(key|cert)@/etc/gemserv/\1.pem@' config.toml || die sed -Ei 's@/path/to/serv@/var/gemini@' config.toml || die default } src_unpack() { unpack "${P}.tar.gz" cargo_src_unpack } src_install() { cargo_src_install einstalldocs diropts --group=gemini insinto etc/gemserv newins config.toml config.toml.example systemd_dounit init-scripts/gemserv.service newinitd "init-scripts/${PN}.openrc" "${PN}" } pkg_postinst() { einfo "You can generate yourself a TLS certificate and key with:" einfo "openssl req -x509 -newkey rsa:4096 -sha256 -days 3660 -nodes \\" einfo " -keyout /etc/gemserv/key.pem -out /etc/gemserv/cert.pem" }