[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Control file



RL wrote:
>> Finally a patch.  Extra notes:
>>
>>  * I've squeezed the first paragraph, and (usually) merged the last two.

Oh, I've just noticed a typo in armv6k-support: s/ARMV6/ARMv6/.
 
> Wow - i think I almost understand what these packages are for now. I
> also thought the technical info helped a lot, and was really interesting
> without being overwhelming.
> 
> In the first para "in terms of package dependencies" could perhaps be
> clearer as "using/via/though package dependencies"? - or maybe "allow
> ISA requirements to be represented as package dependencies"?

I like the latter - revised version attached.
 
> The bit i dont understand is why the use of pre-depends is correct:
> 
> eg,
> - suppose i dont have sse3 support in my computer
> - i can open aptitude and tell it i want to install gnome
> - gnome requires the virtual www-browser which chromium provdes
> - I can tell the package manager to use chromium to satisfy the dep
> - I can now start the installaton of hundreds of packages (which will
>    include sse3-support) - all standard stuff to here.
> - sse3-support will eventually fail to install - the pre-depends means
> this happens before chromium, but i only learn this part-way through a
> multiple-megabyte download of hundreds of gnome-related packages: seems
> to me i might be left with a bunch of cryptic dpkg errors and not much
> to hint that this is due to chromium and not gnome. (i doubt many people
> would remember that i manually asked for chromium)

That did sound nightmarish, but looking at the internals I see in the
event of a failure it goes into a debconf error dialogue that ought to
be comprehensible (infuriating, but comprehensible).  Then you just
need to track the dependency back to the culprit, which is still a
pain even in the aptitude TUI.

> .... wouldnt it be simpler if chromium _conflicted_ with a package that
> represented "this computer does not support sse3"? then i couldnt even
> start installing chromium unless the cpu was up to it?

But then how do you make those systems and only those systems install
that package?  The isa-support approach can at least be implemented
without needing innovations on the debian-installer level.
 
> .... wouldnt it be even better for chromium to detect the missing sse3 at
> runtime, not at package install time

That would be lovely, if upstream could be bothered to maintain
fallback code paths, but if it means that chromium installs happily
and then mysteriously "doesn't work" it's just a support nightmare.
 
> ... what happens if i change my cpu to add/remove sse3 support but keep
> the same disk and same installation? (if it's a raspberry pi i can
> easily move the disk between cpus)

Things go wrong; this is the sort of thing you need to worry about
while juggling hardware.  Mind you, maybe as an enhancement these
packages could also do some sort of (disablable) boot-time check?
 
> (i also also note that in stable, chromium only depends on sse3-support,
> not pre-depends. maybe that changed in sid - but i thought chromium was
> always backported)

(No idea, but I don't see any such dependency on bullseye.)
 
> (i also suspect a name ending "-support" was perhaps not the most
> helpful one from the point of view of a user coming accross these in a
> package list - sounds like a set of drivers/firmware to me - but i can
> see that it makes writing "Depends: sse3-support" read nice for
> developers.)

If they pick it out of the package lists as a candidate for
installation we have to hope they'll read the description; usually
they're more likely to encounter the name as a thing that is indeed
being pulled in as a dependency, which ought to make it relatively
intelligible.
-- 
JBR	with qualifications in linguistics, experience as a Debian
	sysadmin, and probably no clue about this particular package
Source: isa-support
Section: misc
Priority: optional
Uploaders: Gioele Barabucci <gioele@svario.it>
Maintainer: Bastien Roucariès <rouca@debian.org>
Build-Depends: debhelper-compat (= 13), po-debconf
Standards-Version: 4.6.1
Rules-Requires-Root: no
Vcs-Git: https://salsa.debian.org/debian/isa-support.git
Vcs-Browser: https://salsa.debian.org/debian/isa-support

Package: isa-support
Multi-Arch: same
Architecture: any-i386 any-i386 any-amd64 armel armel armhf armhf powerpc
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: CPU feature checking - common back-end
 The packages in the isa-support family probe for microprocessor Instruction
 Set Architecture features such as SSE3. By refusing to install on machines
 lacking a required feature, they allow ISA requirements to be represented
 as package dependencies.
 .
 This package provides the feature-probing infrastructure. To assert a CPU
 requirement, other packages can pre-depend on one of the individual
 feature-specific packages:
 .
 sse2-support, sse3-support, sse4.2-support, altivec-support, neon-support,
 armv6-support, armv7-support, armv8-support, vfp-support, vfpv2-support,
 vfpv3-support

Package: sse2-support
Multi-Arch: foreign
Architecture: any-i386
Pre-Depends: isa-support (= ${binary:Version})
Description: CPU feature checking - require SSE2
 The packages in the isa-support family probe for microprocessor Instruction
 Set Architecture features such as SSE3. By refusing to install on machines
 lacking a required feature, they allow ISA requirements to be represented
 as package dependencies.
 .
 This is a mostly dummy package which checks for SSE2 and refuses to install
 on unsupported hardware.
 .
 Streaming SIMD Extensions (SSE) is a single instruction, multiple data
 (SIMD) instruction set extension.
 .
 SSE2 was an incremental upgrade to SSE intended to fully replace the earlier
 MMX instruction set. It is available on processors from Pentium 4 onward,
 including all 64-bit capable ones, but not on Pentium 3, Athlon XP, Via C3,
 Quark, or older processors.

Package: sse3-support
Multi-Arch: foreign
Architecture: any-i386 any-amd64
Pre-Depends: isa-support (= ${binary:Version})
Description: CPU feature checking - require SSE3
 The packages in the isa-support family probe for microprocessor Instruction
 Set Architecture features such as SSE3. By refusing to install on machines
 lacking a required feature, they allow ISA requirements to be represented
 as package dependencies.
 .
 This is a mostly dummy package which checks for SSE3 and refuses to install
 on unsupported hardware.
 .
 Streaming SIMD Extensions (SSE) is a single instruction, multiple data
 (SIMD) instruction set extension.
 .
 SSE3, also called PNI (Prescott New Instructions), is an incremental upgrade
 to SSE2, adding a handful of new operations useful for processing media. It
 is available on almost any 64-bit-capable processor except for some early
 AMD models (Sledgehammer and Clawhammer), but is not available on most
 32-bit-only hardware.

Package: sse4.1-support
Multi-Arch: foreign
Architecture: any-i386 any-amd64
Pre-Depends: isa-support (= ${binary:Version})
Description: CPU feature checking - require SSE4.1
 The packages in the isa-support family probe for microprocessor Instruction
 Set Architecture features such as SSE3. By refusing to install on machines
 lacking a required feature, they allow ISA requirements to be represented
 as package dependencies.
 .
 This is a mostly dummy package which checks for SSE4.1 and refuses to
 install on unsupported hardware.
 .
 Streaming SIMD Extensions (SSE) is a single instruction, multiple data
 (SIMD) instruction set extension.
 .
 SSE4.1 added a dot product instruction and additional integer instructions.
 It is available on Intel processors since Penryn (circa 2008), but notably
 not on anything AMD until the Bulldozer (15h, in 2011) and Jaguar (16h, in
 2013) families.

Package: sse4.2-support
Multi-Arch: foreign
Architecture: any-i386 any-amd64
Pre-Depends: isa-support (= ${binary:Version})
Description: CPU feature checking - require SSE4.2
 The packages in the isa-support family probe for microprocessor Instruction
 Set Architecture features such as SSE3. By refusing to install on machines
 lacking a required feature, they allow ISA requirements to be represented
 as package dependencies.
 .
 This is a mostly dummy package which checks for SSE4.2 and refuses to
 install on unsupported hardware.
 .
 Streaming SIMD Extensions (SSE) is a single instruction, multiple data
 (SIMD) instruction set extension.
 .
 SSE4.2 added string and text processing instructions that perform character
 searches and comparison on two operands of 16 bytes at a time. It is
 available on Intel processors since Nehalem (circa 2008), but notably not
 on anything AMD until the Bulldozer (15h, in 2011) and Jaguar (16h, in
 2013) families.

Package: altivec-support
Multi-Arch: foreign
Architecture: powerpc
Pre-Depends: isa-support (= ${binary:Version})
Description: CPU feature checking - require AltiVec
 The packages in the isa-support family probe for microprocessor Instruction
 Set Architecture features such as SSE3. By refusing to install on machines
 lacking a required feature, they allow ISA requirements to be represented
 as package dependencies.
 .
 This is a mostly dummy package which checks for AltiVec and refuses to
 install on unsupported hardware.
 .
 AltiVec is a single-precision floating point and integer SIMD instruction
 set. It is a standard part of the Power ISA v.2.03 specification.

Package: neon-support
Multi-Arch: foreign
Architecture: armhf
Pre-Depends: isa-support (= ${binary:Version})
Description: CPU feature checking - require Neon
 The packages in the isa-support family probe for microprocessor Instruction
 Set Architecture features such as SSE3. By refusing to install on machines
 lacking a required feature, they allow ISA requirements to be represented
 as package dependencies.
 .
 This is a mostly dummy package which checks for Neon and refuses to install
 on unsupported hardware.
 .
 Neon, also known as MPE (Media Processing Engine) or Advanced SIMD, is a
 combined 64- and 128-bit SIMD instruction set that provides standardised
 acceleration for media and signal processing applications. It is available
 on the vast majority of armhf devices but not guaranteed before the 64-bit
 capable ARMv8.

Package: armv6-support
Multi-Arch: foreign
Architecture: armel
Pre-Depends: isa-support (= ${binary:Version})
Description: CPU feature checking - require ARMv6
 The packages in the isa-support family probe for microprocessor Instruction
 Set Architecture features such as SSE3. By refusing to install on machines
 lacking a required feature, they allow ISA requirements to be represented
 as package dependencies.
 .
 This is a mostly dummy package which checks for ARMv6 and refuses to
 install on unsupported hardware.
 .
 The ARMv6 architecture (not to be confused with product family ARM6) uses
 physically addressed cache, solving many cache aliasing problems and
 reducing context switch overhead. Unaligned and mixed-endian data access is
 supported. This architecture includes the first version of Thumb
 technology.
 .
 This feature is not guaranteed by the architecture baseline, but is
 available for newer armel machines in the ARM11 product family, including
 ARM1136J(F)-S, ARM1156T2(F)-S, ARM1176JZ(F)-S, ARM1136EJ(F)-S, and
 ARM11MPCore processors. Boards include the Raspberry Pi model 1 and
 Raspberry Pi Zero.

Package: armv6k-support
Multi-Arch: foreign
Architecture: armel
Pre-Depends: isa-support (= ${binary:Version})
Description: CPU feature checking - require ARMv6k
 The packages in the isa-support family probe for microprocessor Instruction
 Set Architecture features such as SSE3. By refusing to install on machines
 lacking a required feature, they allow ISA requirements to be represented
 as package dependencies.
 .
 This is a mostly dummy package which checks for ARMv6k and refuses to
 install on unsupported hardware.
 .
 ARMv6k is a subarchitecture of ARMv6 adding Symmetric MultiProcessing
 and Thread Local Storage instruction sets. It is not guaranteed by the
 architecture baseline, but is available for newer armel machines in the
 ARM11 product family; boards include the Raspberry Pi model 1 and
 Raspberry Pi Zero.

Package: armv7-support
Multi-Arch: foreign
Architecture: armel
Pre-Depends: isa-support (= ${binary:Version})
Description: CPU feature checking - require ARMv7
 The packages in the isa-support family probe for microprocessor Instruction
 Set Architecture features such as SSE3. By refusing to install on machines
 lacking a required feature, they allow ISA requirements to be represented
 as package dependencies.
 .
 This is a mostly dummy package which checks for ARMv7 and refuses to
 install on unsupported hardware.
 .
 ARMv7 (not to be confused with product family ARM7) includes Thumb-2
 technology, adding 32-bit instructions into compressed Thumb mode. It is
 not guaranteed by the architecture baseline, but is available for newer
 armel machines (including CPUs that support armhf) since the Cortex-A
 product family, including Cortex-A5, -A7, -A8, -A9, -A12, -A15, and -A17
 processors. Boards include the Raspberry Pi 2.

Package: armv8-support
Multi-Arch: foreign
Architecture: armel armhf
Pre-Depends: isa-support (= ${binary:Version})
Description: CPU feature checking - require ARMv8
 The packages in the isa-support family probe for microprocessor Instruction
 Set Architecture features such as SSE3. By refusing to install on machines
 lacking a required feature, they allow ISA requirements to be represented
 as package dependencies.
 .
 This is a mostly dummy package which checks for ARMv8 and refuses to
 install on unsupported hardware.
 .
 ARMv8 (not to be confused with product family ARM8) introduced a large
 number of ISA enhancements. It is not guaranteed by the architecture
 baseline, but is available for newer armel machines (including CPUs that
 support armhf) since the Cortex-A product family, including Cortex-A32, as
 well as all arm64 processors. Boards include the Raspberry Pi 3 and 4.

Package: vfp-support
Multi-Arch: foreign
Architecture: armel
Pre-Depends: isa-support (= ${binary:Version})
Description: CPU feature checking - require VFP
 The packages in the isa-support family probe for microprocessor Instruction
 Set Architecture features such as SSE3. By refusing to install on machines
 lacking a required feature, they allow ISA requirements to be represented
 as package dependencies.
 .
 This is a mostly dummy package which checks for VFP and refuses to install
 on unsupported hardware.
 .
 VFP (Vector Floating Point) technology is a floating-point unit (FPU)
 coprocessor extension to the ARM architecture. It provides single- and
 double-precision floating-point computation fully compliant with IEEE
 754-1985.

Package: vfpv2-support
Multi-Arch: foreign
Architecture: armel
Pre-Depends: isa-support (= ${binary:Version})
Description: CPU feature checking - require VFPv2
 The packages in the isa-support family probe for microprocessor Instruction
 Set Architecture features such as SSE3. By refusing to install on machines
 lacking a required feature, they allow ISA requirements to be represented
 as package dependencies.
 .
 This is a mostly dummy package which checks for VFPv2 and refuses to
 install on unsupported hardware.
 .
 VFP (Vector Floating Point) technology is a floating-point unit (FPU)
 coprocessor extension to the ARM architecture. It provides single- and
 double-precision floating-point computation fully compliant with IEEE
 754-1985.
 .
 VFPv2 has 16 64-bit FPU registers. It is available for some ARMv5 and
 all ARMv6 cores.

Package: vfpv3-support
Multi-Arch: foreign
Architecture: armel
Pre-Depends: isa-support (= ${binary:Version})
Description: CPU feature checking - require VFPv3
 The packages in the isa-support family probe for microprocessor Instruction
 Set Architecture features such as SSE3. By refusing to install on machines
 lacking a required feature, they allow ISA requirements to be represented
 as package dependencies.
 .
 This is a mostly dummy package which checks for VFPv3 and refuses to
 install on unsupported hardware.
 .
 VFP (Vector Floating Point) technology is a floating-point unit (FPU)
 coprocessor extension to the ARM architecture. It provides single- and
 double-precision floating-point computation fully compliant with IEEE
 754-1985.
 .
 VFPv3 has 32 64-bit FPU registers as standard, adds VCVT instructions to
 convert between scalar, float, and double, and adds immediate mode to VMOV,
 allowing constants to be loaded into FPU registers. It is available on most
 Cortex-A8 and -A9 ARMv7 processors. 

Reply to: