From 47a712ed59a3be3430d1a5ac5a80a3a008aec56c Mon Sep 17 00:00:00 2001
From: Robert Izzard <r.izzard@surrey.ac.uk>
Date: Wed, 13 Oct 2021 21:01:19 +0100
Subject: [PATCH] try to rearrange symlinking

---
 binarycpython/utils/grid.py | 29 ++++++++++++++++-------------
 1 file changed, 16 insertions(+), 13 deletions(-)

diff --git a/binarycpython/utils/grid.py b/binarycpython/utils/grid.py
index 00ce11cbe..545d02175 100644
--- a/binarycpython/utils/grid.py
+++ b/binarycpython/utils/grid.py
@@ -2677,19 +2677,22 @@ class Population:
         # perhaps create symlink to latest gridcode: note, we use os.replace()
         # in case the symlink already exists
         if self.grid_options['symlink latest gridcode']:
-            ftmp = os.path.join(self.grid_options['tmp_dir'],
-                                'binary_c_grid-latest-tmp-symlink')
-            fsym = os.path.join(self.grid_options['tmp_dir'],
-                                'binary_c_grid-latest')
-            os.symlink(gridcode_filename,ftmp)
-            os.replace(ftmp,'binary_c_grid-latest-tmp')
-            verbose_print(
-                "{}Symlinked grid code to {} {}".format(self.ANSI_colours['blue'],
-                                                        ftmp,
-                                                        self.ANSI_colours['reset']),
-                self.grid_options["verbosity"],
-                1,
-            )
+            symlink = os.path.join(self.grid_options['tmp_dir'],
+                                   'binary_c_grid-latest')
+            os.unlink(symlink)
+
+            try:
+                os.symlink(gridcode_filename,symlink)
+                verbose_print(
+                    "{}Symlinked grid code to {} {}".format(self.ANSI_colours['blue'],
+                                                            symlink,
+                                                            self.ANSI_colours['reset']),
+                    self.grid_options["verbosity"],
+                    1,
+                )
+            except OSError:
+                print("symlink failed")
+
 
     def _write_gridcode_system_call(self, grid_variable, dry_run, branchpoint, branchcode):
         #################################################################################
-- 
GitLab