diff --git a/_service b/_service
new file mode 100644
index 0000000..2661b78
--- /dev/null
+++ b/_service
@@ -0,0 +1,16 @@
+
+
+ https://github.com/pyca/bcrypt/
+ @PARENT_TAG@~@TAG_OFFSET@
+ git
+ 4.0.1
+
+
+ bcrypt/src/_bcrypt
+ gz
+ true
+
+
+ bcrypt/src/_bcrypt
+
+
diff --git a/bcrypt-3.2.2.tar.gz b/bcrypt-3.2.2.tar.gz
deleted file mode 100644
index 95a7a2b..0000000
--- a/bcrypt-3.2.2.tar.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:433c410c2177057705da2a9f2cd01dd157493b2a7ac14c8593a16b3dab6b6bfb
-size 42455
diff --git a/bcrypt-4.0.1.tar.gz b/bcrypt-4.0.1.tar.gz
new file mode 100644
index 0000000..5ff4144
--- /dev/null
+++ b/bcrypt-4.0.1.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd
+size 25498
diff --git a/cargo_config b/cargo_config
new file mode 100644
index 0000000..6fb4ff4
--- /dev/null
+++ b/cargo_config
@@ -0,0 +1,5 @@
+[source.crates-io]
+replace-with = "vendored-sources"
+
+[source.vendored-sources]
+directory = "vendor"
\ No newline at end of file
diff --git a/python-bcrypt.changes b/python-bcrypt.changes
index c928b2a..3a56cfd 100644
--- a/python-bcrypt.changes
+++ b/python-bcrypt.changes
@@ -1,3 +1,20 @@
+-------------------------------------------------------------------
+Wed Nov 2 16:32:00 UTC 2022 - Daniel Garcia
+
+- Update to 4.0.1:
+ * We now build PyPy manylinux wheels.
+ * Fixed a bug where passing an invalid salt to checkpw could result in a
+ pyo3_runtime.PanicException. It now correctly raises a ValueError.
+- 4.0.0:
+ * bcrypt is now implemented in Rust. Users building from source will need to
+ have a Rust compiler available. Nothing will change for users downloading
+ wheels.
+ * We no longer ship manylinux2010 wheels. Users should upgrade to the latest
+ pip to ensure this doesn’t cause issues downloading wheels on their
+ platform. We now ship manylinux_2_28 wheels for users on new enough
+ platforms.
+ * NUL bytes are now allowed in inputs.
+
-------------------------------------------------------------------
Wed Nov 2 15:43:50 UTC 2022 - Daniel Garcia
diff --git a/python-bcrypt.spec b/python-bcrypt.spec
index 3b24939..268a6da 100644
--- a/python-bcrypt.spec
+++ b/python-bcrypt.spec
@@ -17,26 +17,31 @@
#
-%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-%define skip_python2 1
Name: python-bcrypt
-Version: 3.2.2
+Version: 4.0.1
Release: 0
Summary: BSD type 2a and 2b password hashing
License: Apache-2.0
Group: Development/Languages/Python
URL: https://github.com/pyca/bcrypt/
-Source: https://files.pythonhosted.org/packages/source/b/bcrypt/bcrypt-%{version}.tar.gz
+Source0: https://files.pythonhosted.org/packages/source/b/bcrypt/bcrypt-%{version}.tar.gz
+Source1: vendor.tar.gz
+Source2: cargo_config
BuildRequires: %{python_module cffi >= 1.1}
BuildRequires: %{python_module devel}
+BuildRequires: %{python_module pip}
BuildRequires: %{python_module pytest >= 3.2.1}
+BuildRequires: %{python_module setuptools-rust}
+BuildRequires: %{python_module wheel}
# setuptools 40.8.0 is required by upstream only for a pip issue that doesn't
# affect us, so we relax the requirement to build in SLE/Leap 15.2 with 40.5.0
BuildRequires: %{python_module setuptools >= 40.5.0}
+BuildRequires: cargo-packaging
BuildRequires: fdupes
BuildRequires: pkgconfig
BuildRequires: python-rpm-macros
BuildRequires: pkgconfig(libffi)
+ExclusiveArch: %{rust_tier1_arches}
%requires_eq python-cffi
Provides: python-py-bcrypt = %{version}
Obsoletes: python-py-bcrypt < %{version}
@@ -48,14 +53,17 @@ This Python module supports creating (and verifying) password hashes
using the BSD-originating hashing methods known as "2a" and "2b".
%prep
-%setup -q -n bcrypt-%{version}
+%autosetup -p1 -a1 -n bcrypt-%{version}
+mkdir .cargo
+cp %{SOURCE2} .cargo/config
+mv Cargo.lock src/_bcrypt
%build
export CFLAGS="%{optflags} -fno-strict-aliasing"
-%python_build
+%pyproject_wheel
%install
-%python_install
+%pyproject_install
%python_expand %fdupes %{buildroot}/%{$python_sitearch}
%check
@@ -65,6 +73,6 @@ export CFLAGS="%{optflags} -fno-strict-aliasing"
%license LICENSE
%doc README.rst
%{python_sitearch}/bcrypt
-%{python_sitearch}/bcrypt-%{version}-py*.egg-info
+%{python_sitearch}/bcrypt-%{version}*-info
%changelog
diff --git a/vendor.tar.gz b/vendor.tar.gz
new file mode 100644
index 0000000..1c6ee85
--- /dev/null
+++ b/vendor.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3730a7bcb9ed69ab494c1caddacd54e85b0d9576988e393eb4abcc187f8f7315
+size 9367315