-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
[question] Should INTERFACE64 be ON or OFF by default? #1763
Comments
It should be off by default to resemble reference BLAS, which is compiled with fortran default, always 32 bit integers. |
If you look at freebsd math ports section, like hundreds of them depend on 32 bit int blas and lapack. |
Some projects and distributions already use SYMBOLPREFIX and/or SYMBOLSUFFIX in combination with INTERFACE64 to avoid conflicts when providing both versions of the library. See #646 and comments at end of Makefile.rule. |
@yurivict |
@martin-frbg I added |
It is plain arguments, not defines. |
|
cmake interface is being improved all the time, still it misses some options that I dont know if this option suffices for you? Actually enabling 64bit interface will break whole lot of ports, probably set LIBNAMESUFFIX=64 in default Makefile to not degrade all dependent packages. |
No, I am working on making the port more robust and being able to cover both situations. |
Seems SYMBOLSUFFIX is not properly passed on from system.cmake, but I think setting LIBNAMESUFFIX should work from cmake as well (which would at least provide the option to name the INTERFACE64 library libopenblas64.so or similar, though not to change to internal names like gemv_64_). |
|
Cmake files are fresh development, please stay with gmake as at present. As you see some essential options do not work at all. |
|
For current freebsd port makefile one has to change interface64 libnamesuffix and umping up installer file versio, no cmake involved and nothig broken |
It's not that simple, though, as to just add a suffix to the library. Ideally, you should allow to install them both at the same time and allow some projects link with one version, and other projects - with the other version. Currently, cmake installs:
I suggest, you should organize them in this way:
and the version with
This way there's going to be no intersection between the file sets, and two could be installed/used simultaneously. You install many headers, it's better to put them into a dedicated folder anyway. If I just add another port flavor that would only install IMO, you should just adjust the cmake build like this: add some suffixes. This way the FreeBSD port can be updated in a consistent way. Otherwise, I am reluctant to update the port in a way that is obviously wrong. |
Thanks for the PR. I assume the cmake project expects to be installed into a user-defined prefix (like /opt/OpenBLAS) which would normally take care of the "dedicated folder" topic. (Not sure how other distribution maintainers handle this though.) Similarly I think it might be better to use LIBNAMESUFFIX in keeping with what the pre-existing gmake setup uses, and not define it automatically for INTERFACE64 builds ? (Or should the gmake build be changed - in the end I think it would be nice if both used the same variables and default behaviour ?) |
No. The prefix that cmake uses is the same for all projects, usually The way this patch does it would fit existing distros well. |
I think it is worth to plant different names for 64 bit api in current freebsd port's option via make waiting for cmake files to mature to level of make. Ubuntu uses lib and lib32 for multiarch, so xyz64 naming is not such a universally great assumption. |
i.e. it is plainly a packaging bug to have incompatible .so replacing one that many others rely on. |
No, port maintainer in this case is very dormant, he will likely not do such thing. The current state of the port in unacceptable, because it doesn't properly cover |
It is one line to add renaming of library files and another to change base of include64 files. |
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=231371 |
This is what the attached PR here does.
This patch is approved and can be committed, but it only updates the port. It doesn't take care of the |
This PR is going to be acceptable for all distros: Debian, Redhat, Arch, etc, because they all function this way. The patterns existing in other ports used in this patch. You can reach out to them and confirm if in doubt. |
your freebsd BZ item is untouched. You can attach PR there, since you yourself casted doubts that it will be compatible with 3 popular linux distributions after. |
It is pending resolution here, upstream. I could go ahead and commit flavoring of the port, but this would be a departure from the upstream version. This matter should be resolved here.
I didn't cast such doubts, quite the opposite. |
Patch merged now (although I am not entirely happy with what seems to be a diverging implementation of the suffix handling). |
SYMBOLPREFIX and SYMBOLSUFFIX are now available and the explanation of the options has been improved a bit. |
Hi,
The FreeBSD port has this option, but it is "OFF" by default.
There is one project that expects
INTERFACE64=ON
.Should
INTERFACE64
be set toON
by default? Are there projects that require it to beOFF
? If yes, what to do, how to accommodate them all?Yuri
The text was updated successfully, but these errors were encountered: