How to input files as command line arguments to compiled Julia

You might want to try ] dev MyTestPkg in your default environment. That will make using MyTestPkg work there.

Thank you, I added the recommendesd info to my Project.toml file.

I now get this error:

(MyTestPkg) pkg> st
     Project MyTestPkg v0.1.0
      Status `~/connor/juliaRppgPacakge/.julia/dev/MyTestPkg/Project.toml`
  [336ed68f] CSV v0.8.5
  [a93c6f00] DataFrames v1.2.0
  [9b87118b] PackageCompiler v1.2.7
  [44cfe95a] Pkg

julia> using MyTestPkg
ERROR: ArgumentError: Package MyTestPkg [7b6ef1f2-e27a-4927-afbe-f37c5d2ce363] is required but does not seem to be installed:
 - Run `Pkg.instantiate()` to install all recorded dependencies.

II ran Pkg.instantiate() and nothing changed.

This is the full Project.toml file:

name = "MyTestPkg"
uuid = "7b6ef1f2-e27a-4927-afbe-f37c5d2ce363"
authors = ["connor and contributors"]
version = "0.1.0"

[deps]
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
PackageCompiler = "9b87118b-4619-50d2-8e1e-99f35a4d4d9d"
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"

The ] dev MyTestPkg step was meant for your default environment not the MyTestPkg environment. For the MyTestPkg environment, just do ] rm MyTestPkg to remove the confusion.

I’m confused about your setup. What is the output of Base.load_path() ?

With @mkitti we now have two paths to follow. I am not sure if dev will help, but you should try and report the outcome, just to be sure.

So, I don’t know exactly how this uuid needs to be.
So, at this point, and we have moved quite away from the original problem, I would suggest, that we just start from the beginning.
If you agree, start a new REPL.
Do the following steps again (and nothing else), I will do the same. I have installed 1.6.2 for this:

(@v1.6) pkg> add PkgTemplates

julia> using PkgTemplates

julia> t = Template(;user="oheil")

julia> t("MyNewTestPkg")

Of course with your personal information.

The last command gives the following output for me:

