Re: Should GPU shaders be considered firmware?

2025-03-15 Thread Dirk Lehmann

Hell Stephan =)

On 3/15/25 12:52 PM, Stephan Verbücheln wrote:

Am Donnerstag, dem 13.03.2025 um 02:37 +0100 schrieb Dirk Lehmann:

GPU shaders should be clearly respected as software (and not
hardware).  Therefore, `intel-media-va-driver-non-free` is rightly in
the Debian archive `non-free`.


First of all, I completely agree that:
1. shaders are computer programs
2. the shaders in that package are unfree


okay, I have looked a bit into the sources of the upstream repository.
And I have good news!

All source files I checked in

  * media_driver/agnostic/*/kernel{,isa}/*/*.c

which you listed at begin of this thread looks like as they are

  * EITHER SHADERS NOR FIRMWARE !

These datasets are looking more like n-dimensional arrays.

Kernels in image- and video processing are mathematical matrices.
I.e. on images they will be scrolled (mathematical operation:
"symmetric convolved") through the images as (real-time)-filter for
anti-aliasing, sharpening, etc.  In this `intel-media-va-driver`-case
they are seeming to be used to interpolate frames.  I would assume,
for example if the video footage has a frame-rate of 60 fps and the
rendering-context (i.e. display) 144 fps then additional frames will
be generated/interpolated.

Here a Wiki link for the case of image processing:

  * https://en.wikipedia.org/wiki/Kernel_(image_processing)#Convolution

Yes, such tasks are usually done by shaders from GPU, but I'm quite
sure that the data above are just the Kernel-Matrices itself.  Would
be nice, if somebody can verify that the exported symbols in the
corresponding header files are really no executable code containing.

Question of licensing
*

I'm not a lawyer, but just want to start a discussion about a possible
sublicensing.  Even in my last post I had data explicitly excluded
from the general case

On 3/13/25 2:37 AM, Dirk Lehmann wrote:
> [...]
>
> As you expect, in detail from technical point of view, firmware is a
> special kind of software.  It is not data -- and it is executable in
> the sense that it changes the state of "physical hardware" in time.
>
> [...]

From technical point of view, I would

  * consider these kernel-matrices as binary images

As like images are painted with tools like Gimp, the kernel-matrices
were generated by the `KernelBinToSource.exe` tool (see source
comments), whose sources are available in the upstream repository,
too.

But I'm not a lawyer and don't know in detail how to deal with it.  I
would try do something like this:

The license of sources itself grants to the kernel-matrices-images
besides copy, modify, merge, publish, distribute also explicity

  * sublicensing

For me as not-lawyer it is a license of the class
attribution-share-alike license.  The question should be if it is
allowed to sublicense the kernel-matrices-images as

  * CC BY-SA
(Creative Commons Attribution-ShareAlike Licenses) ?

as this license should be better for datasets -- and if so, if the CC
BY-SA is compliant to our DFSG.  But I really have to less knowledge
about that topic, and which formalities are needed to be respected for
sublicensing.

Greets,
Dirk =)



OpenPGP_0xE2A3766F21F02BD5.asc
Description: OpenPGP public key


OpenPGP_signature.asc
Description: OpenPGP digital signature


Re: utmp in trixie

2025-04-04 Thread Dirk Lehmann

Hello Andrew,

On 4/4/25 11:13 PM, Andrew Bower wrote:

On Fri, Apr 04, 2025 at 09:10:42PM +0200, Dirk Lehmann wrote:

On 4/3/25 2:58 PM, Antonio Terceiro wrote:

I never cared about /run/utmp in itself, but I got used to last(1).
FWIW, a new implementation of last is now provided by wtmpdb.


+1

great, it looks like that

   * wtmpdb(8)

[...]

The program arguments are not fully compatible with Unix equivalent
last(1).  I.e. it seems not to be possible to just filter out all
current still active sessions, which should be provided by `last -p`
in the Unix world.


Presumably you used 'last -p now' for this? It looks like this would be
satisfied by a richer range of accepted time specifications by wtmpdb.


`last -p now` does not work.  I've reported this under

  * #1102101: Argument `last -p ` not working (UTC / local-time?)
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1102101


Do you want to raise a bug? Worth adding if there is anything else
defective (it looks to me that crashed sessions get included, which
seems unhelpful).


