From: Mike Brady <4265913+mikebrady@users.noreply.github.com> Date: Thu, 29 Sep 2022 13:05:37 +0000 (+0100) Subject: Bring up to date with changes in the development branch, most of which come from... X-Git-Tag: 4.1-rc2~1^2~18^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bdfb8c4f6c1c75b645ae93f89b296bc35d44ca7a;p=thirdparty%2Fshairport-sync.git Bring up to date with changes in the development branch, most of which come from the master branch. --- diff --git a/.github/ISSUE_TEMPLATE/Bug Report.yaml b/.github/ISSUE_TEMPLATE/Bug Report.yaml index 11e2f3a1..8017b5db 100644 --- a/.github/ISSUE_TEMPLATE/Bug Report.yaml +++ b/.github/ISSUE_TEMPLATE/Bug Report.yaml @@ -1,12 +1,12 @@ -name: Bug Report -description: File a bug report -title: "[Bug]: " -labels: ["bug"] +name: Issue Report +description: File an Issue +title: "[Problem]: " +labels: ["new issue"] body: - type: markdown attributes: value: | - Thanks for taking the time to fill out this bug report! + Thanks for taking the time to fill out this report! - type: textarea id: what-happened attributes: @@ -20,6 +20,13 @@ body: 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: os + attributes: + label: Operating System? + description: What Operating System are you running on ? (`uname -a`) + validations: + required: true - type: textarea id: version attributes: @@ -27,6 +34,17 @@ body: description: What version of Shairport Sync are you running? (`shairport-sync -V`) validations: required: true + - type: dropdown + id: install + attributes: + label: How did you install Shairport Sync? + options: + - Homebrew for Mac + - Docker + - A package manager (apt, yum, pkg, etc.) + - Built from source + validations: + required: true - type: checkboxes id: checked-current-issues attributes: @@ -34,4 +52,5 @@ body: description: Please check previous issues (including closed ones) for duplicates. options: - label: Confirm - required: true \ No newline at end of file + required: true + diff --git a/.github/workflows/docker-build-on-formal-release.yaml b/.github/workflows/docker-build-on-formal-release.yaml new file mode 100644 index 00000000..fc698373 --- /dev/null +++ b/.github/workflows/docker-build-on-formal-release.yaml @@ -0,0 +1,83 @@ +# Builds & pushes a docker image when a "formal" release tag of the format X, X.Y or X.Y.Z occurs, where X, Y and Z are all numbers. +# It seems this yaml has to exist on the branch the tag refers to. + +# Thanks to Charles Omer for the workfow upon which this is based. + +# The following docker tags are created & pushed: +# trial, trial-classic +# not building 'latest' yet... + +name: Formal (X, X.Y or X.Y.Z) release tags -- docker build and push. + +on: + push: + tags: + - '[0-9]+\.[0-9]+\.[0-9]+' # e.g. 8.9.0 + - '[0-9]+\.[0-9]+' # e.g. 8.9 + - '[0-9]+' # e.g. 8 + - '[0-9]+\.[0-9]+rc[0-9]+' # e.g. 4.1rc0 + +env: + DOCKER_PLATFORMS: linux/386,linux/amd64,linux/arm/v6,linux/arm64,linux/arm/v7 + +jobs: + main: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Set SHAIRPORT_SYNC_BRANCH env. + run: | + raw=$(git branch -r --contains ${{ github.ref }}) + branch=${raw##*/} + echo "SHAIRPORT_SYNC_BRANCH=${branch}" >> $GITHUB_ENV + + - name: Set tag env + run: echo "GIT_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + + - name: Determine NQPTP env (part 1). + if: ${{ env.SHAIRPORT_SYNC_BRANCH == 'development' }} + run: echo "NQPTP_BRANCH=development" >> $GITHUB_ENV + + - name: Determine NQPTP env (part 2). + if: ${{ env.SHAIRPORT_SYNC_BRANCH != 'development' }} + run: echo "NQPTP_BRANCH=main" >> $GITHUB_ENV + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Login to Docker Registry + uses: docker/login-action@v1 + with: + registry: ${{ secrets.DOCKER_REGISTRY }} + username: ${{ secrets.DOCKER_REGISTRY_USER }} + password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v2 + with: + context: ./ + file: ./docker/Dockerfile + platforms: ${{ env.DOCKER_PLATFORMS }} + push: true + tags: trial + build-args: | + SHAIRPORT_SYNC_BRANCH=${{ env.SHAIRPORT_SYNC_BRANCH }} + NQPTP_BRANCH=${{ env.NQPTP_BRANCH }} + + - name: Build and push (Classic) + uses: docker/build-push-action@v2 + with: + context: ./ + file: ./docker/classic/Dockerfile + platforms: ${{ env.DOCKER_PLATFORMS }} + push: true + tags: trial-classic + build-args: | + SHAIRPORT_SYNC_BRANCH=${{ env.SHAIRPORT_SYNC_BRANCH }} diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml new file mode 100644 index 00000000..51658c01 --- /dev/null +++ b/.github/workflows/stale.yaml @@ -0,0 +1,21 @@ +name: 'Close stale issues and PRs' +on: + schedule: + - cron: '0 0 * * *' + +permissions: + issues: write + pull-requests: write + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v4 + with: + stale-issue-message: 'This issue has been inactive for 45 days so will be closed 7 days from now. To prevent this, please remove the "stale" label or post a comment.' + stale-pr-message: 'This PR has been inactive for 45 days so will be closed 7 days from now. To prevent this, please remove the "stale" label or post a comment.' + operations-per-run: 100 + # These are the defaults at the time of writing. https://github.com/marketplace/actions/close-stale-issues + # days-before-stale: 45 + # days-before-close: 7 diff --git a/CAR INSTALL.md b/CAR INSTALL.md index 8cc47b04..c2259a5f 100644 --- a/CAR INSTALL.md +++ b/CAR INSTALL.md @@ -215,3 +215,43 @@ Install the Raspberry Pi in your car. It should be powered from a source that is When the power source is switched on, typically when you start the car, it will take maybe a minute for the system to boot up. ### Enjoy! + +--- + +## Updating +From time to time, you may wish to update this installation. However, in order to update Shairport Sync, you must reconnect the system to a network that can access the internet. The easiest thing is to temporarily reconnect to the network you used when you created the system. To do that, you have to temporarily undo the "Final Steps" and some of the "Raspberry Pi Specific" steps you used. This will enable you to connect your device back to the network it was created on. You should then be able to update the operating system and libraries in the normal way and then update Shairport Sync. + +So, take the following steps: + +1. If it's a Raspberry Pi and you have enabled the Read-only mode, you must take the device out of Read-only mode: +Run `sudo raspi-config` and then choose `Performance Options` > `Overlay Filesystem` and choose to disable the overlay filesystem and to set the boot partition not to be write-protected. This is so that changes can be written to the file system; you can make the filesystem read-only again later. Save the changes and reboot the system. + +2. If you have disabled the `dhcpcd`, `wpa_supplicant` or `systemd-timesyncd` services as suggested in the "Optimise startup time -- Raspberry Pi Specific" section, you need to temporarily re-enable them: +`# systemctl enable dhcpcd.service` +`# systemctl enable wpa_supplicant.service` +`# systemctl enable systemd-timesyncd.service` +Reboot. + +3. To allow your device to reconnect to the network it was created on, edit `/etc/dhcpcd.conf` and comment out the following line at the start: +`denyinterfaces wlan0` +so that it looks like this: +`# denyinterfaces wlan0` +From this point on, if you reboot the machine, it will connect to the network it was configured on, i.e. the network you used when you set it up for the first time. This is because the name and password of the network it was created on would have been placed in `/etc/wpa_supplicant/wpa_supplicant` when the system was initially configured and will still be there. + +4. Reboot and do Normal Updating + + You can perform updates in the normal way -- see [UPDATING](https://github.com/mikebrady/shairport-sync/blob/master/UPDATING.md). When you are finished, you need to undo the temporary changes you made to the setup, as follows: + +5. If you had temporarily re-enabled services that are normally disabled, then it's time to disable them again: +`# systemctl disable dhcpcd.service` +`# systemctl disable wpa_supplicant.service` +`# systemctl disable systemd-timesyncd.service` + +6. To re-enable the system to create its own network, edit `/etc/dhcpcd.conf` and uncomment the line that you had temporarily commented out at the start of the update. Change: +`# denyinterfaces wlan0` +so that it looks like this: +`denyinterfaces wlan0` + +7. Reboot. The system should start as it would if it was in the car. + +8. If the device is a Raspberry Pi and you wish to make the file system read-only, connect to the system, run `sudo raspi-config` and then choose `Performance Options` > `Overlay Filesystem`. In there, choose to enable the overlay filesystem, and to set the boot partition to be write-protected. Do a final reboot and check that everyting is in order. diff --git a/RELEASENOTES.md b/RELEASENOTES.md index bfb2c8fa..9fdc0628 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,4 +1,29 @@ -Please see the [Release Notes for 3.3](https://github.com/mikebrady/shairport-sync/releases/tag/3.3). +Version 4.1-rc0 Release Candidate +==== + +Really Big Update -- AirPlay 2! +---- +Version 4.1 brings support for AirPlay 2 operation. It works with iOS, iPadOS, macOS, HomePod mini and Apple TV sources, but not with Windows. +Limited support is available for HomeKit -- Shairport Sync speakers can be added to the Home app, though not all features are working. +AirPlay 2 operation requires a companion program called NQPTP and requires a somewhat more powerful system. Please see [AIRPLAY2.md](./AIRPLAY.md) for more. + +Note that you can still build Shairport Sync to support "classic" AirPlay (aka "AirPlay 1") as before. + +The various guides for building and updating Shairport Sync have been consolidated into [BUILD.md](./BUILD.md). + +Here is a brief list of the high-level new features and changes (more to be added): +* AirPlay 2 operation. +* Improved `libao` backend for better compatibility with HomeBrew installations. +* Improved MQTT and D-Bus facilities. +* Automatically-generated Docker images (forthcoming). + +There have been many many bug fixes and enhancements to the core operation of Shairport Sync. + +Version 3.3.9 +==== +**Bug Fix** +* Version 3.3.9 fixes a build failure with convolution raised since `automake 1.16.5` and https://git.savannah.gnu.org/cgit/automake.git/commit/?id=f4a3a70f69e1dbccb6578f39ef47835098a04624. +Further details in [Fabrice Fontaine's original PR](https://github.com/mikebrady/shairport-sync/pull/1314) to the `development` branch. Many thanks to [Fabrice Fontaine](https://github.com/ffontaine) for the bug report and for the fix. Version 3.3.8 ====