@@ -128,15 +128,6 @@ fn includedir_from_source() -> PathBuf {
128128 outdir. join ( "build" ) . join ( "include" )
129129}
130130
131- fn trim_wrapped_patch_version ( patch : & str ) -> & str {
132- let len = patch. len ( ) ;
133- if len < 3 {
134- return patch;
135- }
136-
137- & patch[ ..len - 2 ]
138- }
139-
140131fn probe_includedir ( ) -> PathBuf {
141132 if cfg ! ( feature = "vendored" ) {
142133 return includedir_from_source ( ) ;
@@ -145,14 +136,17 @@ fn probe_includedir() -> PathBuf {
145136 println ! ( "cargo:rerun-if-env-changed=LIBOQS_NO_VENDOR" ) ;
146137 let force_no_vendor = std:: env:: var_os ( "LIBOQS_NO_VENDOR" ) . map_or ( false , |v| v != "0" ) ;
147138
148- let major_version: usize = env ! ( "CARGO_PKG_VERSION_MAJOR" ) . parse ( ) . unwrap ( ) ;
149- let minor_version: usize = env ! ( "CARGO_PKG_VERSION_MINOR" ) . parse ( ) . unwrap ( ) ;
150- let patch_version = env ! ( "CARGO_PKG_VERSION_PATCH" ) ;
151- let patch_trimmed = trim_wrapped_patch_version ( patch_version) ;
152- let lower_bound = format ! ( "{}.{}.{}" , major_version, minor_version, patch_trimmed) ;
153- let upper_bound = format ! ( "{}.{}.0" , major_version, minor_version + 1 ) ;
139+ let version = env ! ( "CARGO_PKG_VERSION" ) ;
140+ let ( _, liboqs_version) = version. split_once ( "+liboqs-" ) . unwrap ( ) ;
141+ let & [ major_version, minor_version, _] =
142+ liboqs_version. split ( '.' ) . collect :: < Vec < _ > > ( ) . as_slice ( )
143+ else {
144+ panic ! ( "Failed to parse target liboqs version" ) ;
145+ } ;
146+ let minor_num: usize = minor_version. parse ( ) . unwrap ( ) ;
147+ let upper_bound = format ! ( "{}.{}.0" , major_version, minor_num + 1 ) ;
154148 let config = pkg_config:: Config :: new ( )
155- . range_version ( lower_bound . as_str ( ) ..upper_bound. as_str ( ) )
149+ . range_version ( liboqs_version ..upper_bound. as_str ( ) )
156150 . probe ( "liboqs" ) ;
157151
158152 match config {
0 commit comments