Additionally, I run into some other issues reported here

  * #1102102: Argument `last -t ` not working
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1102102

  * #1102105: Argument combination `last -x -s ` not working
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1102105

Greets,
Dirk =)



OpenPGP_signature.asc
Description: OpenPGP digital signature


Should be wtmp considered as successor of who(1)?

2025-04-08 Thread Dirk Lehmann

Hi curl's and boys =D

in relation to the discussion of 'utmp in trixie'

  * https://lists.debian.org/debian-devel/2025/04/msg00011.html

It looks like, that wtmp is an well alternative to who(1).  For that
the command

  $> last -p now

should be able to use in the future.  But the developers at upstream
of wtmpdb persist in the opinion that wtmp has nothing to do with
utmp before merging PR#36.

  * https://github.com/thkukuk/wtmpdb/issues/33

Now, I have not the guts to ask them, if they would like to implement
an own who(1) utility.

I think it should not be an security issue, if by default who(1) logs
every libpam-login without an installed autitd or selinux extension.

What do you think ???

But please, before writing: Calm down!  It makes no sense to discuss
that frantically.  Please think before writing!  I know such mailing
lists.

Dirk.


OpenPGP_signature.asc
Description: OpenPGP digital signature


ITP: python-qutip-{qip,qtrl,qoc}, python-qutip -- QuTiP packages

2025-03-31 Thread Dirk Lehmann

Hello Devel Mailing List,

I have requested 4 ITPs to WNPP.  Below is following a concluded
summary.

Greets,
Dirk =)


**

Bug#1101791: ITP: python-qutip-qip -- QuTiP package - Quantum 
Information Processing


Package: wnpp
Severity: wishlist
Owner: Dirk Lehmann 
X-Debbugs-Cc: debian-scie...@lists.debian.org

* Package name: python-qutip-qip
  Version : 0.4.0
  Upstream Contact: https://github.com/qutip/qutip-qip/discussions
* URL : https://github.com/qutip/qutip-qip
* License : BSD-3-Clause
  Programming Lang: Python
  Description : QuTiP package - Quantum Information Processing

 The qutip-qip package, QuTiP quantum information processing, aims at
 providing basic tools for quantum computing simulation both for
 simple quantum algorithm design and for experimental
 realization. Compared to other libraries for quantum information
 processing, qutip-qip puts additional emphasis on the physics layer
 and the interaction with the QuTiP core package `python3-qutip`. The
 package offers two different approaches for simulating quantum
 circuits, one with `QubitCircuit` calculating unitary evolution under
 quantum gates by matrix product, another called `Processor` using
 open system solvers in QuTiP to simulate noisy quantum device.

**

Bug#1101792: ITP: python-qutip-qtrl -- QuTiP package - Quantum Optimal 
Control


Package: wnpp
Severity: wishlist
Owner: Dirk Lehmann 
X-Debbugs-Cc: debian-scie...@lists.debian.org

* Package name: python-qutip-qtrl
  Version : 0.1.5
  Upstream Contact: https://github.com/qutip/qutip-qtrl/issues
* URL : https://github.com/qutip/qutip-qtrl
* License : BSD-3-Clause
  Programming Lang: Python
  Description : QuTiP package - Quantum Optimal Control

 The qutip-qtrl package, QuTiP quantum optimal control, aims at
 providing advanced tools for the optimal control of quantum
 devices. Compared to other libraries for quantum optimal control,
 qutip-qtrl puts additional emphasis on the physics layer and the
 interaction with the QuTiP core package `python3-qutip`. The package
 offers support for both the CRAB and GRAPE methods.

**

Bug#1101793: ITP: python-qutip-qoc -- QuTiP package - Advanced Quantum 
Optimal Control


Package: wnpp
Severity: wishlist
Owner: Dirk Lehmann 
X-Debbugs-Cc: debian-scie...@lists.debian.org

* Package name: python-qutip-qoc
  Version : 0.1.1
  Upstream Contact: https://github.com/qutip/qutip-qoc/issues
