Update Policy - lwfitzgerald/spksrc GitHub Wiki
Update Policy and Process
First class packages
Following packages are considered as update priority according to:
- user needs, because of provided features
- build chain coverage
- native language support like Python, Mono, Go...
Here is this work-in-progress package list:
- ffmpeg
- Transmission
- Radarr
Compatibility issue
Following packages requires to be built and published for both DSM 5.2 and DSM
6.1 because of C++ and incompatible libstdc++
versions:
- mono
- ffmpeg
- chromaprint
- mediainfo
- Sonarr/Radarr because of embedded mediainfo dependency
- deluge because of Boost
Constraints
Here are known troubles detected when updating package and their dependencies:
-
openssl
1.1 breaks API compatibility preventingrtmpdump
to compile, requirement forffmpeg
-
fontconfig
2.12.91 requiresitstool
even with--disable-docs
switch -
x265
2.6cmake
command fails unexpectedly -
libvpx
1.7.0 no longer support ppc architecture -
chromaprint
1.4.x no longer builds for88f6281
because of toolchain GCC version -
imagemagick
only compiles with DSM 6.x toolchains because ofclock_gettime
method availability
Tests Checks
- If issue reported about previous version, check fix with appropriate test case
Package features
- Check description translations
- Check wizard pages and process (install and upgrade)
- Check wizard translation
Service
- Check service is startable from Package Center, confirm with
ps
- Check service is stoppable from Package Center, confirm with
ps
- Check "View log"
- Check log file in
/var/packages/{package}/target/var/
- Use DSM shortcut to connect to interface
- Check application port is declared in Firewall Services
Command line tools
- Check expected binaries are in PATH
- Run binaries with version and verbose options
Publish process
Support DSM versions are DSM 5.2, DSM 6.1 and 6.2
DSM 6.0 is skipped because concerned systems should be updated to 6.1 or 6.2 if available.
Heavy packages with C++ compatibliity issue may not be published systematically
for DSM 5.2 - for instance ffmpeg
, chromaprint
... we may wait for user
specific DSM 5.2 request to publish these variants.
For some low memory applications, often command lines, interesting for SRM
users, it is possible to upload packages in repository with targets
publish-arch-northstarplus-1.1 publish-arch-ipq806x-1.1
. As SRM has no
"custom repository" support in Package Center, users have to download package
from https://synocommunity.com/packages and install it manually.
Build
Generate package with following Make targets, with -j 6
or more if you have
enough cores.
make arch-qoriq-5.2 arch-x64-5.2 arch-evansport-5.2 arch-88f6281-5.0 arch-alpine-5.2 \
arch-armada370-5.2 arch-armada375-5.2 arch-armada38x-5.2 arch-armadaxp-5.2 \
arch-comcerto2k-5.2 arch-monaco-5.2 arch-ppc853x-5.2 arch-rtd1296-6.1 arch-hi3535-6.1
Testing
-
For upgrade, install current online package version on XPEnology DSM 5.2
-
Test up
-
Install manually
x64
package on XPEnology DSM 5.2 -
Uninstall package ** Check proper removal
/var/packages/{package}/
** Check service account has been removed from/etc/passwd
Publish
After local tests, submit packages to online repository and be patient. Do not
try to parallelize, spkrepo
will not appreciate.
make publish-arch-qoriq-5.2 publish-arch-x64-5.2 publish-arch-evansport-5.2 publish-arch-88f6281-5.0 publish-arch-alpine-5.2 \
publish-arch-armada370-5.2 publish-arch-armada375-5.2 publish-arch-armadaxp-5.2 publish-arch-armada38x-5.2 \
publish-arch-comcerto2k-5.2 publish-arch-monaco-5.2 publish-arch-ppc853x-5.2 publish-arch-rtd1296-6.1 publish-arch-hi3535-6.1
After publish, go into repository:
- login at https://synocommunity.com/login
- check all builds are available https://synocommunity.com/admin/buildview/
- activate the Build required for your test system
- install and/or upgrade package from DSM Package Center to confirm package is properly signed
- if KO, deactivate your build and investigate
- if OK, active package Version https://synocommunity.com/admin/versionview/
Optional: DSM 5.2 binaries incompatible with DSM 6.1
For package with libstdc++
dependency, it is required to build additional
packages specific for DSM 6.1 and upper:
make arch-qoriq-6.1 arch-x64-6.1 arch-evansport-6.1 arch-88f6281-6.1 arch-alpine-6.1 \
arch-armada370-6.1 arch-armada375-6.1 arch-armada38x-6.1 arch-armadaxp-6.1 \
arch-comcerto2k-6.1 arch-monaco-6.1
Apply test process either on DSM 6.1 (XPEnology for instance) or DSM 6.2.
Publish without parallelization:
make publish-arch-qoriq-6.1 publish-arch-x64-6.1 publish-arch-evansport-6.1 publish-arch-88f6281-6.1 publish-arch-alpine-6.1 \
publish-arch-armada370-6.1 publish-arch-armada375-6.1 publish-arch-armada38x-6.1 publish-arch-armadaxp-6.1 \
publish-arch-comcerto2k-6.1 publish-arch-monaco-6.1
After publish, activate your build to install package from Package Center, and if OK activate package Version.
Specific process
We try to build and publish package-to-package dependencies as dynamic
libraries linkage (reuse, reduce efforts and bandwidth), as a example with
chromaprint
depending on ffmpeg
libraries dynamically when just built
before in same working-copy:
for a in evansport 88f6281 alpine armada370 armada375 armadaxp armada38x comcerto2k monaco rtd1296 hi3535; do make publish ARCH=$a TCVERSION=6.1; done
Logic is implemented thanks to: