Compare commits

...

59 Commits

Author SHA1 Message Date
304863d805 Revert "Patch according to bug #1986 Continuity counter error again https://tvheadend.org/issues/1986"
All checks were successful
continuous-integration/drone/push Build is passing
This reverts commit 4e9319e83a.
2023-09-27 16:04:04 +02:00
4e9319e83a Patch according to bug #1986 Continuity counter error again https://tvheadend.org/issues/1986
All checks were successful
continuous-integration/drone/push Build is passing
2023-09-27 10:43:26 +02:00
74e7f97547 Drone build.
All checks were successful
continuous-integration/drone/push Build is passing
2023-09-27 10:18:03 +02:00
LinuxServer-CI
b44d3ae77a Bot Updating Package Versions 2023-09-23 15:39:19 +00:00
LinuxServer-CI
c04b7358d4 Bot Updating Package Versions 2023-09-21 08:19:20 +00:00
LinuxServer-CI
07ee65380c Bot Updating Templated Files 2023-09-21 08:09:49 +00:00
Adam
36c98ec5a1 Merge pull request #239 from linuxserver/json-xs 2023-09-21 09:07:26 +01:00
TheSpad
04932f5329 Add perl-json-xs package 2023-09-20 20:32:11 +01:00
LinuxServer-CI
0b9a441358 Bot Updating Package Versions 2023-09-16 15:40:16 +00:00
LinuxServer-CI
26f78641ce Bot Updating Package Versions 2023-09-02 15:41:40 +00:00
LinuxServer-CI
5441fd6ad5 Bot Updating Package Versions 2023-08-26 15:39:32 +00:00
LinuxServer-CI
145b6e0916 Bot Updating Package Versions 2023-08-19 15:39:33 +00:00
LinuxServer-CI
b125879e81 Bot Updating Package Versions 2023-08-12 15:36:38 +00:00
LinuxServer-CI
83549962e6 Bot Updating Package Versions 2023-08-05 15:39:07 +00:00
LinuxServer-CI
0f3f4e86fc Bot Updating Package Versions 2023-07-29 15:36:29 +00:00
LinuxServer-CI
6743a96b8c Bot Updating Package Versions 2023-07-22 15:41:21 +00:00
LinuxServer-CI
a52ae3cc62 Bot Updating Package Versions 2023-07-15 15:37:05 +00:00
LinuxServer-CI
5d6b555993 Bot Updating Package Versions 2023-07-08 15:39:40 +00:00
LinuxServer-CI
5f7a615e85 Bot Updating Package Versions 2023-07-01 15:42:39 +00:00
LinuxServer-CI
4958ea17c7 Bot Updating Templated Files 2023-07-01 15:35:17 +00:00
LinuxServer-CI
72ade5ed57 Bot Updating Package Versions 2023-06-24 15:41:01 +00:00
LinuxServer-CI
7362e8235d Bot Updating Package Versions 2023-06-17 15:37:09 +00:00
LinuxServer-CI
5be78ed5a6 Bot Updating Package Versions 2023-06-10 15:39:17 +00:00
LinuxServer-CI
d711efc058 Bot Updating Package Versions 2023-06-03 15:37:05 +00:00
LinuxServer-CI
57f5c82f03 Bot Updating Package Versions 2023-05-27 15:40:20 +00:00
LinuxServer-CI
0ae7678864 Bot Updating Package Versions 2023-05-22 22:39:52 +00:00
LinuxServer-CI
cb5d2afc49 Bot Updating Templated Files 2023-05-22 22:35:36 +00:00
Adam
2745879e4f Merge pull request #231 from linuxserver/perl-json 2023-05-22 23:33:16 +01:00
TheSpad
cdbd7d4080 Restore perl-json package 2023-05-22 19:21:44 +01:00
LinuxServer-CI
60b1f4555c Bot Updating Package Versions 2023-05-21 19:12:30 +00:00
LinuxServer-CI
93731a94d8 Bot Updating Package Versions 2023-05-20 21:48:36 +00:00
Adam
3eeeba16c1 Merge pull request #229 from linuxserver/perl-datetime 2023-05-20 22:42:20 +01:00
TheSpad
6e208ad59e Add missing perl-datetime-format-strptime 2023-05-20 21:50:13 +01:00
LinuxServer-CI
b03f694d47 Bot Updating Package Versions 2023-05-20 15:36:21 +00:00
LinuxServer-CI
dcc93f08db Bot Updating Package Versions 2023-05-19 17:29:54 +00:00
LinuxServer-CI
139184ed01 Bot Updating Templated Files 2023-05-19 17:23:57 +00:00
Adam
02298ceb0b Merge pull request #227 from linuxserver/xmltv 2023-05-19 18:22:01 +01:00
TheSpad
16a6f605b8 Remove obsolete XMLTV version arg 2023-05-18 18:21:37 +01:00
TheSpad
befef1f62c Don't try and build perl modules we're not going to use 2023-05-18 17:29:46 +01:00
TheSpad
58976c0865 Install XMLTV from Alpine repos 2023-05-18 17:22:57 +01:00
LinuxServer-CI
99c92673db Bot Updating Package Versions 2023-05-18 13:27:11 +00:00
Adam
3942e747ec Merge pull request #226 from linuxserver/3.18 2023-05-18 14:02:56 +01:00
TheSpad
09a5492c00 Rebase to Alpine 3.18 2023-05-18 11:31:19 +01:00
LinuxServer-CI
bf96299763 Bot Updating Package Versions 2023-05-06 15:45:01 +00:00
LinuxServer-CI
2f5ba232b3 Bot Updating Templated Files 2023-04-29 10:36:42 -05:00
LinuxServer-CI
e908baf512 Bot Updating Templated Files 2023-04-29 10:35:08 -05:00
LinuxServer-CI
ba4ea42004 Bot Updating Package Versions 2023-04-22 10:46:53 -05:00
LinuxServer-CI
9eb549257c Bot Updating Package Versions 2023-04-15 17:46:32 +02:00
LinuxServer-CI
9d937649a3 Bot Updating Package Versions 2023-04-08 17:50:10 +02:00
LinuxServer-CI
fb3cf77ee1 Bot Updating Package Versions 2023-04-02 10:13:37 -05:00
LinuxServer-CI
ba4c2d4ddf Bot Updating Templated Files 2023-04-02 10:01:59 -05:00
LinuxServer-CI
872a422b3b Bot Updating Templated Files 2023-04-02 10:00:27 -05:00
LinuxServer-CI
0fc26ae6d2 Bot Updating Templated Files 2023-04-02 09:58:49 -05:00
LinuxServer-CI
86630cc696 Bot Updating Package Versions 2023-03-28 13:31:01 -05:00
aptalca
e6e49062ec Merge pull request #221 from linuxserver/piconbuild
extract picons during build
2023-03-28 14:13:23 -04:00
LinuxServer-CI
d7e8758b7d Bot Updating Package Versions 2023-03-26 10:07:35 -05:00
aptalca
a1c3f4e8a9 fix lsiown command 2023-03-17 14:01:28 -04:00
aptalca
fa7487747d Use lsiown to fix perms 2023-03-17 10:00:17 -04:00
aptalca
cf936490b9 extract picons during build 2023-03-17 09:43:24 -04:00
19 changed files with 581 additions and 740 deletions

16
.drone.yml Normal file
View File

@@ -0,0 +1,16 @@
kind: pipeline
name: default
steps:
- name: docker
image: plugins/docker
settings:
registry: https://git.ivasoft.cz
username:
from_secret: repo_user
password:
from_secret: repo_pass
repo: git.ivasoft.cz/sw/docker-tvheadend
tags:
- latest
- ${DRONE_TAG:-latest}

View File

@@ -1,12 +0,0 @@
name: Comment on invalid interaction
on:
issues:
types:
- labeled
jobs:
add-comment-on-invalid:
if: github.event.label.name == 'invalid'
permissions:
issues: write
uses: linuxserver/github-workflows/.github/workflows/invalid-interaction-helper.yml@v1
secrets: inherit

16
.github/workflows/call_issue_pr_tracker.yml vendored Executable file
View File

@@ -0,0 +1,16 @@
name: Issue & PR Tracker
on:
issues:
types: [opened,reopened,labeled,unlabeled,closed]
pull_request_target:
types: [opened,reopened,review_requested,review_request_removed,labeled,unlabeled,closed]
pull_request_review:
types: [submitted,edited,dismissed]
jobs:
manage-project:
permissions:
issues: write
uses: linuxserver/github-workflows/.github/workflows/issue-pr-tracker.yml@v1
secrets: inherit

13
.github/workflows/call_issues_cron.yml vendored Executable file
View File

@@ -0,0 +1,13 @@
name: Mark stale issues and pull requests
on:
schedule:
- cron: '27 13 * * *'
workflow_dispatch:
jobs:
stale:
permissions:
issues: write
pull-requests: write
uses: linuxserver/github-workflows/.github/workflows/issues-cron.yml@v1
secrets: inherit

View File

