Skip to content

Commit

Permalink
zoneminder auto-verbump zoneminder-1.36.33.ebuild
Browse files Browse the repository at this point in the history
Signed-off-by: nic :: oubliette-ebuild-verbump <nic@boet.cc>
  • Loading branch information
nabbi committed Aug 13, 2023
1 parent 9ee28f3 commit 38b32e0
Show file tree
Hide file tree
Showing 2 changed files with 322 additions and 0 deletions.
1 change: 1 addition & 0 deletions www-misc/zoneminder/Manifest
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ DIST zoneminder-1.36.33.tar.gz 11501221 BLAKE2B ee3e6c3fbef2aa45e391f548238ffdcb
EBUILD zoneminder-1.36.24.ebuild 6702 BLAKE2B b9300d2701a0bdf11d5436fe9dd7c3d9530a3e57a6b092dbbd7aece41f74e1625ec55f1fec321469e884847965f3627b33708aff3b2dfc00165936641572c96a SHA512 720eb3a1a1d26d9a734324c6c4a909c1ba5e23bc5d56c8146b06e8701785e220aed3a890e0679a843b6f3e3c515a3b767ccd79157293183a3bcfcd25848c501a
EBUILD zoneminder-1.36.25.ebuild 6702 BLAKE2B b9300d2701a0bdf11d5436fe9dd7c3d9530a3e57a6b092dbbd7aece41f74e1625ec55f1fec321469e884847965f3627b33708aff3b2dfc00165936641572c96a SHA512 720eb3a1a1d26d9a734324c6c4a909c1ba5e23bc5d56c8146b06e8701785e220aed3a890e0679a843b6f3e3c515a3b767ccd79157293183a3bcfcd25848c501a
EBUILD zoneminder-1.36.33-r1.ebuild 10291 BLAKE2B 393cca251d1268c7073168a563d00098e417f8d099065e3784d450093e5de16b3657a10126bde721c723a99645eef9a4737f39cf4da8f81be807256f57160cbb SHA512 2fb1ac4e576a8929c7ebbaf5562ee35b9b58f880870640a0e0ea97c4b5170c4f5bb532e3d3341707f0cb6aeedacd8b2dc80f53aa5250efb7a0a7df7024624656
EBUILD zoneminder-1.36.33.ebuild 10287 BLAKE2B 08ec72385b80336f4d9b4f4aac0d71d18ae0032a69e699d83b0a32ac9cf1b2fcd447f70362223901ab3b707f3b72e82e5d5bf09da2dda799cefe83ec1ff382fd SHA512 7b0658103cfe2ada901e29aae8c10b8ce0f05b50756e41737be85471cb375de1cdf21fb2ce322a3c9529f9aef069b1ce53b6abcd734e0ec554d13f24d53b6996
EBUILD zoneminder-1.36.9999-r10.ebuild 8896 BLAKE2B a4fb69f08c5ada767f32f32f15159c58a0cd6e19c9ec78f3bff4ea786af5ef2347137b7694b9779990c72efa5a92fdbcb3e695804972decc56052c38f44aba4a SHA512 db0f16b907ab1312aa857c39f8c28d5eb14d46ee6c1a7ee1d3666b79853b3cacf2122cdd5e5578df0202032fd0d212cc392421bc050879236482dd81010042e8
EBUILD zoneminder-1.36.9999.ebuild 10182 BLAKE2B acf1c9365e7511be7b33289ce687aca4c72d0c14a2f65bef86bb6502a51ebacd1709ee6fd1548524ade32424e545811ff4faf2ba28b24197628e4b97eac1af88 SHA512 fee3b0b4b43448fc29751332743e9bcab2db2e89cafa3321a6d6be7eb43e3392c209a5860f96fc280b8ab8139f160ad3b45e6d1907518fa0c65f8f78d50bb2cf
EBUILD zoneminder-9999-r1.ebuild 10182 BLAKE2B acf1c9365e7511be7b33289ce687aca4c72d0c14a2f65bef86bb6502a51ebacd1709ee6fd1548524ade32424e545811ff4faf2ba28b24197628e4b97eac1af88 SHA512 fee3b0b4b43448fc29751332743e9bcab2db2e89cafa3321a6d6be7eb43e3392c209a5860f96fc280b8ab8139f160ad3b45e6d1907518fa0c65f8f78d50bb2cf
Expand Down
321 changes: 321 additions & 0 deletions www-misc/zoneminder/zoneminder-1.36.33.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,321 @@
# Copyright 2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit perl-functions readme.gentoo-r1 cmake flag-o-matic systemd optfeature