* URL : https://github.com/qutip/qutip-qoc
* License : BSD-3-Clause
  Programming Lang: Python
  Description : QuTiP package - Advanced Quantum Optimal Control

 The qutip-qoc package builds up on the `python3-qutip-qtrl` package.
 .
 It enhances it by providing two additional algorithms to optimize
 analytically defined control functions. The first one is an extension
 of Gradient Optimization of Analytic conTrols (GOAT). The second one
 (JOPT) leverages QuTiPs version 5 new diffrax abilities to directly
 calculate gradients of JAX defined control functions using automatic
 differentiation.
 .
 The package also aims for a more general way of defining control
 problems with QuTiP and makes switching between the four control
 algorithms (GOAT, JOPT, and GRAPE and CRAB implemented in qutip-qtrl)
 very easy.

**

Bug#1101794: ITP: python-qutip -- QuTiP: Quantum Toolbox in Python

Package: wnpp
Severity: wishlist
Owner: Dirk Lehmann 
X-Debbugs-Cc: debian-scie...@lists.debian.org

* Package name: python-qutip
  Version : 5.1.1
  Upstream Contact: https://github.com/qutip/qutip/discussions
* URL : https://github.com/qutip/qutip
* License : BSD-3-Clause
  Programming Lang: Python
  Description : QuTiP: Quantum Toolbox in Python

 QuTiP is open-source software for simulating the dynamics of open
 quantum systems. The QuTiP library depends on the excellent Numpy,
 Scipy, and Cython numerical packages. In addition, graphical output
 is provided by Matplotlib. QuTiP aims to provide user-friendly and
 efficient numerical simulations of a wide variety of Hamiltonians,
 including those with arbitrary time-dependence, commonly found in a
 wide range of physics applications such as quantum optics, trapped
 ions, superconducting circuits, and quantum nanomechanical
 resonators.

**


OpenPGP_signature.asc
Description: OpenPGP digital signature


Re: Reconsidering Debian’s Inclusion of Non-Free Firmware - A Call for Discussion

2025-03-07 Thread Dirk Lehmann

Hello Debian-Devel mailing list =D

imho, an interesting topic.  In conjunction with [1] my first notion
was: We should not guide that proprietary software is insecure.
That's not correct, i.e. in the case of non-free-firmware it is nearly
equivalent to say that the usage of proprietary hardware is insecure.

Instead we need begin to define, what is hardware in a philosophic way
and then define an clear interface (or policy) between hard- and
software.  I.e. in that interface it should be defined how software is
verifying that it runs on the correct hardware, like TPMs it do.  Or I
could imagine that an verification-chain beginning from firmware-blobs
(loaded by driver) through the hardware which ends in the
kernel-module driver (back to driver, means the chain makes a
round-trip).

It is correct that also in that case it is not possible to understand
what is going on in the firmware itself.  But from my knowledge, it is
an logistic issue to make firmware open source.  Imagine you are
developing classical mainboards (equivalent to current SoC
development), then you need to provide the firmware of the chipset in
your mainboard driver.  But you can imagine that the most chipset
companies don't like to provide the sources of the blobs, they just
specify how to load these into the chipset.  In my opinion this is the
most relevant issue why most firmware is not available as open source.

In practice it means: If you have an favorite mainboard company, would
you like that these are able to modifying the blobs of the chipset
vendors?  My clearly opinion is no.

Okay we could say: It is just required, that the chipset company needs
to sign it's blobs and then it can provide the sources of the
firmware.  But

  1. also in that case we need an verify-mechanism between soft- and
 hardware.

  2. it need's a kind of "Open Hardware" infrastructure.

Now we can go back to the philosophic point of view: If we have such
an interface between hard- and software then the open source software
is just one layer of a full-stack machine.  You can install
proprietary software upon an purely open-source-system, also you can
have proprietary hardware blow an purely open-source-system.  The
question is at which point begins hardware below such an purely
open-source-system.

If we really think, that firmware is software then need adapt our
vision (or policy, interface) at which point begins the hardware
layer.

Also, if we have such a well defined vision then this is not enough.
The next step needs to be to develop a vision (or policy) of "Open
Hardware" on which hardware companies can act.

Reference: [1] https://www.gnu.org/philosophy/compromise.html

End Of Opinion,
Dirk =D


On 3/7/25 6:35 PM, pan...@disroot.org wrote:

Dear Debian Community,

