Giter Site home page Giter Site logo

Comments (17)

maximilianh avatar maximilianh commented on June 11, 2024 1

I've updated the kent-core to the current release and added notes to the README.

from kent.

maximilianh avatar maximilianh commented on June 11, 2024 1

from kent.

genome-www avatar genome-www commented on June 11, 2024

from kent.

martin-g avatar martin-g commented on June 11, 2024

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.

  1. https://aws.amazon.com/ec2/instance-types/ (A1)
  2. https://cloud.google.com/compute/docs/instances/arm-on-compute (Tau T2A)
  3. https://azure.microsoft.com/en-us/blog/azure-virtual-machines-with-ampere-altra-arm-based-processors-generally-available/
  4. https://www.oracle.com/cloud/compute/arm/
  5. https://www.alibabacloud.com/product/ecs?spm=a3c0i.7938564.8215766810.5.20ff441eQxRIsn
  6. https://support.huaweicloud.com/intl/en-us/productdesc-ecs/en-us_topic_0035470096.html
    (Kunpeng)
  7. 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.

genome-www avatar genome-www commented on June 11, 2024

from kent.

martin-g avatar martin-g commented on June 11, 2024

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.

maximilianh avatar maximilianh commented on June 11, 2024

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.

martin-g avatar martin-g commented on June 11, 2024

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.

maximilianh avatar maximilianh commented on June 11, 2024

from kent.

maximilianh avatar maximilianh commented on June 11, 2024

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.

martin-g avatar martin-g commented on June 11, 2024

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.

julien-faye avatar julien-faye commented on June 11, 2024

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.

gerardoPerez1 avatar gerardoPerez1 commented on June 11, 2024

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.

julien-faye avatar julien-faye commented on June 11, 2024

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.

julien-faye avatar julien-faye commented on June 11, 2024

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.

julien-faye avatar julien-faye commented on June 11, 2024

Thanks for the update, @maximilianh !

from kent.

matthewspeir avatar matthewspeir commented on June 11, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.