@@ -14,9 +14,11 @@ jobs:
run: | run: |
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_TVHEADEND_MASTER }}" ]; then if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_TVHEADEND_MASTER }}" ]; then
echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_TVHEADEND_MASTER is set; skipping trigger. ****" echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_TVHEADEND_MASTER is set; skipping trigger. ****"
echo "Github secret \`PAUSE_EXTERNAL_TRIGGER_TVHEADEND_MASTER\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi fi
echo "**** External trigger running off of master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_TVHEADEND_MASTER\". ****" echo "**** External trigger running off of master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_TVHEADEND_MASTER\". ****"
echo "External trigger running off of master branch. To disable this trigger, set a Github secret named \`PAUSE_EXTERNAL_TRIGGER_TVHEADEND_MASTER\`" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving external version ****" echo "**** Retrieving external version ****"
EXT_RELEASE=$(curl -u "${{ secrets.CR_USER }}:${{ secrets.CR_PAT }}" -sX GET "https://api.github.com/repos/tvheadend/tvheadend/commits/master" | jq -r '. | .sha' | cut -c1-8) EXT_RELEASE=$(curl -u "${{ secrets.CR_USER }}:${{ secrets.CR_PAT }}" -sX GET "https://api.github.com/repos/tvheadend/tvheadend/commits/master" | jq -r '. | .sha' | cut -c1-8)
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
@@ -30,6 +32,7 @@ jobs:
fi fi
EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g') EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
echo "**** External version: ${EXT_RELEASE} ****" echo "**** External version: ${EXT_RELEASE} ****"
echo "External version: ${EXT_RELEASE}" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving last pushed version ****" echo "**** Retrieving last pushed version ****"
image="linuxserver/tvheadend" image="linuxserver/tvheadend"
tag="latest" tag="latest"
@@ -65,14 +68,18 @@ jobs:
exit 1 exit 1
fi fi
echo "**** Last pushed version: ${IMAGE_VERSION} ****" echo "**** Last pushed version: ${IMAGE_VERSION} ****"
echo "Last pushed version: ${IMAGE_VERSION}" >> $GITHUB_STEP_SUMMARY
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
echo "**** Version ${EXT_RELEASE} already pushed, exiting ****" echo "**** Version ${EXT_RELEASE} already pushed, exiting ****"
echo "Version ${EXT_RELEASE} already pushed, exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-tvheadend/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-tvheadend/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****" echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****"
echo "New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
else else
echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****" echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****"
echo "New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build" >> $GITHUB_STEP_SUMMARY
response=$(curl -iX POST \ response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-tvheadend/job/master/buildWithParameters?PACKAGE_CHECK=false \ https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-tvheadend/job/master/buildWithParameters?PACKAGE_CHECK=false \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
@@ -82,6 +89,7 @@ jobs:
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url') buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}" buildurl="${buildurl%$'\r'}"
echo "**** Jenkins job build url: ${buildurl} ****" echo "**** Jenkins job build url: ${buildurl} ****"
echo "Jenkins job build url: ${buildurl}" >> $GITHUB_STEP_SUMMARY
echo "**** Attempting to change the Jenkins job description ****" echo "**** Attempting to change the Jenkins job description ****"
curl -iX POST \ curl -iX POST \
"${buildurl}submitDescription" \ "${buildurl}submitDescription" \

View File

@@ -2,7 +2,7 @@ name: External Trigger Scheduler
on: on:
schedule: schedule:
- cron: '03 * * * *' - cron: '39 * * * *'
workflow_dispatch: workflow_dispatch:
jobs: jobs:
@@ -17,18 +17,18 @@ jobs:
run: | run: |
echo "**** Branches found: ****" echo "**** Branches found: ****"
git for-each-ref --format='%(refname:short)' refs/remotes git for-each-ref --format='%(refname:short)' refs/remotes
echo "**** Pulling the yq docker image ****"
docker pull ghcr.io/linuxserver/yq
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes) for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do do
br=$(echo "$br" | sed 's|origin/||g') br=$(echo "$br" | sed 's|origin/||g')
echo "**** Evaluating branch ${br} ****" echo "**** Evaluating branch ${br} ****"
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-tvheadend/${br}/jenkins-vars.yml \ ls_jenkins_vars=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-tvheadend/${br}/jenkins-vars.yml)
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch) ls_branch=$(echo "${ls_jenkins_vars}" | yq -r '.ls_branch')
if [ "$br" == "$ls_branch" ]; then ls_trigger=$(echo "${ls_jenkins_vars}" | yq -r '.external_type')
echo "**** Branch ${br} appears to be live; checking workflow. ****" if [[ "${br}" == "${ls_branch}" ]] && [[ "${ls_trigger}" != "os" ]]; then
echo "**** Branch ${br} appears to be live and trigger is not os; checking workflow. ****"
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-tvheadend/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-tvheadend/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then
echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****." echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****."
echo "Triggering external trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY
curl -iX POST \ curl -iX POST \
-H "Authorization: token ${{ secrets.CR_PAT }}" \ -H "Authorization: token ${{ secrets.CR_PAT }}" \
-H "Accept: application/vnd.github.v3+json" \ -H "Accept: application/vnd.github.v3+json" \
@@ -36,8 +36,10 @@ jobs:
https://api.github.com/repos/linuxserver/docker-tvheadend/actions/workflows/external_trigger.yml/dispatches https://api.github.com/repos/linuxserver/docker-tvheadend/actions/workflows/external_trigger.yml/dispatches
else else
echo "**** Workflow doesn't exist; skipping trigger. ****" echo "**** Workflow doesn't exist; skipping trigger. ****"
echo "Skipping branch ${br} due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY
fi fi
else else
echo "**** ${br} appears to be a dev branch; skipping trigger. ****" echo "**** ${br} is either a dev branch, or has no external version; skipping trigger. ****"
echo "Skipping branch ${br} due to being detected as dev branch or having no external version." >> $GITHUB_STEP_SUMMARY
fi fi
done done

View File

@@ -14,13 +14,16 @@ jobs:
run: | run: |
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_TVHEADEND_MASTER }}" ]; then if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_TVHEADEND_MASTER }}" ]; then
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_TVHEADEND_MASTER is set; skipping trigger. ****" echo "**** Github secret PAUSE_PACKAGE_TRIGGER_TVHEADEND_MASTER is set; skipping trigger. ****"
echo "Github secret \`PAUSE_PACKAGE_TRIGGER_TVHEADEND_MASTER\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi fi
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-tvheadend/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-tvheadend/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****" echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****"
echo "There already seems to be an active build on Jenkins; skipping package trigger" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi fi
echo "**** Package trigger running off of master branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_TVHEADEND_MASTER\". ****" echo "**** Package trigger running off of master branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_TVHEADEND_MASTER\". ****"
echo "Package trigger running off of master branch. To disable, set a Github secret named \`PAUSE_PACKAGE_TRIGGER_TVHEADEND_MASTER\`" >> $GITHUB_STEP_SUMMARY
response=$(curl -iX POST \ response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-tvheadend/job/master/buildWithParameters?PACKAGE_CHECK=true \ https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-tvheadend/job/master/buildWithParameters?PACKAGE_CHECK=true \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
@@ -30,6 +33,7 @@ jobs:
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url') buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}" buildurl="${buildurl%$'\r'}"
echo "**** Jenkins job build url: ${buildurl} ****" echo "**** Jenkins job build url: ${buildurl} ****"
echo "Jenkins job build url: ${buildurl}" >> $GITHUB_STEP_SUMMARY
echo "**** Attempting to change the Jenkins job description ****" echo "**** Attempting to change the Jenkins job description ****"
curl -iX POST \ curl -iX POST \
"${buildurl}submitDescription" \ "${buildurl}submitDescription" \

View File

@@ -2,7 +2,7 @@ name: Package Trigger Scheduler
on: on:
schedule: schedule:
- cron: '52 14 * * 0' - cron: '25 15 * * 6'
workflow_dispatch: workflow_dispatch:
jobs: jobs:
@@ -17,18 +17,16 @@ jobs:
run: | run: |
echo "**** Branches found: ****" echo "**** Branches found: ****"
git for-each-ref --format='%(refname:short)' refs/remotes git for-each-ref --format='%(refname:short)' refs/remotes
echo "**** Pulling the yq docker image ****"
docker pull ghcr.io/linuxserver/yq
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes) for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do do
br=$(echo "$br" | sed 's|origin/||g') br=$(echo "$br" | sed 's|origin/||g')
echo "**** Evaluating branch ${br} ****" echo "**** Evaluating branch ${br} ****"
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-tvheadend/${br}/jenkins-vars.yml \ ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-tvheadend/${br}/jenkins-vars.yml | yq -r '.ls_branch')
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch)
if [ "${br}" == "${ls_branch}" ]; then if [ "${br}" == "${ls_branch}" ]; then
echo "**** Branch ${br} appears to be live; checking workflow. ****" echo "**** Branch ${br} appears to be live; checking workflow. ****"
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-tvheadend/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-tvheadend/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then
echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****" echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****"
echo "Triggering package trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY
triggered_branches="${triggered_branches}${br} " triggered_branches="${triggered_branches}${br} "
curl -iX POST \ curl -iX POST \
-H "Authorization: token ${{ secrets.CR_PAT }}" \ -H "Authorization: token ${{ secrets.CR_PAT }}" \
@@ -38,9 +36,11 @@ jobs:
sleep 30 sleep 30
else else
echo "**** Workflow doesn't exist; skipping trigger. ****" echo "**** Workflow doesn't exist; skipping trigger. ****"
echo "Skipping branch ${br} due to no package trigger workflow present." >> $GITHUB_STEP_SUMMARY
fi fi
else else
echo "**** ${br} appears to be a dev branch; skipping trigger. ****" echo "**** ${br} appears to be a dev branch; skipping trigger. ****"
echo "Skipping branch ${br} due to being detected as dev branch." >> $GITHUB_STEP_SUMMARY
fi fi
done done
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****" echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"

View File

@@ -1,9 +1,10 @@
name: Permission check name: Permission check
on: on:
pull_request: pull_request_target:
paths: paths:
- '**/run' - '**/run'
- '**/finish' - '**/finish'
- '**/check'
jobs: jobs:
permission_check: permission_check:
uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1 uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1

View File