I am Deep Pandya from Gujarat, India, and a long-time Debian user. I 
migrated from Windows to Ubuntu in 2013 and later explored the 
philosophy of the GNU project and the history of the free software 
movement. After trying GNU-endorsed Trisquel and PureOS, I finally 
landed on Debian (Stretch release) in 2019 and have been actively using 
it since (Buster, Bullseye, Bookworm). In 2020, I even wrote a blog 
post, “Reasons to choose Debian among GNU/Linux distributions” (https:// 
lignuxblog.wordpress.com/2020/08/27/reasons-to-choose-debian/). Though I 
am not a programmer or software developer, I deeply care about Debian’s 
values.


In 2022, the General Resolution to officially include non-free firmware 
in the installation images shocked me because it signified a move away 
from Debian’s conceptual roots.


I fully believe in the GNU philosophy and its uncompromising commitment 
to freedom. Without that, we might not have had the Linux kernel under 
GPL or even the open-source movement. However, when it comes to 
practical usability, I acknowledge that some users—myself included—may 
need to install non-free firmware for WiFi, Bluetooth, or graphics 
drivers. But in the past, when I made such a compromise, I was aware of 
it. Debian used to perfectly balance software freedom and usability— 
until 2022.


I understand that users need proprietary drivers to run certain 
hardware, and Debian should not ignore this reality. That is why I am 
not asking Debian to become a fully GNU-endorsed distro like Trisquel, 
which rejects all non-free software in every case. However, at the same 
time, Debian should not readily promote non-free firmware to the point 
where it loses its philosophical distinction and becomes just another 
convenience-focused distribution like Ubuntu or Linux Mint.


*[A Ruinous Compromise]*

After compromising a byte, our goal should be to find/develop libre 
alternatives so that, in the future, Debian users are less (bit) 
dependent on non-free firmware. Instead, we did the opposite— 
compromising more, from a byte to a kilobyte, for the sake of 
convenience. If this trend continues, what stops us from reaching a 
megabyte of compromise?


Debian’s official inclusion

Re: General Questions about Translations and what a package maintainer has to do

2025-03-11 Thread Dirk Lehmann

Hello Marc,

I am currently new as Debian Maintainer, but I have more experience
from upstream-side.

As I understand your question about a general workflow of translations
in all your email-cases correct, I think the short answer maybe to use
`quilt` to patch the .PO files instead of committing them directly via
Git.  Also consider `gbp-pq`, could be useful, but not sure.

The reason is, that you can merge (aka. apply) your patch-series
(patch-series: something like a branch in Git) at any time during
source-package building.  As I'm new to Debian packaging I'm not sure
if it is possible to use "debian/patches"; but I think no, because the
step is hard-coded during `dpkg-buildpackage` -- and that is not what
we want.

I would recommend to use another quilt directory, like
`debian/patches-intl`.  I don't know if there exist some other
recommended directory in any Debian Policy or Debian Guide.  Then you
can call in `debian/rules` at the time you wish to apply your patch
series

  ```
  $> QUILT_PATCHES=debian/patches-intl quilt push -a
  ```

The manual call in `debian/rules` ensures that you can decide yourself
at which step to apply your patches -- and decide if the
`dpkg-buildpackage` should break with an error on fail-patching, or
not.  If the package maintainer changes, it should be easy to comment
out the one `quilt` command in `debian/rules` and remove the
patch-series `debian/patches-intl` from the package-repository.

To commit your changes to upstream you just need to apply (or ask to
apply) the patch-series into theres repository.  Make sure to have
many small patches, then the chance is greater that some patches are
going to upstream, and maybe others not.

If these patches coming down from upstream `quilt push -a` stops with
a message like:

  ```
  Applying patch debian/patches-intl/.patch
  patching file 
  Hunk #1 FAILED at .
  1 out of 1 hunk FAILED -- rejects in file 
  Patch debian/patches-intl/.patch can be reverse-applied
  ```

Quilt detects with the message 'can be reverse-applied' that it was
already applied by third-party.  Then you can delete the patch in the
patch series with:

  ```
  $> QUILT_PATCHES=debian/patches-intl quilt delete -nr
  ```

followed by completing to apply the patch series with a second `quilt
push -a` -- and repeatly so on, if more than one patches where
accepted by upstream.

