Layout of the Poplog forest - GetPoplog/Seed GitHub Wiki

The Poplog-forest consists of three "trees" (it's a small forest, admittedly):

  • The core Poplog system, which is housed in $usepop/pop and should be versioned
  • The folders used for unstructured add-ons, $poplocal/local
  • The user's personal add-on folder, $poplib

This page describes the current plan for laying out these folders. As we get more serious about the package structure, we will almost certainly need to add a 4th tree to our forest for post-install add-ons, so we can cope with installations on read-only systems (e.g. appImage and snap).

The base installation's Poplog-tree

Each tree has three significant locations. There's no standard names for these so in this document we call them the prefix, the home and the content. The home acts as the parent to one or more versions of the content. So if Poplog is installed in /opt/poplog then

  • the prefix is /opt
  • the home is /opt/poplog
  • the content is /opt/poplog/current_usepop (there may be multiple versions)

The structure of the base Poplog-tree is as follows:

$PREFIX                                - prefix, default /opt
    poplog/                            - home
        current_usepop -> V16
        V16/                           - content (versioned)
            pop/
                com/...
                doc/...
                lib/
                    auto/...
                    lib/...
                    include/...
                    psv/...            - poplog saved images
                    <more> 
                lisp/...               - Common Lisp
                obj/...
                packages/...
                plog/...               - Prolog
                pml/...                - Standard ML
                pop/...
                ref/...
                src/...
                teach/...
                ved/...
                x/...

The $poplocal tree

The $poplocal tree is used for system-wide extensions to the base installation. This tree is much less elaborate than the base. GetPoplog has a different default location for this tree, as explained here. GetPoplog also places $poplocalbin within this tree.

$PREFIX/                                - prefix, default /opt
    poplocal                            - home [*]
        local                           - content
            init.p
            vedinit.p
            auto/                       - $poplocalauto
            psv/                        - $poplocalbin [*]

N.B. As part of GetPoplog, we plan to flesh out this structure a little bit more to include lib and help folders at least. Further expansion will wait until we tackle standardising packages.

The personal $poplib tree

This is the most reduced of the trees.

$HOME                               - home, prefix not relevant
    $poplib/                        - content, default ~/.poplog [*]
        init.p
        vedinit.p
⚠️ **GitHub.com Fallback** ⚠️