diff --git a/net-misc/gmid/Manifest b/net-misc/gmid/Manifest index 4f673292d4..52d03e95c3 100644 --- a/net-misc/gmid/Manifest +++ b/net-misc/gmid/Manifest @@ -1,3 +1,4 @@ -DIST gmid-1.7.4.tar.gz 81988 BLAKE2B 4dc2ec0e89aeb0b2c627927f35a9996f3d91c91b0266f351c6b64f1ba52e0f425cc48add1bdee6f5434f2a486ddd76db8c9e574ac9cbaea3e2a34b16bf0ee9ad SHA512 3dd2cae5597d1b88eec8f2f3b8e60ccc3e2034cbaa30382d982cf0435f1a243643d40c5d00aa7d1c7abae9c9f6751b38f7d6741ec08f7ee280bc2db99263d19e DIST gmid-1.7.5.sha.sig 708 BLAKE2B ae5c1ee80e7994c9d8b1b630c01b9dea121f08d2d8efd2a6ccfa129badaa680da037c2a0b955497ba81224e0faf2ca95a9ce11076aadf4012321648bdd5cde81 SHA512 b2ca1974188199eae71aab4d7cc740b7101adc7b3ebe36aa5690aa638e03e028f6f8cd6798fda2586543e2ca71981d95d0921fa58775dd8d66898650d9299578 DIST gmid-1.7.5.tar.gz 82100 BLAKE2B 15d5ff725019193dd0394ad7d0f641d036064355118c37980c899b8c84b226eff2ebd5c8f0b17d5575e44f26d93b9492ef48efac6d7d93c4f1972dfb965e4e3d SHA512 eb7951f93746fe133291ac4136837b07d768997241fe913650ecd75d98153479e417c34a4e687ca30dc08f904dcc738d16834910ca21b100e3a220d7ed715507 +DIST gmid-1.8.sha.sig 888 BLAKE2B 283d9996dc279591bc6537fd3be5666b55ab8e81ae0284d7de867e7d34560cf51502fcd26126f294600785d57f94ac316b545c3bb3788d0db57397ccfebb0524 SHA512 dbb08dbd890c869e09dc9bd528efd6912fb40e8f18bf07601d64c935155b51e7ec8d7722c68b816262f5df78babd0e18e1f98b9df4835960a519595aed744e1d +DIST gmid-1.8.tar.gz 141057 BLAKE2B 299514df69c35ea0b5ac8e83261025a3a34a419998e4c3833c4f0f8abff6e526222b3c5b0ae69dffd5b2605efe9c0c27ef870fc8eee34f6059095ca7f18706a6 SHA512 ba1c755909004b8399a2323be6a5325fe5a712c0c845630cadabd83d1fb9dd636b4ac077df5b644c04b4701f1b8a92ca02126dcb5c82019ce5a46beefdc42dd5 diff --git a/net-misc/gmid/files/gmid.service b/net-misc/gmid/files/gmid.service new file mode 100644 index 0000000000..9c5d14cc84 --- /dev/null +++ b/net-misc/gmid/files/gmid.service @@ -0,0 +1,21 @@ +[Unit] +Description=The gmid Gemini server +Documentation=https://gmid.omarpolo.com/ +After=network-online.target syslog.target +Wants=network-online.target + +[Service] +Type=simple +User=gemini +Group=gemini +ExecStart=/usr/bin/gmid -f -c /etc/gmid.conf +ExecStop=/bin/kill -TERM $MAINPID +ExecReload=/bin/kill -HUP $MAINPID +Restart=on-failure +RestartSec=30 +StandardOutput=journal +StandardError=inherit +SyslogIdentifier=gmid + +[Install] +WantedBy=multi-user.target diff --git a/net-misc/gmid/gmid-1.7.4.ebuild b/net-misc/gmid/gmid-1.8.ebuild similarity index 66% rename from net-misc/gmid/gmid-1.7.4.ebuild rename to net-misc/gmid/gmid-1.8.ebuild index 10cb49b3a1..7b929d7cc5 100644 --- a/net-misc/gmid/gmid-1.7.4.ebuild +++ b/net-misc/gmid/gmid-1.8.ebuild @@ -1,11 +1,12 @@ -# Copyright 1999-2021 Gentoo Authors +# Copyright 1999-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 SSL_DAYS=36500 SSL_CERT_MANDATORY=1 -inherit ssl-cert systemd toolchain-funcs +VERIFY_SIG_METHOD="signify" +inherit ssl-cert systemd toolchain-funcs verify-sig DESCRIPTION="Simple and secure Gemini server" HOMEPAGE="https://gmid.omarpolo.com" @@ -14,8 +15,9 @@ if [[ ${PV} == 9999 ]]; then EGIT_REPO_URI="https://git.omarpolo.com/${PN} https://github.com/omar-polo/${PN}.git" inherit git-r3 else - SRC_URI="https://git.omarpolo.com/${PN}/snapshot/${P}.tar.gz" - KEYWORDS="~amd64 ~arm ~arm64 ~x86" + SRC_URI="https://github.com/omar-polo/${PN}/releases/download/${PV}/${P}.tar.gz + verify-sig? ( https://github.com/omar-polo/${PN}/releases/download/${PV}/SHA256.sig -> ${P}.sha.sig )" + KEYWORDS="~amd64 ~x86" fi LICENSE="BSD ISC MIT" @@ -28,24 +30,35 @@ DEPEND=" acct-user/gemini dev-libs/imsg-compat dev-libs/libevent:= - dev-libs/libretls + dev-libs/libretls:= dev-libs/openssl:= " +RDEPEND="${DEPEND}" BDEPEND=" virtual/pkgconfig virtual/yacc " -RDEPEND="${DEPEND}" +if [[ ${PV} != 9999 ]]; then + BDEPEND+="verify-sig? ( sec-keys/signify-keys-gmid:$(ver_cut 1-2) )" +fi + +VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}/usr/share/signify-keys/${PN}-$(ver_cut 1-2).pub" DOCS=( README.md ChangeLog contrib/README ) -src_prepare() { - default - - sed \ - -e "s:/usr/local/bin/gmid:/usr/bin/gmid:" \ - -e "s:/etc/gmid.conf:/etc/gmid/gmid.conf:" \ - -i contrib/gmid.service || die +src_unpack() { + if [[ ${PV} == 9999 ]]; then + git-r3_src_unpack + else + if use verify-sig; then + # Too many levels of symbolic links + cp "${DISTDIR}"/${P}.{sha.sig,tar.gz} "${WORKDIR}" || die + cd "${WORKDIR}" || die + verify-sig_verify_signed_checksums \ + ${P}.sha.sig sha256 ${P}.tar.gz + fi + default + fi } src_configure() { @@ -66,13 +79,6 @@ src_configure() { fi } -src_compile() { - emake gmid - if use test ; then - emake -C regress gg data puny-test fcgi-test - fi -} - src_test() { emake regress } @@ -86,7 +92,7 @@ src_install() { insinto /usr/share/vim/vimfiles doins -r contrib/vim/* - systemd_dounit contrib/gmid.service + systemd_dounit "${FILESDIR}"/gmid.service newinitd "${FILESDIR}"/gmid.initd gmid newconfd "${FILESDIR}"/gmid.confd gmid diff --git a/net-misc/gmid/gmid-9999.ebuild b/net-misc/gmid/gmid-9999.ebuild new file mode 100644 index 0000000000..7b929d7cc5 --- /dev/null +++ b/net-misc/gmid/gmid-9999.ebuild @@ -0,0 +1,112 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +SSL_DAYS=36500 +SSL_CERT_MANDATORY=1 +VERIFY_SIG_METHOD="signify" +inherit ssl-cert systemd toolchain-funcs verify-sig + +DESCRIPTION="Simple and secure Gemini server" +HOMEPAGE="https://gmid.omarpolo.com" + +if [[ ${PV} == 9999 ]]; then + EGIT_REPO_URI="https://git.omarpolo.com/${PN} https://github.com/omar-polo/${PN}.git" + inherit git-r3 +else + SRC_URI="https://github.com/omar-polo/${PN}/releases/download/${PV}/${P}.tar.gz + verify-sig? ( https://github.com/omar-polo/${PN}/releases/download/${PV}/SHA256.sig -> ${P}.sha.sig )" + KEYWORDS="~amd64 ~x86" +fi + +LICENSE="BSD ISC MIT" +SLOT="0" +IUSE="seccomp test" +RESTRICT="!test? ( test )" + +DEPEND=" + !elibc_Darwin? ( dev-libs/libbsd ) + acct-user/gemini + dev-libs/imsg-compat + dev-libs/libevent:= + dev-libs/libretls:= + dev-libs/openssl:= +" +RDEPEND="${DEPEND}" +BDEPEND=" + virtual/pkgconfig + virtual/yacc +" +if [[ ${PV} != 9999 ]]; then + BDEPEND+="verify-sig? ( sec-keys/signify-keys-gmid:$(ver_cut 1-2) )" +fi + +VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}/usr/share/signify-keys/${PN}-$(ver_cut 1-2).pub" + +DOCS=( README.md ChangeLog contrib/README ) + +src_unpack() { + if [[ ${PV} == 9999 ]]; then + git-r3_src_unpack + else + if use verify-sig; then + # Too many levels of symbolic links + cp "${DISTDIR}"/${P}.{sha.sig,tar.gz} "${WORKDIR}" || die + cd "${WORKDIR}" || die + verify-sig_verify_signed_checksums \ + ${P}.sha.sig sha256 ${P}.tar.gz + fi + default + fi +} + +src_configure() { + local conf_args + tc-export CC + + # note: not an autoconf configure script + conf_args=( + PREFIX="${EPREFIX}"/usr/share + BINDIR="${EPREFIX}"/usr/bin + $(use_enable seccomp sandbox) + ) + + ./configure "${conf_args[@]}" || die + + if use seccomp && has usersandbox ${FEATURES} ; then + export SKIP_RUNTIME_TESTS=1 + fi +} + +src_test() { + emake regress +} + +src_install() { + default + + insinto /etc/gmid + doins "${FILESDIR}"/gmid.conf + + insinto /usr/share/vim/vimfiles + doins -r contrib/vim/* + + systemd_dounit "${FILESDIR}"/gmid.service + newinitd "${FILESDIR}"/gmid.initd gmid + newconfd "${FILESDIR}"/gmid.confd gmid + + keepdir /var/gemini/localhost +} + +pkg_postinst() { + if [[ ! -f "${EROOT}"/etc/ssl/${PN}/${PN}.key ]]; then + install_cert /etc/ssl/${PN}/${PN} + chown gemini:gemini "${EROOT}"/etc/ssl/${PN}/${PN}.{crt,csr,key,pem} + fi + + einfo "This gemini server can be run as a user with zero configuration.\n" + einfo "In order to use it with the init service you will need to generate a" + einfo "self-signed TLS certificate and a key and set up the configuration" + einfo "file (see man 1 gmid for details)." +}