Closed firebird-automations closed 9 years ago
Commented by: @dyemanov
The Linux-PPC support has been added to the B2_0_Release branch after the tree has been tagged for v2.0.0 Final (build 12748).
Commented by: @AlexPeshkoff
Closing this issue is not completely correct. PPC and PPC64 are two difefrent architectures. Linux PPC support is already added to 2.0.1, PPC64 - not yet.
Commented by: @dyemanov
OK, but then the patch is incorrect too, as it uses the PPC32 constants.
Commented by: @AlexPeshkoff
Damyan did it for PPC, not PPC64. On PPC64 by default compiler builds 32-bit applications (I've seen that behavior for both Linux and AIX). Therefore it may happen that build, done on PPC64 system using that patch is OK, but it is not 64-bit binary.
Commented by: @AlexPeshkoff
Branch 2.0 is not supported long ago, current 2.5 builds fine on linux/PPC64el. Debian performs test builds on regular basis.
Submitted by: Alexey Kolikov (akolikov)
Compilation fails with this error: g++ -DBOOT_BUILD -I../src/include/gen -I../src/include -I../src/vulcan -I../extern/icu/source/common -I../extern/icu/source/i18n -DNAMESPACE=Vulcan -O3 -DNDEBUG -DLINUX -pipe -MMD -fPIC -DPROD_BUILD -c ../src/jrd/inf.cpp -o ../temp/boot/jrd/inf.o ../src/jrd/inf.cpp: In function `int INF_database_info(const SCHAR*, SSHORT, SCHAR*, SSHORT)': ../src/jrd/inf.cpp:389: error: `IMPLEMENTATION' was not declared in this scope make[3]: *** [../temp/boot/jrd/inf.o] Error 1 rm ../src/jrd/dyn_mod.cpp ../src/jrd/grant.cpp ../src/jrd/dyn.cpp ../src/jrd/dyn_def.cpp ../src/jrd/dyn_del.cpp ../src/jrd/met.cpp ../src/jrd/scl.cpp ../src/jrd/ini.cpp ../src/jrd/dpm.cpp ../src/jrd/dyn_util.cpp ../src/jrd/dfw.cpp ../src/jrd/pcmet.cpp ../src/jrd/fun.cpp make[3]: Leaving directory `/root/firebird-2.0.0.12748/gen' make[2]: *** [libfbstatic] Error 2 make[2]: Leaving directory `/root/firebird-2.0.0.12748/gen' make[1]: *** [../gen/firebird/bin/gpre_static] Error 2 make[1]: Leaving directory `/root/firebird-2.0.0.12748/gen' make: *** [firebird] Error 2
But I already found a solution for this problem, I was downloaded patch for version Firebird 2.0.0.12745 (correct me if I'm wrong) by Damyan Ivanov from: http://www.nabble.com/Patch-for-the-Linux-PPC-port-tf2444297.html and updated it for Firebird 2.0.0.12748 source code. Here is the patch:
--- ./configure.in 2006-04-25 21:07:23.000000000 +0400 +++ ./configure.in 2006-12-22 10:48:17.000000000 +0300 @@ -90,6 +90,16 @@ EDITLINE_FLG=Y SHRLIB_EXT=so ;; + powerpc*-*-linux*) + MAKEFILE_PREFIX=linux_powerpc + INSTALL_PREFIX=linux + PLATFORM=LINUX + AC_DEFINE(LINUX, 1, [Define this if OS is Linux]) + LOCK_MANAGER_FLG=Y + EDITLINE_FLG=Y + SHRLIB_EXT=so + ;; +
i*86*-*-linux*) MAKEFILE_PREFIX=linux --- ./src/jrd/inf_pub.h 2006-03-15 20:32:33.000000000 +0300 +++ ./src/jrd/inf_pub.h 2006-12-22 11:02:26.000000000 +0300 @@ -191,6 +191,7 @@ isc_info_db_impl_linux_amd64 = 66,
+ isc_info_db_impl_linux_ppc = 68,
}; --- ./src/jrd/common.h 2006-03-25 10:07:59.000000000 +0300 +++ ./src/jrd/common.h 2006-12-22 10:46:40.000000000 +0300 @@ -125,6 +125,11 @@
define IMPLEMENTATION isc_info_db_impl_linux_amd64 /* 66 next higher unique number, See you later */
endif
+#ifdef PPC +#define IMPLEMENTATION isc_info_db_impl_linux_ppc /* 68 next higher unique number, See you later */ +#endif + +
ifdef i386
define I386
define IMPLEMENTATION isc_info_db_impl_i386 /* 60 next higher unique number, See you later */
--- ./src/jrd/pag.cpp 2006-06-01 13:19:24.000000000 +0400 +++ ./src/jrd/pag.cpp 2006-12-22 11:19:36.000000000 +0300 @@ -138,8 +138,9 @@ static const int CLASS_LINUX_AMD64 = 24; // LINUX on AMD64 systems static const int CLASS_FREEBSD_AMD64 = 25;// FreeBSD/amd64
+static const int CLASS_LINUX_PPC=26; static const int CLASS_MAX10 = CLASS_LINUX_AMD64; // This should not be changed, no new ports with ODS10 -static const int CLASS_MAX = CLASS_FREEBSD_AMD64; +static const int CLASS_MAX = CLASS_LINUX_PPC;
// ARCHITECTURE COMPATIBILITY CLASSES
@@ -220,7 +221,8 @@ archLittleEndian, // CLASS_NETBSD_I386 archBigEndian, // CLASS_DARWIN_PPC archLittleEndian, // CLASS_LINUX_AMD64 - archLittleEndian // CLASS_FREEBSD_AMD64 + archLittleEndian, // CLASS_FREEBSD_AMD64 + archBigEndian // CLASS_LINUX_PPC };
ifdef sun
@@ -265,6 +267,9 @@
ifdef sparc
const SSHORT CLASS = CLASS_LINUX_SPARC;
endif
+#ifdef PPC +const SSHORT CLASS = CLASS_LINUX_PPC; +#endif
endif
ifdef FREEBSD