Quilt also allows adapting your patches, in contrast to Git, at which
commits are forever or are needed to be reverted with a revert-commit
(see backport work-flows).  That was also an issue you reported.

This workflow should also work if upstream already have translations
committed -- and/or you begin a fresh one.  Maybe, not sure, that it
also solve the issue of the multiple calls of `msgmerge`; as I
understand, `msgmerge` was used as a kind of `patch`.

Hopefully this helps you for progression,
Dirk =)


On 3/11/25 12:03 PM, Marc Haber wrote:

tl;dr: We need more docs about best practices to handle translations as
a package maintainer


My fellow developers,

there are two things in being a DD that I truly despise. The one is
keeping the machine readable debian/copyright up to date, the other is
handling of translations, regardless of whether it's po-debconf, manpage
translations or program translations (when I am also the upstream).

I might rant about debian/copyright when I blow my fuse next time, but
today it's going to be translations. For me, it seems impossible to
support translator's work without putting a significant burden of
additional work to put on oneself. Especially when one uses version
control and does not do all development in Mast^wdebian/latest, dealing
with translations is a nightmare when it comes to merge. As the Newbie¹
DD I am, I keep running into either nightmare merges, or unnecessarily
fuzzed or even destroyed translations, in all cases feeling even more
stupid and incompetent when some translator points out my mistakes. I
have felt being sent back and forth between different workflows (all of
them wrong) by following random advice without being able to find
authoritative explanation.

I might have a fundamantal misunderstandig of procedures, but all
documentation one finds, including Chapter 8 in the Developer's
Reference (which links to a document by Tomohiro KUBOTA which is no
longer there), elaborate on how one would do actual translations, but
doesn't go as far as giving best practice documentation about what a
package maintainer is supposed to do to make translation blend into a
normal packaging workflow without being a nuisance ("put them into the
po directory and build the package" doesn't fit a modern packaging
workflow using version control).

My example package is adduser, but I think that my questions might apply
to other packages as well. adduser has both its program messages and the
manual pages translatable, the latter being done with po4a. I am aware
that there are also translations for debconf templates, but adduser
doesn't have those (

Re: Should GPU shaders be considered firmware?

2025-03-12 Thread Dirk Lehmann

Hello Stephan,

On 3/12/25 12:10 PM, Stephan Verbücheln wrote:

Hello everyone

The “drivers” for hardware video decoders on Intel GPUs have been split
into free and non-free packages.

https://packages.debian.org/en/sid/intel-media-va-driver
https://packages.debian.org/en/sid/intel-media-va-driver-non-free

The difference between the two is that the Intel source code contains
blobs (byte arrays in the C source) with pre-compiled GPU shaders.

The source code for the pre-complied shaders is not included and does
not appear to be available under a free license.


great pragmatic question!  First of all my answer:

The answer
**

GPU shaders should be clearly respected as software (and not
hardware).  Therefore, `intel-media-va-driver-non-free` is rightly in
the Debian archive `non-free`.

Model of free software systems
**

As I described in

  * https://lists.debian.org/debian-devel/2025/03/msg00196.html

for me is a computer machine a stack of three layers:

   Machine/Computer
  ,-,
  | optional non-free/proprietary software  |
  |-|
  | Free and open-source software   |
  |-|
  | Hardware (maybe non-free/proprietary)   |
  '-'

If we remove the optional `non-free` layer on the top then we have a
fully free software system.  I would assume that also GNU would not
refute this model of a fully free software system.

The question must be: Is firmware to be considered as hardware or
software?  I.e. in your case of GPU shaders the question is:

  * Should be GPU shaders considered as hardware or software?

The reason for the answer above
***

We should unite us in the point that we do not accept non-free
software between the bottom two layers.  Means there should be no
non-free software directly above the hardware layer.

As I pointed out in the thread linked above, that we need to consider
firmware as hardware in the sense that:

  1. Firmware needs to be developed by the chip-vendor itself.

 (Hardware from companies point of view)

  2. Firmware needs to be deployed between hardware companies,
 i.e. SoC companies, PCB companies, etc.

 (Hardware from logistic point of view)

Now GPU shaders:

  1. GPU shaders will not be developed exclusively by the chip vendor
 itself.  In contrast, they providing SDKs for development.

  2. GPU shaders will be deployed between software companies, and not
 exclusively by hardware companies.  I.e. 3D engine developers to
 Game design companies.

