aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'www-apps/invidious/invidious-2022.11.22.ebuild')
-rw-r--r--www-apps/invidious/invidious-2022.11.22.ebuild168
1 files changed, 168 insertions, 0 deletions
diff --git a/www-apps/invidious/invidious-2022.11.22.ebuild b/www-apps/invidious/invidious-2022.11.22.ebuild
new file mode 100644
index 000000000..f7b3f3b05
--- /dev/null
+++ b/www-apps/invidious/invidious-2022.11.22.ebuild
@@ -0,0 +1,168 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit check-reqs multiprocessing shards systemd
+
+COMMIT="5160d8bae39dc5cc5d51abee90571a03c08d0f2b"
+MOCKS_COMMIT="dfd53ea6ceb3cbcbbce6004f6ce60b330ad0f9b1"
+MOCKS_P="${PN}-mocks-${MOCKS_COMMIT:0:7}"
+DESCRIPTION="Invidious is an alternative front-end to YouTube"
+HOMEPAGE="
+ https://invidious.io/
+ https://github.com/iv-org/invidious
+"
+IV_ORG="https://github.com/iv-org"
+NPM="https://registry.npmjs.org"
+SRC_URI="
+ ${IV_ORG}/${PN}/archive/${COMMIT}.tar.gz -> ${P}.tar.gz
+ ${NPM}/video.js/-/video.js-7.12.1.tgz
+ ${NPM}/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-2.1.0.tgz
+ ${NPM}/videojs-http-source-selector/-/videojs-http-source-selector-1.1.6.tgz
+ ${NPM}/videojs-markers/-/videojs-markers-1.0.1.tgz
+ ${NPM}/videojs-mobile-ui/-/videojs-mobile-ui-0.6.1.tgz
+ ${NPM}/videojs-overlay/-/videojs-overlay-2.1.4.tgz
+ ${NPM}/videojs-share/-/videojs-share-3.2.1.tgz
+ ${NPM}/videojs-vr/-/videojs-vr-1.8.0.tgz
+ ${NPM}/videojs-vtt-thumbnails/-/videojs-vtt-thumbnails-0.0.13.tgz
+ test? (
+ ${IV_ORG}/mocks/archive/${MOCKS_COMMIT}.tar.gz -> ${MOCKS_P}.tar.gz
+ )
+"
+S="${WORKDIR}/${PN}-${COMMIT}"
+
+LICENSE="AGPL-3 Apache-2.0 MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+COMMON_DEPEND="
+ dev-db/sqlite:3
+ dev-libs/boehm-gc
+ dev-libs/libevent:=
+ dev-libs/libpcre:3
+ dev-libs/libxml2:2
+ dev-libs/libyaml
+ dev-libs/openssl:=
+ sys-libs/zlib:=
+"
+RDEPEND="${COMMON_DEPEND}
+ acct-user/invidious
+ gnome-base/librsvg
+"
+DEPEND="${COMMON_DEPEND}
+ dev-crystal/athena-negotiation
+ dev-crystal/crystal-pg
+ dev-crystal/crystal-sqlite3
+ ~dev-crystal/kemal-1.1.2
+ dev-crystal/kilt
+ dev-crystal/protodec
+ test? (
+ dev-crystal/spectator
+ )
+"
+
+DOCS=( {CHANGELOG,README}.md TRANSLATION )
+
+CHECKREQS_MEMORY="2G"
+
+src_unpack() {
+ local src depname destname js css
+
+ for src in ${A}; do
+ if [[ ${src} == "${P}.tar.gz" ]]; then
+ unpack ${src}
+ elif [[ ${src} == "${MOCKS_P}.tar.gz" ]]; then
+ unpack "${src}"
+ mkdir -p "${S}"/mocks || die
+ rmdir "${S}"/mocks || die
+ mv mocks-${MOCKS_COMMIT} "${S}"/mocks || die
+ else
+ depname="${src%-*}"
+
+ case ${depname} in
+ video.js)
+ js="video.js" ;;
+ *)
+ js="${depname}.js" ;;
+ esac
+
+ case ${depname} in
+ video.js)
+ css="video-js.css" ;;
+ videojs-markers)
+ css="videojs.markers.css" ;;
+ *)
+ css="${depname}.css" ;;
+ esac
+
+ # Create the destination directory
+ destname="${S}/assets/videojs/${depname}"
+ mkdir -p "${destname}" || die
+
+ # Create a temporary directory
+ mkdir -p "${WORKDIR}"/${depname} || die
+ cd "${WORKDIR}"/${depname} || die
+
+ # Copy assets
+ unpack ${src}
+ cd package/dist || die
+ mv ${js} ${destname} || die
+ if [[ -f ${css} ]]; then
+ mv ${css} ${destname} || die
+ fi
+
+ cd "${WORKDIR}" || die
+ fi
+ done
+}
+
+src_prepare() {
+ default
+
+ local datadir="${EPREFIX}/usr/share/invidious"
+ sed -i src/invidious.cr \
+ -e 's/\(CURRENT_BRANCH \) = .*/\1 = "master"/' \
+ -e "s/\(CURRENT_COMMIT \) = .*/\1 = \"${COMMIT:0:7}\"/" \
+ -e "s/\(CURRENT_VERSION\) = .*/\1 = \"${PV}\"/" \
+ -e "s/\(ASSET_COMMIT\) = .*/\1 = \"${COMMIT:0:7}\"/" || die
+
+ # fix paths
+ sed -i src/invidious.cr \
+ -e "s|\(public_folder\) \"assets\"|\1 \"${datadir}/assets\"|" || die
+ sed -i src/invidious/helpers/i18n.cr \
+ -e "s|File.read(\"locales/|File.read(\"${datadir}/locales/|" || die
+ sed -i src/invidious/database/base.cr \
+ -e "s|config/sql|${datadir}/\0|g" || die
+
+ rm shard.lock || die
+}
+
+src_configure() {
+ local mycrystalargs=(
+ -Dskip_videojs_download
+ -Ddisable_quic
+ )
+ shards_src_configure
+}
+
+src_compile() {
+ ecrystal build src/invidious.cr --verbose --threads=$(makeopts_jobs)
+}
+
+src_install() {
+ dobin invidious
+ einstalldocs
+
+ insinto /usr/share/invidious
+ doins -r assets config locales
+
+ insinto /etc/invidious
+ newins config/config.example.yml config.yml
+
+ systemd_dounit "${FILESDIR}"/invidious.service
+ newinitd "${FILESDIR}"/invidious.initd ${PN}
+ newconfd "${FILESDIR}"/invidious.confd ${PN}
+}