Skip to content
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

Can't build on Fedora 35 due to glibc bug #1092

Closed
danvonk opened this issue Jan 24, 2022 · 4 comments
Closed

Can't build on Fedora 35 due to glibc bug #1092

danvonk opened this issue Jan 24, 2022 · 4 comments

Comments

@danvonk
Copy link

danvonk commented Jan 24, 2022

Hi all,
I'm encountering this ocaml bug ocaml/ocaml#10250 , which occurs on Fedora 35. From the issue report, I think it has been solved in the latest commit on the ocaml repo but I'm not sure how to carry it over to revery using esy.

  • Operating System: Fedora 35
  • Revery Version: master
  • OCaml version: 4.12
  • Native, Bytecode, or JS build: Native
  • Steps to reproduce:
  1. Use Fedora 35 or Ubuntu 21.10 or any other distro with glibc 2.34.
  2. Clone master and run esy install && esy build
  • Actual Result: Revery does not build

  • Expected Result: Revery does build

  • Additional Information:

    ./boot/ocamlrun expunge ocaml.tmp ocaml    camlinternalFormatBasics    stdlib    stdlib__pervasives    stdlib__seq    stdlib__option    stdlib__result    stdlib__bool    stdlib__char    stdlib__uchar    stdlib__sys    stdlib__list    stdlib__bytes    stdlib__string    stdlib__unit    stdlib__marshal    stdlib__obj    stdlib__array    stdlib__float    stdlib__int    stdlib__int32    stdlib__int64    stdlib__nativeint    stdlib__lexing    stdlib__parsing    stdlib__set    stdlib__map    stdlib__stack    stdlib__queue    camlinternalLazy    stdlib__lazy    stdlib__stream    stdlib__buffer    camlinternalFormat    stdlib__printf    stdlib__arg    stdlib__printexc    stdlib__fun    stdlib__gc    stdlib__digest    stdlib__random    stdlib__hashtbl    stdlib__weak    stdlib__format    stdlib__scanf    stdlib__callback    camlinternalOO    stdlib__oo    camlinternalMod    stdlib__genlex    stdlib__ephemeron    stdlib__filename    stdlib__complex    stdlib__arrayLabels    stdlib__listLabels    stdlib__bytesLabels    stdlib__stringLabels    stdlib__moreLabels    stdlib__stdLabels    stdlib__spacetime    stdlib__bigarray outcometree topdirs toploop
    rm ocaml.tmp
    make[2]: Leaving directory '/home/dan/.esy/3/b/ocaml-4.11.1000-fdc2a8f9'
    make opt-core
    make[2]: Entering directory '/home/dan/.esy/3/b/ocaml-4.11.1000-fdc2a8f9'
    make -C runtime  allopt
    make[3]: Entering directory '/home/dan/.esy/3/b/ocaml-4.11.1000-fdc2a8f9/runtime'
    gcc -c -O2 -fno-strict-aliasing -fwrapv -Wall -Wdeclaration-after-statement -fno-common -fexcess-precision=standard -fno-tree-vrp -ffunction-sections -g -D_FILE_OFFSET_BITS=64 -D_REENTRANT -DCAML_NAME_SPACE   -DNATIVE_CODE -DTARGET_amd64 -DMODEL_default -DSYS_linux   -o startup_aux_n.o startup_aux.c
    gcc -c -O2 -fno-strict-aliasing -fwrapv -Wall -Wdeclaration-after-statement -fno-common -fexcess-precision=standard -fno-tree-vrp -ffunction-sections -g -D_FILE_OFFSET_BITS=64 -D_REENTRANT -DCAML_NAME_SPACE   -DNATIVE_CODE -DTARGET_amd64 -DMODEL_default -DSYS_linux   -o startup_nat_n.o startup_nat.c
    gcc -c -O2 -fno-strict-aliasing -fwrapv -Wall -Wdeclaration-after-statement -fno-common -fexcess-precision=standard -fno-tree-vrp -ffunction-sections -g -D_FILE_OFFSET_BITS=64 -D_REENTRANT -DCAML_NAME_SPACE   -DNATIVE_CODE -DTARGET_amd64 -DMODEL_default -DSYS_linux   -o main_n.o main.c
    gcc -c -O2 -fno-strict-aliasing -fwrapv -Wall -Wdeclaration-after-statement -fno-common -fexcess-precision=standard -fno-tree-vrp -ffunction-sections -g -D_FILE_OFFSET_BITS=64 -D_REENTRANT -DCAML_NAME_SPACE   -DNATIVE_CODE -DTARGET_amd64 -DMODEL_default -DSYS_linux   -o fail_nat_n.o fail_nat.c
    gcc -c -O2 -fno-strict-aliasing -fwrapv -Wall -Wdeclaration-after-statement -fno-common -fexcess-precision=standard -fno-tree-vrp -ffunction-sections -g -D_FILE_OFFSET_BITS=64 -D_REENTRANT -DCAML_NAME_SPACE   -DNATIVE_CODE -DTARGET_amd64 -DMODEL_default -DSYS_linux   -o roots_nat_n.o roots_nat.c
    gcc -c -O2 -fno-strict-aliasing -fwrapv -Wall -Wdeclaration-after-statement -fno-common -fexcess-precision=standard -fno-tree-vrp -ffunction-sections -g -D_FILE_OFFSET_BITS=64 -D_REENTRANT -DCAML_NAME_SPACE   -DNATIVE_CODE -DTARGET_amd64 -DMODEL_default -DSYS_linux   -o signals_n.o signals.c
    gcc -c -O2 -fno-strict-aliasing -fwrapv -Wall -Wdeclaration-after-statement -fno-common -fexcess-precision=standard -fno-tree-vrp -ffunction-sections -g -D_FILE_OFFSET_BITS=64 -D_REENTRANT -DCAML_NAME_SPACE   -DNATIVE_CODE -DTARGET_amd64 -DMODEL_default -DSYS_linux   -o signals_nat_n.o signals_nat.c
    gcc -c -O2 -fno-strict-aliasing -fwrapv -Wall -Wdeclaration-after-statement -fno-common -fexcess-precision=standard -fno-tree-vrp -ffunction-sections -g -D_FILE_OFFSET_BITS=64 -D_REENTRANT -DCAML_NAME_SPACE   -DNATIVE_CODE -DTARGET_amd64 -DMODEL_default -DSYS_linux   -o misc_n.o misc.c
    signals_nat.c:198:13: error: variably modified 'sig_alt_stack' at file scope
      198 | static char sig_alt_stack[SIGSTKSZ];
          |             ^~~~~~~~~~~~~
    make[3]: *** [Makefile:343: signals_nat_n.o] Error 1
    make[3]: *** Waiting for unfinished jobs....
    make[3]: Leaving directory '/home/dan/.esy/3/b/ocaml-4.11.1000-fdc2a8f9/runtime'
    make[2]: *** [Makefile:777: makeruntimeopt] Error 2
    make[2]: Leaving directory '/home/dan/.esy/3/b/ocaml-4.11.1000-fdc2a8f9'
    make[1]: *** [Makefile:223: opt.opt] Error 2
    make[1]: Leaving directory '/home/dan/.esy/3/b/ocaml-4.11.1000-fdc2a8f9'
    make: *** [Makefile:283: world.opt] Error 2
    error: command failed: './esy-build' (exited with 2)
    esy-build-package: exiting with errors above...
    
  building ocaml@4.11.1000
