Compare commits

3 Commits

Author SHA1 Message Date
7127f0ab66 Add building inpxer (#2)
Reviewed-on: #2
Co-authored-by: Anton Kropachev <root@cppmm.net.ru>
Co-committed-by: Anton Kropachev <root@cppmm.net.ru>
2024-09-16 03:08:39 +03:00
ad04e2f121 Merge pull request 'Add inpxer' (#1) from www-apps/inpxer into main
Reviewed-on: #1
2024-09-16 03:02:11 +03:00
a24935c7c3 Add inpxer 2024-09-16 03:02:03 +03:00
9 changed files with 151 additions and 185 deletions

View File

@ -1,180 +0,0 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
ECM_HANDBOOK="optional"
ECM_TEST="true"
KFMIN=6.5.0
QTMIN=6.7.2
inherit ecm kde.org optfeature
DESCRIPTION="Free, versatile, powerful and feature-rich music player and collection manager"
HOMEPAGE="https://amarok.kde.org/ https://apps.kde.org/amarok/"
S="${WORKDIR}/${PN}-v${PV}"
LICENSE="GPL-2+" # TODO: CHECK
SLOT="6"
KEYWORDS="~amd64 ~x86"
#IUSE="ipod lastfm mtp +mariadb wikipedia qt5 +qt6 podcast"
IUSE="ipod lastfm mtp qt5 +qt6"
RESTRICT="mirror"
REQUIRED_USE="|| ( qt5 qt6 )"
#SRC_URI="https://invent.kde.org/multimedia/${PN}/-/archive/v${PV}/${PN}-v${PV}.tar.bz2"
DEPEND="
virtual/mysql
media-libs/taglib-extras
media-libs/taglib
media-libs/phonon[qt5?,qt6?]
qt6? (
dev-qt/qttools:6
dev-qt/qt5compat:6
>=dev-qt/qtbase-${QTMIN}:6[gui,widgets,xml]
dev-qt/qtdeclarative:6
>=kde-frameworks/karchive-${KFMIN}:6
>=kde-frameworks/kcodecs-${KFMIN}:6
>=kde-frameworks/kconfig-${KFMIN}:6
>=kde-frameworks/kconfigwidgets-${KFMIN}:6
>=kde-frameworks/kcoreaddons-${KFMIN}:6
>=kde-frameworks/kcrash-${KFMIN}:6
>=kde-frameworks/kdbusaddons-${KFMIN}:6
>=kde-frameworks/kdeclarative-${KFMIN}:6
>=kde-frameworks/kdnssd-${KFMIN}:6
>=kde-frameworks/kdoctools-${KFMIN}:6
>=kde-frameworks/kglobalaccel-${KFMIN}:6
>=kde-frameworks/kguiaddons-${KFMIN}:6
>=kde-frameworks/ki18n-${KFMIN}:6
>=kde-frameworks/kiconthemes-${KFMIN}:6
>=kde-frameworks/kcmutils-${KFMIN}:6
>=kde-frameworks/kio-${KFMIN}:6
>=kde-frameworks/knotifications-${KFMIN}:6
>=kde-frameworks/kpackage-${KFMIN}:6
>=kde-frameworks/solid-${KFMIN}:6
>=kde-frameworks/ktexteditor-${KFMIN}:6
>=kde-frameworks/threadweaver-${KFMIN}:6
>=kde-frameworks/kwidgetsaddons-${KFMIN}:6
>=kde-frameworks/kwindowsystem-${KFMIN}:6
kde-frameworks/kcolorscheme:6
kde-frameworks/kirigami:6
kde-frameworks/kstatusnotifieritem:6
)
qt5? (
dev-qt/linguist-tools
dev-qt/qtcore:5
dev-qt/qtdeclarative:5
dev-qt/qtgui:5
dev-qt/qtwidgets:5
dev-qt/qtxml:5
dev-qt/qtsql:5
kde-frameworks/karchive:5
kde-frameworks/kcodecs:5
kde-frameworks/kconfig:5
kde-frameworks/kconfigwidgets:5
kde-frameworks/kcoreaddons:5
kde-frameworks/kcrash:5
kde-frameworks/kdbusaddons:5
kde-frameworks/kdeclarative:5
kde-frameworks/kdnssd:5
kde-frameworks/kdoctools:5
kde-frameworks/kglobalaccel:5
kde-frameworks/kguiaddons:5
kde-frameworks/ki18n:5
kde-frameworks/kiconthemes:5
kde-frameworks/kcmutils:5
kde-frameworks/kio:5
kde-frameworks/knotifications:5
kde-frameworks/kpackage:5
kde-frameworks/solid:5
kde-frameworks/ktexteditor:5
kde-frameworks/threadweaver:5
kde-frameworks/kwidgetsaddons:5
kde-frameworks/kwindowsystem:5
kde-frameworks/kirigami:5
ipod? ( media-libs/libmygpo-qt )
)
"
RDEPEND="${DEPEND}
media-video/ffmpeg
"
src_configure() {
local mycmakeargs=(
-DBUILD_WITH_QT6=$(usex qt6)
-DWITH_MP3Tunes=OFF
-DWITH_PLAYER=ON
-DWITH_UTILITIES=ON
-DCMAKE_DISABLE_FIND_PACKAGE_Googlemock=ON
-DCMAKE_DISABLE_FIND_PACKAGE_LibOFA=ON
-DCMAKE_DISABLE_FIND_PACKAGE_MySQLe=ON
-DWITH_IPOD=$(usex ipod)
-DWITH_GPODDER=OFF
$(cmake_use_find_package lastfm LibLastFm)
# $(cmake_use_find_package !mariadb MySQL)
$(cmake_use_find_package mtp Mtp)
$(cmake_use_find_package wikipedia Qt6WebEngineWidgets)
)
use ipod && mycmakeargs+=( DWITH_GDKPixBuf=ON )
use qt5 && use podcast && mycmakeargs+=( $(cmake_use_find_package podcast Mygpo-qt5) )
ecm_src_configure
}
pkg_postinst() {
ecm_pkg_postinst
pkg_is_installed() {
echo "${1} ($(has_version ${1} || echo "not ")installed)"
}
db_name() {
use mariadb && echo "MariaDB" || echo "MySQL"
}
optfeature "Audio CD support" "kde-apps/audiocd-kio:6"
if [[ -z ${REPLACING_VERSIONS} ]]; then
elog "You must configure ${PN} to use an external database server."
elog " 1. Make sure either MySQL or MariaDB is installed and configured"
elog " Checking local system:"
elog " $(pkg_is_installed dev-db/mariadb)"
elog " $(pkg_is_installed dev-db/mysql)"
elog " For preliminary configuration of $(db_name) Server refer to"
elog " https://wiki.gentoo.org/wiki/$(db_name)#Configuration"
elog " 2. Ensure 'mysql' service is started and run:"
elog " # emerge --config amarok"
elog " 3. Run ${PN} and go to 'Configure Amarok - Database' menu page"
elog " Check 'Use external MySQL database' and press OK"
elog
elog "For more information please read:"
elog " https://community.kde.org/Amarok/Community/MySQL"
fi
}
pkg_config() {
# Create external mysql database with amarok default user/password
local AMAROK_DB_NAME="amarokdb"
local AMAROK_DB_USER_NAME="amarokuser"
local AMAROK_DB_USER_PWD="password"
einfo "Initializing ${PN} MySQL database 'amarokdb':"
einfo "If prompted for a password, please enter your MySQL root password."
einfo
mysql -u root -p -e '
CREATE DATABASE IF NOT EXISTS ${AMAROK_DB_NAME};
GRANT ALL PRIVILEGES ON ${AMAROK_DB_NAME}.* TO '${AMAROK_DB_USER_NAME}' IDENTIFIED BY '${AMAROK_DB_USER_PWD}';
FLUSH PRIVILEGES;'
einfo "${PN} MySQL database 'amarokdb' successfully initialized!"
}

View File

@ -0,0 +1,13 @@
BDEPEND=>=dev-lang/go-1.20:= app-arch/unzip
DEFINED_PHASES=compile install prepare test unpack
DESCRIPTION=OPDS and web server for .inpx libraries with full-text search
EAPI=8
HOMEPAGE=https://github.com/shemanaev/inpxer
INHERIT=go-module
KEYWORDS=~amd64
LICENSE=MIT
RESTRICT=strip
SLOT=0
SRC_URI=https://github.com/shemanaev/inpxer/archive/v0.2.5.tar.gz -> inpxer-0.2.5.tar.gz
_eclasses_=multiprocessing e644caa6eb7ce7e5ab0864383ac13ad9 toolchain-funcs 948855ec7ad9f11351edf9066708dfa9 multilib 7e1347c006a76bb812f3a9f663b79991 flag-o-matic fa33e3696fe4689dda7e9affe92e2c94 go-env 90efbc8636d2f02d9654183330e84cf7 go-module 83fd3ed1657cfc316c93d6a37018290d
_md5_=b4ea44fc838b4ba7630c22ff85e423c2

1
www-apps/inpxer/Manifest Normal file
View File

@ -0,0 +1 @@
DIST inpxer-0.2.5.tar.gz 485529 BLAKE2B d15f1aacbb00cedaf3b605a9125ce82c65e535cf4417b6562a3e7de8384e039dd551572a6c3b6b2c6d078a3b00f71df8254f101fd00c9831779ccaa422d75a38 SHA512 dbf1f5e50c3ec2291698293ef37bcb31a7e912832fd5a4bdad4e7a2db92d85592fdbb813ea85c151e53e5bf4d39219ec38f285b091f1d6a8fd986900dd04c175

View File

@ -0,0 +1,11 @@
--- a/internal/config/config.go 2024-09-16 02:47:23.666714944 +0300
+++ b/internal/config/config.go 2024-09-16 02:47:50.696715919 +0300
@@ -8,7 +8,7 @@
"github.com/pelletier/go-toml/v2"
)
-const configFilename = "inpxer.toml"
+const configFilename = "/etc/inpxer/inpxer.toml"
type MyConfig struct {
Language string `toml:"language"`

View File

@ -0,0 +1,30 @@
# language used for interface and indexing
language = "en" # en, ru
# title displayed on web and in OPDS catalog
title = "My library"
# format for author's name. possible values:
# - short: Fyodor Dostoevsky
# - initials: F. M. Dostoevsky
# - full: Fyodor Mikhailovich Dostoevsky
author_name_format = "short"
# where to store index
# WARNING: keep in mind that this folder will be deleted during indexing,
# don't point it to an existing location (and definitely don't set it equal to library_path)
index_path = "/data/index"
# where is you books stored
library_path = "/data/library"
# host:port to listen on
listen = ":8080"
# fully qualified url to server. required for OPDS (OpenSearch)
full_url = "http://localhost:8080"
# format converters. can be as many as you want
#[[converters]]
## source file extension
#from = "fb2"
## target file extension
#to = "epub"
## converter executable
#command = "fb2epub"
## converter arguments. {from} becomes source file path, {to} - output file path, {to_dir} - output directory (for fb2converter)
#arguments = "{from} {to}"

View File

@ -0,0 +1,23 @@
#!/sbin/openrc-run
# Copyright 2016-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
description="Web server for .inpx libraries"
pidfile=${pidfile:-"/run/${RC_SVCNAME}.pid"}
user=${user:-${RC_SVCNAME}}
group=${group:-${RC_SVCNAME}}
command="/usr/sbin/inpxer"
command_args="${command_args:-serve}"
command_background="true"
command_user="${user}:${group}"
output_log="/var/log/inpxer/${RC_SVCNAME}.log"
error_log="/var/log/inpxer/${RC_SVCNAME}.log"
depend() {
after net
}
start_pre() {
checkpath -q -d -m 0755 -o ${user}:${group} /var/log/inpxer
}

View File

@ -0,0 +1,9 @@
/var/log/inpxer/inpxer.log {
weekly
rotate 10
copytruncate
compress
delaycompress
notifempty
missingok
}

View File

@ -0,0 +1,60 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit go-module
DESCRIPTION="OPDS and web server for .inpx libraries with full-text search"
HOMEPAGE="https://github.com/shemanaev/inpxer"
if [[ ${PV} == 9999* ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/shemanaev/inpxer.git"
else
SRC_URI="
https://github.com/shemanaev/inpxer/archive/v${PV}.tar.gz -> ${P}.tar.gz
"
KEYWORDS="~amd64"
fi
# main pkg
LICENSE="MIT"
SLOT="0"
PATCHES=(
"${FILESDIR}"/01-config-placement-0.2.5.patch
)
src_unpack() {
if [[ ${PV} == 9999* ]]; then
git-r3_src_unpack
go-module_live_vendor
else
default
fi
}
src_prepare() {
[[ ${PV} != 9999* ]] && { ln -sv ../vendor ./ || die ; }
default
}
src_compile() {
go build . || die
./"${PN}" --help > "${PN}".1 || die
}
src_test() {
emake test-flags= test
}
src_install() {
dosbin "${PN}"
cp "${FILESDIR}"/inpxer-example.toml "${ED}"/etc/inpxer/inpxer.toml || die
doman "${PN}".1
newinitd "${FILESDIR}"/${PN}.initd-1 ${PN}
insinto /etc/logrotate.d
newins "${FILESDIR}"/${PN}.logrotate "${PN}"
keepdir /var/log/${PN}
}

View File

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person" proxied="yes">
<maintainer type="person">
<email>root@cppmm.net.ru</email>
<name>Anton Kropachev</name>
</maintainer>
<use>
<flag name="lastfm">Use liblastfm for fetching song info, scrobbling and radio streams</flag>
</use>
<upstream>
<remote-id type="kde-invent">multimedia/Amarok</remote-id>
<remote-id type="github">shemanaev/inpxer</remote-id>
<bugs-to>https://github.com/shemanaev/inpxer/issues</bugs-to>
<doc>https://github.com/shemanaev/inpxer/blob/master/README.md</doc>
</upstream>
</pkgmetadata>