When compiling ocaml 3.11.2 the build doesn't succeed, giving me the error stated below. And it seams that this is an important package. I've also created a topic on forums.gentoo.org about this problem. This topic can be found on the URL belonging to this bugreport. Reproducible: Always Steps to Reproduce: 1. Unmask ocaml 3.11.2 2. try to build it Actual Results: The compile fails with the following error: ../boot/ocamlrun ../ocamlopt -warn-error A -nostdlib -g `./Compflags random.cmx` -c random.ml /var/tmp/portage/dev-lang/ocaml-3.11.2/temp/camlasm9a7918.s: Assembler messages: /var/tmp/portage/dev-lang/ocaml-3.11.2/temp/camlasm9a7918.s:1959: Error: .size expression with symbol `camlRandom__rawfloat_126' does not evaluate to a constant File "random.ml", line 1, characters 0-1: Error: Assembler error, input left in file /var/tmp/portage/dev-lang/ocaml-3.11.2/temp/camlasm9a7918.s make[2]: *** [random.cmx] Error 2 make[2]: Leaving directory `/var/tmp/portage/dev-lang/ocaml-3.11.2/work/ocaml-3.11.2/stdlib' make[1]: *** [libraryopt] Error 2 make[1]: Leaving directory `/var/tmp/portage/dev-lang/ocaml-3.11.2/work/ocaml-3.11.2' make: *** [opt] Error 2 emake failed * ERROR: dev-lang/ocaml-3.11.2 failed (compile phase): * make opt failed! * * Call stack: * ebuild.sh, line 56: Called src_compile * environment, line 2797: Called die * The specific snippet of code: * emake -j1 opt || die "make opt failed!"; * * If you need support, post the output of 'emerge --info =dev-lang/ocaml-3.11.2', * the complete build log and the output of 'emerge -pqv =dev-lang/ocaml-3.11.2'. * The complete build log is located at '/var/tmp/portage/dev-lang/ocaml-3.11.2/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/dev-lang/ocaml-3.11.2/temp/environment'. * S: '/var/tmp/portage/dev-lang/ocaml-3.11.2/work/ocaml-3.11.2' Expected Results: ocaml 3.11.2 should have compiled without a problem
Created attachment 268301 [details] emerge --info It was to long to put in a comment field, so I've created an attachement for it.
Created attachment 268303 [details] the build.log
Created attachment 268305 [details] the ebuild enviroment
dev-lang/ocaml-3.12.0 has the same problem, I think. The error is a bit different, but I think it is close enough to indicate the same problem: ../boot/ocamlrun ../ocamlopt -warn-error A -nostdlib -g `./Compflags digest.cmx` -c digest.ml ../boot/ocamlrun ../ocamlopt -warn-error A -nostdlib -g `./Compflags random.cmx` -c random.ml /var/tmp/portage/dev-lang/ocaml-3.12.0/temp/camlasm7e155c.s: Assembler messages: /var/tmp/portage/dev-lang/ocaml-3.12.0/temp/camlasm7e155c.s:2017: Error: .size expression with symbol `camlRandom__rawfloat_1099' does not evaluate to a constant File "random.ml", line 1, characters 0-1: Error: Assembler error, input left in file /var/tmp/portage/dev-lang/ocaml-3.12.0/temp/camlasm7e155c.s make[2]: *** [random.cmx] Error 2 make[2]: Leaving directory `/var/tmp/portage/dev-lang/ocaml-3.12.0/work/ocaml-3.12.0/stdlib' make[1]: *** [libraryopt] Error 2 make[1]: Leaving directory `/var/tmp/portage/dev-lang/ocaml-3.12.0/work/ocaml-3.12.0' make: *** [opt] Error 2 emake failed * ERROR: dev-lang/ocaml-3.12.0 failed (compile phase): * make opt failed! * * Call stack: * ebuild.sh, line 56: Called src_compile * environment, line 2817: Called die * The specific snippet of code: * emake -j1 opt || die "make opt failed!"; * * If you need support, post the output of 'emerge --info =dev-lang/ocaml-3.12.0', * the complete build log and the output of 'emerge -pqv =dev-lang/ocaml-3.12.0'. * The complete build log is located at '/var/tmp/portage/dev-lang/ocaml-3.12.0/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/dev-lang/ocaml-3.12.0/temp/environment'. * S: '/var/tmp/portage/dev-lang/ocaml-3.12.0/work/ocaml-3.12.0' >>> Failed to emerge dev-lang/ocaml-3.12.0, Log file: >>> '/var/tmp/portage/dev-lang/ocaml-3.12.0/temp/build.log'
Upstream bug report: http://caml.inria.fr/mantis/view.php?id=5237 It includes a patch that has been applied upstream: http://caml.inria.fr/cgi-bin/viewcvs.cgi?rev=10980&view=rev
Created attachment 268673 [details] .ebuild with patch for binutils 2.21 I've created a new ebuild which applies the patch for binutils-2.21 always. Even if you have an older version of binutils. Also you will need to download the patch yourself first and give it the correct name, which can be done with the following command: cd /usr/portage/dev-lang/ocaml/files && wget http://caml.inria.fr/mantis/file_download.php?file_id=418&type=bug && mv 0007-Fix-ocamlopt-w.r.t.-binutils-2.21.patch fix-binutils-2.21.patch After that ocaml-3.12.0 should compile without problem when you have binutils-2.21. I know it is a very simple change in the ebuild, but it works for me. I'm pretty sure a real Gentoo dev can improve my ebuild to make it worthy of the Portage tree :).
> I know it is a very simple change in the ebuild, but it works for me. I'm > pretty sure a real Gentoo dev can improve my ebuild to make it worthy of the > Portage tree :). well at least it works, thanks.
confirm this bug in ~amd64-linux profile
*** Bug 367361 has been marked as a duplicate of this bug. ***
*** Bug 373297 has been marked as a duplicate of this bug. ***
Masked package dev-lang/ocaml-3.12.1_rc1 arleady includes the patch for the incorrect .size directives generated for x86-32 and x86-64 issue. #echo ">=dev-lang/ocaml-3.12.1_rc1" >> /etc/portage/package.unmask ; emerge -av =dev-lang/ocaml-3.12.1_rc1
Similar problem with =dev-lang/ocaml-3.12.0-r1 and =sys-devel/binutils-2.21.1 Unmasked =dev-lang/ocaml-3.12.1 successfully built with =sys-devel/binutils-2.21.1
3.12.1 unmasked -> fixed
I just rean into this proble,m. I have a fresh--sync but ocaml will not use version 3.12.1 unless I put a ~x86 flag in /etc/portage/package.keywords. When I remove the ~x86 keyword, it wants to downgrade ocaml, which of course doesn't build: [ebuild UD ] dev-lang/ocaml-3.11.2 [3.12.1] USE="X gdbm ncurses ocamlopt tk -emacs -latex -xemacs" 0 kB Any ideas why?
(In reply to comment #13) > 3.12.1 unmasked -> fixed Please reopen. With binutils-2.21.* being stable (on x86 and amd64) and the only stable ocaml version being 3.11.2, the issue appears for everyone trying to do a "stable" install. Devs, is it possible to do one of the following * patch ocaml-3.11.2 (preferred) * stabilize ocaml-3.12.1
(In reply to comment #14) > I just rean into this proble,m. I have a fresh--sync but ocaml will not use > version 3.12.1 unless I put a ~x86 flag in /etc/portage/package.keywords. When > I remove the ~x86 keyword, it wants to downgrade ocaml, which of course doesn't > build: > > [ebuild UD ] dev-lang/ocaml-3.11.2 [3.12.1] USE="X gdbm ncurses ocamlopt tk > -emacs -latex -xemacs" 0 kB > > Any ideas why? The newer Ocaml is a masked package. Add it to package.unmask.
(In reply to comment #14) > I just rean into this proble,m. I have a fresh--sync but ocaml will not use > version 3.12.1 unless I put a ~x86 flag in /etc/portage/package.keywords. When > I remove the ~x86 keyword, it wants to downgrade ocaml, which of course doesn't > build: > > [ebuild UD ] dev-lang/ocaml-3.11.2 [3.12.1] USE="X gdbm ncurses ocamlopt tk > -emacs -latex -xemacs" 0 kB > > Any ideas why? This is the way it is supposed to work. As long as version 3.12.1 is ~ you will need to keep your local keyword. If you remove it this version becomes masked again, hence the downgrade.
*** Bug 383171 has been marked as a duplicate of this bug. ***
reopening for stabilisation
since binutils stabilisation has started, we need ocaml-3.12.1 stable
amd64: emerges without issue, all use flags. test pass
amd64 ok
Archtested on x86: Everything seems fine
x86 stable, thanks JD!
arm stable
+ 20 Sep 2011; Tony Vroon <chainsaw@gentoo.org> libass-0.9.13.ebuild: + Marked stable on AMD64 based on arch testing by Agostino "ago" Sarubbo & Ian + "idella4" Delaney in bug #377255.
alpha/ia64/sparc stable
Stable for HPPA.
ppc done
ppc done; closing as last arch
Stable for PPC64.
Closing.