Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove duplicate crate check. #26267

Closed
wants to merge 2 commits into from
Closed

Remove duplicate crate check. #26267

wants to merge 2 commits into from

Conversation

@jdm
Copy link
Member

jdm commented Apr 22, 2020

Fixes #26262. We can always restore this check if we decide to disable dependabot or enforce keeping the list of duplicates up to date before merging the automated PRs.

jdm added 2 commits Apr 22, 2020
@highfive
Copy link

highfive commented Apr 22, 2020

Heads up! This PR modifies the following files:

  • @wafflespeanut: python/tidy/servo_tidy_tests/test_tidy.py, python/tidy/servo_tidy/tidy.py
@SimonSapin
Copy link
Member

SimonSapin commented Apr 22, 2020

I don’t think this is a good solution. Compiling Servo involves hundreds of crates. Without any automation to track duplicates I’m afraid this number could explode.

I think it’s fine to be more liberal about adding exceptions and allow duplicates, especially for security fixes. But I feel it’s still important to do so knowingly.

From the issue:

Dependabot removes duplicates by upgrading all dependencies step by step.

This would be true in a world where the entire ecosystem uses Dependabot. Duplicate crates are often due to an intermediate dependency (not in our repository) not having upgraded its own dependencies.

@jdm
Copy link
Member Author

jdm commented Apr 22, 2020

I'm going to start an email discussion about the future of dependabot usage and the duplicate crate check.

@Eijebong
Copy link
Member

Eijebong commented Apr 25, 2020

Here's what a full upgrade/update would look like 😱

./Cargo.lock:1: duplicate versions for package `wayland-protocols`
	The following packages depend on version 0.21.13 from 'crates.io':
	The following packages depend on version 0.23.6 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `winapi`
	The following packages depend on version 0.2.8 from 'crates.io':
	The following packages depend on version 0.3.8 from 'https://github.com/servo/winapi-rs?branch=patch-1':
./Cargo.lock:1: duplicate versions for package `cookie`
	The following packages depend on version 0.11.2 from 'crates.io':
	The following packages depend on version 0.12.0 from 'crates.io':
	The following packages depend on version 0.13.3 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `parking_lot_core`
	The following packages depend on version 0.6.2 from 'crates.io':
	The following packages depend on version 0.7.2 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `want`
	The following packages depend on version 0.2.0 from 'crates.io':
	The following packages depend on version 0.3.0 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `headers-core`
	The following packages depend on version 0.1.1 from 'crates.io':
	The following packages depend on version 0.2.0 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `winit`
	The following packages depend on version 0.19.3 from 'crates.io':
	The following packages depend on version 0.22.1 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `futures`
	The following packages depend on version 0.1.29 from 'crates.io':
	The following packages depend on version 0.3.4 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `smithay-client-toolkit`
	The following packages depend on version 0.4.6 from 'crates.io':
	The following packages depend on version 0.6.6 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `servo-fontconfig`
	The following packages depend on version 0.4.0 from 'crates.io':
	The following packages depend on version 0.5.0 from 'crates.io':
./Cargo.lock:1: duplicates for `peek-poke` are allowed, but only single version found
	The following packages depend on version 0.2.0 from 'https://github.com/servo/webrender':
./Cargo.lock:1: duplicate versions for package `png`
	The following packages depend on version 0.15.3 from 'crates.io':
	The following packages depend on version 0.16.3 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `headers`
	The following packages depend on version 0.2.3 from 'crates.io':
	The following packages depend on version 0.3.2 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `wayland-scanner`
	The following packages depend on version 0.21.13 from 'crates.io':
	The following packages depend on version 0.23.6 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `hyper`
	The following packages depend on version 0.12.35 from 'crates.io':
	The following packages depend on version 0.13.5 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `freetype`
	The following packages depend on version 0.4.1 from 'crates.io':
	The following packages depend on version 0.5.1 from 'crates.io':
./Cargo.lock:1: duplicates for `peek-poke-derive` are allowed, but only single version found
	The following packages depend on version 0.2.1 from 'https://github.com/servo/webrender':
./Cargo.lock:1: duplicate versions for package `bytes`
	The following packages depend on version 0.4.12 from 'crates.io':
	The following packages depend on version 0.5.4 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `libloading`
	The following packages depend on version 0.5.2 from 'crates.io':
	The following packages depend on version 0.6.1 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `tokio`
	The following packages depend on version 0.1.22 from 'crates.io':
	The following packages depend on version 0.2.19 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `http`
	The following packages depend on version 0.1.21 from 'crates.io':
	The following packages depend on version 0.2.1 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `deflate`
	The following packages depend on version 0.7.20 from 'crates.io':
	The following packages depend on version 0.8.4 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `nix`
	The following packages depend on version 0.14.1 from 'crates.io':
	The following packages depend on version 0.17.0 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `http-body`
	The following packages depend on version 0.1.0 from 'crates.io':
	The following packages depend on version 0.3.1 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `h2`
	The following packages depend on version 0.1.26 from 'crates.io':
	The following packages depend on version 0.2.4 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `wayland-client`
	The following packages depend on version 0.21.13 from 'crates.io':
	The following packages depend on version 0.23.6 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `rusttype`
	The following packages depend on version 0.7.9 from 'crates.io':
	The following packages depend on version 0.8.3 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `wayland-commons`
	The following packages depend on version 0.21.13 from 'crates.io':
	The following packages depend on version 0.23.6 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `servo-fontconfig-sys`
	The following packages depend on version 4.0.6 from 'crates.io':
	The following packages depend on version 5.0.1 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `time`
	The following packages depend on version 0.1.43 from 'crates.io':
	The following packages depend on version 0.2.10 from 'crates.io':
./Cargo.lock:1: duplicate versions for package `parking_lot`
	The following packages depend on version 0.10.2 from 'crates.io':
	The following packages depend on version 0.9.0 from 'crates.io':
[eijebong@plutonium] ~/code/servo (nightly-2020-04-08) (master) >>> cat Cargo.lock | rg "name = " | awk '{ print $3 }' | sort | uniq -c | grep -v "1 \""
      2 "arrayvec"
      3 "base64"
      2 "bytes"
      2 "cocoa"
      3 "cookie"
      2 "core-foundation"
      2 "core-foundation-sys"
      2 "core-graphics"
      2 "core-text"
      2 "deflate"
      2 "dwrote"
      2 "freetype"
      2 "futures"
      3 "gleam"
      2 "gl_generator"
      2 "h2"
      2 "headers"
      2 "headers-core"
      2 "http"
      2 "http-body"
      2 "hyper"
      2 "libloading"
      2 "lyon_geom"
      2 "mio"
      2 "nix"
      2 "parking_lot"
      2 "parking_lot_core"
      2 "png"
      2 "proc-macro2"
      2 "quote"
      2 "rusttype"
      2 "servo-fontconfig"
      2 "servo-fontconfig-sys"
      2 "smallvec"
      2 "smithay-client-toolkit"
      2 "time"
      2 "tokio"
      2 "unicode-xid"
      2 "want"
      2 "wayland-client"
      2 "wayland-commons"
      2 "wayland-protocols"
      2 "wayland-scanner"
      3 "wayland-sys"
      2 "winapi"
      2 "winit"
@jdm
Copy link
Member Author

jdm commented Apr 27, 2020

Popular opinion seems to be against this.

@jdm jdm closed this Apr 27, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

5 participants
You can’t perform that action at this time.