In this thread [1], a user reports a problem when finding a partition by
its UUID in Guix. Another user answered the following:

#+BEGIN_QUOTE
The code responsible for that is in (gnu build file-systems).  It
currently recognizes only some file system types: ISO9660, ext2/3/4,
Btrfs, FAT32, FAT16, and JFS.
#+END_QUOTE

I confirmed that this is true because (uuid ...) returned the partition
when the file system type was EXT4, but it returned #f when the file
system type was EXFAT.

I was wondering how I could determine the supported file system types
when inspecting the source code at ./gnu/build/file-systems.scm
[2]. Answering this question on my own would have been useful if I
hadn't found the aforementioned thread in the mailing list archive and I
had needed to answer it on the fly.

By inspecting the source code at that file, I noticed a pattern and I
thought that searching all ocurrences of this regular expression could
answer that question:

#+BEGIN_EXAMPLE
^;;;.*file systems
#+END_EXAMPLE

I found these matches.

#+BEGIN_EXAMPLE
10 matches for "^;;;.*file systems" in buffer: file-systems.scm
     70:;;; check file systems.
    191:;;; Ext2 file systems.
    332:;;; Bcachefs file systems.
    395:;;; Btrfs file systems.
    449:;;; FAT32 file systems.
    491:;;; FAT16 file systems.
    518:;;; ISO9660 file systems.
    578:;;; JFS file systems.
    744:;;; NTFS file systems.
    786:;;; XFS file systems.
#+END_EXAMPLE

If I use this information for answering my question, then EXT2 is a
supported file system type, but how I could know that EXT3 and EXT4 is
also a supported file system type? Is it because when EXT2 is supported,
then it is highly likely that EXT3 and EXT4 is also supported?

[1] https://mail.gnu.org/archive/html/bug-guix/2020-04/msg00031.html
[2] https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/build/file-systems.scm

Reply via email to