MY_CRUD_V="0bd63fb464957080ead342db58ca9e01532cf1ef"
MY_CAKEPHP_V="ea90c0cd7f6e24333a90885e563b5d30b793db29"
MY_RTSP_V="eab32851421ffe54fec0229c3efc44c642bc8d46"

DESCRIPTION="full-featured, open source, state-of-the-art video surveillance software system"
HOMEPAGE="http://www.zoneminder.com/"

MY_PV_MM=$(ver_cut 1-2)
MY_PV_P=$(ver_cut 3-)
if [[ ${PV} == 9999 || ${MY_PV_P} == 9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/ZoneMinder/zoneminder"
if [[ "${MY_PV_MM}" == 1.36 ]]; then
EGIT_BRANCH="release-${MY_PV_MM}"
fi
else
SRC_URI="
https://github.com/ZoneMinder/${PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz
https://github.com/FriendsOfCake/crud/archive/${MY_CRUD_V}.tar.gz -> Crud-${MY_CRUD_V}.tar.gz
https://github.com/ZoneMinder/CakePHP-Enum-Behavior/archive/${MY_CAKEPHP_V}.tar.gz -> \
CakePHP-Enum-Behavior-${MY_CAKEPHP_V}.tar.gz
https://github.com/ZoneMinder/RtspServer/archive/${MY_RTSP_V}.tar.gz -> RtspServer-${MY_RTSP_V}.tar.gz"
KEYWORDS="~amd64"
fi

LICENSE="GPL-2"
IUSE_WEB_SERVER="apache2 nginx"
IUSE="curl gcrypt gnutls +mmap +ssl vlc +apache2 nginx"
SLOT="0"
REQUIRED_USE="
|| ( ssl gnutls )
^^ ( ${IUSE_WEB_SERVER} )
"

DEPEND_WEB_SERVER="
apache2? ( www-servers/apache )
nginx? (
www-servers/nginx:*
www-misc/fcgiwrap
www-servers/spawn-fcgi
www-servers/multiwatch
)
"

DEPEND="
app-eselect/eselect-php
dev-lang/perl:=
dev-lang/php:*[curl,gd,inifile,intl,pdo,mysql,mysqli,sockets,sysvipc]
dev-libs/libpcre
dev-perl/Archive-Zip
dev-perl/Class-Std-Fast
dev-perl/Data-Dump
dev-perl/Date-Manip
dev-perl/Data-UUID
dev-perl/DBD-mysql
dev-perl/DBI
dev-perl/IO-Socket-Multicast
dev-perl/SOAP-WSDL
dev-perl/Sys-CPU
dev-perl/Sys-MemInfo
dev-perl/URI-Encode
dev-perl/libwww-perl
dev-perl/Number-Bytes-Human
dev-perl/JSON-MaybeXS
dev-perl/Crypt-Eksblowfish
dev-perl/Data-Entropy
dev-perl/HTTP-Lite
dev-perl/MIME-Lite
dev-perl/MIME-tools
dev-perl/X10
dev-perl/DateTime
dev-perl/Device-SerialPort
dev-php/pecl-apcu:*
sys-auth/polkit
sys-libs/zlib
media-video/ffmpeg[x264,x265,jpeg2k]
virtual/httpd-php:*
media-libs/libjpeg-turbo:0
virtual/perl-ExtUtils-MakeMaker
virtual/perl-Getopt-Long
virtual/perl-Sys-Syslog
virtual/perl-Time-HiRes
curl? ( net-misc/curl )
gcrypt? ( dev-libs/libgcrypt:0= )
gnutls? (
net-libs/gnutls
dev-libs/libjwt[gnutls,ssl?]
)
mmap? ( dev-perl/Sys-Mmap )
ssl? ( dev-libs/openssl:0= )
vlc? ( media-video/vlc[live] )
${DEPEND_WEB_SERVER}
"
# webserver is a build time depend; we need the user/group to already exist

RDEPEND="${DEPEND}"

MY_ZM_WEBDIR=/usr/share/zoneminder/www

PATCHES=(
"${FILESDIR}/${PN}-1.34.17_dont_gz_man.patch"
)

pkg_setup() {
if use nginx ; then
MY_WEB_USER=nginx
MY_WEB_GROUP=nginx
MY_WEB_INITD=nginx
elif use apache2 ; then
MY_WEB_USER=apache
MY_WEB_GROUP=apache
MY_WEB_INITD=apache2
fi
# allow the user to override
[[ -n "${ZM_WEBSRV_USER}" ]] && MY_WEB_USER=${ZM_WEBSRV_USER}
[[ -n "${ZM_WEBSRV_GROUP}" ]] && MY_WEB_GROUP=${ZM_WEBSRV_GROUP}
[[ -n "${ZM_WEBSRV_INITD}" ]] && MY_WEB_INITD=${ZM_WEBSRV_INITD}
# bail if web user:group not set
if [[ -z "${MY_WEB_USER}" || -z "${MY_WEB_GROUP}" ]]; then
die "no web server configured"
fi

export MY_WEB_USER MY_WEB_GROUP MY_WEB_INITD
}

src_prepare() {
cmake_src_prepare

if ! [[ ${PV} == 9999 || ${MY_PV_P} == 9999 ]]; then
rmdir "${S}/web/api/app/Plugin/Crud" || die
mv "${WORKDIR}/crud-${MY_CRUD_V}" "${S}/web/api/app/Plugin/Crud" || die

rmdir "${S}/web/api/app/Plugin/CakePHP-Enum-Behavior" || die
mv "${WORKDIR}/CakePHP-Enum-Behavior-${MY_CAKEPHP_V}" "${S}/web/api/app/Plugin/CakePHP-Enum-Behavior" || die

rmdir "${S}/dep/RtspServer" || die
mv "${WORKDIR}/RtspServer-${MY_RTSP_V}" "${S}/dep/RtspServer" || die
fi
}

src_configure() {
append-cxxflags -D__STDC_CONSTANT_MACROS
perl_set_version
export TZ=UTC # bug 630470

if ! use gcrypt; then
sed -i '/find_library(GCRYPT_LIBRARIES/d' CMakeLists.txt
fi
if ! use gnutls; then
sed -i '/find_library(GNUTLS_LIBRARIES/d' CMakeLists.txt
fi

mycmakeargs=(
-DZM_TMPDIR=/var/tmp/zm
-DZM_SOCKDIR=/run/zm
-DZM_RUNDIR=/run/zm
-DZM_PATH_ZMS="/zm/cgi-bin/nph-zms"
-DZM_LOGDIR=/var/log/zm
-DZM_CACHEDIR=/var/cache/zoneminder
-DZM_CONTENTDIR=/var/lib/zoneminder
-DZM_CONFIG_DIR="/etc/zm"
-DZM_CONFIG_SUBDIR="/etc/zm/conf.d"
-DZM_WEB_USER=${MY_WEB_USER}
-DZM_WEB_GROUP=${MY_WEB_GROUP}
-DZM_WEBDIR=${MY_ZM_WEBDIR}
-DZM_NO_MMAP="$(usex mmap OFF ON)"
-DZM_NO_X10=OFF
-DZM_NO_CURL="$(usex curl OFF ON)"
-DZM_NO_LIBVLC="$(usex vlc OFF ON)"
-DZM_NO_RTSPSERVER=OFF
-DCMAKE_DISABLE_FIND_PACKAGE_OpenSSL="$(usex ssl OFF ON)"
)

cmake_src_configure

}

src_install() {
cmake_src_install

# the log directory, can contain passwords - limit access
keepdir /var/log/zm
fperms 0750 /var/log/zm
fowners ${MY_WEB_USER}:${MY_WEB_GROUP} /var/log/zm

# the logrotate script
insinto /etc/logrotate.d
newins distros/ubuntu2004/zoneminder.logrotate zoneminder

# now we duplicate the work of zmlinkcontent.sh
keepdir /var/lib/zoneminder /var/lib/zoneminder/images /var/lib/zoneminder/events

# set perms/owners per dir, to keep .keep files root owned
fperms 0775 /var/lib/zoneminder /var/lib/zoneminder/images /var/lib/zoneminder/events
fowners ${MY_WEB_USER}:${MY_WEB_GROUP} /var/lib/zoneminder /var/lib/zoneminder/images /var/lib/zoneminder/events

# the configuration file
fperms 0640 /etc/zm/zm.conf
fowners root:${MY_WEB_GROUP} /etc/zm/zm.conf
## can't use fperms / fowners with file globs
chmod 0640 "${ED}"/etc/zm/conf.d/*.conf
chown root:${MY_WEB_GROUP} "${ED}"/etc/zm/conf.d/*.conf

# init scripts etc
cp "${FILESDIR}"/init.d-r1 "${T}"/init.d || die
sed -i "${T}"/init.d -e "s:%WWW_SERVER%:${MY_WEB_INITD}:g" \
-e "s/%ZM_OWNER%/${MY_WEB_USER}:${MY_WEB_GROUP}/g" || die
newinitd "${T}"/init.d zoneminder

# systemd unit file
# Requires -> Wants for weak depend, don't mess with the TZ Environment
sed -i "${BUILD_DIR}"/misc/zoneminder.service -e 's/Requires=/Wants=/' -e '/Environment=TZ=:/d' || die
systemd_newunit "${BUILD_DIR}"/misc/zoneminder.service zoneminder.service

# apache2 conf file
if use apache2; then
cp "${FILESDIR}"/zoneminder_vhost.include "${T}"/zoneminder_vhost.include || die
sed -i "${T}"/zoneminder_vhost.include -e "s:%ZM_WEBDIR%:${MY_ZM_WEBDIR}:g" || die
dodoc "${FILESDIR}"/zoneminder_vhost.conf "${T}"/zoneminder_vhost.include
fi

# nginx conf files
if use nginx; then
dodoc "${FILESDIR}"/zoneminder.nginx.conf "${FILESDIR}"/zoneminder.php-fpm.conf
newconfd "${FILESDIR}"/spawn-fcgi.zoneminder.confd spawn-fcgi.zoneminder
newinitd "${FILESDIR}"/spawn-fcgi.zoneminder.initd spawn-fcgi.zoneminder
fi

dodoc CHANGELOG.md CONTRIBUTING.md README.md

perl_delete_packlist

README_GENTOO_SUFFIX="-r1"
readme.gentoo_create_doc
}

pkg_postinst() {
readme.gentoo_print_elog

if [[ -z "${REPLACING_VERSIONS}" ]]; then
elog "Fresh installs of zoneminder require a few additional steps. Please read the README.gentoo"
elog ""
elog "This package requires access to a Mysql compatible database server"
elog "ZoneMinder can connect to a remote database if desired"
optfeature_header "Mysql compatible database server"
optfeature "Install if you don't already have one" virtual/mysql
elog ""
elog "There are optional features/enhancements that can be added"
optfeature_header "Onvif Access"
optfeature "Verbose responses from camera" dev-perl/XML-LibXML
optfeature "Event monitoring" dev-perl/SOAP-Lite
optfeature_header "Email"
optfeature "Older email package (if new one isn't working)" dev-perl/MIME-tools
optfeature_header "Event creation enhancements"
optfeature "Retrieves image size" dev-perl/Image-Info
optfeature_header "Storage"
optfeature "Archive to SFTP server" dev-perl/Net-SFTP-Foreign
optfeature "Copy to Amazon S3 bucket" dev-perl/Net-Amazon-S3 dev-perl/File-Slurp
else
local v
for v in ${REPLACING_VERSIONS}; do
if ver_test ${PV} -gt ${v}; then
elog "You have upgraded zoneminder and may have to upgrade your database now using the 'zmupdate.pl' script."
fi
done
fi

# 2023-06-20 apache2 config no longer installed by default
# avoid breaking an existing install, advise user to migrate
if use apache2; then
if [[ -f "/etc/apache2/vhosts.d/10_zoneminder.conf" ]]; then
ewarn ""
ewarn "This ZoneMinder package no longer installs 10_zoneminder.conf under /etc/apache2/vhosts.d"
ewarn ""
ewarn "Example apache configs have been placed under /usr/share/doc/${PF}"
ewarn ""
ewarn "Your old configuration should be reviewed"
ewarn "To suppresee this message, name your local configuraiton file something else"
ewarn ""
fi
fi

# 2022-02-10 The original ebuild omitted ZM_CONFIG_* at build time
# Check if user needs to migrate configs from /etc to /etc/zm
local legacy="/etc/zm.conf /etc/conf.d/01-system-paths.conf /etc/conf.d/02-multiserver.conf /etc/conf.d/zmcustom.conf"
local lf
local lfwarn=0
for lf in ${legacy}; do
if [[ -f "${lf}" ]]; then
ewarn "Found deprecated ZoneMinder config ${lf}"
lfwarn=1
fi
done
if [ ${lfwarn} -ne 0 ]; then
ewarn ""
ewarn "Gentoo's ebuild previously installed ZoneMinder's configurations directly into /etc"
ewarn "This conflicts with OpenRC /etc/conf.d as ZoneMinder also has its own conf.d subdirectory"
ewarn "Your newly compiled ZoneMinder now looks for configurations under /etc/zm"
ewarn ""
ewarn " Please merge your local changes into /etc/zm/conf.d/99-local.conf"
ewarn " This includes any user created *.conf files for ZM within /etc/conf.d/"
ewarn " Then remove those old files to complete the migration."
ewarn ""
elog ""
elog "Remember to set appropriate permisions on user created files (i.e. /etc/zm/conf.d/*.conf):"
elog " chmod 640 local.conf"
elog " chown root:${MY_WEB_GROUP} local.conf"
elog ""
ewarn ""
ewarn "ZoneMinder will **NO LONGER FUNCTION UNTIL** these configuration items have been migrated!"
ewarn "In particular, ensuring the database hostname and credentials are defined within the new locations."
ewarn ""
fi
}

0 comments on commit 38b32e0

Please sign in to comment.