~ruther/guix-local

08473753a0ebafef22c0894d846e3b42fd6be2a2 — Efraim Flashner 3 years ago 4450767
gnu: firebird: Add support for riscv64-linux.

* gnu/packages/databases.scm (firebird)[source]: Add patches.
[arguments]: Add custom phase when building for riscv64-linux to force
the bootstrap phase to occur.
[native-inputs]: When building for riscv64-linux add autoconf, automake
and libtool.
* gnu/packages/patches/firebird-riscv64-support-pt1.patch,
gnu/packages/patches/firebird-riscv64-support-pt2.patch: New files.
* gnu/local.mk (dist_patch_DATA): Register them.
M gnu/local.mk => gnu/local.mk +2 -0
@@ 1089,6 1089,8 @@ dist_patch_DATA =						\
  %D%/packages/patches/fifo-map-fix-flags-for-gcc.patch		\
  %D%/packages/patches/fifo-map-remove-catch.hpp.patch		\
  %D%/packages/patches/findutils-localstatedir.patch		\
  %D%/packages/patches/firebird-riscv64-support-pt1.patch	\
  %D%/packages/patches/firebird-riscv64-support-pt2.patch	\
  %D%/packages/patches/flann-cmake-3.11.patch			\
  %D%/packages/patches/flatpak-fix-path.patch			\
  %D%/packages/patches/flatpak-unset-gdk-pixbuf-for-sandbox.patch	\

M gnu/packages/databases.scm => gnu/packages/databases.scm +13 -0
@@ 269,6 269,8 @@ ElasticSearch server")
                             "Firebird-" version "." revision ".tar.bz2"))
         (sha256
          (base32 "0h033xj1kxwgvdv4ncm6kk0mqybvvn203gf88xcv3avys9hbnf4i"))
         (patches (search-patches "firebird-riscv64-support-pt1.patch"
                                  "firebird-riscv64-support-pt2.patch"))
         (modules '((guix build utils)))
         (snippet
          `(begin


@@ 323,6 325,13 @@ ElasticSearch server")
                  (srfi srfi-26))
       #:phases
       (modify-phases %standard-phases
         ,@(if (target-riscv64?)
             `((add-before 'bootstrap 'force-bootstrap
                 (lambda _
                   (delete-file "configure")
                   ;; This file prevents automake from running.
                   (delete-file "autogen.sh"))))
             '())
         (add-after 'unpack 'use-system-boost
           (lambda _
             (substitute* "src/include/firebird/Message.h"


@@ 384,6 393,10 @@ ElasticSearch server")
                 (for-each rmdir
                           (list "include/firebird/impl"
                                 "lib/firebird/plugins/udr")))))))))
    (native-inputs
     (if (target-riscv64?)
       (list autoconf automake libtool)
       '()))
    (inputs
     (list boost
           editline

A gnu/packages/patches/firebird-riscv64-support-pt1.patch => gnu/packages/patches/firebird-riscv64-support-pt1.patch +42 -0
@@ 0,0 1,42 @@
https://salsa.debian.org/firebird-team/firebird3.0/-/raw/master/debian/patches/out/riscv64-prefix.patch

Description: add builds/posix/prefix.linux_riscv64, missing upstream
 It appears the commit adding RiscV64 support
 (1e8e7858db84750a77006d307bf28e9686f9414e) misses the build prefix file
 Here's one submitted by Manuel A. Fernandez Montecelo
Author: Manuel A. Fernandez Montecelo <manuel.montezelo@gmail.com>
Bug: http://tracker.firebirdsql.org/browse/CORE-5851
Bug-Debian: https://bugs.debian.org/895257
Author: Manuel A. Fernandez Montecelo <manuel.montezelo@gmail.com>

--- /dev/null
+++ b/builds/posix/prefix.linux_riscv64
@@ -0,0 +1,28 @@
+# The contents of this file are subject to the Interbase Public
+# License Version 1.0 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy
+# of the License at http://www.Inprise.com/IPL.html
+#
+# Software distributed under the License is distributed on an
+# "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
+# or implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code was created by Inprise Corporation
+# and its predecessors. Portions created by Inprise Corporation are
+# Copyright (C) Inprise Corporation.
+#
+# All Rights Reserved.
+# Contributor(s): ______________________________________.
+# Start of file prefix.linux:  $(VERSION)  $(PLATFORM)
+#      14 Apr 2008     Alan Barclay    alan AT escribe.co.uk
+#      2018, "Manuel A. Fernandez Montecelo" <manuel.montezelo@gmail.com>
+
+
+#LD=@CXX@
+
+#PROD_FLAGS=-ggdb -O3 -fno-omit-frame-pointer -DLINUX -pipe -MMD -fPIC
+#DEV_FLAGS=-ggdb -DLINUX -DDEBUG_GDS_ALLOC -pipe -MMD -p -fPIC -Wall -Wno-switch
+
+PROD_FLAGS=-O3 -DLINUX -DRISCV64 -pipe -p -MMD -fPIC -fsigned-char -fmessage-length=0 -std=gnu++03 -fno-delete-null-pointer-checks
+DEV_FLAGS=-ggdb -DLINUX -DRISCV64 -pipe -p -MMD -fPIC -Wall -fsigned-char -fmessage-length=0 -Wno-non-virtual-dtor

A gnu/packages/patches/firebird-riscv64-support-pt2.patch => gnu/packages/patches/firebird-riscv64-support-pt2.patch +108 -0
@@ 0,0 1,108 @@
https://salsa.debian.org/firebird-team/firebird3.0/-/raw/master/debian/patches/upstream/riscv64-support.patch

1e8e7858db84750a77006d307bf28e9686f9414e Patch for CORE-5779: support for riscv64, also some code fixes related with prior ports
 Minor corrections compared to the commit above due to whitespace/spelling
 differences with 3.0 version
Bug-Debian: https://bugs.debian.org/895257
Bug: http://tracker.firebirdsql.org/browse/CORE-5779

--- a/configure.ac
+++ b/configure.ac
@@ -251,6 +251,18 @@ dnl CPU_TYPE=ppc64
     libdir=/usr/lib64
     ;;
 
+  riscv64*-*-linux*)
+    MAKEFILE_PREFIX=linux_riscv64
+    INSTALL_PREFIX=linux
+    PLATFORM=LINUX
+    AC_DEFINE(LINUX, 1, [Define this if OS is Linux])
+    EDITLINE_FLG=Y
+    SHRLIB_EXT=so
+    STD_EDITLINE=true
+    STD_ICU=true
+    libdir=/usr/lib64
+    ;;
+
   powerpc64le-*-linux*)
     MAKEFILE_PREFIX=linux_powerpc64el
     INSTALL_PREFIX=linux
--- a/src/common/classes/DbImplementation.cpp
+++ b/src/common/classes/DbImplementation.cpp
@@ -49,6 +49,7 @@ static const UCHAR CpuAlpha = 14;
 static const UCHAR CpuArm64 = 15;
 static const UCHAR CpuPowerPc64el = 16;
 static const UCHAR CpuM68k = 17;
+static const UCHAR CpuRiscV64 = 18;
 
 static const UCHAR OsWindows = 0;
 static const UCHAR OsLinux = 1;
@@ -89,7 +90,8 @@ const char* hardware[] = {
 	"Alpha",
 	"ARM64",
 	"PowerPC64el",
-	"M68k"
+	"M68k",
+	"RiscV64"
 };
 
 const char* operatingSystem[] = {
@@ -116,22 +118,22 @@ const char* compiler[] = {
 // This table lists pre-fb3 implementation codes
 const UCHAR backwardTable[FB_NELEM(hardware) * FB_NELEM(operatingSystem)] =
 {
-//				Intel	AMD		Sparc	PPC		PPC64	MIPSEL	MIPS	ARM		IA64	s390	s390x	SH		SHEB	HPPA	Alpha	ARM64	PowerPC64el
-/* Windows */	50,		68,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
-/* Linux */		60,		66,		65,		69,		86,		71,		72,		75, 	76,		79, 	78,		80,		81,		82,		83,		84,		85,
-/* Darwin */	70,		73,		0,		63,		77,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
-/* Solaris */	0,		0,		30,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
-/* HPUX */		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		31,		0,		0,		0,
-/* AIX */			0,		0,		0,		35,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
-/* MVS */			0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
-/* FreeBSD */	61,		67,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
-/* NetBSD */	62,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0
+//				Intel	AMD		Sparc	PPC		PPC64	MIPSEL	MIPS	ARM		IA64	s390	s390x	SH		SHEB	HPPA	Alpha	ARM64	PPC64el	M68k	RiscV64
+/* Windows */	50,		68,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
+/* Linux */		60,		66,		65,		69,		86,		71,		72,		75, 	76,		79, 	78,		80,		81,		82,		83,		84,		85,		87,		88,
+/* Darwin */	70,		73,		0,		63,		77,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
+/* Solaris */	0,		0,		30,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
+/* HPUX */		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		31,		0,		0,		0,		0,		0,
+/* AIX */		0,		0,		0,		35,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
+/* MVS */		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
+/* FreeBSD */	61,		67,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,
+/* NetBSD */	62,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0,		0
 };
 
 const UCHAR backEndianess[FB_NELEM(hardware)] =
 {
-//	Intel	AMD		Sparc	PPC		PPC64	MIPSEL	MIPS	ARM		IA64	s390	s390x	SH		SHEB	HPPA	Alpha	ARM64	PowerPC64el	M68k
-	0,		0,		1,		1,		1,		0,		1,		0,		0,		1,		1,		0,		1,		1,		0,		0,		0,		1
+//	Intel	AMD		Sparc	PPC		PPC64	MIPSEL	MIPS	ARM		IA64	s390	s390x	SH		SHEB	HPPA	Alpha	ARM64	PPC64el	M68k	RiscV64
+	0,		0,		1,		1,		1,		0,		1,		0,		0,		1,		1,		0,		1,		1,		0,		0,		0,		1,		0,
 };
 
 } // anonymous namespace
--- a/src/common/common.h
+++ b/src/common/common.h
@@ -135,6 +135,10 @@
 #define FB_CPU CpuArm64
 #endif /* ARM64 */
 
+#ifdef RISCV64
+#define FB_CPU CpuRiscV64
+#endif /* RISCV64 */
+
 #ifdef sparc
 #define FB_CPU CpuUltraSparc
 #define RISC_ALIGNMENT
--- a/src/jrd/inf_pub.h
+++ b/src/jrd/inf_pub.h
@@ -247,7 +247,7 @@ enum  info_db_implementations
 	isc_info_db_impl_linux_ppc64el = 85,
 	isc_info_db_impl_linux_ppc64 = 86,
 	isc_info_db_impl_linux_m68k = 87,
-
+	isc_info_db_impl_linux_riscv64 = 88,
 
 	isc_info_db_impl_last_value   // Leave this LAST!
 };