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%