* maybe use apt ^ trick to install tasks * Add option --dirty-licensing (and deprecate option --nonfree) * Add option --dirty-config (and skip tweaks if unset) * Add option --dirty * Include report with/in generated material, including dirt warnings * Only optionally (not by default) include tweaks. * Include README on whether it is a Debian Blend or Debian Pure Blend. * Isolate package auto-install flagging only relevant for upgrades. * Modernize package auto-install flagging to call "apt-mark minimize-manual". * Fail (or optionally warn) if both installing and avoiding a package. * Handle bugs as parameters, and extend data documentation. * Resolve default suite from system, favored over hardcoded string. * Resolve named suites (e.g. stretch) from relative (e.g. testing). * Resolve fallback to stabler suite when known less stable is missing + oldoldstable < oldstable < stable < testing < unstable < experimental + foo < foo-security < foo-updates < foo-backports * Resolve suite from addon, and extend apt sources to include addon + foo-security + foo-updates + foo-backports * Resolve suite from snapshot, and tweak apt sources to only use snapshot * Support passing suite as URL, and then extract apt protocol too * Use Throwable with Moo, and else Exception::Class or failures (not Carp) * Use IPC::PrettyPipe * Introduce compose option --nodepath (and maybe deprecate --nodedir) + nodepath is colon-separated lookup list for node + dirs without *.yml files are silently skipped + default nodepath is environment variable BOXER_NODE_PATH + BOXER_NODE_PATH internal default is .:${XDG datadir + suite/nodes} * Resolve skeleton template variables in Boxer::File::WithSkeleton (not in Boxer::Task::Serialize). * Introduce compose option --style with default "preseed,script", and warn if omitted that the option will become mandatory + Deprecate compose formats preseed script. + Deprecate skeleton template variable tweaklist. * Introduce compose style bootstrap + Include skeleton files for debootstrap, multistrap, mmdebstrap, bdebstrap. Initial release: * Reimplement commands and classes from current make-based boxer: + install + Bootstrap::Multistrap + Install::Device Later releases... * Use Object::Remote + Add subclass to use Rex::Inline + Add subclass to use debootstrap/cdebootstrap/multistrap * Limit coercion and type checks * Implement additional commands and classes to create a system: + bless + Bootstrap::Debootstrap + Bootstrap::Live-build + Bless::Extlinux * Implement commands and classes to interact with an existing system: + refresh + detect + distill * Implement commands and classes to interact with config classes: + list + enable + disable * Implement commands and classes to echange config classes: + push + pull + publish * Implement trojan" functionality for install and bless classes, to embed as trigger unfolding at first boot in target environment. * Implement alternate CLI shim tools which mimic conventional tools, to bring boxer flexibility to existing unmodified scripts. * Implement web export and/or service usable with debian-installer for static/live boxer-driven "Hands-off" . * Implement commands and classes to interact with bug trackers: + triage * Implement PXE target - i.e. DHCP+TFTP services serving preseed file. + . + * Improve testsuite + Test implicit --skeldir (by setting ENV variable instead) * Check for items in both @pkgs and @pkgs_avoid + Fail by default + Warn and remove from @pkgs when --force misc. * Borrow boilerplate patterns from https://metacpan.org/pod/Sympatic * Maybe implement warning field. Examples: + Reference when including package unattended-upgrades. + Tweaking conffiles (known to fail later upgrade: See bug#311188). * Track unit testing code coverage: * Ask for node(s) interactively if not provided * But fail if not on an interactive terminal * Refactor modularity + Minimize dependencies of core binary package boxer - Introduce (and have core package recommend) binary package boxer-reclass + Add core option --features - Space-delimited feature sets, each colon, declared and comma-delimited - Each feature set shadows defaults of same feature set - Defaults: --features "gui-desktop:xfce gui-widgets:gtk3,gtk2,xfce" + Optionally store defaults compatible with apt-config - Introduce (and have core package recommend) binary package boxer-apt - boxer::Feature::ui "tui,gui,cli"; # wui - boxer::Feature::gui-widgets "xfce,gtk,sdl,wxgtk,xlib"; # mate,gnome,wx-gtk2,qt5,qt4,lxqt,kde,fltk,gnustep,glut,tk,athena,motif - boxer::Feature::gui-widgets::gtk "gtk3,gtk2" - boxer::Feature::gui-widgets::sdl "sdl2" # sdl1.2 - boxer::Feature::gui-widgets::xlib "xcb,xlib" - boxer::Feature::gui-protocol "x11" # wayland - boxer::Feature::tui-widgets "whiptail,dialog,newt,slang,cdk,ncurses,wxbase"; - boxer::Feature::script-lang "perl,python3"; # python2,tcl,ruby - boxer::Feature::network::attitude "extraverted"; # introverted - boxer::Feature::network::framework "systemd" # nm,ifupdown - Add commands to show/change features (similar to apt-mark?) + Have Boxer::World::Flat support dump, and others support load, of sets - Track features + Have Boxer cache Boxer::World::Flat set for system default features - Ship build-time generated default set with package boxer-apt - If non-flat world exist (e.g. boxer-reclass is installed), (re)generate and cache sets (and use only cache sets: ignore default set) - If only flat world exist and system features match features of default set, warn about missing package boxer-reclass and use default set - If only flat world exist and system features are different from features of default set, fail with error that features are customized and package boxer-reclass is needed to resolve them + Introduce pkg-exempt for conditional avoidance listing packages tolerating its avoidance to exclude if only tolerant packages recommend or depend on it + Introduce pkg-ban for unconditional avoidance to avoid e.g gpm on hardware without video console or libgl1 on GPU-less hardware too slow for software rendering + Deprecate pkg-avoid: ambiguous + Support tweaks prefix "in-target" and deprecrate "chroot /target"