-
Notifications
You must be signed in to change notification settings - Fork 27
update checktestdata #459
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
base: main
Are you sure you want to change the base?
update checktestdata #459
Conversation
Hmm, we may want to do a quick check if to see if there are performances regressions from this. (I'm assuming it's some avx2 instructions that you don't have?) I'm not sure how much checktestdata depends on those. Not much is my assumption, in which case it's fine to merge this, but it's already kinda slow for many cases, so would be annoying for make it, say, 2x slower for everyone who does have x86_64-v2 support. |
On WSL there now is this error:
|
Ah yes, most likely the binary that is currently in the repo is one with static linking that I build manually at some point. |
yea i think all ressources should be baked in/not shared objects |
I recompiled it with a statically linked My dockerfile to compile this executable looks like this. FROM ubuntu:latest
RUN apt update && apt install -y git make g++ libboost-dev libgmp-dev autotools-dev automake
RUN git clone https://github.com/DOMjudge/checktestdata.git /opt/checktestdata
WORKDIR /opt/checktestdata
RUN git switch release
RUN sed -i 's/configure/configure --enable-static-linking/' bootstrap
RUN ./bootstrap
RUN make You can run it yourself if you don't like to take random executables from strangers 😉 It now links agains this
instead of this
|
The current binary doesn't link against anything though, making it more forward and backward compatible. My system does have the same lib versions as what you write, but system updates could break this. Did you try the command from the readme instead? Probably it's sufficient to add |
I did not see that readme yet. A first try failed because it could not find static libs for the dependencies. Probably I need some more packages. I'm a bit busy in the coming weeks but I'll come back to this eventually. |
The instructions that make it crash for me are in the gmp lib and depend on how it was compiled. |
Additionally, there are more compilation instructions (including the necessary |
TLDR: the committed executable was compiled for specific hardware. The new executable was compiled in the docker image and should hopefully be more portable.
When running the docker container on MacOS I got an illegal instruction in checktestdata.
My laptop is arm64 and the image is amd64 which is emulated by docker.
Some gdb debugging revealed that the executable here was compiled on hardware that has a bit more instruction sets available than the MacOS emulation supports.
I built this dockerfile
and then copied the resulting executable from
/opt/checktestdata/checktestdata
to my local machine.