SynologyOpenSource / pkgscripts-ng

Synology DSM6.0 package toolkit framework
162 stars 56 forks source link

Cannot create package using Docker container after running it a second time with existing build environment #24

Open raman325 opened 4 years ago

raman325 commented 4 years ago

Hi,

I am using a Docker container to set up an Environment to create a package. When I run the Docker image, the intent is:

  1. If an environment for a given package architecture and DSM version doesn't exist, create it using EnvDeploy
  2. Run PkgCreate.py to create package.

The first time I run the container (which is run in privileged mode), everything works fine (the package gets created) and the container stops after the package creation. Anytime I try to run the container a subsequent time, however, I start to get failures. From the second time onward, only step 2 runs because the environments already exist. I can always destroy the container and rebuild it, but my goal here is to have my build environment already set up so I can generate packages at will.

I posted some of the steps I found failing below, any idea what could be happening? Seems like I am missing something on the cleanup side that is preventing me from running this again. I have tried running chroot $build_env umount /proc per the README after package creation to hopefully reset the build environment but I get umount: /proc: umount failed: No such file or directory

Sometimes:

mount: /build_env/ds.avoton-6.2/proc: permission denied.
umount: /build_env/ds.avoton-6.2/proc: must be superuser to unmount.

Rarely:

mount: /build_env/ds.avoton-6.2/proc: cannot mount none read-only.
umount: /build_env/ds.avoton-6.2/proc: must be superuser to unmount.

Always: /pkgscripts-ng/SynoBuild: line 129: /dev/fd/62: No such file or directory /pkgscripts-ng/SynoInstall: line 73: /dev/fd/62: No such file or directory

hradec commented 3 years ago

Did you published your docker container somewhere? I'm interested in trying the same to build to my synology DS415play, which is i686 (evansport).

hradec commented 3 years ago

Always: /pkgscripts-ng/SynoBuild: line 129: /dev/fd/62: No such file or directory /pkgscripts-ng/SynoInstall: line 73: /dev/fd/62: No such file or directory

turns out you have to run the docker container with --privileged to fix that issue!

raman325 commented 3 years ago

not sure how I missed this but I will give that a shot, thanks! I am using this docker container https://github.com/runfalk/synology-wireguard with this script I wrote to make it easy to update wireguard on my NAS: https://github.com/raman325/syno-wg-autoinstaller

EDIT: It's been a while since I have looked at this so I forgot, but I checked and I am running the container with the privileged flag so unfortunately that doesn't help me