Comments (17)
I've updated the kent-core to the current release and added notes to the README.
from kent.
from kent.
from kent.
Hello!
Thank you for the quick reply!
I am talking about Linux on ARM64, not specifically Apple's hardware.
Indeed, Apple made ARM64/aarch64 more known to the users via their M1/M2 laptops and PC (Studio)! But there are many other ARM64 hardware providers!
I work for one of the cloud providers and I can say that the demand for Linux ARM64 deployments increases steadily in the last few years!
All of the major cloud providers started offering Linux ARM64 compute instances in addition to the "standard" Linux x86_64 ([1], [2], [3], [4], [5], [6]). Only IBM offers its own s390x [7] in addition to x86_64.
- https://aws.amazon.com/ec2/instance-types/ (A1)
- https://cloud.google.com/compute/docs/instances/arm-on-compute (Tau T2A)
- https://azure.microsoft.com/en-us/blog/azure-virtual-machines-with-ampere-altra-arm-based-processors-generally-available/
- https://www.oracle.com/cloud/compute/arm/
- https://www.alibabacloud.com/product/ecs?spm=a3c0i.7938564.8215766810.5.20ff441eQxRIsn
- https://support.huaweicloud.com/intl/en-us/productdesc-ecs/en-us_topic_0035470096.html
(Kunpeng) - https://cloud.ibm.com/vpc-ext/provision/vs
Unfortunately Bioconda also does not provide support for linux-aarch64
. I and some other members of the community started working on it - bioconda/bioconda-utils#706. But it will take its time!
About the build: if you don't have access to ARM64 hardware (with Linux) then you can do it either via cross compilation or via emulation.
E.g. in this article I explain how to do it with QEMU.
Or you could use a free VM from a cloud provider, e.g. Oracle Cloud.
Or you could use a CI (Continuous Integration) service to build it as a part of the release process, e.g. here is how we did it for Ninja Build tool. Since Github Actions does not provide Linux ARM64 cloud-hosted builders it uses QEMU via the uraimo/run-on-arch-action
action. But there are other CI providers which provide Linux ARM64 natively, e.g. CircleCI and CirrusCI.
Please let me know if you are interested in any of the above options and I will try to help as much as I can!
from kent.
from kent.
I said ... either via cross compilation or via emulation
:-)
Following the article should be fine! Just you need to use gcc-aarch64-linux-gnu
instead of gcc-arm-linux-gnueabi
. Same for binutils-aarch64-linux-gnu
from kent.
Sorry, yes you did say either compile or emulation. I mis-read.
For cross-compilation we need all our libraries built in that other format, too. We need to build ourlselves libpng, zlib, hdf5, mysql, freetype and many others and their dependencies on Centos. For qemu, we'd have to set up this entire qemu system as part of our build. It would take an engineer probably a few days.
We have noted the request, but this is the first time that someone has requested this and of the few people in other institutes that I asked, no one is using ARM CPUs, except on laptops and on OSX. So I think we postpone this for now and see if we get more requests like this and then revisit the issue.
Currently, our binaries don't run on all linux versions because they reference dynamic libraries that don't exist everywhere. Providing binaries always means not supporting a few platforms.
That being said, I've prepared last year a git repo with just the minimal libraries for our command line tools, and without the dependencies. The aim is to make building the command line tools simpler. Do you think that could help here?
from kent.
Thanks for the answer, @maximilianh !
I understand your point of view and I think it is fair!
That being said, I've prepared last year a git repo with just the minimal libraries for our command line tools, and without the dependencies. The aim is to make building the command line tools simpler. Do you think that could help here?
Could you please share a link to this repo ?
I will try to build genePredToGtf
locally for the Bioconductor's build reports needs.
from kent.
from kent.
Tried on the fresh vagrant Ubuntu 20.02 VM. Only had to run this command:
sudo apt install make gcc g++ libpng-dev uuid-dev libmariadbclient-dev
It worked and built the binaries into bin/
Also tested the kent-core "make" on my OSX and it worked there (with all the installed packages that I have there).
Shall I test something else?
from kent.
No need to test anything else for now!
I am finishing other task and then I will switch to this one. I will report any issues if I find such!
I will close this issue for now!
Thank you for your help, @maximilianh !
from kent.
Hi!
Apologies for commenting on a closed issue!
I also need genePredToGtf
binary for Linux ARM64 and I was able to build the project locally with this minor workaround:
diff --git a/src/lib/htmshell.c b/src/lib/htmshell.c
index bf39ebf..ebeb9e0 100644
--- a/src/lib/htmshell.c
+++ b/src/lib/htmshell.c
@@ -713,11 +713,13 @@ void htmlVaBadRequestAbort(char *format, va_list args)
puts("Status: 400\r");
puts("Content-Type: text/plain; charset=UTF-8\r");
puts("\r");
+/*
if (format != NULL && args != NULL)
{
vfprintf(stdout, format, args);
fprintf(stdout, "\n");
}
+*/
exit(-1);
}
because otherwise it fails with:
make[2]: Entering directory '/home/biocbuild/git/kent-core/src/lib'
cc -O -g -std=c99 -Wall -Wformat -Wimplicit -Wreturn-type -Wuninitialized -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -DMACHTYPE_aarch64 -Wall -Wformat -Wimplicit -Wreturn-type -Wuninitialized -I../inc -I../../inc -I../../../inc -I../../../../inc -I../../../../../inc -I../htslib -I/usr/include/freetype2 -I/usr/include/libpng16 -DUSE_FREETYPE -I/include -I/usr/include/libpng16 -o htmshell.o -c htmshell.c
htmshell.c: In function ‘htmlVaBadRequestAbort’:
htmshell.c:716:28: error: invalid operands to binary != (have ‘va_list’ and ‘void *’)
716 | if (format != NULL && args != NULL)
| ^~
make[2]: *** [../inc/common.mk:536: htmshell.o] Error 1
The project builds fine on RockyLinux 9 aarch64!
But there is no genePredToGtf
in ./bin/
.
Do I miss some step ?
from kent.
Hello @julien-faye,
By default, our executables are put in ~/bin/$(uname -m)/ not ./bin/. This can be changed by setting the environment variable BINDIR to something else. If you run 'make' in kent/src/hg/genePredToGtf then the output should show where the executable is placed.
Also, instead of commenting out the whole if ... clause, it should be sufficient to change this:
if (format != NULL && args != NULL)
to this:
if (format != NULL)
from kent.
Thank you for the help, @gerardoPerez1 !
Actually I was building https://github.com/ucscGenomeBrowser/kent-core, as recommended by @maximilianh !
There is no bin/aarch64/
in it, just flat bin/
but without genePredGtf
in it.
Let me try to build the kent
project!
from kent.
I was able to build it:
/home/julien/bin/aarch64/genePredToGtf: ELF 64-bit LSB executable, ARM aarch64, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=17659cad2d51cf694bb82248a18b719232a73364, for GNU/Linux 3.7.0, with debug_info, not stripped
Thank you, @gerardoPerez1 !
from kent.
Thanks for the update, @maximilianh !
from kent.
Hello!
Can you share the specific errors you're seeing for twoBitToFa, faToTwoBit, and twoBitInfo during compilation? And share your gcc version?
You can send your question/response to [email protected] if you don't want to share the details in this Github issue.
(Seems that there was a question here regarding those tools. Although it has since been deleted, so hopefully they see this.)
from kent.
Related Issues (20)
- path issue for doBlastzChainNet.pl HOT 2
- Certificate validation (https.c) causing issues with build in v424 HOT 9
- profile db not found in sqlProfileToMyCnf()
- bedGraphToBigWig: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory HOT 1
- twoBitToFa: Can only handle version 0 of this file. This is version 1 HOT 1
- module in src/hg can't make with MySQL 8^ HOT 1
- `Response is missing required header Content-Length: for url ` HOT 11
- Bioconda package for kent HOT 4
- wigToBigWig doesn't work for chromosomes with spaces in name. HOT 3
- src/lib/htmshell.c doesn't compile on aarch64 Ubuntu 20.04 HOT 2
- Where can I download the pslSplitOnTarget binary? HOT 2
- Incorrect number of bytes for empty slots in rWriteLeaves HOT 5
- Proposal to remove S:417/440/505 in branch specific mask list.
- Bash reporting error HOT 1
- undefined reference to sqlSetIsUcscMirror HOT 1
- undefined reference HOT 2
- Question about classNet HOT 9
- errors reported by axtchain HOT 2
- undefined reference to `knet_init_alt'
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kent.