From technical point of view not clear
**

As you expect, in detail from technical point of view, firmware is a
special kind of software.  It is not data -- and it is executable in
the sense that it changes the state of "physical hardware" in time.
Physically stored as

  * a mapped table of commands on, we don't know: flashable EPROM,
Solid-State-Device, RAM, ...

  * an array/matrix of programmable basic gates on: FPGA, ...

From this point of view, it makes no sense to differentiate between
firmware and software by the media on which it will be stored -- or
the format how it changes the state-machine.  If someone do so then
they are cheating themselves.

BUT!:  This point of view is wrong in our current situation.

From companies-/logistic- ->to-> technical- point of view
*

Okay, someone would say:

  * "What?  My point of view, the technical one, is wrong?  wtf!"

The answer is: The path is the goal.  The 3-layer machine/computer
model we agree all, hopefully.  We can map the companies-/logistic-
point of view very well to that 3-layer model, imho.

We need to go a path!  The goal of the path is the technical point of
view.  Otherwise we become shizo ;P ...

What is the path?  Imho, I recognize exactly 3 possible paths in the
3-layer machine/computer model.  With the border between layer 'Free
software' and 'Hardware'

  * path 1: ... we can soften/remove it and create a flowed merge of both.

  * path 2: ... we can insert an additional layer, called
'non-free-firmware'.

  * path 3: ... we describe it very precisely, as accurately as
possible.

Path 1 is brain-dead, who contradicts? xD ...  Path 2 is that what we
do not want; not to be confused with path 2 is the current
actual-state!  We try to find a path, and path 2 is very trivial: Map
the current Debian archives structure to the 3-layer machine/computer
model.

Okay, then we need to go path 3, we need to describe the border
between layer 'Free software' and 'Hardware' very precisely, as
accurately as possible.  Therefore, in my opinion we have something
like an homogeneous system:

If our path needs to be go

  from companies-/logistic-
  |-->  technical- point of vi

Re: General Questions about Translations and what a package maintainer has to do

2025-03-19 Thread Dirk Lehmann

Hey Marc,

On 3/11/25 12:03 PM, Marc Haber wrote:

Basically the same applies for this step than for the POT generation
step, with the additional hardship that the PO files are generated,
being written to by a program AND STILL contain a significant part of
human work. I never know how much work of other people I am destroying
by calling msgmerge out of line. In which stage of package build do I do
msgmerge? Do I commit the merged po files, when do I commit them, what
do I do with them during git merge when a feature branch is merged?


I have a bit played around with `msgmerge` and found a way to display
a `diff` which contains the translations which will be destroyed if
you merge a .po file from a translator

  * test-de_DE-transl.po

into your maintained one

  * test-de_DE.po

in conjunction with the current generated .pot file

  * test.pot

The essential code snippet looks like this

**
*
* msgmerge -q -C test-de_DE-transl.po test-de_DE.po test.pot \
*   > test-de_DE-maint+transl.po
* msgmerge -vv -q -C test-de_DE.po test-de_DE-transl.po test.pot \
*   > test-de_DE-transl+maint.po
*
* # Print out the new merged .po file
* cat test-de_DE-transl+maint.po
*
* # Show the diff of destroyed translations (including comments)
* diff -u test-de_DE-maint+transl.po test-de_DE-transl+maint.po
*
**

The order of the `msgid`s are not necessary in the .po files and will
be defined in the .pot file.  Also comments and headers diffs will be
printed out.

For all of my test cases (I could imagine) it works very well.  You
can try it out: I put an example implementation in a Makefile and put
it together with a small test-translation into a tarball attachmented
to this email.  You just need to run

  $> make all

With `make clean` you can delete the two temporary files.  The output
of the makefile in the tarball is appended to this email.

Hopefully it helps for progression,
Dirk =)


**
* msgmerge-show-overridden.tar.gz
*
* Begin of output
**

make all
msgmerge -q -C test-de_DE-transl.po test-de_DE.po test.pot > 
test-de_DE-maint+transl.po
msgmerge -vv -q -C test-de_DE.po test-de_DE-transl.po test.pot > 
test-de_DE-transl+maint.po