@@ -1,23 +0,0 @@
name: Mark stale issues and pull requests
on:
schedule:
- cron: "30 1 * * *"
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v6.0.1
with:
stale-issue-message: "This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
stale-pr-message: "This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
stale-issue-label: 'no-issue-activity'
stale-pr-label: 'no-pr-activity'
days-before-stale: 30
days-before-close: 365
exempt-issue-labels: 'awaiting-approval,work-in-progress'
exempt-pr-labels: 'awaiting-approval,work-in-progress'
repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,19 +1,24 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine:3.17 as buildstage ############## picons stage ##############
# built by https://github.com/linuxserver/picons-builder
FROM ghcr.io/linuxserver/picons-builder as piconsstage
FROM ghcr.io/linuxserver/baseimage-alpine:3.18 as buildstage
############## build stage ############## ############## build stage ##############
# package versions # package versions
ARG ARGTABLE_VER="2.13" ARG ARGTABLE_VER="2.13"
ARG XMLTV_VER="v1.0.0"
# environment settings # environment settings
ARG TZ="Etc/UTC" ARG TZ="Etc/UTC"
ARG TVHEADEND_COMMIT ARG TVHEADEND_COMMIT
ENV HOME="/config" ENV HOME="/config"
# copy patches # copy patches and picons
COPY patches/ /tmp/patches/ COPY patches/ /tmp/patches/
COPY --from=piconsstage /picons.tar.bz2 /picons.tar.bz2
RUN \ RUN \
echo "**** install build packages ****" && \ echo "**** install build packages ****" && \
@@ -42,58 +47,6 @@ RUN \
opus-dev \ opus-dev \
patch \ patch \
pcre2-dev \ pcre2-dev \
perl-archive-zip \
perl-boolean \
perl-capture-tiny \
perl-cgi \
perl-compress-raw-zlib \
perl-date-manip \
perl-datetime \
perl-datetime-format-strptime \
perl-datetime-timezone \
perl-dbd-sqlite \
perl-dbi \
perl-dev \
perl-digest-sha1 \
perl-doc \
perl-file-slurp \
perl-file-temp \
perl-file-which \
perl-getopt-long \
perl-html-parser \
perl-html-tree \
perl-http-cookies \
perl-io \
perl-io-html \
perl-io-socket-ssl \
perl-io-stringy \
perl-json \
perl-json-xs \
perl-libwww \
perl-lingua-en-numbers-ordinate \
perl-lingua-preferred \
perl-list-moreutils \
perl-lwp-useragent-determined \
perl-module-build \
perl-module-pluggable \
perl-net-ssleay \
perl-parse-recdescent \
perl-path-class \
perl-scalar-list-utils \
perl-term-progressbar \
perl-term-readkey \
perl-test-exception \
perl-test-requires \
perl-timedate \
perl-try-tiny \
perl-unicode-string \
perl-xml-libxml \
perl-xml-libxslt \
perl-xml-parser \
perl-xml-sax \
perl-xml-treepp \
perl-xml-twig \
perl-xml-writer \
pkgconf \ pkgconf \
pngquant \ pngquant \
python3 \ python3 \
@@ -108,29 +61,6 @@ RUN \
rm -rf /usr/include/iconv.h && \ rm -rf /usr/include/iconv.h && \
cp /usr/include/gnu-libiconv/iconv.h /usr/include/iconv.h cp /usr/include/gnu-libiconv/iconv.h /usr/include/iconv.h
RUN \
echo "**** install perl modules for xmltv ****" && \
curl -s -L https://cpanmin.us | perl - App::cpanminus && \
cpanm --installdeps /tmp/patches
RUN \
echo "**** compile XMLTV ****" && \
git clone https://github.com/XMLTV/xmltv.git /tmp/xmltv && \
cd /tmp/xmltv && \
git checkout ${XMLTV_VER} && \
echo "**** Perl 5.26 fixes for XMTLV ****" && \
sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_latex && \
sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_text && \
sed "s/\(lib\/set_share_dir.pl';\)/.\/\1/" -i grab/it/tv_grab_it.PL && \
sed "s/\(filter\/Grep.pm';\)/.\/\1/" -i filter/tv_grep.PL && \
sed "s/\(lib\/XMLTV.pm.in';\)/.\/\1/" -i lib/XMLTV.pm.PL && \
sed "s/\(lib\/Ask\/Term.pm';\)/.\/\1/" -i Makefile.PL && \
PERL5LIB=`pwd` && \
echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \
make -j 2 && \
make test && \
make DESTDIR=/tmp/xmltv-build install
RUN \ RUN \
echo "**** compile tvheadend ****" && \ echo "**** compile tvheadend ****" && \
if [ -z ${TVHEADEND_COMMIT+x} ]; then \ if [ -z ${TVHEADEND_COMMIT+x} ]; then \
@@ -211,13 +141,15 @@ RUN \
make -j 2 && \ make -j 2 && \
make DESTDIR=/tmp/comskip-build install make DESTDIR=/tmp/comskip-build install
############## picons stage ############## RUN \
# built by https://github.com/linuxserver/picons-builder echo "***** extract picons ****" && \
FROM ghcr.io/linuxserver/picons-builder as piconsstage mkdir -p /picons && \
tar xf \
/picons.tar.bz2 -C \
/picons
############## runtime stage ############## ############## runtime stage ##############
FROM ghcr.io/linuxserver/baseimage-alpine:3.17 FROM ghcr.io/linuxserver/baseimage-alpine:3.18
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -233,7 +165,14 @@ RUN \
apk add --no-cache \ apk add --no-cache \
bsd-compat-headers \ bsd-compat-headers \
ffmpeg \ ffmpeg \
ffmpeg4-libs \ ffmpeg4-libavcodec \
ffmpeg4-libavdevice \
ffmpeg4-libavfilter \
ffmpeg4-libavformat \
ffmpeg4-libavutil \
ffmpeg4-libpostproc \
ffmpeg4-libswresample \
ffmpeg4-libswscale \
gnu-libiconv \ gnu-libiconv \
libdvbcsa \ libdvbcsa \
libhdhomerun-libs \ libhdhomerun-libs \
@@ -248,72 +187,22 @@ RUN \
opus \ opus \
pcre2 \ pcre2 \
perl \ perl \
perl-archive-zip \
perl-boolean \
perl-capture-tiny \
perl-cgi \
perl-compress-raw-zlib \
perl-date-manip \
perl-datetime \
perl-datetime-format-strptime \ perl-datetime-format-strptime \
perl-datetime-timezone \
perl-dbd-sqlite \
perl-dbi \
perl-digest-sha1 \
perl-doc \
perl-file-slurp \
perl-file-temp \
perl-file-which \
perl-getopt-long \
perl-html-parser \
perl-html-tree \
perl-http-cookies \
perl-io \
perl-io-html \
perl-io-socket-ssl \
perl-io-stringy \
perl-json \ perl-json \
perl-json-xs \ perl-json-xs \
perl-libwww \
perl-lingua-en-numbers-ordinate \
perl-lingua-preferred \
perl-list-moreutils \
perl-lwp-useragent-determined \
perl-module-build \
perl-module-pluggable \
perl-net-ssleay \
perl-parse-recdescent \
perl-path-class \
perl-scalar-list-utils \
perl-term-progressbar \
perl-term-readkey \
perl-test-exception \
perl-test-requires \
perl-timedate \
perl-try-tiny \
perl-unicode-string \
perl-xml-libxml \
perl-xml-libxslt \
perl-xml-parser \
perl-xml-sax \
perl-xml-treepp \
perl-xml-twig \
perl-xml-writer \
py3-requests \ py3-requests \
python3 \ python3 \
uriparser \ uriparser \
x264 \ x264 \
x265 \ x265 \
xmltv \
zlib zlib
# copy local files and buildstage artifacts # copy local files and buildstage artifacts
COPY --from=buildstage /tmp/argtable-build/usr/ /usr/ COPY --from=buildstage /tmp/argtable-build/usr/ /usr/
COPY --from=buildstage /tmp/comskip-build/usr/ /usr/ COPY --from=buildstage /tmp/comskip-build/usr/ /usr/
COPY --from=buildstage /tmp/tvheadend-build/usr/ /usr/ COPY --from=buildstage /tmp/tvheadend-build/usr/ /usr/
COPY --from=buildstage /tmp/xmltv-build/usr/ /usr/ COPY --from=buildstage /picons /picons
COPY --from=buildstage /usr/local/share/man/ /usr/local/share/man/
COPY --from=buildstage /usr/local/share/perl5/ /usr/local/share/perl5/
COPY --from=piconsstage /picons.tar.bz2 /picons.tar.bz2
COPY root/ / COPY root/ /
# ports and volumes # ports and volumes

View File

