Repository: conan-io/conan-center-index

Issue:
[libsodium] libsodium/1.0.18: Recipe broken on Python < 3.6
The use of f-strings in the Python recipe causes the package to not be installed with a Python version that is less than 3.6. This is a serious problem for using conan with older distributions, such as Ubuntu Xenial or CentOS. Instead of f-strings, the `.format(...)` or `%` interpolation methods should be used.

### Package and Environment Details
  * Package Name/Version: **libsodium/1.0.18**

### Conan output
```
ERROR: Error loading conanfile at '~/.conan/data/libsodium/1.0.18/_/_/export/conanfile.py': Unable to load conanfile in ~/.conan/data/libsodium/1.0.18/_/_/export/conanfile.py
  File "/usr/lib/python3.5/imp.py", line 172, in load_source
    module = _load(spec)
  File "<frozen importlib._bootstrap>", line 693, in _load
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 661, in exec_module
  File "<frozen importlib._bootstrap_external>", line 767, in get_code
  File "<frozen importlib._bootstrap_external>", line 727, in source_to_code
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "~/.conan/data/libsodium/1.0.18/_/_/export/conanfile.py", line 126
    raise ConanInvalidConfiguration(f"Unsupported arch or Neutrino version for libsodium: {self.settings.os} {self.settings.arch}")
                                                                                                                                 ^
SyntaxError: invalid syntax
```

### Locations in Recipe
```
libsodium/1.0.18/conanfile.py
126:            raise ConanInvalidConfiguration(f"Unsupported arch or Neutrino version for libsodium: {self.settings.os} {self.settings.arch}")
148:            raise ConanInvalidConfiguration(f"Unsupported os for libsodium: {self.settings.os}")
```

This is as far as I can tell the only package in this repository that uses f-strings.


Discussion:
You are totally right about that. Thanks for reporting!!

Resolving patch:
diff --git a/recipes/libsodium/1.0.18/conanfile.py b/recipes/libsodium/1.0.18/conanfile.py
--- a/recipes/libsodium/1.0.18/conanfile.py
+++ b/recipes/libsodium/1.0.18/conanfile.py
@@ -124,7 +124,7 @@ def _build_autotools_neutrino(self, configure_args):
             if self.settings.arch == "armv7":
                 host_arch += "eabi"
         else:
-            raise ConanInvalidConfiguration(f"Unsupported arch or Neutrino version for libsodium: {self.settings.os} {self.settings.arch}")
+            raise ConanInvalidConfiguration("Unsupported arch or Neutrino version for libsodium: {} {}".format(self.settings.os, self.settings.arch))
         configure_args.append("--host=%s" % host_arch)
         self._build_autotools_impl(configure_args)
 
@@ -146,7 +146,7 @@ def _build_autotools(self):
         elif self.settings.os == "Neutrino":
             self._build_autotools_neutrino(configure_args)
         else:
-            raise ConanInvalidConfiguration(f"Unsupported os for libsodium: {self.settings.os}")
+            raise ConanInvalidConfiguration("Unsupported os for libsodium: {}".format(self.settings.os))
 
     def build(self):
         for patch in self.conan_data["patches"][self.version]:


Test patch: