On this page:
11.1 Manifest structs
checksum
pathcheck
submanifest
data
dist
aux
manifest
11.2 Manifest conversion
manifest->string
port->manifest
string->manifest
8.12

11 Manifest🔗ℹ

 (require pmsf/manifest) package: pmsf-manifest

PMSF Manifest structures and support utilities implementation is primarily based on the GLEP 74 document.

11.1 Manifest structs🔗ℹ

 (require pmsf/manifest/struct) package: pmsf-manifest

struct

(struct checksum (algorithm sum)
    #:extra-constructor-name make-checksum
    #:transparent)
  algorithm : string?
  sum : string?

Example:
> (checksum "BLAKE2B" "7ff24aa2e16a")

(checksum "BLAKE2B" "7ff24aa2e16a")

struct

(struct pathcheck (path size checksums)
    #:extra-constructor-name make-pathcheck
    #:transparent)
  path : path-string?
  size : exact-nonnegative-integer?
  checksums : (listof checksum?)

Example:
> (pathcheck "file" 0 '())

(pathcheck "file" 0 '())

struct

(struct submanifest pathcheck ()
    #:extra-constructor-name make-submanifest
    #:transparent)

Example:
> (submanifest "app-accessibility/Manifest"
               14821
               (list (checksum "SHA256" "1b5f")
                     (checksum "SHA512" "f7eb")))

(submanifest

 "app-accessibility/Manifest"

 14821

 (list (checksum "SHA256" "1b5f") (checksum "SHA512" "f7eb")))

struct

(struct data pathcheck ()
    #:extra-constructor-name make-data
    #:transparent)

Example:
> (data "SphinxTrain-1.0.8.ebuild"
        912
        (list (checksum "SHA256" "f681")
              (checksum "SHA512" "0749")))

(data

 "SphinxTrain-1.0.8.ebuild"

 912

 (list (checksum "SHA256" "f681") (checksum "SHA512" "0749")))

struct

(struct dist pathcheck ()
    #:extra-constructor-name make-dist
    #:transparent)

Example:
> (dist "sphinxtrain-1.0.8.tar.gz"
        8925803
        (list (checksum "SHA256" "548e")
              (checksum "SHA512" "465d")))

(dist

 "sphinxtrain-1.0.8.tar.gz"

 8925803

 (list (checksum "SHA256" "548e") (checksum "SHA512" "465d")))

struct

(struct aux pathcheck ()
    #:extra-constructor-name make-aux
    #:transparent)
For backwards compatibility.

See GLEP 74 "Deprecated Manifest tags".

Example:
> (data "files/gcc34.patch"
        333
        (list (checksum "SHA256" "c107") (checksum "SHA512" "9919")))

(data

 "files/gcc34.patch"

 333

 (list (checksum "SHA256" "c107") (checksum "SHA512" "9919")))

struct

(struct manifest (timestamp ignore submanifests data dist aux)
    #:extra-constructor-name make-manifest
    #:transparent)
  timestamp : date?
  ignore : (listof path-string?)
  submanifests : (listof submanifest?)
  data : (listof data?)
  dist : (listof dist?)
  aux : (listof aux?)

Examples:
> (manifest (date* 12 11 10 30 10 2017 1 302 #f 3600 0 "")
            '("distfiles" "local" "lost+found" "packages")
            (list (submanifest "app-accessibility/Manifest"
                               14821
                               (list (checksum "SHA256" "1b5f")
                                     (checksum "SHA512" "f7eb")))
                  (submanifest "eclass/Manifest.gz"
                               50812
                               (list (checksum "SHA256" "8c55")
                                     (checksum "SHA512" "2915"))))
            '()
            '()
            '())

(manifest

 (date* 12 11 10 30 10 2017 1 302 #f 3600 0 "")

 '("distfiles" "local" "lost+found" "packages")

 (list

  (submanifest

   "app-accessibility/Manifest"

   14821

   (list (checksum "SHA256" "1b5f") (checksum "SHA512" "f7eb")))

  (submanifest

   "eclass/Manifest.gz"

   50812

   (list (checksum "SHA256" "8c55") (checksum "SHA512" "2915"))))

 '()

 '()

 '())

> (manifest #false
            '()
            '()
            (list (data "SphinxTrain-1.0.8.ebuild"
                        912
                        (list (checksum "SHA256" "f681")
                              (checksum "SHA512" "0749")))
                  (data "metadata.xml"
                        664
                        (list (checksum "SHA256" "97c6")
                              (checksum "SHA512" "1175")))
                  (data "files/gcc34.patch"
                        333
                        (list (checksum "SHA256" "c107")
                              (checksum "SHA512" "9919"))))
            (list (dist "sphinxtrain-1.0.8.tar.gz"
                        8925803
                        (list (checksum "SHA256" "548e")
                              (checksum "SHA512" "465d"))))
            '())

(manifest

 #f

 '()

 '()

 (list

  (data

   "SphinxTrain-1.0.8.ebuild"

   912

   (list (checksum "SHA256" "f681") (checksum "SHA512" "0749")))

  (data

   "metadata.xml"

   664

   (list (checksum "SHA256" "97c6") (checksum "SHA512" "1175")))

  (data

   "files/gcc34.patch"

   333

   (list (checksum "SHA256" "c107") (checksum "SHA512" "9919"))))

 (list

  (dist

   "sphinxtrain-1.0.8.tar.gz"

   8925803

   (list (checksum "SHA256" "548e") (checksum "SHA512" "465d"))))

 '())

11.2 Manifest conversion🔗ℹ

 (require pmsf/manifest/convert) package: pmsf-manifest

procedure

(manifest->string input-manifest)  string?

  input-manifest : manifest?

Example:
> (manifest->string (manifest #false
                              '()
                              '()
                              (list (data "metadata.xml"
                                          664
                                          (list (checksum "SHA256" "97c6")
                                                (checksum "SHA512" "1175"))))
                              '()
                              '()))

"DATA metadata.xml 664 SHA256 97c6 SHA512 1175"

procedure

(port->manifest input-port)  manifest?

  input-port : input-port?

procedure

(string->manifest input-string)  manifest?

  input-string : string?

Example:
> (string->manifest "DATA metadata.xml 664 SHA256 97c6 SHA512 1175")

(manifest

 #f

 '()

 '()

 (list

  (data

   "metadata.xml"

   664

   (list (checksum "SHA256" "97c6") (checksum "SHA512" "1175"))))

 '()

 '())