GrammaTech / ddisasm

A fast and accurate disassembler
https://grammatech.github.io/ddisasm/
GNU Affero General Public License v3.0
645 stars 60 forks source link

A dockerfile to accurately build ddisassm #28

Closed jeshan closed 3 years ago

jeshan commented 3 years ago

Many users, including me, have faced multiple frustrating issues while building the project: #26 #18 #25 #17 #10 #6

This dockerfile and its docker image at the following link alleviates the problem: https://hub.docker.com/r/jeshan/ddisasm

Let's discuss if such a contribution is welcome.

I have not yet signed the CLA (and it would be nice to skip the formality for small contributions)

jeshan commented 3 years ago

It should probably be cleaned up but I have already ensured to build a very small image through the final stage build.

Give it a try with docker pull jeshan/ddisasm and let me know your feedback.

jeshan commented 3 years ago

I've just realised that we already have dockerfiles but it looks like they may depend on some private Grammatech images :confused:

https://github.com/GrammaTech/ddisasm/tree/master/.ci

kwarrick commented 3 years ago

I've just realised that we already have dockerfiles but it looks like they may depend on some private Grammatech images

https://github.com/GrammaTech/ddisasm/tree/master/.ci

As @aeflores mentioned in another thread, we have been pushing for sometime to put regular binary releases of ddisasm in place, but there has been a significant amount of flux in the internal CI configuration and package creation as we work on that. So the dockerfiles are not suitable for general purpose use in there current state as they depend on some internal resources.

We will absolutely want to publish a Docker container for ddisasm. Thank you for your contributions to that end!

jeshan commented 3 years ago

Thanks, Kevin. Latest changes include the correct LIEF version and added gtirb* binaries. This PR is now ready for review.

eschulte commented 3 years ago

@jeshan, thanks for raising this and consolidating these tickets! We have been meaning to do this for some time but your elevation of this issue has been super useful in helping us prioritize.

You mention above:

I have not yet signed the CLA (and it would be nice to skip the formality for small contributions)

Unfortunately, we really must have contributors sign the CLA for any contribution (we have asked before and had this confirmed, even for much smaller contributions than yours). On the plus side it should be a very quick and easy process, and all you lose is your ability to restrict our use of your contributions to ddisasm. If there's any chance you might make more contributions in the future I'd urge you to consider completing the CLA.

eschulte commented 3 years ago

Okay, we've now posted a Dockerfile into the base of the repository and uploaded an image to Docker Hub at grammatech/ddisasm. We went with Ubuntu 20 instead of Ubuntu 21 because we aren't yet testing regularly on Ubuntu 21.

Thanks for making this happen.

jeshan commented 3 years ago

OK Eric but there's room for improvement, viz: the docker image just pushed is about twice the size than mine and it gets worse when decompressed: image

People generally like small images e.g for faster CI builds (or just impatience!) My approach uses a second stage build that discards everything that isn't strictly needed for running ddisasm or the gtirb binaries.

eschulte commented 3 years ago

Fair, I was thinking that people might want to have the ddisasm source and ability to easily rebuild, but maybe that's not the common case. I've updated grammatech/ddisasm with a lighter image (see below). If it becomes necessary we can upload an additional fuller image which permits an easy rebuild.

$ docker images grammatech/ddisasm
REPOSITORY           TAG       IMAGE ID       CREATED         SIZE
grammatech/ddisasm   latest    2cbd5f1d799f   3 minutes ago   130MB