[cmake-developers] [CPack] CPackDeb and fakeroot

Raffi Enficiaud raffi.enficiaud at mines-paris.org
Tue Aug 25 17:52:38 EDT 2015


Le 25/08/15 16:48, Eric Noulard a écrit :
> I would suggest checking (in CPackDeb generator code) whether if CPack
> has been called in a fakerootED environment. This can be done by
> checking whether if "FAKEROOTKEY" env var is defined or not.
> If fakeroot is already in action then one should not call fakeroot again
> (whatever the fakerootED user is).

Hmmm, unfortunately it does not work. This variable does not exist on 
the fakerooted shell. I think there is no "good" way to detect that we 
are in a fakerooted environment because their purpose is to mimic the 
commands as if the real root user is entering them (and introspection 
should not be possible by design).

I see two technical solutions:
- either using the system tar: this would not work in the case of cross 
compilation (and in some circumstances only) but would work in the other 
case. I believe that all the debian packaging tools are just using the 
system provided tar, so this should closely mimic the debian-packaging 
machinery better,
- or using a CPACK variable to avoid having fakeroot executed

I see several workarounds/hacks:
- executing with fakeroot in cpack first and in case of failure falling 
back to run tar without fakeroot
- detect if the current user is root already

Raffi



More information about the cmake-developers mailing list