julia> t("MyNewTestPkg")
[ Info: Running prehooks
[ Info: Running hooks
  Activating environment at `C:\Users\Oli\.julia\dev\MyNewTestPkg\Project.toml`
    Updating registry at `C:\Users\Oli\.julia\registries\General`
    Updating git-repo `https://github.com/JuliaRegistries/General.git`
  No Changes to `C:\Users\Oli\.julia\dev\MyNewTestPkg\Project.toml`
  No Changes to `C:\Users\Oli\.julia\dev\MyNewTestPkg\Manifest.toml`
Precompiling project...
  1 dependency successfully precompiled in 0 seconds
  Activating environment at `C:\Users\Oli\.julia\environments\v1.6\Project.toml`
[ Info: Running posthooks
[ Info: New package is at C:\Users\Oli\.julia\dev\MyNewTestPkg

The created C:\Users\Oli\.julia\dev\MyNewTestPkg\Project.toml is:

name = "MyNewTestPkg"
uuid = "b0b1eab8-5069-44c2-ab62-22553fc0f810"
authors = ["oheil <XXX@XXX.XX> and contributors"]
version = "0.1.0"

[compat]
julia = "1"

[extras]
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["Test"]

How is yours?

Thanks so much. I completed all the steps you suggested.

(@v1.6) pkg> add PkgTemplates
    Updating registry at `~/.julia/registries/General`
using PkgTemplates   Resolving package versions...
  No Changes to `~/.julia/environments/v1.6/Project.toml`
  No Changes to `~/.julia/environments/v1.6/Manifest.toml`

julia> using PkgTemplates

julia> t = Template(;user="connormeaton")
julia> t("MyNewTestPkg")
[ Info: Running prehooks
[ Info: Running hooks
  Activating environment at `~/.julia/dev/MyNewTestPkg/Project.toml`
    Updating registry at `~/.julia/registries/General`
  No Changes to `~/.julia/dev/MyNewTestPkg/Project.toml`
  No Changes to `~/.julia/dev/MyNewTestPkg/Manifest.toml`
Precompiling project...
  1 dependency successfully precompiled in 1 seconds
  Activating environment at `~/.julia/environments/v1.6/Project.toml`
[ Info: Running posthooks
[ Info: New package is at /Users/connor/.julia/dev/MyNewTestPkg

Here is my Project.toml file:

name = "MyNewTestPkg"
uuid = "2140c8d5-dde9-453d-9c68-b5c56000c311"
authors = ["Connor Eaton <XXX@XXX.XX> and contributors"]
version = "0.1.0"

[compat]
julia = "1"

[extras]
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["Test"]

I also have done this, how does this look?

(@v1.6) pkg> activate /Users/connor/.julia/dev/MyNewTestPkg
  Activating environment at `~/.julia/dev/MyNewTestPkg/Project.toml`

(MyNewTestPkg) pkg> st
     Project MyNewTestPkg v0.1.0
      Status `~/.julia/dev/MyNewTestPkg/Project.toml` (empty project)

So far looks perfect.
Now the next two steps, either in a new REPL or the still open one if you have.
These are mine:

julia> pwd()
"C:\\Users\\Oli"

(@v1.6) pkg> activate .julia\\dev\\MyNewTestPkg
  Activating environment at `C:\Users\Oli\.julia\dev\MyNewTestPkg\Project.toml`

julia> using MyNewTestPkg

These are yours:

...

great you have done already.
Looks good.
Can you now do

julia> using MyNewTestPkg

I’m with you.

(@v1.6) pkg> activate /Users/connor/.julia/dev/MyNewTestPkg
  Activating environment at `~/.julia/dev/MyNewTestPkg/Project.toml`

julia> using MyNewTestPkg

I think we are good now.
Ok, after activating the environment with

(@v1.6) pkg> activate /Users/connor/.julia/dev/MyNewTestPkg
  Activating environment at `~/.julia/dev/MyNewTestPkg/Project.toml

you can now add the dependencies with

(MyNewTestPkg) pkg> add DataFrames, CSV

Great, I added.

Now with ] st

(MyNewTestPkg) pkg> st
     Project MyNewTestPkg v0.1.0
      Status `~/.julia/dev/MyNewTestPkg/Project.toml`
  [336ed68f] CSV v0.8.5
  [a93c6f00] DataFrames v1.2.0

If have done this too, and I had to restart the REPL (output told me so). After restart do again:

(@v1.6) pkg> activate /Users/connor/.julia/dev/MyNewTestPkg
  Activating environment at `~/.julia/dev/MyNewTestPkg/Project.toml

(MyNewTestPkg) pkg> add DataFrames, CSV

Than edit the src file MyNewTestPkg.jl which is already created and add your code. It is:

module MyNewTestPkg

using DataFrames, CSV

function julia_main()
    try
        real_main()
    catch
        Base.invokelatest(Base.display_error, Base.catch_stack())
        return 1
    end
    return 0
end

function real_main()
    for arg in ARGS
        println(arg)
    end
    println("it worked!")

    df = CSV.read(string(ARGS[1]), DataFrame);
    println(df)

    return
end

if abspath(PROGRAM_FILE) == @__FILE__
    real_main()
end

end

When this is done, I assume a fresh REPL, you do:

(@v1.6) pkg> activate /Users/connor/.julia/dev/MyNewTestPkg
  Activating environment at `~/.julia/dev/MyNewTestPkg/Project.toml`

(MyNewTestPkg) pkg> add PackageCompiler

julia> using PackageCompiler

julia> cd("/Users/connor/.julia/dev/MyNewTestPkg")

julia> using MyNewTestPkg
[ Info: Precompiling MyNewTestPkg [b0b1eab8-5069-44c2-ab62-22553fc0f810]

julia> create_app("../MyNewTestPkg", "MyNewTestPkgApp";force=true)

The cd command is only that the App build folder is created in the project folder. Just a matter of taste.

The command using MyNewTestPkg does a precompile, don’t know if it’s needed, but it doesn’t harm.

I am getting the working app with that and hope, that you will do now, too.
(I am off to bed now, until tomorrow).

Almost there…

julia> create_app("../MyNewTestPkg", "MyNewTestPkgApp";force=true)
 Downloading artifact: i868-w64-mingw32
ā”Œ Error: Tree Hash Mismatch!
│   Expected git-tree-sha1:   <replacing this random string with text in case its sensitive>
│   Calculated git-tree-sha1: <replacing this random string with text in case its sensitive>
ā”” @ Pkg.Artifacts /private/tmp/julia-20210715-9083-1kg5j1n/julia-1.6.2/usr/share/julia/stdlib/v1.6/Pk  Downloaded artifact: i868-w64-mingw32
 Downloading artifact: i868-w64-mingw32
ā”Œ Error: Tree Hash Mismatch!
│   Expected git-tree-sha1:   <replacing this random string with text in case its sensitive>
│   Calculated git-tree-sha1: <replacing this random string with text in case its sensitive>
ā”” @ Pkg.Artifacts /private/tmp/julia-20210715-9083-1kg5j1n/julia-1.6.2/usr/share/julia/stdlib/v1.6/Pk  Downloaded artifact: i868-w64-mingw32
ERROR: Unable to automatically install 'i868-w64-mingw32' from '/Users/connor/.julia/packages/PackageCompiler/BjVzm/Artifacts.toml'
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:33
 [2] ensure_artifact_installed(name::String, meta::Dict{String, Any}, artifacts_toml::String; platform::Base.BinaryPlatforms.Platform, verbose::Bool, quiet_download::Bool, io::Base.TTY)
   @ Pkg.Artifacts /private/tmp/julia-20210715-9083-1kg5j1n/julia-1.6.2/usr/share/julia/stdlib/v1.6/Pkg/src/Artifacts.jl:445
 [3] ensure_artifact_installed(name::String, artifacts_toml::String; platform::Base.BinaryPlatforms.Platform, pkg_uuid::Nothing, verbose::Bool, quiet_download::Bool, io::Base.TTY)
   @ Pkg.Artifacts /private/tmp/julia-20210715-9083-1kg5j1n/julia-1.6.2/usr/share/julia/stdlib/v1.6/Pkg/src/Artifacts.jl:408
 [4] ensure_artifact_installed(name::String, artifacts_toml::String)
   @ Pkg.Artifacts /private/tmp/julia-20210715-9083-1kg5j1n/julia-1.6.2/usr/share/julia/stdlib/v1.6/Pkg/src/Artifacts.jl:403
 [5] bundle_artifacts(ctx::Pkg.Types.Context, app_dir::String)
   @ PackageCompiler ~/.julia/packages/PackageCompiler/BjVzm/src/PackageCompiler.jl:780
 [6] create_app(package_dir::String, app_dir::String; app_name::Nothing, precompile_execution_file::Vector{String}, precompile_statements_file::Vector{String}, incremental::Bool, filter_stdlibs::Bool, audit::Bool, force::Bool, c_driver_program::String, cpu_target::String)
   @ PackageCompiler ~/.julia/packages/PackageCompiler/BjVzm/src/PackageCompiler.jl:666
 [7] top-level scope
   @ REPL[18]:1

This is … mildly… frustrating…
I have no idea why this happens now, perhaps @mkitti ?

The 32 bit mingw compiler was recently added: https://github.com/JuliaLang/PackageCompiler.jl/pull/516. I am not sure why it would fail the tree hash check. cc @davidanthoff

Thanks @oheil @mkitti @kristoffer.carlsson . The help I received thus far has been tremendous! Regarding this error, in case more detail is helpful:

I’m on a Mac Catalina10.15.6
I installed julia via homebrew
This is a totally fresh install of julia.

julia> versioninfo()
Julia Version 1.6.2
Commit 1b93d53fc4* (2021-07-14 15:36 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin19.6.0)
  CPU: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-12.0.1 (ORCJIT, skylake)

To work around the problem, you should be able to remove PackageCompiler from your MyNewTestPkgApp project. It is enough to have it installed in your global environment (v1.6).

To be explicit, you may try:

(@v1.6) pkg> activate /Users/connor/.julia/dev/MyNewTestPkg
  Activating environment at `~/.julia/dev/MyNewTestPkg/Project.toml`

(MyNewTestPkg) pkg> rm PackageCompiler

julia> using PackageCompiler

julia> cd("/Users/connor/.julia/dev/MyNewTestPkg")

julia> create_app("../MyNewTestPkg", "MyNewTestPkgApp";force=true)

Thank you @oheil @kristoffer.carlsson

It looks like I never had PackageCompiler installed in the project?

(@v1.6) pkg> activate /Users/connor/.julia/dev/MyNewTestPkg
  Activating new environment at `/Users/connor/.julia/dev/MyNewTestPkg/Project.toml`

(MyNewTestPkg) pkg> rm PackageCompiler
ERROR: The following package names could not be resolved:
 * PackageCompiler (not found in project or manifest)


julia> using PackageCompiler

julia> pwd()
"/Users/connor/.julia/dev/MyNewTestPkg"

julia> create_app("../MyNewTestPkg", "MyNewTestPkgApp";force=true)
 Downloading artifact: i868-w64-mingw32
ā”Œ Error: Tree Hash Mismatch!
│   Expected git-tree-sha1:   <replacing this random string with text in case its sensitive>
│   Calculated git-tree-sha1: <replacing this random string with text in case its sensitive>
ā”” @ Pkg.Artifacts /private/tmp/julia-20210715-9083-1kg5j1n/julia-1.6.2/usr/share/julia/stdlib/v1.6/Pk  Downloaded artifact: i868-w64-mingw32
 Downloading artifact: i868-w64-mingw32
ā”Œ Error: Tree Hash Mismatch!
│   Expected git-tree-sha1:   <replacing this random string with text in case its sensitive>
│   Calculated git-tree-sha1: <replacing this random string with text in case its sensitive>
ā”” @ Pkg.Artifacts /private/tmp/julia-20210715-9083-1kg5j1n/julia-1.6.2/usr/share/julia/stdlib/v1.6/Pk  Downloaded artifact: i868-w64-mingw32
ERROR: Unable to automatically install 'i868-w64-mingw32' from '/Users/connor/.julia/packages/PackageCompiler/BjVzm/Artifacts.toml'
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:33
 [2] ensure_artifact_installed(name::String, meta::Dict{String, Any}, artifacts_toml::String; platform::Base.BinaryPlatforms.Platform, verbose::Bool, quiet_download::Bool, io::Base.TTY)
   @ Pkg.Artifacts /private/tmp/julia-20210715-9083-1kg5j1n/julia-1.6.2/usr/share/julia/stdlib/v1.6/Pkg/src/Artifacts.jl:445
 [3] ensure_artifact_installed(name::String, artifacts_toml::String; platform::Base.BinaryPlatforms.Platform, pkg_uuid::Nothing, verbose::Bool, quiet_download::Bool, io::Base.TTY)
   @ Pkg.Artifacts /private/tmp/julia-20210715-9083-1kg5j1n/julia-1.6.2/usr/share/julia/stdlib/v1.6/Pkg/src/Artifacts.jl:408
 [4] ensure_artifact_installed(name::String, artifacts_toml::String)
   @ Pkg.Artifacts /private/tmp/julia-20210715-9083-1kg5j1n/julia-1.6.2/usr/share/julia/stdlib/v1.6/Pkg/src/Artifacts.jl:403
 [5] bundle_artifacts(ctx::Pkg.Types.Context, app_dir::String)
   @ PackageCompiler ~/.julia/packages/PackageCompiler/BjVzm/src/PackageCompiler.jl:780
 [6] create_app(package_dir::String, app_dir::String; app_name::Nothing, precompile_execution_file::Vector{String}, precompile_statements_file::Vector{String}, incremental::Bool, filter_stdlibs::Bool, audit::Bool, force::Bool, c_driver_program::String, cpu_target::String)
   @ PackageCompiler ~/.julia/packages/PackageCompiler/BjVzm/src/PackageCompiler.jl:666
 [7] top-level scope
   @ REPL[35]:1