gnu: Add openbios-qemu-ppc.
* gnu/packages/firmware.scm (make-openbios-package): New procedure. (openbios-qemu-ppc): New variable. * gnu/packages/patches/openbios-gcc-warnings.patch: New file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly.
This commit is contained in:
parent
c97de4a989
commit
53a1fce25a
3 changed files with 172 additions and 0 deletions
|
@ -1605,6 +1605,7 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/onnx-use-system-googletest.patch \
|
%D%/packages/patches/onnx-use-system-googletest.patch \
|
||||||
%D%/packages/patches/onnx-shared-libraries.patch \
|
%D%/packages/patches/onnx-shared-libraries.patch \
|
||||||
%D%/packages/patches/onnx-skip-model-downloads.patch \
|
%D%/packages/patches/onnx-skip-model-downloads.patch \
|
||||||
|
%D%/packages/patches/openbios-gcc-warnings.patch \
|
||||||
%D%/packages/patches/openboardview-use-system-imgui.patch \
|
%D%/packages/patches/openboardview-use-system-imgui.patch \
|
||||||
%D%/packages/patches/openboardview-use-system-utf8.patch \
|
%D%/packages/patches/openboardview-use-system-utf8.patch \
|
||||||
%D%/packages/patches/openbox-python3.patch \
|
%D%/packages/patches/openbox-python3.patch \
|
||||||
|
|
|
@ -343,6 +343,82 @@ broadband modem as found, for example, on PinePhone.")
|
||||||
(home-page "https://gitlab.com/mobian1/devices/eg25-manager")
|
(home-page "https://gitlab.com/mobian1/devices/eg25-manager")
|
||||||
(license license:gpl3+)))
|
(license license:gpl3+)))
|
||||||
|
|
||||||
|
(define* (make-openbios-package name arch)
|
||||||
|
(let ((target (cond
|
||||||
|
((string-suffix? "ppc" arch)
|
||||||
|
"powerpc-linux-gnu")
|
||||||
|
((string-suffix? "amd64" arch)
|
||||||
|
"x86_64-linux-gnu")
|
||||||
|
((string-suffix? "x86" arch)
|
||||||
|
"i686-linux-gnu")
|
||||||
|
(else (string-append arch "-linux-gnu")))))
|
||||||
|
(package
|
||||||
|
(name name)
|
||||||
|
(version "1.1")
|
||||||
|
(source (origin
|
||||||
|
(method git-fetch)
|
||||||
|
(uri (git-reference
|
||||||
|
(url "https://github.com/openbios/openbios")
|
||||||
|
(commit (string-append "v" version))))
|
||||||
|
(file-name (git-file-name "openbios" version))
|
||||||
|
(patches (search-patches "openbios-gcc-warnings.patch"))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"11cr0097aiw4hc07v5hfl95753ikyra5ig4nv899ci7l42ilrrbr"))))
|
||||||
|
(build-system gnu-build-system)
|
||||||
|
(arguments
|
||||||
|
(list #:tests? #f ;no tests
|
||||||
|
#:phases
|
||||||
|
#~(modify-phases %standard-phases
|
||||||
|
(add-after 'unpack 'build-reproducibly
|
||||||
|
(lambda _
|
||||||
|
(substitute* "Makefile.target"
|
||||||
|
(("TZ=UTC date \\+")
|
||||||
|
"TZ=UTC date --date=@1 +"))))
|
||||||
|
(replace 'configure
|
||||||
|
(lambda _
|
||||||
|
(invoke "./config/scripts/switch-arch" #$arch)))
|
||||||
|
(replace 'install
|
||||||
|
(lambda _
|
||||||
|
(let ((build-target
|
||||||
|
(if (string-contains #$arch "-")
|
||||||
|
(car (reverse (string-split #$arch #\-)))
|
||||||
|
#$arch)))
|
||||||
|
(for-each (lambda (elf)
|
||||||
|
(install-file elf
|
||||||
|
(string-append #$output
|
||||||
|
"/share/firmware")))
|
||||||
|
(find-files (string-append "obj-" build-target)
|
||||||
|
"\\.elf$"))))))))
|
||||||
|
(native-inputs
|
||||||
|
(append (if (string-prefix? (%current-system) target)
|
||||||
|
'()
|
||||||
|
(list (cross-gcc target) (cross-binutils target)))
|
||||||
|
(list libxslt which)))
|
||||||
|
(home-page "https://openfirmware.info/Welcome_to_OpenBIOS")
|
||||||
|
(synopsis "Open Firmware implementation")
|
||||||
|
(description
|
||||||
|
"OpenBIOS is an implementation of the IEEE 1275-1994 \"Open Firmware\"
|
||||||
|
specification. It can be used as a system firmware, as a boot loader, or
|
||||||
|
provide OpenFirmware functionality on top of an already running system.")
|
||||||
|
;; Some files are GPLv2 only.
|
||||||
|
(license license:gpl2))))
|
||||||
|
|
||||||
|
(define-public openbios-qemu-ppc
|
||||||
|
(let ((base (make-openbios-package "openbios-qemu-ppc" "qemu-ppc")))
|
||||||
|
(package
|
||||||
|
(inherit base)
|
||||||
|
(arguments
|
||||||
|
(substitute-keyword-arguments (package-arguments base)
|
||||||
|
((#:phases phases)
|
||||||
|
#~(modify-phases #$phases
|
||||||
|
(add-after 'install 'rename-executable
|
||||||
|
(lambda _
|
||||||
|
(with-directory-excursion #$output
|
||||||
|
(rename-file "share/firmware" "share/qemu")
|
||||||
|
(rename-file "share/qemu/openbios-qemu.elf"
|
||||||
|
"share/qemu/openbios-ppc")))))))))))
|
||||||
|
|
||||||
(define* (make-opensbi-package platform name #:optional (arch "riscv64"))
|
(define* (make-opensbi-package platform name #:optional (arch "riscv64"))
|
||||||
(package
|
(package
|
||||||
(name name)
|
(name name)
|
||||||
|
|
95
gnu/packages/patches/openbios-gcc-warnings.patch
Normal file
95
gnu/packages/patches/openbios-gcc-warnings.patch
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
Fix warnings with recent versions of GCC.
|
||||||
|
|
||||||
|
This is a combination of these commits:
|
||||||
|
|
||||||
|
https://github.com/openbios/openbios/commit/14be7d187a327a89c068c4e2551d5012a3c25703
|
||||||
|
https://github.com/openbios/openbios/commit/0e6b8b3cb4a25a4680f238bae76de5e370e706c8
|
||||||
|
https://github.com/openbios/openbios/commit/51067854a7606cceb8b1e0a3d2108da69ff46973
|
||||||
|
|
||||||
|
...with minor adaptations to apply on 1.1.
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/arch/sparc32/context.c b/arch/sparc32/context.c
|
||||||
|
--- a/arch/sparc32/context.c
|
||||||
|
+++ b/arch/sparc32/context.c
|
||||||
|
@@ -86,7 +86,7 @@ struct context *switch_to(struct context *ctx)
|
||||||
|
__context = ctx;
|
||||||
|
asm __volatile__ ("\n\tcall __switch_context"
|
||||||
|
"\n\tnop" ::: "g1", "g2", "g3", "g4", "g5", "g6", "g7",
|
||||||
|
- "o0", "o1", "o2", "o3", "o4", "o5", "sp", "o7",
|
||||||
|
+ "o0", "o1", "o2", "o3", "o4", "o5", "o7",
|
||||||
|
"l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7",
|
||||||
|
"i0", "i1", "i2", "i3", "i4", "i5", "i7",
|
||||||
|
"f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9",
|
||||||
|
diff --git a/drivers/cuda.c b/drivers/cuda.c
|
||||||
|
--- a/drivers/cuda.c
|
||||||
|
+++ b/drivers/cuda.c
|
||||||
|
@@ -355,7 +355,7 @@ static void
|
||||||
|
rtc_init(char *path)
|
||||||
|
{
|
||||||
|
phandle_t ph, aliases;
|
||||||
|
- char buf[64];
|
||||||
|
+ char buf[128];
|
||||||
|
|
||||||
|
snprintf(buf, sizeof(buf), "%s/rtc", path);
|
||||||
|
REGISTER_NAMED_NODE(rtc, buf);
|
||||||
|
diff --git a/drivers/ide.c b/drivers/ide.c
|
||||||
|
--- a/drivers/ide.c
|
||||||
|
+++ b/drivers/ide.c
|
||||||
|
@@ -987,7 +987,7 @@ ob_ide_identify_drive(struct ide_drive *drive)
|
||||||
|
drive->sect = id.sectors;
|
||||||
|
}
|
||||||
|
|
||||||
|
- strncpy(drive->model, (char*)id.model, sizeof(id.model));
|
||||||
|
+ strncpy(drive->model, (char*)id.model, sizeof(drive->model));
|
||||||
|
drive->model[40] = '\0';
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
diff --git a/fs/hfs/hfs_fs.c b/fs/hfs/hfs_fs.c
|
||||||
|
--- a/fs/hfs/hfs_fs.c
|
||||||
|
+++ b/fs/hfs/hfs_fs.c
|
||||||
|
@@ -86,7 +86,7 @@ _search( hfsvol *vol, const char *path, const char *sname, hfsfile **ret_fd )
|
||||||
|
|
||||||
|
strncpy( buf, path, sizeof(buf) );
|
||||||
|
if( buf[strlen(buf)-1] != ':' )
|
||||||
|
- strncat( buf, ":", sizeof(buf) );
|
||||||
|
+ strncat( buf, ":", sizeof(buf) - 1 );
|
||||||
|
buf[sizeof(buf)-1] = 0;
|
||||||
|
p = buf + strlen( buf );
|
||||||
|
|
||||||
|
@@ -101,7 +101,7 @@ _search( hfsvol *vol, const char *path, const char *sname, hfsfile **ret_fd )
|
||||||
|
*p = 0;
|
||||||
|
topdir = 0;
|
||||||
|
|
||||||
|
- strncat( buf, ent.name, sizeof(buf) );
|
||||||
|
+ strncat( buf, ent.name, sizeof(buf) - 1);
|
||||||
|
if( (status=_search(vol, buf, sname, ret_fd)) != 2 )
|
||||||
|
continue;
|
||||||
|
topdir = 1;
|
||||||
|
diff --git a/libc/string.c b/libc/string.c
|
||||||
|
--- a/libc/string.c
|
||||||
|
+++ b/libc/string.c
|
||||||
|
@@ -349,10 +349,7 @@ int memcmp(const void * cs,const void * ct,size_t count)
|
||||||
|
char *
|
||||||
|
strdup( const char *str )
|
||||||
|
{
|
||||||
|
- char *p;
|
||||||
|
- if( !str )
|
||||||
|
- return NULL;
|
||||||
|
- p = malloc( strlen(str) + 1 );
|
||||||
|
+ char *p = malloc( strlen(str) + 1 );
|
||||||
|
strcpy( p, str );
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
diff --git a/packages/nvram.c b/packages/nvram.c
|
||||||
|
--- a/packages/nvram.c
|
||||||
|
+++ b/packages/nvram.c
|
||||||
|
@@ -105,7 +105,7 @@ create_free_part( char *ptr, int size )
|
||||||
|
nvpart_t *nvp = (nvpart_t*)ptr;
|
||||||
|
memset( nvp, 0, size );
|
||||||
|
|
||||||
|
- strncpy( nvp->name, "777777777777", sizeof(nvp->name) );
|
||||||
|
+ strncpy( nvp->name, "77777777777", sizeof(nvp->name) );
|
||||||
|
nvp->signature = NV_SIG_FREE;
|
||||||
|
nvp->len_hi = (size /16) >> 8;
|
||||||
|
nvp->len_lo = size /16;
|
Reference in a new issue