SynologyOpenSource / pkgscripts-ng

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

EnvDeploy fails with PicklingError exception #15

Open olamartensson opened 5 years ago

olamartensson commented 5 years ago

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