Merge branch 'catalyst-spec-man-page' into catalyst_2
[catalyst.git] / TODO
diff --git a/TODO b/TODO
index 21fb38628d47c382c2141d8c63d6f5bc9b8b9ac2..bebdec777faed51ea24a531474327c2de5edb61e 100644 (file)
--- a/TODO
+++ b/TODO
@@ -7,191 +7,77 @@ be filed at http://tinyurl.com/79slrk (http://bugs.gentoo.org) under the
 Catalyst component.
 
 Global:
-- remove spec_prefix from all exported variables (DONE)
+- Remove spec_prefix from all exported variables
   - variables without spec_prefix are global and used in all targets
   - variables with spec_prefix only apply to that target
-- add multiple target support for spec files (DONE)
+- add multiple target support for spec files
   - target: stage1
   - targets: stage1 stage2 stage3 stage4 livecd netboot
-- add more validation and checking to code
-  - allow configuration globally (catalyst.conf), per-spec, or per-target
+- add more validation and checking for code which affects both host and target
   - setup defaults if host isn't configured
-  - do not assume end-user is a Release Engineer/Developer
-    - fallback to defaults on invalid options, by default (opt-out)
-    - more verbose error reporting to assist in troubleshooting problems
-  - perform verifications before starting processing
-    - referenced files exist
-    - seed has required components for building
-- support new portage features
-  - cache backends
+  - allow configuration globally (catalyst.conf), per-spec, or per-target
+  - ccache
+    - check host settings (size, location, etc) and restore them when done
+  - distcc
+    - check host settings (distcc_hosts, etc) and restore them when done
+  - icecream
+    - check host settings (icecream_hosts, etc) and restore them when done
+- add support for new portage features
+  - Cache backends
     - metadata_overlay (portage default in 2.1.6)
-    - sqlite
-  - jobs
-  - load average
-  - dependency checking
-    - --deep
-    - --complete-graph
-    - --with-bdeps y (Build-time dependencies)
+       - sqlite
+  - Jobs
+  - Load Average
+  - Dependency checking
+    - Deep checking
+       - Complete Graph
+       - Build-time dependencies
   - USE changes
-    - --newuse
-    - --reinstall changed-use
-  - failure detection
-    - --keep-going
-    - --resume --skipfirst
+    - newuse versus changed-use
+  - Failure detection
+    - Add --keep-going support
 - detect GCC version in seed stages for supported settings (CFLAGS)
-- add statistics gathering/reporting
-  - counters
-    - sessions started/completed/failed
-    - targets started/completed/failed (and per-subarch here, too)
-    - sessions/targets run-time, CPU/RAM/disk usage (max and final)
-  - guages
-    - sessions/targets active
-    - caching information
-      - packages/stages/snapshots in respective caches
-      - cache hit ratio/percent
-      - cache age
-    - timing information
-      - currently-running jobs
-      - specific tasks
-        - dependency calculation
-        - unpacking seeds
-  - easily retrievable (text files? BDB? SQLite? configurable?) for monitoring
-- enhance support for catalystrc
-  - source before each build step
-  - more like /etc/portage/bashrc or profile.bashrc
-  - adds ability for user-defined hooks
 
 Config:
 - security
-  - automated signing
-  - security updates
+  - sign materials automatically
 - logging
-  - add logging support (partially done through use of catalyst.output.msg())
+  - add logging support
     - file-based
-    - syslog
+       - syslog
   - add notification capabilities
     - email
-    - snmp trap
-- seperate catalyst options from the package manager options
-  - options key should specify catalyst options only
+       - snmp trap
+- separate out options that control catalyst versus the package manager
+  - options key should specify catalyst options
   - new keys for package managers
     - portage_features
-    - pkgcore_features
-- clean up mixed host/target options
-  - save/restore host settings
-    - ccache (size, location, etc)
-    - distcc (distcc_hosts, allowed, logging, etc)
-    - icecream (icecream_hosts, etc)
-- add options to update the caches/seeds before processing targets
-  - validate caches, update as necessary
-  - trust caches to be accurate
-  - update packages in seed
-    - no updates
-    - minimal updates (toolchain and dependencies, basically)
-    - update world
+       - pkgcore_features
 
 Targets:
-- add support for livedvd/liveusb
+- add support for livedvd
   - do we use livecd/type or something new
