-
Notifications
You must be signed in to change notification settings - Fork 1.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update OpenSSL to 1.1.1 #1478
Update OpenSSL to 1.1.1 #1478
Conversation
Ok, this is breaking Python 2, as Python 2 is not compatible with OpenSSL 1.1. :[ |
So maybe get #1460 first, then i'll adjust this PR? |
Or maybe I could rewrite the history of pr #1460 and integrate your "openssl update and the clang feature" with the git commit option --author with your info. You could send me a patch or two with the changes you made in here and the appropriate commit messages and I will solve the conflicts and merge it into my branch but with your user info. I still will not close this pr because, maybe #1460 will not be merged to master branch, if merged, then you can close this (and your authory will be preserved) and if not, then this pr can be merged as usual. I think that this should be done after someone review this pr and approve it (doesn't matter that the tests fails here, we will see if it works in pr #1460, in matter fact we know that it does with the appropriate environment: proper ndk version and python recipes) What do you think about that? |
What version of Android NDK are you using? (I was testing with 17c and was running into android/ndk#445 (comment)) |
The android ndk has been migrated his default compiler from gcc to clang and soon will be removed from the ndk. Here we prepare p4a to compile recipes with clang, which will allow us to successfully compile an updated openssl libs. Without this openssl upgrade we will not be able to grant support to python3's _ssl.so module. Note: The default p4a compiler still is gcc...so...no changes on the compile behaviour unless explicitly requested References: kivy#1478
This openssl version is an LTS, supported until 11th September 2023. Important: There is now a distinction between the version we use for downloading, and the version used for creating the library: OpenSSL 1.1 now have prefix with "1.1.so". This explains why others recipes that depends on it require the "library" version. Those recipes, still not are modified to support the new version. References: kivy#1478
Referenced this pr, because I rewritted the history for #1460 on a separate branch, If all goes well with the CI tests, I will force push to the main branch. This history rewrite includes some of the @tito commits squashed into two and reflecting @tito's authory. Should be mentioned that all the changes from this pr affecting openssl dependant recipes are excluded because I changed the way of dealing with openssl version in another commit after the ones from @tito in order to avoid changing other recipes. Also I did not include the addition of compatibility to python3 to some essential recipes (setuptools, requests...) because I did that in another commits. I think that, with this changes, all the git history will be more clear , easy to merge branches and also it will be easier for @tito to add/change anything if he considers necessary 😉 |
Then let's close this one :) |
The android ndk has been migrated his default compiler from gcc to clang and soon will be removed from the ndk. Here we prepare p4a to compile recipes with clang, which will allow us to successfully compile an updated openssl libs. Without this openssl upgrade we will not be able to grant support to python3's _ssl.so module. Note: The default p4a compiler still is gcc...so...no changes on the compile behaviour unless explicitly requested References: kivy#1478
This openssl version is an LTS, supported until 11th September 2023. Important: There is now a distinction between the version we use for downloading, and the version used for creating the library: OpenSSL 1.1 now have prefix with "1.1.so". This explains why others recipes that depends on it require the "library" version. Those recipes, still not are modified to support the new version. References: kivy#1478
The android ndk has been migrated his default compiler from gcc to clang and soon will be removed from the ndk. Here we prepare p4a to compile recipes with clang, which will allow us to successfully compile an updated openssl libs. Without this openssl upgrade we will not be able to grant support to python3's _ssl.so module. Note: The default p4a compiler still is gcc...so...no changes on the compile behaviour unless explicitly requested References: kivy#1478
This openssl version is an LTS, supported until 11th September 2023. Important: There is now a distinction between the version we use for downloading, and the version used for creating the library: OpenSSL 1.1 now have prefix with "1.1.so". This explains why others recipes that depends on it require the "library" version. Those recipes, still not are modified to support the new version. References: kivy#1478
The android ndk has been migrated his default compiler from gcc to clang and soon will be removed from the ndk. Here we prepare p4a to compile recipes with clang, which will allow us to successfully compile an updated openssl libs. Without this openssl upgrade we will not be able to grant support to python3's _ssl.so module. Note: The default p4a compiler still is gcc...so...no changes on the compile behaviour unless explicitly requested References: kivy#1478
This openssl version is an LTS, supported until 11th September 2023. Important: There is now a distinction between the version we use for downloading, and the version used for creating the library: OpenSSL 1.1 now have prefix with "1.1.so". This explains why others recipes that depends on it require the "library" version. Those recipes, still not are modified to support the new version. References: kivy#1478
To make it use as a base class for hostpython2 and hostpython3 recipes in a near future. Refactor python3's recipe into a new base class GuestPythonRecipe To make it use as a base class for python2 and python3 recipes in a near future. Move hostpython2 and python2 recipes to a new name hostpython2legacy and python2legacy. This recipes will be useless until properly fixed or maybe it will be removed... Add the new hostpython2/python2 recipes (v2.7.15) Those new recipes will use the same build method than python3. Also added a set of patches, some of them are enabled by default because they are necessary to perform a successful build. The others are added because maybe we will need them. Adapt sdl2's stuff to the new python2's build system Adapt pythonforandroid's core files to the new python2's build system Cause we share the same build system for python2 and python3 recipes, we can safely remove some specific python2's code in favour of the python3's code, otherwise we will surely find troubles in our builds. Adapt python2's test apps to the new python2's build system The python2's test with openssl and sqlite it will probably success, but without the libs until those are enabled. The pygame's test app will fail until properly fixed. Enable sqlite support for python recipes Add ability to compile recipes with clang The android ndk has been migrated his default compiler from gcc to clang and soon will be removed from the ndk. Here we prepare p4a to compile recipes with clang, which will allow us to successfully compile an updated openssl libs. Without this openssl upgrade we will not be able to grant support to python3's _ssl.so module. Note: The default p4a compiler still is gcc...so...no changes on the compile behaviour unless explicitly requested References: kivy#1478 Update OpenSSL to 1.1.1 (uses clang for compilation) This openssl version is an LTS, supported until 11th September 2023. Important: There is now a distinction between the version we use for downloading, and the version used for creating the library: OpenSSL 1.1 now have prefix with "1.1.so". This explains why others recipes that depends on it require the "library" version. Those recipes, still not are modified to support the new version. References: kivy#1478 Enhance openssl recipe and remove lib_version Several actions done: - The openssl recipe has been enhanced by introducing a couple of methods (include_flags and link_flags) which should help us to link other recipes with the openssl libs. - Remove lib_version introduced in the last openssl version update, so we don't have to modify all dependant recipes - Add a new variable `url_version`, used to download our recipe in the subclassed method versioned_url (this replaces the removed lib_version) - Add D__ANDROID_API__ to the configure command (needed to successfully build the libraries and link them with python) - Add documentation Enable openssl support for python recipes This commit grants openssl support for both python versions (2 and 3). The python2 recipe needs some extra work to make it link with python, we need to patch the setup.py file in order to that the python's build system recognises the libraries. This is not the case for the python3 recipe which works like a charm, except for the fact that we have to modify our static class variable ` config_args ` for the python's recipe, i found this to be necessary in my tests, otherwise the openssl libs aren't detected. Fix hardcoded python2 entry for Arch Fix hardcoded python2 entries for BootstrapNDKRecipes Fix numpy's recipe and adds python3's compatibility. Also: - add numpy to CI tests for python3: this module is some kind of special and probably a dependency for a lot of python packages so better make sure that we not break anything...as we already do with python2 - Add numpy to python2 and python3 test apps, cause already have some buttons that allows to test it from the running app. Fix duplicated key in options for python2 test Add python3 test for sqlite and openssl and add python3's compatibility to dependant recipes To be able to run successfully the new test we must add python3 compatibility to some recipes that is why we touch them here. Make that travis test python3 with sqlite3 and openssl Update android ndk to r17c, add missing dependency and update documentation To successfully build the python3 recipe with ctypes we needs an extra dependency in our docker file (libffi-dev) Move gradle stuff from sdl2 to bootstraps/common To make use of it on non sdl2 bootstraps when those are adapted to be gradle compatible Create service_only bootstrap's files structure to be gradle compatible This requires to move some files to a new location, but the files remain untouched for now. Adapt service_only's bootstrap c/java code to new python build system Also add some files because we need it because of the changes made in PythonService.java. Those files add the classes PythonActivity, AssetExtract and ResourceManager (those two lasts are pure copies from the ones in sdl2 bootstrap). Note: All this work is based on previous work done on sdl2 bootstrap Adapt service_only's bootstrap to new python/gradle build system and enables some missing features Note: Some files has been removed because we will use the generic ones of bootstraps/common Add a test app for service_only's bootstrap This is almost a clone from one of @inclement's test apps, with the addition of a function which prints the current date/time. Fix crash for service_only's bootstrap on create_python_bundle When building an apk for service_only's bootstrap using the testapp_service the build suddenly crash, because we don't installed any pure python package, so, the directory "python-install/<distribution directory>" doesn't exist. This makes p4a crash when we tried to enter into this directory. Create webview bootstrap's files structure to be gradle compatible This requires to move some files to a new location, but the files remain untouched for now. Adapt webview's bootstrap c/java code to new python build system Note: All this work is based on previous work done on sdl2 bootstrap Adapt webview's bootstrap to new python/gradle build system and enables some missing features (aars) Note: Some files has been removed because we will use the generic ones of bootstraps/common Make it work webview and service_only bootstraps with the latest python recipes and gradle build Enable python3's compatibility to bootstraps webview and service_only Add travis test for bootstraps webview and service_only In order to avoid errors while running too many parallel tests we remove the basic python2 and python3 tests (because we already test them in his equivalent with the libraries) and the new added tests will only be performed for one python version: - webview: python3 - service_only: python2 Also, to not loose the numpy tests, we enforce to build the numpy recipe in the tests for webview and service_only bootstraps, so we will test it for both python versions. Improve the libraries loading mechanism when initializing the apk The old libraries loading mechanism, has become inefficient because, over the years, more library recipes has been added to p4a project as well as more python versions. So...here we introduce a new mechanism which creates a file with the needed libraries, which will be read at runtime and load the libraries defined in there, so we avoid checking each library against a pattern as the old method. This new mechanism is still incomplete, because still lacks most of the libraries, but has the same functionality, because all the basic libraries used in the old loading mechanism are inside the new mechanism, plus some others which where not handled before like the shared stl libs. With this new mechanism we will have the advantage that will be a lot easier to add the necessary libraries for all the bootstraps at once. Fix libtorrent+boost (update to latest versions and add python3 compatibility) Since the openssl and ndk update the boost and libtorrent recipes weren't working. The old version for boost libraries does not support openssl 1.1, so we must update it. The old libtorrent recipe is strongly dependant on boost so we also update it. Also, before this commit, the compiler used to make those builds were gcc, now we use clang (the default compiler for the latest android ndk). Note: We use the latest release candidate version for libtorrent because still not released the final version (and it is more prepared to be build with clang compiler). To make it work with python3 we need to apply a patch to it, which will be not necessary when released the final version (the changes made by this patch are already merged into libtorrent's master branch). Those recipes were tested for both python versions with a slight modification of the test apps and importing the libtorrent at runtime without problems, plus the generated libraries are linked with our versions of openssl and python (using the readelf command). Fix openssl dependant recipe: cryptography+cffi Since the recent openssl upgrade this recipe stopped to work. Here we adapt the recipe to the new build circumstances and we also fix the cffi recipe because it is a direct dependency of cryptography and had the wrong flags for the new python2 build system. Update cryptography recipe and grants python3 support In order to not have troubles with python3 we update most of the dependant recipes to the latest available versions. Fix openssl dependant recipe: pycrypto (and grants python3 compatibility) Since the recent openssl upgrade this recipe stopped to work. Here we adapt the recipe to the new python2 build system and to new openssl version. Also bump the recipe version number to the latest available (to avoid possible errors with our python3). Fix openssl dependant recipe: scrypt (and grants python3 compatibility) Because since the python/openssl build system changed this recipe stopped to work. Add a testapp for cryptography recipes We add libtorrent recipe into the testapp_encryption because it can be built with our openssl recipe. The ffmpeg recipe it is not included here for multiple reasons: - because depends on a lot of libs (the codecs) - because we included the libtorrent recipe that takes takes a lot of time to be build and the ffmpeg recipe also needs a lot of time Remove hardcoded python2 flags for zbar recipe The python headers are set in the method get_recipe_env of PythonRecipe's base class, so there is no need to set the python headers. Add pyzbar recipe, remove duplicated flags for libzbar and make sure that the library gets loaded at runtime The libzbar recipe contains some flags already set in base class method of get_recipe_env, so removed. Also grants python3 compatibility for libzbar because, despite that the zbar recipe isn't compatible with python3 (the project is stucked in python2 plus it seems unmaintained)...but there are alternatives which can replace it, so we add the pyzbar recipe which works for both versions of python so python3 will have an equivalent to the python2's zbar. Remove unneeded flags and grants python3 compatibility for the apsw recipe The flags that we remove are already set in base class, so no need to set in here. Remove unneeded flags, update version and grants python3 compatibility for the netifaces recipe The flags that we remove are already set in base class, so no need to set in here. Remove hardcoded python2 flags, shorten ldflags and grants python3 compatibility for the pymunk recipe Update protobuf_cpp recipe and grant python3 compatibility The removed flags are already set in base class, so no need to set in here. Update M2Crypto recipe and grant python3 compatibility Also remove unneeded flags because already set in base class Grant python3 compatibility for PyCryptoDome recipe Fix hardcoded/unneeded flags for pysha3 recipe and grant python3 compatibility Enhance the encryption test app with new tests Also refactor part of the source code using the new class TestImport Add ci tests for encryption recipes The M2Crypto python module depends on `swig` during compilation, so we must add it to our docker images to prevent tests errors. Change docker image from ubuntu to debian stretch for the python3 build and make it the default for ci tests Multiple reasons for that...because: - the debian image allow us to select the python version that we want..so we select the same version that we use in our builds and that will allow us to successfully pass the ci test for the webview bootstrap (the problematic recipe is flask) - the debian image is smaller than the ubuntu - the default python3 version for ubuntu is 3.6 and we need 3.7 - we don't need any special feature from ubuntu so debian is fine (probably it's a better choice, because ubuntu relies on debian...) Suppress almost all logs for ci builds (fix travis limit of 4mb of logs) In order to not exceed the travis limitation of 4MB of logs...this will allow us to add more tests without facing this limitation or update the android build tools. It must be said that if any error happens the last 1000 lines of the log will be printed, so we know where is the problem. This will have the advantage that we will focus the problem more quickly but it maybe some cases where the error happens before of the printed lines...if that is the case we should disable temporary this feature, probably with some tests, and rerun the travis tests to get the full log. Add ability to hide some log messages and hide the unpack logs This should allow us to reduce console output when decompressing files (most of the times we don't need that list) and also will reduce the probabilities that travis fails due to the 4mb logs limit. This will fix the travis error when uncompress "the boost recipe" files, which has a lot of files and overpass the travis log limit.
The android ndk has been migrated his default compiler from gcc to clang and soon will be removed from the ndk. Here we prepare p4a to compile recipes with clang, which will allow us to successfully compile an updated openssl libs. Without this openssl upgrade we will not be able to grant support to python3's _ssl.so module. Note: The default p4a compiler still is gcc...so...no changes on the compile behaviour unless explicitly requested References: kivy#1478
This openssl version is an LTS, supported until 11th September 2023. Important: There is now a distinction between the version we use for downloading, and the version used for creating the library: OpenSSL 1.1 now have prefix with "1.1.so". This explains why others recipes that depends on it require the "library" version. Those recipes, still not are modified to support the new version. References: kivy#1478
…1537) * Refactor hostpython3's recipe into a new base class HostPythonRecipe To make it use as a base class for hostpython2 and hostpython3 recipes in a near future. * Refactor python3's recipe into a new base class GuestPythonRecipe To make it use as a base class for python2 and python3 recipes in a near future. * Move hostpython2 and python2 recipes to a new name hostpython2legacy and python2legacy. This recipes will be useless until properly fixed or maybe it will be removed... * Add the new hostpython2/python2 recipes (v2.7.15) Those new recipes will use the same build method than python3. Also added a set of patches, some of them are enabled by default because they are necessary to perform a successful build. The others are added because maybe we will need them. * Adapt sdl2's stuff to the new python2's build system * Adapt pythonforandroid's core files to the new python2's build system Cause we share the same build system for python2 and python3 recipes, we can safely remove some specific python2's code in favour of the python3's code, otherwise we will surely find troubles in our builds. * Adapt python2's test apps to the new python2's build system The python2's test with openssl and sqlite it will probably success, but without the libs until those are enabled. The pygame's test app will fail until properly fixed. * Enable sqlite support for python recipes * Add ability to compile recipes with clang The android ndk has been migrated his default compiler from gcc to clang and soon will be removed from the ndk. Here we prepare p4a to compile recipes with clang, which will allow us to successfully compile an updated openssl libs. Without this openssl upgrade we will not be able to grant support to python3's _ssl.so module. Note: The default p4a compiler still is gcc...so...no changes on the compile behaviour unless explicitly requested References: #1478 * Update OpenSSL to 1.1.1 (uses clang for compilation) This openssl version is an LTS, supported until 11th September 2023. Important: There is now a distinction between the version we use for downloading, and the version used for creating the library: OpenSSL 1.1 now have prefix with "1.1.so". This explains why others recipes that depends on it require the "library" version. Those recipes, still not are modified to support the new version. References: #1478 * Enhance openssl recipe and remove lib_version Several actions done: - The openssl recipe has been enhanced by introducing a couple of methods (include_flags and link_flags) which should help us to link other recipes with the openssl libs. - Remove lib_version introduced in the last openssl version update, so we don't have to modify all dependant recipes - Add a new variable `url_version`, used to download our recipe in the subclassed method versioned_url (this replaces the removed lib_version) - Add D__ANDROID_API__ to the configure command (needed to successfully build the libraries and link them with python) - Add documentation * Enable openssl support for python recipes This commit grants openssl support for both python versions (2 and 3). The python2 recipe needs some extra work to make it link with python, we need to patch the setup.py file in order to that the python's build system recognises the libraries. This is not the case for the python3 recipe which works like a charm, except for the fact that we have to modify our static class variable ` config_args ` for the python's recipe, i found this to be necessary in my tests, otherwise the openssl libs aren't detected. * Fix hardcoded python2 entry for Arch * Fix hardcoded python2 entries for BootstrapNDKRecipes * Fix duplicated key in options for python2 test * Fix numpy's recipe and adds python3's compatibility. Also: - add numpy to CI tests for python3: this module is some kind of special and probably a dependency for a lot of python packages so better make sure that we not break anything...as we already do with python2 - Add numpy to python2 and python3 test apps, cause already have some buttons that allows to test it from the running app. * Add python3 test for sqlite and openssl and add python3's compatibility to dependant recipes To be able to run successfully the new test we must add python3 compatibility to some recipes that is why we touch them here. * Make that travis test python3 with sqlite3 and openssl * Update android ndk to r17c for docker images * Add one more dependency to our docker images Or the ci tests where libffi is involved will fail. * Update documentation about the new python core * Prevent crash on create_python_bundle When building an apk for service_only's bootstrap the build will crash if we don't add some pure python packages, because the directory "python-install/<distribution directory>" will not be ever created, so...this will make p4a crash when we try to enter into this directory. * Replace exit for BuildInterruptingException ¡¡¡Thanks @AndreMiras!!! * Remove note of quickstart.rst ¡¡¡Thanks @inclement!!! * Redaction corrections ¡¡¡Thanks @inclement!!! * Remove tuple of python versions Because all 3 are automatically added by PythonRecipe. ¡¡¡Thanks @inclement!!! * Replace backslashes To be more readable and pythonic Thanks @KeyWeeUsr!!! * Fix hardcoded toolchain version and arch for python recipe * Fix hardcoded toolchain version and arch for clang * Fix android host for python recipes To allow us to build python 2 or 3 for any arch supported for p4a * Fix hardcoded target for python recipes and clang * Add missing includes for clang Or we will get errors complaining about missing includes related with asm * Fix hardcoded arch for numpy * Fix openssl build for arch x86_64 * Fix openssl build for arch arm64-v8a * Drop commented code from python2legacy recipe * Replace backslashes for openssl recipe To enhance the readability of the sourcecode ¡¡¡Thanks KeyWeeUsr!!! * Fix hardcoded arch flags for libffi recipe To fix libffi build for any arch * Remove unneeded warning for numpy * Fix libffi build for all archs Adds some flags lost (removed when were fixed the hardcoded arch entries) * Remove lines from openssl recipe that seems not needed anymore The removed code was intended to check if the library were build with the right symbols, and if not, clean the build and trigger a rebuild with a pause of 3 seconds (to show a message warning about the rebuild). It seems that new version of the openssl libs doesn't need this anymore because the symbols checked with the removed source code seems to be build without problems. So we remove those lines in order the clean up a little the code and to be reintroduced again if needed (but properly documented) References: #1537 * Replace sum with append for cflags list * Remove unneeded message for build.py ¡¡¡Thanks @inclement!!! * Remove commented line ¡¡¡Thanks @inclement!!! * Remove unneeded files for the project ¡¡¡Thanks @inclement!!! * Remove some unneeded lines for some of the test apps ¡¡¡Thanks @AndreMiras!!! * Remove more unneeded lines for test app and shortens line * Fix initsite for python2's site module * Enhance python2 patches - Move all locale related code from fix-locale.patch to fix-api-minor-than-21.patch, because for api >= 21 localeconv is properly defined in android - Remove fix-locale.patch and the remaining code moved into new patches (and enhanced thanks to some cpython's patches I found in bug tracker), to be neatest - Enhance definitions of fix-api-minor-than-21.patch to be more suitable for a potential upstream merge into cpython source (¡¡¡Thanks @Jonast!!!) References: https://bugs.python.org/issue20306 and https://bugs.python.org/issue26863, * Remove unused patches * Some fixes/enhancements for python2legacy In case we decide to make it work and maintain it ¡¡¡Thanks @AndreMiras!!! Note: At this point the python2legacy recipe will not work, it would require some more work to make it successfully build: - Fix conflicts between python recipes - Add python2legacy compatibility to some basic recipes (For sdl2, at least we need: android, pyjnius, sdl2, setuptools and six) - Add python2legacy compatibility to sdl2 bootstrap (at least) - Add python2legacy compatibility to some core files (bootstrap.py, build.py and recipe.py) * Change ndk downloads page To be safe for the foreseeable future ¡¡¡Thanks @inclement!!! * Fix clang path for crystax * Python2legacy: fix conflicts between python recipes * Python2legacy: provisional fix to the hardcoded job count This should be implemented properly as described in #1558, but for now we will avoid issues * Python2legacy: make work some basic recipes with python2legacy To make it work the python2legacy recipe with the sdl2's bootstrap * Python2legacy: make work sdl2 bootstrap with python2legacy * Python2legacy: fix get_site_packages_dir for python2legacy * Python2legacy: fix strip_libraries for python2legacy * Python2legacy: make the necessary changes to recipe.py to make it work the python2legacy recipe Note: With this commit, we will be able to successfully build using the python2legacy recipe, but be aware that you may need to add python2legacy compatibility to some recipes to make it work with your app, because only some minimal set of recipes has been touched (the ones needed to make work the python2legacy with the sdl2 bootstrap and kivy) * Python2legacy: make it work the openssl libs with python2legacy and python3crystax Also this should fix the the openssl build issues reported when using crystax. Notice that this changes will leave us with two versions of openssl libs. We need the most updated one for our python2 and python3 recipes, and the legacy version for python2legacy and python3crystax. The python2legacy version is too old to support the openssl version 1.1+ and python3crystax is not building fine with the new openssl libs so to fix the crystax issues we force to use the legacy version, which previously has been proved to work. * Python2legacy: add a test app for python2legacy (with openssl and sqlite3) To make easier for us to test if python2legacy is working * Python2legacy: update README file To inform about the python2legacy recipe * Move libraries from LDFLAGS to LIBS Because this is how you are supposed to do it, you must use LDFLAGS for linker flags and LDLIBS (or the equivalent LOADLIBES) for the libraries * Fix linkage problems with python's versioned library The Java method called to load the libraries only supports a .so suffix, so we must remove the version for our python libraries, or we will get linkage errors Resolves: #1501 * Revert "Fix linkage problems with python's versioned library" This reverts commit 99ee28b
This PR updates OpenSSL to 1.1.1, and uses clang for compilation.
There is now a distinction between the version we use for downloading, and the version used for creating the library: OpenSSL 1.1 now have prefix with "1.1.so". This explains why others recipes that depends on it require the "library" version.
Let me know if i must remove and make a separate PR for others recipes that are broken on python3 because there was a missing deps (and forget my commit, we can squash and merge for that)