Upgrade to OCaml 4.00.0 beta 2.
- The language is now officially called OCaml (not Objective Caml, O'Caml etc) - Rebase patches on top: . New ARM backend patch no longer required, since upstream. . Replacement config.guess, config.sub no longer required, since upstream versions are newer. . ppc64 backend known not to work; will fix shortly. - New tool: ocamloptp (ocamlopt profiler). - New VERSION file in ocaml-runtime package. - New ocaml-compiler-libs subpackage. - Rearrange ExclusiveArch alphanumerically. - alpha, ia64 native backends have been removed upstream, so they are no longer supported as native compiler targets. - Remove defattr.
This commit is contained in:
parent
f67fde615d
commit
1837515a64
4
.gitignore
vendored
4
.gitignore
vendored
@ -11,3 +11,7 @@ ocaml-3.11.2.tar.bz2
|
|||||||
/ocaml-3.12-refman.info.tar.gz
|
/ocaml-3.12-refman.info.tar.gz
|
||||||
/ocaml-3.12-refman.pdf
|
/ocaml-3.12-refman.pdf
|
||||||
/ocaml-3.12.1.tar.gz
|
/ocaml-3.12.1.tar.gz
|
||||||
|
/ocaml-4.00.0+beta2.tar.bz2
|
||||||
|
/ocaml-4.00beta-refman-html.tar.gz
|
||||||
|
/ocaml-4.00beta-refman.info.tar.gz
|
||||||
|
/ocaml-4.00beta-refman.pdf
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
From 0f3d9e1188a765390ac21b6204c66765c1cad8f0 Mon Sep 17 00:00:00 2001
|
From 545a807ed2ecbbcfa59699d99eefb6ecfd5a9bc6 Mon Sep 17 00:00:00 2001
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
Date: Tue, 29 May 2012 20:40:36 +0100
|
Date: Tue, 29 May 2012 20:40:36 +0100
|
||||||
Subject: [PATCH 1/8] ocamlbyteinfo, ocamlplugininfo: Useful utilities from
|
Subject: [PATCH 1/5] ocamlbyteinfo, ocamlplugininfo: Useful utilities from
|
||||||
Debian, sent upstream.
|
Debian, sent upstream.
|
||||||
|
|
||||||
See:
|
See:
|
||||||
@ -236,5 +236,5 @@ index 0000000..e28800f
|
|||||||
+ header.units
|
+ header.units
|
||||||
+ end
|
+ end
|
||||||
--
|
--
|
||||||
1.7.10.1
|
1.7.10
|
||||||
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
From 649d2c547fd28c48b52348328cd267854389f45f Mon Sep 17 00:00:00 2001
|
From ece869582cd6746834ad8cbb0b31f09fb88e6cbc Mon Sep 17 00:00:00 2001
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
Date: Tue, 29 May 2012 20:43:34 +0100
|
Date: Tue, 29 May 2012 20:43:34 +0100
|
||||||
Subject: [PATCH 3/8] Don't add rpaths to libraries.
|
Subject: [PATCH 2/5] Don't add rpaths to libraries.
|
||||||
|
|
||||||
---
|
---
|
||||||
tools/Makefile.shared | 3 ---
|
tools/Makefile.shared | 3 ---
|
||||||
1 file changed, 3 deletions(-)
|
1 file changed, 3 deletions(-)
|
||||||
|
|
||||||
diff --git a/tools/Makefile.shared b/tools/Makefile.shared
|
diff --git a/tools/Makefile.shared b/tools/Makefile.shared
|
||||||
index 247575a..05de46c 100644
|
index f6818d3..aadd7e2 100644
|
||||||
--- a/tools/Makefile.shared
|
--- a/tools/Makefile.shared
|
||||||
+++ b/tools/Makefile.shared
|
+++ b/tools/Makefile.shared
|
||||||
@@ -103,9 +103,6 @@ ocamlmklib.ml: ocamlmklib.mlp ../config/Makefile
|
@@ -114,9 +114,6 @@ ocamlmklib.ml: ocamlmklib.mlp ../config/Makefile
|
||||||
sed -e "s|%%BINDIR%%|$(BINDIR)|" \
|
sed -e "s|%%BINDIR%%|$(BINDIR)|" \
|
||||||
-e "s|%%SUPPORTS_SHARED_LIBRARIES%%|$(SUPPORTS_SHARED_LIBRARIES)|" \
|
-e "s|%%SUPPORTS_SHARED_LIBRARIES%%|$(SUPPORTS_SHARED_LIBRARIES)|" \
|
||||||
-e "s|%%MKSHAREDLIB%%|$(MKSHAREDLIB)|" \
|
-e "s|%%MKSHAREDLIB%%|$(MKSHAREDLIB)|" \
|
||||||
@ -22,5 +22,5 @@ index 247575a..05de46c 100644
|
|||||||
ocamlmklib.mlp >> ocamlmklib.ml
|
ocamlmklib.mlp >> ocamlmklib.ml
|
||||||
|
|
||||||
--
|
--
|
||||||
1.7.10.1
|
1.7.10
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,17 +1,17 @@
|
|||||||
From 0febdfe1698639ce53e6ed8935cdc573be302b49 Mon Sep 17 00:00:00 2001
|
From 18750e6b76911e508ddd632df073566179d091d6 Mon Sep 17 00:00:00 2001
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
Date: Tue, 29 May 2012 20:44:18 +0100
|
Date: Tue, 29 May 2012 20:44:18 +0100
|
||||||
Subject: [PATCH 4/8] configure: Allow user defined C compiler flags.
|
Subject: [PATCH 3/5] configure: Allow user defined C compiler flags.
|
||||||
|
|
||||||
---
|
---
|
||||||
configure | 4 ++++
|
configure | 4 ++++
|
||||||
1 file changed, 4 insertions(+)
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
diff --git a/configure b/configure
|
diff --git a/configure b/configure
|
||||||
index 9be5199..d0a6b0f 100755
|
index 72f4240..eafd6d9 100755
|
||||||
--- a/configure
|
--- a/configure
|
||||||
+++ b/configure
|
+++ b/configure
|
||||||
@@ -1600,6 +1600,10 @@ case "$buggycc" in
|
@@ -1572,6 +1572,10 @@ case "$buggycc" in
|
||||||
nativecccompopts="$nativecccompopts -fomit-frame-pointer";;
|
nativecccompopts="$nativecccompopts -fomit-frame-pointer";;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@ -23,5 +23,5 @@ index 9be5199..d0a6b0f 100755
|
|||||||
|
|
||||||
cclibs="$cclibs $mathlib"
|
cclibs="$cclibs $mathlib"
|
||||||
--
|
--
|
||||||
1.7.10.1
|
1.7.10
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From 66eef2038cf9af06e5883be320e3bf7aec35d572 Mon Sep 17 00:00:00 2001
|
From a46d9a5dd1cb05ee6f32ca41acd35acb536a90de Mon Sep 17 00:00:00 2001
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
Date: Tue, 5 Jun 2012 22:49:17 +0100
|
Date: Tue, 5 Jun 2012 22:49:17 +0100
|
||||||
Subject: [PATCH 8/8] Link dllthreads.so with -lpthread so that pthread_atfork
|
Subject: [PATCH 4/5] Link dllthreads.so with -lpthread so that pthread_atfork
|
||||||
is included statically.
|
is included statically.
|
||||||
|
|
||||||
See:
|
See:
|
||||||
@ -11,7 +11,7 @@ https://lists.fedoraproject.org/pipermail/ppc/2012-June/001655.html
|
|||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/otherlibs/systhreads/Makefile b/otherlibs/systhreads/Makefile
|
diff --git a/otherlibs/systhreads/Makefile b/otherlibs/systhreads/Makefile
|
||||||
index 5ee2775..c75ab14 100644
|
index 3d3f8fb..fb0ae87 100644
|
||||||
--- a/otherlibs/systhreads/Makefile
|
--- a/otherlibs/systhreads/Makefile
|
||||||
+++ b/otherlibs/systhreads/Makefile
|
+++ b/otherlibs/systhreads/Makefile
|
||||||
@@ -30,7 +30,7 @@ all: libthreads.a threads.cma
|
@@ -30,7 +30,7 @@ all: libthreads.a threads.cma
|
||||||
@ -24,5 +24,5 @@ index 5ee2775..c75ab14 100644
|
|||||||
st_stubs_b.o: st_stubs.c st_posix.h
|
st_stubs_b.o: st_stubs.c st_posix.h
|
||||||
$(BYTECC) -O -I../../byterun $(BYTECCCOMPOPTS) $(SHAREDCCCOMPOPTS) \
|
$(BYTECC) -O -I../../byterun $(BYTECCCOMPOPTS) $(SHAREDCCCOMPOPTS) \
|
||||||
--
|
--
|
||||||
1.7.10.1
|
1.7.10
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From b25707437651811a22acaab5a9461eb4ab742f6e Mon Sep 17 00:00:00 2001
|
From a17790287c82c7068451ae37eac73a21bd148e9d Mon Sep 17 00:00:00 2001
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
Date: Tue, 29 May 2012 20:47:07 +0100
|
Date: Tue, 29 May 2012 20:47:07 +0100
|
||||||
Subject: [PATCH 6/8] Add support for ppc64.
|
Subject: [PATCH 5/5] Add support for ppc64.
|
||||||
|
|
||||||
Note (1): This patch was rejected upstream because they don't have
|
Note (1): This patch was rejected upstream because they don't have
|
||||||
appropriate hardware for testing.
|
appropriate hardware for testing.
|
||||||
@ -27,8 +27,8 @@ register (RHBZ#826649).
|
|||||||
asmrun/Makefile | 6 +
|
asmrun/Makefile | 6 +
|
||||||
asmrun/power64-elf.S | 486 ++++++++++++++++++++
|
asmrun/power64-elf.S | 486 ++++++++++++++++++++
|
||||||
asmrun/stack.h | 9 +
|
asmrun/stack.h | 9 +
|
||||||
configure | 5 +-
|
configure | 3 +
|
||||||
10 files changed, 2004 insertions(+), 1 deletion(-)
|
10 files changed, 2003 insertions(+)
|
||||||
create mode 100644 asmcomp/power64/arch.ml
|
create mode 100644 asmcomp/power64/arch.ml
|
||||||
create mode 100644 asmcomp/power64/emit.mlp
|
create mode 100644 asmcomp/power64/emit.mlp
|
||||||
create mode 100644 asmcomp/power64/proc.ml
|
create mode 100644 asmcomp/power64/proc.ml
|
||||||
@ -1573,10 +1573,10 @@ index 0000000..7b8e2a4
|
|||||||
+
|
+
|
||||||
+let fundecl f = (new selector)#emit_fundecl f
|
+let fundecl f = (new selector)#emit_fundecl f
|
||||||
diff --git a/asmrun/Makefile b/asmrun/Makefile
|
diff --git a/asmrun/Makefile b/asmrun/Makefile
|
||||||
index efffa33..3525b82 100644
|
index d4f0c56..d58d451 100644
|
||||||
--- a/asmrun/Makefile
|
--- a/asmrun/Makefile
|
||||||
+++ b/asmrun/Makefile
|
+++ b/asmrun/Makefile
|
||||||
@@ -74,6 +74,12 @@ power.o: power-$(SYSTEM).o
|
@@ -89,6 +89,12 @@ power.o: power-$(SYSTEM).o
|
||||||
power.p.o: power-$(SYSTEM).o
|
power.p.o: power-$(SYSTEM).o
|
||||||
cp power-$(SYSTEM).o power.p.o
|
cp power-$(SYSTEM).o power.p.o
|
||||||
|
|
||||||
@ -2082,10 +2082,10 @@ index 0000000..b2c24d6
|
|||||||
+ .align 3
|
+ .align 3
|
||||||
+
|
+
|
||||||
diff --git a/asmrun/stack.h b/asmrun/stack.h
|
diff --git a/asmrun/stack.h b/asmrun/stack.h
|
||||||
index c778873..f1d2e6a 100644
|
index a801405..59a7bf2 100644
|
||||||
--- a/asmrun/stack.h
|
--- a/asmrun/stack.h
|
||||||
+++ b/asmrun/stack.h
|
+++ b/asmrun/stack.h
|
||||||
@@ -65,6 +65,15 @@
|
@@ -47,6 +47,15 @@
|
||||||
#define Callback_link(sp) ((struct caml_context *)((sp) + Trap_frame_size))
|
#define Callback_link(sp) ((struct caml_context *)((sp) + Trap_frame_size))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -2098,32 +2098,23 @@ index c778873..f1d2e6a 100644
|
|||||||
+#define Callback_link(sp) ((struct caml_context *)((sp) + Trap_frame_size))
|
+#define Callback_link(sp) ((struct caml_context *)((sp) + Trap_frame_size))
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
#ifdef TARGET_m68k
|
#ifdef TARGET_arm
|
||||||
#define Saved_return_address(sp) *((intnat *)((sp) - 4))
|
#define Saved_return_address(sp) *((intnat *)((sp) - 4))
|
||||||
#define Callback_link(sp) ((struct caml_context *)((sp) + 8))
|
#define Callback_link(sp) ((struct caml_context *)((sp) + 8))
|
||||||
diff --git a/configure b/configure
|
diff --git a/configure b/configure
|
||||||
index d0a6b0f..6ed0a9c 100755
|
index eafd6d9..2f48daf 100755
|
||||||
--- a/configure
|
--- a/configure
|
||||||
+++ b/configure
|
+++ b/configure
|
||||||
@@ -685,6 +685,7 @@ case "$host" in
|
@@ -685,6 +685,7 @@ case "$host" in
|
||||||
hppa2.0*-*-hpux*) arch=hppa; system=hpux;;
|
arch=i386; system=macosx
|
||||||
hppa*-*-linux*) arch=hppa; system=linux;;
|
fi;;
|
||||||
hppa*-*-gnu*) arch=hppa; system=gnu;;
|
i[3456]86-*-gnu*) arch=i386; system=gnu;;
|
||||||
+ powerpc64-*-linux*) arch=power64; model=ppc64; system=elf;;
|
+ powerpc64-*-linux*) arch=power64; model=ppc64; system=elf;;
|
||||||
powerpc*-*-linux*) arch=power; model=ppc; system=elf;;
|
powerpc*-*-linux*) arch=power; model=ppc; system=elf;;
|
||||||
powerpc-*-netbsd*) arch=power; model=ppc; system=elf;;
|
powerpc-*-netbsd*) arch=power; model=ppc; system=elf;;
|
||||||
powerpc-*-rhapsody*) arch=power; model=ppc; system=rhapsody;;
|
powerpc-*-rhapsody*) arch=power; model=ppc; system=rhapsody;;
|
||||||
@@ -709,7 +710,7 @@ esac
|
@@ -756,6 +757,8 @@ case "$arch,$model,$system" in
|
||||||
|
aspp='gcc -c';;
|
||||||
if $arch64; then
|
|
||||||
case "$arch,$model" in
|
|
||||||
- sparc,default|mips,default|hppa,default|power,ppc)
|
|
||||||
+ sparc,default|mips,default|hppa,default)
|
|
||||||
arch=none; model=default; system=unknown;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
@@ -772,6 +773,8 @@ case "$arch,$model,$system" in
|
|
||||||
aspp='as -n32 -O2';;
|
|
||||||
power,*,elf) as='as -u -m ppc'
|
power,*,elf) as='as -u -m ppc'
|
||||||
aspp='gcc -c';;
|
aspp='gcc -c';;
|
||||||
+ power64,*,elf) as='as -u -m ppc64'
|
+ power64,*,elf) as='as -u -m ppc64'
|
||||||
@ -2132,5 +2123,5 @@ index d0a6b0f..6ed0a9c 100755
|
|||||||
aspp='gcc -c';;
|
aspp='gcc -c';;
|
||||||
power,*,rhapsody) as="as -arch $model"
|
power,*,rhapsody) as="as -arch $model"
|
||||||
--
|
--
|
||||||
1.7.10.1
|
1.7.10
|
||||||
|
|
@ -1,128 +0,0 @@
|
|||||||
From e3b5b13c53b62b99c4d6764b52a7269a6fe5b983 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stephane Glondu <steph@glondu.net>
|
|
||||||
Date: Tue, 29 May 2012 20:45:32 +0100
|
|
||||||
Subject: [PATCH 5/8] ocamlopt/arm: add .type directive for code symbols
|
|
||||||
|
|
||||||
Bug: http://caml.inria.fr/mantis/view.php?id=5336
|
|
||||||
Bug-Ubuntu: https://bugs.launchpad.net/bugs/810402
|
|
||||||
Signed-off-by: Stephane Glondu <steph@glondu.net>
|
|
||||||
---
|
|
||||||
asmcomp/arm/emit.mlp | 1 +
|
|
||||||
asmrun/arm.S | 12 ++++++++++++
|
|
||||||
2 files changed, 13 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/asmcomp/arm/emit.mlp b/asmcomp/arm/emit.mlp
|
|
||||||
index 2003313..a4b2241 100644
|
|
||||||
--- a/asmcomp/arm/emit.mlp
|
|
||||||
+++ b/asmcomp/arm/emit.mlp
|
|
||||||
@@ -556,6 +556,7 @@ let fundecl fundecl =
|
|
||||||
` .text\n`;
|
|
||||||
` .align 2\n`;
|
|
||||||
` .global {emit_symbol fundecl.fun_name}\n`;
|
|
||||||
+ ` .type {emit_symbol fundecl.fun_name}, %function\n`;
|
|
||||||
`{emit_symbol fundecl.fun_name}:\n`;
|
|
||||||
let n = frame_size() in
|
|
||||||
ignore(emit_stack_adjustment "sub" n);
|
|
||||||
diff --git a/asmrun/arm.S b/asmrun/arm.S
|
|
||||||
index 164f731..1313e9c 100644
|
|
||||||
--- a/asmrun/arm.S
|
|
||||||
+++ b/asmrun/arm.S
|
|
||||||
@@ -24,6 +24,7 @@ alloc_limit .req r10
|
|
||||||
/* Allocation functions and GC interface */
|
|
||||||
|
|
||||||
.globl caml_call_gc
|
|
||||||
+ .type caml_call_gc, %function
|
|
||||||
caml_call_gc:
|
|
||||||
/* Record return address and desired size */
|
|
||||||
/* Can use alloc_limit as a temporary since it will be reloaded by
|
|
||||||
@@ -41,6 +42,7 @@ caml_call_gc:
|
|
||||||
bx lr
|
|
||||||
|
|
||||||
.globl caml_alloc1
|
|
||||||
+ .type caml_alloc1, %function
|
|
||||||
caml_alloc1:
|
|
||||||
sub alloc_ptr, alloc_ptr, #8
|
|
||||||
cmp alloc_ptr, alloc_limit
|
|
||||||
@@ -54,6 +56,7 @@ caml_alloc1:
|
|
||||||
b caml_alloc1
|
|
||||||
|
|
||||||
.globl caml_alloc2
|
|
||||||
+ .type caml_alloc2, %function
|
|
||||||
caml_alloc2:
|
|
||||||
sub alloc_ptr, alloc_ptr, #12
|
|
||||||
cmp alloc_ptr, alloc_limit
|
|
||||||
@@ -67,6 +70,7 @@ caml_alloc2:
|
|
||||||
b caml_alloc2
|
|
||||||
|
|
||||||
.globl caml_alloc3
|
|
||||||
+ .type caml_alloc3, %function
|
|
||||||
caml_alloc3:
|
|
||||||
sub alloc_ptr, alloc_ptr, #16
|
|
||||||
cmp alloc_ptr, alloc_limit
|
|
||||||
@@ -80,6 +84,7 @@ caml_alloc3:
|
|
||||||
b caml_alloc3
|
|
||||||
|
|
||||||
.globl caml_allocN
|
|
||||||
+ .type caml_allocN, %function
|
|
||||||
caml_allocN:
|
|
||||||
sub alloc_ptr, alloc_ptr, r12
|
|
||||||
cmp alloc_ptr, alloc_limit
|
|
||||||
@@ -134,6 +139,7 @@ caml_allocN:
|
|
||||||
/* Function to call is in r12 */
|
|
||||||
|
|
||||||
.globl caml_c_call
|
|
||||||
+ .type caml_c_call, %function
|
|
||||||
caml_c_call:
|
|
||||||
/* Preserve return address in callee-save register r4 */
|
|
||||||
mov r4, lr
|
|
||||||
@@ -160,6 +166,7 @@ caml_c_call:
|
|
||||||
/* Start the Caml program */
|
|
||||||
|
|
||||||
.globl caml_start_program
|
|
||||||
+ .type caml_start_program, %function
|
|
||||||
caml_start_program:
|
|
||||||
ldr r12, .Lcaml_program
|
|
||||||
|
|
||||||
@@ -235,6 +242,7 @@ caml_start_program:
|
|
||||||
/* Raise an exception from C */
|
|
||||||
|
|
||||||
.globl caml_raise_exception
|
|
||||||
+ .type caml_raise_exception, %function
|
|
||||||
caml_raise_exception:
|
|
||||||
/* Reload Caml allocation pointers */
|
|
||||||
ldr r12, .Lcaml_young_ptr
|
|
||||||
@@ -250,6 +258,7 @@ caml_raise_exception:
|
|
||||||
/* Callback from C to Caml */
|
|
||||||
|
|
||||||
.globl caml_callback_exn
|
|
||||||
+ .type caml_callback_exn, %function
|
|
||||||
caml_callback_exn:
|
|
||||||
/* Initial shuffling of arguments (r0 = closure, r1 = first arg) */
|
|
||||||
mov r12, r0
|
|
||||||
@@ -259,6 +268,7 @@ caml_callback_exn:
|
|
||||||
b .Ljump_to_caml
|
|
||||||
|
|
||||||
.globl caml_callback2_exn
|
|
||||||
+ .type caml_callback2_exn, %function
|
|
||||||
caml_callback2_exn:
|
|
||||||
/* Initial shuffling of arguments (r0 = closure, r1 = arg1, r2 = arg2) */
|
|
||||||
mov r12, r0
|
|
||||||
@@ -269,6 +279,7 @@ caml_callback2_exn:
|
|
||||||
b .Ljump_to_caml
|
|
||||||
|
|
||||||
.globl caml_callback3_exn
|
|
||||||
+ .type caml_callback3_exn, %function
|
|
||||||
caml_callback3_exn:
|
|
||||||
/* Initial shuffling of arguments */
|
|
||||||
/* (r0 = closure, r1 = arg1, r2 = arg2, r3 = arg3) */
|
|
||||||
@@ -281,6 +292,7 @@ caml_callback3_exn:
|
|
||||||
b .Ljump_to_caml
|
|
||||||
|
|
||||||
.globl caml_ml_array_bound_error
|
|
||||||
+ .type caml_ml_array_bound_error, %function
|
|
||||||
caml_ml_array_bound_error:
|
|
||||||
/* Load address of [caml_array_bound_error] in r12 */
|
|
||||||
ldr r12, .Lcaml_array_bound_error
|
|
||||||
--
|
|
||||||
1.7.10.1
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
153
ocaml.spec
153
ocaml.spec
@ -1,18 +1,18 @@
|
|||||||
Name: ocaml
|
Name: ocaml
|
||||||
Version: 3.12.1
|
Version: 4.00.0
|
||||||
Release: 12%{?dist}
|
Release: 0.1.beta2%{?dist}
|
||||||
|
|
||||||
Summary: Objective Caml compiler and programming environment
|
Summary: OCaml compiler and programming environment
|
||||||
|
|
||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
License: QPL and (LGPLv2+ with exceptions)
|
License: QPL and (LGPLv2+ with exceptions)
|
||||||
|
|
||||||
URL: http://www.ocaml.org
|
URL: http://www.ocaml.org
|
||||||
|
|
||||||
Source0: http://caml.inria.fr/distrib/ocaml-3.12/ocaml-%{version}.tar.gz
|
Source0: http://caml.inria.fr/pub/distrib/ocaml-4.00/ocaml-%{version}+beta2.tar.bz2
|
||||||
Source1: http://caml.inria.fr/distrib/ocaml-3.12/ocaml-3.12-refman.html.tar.gz
|
Source1: http://caml.inria.fr/pub/distrib/ocaml-4.00/ocaml-4.00beta-refman-html.tar.gz
|
||||||
Source2: http://caml.inria.fr/distrib/ocaml-3.12/ocaml-3.12-refman.pdf
|
Source2: http://caml.inria.fr/pub/distrib/ocaml-4.00/ocaml-4.00beta-refman.pdf
|
||||||
Source3: http://caml.inria.fr/distrib/ocaml-3.12/ocaml-3.12-refman.info.tar.gz
|
Source3: http://caml.inria.fr/pub/distrib/ocaml-4.00/ocaml-4.00beta-refman.info.tar.gz
|
||||||
|
|
||||||
# IMPORTANT NOTE:
|
# IMPORTANT NOTE:
|
||||||
#
|
#
|
||||||
@ -28,13 +28,10 @@ Source3: http://caml.inria.fr/distrib/ocaml-3.12/ocaml-3.12-refman.info.t
|
|||||||
# be incorporated into the git repo at a later time.
|
# be incorporated into the git repo at a later time.
|
||||||
#
|
#
|
||||||
Patch0001: 0001-ocamlbyteinfo-ocamlplugininfo-Useful-utilities-from-.patch
|
Patch0001: 0001-ocamlbyteinfo-ocamlplugininfo-Useful-utilities-from-.patch
|
||||||
Patch0002: 0002-GNU-config.guess-and-config.sub-replacements.patch
|
Patch0002: 0002-Don-t-add-rpaths-to-libraries.patch
|
||||||
Patch0003: 0003-Don-t-add-rpaths-to-libraries.patch
|
Patch0003: 0003-configure-Allow-user-defined-C-compiler-flags.patch
|
||||||
Patch0004: 0004-configure-Allow-user-defined-C-compiler-flags.patch
|
Patch0004: 0004-Link-dllthreads.so-with-lpthread-so-that-pthread_atf.patch
|
||||||
Patch0005: 0005-ocamlopt-arm-add-.type-directive-for-code-symbols.patch
|
Patch0005: 0005-Add-support-for-ppc64.patch
|
||||||
Patch0006: 0006-Add-support-for-ppc64.patch
|
|
||||||
Patch0007: 0007-New-ARM-backend-written-by-Benedikt-Meurer-PR-5433.patch
|
|
||||||
Patch0008: 0008-Link-dllthreads.so-with-lpthread-so-that-pthread_atf.patch
|
|
||||||
|
|
||||||
# Depend on previous version of OCaml so that ocamlobjinfo
|
# Depend on previous version of OCaml so that ocamlobjinfo
|
||||||
# can run.
|
# can run.
|
||||||
@ -73,9 +70,9 @@ Provides: ocaml(compiler) = %{version}
|
|||||||
|
|
||||||
# We can compile OCaml on just about anything, but the native code
|
# We can compile OCaml on just about anything, but the native code
|
||||||
# backend is only available on a subset of architectures.
|
# backend is only available on a subset of architectures.
|
||||||
ExclusiveArch: alpha %{arm} %{ix86} ia64 x86_64 ppc sparc sparcv9 ppc64
|
ExclusiveArch: alpha %{arm} ia64 %{ix86} x86_64 ppc ppc64 sparc sparcv9
|
||||||
|
|
||||||
%ifarch alpha %{arm} %{ix86} ia64 ppc ppc64 sparc sparcv9 x86_64
|
%ifarch %{arm} %{ix86} ppc ppc64 sparc sparcv9 x86_64
|
||||||
%global native_compiler 1
|
%global native_compiler 1
|
||||||
%else
|
%else
|
||||||
%global native_compiler 0
|
%global native_compiler 0
|
||||||
@ -92,8 +89,8 @@ ExclusiveArch: alpha %{arm} %{ix86} ia64 x86_64 ppc sparc sparcv9 ppc64
|
|||||||
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Objective Caml is a high-level, strongly-typed, functional and
|
OCaml is a high-level, strongly-typed, functional and object-oriented
|
||||||
object-oriented programming language from the ML family of languages.
|
programming language from the ML family of languages.
|
||||||
|
|
||||||
This package comprises two batch compilers (a fast bytecode compiler
|
This package comprises two batch compilers (a fast bytecode compiler
|
||||||
and an optimizing native-code compiler), an interactive toplevel system,
|
and an optimizing native-code compiler), an interactive toplevel system,
|
||||||
@ -103,45 +100,45 @@ and a comprehensive library.
|
|||||||
|
|
||||||
%package runtime
|
%package runtime
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
Summary: Objective Caml runtime environment
|
Summary: OCaml runtime environment
|
||||||
Requires: util-linux
|
Requires: util-linux
|
||||||
Provides: ocaml(runtime) = %{version}
|
Provides: ocaml(runtime) = %{version}
|
||||||
|
|
||||||
%description runtime
|
%description runtime
|
||||||
Objective Caml is a high-level, strongly-typed, functional and
|
OCaml is a high-level, strongly-typed, functional and object-oriented
|
||||||
object-oriented programming language from the ML family of languages.
|
programming language from the ML family of languages.
|
||||||
|
|
||||||
This package contains the runtime environment needed to run Objective
|
This package contains the runtime environment needed to run OCaml
|
||||||
Caml bytecode.
|
bytecode.
|
||||||
|
|
||||||
|
|
||||||
%package source
|
%package source
|
||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
Summary: Source code for Objective Caml libraries
|
Summary: Source code for OCaml libraries
|
||||||
Requires: ocaml = %{version}-%{release}
|
Requires: ocaml = %{version}-%{release}
|
||||||
|
|
||||||
%description source
|
%description source
|
||||||
Source code for Objective Caml libraries.
|
Source code for OCaml libraries.
|
||||||
|
|
||||||
|
|
||||||
%package x11
|
%package x11
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
Summary: X11 support for Objective Caml
|
Summary: X11 support for OCaml
|
||||||
Requires: ocaml-runtime = %{version}-%{release}
|
Requires: ocaml-runtime = %{version}-%{release}
|
||||||
Requires: libX11-devel
|
Requires: libX11-devel
|
||||||
|
|
||||||
%description x11
|
%description x11
|
||||||
X11 support for Objective Caml.
|
X11 support for OCaml.
|
||||||
|
|
||||||
|
|
||||||
%package labltk
|
%package labltk
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
Summary: Tk bindings for Objective Caml
|
Summary: Tk bindings for OCaml
|
||||||
Requires: ocaml-runtime = %{version}-%{release}
|
Requires: ocaml-runtime = %{version}-%{release}
|
||||||
|
|
||||||
%description labltk
|
%description labltk
|
||||||
Labltk is a library for interfacing Objective Caml with the scripting
|
Labltk is a library for interfacing OCaml with the scripting language
|
||||||
language Tcl/Tk.
|
Tcl/Tk.
|
||||||
|
|
||||||
This package contains the runtime files.
|
This package contains the runtime files.
|
||||||
|
|
||||||
@ -156,8 +153,8 @@ Requires: tcl-devel
|
|||||||
Requires: tk-devel
|
Requires: tk-devel
|
||||||
|
|
||||||
%description labltk-devel
|
%description labltk-devel
|
||||||
Labltk is a library for interfacing Objective Caml with the scripting
|
Labltk is a library for interfacing OCaml with the scripting language
|
||||||
language Tcl/Tk.
|
Tcl/Tk.
|
||||||
|
|
||||||
This package contains the development files. It includes the ocaml
|
This package contains the development files. It includes the ocaml
|
||||||
browser for code editing and library browsing.
|
browser for code editing and library browsing.
|
||||||
@ -165,69 +162,85 @@ browser for code editing and library browsing.
|
|||||||
|
|
||||||
%package camlp4
|
%package camlp4
|
||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
Summary: Pre-Processor-Pretty-Printer for Objective Caml
|
Summary: Pre-Processor-Pretty-Printer for OCaml
|
||||||
Requires: ocaml-runtime = %{version}-%{release}
|
Requires: ocaml-runtime = %{version}-%{release}
|
||||||
|
|
||||||
%description camlp4
|
%description camlp4
|
||||||
Camlp4 is a Pre-Processor-Pretty-Printer for Objective Caml, parsing a
|
Camlp4 is a Pre-Processor-Pretty-Printer for OCaml, parsing a source
|
||||||
source file and printing some result on standard output.
|
file and printing some result on standard output.
|
||||||
|
|
||||||
This package contains the runtime files.
|
This package contains the runtime files.
|
||||||
|
|
||||||
|
|
||||||
%package camlp4-devel
|
%package camlp4-devel
|
||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
Summary: Pre-Processor-Pretty-Printer for Objective Caml
|
Summary: Pre-Processor-Pretty-Printer for OCaml
|
||||||
Requires: ocaml = %{version}-%{release}
|
Requires: ocaml = %{version}-%{release}
|
||||||
Requires: %{name}-camlp4 = %{version}-%{release}
|
Requires: %{name}-camlp4 = %{version}-%{release}
|
||||||
|
|
||||||
%description camlp4-devel
|
%description camlp4-devel
|
||||||
Camlp4 is a Pre-Processor-Pretty-Printer for Objective Caml, parsing a
|
Camlp4 is a Pre-Processor-Pretty-Printer for OCaml, parsing a source
|
||||||
source file and printing some result on standard output.
|
file and printing some result on standard output.
|
||||||
|
|
||||||
This package contains the development files.
|
This package contains the development files.
|
||||||
|
|
||||||
|
|
||||||
%package ocamldoc
|
%package ocamldoc
|
||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
Summary: Documentation generator for Objective Caml.
|
Summary: Documentation generator for OCaml.
|
||||||
Requires: ocaml = %{version}-%{release}
|
Requires: ocaml = %{version}-%{release}
|
||||||
Provides: ocamldoc
|
Provides: ocamldoc
|
||||||
|
|
||||||
%description ocamldoc
|
%description ocamldoc
|
||||||
Documentation generator for Objective Caml.
|
Documentation generator for OCaml.
|
||||||
|
|
||||||
|
|
||||||
%package emacs
|
%package emacs
|
||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
Summary: Emacs mode for Objective Caml
|
Summary: Emacs mode for OCaml
|
||||||
Requires: ocaml = %{version}-%{release}
|
Requires: ocaml = %{version}-%{release}
|
||||||
Requires: emacs
|
Requires: emacs
|
||||||
|
|
||||||
%description emacs
|
%description emacs
|
||||||
Emacs mode for Objective Caml.
|
Emacs mode for OCaml.
|
||||||
|
|
||||||
|
|
||||||
%package docs
|
%package docs
|
||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
Summary: Documentation for Objective Caml
|
Summary: Documentation for OCaml
|
||||||
Requires: ocaml = %{version}-%{release}
|
Requires: ocaml = %{version}-%{release}
|
||||||
Requires(post): /sbin/install-info
|
Requires(post): /sbin/install-info
|
||||||
Requires(preun): /sbin/install-info
|
Requires(preun): /sbin/install-info
|
||||||
|
|
||||||
|
|
||||||
%description docs
|
%description docs
|
||||||
Objective Caml is a high-level, strongly-typed, functional and
|
OCaml is a high-level, strongly-typed, functional and object-oriented
|
||||||
object-oriented programming language from the ML family of languages.
|
programming language from the ML family of languages.
|
||||||
|
|
||||||
This package contains documentation in PDF and HTML format as well as
|
This package contains documentation in PDF and HTML format as well as
|
||||||
man pages and info files.
|
man pages and info files.
|
||||||
|
|
||||||
|
|
||||||
|
%package compiler-libs
|
||||||
|
Group: Development/Languages
|
||||||
|
Summary: Compiler libraries for OCaml
|
||||||
|
Requires: ocaml = %{version}-%{release}
|
||||||
|
|
||||||
|
|
||||||
|
%description compiler-libs
|
||||||
|
OCaml is a high-level, strongly-typed, functional and object-oriented
|
||||||
|
programming language from the ML family of languages.
|
||||||
|
|
||||||
|
This package contains some modules used internally by the OCaml
|
||||||
|
compilers, useful for the development of some OCaml applications.
|
||||||
|
Note that this exposes internal details of the OCaml compiler which
|
||||||
|
may not be portable between versions.
|
||||||
|
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -T -b 0 -n %{name}-%{version}
|
%setup -q -T -b 0 -n %{name}-%{version}+beta2
|
||||||
%setup -q -T -D -a 1 -n %{name}-%{version}
|
%setup -q -T -D -a 1 -n %{name}-%{version}+beta2
|
||||||
%setup -q -T -D -a 3 -n %{name}-%{version}
|
%setup -q -T -D -a 3 -n %{name}-%{version}+beta2
|
||||||
cp %{SOURCE2} refman.pdf
|
cp %{SOURCE2} refman.pdf
|
||||||
|
|
||||||
git init
|
git init
|
||||||
@ -296,7 +309,7 @@ install -m 0755 ocamlbyteinfo $RPM_BUILD_ROOT%{_bindir}
|
|||||||
|
|
||||||
%post docs
|
%post docs
|
||||||
/sbin/install-info \
|
/sbin/install-info \
|
||||||
--entry="* ocaml: (ocaml). The Objective Caml compiler and programming environment" \
|
--entry="* ocaml: (ocaml). The OCaml compiler and programming environment" \
|
||||||
--section="Programming Languages" \
|
--section="Programming Languages" \
|
||||||
%{_infodir}/%{name}.info \
|
%{_infodir}/%{name}.info \
|
||||||
%{_infodir}/dir 2>/dev/null || :
|
%{_infodir}/dir 2>/dev/null || :
|
||||||
@ -309,7 +322,6 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%{_bindir}/ocaml
|
%{_bindir}/ocaml
|
||||||
%{_bindir}/ocamlbyteinfo
|
%{_bindir}/ocamlbyteinfo
|
||||||
%{_bindir}/ocamlbuild
|
%{_bindir}/ocamlbuild
|
||||||
@ -337,6 +349,7 @@ fi
|
|||||||
%if %{native_compiler}
|
%if %{native_compiler}
|
||||||
%{_bindir}/ocamlopt
|
%{_bindir}/ocamlopt
|
||||||
%{_bindir}/ocamlopt.opt
|
%{_bindir}/ocamlopt.opt
|
||||||
|
%{_bindir}/ocamloptp
|
||||||
%endif
|
%endif
|
||||||
#%{_bindir}/ocamlplugininfo
|
#%{_bindir}/ocamlplugininfo
|
||||||
%{_bindir}/ocamlprof
|
%{_bindir}/ocamlprof
|
||||||
@ -374,9 +387,9 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%files runtime
|
%files runtime
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%{_bindir}/ocamlrun
|
%{_bindir}/ocamlrun
|
||||||
%dir %{_libdir}/ocaml
|
%dir %{_libdir}/ocaml
|
||||||
|
%{_libdir}/ocaml/VERSION
|
||||||
%{_libdir}/ocaml/*.cmo
|
%{_libdir}/ocaml/*.cmo
|
||||||
%{_libdir}/ocaml/*.cmi
|
%{_libdir}/ocaml/*.cmi
|
||||||
%{_libdir}/ocaml/*.cma
|
%{_libdir}/ocaml/*.cma
|
||||||
@ -395,18 +408,15 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%files source
|
%files source
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%{_libdir}/ocaml/*.ml
|
%{_libdir}/ocaml/*.ml
|
||||||
|
|
||||||
|
|
||||||
%files x11
|
%files x11
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%{_libdir}/ocaml/graphicsX11.cmi
|
%{_libdir}/ocaml/graphicsX11.cmi
|
||||||
%{_libdir}/ocaml/graphicsX11.mli
|
%{_libdir}/ocaml/graphicsX11.mli
|
||||||
|
|
||||||
|
|
||||||
%files labltk
|
%files labltk
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%{_bindir}/labltk
|
%{_bindir}/labltk
|
||||||
%dir %{_libdir}/ocaml/labltk
|
%dir %{_libdir}/ocaml/labltk
|
||||||
%{_libdir}/ocaml/labltk/*.cmi
|
%{_libdir}/ocaml/labltk/*.cmi
|
||||||
@ -417,7 +427,6 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%files labltk-devel
|
%files labltk-devel
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%{_bindir}/ocamlbrowser
|
%{_bindir}/ocamlbrowser
|
||||||
%{_libdir}/ocaml/labltk/labltktop
|
%{_libdir}/ocaml/labltk/labltktop
|
||||||
%{_libdir}/ocaml/labltk/pp
|
%{_libdir}/ocaml/labltk/pp
|
||||||
@ -434,7 +443,6 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%files camlp4
|
%files camlp4
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%dir %{_libdir}/ocaml/camlp4
|
%dir %{_libdir}/ocaml/camlp4
|
||||||
%{_libdir}/ocaml/camlp4/*.cmi
|
%{_libdir}/ocaml/camlp4/*.cmi
|
||||||
%{_libdir}/ocaml/camlp4/*.cma
|
%{_libdir}/ocaml/camlp4/*.cma
|
||||||
@ -454,7 +462,6 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%files camlp4-devel
|
%files camlp4-devel
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%{_bindir}/camlp4*
|
%{_bindir}/camlp4*
|
||||||
%{_bindir}/mkcamlp4
|
%{_bindir}/mkcamlp4
|
||||||
%if %{native_compiler}
|
%if %{native_compiler}
|
||||||
@ -475,14 +482,12 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%files ocamldoc
|
%files ocamldoc
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%{_bindir}/ocamldoc*
|
%{_bindir}/ocamldoc*
|
||||||
%{_libdir}/ocaml/ocamldoc
|
%{_libdir}/ocaml/ocamldoc
|
||||||
%doc ocamldoc/Changes.txt
|
%doc ocamldoc/Changes.txt
|
||||||
|
|
||||||
|
|
||||||
%files docs
|
%files docs
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%doc refman.pdf htmlman
|
%doc refman.pdf htmlman
|
||||||
%{_infodir}/*
|
%{_infodir}/*
|
||||||
%if %{native_compiler}
|
%if %{native_compiler}
|
||||||
@ -491,13 +496,41 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%files emacs
|
%files emacs
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%{_datadir}/emacs/site-lisp/*
|
%{_datadir}/emacs/site-lisp/*
|
||||||
%{_bindir}/ocamltags
|
%{_bindir}/ocamltags
|
||||||
%doc emacs/README
|
%doc emacs/README
|
||||||
|
|
||||||
|
|
||||||
|
%files compiler-libs
|
||||||
|
%dir %{_libdir}/ocaml/compiler-libs
|
||||||
|
%{_libdir}/ocaml/compiler-libs/*.cmi
|
||||||
|
%{_libdir}/ocaml/compiler-libs/*.cmo
|
||||||
|
%{_libdir}/ocaml/compiler-libs/*.cma
|
||||||
|
%if %{native_compiler}
|
||||||
|
%{_libdir}/ocaml/compiler-libs/*.a
|
||||||
|
%{_libdir}/ocaml/compiler-libs/*.cmxa
|
||||||
|
%{_libdir}/ocaml/compiler-libs/*.cmx
|
||||||
|
%{_libdir}/ocaml/compiler-libs/*.o
|
||||||
|
%endif
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jun 7 2012 Richard W.M. Jones <rjones@redhat.com> 4.00.0-0.1.beta2
|
||||||
|
- Upgrade to OCaml 4.00.0 beta 2.
|
||||||
|
- The language is now officially called OCaml (not Objective Caml, O'Caml etc)
|
||||||
|
- Rebase patches on top:
|
||||||
|
. New ARM backend patch no longer required, since upstream.
|
||||||
|
. Replacement config.guess, config.sub no longer required, since upstream
|
||||||
|
versions are newer.
|
||||||
|
. ppc64 backend known not to work; will fix shortly.
|
||||||
|
- New tool: ocamloptp (ocamlopt profiler).
|
||||||
|
- New VERSION file in ocaml-runtime package.
|
||||||
|
- New ocaml-compiler-libs subpackage.
|
||||||
|
- Rearrange ExclusiveArch alphanumerically.
|
||||||
|
- alpha, ia64 native backends have been removed upstream, so they are
|
||||||
|
no longer supported as native compiler targets.
|
||||||
|
- Remove defattr.
|
||||||
|
|
||||||
* Wed Jun 6 2012 Richard W.M. Jones <rjones@redhat.com> 3.12.1-12
|
* Wed Jun 6 2012 Richard W.M. Jones <rjones@redhat.com> 3.12.1-12
|
||||||
- ppc64: Include fix for minor heap corruption because of unaligned
|
- ppc64: Include fix for minor heap corruption because of unaligned
|
||||||
minor heap register (RHBZ#826649).
|
minor heap register (RHBZ#826649).
|
||||||
|
8
sources
8
sources
@ -1,4 +1,4 @@
|
|||||||
93cd91f525441eb7e94cc49b9b64bab0 ocaml-3.12-refman.html.tar.gz
|
44105cb86be5ab0e82539fb49a2274d9 ocaml-4.00.0+beta2.tar.bz2
|
||||||
8cf24c4f69c6f9c9f9cc1edb9b18f6cb ocaml-3.12-refman.info.tar.gz
|
4e24c15df07bba220425da67f1a43c31 ocaml-4.00beta-refman-html.tar.gz
|
||||||
79fe5b86e0d6462e3e944fd8c47603ac ocaml-3.12-refman.pdf
|
91feb3bf47c0420a41fc2796135cb9ad ocaml-4.00beta-refman.info.tar.gz
|
||||||
814a047085f0f901ab7d8e3a4b7a9e65 ocaml-3.12.1.tar.gz
|
c9d58f5fdcb455f2d46fe238cc88aaba ocaml-4.00beta-refman.pdf
|
||||||
|
Loading…
Reference in New Issue
Block a user