6 Commits

Author SHA1 Message Date
662c55d0d0 Allow broken depenencies with dnf 2021-12-28 10:25:07 -05:00
471b432b82 Leave it up to the user for now 2021-12-11 11:55:43 -05:00
abfb0472e8 Fix version checking reliability 2021-12-11 10:03:52 -05:00
c7a53ac202 Fix version checking reliability 2021-12-11 10:01:39 -05:00
852324f350 Fix dev derp 2021-12-11 09:34:18 -05:00
d9f270adc1 Fix dev derp 2021-12-11 09:31:05 -05:00

View File

@@ -20,7 +20,7 @@
shopt -s extglob shopt -s extglob
_scriptversion="1.0b4" _scriptversion="1.0b5"
_outputdir="$PWD/output" _outputdir="$PWD/output"
_createrepo_webroot="/var/www/jriver" _createrepo_webroot="/var/www/jriver"
_exec_user="$(whoami)" _exec_user="$(whoami)"
@@ -173,7 +173,7 @@ init() {
[[ ! "$_mcversion" =~ ([0-9]+.[0-9]+.[0-9]+) ]] && err "Invalid version number" && exit 1 [[ ! "$_mcversion" =~ ([0-9]+.[0-9]+.[0-9]+) ]] && err "Invalid version number" && exit 1
echo "Using MC version $_mcversion determined by $_version_source" echo "Using MC version $_mcversion determined by $_version_source"
echo "To override, use --mcversion" [[ "$_version_source" != "user input" ]] && echo "To override, use --mcversion"
# Extract major version number # Extract major version number
_mversion="${_mcversion%%.*}" _mversion="${_mcversion%%.*}"
@@ -353,34 +353,34 @@ getLatestVersion() {
# This can be overriden w/ --mcversion # This can be overriden w/ --mcversion
# TODO need user input here # TODO need user input here
# disable version checks for createrepo or rpmbuild (servers) # disable version checks for createrepo or rpmbuild (servers)
if [[ -v _install ]]; then # if [[ -v _install ]]; then
if [[ "$ID" == "ubuntu" ]]; then # if [[ "$ID" == "ubuntu" ]]; then
# [[ "$VERSION_CODENAME" =~ ^(focal|groovy|hirsute|impish)$ ]] && \ # # [[ "$VERSION_CODENAME" =~ ^(focal|groovy|hirsute|impish)$ ]] && \
# _base="bullseye" # # _base="bullseye"
[[ "$VERSION_CODENAME" =~ ^(cosmic|disco|eoan)$ ]] && \ # [[ "$VERSION_CODENAME" =~ ^(cosmic|disco|eoan)$ ]] && \
_base="buster" # _base="buster"
[[ "$VERSION_CODENAME" =~ ^(xenial|yakkety|zesty|artful|bionic)$ ]] && \ # [[ "$VERSION_CODENAME" =~ ^(xenial|yakkety|zesty|artful|bionic)$ ]] && \
_mcversion="26.0.107" # _mcversion="26.0.107"
[[ "$VERSION_CODENAME" =~ ^(trusty|utopic|vivid|wily)$ ]] && \ # [[ "$VERSION_CODENAME" =~ ^(trusty|utopic|vivid|wily)$ ]] && \
_mcversion="26.0.107" # _mcversion="26.0.107"
elif [[ "$ID" == "debian" ]]; then # elif [[ "$ID" == "debian" ]]; then
_base="$VERSION_CODENAME" # _base="$VERSION_CODENAME"
[[ $VERSION_ID -eq 10 ]] && \ # [[ $VERSION_ID -eq 10 ]] && \
_base="buster" # _base="buster"
[[ $VERSION_ID -le 9 ]] && \ # [[ $VERSION_ID -le 9 ]] && \
_mcversion="26.0.107" # For 9 and 8 # _mcversion="26.0.107" # For 9 and 8
elif [[ "$ID" == "centos" ]]; then # elif [[ "$ID" == "centos" ]]; then
[[ "$VERSION_ID" -eq "8" ]] && \ # [[ "$VERSION_ID" -eq "8" ]] && \
_base="buster" # _base="buster"
[[ "$VERSION_ID" -lt "8" ]] && \ # [[ "$VERSION_ID" -lt "8" ]] && \
_mcversion="26.0.107" # Doubtful # _mcversion="26.0.107" # Doubtful
fi # fi
[[ -v _mcversion ]] && \ # [[ -v _mcversion ]] && \
_version_source="compatibility lookup" && \ # _version_source="compatibility lookup" && \
debug "To override, use --mcversion" && \ # debug "To override, use --mcversion" && \
return 0 # return 0
fi # fi
# Use a containerized package manager # Use a containerized package manager
# TODO but how to determine build distro ($_base=buster)? # TODO but how to determine build distro ($_base=buster)?
@@ -390,12 +390,16 @@ getLatestVersion() {
"echo 'deb [trusted=yes arch=amd64,i386,armhf,arm64] http://dist.jriver.com/latest/mediacenter/ $_base main' > /etc/apt/sources.list 2>&1" "echo 'deb [trusted=yes arch=amd64,i386,armhf,arm64] http://dist.jriver.com/latest/mediacenter/ $_base main' > /etc/apt/sources.list 2>&1"
buildah run "$CNT" -- bash -c \ buildah run "$CNT" -- bash -c \
"apt-get update --allow-insecure-repositories -y > /dev/null 2>&1" "apt-get update --allow-insecure-repositories -y > /dev/null 2>&1"
if _mcversion=$(buildah run "$CNT" -- apt-cache policy mediacenter?? | grep Candidate | awk '{print $2}' | sort -V | tail -n1); then if _mcversion=$(buildah run "$CNT" -- apt-cache policy mediacenter?? | grep Candidate | awk '{print $2}' | sort -V | tail -n1) \
&& [[ "$_mcversion" =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then
_version_source="containerized package manager" _version_source="containerized package manager"
buildah rm "$CNT" > /dev/null 2>&1
return 0
fi fi
buildah rm "$CNT" > /dev/null 2>&1 buildah rm "$CNT" > /dev/null 2>&1
# Else scrape from Interact fi
elif _mcversion=$(wget -qO- "$_boardurl" | grep -o "[0-9][0-9]\.[0-9]\.[0-9]\+" | head -n 1); then # Scrape from Interact
if _mcversion=$(wget -qO- "$_boardurl" | grep -o "[0-9][0-9]\.[0-9]\.[0-9]\+" | head -n 1); then
_version_source="webscrape" _version_source="webscrape"
fi fi
@@ -691,7 +695,7 @@ buildRPM() {
AutoReq: 0 AutoReq: 0
${_global_requires:-} ${_global_requires:-}
${_custom_requires:-} ${_custom_requires:-}
Recommends: vorbis-tools >= 1.4.0 Recommends: vorbis-tools >= 1.4.0
Recommends: lame >= 3.0 Recommends: lame >= 3.0
@@ -1187,98 +1191,98 @@ service_jriver-createrepo() {
# } # }
container_jriver-mediacenter() { # container_jriver-mediacenter() {
installPackage buildah podman # installPackage buildah podman
# Eventually try to switch to Debian # # Eventually try to switch to Debian
# if ! CNT=$(buildah from debian:$_base); then # # if ! CNT=$(buildah from debian:$_base); then
# echo "Bad base image for container $CNAME, skipping" # # echo "Bad base image for container $CNAME, skipping"
# continue # # continue
# fi # # fi
if ! CNT=$(buildah from jlesage/baseimage-gui:debian-10-v3.5.7); then # if ! CNT=$(buildah from jlesage/baseimage-gui:debian-10-v3.5.7); then
echo "Bad base image for container $CNAME, skipping" # echo "Bad base image for container $CNAME, skipping"
continue # continue
fi # fi
buildah run "$CNT" add-pkg gnupg2 libxss1 wmctrl xdotool ca-certificates inotify-tools libgbm1 ffmpeg # buildah run "$CNT" add-pkg gnupg2 libxss1 wmctrl xdotool ca-certificates inotify-tools libgbm1 ffmpeg
# #BASEIMAGE=jlesage/baseimage-gui:debian-10-v3.5.7 # # #BASEIMAGE=jlesage/baseimage-gui:debian-10-v3.5.7
# JRIVER_RELEASE=28 # # JRIVER_RELEASE=28
# JRIVER_TAG=stable # # JRIVER_TAG=stable
# ARCH=amd64 # # ARCH=amd64
# REBUILD_MIN=22 # # REBUILD_MIN=22
# REBUILD_MAX=120 # # REBUILD_MAX=120
# # JRiver Version tag (latest, stable or beta) # # # JRiver Version tag (latest, stable or beta)
# ARG jriver_tag # # ARG jriver_tag
# # JRiver Release Version (25, 26 etc.) # # # JRiver Release Version (25, 26 etc.)
# ARG jriver_release # # ARG jriver_release
# # Image Version of the build # # # Image Version of the build
# ARG image_version # # ARG image_version
# # .deb download URL, if set to "repository" the JRiver repository will be used # # # .deb download URL, if set to "repository" the JRiver repository will be used
# ARG deb_url # # ARG deb_url
# RUN add-pkg gnupg2 libxss1 wmctrl xdotool ca-certificates inotify-tools libgbm1 ffmpeg # # RUN add-pkg gnupg2 libxss1 wmctrl xdotool ca-certificates inotify-tools libgbm1 ffmpeg
# Install JRiver # # Install JRiver
RUN \ # RUN \
add-pkg --virtual build-dependencies wget && \ # add-pkg --virtual build-dependencies wget && \
# Install from Repository # # Install from Repository
if [ "${deb_url}" = "repository" ]; then \ # if [ "${deb_url}" = "repository" ]; then \
echo "Installing JRiver from repository ${jriver_release}:${jriver_tag}" && \ # echo "Installing JRiver from repository ${jriver_release}:${jriver_tag}" && \
wget -q "http://dist.jriver.com/mediacenter@jriver.com.gpg.key" -O- | apt-key add - && \ # wget -q "http://dist.jriver.com/mediacenter@jriver.com.gpg.key" -O- | apt-key add - && \
wget http://dist.jriver.com/${jriver_tag}/mediacenter/mediacenter${jriver_release}.list -O /etc/apt/sources.list.d/mediacenter${jriver_release}.list && \ # wget http://dist.jriver.com/${jriver_tag}/mediacenter/mediacenter${jriver_release}.list -O /etc/apt/sources.list.d/mediacenter${jriver_release}.list && \
apt-get update && \ # apt-get update && \
add-pkg mediacenter${jriver_release}; \ # add-pkg mediacenter${jriver_release}; \
# Install from .deb URL # # Install from .deb URL
else \ # else \
echo "Installing JRiver from URL: ${deb_url}" && \ # echo "Installing JRiver from URL: ${deb_url}" && \
wget -q -O "jrivermc.deb" ${deb_url} && \ # wget -q -O "jrivermc.deb" ${deb_url} && \
add-pkg "./jrivermc.deb"; \ # add-pkg "./jrivermc.deb"; \
fi && \ # fi && \
# Cleanup # # Cleanup
del-pkg build-dependencies && \ # del-pkg build-dependencies && \
rm -rf /tmp/* /tmp/.[!.]* # rm -rf /tmp/* /tmp/.[!.]*
# Add rootfs # # Add rootfs
COPY rootfs/ / # COPY rootfs/ /
VOLUME ["/config"] # VOLUME ["/config"]
# Application Icon # # Application Icon
RUN \ # RUN \
APP_ICON_URL=https://gitlab.com/shiomax/jrivermc-docker/raw/master/assets/Application.png && \ # APP_ICON_URL=https://gitlab.com/shiomax/jrivermc-docker/raw/master/assets/Application.png && \
install_app_icon.sh "$APP_ICON_URL" # install_app_icon.sh "$APP_ICON_URL"
# Various configuration vars # # Various configuration vars
ENV KEEP_APP_RUNNING=1 \ # ENV KEEP_APP_RUNNING=1 \
DISPLAY_WIDTH=1280 \ # DISPLAY_WIDTH=1280 \
DISPLAY_HEIGHT=768 \ # DISPLAY_HEIGHT=768 \
APP_NAME="JRiver MediaCenter ${jriver_release}" \ # APP_NAME="JRiver MediaCenter ${jriver_release}" \
MAXIMIZE_POPUPS=0 \ # MAXIMIZE_POPUPS=0 \
S6_KILL_GRACETIME=8000 # S6_KILL_GRACETIME=8000
# Modify startapp.sh and rc.xml with JRiver version # # Modify startapp.sh and rc.xml with JRiver version
RUN sed-patch s/%%MC_VERSION%%/${jriver_release}/g \ # RUN sed-patch s/%%MC_VERSION%%/${jriver_release}/g \
/startapp.sh && \ # /startapp.sh && \
sed-patch s/%%MC_VERSION%%/${jriver_release}/g \ # sed-patch s/%%MC_VERSION%%/${jriver_release}/g \
/etc/xdg/openbox/rc.xml # /etc/xdg/openbox/rc.xml
EXPOSE 5800 5900 52100 52101 52199 1900/udp # EXPOSE 5800 5900 52100 52101 52199 1900/udp
# Metadata. # # Metadata.
LABEL \ # LABEL \
org.label-schema.name="jrivermc${jriver_release}" \ # org.label-schema.name="jrivermc${jriver_release}" \
org.label-schema.description="Docker image for JRiver Media Center ${jriver_release}." \ # org.label-schema.description="Docker image for JRiver Media Center ${jriver_release}." \
org.label-schema.version="${image_version}" \ # org.label-schema.version="${image_version}" \
org.label-schema.vcs-url="https://gitlab.com/shiomax/jrivermc-docker" \ # org.label-schema.vcs-url="https://gitlab.com/shiomax/jrivermc-docker" \
org.label-schema.schema-version="1.0" # org.label-schema.schema-version="1.0"
# installPackage buildah podman # installPackage buildah podman
# cnt=$(buildah from docker.io/jlesage/baseimage-gui:debian-10) # cnt=$(buildah from docker.io/jlesage/baseimage-gui:debian-10)
@@ -1464,7 +1468,7 @@ main() {
# Install RPM # Install RPM
if [[ -v _install && "$_install" == "rpm" ]]; then if [[ -v _install && "$_install" == "rpm" ]]; then
if installPackage --nocheck --nogpgcheck "$_mcrpm"; then if installPackage --nocheck --nogpgcheck --skip-broken "$_mcrpm"; then
echo "JRiver Media Center installed successfully" echo "JRiver Media Center installed successfully"
else else
err "JRiver Media Center installation failed" err "JRiver Media Center installation failed"