@@ -1,19 +1,24 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.17 as buildstage ############## picons stage ##############
# built by https://github.com/linuxserver/picons-builder
FROM ghcr.io/linuxserver/picons-builder as piconsstage
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.18 as buildstage
############## build stage ############## ############## build stage ##############
# package versions # package versions
ARG ARGTABLE_VER="2.13" ARG ARGTABLE_VER="2.13"
ARG XMLTV_VER="v1.0.0"
# environment settings # environment settings
ARG TZ="Etc/UTC" ARG TZ="Etc/UTC"
ARG TVHEADEND_COMMIT ARG TVHEADEND_COMMIT
ENV HOME="/config" ENV HOME="/config"
# copy patches # copy patches and picons
COPY patches/ /tmp/patches/ COPY patches/ /tmp/patches/
COPY --from=piconsstage /picons.tar.bz2 /picons.tar.bz2
RUN \ RUN \
echo "**** install build packages ****" && \ echo "**** install build packages ****" && \
@@ -42,58 +47,6 @@ RUN \
opus-dev \ opus-dev \
patch \ patch \
pcre2-dev \ pcre2-dev \
perl-archive-zip \
perl-boolean \
perl-capture-tiny \
perl-cgi \
perl-compress-raw-zlib \
perl-date-manip \
perl-datetime \
perl-datetime-format-strptime \
perl-datetime-timezone \
perl-dbd-sqlite \
perl-dbi \
perl-dev \
perl-digest-sha1 \
perl-doc \
perl-file-slurp \
perl-file-temp \
perl-file-which \
perl-getopt-long \
perl-html-parser \
perl-html-tree \
perl-http-cookies \
perl-io \
perl-io-html \
perl-io-socket-ssl \
perl-io-stringy \
perl-json \
perl-json-xs \
perl-libwww \
perl-lingua-en-numbers-ordinate \
perl-lingua-preferred \
perl-list-moreutils \
perl-lwp-useragent-determined \
perl-module-build \
perl-module-pluggable \
perl-net-ssleay \
perl-parse-recdescent \
perl-path-class \
perl-scalar-list-utils \
perl-term-progressbar \
perl-term-readkey \
perl-test-exception \
perl-test-requires \
perl-timedate \
perl-try-tiny \
perl-unicode-string \
perl-xml-libxml \
perl-xml-libxslt \
perl-xml-parser \
perl-xml-sax \
perl-xml-treepp \
perl-xml-twig \
perl-xml-writer \
pkgconf \ pkgconf \
pngquant \ pngquant \
python3 \ python3 \
@@ -108,29 +61,6 @@ RUN \
rm -rf /usr/include/iconv.h && \ rm -rf /usr/include/iconv.h && \
cp /usr/include/gnu-libiconv/iconv.h /usr/include/iconv.h cp /usr/include/gnu-libiconv/iconv.h /usr/include/iconv.h
RUN \
echo "**** install perl modules for xmltv ****" && \
curl -s -L https://cpanmin.us | perl - App::cpanminus && \
cpanm --installdeps /tmp/patches
RUN \
echo "**** compile XMLTV ****" && \
git clone https://github.com/XMLTV/xmltv.git /tmp/xmltv && \
cd /tmp/xmltv && \
git checkout ${XMLTV_VER} && \
echo "**** Perl 5.26 fixes for XMTLV ****" && \
sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_latex && \
sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_text && \
sed "s/\(lib\/set_share_dir.pl';\)/.\/\1/" -i grab/it/tv_grab_it.PL && \
sed "s/\(filter\/Grep.pm';\)/.\/\1/" -i filter/tv_grep.PL && \
sed "s/\(lib\/XMLTV.pm.in';\)/.\/\1/" -i lib/XMLTV.pm.PL && \
sed "s/\(lib\/Ask\/Term.pm';\)/.\/\1/" -i Makefile.PL && \
PERL5LIB=`pwd` && \
echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \
make -j 2 && \
make test && \
make DESTDIR=/tmp/xmltv-build install
RUN \ RUN \
echo "**** compile tvheadend ****" && \ echo "**** compile tvheadend ****" && \
if [ -z ${TVHEADEND_COMMIT+x} ]; then \ if [ -z ${TVHEADEND_COMMIT+x} ]; then \
@@ -211,13 +141,16 @@ RUN \
make -j 2 && \ make -j 2 && \
make DESTDIR=/tmp/comskip-build install make DESTDIR=/tmp/comskip-build install
############## picons stage ############## RUN \
# built by https://github.com/linuxserver/picons-builder echo "***** extract picons ****" && \
FROM ghcr.io/linuxserver/picons-builder as piconsstage mkdir -p /picons && \
tar xf \
/picons.tar.bz2 -C \
/picons
############## runtime stage ############## ############## runtime stage ##############
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.17 FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.18
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -233,7 +166,14 @@ RUN \
apk add --no-cache \ apk add --no-cache \
bsd-compat-headers \ bsd-compat-headers \
ffmpeg \ ffmpeg \
ffmpeg4-libs \ ffmpeg4-libavcodec \
ffmpeg4-libavdevice \
ffmpeg4-libavfilter \
ffmpeg4-libavformat \
ffmpeg4-libavutil \
ffmpeg4-libpostproc \
ffmpeg4-libswresample \
ffmpeg4-libswscale \
gnu-libiconv \ gnu-libiconv \
libdvbcsa \ libdvbcsa \
libhdhomerun-libs \ libhdhomerun-libs \
@@ -246,72 +186,22 @@ RUN \
opus \ opus \
pcre2 \ pcre2 \
perl \ perl \
perl-archive-zip \
perl-boolean \
perl-capture-tiny \
perl-cgi \
perl-compress-raw-zlib \
perl-date-manip \
perl-datetime \
perl-datetime-format-strptime \ perl-datetime-format-strptime \
perl-datetime-timezone \
perl-dbd-sqlite \
perl-dbi \
perl-digest-sha1 \
perl-doc \
perl-file-slurp \
perl-file-temp \
perl-file-which \
perl-getopt-long \
perl-html-parser \
perl-html-tree \
perl-http-cookies \
perl-io \
perl-io-html \
perl-io-socket-ssl \
perl-io-stringy \
perl-json \ perl-json \
perl-json-xs \ perl-json-xs \
perl-libwww \
perl-lingua-en-numbers-ordinate \
perl-lingua-preferred \
perl-list-moreutils \
perl-lwp-useragent-determined \
perl-module-build \
perl-module-pluggable \
perl-net-ssleay \
perl-parse-recdescent \
perl-path-class \
perl-scalar-list-utils \
perl-term-progressbar \
perl-term-readkey \
perl-test-exception \
perl-test-requires \
perl-timedate \
perl-try-tiny \
perl-unicode-string \
perl-xml-libxml \
perl-xml-libxslt \
perl-xml-parser \
perl-xml-sax \
perl-xml-treepp \
perl-xml-twig \
perl-xml-writer \
py3-requests \ py3-requests \
python3 \ python3 \
uriparser \ uriparser \
x264 \ x264 \
x265 \ x265 \
xmltv \
zlib zlib
# copy local files and buildstage artifacts # copy local files and buildstage artifacts
COPY --from=buildstage /tmp/argtable-build/usr/ /usr/ COPY --from=buildstage /tmp/argtable-build/usr/ /usr/
COPY --from=buildstage /tmp/comskip-build/usr/ /usr/ COPY --from=buildstage /tmp/comskip-build/usr/ /usr/
COPY --from=buildstage /tmp/tvheadend-build/usr/ /usr/ COPY --from=buildstage /tmp/tvheadend-build/usr/ /usr/
COPY --from=buildstage /tmp/xmltv-build/usr/ /usr/ COPY --from=buildstage /picons /picons
COPY --from=buildstage /usr/local/share/man/ /usr/local/share/man/
COPY --from=buildstage /usr/local/share/perl5/ /usr/local/share/perl5/
COPY --from=piconsstage /picons.tar.bz2 /picons.tar.bz2
COPY root/ / COPY root/ /
# ports and volumes # ports and volumes

214
Jenkinsfile vendored
View File

