##(see the SpecSpec for an explanation) * '''Launchpad Entry''': [[https://blueprints.edge.launchpad.net/ubuntu-arm/+spec/arm-m-dpkg-wishlist/]] * '''Created''': * '''Contributors''': * '''Packages affected''': == Summary == This should provide an overview of the issue/functionality/change proposed here. Focus here on what will actually be DONE, summarising that so that other people don't have to read the whole spec. See also CategorySpec for examples. == Release Note == This section should include a paragraph describing the end-user impact of this change. It is meant to be included in the release notes of the first release in which it is implemented. (Not all of these will actually be included in the release notes, at the release manager's discretion; but writing them is a useful exercise.) It is mandatory. == Rationale == This should cover the _why_: why is this change being proposed, what justifies it, where we see this justified. == User stories == == Assumptions == == Design == You can have subsections that better describe specific parts of the issue. == Implementation == This section should describe a plan of action (the "how") to implement the changes discussed. Could include subsections like: === UI Changes === Should cover changes required to the UI, or specific UI that is required to implement this === Code Changes === Code changes should include an overview of what needs to change, and in some cases even the specific details. === Migration === Include: * data migration, if any * redirects from old URLs to new ones, if any * how users will be pointed to the new way of doing things, if necessary. == Test/Demo Plan == It's important that we are able to test new features, and demonstrate them to users. Use this section to describe a short plan that anybody can follow that demonstrates the feature is working. This can then be used during testing, and to show off after release. Please add an entry to http://testcases.qa.ubuntu.com/Coverage/NewFeatures for tracking test coverage. This need not be added or completed until the specification is nearing beta. == Unresolved issues == This should highlight any issues that should be addressed in further specifications, and not problems with the specification itself; since any specification with problems cannot be approved. == BoF agenda and discussion == === Discuss and prioritize dpkg work related to ARM target use cases === * files sections, e.g. man pages etc. to allow saving space on root fses by choosing to install only some sections * filters(/classes?) is intended to solve the same problem, and may be achieved more quickly - no binary format changes * Cpu/Endianness/Capabilities binary fields to avoid installing incompatible binaries from archives which are only compatible with some machines * new architectures: ARM EABI with hard-float, "generic" to try out new ports * multiarch, multiarch-cross * license tracking in packages * origin tracking (currently only in APT) File sections: probably not a good idea as it impacts the format of binary packages, another design based on filters exists and we'd be able to make immediate use of it (Neither filters nor file sections are implemented yet) === Filters === * Use file paths to define categories * Categories (filters) can be defined at runtime rather than at package build time * Consensus is that filters are good, nobody actively working on it though * Useful blog from Neil Williams? http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/25-dpkg-filtering.html === Capabilities === * Example: armv7 w/ neon vs. armv7 w/o neon * Anti-foot-shooting measure * Colin: if we're doing this in dpkg, we should have a similar syntax to hwcaps * hwcaps may not have enough bits to represent everything we want * Do not want to update dpkg each time a new hw capability appears; need to hook on to an existing mechanism such as cpuinfo * 3 areas to consider: capabilities, endianness, cpu * Endianness is already embedded in arch (e.g. armel, armeb) * Makes new ports more difficult, but has advantages - apt works with the current scheme w/o requiring more fields in the Packages file * Consensus is that endianness needs to be maintained in the architecture itself * Problem is very similar to multiarch, and to caps issues in i386 * Difference between "this package is optimal for use on CPUs with these capabilities (but uses hwcaps so doesn't break)" and "this package only works on CPUs with these capabilities" - relevant to image building * Need to define + document a base CPU level for each release (e.g. armv5 for jaunty, armv7 for m) * Add to Release file, add some smarts to apt that would look at the new field * May require capabilities to be absent? (armv7 SMP won't work with swp) === License tracking === * dep5 gradually gaining traction * Some resistance to making this a dpkg feature, license analysis is better done via separate tools === Origin tracking === * Desire to prevent people from installing packages from the wrong origin/release * Anti-foot-shooting measure * Apt feature rather than dpkg feature === New ports === * Demand for hardfloat port * Toolchain supports it * Significant performance benefits * New ABI (still EABI though) * Some/much softfloat code will not run on hardfloat * armeh? armhf * Hard now to create new ports, went through this pain already w/ lpia ---- CategorySpec