Skip to content
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

QFS version 2.2.7 #262

Merged
merged 118 commits into from
Dec 7, 2024
Merged

QFS version 2.2.7 #262

merged 118 commits into from
Dec 7, 2024

Conversation

mikeov
Copy link
Contributor

@mikeov mikeov commented Dec 7, 2024

QFS version 2.2.7

New features

  1. Support for python3. Native / platform independent python code is now
    compatible with python2 and python3, including QFS meta server web UI and meta
    server backup script. QFS python module / bindings now is only compatible with
    python3, and python2 is no longer supported.

  2. All required QFS shared libraries are now installed along with QFS python
    module, making QFS module installation self contained. On macOS and linux
    runtime relative linker paths are now used in order to make installed QFS shared
    libraries relocatable. With this explicitly specifying QFS libraries runtime
    linkers paths with python module is no longer required. Python QFS module wheel
    is now built and included into QFS tarball.

Minor improvements

  1. Benchmarks mstress build now uses maven instead of ant, and is now included
    in QFS build and tarball by default.

  2. QFS python module is now built, tested, and included into QFS tarball if
    python 3.6 or higher is available.

  3. ARM Neon support is now enabled for QFS Reed-Solomon and GF complete
    libraries on Mac OS with Apple silicon.

mikeov added 30 commits October 24, 2023 17:57
* Add "encoding" and "errors" parameters to file open.
* Implement python3 style file open mode parsing, including binary and text modes.
* Implement unicode and byte array handling in read and write depending on open mode and encoding.
* Remove qfs_extraneous arguments.
Examples: port python sample code to python3.
Top level make file: change to explicitly invoke python3.
* Use QFS client cd / pwd
* Pass encoding and "errors" to open, create.
* Use unicode objects instead of c string as parameters instead of c strings where possible / make sense in order to minimize encoding conversion.
Examples: add more tests / examples to QFS python sample code.
* Fix error handling by checking return values.
* Remove trailing new line in file stat date time.
* Minor code cleanup.
Examples: python sample: implement more python shim tests.
* Allow to use python build module.
* Package shared QFS libraries to make python extension self contained.
* Set python extension run time liker library path to the packaged libraries.
Cmake:
Change Jerasure and and GF complete to link QFS client lib against static libraries in order to make setting run time liker path work.
Build QFS python wheel instead of just running setup install.
… shared libraries on MacOS and Linux / BSD if / when chrpath is available.
* Use cp to resolve J erasure and gf complete shared libraries symlinks.
* Use post build event to trigger J erasure and gf complete shared libraries runtime path and symlinks resolution.
* Set shared library path to $ORIGIN on linux and BSD fro libraries build by cmake.
* Install J erase and gf complete shared libraries symlinks, and set run time path accordingly.
Python shim: only copy required shared libraries, do not copy symlinks.
mikeov added 28 commits October 25, 2024 20:52
* Change find fuse cmake module to find fuse version 3, if version 2 is not available.
* Set c++ compiler optimization to O1 with release builds on Ubuntu 24.04 and Debian 12 for now to work around GCC optimization bugs.
* Add Rocky Linux 9 distribution build.
* Add Debian 11, 12 and Rocky Linux 9 builds.
* Do release build with Ubuntu 24.04.
* Reformat find FUSE module.
* Ensure that go version is greater than 1.17
* Fold long lines.
* Use runuser instead of sudo if / when available in order to allow to set / override core file size limit (and possibly other limits) that is set to 0 by sudo.
* Run make clean prior to change change files ownership and build start.
* Do not install go on Debian 11, as it its version is lower than is the required.
* Change rename to return source file id, if requested, as soon as id becomes available in order to ensure that it is set in the case of an early return, in particular, when the source and the destination are the same.
* Use -O1 optimization level with Debian 11 in order to work around g++ optimization bugs.
* Explicitly remove build directory prior to attempting to change permissions and do the build as make might not be installed yet.
* Fix docker prefix check by performing version check only for CentOS.
* Fix setting user and sudo logic.
* Fix typo in variable, method, and corresponding configuration parameter names.
* Fix error handling in Replay::getLastLogNum() method.
* Implement minor optimization in Replay::getLastLogNum() method by eliminating string re-allocation.
* Fix style warning.
* Update binary distributions page by adding Ubuntu 24.04, Debian 11, 12, and Rocky Linux 9.
* Binary distributions page: fix link for Rocky linux tar.
* Add Xcode and clang versions diagnostic display on mac os builds.
* Add --nobest yum option on Rocky Linux to in order get python development installed.
* Change cmake dependencies to use mstress target in order to allow generation of Xcode project.
* Fix cmake custom target comments by converting into a string.
* Format CMakeLists.txt.
* Fix mstress-bootstrap target by correcting generator expressions and using QFS source tree root to handle the case where QFS build as sub-project.
* Fix CMakeLists.txt formatting.
* Fix Mac ARM neon comple with clang 16 or later by checking whether or not -mfpu=neon flag works, then try to omit the flag if it does not work. The newer clang no longer supports this flag, as it considered redunant with arm64 target.
* Reconfigure with the latest autotools to pickup GF complete ARM Neon config complile flag changes.
* Update ARM Neon detection on Mac OS by assuming that Neon is always available on Apple silicon arm64 processors.
* Calculate chunk server port by adding 200 to the meta server port in order to make the logic consistent in all test scripts.
* Update release notes by mentioning ARM Neon RS support on Mac OS with Apple silicon.
* Display openssl version at the start of MacOS build.
* Use macos-latest runner to build arm64 and macos-latest-large runner to build x86_64, as the github macos-latest runner now appears to correspond arm64 / M1 architecture.
@mikeov mikeov merged commit b038783 into master Dec 7, 2024
42 checks passed
@mikeov mikeov deleted the topic/python3 branch December 7, 2024 23:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant