From 5fc5556173684f5f54616f4ffa57f4539755df36 Mon Sep 17 00:00:00 2001 From: Kristoffer Carlsson Date: Thu, 21 Sep 2023 04:42:33 +0200 Subject: [PATCH] move Pkg out of the sysimage (take 2) (#51189) Co-authored-by: Jonas Schulze Co-authored-by: Valentin Churavy Co-authored-by: Tim Besard --- base/sysimg.jl | 3 --- contrib/generate_precompile.jl | 13 +--------- .../md5 | 1 + .../sha512 | 1 + .../md5 | 1 - .../sha512 | 1 - pkgimage.mk | 2 +- stdlib/Pkg.version | 2 +- stdlib/REPL/src/REPL.jl | 25 +++++++++++++++++++ 9 files changed, 30 insertions(+), 19 deletions(-) create mode 100644 deps/checksums/Pkg-cf0019fbbaf3ab1e606d4e973c1908bbd899a9d5.tar.gz/md5 create mode 100644 deps/checksums/Pkg-cf0019fbbaf3ab1e606d4e973c1908bbd899a9d5.tar.gz/sha512 delete mode 100644 deps/checksums/Pkg-ff6d645cd8bd18f4d22f6b5a24ff0234cf193fa5.tar.gz/md5 delete mode 100644 deps/checksums/Pkg-ff6d645cd8bd18f4d22f6b5a24ff0234cf193fa5.tar.gz/sha512 diff --git a/base/sysimg.jl b/base/sysimg.jl index 04de951dc0199..8c289bf501618 100644 --- a/base/sysimg.jl +++ b/base/sysimg.jl @@ -68,9 +68,6 @@ let # 5-depth packages :Downloads, - - # 6-depth packages - :Pkg, ] # PackageCompiler can filter out stdlibs so it can be empty maxlen = maximum(textwidth.(string.(stdlibs)); init=0) diff --git a/contrib/generate_precompile.jl b/contrib/generate_precompile.jl index fea4ca6bc1fe3..7df9992c41f16 100644 --- a/contrib/generate_precompile.jl +++ b/contrib/generate_precompile.jl @@ -153,15 +153,6 @@ if Artifacts !== nothing """ end -Pkg = get(Base.loaded_modules, - Base.PkgId(Base.UUID("44cfe95a-1eb2-52ea-b672-e2afdf69b78f"), "Pkg"), - nothing) - -if Pkg !== nothing - # TODO: Split Pkg precompile script into REPL and script part - repl_script = Pkg.precompile_script * repl_script # do larger workloads first for better parallelization -end - FileWatching = get(Base.loaded_modules, Base.PkgId(Base.UUID("7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee"), "FileWatching"), nothing) @@ -192,7 +183,6 @@ if InteractiveUtils !== nothing end const JULIA_PROMPT = "julia> " -const PKG_PROMPT = "pkg> " const SHELL_PROMPT = "shell> " const HELP_PROMPT = "help?> " @@ -366,7 +356,6 @@ generate_precompile_statements() = try # Make sure `ansi_enablecursor` is printe while !eof(output_copy) strbuf *= String(readavailable(output_copy)) occursin(JULIA_PROMPT, strbuf) && break - occursin(PKG_PROMPT, strbuf) && break occursin(SHELL_PROMPT, strbuf) && break occursin(HELP_PROMPT, strbuf) && break sleep(0.1) @@ -455,7 +444,7 @@ generate_precompile_statements() = try # Make sure `ansi_enablecursor` is printe println() # Seems like a reasonable number right now, adjust as needed # comment out if debugging script - n_succeeded > (have_repl ? 900 : 90) || @warn "Only $n_succeeded precompile statements" + n_succeeded > (have_repl ? 650 : 90) || @warn "Only $n_succeeded precompile statements" fetch(step1) == :ok || throw("Step 1 of collecting precompiles failed.") fetch(step2) == :ok || throw("Step 2 of collecting precompiles failed.") diff --git a/deps/checksums/Pkg-cf0019fbbaf3ab1e606d4e973c1908bbd899a9d5.tar.gz/md5 b/deps/checksums/Pkg-cf0019fbbaf3ab1e606d4e973c1908bbd899a9d5.tar.gz/md5 new file mode 100644 index 0000000000000..4a3dd69e57a6b --- /dev/null +++ b/deps/checksums/Pkg-cf0019fbbaf3ab1e606d4e973c1908bbd899a9d5.tar.gz/md5 @@ -0,0 +1 @@ +e640498e569782d09fbb26b9f2d861f3 diff --git a/deps/checksums/Pkg-cf0019fbbaf3ab1e606d4e973c1908bbd899a9d5.tar.gz/sha512 b/deps/checksums/Pkg-cf0019fbbaf3ab1e606d4e973c1908bbd899a9d5.tar.gz/sha512 new file mode 100644 index 0000000000000..320af8b56c72d --- /dev/null +++ b/deps/checksums/Pkg-cf0019fbbaf3ab1e606d4e973c1908bbd899a9d5.tar.gz/sha512 @@ -0,0 +1 @@ +6cb6ac1baaa34f2dcd752d2cf0c8d3ca644d336497f16fcd982d95519757de348bb4ae50013680d894810092769b803c66eb11e23291f336d766d77eba5cd823 diff --git a/deps/checksums/Pkg-ff6d645cd8bd18f4d22f6b5a24ff0234cf193fa5.tar.gz/md5 b/deps/checksums/Pkg-ff6d645cd8bd18f4d22f6b5a24ff0234cf193fa5.tar.gz/md5 deleted file mode 100644 index 69d4194df4385..0000000000000 --- a/deps/checksums/Pkg-ff6d645cd8bd18f4d22f6b5a24ff0234cf193fa5.tar.gz/md5 +++ /dev/null @@ -1 +0,0 @@ -2c076e4095bb473af0a0c4d2225bf85a diff --git a/deps/checksums/Pkg-ff6d645cd8bd18f4d22f6b5a24ff0234cf193fa5.tar.gz/sha512 b/deps/checksums/Pkg-ff6d645cd8bd18f4d22f6b5a24ff0234cf193fa5.tar.gz/sha512 deleted file mode 100644 index b4ffb5f6acf2d..0000000000000 --- a/deps/checksums/Pkg-ff6d645cd8bd18f4d22f6b5a24ff0234cf193fa5.tar.gz/sha512 +++ /dev/null @@ -1 +0,0 @@ -feffd9850f4fd46b431c411162a997b3da6425aba4b59adb54526e5d241e8a688263facea3896c04aa3c24211bd3f416f7eba366dd094bbb6bdba6b479448aad diff --git a/pkgimage.mk b/pkgimage.mk index a721dc73d10d7..5d35908035377 100644 --- a/pkgimage.mk +++ b/pkgimage.mk @@ -125,7 +125,7 @@ $(eval $(call sysimg_builder,LibCURL,LibCURL_jll MozillaCACerts_jll)) $(eval $(call sysimg_builder,Downloads,ArgTools FileWatching LibCURL NetworkOptions)) # 6-depth packages -$(eval $(call sysimg_builder,Pkg,Dates LibGit2 Libdl Logging Printf Random SHA UUIDs)) # Markdown REPL +$(eval $(call pkgimg_builder,Pkg,Dates LibGit2 Libdl Logging Printf Random SHA UUIDs)) # Markdown REPL # 7-depth packages $(eval $(call pkgimg_builder,LazyArtifacts,Artifacts Pkg)) diff --git a/stdlib/Pkg.version b/stdlib/Pkg.version index 671779d2b05b7..2f5c5ead0f454 100644 --- a/stdlib/Pkg.version +++ b/stdlib/Pkg.version @@ -1,4 +1,4 @@ PKG_BRANCH = master -PKG_SHA1 = ff6d645cd8bd18f4d22f6b5a24ff0234cf193fa5 +PKG_SHA1 = cf0019fbbaf3ab1e606d4e973c1908bbd899a9d5 PKG_GIT_URL := https://github.com/JuliaLang/Pkg.jl.git PKG_TAR_URL = https://api.github.com/repos/JuliaLang/Pkg.jl/tarball/$1 diff --git a/stdlib/REPL/src/REPL.jl b/stdlib/REPL/src/REPL.jl index fe543ad2d512f..29f4a9780ff99 100644 --- a/stdlib/REPL/src/REPL.jl +++ b/stdlib/REPL/src/REPL.jl @@ -1111,6 +1111,31 @@ function setup_interface( edit_insert(s, '?') end end, + ']' => function (s::MIState,o...) + if isempty(s) || position(LineEdit.buffer(s)) == 0 + pkgid = Base.PkgId(Base.UUID("44cfe95a-1eb2-52ea-b672-e2afdf69b78f"), "Pkg") + if Base.locate_package(pkgid) !== nothing # Only try load Pkg if we can find it + Pkg = Base.require(pkgid) + # Pkg should have loaded its REPL mode by now, let's find it so we can transition to it. + pkg_mode = nothing + for mode in repl.interface.modes + if mode isa LineEdit.Prompt && mode.complete isa Pkg.REPLMode.PkgCompletionProvider + pkg_mode = mode + break + end + end + # TODO: Cache the `pkg_mode`? + if pkg_mode !== nothing + buf = copy(LineEdit.buffer(s)) + transition(s, pkg_mode) do + LineEdit.state(s, pkg_mode).input_buffer = buf + end + return + end + end + end + edit_insert(s, ']') + end, # Bracketed Paste Mode "\e[200~" => (s::MIState,o...)->begin