diff options
author | Martin Poirier <theeth@yahoo.com> | 2012-02-25 19:38:28 +0400 |
---|---|---|
committer | Martin Poirier <theeth@yahoo.com> | 2012-02-25 19:38:28 +0400 |
commit | 6b9f9771a51450e48d47a816833d100b6ec178bd (patch) | |
tree | fc32d6ea91f5e30907014ed6949bb3838e39d764 | |
parent | bd5ff24747c72373e6ea694040f9fd2a264d02ea (diff) |
[#30235] Net Render Master/Slave Not Working in OSX (Blender v2.62 32 Bit)
Reported by Ron Proctor
netrender didn't recursively create missing directory for user specified temporary paths.
Also added environment variables and user expansion to properly support env vars and user (~ and ~user) in paths.
-rw-r--r-- | netrender/client.py | 4 | ||||
-rw-r--r-- | netrender/master.py | 6 | ||||
-rw-r--r-- | netrender/slave.py | 6 | ||||
-rw-r--r-- | netrender/utils.py | 24 |
4 files changed, 24 insertions, 16 deletions
diff --git a/netrender/client.py b/netrender/client.py index 069d5bdb..f246dcd8 100644 --- a/netrender/client.py +++ b/netrender/client.py @@ -443,9 +443,7 @@ class NetworkRenderEngine(bpy.types.RenderEngine): result_path = os.path.join(bpy.path.abspath(netsettings.path), "output.exr") folder = os.path.split(result_path)[0] - - if not os.path.exists(folder): - os.mkdir(folder) + verifyCreateDir(folder) f = open(result_path, "wb") diff --git a/netrender/master.py b/netrender/master.py index d5989f8c..69a185b1 100644 --- a/netrender/master.py +++ b/netrender/master.py @@ -979,8 +979,7 @@ class RenderMasterServer(socketserver.ThreadingMixIn, http.server.HTTPServer): else: self.path = path - if not os.path.exists(self.path): - os.mkdir(self.path) + verifyCreateDir(self.path) self.slave_timeout = 5 # 5 mins: need a parameter for that @@ -1105,8 +1104,7 @@ class RenderMasterServer(socketserver.ThreadingMixIn, http.server.HTTPServer): # create job directory job.save_path = os.path.join(self.path, "job_" + job.id) - if not os.path.exists(job.save_path): - os.mkdir(job.save_path) + verifyCreateDir(job.save_path) job.save() diff --git a/netrender/slave.py b/netrender/slave.py index fe3979a7..d8d82e8d 100644 --- a/netrender/slave.py +++ b/netrender/slave.py @@ -144,8 +144,7 @@ def render_slave(engine, netsettings, threads): slave_id = response.getheader("slave-id") NODE_PREFIX = os.path.join(slave_path, "slave_" + slave_id) - if not os.path.exists(NODE_PREFIX): - os.mkdir(NODE_PREFIX) + verifyCreateDir(NODE_PREFIX) engine.update_stats("", "Network render connected to master, waiting for jobs") @@ -161,8 +160,7 @@ def render_slave(engine, netsettings, threads): engine.update_stats("", "Network render processing job from master") JOB_PREFIX = os.path.join(NODE_PREFIX, "job_" + job.id) - if not os.path.exists(JOB_PREFIX): - os.mkdir(JOB_PREFIX) + verifyCreateDir(JOB_PREFIX) # set tempdir for fsaa temp files # have to set environ var because render is done in a subprocess and that's the easiest way to propagate the setting diff --git a/netrender/utils.py b/netrender/utils.py index c173e02d..7a2abb6b 100644 --- a/netrender/utils.py +++ b/netrender/utils.py @@ -269,6 +269,23 @@ def hashData(data): m.update(data) return m.hexdigest() +def verifyCreateDir(directory_path): + original_path = directory_path + directory_path = os.path.expanduser(directory_path) + directory_path = os.path.expandvars(directory_path) + if not os.path.exists(directory_path): + try: + os.makedirs(directory_path) + print("Created directory:", directory_path) + if original_path != directory_path: + print("Expanded from the following path:", original_path) + except: + print("Couldn't create directory:", directory_path) + if original_path != directory_path: + print("Expanded from the following path:", original_path) + raise + + def cacheName(ob, point_cache): name = point_cache.name if name == "": @@ -332,9 +349,7 @@ def createLocalPath(rfile, prefixdirectory, prefixpath, forcelocal): suffix = os.path.join(last, suffix) directory = os.path.join(prefixdirectory, suffix) - - if not os.path.exists(directory): - os.mkdir(directory) + verifyCreateDir(directory) finalpath = os.path.join(directory, name) else: @@ -350,8 +365,7 @@ def createLocalPath(rfile, prefixdirectory, prefixpath, forcelocal): directory = directory.replace("../") directory = os.path.join(prefixdirectory, directory) - if not os.path.exists(directory): - os.mkdir(directory) + verifyCreateDir(directory) finalpath = os.path.join(directory, name) |