5 ms·
This comment[0] explains it. The core bug seems to be that support for `date -r <file>` wasn't implemented at the time ubuntu integrated it [1, 2]. And the co
by cataflam 11mo ago
This comment[0] explains it.
The core bug seems to be that support for `date -r <file>` wasn't implemented at the time ubuntu integrated it [1, 2].
And the command silently accepted -r before and did nothing (!)
0: https://lwn.net/Articles/1043123/ https://lwn.net/Articles/1043123/
1: https://github.com/uutils/coreutils/issues/8621 https://github.com/uutils/coreutils/issues/8621
2: https://github.com/uutils/coreutils/pull/8630 https://github.com/uutils/coreutils/pull/8630
- nine_k 11mo agoThis doesn't look like a bug, that is, something overlooked in the logic. This seems like a deliberately introduced regression. Accepting an option and ignoring it is a deliberate action, and not crashing with an error message when an unsupported option is passed must be a deliberate, and wrong, decision.
- imiric 11mo agoI would say that Canonical is more at fault in this case. I'm frankly appalled that an essential feature such as system updates didn't have an automated test that would catch this issue immediately after uutils was integrated. Nevermind the fact that this entire replacement of coreutils is done purely out of financial and political rather than technical reasons, and that they're willing to treat their users as guinea pigs. Despicable.
- nine_k 11mo agoWhat surprises me is that the job seems rushed. Implementation is incomplete. Testing seems patchy. Things are released seemingly in a hurry, as if meeting a particular deadline was more important for the engineers or managers of a particular department than the qualify of the product as a whole. This feels like a large corporation, in the bad sense.
- johnisgood 11mo ago> deliberately introduced regression > deliberate and wrong decision Yeah... I hope "we" will not switch to it just because it is written in Rust. There is much more than just the damn language behind it.
- zahlman 11mo agoIt's wrong (and coreutils get it right) but I don't see why it would have to be deliberate. It could easily just not occur to someone that the code needs to be tested with invalid options, or that it needs to handle invalid options by aborting rather than ignoring. (That in turn would depend on the crate they're using for argument parsing, I imagine.)
- nine_k 11mo agoCould parsing the `-r` be added without noticing it somehow? If it was added in bulk, with many other still unsupported option names, why does the program not crash loudly if any such option is used? A fencepost error is a bug. A double-free is a bug. Accepting an unsupported option and silently ignoring it is not, it takes a deliberate and obviously wrong action.
- aw1621107 11mo agoAt least from what I can find, here's the original version of the changed snippet [0]: let date_source = if let Some(date) = matches.value_of(OPT_DATE) { DateSource::Custom(date.into()) } else if let Some(file) = matches.value_of(OPT_FILE) { DateSource::File(file.into()) } else { DateSource::Now }; And after `-r` support was added (among other changes) [1]: let date_source = if let Some(date) = matches.get_one::<String>(OPT_DATE) { DateSource::Human(date.into()) } else if let Some(file) = matches.get_one::<String>(OPT_FILE) { match file.as_ref() { "-" => DateSource::Stdin, _ => DateSource::File(file.into()), } } else if let Some(file) = matches.get_one::<String>(OPT_REFERENCE) { DateSource::FileMtime(file.into()) } else { DateSource::Now }; Still the same fallback. Not sure one can discern from just looking at the code (and without knowing more about the context, in my case) whether the choice of fallback was intentional and handling the flag was forgotten about. [0]: https://github.com/yuankunzhang/coreutils/commit/850bd9c32d91ea4f933d2f4d3aae5c4b79a71e6f https://github.com/yuankunzhang/coreutils/commit/850bd9c32d9... [1]: https://github.com/yuankunzhang/coreutils/blob/88a7fa7adfa048dabdffc99451d7aba1d9e6a9b6/src/uu/date/src/date.rs https://github.com/yuankunzhang/coreutils/blob/88a7fa7adfa04...
- 11mo ago
- none_to_remain 11mo agoIt certainly doesn't look intentional to me- it looks like at some point someone added "-r" as a valid option, but until this surfaced as a bug, no one actually implemented anything for it (and the logic happens to fall through to using the current date).
- rtpg 11mo agoa `todo!()` away from something being way more obvious. Unfortunate!
- Avamander 11mo agoMan, if I had a nickel every time some old Linux utility ignored a command-line flag I'd have a lot of nickels. I'd have even more nickels if I got one each time some utility parsed command-line flags wrong. I have automated a lot of things executing other utilities as a subprocess and it's absolutely crazy how many utilities handle CLI flags just seemingly correct, but not really.