diff --git a/CHANGELOG.md b/CHANGELOG.md index c3bf600..bc03d5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ -## 0.1.4+5 +## 0.1.4+6 -* Linux: Also search lib/ sub directory for libargon so file. +* Linux: Also search lib/ sub directory for libargon.so file. ## 0.1.4+3 diff --git a/lib/src/argon2_ffi_impl.dart b/lib/src/argon2_ffi_impl.dart index e515c0f..88e1c6f 100644 --- a/lib/src/argon2_ffi_impl.dart +++ b/lib/src/argon2_ffi_impl.dart @@ -96,21 +96,26 @@ class Argon2FfiFlutter extends Argon2Base { // on linux the library is put into a `lib` sub directory. _logger.finest( 'Resolving path to $name relative to ${Platform.resolvedExecutable}'); - final appDir = File(Platform.resolvedExecutable).parent; + final appDir = File(Platform.resolvedExecutable).parent.absolute; final appDirPath = appDir.path; - final f = File(path.join(appDirPath, name)); - _logger.finest('checking $appDirPath for $name'); - if (!f.existsSync()) { - _logger.finest('$name not found in current path, looking into $name'); - final f = File(path.join(appDirPath, 'lib', name)); + { + final f = File(path.join(appDirPath, name)); + _logger.finest('checking $appDirPath for $name'); if (f.existsSync()) { - final ret = f.absolute.path; - _logger.finer('Loading from $ret'); - return ret; - } else { - _logger.severe('Unable to find $name in $appDirPath or ${f.path}'); + // library available in the same path as the executable. + return name; } } + _logger.finest('$name not found in current path, looking into lib/$name'); + final libSo = File(path.join(appDirPath, 'lib', name)); + if (libSo.existsSync()) { + final ret = libSo.absolute.path; + // final relative = '${path.relative(ret, from: cwd.path)}'; + _logger.finer('Loading from ($ret)'); + return ret; + } else { + _logger.severe('Unable to find $name at ${libSo.path}'); + } } return name; }; @@ -141,9 +146,11 @@ class Argon2FfiFlutter extends Argon2Base { orElse: () => throw StateError( 'Unsupported Operating System ${Platform.operatingSystem}'))[1] as String; + _logger.finest('resolving $libraryName'); final path = resolveLibrary(libraryName); + _logger.finest('DynamicLibrary.open($path)'); try { - return DynamicLibrary.open(libraryName); + return DynamicLibrary.open(path); } on ArgumentError catch (e, stackTrace) { _logger.severe( 'Error while loading dynamic library from $path ($libraryName)', diff --git a/pubspec.yaml b/pubspec.yaml index 355c2e8..7805c0e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: argon2_ffi_base description: Base package defining the interface for an Argon2 implementation. -version: 0.1.4+5 +version: 0.1.4+6 homepage: https://github.com/authpass/argon2_ffi_base environment: