summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dev-lang/fpc-ide/ChangeLog7
-rw-r--r--dev-lang/fpc-ide/fpc-ide-2.2.4.ebuild30
-rw-r--r--dev-lang/fpc/ChangeLog8
-rw-r--r--dev-lang/fpc/files/fpc-2.2.4-execstack.patch342
-rw-r--r--dev-lang/fpc/fpc-2.2.4.ebuild153
-rw-r--r--dev-lang/lazarus/ChangeLog8
-rw-r--r--dev-lang/lazarus/lazarus-0.9.26-r2.ebuild73
7 files changed, 618 insertions, 3 deletions
diff --git a/dev-lang/fpc-ide/ChangeLog b/dev-lang/fpc-ide/ChangeLog
index dbbca269b0ee..45b83b0137ef 100644
--- a/dev-lang/fpc-ide/ChangeLog
+++ b/dev-lang/fpc-ide/ChangeLog
@@ -1,6 +1,11 @@
# ChangeLog for dev-lang/fpc-ide
# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-lang/fpc-ide/ChangeLog,v 1.12 2009/03/14 23:38:40 truedfx Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/fpc-ide/ChangeLog,v 1.13 2009/04/23 21:05:02 truedfx Exp $
+
+*fpc-ide-2.2.4 (23 Apr 2009)
+
+ 23 Apr 2009; Harald van Dijk <truedfx@gentoo.org> +fpc-ide-2.2.4.ebuild:
+ Version bump (bug #266988)
14 Mar 2009; Harald van Dijk <truedfx@gentoo.org> -fpc-ide-2.0.2.ebuild,
-fpc-ide-2.0.4.ebuild:
diff --git a/dev-lang/fpc-ide/fpc-ide-2.2.4.ebuild b/dev-lang/fpc-ide/fpc-ide-2.2.4.ebuild
new file mode 100644
index 000000000000..0cf4dd53f96c
--- /dev/null
+++ b/dev-lang/fpc-ide/fpc-ide-2.2.4.ebuild
@@ -0,0 +1,30 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/fpc-ide/fpc-ide-2.2.4.ebuild,v 1.1 2009/04/23 21:05:02 truedfx Exp $
+
+S="${WORKDIR}/fpcbuild-${PV}/fpcsrc/ide"
+
+HOMEPAGE="http://www.freepascal.org/"
+DESCRIPTION="Free Pascal Compiler Integrated Development Environment"
+SRC_URI="mirror://sourceforge/freepascal/fpcbuild-${PV}.tar.gz"
+
+SLOT="0"
+LICENSE="GPL-2 LGPL-2.1 LGPL-2.1-FPC"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+IUSE=""
+
+DEPEND="~dev-lang/fpc-${PV}"
+
+src_unpack() {
+ unpack ${A} || die "Unpacking ${A} failed!"
+
+ find "${WORKDIR}" -name Makefile -exec sed -i -e 's/ -Xs / /g' {} + || die
+}
+
+src_compile() {
+ emake -j1 || die "make failed"
+}
+
+src_install() {
+ emake -j1 INSTALL_PREFIX="${D}"usr install || die "make install failed"
+}
diff --git a/dev-lang/fpc/ChangeLog b/dev-lang/fpc/ChangeLog
index 2fc23d1fe383..4e3e0916b0d8 100644
--- a/dev-lang/fpc/ChangeLog
+++ b/dev-lang/fpc/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for dev-lang/fpc
# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-lang/fpc/ChangeLog,v 1.46 2009/03/14 17:29:50 truedfx Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/fpc/ChangeLog,v 1.47 2009/04/23 21:05:03 truedfx Exp $
+
+*fpc-2.2.4 (23 Apr 2009)
+
+ 23 Apr 2009; Harald van Dijk <truedfx@gentoo.org>
+ +files/fpc-2.2.4-execstack.patch, +fpc-2.2.4.ebuild:
+ Version bump (bug #266988)
*fpc-2.2.2-r1 (10 Mar 2009)
diff --git a/dev-lang/fpc/files/fpc-2.2.4-execstack.patch b/dev-lang/fpc/files/fpc-2.2.4-execstack.patch
new file mode 100644
index 000000000000..9bd2f3460375
--- /dev/null
+++ b/dev-lang/fpc/files/fpc-2.2.4-execstack.patch
@@ -0,0 +1,342 @@
+
+ http://bugs.gentoo.org/show_bug.cgi?id=228867
+ http://mantis.freepascal.org/view.php?id=11563
+
+--- fpcbuild-2.2.2/fpcsrc/compiler/aggas.pas
++++ fpcbuild-2.2.2/fpcsrc/compiler/aggas.pas
+@@ -1074,6 +1074,13 @@
+ (target_info.system in systems_darwin) then
+ AsmWriteLn(#9'.subsections_via_symbols');
+
++ { "no executable stack" marker for Linux }
++ if (target_info.system in system_linux) and
++ not(cs_executable_stack in current_settings.moduleswitches) then
++ begin
++ AsmWriteLn('.section .note.GNU-stack,"",%progbits');
++ end;
++
+ AsmLn;
+ {$ifdef EXTDEBUG}
+ if assigned(current_module.mainsource) then
+--- fpcbuild-2.2.2/fpcsrc/compiler/globtype.pas
++++ fpcbuild-2.2.2/fpcsrc/compiler/globtype.pas
+@@ -109,7 +109,9 @@
+ { linking }
+ cs_create_smart,cs_create_dynamic,cs_create_pic,
+ { browser switches are back }
+- cs_browser,cs_local_browser
++ cs_browser,cs_local_browser,
++ { target specific }
++ cs_executable_stack
+ );
+ tmoduleswitches = set of tmoduleswitch;
+
+--- fpcbuild-2.2.2/fpcsrc/compiler/msg/errore.msg
++++ fpcbuild-2.2.2/fpcsrc/compiler/msg/errore.msg
+@@ -2704,6 +2704,7 @@
+ 3*1W<x>_Target-specific options (targets)
+ A*1W<x>_Target-specific options (targets)
+ P*1W<x>_Target-specific options (targets)
++p*1W<x>_Target-specific options (targets)
+ 3*2Wb_Create a bundle instead of a library (Darwin)
+ P*2Wb_Create a bundle instead of a library (Darwin)
+ p*2Wb_Create a bundle instead of a library (Darwin)
+@@ -2723,6 +2724,10 @@
+ 3*2WR_Generate relocation code (Windows)
+ A*2WR_Generate relocation code (Windows)
+ P*2WT_Specify MPW tool type application (Classic Mac OS)
++3*2WX_Enable executable stack (Linux)
++A*2WX_Enable executable stack (Linux)
++p*2WX_Enable executable stack (Linux)
++P*2WX_Enable executable stack (Linux)
+ **1X_Executable options:
+ **2Xc_Pass --shared/-dynamic to the linker (BeOS, Darwin, FreeBSD, Linux)
+ **2Xd_Do not use standard library search path (needed for cross compile)
+--- fpcbuild-2.2.2/fpcsrc/compiler/msgidx.inc
++++ fpcbuild-2.2.2/fpcsrc/compiler/msgidx.inc
+@@ -740,7 +740,7 @@
+ option_info=11024;
+ option_help_pages=11025;
+
+- MsgTxtSize = 46171;
++ MsgTxtSize = 46365;
+
+ MsgIdxMax : array[1..20] of longint=(
+ 24,87,250,84,63,50,108,22,135,61,
+--- fpcbuild-2.2.2/fpcsrc/compiler/msgtxt.inc
++++ fpcbuild-2.2.2/fpcsrc/compiler/msgtxt.inc
+@@ -1,7 +1,7 @@
+ {$ifdef Delphi}
+-const msgtxt : array[0..000192] of string[240]=(
++const msgtxt : array[0..000193] of string[240]=(
+ {$else Delphi}
+-const msgtxt : array[0..000192,1..240] of char=(
++const msgtxt : array[0..000193,1..240] of char=(
+ {$endif Delphi}
+ '01000_T_Compiler: $1'#000+
+ '01001_D_Compiler OS: $1'#000+
+@@ -1055,48 +1055,53 @@
+ '3*1W<x>_Target-specific options (targets)'#010+
+ 'A*1W<x>_Target-specific options (targets)'#010+
+ 'P*1W<x>_Target-specific options (targets)'#010+
+- '3*2Wb_Create a bundle instead of a ','library (Darwin)'#010+
++ 'p*1W<x>_Target-specific options (ta','rgets)'#010+
++ '3*2Wb_Create a bundle instead of a library (Darwin)'#010+
+ 'P*2Wb_Create a bundle instead of a library (Darwin)'#010+
+ 'p*2Wb_Create a bundle instead of a library (Darwin)'#010+
+ '3*2WB_Create a relocatable image (Windows)'#010+
+- 'A*2WB_Create a relocatable image (Windows, Symbian)'#010+
+- '3*2WC_Specify console ty','pe application (EMX, OS/2, Windows)'#010+
++ 'A*2WB_Create a relocatable image (','Windows, Symbian)'#010+
++ '3*2WC_Specify console type application (EMX, OS/2, Windows)'#010+
+ 'A*2WC_Specify console type application (Windows)'#010+
+ 'P*2WC_Specify console type application (Classic Mac OS)'#010+
+- '3*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+
+- 'A*2WD_Use DEFFILE to export functions',' of DLL or EXE (Windows)'#010+
++ '3*2WD_Use DEFFILE to export functions of DLL or EXE (Wind','ows)'#010+
++ 'A*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+
+ '3*2WF_Specify full-screen type application (EMX, OS/2)'#010+
+ '3*2WG_Specify graphic type application (EMX, OS/2, Windows)'#010+
+ 'A*2WG_Specify graphic type application (Windows)'#010+
+- 'P*2WG_Specify graphic type application (Classic Mac',' OS)'#010+
++ 'P*2WG_Spe','cify graphic type application (Classic Mac OS)'#010+
+ '3*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+
+ 'A*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+
+ '3*2WR_Generate relocation code (Windows)'#010+
+- 'A*2WR_Generate relocation code (Windows)'#010+
+- 'P*2WT_Specify',' MPW tool type application (Classic Mac OS)'#010+
+- '**1X_Executable options:'#010+
++ 'A*2WR_Genera','te relocation code (Windows)'#010+
++ 'P*2WT_Specify MPW tool type application (Classic Mac OS)'#010+
++ '3*2WX_Enable executable stack (Linux)'#010+
++ 'A*2WX_Enable executable stack (Linux)'#010+
++ 'p*2WX_Enable executable stack (Linux)'#010+
++ 'P*2WX_Enable executable stack (Linux)'#010+
++ '**','1X_Executable options:'#010+
+ '**2Xc_Pass --shared/-dynamic to the linker (BeOS, Darwin, FreeBSD, Lin'+
+ 'ux)'#010+
+ '**2Xd_Do not use standard library search path (needed for cross compil'+
+ 'e)'#010+
+- '**2Xe_Use external linke','r'#010+
+- '**2Xg_Create debuginfo in a separate file and add a debuglink section '+
+- 'to executable'#010+
++ '**2Xe_Use external linker'#010+
++ '**2Xg_Create debuginfo in a separate file an','d add a debuglink sectio'+
++ 'n to executable'#010+
+ '**2XD_Try to link units dynamically (defines FPC_LINK_DYNAMIC)'#010+
+ '**2Xi_Use internal linker'#010+
+ '**2Xm_Generate link map'#010+
+- '**2XM<x>_Set the name of the '#039'main'#039' ','program routine (default'+
+- ' is '#039'main'#039')'#010+
+- '**2XP<x>_Prepend the binutils names with the prefix <x>'#010+
++ '**2XM<x>_Set the name of the '#039'main'#039' program routine (default i'+
++ 's '#039'main'#039')'#010+
++ '**2XP<x>_P','repend the binutils names with the prefix <x>'#010+
+ '**2Xr<x>_Set library search path to <x> (needed for cross compile) (Be'+
+ 'OS, Linux)'#010+
+- '**2XR<x>_Prepend <x> to all linker search paths (BeOS, Darwin, Free','B'+
+- 'SD, Linux, Mac OS, Solaris)'#010+
+- '**2Xs_Strip all symbols from executable'#010+
++ '**2XR<x>_Prepend <x> to all linker search paths (BeOS, Darwin, FreeBSD'+
++ ', Linux, Mac OS, Solaris)'#010+
++ '**2Xs_Strip all s','ymbols from executable'#010+
+ '**2XS_Try to link units statically (default, defines FPC_LINK_STATIC)'#010+
+ '**2Xt_Link with static libraries (-static is passed to linker)'#010+
+- '**2XX_Try to smartlink units ',' (defines FPC_LINK_SMART)'#010+
++ '**2XX_Try to smartlink units (defines FPC_LINK_SMART)'#010+
+ '**1*_'#010+
+- '**1?_Show this help'#010+
++ '**1?_Show th','is help'#010+
+ '**1h_Shows this help without waiting'#000
+ );
+--- fpcbuild-2.2.2/fpcsrc/compiler/ogelf.pas
++++ fpcbuild-2.2.2/fpcsrc/compiler/ogelf.pas
+@@ -1021,6 +1021,10 @@
+ symtabsect:=TElfObjSection.create_ext(ObjSectionList,'.symtab',SHT_SYMTAB,0,0,0,4,sizeof(telfsymbol));
+ strtabsect:=TElfObjSection.create_ext(ObjSectionList,'.strtab',SHT_STRTAB,0,0,0,1,0);
+ shstrtabsect:=TElfObjSection.create_ext(ObjSectionList,'.shstrtab',SHT_STRTAB,0,0,0,1,0);
++ { "no executable stack" marker for Linux }
++ if (target_info.system in system_linux) and
++ not(cs_executable_stack in current_settings.moduleswitches) then
++ TElfObjSection.create_ext(ObjSectionList,'.note.GNU-stack',SHT_PROGBITS,0,0,0,1,0);
+ { insert the empty and filename as first in strtab }
+ strtabsect.writestr(#0);
+ strtabsect.writestr(ExtractFileName(current_module.mainsource^)+#0);
+--- fpcbuild-2.2.2/fpcsrc/compiler/options.pas
++++ fpcbuild-2.2.2/fpcsrc/compiler/options.pas
+@@ -1357,6 +1357,18 @@
+ else
+ apptype:=app_tool;
+ end;
++ 'X':
++ begin
++ if (target_info.system in system_linux) then
++ begin
++ if UnsetBool(More, j) then
++ exclude(init_settings.moduleswitches,cs_executable_stack)
++ else
++ include(init_settings.moduleswitches,cs_executable_stack)
++ end
++ else
++ IllegalPara(opt);
++ end
+ else
+ IllegalPara(opt);
+ end;
+--- fpcbuild-2.2.2/fpcsrc/rtl/linux/arm/cprt0.as
++++ fpcbuild-2.2.2/fpcsrc/rtl/linux/arm/cprt0.as
+@@ -135,3 +135,5 @@
+ 2: .long 0
+ .long 2,0,0
+ 3: .align 4
++
++.section .note.GNU-stack,"",%progbits
+--- fpcbuild-2.2.2/fpcsrc/rtl/linux/arm/gprt0.as
++++ fpcbuild-2.2.2/fpcsrc/rtl/linux/arm/gprt0.as
+@@ -90,3 +90,4 @@
+ .long 2,0,0
+ 3: .align 4
+
++.section .note.GNU-stack,"",%progbits
+--- fpcbuild-2.2.2/fpcsrc/rtl/linux/arm/prt0.as
++++ fpcbuild-2.2.2/fpcsrc/rtl/linux/arm/prt0.as
+@@ -108,3 +108,5 @@
+ 2: .long 0
+ .long 2,0,0
+ 3: .align 4
++
++.section .note.GNU-stack,"",%progbits
+--- fpcbuild-2.2.2/fpcsrc/rtl/linux/arm/ucprt0.as
++++ fpcbuild-2.2.2/fpcsrc/rtl/linux/arm/ucprt0.as
+@@ -178,3 +178,5 @@
+ 2: .long 0
+ .long 2,0,0
+ 3: .align 4
++
++.section .note.GNU-stack,"",%progbits
+--- fpcbuild-2.2.2/fpcsrc/rtl/linux/i386/cprt0.as
++++ fpcbuild-2.2.2/fpcsrc/rtl/linux/i386/cprt0.as
+@@ -105,3 +105,5 @@
+ .set operatingsystem_parameter_envp,operatingsystem_parameters+0
+ .set operatingsystem_parameter_argc,operatingsystem_parameters+4
+ .set operatingsystem_parameter_argv,operatingsystem_parameters+8
++
++.section .note.GNU-stack,"",%progbits
+--- fpcbuild-2.2.2/fpcsrc/rtl/linux/i386/cprt21.as
++++ fpcbuild-2.2.2/fpcsrc/rtl/linux/i386/cprt21.as
+@@ -122,3 +122,5 @@
+ .set operatingsystem_parameter_envp,operatingsystem_parameters+0
+ .set operatingsystem_parameter_argc,operatingsystem_parameters+4
+ .set operatingsystem_parameter_argv,operatingsystem_parameters+8
++
++.section .note.GNU-stack,"",%progbits
+--- fpcbuild-2.2.2/fpcsrc/rtl/linux/i386/dllprt0.as
++++ fpcbuild-2.2.2/fpcsrc/rtl/linux/i386/dllprt0.as
+@@ -72,3 +72,4 @@
+ .set operatingsystem_parameter_argc,operatingsystem_parameters+4
+ .set operatingsystem_parameter_argv,operatingsystem_parameters+8
+
++.section .note.GNU-stack,"",%progbits
+--- fpcbuild-2.2.2/fpcsrc/rtl/linux/i386/gprt0.as
++++ fpcbuild-2.2.2/fpcsrc/rtl/linux/i386/gprt0.as
+@@ -87,3 +87,5 @@
+ .set operatingsystem_parameter_envp,operatingsystem_parameters+0
+ .set operatingsystem_parameter_argc,operatingsystem_parameters+4
+ .set operatingsystem_parameter_argv,operatingsystem_parameters+8
++
++.section .note.GNU-stack,"",%progbits
+--- fpcbuild-2.2.2/fpcsrc/rtl/linux/i386/gprt21.as
++++ fpcbuild-2.2.2/fpcsrc/rtl/linux/i386/gprt21.as
+@@ -136,3 +136,4 @@
+ .set operatingsystem_parameter_argc,operatingsystem_parameters+4
+ .set operatingsystem_parameter_argv,operatingsystem_parameters+8
+
++.section .note.GNU-stack,"",%progbits
+--- fpcbuild-2.2.2/fpcsrc/rtl/linux/i386/prt0.as
++++ fpcbuild-2.2.2/fpcsrc/rtl/linux/i386/prt0.as
+@@ -109,3 +109,4 @@
+
+ //.section .threadvar,"aw",@nobits
+ .comm ___fpc_threadvar_offset,4
++.section .note.GNU-stack,"",%progbits
+--- fpcbuild-2.2.2/fpcsrc/rtl/linux/powerpc/cprt0.as
++++ fpcbuild-2.2.2/fpcsrc/rtl/linux/powerpc/cprt0.as
+@@ -117,3 +117,4 @@
+ .comm operatingsystem_parameter_argc, 4
+ .comm operatingsystem_parameter_argv, 4
+
++.section .note.GNU-stack,"",%progbits
+--- fpcbuild-2.2.2/fpcsrc/rtl/linux/powerpc/prt0.as
++++ fpcbuild-2.2.2/fpcsrc/rtl/linux/powerpc/prt0.as
+@@ -67,3 +67,5 @@
+ .comm operatingsystem_parameter_envp,4
+ .comm operatingsystem_parameter_argc,4
+ .comm operatingsystem_parameter_argv,4
++
++.section .note.GNU-stack,"",%progbits
+--- fpcbuild-2.2.2/fpcsrc/rtl/linux/powerpc64/cprt0.as
++++ fpcbuild-2.2.2/fpcsrc/rtl/linux/powerpc64/cprt0.as
+@@ -433,3 +433,5 @@
+ .comm operatingsystem_parameter_argc, 4
+ .comm operatingsystem_parameter_argv, 8
+ .comm operatingsystem_parameter_envp, 8
++
++.section .note.GNU-stack,"",%progbits
+--- fpcbuild-2.2.2/fpcsrc/rtl/linux/powerpc64/gprt0.as
++++ fpcbuild-2.2.2/fpcsrc/rtl/linux/powerpc64/gprt0.as
+@@ -439,3 +439,5 @@
+ .comm operatingsystem_parameter_argc, 4
+ .comm operatingsystem_parameter_argv, 8
+ .comm operatingsystem_parameter_envp, 8
++
++.section .note.GNU-stack,"",%progbits
+--- fpcbuild-2.2.2/fpcsrc/rtl/linux/powerpc64/prt0.as
++++ fpcbuild-2.2.2/fpcsrc/rtl/linux/powerpc64/prt0.as
+@@ -376,3 +376,4 @@
+ .comm operatingsystem_parameter_argv, 8
+ .comm operatingsystem_parameter_envp, 8
+
++.section .note.GNU-stack,"",%progbits
+--- /dev/null
++++ fpcbuild-2.2.2/fpcsrc/tests/webtbs/tw11563.pp
+@@ -0,0 +1,40 @@
++{ %target=linux}
++{ %result=216 }
++
++program ExecStack;
++ procedure DoIt;
++ type
++ proc = procedure;
++ var
++{$if defined(cpupowerpc) or defined(cpupowerpc64)}
++ ret: longint;
++{$endif}
++{$if defined(cpui386) or defined(cpux86_64)}
++ ret: Byte;
++{$endif}
++{$ifdef cpuarm}
++ 'add arm code to test stack execution'
++{$endif}
++ DoNothing: proc;
++
++ begin
++{$if defined(cpupowerpc) or defined(cpupowerpc64)}
++ { can't use proc(@ret) because linux/ppc64 always expects some kind of
++ trampoline
++ }
++ ret := ($4e shl 24) or ($80 shl 16) or ($00 shl 8) or $20;
++ asm
++ la r0, ret
++ mtctr r0
++ bctrl
++ end;
++{$endif}
++{$if defined(cpui386) or defined(cpux86_64)}
++ ret := $C3;
++ DoNothing := proc(@ret);
++ DoNothing;
++{$endif}
++ end;
++begin
++ DoIt;
++end.
diff --git a/dev-lang/fpc/fpc-2.2.4.ebuild b/dev-lang/fpc/fpc-2.2.4.ebuild
new file mode 100644
index 000000000000..ec9236f9b960
--- /dev/null
+++ b/dev-lang/fpc/fpc-2.2.4.ebuild
@@ -0,0 +1,153 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/fpc/fpc-2.2.4.ebuild,v 1.1 2009/04/23 21:05:03 truedfx Exp $
+
+inherit eutils
+
+S="${WORKDIR}/fpcbuild-${PV}/fpcsrc"
+
+HOMEPAGE="http://www.freepascal.org/"
+DESCRIPTION="Free Pascal Compiler"
+SRC_URI="mirror://sourceforge/freepascal/fpcbuild-${PV}.tar.gz
+ x86? ( mirror://sourceforge/freepascal/fpc-2.2.4.i386-linux.tar )
+ sparc? ( mirror://sourceforge/freepascal/fpc-2.2.4.sparc-linux.tar )
+ ppc? ( mirror://sourceforge/freepascal/fpc-2.2.4.powerpc-linux.tar )
+ amd64? ( mirror://sourceforge/freepascal/fpc-2.2.4.x86_64-linux.tar )
+ doc? ( mirror://sourceforge/freepascal/fpc-${PV}-doc-pdf.zip )"
+
+SLOT="0"
+LICENSE="GPL-2 LGPL-2.1 LGPL-2.1-FPC"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+IUSE="doc source"
+
+DEPEND="!dev-lang/fpc-bin
+ !dev-lang/fpc-source"
+RDEPEND="${DEPEND}"
+DEPEND="${DEPEND}
+ >=sys-devel/binutils-2.19.1-r1"
+
+src_unpack() {
+ case ${ARCH} in
+ x86) FPC_ARCH="i386" PV_BIN=2.2.4 ;;
+ ppc) FPC_ARCH="powerpc" PV_BIN=2.2.4 ;;
+ amd64) FPC_ARCH="x86_64" PV_BIN=2.2.4 ;;
+ sparc) FPC_ARCH="sparc" PV_BIN=2.2.4 ;;
+ *) die "This ebuild doesn't support ${ARCH}." ;;
+ esac
+
+ unpack ${A} || die "Unpacking ${A} failed!"
+
+ tar -xf binary.${FPC_ARCH}-linux.tar || die "Unpacking binary.${FPC_ARCH}-linux.tar failed!"
+ tar -xzf base.${FPC_ARCH}-linux.tar.gz || die "Unpacking base.${FPC_ARCH}-linux.tar.gz failed!"
+
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-execstack.patch
+ sed -i -e 's/ -Xs / /g' $(find . -name Makefile) || die "sed failed"
+}
+
+set_pp() {
+ case ${ARCH} in
+ x86) FPC_ARCH="386" ;;
+ ppc) FPC_ARCH="ppc" ;;
+ amd64) FPC_ARCH="x64" ;;
+ sparc) FPC_ARCH="sparc" ;;
+ *) die "This ebuild doesn't support ${ARCH}." ;;
+ esac
+
+ case ${1} in
+ bootstrap) pp="${WORKDIR}"/lib/fpc/${PV_BIN}/ppc${FPC_ARCH} ;;
+ new) pp="${S}"/compiler/ppc${FPC_ARCH} ;;
+ *) die "set_pp: unknown argument: ${1}" ;;
+ esac
+}
+
+src_compile() {
+ local pp
+
+ # Using the bootstrap compiler.
+ set_pp bootstrap
+
+ emake -j1 PP="${pp}" compiler_cycle || die "make compiler_cycle failed!"
+
+ # Save new compiler from cleaning...
+ cp "${S}"/compiler/ppc${FPC_ARCH} "${S}"/ppc${FPC_ARCH}.new
+
+ # ...rebuild with current version...
+ emake -j1 PP="${S}"/ppc${FPC_ARCH}.new compiler_cycle || die "make compiler_cycle failed!"
+
+ # ..and clean up afterwards
+ rm "${S}"/ppc${FPC_ARCH}.new
+
+ # Using the new compiler.
+ set_pp new
+
+ emake -j1 PP="${pp}" rtl_clean || die "make rtl_clean failed"
+
+ emake -j1 PP="${pp}" rtl packages_all utils || die "make failed"
+
+ # Use pregenerated docs to avoid sandbox violations (#146804)
+ #if use doc ; then
+ # cd "${S}"/../fpcdocs
+ # emake -j1 pdf || die "make pdf failed!"
+ #fi
+}
+
+src_install() {
+ local pp
+ set_pp new
+
+ set -- PP="${pp}" FPCMAKE="${S}/utils/fpcm/fpcmake" \
+ INSTALL_PREFIX="${D}"usr \
+ INSTALL_DOCDIR="${D}"usr/share/doc/${P} \
+ INSTALL_MANDIR="${D}"usr/share/man \
+ INSTALL_SOURCEDIR="${D}"usr/lib/fpc/${PV}/source
+
+ emake -j1 "$@" compiler_install rtl_install packages_install \
+ utils_install || die "make install failed!"
+
+ dosym ../lib/fpc/${PV}/ppc${FPC_ARCH} /usr/bin/ppc${FPC_ARCH}
+
+ if ! has nodoc ${FEATURES} ; then
+ cd "${S}"/../install/doc
+ emake -j1 "$@" installdoc || die "make installdoc failed!"
+ fi
+
+ if ! has noman ${FEATURES} ; then
+ cd "${S}"/../install/man
+ emake -j1 "$@" installman || die "make installman failed!"
+ fi
+
+ if ! has nodoc ${FEATURES} && use doc ; then
+ insinto /usr/share/doc/${PF}
+ doins "${WORKDIR}"/doc/*.pdf
+ #cd "${S}"/../fpcdocs
+ #emake -j1 "$@" pdfinstall || die "make pdfinstall failed"
+ fi
+
+ if use source ; then
+ cd "${S}"
+ shift
+ emake -j1 PP="${D}"usr/bin/ppc${FPC_ARCH} "$@" sourceinstall || die "make sourceinstall failed!"
+ find "${D}"usr/lib/fpc/${PV}/source -name '*.o' -exec rm {} \;
+ fi
+
+ "${D}"usr/lib/fpc/${PV}/samplecfg "${D}"usr/lib/fpc/${PV} "${D}"etc || die "samplecfg failed"
+ sed -i -e "s:${D}:/:g" "${D}"etc/fpc.cfg || die "sed fpc.cfg failed"
+
+ rm -rf "${D}"usr/lib/fpc/lexyacc
+}
+
+pkg_postinst() {
+ # Using ewarn - it is really important for other ebuilds (e.g. Lazarus)
+ if [ -e /etc/._cfg0000_fpc.cfg ]; then
+ echo
+ ewarn "Make sure you etc-update /etc/fpc.cfg"
+ ewarn "Otherwise FPC will not work correctly."
+ echo
+ ebeep
+ fi
+
+ ewarn "The default configuration for fpc strips executables. This"
+ ewarn "will cause QA notices in ebuilds for software using fpc."
+ ewarn "You can remove -Xs from /etc/fpc.cfg to avoid this."
+}
diff --git a/dev-lang/lazarus/ChangeLog b/dev-lang/lazarus/ChangeLog
index 2a47fa10d076..b9fcfe83a953 100644
--- a/dev-lang/lazarus/ChangeLog
+++ b/dev-lang/lazarus/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for dev-lang/lazarus
# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-lang/lazarus/ChangeLog,v 1.25 2009/03/14 17:29:50 truedfx Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/lazarus/ChangeLog,v 1.26 2009/04/23 21:05:03 truedfx Exp $
+
+*lazarus-0.9.26-r2 (23 Apr 2009)
+
+ 23 Apr 2009; Harald van Dijk <truedfx@gentoo.org>
+ +lazarus-0.9.26-r2.ebuild:
+ Revision bump to build with fpc 2.2.4
*lazarus-0.9.26-r1 (14 Mar 2009)
diff --git a/dev-lang/lazarus/lazarus-0.9.26-r2.ebuild b/dev-lang/lazarus/lazarus-0.9.26-r2.ebuild
new file mode 100644
index 000000000000..6366f4f6dfaf
--- /dev/null
+++ b/dev-lang/lazarus/lazarus-0.9.26-r2.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/lazarus/lazarus-0.9.26-r2.ebuild,v 1.1 2009/04/23 21:05:03 truedfx Exp $
+
+EAPI=2
+
+inherit eutils
+
+FPCVER="2.2.4"
+
+SLOT="0" # Note: Slotting Lazarus needs slotting fpc, see DEPEND.
+LICENSE="GPL-2 LGPL-2.1 LGPL-2.1-linking-exception"
+KEYWORDS="~amd64 ~ppc ~x86"
+DESCRIPTION="Lazarus IDE is a feature rich visual programming environment emulating Delphi."
+HOMEPAGE="http://www.lazarus.freepascal.org/"
+IUSE=""
+SRC_URI="mirror://sourceforge/lazarus/${P}-0.tgz"
+
+DEPEND="~dev-lang/fpc-${FPCVER}[source]
+ net-misc/rsync
+ >=x11-libs/gtk+-2.0"
+RDEPEND="${DEPEND}
+ !=gnome-base/librsvg-2.16.1"
+DEPEND="${DEPEND}
+ >=sys-devel/binutils-2.19.1-r1"
+
+S=${WORKDIR}/${PN}
+
+src_unpack() {
+ # check for broken fpc.cfg
+ # don't check in pkg_setup since it won't harm binpkgs
+ if grep -q '^[ ]*-Fu.*/lcl$' /etc/fpc.cfg
+ then
+ eerror "Your /etc/fpc.cfg automatically adds a LCL directory"
+ eerror "to the list of unit directories. This will break the"
+ eerror "build of lazarus."
+ die "don't set the LCL path in /etc/fpc.cfg"
+ fi
+
+ unpack ${A}
+
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-fpcsrc.patch
+}
+
+src_compile() {
+ LCL_PLATFORM=gtk2 emake -j1 || die "make failed!"
+}
+
+src_install() {
+ diropts -m0755
+ dodir /usr/share
+ # Using rsync to avoid unnecessary copies and cleaning...
+ # Note: *.o and *.ppu are needed
+ rsync -a \
+ --exclude="CVS" --exclude=".cvsignore" \
+ --exclude="*.ppw" --exclude="*.ppl" \
+ --exclude="*.ow" --exclude="*.a"\
+ --exclude="*.rst" --exclude=".#*" \
+ --exclude="*.~*" --exclude="*.bak" \
+ --exclude="*.orig" --exclude="*.rej" \
+ --exclude=".xvpics" --exclude="*.compiled" \
+ --exclude="killme*" --exclude=".gdb_hist*" \
+ --exclude="debian" --exclude="COPYING*" \
+ --exclude="*.app" \
+ "${S}" "${D}"usr/share \
+ || die "Unable to copy files!"
+
+ dosym ../share/lazarus/startlazarus /usr/bin/startlazarus
+ dosym ../lazarus/images/ide_icon48x48.png /usr/share/pixmaps/lazarus.png
+
+ make_desktop_entry startlazarus "Lazarus IDE" "lazarus" || die "Failed making desktop entry!"
+}