You are here
I’m new to TurnKey Linux, and I want to modify an existing app.
I’m using turnkey-tkldev-14.1-jessie-amd64.ova.
I can make that app as well as core as described there:
https://github.com/turnkeylinux-apps/tkldev/tree/master/docs
The recommended “Setup” linked there works fine for me.
However, I’m stuck at “Hello world”:
https://github.com/turnkeylinux-apps/tkldev/blob/master/docs/helloworld.rst
Executing the first command fails already:
fab-chroot build/root.sandbox/
mount: mount point /turnkey/fab/products/core/build/root.sandbox/proc does not exist
In fact, the build directories are all empty (after make, mind you):
ls build/root.*
build/root.spec
build/root.build:
build/root.patched:
build/root.sandbox:
What do I need to do for non-empty directories?
Probably related: All packages for the app are downloaded and installed for
every invocation of make, which takes ages. How to set up the system such
that only updated packages get downloaded and installed?
Thanks
Jens
Hi Jens
Hopefully the discussion further down in that last link may help?
Apologies that the current docs lead you astray. Hopefully we'll tidy that up ASAP, but for now, you'll just need to ignore the bits of the docs that discuss the sandbox...
Got the same error
https://github.com/turnkeylinux-apps/tkldev/blob/master/docs/helloworld.rst
Following the tutorial, I ran the command line
root@tkldev .../products/core# fab-chroot build/root.sandbox/
and got the same error
mount: mount point /turnkey/fab/products/core/build/root.sandbox/proc does not exist
Traceback (most recent call last):
File "/usr/lib/fab/wrapper.py", line 34, in <module>
CliWrapper.main()
File "/usr/lib/python2.7/dist-packages/pyproject.py", line 388, in main
commands.run(name, args)
File "/usr/lib/python2.7/dist-packages/pyproject.py", line 261, in run
command.module.main()
File "/usr/lib/fab/pylib/cmd_chroot.py", line 110, in main
chroot = Chroot(newroot, environ=get_environ(env_conf))
File "/usr/lib/python2.7/dist-packages/chroot.py", line 69, in __init__
self.magicmounts = MagicMounts(self.path)
File "/usr/lib/python2.7/dist-packages/chroot.py", line 28, in __init__
self.mount()
File "/usr/lib/python2.7/dist-packages/chroot.py", line 39, in mount
executil.system("mount -t proc", "proc-chroot", self.paths.proc)
File "/usr/lib/python2.7/dist-packages/executil.py", line 56, in system
raise ExecError(command, exitcode)
executil.ExecError: non-zero exitcode (32) for command: mount -t proc 'proc-chroot' '/turnkey/fab/products/core/build/root.sandbox/proc'
Yes the sandbox is broken as I noted above.
And to add to the issues, in v15.x we we had to move from auFS to OverlayFS. Because of differences in functionality we need to rewrite of one of the underlying tools we use (called 'deck'). The rewrite was quite minimalist and primarily done by Alon (in a hurray, for his own internal needs at the time) and didn't include all the features that the original deck provides. We have extended Alon's rewrite since, but in part because of OverlayFS, it still doesn't work the same way as it used to.
I really need to update the docs and I'm really sorry that we haven't done a good job of keeping them up to date.
So to recap, the 'sandbox' is no longer created. Plus the "decks" (e.g. root.build, root.patched', etc) don't work the same as they used to.
It's been a while since I did it, but IIRC you can still play around in the chroot, but you're probably best off just building to root.patched (i.e. 'make root.patched') and then chroot in. Then you should be able to complete the build... Unfortunately, I haven't tested that so I'm not 100% sure it'll work...
Apologies again about the misalignment between the docs and reality...
Perhaps it's useful if I lay out the dev process that I use...
Out of interest, the way I usually develop a new appliance (I use a local TKLDev VM) goes something like this:
I hope that is of some value for you...
Add new comment