esy: exiting due to errors above
@Et7f3
Copy link
Member

Et7f3 commented Jan 24, 2022

You need a ocaml packaged for esy. To do so you can check last commit of https://github.com/esy-ocaml/ocaml/commits/4.13.1+esy. Once you have a branch with upstream commit/esy patch commit. You can use resolutions to consume this special OCaml.

Usually it mean clone upstream branch
add remote to esy fork
cherry-pick some commit of esy-fork
(you can use local resolutions here or)
add your remote
push
(now you can use remote resolutions)

If you need assistance I might be able to give you a hand.

@danvonk
Copy link
Author

danvonk commented Jan 24, 2022

Thanks for the tips. I've forked esy-ocaml and added it as a resolution. However, I still need to apply the glibc patch (which is https://github.com/dra27/opam-repository/tree/glibc-2.34-4.10%2B ), though not sure how to do that

@Et7f3
Copy link
Member

Et7f3 commented Jan 24, 2022

git remote add upstream https://github.com/ocaml/ocaml
git fetch upstream
git cherry-pick 632563b19ca72ec0ae10c7ed767a025c342d3155
git push

(The sha is commit of original PR)

@danvonk
Copy link
Author

danvonk commented Jan 24, 2022

Thanks for the help. Got it working.

@danvonk danvonk closed this as completed Jan 24, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants