A snowball is simply a tarball containing a single directory, with any number of programs, libraries or data files therein. Links to these files come from the external repository meta data, but for simplicity when you create a snowball with
(package ;; The name of a package uses the same namespace as the library names. ;; If the package name is not provided, then the package can only be ;; referred to by the individual library names in the package. (name (wonderland)) ;; The URL points to a tarred, gzipped file containing a single ;; directory - any other format is invalid. Only available from ;; repository info. ;; All path references below are relative to that directory. (url "http://www.wonderland.org/repo/cheshire-cat.tgz") ;; The size of the package tarball in bytes, for information prior ;; to downloading and as an additional checksum (since this is ;; a checksum this refers to the size of the unzipped tarball). (size 1234) ;; A package can contain zero or more signatures. Each signature ;; contains the identity of a publisher as registered with reg-key, ;; and an RSA signature of one or more of the checksums as hex strings. ;; Due to speed concerns generating and verifying signatures is ;; disabled by default. (signature (email "email@example.com") (digest sha-256) (sha-256 "0123...") (rsa "0123...")) ;; Packages may contain any number of libraries. (library ;; Every library _must_ have a name. (name (wonderland cheshire cat)) ;; Each library must point to a single library description file ;; within the tarball. It is an error if this path is absolute. ;; The extension has no specific meaning and can be chosen at will, ;; so it is up to install tools to convert as needed for ;; host Scheme implementations. (path "cheshire/cat.sch") ;; A list of libraries which are required to install the given ;; library - installation tools should determine and install the ;; transitive closure of dependencies when any library is ;; installed. (depends (scheme base) (srfi 1) (rabbit holes)) ;; List of phases this library is used for, where <phase> can be any ;; of final, build or test. The default is just install. If used by other ;; phases, this library will be installed in a temporary location for use ;; during the given phase. (use-for final) ;; Program containing tests to run before installing this library. ;; The program should exit with a success value (0 on POSIX systems) ;; if all tests pass. On failure it should either exit otherwise, ;; or output either "ERROR" or "FAIL". Tools should fail or warn ;; before installing libraries for which any tests fail. (test "path/to/test-program.scm") ;; A list of author names, optionally with email addresses. (authors "Charles Dodgson") ;; A list of maintainers if different from the authors. (maintainers "Alice Caroll <firstname.lastname@example.org>") ;; A URL pointing to the manual for the library. (manual "manual.html") ;; A short description of the library. (description "...") ;; A license as a symbol, e.g. ;; * gpl2 ;; * gpl3 ;; * lgpl ;; * mit ;; * bsd ;; * artistic ;; * apache ;; * public-domain (licenses 'bsd) ;; Current version string. (version "1.2.3")) ;; A program has all the same fields as a library, except the name ;; is optional, and the path indicates a file containing a single ;; top-level program to install in a binary directory. A package ;; can contain a mix of programs and libraries. (program ...) ;; A package can also contain data files, installed relative to ;; the library files. (data-files "data1.dat" "data2.dat"))
The original Snow2 specification describes many features not yet implemented by clients.