1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
* maybe use apt ^ trick to install tasks
<https://askubuntu.com/q/252056>
* 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
<http://blogs.perl.org/users/joel_berger/2013/05/typetiny-rescues-moo.html#comment-1104703>
* 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" <http://www.hands.com/d-i/>.
* Implement commands and classes to interact with bug trackers:
+ triage
* Implement PXE target - i.e. DHCP+TFTP services serving preseed file.
+ <https://wiki.fogproject.org/wiki/index.php?title=IPXE>.
+ <https://wiki.fogproject.org/wiki/index.php?title=FOG_on_a_MAC>
* 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 <https://lists.debian.org/debian-boot/2018/05/msg00250.html>
when including package unattended-upgrades.
+ Tweaking conffiles
(known to fail later upgrade: See bug#311188).
* Track unit testing code coverage:
<https://stackoverflow.com/questions/533553/perl-build-unit-testing-code-coverage-a-complete-working-example>
* 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"
|