@@ -42,10 +42,16 @@ pipeline {
// Setup all the basic environment variables needed for the build // Setup all the basic environment variables needed for the build
stage("Set ENV Variables base"){ stage("Set ENV Variables base"){
steps{ steps{
sh '''#! /bin/bash
containers=$(docker ps -aq)
if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || : '''
script{ script{
env.EXIT_STATUS = '' env.EXIT_STATUS = ''
env.LS_RELEASE = sh( env.LS_RELEASE = sh(
script: '''docker run --rm ghcr.io/linuxserver/alexeiled-skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':latest 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''', script: '''docker run --rm quay.io/skopeo/stable:v1 inspect docker://ghcr.io/${LS_USER}/${CONTAINER_NAME}:latest 2>/dev/null | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
returnStdout: true).trim() returnStdout: true).trim()
env.LS_RELEASE_NOTES = sh( env.LS_RELEASE_NOTES = sh(
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''', script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
@@ -59,7 +65,7 @@ pipeline {
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
env.PULL_REQUEST = env.CHANGE_ID env.PULL_REQUEST = env.CHANGE_ID
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/stale.yml ./.github/workflows/call_invalid_helper.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml' env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml'
} }
script{ script{
env.LS_RELEASE_NUMBER = sh( env.LS_RELEASE_NUMBER = sh(
@@ -213,12 +219,12 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} }
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
@@ -238,19 +244,16 @@ pipeline {
script{ script{
env.SHELLCHECK_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/shellcheck-result.xml' env.SHELLCHECK_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/shellcheck-result.xml'
} }
sh '''curl -sL https://raw.githubusercontent.com/linuxserver/docker-shellcheck/master/checkrun.sh | /bin/bash''' sh '''curl -sL https://raw.githubusercontent.com/linuxserver/docker-jenkins-builder/master/checkrun.sh | /bin/bash'''
sh '''#! /bin/bash sh '''#! /bin/bash
set -e
docker pull ghcr.io/linuxserver/lsiodev-spaces-file-upload:latest
docker run --rm \ docker run --rm \
-e DESTINATION=\"${IMAGE}/${META_TAG}/shellcheck-result.xml\" \ -v ${WORKSPACE}:/mnt \
-e FILE_NAME="shellcheck-result.xml" \ -e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
-e MIMETYPE="text/xml" \ -e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
-v ${WORKSPACE}:/mnt \ ghcr.io/linuxserver/baseimage-alpine:3.17 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
-e SECRET_KEY=\"${S3_SECRET}\" \ apk add --no-cache py3-pip && \
-e ACCESS_KEY=\"${S3_KEY}\" \ pip install s3cmd && \
-t ghcr.io/linuxserver/lsiodev-spaces-file-upload:latest \ s3cmd put --no-preserve --acl-public -m text/xml /mnt/shellcheck-result.xml s3://ci-tests.linuxserver.io/${IMAGE}/${META_TAG}/shellcheck-result.xml" || :'''
python /upload.py'''
} }
} }
} }
@@ -287,7 +290,7 @@ pipeline {
echo "Jenkinsfile is up to date." echo "Jenkinsfile is up to date."
fi fi
# Stage 2 - Delete old templates # Stage 2 - Delete old templates
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md\n.github/ISSUE_TEMPLATE/issue.bug.md\n.github/ISSUE_TEMPLATE/issue.feature.md" OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml Dockerfile.armhf"
for i in ${OLD_TEMPLATES}; do for i in ${OLD_TEMPLATES}; do
if [[ -f "${i}" ]]; then if [[ -f "${i}" ]]; then
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}" TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
@@ -304,7 +307,7 @@ pipeline {
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Deleting old templates" echo "Deleting old and deprecated templates"
rm -Rf ${TEMPDIR} rm -Rf ${TEMPDIR}
exit 0 exit 0
else else
@@ -323,12 +326,13 @@ pipeline {
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || : cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
cd ${TEMPDIR}/repo/${LS_REPO}/ cd ${TEMPDIR}/repo/${LS_REPO}/
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
echo ".jenkins-external" >> .gitignore echo ".jenkins-external" >> .gitignore
git add .gitignore git add .gitignore
fi fi
git add ${TEMPLATED_FILES} git add readme-vars.yml ${TEMPLATED_FILES}
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
@@ -349,6 +353,8 @@ pipeline {
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
fi fi
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then
cd ${TEMPDIR}/unraid/templates/ cd ${TEMPDIR}/unraid/templates/
@@ -389,6 +395,26 @@ pipeline {
} }
} }
} }
// If this is a master build check the S6 service file perms
stage("Check S6 Service file Permissions"){
when {
branch "master"
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
steps {
script{
sh '''#! /bin/bash
WRONG_PERM=$(find ./ -path "./.git" -prune -o \\( -name "run" -o -name "finish" -o -name "check" \\) -not -perm -u=x,g=x,o=x -print)
if [[ -n "${WRONG_PERM}" ]]; then
echo "The following S6 service files are missing the executable bit; canceling the faulty build: ${WRONG_PERM}"
exit 1
else
echo "S6 service file perms look good."
fi '''
}
}
}
/* ####################### /* #######################
GitLab Mirroring GitLab Mirroring
####################### */ ####################### */
@@ -420,8 +446,7 @@ pipeline {
} }
steps{ steps{
sh '''#! /bin/bash sh '''#! /bin/bash
set -e PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/tvheadend") | .uuid' || :)
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/tvheadend") | .uuid')
if [ -z "${PACKAGE_UUID}" ]; then if [ -z "${PACKAGE_UUID}" ]; then
echo "Adding package to Scarf.sh" echo "Adding package to Scarf.sh"
curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \ curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \
@@ -531,9 +556,12 @@ pipeline {
retry(5) { retry(5) {
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}" sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
} }
sh '''docker rmi \ sh '''#! /bin/bash
${IMAGE}:arm64v8-${META_TAG} \ containers=$(docker ps -aq)
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :''' if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || : '''
} }
} }
} }
@@ -594,13 +622,6 @@ pipeline {
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
sh '''#! /bin/bash
echo "Packages were updated. Cleaning up the image and exiting."
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
docker rmi ${IMAGE}:amd64-${META_TAG}
else
docker rmi ${IMAGE}:${META_TAG}
fi'''
script{ script{
env.EXIT_STATUS = 'ABORTED' env.EXIT_STATUS = 'ABORTED'
} }
@@ -618,13 +639,6 @@ pipeline {
} }
} }
steps { steps {
sh '''#! /bin/bash
echo "There are no package updates. Cleaning up the image and exiting."
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
docker rmi ${IMAGE}:amd64-${META_TAG}
else
docker rmi ${IMAGE}:${META_TAG}
fi'''
script{ script{
env.EXIT_STATUS = 'ABORTED' env.EXIT_STATUS = 'ABORTED'
} }
@@ -646,6 +660,7 @@ pipeline {
]) { ]) {
script{ script{
env.CI_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/index.html' env.CI_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/index.html'
env.CI_JSON_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/report.json'
} }
sh '''#! /bin/bash sh '''#! /bin/bash
set -e set -e
@@ -670,8 +685,6 @@ pipeline {
-e WEB_SCREENSHOT=\"${CI_WEB}\" \ -e WEB_SCREENSHOT=\"${CI_WEB}\" \
-e WEB_AUTH=\"${CI_AUTH}\" \ -e WEB_AUTH=\"${CI_AUTH}\" \
-e WEB_PATH=\"${CI_WEBPATH}\" \ -e WEB_PATH=\"${CI_WEBPATH}\" \
-e DO_REGION="ams3" \
-e DO_BUCKET="lsio-ci" \
-t ghcr.io/linuxserver/ci:latest \ -t ghcr.io/linuxserver/ci:latest \
python3 test_build.py''' python3 test_build.py'''
} }
@@ -724,17 +737,6 @@ pipeline {
done done
''' '''
} }
sh '''#! /bin/bash
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
docker rmi \
${DELETEIMAGE}:${META_TAG} \
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
${DELETEIMAGE}:latest || :
if [ -n "${SEMVER}" ]; then
docker rmi ${DELETEIMAGE}:${SEMVER} || :
fi
done
'''
} }
} }
} }
@@ -805,6 +807,16 @@ pipeline {
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8 docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
fi fi
token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token')
digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-latest")
if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || :
docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest
fi
docker manifest push --purge ${MANIFESTIMAGE}:latest docker manifest push --purge ${MANIFESTIMAGE}:latest
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
@@ -814,24 +826,6 @@ pipeline {
done done
''' '''
} }
sh '''#! /bin/bash
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
docker rmi \
${DELETEIMAGE}:amd64-${META_TAG} \
${DELETEIMAGE}:amd64-latest \
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
${DELETEIMAGE}:arm64v8-${META_TAG} \
${DELETEIMAGE}:arm64v8-latest \
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
if [ -n "${SEMVER}" ]; then
docker rmi \
${DELETEIMAGE}:amd64-${SEMVER} \
${DELETEIMAGE}:arm64v8-${SEMVER} || :
fi
done
docker rmi \
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :
'''
} }
} }
} }
@@ -902,12 +896,78 @@ pipeline {
stage('Pull Request Comment') { stage('Pull Request Comment') {
when { when {
not {environment name: 'CHANGE_ID', value: ''} not {environment name: 'CHANGE_ID', value: ''}
environment name: 'CI', value: 'true'
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/issues/${PULL_REQUEST}/comments \ sh '''#! /bin/bash
-d '{"body": "I am a bot, here are the test results for this PR: \\n'${CI_URL}' \\n'${SHELLCHECK_URL}'"}' ''' # Function to retrieve JSON data from URL
get_json() {
local url="$1"
local response=$(curl -s "$url")
if [ $? -ne 0 ]; then
echo "Failed to retrieve JSON data from $url"
return 1
fi
local json=$(echo "$response" | jq .)
if [ $? -ne 0 ]; then
echo "Failed to parse JSON data from $url"
return 1
fi
echo "$json"
}
build_table() {
local data="$1"
# Get the keys in the JSON data
local keys=$(echo "$data" | jq -r 'to_entries | map(.key) | .[]')
# Check if keys are empty
if [ -z "$keys" ]; then
echo "JSON report data does not contain any keys or the report does not exist."
return 1
fi
# Build table header
local header="| Tag | Passed |\\n| --- | --- |\\n"
# Loop through the JSON data to build the table rows
local rows=""
for build in $keys; do
local status=$(echo "$data" | jq -r ".[\\"$build\\"].test_success")
if [ "$status" = "true" ]; then
status="✅"
else
status="❌"
fi
local row="| "$build" | "$status" |\\n"
rows="${rows}${row}"
done
local table="${header}${rows}"
local escaped_table=$(echo "$table" | sed 's/\"/\\\\"/g')
echo "$escaped_table"
}
if [[ "${CI}" = "true" ]]; then
# Retrieve JSON data from URL
data=$(get_json "$CI_JSON_URL")
# Create table from JSON data
table=$(build_table "$data")
echo -e "$table"
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
-d "{\\"body\\": \\"I am a bot, here are the test results for this PR: \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"
else
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
-d "{\\"body\\": \\"I am a bot, here is the pushed image/manifest for this PR: \\n\\n\\`${GITHUBIMAGE}:${META_TAG}\\`\\"}"
fi
'''
} }
} }
} }
@@ -933,6 +993,14 @@ pipeline {
} }
} }
cleanup { cleanup {
sh '''#! /bin/bash
echo "Performing docker system prune!!"
containers=$(docker ps -aq)
if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || :
'''
cleanWs() cleanWs()
} }
} }

View File

@@ -301,6 +301,10 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **20.09.23:** - Add perl-json-xs package.
* **18.05.23:** - Install XMLTV from Alpine repos.
* **18.05.23:** - Rebase to Alpine 3.18.
* **17.03.23:** - Extract picons during build instead of init.
* **23.02.23:** - Rebase to Alpine 3.17, migrate to s6v3, drop armhf support. * **23.02.23:** - Rebase to Alpine 3.17, migrate to s6v3, drop armhf support.
* **31.08.22:** - Update sample env vars and how RUN_OPTS are handled. * **31.08.22:** - Update sample env vars and how RUN_OPTS are handled.
* **19.08.22:** - Switch to new picons builder. * **19.08.22:** - Switch to new picons builder.

View File

@@ -1,273 +1,288 @@
NAME VERSION TYPE NAME VERSION TYPE
alpine-baselayout 3.4.0-r0 apk alpine-baselayout 3.4.3-r1 apk
alpine-baselayout-data 3.4.0-r0 apk alpine-baselayout-data 3.4.3-r1 apk
alpine-keys 2.4-r1 apk alpine-keys 2.4-r1 apk
alpine-release 3.17.2-r0 apk alpine-release 3.18.3-r0 apk
alsa-lib 1.2.8-r0 apk alsa-lib 1.2.9-r1 apk
aom-libs 3.5.0-r0 apk aom-libs 3.6.1-r0 apk
apk-tools 2.12.10-r1 apk apk-tools 2.14.0-r2 apk
bash 5.2.15-r0 apk bash 5.2.15-r5 apk
brotli-libs 1.0.9-r9 apk brotli-libs 1.0.9-r14 apk
bsd-compat-headers 0.7.2-r3 apk bsd-compat-headers 0.7.2-r5 apk
busybox 1.35.0 binary busybox 1.36.1-r2 apk
busybox 1.35.0-r29 apk busybox-binsh 1.36.1-r2 apk
busybox-binsh 1.35.0-r29 apk ca-certificates 20230506-r0 apk
ca-certificates 20220614-r4 apk ca-certificates-bundle 20230506-r0 apk
ca-certificates-bundle 20220614-r4 apk certifi 2023.5.7 python
certifi 2022.12.7 python charset-normalizer 3.1.0 python
charset-normalizer 3.0.1 python cjson 1.7.15-r4 apk
cjson 1.7.15-r3 apk coreutils 9.3-r1 apk
coreutils 9.1-r0 apk curl 8.3.0-r0 apk
curl 7.88.1-r0 apk dbus-libs 1.14.8-r0 apk
dbus-libs 1.14.4-r0 apk ffmpeg 6.0-r15 apk
ffmpeg 5.1.2-r1 apk ffmpeg-libavcodec 6.0-r15 apk
ffmpeg-libs 5.1.2-r1 apk ffmpeg-libavdevice 6.0-r15 apk
ffmpeg4-libs 4.4.3-r0 apk ffmpeg-libavfilter 6.0-r15 apk
flac-libs 1.4.2-r0 apk ffmpeg-libavformat 6.0-r15 apk
fontconfig 2.14.1-r0 apk ffmpeg-libavutil 6.0-r15 apk
freetype 2.12.1-r0 apk ffmpeg-libpostproc 6.0-r15 apk
fribidi 1.0.12-r0 apk ffmpeg-libswresample 6.0-r15 apk
gdbm 1.23-r0 apk ffmpeg-libswscale 6.0-r15 apk
glib 2.74.6-r0 apk ffmpeg4 4.4.4-r1 apk
gmp 6.2.1-r2 apk ffmpeg4-libavcodec 4.4.4-r1 apk
gnu-libiconv 1.17-r0 apk ffmpeg4-libavdevice 4.4.4-r1 apk
gnu-libiconv-libs 1.17-r0 apk ffmpeg4-libavfilter 4.4.4-r1 apk
gnutls 3.7.8-r3 apk ffmpeg4-libavformat 4.4.4-r1 apk
graphite2 1.3.14-r2 apk ffmpeg4-libavutil 4.4.4-r1 apk
harfbuzz 5.3.1-r1 apk ffmpeg4-libpostproc 4.4.4-r1 apk
hwdata-pci 0.364-r0 apk ffmpeg4-libswresample 4.4.4-r1 apk
idna 3.4 python ffmpeg4-libswscale 4.4.4-r1 apk
intel-gmmlib 22.3.1-r0 apk flac-libs 1.4.3-r0 apk
intel-media-driver 22.6.3-r0 apk fontconfig 2.14.2-r3 apk
jq 1.6-r2 apk freetype 2.13.0-r5 apk
lame 3.100-r2 apk fribidi 1.0.13-r0 apk
libacl 2.3.1-r1 apk gdbm 1.23-r1 apk
libass 0.16.0-r1 apk glib 2.76.4-r0 apk
libasyncns 0.8-r1 apk glslang-libs 1.3.243.0-r1 apk
libattr 2.5.1-r2 apk gmp 6.2.1-r3 apk
libblkid 2.38.1-r1 apk gnu-libiconv 1.17-r1 apk
libbsd 0.11.7-r0 apk gnu-libiconv-libs 1.17-r1 apk
libbz2 1.0.8-r4 apk gnutls 3.8.0-r2 apk
libc-utils 0.7.2-r3 apk graphite2 1.3.14-r5 apk
libcrypto3 3.0.8-r0 apk harfbuzz 7.3.0-r0 apk
libcurl 7.88.1-r0 apk hwdata-pci 0.370-r0 apk
libdav1d 1.0.0-r2 apk idna 3.4 python
libdrm 2.4.114-r0 apk intel-gmmlib 22.3.5-r0 apk
libdvbcsa 1.1.0-r1 apk intel-media-driver 23.2.3-r0 apk
libexpat 2.5.0-r0 apk jq 1.6-r3 apk
libffi 3.4.4-r0 apk lame-libs 3.100-r5 apk
libgcc 12.2.1_git20220924-r4 apk lcms2 2.15-r2 apk
libgcrypt 1.10.1-r0 apk libacl 2.3.1-r3 apk
libgomp 12.2.1_git20220924-r4 apk libass 0.17.1-r0 apk
libgpg-error 1.46-r1 apk libasyncns 0.8-r1 apk
libhdhomerun-libs 20200225-r1 apk libattr 2.5.1-r4 apk
libintl 0.21.1-r1 apk libblkid 2.38.1-r8 apk
libjpeg-turbo 2.1.4-r0 apk libbluray 1.3.4-r0 apk
libltdl 2.4.7-r1 apk libbsd 0.11.7-r1 apk
libmd 1.0.4-r0 apk libbz2 1.0.8-r5 apk
libmount 2.38.1-r1 apk libc-utils 0.7.2-r5 apk
libogg 1.3.5-r2 apk libcrypto3 3.1.3-r0 apk
libpciaccess 0.17-r0 apk libcurl 8.3.0-r0 apk
libpng 1.6.38-r0 apk libdav1d 1.2.1-r0 apk
libproc 3.3.17-r2 apk libdrm 2.4.115-r4 apk
libpulse 16.1-r6 apk libdvbcsa 1.1.0-r1 apk
librist 0.2.7-r0 apk libexpat 2.5.0-r1 apk
libsndfile 1.1.0-r2 apk libffi 3.4.4-r2 apk
libsodium 1.0.18-r2 apk libgcc 12.2.1_git20220924-r10 apk
libsrt 1.5.1-r0 apk libgcrypt 1.10.2-r1 apk
libssh 0.10.4-r0 apk libgomp 12.2.1_git20220924-r10 apk
libssl3 3.0.8-r0 apk libgpg-error 1.47-r1 apk
libstdc++ 12.2.1_git20220924-r4 apk libhdhomerun-libs 20200225-r1 apk
libtasn1 4.19.0-r0 apk libhwy 1.0.4-r1 apk
libtheora 1.1.1-r16 apk libidn2 2.3.4-r1 apk
libunistring 1.1-r0 apk libintl 0.21.1-r7 apk
liburiparser 0.9.7-r0 apk libjpeg-turbo 2.1.5.1-r3 apk
libva 2.16.0-r0 apk libjxl 0.8.2-r0 apk
libva-intel-driver 2.4.1-r0 apk libltdl 2.4.7-r2 apk
libvdpau 1.5-r0 apk libmd 1.0.4-r2 apk
libvorbis 1.3.7-r0 apk libmount 2.38.1-r8 apk
libvpx 1.12.0-r1 apk libncursesw 6.4_p20230506-r0 apk
libwebp 1.2.4-r1 apk libogg 1.3.5-r4 apk
libx11 1.8.4-r0 apk libopenmpt 0.7.2-r0 apk
libxau 1.0.10-r0 apk libpanelw 6.4_p20230506-r0 apk
libxcb 1.15-r0 apk libpciaccess 0.17-r2 apk
libxdmcp 1.1.4-r0 apk libplacebo 5.264.1-r1 apk
libxext 1.3.5-r0 apk libpng 1.6.39-r3 apk
libxfixes 6.0.0-r0 apk libproc2 4.0.4-r0 apk
libxml2 2.10.3-r1 apk libpulse 16.1-r10 apk
libxslt 1.1.37-r0 apk librist 0.2.7-r0 apk
libzmq 4.3.4-r1 apk libsndfile 1.2.0-r2 apk
linux-headers 5.19.5-r0 apk libsodium 1.0.18-r3 apk
linux-pam 1.5.2-r1 apk libsrt 1.5.2-r0 apk
mbedtls 2.28.2-r0 apk libssh 0.10.5-r0 apk
mesa 22.2.5-r1 apk libssl3 3.1.3-r0 apk
mpdecimal 2.5.1-r1 apk libstdc++ 12.2.1_git20220924-r10 apk
musl 1.2.3-r4 apk libtasn1 4.19.0-r1 apk
musl-utils 1.2.3-r4 apk libtheora 1.1.1-r17 apk
ncurses-libs 6.3_p20221119-r0 apk libunibreak 5.1-r0 apk
ncurses-terminfo-base 6.3_p20221119-r0 apk libunistring 1.1-r1 apk
netcat-openbsd 1.130-r4 apk liburiparser 0.9.7-r0 apk
nettle 3.8.1-r0 apk libva 2.18.0-r1 apk
nghttp2-libs 1.51.0-r0 apk libva-intel-driver 2.4.1-r0 apk
numactl 2.0.16-r1 apk libvdpau 1.5-r1 apk
oniguruma 6.9.8-r0 apk libvorbis 1.3.7-r1 apk
opus 1.3.1-r1 apk libvpx 1.13.0-r1 apk
orc 0.4.33-r0 apk libwebp 1.3.2-r0 apk
p11-kit 0.24.1-r1 apk libx11 1.8.4-r4 apk
pcre2 10.42-r0 apk libxau 1.0.11-r2 apk
perl 5.36.0-r0 apk libxcb 1.15-r1 apk
perl-archive-zip 1.68-r2 apk libxdmcp 1.1.4-r2 apk
perl-b-hooks-endofscope 0.26-r0 apk libxext 1.3.5-r2 apk
perl-boolean 0.46-r2 apk libxfixes 6.0.1-r2 apk
perl-capture-tiny 0.48-r2 apk libxml2 2.11.4-r0 apk
perl-cgi 4.54-r0 apk libxslt 1.1.38-r0 apk
perl-class-data-inheritable 0.09-r0 apk libzmq 4.3.4-r4 apk
perl-class-inspector 1.36-r2 apk linux-headers 6.3-r0 apk
perl-class-methodmaker 2.24-r9 apk linux-pam 1.5.2-r10 apk
perl-class-singleton 1.6-r0 apk mbedtls 2.28.4-r0 apk
perl-clone 0.46-r0 apk mesa 23.0.4-r0 apk
perl-common-sense 3.75-r2 apk mpdecimal 2.5.1-r2 apk
perl-compress-raw-zlib 2.202-r0 apk mpg123-libs 1.31.3-r1 apk
perl-cpan-meta-check 0.014-r2 apk musl 1.2.4-r1 apk
perl-date-manip 6.89-r0 apk musl-utils 1.2.4-r1 apk
perl-datetime 1.59-r0 apk ncurses-terminfo-base 6.4_p20230506-r0 apk
perl-datetime-format-strptime 1.79-r0 apk netcat-openbsd 1.219-r1 apk
perl-datetime-locale 1.37-r0 apk nettle 3.8.1-r2 apk
perl-datetime-timezone 2.56-r0 apk nghttp2-libs 1.55.1-r0 apk
perl-dbd-sqlite 1.72-r0 apk numactl 2.0.16-r4 apk
perl-dbi 1.643-r4 apk onevpl-libs 2023.2.1-r0 apk
perl-devel-stacktrace 2.04-r3 apk oniguruma 6.9.8-r1 apk
perl-devel-symdump 2.18-r2 apk opus 1.4-r0 apk
perl-digest-sha1 2.13-r15 apk orc 0.4.34-r0 apk
perl-dist-checkconflicts 0.11-r2 apk p11-kit 0.24.1-r2 apk
perl-doc 5.36.0-r0 apk pcre2 10.42-r1 apk
perl-encode-locale 1.05-r3 apk perl 5.36.1-r2 apk
perl-eval-closure 0.14-r2 apk perl-b-hooks-endofscope 0.26-r1 apk
perl-exception-class 1.45-r0 apk perl-capture-tiny 0.48-r3 apk
perl-exporter-tiny 1.006000-r0 apk perl-class-data-inheritable 0.09-r0 apk
perl-file-listing 6.15-r0 apk perl-class-inspector 1.36-r2 apk
perl-file-sharedir 1.118-r0 apk perl-class-methodmaker 2.24-r9 apk
perl-file-sharedir-install 0.14-r0 apk perl-class-singleton 1.6-r0 apk
perl-file-slurp 9999.32-r1 apk perl-clone 0.46-r1 apk
perl-file-temp 0.2311-r0 apk perl-common-sense 3.75-r3 apk
perl-file-which 1.27-r0 apk perl-compress-raw-zlib 2.204-r1 apk
perl-getopt-long 2.54-r0 apk perl-date-manip 6.91-r0 apk
perl-html-parser 3.80-r0 apk perl-datetime 1.59-r1 apk
perl-html-tagset 3.20-r3 apk perl-datetime-format-builder 0.83-r1 apk
perl-html-tree 5.07-r3 apk perl-datetime-format-iso8601 0.16-r0 apk
perl-http-cookies 6.10-r0 apk perl-datetime-format-sqlite 0.11-r4 apk
perl-http-daemon 6.14-r0 apk perl-datetime-format-strptime 1.79-r0 apk
perl-http-date 6.05-r1 apk perl-datetime-locale 1.39-r0 apk
perl-http-message 6.44-r0 apk perl-datetime-timezone 2.60-r0 apk
perl-http-negotiate 6.01-r3 apk perl-dbd-sqlite 1.72-r1 apk
perl-importer 0.026-r1 apk perl-dbi 1.643-r5 apk
perl-io 1.50-r0 apk perl-devel-stacktrace 2.04-r4 apk
perl-io-html 1.004-r0 apk perl-digest-sha1 2.13-r16 apk
perl-io-socket-ssl 2.077-r0 apk perl-dist-checkconflicts 0.11-r3 apk
perl-io-stringy 2.113-r1 apk perl-encode-locale 1.05-r4 apk
perl-ipc-run3 0.048-r2 apk perl-eval-closure 0.14-r3 apk
perl-json 4.10-r0 apk perl-exception-class 1.45-r0 apk
perl-json-xs 4.03-r2 apk perl-exporter-tiny 1.006002-r0 apk
perl-libwww 6.67-r0 apk perl-file-homedir 1.006-r1 apk
perl-lingua-en-numbers-ordinate 1.05-r0 apk perl-file-listing 6.15-r0 apk
perl-lingua-preferred 0.2.4-r4 apk perl-file-sharedir 1.118-r0 apk
perl-list-moreutils 0.430-r0 apk perl-file-slurp 9999.32-r2 apk
perl-list-moreutils-xs 0.430-r2 apk perl-file-which 1.27-r0 apk
perl-lwp-mediatypes 6.04-r1 apk perl-html-parser 3.81-r1 apk
perl-lwp-useragent-determined 1.07-r2 apk perl-html-tagset 3.20-r4 apk
perl-module-build 0.4231-r2 apk perl-http-cookies 6.10-r0 apk
perl-module-implementation 0.09-r3 apk perl-http-date 6.05-r1 apk
perl-module-metadata 1.000037-r1 apk perl-http-message 6.44-r0 apk
perl-module-pluggable 5.2-r2 apk perl-http-negotiate 6.01-r3 apk
perl-module-runtime 0.016-r4 apk perl-importer 0.026-r1 apk
perl-mozilla-ca 20221114-r0 apk perl-io-gzip 0.20-r8 apk
perl-mro-compat 0.15-r0 apk perl-io-html 1.004-r0 apk
perl-namespace-autoclean 0.29-r2 apk perl-io-socket-ssl 2.081-r0 apk
perl-namespace-clean 0.27-r2 apk perl-ipc-run3 0.048-r3 apk
perl-net-http 6.22-r0 apk perl-json 4.10-r0 apk
perl-net-ssleay 1.92-r2 apk perl-json-xs 4.03-r2 apk
perl-package-deprecationmanager 0.17-r2 apk perl-libwww 6.68-r1 apk
perl-package-stash 0.40-r0 apk perl-lingua-en-numbers-ordinate 1.05-r0 apk
perl-params-util 1.102-r2 apk perl-lingua-preferred 0.2.4-r4 apk
perl-params-validate 1.31-r0 apk perl-list-moreutils 0.430-r0 apk
perl-params-validationcompiler 0.30-r1 apk perl-list-moreutils-xs 0.430-r3 apk
perl-parse-recdescent 1.967015-r3 apk perl-lwp-mediatypes 6.04-r2 apk
perl-path-class 0.37-r2 apk perl-lwp-protocol-https 6.10-r4 apk
perl-pod-coverage 0.23-r3 apk perl-lwp-useragent-determined 1.07-r3 apk
perl-pod-parser 1.65-r0 apk perl-module-implementation 0.09-r4 apk
perl-role-tiny 2.002004-r1 apk perl-module-pluggable 5.2-r3 apk
perl-scalar-list-utils 1.63-r0 apk perl-module-runtime 0.016-r5 apk
perl-scope-guard 0.21-r2 apk perl-mozilla-ca 20221114-r1 apk
perl-specio 0.48-r0 apk perl-mro-compat 0.15-r1 apk
perl-sub-exporter-progressive 0.001013-r2 apk perl-namespace-autoclean 0.29-r2 apk
perl-sub-identify 0.14-r7 apk perl-namespace-clean 0.27-r3 apk
perl-sub-info 0.002-r2 apk perl-net-http 6.22-r0 apk
perl-sub-install 0.928-r2 apk perl-net-ssleay 1.92-r4 apk
perl-sub-name 0.26-r4 apk perl-package-deprecationmanager 0.18-r0 apk
perl-sub-quote 2.006006-r1 apk perl-package-stash 0.40-r0 apk
perl-sub-uplevel 0.2800-r2 apk perl-params-util 1.102-r3 apk
perl-term-progressbar 2.23-r0 apk perl-params-validate 1.31-r1 apk
perl-term-readkey 2.38-r7 apk perl-params-validationcompiler 0.31-r0 apk
perl-term-table 0.016-r0 apk perl-role-tiny 2.002004-r1 apk
perl-test-exception 0.43-r2 apk perl-scope-guard 0.21-r3 apk
perl-test-fatal 0.016-r3 apk perl-specio 0.48-r0 apk
perl-test-pod 1.52-r2 apk perl-sub-exporter-progressive 0.001013-r3 apk
perl-test-requires 0.11-r1 apk perl-sub-identify 0.14-r9 apk
perl-test-simple 1.302191-r0 apk perl-sub-info 0.002-r3 apk
perl-test-taint 1.08-r5 apk perl-sub-install 0.929-r1 apk
perl-test-warnings 0.031-r0 apk perl-sub-quote 2.006008-r0 apk
perl-test-without-module 0.20-r2 apk perl-sub-uplevel 0.2800-r3 apk
perl-test2-plugin-nowarnings 0.09-r1 apk perl-term-progressbar 2.23-r0 apk
perl-test2-suite 0.000145-r0 apk perl-term-readkey 2.38-r8 apk
perl-timedate 2.33-r1 apk perl-term-table 0.016-r1 apk
perl-try-tiny 0.31-r0 apk perl-test-exception 0.43-r3 apk
perl-types-serialiser 1.01-r0 apk perl-test-fatal 0.017-r0 apk
perl-unicode-string 2.10-r4 apk perl-test-simple 1.302195-r0 apk
perl-uri 5.17-r0 apk perl-test-without-module 0.21-r0 apk
perl-variable-magic 0.63-r0 apk perl-test2-plugin-nowarnings 0.09-r1 apk
perl-www-robotrules 6.02-r3 apk perl-test2-suite 0.000155-r0 apk
perl-xml-libxml 2.0208-r0 apk perl-timedate 2.33-r2 apk
perl-xml-libxslt 2.002000-r0 apk perl-try-tiny 0.31-r1 apk
perl-xml-namespacesupport 1.12-r3 apk perl-types-serialiser 1.01-r0 apk
perl-xml-parser 2.46-r3 apk perl-unicode-string 2.10-r4 apk
perl-xml-sax 1.02-r1 apk perl-uri 5.19-r0 apk
perl-xml-sax-base 1.09-r3 apk perl-www-robotrules 6.02-r3 apk
perl-xml-treepp 0.43-r3 apk perl-xml-libxml 2.0208-r1 apk
perl-xml-twig 3.52-r4 apk perl-xml-namespacesupport 1.12-r3 apk
perl-xml-writer 0.900-r0 apk perl-xml-parser 2.46-r5 apk
procps 3.3.17-r2 apk perl-xml-sax 1.02-r1 apk
py3-certifi 2022.12.7-r0 apk perl-xml-sax-base 1.09-r3 apk
py3-charset-normalizer 3.0.1-r0 apk perl-xml-treepp 0.43-r3 apk
py3-idna 3.4-r2 apk perl-xml-twig 3.52-r4 apk
py3-requests 2.28.1-r1 apk perl-xml-writer 0.900-r1 apk
py3-urllib3 1.26.12-r0 apk procps-ng 4.0.4-r0 apk
python 3.10.10 binary py3-certifi 2023.5.7-r0 apk
python3 3.10.10-r0 apk py3-certifi-pyc 2023.5.7-r0 apk
readline 8.2.0-r0 apk py3-charset-normalizer 3.1.0-r1 apk
requests 2.28.1 python py3-charset-normalizer-pyc 3.1.0-r1 apk
scanelf 1.3.5-r1 apk py3-idna 3.4-r4 apk
sdl2 2.26.3-r0 apk py3-idna-pyc 3.4-r4 apk
shadow 4.13-r0 apk py3-requests 2.31.0-r0 apk
skalibs 2.12.0.1-r0 apk py3-requests-pyc 2.31.0-r0 apk
soxr 0.1.3-r3 apk py3-urllib3 1.26.15-r1 apk
speexdsp 1.2.1-r0 apk py3-urllib3-pyc 1.26.15-r1 apk
sqlite-libs 3.40.1-r0 apk pyc 0.1-r0 apk
ssl_client 1.35.0-r29 apk python3 3.11.5-r0 apk
svt-av1-libs 1.3.0-r0 apk python3-pyc 3.11.5-r0 apk
tdb-libs 1.4.7-r0 apk python3-pycache-pyc0 3.11.5-r0 apk
tzdata 2022f-r1 apk readline 8.2.1-r1 apk
uriparser 0.9.7-r0 apk requests 2.31.0 python
urllib3 1.26.12 python scanelf 1.3.7-r1 apk
utmps-libs 0.1.2.0-r1 apk sdl2 2.26.5-r0 apk
v4l-utils-libs 1.22.1-r2 apk shaderc 2023.3-r1 apk
vidstab 1.1.0-r2 apk shadow 4.13-r4 apk
vulkan-loader 1.3.231.2-r0 apk skalibs 2.13.1.1-r1 apk
wayland-libs-client 1.21.0-r1 apk soxr 0.1.3-r5 apk
x264 0.164_git20220602-r0 apk speexdsp 1.2.1-r1 apk
x264-libs 0.164_git20220602-r0 apk spirv-tools 1.3.243.0-r1 apk
x265 3.5-r3 apk sqlite-libs 3.41.2-r2 apk
x265-libs 3.5-r3 apk ssl_client 1.36.1-r2 apk
xvidcore 1.3.7-r1 apk svt-av1-libs 1.6.0-r0 apk
xz 5.2.9-r0 apk tdb-libs 1.4.8-r1 apk
xz-libs 5.2.9-r0 apk tzdata 2023c-r1 apk
zlib 1.2.13-r0 apk uriparser 0.9.7-r0 apk
urllib3 1.26.15 python
utmps-libs 0.1.2.1-r1 apk
v4l-utils-libs 1.24.1-r0 apk
vidstab 1.1.1-r0 apk
vulkan-loader 1.3.243.0-r1 apk
wayland-libs-client 1.22.0-r2 apk
x264 0.164_git20220602-r1 apk
x264-libs 0.164_git20220602-r1 apk
x265 3.5-r4 apk
x265-libs 3.5-r4 apk
xmltv 1.2.1-r3 apk
xvidcore 1.3.7-r1 apk
xz-libs 5.4.3-r0 apk
zimg 3.0.5-r0 apk
zlib 1.2.13-r1 apk

View File

@@ -1,23 +0,0 @@
requires 'perl' => '5.24.0';
# perl packages for tvheadend x86
requires 'Data::Dump' ;
requires 'DateTime::Format::ISO8601' ;
requires 'DateTime::Format::SQLite' ;
requires 'Encode' ;
requires 'File::HomeDir' ;
requires 'File::Path' ;
requires 'HTML::Entities' ;
requires 'HTML::TableExtract' ;
requires 'HTTP::Cache::Transparent' => ">= 1.3, != 1.4" ;
requires 'inc' ;
requires 'JSON::PP' ;
requires 'LWP::Simple' ;
requires 'LWP::UserAgent' ;
requires 'PerlIO::gzip' ;
requires 'SOAP::Lite' ;
requires 'Storable' ;
requires 'Unicode::UTF8simple' ;
requires 'version' ;
requires 'WWW::Mechanize' ;
requires 'XML::DOM' ;

View File

@@ -123,6 +123,10 @@ app_setup_block: |
# changelog # changelog
changelogs: changelogs:
- { date: "20.09.23:", desc: "Add perl-json-xs package." }
- { date: "18.05.23:", desc: "Install XMLTV from Alpine repos." }
- { date: "18.05.23:", desc: "Rebase to Alpine 3.18." }
- { date: "17.03.23:", desc: "Extract picons during build instead of init." }
- { date: "23.02.23:", desc: "Rebase to Alpine 3.17, migrate to s6v3, drop armhf support." } - { date: "23.02.23:", desc: "Rebase to Alpine 3.17, migrate to s6v3, drop armhf support." }
- { date: "31.08.22:", desc: "Update sample env vars and how RUN_OPTS are handled." } - { date: "31.08.22:", desc: "Update sample env vars and how RUN_OPTS are handled." }
- { date: "19.08.22:", desc: "Switch to new picons builder." } - { date: "19.08.22:", desc: "Switch to new picons builder." }

View File

@@ -3,50 +3,19 @@
# make folders # make folders
mkdir -p \ mkdir -p \
/config/comskip /config/comskip
# copy config # copy config
if [[ ! -e /config/dvr/config ]]; then if [[ ! -e /config/dvr/config ]]; then
(mkdir -p /config/dvr/config && cp /defaults/7a5edfbe189851e5b1d1df19c93962f0 /config/dvr/config/7a5edfbe189851e5b1d1df19c93962f0) (mkdir -p /config/dvr/config && cp /defaults/7a5edfbe189851e5b1d1df19c93962f0 /config/dvr/config/7a5edfbe189851e5b1d1df19c93962f0)
fi fi
if [[ ! -e /config/comskip/comskip.ini ]]; then if [[ ! -e /config/comskip/comskip.ini ]]; then
cp /defaults/comskip.ini.org /config/comskip/comskip.ini cp /defaults/comskip.ini.org /config/comskip/comskip.ini
fi fi
if [[ ! -e /config/config ]]; then if [[ ! -e /config/config ]]; then
(cp /defaults/config /config/config) (cp /defaults/config /config/config)
fi fi
# extract picons on first run
if [[ -f /picons.tar.bz2 ]]; then
mkdir -p /picons
tar xf \
/picons.tar.bz2 -C \
/picons &&
rm -f /picons.tar.bz2
fi
# function to randomly sample 5 files for their owner and only chown if not abc
chowner () {
files=(${1}/*)
for i in {1..5}; do
user=$(stat -c '%U' $(printf "%s\n" "${files[RANDOM % ${#files[@]}]}"))
if [ "${user}" != "abc" ]; then
chown -R abc:abc ${1}
break
fi
done
}
# permissions # permissions
echo "Setting permissions" echo "Setting permissions"
abc_dirs=( \ lsiown -R abc:abc /config
/config \
/picons \
)
for i in "${abc_dirs[@]}"; do
if [ "$(ls -A ${i})" ]; then
chowner ${i}
else
chown -R abc:abc ${i}
fi
done

View File

@@ -5,23 +5,23 @@ FILES=$(find /dev/dri /dev/dvb -type c -print 2>/dev/null)
for i in $FILES for i in $FILES
do do
VIDEO_GID=$(stat -c '%g' "$i") VIDEO_GID=$(stat -c '%g' "$i")
if id -G abc | grep -qw "$VIDEO_GID"; then if id -G abc | grep -qw "$VIDEO_GID"; then
touch /groupadd touch /groupadd
else else
if [ ! "${VIDEO_GID}" == '0' ]; then if [ ! "${VIDEO_GID}" == '0' ]; then
VIDEO_NAME=$(getent group "${VIDEO_GID}" | awk -F: '{print $1}') VIDEO_NAME=$(getent group "${VIDEO_GID}" | awk -F: '{print $1}')
if [ -z "${VIDEO_NAME}" ]; then if [ -z "${VIDEO_NAME}" ]; then
VIDEO_NAME="video$(head /dev/urandom | tr -dc 'a-z0-9' | head -c8)" VIDEO_NAME="video$(head /dev/urandom | tr -dc 'a-z0-9' | head -c8)"
groupadd "$VIDEO_NAME" groupadd "$VIDEO_NAME"
groupmod -g "$VIDEO_GID" "$VIDEO_NAME" groupmod -g "$VIDEO_GID" "$VIDEO_NAME"
fi fi
usermod -a -G "$VIDEO_NAME" abc usermod -a -G "$VIDEO_NAME" abc
touch /groupadd touch /groupadd
fi fi
fi fi
done done
if [ -n "${FILES}" ] && [ ! -f "/groupadd" ]; then if [ -n "${FILES}" ] && [ ! -f "/groupadd" ]; then
usermod -a -G root abc usermod -a -G root abc
fi fi