PackageCompiler.jl "Warning: it is not recommended to create an app/library without a preexisting manifest"

What does this warning mean?

PackageCompiler.create_app("MyPackage", "MyPackageApp", precompile_execution_file="MyPackage/precompile.jl", force=true)
┌ Warning: it is not recommended to create an app/library without a preexisting manifest
└ @ PackageCompiler ~/.julia/packages/PackageCompiler/X7R0D/src/PackageCompiler.jl:66
┌ Warning: it is not recommended to create an app/library without a preexisting manifest
└ @ PackageCompiler ~/.julia/packages/PackageCompiler/X7R0D/src/PackageCompiler.jl:66
⠋ [01m:02s] PackageCompiler: compiling base system image (incremental=false)

I searched the documentation and found that one example triggers this warning, but it isn’t explained there what it means.
(I do have a file MyPackage/Manifest.toml)

It means, that the “manifest.toml” of the project is not valid.
I had this warning, when i tried to create a sysimage without any package.
So my personal default is:

using  Pkg
cd(Base.source_dir())
Pkg.activate(".")
Pkg.update()
"StatsPlots" ∉ keys(Pkg.project().dependencies) && Pkg.add("StatsPlots")

The installation of “StatsPlots” (or another package) creates a valid “manifest.toml”
for the PackageCompiler and the compiler can generate a sysimage without warning.

Thanks! I already have a valid manifest.toml:

# This file is machine-generated - editing it directly is not advised

julia_version = "1.7.3"
manifest_format = "2.0"

[deps]

but PackageCompiler defines valid as nonempty, and so your solution (adding a package) removes the warning. I now believe that it is safe to ignore the warning in my case because my code depends on no packages, so it is okay to have an empty manifest.

While your solution works, @trilobit, it shouldn’t be necessary. I filed an issue with PackageCompilers.jl.

1 Like