test.pot:11: this message is used but not defined in test-de_DE-transl.po
test.pot:32: this message is used but not defined...
test-de_DE-transl.po:21: ...but this definition is similar
Read 1 old + 1 reference, merged 9, fuzzied 1, missing 1, obsolete 1.

New test-de_DE.po


cat test-de_DE-transl+maint.po
msgid ""
msgstr ""
"Language: German\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: PhraseApp (phraseapp.com)\n"

msgid "boolean_key"
msgstr ""

msgid "pluralized_key"
msgid_plural ""
msgstr[0] ""
msgstr[1] ""

# Translator: Overridden comment
msgid "key_with_description"
msgstr ""

msgid "empty_string_translation"
msgstr ""

msgid "nested.key"
msgstr "Fuzzy"

msgid "null_translation"
msgstr ""

#, fuzzy
msgid "nested.deeply.key"
msgstr "Fuzzy"

msgid "sample_collection"
msgstr ""

msgid "unverified_key"
msgstr ""

msgid "simple_key"
msgstr "Einfacher Translator Stirng"

Overridden by translator


diff -u test-de_DE-maint+transl.po test-de_DE-transl+maint.po || true
--- test-de_DE-maint+transl.po  2025-03-19 14:52:18.567974496 +0100
+++ test-de_DE-transl+maint.po  2025-03-19 14:52:18.571974539 +0100
@@ -4,7 +4,7 @@
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n > 2);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: PhraseApp (phraseapp.com)\n"

 msgid "boolean_key"
@@ -15,7 +15,7 @@
 msgstr[0] ""
 msgstr[1] ""

-# Maintainer: I'm a very important description for this key!
+# Translator: Overridden comment
 msgid "key_with_description"
 msgstr ""

@@ -39,4 +39,4 @@
 msgstr ""

 msgid "simple_key"
-msgstr "Einfacher Maintainer Stirng"
+msgstr "Einfacher Translator Stirng"

**
* End of output
*
* msgmerge-show-overridden.tar.gz
**



msgmerge-show-overridden.tar.gz
Description: application/gzip


OpenPGP_0xE2A3766F21F02BD5.asc
Description: OpenPGP public key


OpenPGP_signature.asc
Description: OpenPGP digital signature


Re: utmp in trixie

2025-04-04 Thread Dirk Lehmann

On 4/3/25 2:58 PM, Antonio Terceiro wrote:

On Tue, Apr 01, 2025 at 03:27:05PM -0400, Michael Stone wrote:

/run/utmp is no longer provided in trixie, which means that the mechanisms
used to show active sessions in unix for several decades no longer work.
There's a replacement mechanism provided by systemd, but it's not 1:1. I
propose that for trixie *both* mechanisms are active, so a person can choose
between them (and compare the output, to better identify gaps between the
historic utmp mechanism and the new and improved systemd facility). I've
been told that the reason this can't be done is that utmp isn't y2038
compliant, but it seems to me that we won't be supporting trixie in y2038,
so who cares? Are there any factors to consider that I've missed?


I never cared about /run/utmp in itself, but I got used to last(1).
FWIW, a new implementation of last is now provided by wtmpdb.


+1

great, it looks like that

  * wtmpdb(8)

could be a well alternative to who(1), as the discussed alternatives
w(1) and loginctl(1) are not listing su(1) sessions.

The program arguments are not fully compatible with Unix equivalent
last(1).  I.e. it seems not to be possible to just filter out all
current still active sessions, which should be provided by `last -p`
in the Unix world.

Here an example output

```
$> last -S | grep -- '- still'
root pts/0 su   Fri Apr  4 21:06 - 
still logged in
dirk pts/2 su   Fri Apr  4 21:05 - 
still logged in
dirk tty1  loginFri Apr  4 21:04 - 
still logged in
dirk tty7 :0   lightdm  Fri Apr  4 20:26 - 
still logged in
reboot   system boot  6.12.20-amd64 Fri Apr  4 20:25 - 
still running


```

Additionally, I fount a Debian-Wiki entry for that topic

  * https://wiki.debian.org/pam_lastlog2%20and%20wtmpdb

Greets,
Dirk =)



OpenPGP_signature.asc
Description: OpenPGP digital signature