Skip to content

Commit

Permalink
Add QNAP build workflow and docs.
Browse files Browse the repository at this point in the history
  • Loading branch information
phnzb committed Feb 6, 2024
1 parent 8acd6a9 commit d39f0aa
Show file tree
Hide file tree
Showing 4 changed files with 123 additions and 1 deletion.
39 changes: 39 additions & 0 deletions .github/workflows/qnap.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: qnap build

on:
push:
branches:
- feature/qnap
workflow_call:
workflow_dispatch:

jobs:
build:
runs-on: [self-hosted, linux]

steps:

- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Build
run: |
bash qnap/build-nzbget.sh
- name: Rename build artifacts
if: github.ref_name != 'main'
run: |
cd /qnap/nzbget/build/
- name: Upload build artifacts
uses: actions/upload-artifact@v3
with:
name: nzbget-qnap-native-packages
path: /qnap/nzbget/build/*.qpkg
retention-days: 5

- name: Cleanup
run: |
rm -rf /qnap/nzbget/
34 changes: 34 additions & 0 deletions qnap/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# QNAP nzbget packages

We support QNAP via native qpkg packages, built with QNAP toolchains (only x86/x86_64/arm_64 QNAP architectures) and buildroot qpkg, repacked from linux installer (all QNAP architectures)

## Installing

Prerequsites: Enable installation of applications without digital signature (`AppCenter` - `Settings` - `Allow installation of applications without a valid digital signature`)

To install nzbget for QNAP download qpkg for your architecture, then from QNAP AppCenter select `Install Manually` - browse for downloaded qpkg and press `Install`
For digital signature warning select `I understand the risks and want to install this application` and press `Install`.
After installation - Press `Open` in AppCenter or click NZBGet icon on desktop. Default login/password for WebUI
```
Login: nzbget
Password: tegbzn6789
```

## Configuring

Change `PATHS` - `MainDir` to point to shared folder location, for example
```
/share/CACHEDEV1_DATA/Public/nzbget
```
By default, nzbget will download all files to package directory, inaccessible from shares.

## Extensions

QNAP packaged with python2. To support python3 extensions, need to install Python3 package from QNAP Store, and add to `EXTENSION SCRIPTS` - `ShellOverride` path to python3 executable like this:
```
.py=/share/CACHEDEV1_DATA/.qpkg/Python3/python3/bin/python3;
```

## Known issues:

- Some extensions (VideoSort) does not work correctly with above setting until ntsbget is fully restarted. From AppCenter select NZBGet - from drop-down menu select stop and then start.
43 changes: 43 additions & 0 deletions qnap/build-info.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# About

"build-nzbget.sh" is a bash script which is used to build nzbget QNAP packages.


# Prerequisites

- linux x86_64 host (Ubuntu 22.04 LTS for example)

We support building nzbget for QNAP for x86 / x86_64 / arm_64 architectures only, because other platforms toolchains is too old (nzbget need gcc 4.9+ for building).

- download x86/x86_64 toolchains from http://download.qnap.com/dev/Toolchain/QNAP_cross_toolchains_64.20160606.tar
- download arm_64 toolchain from http://download.qnap.com/dev/Toolchain/aarch64-QNAP-linux-gnu.tgz
- extract toolchains to $QNAP_ROOT/toolchain (default - /qnap/toolchain), needed directory structure for script:
```
/qnap/toolchain
├── aarch64
│   └── cross-tools
├── i686
│   ├── cross-tools
│   └── fs
└── x86_64
├── cross-tools
└── fs
```
- install QDK from `https://github.com/qnap-dev/QDK`
```
git clone https://github.com/qnap-dev/QDK
cd QDK
sed 's|python|python3|' -i InstallToUbuntu.sh
sudo ./InstallToUbuntu.sh install
```

## Building NZBGet

From cloned repository run
```
bash qnap/build-nzbget.sh
```

## Output files

- /qnap/nzbget/build/*.qpkg - one file per platform
8 changes: 7 additions & 1 deletion qnap/build-nzbget.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#!/bin/bash
set -e
set -x

# config variables
QNAP_ROOT=/qnap
Expand Down Expand Up @@ -231,3 +230,10 @@ for ARCH in $ALL_ARCHS; do
qbuild --build-arch $QPKG_ARCH
cd $NZBGET_ROOT
done

# rename qpkgs
for FILE in $QNAP_ROOT/nzbget/build/*.qpkg; do
[ -f $FILE ] || continue
NEW_FILE=${FILE/.qpkg/_native.qpkg}
mv $FILE $NEW_FILE
done

0 comments on commit d39f0aa

Please sign in to comment.