From e1b41e531e6c17bc02eeeb8f893b92a07f0e6a94 Mon Sep 17 00:00:00 2001 From: Apertis package maintainers <packagers@lists.apertis.org> Date: Fri, 11 Jun 2021 11:41:14 +0200 Subject: [PATCH] d/patches: remove empty and/or outdated patches The `revert-twox-hash.dif` patch is no longer needed as a similar change was merged upstream, which is included in this package as part of the `sort` backport. `bump-thread-local` is an empty file causing issues when using `gbp pq`, and can be safely removed. Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com> --- debian/patches/bump-thread-local.diff | 0 debian/patches/revert-twox-hash.dif | 387 -------------------------- debian/patches/series | 2 - 3 files changed, 389 deletions(-) delete mode 100644 debian/patches/bump-thread-local.diff delete mode 100644 debian/patches/revert-twox-hash.dif diff --git a/debian/patches/bump-thread-local.diff b/debian/patches/bump-thread-local.diff deleted file mode 100644 index e69de29..0000000 diff --git a/debian/patches/revert-twox-hash.dif b/debian/patches/revert-twox-hash.dif deleted file mode 100644 index 6cee593..0000000 --- a/debian/patches/revert-twox-hash.dif +++ /dev/null @@ -1,387 +0,0 @@ -Index: coreutils/src/uu/sort/Cargo.toml -=================================================================== ---- coreutils.orig/src/uu/sort/Cargo.toml -+++ coreutils/src/uu/sort/Cargo.toml -@@ -15,9 +15,7 @@ edition = "2018" - path = "src/sort.rs" - - [dependencies] --rand = "0.7" - clap = "2.33" --twox-hash = "1.6.0" - itertools = "0.9" - semver = "0.9.0" - uucore = { version=">=0.0.8", package="uucore", path="../../uucore", features=["fs"] } -diff --git b/src/uu/sort/src/sort.rs a/src/uu/sort/src/sort.rs -index 6c29ad98..8e79ff94 100644 ---- b/src/uu/sort/src/sort.rs -+++ a/src/uu/sort/src/sort.rs -@@ -1,7 +1,6 @@ - // * This file is part of the uutils coreutils package. - // * - // * (c) Michael Yin <mikeyin@mikeyin.org> --// * (c) Robert Swinford <robert.swinford..AT..gmail.com> - // * - // * For the full copyright and license information, please view the LICENSE - // * file that was distributed with this source code. -@@ -13,17 +12,13 @@ extern crate uucore; - - use clap::{App, Arg}; - use itertools::Itertools; --use rand::distributions::Alphanumeric; --use rand::{thread_rng, Rng}; - use semver::Version; - use std::cmp::Ordering; - use std::collections::BinaryHeap; - use std::fs::File; --use std::hash::{Hash, Hasher}; - use std::io::{stdin, stdout, BufRead, BufReader, BufWriter, Lines, Read, Write}; - use std::mem::replace; - use std::path::Path; --use twox_hash::XxHash64; - use uucore::fs::is_stdin_interactive; // for Iterator::dedup() - - static NAME: &str = "sort"; -@@ -39,18 +34,16 @@ static OPT_DICTIONARY_ORDER: &str = "dictionary-order"; - static OPT_MERGE: &str = "merge"; - static OPT_CHECK: &str = "check"; - static OPT_IGNORE_CASE: &str = "ignore-case"; --static OPT_IGNORE_BLANKS: &str = "ignore-blanks"; - static OPT_OUTPUT: &str = "output"; - static OPT_REVERSE: &str = "reverse"; - static OPT_STABLE: &str = "stable"; - static OPT_UNIQUE: &str = "unique"; --static OPT_RANDOM: &str = "random-sort"; - - static ARG_FILES: &str = "files"; - - static DECIMAL_PT: char = '.'; - static THOUSANDS_SEP: char = ','; --#[derive(Eq, Ord, PartialEq, PartialOrd)] -+ - enum SortMode { - Numeric, - HumanNumeric, -@@ -67,10 +60,8 @@ struct Settings { - stable: bool, - unique: bool, - check: bool, -- random: bool, - compare_fns: Vec<fn(&str, &str) -> Ordering>, - transform_fns: Vec<fn(&str) -> String>, -- salt: String, - } - - impl Default for Settings { -@@ -83,10 +74,8 @@ impl Default for Settings { - stable: false, - unique: false, - check: false, -- random: false, - compare_fns: Vec::new(), - transform_fns: Vec::new(), -- salt: String::new(), - } - } - } -@@ -166,14 +155,17 @@ impl<'a> Iterator for FileMerger<'a> { - } - } - } -- - fn get_usage() -> String { - format!( - "{0} {1} -+ - Usage: - {0} [OPTION]... [FILE]... -+ - Write the sorted concatenation of all FILE(s) to standard output. -+ - Mandatory arguments for long options are mandatory for short options too. -+ - With no FILE, or when FILE is -, read standard input.", - NAME, VERSION - ) -@@ -236,12 +228,6 @@ pub fn uumain(args: impl uucore::Args) -> i32 { - .long(OPT_IGNORE_CASE) - .help("fold lower case to upper case characters"), - ) -- .arg( -- Arg::with_name(OPT_IGNORE_BLANKS) -- .short("b") -- .long(OPT_IGNORE_BLANKS) -- .help("ignore leading blanks when finding sort keys in each line"), -- ) - .arg( - Arg::with_name(OPT_OUTPUT) - .short("o") -@@ -250,12 +236,6 @@ pub fn uumain(args: impl uucore::Args) -> i32 { - .takes_value(true) - .value_name("FILENAME"), - ) -- .arg( -- Arg::with_name(OPT_RANDOM) -- .short("R") -- .long(OPT_RANDOM) -- .help("shuffle in random order"), -- ) - .arg( - Arg::with_name(OPT_REVERSE) - .short("r") -@@ -305,20 +285,11 @@ pub fn uumain(args: impl uucore::Args) -> i32 { - settings.transform_fns.push(|s| s.to_uppercase()); - } - -- if matches.is_present(OPT_IGNORE_BLANKS) { -- settings.transform_fns.push(|s| s.trim_start().to_string()); -- } -- - settings.outfile = matches.value_of(OPT_OUTPUT).map(String::from); - settings.reverse = matches.is_present(OPT_REVERSE); - settings.stable = matches.is_present(OPT_STABLE); - settings.unique = matches.is_present(OPT_UNIQUE); - -- if matches.is_present(OPT_RANDOM) { -- settings.random = matches.is_present(OPT_RANDOM); -- settings.salt = get_rand_string(); -- } -- - //let mut files = matches.free; - if files.is_empty() { - /* if no file, default to stdin */ -@@ -342,10 +313,10 @@ pub fn uumain(args: impl uucore::Args) -> i32 { - } - } - -- exec(files, &mut settings) -+ exec(files, &settings) - } - --fn exec(files: Vec<String>, settings: &mut Settings) -> i32 { -+fn exec(files: Vec<String>, settings: &Settings) -> i32 { - let mut lines = Vec::new(); - let mut file_merger = FileMerger::new(&settings); - -@@ -380,13 +351,6 @@ fn exec(files: Vec<String>, settings: &mut Settings) -> i32 { - } else { - print_sorted(file_merger, &settings.outfile) - } -- } else if settings.unique && settings.mode == SortMode::Numeric { -- print_sorted( -- lines -- .iter() -- .dedup_by(|a, b| num_sort_dedup(a) == num_sort_dedup(b)), -- &settings.outfile, -- ) - } else if settings.unique { - print_sorted(lines.iter().dedup(), &settings.outfile) - } else { -@@ -455,11 +419,7 @@ fn compare_by(a: &str, b: &str, settings: &Settings) -> Ordering { - }; - - for compare_fn in &settings.compare_fns { -- let cmp: Ordering = if settings.random { -- random_shuffle(a, b, settings.salt.clone()) -- } else { -- compare_fn(a, b) -- }; -+ let cmp = compare_fn(a, b); - if cmp != Ordering::Equal { - if settings.reverse { - return cmp.reverse(); -@@ -471,60 +431,36 @@ fn compare_by(a: &str, b: &str, settings: &Settings) -> Ordering { - Ordering::Equal - } - --fn default_compare(a: &str, b: &str) -> Ordering { -- a.cmp(b) --} -- --fn get_leading_number(a: &str) -> &str { -- let mut s = ""; -- for c in a.chars() { -- if !c.is_numeric() && !c.eq(&'-') && !c.eq(&' ') && !c.eq(&'.') && !c.eq(&',') { -- s = a.trim().split(c).next().unwrap(); -- break; -- } -- s = a.trim(); -- } -- return s; --} -- --// Matches GNU behavior, see: --// https://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html --// Specifically *not* the same as sort -n | uniq --fn num_sort_dedup(a: &str) -> &str { -- // Empty lines are dumped -- if a.is_empty() { -- return "0"; -- // And lines that don't begin numerically are dumped -- } else if !a.trim().chars().nth(0).unwrap_or('\0').is_numeric() { -- return "0"; -- } else { -- // Prepare lines for comparison of only the numerical leading numbers -- return get_leading_number(a); -- }; --} -- - /// Parse the beginning string into an f64, returning -inf instead of NaN on errors. - fn permissive_f64_parse(a: &str) -> f64 { -+ // Maybe should be split on non-digit, but then 10e100 won't parse properly. -+ // On the flip side, this will give NEG_INFINITY for "1,234", which might be OK -+ // because there's no way to handle both CSV and thousands separators without a new flag. -+ // GNU sort treats "1,234" as "1" in numeric, so maybe it's fine. - // GNU sort treats "NaN" as non-number in numeric, so it needs special care. -- match a.parse::<f64>() { -- Ok(a) if a.is_nan() => std::f64::NEG_INFINITY, -- Ok(a) => a, -- Err(_) => std::f64::NEG_INFINITY, -+ match a.split_whitespace().next() { -+ None => std::f64::NEG_INFINITY, -+ Some(sa) => match sa.parse::<f64>() { -+ Ok(a) if a.is_nan() => std::f64::NEG_INFINITY, -+ Ok(a) => a, -+ Err(_) => std::f64::NEG_INFINITY, -+ }, - } - } - --/// Compares two floats, with errors and non-numerics assumed to be -inf. --/// Stops coercing at the first non-numeric char. -+fn default_compare(a: &str, b: &str) -> Ordering { -+ a.cmp(b) -+} -+ -+/// Compares two floating point numbers, with errors being assumed to be -inf. -+/// Stops coercing at the first whitespace char, so 1e2 will parse as 100 but -+/// 1,000 will parse as -inf. - fn numeric_compare(a: &str, b: &str) -> Ordering { - #![allow(clippy::comparison_chain)] -- -- let sa = get_leading_number(a); -- let sb = get_leading_number(b); -- -- let fa = permissive_f64_parse(sa); -- let fb = permissive_f64_parse(sb); -- -- // f64::cmp isn't implemented (due to NaN issues); implement directly instead -+ let fa = permissive_f64_parse(a); -+ let fb = permissive_f64_parse(b); -+ // f64::cmp isn't implemented because NaN messes with it -+ // but we sidestep that with permissive_f64_parse so just fake it - if fa > fb { - Ordering::Greater - } else if fa < fb { -@@ -535,10 +471,10 @@ fn numeric_compare(a: &str, b: &str) -> Ordering { - } - - fn human_numeric_convert(a: &str) -> f64 { -- let int_str = get_leading_number(a); -- let (_, s) = a.split_at(int_str.len()); -- let int_part = permissive_f64_parse(int_str); -- let suffix: f64 = match s.parse().unwrap_or('\0') { -+ let int_str: String = a.chars().take_while(|c| c.is_numeric()).collect(); -+ let suffix = a.chars().find(|c| !c.is_numeric()); -+ let int_part = int_str.parse::<f64>().unwrap_or(-1f64) as f64; -+ let suffix: f64 = match suffix.unwrap_or('\0') { - 'K' => 1000f64, - 'M' => 1E6, - 'G' => 1E9, -@@ -565,30 +501,6 @@ fn human_numeric_size_compare(a: &str, b: &str) -> Ordering { - } - } - --fn random_shuffle(a: &str, b: &str, salt: String) -> Ordering { -- #![allow(clippy::comparison_chain)] -- let salt_slice = salt.as_str(); -- -- let da = hash(&[a, salt_slice].concat()); -- let db = hash(&[b, salt_slice].concat()); -- -- da.cmp(&db) --} -- --fn get_rand_string() -> String { -- thread_rng() -- .sample_iter(&Alphanumeric) -- .take(16) -- .map(char::from) -- .collect::<String>() --} -- --fn hash<T: Hash>(t: &T) -> u64 { -- let mut s: XxHash64 = Default::default(); -- t.hash(&mut s); -- s.finish() --} -- - #[derive(Eq, Ord, PartialEq, PartialOrd)] - enum Month { - Unknown, -@@ -694,65 +606,3 @@ fn open(path: &str) -> Option<(Box<dyn Read>, bool)> { - } - } - } -- --#[cfg(test)] --mod tests { -- -- use super::*; -- -- #[test] -- fn test_default_compare() { -- let a = "your own"; -- let b = "your place"; -- -- assert_eq!(Ordering::Less, default_compare(a, b)); -- } -- -- #[test] -- fn test_numeric_compare1() { -- let a = "149:7"; -- let b = "150:5"; -- -- assert_eq!(Ordering::Less, numeric_compare(a, b)); -- } -- -- #[test] -- fn test_numeric_compare2() { -- let a = "-1.02"; -- let b = "1"; -- -- assert_eq!(Ordering::Less, numeric_compare(a, b)); -- } -- -- #[test] -- fn test_human_numeric_compare() { -- let a = "300K"; -- let b = "1M"; -- -- assert_eq!(Ordering::Less, human_numeric_size_compare(a, b)); -- } -- -- #[test] -- fn test_month_compare() { -- let a = "JaN"; -- let b = "OCt"; -- -- assert_eq!(Ordering::Less, month_compare(a, b)); -- } -- #[test] -- fn test_version_compare() { -- let a = "1.2.3-alpha2"; -- let b = "1.4.0"; -- -- assert_eq!(Ordering::Less, version_compare(a, b)); -- } -- -- #[test] -- fn test_random_compare() { -- let a = "9"; -- let b = "9"; -- let c = get_rand_string(); -- -- assert_eq!(Ordering::Equal, random_shuffle(a, b, c)); -- } --} diff --git a/debian/patches/series b/debian/patches/series index d0b7b0f..a8e5950 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -3,12 +3,10 @@ fix-dep-code.diff cargo_registry.diff disable-advapi32-sys.diff bump-cpp.diff -bump-thread-local.diff lower-libc-dep.diff lower-nix-dep.diff revert-file-diff-0.diff revert-file-diff.diff -revert-twox-hash.dif revert-retain-mut.diff # Backported from upstream -- GitLab