If you have so many ideas you should go ahead and start your own
project.  Good luck building a successfull project based on 'ideas'.

I'm not even going to read to the end.

> I am somewhat new to OpenBSD but not systems and/or
> systems programming as a whole.  Please excuse any errors
> I may have made in my observations and desires.  Please
> also feel free to pick and choose between the aspects of
> this that appear to be valuable.  (I can provide my versions
> of the scripts indicated below if that is of assistance however
> many of these may be obvious in their content to experienced
> OpenBSD people that follow this group. These scripts may be
> missing some desirable error checking code)
> 
> Security is one of the stated objectives of OpenBSD yet the current
> build process appears to be difficult to secure largely because the
> build directories are numerous and mixed in with directories for
> general machine operation. (also difficult to backup/restore if the
> user desires to maintain multiple machine configurations using this
> process.  While the content of these directories is publicly
> available, the specific contents for each configuration is NOT
> as are the security requirements to protect the contents for EACH
> SPECIFIC configuration.  The directories for many of the operations
> appear to be "hard coded" in some of the make scripts to specific
> directories.  I even experienced indications that the directory /CVS
> seems to be assumed to be a repository that can not be used for
> checkout, in my various attempts to do this with the existing code base.
> 
> My suggestion for improvement and simplification include maintaining
> a completely separate directory structure(s) for the build process
> from normal machine operation. See below for hierarchy and
> description:
> 
> /bld                      root directory for build operation
>                                    (no data this directory/mount only other
>                                     directories except for the
>                                           shell scripts and logs)
> /bld/sh                 shell scripts to complete various build processes
>                                 (see list below)
> /bld/sh/log            location to store logs from build scripts
>                                  from the following basic command
>                                          sh build_script 
>  >log/build_script.log
> /bld/sh/logrlse?     release version of the logs for diff compare
> /bld/sh/logprior?   prior version of the logs for diff compare
> /bld/cvs                (no data in this directory)
> /bld/cvs/src          (src.tar.gz          current /usr/src)
> /bld/cvs/src/sys    (sys.tar.gz          current /usr/src/sys)
> /bld/cvs/ports       (ports.tar.gz       current /usr/ports)
> /bld/cvs/xenocara (xenocara.tar.gz current /usr/xenocara)
> /bld/obj                (no data in this directory)
> /bld/obj/kernel?    (kernel obj         current ?)
> /bld/obj/userland  (userland obj      current /usr/obj)
> /bld/obj/xenocara (xenocara obj     current /usr/xobj))
> /bld/dest/              (no data in this directory)
> /bld/dest/userland  (output              current /usr/dest)
> /bld/dest/xenocara (output              current /usr/xdest?)
> /bld/rlse                 (no data in this directory)
> /bld/rlse/src           (*.tar.gz for cvs_preload(, etc - /bld/sh?))
> /bld/rlse/{ver}/{arch}   release binary files
> 
> I imagine in the above directory structure only /bld/rlse/... would be
> optionally required to grant outside read access for tasks like NFS
> or HTTP or FTP, etc.  (Perhaps the /bld/rlse directory should be
> named /rlse for that reason alone}. 
> 
> The remaining directories would be tied to root access only with
> appropriate sudo setup for a user to perform the necessary tasks.
> none of these have been created and I would need to do some
> real research to achieve any of these scripts as defined. The user,
> if specified in the install should be setup with the appropriate sudo
> rights as part of the install.
>     ie. it would be nice if you could
>         sudo build {script)
>         and have the above command execute in one task
>                  sh /bld/sh/{script} >/bld/sh/log/{script}.log
>         and in another task tied to the console window
>                  tail -f  /bld/sh/log/{script}.log
>                  with this task returning the command prompt
>                      upon closing of the log file (based on the
>                      end of the first task).
> 
>         sudo log {script} {log | logrlse | logprior} {file}
>         would be used to copy
>                /bld/{log | logrlse | logprior}/{script}.log
>                to a user accessible file -- to edit and/or 
>                submit as documentation for errors
>                requiring assistance.
> 
>        sudo diff {flags} {script} {logrlse | logprior}
>              diff {flags} /bld/sh/log/{script}.log  \
>                   /bld/sh/{logrlse | logprior}/(script}.log
> 
> note based on the above
>      sh /bld/sh/{script} >/bld/sh/log/(script).log
> does not currently place all messages into the log file some
> continue to appear on the console -- another item that would
> need to be changed. (cvs is one of the offenders here -- I am
> not sure if this is reasonably possible to change).
> 
> PS automated error checking for OpenBSD staff could be possible
> by processing diff against various versions of the log files as changes
> are made to the source(s).  Likewise for the users to check the initial
> install if the logs are included on the full install CD as noted.  Scripts
> could be added to perform the diff operation on script content -
> a second log directory logrlse and a third logprior may be desirable
> in /bld/sh to support this function.)  This process would address
> questions about errors in the build process by those trying to debug
> errors -- eliminating those classed as acceptable and highlighting
> those that are significant on most occasions.
> 
> 
> I like mount points for the following based on the above config
> (I would also allocate them in the following order as /bld/rlse is more
> likely to be used for non build purposes
>     - optimize arm motion on the disk))
> 
> The estimates below could be revised or added to document
> requirements for the complete build of OpenBSD with most/
> all ports extracted.
>                             Current estimate of size
> Mount Point          50% utilization for -stable
> /bld/rlse                (1792m)
> /bld/dest               (1792m)
> /bld/cvs/src/sys     (256m)
> /bld/obj                (2560m)
> /bld/cvs                (3580m)
> 
> I suggest slices l - p for these. 
> 
> Note because
>       cd /bld/cvs/sys
>       tar cvzfX /bld/rlse/src/src.tar.gz
> does not exclude the sys subdirectory
>       (note mount point above)
>       so I wrapper the commands with
>              umount /dev/{?}
>              cd /bld/cvs/src
>              tar cvzf /bld/rlse/src/src.tar.gz
>              mount /dev/{?} /bld/cvs/src/sys)
> 
> I have created all of the following scripts except as noted
> and could probably create the remaining scripts --
> however I have had problems noted above in making this
> work.
> 
> Script on current install CD (release, stable or custom)
> install_rlse  - copies /mnt/{ver}/{arch} from CD
>                            to /bld/rlse/{ver}/{arch}
>                   - this may not be desirable
>                           (opinions anyone?)
> 
> Script on new source CD (release, stable or custom)
> CD contents    - script install_src (see below)
>                        - /bld/sh or sh.tar.gz (shell scripts (and logs?))
>                        - /bld/rlse/src (*.tar.gz - various sources)
> install_bld        - copies /mnt/src from CD
>                                  to /bld/rlse/src
>                         - copies from /mnt/sh or
>                                      tar extract from sch.tar.gz
>                                   to /bld/sh
> 
> /bld/sh   probable scripts in stated processing order
> 
> tune_bld  - sets average file size to 8192? for
>                        /bld/dest
>                        /bld/cvs/src/sys,
>                        /bld/obj,
>                        /bld/cvs,
>                 - should be edited as appropriate for
>                        the user's installation
> 
> cvs_preload  - tar extract from /bld/rlse/src
>                                             to /bld/cvs ... as appropriate
>                      - edit as desired
> 
> cvs_checkout - checkout of the CVS source to /bld/cvs
>                       - edit for anoncvs server
>                       - edit for directories
> 
> cvs_update    - update of the CVS source to /bld/cvs
>                       - edit for anoncvs server
>                       - edit for directories
> 
> bld_kernel      - build a new kernel
> 
> install_kernel   - install new kernel
> 
> {reboot}
> 
> bld_userland    - build userland
> 
> bld_release      - construct release components for userland
> 
> chk_release      - check the userland release
>                         - create index.txt
> 
> bld_xenocara   - build xenocara (X)
> 
> bld_releasex     - construct release components for xenocara
>                         - create updated index.txt
> 
> src_release       - construct release sources
>                                     for existing release components
>                         - (backup / transfer)
>                         - edit for /dev/? unless tar X or another
>                                 option can do this.
>                         - create index.txt
> 
> (I have not created these yet, but I probably could, if desired)
> 
> clear_shlogs      - rm -rf /bld/sh/log/*
> 
> copy_shlogs      - copy /bld/sh/log to /bld/sh/logprior
> 
> (all of the following could reflect specific user configurations
>  of OpenBSD for various machine propagations.)
> 
> iso_net_release  - create a networked ISO for release binaries
> 
> iso_full_release  - create a full ISO for release files, etc
>                          - include /bld/sh/logrlse or
>                                        logrlse.tar.gz
>                                (shell scripts and logs - if space allows)
> 
> iso_source        - create an ISO of source tar files, etc
>                         - includes shell scripts (and logs?) /bld/sh
> 
> burn_net_release - burn the network ISO - backup, etc
> 
> burn_full_release - burn the full ISO - backup, etc
> 
> burn_source        - burn the source ISO - backup, etc
> 
> 
> There could even be a DVD ISO that contains both the release
>     (or stable or custom (pkg or code)) binaries, sources and logs. 
> 
> Thanks for reading this.  I hope it is considered valuable.

Reply via email to