summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:47:57 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:47:57 +0000
commitb6541ea3807ccad597d4890b1a1eeb335f1268ac (patch)
treeacc0b1519e8ee04e2dfe584301d4884a80004831
parentAdding upstream version 0.70.1+ds1. (diff)
downloadcargo-b6541ea3807ccad597d4890b1a1eeb335f1268ac.tar.xz
cargo-b6541ea3807ccad597d4890b1a1eeb335f1268ac.zip
Adding debian version 0.70.1+ds1-2.debian/0.70.1+ds1-2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
-rw-r--r--debian/README.source48
-rwxr-xr-xdebian/bin/cargo257
-rw-r--r--debian/cargo-doc.docs1
-rw-r--r--debian/cargo.bash-completion1
-rw-r--r--debian/cargo.dirs1
-rw-r--r--debian/cargo.manpages2
-rw-r--r--debian/changelog958
-rw-r--r--debian/compat1
-rw-r--r--debian/control77
-rw-r--r--debian/copyright997
-rw-r--r--debian/debcargo-conf.patch114
-rw-r--r--debian/gbp.conf15
-rw-r--r--debian/install3
-rwxr-xr-xdebian/lintian-to-copyright.sh5
-rwxr-xr-xdebian/make_orig_multi-pre-vendor.sh16
-rwxr-xr-xdebian/make_orig_multi.sh71
-rw-r--r--debian/missing-sources/prism.js599
-rw-r--r--debian/patches/0003-tests-add-missing-cross-disabled-checks.patch43
-rw-r--r--debian/patches/0004-test-loose-overly-matches-for-git-cli-output.patch43
-rw-r--r--debian/patches/1000-riscv64-skip-split-debuginfo-test.patch19
-rw-r--r--debian/patches/2000-fix-test-stderr.patch12
-rw-r--r--debian/patches/2002_disable-net-tests.patch615
-rw-r--r--debian/patches/2003-workaround-qemu-vfork-command-not-found.patch19
-rw-r--r--debian/patches/2200-workaround-x32-test.patch15
-rw-r--r--debian/patches/README3
-rw-r--r--debian/patches/disable-fs-specific-test.patch13
-rw-r--r--debian/patches/series11
-rw-r--r--debian/patches/update-libgit2.patch37
-rwxr-xr-xdebian/rules62
-rwxr-xr-xdebian/scripts/audit-vendor-source40
-rwxr-xr-xdebian/scripts/debian-cargo-vendor167
-rwxr-xr-xdebian/scripts/guess-crate-copyright45
-rwxr-xr-xdebian/scripts/prune-checksums47
-rw-r--r--debian/source/format1
-rw-r--r--debian/source/lintian-overrides5
-rw-r--r--debian/tests/control4
-rwxr-xr-xdebian/tests/self-build6
-rw-r--r--debian/tests/self-build.config.toml5
-rw-r--r--debian/vendor-tarball-unsuspicious.txt202
-rw-r--r--debian/watch4
40 files changed, 4584 insertions, 0 deletions
diff --git a/debian/README.source b/debian/README.source
new file mode 100644
index 0000000..3e552c3
--- /dev/null
+++ b/debian/README.source
@@ -0,0 +1,48 @@
+Updating the package
+====================
+
+0. Update debcargo-conf.git so that cargo's dependencies are up-to-date. This
+ means less stuff will have to be patched (in debian/debcargo-conf.patch) in
+ the next step. This might take a while, ask other people for help if needed.
+1. Empty d/make_orig_multi-pre-vendor.sh, then run d/make_orig_multi.sh <version>.
+
+ If cargo-vendor tries to use too-new crates that debcargo-conf doesn't have
+ patches for yet, downgrade them by tweaking d/make_orig_multi-pre-vendor.sh
+
+ e.g. cargo update -p tempfile --precise 3.1.0
+
+ You will need to have cargo-lock available
+ $ cargo install cargo-lock --features=cli
+
+2. Verify the -vendor component tarball to make sure it looks good.
+ If not, edit d/make_orig_multi.sh and the surrounding files (such as patches
+ and exclude files) and repeat the above until it looks good.
+3. $ git fetch upstream
+ You might have to first run:
+ $ git remote add upstream https://github.com/rust-lang/cargo
+4. $ git checkout debian/experimental
+ $ gbp import-orig ../cargo_<version>.orig.tar.gz
+ If you get errors, check the extra default flags in d/gbp.conf
+5. Check that no old versions remain in vendor/. If there are, then your git
+ repo was messed up when you ran (4). Rewind the debian/sid, upstream, and
+ pristine-tar branches, delete the upstream/<version> tag; this reverts step
+ (4). Clean up your git repo, and then try (4) again.
+6. Update d/patches and the rest of the packaging, as normal.
+
+General info
+============
+
+Cargo depends on a few hundred other crates (which themselves need cargo to
+build). To avoid an insane bootstrapping loop, this package therefore embeds
+all dependency crates. This is made convenient by the "vendor" subcommand.
+
+(The alternative method, that expresses the true upstream dependencies more
+faithfully, can be found in the "rust-cargo" crate, which is packaged just like
+any other Debian Rust package. That is used as a library by the Debian packages
+of various Rust ecosystem tools that build on top of cargo, such as our very
+own debcargo. By contrast, this package is used as the actual executable
+package manager, with a smaller bootstrapping requirement.)
+
+As such, the original source is composed by two tarballs:
+ * cargo source
+ * dependencies crates (under vendor/), stripped of unused embedded C libraries
diff --git a/debian/bin/cargo b/debian/bin/cargo
new file mode 100755
index 0000000..5077234
--- /dev/null
+++ b/debian/bin/cargo
@@ -0,0 +1,257 @@
+#!/usr/bin/python3
+"""
+Wrapper around cargo to have it build using Debian settings.
+
+Usage:
+ export PATH=/path/to/dir/of/this/script:$PATH
+ export CARGO_HOME=debian/cargo_home
+ cargo prepare-debian /path/to/local/registry [--link-from-system]
+ cargo build
+ cargo test
+ cargo install
+ cargo clean
+ [rm -rf /path/to/local/registry]
+
+The "prepare-debian" subcommand writes a config file to $CARGO_HOME that makes
+the subsequent invocations use our Debian flags. The "--link-from-system" flag
+is optional; if you use it we will create /path/to/local/registry and symlink
+the contents of /usr/share/cargo/registry into it. You are then responsible for
+cleaning it up afterwards (a simple `rm -rf` should do).
+
+See cargo:d/rules and dh-cargo:cargo.pm for more examples.
+
+Make sure you add "Build-Depends: python3:native" if you use this directly.
+If using this only indirectly via dh-cargo, then you only need "Build-Depends:
+dh-cargo"; this is a general principle when declaring dependencies.
+
+If CARGO_HOME doesn't end with debian/cargo_home, then this script does nothing
+and passes through directly to cargo.
+
+Otherwise, you *must* set the following environment variables:
+
+- DEB_CARGO_CRATE
+ ${crate}_${version} of whatever you're building.
+
+- CFLAGS CXXFLAGS CPPFLAGS LDFLAGS [*]
+- DEB_HOST_GNU_TYPE DEB_HOST_RUST_TYPE [*]
+
+- (required only for `cargo install`) DESTDIR
+ DESTDIR to install build artifacts under. If running via dh-cargo, this will
+ be set automatically by debhelper, see `dh_auto_install` for details.
+
+- (optional) DEB_BUILD_OPTIONS DEB_BUILD_PROFILES
+
+- (optional) DEB_CARGO_INSTALL_PREFIX
+ Prefix to install build artifacts under. Default: /usr. Sometimes you might
+ want to change this to /usr/lib/cargo if the binary clashes with something
+ else, and then symlink it into /usr/bin under an alternative name.
+
+- (optional) DEB_CARGO_CRATE_IN_REGISTRY
+ Whether the crate is in the local-registry (1) or cwd (0, empty, default).
+
+For the envvars marked [*], it is easiest to set these in your d/rules via:
+
+ include /usr/share/dpkg/architecture.mk
+ include /usr/share/dpkg/buildflags.mk
+ include /usr/share/rustc/architecture.mk
+ export CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
+ export DEB_HOST_RUST_TYPE DEB_HOST_GNU_TYPE
+"""
+
+import os
+import os.path
+import shutil
+import subprocess
+import sys
+
+FLAGS = "CFLAGS CXXFLAGS CPPFLAGS LDFLAGS"
+ARCHES = "DEB_HOST_GNU_TYPE DEB_HOST_RUST_TYPE"
+SYSTEM_REGISTRY = "/usr/share/cargo/registry"
+
+def log(*args):
+ print("debian cargo wrapper:", *args, file=sys.stderr, flush=True)
+
+def logrun(*args, **kwargs):
+ log("running subprocess", args, kwargs)
+ return subprocess.run(*args, **kwargs)
+
+def sourcepath(p=None):
+ return os.path.join(os.getcwd(), p) if p else os.getcwd()
+
+def prepare_debian(cargo_home, registry, cratespec, host_gnu_type, ldflags, link_from_system, extra_rustflags):
+ registry_path = sourcepath(registry)
+ if link_from_system:
+ log("linking %s/* into %s/" % (SYSTEM_REGISTRY, registry_path))
+ os.makedirs(registry_path, exist_ok=True)
+ crates = os.listdir(SYSTEM_REGISTRY) if os.path.isdir(SYSTEM_REGISTRY) else []
+ for c in crates:
+ target = os.path.join(registry_path, c)
+ if not os.path.islink(target):
+ os.symlink(os.path.join(SYSTEM_REGISTRY, c), target)
+ elif not os.path.exists(registry_path):
+ raise ValueError("non-existent registry: %s" % registry)
+
+ rustflags = "-C debuginfo=2 --cap-lints warn".split()
+ rustflags.extend(["-C", "linker=%s-gcc" % host_gnu_type])
+ for f in ldflags:
+ rustflags.extend(["-C", "link-arg=%s" % f])
+ if link_from_system:
+ rustflags.extend([
+ # Note that this order is important! Rust evaluates these options in
+ # priority of reverse order, so if the second option were in front,
+ # it would never be used, because any paths in registry_path are
+ # also in sourcepath().
+ "--remap-path-prefix", "%s=%s/%s" %
+ (sourcepath(), SYSTEM_REGISTRY, cratespec.replace("_", "-")),
+ "--remap-path-prefix", "%s=%s" % (registry_path, SYSTEM_REGISTRY),
+ ])
+ rustflags.extend(extra_rustflags.split())
+
+ # TODO: we cannot enable this until dh_shlibdeps works correctly; atm we get:
+ # dpkg-shlibdeps: warning: can't extract name and version from library name 'libstd-XXXXXXXX.so'
+ # and the resulting cargo.deb does not depend on the correct version of libstd-rust-1.XX
+ # We probably need to add override_dh_makeshlibs to d/rules of rustc
+ #rustflags.extend(["-C", "prefer-dynamic"])
+
+ os.makedirs(cargo_home, exist_ok=True)
+ with open("%s/config" % cargo_home, "w") as fp:
+ fp.write("""[source.crates-io]
+replace-with = "dh-cargo-registry"
+
+[source.dh-cargo-registry]
+directory = "{0}"
+
+[build]
+rustflags = {1}
+""".format(registry_path, repr(rustflags)))
+
+ return 0
+
+def install(destdir, cratespec, host_rust_type, crate_in_registry, install_prefix, *args):
+ crate, version = cratespec.rsplit("_", 1)
+ log("installing into destdir '%s' prefix '%s'" % (destdir, install_prefix))
+ install_target = destdir + install_prefix
+ logrun(["env", "RUST_BACKTRACE=1",
+ # set CARGO_TARGET_DIR so build products are saved in target/
+ # normally `cargo install` deletes them when it exits
+ "CARGO_TARGET_DIR=" + sourcepath("target"),
+ "/usr/bin/cargo"] + list(args) +
+ ([crate, "--vers", version] if crate_in_registry else ["--path", sourcepath()]) +
+ ["--root", install_target], check=True)
+ logrun(["rm", "-f", "%s/.crates.toml" % install_target])
+ logrun(["rm", "-f", "%s/.crates2.json" % install_target])
+
+ # if there was a custom build output, symlink it to debian/cargo_out_dir
+ # hopefully cargo will provide a better solution in future https://github.com/rust-lang/cargo/issues/5457
+ r = logrun('''ls -td "target/%s/release/build/%s"-*/out 2>/dev/null | head -n1'''
+ % (host_rust_type, crate), shell=True, stdout=subprocess.PIPE).stdout
+ r = r.decode("utf-8").rstrip()
+ if r:
+ logrun(["ln", "-sfT", "../%s" % r, "debian/cargo_out_dir"], check=True)
+ return 0
+
+def main(*args):
+ cargo_home = os.getenv("CARGO_HOME", "")
+ if not cargo_home.endswith("/debian/cargo_home"):
+ os.execv("/usr/bin/cargo", ["cargo"] + list(args))
+
+ if any(f not in os.environ for f in FLAGS.split()):
+ raise ValueError("not all of %s set; did you call dpkg-buildflags?" % FLAGS)
+
+ if any(f not in os.environ for f in ARCHES.split()):
+ raise ValueError("not all of %s set; did you include architecture.mk?" % ARCHES)
+
+ build_options = os.getenv("DEB_BUILD_OPTIONS", "").split()
+ build_profiles = os.getenv("DEB_BUILD_PROFILES", "").split()
+
+ parallel = []
+ lto = 0
+ for o in build_options:
+ if o.startswith("parallel="):
+ parallel = ["-j" + o[9:]]
+ elif o.startswith("optimize="):
+ opt_arg = o[9:]
+ for arg in opt_arg.split(","):
+ if opt_arg == "-lto":
+ lto = -1
+ elif opt_arg == "+lto":
+ lto = 1
+ else:
+ log(f"WARNING: unhandled optimization flag: {opt_arg}")
+
+ nodoc = "nodoc" in build_options or "nodoc" in build_profiles
+ nocheck = "nocheck" in build_options or "nocheck" in build_profiles
+
+ # note this is actually the "build target" type, see rustc's README.Debian
+ # for full details of the messed-up terminology here
+ host_rust_type = os.getenv("DEB_HOST_RUST_TYPE", "")
+ host_gnu_type = os.getenv("DEB_HOST_GNU_TYPE", "")
+
+ log("options, profiles, parallel, lto:", build_options, build_profiles, parallel, lto)
+ log("rust_type, gnu_type:", ", ".join([host_rust_type, host_gnu_type]))
+
+ if "RUSTFLAGS" in os.environ:
+ # see https://github.com/rust-lang/cargo/issues/6338 for explanation on why we must do this
+ log("unsetting RUSTFLAGS and assuming it will be (or already was) added to $CARGO_HOME/config")
+ extra_rustflags = os.environ["RUSTFLAGS"]
+ del os.environ["RUSTFLAGS"]
+ else:
+ extra_rustflags = ""
+
+ if args[0] == "prepare-debian":
+ registry = args[1]
+ link_from_system = False
+ if len(args) > 2 and args[2] == "--link-from-system":
+ link_from_system = True
+ return prepare_debian(cargo_home, registry,
+ os.environ["DEB_CARGO_CRATE"], host_gnu_type,
+ os.getenv("LDFLAGS", "").split(), link_from_system, extra_rustflags)
+
+ newargs = []
+ subcmd = None
+ for a in args:
+ if (subcmd is None) and (a in ("build", "rustc", "doc", "test", "bench", "install")):
+ subcmd = a
+ newargs.extend(["-Zavoid-dev-deps", a, "--verbose", "--verbose"] +
+ parallel + ["--target", host_rust_type])
+ elif (subcmd is None) and (a == "clean"):
+ subcmd = a
+ newargs.extend([a, "--verbose", "--verbose"])
+ else:
+ newargs.append(a)
+
+ if subcmd is not None and "--verbose" in newargs and "--quiet" in newargs:
+ newargs.remove("--quiet")
+
+ if nodoc and subcmd == "doc":
+ return 0
+ if nocheck and subcmd in ("test", "bench"):
+ return 0
+
+ if lto == 1:
+ newargs.append("--config profile.release.lto = \"thin\"")
+ elif lto == -1:
+ newargs.append("--config profile.release.lto = false")
+
+ if subcmd == "clean":
+ logrun(["env", "RUST_BACKTRACE=1", "/usr/bin/cargo"] + list(newargs), check=True)
+ if os.path.exists(cargo_home):
+ shutil.rmtree(cargo_home)
+ return 0
+
+ cargo_config = "%s/config" % cargo_home
+ if not os.path.exists(cargo_config):
+ raise ValueError("does not exist: %s, did you run `cargo prepare-debian <registry>`?" % cargo_config)
+
+ if subcmd == "install":
+ return install(os.getenv("DESTDIR", ""),
+ os.environ["DEB_CARGO_CRATE"],
+ host_rust_type,
+ os.getenv("DEB_CARGO_CRATE_IN_REGISTRY", "") == "1",
+ os.getenv("DEB_CARGO_INSTALL_PREFIX", "/usr"),
+ *newargs)
+ else:
+ return logrun(["env", "RUST_BACKTRACE=1", "/usr/bin/cargo"] + list(newargs)).returncode
+
+if __name__ == "__main__":
+ sys.exit(main(*sys.argv[1:]))
diff --git a/debian/cargo-doc.docs b/debian/cargo-doc.docs
new file mode 100644
index 0000000..102623b
--- /dev/null
+++ b/debian/cargo-doc.docs
@@ -0,0 +1 @@
+target/*/doc
diff --git a/debian/cargo.bash-completion b/debian/cargo.bash-completion
new file mode 100644
index 0000000..db46459
--- /dev/null
+++ b/debian/cargo.bash-completion
@@ -0,0 +1 @@
+src/etc/cargo.bashcomp.sh cargo
diff --git a/debian/cargo.dirs b/debian/cargo.dirs
new file mode 100644
index 0000000..e772481
--- /dev/null
+++ b/debian/cargo.dirs
@@ -0,0 +1 @@
+usr/bin
diff --git a/debian/cargo.manpages b/debian/cargo.manpages
new file mode 100644
index 0000000..0b2e6bd
--- /dev/null
+++ b/debian/cargo.manpages
@@ -0,0 +1,2 @@
+src/etc/man/cargo-*.1
+src/etc/man/cargo.1
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..30a4cf8
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,958 @@
+cargo (0.70.1+ds1-2) unstable; urgency=medium
+
+ [ Fabian Gruenbichler ]
+ * riscv64: skip test for split debug info (support disabled in rustc)
+
+ -- Fabian Grünbichler <debian@fabian.gruenbichler.email> Sat, 30 Dec 2023 15:00:37 +0100
+
+cargo (0.70.1+ds1-1) unstable; urgency=medium
+
+ * Upload to unstable
+
+ -- Fabian Grünbichler <debian@fabian.gruenbichler.email> Sat, 16 Dec 2023 11:03:47 +0100
+
+cargo (0.70.1+ds1-1~exp1) experimental; urgency=medium
+
+ * update libgit2 to 1.7.1
+
+ -- Fabian Grünbichler <debian@fabian.gruenbichler.email> Sat, 16 Dec 2023 10:46:19 +0100
+
+cargo (0.70.1-1~exp1) experimental; urgency=medium
+
+ * New upstream release
+ * Fix cargo-doc contents
+ * Update lintian overrides
+ * Add myself to Uploaders
+ * Disable flaky publish tests
+
+ -- Fabian Grünbichler <debian@fabian.gruenbichler.email> Tue, 24 Oct 2023 11:41:25 +0200
+
+cargo (0.66.0+ds2-2) unstable; urgency=medium
+
+ * disable more flaky publish tests
+
+ -- Fabian Grünbichler <debian@fabian.gruenbichler.email> Mon, 04 Dec 2023 07:57:07 +0100
+
+cargo (0.66.0+ds2-1) unstable; urgency=medium
+
+ [ Zixing Liu ]
+ * d/bin/cargo: handle LTO options from DEB_BUILD_OPTIONS ...
+
+ [ Fabian Grünbichler ]
+ * update libgit2 to 1.7.1
+ * disable flaky publish tests
+
+ -- Fabian Grünbichler <debian@fabian.gruenbichler.email> Sun, 03 Dec 2023 19:38:28 +0100
+
+cargo (0.66.0+ds1-1) unstable; urgency=medium
+
+ [ Fabian Grünbichler ]
+ * fix CVE-2022-46176 (Thanks Peter Green!)
+ * repack vendored sources with required libgit2-sys/git2/git2-curl versions
+ * update unsuspicious files
+
+ -- Fabian Gruenbichler <debian@fabian.gruenbichler.email> Wed, 11 Jan 2023 18:55:09 +0100
+
+cargo (0.66.0-1) unstable; urgency=medium
+
+ * new upstream version 0.66
+
+ [ Blair Noctis ]
+ * Update debcargo-conf.patch, unapply tempfile patch to match vendored
+ * Refresh patches and remove upstream applied CVE patches
+ * Patch test macro to work around qemu vfork bug when command not found
+
+ [ Fabian Grünbichler ]
+ * no longer pin git2/libgit2-sys
+ * update debcargo-conf.patch (concolor, clap)
+ * update unsuspicious files
+ * d/control: depend on rustc 1.63
+ * drop armel workaround
+
+ [ Rob Shearman ]
+ * d/control: update minimum cargo, rustc and libstd-rust-dev versions
+
+ -- Fabian Gruenbichler <debian@fabian.gruenbichler.email> Sun, 08 Jan 2023 16:38:30 +0100
+
+cargo (0.63.1-3) unstable; urgency=medium
+
+ * workaround armel breakage
+
+ -- Fabian Gruenbichler <debian@fabian.gruenbichler.email> Wed, 07 Dec 2022 14:58:58 +0100
+
+cargo (0.63.1-2) unstable; urgency=medium
+
+ [ Ryan Gonzalez ]
+ * Fix path remapping for crate dependencies
+
+ [ Fabian Grünbichler ]
+ * disable utf-8 fs-specific test
+ * fix i386 build / cross tests
+
+ -- Fabian Gruenbichler <debian@fabian.gruenbichler.email> Sat, 19 Nov 2022 10:48:29 +0100
+
+cargo (0.63.1-1) unstable; urgency=medium
+
+ * New upstream release
+ * switch to libgit2-1.5 (Closes: #1021504, #1017828)
+ * Update guess-crate-copyright to handle missing authors field gracefully
+ * Update audit-vendor-source to handle ZFS and similar file systems
+ * silence GZIP deprecation warning
+ * fix CVE-2022-36113/CVE-2022-36114 (Closes: #1021142)
+
+ [ Helmut Grohne ]
+ * Fix FTCBFS: Missing Build-Depends: zlib1g-dev:native. (Closes: #1019491)
+
+ -- Fabian Gruenbichler <debian@fabian.gruenbichler.email> Sat, 17 Sep 2022 22:25:02 +0200
+
+cargo (0.57.0-7) unstable; urgency=medium
+
+ * Team upload.
+ * Upload to unstable.
+
+ -- Peter Michael Green <plugwash@debian.org> Mon, 02 May 2022 20:57:46 +0000
+
+cargo (0.57.0-6) experimental; urgency=medium
+
+ * Team upload.
+ * Fix debian cargo wrapper to stop looking for subcommands once it finds one
+ so that it is possible to test features whose name matches a subcommand.
+ * Limit autopkgtest to architectures where it does not run out of disk space.
+ * Remove patches for libgit2 1.1.x and adjust dependency for 0.3.x
+ (Closes: 1009015)
+ * Remove build-dependency on cmake (Closes: 981256)
+
+ -- Peter Michael Green <plugwash@debian.org> Sun, 10 Apr 2022 00:10:04 +0000
+
+cargo (0.57.0-5) unstable; urgency=medium
+
+ [ Simon Chopin ]
+ * Disable cross-build tests in autopkgtests
+ * d/p/0001-Change-test-to-not-trigger-emoji-error.patch:
+ Cherry-picked from upstream to fix testsuite against rustc 1.57
+ * d/p/0002-Remove-eacces-test.patch: Cherry-picked from upstream as
+ cargo doesn't seem to trigger the error with recent Rust
+
+ -- Ximin Luo <infinity0@debian.org> Wed, 09 Mar 2022 13:52:14 +0000
+
+cargo (0.57.0-4) unstable; urgency=medium
+
+ [ Simon Chopin ]
+ * Add an autopkgtest for cargo to build itself
+
+ [ Ximin Luo ]
+ * Fix FTBFS on x32.
+
+ -- Ximin Luo <infinity0@debian.org> Mon, 07 Mar 2022 20:35:00 +0000
+
+cargo (0.57.0-3) unstable; urgency=medium
+
+ * Actually fix failing tests.
+ * Fix armhf build by backporting a rust-cc patch.
+
+ -- Ximin Luo <infinity0@debian.org> Sun, 24 Oct 2021 14:11:00 +0100
+
+cargo (0.57.0-2) unstable; urgency=medium
+
+ * Fix failing tests.
+
+ -- Ximin Luo <infinity0@debian.org> Sun, 24 Oct 2021 13:13:07 +0100
+
+cargo (0.57.0-1) unstable; urgency=medium
+
+ * New upstream release for rustc 1.56.0, 2021 Edition.
+
+ -- Ximin Luo <infinity0@debian.org> Sun, 24 Oct 2021 01:59:08 +0100
+
+cargo (0.47.0-3) unstable; urgency=medium
+
+ * Disable close_output test for now, it is flaky. This is a test problem not
+ a cargo problem and will be re-enabled in 0.49.0.
+
+ -- Ximin Luo <infinity0@debian.org> Tue, 08 Dec 2020 01:43:58 +0000
+
+cargo (0.47.0-2) unstable; urgency=medium
+
+ * Backport a patch to fix a test on i386.
+ * Add +xgot to work around mips64el limitations.
+
+ -- Ximin Luo <infinity0@debian.org> Tue, 08 Dec 2020 00:29:08 +0000
+
+cargo (0.47.0-1) unstable; urgency=medium
+
+ * Upload to unstable. (Closes: #976434)
+
+ -- Ximin Luo <infinity0@debian.org> Sun, 06 Dec 2020 12:39:49 +0000
+
+cargo (0.47.0-1~exp1) experimental; urgency=medium
+
+ * New upstream release.
+
+ -- Ximin Luo <infinity0@debian.org> Fri, 02 Oct 2020 02:04:10 +0100
+
+cargo (0.43.1-4) unstable; urgency=medium
+
+ * Team upload.
+ * Fix build by applying two upstream patches. (Closes: #975857)
+
+ -- Jan Niehusmann <jan@debian.org> Sat, 28 Nov 2020 11:07:20 +0100
+
+cargo (0.43.1-3) unstable; urgency=medium
+
+ * Reupload, actually include the fix described in the previous entry.
+
+ -- Ximin Luo <infinity0@debian.org> Mon, 20 Apr 2020 14:30:01 +0100
+
+cargo (0.43.1-2) unstable; urgency=medium
+
+ * cargo-debian-wrapper: don't install /usr/.crates2.json. (Closes: #958301)
+
+ -- Ximin Luo <infinity0@debian.org> Mon, 20 Apr 2020 13:30:57 +0100
+
+cargo (0.43.1-1) unstable; urgency=medium
+
+ [ Fabian Grünbichler ]
+ * New upstream release.
+
+ -- Ximin Luo <infinity0@debian.org> Sat, 18 Apr 2020 19:54:01 +0100
+
+cargo (0.40.0-3) unstable; urgency=medium
+
+ * debian cargo wrapper: drop DEB_CARGO_PACKAGE in favour of the more
+ standardised DESTDIR.
+ * Experimental riscv64 support.
+
+ -- Ximin Luo <infinity0@debian.org> Sun, 05 Jan 2020 13:31:46 +0000
+
+cargo (0.40.0-2) unstable; urgency=medium
+
+ * Restore patch for pkg-config crate to auto-detect Debian cross-compiling.
+ * Add patch for backtrace-sys to auto-detect Debian cross-compiling.
+
+ -- Ximin Luo <infinity0@debian.org> Thu, 05 Dec 2019 22:31:57 +0000
+
+cargo (0.40.0-1) unstable; urgency=medium
+
+ [ Sylvestre Ledru ]
+ * Ship the zsh completion (Closes: #941437)
+
+ [ Ximin Luo ]
+ * New upstream release.
+
+ -- Ximin Luo <infinity0@debian.org> Thu, 28 Nov 2019 10:24:46 +0000
+
+cargo (0.37.0-3) unstable; urgency=medium
+
+ * Update 2001_more_portable_rustflags.patch, fixes mips FTBFS
+
+ -- Ximin Luo <infinity0@debian.org> Sat, 20 Jul 2019 16:02:08 -0700
+
+cargo (0.37.0-2) unstable; urgency=medium
+
+ * Bump serde vendored crate version up to 1.0.96 to avoid issue when
+ compiling with atomics (the default).
+
+ -- Ximin Luo <infinity0@debian.org> Thu, 18 Jul 2019 02:34:48 -0700
+
+cargo (0.37.0-1) unstable; urgency=medium
+
+ * New upstream release.
+
+ -- Ximin Luo <infinity0@debian.org> Tue, 16 Jul 2019 23:06:49 -0700
+
+cargo (0.35.0-2) unstable; urgency=medium
+
+ * Use more portable flags in tests, fixing FTBFS on mips.
+ (Closes: #930218)
+
+ -- Ximin Luo <infinity0@debian.org> Sat, 08 Jun 2019 11:04:43 -0700
+
+cargo (0.35.0-1) unstable; urgency=medium
+
+ * New upstream release.
+
+ -- Ximin Luo <infinity0@debian.org> Fri, 31 May 2019 00:29:11 -0700
+
+cargo (0.33.0-3) unstable; urgency=medium
+
+ * Drop patch to capture rustc error output, it is unnecessary.
+ * Add upstream patch to fix typenum bug.
+
+ -- Ximin Luo <infinity0@debian.org> Sat, 18 May 2019 20:22:22 -0700
+
+cargo (0.33.0-2) unstable; urgency=medium
+
+ * Add patch to capture rustc error output if extra-verbose.
+
+ -- Ximin Luo <infinity0@debian.org> Sat, 18 May 2019 12:14:38 -0700
+
+cargo (0.33.0-1) unstable; urgency=medium
+
+ * New upstream release.
+
+ -- Ximin Luo <infinity0@debian.org> Tue, 05 Feb 2019 20:52:47 -0800
+
+cargo (0.32.0-2~exp1) experimental; urgency=medium
+
+ * Drop patch 2007, for disabling incremental build on sparc64.
+ Closes: bug#917048, Thanks to John Paul Adrian Glaubitz.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Sat, 02 Feb 2019 13:16:13 +0530
+
+cargo (0.32.0-1) unstable; urgency=medium
+
+ * debian-cargo-wrapper: Support DEB_CARGO_INSTALL_PREFIX for installing into
+ somewhere other than /usr, e.g. / or /usr/lib/cargo.
+ * Move dev scripts from /usr/share/cargo into /usr/share/cargo/scripts.
+ * Increase yet another timeout duration for slower architectures.
+
+ -- Ximin Luo <infinity0@debian.org> Thu, 24 Jan 2019 00:29:51 -0800
+
+cargo (0.32.0-1~exp3) experimental; urgency=medium
+
+ [ Matt Kraai ]
+ * Rename bash completion script so that it's used.
+
+ [ Ximin Luo ]
+ * Further increase a timeout duration for mips.
+ * debian-cargo-wrapper: add --link-to-system option
+
+ -- Ximin Luo <infinity0@debian.org> Wed, 23 Jan 2019 19:44:05 -0800
+
+cargo (0.32.0-1~exp2) experimental; urgency=medium
+
+ * Try to deal with the various test failures as suggested by upstream.
+
+ -- Ximin Luo <infinity0@debian.org> Tue, 22 Jan 2019 20:08:29 -0800
+
+cargo (0.32.0-1~exp1) experimental; urgency=medium
+
+ [ upstream ]
+ * Cargo will now download crates in parallel using HTTP/2.
+ * You can now rename packages in your Cargo.toml We have a guide on how
+ to use the package key in your dependencies.
+
+ [ Vasudev Kamath ]
+ * Fix the scripts related to tarball creation
+ * Update unsuspicious file list for 0.32.0
+ * Update copyright information for 0.32.0.
+ * Add lintian-override for source-is-missing, for javascript file from
+ vendored crate documentation. File is not really shipped.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Wed, 12 Dec 2018 21:47:42 +0530
+
+cargo (0.31.1-1) unstable; urgency=medium
+
+ * Upload 0.31.1 to unstable.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Tue, 11 Dec 2018 20:57:21 +0530
+
+cargo (0.31.1-1~exp1) experimental; urgency=medium
+
+ [ upstream ]
+ * [1.30.0] Backport msys progress bar fix for stable.
+
+ [ Ximin Luo ]
+ * debian-cargo-vendor: only store differences between vendor-patches and
+ debcargo-conf.
+
+ [ Vasudev Kamath ]
+ * Do not delete Cargo.lock in debian-cargo-vendor script as its
+ referenced later in make_orig_multi.sh.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Tue, 11 Dec 2018 20:53:53 +0530
+
+cargo (0.31.0-4) unstable; urgency=medium
+
+ * Don't set RUSTFLAGS in d/rules. (Closes: #914110)
+
+ -- Ximin Luo <infinity0@debian.org> Mon, 19 Nov 2018 22:50:59 -0800
+
+cargo (0.31.0-3) unstable; urgency=medium
+
+ * Tweak the cargo wrapper script to be more robust.
+
+ -- Ximin Luo <infinity0@debian.org> Fri, 09 Nov 2018 02:56:54 -0800
+
+cargo (0.31.0-2) unstable; urgency=medium
+
+ * Fix test failure on some architectures due to hash ordering.
+ * Bump libgit2 dependency version constraint. (Closes: #899038)
+
+ -- Ximin Luo <infinity0@debian.org> Sun, 04 Nov 2018 11:32:26 -0800
+
+cargo (0.31.0-1) unstable; urgency=medium
+
+ * Don't run tests when doing arch-indep build.
+ * Fix package include/exclude tests.
+
+ -- Ximin Luo <infinity0@debian.org> Sun, 04 Nov 2018 10:10:24 -0800
+
+cargo (0.31.0-1~exp1) experimental; urgency=medium
+
+ * New upstream release.
+ * Simplify build scripts and add a Debian wrapper for cargo.
+
+ -- Ximin Luo <infinity0@debian.org> Sun, 04 Nov 2018 03:50:33 -0800
+
+cargo (0.30.0-1) unstable; urgency=medium
+
+ * Upload to unstable.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Sun, 21 Oct 2018 11:59:11 +0530
+
+cargo (0.30.0-1~exp1) experimental; urgency=medium
+
+ [ upstream ]
+ * Cargo can silently fix some bad lockfiles You can use --locked to
+ disable this behaviour.
+ * cargo-install will now allow you to cross compile an install using
+ --target.
+ * Added the cargo-fix subcommand to automatically move project code from
+ 2015 edition to 2018.
+
+ [ Vasudev Kamath ]
+ * Refresh patch 2004 for new release.
+ * Add openssl crates fuzz,test doc and apps file to unsuspicious list.
+ * debian/patches:
+ + Drop patch 0774e97da3894f07ed5b6f7db175027a9bc4718b.patch for adding
+ cross compile support. Its merged upstream.
+ + Refresh patch 2001 to newer version of libgit2-sys.
+ + Refresh patch 2003 to newer version of libssh2-sys.
+ + Drop patch 1001 which is merged upstream.
+ + Refresh patch 2005 and 2007 to remove fuzz.
+ + Refresh patch 2002 with newer release.
+ * debian/control:
+ + Mark package compliance with Debian policy 4.2.1.
+ * Update copyright information for new release.
+ * debian/rules:
+ + Use DEB_BUILD_OPTIONS to disable tests on powerpc and powerpcspe
+ architecture.
+ Closes: bug#908961, Thanks to Helmut Grohne.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Sun, 07 Oct 2018 10:39:49 +0530
+
+cargo (0.29.0-1) unstable; urgency=medium
+
+ * Merge changes of 0.28.0-2, which was missed in first release of 0.29.0
+ * Upload to unstable.
+ * Refresh patch for `install --target` feature for release 0.29.0
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Mon, 13 Aug 2018 20:37:13 +0530
+
+cargo (0.29.0-1~exp1) experimental; urgency=medium
+ [ upstream ]
+ * Cargo will now no longer allow you to publish crates with build
+ scripts that modify the src directory. The src directory in a crate
+ should be considered to be immutable.
+
+ [ Vasudev Kamath ]
+ * Update unsuspicious text for new release 0.29.0
+ * Change pattern for embedded zlib
+ * debian/patches:
+ + Refresh patches 2001, 2002, 2003, 2004 to work with new release and
+ new vendor files.
+ + Add patch 1001 to fix deprecated warnings on usage of "casues" from
+ failure crate,
+ * Update copyright information for new release.
+ * Make package compliant with policy 4.2.0.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Sun, 12 Aug 2018 22:25:42 +0530
+
+cargo (0.28.0-2) unstable; urgency=medium
+
+ * Re-add `install --target` functionality, needed by dh-cargo.
+
+ -- Ximin Luo <infinity0@debian.org> Sun, 12 Aug 2018 00:15:23 -0700
+
+cargo (0.28.0-1) unstable; urgency=medium
+
+ * Upload to unstable
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Tue, 07 Aug 2018 22:14:46 +0530
+
+cargo (0.28.0-1~exp3) experimental; urgency=medium
+
+ * Disable incremental compilation tests on sparc64 architecture.
+ Closes: bug#905623, Thanks to John Paul Adrian Glaubitz.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Tue, 07 Aug 2018 22:01:31 +0530
+
+cargo (0.28.0-1~exp2) experimental; urgency=medium
+
+ * Add patch 2005 to disable fetch_platform_specific_dependencies unit
+ tests. Upstream issue #5864.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Sun, 05 Aug 2018 17:17:00 +0530
+
+cargo (0.28.0-1~exp1) experimental; urgency=medium
+
+ [ upstream ]
+ * cargo-metadata now includes authors, categories, keywords, readme, and
+ repository fields.
+ * cargo-metadata now includes a package's metadata table.
+ * Added the --target-dir optional argument. This allows you to specify a
+ different directory than target for placing compilation artifacts.
+ * Cargo will be adding automatic target inference for binaries,
+ benchmarks, examples, and tests in the Rust 2018 edition. If your
+ project specifies specific targets e.g. using [[bin]] and have other
+ binaries in locations where cargo would infer a binary, Cargo will
+ produce a warning. You can disable this feature ahead of time by
+ setting any of the following autobins, autobenches, autoexamples,
+ autotests to false.
+ * Cargo will now cache compiler information. This can be disabled by
+ setting CARGO_CACHE_RUSTC_INFO=0 in your environment.
+
+ [ Sylvestre Ledru ]
+ * Update of the alioth ML address.
+
+ [ Vasudev Kamath ]
+ * Update README.source to mention preferred way of upload.
+ * Update unsuspicious files for new release.
+ * debian/patches:
+ + Refresh patch 2007 for new release.
+ + Refresh patch 2001 for new version of libgit2-sys
+ + Drop patch 2008 as its merged upstream.
+ + Add patch 2003 for forcing use of libssh2 from system, which was now
+ controlled by environment variable.
+ * debian/copyright:
+ + Update copyright information for new release.
+ * Mark package compliance with Debian Policy 4.1.5.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Sun, 29 Jul 2018 22:07:36 +0530
+
+cargo (0.27.0-2) unstable; urgency=medium
+
+ * Support cross-compile install (upstream PR #5614).
+
+ -- Ximin Luo <infinity0@debian.org> Wed, 06 Jun 2018 22:35:30 -0700
+
+cargo (0.27.0-1) unstable; urgency=medium
+
+ * Upload to unstable.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Sun, 03 Jun 2018 20:42:13 +0530
+
+cargo (0.27.0-1~exp1) experimental; urgency=medium
+
+ [ upstream ]
+ * Cargo will now output path to custom commands when -v is passed with
+ --list.
+ * Cargo binary version is now same as the Rust version.
+ * Cargo.lock files are now included in published crates.
+
+ [ Vasudev Kamath ]
+ * Update patch 2004 for the new release.
+ * Add files from clap and vec_map to unsuspicious list.
+ * debian/patches:
+ + Update path to libgit2-sys in patch 2001.
+ + Adjust file name and paths to test files to be patched in patch
+ 2002.
+ + Drop all unused imports and comment out functions not just drop
+ #[test] in patch 2002.
+ + Drop patch 1001 as its now part of new cargo release.
+ + Refresh patch 2007.
+ * debian/copyright:
+ + Update copyright information for new vendored crates.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Sat, 02 Jun 2018 15:10:38 +0530
+
+cargo (0.26.0-1) unstable; urgency=medium
+
+ * Upload to unstable.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Tue, 01 May 2018 13:02:05 +0530
+
+cargo (0.26.0-1~exp1) experimental; urgency=medium
+
+ [upstream]
+ * cargo new now defaults to create binary crate instead of library
+ crate.
+ * cargo new will no longer name crates with name starting with rust- or
+ ending with -rs.
+ * cargo doc is faster as it uses cargo check instead of full rebuild.
+
+ [Vasudev Kamath]
+ * Refresh the patch 2004 against newer Cargo.toml
+ * Mark package compliance with Debian Policy 4.1.4
+ * debian/patches:
+ + Drop patch 2003 and 2005, the doc should be built from source using
+ mdbook.
+ + Drop patch 2006, the wasm32 related test seems to be dropped
+ upstream.
+ + Drop patch 1002, merged upstream.
+ + Add tests/generate_lock_file.rs to patch 2002 to disable
+ no_index_update test, this tries to access network.
+ + Refresh patch 1001 with new upstream release.
+ * debian/rules: disable execution of src/ci/dox.sh, this script is no
+ longer present in new release.
+ * debian/copyright:
+ + Add copyright for humantime crate.
+ + Add copyright for lazycell crate.
+ + Add copyright for quick-error crate
+ + Add copyright for proc-macro2 crate.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Sat, 21 Apr 2018 20:59:39 +0530
+
+cargo (0.25.0-3) unstable; urgency=medium
+
+ [ Ximin Luo ]
+ * Update Vcs-* fields to salsa
+
+ [ Vasudev Kamath ]
+ * Add patch to prevent incremental builds on sparc64.
+ Closes: bug#895300, Thanks to John Paul Adrian Glaubitz.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Sun, 15 Apr 2018 12:28:29 +0530
+
+cargo (0.25.0-2) unstable; urgency=medium
+
+ [ Ximin Luo ]
+ * Depend on rustc 1.24 or later.
+ * Backport a patch to not require dev-dependencies when not needed.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Thu, 22 Mar 2018 20:08:17 +0530
+
+cargo (0.25.0-1) unstable; urgency=medium
+
+ * Upload to unstable.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Fri, 09 Mar 2018 21:09:38 +0530
+
+cargo (0.25.0-1~exp2) experimental; urgency=medium
+
+ * Disable test running on powerpc and powerpcspe for now. Will be
+ enabled once issue in test suites are fixed.
+ Request from John Paul Adrian Glaubitz in IRC.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Sun, 25 Feb 2018 10:27:23 +0530
+
+cargo (0.25.0-1~exp1) experimental; urgency=medium
+
+ [upstream]
+ * Added a workspace.default-members config that overrides implied --all
+ in virtual workspaces.
+ * Enable incremental by default on development builds.
+
+ [ Vasudev Kamath ]
+ * debian/vendor-tarball-filter.txt: Filter out git test data from
+ libgit2-sys crate.
+ * debian/vendor-tarball-unsusupiciousAudit unsuspicious files for 0.25.0
+ release.
+ * debian/make_orig_multi.sh: Make sure we take filter and unsuspiciaus
+ texts from debian folder.
+ * debian/patches:
+ + Drop patch 0001 it is merged upstream.
+ + Fix the typo in description of patch 2006.
+ * Drop source/lintian-override. README under patches directory is no
+ longer considered as a patch file by lintian.
+ * debian/copyright:
+ + Drop unused vendor crates copyright information.
+ + Add new crates copyright information to copyright.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Sat, 24 Feb 2018 14:43:48 +0530
+
+cargo (0.24.0-1) unstable; urgency=medium
+
+ * Upload to unstable.
+
+ -- Ximin Luo <infinity0@debian.org> Sat, 27 Jan 2018 10:41:06 +0100
+
+cargo (0.24.0-1~exp1) experimental; urgency=medium
+
+ [upstream]
+ * Supports uninstallation of multiple crates.
+ * `cargo check` unit testing.
+ * Install a specific version using `cargo install --version`
+
+ [ Vasudev Kamath ]
+ * Update vendor-tarball-unsuspicious.txt vendor-tarball-filter.txt for
+ new upstream release.
+ * debian/control:
+ + Mark package compliance with Debian Policy 4.1.3.
+ * debian/patches:
+ + Update patch 2001 to work with libgit2-sys-0.6.19.
+ + Update 1002 patch to drop url crate specific hunk as its merged
+ upstream.
+ + Add patch 0001 to fix bad_git_dependency test failure.
+ * debian/copyright:
+ + Add new vendor crates to copyright.
+ + Track rustfmt.toml in top level copyright section.
+ * Add lintian-override for ignoring README from
+ patch-file-present-but-not-mentioned-in-series tag.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Thu, 25 Jan 2018 14:57:43 +0530
+
+cargo (0.23.0-1) unstable; urgency=medium
+
+ * Upload to unstable.
+ * Mark package as compliant with Debian Policy 4.1.2.
+ No change required to source.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Sun, 10 Dec 2017 15:33:55 +0530
+
+cargo (0.23.0-1~exp1) experimental; urgency=medium
+
+ * [upstream]
+ + Cargo will now build multi file examples in subdirectories of the
+ examples folder that have a main.rs file.
+ + Changed [root] to [package] in Cargo.lock. Old format packages will
+ continue to work and can be updated using cargo update.
+ + Supports vendoring git repositories.
+ * Refresh patch 2004 for new release.
+ * Audit logo.svg file from termion crate.
+ * debian/patches:
+ + Drop patch 1001, its merged upstream.
+ + Refresh patch 2002 with new upstream changes.
+ + Refresh patch 2001 with newer libgit2-sys changes.
+ + Add patch 2005 to prevent executing non-existing mdbook command
+ during build.
+ + Move part of typo fix for url crate to patch 1001 to 1002. url crate
+ is not updated in new cargo release.
+ * debian/copyright:
+ + Remove copyright for gcc crate.
+ + Add copyright information for cc, commoncrypto, crypto-hash,
+ redox_syscall. redox_termios and termion crate.
+ + Add CONTRIBUTING.md to top Files section.
+ + Drop magnet-sys from copyright.
+
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Tue, 05 Dec 2017 22:03:49 +0530
+
+cargo (0.22.0-1~exp1) experimental; urgency=medium
+
+ * New upstream release.
+ + Can now install multiple crates with cargo install.
+ + cargo commands inside a virtual workspace will now implicitly pass
+ --all.
+ + Added [patch] section to Cargo.toml to handle prepublication
+ dependencies RFC 1969.
+ + include and exclude fields in Cargo.toml now accept gitignore like
+ patterns.
+ + Added --all-target option.
+ + Using required dependencies as a feature is now deprecated and emits
+ a warning.
+ * Put upstream PR url for patch 1001.
+ * Add conv crate file to unsuspicious files.
+ * debian/patches:
+ + Refresh patches 1001, 2002 and 2004 with new upstream release.
+ + Fix typo in cargo search command and related tests.
+ * debian/control:
+ + Mark package compliance with Debian Policy 4.1.1.
+ + Mark priority for package as optional from extra. Priority extra is
+ deprecated from Debian Policy 4.0.1.
+ * debian/copyright:
+ + Add newly added vendor copyright information.
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Sun, 29 Oct 2017 19:50:42 +0530
+
+cargo (0.21.1-2) unstable; urgency=medium
+
+ * Upload to unstable.
+
+ -- Ximin Luo <infinity0@debian.org> Wed, 25 Oct 2017 23:30:46 +0200
+
+cargo (0.21.1-1) experimental; urgency=medium
+
+ * debian/control:
+ + Add myself as uploader for cargo package.
+ + Mark package compliance with Debian Policy 4.1.0.
+ * Mark tables.rs from unicode-normalization as unsuspicious.
+ * Ignore sublime workspace file from hex crate.
+ * debian/copyright:
+ + Drop wildcards representing the old crates under vendor folder.
+ + Add copyright information for newer crates under vendor
+ + Add ARCHITECTURE.* to copyright.
+ * debian/patches:
+ + Rename patches to follow patch naming guidelines mentioned in
+ debian/patches/README.
+ + Add patch 1001 to fix spelling errors in cargo output messages.
+ + Make patch 2003 DEP-3 compliant.
+ + Adjust make_orig_multi.sh to renamed clean-cargo-deps.patch
+
+ -- Vasudev Kamath <vasudev@copyninja.info> Sat, 23 Sep 2017 10:41:07 +0530
+
+cargo (0.20.0-2) unstable; urgency=medium
+
+ * Work around #865549, fixes FTBFS on ppc64el.
+
+ -- Ximin Luo <infinity0@debian.org> Thu, 14 Sep 2017 15:47:55 +0200
+
+cargo (0.20.0-1) unstable; urgency=medium
+
+ * New upstream release.
+ * Fix cross-compiling declarations, Multi-Arch: foreign => allowed
+ * Un-embed libgit2 0.25.1 again. (Closes: #860990)
+ * Update to latest Standards-Version; no changes required.
+
+ -- Ximin Luo <infinity0@debian.org> Thu, 24 Aug 2017 19:13:00 +0200
+
+cargo (0.17.0-2) unstable; urgency=medium
+
+ * Re-embed libgit2 0.25.1 due to the Debian testing freeze. It will be
+ removed again after the freeze is over, when libgit2 0.25.1 can again
+ enter Debian unstable.
+
+ -- Ximin Luo <infinity0@debian.org> Wed, 03 May 2017 16:56:03 +0200
+
+cargo (0.17.0-1) unstable; urgency=medium
+
+ * Upload to unstable so we have something to build rustc 1.17.0 with.
+
+ -- Ximin Luo <infinity0@debian.org> Wed, 03 May 2017 11:24:08 +0200
+
+cargo (0.17.0-1~exp3) experimental; urgency=medium
+
+ * Add git to Build-Depends to fix FTBFS.
+ * Mention cross-compiling in the previous changelog entry.
+
+ -- Ximin Luo <infinity0@debian.org> Tue, 02 May 2017 13:18:53 +0200
+
+cargo (0.17.0-1~exp2) experimental; urgency=medium
+
+ * Bring in some changes from Ubuntu.
+ - Rename deps/ to vendor/ as that's what upstream uses, and update
+ other files with the new paths too.
+ - Remove cargo-vendor-unpack since we no longer need to postprocess
+ cargo-vendor output in that way.
+ * Document that bootstrap.py probably doesn't work now.
+ * Include /usr/share/rustc/architecture.mk in d/rules instead of duplicating
+ awkward arch-dependent Makefile snippets.
+ * Don't embed libgit2, add a versioned B-D to libgit2-dev.
+ * Add support for cross-compiling bootstrap.
+
+ -- Ximin Luo <infinity0@debian.org> Mon, 01 May 2017 20:49:45 +0200
+
+cargo (0.17.0-1~exp1) experimental; urgency=medium
+
+ * New upstream release. (Closes: #851089, #859312)
+
+ -- Ximin Luo <infinity0@debian.org> Thu, 20 Apr 2017 03:16:04 +0200
+
+cargo (0.15.0~dev-1) unstable; urgency=medium
+
+ * New upstream snapshot (git 1877f59d6b2cb057f7ef6c6b34b926fd96a683c1)
+ - Compatible with OpenSSL 1.1.0 (Closes: #828259)
+ * rules: use new link-arg options (Closes: #834980, #837433)
+ - Requires rustc >= 1.13
+
+ -- Luca Bruno <lucab@debian.org> Fri, 25 Nov 2016 23:30:03 +0000
+
+cargo (0.11.0-2) unstable; urgency=high
+
+ * debian/rules: fix RUSTFLAGS quoting (Closes: #834980)
+
+ -- Luca Bruno <lucab@debian.org> Sun, 21 Aug 2016 18:21:21 +0000
+
+cargo (0.11.0-1) unstable; urgency=medium
+
+ [ Daniele Tricoli ]
+ * New upstream release. (Closes: #826938)
+ - Update deps tarball.
+ - Refresh patches.
+ - Drop clean-win-crates.patch since time crate is not a dependency
+ anymore.
+ - Drop deps-url-fix-toml.patch since merged upstream.
+
+ [ Luca Bruno ]
+ * Install subcommand manpages too
+ * Move to a bootstrapped (stage1) build by default
+
+ -- Luca Bruno <lucab@debian.org> Mon, 15 Aug 2016 13:59:04 +0000
+
+cargo (0.9.0-1) unstable; urgency=medium
+
+ * New upstream version
+ + Fix deprecation errors (Closes: #822178, #823652)
+ + Updated deps tarball
+ + Refreshed patches
+
+ -- Luca Bruno <lucab@debian.org> Sat, 07 May 2016 17:56:28 +0200
+
+cargo (0.8.0-2) unstable; urgency=low
+
+ * Prefer libcurl4-gnutls-dev for building (Closes: #819831)
+
+ -- Luca Bruno <lucab@debian.org> Tue, 05 Apr 2016 22:23:44 +0200
+
+cargo (0.8.0-1) unstable; urgency=medium
+
+ * New upstream version 0.8.0
+ + Updated deps tarball
+ + Refreshed patches
+ * cargo: removed unused lintian overrides
+
+ -- Luca Bruno <lucab@debian.org> Sat, 05 Mar 2016 22:39:06 +0100
+
+cargo (0.7.0-2) unstable; urgency=medium
+
+ * Bump standards version
+ * cargo:
+ + add a new stage2 profile
+ + preserve original Cargo.lock for clean
+ + clean environment to allow multiple builds
+ * cargo-doc:
+ + update docbase paths after package split
+ + do not reference remote jquery
+ + do not build under nodoc profile
+ * control: update build-deps for build-profiles
+
+ -- Luca Bruno <lucab@debian.org> Thu, 03 Mar 2016 22:18:32 +0100
+
+cargo (0.7.0-1) unstable; urgency=medium
+
+ * New upstream version 0.7.0
+ + Updated deps tarball and repack filter
+ + Refreshed patches
+ * Fixes to debian packaging
+ + Updated deps repack script
+ + index packing: use the same TAR format as cargo
+ + rules: ask cargo to build verbosely
+ * Update README.source to match current packaging
+
+ -- Luca Bruno <lucab@debian.org> Sun, 14 Feb 2016 16:12:55 +0100
+
+cargo (0.6.0-2) unstable; urgency=medium
+
+ * Introduce a cargo-doc package
+ * Fails to build when wget is installed. Force curl
+ (Closes: #809298)
+ * Add the missing VCS- fields
+
+ -- Sylvestre Ledru <sylvestre@debian.org> Tue, 26 Jan 2016 13:01:16 +0100
+
+cargo (0.6.0-1) unstable; urgency=medium
+
+ * New upstream version 0.6.0
+ + Updated deps tarball
+ + Not shipping a registry index anymore
+ * Refreshed bootstrap.py script
+ + Skip optional dependencies in stage0
+ * Added some crude pack/unpack helpers
+ * copyright: cleaned up unused entries
+ * rules: major update for new 0.6.0 bootstrap
+
+ -- Luca Bruno <lucab@debian.org> Fri, 04 Dec 2015 00:42:55 +0100
+
+cargo (0.3.0-2) unstable; urgency=medium
+
+ * Fix install target, removing arch-specific path
+
+ -- Luca Bruno <lucab@debian.org> Sat, 14 Nov 2015 19:46:57 +0100
+
+cargo (0.3.0-1) unstable; urgency=medium
+
+ * Team upload.
+ * First upload to unstable.
+ * Update gbp.conf according to git repo structure.
+ * patches: downgrade missing_docs lints to simple warnings
+ to avoid build failures on newer rustc.
+
+ -- Luca Bruno <lucab@debian.org> Sat, 14 Nov 2015 17:29:15 +0100
+
+cargo (0.3.0-0~exp1) experimental; urgency=low
+
+ * Team upload.
+ * Initial Debian release. (Closes: #786432)
+
+ -- Luca Bruno <lucab@debian.org> Tue, 11 Aug 2015 20:15:54 +0200
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..48082f7
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+12
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..92eaf2b
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,77 @@
+Source: cargo
+Section: devel
+Maintainer: Rust Maintainers <pkg-rust-maintainers@alioth-lists.debian.net>
+Uploaders: Luca Bruno <lucab@debian.org>,
+ Angus Lees <gus@debian.org>,
+ Fabian Grünbichler <debian@fabian.gruenbichler.email>,
+ Ximin Luo <infinity0@debian.org>,
+ Vasudev Kamath <vasudev@copyninja.info>
+Priority: optional
+# :native annotations are to support cross-compiling, see README.Debian of rustc
+Build-Depends:
+ debhelper (>= 12~),
+ dpkg-dev (>= 1.17.14),
+ cargo:native (>= 0.56.0),
+ rustc:native (>= 1.63),
+ libstd-rust-dev (>= 1.63),
+ pkg-config,
+ bash-completion,
+ python3:native,
+ libcurl4-gnutls-dev | libcurl4-openssl-dev,
+ libssh2-1-dev,
+ libgit2-dev (>= 1.7.1),
+ libgit2-dev (<< 1.8~~),
+ libhttp-parser-dev,
+ libssl-dev,
+ zlib1g-dev,
+ zlib1g-dev:native,
+ git <!nocheck>
+Homepage: https://crates.io/
+Standards-Version: 4.2.1
+Vcs-Git: https://salsa.debian.org/rust-team/cargo.git
+Vcs-Browser: https://salsa.debian.org/rust-team/cargo
+
+Package: cargo
+Architecture: any
+Multi-Arch: allowed
+Depends: ${shlibs:Depends}, ${misc:Depends},
+ rustc (>= 1.24),
+ binutils,
+ gcc | clang | c-compiler
+Suggests: cargo-doc, python3
+Description: Rust package manager
+ Cargo is a tool that allows Rust projects to declare their various
+ dependencies, and ensure that you'll always get a repeatable build.
+ .
+ To accomplish this goal, Cargo does four things:
+ * Introduces two metadata files with various bits of project information.
+ * Fetches and builds your project's dependencies.
+ * Invokes rustc or another build tool with the correct parameters to build
+ your project.
+ * Introduces conventions, making working with Rust projects easier.
+ .
+ Cargo downloads your Rust project’s dependencies and compiles your
+ project.
+
+Package: cargo-doc
+Section: doc
+Architecture: all
+Build-Profiles: <!nodoc>
+Depends: ${misc:Depends}
+Description: Rust package manager, documentation
+ Cargo is a tool that allows Rust projects to declare their various
+ dependencies, and ensure that you'll always get a repeatable build.
+ .
+ To accomplish this goal, Cargo does four things:
+ * Introduces two metadata files with various bits of project information.
+ * Fetches and builds your project's dependencies.
+ * Invokes rustc or another build tool with the correct parameters to build
+ your project.
+ * Introduces conventions, making working with Rust projects easier.
+ .
+ Cargo downloads your Rust project’s dependencies and compiles your
+ project.
+ .
+ This package contains the documentation.
+
+# TODO: add a cargo-src package
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..56b7244
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,997 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: cargo
+Source: https://github.com/rust-lang/cargo
+
+Files:
+ benches/*
+ crates/*
+ src/*
+ tests/*
+ .*
+ build.rs
+ Cargo.*
+ LICENSE-*
+ README.*
+ CHANGELOG.*
+ CONTRIBUTING.*
+ CODE_OF_CONDUCT.*
+ ci/*
+ publish.py
+ triagebot.toml
+Copyright: 2014 The Rust Project Developers
+License: MIT or Apache-2.0
+Comment: please do not add * to the above paragraph, so we can use lintian to
+ help us update this file properly
+
+Files: vendor/bitflags/*
+ vendor/bitflags-1.*/*
+ vendor/env_logger/*
+ vendor/env_logger-0*/*
+ vendor/flate2/*
+ vendor/glob/*
+ vendor/libc/*
+ vendor/log/*
+ vendor/regex/*
+ vendor/regex-syntax/*
+ vendor/semver/*
+ vendor/shell-escape/*
+ vendor/unicode-width/*
+Copyright: 2010-2019 The Rust Project Developers
+License: MIT or Apache-2.0
+Comment:
+ This is a collection of external crates embedded here to bootstrap cargo.
+ Most of them come from the original upstream Rust project, thus share the
+ same MIT/Apache-2.0 dual-license. See https://github.com/rust-lang.
+ Exceptions are noted below.
+
+Files:
+ vendor/cc/*
+ vendor/cfg-if/*
+ vendor/filetime/*
+ vendor/fnv/*
+ vendor/git2/*
+ vendor/git2-curl/*
+ vendor/jobserver/*
+ vendor/libz-sys/*
+ vendor/libgit2-sys/*
+ vendor/libssh2-sys/*
+ vendor/miow/*
+ vendor/openssl-probe/*
+ vendor/pkg-config/*
+ vendor/proc-macro2/*
+ vendor/rustc-workspace-hack/*
+ vendor/tar/*
+ vendor/socket2/*
+ vendor/libnghttp2-sys/*
+Copyright: 2014-2018 Alex Crichton <alex@alexcrichton.com>
+ 2014-2018 The Rust Project Developers
+License: MIT or Apache-2.0
+Comment:
+ see https://github.com/alexcrichton/
+ see https://github.com/servo/rust-fnv
+
+Files:
+ vendor/rand_core/*
+ vendor/rand_xoshiro/*
+Copyright:
+ 2019-2020 The Rand Project Developers
+ 2010-2020 The Rust Project Developers
+License: MIT or Apache-2.0
+Comment: see https://github.com/rust-random/rand
+
+Files:
+ vendor/aho-corasick/*
+ vendor/bytesize/*
+ vendor/globset/*
+ vendor/ignore/*
+ vendor/memchr/*
+ vendor/same-file/*
+ vendor/termcolor/*
+ vendor/walkdir/*
+ vendor/winapi-util/*
+Copyright: 2015-2018 Andrew Gallant <jamslam@gmail.com>
+License: MIT or Unlicense
+Comment: see upstream projects,
+ * https://github.com/BurntSushi/aho-corasick
+ * https://github.com/BurntSushi/ripgrep/tree/master/globset
+ * https://github.com/BurntSushi/ripgrep/tree/master/ignore
+ * https://github.com/BurntSushi/rust-memchr
+ * https://github.com/BurntSushi/same-file
+ * https://github.com/BurntSushi/ripgrep/tree/master/termcolor
+ * https://github.com/BurntSushi/walkdir
+ * https://github.com/BurntSushi/winapi-util
+
+Files: vendor/anyhow/*
+Copyright: 2019-2020 David Tolnay <dtolnay@gmail.com>
+License: MIT OR Apache-2.0
+Comment: see https://github.com/dtolnay/anyhow
+
+Files: vendor/adler/*
+Copyright: 2020-2020 Jonas Schievink <jonasschievink@gmail.com>
+License: 0BSD OR MIT OR Apache-2.0
+Comment: see https://github.com/jonas-schievink/adler.git
+
+Files:
+ vendor/anstream/*
+ vendor/anstyle/*
+ vendor/anstyle-parse/*
+ vendor/anstyle-query/*
+ vendor/colorchoice/*
+Copyright: 2023 Ed Page <eopage@gmail.com>
+License: MIT or Apache-2.0
+Comment: see https://github.com/rust-cli/anstyle.git
+
+Files:
+ vendor/arrayvec/*
+ vendor/either/*
+ vendor/itertools/*
+Copyright: 2014-2021 bluss
+License: MIT or Apache-2.0
+Comment:
+ see https://github.com/bluss/arrayvec
+ see https://github.com/bluss/either
+ see https://github.com/rust-itertools/itertools
+
+Files: vendor/base64/*
+Copyright: 2015-2023 Alice Maz <alice@alicemaz.com>
+ 2015-2023 Marshall Pierce <marshall@mpierce.org>
+License: MIT or Apache-2.0
+Comment: see https://github.com/marshallpierce/rust-base64
+
+Files: vendor/bitmaps/*
+Copyright: 2019-2020 Bodil Stokke <bodil@bodil.org>
+License: MPL-2.0+
+Comment: see https://github.com/bodil/bitmaps
+
+Files:
+ vendor/base16ct/*
+ vendor/base64ct/*
+ vendor/const-oid/*
+ vendor/der/*
+ vendor/pem-rfc7468/*
+ vendor/pkcs8/*
+ vendor/sec1/*
+Copyright: 2016-2023 RustCrypto Developers
+License: MIT OR Apache-2.0
+Comment: see https://github.com/RustCrypto/formats
+
+Files:
+ vendor/block-buffer/*
+ vendor/cpufeatures/*
+ vendor/zeroize/*
+Copyright: 2016-2023 RustCrypto Developers
+License: MIT OR Apache-2.0
+Comment: see https://github.com/RustCrypto/utils
+
+Files: vendor/bstr/*
+Copyright: 2015-2019 Andrew Gallant <jamslam@gmail.com>
+License: MIT or Apache-2.0
+Comment:
+ see https://github.com/BurntSushi/bstr
+
+Files: vendor/atty/*
+Copyright: 2015-2016, Doug Tangren
+License: MIT
+Comment: see https://github.com/softprops/atty
+
+Files: vendor/autocfg/*
+Copyright: 2018-2019 Josh Stone <cuviper@gmail.com>
+License: Apache-2.0 or MIT
+Comment: see https://github.com/cuviper/autocfg
+
+Files:
+ vendor/clap/*
+ vendor/clap_builder/*
+ vendor/clap_lex/*
+Copyright: 2015-2023, Kevin B. Knapp <kbknapp@gmail.com>
+ 2015-2023, Clap Contributors
+License: MIT or Apache-2.0
+Comment: see https://github.com/clap-rs/clap
+
+Files: vendor/content_inspector/*
+Copyright: 2018-2018 David Peter <mail@david-peter.de>
+License: MIT or Apache-2.0
+Comment: see https://github.com/sharkdp/content_inspector
+
+Files: vendor/core-foundation/*
+ vendor/core-foundation-sys/*
+Copyright: 2012-2013, The Servo Project Developers,
+ 2012-2013, Mozilla Foundation
+License: MIT or Apache-2.0
+Comment: see https://github.com/servo/core-foundation-rs
+
+Files: vendor/crc32fast/*
+Copyright: 2018, Sam Rijs <srijs@airpost.net>
+ 2018, Alex Crichton <alex@alexcrichton.com>
+License: MIT or Apache-2.0
+
+Files: vendor/crypto-bigint/*
+Copyright: 2021-2023 RustCrypto Developers
+License: Apache-2.0 OR MIT
+Comment: see https://github.com/RustCrypto/crypto-bigint
+
+Files:
+ vendor/crypto-common/*
+ vendor/digest/*
+ vendor/elliptic-curve/*
+ vendor/signature/*
+ vendor/spki/*
+Copyright: 2017-2023 RustCrypto Developers
+License: MIT OR Apache-2.0
+Comment: see https://github.com/RustCrypto/traits
+
+Files: vendor/commoncrypto/*
+ vendor/commoncrypto-sys/*
+ vendor/crypto-hash/*
+Copyright: 2016, Mark Lee
+ 2015-2016, Mark Lee
+License: MIT
+Comment:
+ * see https://github.com/malept/rust-commoncrypto
+ * see https://github.com/malept/crypto-hash
+
+Files: vendor/ct-codecs/*
+Copyright: 2020-2022 Frank Denis <github@pureftpd.org>
+License: MIT
+Comment: see https://github.com/jedisct1/rust-ct-codecs
+
+Files: vendor/curl/*
+ vendor/curl-sys/*
+Copyright: 2014-2019 Alex Crichton <alex@alexcrichton.com>
+License: MIT
+Comment: see https://github.com/alexcrichton/curl-rust
+
+Files: vendor/deranged/*
+Copyright: 2020-2023 Jacob Pratt <jacob@jhpratt.dev>
+License: MIT OR Apache-2.0
+Comment: see https://github.com/jhpratt/deranged
+
+Files: vendor/dunce/*
+Copyright: 2017-2021 Kornel <kornel@geekhood.net>
+License: CC0-1.0
+Comment: see https://gitlab.com/kornelski/dunce
+
+Files:
+ vendor/ecdsa/*
+ vendor/rfc6979/*
+Copyright: 2016-2023 RustCrypto Developers
+License: MIT OR Apache-2.0
+Comment: see https://github.com/RustCrypto/signatures
+
+Files: vendor/ed25519-compact/*
+Copyright: 2020-2023 Frank Denis <github@pureftpd.org>
+License: MIT
+Comment: see https://github.com/jedisct1/rust-ed25519-compact
+
+Files: vendor/equivalent/*
+Copyright: 2016-2023 Josh Stone <cuviper@gmail.com>
+License: Apache-2.0 OR MIT
+Comment: see https://github.com/cuviper/equivalent
+
+Files: vendor/errno/*
+Copyright: 2015-2023 Chris Wong <lambda.fairy@gmail.com>
+License: MIT OR Apache-2.0
+Comment: see https://github.com/lambda-fairy/rust-errno
+
+Files: vendor/fastrand/*
+Copyright: 2020-2022 Stjepan Glavina <stjepang@gmail.com>
+License: Apache-2.0 OR MIT
+Comment: see https://github.com/smol-rs/fastrand
+
+Files: vendor/ff/*
+Copyright: 2017-2022 Sean Bowe <ewillbefull@gmail.com>
+ 2017-2022 Jack Grigg <thestr4d@gmail.com>
+License: MIT or Apache-2.0
+Comment: see https://github.com/zkcrypto/ff
+
+Files: vendor/fiat-crypto/*
+Copyright: 2015-2023 Fiat Crypto library authors <jgross@mit.edu>
+License: MIT OR Apache-2.0 OR BSD-1-Clause-fiat-crypto
+Comment: see https://github.com/mit-plv/fiat-crypto
+
+Files: vendor/foreign-types/*
+ vendor/foreign-types-shared/*
+Copyright: 2017-2017 Steven Fackler <sfackler@gmail.com>
+License: MIT or Apache-2.0
+Comment: see https://github.com/sfackler/foreign-types
+
+Files: vendor/fwdansi/*
+Copyright: 2018-2018 kennytm <kennytm@gmail.com>
+License: MIT
+Comment: see https://github.com/kennytm/fwdansi
+
+Files: vendor/generic-array/*
+Copyright: 2015-2022 Bartłomiej Kamiński <fizyk20@gmail.com>
+ 2015-2022 Aaron Trent <novacrazy@gmail.com>
+License: MIT
+Comment: see https://github.com/fizyk20/generic-array.git
+
+Files: vendor/getrandom/*
+Copyright: 2019-2023 The Rand Project Developers
+License: MIT OR Apache-2.0
+Comment: see https://github.com/rust-random/getrandom
+
+Files: vendor/group/*
+Copyright: 2018-2022 Sean Bowe <ewillbefull@gmail.com>
+ 2018-2022 Jack Grigg <jack@z.cash>
+License: MIT or Apache-2.0
+Comment: see https://github.com/zkcrypto/group
+
+Files:
+ vendor/hashbrown/*
+ vendor/hashbrown-0.*/*
+Copyright: 2018-2023 Amanieu d'Antras <amanieu@gmail.com>
+License: MIT OR Apache-2.0
+Comment: see https://github.com/rust-lang/hashbrown
+
+Files: vendor/hex/*
+Copyright:
+ 2015-2019 KokaKiwi <kokakiwi@kokakiwi.net>
+ 2015-2019 rust-hex Developers
+License: MIT or Apache-2.0
+Comment: see https://github.com/KokaKiwi/rust-hex
+
+Files: vendor/hkdf/*
+Copyright: 2015-2023 RustCrypto Developers
+License: MIT OR Apache-2.0
+Comment: see https://github.com/RustCrypto/KDFs/
+
+Files: vendor/hmac/*
+Copyright: 2017-2023 RustCrypto Developers
+License: MIT OR Apache-2.0
+Comment: see https://github.com/RustCrypto/MACs
+
+Files: vendor/home/*
+Copyright: Brian Anderson <andersb@gmail.com>
+License: MIT or Apache-2.0
+Comment: see https://github.com/brson/home
+
+Files: vendor/http-auth/*
+Copyright: 2021 Scott Lamb <slamb@slamb.org>
+License: MIT or Apache-2.0
+Comment: see https://github.com/scottlamb/http-auth
+
+Files:
+ vendor/humantime/*
+ vendor/humantime-1*/*
+Copyright: 2016, The humantime Developers
+License: MIT or Apache-2.0
+Comment:
+ Includes parts of http date with copyright: 2016, Pyfisch and portions of musl
+ libc with copyright 2005-2013 Rich Felker.
+ .
+ See https://github.com/tailhook/humantime
+
+Files:
+ vendor/im-rc/*
+ vendor/sized-chunks/*
+Copyright: 2017-2019 Bodil Stokke <bodil@bodil.org>
+License: MPL-2.0+
+Comment:
+ see https://github.com/bodil/im-rs
+ see https://github.com/bodil/sized-chunks
+
+Files:
+ vendor/indexmap/*
+ vendor/indexmap-1.*/*
+Copyright:
+ 2016-2021 bluss
+ 2017-2022 Josh Stone <cuviper@gmail.com>
+License: Apache-2.0 OR MIT
+Comment: see https://github.com/bluss/indexmap
+
+Files: vendor/is-terminal/*
+Copyright: 2022-2023 softprops <d.tangren@gmail.com>
+ 2022-2023 Dan Gohman <dev@sunfishcode.online>
+License: MIT
+Comment: see https://github.com/sunfishcode/is-terminal
+
+Files: vendor/itoa/*
+ vendor/quote/*
+Copyright: 2016-2017 David Tolnay <dtolnay@gmail.com>
+License: MIT or Apache-2.0
+Comment: see https://github.com/dtolnay
+
+Files: vendor/idna/*
+Copyright: 2013 Simon Sapin <simon.sapin@exyr.org>
+ 2013-2014 Valentin Gosu
+ 1991-2015 Unicode, Inc
+License: MIT or Apache-2.0
+
+Files: vendor/lazycell/*
+Copyright: 20014, The Rust Project Developers
+ 2016-2017, Nikita Pekin and lazycell contributors
+License: MIT or Apache-2.0
+
+Files: vendor/lazy_static/*
+Copyright: 2014-2016 Marvin Löbel <loebel.marvin@gmail.com>
+License: MIT or Apache-2.0
+
+Files: vendor/linux-raw-sys/*
+Copyright: 2021-2023 Dan Gohman <dev@sunfishcode.online>
+License: Apache-2.0 with LLVM exception OR Apache-2.0 OR MIT
+Comment: see https://github.com/sunfishcode/linux-raw-sys
+
+Files: vendor/miniz_oxide/*
+Copyright:
+ 2017-2019 Frommi <daniil.liferenko@gmail.com>
+ 2017-2019 oyvindln <oyvindln@users.noreply.github.com>
+License: MIT
+Comment: see https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide
+
+Files: vendor/normalize-line-endings/*
+Copyright: 2016-2018 Richard Dodd <richdodj@gmail.com>
+License: Apache-2.0
+Comment: see https://github.com/derekdreery/normalize-line-endings
+
+Files: vendor/num-traits/*
+Copyright: 2014-2023 The Rust Project Developers
+License: MIT OR Apache-2.0
+Comment: see https://github.com/rust-num/num-traits
+
+Files: vendor/once_cell/*
+Copyright: 2018-2021 Aleksey Kladov <aleksey.kladov@gmail.com>
+License: MIT OR Apache-2.0
+Comment: see https://github.com/matklad/once_cell
+
+Files: vendor/opener/*
+Copyright: 2018 Brian Bowman <seeker14491@gmail.com>
+License: MIT or Apache-2.0
+Comment: see https://github.com/Seeker14491/opener
+
+Files: vendor/openssl/*
+Copyright: 2013-2022 Steven Fackler <sfackler@gmail.com>
+ 2013 Jack Lloyd
+ 2011 Google Inc.
+License: Apache-2.0
+
+Files: vendor/openssl-macros/*
+Copyright: 2022 Steven Fackler <sfackler@gmail.com>
+License: MIT or Apache-2.0
+Comment: see https://github.com/sfackler/rust-openssl
+
+Files: vendor/openssl-sys/*
+Copyright: 2015 Steven Fackler <sfackler@gmail.com>
+ 2015 Alex Crichton <alex@alexcrichton.com>
+License: MIT
+Comment: see https://github.com/sfackler/rust-openssl
+
+Files: vendor/ordered-float/*
+Copyright: 2014-2023 Jonathan Reem <jonathan.reem@gmail.com>
+ 2014-2023 Matt Brubeck <mbrubeck@limpet.net>
+License: MIT
+Comment: see https://github.com/reem/rust-ordered-float
+
+Files: vendor/orion/*
+Copyright: 2018-2023 brycx <brycx@protonmail.com>
+License: MIT
+Comment: see https://github.com/orion-rs/orion
+
+Files: vendor/os_info/*
+Copyright: 2015-2022 Jan Schulte <hello@unexpected-co.de>
+ 2015-2022 Stanislav Tkach <stanislav.tkach@gmail.com>
+License: MIT
+Comment: see https://github.com/stanislav-tkach/os_info
+
+Files: vendor/pasetors/*
+Copyright: 2020-2023 brycx <brycx@protonmail.com>
+License: MIT
+Comment: see https://github.com/brycx/pasetors
+
+Files: vendor/pathdiff/*
+Copyright: 2017-2021 Manish Goregaokar <manishsmail@gmail.com>
+License: MIT or Apache-2.0
+Comment: see https://github.com/Manishearth/pathdiff
+
+Files:
+ vendor/p384/*
+ vendor/primeorder/*
+Copyright: 2016-2023 RustCrypto Developers
+License: MIT OR Apache-2.0
+Comment: see https://github.com/RustCrypto/elliptic-curves
+
+Files: vendor/powerfmt/*
+Copyright: 2023-2023 Jacob Pratt <jacob@jhpratt.dev>
+License: MIT OR Apache-2.0
+Comment: see https://github.com/jhpratt/powerfmt
+
+Files: vendor/pretty_env_logger/*
+Copyright: 2016-2019 Sean McArthur <sean@seanmonstar>
+License: MIT or Apache-2.0
+Comment: see https://github.com/seanmonstar/pretty-env-logger
+
+Files: vendor/quick-error/*
+Copyright: 2015, The quick-error developers
+License: MIT or Apache-2.0
+
+Files: vendor/redox_syscall/*
+Copyright: 2017, Redox OS Developers
+License: MIT
+
+Files: vendor/regex-automata/*
+Copyright: 2018-2021 Andrew Gallant <jamslam@gmail.com>
+License: Unlicense or MIT
+Comment: see https://github.com/BurntSushi/regex-automata
+
+Files: vendor/rustfix/*
+Copyright: 2016, Pascal Hertleif
+ 2016, Oliver Schneider
+License: MIT or Apache-2.0
+
+Files: vendor/rustix/*
+Copyright: 2020-2023 Dan Gohman <dev@sunfishcode.online>
+ 2020-2023 Jakub Konka <kubkon@jakubkonka.com>
+License: Apache-2.0 with LLVM exception OR Apache-2.0 OR MIT
+Comment: see https://github.com/bytecodealliance/rustix
+
+Files: vendor/ryu/*
+Copyright: David Tolnay <dtolnay@gmail.com>
+License: BSL-1.0 or Apache-2.0
+
+Files: vendor/schannel/*
+Copyright: 2015, Steffen Butzer <steffen.butzer@outlook.com>
+License: MIT
+Comment: see https://github.com/steffengy/schannel-rs/
+
+Files: vendor/serde/*
+ vendor/serde_derive/*
+ vendor/serde_ignored/*
+ vendor/serde_json/*
+Copyright: 2014-2017 Erick Tryzelaar <erick.tryzelaar@gmail.com>
+ 2014-2017 David Tolnay <dtolnay@gmail.com>
+License: MIT or Apache-2.0
+Comment: see https://github.com/serde-rs
+ see https://github.com/dtolnay/serde-ignored
+
+Files:
+ vendor/serde_spanned/*
+ vendor/toml/*
+ vendor/toml_datetime/*
+Copyright:
+ 2014-2023 Alex Crichton <alex@alexcrichton.com>
+ 2023 Ed Page <eopage@gmail.com>
+License: MIT OR Apache-2.0
+Comment: see https://github.com/toml-rs/toml
+
+Files: vendor/serde-value/*
+Copyright: 2016-2020 arcnmx
+License: MIT
+Comment: see https://github.com/arcnmx/serde-value
+
+Files:
+ vendor/sha1/*
+ vendor/sha2/*
+Copyright: 2016-2023 RustCrypto Developers
+License: MIT OR Apache-2.0
+Comment: see https://github.com/RustCrypto/hashes
+
+Files: vendor/similar/*
+Copyright: 2021-2022 Armin Ronacher <armin.ronacher@active-4.com>
+ 2021-2022 Pierre-Étienne Meunier <pe@pijul.org>
+ 2021-2022 Brandon Williams <bwilliams.eng@gmail.com>
+License: Apache-2.0
+Comment: see https://github.com/mitsuhiko/similar
+
+Files: vendor/snapbox/*
+ vendor/snapbox-macros/*
+Copyright: 2015-2022 The assert_cli Developers
+License: MIT OR Apache-2.0
+Comment: see https://github.com/assert-rs/trycmd/
+
+Files: vendor/strip-ansi-escapes/*
+Copyright: 2017-2018 Ted Mielczarek <ted@mielczarek.org>
+License: Apache-2.0 or MIT
+Comment: see https://github.com/luser/strip-ansi-escapes
+
+Files: vendor/strsim/*
+Copyright: 2015 Danny Guo <dannyguo91@gmail.com>
+License: MIT
+Comment: see https://github.com/dguo/strsim-rs
+
+Files: vendor/subtle/*
+Copyright: 2017-2021 Isis Lovecruft <isis@patternsinthevoid.net>
+ 2017-2021 Henry de Valence <hdevalence@hdevalence.ca>
+License: BSD-3-Clause
+Comment: see https://github.com/dalek-cryptography/subtle
+
+Files: vendor/syn/*
+Copyright: 2016-2017 David Tolnay <dtolnay@gmail.com>
+License: MIT or Apache-2.0
+Comment: see https://github.com/dtolnay/syn
+
+Files: vendor/tempfile/*
+Copyright: 2015, Steven Allen
+License: MIT or Apache-2.0
+
+Files: vendor/thread_local/*
+Copyright: 2016 Amanieu d'Antras <amanieu@gmail.com>
+License: MIT or Apache-2.0
+Comment: see https://github.com/Amanieu/thread_local-rs
+
+Files:
+ vendor/time/*
+ vendor/time-core/*
+ vendor/time-macros/*
+Copyright: 2019-2023 Jacob Pratt <open-source@jhpratt.dev>
+ 2019-2023 Time contributors
+License: MIT OR Apache-2.0
+Comment: see https://github.com/time-rs/time
+
+Files: vendor/tinyvec/*
+Copyright: 2020-2020 Lokathor <zefria@gmail.com>
+License: Zlib OR Apache-2.0 OR MIT
+Comment: see https://github.com/Lokathor/tinyvec
+
+Files: vendor/tinyvec_macros/*
+Copyright: 2020-2020 Soveu <marx.tomasz@gmail.com>
+License: MIT OR Apache-2.0 OR Zlib
+Comment: see https://github.com/Soveu/tinyvec_macros
+
+Files: vendor/toml_edit/*
+Copyright: 2017-2022 Andronik Ordian <write@reusable.software>
+ 2017-2022 Ed Page <eopage@gmail.com>
+License: MIT or Apache-2.0
+Comment: see https://github.com/ordian/toml_edit
+
+Files: vendor/typenum/*
+Copyright: 2015-2018 Paho Lurie-Gregg <paho@paholg.com>
+ 2015-2018 Andre Bogus <bogusandre@gmail.com>
+License: MIT or Apache-2.0
+Comment: see https://github.com/paholg/typenum
+
+Files: vendor/unicode-bidi/*
+Copyright: 2015 The Servo Project Developers
+License: MIT or Apache-2.0
+Comment: see https://github.com/servo/unicode-bidi
+
+Files: vendor/unicode-ident/*
+Copyright: 2022-2022 David Tolnay <dtolnay@gmail.com>
+License: (MIT OR Apache-2.0) AND Unicode-DFS-2016
+Comment: see https://github.com/dtolnay/unicode-ident
+
+Files: vendor/unicode-normalization/*
+Copyright: 2016 kwantam <kwantam@gmail.com>
+License: MIT or Apache-2.0
+
+Files: vendor/unicode-xid/*
+Copyright: 2015-2017 erick.tryzelaar <erick.tryzelaar@gmail.com>
+ 2015-2017 kwantam <kwantam@gmail.com>
+License: MIT or Apache-2.0
+Comment: see https://github.com/unicode-rs/unicode-xid
+
+Files:
+ vendor/form_urlencoded/*
+ vendor/url/*
+ vendor/percent-encoding/*
+Copyright:
+ 2015-2016 Simon Sapin <simon.sapin@exyr.org>
+ 2013-2021 The rust-url developers
+License: MIT or Apache-2.0
+Comment:
+ see https://github.com/servo/rust-url
+ see https://github.com/servo/rust-url/tree/master/percent_encoding
+
+Files: vendor/utf8parse/*
+Copyright: 2016-2019 Joe Wilm <joe@jwilm.com>
+License: Apache-2.0 or MIT
+Comment: see https://github.com/jwilm/vte
+
+Files: vendor/vcpkg/*
+Copyright: 2017-2017 Jim McGrath <jimmc2@gmail.com>
+License: MIT or Apache-2.0
+Comment: see https://github.com/mcgoo/vcpkg-rs
+
+Files: vendor/version_check/*
+Copyright: 2017-2019 Sergio Benitez <sb@sergio.bz>
+License: MIT or Apache-2.0
+Comment: see https://github.com/SergioBenitez/version_check
+
+Files: vendor/vte/*
+Copyright: 2016-2019 Joe Wilm <joe@jwilm.com>
+License: Apache-2.0 or MIT
+Comment: see https://github.com/jwilm/vte
+
+Files: vendor/vte_generate_state_changes/*
+Copyright: 2016-2021 Christian Duerr <contact@christianduerr.com>
+License: Apache-2.0 OR MIT
+Comment: see https://github.com/jwilm/vte
+
+Files: vendor/winapi/*
+Copyright:
+ 2014-2017 Peter Atashian <retep998@gmail.com>
+ 2014-2017 winapi-rs developers
+License: MIT
+Comment: see https://github.com/retep998/winapi-rs
+
+Files: vendor/winapi-*-pc-windows-gnu/*
+Copyright: 2014-2018 Peter Atashian <retep998@gmail.com>
+License: MIT or Apache-2.0
+Comment: see https://github.com/retep998/winapi-rs
+
+Files:
+ vendor/windows_*_gnu/*
+ vendor/windows_*_gnullvm/*
+ vendor/windows_*_msvc/*
+ vendor/windows_*_gnu-0.*/*
+ vendor/windows_*_gnullvm-0.*/*
+ vendor/windows_*_msvc-0.*/*
+ vendor/windows-sys/*
+ vendor/windows-sys-0.*/*
+ vendor/windows-targets/*
+ vendor/windows-targets-0.*/*
+Copyright: 2019-2023 Microsoft
+License: MIT OR Apache-2.0
+Comment: see https://github.com/microsoft/windows-rs
+
+Files: vendor/winnow/*
+Copyright:
+ 2023 winnow contributors
+ 2014-2023 nom contributors
+ 2014-2023 Geoffroy Couprie <contact@geoffroycouprie.com>
+License: MIT
+Comment: see https://github.com/winnow-rs/winnow - fork of nom, hence the original copyright of Geoffroy Couprie applies
+
+Files: debian/*
+Copyright:
+ 2016-2019 Ximin Luo <infinity0@debian.org>
+ 2017-2019 Vasudeva Kamath <vasudev@copyninja.info>
+ 2015-2016 Luca Bruno <lucab@debian.org>
+License: MIT or Apache-2.0
+
+License: 0BSD
+ Permission to use, copy, modify, and/or distribute this software for
+ any purpose with or without fee is hereby granted.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+ AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+License: Apache-2.0
+ On Debian systems, see /usr/share/common-licenses/Apache-2.0 for
+ the full text of the Apache License version 2.
+
+License: Apache-2.0 with LLVM exception
+ On Debian systems, the full text of the Apache License Version 2.0
+ can be found in the file `/usr/share/common-licenses/Apache-2.0'.
+ Additionally, the LLVM exception is as follows:
+ .
+ As an exception, if, as a result of your compiling your source code, portions
+ of this Software are embedded into an Object form of such source code, you
+ may redistribute such embedded portions in such Object form without complying
+ with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+ .
+ In addition, if you combine or link compiled forms of this Software with
+ software that is licensed under the GPLv2 ("Combined Software") and if a
+ court of competent jurisdiction determines that the patent provision (Section
+ 3), the indemnity provision (Section 9) or other Section of the License
+ conflicts with the conditions of the GPLv2, you may retroactively and
+ prospectively choose to deem waived or otherwise exclude such Section(s) of
+ the License, but only in their entirety and only with respect to the Combined
+ Software.
+
+License: BSD-1-Clause-fiat-crypto
+ Copyright (c) 2015-2020 the fiat-crypto authors (see the AUTHORS file)
+ All rights reserved.
+ .
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ .
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ .
+ THIS SOFTWARE IS PROVIDED BY the fiat-crypto authors "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Berkeley Software Design,
+ Inc. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License: BSD-2-clause
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ .
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+License: BSD-3-clause
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ .
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the
+ distribution.
+ 3. Neither the name of the Creytiv.com nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+License: CC0-1.0
+ On Debian systems, see /usr/share/common-licenses/CC0-1.0 for
+ the full text of the CC0 1.0 Universal license.
+
+License: ISC
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+License: MIT
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+
+License: MPL-2.0
+ Debian systems provide the MPL 2.0 in /usr/share/common-licenses/MPL-2.0
+
+License: Unlicense
+ This is free and unencumbered software released into the public domain.
+ .
+ Anyone is free to copy, modify, publish, use, compile, sell, or
+ distribute this software, either in source code form or as a compiled
+ binary, for any purpose, commercial or non-commercial, and by any
+ means.
+ .
+ In jurisdictions that recognize copyright laws, the author or authors
+ of this software dedicate any and all copyright interest in the
+ software to the public domain. We make this dedication for the benefit
+ of the public at large and to the detriment of our heirs and
+ successors. We intend this dedication to be an overt act of
+ relinquishment in perpetuity of all present and future rights to this
+ software under copyright law.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+License: BSL-1.0
+ Permission is hereby granted, free of charge, to any person or organization
+ obtaining a copy of the software and accompanying documentation covered by this
+ license (the "Software") to use, reproduce, display, distribute, execute, and
+ transmit the Software, and to prepare derivative works of the Software, and to
+ permit third-parties to whom the Software is furnished to do so, all subject to
+ the following:
+ .
+ The copyright notices in the Software and this entire statement, including the
+ above license grant, this restriction and the following disclaimer, must be
+ included in all copies of the Software, in whole or in part, and all derivative
+ works of the Software, unless such copies or derivative works are solely in the
+ form of machine-executable object code generated by a source language
+ processor.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY
+ DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+
+License: Zlib
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+ .
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+ .
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+License: Unicode-DFS-2016
+ UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+ .
+ See Terms of Use <https://www.unicode.org/copyright.html>
+ for definitions of Unicode Inc.’s Data Files and Software.
+ .
+ NOTICE TO USER: Carefully read the following legal agreement.
+ BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
+ DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
+ YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+ TERMS AND CONDITIONS OF THIS AGREEMENT.
+ IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
+ THE DATA FILES OR SOFTWARE.
+ .
+ COPYRIGHT AND PERMISSION NOTICE
+ .
+ Copyright © 1991-2022 Unicode, Inc. All rights reserved.
+ Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
+ .
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of the Unicode data files and any associated documentation
+ (the "Data Files") or Unicode software and any associated documentation
+ (the "Software") to deal in the Data Files or Software
+ without restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, and/or sell copies of
+ the Data Files or Software, and to permit persons to whom the Data Files
+ or Software are furnished to do so, provided that either
+ (a) this copyright and permission notice appear with all copies
+ of the Data Files or Software, or
+ (b) this copyright and permission notice appear in associated
+ Documentation.
+ .
+ THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+ ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+ NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+ DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+ .
+ Except as contained in this notice, the name of a copyright holder
+ shall not be used in advertising or otherwise to promote the sale,
+ use or other dealings in these Data Files or Software without prior
+ written authorization of the copyright holder.
diff --git a/debian/debcargo-conf.patch b/debian/debcargo-conf.patch
new file mode 100644
index 0000000..296b37b
--- /dev/null
+++ b/debian/debcargo-conf.patch
@@ -0,0 +1,114 @@
+For various reasons sometimes the debcargo-conf patches can't be applied as-is,
+so we further patch them here. The reasons are as follows:
+
+- commoncrypto, commoncrypto-sys: these crates were released before crates.io
+ automatically re-wrote all Cargo.toml files. cargo-vendor outputs the
+ un-re-written original Cargo.toml files, but debcargo will forcibly rewrite
+ even un-re-written ones that were published to crates.io. The patch below
+ rewrites our existing patches so they work against the un-re-written ones.
+
+- tempfile: has dependency relaxation that applies but doesn't match the vendored copy
+- hashbrown, indexmap, regex-automata: outdated in debcargo-conf, would require
+ big transitions at the moment, patches only fix tests/disable unpackaged
+ dependencies
+
+diff --git a/src/commoncrypto-sys/debian/patches/no-clippy.patch b/src/commoncrypto-sys/debian/patches/no-clippy.patch
+index 3e4c8850e..93789f3b8 100644
+--- a/src/commoncrypto-sys/debian/patches/no-clippy.patch
++++ b/src/commoncrypto-sys/debian/patches/no-clippy.patch
+@@ -1,17 +1,16 @@
+---- a/Cargo.toml 2017-01-24 06:56:51.000000000 +0000
+-+++ b/Cargo.toml 2018-09-15 15:37:47.602333479 +0000
+-@@ -19,14 +19,8 @@
++--- a/Cargo.toml
+++++ b/Cargo.toml
++@@ -8,13 +8,8 @@
+ keywords = ["crypto", "hash", "digest", "osx", "commoncrypto"]
+ license = "MIT"
+- repository = "https://github.com/malept/rust-commoncrypto"
+--[dependencies.clippy]
+--version = "0.0"
+--optional = true
+
+- [dependencies.libc]
+- version = "0.2"
+- [dev-dependencies.hex]
+- version = "0.2"
+--
+ -[features]
+ -lint = ["clippy"]
++-
++ [dependencies]
++ libc = "0.2"
++
++-clippy = { version = "0.0", optional = true }
++-
++ [dev-dependencies]
++ hex = "0.2"
+diff --git a/src/commoncrypto/debian/patches/no-clippy.patch b/src/commoncrypto/debian/patches/no-clippy.patch
+index 38d9c9255..b21a7cae5 100644
+--- a/src/commoncrypto/debian/patches/no-clippy.patch
++++ b/src/commoncrypto/debian/patches/no-clippy.patch
+@@ -1,17 +1,16 @@
+---- a/Cargo.toml 2017-01-24 06:56:51.000000000 +0000
+-+++ b/Cargo.toml 2018-09-15 17:37:01.354423224 +0000
+-@@ -19,14 +19,8 @@
++--- a/Cargo.toml
+++++ b/Cargo.toml
++@@ -8,13 +8,8 @@
+ keywords = ["crypto", "hash", "digest", "osx", "commoncrypto"]
+ license = "MIT"
+- repository = "https://github.com/malept/rust-commoncrypto"
+--[dependencies.clippy]
+--version = "0.0"
+--optional = true
+
+- [dependencies.commoncrypto-sys]
+- version = "0.2.0"
+- [dev-dependencies.hex]
+- version = "0.2"
+--
+ -[features]
+ -lint = ["clippy"]
++-
++ [dependencies]
++ commoncrypto-sys = { version = "0.2.0", path = "../commoncrypto-sys" }
++
++-clippy = { version = "0.0", optional = true }
++-
++ [dev-dependencies]
++ hex = "0.2"
+diff --git a/src/hashbrown/debian/patches/series b/src/hashbrown/debian/patches/series
+index b84c40f49..e961ca4ee 100644
+--- a/src/hashbrown/debian/patches/series
++++ b/src/hashbrown/debian/patches/series
+@@ -1 +1 @@
+-disable-alloc.diff
++#disable-alloc.diff
+diff --git a/src/indexmap/debian/patches/series b/src/indexmap/debian/patches/series
+index 8804a7d0c..4020f576f 100644
+--- a/src/indexmap/debian/patches/series
++++ b/src/indexmap/debian/patches/series
+@@ -1,2 +1,2 @@
+-drop-rustc-rayon.diff
+-drop-quickcheck.diff
++#drop-rustc-rayon.diff
++#drop-quickcheck.diff
+diff --git a/src/regex-automata/debian/patches/series b/src/regex-automata/debian/patches/series
+index b41d6ce94..b0c6f806a 100644
+--- a/src/regex-automata/debian/patches/series
++++ b/src/regex-automata/debian/patches/series
+@@ -1,3 +1,3 @@
+-disable-tests-missing-testdata.patch
+-remove-regex-test.patch
+-relax-dep.diff
++#disable-tests-missing-testdata.patch
++#remove-regex-test.patch
++#relax-dep.diff
+diff --git a/src/tempfile/debian/patches/series b/src/tempfile/debian/patches/series
+index 75abb7f14..2378a84ba 100644
+--- a/src/tempfile/debian/patches/series
++++ b/src/tempfile/debian/patches/series
+@@ -1 +1 @@
+-relax-dep.diff
++#relax-dep.diff
diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644
index 0000000..e39258b
--- /dev/null
+++ b/debian/gbp.conf
@@ -0,0 +1,15 @@
+[DEFAULT]
+upstream-tag = upstream/%(version)s
+debian-tag = debian/%(version)s
+pristine-tar = True
+upstream-branch = upstream
+component = vendor
+
+[buildpackage]
+submodules = True
+ignore-branch = True
+sign-tags = True
+
+[import-orig]
+upstream-vcs-tag = %(version)s
+debian-branch = debian/experimental
diff --git a/debian/install b/debian/install
new file mode 100644
index 0000000..9deff97
--- /dev/null
+++ b/debian/install
@@ -0,0 +1,3 @@
+debian/scripts/* usr/share/cargo/scripts
+debian/bin/cargo usr/share/cargo/bin
+src/etc/_cargo usr/share/zsh/vendor-completions
diff --git a/debian/lintian-to-copyright.sh b/debian/lintian-to-copyright.sh
new file mode 100755
index 0000000..ab7960e
--- /dev/null
+++ b/debian/lintian-to-copyright.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+# Pipe the output of lintian into this.
+sed -ne 's,.* file-without-copyright-information ,,p' | cut -d/ -f1-2 | sort -u | while read x; do
+ /usr/share/cargo/scripts/guess-crate-copyright "$x"
+done
diff --git a/debian/make_orig_multi-pre-vendor.sh b/debian/make_orig_multi-pre-vendor.sh
new file mode 100755
index 0000000..843e3f2
--- /dev/null
+++ b/debian/make_orig_multi-pre-vendor.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+# Sometimes, by the time we get around to packaging cargo, the crates.io
+# ecosystem has moved on from the versions that cargo-vendor *would have* used
+# when that version of cargo was released. This places a lot of maintenance
+# burden on us, since it requires us to keep debcargo-conf always up-to-date.
+#
+# This script allows us to force cargo-vendor to use old versions of dependency
+# crates, that better match our debcargo-conf patches, as well as the versions
+# of crates used when a particular version of cargo was actually released.
+#
+# Example:
+# cargo update -p filetime --precise 0.2.12
+#
+
+# Drop the "vendored" feature since we patch it out of debcargo
+sed -i /vendored/d Cargo.toml
diff --git a/debian/make_orig_multi.sh b/debian/make_orig_multi.sh
new file mode 100755
index 0000000..8564744
--- /dev/null
+++ b/debian/make_orig_multi.sh
@@ -0,0 +1,71 @@
+#!/bin/sh
+set -e
+echo "This needs the following packages:"
+echo " python3-toml devscripts cargo cargo-lock"
+echo ""
+
+TMPDIR=`mktemp -d`
+echo "Using '${TMPDIR}'..."
+cat > "${TMPDIR}/Makefile" <<'EOF'
+include /usr/share/dpkg/pkg-info.mk
+all:
+ @echo $(DEB_VERSION_UPSTREAM)
+EOF
+SRCDIR="$PWD"
+
+if [ -z "$1" ]
+ then
+ USCAN_ARGS="";
+ CARGO_VER=$(make -f "${TMPDIR}/Makefile");
+ else
+ USCAN_ARGS="--download-version $1";
+ CARGO_VER="$1";
+fi;
+
+BOOTSTRAP_PY=$(find "${PWD}" -name bootstrap.py -type f)
+VENDOR_SUS_WHITELIST=$(find "${PWD}/debian" -name vendor-tarball-unsuspicious.txt -type f)
+
+# Download cargo tarball
+uscan --rename ${USCAN_ARGS} --force-download --destdir "${TMPDIR}/"
+
+# Extract cargo source
+cd "${TMPDIR}"
+mkdir cargo
+tar -xaf "${TMPDIR}/cargo_${CARGO_VER}.orig.tar.gz" -C cargo --strip-components=1
+cd cargo
+
+# Download build-deps via cargo-vendor
+export GIT_AUTHOR_NAME="deb-build"
+export GIT_AUTHOR_EMAIL="<>"
+export GIT_COMMITTER_NAME="${GIT_AUTHOR_NAME}"
+export GIT_COMMITTER_EMAIL="${GIT_AUTHOR_EMAIL}"
+
+SRCDIR="$SRCDIR" \
+CARGO_PRE_VENDOR="$SRCDIR/debian/make_orig_multi-pre-vendor.sh" \
+"$SRCDIR/debian/scripts/debian-cargo-vendor"
+
+cp -R vendor vendor-scan
+
+( cd vendor-scan
+"$SRCDIR/debian/scripts/audit-vendor-source" \
+ "$VENDOR_SUS_WHITELIST" \
+ "the 'excludes' key of the relevant debcargo.toml in debcargo-conf.git" \
+ -m text/x-script.python
+)
+
+rm -rf vendor-scan
+
+# Pack it up, reproducibly
+tar --sort=name \
+ --use-compress-program='gzip -9n' \
+ --mtime="./Cargo.lock" \
+ --owner=root --group=root \
+ -cf "${TMPDIR}/cargo_${CARGO_VER}.orig-vendor.tar.gz" vendor
+
+# All is good, we are done!
+echo "Your files are available at:"
+echo "${TMPDIR}/cargo_${CARGO_VER}.orig.tar.gz \\"
+echo "${TMPDIR}/cargo_${CARGO_VER}.orig-vendor.tar.gz"
+echo ""
+echo "Unpacked cargo sources are available under:"
+echo "${TMPDIR}/cargo/"
diff --git a/debian/missing-sources/prism.js b/debian/missing-sources/prism.js
new file mode 100644
index 0000000..b3ff71f
--- /dev/null
+++ b/debian/missing-sources/prism.js
@@ -0,0 +1,599 @@
+/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */
+var _self = (typeof window !== 'undefined')
+ ? window // if in browser
+ : (
+ (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)
+ ? self // if in worker
+ : {} // if in node js
+ );
+
+/**
+ * Prism: Lightweight, robust, elegant syntax highlighting
+ * MIT license http://www.opensource.org/licenses/mit-license.php/
+ * @author Lea Verou http://lea.verou.me
+ */
+
+var Prism = (function(){
+
+// Private helper vars
+var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i;
+
+var _ = _self.Prism = {
+ util: {
+ encode: function (tokens) {
+ if (tokens instanceof Token) {
+ return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);
+ } else if (_.util.type(tokens) === 'Array') {
+ return tokens.map(_.util.encode);
+ } else {
+ return tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\u00a0/g, ' ');
+ }
+ },
+
+ type: function (o) {
+ return Object.prototype.toString.call(o).match(/\[object (\w+)\]/)[1];
+ },
+
+ // Deep clone a language definition (e.g. to extend it)
+ clone: function (o) {
+ var type = _.util.type(o);
+
+ switch (type) {
+ case 'Object':
+ var clone = {};
+
+ for (var key in o) {
+ if (o.hasOwnProperty(key)) {
+ clone[key] = _.util.clone(o[key]);
+ }
+ }
+
+ return clone;
+
+ case 'Array':
+ // Check for existence for IE8
+ return o.map && o.map(function(v) { return _.util.clone(v); });
+ }
+
+ return o;
+ }
+ },
+
+ languages: {
+ extend: function (id, redef) {
+ var lang = _.util.clone(_.languages[id]);
+
+ for (var key in redef) {
+ lang[key] = redef[key];
+ }
+
+ return lang;
+ },
+
+ /**
+ * Insert a token before another token in a language literal
+ * As this needs to recreate the object (we cannot actually insert before keys in object literals),
+ * we cannot just provide an object, we need anobject and a key.
+ * @param inside The key (or language id) of the parent
+ * @param before The key to insert before. If not provided, the function appends instead.
+ * @param insert Object with the key/value pairs to insert
+ * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.
+ */
+ insertBefore: function (inside, before, insert, root) {
+ root = root || _.languages;
+ var grammar = root[inside];
+
+ if (arguments.length == 2) {
+ insert = arguments[1];
+
+ for (var newToken in insert) {
+ if (insert.hasOwnProperty(newToken)) {
+ grammar[newToken] = insert[newToken];
+ }
+ }
+
+ return grammar;
+ }
+
+ var ret = {};
+
+ for (var token in grammar) {
+
+ if (grammar.hasOwnProperty(token)) {
+
+ if (token == before) {
+
+ for (var newToken in insert) {
+
+ if (insert.hasOwnProperty(newToken)) {
+ ret[newToken] = insert[newToken];
+ }
+ }
+ }
+
+ ret[token] = grammar[token];
+ }
+ }
+
+ // Update references in other language definitions
+ _.languages.DFS(_.languages, function(key, value) {
+ if (value === root[inside] && key != inside) {
+ this[key] = ret;
+ }
+ });
+
+ return root[inside] = ret;
+ },
+
+ // Traverse a language definition with Depth First Search
+ DFS: function(o, callback, type) {
+ for (var i in o) {
+ if (o.hasOwnProperty(i)) {
+ callback.call(o, i, o[i], type || i);
+
+ if (_.util.type(o[i]) === 'Object') {
+ _.languages.DFS(o[i], callback);
+ }
+ else if (_.util.type(o[i]) === 'Array') {
+ _.languages.DFS(o[i], callback, i);
+ }
+ }
+ }
+ }
+ },
+
+ highlightAll: function(async, callback) {
+ var elements = document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code');
+
+ for (var i=0, element; element = elements[i++];) {
+ _.highlightElement(element, async === true, callback);
+ }
+ },
+
+ highlightElement: function(element, async, callback) {
+ // Find language
+ var language, grammar, parent = element;
+
+ while (parent && !lang.test(parent.className)) {
+ parent = parent.parentNode;
+ }
+
+ if (parent) {
+ language = (parent.className.match(lang) || [,''])[1];
+ grammar = _.languages[language];
+ }
+
+ // Set language on the element, if not present
+ element.className = element.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language;
+
+ // Set language on the parent, for styling
+ parent = element.parentNode;
+
+ if (/pre/i.test(parent.nodeName)) {
+ parent.className = parent.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language;
+ }
+
+ if (!grammar) {
+ return;
+ }
+
+ var code = element.textContent;
+
+ if(!code) {
+ return;
+ }
+
+ code = code.replace(/^(?:\r?\n|\r)/,'');
+
+ var env = {
+ element: element,
+ language: language,
+ grammar: grammar,
+ code: code
+ };
+
+ _.hooks.run('before-highlight', env);
+
+ if (async && _self.Worker) {
+ var worker = new Worker(_.filename);
+
+ worker.onmessage = function(evt) {
+ env.highlightedCode = Token.stringify(JSON.parse(evt.data), language);
+
+ _.hooks.run('before-insert', env);
+
+ env.element.innerHTML = env.highlightedCode;
+
+ callback && callback.call(env.element);
+ _.hooks.run('after-highlight', env);
+ };
+
+ worker.postMessage(JSON.stringify({
+ language: env.language,
+ code: env.code
+ }));
+ }
+ else {
+ env.highlightedCode = _.highlight(env.code, env.grammar, env.language);
+
+ _.hooks.run('before-insert', env);
+
+ env.element.innerHTML = env.highlightedCode;
+
+ callback && callback.call(element);
+
+ _.hooks.run('after-highlight', env);
+ }
+ },
+
+ highlight: function (text, grammar, language) {
+ var tokens = _.tokenize(text, grammar);
+ return Token.stringify(_.util.encode(tokens), language);
+ },
+
+ tokenize: function(text, grammar, language) {
+ var Token = _.Token;
+
+ var strarr = [text];
+
+ var rest = grammar.rest;
+
+ if (rest) {
+ for (var token in rest) {
+ grammar[token] = rest[token];
+ }
+
+ delete grammar.rest;
+ }
+
+ tokenloop: for (var token in grammar) {
+ if(!grammar.hasOwnProperty(token) || !grammar[token]) {
+ continue;
+ }
+
+ var patterns = grammar[token];
+ patterns = (_.util.type(patterns) === "Array") ? patterns : [patterns];
+
+ for (var j = 0; j < patterns.length; ++j) {
+ var pattern = patterns[j],
+ inside = pattern.inside,
+ lookbehind = !!pattern.lookbehind,
+ lookbehindLength = 0,
+ alias = pattern.alias;
+
+ pattern = pattern.pattern || pattern;
+
+ for (var i=0; i<strarr.length; i++) { // Don’t cache length as it changes during the loop
+
+ var str = strarr[i];
+
+ if (strarr.length > text.length) {
+ // Something went terribly wrong, ABORT, ABORT!
+ break tokenloop;
+ }
+
+ if (str instanceof Token) {
+ continue;
+ }
+
+ pattern.lastIndex = 0;
+
+ var match = pattern.exec(str);
+
+ if (match) {
+ if(lookbehind) {
+ lookbehindLength = match[1].length;
+ }
+
+ var from = match.index - 1 + lookbehindLength,
+ match = match[0].slice(lookbehindLength),
+ len = match.length,
+ to = from + len,
+ before = str.slice(0, from + 1),
+ after = str.slice(to + 1);
+
+ var args = [i, 1];
+
+ if (before) {
+ args.push(before);
+ }
+
+ var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias);
+
+ args.push(wrapped);
+
+ if (after) {
+ args.push(after);
+ }
+
+ Array.prototype.splice.apply(strarr, args);
+ }
+ }
+ }
+ }
+
+ return strarr;
+ },
+
+ hooks: {
+ all: {},
+
+ add: function (name, callback) {
+ var hooks = _.hooks.all;
+
+ hooks[name] = hooks[name] || [];
+
+ hooks[name].push(callback);
+ },
+
+ run: function (name, env) {
+ var callbacks = _.hooks.all[name];
+
+ if (!callbacks || !callbacks.length) {
+ return;
+ }
+
+ for (var i=0, callback; callback = callbacks[i++];) {
+ callback(env);
+ }
+ }
+ }
+};
+
+var Token = _.Token = function(type, content, alias) {
+ this.type = type;
+ this.content = content;
+ this.alias = alias;
+};
+
+Token.stringify = function(o, language, parent) {
+ if (typeof o == 'string') {
+ return o;
+ }
+
+ if (_.util.type(o) === 'Array') {
+ return o.map(function(element) {
+ return Token.stringify(element, language, o);
+ }).join('');
+ }
+
+ var env = {
+ type: o.type,
+ content: Token.stringify(o.content, language, parent),
+ tag: 'span',
+ classes: ['token', o.type],
+ attributes: {},
+ language: language,
+ parent: parent
+ };
+
+ if (env.type == 'comment') {
+ env.attributes['spellcheck'] = 'true';
+ }
+
+ if (o.alias) {
+ var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];
+ Array.prototype.push.apply(env.classes, aliases);
+ }
+
+ _.hooks.run('wrap', env);
+
+ var attributes = '';
+
+ for (var name in env.attributes) {
+ attributes += name + '="' + (env.attributes[name] || '') + '"';
+ }
+
+ return '<' + env.tag + ' class="' + env.classes.join(' ') + '" ' + attributes + '>' + env.content + '</' + env.tag + '>';
+
+};
+
+if (!_self.document) {
+ if (!_self.addEventListener) {
+ // in Node.js
+ return _self.Prism;
+ }
+ // In worker
+ _self.addEventListener('message', function(evt) {
+ var message = JSON.parse(evt.data),
+ lang = message.language,
+ code = message.code;
+
+ _self.postMessage(JSON.stringify(_.util.encode(_.tokenize(code, _.languages[lang]))));
+ _self.close();
+ }, false);
+
+ return _self.Prism;
+}
+
+// Get current script and highlight
+var script = document.getElementsByTagName('script');
+
+script = script[script.length - 1];
+
+if (script) {
+ _.filename = script.src;
+
+ if (document.addEventListener && !script.hasAttribute('data-manual')) {
+ document.addEventListener('DOMContentLoaded', _.highlightAll);
+ }
+}
+
+return _self.Prism;
+
+})();
+
+if (typeof module !== 'undefined' && module.exports) {
+ module.exports = Prism;
+}
+;
+Prism.languages.markup = {
+ 'comment': /<!--[\w\W]*?-->/,
+ 'prolog': /<\?[\w\W]+?\?>/,
+ 'doctype': /<!DOCTYPE[\w\W]+?>/,
+ 'cdata': /<!\[CDATA\[[\w\W]*?]]>/i,
+ 'tag': {
+ pattern: /<\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,
+ inside: {
+ 'tag': {
+ pattern: /^<\/?[^\s>\/]+/i,
+ inside: {
+ 'punctuation': /^<\/?/,
+ 'namespace': /^[^\s>\/:]+:/
+ }
+ },
+ 'attr-value': {
+ pattern: /=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,
+ inside: {
+ 'punctuation': /[=>"']/
+ }
+ },
+ 'punctuation': /\/?>/,
+ 'attr-name': {
+ pattern: /[^\s>\/]+/,
+ inside: {
+ 'namespace': /^[^\s>\/:]+:/
+ }
+ }
+
+ }
+ },
+ 'entity': /&#?[\da-z]{1,8};/i
+};
+
+// Plugin to make entity title show the real entity, idea by Roman Komarov
+Prism.hooks.add('wrap', function(env) {
+
+ if (env.type === 'entity') {
+ env.attributes['title'] = env.content.replace(/&amp;/, '&');
+ }
+});
+;
+Prism.languages.css = {
+ 'comment': /\/\*[\w\W]*?\*\//,
+ 'atrule': {
+ pattern: /@[\w-]+?.*?(;|(?=\s*\{))/i,
+ inside: {
+ 'rule': /@[\w-]+/
+ // See rest below
+ }
+ },
+ 'url': /url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,
+ 'selector': /[^\{\}\s][^\{\};]*?(?=\s*\{)/,
+ 'string': /("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,
+ 'property': /(\b|\B)[\w-]+(?=\s*:)/i,
+ 'important': /\B!important\b/i,
+ 'function': /[-a-z0-9]+(?=\()/i,
+ 'punctuation': /[(){};:]/
+};
+
+Prism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);
+
+if (Prism.languages.markup) {
+ Prism.languages.insertBefore('markup', 'tag', {
+ 'style': {
+ pattern: /<style[\w\W]*?>[\w\W]*?<\/style>/i,
+ inside: {
+ 'tag': {
+ pattern: /<style[\w\W]*?>|<\/style>/i,
+ inside: Prism.languages.markup.tag.inside
+ },
+ rest: Prism.languages.css
+ },
+ alias: 'language-css'
+ }
+ });
+
+ Prism.languages.insertBefore('inside', 'attr-value', {
+ 'style-attr': {
+ pattern: /\s*style=("|').*?\1/i,
+ inside: {
+ 'attr-name': {
+ pattern: /^\s*style/i,
+ inside: Prism.languages.markup.tag.inside
+ },
+ 'punctuation': /^\s*=\s*['"]|['"]\s*$/,
+ 'attr-value': {
+ pattern: /.+/i,
+ inside: Prism.languages.css
+ }
+ },
+ alias: 'language-css'
+ }
+ }, Prism.languages.markup.tag);
+};
+Prism.languages.clike = {
+ 'comment': [
+ {
+ pattern: /(^|[^\\])\/\*[\w\W]*?\*\//,
+ lookbehind: true
+ },
+ {
+ pattern: /(^|[^\\:])\/\/.*/,
+ lookbehind: true
+ }
+ ],
+ 'string': /("|')(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
+ 'class-name': {
+ pattern: /((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,
+ lookbehind: true,
+ inside: {
+ punctuation: /(\.|\\)/
+ }
+ },
+ 'keyword': /\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,
+ 'boolean': /\b(true|false)\b/,
+ 'function': /[a-z0-9_]+(?=\()/i,
+ 'number': /\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/,
+ 'operator': /[-+]{1,2}|!|<=?|>=?|={1,3}|&{1,2}|\|?\||\?|\*|\/|~|\^|%/,
+ 'punctuation': /[{}[\];(),.:]/
+};
+;
+Prism.languages.javascript = Prism.languages.extend('clike', {
+ 'keyword': /\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/,
+ 'number': /\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,
+ 'function': /(?!\d)[a-z0-9_$]+(?=\()/i
+});
+
+Prism.languages.insertBefore('javascript', 'keyword', {
+ 'regex': {
+ pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,
+ lookbehind: true
+ }
+});
+
+Prism.languages.insertBefore('javascript', 'class-name', {
+ 'template-string': {
+ pattern: /`(?:\\`|\\?[^`])*`/,
+ inside: {
+ 'interpolation': {
+ pattern: /\$\{[^}]+\}/,
+ inside: {
+ 'interpolation-punctuation': {
+ pattern: /^\$\{|\}$/,
+ alias: 'punctuation'
+ },
+ rest: Prism.languages.javascript
+ }
+ },
+ 'string': /[\s\S]+/
+ }
+ }
+});
+
+if (Prism.languages.markup) {
+ Prism.languages.insertBefore('markup', 'tag', {
+ 'script': {
+ pattern: /<script[\w\W]*?>[\w\W]*?<\/script>/i,
+ inside: {
+ 'tag': {
+ pattern: /<script[\w\W]*?>|<\/script>/i,
+ inside: Prism.languages.markup.tag.inside
+ },
+ rest: Prism.languages.javascript
+ },
+ alias: 'language-javascript'
+ }
+ });
+}
+;
diff --git a/debian/patches/0003-tests-add-missing-cross-disabled-checks.patch b/debian/patches/0003-tests-add-missing-cross-disabled-checks.patch
new file mode 100644
index 0000000..8a6f569
--- /dev/null
+++ b/debian/patches/0003-tests-add-missing-cross-disabled-checks.patch
@@ -0,0 +1,43 @@
+From 981279ccd8f7855faaed010bff0891afff588210 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?=
+ <debian@fabian.gruenbichler.email>
+Date: Sat, 19 Nov 2022 10:24:08 +0100
+Subject: [PATCH] tests: add missing cross disabled checks
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+cross_conmpile::alternate states it should only be used in test cases
+after checking cross_compile::disabled(), which is missing here. these
+tests fail despite setting CFG_DISABLE_CROSS_TESTS on i386, since both
+the host and the alternate cross target would be i686 in that case.
+
+Signed-off-by: Fabian Grünbichler <debian@fabian.gruenbichler.email>
+---
+ tests/testsuite/build_script.rs | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+Index: cargo/tests/testsuite/build_script.rs
+===================================================================
+--- cargo.orig/tests/testsuite/build_script.rs
++++ cargo/tests/testsuite/build_script.rs
+@@ -697,6 +697,9 @@ fn custom_build_linker_bad_host_with_arc
+ #[cargo_test]
+ fn custom_build_env_var_rustc_linker_cross_arch_host() {
+ let target = rustc_host();
++ if cross_compile::disabled() {
++ return;
++ }
+ let cross_target = cross_compile::alternate();
+ let p = project()
+ .file(
+@@ -735,6 +738,9 @@ fn custom_build_env_var_rustc_linker_cro
+ #[cargo_test]
+ fn custom_build_linker_bad_cross_arch_host() {
+ let target = rustc_host();
++ if cross_compile::disabled() {
++ return;
++ }
+ let cross_target = cross_compile::alternate();
+ let p = project()
+ .file(
diff --git a/debian/patches/0004-test-loose-overly-matches-for-git-cli-output.patch b/debian/patches/0004-test-loose-overly-matches-for-git-cli-output.patch
new file mode 100644
index 0000000..0fd6248
--- /dev/null
+++ b/debian/patches/0004-test-loose-overly-matches-for-git-cli-output.patch
@@ -0,0 +1,43 @@
+From 51ebba2fc1c581e4ec30b308c07f7b70ef3d2f10 Mon Sep 17 00:00:00 2001
+From: Weihang Lo <me@weihanglo.tw>
+Date: Wed, 7 Jun 2023 22:47:25 +0100
+Subject: [PATCH] test: loose overly matches for git cli output
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The output format should be stable I believe, but it turns out not.
+This is how `git fetch` man page says [1]:
+
+```
+<flag> <summary> <from> -> <to> [<reason>]
+```
+
+In Git 2.41 they've changed the fetch output a bit [2].
+
+I think let's just loose it to prevent future breakages.
+
+[1]: https://git-scm.com/docs/git-fetch#_output
+[2]: https://github.blog/2023-06-01-highlights-from-git-2-41/
+
+Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
+---
+ tests/testsuite/git.rs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/testsuite/git.rs b/tests/testsuite/git.rs
+index 091192037..7c717e967 100644
+--- a/tests/testsuite/git.rs
++++ b/tests/testsuite/git.rs
+@@ -2711,7 +2711,7 @@ fn use_the_cli() {
+ [UPDATING] git repository `[..]`
+ [RUNNING] `git fetch [..]`
+ From [..]
+- * [new ref] -> origin/HEAD
++ * [new ref] [..] -> origin/HEAD[..]
+ [CHECKING] dep1 [..]
+ [RUNNING] `rustc [..]`
+ [CHECKING] foo [..]
+--
+2.39.2
+
diff --git a/debian/patches/1000-riscv64-skip-split-debuginfo-test.patch b/debian/patches/1000-riscv64-skip-split-debuginfo-test.patch
new file mode 100644
index 0000000..68fd43d
--- /dev/null
+++ b/debian/patches/1000-riscv64-skip-split-debuginfo-test.patch
@@ -0,0 +1,19 @@
+Subject: riscv64 skip split debuginfo test
+Author: Fabian Grünbichler <debian@fabian.gruenbichler.email>
+
+See corresponding rustc change for details.
+
+diff --git a/tests/testsuite/build.rs.orig b/tests/testsuite/build.rs
+index 56130c6..369a3e9 100644
+--- a/tests/testsuite/build.rs.orig
++++ b/tests/testsuite/build.rs
+@@ -5313,7 +5313,7 @@ fn uplift_pdb_of_bin_on_windows() {
+ }
+
+ #[cargo_test]
+-#[cfg(target_os = "linux")]
++#[cfg(all(target_os = "linux", target_arch = "riscv"))]
+ fn uplift_dwp_of_bin_on_linux() {
+ let p = project()
+ .file("src/main.rs", "fn main() { panic!(); }")
+
diff --git a/debian/patches/2000-fix-test-stderr.patch b/debian/patches/2000-fix-test-stderr.patch
new file mode 100644
index 0000000..add1ab7
--- /dev/null
+++ b/debian/patches/2000-fix-test-stderr.patch
@@ -0,0 +1,12 @@
+Index: cargo/tests/testsuite/build_script.rs
+===================================================================
+--- cargo.orig/tests/testsuite/build_script.rs
++++ cargo/tests/testsuite/build_script.rs
+@@ -33,6 +33,7 @@ fn custom_build_script_failed() {
+ .file("build.rs", "fn main() { std::process::exit(101); }")
+ .build();
+ p.cargo("build -v")
++ .env("RUST_BACKTRACE", "0")
+ .with_status(101)
+ .with_stderr(
+ "\
diff --git a/debian/patches/2002_disable-net-tests.patch b/debian/patches/2002_disable-net-tests.patch
new file mode 100644
index 0000000..3623165
--- /dev/null
+++ b/debian/patches/2002_disable-net-tests.patch
@@ -0,0 +1,615 @@
+Description: Disable network tests
+Author: Ximin Luo <infinity0@debian.org>
+Forwarded: TODO
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+Index: cargo/tests/testsuite/git_auth.rs
+===================================================================
+--- cargo.orig/tests/testsuite/git_auth.rs
++++ cargo/tests/testsuite/git_auth.rs
+@@ -102,7 +102,7 @@ fn setup_failed_auth_test() -> (SocketAd
+ }
+
+ // Tests that HTTP auth is offered from `credential.helper`.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn http_auth_offered() {
+ let (addr, t, connections) = setup_failed_auth_test();
+ let p = project()
+@@ -167,7 +167,7 @@ Caused by:
+ }
+
+ // Boy, sure would be nice to have a TLS implementation in rust!
+-#[cargo_test]
++#[allow(dead_code)]
+ fn https_something_happens() {
+ let server = TcpListener::bind("127.0.0.1:0").unwrap();
+ let addr = server.local_addr().unwrap();
+Index: cargo/tests/testsuite/net_config.rs
+===================================================================
+--- cargo.orig/tests/testsuite/net_config.rs
++++ cargo/tests/testsuite/net_config.rs
+@@ -2,7 +2,7 @@
+
+ use cargo_test_support::project;
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn net_retry_loads_from_config() {
+ let p = project()
+ .file(
+@@ -38,7 +38,7 @@ fn net_retry_loads_from_config() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn net_retry_git_outputs_warning() {
+ let p = project()
+ .file(
+Index: cargo/tests/testsuite/publish.rs
+===================================================================
+--- cargo.orig/tests/testsuite/publish.rs
++++ cargo/tests/testsuite/publish.rs
+@@ -85,7 +85,7 @@ fn validate_upload_li() {
+ );
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn simple() {
+ let registry = RegistryBuilder::new().http_api().http_index().build();
+
+@@ -124,7 +124,7 @@ See [..]
+
+ // Check that the `token` key works at the root instead of under a
+ // `[registry]` table.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn simple_publish_with_http() {
+ let _reg = registry::RegistryBuilder::new()
+ .http_api()
+@@ -161,7 +161,7 @@ See [..]
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn simple_publish_with_asymmetric() {
+ let _reg = registry::RegistryBuilder::new()
+ .http_api()
+@@ -201,7 +201,7 @@ See [..]
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn old_token_location() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -255,7 +255,7 @@ See [..]
+ // Other tests will verify the endpoint gets the right payload.
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn simple_with_index() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -297,7 +297,7 @@ fn simple_with_index() {
+ // Other tests will verify the endpoint gets the right payload.
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn git_deps() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -335,7 +335,7 @@ the `git` specification will be removed
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn path_dependency_no_version() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -375,7 +375,7 @@ the `path` specification will be removed
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn unpublishable_crate() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -408,7 +408,7 @@ fn unpublishable_crate() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn dont_publish_dirty() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -450,7 +450,7 @@ to proceed despite this and include the
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_clean() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -495,7 +495,7 @@ fn publish_clean() {
+ // Other tests will verify the endpoint gets the right payload.
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_in_sub_repo() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -541,7 +541,7 @@ fn publish_in_sub_repo() {
+ // Other tests will verify the endpoint gets the right payload.
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_when_ignored() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -587,7 +587,7 @@ fn publish_when_ignored() {
+ // Other tests will verify the endpoint gets the right payload.
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn ignore_when_crate_ignored() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -632,7 +632,7 @@ fn ignore_when_crate_ignored() {
+ // Other tests will verify the endpoint gets the right payload.
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn new_crate_rejected() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -665,7 +665,7 @@ fn new_crate_rejected() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn dry_run() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -708,7 +708,7 @@ See [..]
+ assert!(!registry::api_path().join("api/v1/crates/new").exists());
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn registry_not_in_publish_list() {
+ let p = project()
+ .file(
+@@ -741,7 +741,7 @@ The registry `alternative` is not listed
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_empty_list() {
+ let p = project()
+ .file(
+@@ -770,7 +770,7 @@ fn publish_empty_list() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_allowed_registry() {
+ let _registry = RegistryBuilder::new()
+ .http_api()
+@@ -827,7 +827,7 @@ fn publish_allowed_registry() {
+ );
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_implicitly_to_only_allowed_registry() {
+ let _registry = RegistryBuilder::new()
+ .http_api()
+@@ -885,7 +885,7 @@ fn publish_implicitly_to_only_allowed_re
+ );
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_fail_with_no_registry_specified() {
+ let p = project().build();
+
+@@ -919,7 +919,7 @@ The registry `crates-io` is not listed i
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn block_publish_no_registry() {
+ let p = project()
+ .file(
+@@ -949,7 +949,7 @@ fn block_publish_no_registry() {
+ }
+
+ // Explicitly setting `crates-io` in the publish list.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_with_crates_io_explicit() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -999,7 +999,7 @@ The registry `alternative` is not listed
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_with_select_features() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -1047,7 +1047,7 @@ fn publish_with_select_features() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_with_all_features() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -1095,7 +1095,7 @@ fn publish_with_all_features() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_with_no_default_features() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -1131,7 +1131,7 @@ fn publish_with_no_default_features() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_with_patch() {
+ let registry = RegistryBuilder::new().http_api().http_index().build();
+ Package::new("bar", "1.0.0").publish();
+@@ -1233,7 +1233,7 @@ fn publish_with_patch() {
+ );
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_checks_for_token_before_verify() {
+ let registry = registry::RegistryBuilder::new()
+ .no_configure_token()
+@@ -1282,7 +1282,7 @@ fn publish_checks_for_token_before_verif
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_with_bad_source() {
+ let p = project()
+ .file(
+@@ -1331,7 +1331,7 @@ include `--registry crates-io` to use cr
+ }
+
+ // A dependency with both `git` and `version`.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_git_with_version() {
+ let registry = RegistryBuilder::new().http_api().http_index().build();
+
+@@ -1471,7 +1471,7 @@ fn publish_git_with_version() {
+ );
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_dev_dep_no_version() {
+ let registry = RegistryBuilder::new().http_api().http_index().build();
+
+@@ -1557,7 +1557,7 @@ repository = "foo"
+ );
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn credentials_ambiguous_filename() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -1610,7 +1610,7 @@ fn credentials_ambiguous_filename() {
+
+ // --index will not load registry.token to avoid possibly leaking
+ // crates.io token to another server.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn index_requires_token() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -1645,7 +1645,7 @@ fn index_requires_token() {
+ }
+
+ // publish with source replacement without --registry
+-#[cargo_test]
++#[allow(dead_code)]
+ fn cratesio_source_replacement() {
+ registry::init();
+ let p = project()
+@@ -1674,7 +1674,7 @@ include `--registry dummy-registry` or `
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish_with_missing_readme() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -1719,7 +1719,7 @@ Caused by:
+ }
+
+ // Registry returns an API error.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn api_error_json() {
+ let _registry = registry::RegistryBuilder::new()
+ .alternative()
+@@ -1767,7 +1767,7 @@ Caused by:
+ }
+
+ // Registry returns an API error with a 200 status code.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn api_error_200() {
+ let _registry = registry::RegistryBuilder::new()
+ .alternative()
+@@ -1815,7 +1815,7 @@ Caused by:
+ }
+
+ // Registry returns an error code without a JSON message.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn api_error_code() {
+ let _registry = registry::RegistryBuilder::new()
+ .alternative()
+@@ -1869,7 +1869,7 @@ Caused by:
+ }
+
+ // Registry has a network error.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn api_curl_error() {
+ let _registry = registry::RegistryBuilder::new()
+ .alternative()
+@@ -1919,7 +1919,7 @@ Caused by:
+ }
+
+ // Registry returns an invalid response.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn api_other_error() {
+ let _registry = registry::RegistryBuilder::new()
+ .alternative()
+@@ -1969,7 +1969,7 @@ Caused by:
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn in_package_workspace() {
+ let registry = RegistryBuilder::new().http_api().http_index().build();
+
+@@ -2017,7 +2017,7 @@ See [..]
+ validate_upload_li();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn with_duplicate_spec_in_members() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -2069,7 +2069,7 @@ fn with_duplicate_spec_in_members() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn in_package_workspace_with_members_with_features_old() {
+ let registry = RegistryBuilder::new().http_api().http_index().build();
+
+@@ -2116,7 +2116,7 @@ See [..]
+ validate_upload_li();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn in_virtual_workspace() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -2152,7 +2152,7 @@ fn in_virtual_workspace() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn in_virtual_workspace_with_p() {
+ // `publish` generally requires a remote registry
+ let registry = registry::RegistryBuilder::new().http_api().build();
+@@ -2206,7 +2206,7 @@ See [..]
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn in_package_workspace_not_found() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -2251,7 +2251,7 @@ error: package ID specification `li` did
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn in_package_workspace_found_multiple() {
+ // Use local registry for faster test times since no publish will occur
+ let registry = registry::init();
+@@ -2308,7 +2308,7 @@ error: the `-p` argument must be specifi
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ // https://github.com/rust-lang/cargo/issues/10536
+ fn publish_path_dependency_without_workspace() {
+ // Use local registry for faster test times since no publish will occur
+@@ -2355,7 +2355,7 @@ error: package ID specification `bar` di
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn http_api_not_noop() {
+ let registry = registry::RegistryBuilder::new().http_api().build();
+
+@@ -2413,7 +2413,7 @@ fn http_api_not_noop() {
+ p.cargo("build").run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn wait_for_first_publish() {
+ // Counter for number of tries before the package is "published"
+ let arc: Arc<Mutex<u32>> = Arc::new(Mutex::new(0));
+@@ -2493,7 +2493,7 @@ See [..]
+ /// A separate test is needed for package names with - or _ as they hit
+ /// the responder twice per cargo invocation. If that ever gets changed
+ /// this test will need to be changed accordingly.
+-#[cargo_test]
++#[allow(dead_code)]
+ fn wait_for_first_publish_underscore() {
+ // Counter for number of tries before the package is "published"
+ let arc: Arc<Mutex<u32>> = Arc::new(Mutex::new(0));
+@@ -2570,7 +2570,7 @@ See [..]
+ p.cargo("build").with_status(0).run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn wait_for_subsequent_publish() {
+ // Counter for number of tries before the package is "published"
+ let arc: Arc<Mutex<u32>> = Arc::new(Mutex::new(0));
+@@ -2660,7 +2660,7 @@ See [..]
+ p.cargo("build").with_status(0).run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn skip_wait_for_publish() {
+ // Intentionally using local registry so the crate never makes it to the index
+ let registry = registry::init();
+Index: cargo/tests/testsuite/credential_process.rs
+===================================================================
+--- cargo.orig/tests/testsuite/credential_process.rs
++++ cargo/tests/testsuite/credential_process.rs
+@@ -8,7 +8,7 @@ fn toml_bin(proj: &Project, name: &str)
+ proj.bin(name).display().to_string().replace('\\', "\\\\")
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn gated() {
+ let _alternative = registry::RegistryBuilder::new()
+ .alternative()
+@@ -65,7 +65,7 @@ or use environment variable CARGO_REGIST
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn warn_both_token_and_process() {
+ // Specifying both credential-process and a token in config should issue a warning.
+ let _server = registry::RegistryBuilder::new()
+@@ -209,7 +209,7 @@ fn get_token_test() -> (Project, TestReg
+ (p, server)
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn publish() {
+ // Checks that credential-process is used for `cargo publish`.
+ let (p, _t) = get_token_test();
+@@ -231,7 +231,7 @@ fn publish() {
+ assert_eq!(calls, 1);
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn basic_unsupported() {
+ // Non-action commands don't support login/logout.
+ let registry = registry::RegistryBuilder::new()
+@@ -274,7 +274,7 @@ the credential-process configuration val
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn login() {
+ let server = registry::RegistryBuilder::new()
+ .no_configure_token()
+@@ -331,7 +331,7 @@ fn login() {
+ );
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn logout() {
+ let server = registry::RegistryBuilder::new()
+ .no_configure_token()
+@@ -386,7 +386,7 @@ token for `crates-io` has been erased!
+ );
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn yank() {
+ let (p, _t) = get_token_test();
+
+@@ -401,7 +401,7 @@ fn yank() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn owner() {
+ let (p, _t) = get_token_test();
+
+@@ -416,7 +416,7 @@ fn owner() {
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn libexec_path() {
+ // cargo: prefixed names use the sysroot
+ let server = registry::RegistryBuilder::new()
+@@ -450,7 +450,7 @@ Caused by:
+ .run();
+ }
+
+-#[cargo_test]
++#[allow(dead_code)]
+ fn invalid_token_output() {
+ // Error when credential process does not output the expected format for a token.
+ let _server = registry::RegistryBuilder::new()
diff --git a/debian/patches/2003-workaround-qemu-vfork-command-not-found.patch b/debian/patches/2003-workaround-qemu-vfork-command-not-found.patch
new file mode 100644
index 0000000..d7f6424
--- /dev/null
+++ b/debian/patches/2003-workaround-qemu-vfork-command-not-found.patch
@@ -0,0 +1,19 @@
+Index: cargo/crates/cargo-test-macro/src/lib.rs
+===================================================================
+--- cargo.orig/crates/cargo-test-macro/src/lib.rs
++++ cargo/crates/cargo-test-macro/src/lib.rs
+@@ -223,6 +223,14 @@ fn has_command(command: &str) -> bool {
+ }
+ };
+ if !output.status.success() {
++ // Debian specific patch, upstream wontfix:
++ // qemu has a faulty vfork where it fails to fail if a command is not
++ // found, with a unix_wait_status of 32512, or 0x7f00, 7f meaning
++ // exit code 127. See https://github.com/rust-lang/rust/issues/90825
++ use std::os::unix::process::ExitStatusExt;
++ if output.status.into_raw() == 0x7f00 {
++ return false;
++ }
+ panic!(
+ "expected command `{}` to be runnable, got error {}:\n\
+ stderr:{}\n\
diff --git a/debian/patches/2200-workaround-x32-test.patch b/debian/patches/2200-workaround-x32-test.patch
new file mode 100644
index 0000000..82937b2
--- /dev/null
+++ b/debian/patches/2200-workaround-x32-test.patch
@@ -0,0 +1,15 @@
+Bug: https://github.com/rust-lang/cargo/issues/10005
+
+Index: cargo/tests/testsuite/cfg.rs
+===================================================================
+--- cargo.orig/tests/testsuite/cfg.rs
++++ cargo/tests/testsuite/cfg.rs
+@@ -272,7 +272,7 @@ fn any_ok() {
+
+ // https://github.com/rust-lang/cargo/issues/5313
+ #[cargo_test]
+-#[cfg(all(target_arch = "x86_64", target_os = "linux", target_env = "gnu"))]
++#[cfg(all(target_arch = "x86_64", target_os = "linux", target_env = "gnu", target_pointer_width = "64"))]
+ fn cfg_looks_at_rustflags_for_target() {
+ let p = project()
+ .file(
diff --git a/debian/patches/README b/debian/patches/README
new file mode 100644
index 0000000..80c1584
--- /dev/null
+++ b/debian/patches/README
@@ -0,0 +1,3 @@
+0xxx: Grabbed from upstream development.
+1xxx: Possibly relevant for upstream adoption.
+2xxx: Only relevant for official Debian release.
diff --git a/debian/patches/disable-fs-specific-test.patch b/debian/patches/disable-fs-specific-test.patch
new file mode 100644
index 0000000..518665b
--- /dev/null
+++ b/debian/patches/disable-fs-specific-test.patch
@@ -0,0 +1,13 @@
+Index: cargo/tests/testsuite/metadata.rs
+===================================================================
+--- cargo.orig/tests/testsuite/metadata.rs
++++ cargo/tests/testsuite/metadata.rs
+@@ -3935,7 +3935,7 @@ fn dep_kinds_workspace() {
+ // Creating non-utf8 path is an OS-specific pain, so let's run this only on
+ // linux, where arbitrary bytes work.
+ #[cfg(target_os = "linux")]
+-#[cargo_test]
++#[allow(dead_code)]
+ fn cargo_metadata_non_utf8() {
+ use std::ffi::OsString;
+ use std::os::unix::ffi::OsStringExt;
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..501cb5f
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,11 @@
+2002_disable-net-tests.patch
+2003-workaround-qemu-vfork-command-not-found.patch
+
+2200-workaround-x32-test.patch
+disable-fs-specific-test.patch
+0003-tests-add-missing-cross-disabled-checks.patch
+2000-fix-test-stderr.patch
+0004-test-loose-overly-matches-for-git-cli-output.patch
+
+update-libgit2.patch
+1000-riscv64-skip-split-debuginfo-test.patch
diff --git a/debian/patches/update-libgit2.patch b/debian/patches/update-libgit2.patch
new file mode 100644
index 0000000..499de6a
--- /dev/null
+++ b/debian/patches/update-libgit2.patch
@@ -0,0 +1,37 @@
+Index: cargo/Cargo.toml
+===================================================================
+--- cargo.orig/Cargo.toml
++++ cargo/Cargo.toml
+@@ -28,8 +28,8 @@ curl-sys = "0.4.59"
+ env_logger = "0.10.0"
+ filetime = "0.2.9"
+ flate2 = { version = "1.0.3", default-features = false, features = ["zlib"] }
+-git2 = "0.16.0"
+-git2-curl = "0.17.0"
++git2 = "0.18.0"
++git2-curl = "0.19.0"
+ glob = "0.3.0"
+ hex = "0.4"
+ hmac = "0.12.1"
+@@ -47,7 +47,7 @@ lazycell = "1.2.0"
+ libc = "0.2"
+ # Temporarily pin libgit2-sys due to some issues with SSH not working on
+ # Windows.
+-libgit2-sys = "=0.14.1"
++libgit2-sys = "0.16.1"
+ log = "0.4.6"
+ memchr = "2.1.3"
+ opener = "0.5"
+Index: cargo/crates/cargo-test-support/Cargo.toml
+===================================================================
+--- cargo.orig/crates/cargo-test-support/Cargo.toml
++++ cargo/crates/cargo-test-support/Cargo.toml
+@@ -14,7 +14,7 @@ cargo-util = { path = "../cargo-util" }
+ crates-io = { path = "../crates-io" }
+ filetime = "0.2"
+ flate2 = { version = "1.0", default-features = false, features = ["zlib"] }
+-git2 = "0.16.0"
++git2 = "0.18.0"
+ glob = "0.3"
+ itertools = "0.10.0"
+ lazy_static = "1.0"
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..73e1e8a
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,62 @@
+#!/usr/bin/make -f
+
+include /usr/share/dpkg/pkg-info.mk
+include /usr/share/dpkg/architecture.mk
+include /usr/share/dpkg/buildflags.mk
+include /usr/share/rustc/architecture.mk
+
+export CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
+export DEB_HOST_RUST_TYPE DEB_HOST_GNU_TYPE
+
+CARGO = $(CURDIR)/debian/bin/cargo
+
+export CARGO_HOME = $(CURDIR)/debian/cargo_home
+export DEB_CARGO_CRATE=cargo_$(DEB_VERSION_UPSTREAM)
+RUSTFLAGS := --remap-path-prefix=$(CURDIR)=/usr/src/cargo-$(DEB_VERSION_UPSTREAM)
+
+# https://github.com/rust-lang/rust/issues/52108
+ifneq (,$(filter $(DEB_HOST_ARCH), mips64el))
+ RUSTFLAGS += -Ctarget-feature=+xgot
+endif
+
+export RUSTFLAGS
+
+# don't shrink, this can take ages
+# see https://github.com/rust-lang/cargo/issues/6490 for details
+export PROPTEST_MAX_SHRINK_ITERS = 0
+export CARGO_TEST_SLOW_CPU_MULTIPLIER = 4
+
+# To run a specific test, run something like:
+# $ debian/rules override_dh_auto_test-arch \
+# CARGO_TEST_FLAGS="package::include -- <args ...>"
+# See `cargo test --help` for more options.
+CARGO_TEST_FLAGS =
+
+%:
+ dh $@ --with bash-completion
+
+override_dh_auto_configure:
+ $(CARGO) prepare-debian $(CURDIR)/vendor
+
+override_dh_auto_build-arch:
+ $(CARGO) build
+
+override_dh_auto_build-indep:
+ $(CARGO) doc --no-deps
+
+override_dh_auto_test-arch:
+ CFG_DISABLE_CROSS_TESTS=1 $(CARGO) test $(CARGO_TEST_FLAGS)
+
+override_dh_auto_test-indep:
+ # no arch-indep tests
+
+override_dh_auto_install:
+ DESTDIR=$(CURDIR)/debian/cargo $(CARGO) install
+
+override_dh_auto_clean:
+ $(CARGO) clean
+
+override_dh_clean:
+ # Upstream contains a lot of these
+ dh_clean -XCargo.toml.orig
+ rm -f Cargo.lock
diff --git a/debian/scripts/audit-vendor-source b/debian/scripts/audit-vendor-source
new file mode 100755
index 0000000..08a46d8
--- /dev/null
+++ b/debian/scripts/audit-vendor-source
@@ -0,0 +1,40 @@
+#!/bin/sh
+# Audit Rust crate source for suspicious files in the current directory, that
+# shouldn't or can't be part of a Debian source package.
+#
+# NOTE: this overwrites & deletes files in the current directory!!! Make a
+# backup before running this script.
+#
+# Usage: $0 <whitelist> <filter_description> [<extra args to suspicious-source>]
+
+set -e
+
+whitelist="$1"
+filter_description="$2"
+shift 2 # everything else is args to suspicious-source
+
+# Remove tiny files 4 bytes or less
+find . -size -4c -type f -delete
+# Remove non-suspicious files, warning on patterns that match nothing
+echo "Excluding (i.e. removing) whitelisted files..."
+grep -v '^#' "$whitelist" | xargs -I% sh -c 'rm -r ./% || true'
+echo "Checking for suspicious files..."
+# Remove cargo metadata files
+find . '(' -name '.cargo-checksum.json' -or -name '.cargo_vcs_info.json' ')' -delete
+# Strip comments & blank lines before testing rust source code -
+# some authors like to write really long comments
+find . -name '*.rs' -execdir sed -i -e '\,^\s*//,d' -e '/^\s*$/d' '{}' \;
+
+# TODO: merge the -m stuff into suspicious-source(1).
+suspicious-source -v "$@"
+# The following shell snippet is a bit more strict than suspicious-source(1)
+find . -type f -exec file '{}' \; | \
+ sed -e 's/\btext\b\(.*\), with very long lines/verylongtext\1/g' | \
+ grep -v '\b\(text\|empty\)\b' || true
+
+# Most C and JS code should be in their own package
+find . -name '*.c' -o -name '*.js'
+
+echo "The above files (if any) seem suspicious, please audit them."
+echo "If good, add them to $whitelist."
+echo "If bad, add them to $filter_description."
diff --git a/debian/scripts/debian-cargo-vendor b/debian/scripts/debian-cargo-vendor
new file mode 100755
index 0000000..9fa9be4
--- /dev/null
+++ b/debian/scripts/debian-cargo-vendor
@@ -0,0 +1,167 @@
+#!/bin/bash
+# To run this, you need to first install cargo-lock.
+#
+# TODO: this script has a known bug in: if the Debian patches being applied,
+# changes the set of dependencies, then "cargo vendor" is not re-run in order
+# to pick up this new set of dependencies. This is manifested by an error
+# message like: "perhaps a crate was updated and forgotten to be re-vendored?"
+#
+set -e
+
+SCRIPTDIR="$(dirname "$(readlink -f "$0")")"
+
+not_needed() {
+ diff -ur packages-before packages-after | grep "^-- " | cut -d' ' -f2-3
+}
+
+ghetto_parse_cargo() {
+ cat "$1" \
+ | tr '\n' '\t' \
+ | sed -e 's/\t\[/\n[/g' \
+ | perl -ne 'print if s/^\[(?:package|project)\].*\tname\s*=\s*"(.*?)".*\tversion\s*=\s*"(.*?)".*/\1 \2/g'
+}
+
+pruned_paths() {
+ for i in vendor/*/Cargo.toml; do
+ pkgnamever=
+ pkgnamever=$(ghetto_parse_cargo "$i")
+ if [ -z "$pkgnamever" ]; then
+ echo >&2 "failed to parse: $i"
+ exit 1
+ fi
+ echo "$pkgnamever $i"
+ done | grep -F -f <(not_needed) | cut '-d ' -f3 | while read x; do
+ echo " $(dirname $x)"
+ done
+}
+
+crate_to_debcargo_conf() {
+ echo "$1" | sed -e 's/_/-/g'
+}
+
+rm -rf vendor/
+if [ -e "$CARGO_PRE_VENDOR" ]; then
+ "$CARGO_PRE_VENDOR"
+fi
+cargo vendor --verbose vendor/
+mkdir -p .cargo
+cat >.cargo/config <<eof
+[source.crates-io]
+replace-with = "vendored-sources"
+
+[source.vendored-sources]
+directory = "$PWD/vendor"
+eof
+cargo lock list > packages-before
+cp Cargo.lock Cargo.lock.orig
+
+if [ -d debcargo-conf ]; then ( cd debcargo-conf && git pull );
+else git clone "${DEBCARGO_CONF:-https://salsa.debian.org/rust-team/debcargo-conf}"; fi
+
+# keep applying patches, and drop to a subshell for manual fixing, until it succeeds
+while ! ( cd vendor
+x=true
+for i in *; do
+ debname=$(crate_to_debcargo_conf "$i")
+ cd $i
+ # if there is a d/rules then don't mess with it, it's too custom for this
+ # script to deal with - just use the upstream version. example: backtrace-sys
+ # TODO: deal with those better, especially backtrace-sys
+ if [ -e ../../debcargo-conf/src/$debname/debian/rules ]; then
+ echo >&2 "$0: the debcargo-conf for crate $i has a custom rules file, but applying patches anyway"
+ echo >&2 "$0: you may want to examine this situation more closely"
+ fi
+ if [ -d ../../debcargo-conf/src/$debname/debian/patches ]; then
+ echo >&2 "$0: patching $i"
+ mkdir -p debian
+ if [ ! -d debian/patches ]; then
+ cp -a -n "../../debcargo-conf/src/$debname/debian/patches" debian/
+ fi
+ # first unapply any patches applied in the previous iteration
+ QUILT_PATCHES=debian/patches quilt pop -af
+ QUILT_PATCHES=debian/patches quilt push -a
+ case $? in
+ 0|2) true;;
+ *) echo >&2 "$0: patching $i failed <<<<<<<<<<<<<<<<<<<<<<<<"
+ QUILT_PATCHES=debian/patches quilt pop -af
+ x=false;;
+ esac
+ fi
+ if [ -f ../../debcargo-conf/src/$debname/debian/build.rs ]; then
+ echo >&2 "$0: overwriting build.rs with our custom one"
+ if [ ! -f build.rs.orig ]; then
+ cp -f build.rs build.rs.orig
+ fi
+ cp -f ../../debcargo-conf/src/$i/debian/build.rs build.rs
+ fi
+ cd ..
+done; $x ); do
+ echo >&2 "================================================================================"
+ echo >&2 "$0: You are now in a sub-shell!"
+ echo >&2 "$0: Fix the failed patches in debcargo-conf/, then exit the sub-shell by pressing ctrl-D ONCE."
+ echo >&2 "$0: If you need to abort this process, press ctrl-D then quickly ctrl-C."
+ if [ -f "${SRCDIR:-$PWD}/debian/debcargo-conf.patch" ]; then
+ echo >&2 "$0: Previous patch changes exist, to apply them run:"
+ echo >&2 " $ patch -d vendor -p2 < '${SRCDIR:-$PWD}/debian/debcargo-conf.patch'"
+ fi
+ echo >&2 "================================================================================"
+ bash || true
+ echo >&2 "$0: trying patches again..."
+done
+rm -rf vendor/*/.pc
+find vendor/*/debian/patches -name '*~' -delete || true
+cargo update
+cargo lock list > packages-after
+pruned_paths | while read x; do echo >&2 "$0: removing, because debcargo-conf patches makes it obsolete: $x"; rm -rf "$x"; done
+
+# remove excluded files
+( cd vendor
+for i in *; do (
+ debname=$(crate_to_debcargo_conf "$i")
+ shopt -s globstar # needed for double-glob to work in excludes
+ cd $i
+ if [ -e ../../debcargo-conf/src/$debname/debian/rules ]; then
+ echo >&2 "$0: the debcargo-conf for crate $i has a custom rules file, but applying excludes anyway"
+ echo >&2 "$0: you may want to examine this situation more closely"
+ fi
+ if grep -q excludes ../../debcargo-conf/src/$debname/debian/debcargo.toml 2>/dev/null; then
+ sed -nre 's/.*excludes\s*=\s*(\[[^]]*\]).*/\1/p' \
+ ../../debcargo-conf/src/$i/debian/debcargo.toml \
+ | python3 -c "import ast, sys; x=ast.literal_eval(sys.stdin.read()); print('\n'.join((i[:-3] if i.endswith('/**') else i) for i in x));" \
+ | while read x; do echo >&2 "$0: removing, since it's excluded by debcargo-conf: vendor/$i/$x"; rm -rf $x; done
+ fi
+); done; )
+
+# TODO: rm special logic from debcargo and put into debcargo-conf instead
+echo >&2 "$0: removing winapi/windows_* archives"
+rm -rf vendor/winapi-*-pc-windows-gnu/lib/*.a
+rm -rf vendor/windows_*_*/lib/*.lib
+rm -rf vendor/windows_*_*/lib/*.a
+
+echo >&2 "$0: pruning all checksums.."
+for i in vendor/*; do ${SCRIPTDIR}/prune-checksums "$i"; done
+
+( cd vendor
+for i in *; do (
+ cd $i
+ debname=$(crate_to_debcargo_conf "$i")
+ if [ -d debian/patches ]; then
+ rm -rf "../../debcargo-conf/src/$debname/debian/patches"
+ cp -a debian/patches "../../debcargo-conf/src/$debname/debian/"
+ fi
+); done; )
+( cd debcargo-conf
+git add .
+if ! git diff --cached --quiet; then
+ git commit -m "Manual changes from debian-cargo-vendor"
+ git diff @~ > ../../debcargo-conf.patch || true
+ (cd ../.. ; echo >&2 "$0: backed up patch changes to $PWD/debcargo-conf.patch")
+ echo >&2 "$0: you should backport/merge them back into debcargo-conf.git"
+fi
+)
+
+echo >&2 "$0: cleaning up..."
+rm -rf .cargo Cargo.lock debcargo-conf packages-before packages-after
+
+echo >&2 "$0: restoring original Cargo.lock"
+mv Cargo.lock.orig Cargo.lock
diff --git a/debian/scripts/guess-crate-copyright b/debian/scripts/guess-crate-copyright
new file mode 100755
index 0000000..15f35f6
--- /dev/null
+++ b/debian/scripts/guess-crate-copyright
@@ -0,0 +1,45 @@
+#!/usr/bin/python3
+# Copyright: 2015-2017 The Debian Project
+# License: MIT or Apache-2.0
+#
+# Guess the copyright of a cargo crate by looking at its git history.
+
+import datetime
+import toml
+import os
+import subprocess
+import sys
+
+this_year = datetime.datetime.now().year
+crates = sys.argv[1:]
+get_initial_commit = len(crates) == 1
+
+for crate in crates:
+ with open(os.path.join(crate, "Cargo.toml")) as fp:
+ data = toml.load(fp)
+ repo = data["package"].get("repository", None)
+ if get_initial_commit and repo:
+ output = subprocess.check_output(
+ """git clone -q --bare "%s" tmp.crate-copyright >&2 &&
+cd tmp.crate-copyright &&
+git log --format=%%cI --reverse | head -n1 | cut -b1-4 &&
+git log --format=%%cI | head -n1 | cut -b1-4 &&
+cd .. &&
+rm -rf tmp.crate-copyright""" % repo, shell=True).decode("utf-8")
+ first_year, last_year = output.strip().split(maxsplit=2)
+ else:
+ first_year = "20XX"
+ last_year = this_year
+
+ authors = data["package"].get("authors", ["UNKNOWN AUTHORS"])
+
+ print("""Files: {0}
+Copyright: {1}
+License: {2}
+Comment: see {3}
+""".format(
+ os.path.join(crate, "*"),
+ "\n ".join("%s-%s %s" % (first_year, last_year, a.replace(" <>", "")) for a in authors),
+ data["package"].get("license", "???").replace("/", " or "),
+ repo or "???"
+ ))
diff --git a/debian/scripts/prune-checksums b/debian/scripts/prune-checksums
new file mode 100755
index 0000000..0c895cf
--- /dev/null
+++ b/debian/scripts/prune-checksums
@@ -0,0 +1,47 @@
+#!/usr/bin/python3
+# Copyright: 2015-2017 The Debian Project
+# License: MIT or Apache-2.0
+#
+# Helper to remove removed-files from .cargo-checksum
+# TODO: rewrite to perl and add to dh-cargo, maybe?
+
+from collections import OrderedDict
+import argparse
+import json
+import os
+import sys
+
+def prune_keep(cfile):
+ with open(cfile) as fp:
+ sums = json.load(fp, object_pairs_hook=OrderedDict)
+
+ oldfiles = sums["files"]
+ newfiles = OrderedDict([entry for entry in oldfiles.items() if os.path.exists(entry[0])])
+ sums["files"] = newfiles
+
+ if len(oldfiles) == len(newfiles):
+ return
+
+ with open(cfile, "w") as fp:
+ json.dump(sums, fp, separators=(',', ':'))
+
+def prune(cfile):
+ with open(cfile, "r+") as fp:
+ sums = json.load(fp, object_pairs_hook=OrderedDict)
+ sums["files"] = {}
+ fp.seek(0)
+ json.dump(sums, fp, separators=(',', ':'))
+ fp.truncate()
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser()
+ parser.add_argument("-k", "--keep", action="store_true", help="keep "
+ "checksums of files that still exist, and assume they haven't changed.")
+ parser.add_argument('crates', nargs=argparse.REMAINDER,
+ help="crates whose checksums to prune. (default: ./)")
+ args = parser.parse_args(sys.argv[1:])
+ crates = args.crates or ["."]
+ f = prune_keep if args.keep else prune
+ for c in crates:
+ cfile = os.path.join(c, ".cargo-checksum.json") if os.path.isdir(c) else c
+ f(cfile)
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides
new file mode 100644
index 0000000..bf563b5
--- /dev/null
+++ b/debian/source/lintian-overrides
@@ -0,0 +1,5 @@
+# debian policy bug #649530
+cargo source: missing-license-paragraph-in-dep5-copyright mpl-2.0+ [debian/copyright:*]
+
+# lintian is superfluous
+cargo source: superfluous-file-pattern debian/copyright * (*)
diff --git a/debian/tests/control b/debian/tests/control
new file mode 100644
index 0000000..b9d1863
--- /dev/null
+++ b/debian/tests/control
@@ -0,0 +1,4 @@
+Tests: self-build
+Restrictions: rw-build-tree, allow-stderr
+Architecture: amd64, armhf, i386, s390x #arm64 and ppc64el run out of disk space when running this test
+Depends: @builddeps@
diff --git a/debian/tests/self-build b/debian/tests/self-build
new file mode 100755
index 0000000..91e7381
--- /dev/null
+++ b/debian/tests/self-build
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+mkdir -p .cargo
+cp ./debian/tests/self-build.config.toml .cargo/config.toml
+export CFG_DISABLE_CROSS_TESTS=1
+exec cargo test -Zavoid-dev-deps
diff --git a/debian/tests/self-build.config.toml b/debian/tests/self-build.config.toml
new file mode 100644
index 0000000..8838d32
--- /dev/null
+++ b/debian/tests/self-build.config.toml
@@ -0,0 +1,5 @@
+[source.crates-io]
+replace-with = "dh-cargo-registry"
+
+[source.dh-cargo-registry]
+directory = "vendor"
diff --git a/debian/vendor-tarball-unsuspicious.txt b/debian/vendor-tarball-unsuspicious.txt
new file mode 100644
index 0000000..ad03f53
--- /dev/null
+++ b/debian/vendor-tarball-unsuspicious.txt
@@ -0,0 +1,202 @@
+# This is a list of files and dirs that are omitted from our custom
+# "suspicious files" scanner. DO NOT ADD STUFF HERE WITHOUT UNDERSTANDING WHY.
+
+# docs
+*/CHANGELOG.md
+*/LICENSE
+*/LICENSE.md
+*/README.md
+*/readme.md
+*/Cargo.toml
+base64/RELEASE-NOTES.md
+
+# ignore
+base64/icon_CLion.svg
+
+# test data
+base64ct/tests/proptests.proptest-regressions
+block-buffer/tests/mod.rs
+bstr/src/unicode/data/*Test.txt
+content_inspector/testdata/*
+der/tests/examples/*.der
+elliptic-curve/tests/examples/*.der
+flate2/examples/hello_world.txt.gz
+flate2/tests/
+hkdf/tests/data/*.blb
+hmac/tests/data/*.blb
+idna/tests/IdnaTestV2.txt
+idna/tests/punycode_tests.json
+im-rc/proptest-regressions/
+itertools/examples/iris.data
+memchr/src/tests/x86_64-soft_float.json
+openssl/test/
+p384/src/test_vectors/data/*.blb
+pasetors/test_vectors/*.json
+pasetors/test_vectors/*/*.json
+pem-rfc7468/tests/examples/*.der
+pem-rfc7468/tests/examples/*.pem
+pkcs8/tests/examples/*.der
+pkcs8/tests/private_key.rs
+regex-automata/tests/fuzz/testdata/*
+regex-automata/tests/gen/dense/*.dfa
+regex-automata/tests/gen/sparse/*.dfa
+regex/record/compile-test/*.csv
+regex/testdata/fowler/dat/basic.dat
+regex/tests/
+schannel/test/cert.der
+schannel/test/cert.pem
+schannel/test/identity.p12
+schannel/test/key.key
+schannel/test/key_wrong_header.pem
+schannel/test/self-signed.badssl.com.cer
+sec1/tests/examples/*.der
+sec1/tests/examples/*.pem
+sha1/tests/data/*.blb
+sha2/tests/data/*.blb
+spki/tests/examples/*.der
+toml_edit/tests/fixtures/*
+unicode-ident/tests/fst/*.fst
+url/tests/*.json
+vcpkg/test-data/*/installed/vcpkg/updates/*
+vte/tests/demo.vte
+winnow/benches/contains_token.rs
+winnow/benches/iter.rs
+winnow/examples/css/parser.rs
+winnow/examples/ndjson/example.ndjson
+
+# ideally should be autogenerated, but too difficult today
+bstr/src/unicode/fsm/*.dfa
+regex-syntax/src/unicode_tables/*.rs
+
+# "verylongtext" but OK source code, manually audited:
+anstyle-parse/src/state/table.rs
+elliptic-curve/src/hash2curve/hash2field/expand_msg/xmd.rs
+elliptic-curve/src/hash2curve/hash2field/expand_msg/xof.rs
+elliptic-curve/src/jwk.rs
+fiat-crypto/src/p448_solinas_32.rs
+fiat-crypto/src/p521_32.rs
+fiat-crypto/src/secp256k1_dettman_32.rs
+fiat-crypto/src/secp256k1_dettman_64.rs
+git2/src/cred.rs
+libz-sys/src/smoke.c
+linux-raw-sys/CODE_OF_CONDUCT.md
+miniz_oxide/Readme.md
+openssl-sys/build/expando.c
+p384/src/arithmetic/hash2curve.rs
+pasetors/src/footer.rs
+pasetors/src/token.rs
+pasetors/src/version2.rs
+pasetors/src/version3.rs
+pasetors/src/version4.rs
+rustix/CODE_OF_CONDUCT.md
+serde_json/tests/lexical/parse.rs
+spki/tests/spki.rs
+tinyvec/LICENSE-MIT.md
+unicode-normalization/src/stream_safe.rs
+vcpkg/notes.md
+walkdir/compare/nftw.c
+winapi/src/lib.rs
+windows-sys/src/*.rs
+windows-sys/src/*/*.rs
+windows-sys/src/*/*/*.rs
+windows-sys/src/*/*/*/*.rs
+windows-sys/src/*/*/*/*/*.rs
+windows-sys/src/*/*/*/*/*/*.rs
+windows-sys/src/*/*/*/*/*/*/*.rs
+windows-sys-0.*/src/*.rs
+windows-sys-0.*/src/*/*.rs
+windows-sys-0.*/src/*/*/*.rs
+windows-sys-0.*/src/*/*/*/*.rs
+windows-sys-0.*/src/*/*/*/*/*.rs
+windows-sys-0.*/src/*/*/*/*/*/*.rs
+
+idna/src/make_uts46_mapping_table.py
+walkdir/compare/walk.py
+unicode-normalization/scripts/unicode.py
+unicode-width/scripts/unicode.py
+
+# false positive (Dyalog APL transfer)
+clap/examples/tutorial_*/*.md
+clap/examples/*.md
+
+# false positive (random assorted)
+fiat-crypto/COPYRIGHT
+
+# false positive (Algol68)
+aho-corasick/src/ahocorasick.rs
+base16ct/src/lower.rs
+base16ct/src/mixed.rs
+base16ct/src/upper.rs
+base64/src/decode.rs
+base64/src/encode.rs
+base64ct/src/decoder.rs
+base64ct/src/encoder.rs
+base64ct/src/encoding.rs
+base64ct/tests/bcrypt.rs
+base64ct/tests/crypt.rs
+base64ct/tests/shacrypt.rs
+base64ct/tests/standard.rs
+base64ct/tests/url.rs
+bitflags/src/traits.rs
+clap_builder/src/derive.rs
+digest/src/core_api/rt_variable.rs
+digest/src/core_api/wrapper.rs
+digest/src/dev.rs
+ecdsa/src/der.rs
+ed25519-compact/src/sha512.rs
+env_logger-0.7.1/src/fmt/writer/mod.rs
+env_logger/src/fmt/writer/mod.rs
+flate2/src/mem.rs
+flate2/src/zio.rs
+miniz_oxide/src/deflate/mod.rs
+miniz_oxide/src/inflate/mod.rs
+openssl/src/cms.rs
+openssl/src/envelope.rs
+orion/src/test_framework/aead_interface.rs
+orion/src/test_framework/streamcipher_interface.rs
+os_info/src/matcher.rs
+proc-macro2/src/parse.rs
+regex-automata/src/dfa/automaton.rs
+regex-automata/src/hybrid/dfa.rs
+regex-automata/src/meta/regex.rs
+regex/src/regex/bytes.rs
+semver/src/parse.rs
+snapbox/src/substitutions.rs
+syn/src/attr.rs
+syn/src/custom_punctuation.rs
+syn/src/group.rs
+syn/src/meta.rs
+syn/src/pat.rs
+syn/src/path.rs
+syn/src/punctuated.rs
+syn/src/stmt.rs
+syn/src/token.rs
+syn/src/ty.rs
+syn/tests/test_meta.rs
+time/src/parsing/combinator/mod.rs
+time/src/parsing/combinator/rfc/iso8601.rs
+time/src/parsing/combinator/rfc/rfc2822.rs
+time/src/parsing/component.rs
+time/src/parsing/iso8601.rs
+time/src/parsing/parsable.rs
+time/src/parsing/parsed.rs
+time/src/primitive_date_time.rs
+toml_edit/src/parser/document.rs
+toml_edit/src/parser/errors.rs
+toml_edit/src/parser/key.rs
+toml_edit/src/parser/mod.rs
+toml_edit/src/raw_string.rs
+toml_edit/tests/testsuite/parse.rs
+url/src/parser.rs
+winnow/benches/number.rs
+winnow/src/ascii/mod.rs
+winnow/src/binary/bits/mod.rs
+winnow/src/binary/bits/tests.rs
+winnow/src/binary/mod.rs
+winnow/src/combinator/branch.rs
+winnow/src/combinator/core.rs
+winnow/src/combinator/parser.rs
+winnow/src/combinator/tests.rs
+winnow/src/error.rs
+winnow/src/parser.rs
+winnow/src/token/mod.rs
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..4a9b9f2
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,4 @@
+version=4
+opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*)\.tar\.gz%cargo-$1.tar.gz%" \
+ https://github.com/rust-lang/cargo/tags \
+ (?:.*?/)?v?(\d[\d.]*)\.tar\.gz