Package Update Policy - SynoCommunity/spksrc GitHub Wiki
DSM 5.2 packages are no longer built for all applications. Most recent upstream versions require compilers', build tool options/versions or kernel versions not available/compatible with DSM 5.2 toolchains.
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
- Syncthing
Following packages binaries are not compatible 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
Here are known troubles detected when updating package and their dependencies:
-
openssl
1.1 breaks API compatibility preventingrtmpdump
to compile, requirement forffmpeg
-
(no issue withfontconfig
2.12.91 requiresitstool
even with--disable-docs
switchfontconfig
2.13.1) -
x265
2.6cmake
command fails unexpectedly -
libvpx
1.7.0 no longer supports ppc architectures -
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
- If issue reported about previous version, check fix with appropriate test case
- Check description translations
- Check wizard pages and process (install and upgrade)
- Check wizard translation
- 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
- Check expected binaries are in PATH thanks to links in /usr/local/bin
- Run binaries with version and verbose options
Supported DSM versions are 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.
Packages are no longer published systematically for DSM 5.2... we may wait for
user specific DSM 5.2 request to publish these variants in repository. Notice
one user requested a build for his architecture
ppc853x-4.2
For some low memory applications, often command lines, interesting for SRM
users, it is possible to upload packages in repository with targets
publish-arch-armv7-1.2
. As SRM has no "custom repository" support in Package
Center, users have to manually download and install package from
https://synocommunity.com/packages architecture links.
Generate package with following Make targets, with -jX
or more if you have
enough cores.
make -j`nproc` arch-x64-6.1 arch-armv7-6.1 arch-aarch64-6.1 arch-armv7-1.2 \
arch-qoriq-6.1 arch-evansport-6.1 arch-88f6281-6.1 arch-hi3535-6.1
The regular all-supported
now also support parallel build and can be used such as:
make -j`nproc` all-supported
Notice x64
, armv7
and aarch64
are generic architectures generating a
single package for all concerned CPU models/architectures of numerous Synology
devices.
According to application's relevance, arch-armv7-1.2
may be excluded.
-
For upgrade, install current online package version on XPEnology DSM 5.2
-
Test up
-
Install manually
x64
package on XPEnology DSM 6.1 or 6.2 -
Uninstall package ** Check proper removal
/var/packages/{package}/
** Check service account has been removed from/etc/passwd
In order to publish packages online you need a local.mk
configuration file. The PUBLISH_API_KEY
is available through your profile at https://synocommunity.com/profile. The file needs to be located at the top directory of spksrc
and must contain the following (automatically generated by calling make setup-synocommunity
from the root directory):
PUBLISH_URL = https://api.synocommunity.com
PUBLISH_API_KEY = <MYKEY>
DISTRIBUTOR = SynoCommunity
DISTRIBUTOR_URL = https://synocommunity.com/
REPORT_URL = https://github.com/SynoCommunity/spksrc/issues
DEFAULT_TC = 6.1 7.0
After local tests, submit packages to online repository and be patient. Do not
try to parallelize, spkrepo
will not appreciate.
make publish-arch-x64-6.1 publish-arch-armv7-6.1 publish-arch-aarch64-6.1 publish-arch-armv7-1.2 \
publish-arch-qoriq-6.1 publish-arch-evansport-6.1 publish-arch-88f6281-6.1 publish-arch-hi3535-6.1
Can also use publish-all-supported
which will lead to a similar output. Note that adding -jX
will not operate in parallel build as publishing must be done serially:
make publish-all-supported
According to application's relevance, publish-arch-armv7-1.2
may be excluded.
After publish, go into repository:
- login at https://synocommunity.com/admin/build/admin/
- Check all builds are available https://synocommunity.com/admin/build/ (tip: filter by username using your own.)
- 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/version/
For package with libstdc++
dependency, it is required to build additional
packages specific for DSM 5.2:
make arch-qoriq-5.2 arch-x64-5.2 arch-evansport-5.2 arch-88f6281-5.2
Apply test process either on DSM 5.2 XPEnology except if you still run DSM 5.2 on some devices.
Publish without parallelization:
make publish-arch-qoriq-5.2 publish-arch-x64-5.2 publish-arch-evansport-5.2 publish-arch-88f6281-5.2 publish-arch-alpine-5.2 \
publish-arch-armada370-5.2 publish-arch-armada375-5.2 publish-arch-armada38x-5.2 publish-arch-armadaxp-5.2 \
publish-arch-comcerto2k-5.2 publish-arch-monaco-5.2
After publish, activate your build to install package from Package Center, and if OK activate package Version.
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 where ffmpeg have already been built.
cd spk/chromaprint;
for a in x64 evansport 88f6281 armv7 aarch64 hi3535; do make publish ARCH=$a TCVERSION=6.1; done
Concerned packages: tvheadend, chromaprint, comskip
For SRM packages, use make publish ARCH=armv7 TCVERSION=1.2
in application spk folder.
Logic is implemented thanks to: