installpanda: create intermediate directories with mode 0755 too

Fixes #541
This commit is contained in:
rdb 2019-01-23 23:18:51 +01:00
parent 3cc9e49469
commit 0b087ecf92
2 changed files with 31 additions and 17 deletions

View File

@ -155,25 +155,29 @@ def InstallPanda(destdir="", prefix="/usr", outputdir="built", libdir=GetLibDir(
libdir = prefix + "/" + libdir
# Create the directory structure that we will be putting our files in.
oscmd("mkdir -m 0755 -p "+destdir+prefix+"/bin")
oscmd("mkdir -m 0755 -p "+destdir+prefix+"/include")
oscmd("mkdir -m 0755 -p "+destdir+prefix+"/include/panda3d")
oscmd("mkdir -m 0755 -p "+destdir+prefix+"/share/panda3d")
oscmd("mkdir -m 0755 -p "+destdir+prefix+"/share/mime-info")
oscmd("mkdir -m 0755 -p "+destdir+prefix+"/share/mime/packages")
oscmd("mkdir -m 0755 -p "+destdir+prefix+"/share/application-registry")
oscmd("mkdir -m 0755 -p "+destdir+prefix+"/share/applications")
oscmd("mkdir -m 0755 -p "+destdir+libdir+"/panda3d")
# Don't use os.makedirs or mkdir -p; neither properly set permissions for
# created intermediate directories.
MakeDirectory(destdir+prefix+"/bin", mode=0o755, recursive=True)
MakeDirectory(destdir+prefix+"/include", mode=0o755)
MakeDirectory(destdir+prefix+"/include/panda3d", mode=0o755)
MakeDirectory(destdir+prefix+"/share", mode=0o755)
MakeDirectory(destdir+prefix+"/share/panda3d", mode=0o755)
MakeDirectory(destdir+prefix+"/share/mime-info", mode=0o755)
MakeDirectory(destdir+prefix+"/share/mime", mode=0o755)
MakeDirectory(destdir+prefix+"/share/mime/packages", mode=0o755)
MakeDirectory(destdir+prefix+"/share/application-registry", mode=0o755)
MakeDirectory(destdir+prefix+"/share/applications", mode=0o755)
MakeDirectory(destdir+libdir+"/panda3d", mode=0o755, recursive=True)
for python_version in python_versions:
oscmd("mkdir -m 0755 -p "+destdir+python_version["purelib"])
oscmd("mkdir -m 0755 -p "+destdir+python_version["platlib"]+"/panda3d")
MakeDirectory(destdir+python_version["purelib"], mode=0o755, recursive=True)
MakeDirectory(destdir+python_version["platlib"]+"/panda3d", mode=0o755, recursive=True)
if (sys.platform.startswith("freebsd")):
oscmd("mkdir -m 0755 -p "+destdir+prefix+"/etc")
oscmd("mkdir -m 0755 -p "+destdir+"/usr/local/libdata/ldconfig")
MakeDirectory(destdir+prefix+"/etc", mode=0o755)
MakeDirectory(destdir+"/usr/local/libdata/ldconfig", mode=0o755, recursive=True)
else:
oscmd("mkdir -m 0755 -p "+destdir+"/etc/ld.so.conf.d")
MakeDirectory(destdir+"/etc/ld.so.conf.d", mode=0o755, recursive=True)
# Write the Config.prc file.
Configrc = ReadFile(outputdir+"/etc/Config.prc")

View File

@ -1104,9 +1104,19 @@ def GetOptimizeOption(opts):
##
########################################################################
def MakeDirectory(path):
if os.path.isdir(path): return 0
os.mkdir(path)
def MakeDirectory(path, mode=None, recursive=False):
if os.path.isdir(path):
return
if recursive:
parent = os.path.dirname(path)
if parent and not os.path.isdir(parent):
MakeDirectory(parent, mode=mode, recursive=True)
if mode is not None:
os.mkdir(path, mode)
else:
os.mkdir(path)
def ReadFile(wfile):
try: