# ChangeLog for dev-lang/ocaml
# Copyright 2002-2007 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-lang/ocaml/ChangeLog,v 1.97 2007/04/15 20:17:05 corsair Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/ocaml/ChangeLog,v 1.98 2007/04/22 13:55:57 phreak Exp $
+
+*ocaml-3.09.3-r1 (22 Apr 2007)
+
+ 22 Apr 2007; Christian Heim <phreak@gentoo.org>
+ +files/ocaml-3.09.3-Makefile.patch, +files/ocaml-3.09.3-configure.patch,
+ +files/ocaml-3.09.3-exec-stack-fixes.patch,
+ +files/ocaml-3.09.3-execheap.patch, +ocaml-3.09.3-r1.ebuild:
+ Revision bump, fixing #153382 (ocaml produces binaries contain executable
+ stacks), #134403 (dev-lang/ocaml-3.08.4 emerge failed on hardened amd64) and
+ #110541 (ERROR: dev-lang/ocaml-3.08.3 failed.) - this makes dev-lang/ocaml
+ "useable" on hardened boxes.
15 Apr 2007; Markus Rothe <corsair@gentoo.org> ocaml-3.09.3.ebuild:
Stable on ppc64
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
AUX ocaml-3.08.3-gcc4.patch 710 RMD160 7c7399b1a1aa383815021721b4f4a5261137dc15 SHA1 19482bd2cc736a54645e0b48c82edd9863be0375 SHA256 007606bb38a7d66a003a94c9b45288055faacf5f15334a9ff6c33fdc91504e09
MD5 c57fc46d92565b5d44c8c4f2a4a072d3 files/ocaml-3.08.3-gcc4.patch 710
RMD160 7c7399b1a1aa383815021721b4f4a5261137dc15 files/ocaml-3.08.3-gcc4.patch 710
SHA256 007606bb38a7d66a003a94c9b45288055faacf5f15334a9ff6c33fdc91504e09 files/ocaml-3.08.3-gcc4.patch 710
+AUX ocaml-3.09.3-Makefile.patch 1489 RMD160 2405669fdfe7ac35191c59d51c36dcea4f43e2c0 SHA1 16d5cfa7e12d542928d90c144125fbc3deb049f7 SHA256 da690e61fd4f72e28ed4f41a0b7c18a26a11f9ad42d4d8aa95301c02317336b9
+MD5 0d21d3b76fc3a724bd2b8d2e8d3a603f files/ocaml-3.09.3-Makefile.patch 1489
+RMD160 2405669fdfe7ac35191c59d51c36dcea4f43e2c0 files/ocaml-3.09.3-Makefile.patch 1489
+SHA256 da690e61fd4f72e28ed4f41a0b7c18a26a11f9ad42d4d8aa95301c02317336b9 files/ocaml-3.09.3-Makefile.patch 1489
+AUX ocaml-3.09.3-configure.patch 5187 RMD160 3f26cdc62c3d73a1ef9e3781ada48d34799aeed7 SHA1 db6710567d86a4ea42417861af7687f5cc5e84d8 SHA256 3d0b4aac47b2aec50a21769d9fc6946202a8e8c672a691957042062bfec4a0dc
+MD5 fd043de6497ac8bdc6c0e630db55a7ca files/ocaml-3.09.3-configure.patch 5187
+RMD160 3f26cdc62c3d73a1ef9e3781ada48d34799aeed7 files/ocaml-3.09.3-configure.patch 5187
+SHA256 3d0b4aac47b2aec50a21769d9fc6946202a8e8c672a691957042062bfec4a0dc files/ocaml-3.09.3-configure.patch 5187
+AUX ocaml-3.09.3-exec-stack-fixes.patch 8941 RMD160 a0c9d70a3bcb925fbc63e357751659552517459b SHA1 bcdd9334e16c8ab3ddd785b4c8deac8d5de03f88 SHA256 ce6a563cd2f56148f576293b58220faca2e5fa79fe117a14aac42336a6099438
+MD5 1ced405879a193bbc20b72f13dafdae0 files/ocaml-3.09.3-exec-stack-fixes.patch 8941
+RMD160 a0c9d70a3bcb925fbc63e357751659552517459b files/ocaml-3.09.3-exec-stack-fixes.patch 8941
+SHA256 ce6a563cd2f56148f576293b58220faca2e5fa79fe117a14aac42336a6099438 files/ocaml-3.09.3-exec-stack-fixes.patch 8941
+AUX ocaml-3.09.3-execheap.patch 423 RMD160 28bc7612b0fc334f2cfb70775766a12f4e82b196 SHA1 9b3d917c2d489e17368b40e4009a27a540e48fde SHA256 36381a2a9cca239942cde3278f83b8cda6ee9fb1c6b31cb83cd4ffba0d8f0406
+MD5 347917347ea61c71c5a2f006b0b8e1bf files/ocaml-3.09.3-execheap.patch 423
+RMD160 28bc7612b0fc334f2cfb70775766a12f4e82b196 files/ocaml-3.09.3-execheap.patch 423
+SHA256 36381a2a9cca239942cde3278f83b8cda6ee9fb1c6b31cb83cd4ffba0d8f0406 files/ocaml-3.09.3-execheap.patch 423
AUX ocaml-rebuild.sh 1361 RMD160 a9c452fbea18de3b38d8240f887f8595e529643e SHA1 2a682ce872c51e66a5ab13160da16b0f6d8bd366 SHA256 a8004cd4bca96ab3fc595fcfd7dbe88903833f9e430149c3d04c9fda84362b64
MD5 bcc5109143faee7e7b8f7f76bd4726a7 files/ocaml-rebuild.sh 1361
RMD160 a9c452fbea18de3b38d8240f887f8595e529643e files/ocaml-rebuild.sh 1361
MD5 ad4b43bea4ee37b5d152f02e44da38f5 ocaml-3.09.2.ebuild 2414
RMD160 575a8b85655e7a6099eadfc3e8434866b7b9fbf4 ocaml-3.09.2.ebuild 2414
SHA256 7f1202a717cdce1a89f05ca049d5a2469fd212c13fcf0f03881cedd0f75a1b63 ocaml-3.09.2.ebuild 2414
+EBUILD ocaml-3.09.3-r1.ebuild 4041 RMD160 b451971fc490bd314b9cccbc9e0cee40b4b16dd2 SHA1 a10f3787dc3747bada40f089e786047a0661bb94 SHA256 697fcab0f20d803c722fde19351e247c26f1e8c85af8b1e7dfdbb04e58c891c2
+MD5 e3f9e9eaa3ba0012e54f43a46d644cb2 ocaml-3.09.3-r1.ebuild 4041
+RMD160 b451971fc490bd314b9cccbc9e0cee40b4b16dd2 ocaml-3.09.3-r1.ebuild 4041
+SHA256 697fcab0f20d803c722fde19351e247c26f1e8c85af8b1e7dfdbb04e58c891c2 ocaml-3.09.3-r1.ebuild 4041
EBUILD ocaml-3.09.3.ebuild 2546 RMD160 3633ad343af82d4ccd960520be42a6818f65e1eb SHA1 0e31867ac7a27d946a7e64c6ecc5f711d396aaa2 SHA256 d9ebc69c806a36354d9cc53132095ccce0d1001cc38b22dbbb20ac625e9b9aff
MD5 34cae488a62c65feb4a5a7a2ecec483a ocaml-3.09.3.ebuild 2546
RMD160 3633ad343af82d4ccd960520be42a6818f65e1eb ocaml-3.09.3.ebuild 2546
SHA256 d9ebc69c806a36354d9cc53132095ccce0d1001cc38b22dbbb20ac625e9b9aff ocaml-3.09.3.ebuild 2546
-MISC ChangeLog 14522 RMD160 fdcb43f5aa0069d6d2b0b1ea35d23a42f6a78650 SHA1 d0941242dd5f19cdcf0890944d6c1808fbddd24a SHA256 315fe0399805318eb1479764ad1174d6fbaebd6eab1f1d182f51a42655faa39c
-MD5 bed6568ab4e9f705a7229e819b5e66ac ChangeLog 14522
-RMD160 fdcb43f5aa0069d6d2b0b1ea35d23a42f6a78650 ChangeLog 14522
-SHA256 315fe0399805318eb1479764ad1174d6fbaebd6eab1f1d182f51a42655faa39c ChangeLog 14522
+MISC ChangeLog 15051 RMD160 1bd1147f0a294342edb42669ce37e013b3cd9222 SHA1 6b506a0bdbd9221b9234cb2728d15ab1d5fcccad SHA256 e5cede5389202ae3113c86cfe28bdcb9e5d0d333d1060deaf3a29487cb9bf05c
+MD5 442e0dd49b1b8e0442825338fca5e1ee ChangeLog 15051
+RMD160 1bd1147f0a294342edb42669ce37e013b3cd9222 ChangeLog 15051
+SHA256 e5cede5389202ae3113c86cfe28bdcb9e5d0d333d1060deaf3a29487cb9bf05c ChangeLog 15051
MISC metadata.xml 155 RMD160 dfaa057e679b01302a807c75a32a910098b26809 SHA1 94024f83dcacbb53e92be090dd0f994ec93dc90d SHA256 118048376ebb76f57628b0819f3de4856e73959c2578c88715d37ea2d1e0af81
MD5 8b350f19c06fcabf1053b0421b7c3f5a metadata.xml 155
RMD160 dfaa057e679b01302a807c75a32a910098b26809 metadata.xml 155
MD5 71f3dc5bc2ee57a403689b56bc1a85c1 files/digest-ocaml-3.09.3 244
RMD160 e7f0898889b94faae3b1481555bac42e9298b370 files/digest-ocaml-3.09.3 244
SHA256 19708f759185ed39623e03921462ba20fb6f3533268673d2bcd7dd07cef57350 files/digest-ocaml-3.09.3 244
+MD5 71f3dc5bc2ee57a403689b56bc1a85c1 files/digest-ocaml-3.09.3-r1 244
+RMD160 e7f0898889b94faae3b1481555bac42e9298b370 files/digest-ocaml-3.09.3-r1 244
+SHA256 19708f759185ed39623e03921462ba20fb6f3533268673d2bcd7dd07cef57350 files/digest-ocaml-3.09.3-r1 244
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.3 (GNU/Linux)
+
+iD8DBQFGK2l4yuNVb5qfaOYRAgWKAJ9ngMlFOxc7CICA1r4zQggwwrZXiwCfeHm5
+K5JHdqWTpIStcWLd1LcyPX4=
+=3/Ex
+-----END PGP SIGNATURE-----
--- /dev/null
+MD5 8b3744efd0d51b82d55b61d0e2bf0e2b ocaml-3.09.3.tar.bz2 2038617
+RMD160 fdc124218c556c62c897ee6720970279e2d5426b ocaml-3.09.3.tar.bz2 2038617
+SHA256 607842b4f4917a759f19541a421370a834f5b948855ca54cef40d22b19a0934f ocaml-3.09.3.tar.bz2 2038617
--- /dev/null
+Index: ocaml-3.09.3/Makefile
+===================================================================
+--- ocaml-3.09.3.orig/Makefile
++++ ocaml-3.09.3/Makefile
+@@ -282,7 +282,7 @@ clean:: partialclean
+
+ ocamlc: $(COMPOBJS)
+ $(CAMLC) $(LINKFLAGS) -o ocamlc $(COMPOBJS)
+- @sed -e 's|@compiler@|$$topdir/boot/ocamlrun $$topdir/ocamlc|' \
++ @sed -e 's|@compiler@|$$topdir/boot/ocamlrun $$topdir/ocamlc|g' \
+ driver/ocamlcomp.sh.in > ocamlcomp.sh
+ @chmod +x ocamlcomp.sh
+
+@@ -293,7 +293,7 @@ partialclean::
+
+ ocamlopt: $(OPTOBJS)
+ $(CAMLC) $(LINKFLAGS) -o ocamlopt $(OPTOBJS)
+- @sed -e 's|@compiler@|$$topdir/boot/ocamlrun $$topdir/ocamlopt|' \
++ @sed -e 's|@compiler@|$$topdir/boot/ocamlrun $$topdir/ocamlopt|g' \
+ driver/ocamlcomp.sh.in > ocamlcompopt.sh
+ @chmod +x ocamlcompopt.sh
+
+@@ -383,7 +383,7 @@ ocamlc.opt: $(COMPOBJS:.cmo=.cmx)
+ $(CAMLOPT) $(LINKFLAGS) -ccopt "$(BYTECCLINKOPTS)" -o ocamlc.opt \
+ $(COMPOBJS:.cmo=.cmx) \
+ asmrun/meta.o asmrun/dynlink.o -cclib "$(BYTECCLIBS)"
+- @sed -e 's|@compiler@|$$topdir/ocamlc.opt|' \
++ @sed -e 's|@compiler@|$$topdir/ocamlc.opt|g' \
+ driver/ocamlcomp.sh.in > ocamlcomp.sh
+ @chmod +x ocamlcomp.sh
+
+@@ -394,7 +394,7 @@ partialclean::
+
+ ocamlopt.opt: $(OPTOBJS:.cmo=.cmx)
+ $(CAMLOPT) $(LINKFLAGS) -o ocamlopt.opt $(OPTOBJS:.cmo=.cmx)
+- @sed -e 's|@compiler@|$$topdir/ocamlopt.opt|' \
++ @sed -e 's|@compiler@|$$topdir/ocamlopt.opt|g' \
+ driver/ocamlcomp.sh.in > ocamlcompopt.sh
+ @chmod +x ocamlcompopt.sh
+
--- /dev/null
+Index: ocaml-3.09.3/configure
+===================================================================
+--- ocaml-3.09.3.orig/configure
++++ ocaml-3.09.3/configure
+@@ -240,65 +240,65 @@ exe=""
+ case "$bytecc,$host" in
+ cc,*-*-nextstep*)
+ # GNU C extensions disabled, but __GNUC__ still defined!
+- bytecccompopts="-fno-defer-pop $gcc_warnings -U__GNUC__ -posix"
+- bytecclinkopts="-posix";;
++ bytecccompopts="$bytecccompopts -fno-defer-pop $gcc_warnings -U__GNUC__ -posix"
++ bytecclinkopts="$bytecclinkopts -posix";;
+ *,*-*-rhapsody*)
+ # Almost the same as NeXTStep
+- bytecccompopts="-fno-defer-pop $gcc_warnings -DSHRINKED_GNUC"
++ bytecccompopts="$bytecccompopts -fno-defer-pop $gcc_warnings -DSHRINKED_GNUC"
+ mathlib="";;
+ *,*-*-darwin*)
+ # Almost the same as rhapsody
+- bytecccompopts="-fno-defer-pop -no-cpp-precomp $gcc_warnings"
++ bytecccompopts="$bytecccompopts -fno-defer-pop -no-cpp-precomp $gcc_warnings"
+ mathlib="";;
+ *,*-*-beos*)
+- bytecccompopts="-fno-defer-pop $gcc_warnings"
++ bytecccompopts="$bytecccompopts -fno-defer-pop $gcc_warnings"
+ # No -lm library
+ mathlib="";;
+ gcc,alpha*-*-osf*)
+- bytecccompopts="-fno-defer-pop $gcc_warnings"
++ bytecccompopts="$bytecccompopts -fno-defer-pop $gcc_warnings"
+ if cc="$bytecc" sh ./hasgot -mieee; then
+ bytecccompopts="-mieee $bytecccompopts";
+ fi
+ # Put code and static data in lower 4GB
+- bytecclinkopts="-Wl,-T,12000000 -Wl,-D,14000000"
++ bytecclinkopts="$bytecclinkopts -Wl,-T,12000000 -Wl,-D,14000000"
+ # Tell gcc that we can use 32-bit code addresses for threaded code
+ echo "#define ARCH_CODE32" >> m.h;;
+ cc,alpha*-*-osf*)
+- bytecccompopts="-std1 -ieee";;
++ bytecccompopts="$bytecccompopts -std1 -ieee";;
+ gcc,alpha*-*-linux*)
+ if cc="$bytecc" sh ./hasgot -mieee; then
+ bytecccompopts="-mieee $bytecccompopts";
+ fi;;
+ cc,mips-*-irix6*)
+ # Add -n32 flag to ensure compatibility with native-code compiler
+- bytecccompopts="-n32"
++ bytecccompopts="$bytecccompopts -n32"
+ # Turn off warning "unused library"
+- bytecclinkopts="-n32 -Wl,-woff,84";;
++ bytecclinkopts="$bytecclinkopts -n32 -Wl,-woff,84";;
+ cc*,mips-*-irix6*)
+ # (For those who want to force "cc -64")
+ # Turn off warning "unused library"
+- bytecclinkopts="-Wl,-woff,84";;
++ bytecclinkopts="$bytecclinkopts -Wl,-woff,84";;
+ *,alpha*-*-unicos*)
+ # For the Cray T3E
+- bytecccompopts="-DUMK";;
++ bytecccompopts="$bytecccompopts -DUMK";;
+ gcc*,powerpc-*-aix*)
+ # Avoid name-space pollution by requiring Unix98-conformant includes
+- bytecccompopts="-fno-defer-pop $gcc_warnings -D_XOPEN_SOURCE=500";;
++ bytecccompopts="$bytecccompopts -fno-defer-pop $gcc_warnings -D_XOPEN_SOURCE=500";;
+ *,powerpc-*-aix*)
+- bytecccompopts="-D_XOPEN_SOURCE=500";;
++ bytecccompopts="$bytecccompopts -D_XOPEN_SOURCE=500";;
+ gcc*,*-*-cygwin*)
+- bytecccompopts="-fno-defer-pop $gcc_warnings -U_WIN32"
++ bytecccompopts="$bytecccompopts -fno-defer-pop $gcc_warnings -U_WIN32"
+ exe=".exe"
+ ostype="Cygwin";;
+ gcc*,x86_64-*-linux*)
+- bytecccompopts="-fno-defer-pop $gcc_warnings"
++ bytecccompopts="$bytecccompopts -fno-defer-pop $gcc_warnings"
+ # Tell gcc that we can use 32-bit code addresses for threaded code
+ # unless we are compiled for a shared library (-fPIC option)
+ echo "#ifndef __PIC__" >> m.h
+ echo "# define ARCH_CODE32" >> m.h
+ echo "#endif" >> m.h;;
+ gcc*)
+- bytecccompopts="-fno-defer-pop $gcc_warnings";;
++ bytecccompopts="$bytecccompopts -fno-defer-pop $gcc_warnings";;
+ esac
+
+ # Configure compiler to use in further tests
+@@ -609,22 +609,22 @@ else
+ nativecc="$ccoption"
+ fi
+
+-nativecccompopts=''
+-nativecclinkopts=''
++nativecccompopts=""
++nativecclinkopts=""
+ nativeccrpath="$byteccrpath"
+
+ case "$arch,$nativecc,$system,$host_type" in
+- alpha,cc*,digital,*) nativecccompopts=-std1;;
+- mips,cc*,irix,*) nativecccompopts=-n32
+- nativecclinkopts="-n32 -Wl,-woff,84";;
+- *,*,nextstep,*) nativecccompopts="$gcc_warnings -U__GNUC__ -posix"
+- nativecclinkopts="-posix";;
++ alpha,cc*,digital,*) nativecccompopts="$nativecccompopts -std1";;
++ mips,cc*,irix,*) nativecccompopts="$nativecccompopts -n32"
++ nativecclinkopts="$nativecclinkopts -n32 -Wl,-woff,84";;
++ *,*,nextstep,*) nativecccompopts="$nativecccompopts $gcc_warnings -U__GNUC__ -posix"
++ nativecclinkopts="$nativecclinkopts -posix";;
+ *,*,rhapsody,*darwin[1-5].*)
+- nativecccompopts="$gcc_warnings -DSHRINKED_GNUC";;
++ nativecccompopts="$nativecccompopts $gcc_warnings -DSHRINKED_GNUC";;
+ *,*,rhapsody,*)
+- nativecccompopts="$gcc_warnings -DDARWIN_VERSION_6 $dl_defs";;
++ nativecccompopts="$nativecccompopts $gcc_warnings -DDARWIN_VERSION_6 $dl_defs";;
+ *,gcc*,cygwin,*) nativecccompopts="$gcc_warnings -U_WIN32";;
+- *,gcc*,*,*) nativecccompopts="$gcc_warnings";;
++ *,gcc*,*,*) nativecccompopts="$nativecccompopts $gcc_warnings";;
+ esac
+
+ asflags=''
--- /dev/null
+--- ocaml-3.09.3/asmrun/alpha.S.old 2006-11-02 18:53:12.000000000 +0100
++++ ocaml-3.09.3/asmrun/alpha.S 2006-11-02 18:53:12.000000000 +0100
+@@ -438,3 +438,7 @@
+ .word -1 /* negative frame size => use callback link */
+ .word 0 /* no roots here */
+ .align 3
++#ifdef __ELF__
++.section .note.GNU-stack,"",%progbits
++#endif
++
+--- ocaml-3.09.3/asmrun/amd64.S.old 2006-11-02 18:53:12.000000000 +0100
++++ ocaml-3.09.3/asmrun/amd64.S 2006-11-02 18:53:12.000000000 +0100
+@@ -334,3 +334,7 @@
+ .align 16
+ caml_absf_mask:
+ .quad 0x7FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF
++#ifdef __ELF__
++.section .note.GNU-stack,"",%progbits
++#endif
++
+--- ocaml-3.09.3/asmrun/arm.S.old 2006-11-02 18:53:12.000000000 +0100
++++ ocaml-3.09.3/asmrun/arm.S 2006-11-02 18:53:12.000000000 +0100
+@@ -337,3 +337,7 @@
+ .short -1 /* negative frame size => use callback link */
+ .short 0 /* no roots */
+ .align 2
++#ifdef __ELF__
++.section .note.GNU-stack,"",%progbits
++#endif
++
+--- ocaml-3.09.3/asmrun/hppa.S.old 2006-11-02 18:53:12.000000000 +0100
++++ ocaml-3.09.3/asmrun/hppa.S 2006-11-02 18:53:12.000000000 +0100
+@@ -532,3 +532,7 @@
+ .long L104 + 3 /* return address into callback */
+ .short -1 /* negative frame size => use callback link */
+ .short 0 /* no roots */
++#ifdef __ELF__
++.section .note.GNU-stack,"",%progbits
++#endif
++
+--- ocaml-3.09.3/asmrun/i386.S.old 2006-11-02 18:53:12.000000000 +0100
++++ ocaml-3.09.3/asmrun/i386.S 2006-11-02 18:53:12.000000000 +0100
+@@ -371,3 +371,7 @@
+ #ifdef __ELF__
+ .section .note.GNU-stack,"",%progbits
+ #endif
++#ifdef __ELF__
++.section .note.GNU-stack,"",%progbits
++#endif
++
+--- ocaml-3.09.3/asmrun/ia64.S.old 2006-11-02 18:53:12.000000000 +0100
++++ ocaml-3.09.3/asmrun/ia64.S 2006-11-02 18:53:12.000000000 +0100
+@@ -528,3 +528,7 @@
+
+ .common caml_saved_bsp#, 8, 8
+ .common caml_saved_rnat#, 8, 8
++#ifdef __ELF__
++.section .note.GNU-stack,"",%progbits
++#endif
++
+--- ocaml-3.09.3/asmrun/m68k.S.old 2006-11-02 18:53:12.000000000 +0100
++++ ocaml-3.09.3/asmrun/m68k.S 2006-11-02 18:53:12.000000000 +0100
+@@ -242,3 +242,7 @@
+ .long L107 | return address into callback
+ .word -1 | negative frame size => use callback link
+ .word 0 | no roots here
++#ifdef __ELF__
++.section .note.GNU-stack,"",%progbits
++#endif
++
+--- ocaml-3.09.3/asmrun/power-elf.S.old 2006-11-02 18:53:12.000000000 +0100
++++ ocaml-3.09.3/asmrun/power-elf.S 2006-11-02 18:53:12.000000000 +0100
+@@ -419,3 +419,7 @@
+ .short -1 /* negative size count => use callback link */
+ .short 0 /* no roots here */
+
++#ifdef __ELF__
++.section .note.GNU-stack,"",%progbits
++#endif
++
+--- ocaml-3.09.3/asmrun/sparc.S.old 2006-11-02 18:53:12.000000000 +0100
++++ ocaml-3.09.3/asmrun/sparc.S 2006-11-02 18:53:12.000000000 +0100
+@@ -405,3 +405,7 @@
+ .type Caml_raise_exception, #function
+ .type Caml_system__frametable, #object
+ #endif
++#ifdef __ELF__
++.section .note.GNU-stack,"",%progbits
++#endif
++
+diff -ru ../ref/ocaml-3.09.3/asmcomp/alpha/emit.mlp ocaml-3.09.3/asmcomp/alpha/emit.mlp
+--- ../ref/ocaml-3.09.3/asmcomp/alpha/emit.mlp 2006-03-29 16:49:19.000000000 +0200
++++ ocaml-3.09.3/asmcomp/alpha/emit.mlp 2006-11-03 10:35:40.000000000 +0100
+@@ -811,6 +811,12 @@
+ ` .data\n`;
+ List.iter emit_item l
+
++(* Mark stack as non executable *)
++let nx_stack() =
++ if Config.system = "linux" then
++ ` .section .note.GNU-stack,\"\",%progbits\n`
++
++
+ (* Beginning / end of an assembly file *)
+
+ let begin_assembly() =
+@@ -843,6 +849,7 @@
+ `{emit_symbol lbl_begin}:\n`
+
+ let end_assembly () =
++ nx_stack();
+ let lbl_end = Compilenv.make_symbol (Some "code_end") in
+ ` .text\n`;
+ ` .globl {emit_symbol lbl_end}\n`;
+diff -ru ../ref/ocaml-3.09.3/asmcomp/amd64/emit.mlp ocaml-3.09.3/asmcomp/amd64/emit.mlp
+--- ../ref/ocaml-3.09.3/asmcomp/amd64/emit.mlp 2006-03-29 16:49:19.000000000 +0200
++++ ocaml-3.09.3/asmcomp/amd64/emit.mlp 2006-11-03 10:35:48.000000000 +0100
+@@ -658,6 +658,12 @@
+ ` .data\n`;
+ List.iter emit_item l
+
++(* Mark stack as non executable *)
++let nx_stack() =
++ if Config.system = "linux" then
++ ` .section .note.GNU-stack,\"\",%progbits\n`
++
++
+ (* Beginning / end of an assembly file *)
+
+ let begin_assembly() =
+@@ -671,6 +677,7 @@
+ `{emit_symbol lbl_begin}:\n`
+
+ let end_assembly() =
++ nx_stack();
+ let lbl_end = Compilenv.make_symbol (Some "code_end") in
+ ` .text\n`;
+ ` .globl {emit_symbol lbl_end}\n`;
+diff -ru ../ref/ocaml-3.09.3/asmcomp/arm/emit.mlp ocaml-3.09.3/asmcomp/arm/emit.mlp
+--- ../ref/ocaml-3.09.3/asmcomp/arm/emit.mlp 2004-05-03 14:46:50.000000000 +0200
++++ ocaml-3.09.3/asmcomp/arm/emit.mlp 2006-11-03 10:35:55.000000000 +0100
+@@ -642,6 +642,12 @@
+ ` .data\n`;
+ List.iter emit_item l
+
++(* Mark stack as non executable *)
++let nx_stack() =
++ if Config.system = "linux" then
++ ` .section .note.GNU-stack,\"\",%progbits\n`
++
++
+ (* Beginning / end of an assembly file *)
+
+ let begin_assembly() =
+@@ -661,6 +667,7 @@
+ `{emit_symbol lbl_begin}:\n`
+
+ let end_assembly () =
++ nx_stack();
+ let lbl_end = Compilenv.make_symbol (Some "code_end") in
+ ` .text\n`;
+ ` .global {emit_symbol lbl_end}\n`;
+diff -ru ../ref/ocaml-3.09.3/asmcomp/hppa/emit.mlp ocaml-3.09.3/asmcomp/hppa/emit.mlp
+--- ../ref/ocaml-3.09.3/asmcomp/hppa/emit.mlp 2006-03-29 16:49:19.000000000 +0200
++++ ocaml-3.09.3/asmcomp/hppa/emit.mlp 2006-11-03 10:36:03.000000000 +0100
+@@ -994,6 +994,12 @@
+ ` .data\n`;
+ List.iter emit_item l
+
++(* Mark stack as non executable *)
++let nx_stack() =
++ if Config.system = "linux" then
++ ` .section .note.GNU-stack,\"\",%progbits\n`
++
++
+ (* Beginning / end of an assembly file *)
+
+ let begin_assembly() =
+@@ -1022,6 +1028,7 @@
+
+
+ let end_assembly() =
++ nx_stack();
+ ` .code\n`;
+ let lbl_end = Compilenv.make_symbol (Some "code_end") in
+ declare_global lbl_end;
+diff -ru ../ref/ocaml-3.09.3/asmcomp/i386/emit.mlp ocaml-3.09.3/asmcomp/i386/emit.mlp
+--- ../ref/ocaml-3.09.3/asmcomp/i386/emit.mlp 2006-03-29 16:49:19.000000000 +0200
++++ ocaml-3.09.3/asmcomp/i386/emit.mlp 2006-11-03 10:21:41.000000000 +0100
+@@ -914,6 +914,11 @@
+ ` .data\n`;
+ List.iter emit_item l
+
++(* Mark stack as non executable *)
++let nx_stack() =
++ if Config.system = "linux_elf" then
++ ` .section .note.GNU-stack,\"\",%progbits\n`
++
+ (* Beginning / end of an assembly file *)
+
+ let begin_assembly() =
+@@ -927,6 +932,7 @@
+ `{emit_symbol lbl_begin}:\n`
+
+ let end_assembly() =
++ nx_stack();
+ let lbl_end = Compilenv.make_symbol (Some "code_end") in
+ ` .text\n`;
+ ` .globl {emit_symbol lbl_end}\n`;
+diff -ru ../ref/ocaml-3.09.3/asmcomp/ia64/emit.mlp ocaml-3.09.3/asmcomp/ia64/emit.mlp
+--- ../ref/ocaml-3.09.3/asmcomp/ia64/emit.mlp 2004-07-13 14:18:53.000000000 +0200
++++ ocaml-3.09.3/asmcomp/ia64/emit.mlp 2006-11-03 10:36:13.000000000 +0100
+@@ -1306,6 +1306,12 @@
+ ` .align 8\n`;
+ List.iter emit_item l
+
++(* Mark stack as non executable *)
++let nx_stack() =
++ if Config.system = "linux" then
++ ` .section .note.GNU-stack,\"\",%progbits\n`
++
++
+ (* Beginning / end of an assembly file *)
+
+ let begin_assembly() =
+@@ -1315,6 +1321,7 @@
+ emit_define_symbol (Compilenv.make_symbol (Some "code_begin"))
+
+ let end_assembly () =
++ nx_stack();
+ ` .data\n`;
+ emit_define_symbol (Compilenv.make_symbol (Some "data_end"));
+ ` .text\n`;
+diff -ru ../ref/ocaml-3.09.3/asmcomp/power/emit.mlp ocaml-3.09.3/asmcomp/power/emit.mlp
+--- ../ref/ocaml-3.09.3/asmcomp/power/emit.mlp 2004-06-19 19:39:34.000000000 +0200
++++ ocaml-3.09.3/asmcomp/power/emit.mlp 2006-11-03 10:36:29.000000000 +0100
+@@ -879,6 +879,12 @@
+ emit_string data_space;
+ List.iter emit_item l
+
++(* Mark stack as non executable *)
++let nx_stack() =
++ if Config.system = "elf" then
++ ` .section .note.GNU-stack,\"\",%progbits\n`
++
++
+ (* Beginning / end of an assembly file *)
+
+ let begin_assembly() =
+@@ -898,6 +904,7 @@
+ `{emit_symbol lbl_begin}:\n`
+
+ let end_assembly() =
++ nx_stack();
+ (* Emit the jump table *)
+ if !num_jumptbl_entries > 0 then begin
+ emit_string code_space;
+diff -ru ../ref/ocaml-3.09.3/asmcomp/sparc/emit.mlp ocaml-3.09.3/asmcomp/sparc/emit.mlp
+--- ../ref/ocaml-3.09.3/asmcomp/sparc/emit.mlp 2006-03-29 16:49:19.000000000 +0200
++++ ocaml-3.09.3/asmcomp/sparc/emit.mlp 2006-11-03 10:36:36.000000000 +0100
+@@ -741,6 +741,12 @@
+ ` .data\n`;
+ List.iter emit_item l
+
++(* Mark stack as non executable *)
++let nx_stack() =
++ if Config.system = "linux" then
++ ` .section .note.GNU-stack,\"\",%progbits\n`
++
++
+ (* Beginning / end of an assembly file *)
+
+ let begin_assembly() =
+@@ -754,6 +760,7 @@
+ `{emit_symbol lbl_begin}:\n`
+
+ let end_assembly() =
++ nx_stack();
+ ` .text\n`;
+ let lbl_end = Compilenv.make_symbol (Some "code_end") in
+ ` .global {emit_symbol lbl_end}\n`;
--- /dev/null
+--- ocaml-3.09.3.orig/driver/ocamlcomp.sh.in 2002-06-08 03:27:50.000000000 +0000
++++ ocaml-3.09.2/driver/ocamlcomp.sh.in 2007-04-21 17:27:24.000000000 +0000
+@@ -2,4 +2,10 @@
+
+ topdir=`dirname $0`
+
++# evil hack for evil build system.
++if [ -x /usr/bin/scanelf ]; then
++ [ "$(scanelf @compiler@ -BF%x#f)" != "--mxe-" ] && scanelf -qXx -z mxe @compiler@ > /dev/null
++fi
++
++
+ exec @compiler@ -nostdlib -I $topdir/stdlib "$@"
--- /dev/null
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/ocaml/ocaml-3.09.3-r1.ebuild,v 1.1 2007/04/22 13:55:57 phreak Exp $
+
+inherit flag-o-matic eutils multilib pax-utils versionator
+
+DESCRIPTION="fast modern type-inferring functional programming language descended from the ML (Meta Language) family"
+HOMEPAGE="http://www.ocaml.org/"
+SRC_URI="http://caml.inria.fr/distrib/ocaml-$( get_version_component_range 1-2 )/${P}.tar.bz2"
+
+LICENSE="QPL-1.0 LGPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd"
+IUSE="tk latex"
+
+DEPEND="virtual/libc
+ tk? ( >=dev-lang/tk-3.3.3 )"
+
+QA_EXECSTACK="/usr/lib/ocaml/compiler-*"
+
+# This is a crappy way to deal with the textrels, but it keeps stuff simple
+QA_TEXTRELS="usr/bin/ocaml*.opt usr/bin/camlp4*.opt"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ # Fix the EXEC_STACK in ocaml compiled binaries (#153382)
+ epatch "${FILESDIR}"/${P}-exec-stack-fixes.patch
+
+ # Quick and somewhat dirty fix for bug #110541
+ epatch "${FILESDIR}"/${P}-execheap.patch
+
+ # The configure script doesn't inherit previous defined variables,
+ # overwriting previous declarations of bytecccompopts, bytecclinkopts,
+ # nativecccompopts and nativecclinkopts. Reported upstream as issue 0004267.
+ epatch "${FILESDIR}"/${P}-configure.patch
+
+ # The sed in the Makefile doesn't replace all occurences of @compiler@
+ # in driver/ocamlcomp.sh.in. Reported upstream as issue 0004268.
+ epatch "${FILESDIR}"/${P}-Makefile.patch
+
+ # Change the configure script to add the CFLAGS to bytecccompopts, LDFLAGS
+ # to bytecclinkopts.
+ sed -i -e "s,bytecccompopts=\"\",bytecccompopts=\"\${CFLAGS}\"," \
+ -e "s,bytecclinkopts=\"\",bytecclinkopts=\"\${LDFLAGS}\"," \
+ "${S}"/configure
+}
+
+src_compile() {
+ local myconf="--host ${CHOST}"
+
+ # dev-lang/ocaml tends to break/give unexpected results with "unsafe" CFLAGS.
+ strip-flags
+ replace-flags "-O?" -O2
+
+ use tk || myconf="-no-tk"
+
+ # ocaml uses a home-brewn configure script, preventing it to use econf.
+ ./configure -prefix /usr \
+ --bindir /usr/bin \
+ --libdir /usr/$(get_libdir)/ocaml \
+ --mandir /usr/share/man \
+ --with-pthread ${myconf} || die "configure failed!"
+
+ make world || die "make world failed!"
+
+ # Native code generation is unsupported on some archs
+ if ! use ppc64 ; then
+ make opt || die "make opt failed!"
+ make opt.opt || die "make opt.opt failed!"
+ fi
+}
+
+src_test() {
+ make bootstrap
+}
+
+src_install() {
+ make BINDIR="${D}"/usr/bin \
+ LIBDIR="${D}"/usr/$(get_libdir)/ocaml \
+ MANDIR="${D}"/usr/share/man \
+ install || die "make install failed!"
+
+ # Install the compiler libs
+ dodir /usr/$(get_libdir)/ocaml/compiler-libs
+ insinto /usr/$(get_libdir)/ocaml/compiler-libs
+ doins {utils,typing,parsing}/*.{mli,cmi,cmo,cmx,o}
+
+ # Symlink the headers to the right place
+ dodir /usr/include
+ dosym /usr/$(get_libdir)/ocaml/caml /usr/include/
+
+ # Remove ${D} from ld.conf, as the buildsystem isn't $(DESTDIR) aware
+ dosed "s:${D}::g" /usr/$(get_libdir)/ocaml/ld.conf
+
+ dodoc Changes INSTALL LICENSE README Upgrading
+
+ # Turn MPROTECT off for some of the ocaml binaries, since they are trying to
+ # rewrite the segment (which will obviously fail on systems having
+ # PAX_MPROTECT enabled).
+ pax-mark -m "${D}"//usr/bin/ocamldoc.opt "${D}"/usr/bin/ocamldep.opt \
+ "${D}"/usr/bin/ocamllex.opt "${D}"/usr/bin/camlp4r.opt \
+ "${D}"/usr/bin/camlp4o.opt
+
+ # Create and envd entry for latex input files (this definitely belongs into
+ # CONTENT and not in pkg_postinst.
+ if use latex ; then
+ echo "TEXINPUTS=/usr/$(get_libdir)/ocaml/ocamldoc:" > "${T}"/99ocamldoc
+ doenvd "${T}"/99ocamldoc
+ fi
+}
+
+pkg_postinst() {
+ echo
+ elog "OCaml is not binary compatible from version to version, so you (may)"
+ elog "need to rebuild all packages depending on it, that are actually"
+ elog "installed on your system. To do so, you can run:"
+ elog "sh ${FILESDIR}/ocaml-rebuild.sh [-h | emerge options]"
+ elog "Which will call emerge on all old packages with the given options"
+ echo
+}