pkgscripts-ng
pkgscripts-ng copied to clipboard
EnvDeploy fails with PicklingError exception
Running ./EnvDeploy -v 6.2 -p x64
fails with the following output:
root@host:/toolkit/pkgscripts# ./EnvDeploy -v 6.2 -p x64
Download... https://sourceforge.net/projects/dsgpl/files/toolkit/DSM6.2/base_env-6.2.txz
Download destination: /toolkit/toolkit_tarballs/base_env-6.2.txz
Download... https://sourceforge.net/projects/dsgpl/files/toolkit/DSM6.2/ds.x64-6.2.env.txz
Download destination: /toolkit/toolkit_tarballs/ds.x64-6.2.env.txz
Download... https://sourceforge.net/projects/dsgpl/files/toolkit/DSM6.2/ds.x64-6.2.dev.txz
Download destination: /toolkit/toolkit_tarballs/ds.x64-6.2.dev.txz
Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib/python3.2/threading.py", line 740, in _bootstrap_inner
self.run()
File "/usr/lib/python3.2/threading.py", line 693, in run
self._target(*self._args, **self._kwargs)
File "/usr/lib/python3.2/multiprocessing/pool.py", line 346, in _handle_tasks
put(task)
_pickle.PicklingError: Can't pickle <class 'method'>: attribute lookup builtins.method failed
The script then hangs, seemingly indefinitely (presumably waiting for the spawned threads to finish?). Cancelling the script using keyboard interrupt prints the following additional stack trace from EnvDeploy
:
Traceback (most recent call last):
File "./EnvDeploy", line 335, in <module>
main(sys.argv[1:])
File "./EnvDeploy", line 329, in main
ToolkitDeployer(args, platforms, tarball_manager).deploy()
File "./EnvDeploy", line 235, in deploy
doPlatformParallel(self.setup_chroot, self.platforms)
File "/toolkit/pkgscripts/include/python/parallel.py", line 60, in doPlatformParallel
pool.terminate()
File "/usr/lib/python3.2/multiprocessing/pool.py", line 456, in terminate
self._terminate()
File "/usr/lib/python3.2/multiprocessing/util.py", line 200, in __call__
res = self._callback(*self._args, **self._kwargs)
File "/usr/lib/python3.2/multiprocessing/pool.py", line 486, in _terminate_pool
cls._help_stuff_finish(inqueue, task_handler, len(pool))
File "/usr/lib/python3.2/multiprocessing/pool.py", line 471, in _help_stuff_finish
inqueue._rlock.acquire()
KeyboardInterrupt
The downloads mentioned in the output from the script all seems to download properly before the exception is thrown.
I'm following the Package Developer Guide from here: https://originhelp.synology.com/developer-guide/create_package/install_toolkit.html