Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
pgaskin committed Jan 3, 2021
0 parents commit 2cf6bef
Show file tree
Hide file tree
Showing 28 changed files with 2,426 additions and 0 deletions.
34 changes: 34 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Build
on: [push, pull_request]

jobs:
build:
name: Build
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Build
run: |
mkdir -p ./build &&
docker build --tag pulseaudio-win32 --build-arg "PAW32_VERSION=$(echo "$(git describe --always --tags)" | sed -e "s/^v//g")" ./src &&
docker save pulseaudio-win32 |
tar -xOf - --wildcards '*/layer.tar' |
tar -xvf - -C ./build
- name: Upload (pasetup.exe)
uses: actions/upload-artifact@v2
with:
name: Installer (pasetup.exe)
path: build/pasetup.exe
- name: Upload (pulseaudio.zip)
uses: actions/upload-artifact@v2
with:
name: Binaries (pulseaudio.zip)
path: build/pulseaudio.zip
- name: Upload (pasvc.zip)
uses: actions/upload-artifact@v2
with:
name: Binaries (pasvc.zip)
path: build/pasvc.zip
50 changes: 50 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Release
on:
push:
tags:
- 'v*'

jobs:
release:
name: Release
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Build
run: |
mkdir -p ./build &&
docker build --tag pulseaudio-win32 --build-arg "PAW32_VERSION=$(echo "$(git describe --always --tags)" | sed -e "s/^v//g")" ./src &&
docker save pulseaudio-win32 |
tar -xOf - --wildcards '*/layer.tar' |
tar -xvf - -C ./build
- name: Release
id: release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
with:
tag_name: ${{github.ref}}
release_name: ${{github.ref}}
draft: true
prerelease: false
- name: Release (pasetup.exe)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
with:
upload_url: ${{steps.release.outputs.upload_url}}
asset_name: pasetup.exe
asset_path: build/pasetup.exe
asset_content_type: application/vnd.microsoft.portable-executable
- name: Release (pulseaudio.zip)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
with:
upload_url: ${{steps.release.outputs.upload_url}}
asset_name: pulseaudio.zip
asset_path: build/pulseaudio.zip
asset_content_type: application/zip
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
build
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2021 Patrick Gaskin

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
98 changes: 98 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# pulseaudio-win32

An up-to-date PulseAudio build for Windows with an installer, service, and other
improvements.

### Features

- Various fixes and improvements.
- Standalone.
- Optional installer.
- Optional Windows Service wrapper.
- Working `pactl`/`pacat`.
- Working modules.
- HTML documentation.
- Works on Windows Vista and later.

<!-- TODO: unix sockets for the Windows service? -->

### Limitations

- There are still some hard-coded paths which don't automatically relocate to
the installation directory. This mainly affects the documentation. It also
affects `*.pa.d` when running from the zip file (the installer will fix the
path).
- Unix sockets aren't currently used even when supported. Connections to the
system instance are done over TCP by default.
- Locale files aren't currently included.

### Building

```bash
mkdir -p ./build &&
docker build --tag pulseaudio-win32 --build-arg "PAW32_VERSION=$(echo "$(git describe --always --tags --dirty || echo unknown)" | sed -e "s/^v//g")" ./src &&
docker save pulseaudio-win32 |
tar -xOf - --wildcards '*/layer.tar' |
tar -xvf - -C ./build
```

### Troubleshooting

- **Service**
- **Error: The process terminated unexpectedly**<br>
Check PulseAudio's log. Note that it gets truncated every time PulseAudio
starts.
- **Error: The environment is incorrect**<br>
Something went wrong when finding the AppData folder. This error shouldn't
happen.
- **Error: The specified service has been marked for deletion**<br>
If you have `services.msc` open, close it and try again (it prevents service
deletions from working properly). Otherwise, try killing `pulseaudio.exe`
and `pasvc.exe`.
- **Installer**
- **The service does not get installed and/or started**
Try installing it manually from the command line with `pasvc install`.
- **The firewall rules do not get installed**
Try installing it manually from the command line with `pasvcfw install`.
- **PulseAudio**
- **Error: cannot create wakeup pipe**<br>
If you are starting `pulseaudio.exe` from another process, ensure the
`SystemRoot` environment variable is defined.

### Silent installation

The installer uses Inno Setup 6 and supports the usual flags (e.g. `/SILENT`,
`/VERYSILENT`).

The following components are available (all are selected by default) and can be
passed as a comma separated list to `/COMPONENTS=`:

- `pulseaudio` (required) - PulseAudio daemon, modules, and tools
- `documentation` - HTML documentation.
- `service` - Windows Service.
- `uninstaller` - Uninstallation support.

The following tasks are available when the `service` component is selected and
can be passed as a comma separated list to `/TASKS=`:

- `firewall` - Add a firewall rule (4713/tcp).
- `firewall/deny` - Deny all external connections.
- `firewall/allow` - Allow external connections on private networks.
- `firewall/allowall` - Allow all external connections.
- `firewall/allowalledge` - Allow all external connections including edge
traversal.
- `svcmodload` - Allow loading additional modules (note that this is a potential
security risk).

The included configuration files in the installation directory will be
overwritten on install and deleted on uninstall. To preserve your changes, place
your custom configuration files in `*.pa.d\*.pa` and `*.conf.d\*.conf`.

Uninstalling will remove everything except for the log and state data for the
service if used.

### Notes

While this repository is licensed under the MIT license, the icon and build
output is licensed under the LGPL like PulseAudio itself (the PulseAudio build
isn't linked to GPL libraries).
Loading

0 comments on commit 2cf6bef

Please sign in to comment.