diff mbox series

[bug#55220,v2,1/6] platform: Introduce new platforms.

Message ID 20220507161126.14553-2-othacehe@gnu.org
State Accepted
Headers show
Series Add --list-systems and --list-targets options. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/comparison success View comparision
cbaines/issue success View issue
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Mathieu Othacehe May 7, 2022, 4:11 p.m. UTC
* gnu/platforms/intel.scm: New file.
* gnu/platforms/mips.scm: Ditto.
* gnu/platforms/powerpc.scm: Ditto.
* gnu/platforms/riscv.scm: Ditto.
* gnu/platforms/s390.scm: Ditto.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add them.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
---
 gnu/local.mk              |  5 ++++
 gnu/platforms/intel.scm   | 48 +++++++++++++++++++++++++++++++++++++++
 gnu/platforms/mips.scm    | 29 +++++++++++++++++++++++
 gnu/platforms/powerpc.scm | 36 +++++++++++++++++++++++++++++
 gnu/platforms/riscv.scm   | 29 +++++++++++++++++++++++
 gnu/platforms/s390.scm    | 29 +++++++++++++++++++++++
 6 files changed, 176 insertions(+)
 create mode 100644 gnu/platforms/intel.scm
 create mode 100644 gnu/platforms/mips.scm
 create mode 100644 gnu/platforms/powerpc.scm
 create mode 100644 gnu/platforms/riscv.scm
 create mode 100644 gnu/platforms/s390.scm

Comments

M May 9, 2022, 8:44 p.m. UTC | #1
Mathieu Othacehe schreef op za 07-05-2022 om 18:11 [+0200]:
>  						\
>    %D%/platforms/arm.scm		                \
>    %D%/platforms/hurd.scm	                \
> +  %D%/platforms/intel.scm	                \
> +  %D%/platforms/mips.scm	                \
> +  %D%/platforms/powerpc.scm	                \
> +  %D%/platforms/riscv.scm	                \
> +  %D%/platforms/s390.scm	                \

I'm wondering, these files are all rather tiny, why not define all the
standard platforms directly in gnu/platforms.scm?

Greetings,
Maxime.
M May 9, 2022, 8:50 p.m. UTC | #2
Mathieu Othacehe schreef op za 07-05-2022 om 18:11 [+0200]:
> +(define intel64-linux
> +  (platform
> +   (target "x86_64-linux-gnu")
> +   (system "x86_64-linux")
> +   (linux-architecture "x86_64")))

Nitpick: the original spec was written by AMD and also implemented by
VIA according to Wikipedia.  It's not tied to only Intel.  More neutral
would be x86-64-linux.  Also, this could be confused with the ia64
architecture (albeit not currently supported by Guix).

Also, we have two sets of platform modules: the ‘architecture’ modules,
and the ‘kernel’ module arm.scm.  Maybe that can be simplified now by
moving the Hurd platforms (currently only i586-pc-gnu) to intel.scm (or
maybe: x86.scm, or just platforms.scm, see other reply)?

Greetings,
Maxime.
Maxim Cournoyer May 22, 2022, 1:39 a.m. UTC | #3
Hi,

Maxime Devos <maximedevos@telenet.be> writes:

> Mathieu Othacehe schreef op za 07-05-2022 om 18:11 [+0200]:
>>  						\
>>    %D%/platforms/arm.scm		                \
>>    %D%/platforms/hurd.scm	                \
>> +  %D%/platforms/intel.scm	                \
>> +  %D%/platforms/mips.scm	                \
>> +  %D%/platforms/powerpc.scm	                \
>> +  %D%/platforms/riscv.scm	                \
>> +  %D%/platforms/s390.scm	                \
>
> I'm wondering, these files are all rather tiny, why not define all the
> standard platforms directly in gnu/platforms.scm?

I also pondered about this; no big deal, but is there a reason for this
"extendable/dynamic" scheme where someone could drop new platform
modules and have them recognized?  I suppose having things a bit less
dynamic could make navigating the code easier with Geiser (and humans).

What do you think?

Maxim
Mathieu Othacehe May 22, 2022, 1:01 p.m. UTC | #4
Hello Maxime,

> I'm wondering, these files are all rather tiny, why not define all the
> standard platforms directly in gnu/platforms.scm?

The rationale is that users should be able to extend the system by
defining new platforms in their custom channels. It is also in line with
what's proposed by the (gnu bootloader) and (gnu system images) modules.

Now I agree that it makes a lot of tiny files that won't probably grow
much. Maybe we could keep the extensibility thing with a unique
platforms.scm file defining all the supported platforms.

I propose to move forward but to keep that in mind.

Thanks,

Mathieu
Mathieu Othacehe May 22, 2022, 1:02 p.m. UTC | #5
Hey,

> Nitpick: the original spec was written by AMD and also implemented by
> VIA according to Wikipedia.  It's not tied to only Intel.  More neutral
> would be x86-64-linux.  Also, this could be confused with the ia64
> architecture (albeit not currently supported by Guix).
>
> Also, we have two sets of platform modules: the ‘architecture’ modules,
> and the ‘kernel’ module arm.scm.  Maybe that can be simplified now by
> moving the Hurd platforms (currently only i586-pc-gnu) to intel.scm (or
> maybe: x86.scm, or just platforms.scm, see other reply)?

You're right, I went for x86.scm and merged the hurd.scm module inside
it.

Thanks,

Mathieu
Mathieu Othacehe May 22, 2022, 1:12 p.m. UTC | #6
Hey,

> I also pondered about this; no big deal, but is there a reason for this
> "extendable/dynamic" scheme where someone could drop new platform
> modules and have them recognized?  I suppose having things a bit less
> dynamic could make navigating the code easier with Geiser (and humans).
>
> What do you think?

I think that it's nice to keep this extendable mechanism so that users
can define their own bootloaders, images and now platforms in their
custom channels.

As I answered to Maxime, I'm not opposed to gather all those plaforms
definitions in a single file as a follow-up.

Mathieu
Maxim Cournoyer May 22, 2022, 1:42 p.m. UTC | #7
Hi Mathieu,

Mathieu Othacehe <othacehe@gnu.org> writes:

> Hey,
>
>> I also pondered about this; no big deal, but is there a reason for this
>> "extendable/dynamic" scheme where someone could drop new platform
>> modules and have them recognized?  I suppose having things a bit less
>> dynamic could make navigating the code easier with Geiser (and humans).
>>
>> What do you think?
>
> I think that it's nice to keep this extendable mechanism so that users
> can define their own bootloaders, images and now platforms in their
> custom channels.

OK, thanks for having confirmed the rationale.

> As I answered to Maxime, I'm not opposed to gather all those plaforms
> definitions in a single file as a follow-up.

I'm fine either way,

Thanks!

Maxim
diff mbox series

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index c100b97cc1..b8ce581a5d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -633,6 +633,11 @@  GNU_SYSTEM_MODULES =				\
 						\
   %D%/platforms/arm.scm		                \
   %D%/platforms/hurd.scm	                \
+  %D%/platforms/intel.scm	                \
+  %D%/platforms/mips.scm	                \
+  %D%/platforms/powerpc.scm	                \
+  %D%/platforms/riscv.scm	                \
+  %D%/platforms/s390.scm	                \
 						\
   %D%/services.scm				\
   %D%/services/admin.scm			\
diff --git a/gnu/platforms/intel.scm b/gnu/platforms/intel.scm
new file mode 100644
index 0000000000..ee9fe003a7
--- /dev/null
+++ b/gnu/platforms/intel.scm
@@ -0,0 +1,48 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu platforms intel)
+  #:use-module (gnu platform)
+  #:use-module (gnu packages linux)
+  #:use-module (guix records)
+  #:export (intel32-linux
+            intel64-linux
+            intel32-mingw
+            intel64-mingw))
+
+(define intel32-linux
+  (platform
+   (target "i686-linux-gnu")
+   (system "i686-linux")
+   (linux-architecture "i386")))
+
+(define intel64-linux
+  (platform
+   (target "x86_64-linux-gnu")
+   (system "x86_64-linux")
+   (linux-architecture "x86_64")))
+
+(define intel32-mingw
+  (platform
+   (target "i686-w64-mingw32")
+   (system #f)))
+
+(define intel64-mingw
+  (platform
+   (target "x86_64-w64-mingw32")
+   (system #f)))
diff --git a/gnu/platforms/mips.scm b/gnu/platforms/mips.scm
new file mode 100644
index 0000000000..84a492699d
--- /dev/null
+++ b/gnu/platforms/mips.scm
@@ -0,0 +1,29 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu platforms mips)
+  #:use-module (gnu platform)
+  #:use-module (gnu packages linux)
+  #:use-module (guix records)
+  #:export (mips64-linux))
+
+(define mips64-linux
+  (platform
+   (target "mips64el-linux-gnu")
+   (system "mips64el-linux")
+   (linux-architecture "mips")))
diff --git a/gnu/platforms/powerpc.scm b/gnu/platforms/powerpc.scm
new file mode 100644
index 0000000000..8fadfe88de
--- /dev/null
+++ b/gnu/platforms/powerpc.scm
@@ -0,0 +1,36 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu platforms powerpc)
+  #:use-module (gnu platform)
+  #:use-module (gnu packages linux)
+  #:use-module (guix records)
+  #:export (powerpc-linux
+            powerpc64le-linux))
+
+(define powerpc-linux
+  (platform
+   (target "powerpc-linux-gnu")
+   (system "powerpc-linux")
+   (linux-architecture "powerpc")))
+
+(define powerpc64le-linux
+  (platform
+   (target "powerpc64le-linux-gnu")
+   (system "powerpc64le-linux")
+   (linux-architecture "powerpc")))
diff --git a/gnu/platforms/riscv.scm b/gnu/platforms/riscv.scm
new file mode 100644
index 0000000000..29a34402a2
--- /dev/null
+++ b/gnu/platforms/riscv.scm
@@ -0,0 +1,29 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu platforms riscv)
+  #:use-module (gnu platform)
+  #:use-module (gnu packages linux)
+  #:use-module (guix records)
+  #:export (riscv64-linux))
+
+(define riscv64-linux
+  (platform
+   (target "riscv64-linux-gnu")
+   (system "riscv64-linux")
+   (linux-architecture "riscv")))
diff --git a/gnu/platforms/s390.scm b/gnu/platforms/s390.scm
new file mode 100644
index 0000000000..c8caafbe45
--- /dev/null
+++ b/gnu/platforms/s390.scm
@@ -0,0 +1,29 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu platforms s390)
+  #:use-module (gnu platform)
+  #:use-module (gnu packages linux)
+  #:use-module (guix records)
+  #:export (s390x-linux))
+
+(define s390x-linux
+  (platform
+   (target "s390x-linux-gnu")
+   (system "s390x-linux")
+   (linux-architecture "s390")))