-  - perform automatic actions, if configured
-    - auto-fetch non-target materials
-      - snapshots
-      - distfiles
-      - stages
-        - local absolute or relative path
-        - support URIs
-          - absolute URI path
-          - base URI path
-        - allow tarball names to be derived from target name
-    - create a default user
+  - make livedvd type perform several actions automatically, if configured
+    - auto-fetch distfiles
+       - automatically pull stages
+         - local disk via absolute or relative path
+         - URI
 - change user creation to be more flexible
   - stage4 and netboot support
 - build boot software for targets on-demand
   - removes cdtar requirement
   - allows one to specify multiple bootloaders
     - boot/loader: grub elilo
-    - netboot/boot/loader: pxelinux elilo
-    - livecd/boot/loader: isolinux elilo
+       - netboot/boot/loader: pxelinux elilo
+       - livecd/boot/loader: isolinux elilo
   - add ability to specify other "bootables" to build/install, like memtest86+
-    - do we use a single spec key or multiple?
-      - single
-        - boot/image: memtest|/path/to/image (pre-built, label=memtest)
-        - livecd/boot/image: memtest86+ (use PM to build)
-        - livecd/boot/image: memtest|build-memtest86+ (use PM, change label)
-        - livecd/boot/image: memtest|auto (locate in cache, try build, fail)
-      - multiple
-        - livecd/boot/labels: gentoo gentoo-nofb gentoo-nodetect memtest
-        - livecd/boot/image: gentoo gentoo gentoo memtest86 ("kernel" line)
-        - livecd/boot/opts: default default default,nodetect none
-    - do we also need a way to specify an initrd with this?
-  - setup defaults for each arch
-    - allow user-defined overrides/adds
-    - verify usability on arch
+       - livecd/boot/image: memtest|/path/to/image
+       - do we also need a way to specify an initrd with this?
 - add variable support for spec files
   - automatic substitution
     - %DATESTAMP%
-    - %BUILDDIR%
+       - %BUILDDIR%
   - user-defined
     - %DISTRIBUTION%
-    - %AUTHOR%
-- add new targets
-  - system (proof of concept)
-    - aligned with current stage3, but has all lower-level work done (toolchain)
-      - mkdir -p /tmp/stage3root/etc
-      - cp -a /etc/make.conf /etc/make.globals make.profile /tmp/stage3root/etc/
-      - ROOT=/tmp/stage3root PORTAGE_CONFIGROOT=/tmp/stage3root
-      - USE=build emerge -O1 baselayout
-      - emerge system
-      - eat cake
-  - world
-    - stage4 work-a-like
-  - all-stages
-    - perform stages 1, 2, and 3 (and 4?)
-  - all-images
-    - perform all-stages, if necessary
-    - build all image types
-      - LiveCD
-      - LiveDVD
-      - LiveUSB
-      - NetBoot
-        - standalone
-        - nfsroot
-- merge livecd-stage1 and livecd-stage2 into livecd target
-  - do we add targets for other live (LiveDVD, LiveUSB, LiveNet) media?
-- add support for multiple userland images on a single media
-  - 32-bit and 64-bit kernels/userlands
-  - multiple arches/ABIs
-  - normal and debug kernels/userlands
-- perform fetches before builds
-- smarter auto-resume/caching
-  - record file/dir metadata (such as for portage_confdir) to invalidate autoresume
-  - one failed autoresume invalidates all remaining autoresume points
-  - store failure info
-    - attempt normal --resume or equivalent auto-resume
-    - remove object from seed/package caches
-      - try --resume then --skipfirst to continue
-    - attempt to resolve issue, where possible
-      - merge failing package individually
-      - again with unset MAKEOPTS
-  - detect optional changes
-    - CFLAGS/LDFLAGS/etc
-  - reduce duplicated cache files
-    - shared caches, where possible
-    - symlinks
-    - hard links
-- include livecd-tools functionality
-  - userspace device enumeration/configuration
-    - pre-defined hardware information for OEM/VAR machines
-    - detect/setup network
-      - on-line updating support
-        - driver modules
-        - kernel (via kexec) when possible
-        - hardware definitions
-    - video detection/setup
-    - use hald/dbus to help standardize
-  - media-specific fixups
-    - opengl configuration
-    - auto-login on consoles
-      - setup serial console
-    - prevent rc system from unmounting incorrectly
+       - %AUTHOR%