.github
-documents
\ No newline at end of file
+documents
+docker/Dockerfile
+docker/classic/Dockerfile
\ No newline at end of file
--- /dev/null
+name: Bug Report
+description: File a bug report
+title: "[Bug]: "
+labels: ["bug"]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thanks for taking the time to fill out this bug report!
+ - type: textarea
+ id: what-happened
+ attributes:
+ label: What happened?
+ description: Also, what did you expect to happen?
+ validations:
+ required: true
+ - type: textarea
+ id: logs
+ attributes:
+ label: Relevant log output
+ description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
+ render: shell
+ - type: textarea
+ id: version
+ attributes:
+ label: Version?
+ description: What version of Shairport Sync are you running? (`shairport-sync -V`)
+ validations:
+ required: true
+ - type: checkboxes
+ id: checked-current-issues
+ attributes:
+ label: Check previous issues
+ description: Please check previous issues (including closed ones) for duplicates.
+ options:
+ - label: Confirm
+ required: true
\ No newline at end of file
--- /dev/null
+blank_issues_enabled: false
+contact_links:
+ - name: Questions?
+ url: https://github.com/mikebrady/shairport-sync/discussions/categories/q-a
+ about: Please ask and answer questions here.
+ - name: Feature Requests
+ url: https://github.com/mikebrady/shairport-sync/discussions/categories/ideas
+ about: Please submit feature requests/enhancements here.
\ No newline at end of file
# Builds & pushes a docker image when a commit is made to one of the branches specified below.
-# Tag pattern: 'unstable-[BRANCH NAME]' & 'unstable-[BRANCH NAME]-airplay1'
+# Tag pattern: 'unstable-[BRANCH NAME]' & 'unstable-[BRANCH NAME]-classic'
name: Build and push docker image based on commit to specified branches.
username: ${{ secrets.DOCKER_REGISTRY_USER }}
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
+ - name: Set tag start (part 1).
+ if: ${{ env.SHAIRPORT_SYNC_BRANCH == 'master' }}
+ run: echo "IMAGE_TAG_BASE=unstable" >> $GITHUB_ENV
+
+ - name: Set tag start (part 2).
+ if: ${{ env.SHAIRPORT_SYNC_BRANCH != 'master' }}
+ run: echo "IMAGE_TAG_BASE=unstable-${{ env.SHAIRPORT_SYNC_BRANCH }}" >> $GITHUB_ENV
+
- name: Build and push
uses: docker/build-push-action@v2
with:
file: ./docker/Dockerfile
platforms: ${{ env.DOCKER_PLATFORMS }}
push: true
- tags: ${{ secrets.DOCKER_IMAGE_NAME }}:unstable-${{ env.SHAIRPORT_SYNC_BRANCH }}
+ tags: ${{ secrets.DOCKER_IMAGE_NAME }}:${{ env.IMAGE_TAG_BASE }}
build-args: |
SHAIRPORT_SYNC_BRANCH=${{ env.SHAIRPORT_SYNC_BRANCH }}
NQPTP_BRANCH=${{ env.NQPTP_BRANCH }}
uses: docker/build-push-action@v2
with:
context: ./
- file: ./docker/airplay1/Dockerfile
+ file: ./docker/classic/Dockerfile
platforms: ${{ env.DOCKER_PLATFORMS }}
push: true
- tags: ${{ secrets.DOCKER_IMAGE_NAME }}:unstable-${{ env.SHAIRPORT_SYNC_BRANCH }}-airplay1
+ tags: ${{ secrets.DOCKER_IMAGE_NAME }}:${{ env.IMAGE_TAG_BASE }}-classic
build-args: |
SHAIRPORT_SYNC_BRANCH=${{ env.SHAIRPORT_SYNC_BRANCH }}
\ No newline at end of file
# It seems this yaml has to exist on the branch the tag refers to.
# The following docker tags are created & pushed:
-# [RELEASE TAG], [RELEASE TAG]-airplay1,
+# [RELEASE TAG], [RELEASE TAG]-classic,
name: Build and push docker images on releases.
SHAIRPORT_SYNC_BRANCH=${{ env.SHAIRPORT_SYNC_BRANCH }}
NQPTP_BRANCH=${{ env.NQPTP_BRANCH }}
- - name: Build and push (AirPlay 1)
+ - name: Build and push (Classic)
uses: docker/build-push-action@v2
with:
context: ./
- file: ./docker/airplay1/Dockerfile
+ file: ./docker/classic/Dockerfile
platforms: ${{ env.DOCKER_PLATFORMS }}
push: true
- tags: ${{ secrets.DOCKER_IMAGE_NAME }}:${{ env.GIT_TAG }}-airplay1
+ tags: ${{ secrets.DOCKER_IMAGE_NAME }}:${{ env.GIT_TAG }}-classic
build-args: |
SHAIRPORT_SYNC_BRANCH=${{ env.SHAIRPORT_SYNC_BRANCH }}
\ No newline at end of file
aclocal.m4
autom4te.cache
compile
-config.*
+/config.*
configure
depcomp
install-sh
# Quick Start
* A building guide is available [here](BUILD.md).
-* A Docker image is available on the [Docker Hub](https://hub.docker.com/repository/docker/mikebrady/shairport-sync).
+* A Docker image is available on the [Docker Hub](https://hub.docker.com/r/mikebrady/shairport-sync).
* Next Steps and Advanced Topics are [here](ADVANCED%20TOPICS/README.md).
* Runtime settings are documented [here](scripts/shairport-sync.conf).
* Build configuration options are detailed in [CONFIGURATION FLAGS.md](CONFIGURATION%20FLAGS.md).
##### ALAC #####
RUN git clone https://github.com/mikebrady/alac
WORKDIR /alac
-RUN autoreconf -fi
+RUN autoreconf -i
RUN ./configure
RUN make
RUN make install
RUN git clone https://github.com/mikebrady/nqptp
WORKDIR /nqptp
RUN git checkout "$NQPTP_BRANCH"
-RUN autoreconf -fi
+RUN autoreconf -i
RUN ./configure
RUN make
RUN make install
WORKDIR /shairport-sync
COPY . .
RUN git checkout "$SHAIRPORT_SYNC_BRANCH"
-RUN autoreconf -fi
-RUN ./configure --sysconfdir=/etc --with-alsa --with-soxr --with-avahi --with-ssl=openssl --with-airplay-2 \
+WORKDIR /shairport-sync/build
+RUN autoreconf -i ../
+RUN ../configure --sysconfdir=/etc --with-alsa --with-soxr --with-avahi --with-ssl=openssl --with-airplay-2 \
--with-metadata --with-dummy --with-pipe --with-dbus-interface \
--with-stdout --with-mpris-interface --with-mqtt-client \
--with-apple-alac --with-convolution
-RUN make -j
-RUN make install
+RUN make -j $(nproc)
+RUN DESTDIR=install make install
WORKDIR /
##### SPS END #####
# Shairport Sync Runtime System
-FROM crazymax/alpine-s6:3.12-3.0.0.2
+FROM crazymax/alpine-s6:3.12-3.1.1.2
RUN apk -U add \
alsa-lib \
libgcrypt
# Copy build files.
-COPY --from=builder /usr/local/bin/shairport-sync /usr/local/bin/shairport-sync
+COPY --from=builder /shairport-sync/build/install/usr/local/bin/shairport-sync /usr/local/bin/shairport-sync
COPY --from=builder /usr/local/bin/nqptp /usr/local/bin/nqptp
COPY --from=builder /usr/local/lib/libalac.* /usr/local/lib/
-COPY --from=builder /etc/dbus-1/system.d/shairport-sync-dbus.conf /etc/dbus-1/system.d/
-COPY --from=builder /etc/dbus-1/system.d/shairport-sync-mpris.conf /etc/dbus-1/system.d/
+COPY --from=builder /shairport-sync/build/install/etc/dbus-1/system.d/shairport-sync-dbus.conf /etc/dbus-1/system.d/
+COPY --from=builder /shairport-sync/build/install/etc/dbus-1/system.d/shairport-sync-mpris.conf /etc/dbus-1/system.d/
COPY ./docker/etc/s6-overlay/s6-rc.d /etc/s6-overlay/s6-rc.d
+RUN chmod +x /etc/s6-overlay/s6-rc.d/startup/script.sh
# Create non-root user for running the container -- running as the user 'shairport-sync' also allows
# Shairport Sync to provide the D-Bus and MPRIS interfaces within the container
ENTRYPOINT [ "/init" ]
-CMD /usr/local/bin/shairport-sync -vu --statistics
\ No newline at end of file
+CMD [ "/usr/local/bin/shairport-sync", "-v", "--statistics" ]
\ No newline at end of file
### AirPlay 1 Only
-The AirPlay1 only dockerfile is in the `airplay1` folder. This also includes the `start.sh` script used by the container. Please note that the AirPlay 1 image built via the AirPlay 2 branch has missing functionality, e.g. it does not work with multiple instances on the same hardware; does not support iTunes for Windows etc.
+The AirPlay 1 only dockerfile is in the `classic` folder. This also includes the `start.sh` script used by the container. Please note that the AirPlay 1 image built via the AirPlay 2 branch has missing functionality, e.g. it does not work with multiple instances on the same hardware; does not support iTunes for Windows etc.
### GitHub Action Builds
COPY --from=builder-alac /usr/local/lib/pkgconfig/alac.pc /usr/local/lib/pkgconfig/alac.pc
COPY --from=builder-alac /usr/local/include /usr/local/include
-WORKDIR shairport-sync
+WORKDIR /shairport-sync
COPY . .
RUN git checkout "$SHAIRPORT_SYNC_BRANCH"
RUN autoreconf -fi
libgcc \
libgc++
-RUN rm -rf /lib/apk/db/*
+RUN rm -rf /lib/apk/db/*
COPY --from=builder-alac /usr/local/lib/libalac.* /usr/local/lib/
COPY --from=builder-sps /etc/shairport-sync* /etc/
# Add the shairport-sync user to the pre-existing audio group, which has ID 29, for access to the ALSA stuff
RUN addgroup -g 29 docker_audio && addgroup shairport-sync docker_audio
-COPY ./docker/airplay1/start.sh /
+COPY ./docker/classic/start.sh /
RUN chmod +x /start.sh
ENTRYPOINT [ "/start.sh" ]
-# AirPlay 1 Only Docker Image
+# Classic (AirPlay 1 Only) Docker Image
See the [Shairport Sync Docker Hub Repo](https://hub.docker.com/r/mikebrady/shairport-sync) for available tags.
--- /dev/null
+#!/command/execlineb -S0
+/run/s6/basedir/bin/halt
\ No newline at end of file
-#!/bin/sh
+#!/command/with-contenv sh
rm -rf /var/run/dbus.pid
+echo "Starting dbus"
exec dbus-daemon --system --nofork
\ No newline at end of file
--- /dev/null
+#!/command/execlineb -S0
+/run/s6/basedir/bin/halt
\ No newline at end of file
-#!/bin/sh
-avahi-daemon --check
-if [ $? -eq 0 ]; then
- echo "Reloading avahi-daemon."
- exec avahi-daemon --no-chroot --reload
-else
- echo "Starting avahi-daemon."
- exec avahi-daemon --no-chroot
-fi
\ No newline at end of file
+#!/command/with-contenv sh
+sleep 5
+while [ ! -f /var/run/dbus.pid ]; do
+ "dbus is not running, sleeping for 5 seconds before trying to start avahi"
+ sleep 5
+done
+echo "Starting avahi"
+exec avahi-daemon --no-chroot
\ No newline at end of file
--- /dev/null
+#!/command/execlineb -S0
+/run/s6/basedir/bin/halt
\ No newline at end of file
-#!/bin/sh
+#!/command/with-contenv sh
+echo "Starting nqptp"
exec /usr/local/bin/nqptp -v
\ No newline at end of file
--- /dev/null
+#!/bin/sh
+echo "STARTING - $(date)"
\ No newline at end of file
--- /dev/null
+oneshot
\ No newline at end of file
--- /dev/null
+/etc/s6-overlay/s6-rc.d/startup/script.sh
\ No newline at end of file