BinaryBuilder: ERROR: LoadError: Cannot continue with unsatisfied build products!

I’m trying to build some binaries for several platforms using BinaryBuilder. The wizard runs nicely, and I get no errors. Yet, when I finish the wizard, the binaries are not save anywhere, it seems.

The build_tarballs.jl file is then stored locally, and from what I understood from the docs, I can create the binaries locally using:

julia --project build_tarballs.jl --deploy="local"`

However, this command errors with:

% julia --project build_tarballs.jl --deploy="local"
[ Info: Building and deploying version 1.0.0+0 to /home/leandro/.julia/dev/protein_stride_jll
[ Info: Building for aarch64-apple-darwin, aarch64-linux-gnu, aarch64-linux-musl, armv6l-linux-gnueabihf, armv6l-linux-musleabihf, armv7l-linux-gnueabihf, armv7l-linux-musleabihf, i686-linux-gnu, i686-linux-musl, i686-w64-mingw32, powerpc64le-linux-gnu, x86_64-apple-darwin, x86_64-linux-gnu, x86_64-linux-musl, x86_64-unknown-freebsd, x86_64-w64-mingw32
[ Info: ["stride"] does not exist, reporting unsatisfied
┌ Error: Built protein_stride but stride_run still unsatisfied:
└ @ BinaryBuilder ~/.julia/packages/BinaryBuilder/0CUml/src/AutoBuild.jl:909
ERROR: LoadError: Cannot continue with unsatisfied build products!
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:35
 [2] autobuild(dir::AbstractString, src_name::AbstractString, src_version::VersionNumber, sources::Vector{<:BinaryBuilderBase.AbstractSource}, script::AbstractString, platforms::Vector, products::Vector{<:Product}, dependencies::Vector{<:BinaryBuilderBase.AbstractDependency}; verbose::Bool, debug::Bool, skip_audit::Bool, ignore_audit_errors::Bool, autofix::Bool, code_dir::Union{Nothing, String}, require_license::Bool, kwargs::Base.Pairs{Symbol, V, Tuple{Vararg{Symbol, N}}, NamedTuple{names, T}} where {V, N, names, T<:Tuple{Vararg{Any, N}}})
   @ BinaryBuilder ~/.julia/packages/BinaryBuilder/0CUml/src/AutoBuild.jl:914
 [3] build_tarballs(ARGS::Any, src_name::Any, src_version::Any, sources::Any, script::Any, platforms::Any, products::Any, dependencies::Any; julia_compat::String, kwargs::Base.Pairs{Symbol, V, Tuple{Vararg{Symbol, N}}, NamedTuple{names, T}} where {V, N, names, T<:Tuple{Vararg{Any, N}}})
   @ BinaryBuilder ~/.julia/packages/BinaryBuilder/0CUml/src/AutoBuild.jl:347
 [4] top-level scope
   @ ~/Downloads/stride/build_tarballs.jl:36
in expression starting at /home/leandro/Downloads/stride/build_tarballs.jl:36

I didn’t change anything in the script, which is this one:

# Note that this script can accept some limited command-line arguments, run
# `julia build_tarballs.jl --help` to see a usage message.
using BinaryBuilder, Pkg

name = "protein_stride"
version = v"1.0.0"

# Collection of sources required to complete build
sources = [
    GitSource("https://github.com/MDAnalysis/stride.git", "867a5eb0f2479cb16615512a53ee472c54649505"
)
]

# Bash recipe for building across all platforms
script = raw"""
cd $WORKSPACE/srcdir
cd stride/src
make
cp ./stride $prefix
exit
"""

# These are the platforms we will build for by default, unless further
# platforms are passed in on the command line
platforms = supported_platforms()

# The products that we will ensure are always built
products = [
    ExecutableProduct("stride", :stride_run)
]

# Dependencies that must be installed before this package can be built
dependencies = Dependency[
]

# Build the tarballs, and possibly a `build.jl` as well.
build_tarballs(ARGS, name, version, sources, script, platforms, products, dependencies; julia_compat
="1.6")

Any ideas?

Should be

install -Dvm 755 "stripe${exeext}" "${bindir}/stripe/${exeext}"

because executables should go into the executables directory, that is bindir. With your command you created a file with path ${prefix}, not even a file inside that directory, which doesn’t exist (and would be wrong anyway).

Side note, that package has an overly restrictive license which doesn’t allow us to freely redistribute it. I’m not very comfortable accepting it.

Yes, I noticed that. I’m not sure what I’ll be doing with the binaries yet. For the moment the package that I’m building just instructs the user to compile it by themselves. I thought about having a repository of binaries to help, not necessarily having this distributed automatically.

edit:

I tried this script now, and it didn’t work either:

# Note that this script can accept some limited command-line arguments, run
# `julia build_tarballs.jl --help` to see a usage message.
using BinaryBuilder, Pkg

name = "run_stride"
version = v"1.0.0"

# Collection of sources required to complete build
sources = [
    GitSource("https://github.com/MDAnalysis/stride.git", "867a5eb0f2479cb16615512a53ee472c54649505"
)
]

# Bash recipe for building across all platforms
script = raw"""
cd $WORKSPACE/srcdir
cd stride/src
make
install -Dvm 755 "stride" "${bindir}/run_stride"
exit
"""

# These are the platforms we will build for by default, unless further
# platforms are passed in on the command line
platforms = supported_platforms()

# The products that we will ensure are always built
products = [
    ExecutableProduct("run_stride", :run_stride)
]

# Dependencies that must be installed before this package can be built
dependencies = Dependency[
]

# Build the tarballs, and possibly a `build.jl` as well.
build_tarballs(ARGS, name, version, sources, script, platforms, products, dependencies; julia_compat
="1.6")

error:

% julia --project build_tarballs.jl --deploy="local"
[ Info: Building and deploying version 1.0.0+0 to /home/leandro/.julia/dev/run_stride_jll
[ Info: Building for aarch64-apple-darwin, aarch64-linux-gnu, aarch64-linux-musl, armv6l-linux-gnueabihf, armv6l-linux-musleabihf, armv7l-linux-gnueabihf, armv7l-linux-musleabihf, i686-linux-gnu, i686-linux-musl, i686-w64-mingw32, powerpc64le-linux-gnu, x86_64-apple-darwin, x86_64-linux-gnu, x86_64-linux-musl, x86_64-unknown-freebsd, x86_64-w64-mingw32
[ Info: ["run_stride"] does not exist, reporting unsatisfied
┌ Error: Built run_stride but run_stride still unsatisfied:
└ @ BinaryBuilder ~/.julia/packages/BinaryBuilder/0CUml/src/AutoBuild.jl:909
ERROR: LoadError: Cannot continue with unsatisfied build products!
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:35
 [2] autobuild(dir::AbstractString, src_name::AbstractString, src_version::VersionNumber, sources::Vector{<:BinaryBuilderBase.AbstractSource}, script::AbstractString, platforms::Vector, products::Vector{<:Product}, dependencies::Vector{<:BinaryBuilderBase.AbstractDependency}; verbose::Bool, debug::Bool, skip_audit::Bool, ignore_audit_errors::Bool, autofix::Bool, code_dir::Union{Nothing, String}, require_license::Bool, kwargs::Base.Pairs{Symbol, V, Tuple{Vararg{Symbol, N}}, NamedTuple{names, T}} where {V, N, names, T<:Tuple{Vararg{Any, N}}})
   @ BinaryBuilder ~/.julia/packages/BinaryBuilder/0CUml/src/AutoBuild.jl:914
 [3] build_tarballs(ARGS::Any, src_name::Any, src_version::Any, sources::Any, script::Any, platforms::Any, products::Any, dependencies::Any; julia_compat::String, kwargs::Base.Pairs{Symbol, V, Tuple{Vararg{Symbol, N}}, NamedTuple{names, T}} where {V, N, names, T<:Tuple{Vararg{Any, N}}})
   @ BinaryBuilder ~/.julia/packages/BinaryBuilder/0CUml/src/AutoBuild.jl:347
 [4] top-level scope
   @ ~/Downloads/stride/build_tarballs.jl:36
in expression starting at /home/leandro/Downloads/stride/build_tarballs.jl:36

If the problem is the not finding the executable, I’m out of ideas. I tried providing the path to the ExecutableProduct constructor explicitly, but nothing I tried worked. Last try was just to point it to where the executable is build:

# Bash recipe for building across all platforms
script = raw"""
cd $WORKSPACE/srcdir
cd stride/src
make
exit
"""

# These are the platforms we will build for by default, unless further
# platforms are passed in on the command line
platforms = supported_platforms()

# The products that we will ensure are always built
products = [
    ExecutableProduct("stride", :run_stride, "/workspace/srcdir/stride/src")
]

What platform is that? Use the verbose mode as suggested also in the docs: Home · BinaryBuilder.jl

I’m on a standard x86_64 laptop, with Mint 21.

I’ve tried --debug --verbose, but in what concerns the error, the output is identical:

[18:22:50] gcc -O2   stride.o splitstr.o rdpdb.o initchn.o geometry.o thr2one.o one2thr.o filename.o tolostr.o strutil.o place_h.o hbenergy.o memory.o helix.o sheet.o rdmap.o phipsi.o command.o molscr.o die.o hydrbond.o mergepat.o fillasn.o escape.o p_jrnl.o p_rem.o p_atom.o p_helix.o p_sheet.o p_turn.o p_ssbond.o p_expdta.o p_model.o p_compnd.o report.o nsc.o area.o ssbond.o chk_res.o chk_atom.o turn.o pdbasn.o dssp.o outseq.o chkchain.o elem.o measure.o asngener.o p_endmdl.o stred.o contact_order.o contact_map.o  -lm  -o  ./stride
[18:22:50]  ---> exit
[18:22:50]  ---> source "$_script"
[18:22:50]  ---> source "$_script"
[18:22:50] Installing license file "/workspace/srcdir/stride/LICENSE" to "/workspace/destdir/share/licenses/run_stride/LICENSE"...
[18:22:50] Child Process exited, exit code 0
[ Info: Beginning audit of /home/leandro/Downloads/stride/build/aarch64-apple-darwin/bqDF24AG/aarch64-apple-darwin20-libgfortran5-cxx11/destdir
[ Info: Checking license file
[ Info: Found license file(s): LICENSE
[ Info: ["stride"] does not exist, reporting unsatisfied
┌ Error: Built run_stride but run_stride still unsatisfied:
└ @ BinaryBuilder ~/.julia/packages/BinaryBuilder/0CUml/src/AutoBuild.jl:909
ERROR: LoadError: Cannot continue with unsatisfied build products!
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:35
 [2] autobuild(dir::AbstractString, src_name::AbstractString, src_version::VersionNumber, sources::Vector{<:BinaryBuilderBase.AbstractSource}, script::AbstractString, platforms::Vector, products::Vector{<:Product}, dependencies::Vector{<:BinaryBuilderBase.AbstractDependency}; verbose::Bool, debug::Bool, skip_audit::Bool, ignore_audit_errors::Bool, autofix::Bool, code_dir::Union{Nothing, String}, require_license::Bool, kwargs::Base.Pairs{Symbol, V, Tuple{Vararg{Symbol, N}}, NamedTuple{names, T}} where {V, N, names, T<:Tuple{Vararg{Any, N}}})
   @ BinaryBuilder ~/.julia/packages/BinaryBuilder/0CUml/src/AutoBuild.jl:914
 [3] build_tarballs(ARGS::Any, src_name::Any, src_version::Any, sources::Any, script::Any, platforms::Any, products::Any, dependencies::Any; julia_compat::String, kwargs::Base.Pairs{Symbol, V, Tuple{Vararg{Symbol, N}}, NamedTuple{names, T}} where {V, N, names, T<:Tuple{Vararg{Any, N}}})
   @ BinaryBuilder ~/.julia/packages/BinaryBuilder/0CUml/src/AutoBuild.jl:347
 [4] top-level scope
   @ ~/Downloads/stride/build_tarballs.jl:35
in expression starting at /home/leandro/Downloads/stride/build_tarballs.jl:35

I don’t see the file being installed in bindir?

Using this script:

script
# Note that this script can accept some limited command-line arguments, run
# `julia build_tarballs.jl --help` to see a usage message.
using BinaryBuilder, Pkg

name = "run_stride"
version = v"1.0.0"

# Collection of sources required to complete build
sources = [
    GitSource("https://github.com/MDAnalysis/stride.git", "867a5eb0f2479cb16615512a53ee472c54649505"
)
]

# Bash recipe for building across all platforms
script = raw"""
cd $WORKSPACE/srcdir
cd stride/src
make
install -Dvm 755 "stride" "${bindir}/run_stride"
exit
"""

# These are the platforms we will build for by default, unless further
# platforms are passed in on the command line
platforms = supported_platforms()

# The products that we will ensure are always built
products = [
    ExecutableProduct("run_stride", :run_stride)
]

# Dependencies that must be installed before this package can be built
dependencies = Dependency[
]

# Build the tarballs, and possibly a `build.jl` as well.
build_tarballs(ARGS, name, version, sources, script, platforms, products, dependencies; julia_compat
="1.6")

The build process seems to work in some platforms, but at the end I get the same error, and nothing is deployed:

complete log
% julia --project build_tarballs.jl --deploy="local" --debug --verbose
[ Info: Building and deploying version 1.0.0+0 to /home/leandro/.julia/dev/run_stride_jll
[ Info: Building for aarch64-apple-darwin, aarch64-linux-gnu, aarch64-linux-musl, armv6l-linux-gnueabihf, armv6l-linux-musleabihf, armv7l-linux-gnueabihf, armv7l-linux-musleabihf, i686-linux-gnu, i686-linux-musl, i686-w64-mingw32, powerpc64le-linux-gnu, x86_64-apple-darwin, x86_64-linux-gnu, x86_64-linux-musl, x86_64-unknown-freebsd, x86_64-w64-mingw32
┌ Info: Using cached git repository
│   url = "https://github.com/MDAnalysis/stride.git"
└   repo_path = "/home/leandro/.julia/packages/BinaryBuilderBase/ASUzv/deps/downloads/clones/stride.git-b3feac09b3a32be409f069f2864e8bd50d4556cdbbcc11ba41d59f222b83fa1a"
[ Info: Checking stride.git-b3feac09b3a32be409f069f2864e8bd50d4556cdbbcc11ba41d59f222b83fa1a out to stride...


LOTS OF STUFF... 


[19:26:38] --> workspacing /tmp/jl_rHftxo to /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/opt/bin
[19:26:38] --> workspacing /home/leandro/Downloads/stride/build/i686-linux-musl/IcYIVxmL/metadir to /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/meta
[19:26:38] --> workspacing /home/leandro/Downloads/stride/build/i686-linux-musl/IcYIVxmL to /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/workspace
[19:26:38] --> Mounting procfs at /proc
[19:26:38] About to run `/bin/bash` `-l` `-c` `# Stop if we hit any errors.
[19:26:38] set -e
[19:26:38] 
[19:26:38] # If we're running as `bash`, then use the `DEBUG` and `ERR` traps
[19:26:38] if [ $(basename $0) = "bash" ]; then
[19:26:38]     trap "RET=\$?; \
[19:26:38]           trap - DEBUG INT TERM ERR EXIT; \
[19:26:38]           set +e +x; \
[19:26:38]           auto_install_license; \
[19:26:38]           save_env; \
[19:26:38]           exit \$RET" \
[19:26:38]         EXIT
[19:26:38] 
[19:26:38]     trap "RET=\$?; \
[19:26:38]           trap - DEBUG INT TERM ERR EXIT; \
[19:26:38]           set +e +x; \
[19:26:38]           echo Previous command \$! exited with \$RET >&2; \
[19:26:38]           save_env; \
[19:26:38]           exit \$RET" \
[19:26:38]         INT TERM ERR
[19:26:38] 
[19:26:38]     # Start saving everything into our history
[19:26:38]     trap save_history DEBUG
[19:26:38] else
[19:26:38]     # If we're running in `sh` or something like that, we need a
[19:26:38]     # slightly slimmer set of traps. :(
[19:26:38]     trap "RET=\$?; \
[19:26:38]           echo Previous command exited with \$RET >&2; \
[19:26:38]           set +e +x; \
[19:26:38]           save_env; \
[19:26:38]           exit \$RET" \
[19:26:38]         EXIT INT TERM
[19:26:38] fi
[19:26:38] 
[19:26:38] cd $WORKSPACE/srcdir
[19:26:38] cd stride/src
[19:26:38] make
[19:26:38] install -Dvm 755 "stride" "${bindir}/run_stride"
[19:26:38] exit
[19:26:38] 
[19:26:38] ` 
[19:26:38]  ---> cd $WORKSPACE/srcdir
[19:26:38]  ---> cd stride/src
[19:26:38]  ---> make
[19:26:38] gcc -O2   -c stride.c -o stride.o
[19:26:38] gcc -O2   -c splitstr.c -o splitstr.o
[19:26:38] gcc -O2   -c rdpdb.c -o rdpdb.o
[19:26:38] gcc -O2   -c initchn.c -o initchn.o
[19:26:38] gcc -O2   -c geometry.c -o geometry.o
[19:26:38] gcc -O2   -c thr2one.c -o thr2one.o
[19:26:38] gcc -O2   -c one2thr.c -o one2thr.o
[19:26:38] gcc -O2   -c filename.c -o filename.o
[19:26:38] gcc -O2   -c tolostr.c -o tolostr.o
[19:26:38] gcc -O2   -c strutil.c -o strutil.o
[19:26:39] gcc -O2   -c place_h.c -o place_h.o
[19:26:39] gcc -O2   -c hbenergy.c -o hbenergy.o
[19:26:39] gcc -O2   -c memory.c -o memory.o
[19:26:39] gcc -O2   -c helix.c -o helix.o
[19:26:39] gcc -O2   -c sheet.c -o sheet.o
[19:26:39] gcc -O2   -c rdmap.c -o rdmap.o
[19:26:39] gcc -O2   -c phipsi.c -o phipsi.o
[19:26:39] gcc -O2   -c command.c -o command.o
[19:26:39] gcc -O2   -c molscr.c -o molscr.o
[19:26:39] gcc -O2   -c die.c -o die.o
[19:26:39] gcc -O2   -c hydrbond.c -o hydrbond.o
[19:26:39] gcc -O2   -c mergepat.c -o mergepat.o
[19:26:40] gcc -O2   -c fillasn.c -o fillasn.o
[19:26:40] gcc -O2   -c escape.c -o escape.o
[19:26:40] gcc -O2   -c p_jrnl.c -o p_jrnl.o
[19:26:40] gcc -O2   -c p_rem.c -o p_rem.o
[19:26:40] gcc -O2   -c p_atom.c -o p_atom.o
[19:26:40] gcc -O2   -c p_helix.c -o p_helix.o
[19:26:40] gcc -O2   -c p_sheet.c -o p_sheet.o
[19:26:40] gcc -O2   -c p_turn.c -o p_turn.o
[19:26:40] gcc -O2   -c p_ssbond.c -o p_ssbond.o
[19:26:40] gcc -O2   -c p_expdta.c -o p_expdta.o
[19:26:40] gcc -O2   -c p_model.c -o p_model.o
[19:26:40] gcc -O2   -c p_compnd.c -o p_compnd.o
[19:26:40] gcc -O2   -c report.c -o report.o
[19:26:41] gcc -O2   -c nsc.c -o nsc.o
[19:26:41] gcc -O2   -c area.c -o area.o
[19:26:41] gcc -O2   -c ssbond.c -o ssbond.o
[19:26:41] gcc -O2   -c chk_res.c -o chk_res.o
[19:26:41] gcc -O2   -c chk_atom.c -o chk_atom.o
[19:26:41] gcc -O2   -c turn.c -o turn.o
[19:26:41] gcc -O2   -c pdbasn.c -o pdbasn.o
[19:26:41] gcc -O2   -c dssp.c -o dssp.o
[19:26:41] gcc -O2   -c outseq.c -o outseq.o
[19:26:41] gcc -O2   -c chkchain.c -o chkchain.o
[19:26:41] gcc -O2   -c elem.c -o elem.o
[19:26:42] gcc -O2   -c measure.c -o measure.o
[19:26:42] gcc -O2   -c asngener.c -o asngener.o
[19:26:42] gcc -O2   -c p_endmdl.c -o p_endmdl.o
[19:26:42] gcc -O2   -c stred.c -o stred.o
[19:26:42] gcc -O2   -c contact_order.c -o contact_order.o
[19:26:42] gcc -O2   -c contact_map.c -o contact_map.o
[19:26:42] gcc -O2   stride.o splitstr.o rdpdb.o initchn.o geometry.o thr2one.o one2thr.o filename.o tolostr.o strutil.o place_h.o hbenergy.o memory.o helix.o sheet.o rdmap.o phipsi.o command.o molscr.o die.o hydrbond.o mergepat.o fillasn.o escape.o p_jrnl.o p_rem.o p_atom.o p_helix.o p_sheet.o p_turn.o p_ssbond.o p_expdta.o p_model.o p_compnd.o report.o nsc.o area.o ssbond.o chk_res.o chk_atom.o turn.o pdbasn.o dssp.o outseq.o chkchain.o elem.o measure.o asngener.o p_endmdl.o stred.o contact_order.o contact_map.o  -lm  -o  ./stride
[19:26:42]  ---> install -Dvm 755 "stride" "${bindir}/run_stride"
[19:26:42] created directory: '/workspace/destdir/bin'
[19:26:42] 'stride' -> '/workspace/destdir/bin/run_stride'
[19:26:42]  ---> exit
[19:26:42]  ---> source "$_script"
[19:26:42]  ---> source "$_script"
[19:26:42] Installing license file "/workspace/srcdir/stride/LICENSE" to "/workspace/destdir/share/licenses/run_stride/LICENSE"...
[19:26:42] Child Process exited, exit code 0
[ Info: Beginning audit of /home/leandro/Downloads/stride/build/i686-linux-musl/IcYIVxmL/i686-linux-musl-libgfortran3-cxx03/destdir
[ Info: Checking bin/run_stride with RPath list Any[]
[ Info: Ignored system libraries libc.musl-i386.so.1
[ Info: Checking license file
[ Info: Found license file(s): LICENSE
[ Info: /home/leandro/Downloads/stride/build/i686-linux-musl/IcYIVxmL/i686-linux-musl-libgfortran3-cxx03/destdir/bin/run_stride matches our search criteria of ["run_stride"]
[ Info: Compressing files in /home/leandro/Downloads/stride/build/i686-linux-musl/IcYIVxmL/i686-linux-musl-libgfortran3-cxx03/destdir/logs/run_stride
[ Info: /home/leandro/Downloads/stride/products/run_stride.v1.0.0.i686-linux-musl.tar.gz already exists, force-overwriting...
[ Info: Tree hash of contents of run_stride.v1.0.0.i686-linux-musl.tar.gz: 8b437dfea18b8d2d97567ddfbb75fbe7d0159437
[ Info: SHA256 of run_stride.v1.0.0.i686-linux-musl.tar.gz: 80238a9bbd0e799b29d1b715eacc9b0f68c769d048f4efce638a48da066d9e88
[ Info: /home/leandro/Downloads/stride/products/run_stride-logs.v1.0.0.i686-linux-musl.tar.gz already exists, force-overwriting...
[ Info: Tree hash of contents of run_stride-logs.v1.0.0.i686-linux-musl.tar.gz: ec86ecfe7fd320ab33e06df48702a17087c495a4
[ Info: SHA256 of run_stride-logs.v1.0.0.i686-linux-musl.tar.gz: ff972de1cda2ad4eb4bc746ecab9f5727932a68ae1b85aac88d1ee869a34beb9
[ Info: Timings: setup: 0.2s, build: 3.94s, audit: 0.18s, packaging: 0.02s
[ Info: Checking stride.git-b3feac09b3a32be409f069f2864e8bd50d4556cdbbcc11ba41d59f222b83fa1a out to stride...
[ Info: Checking to see if /home/leandro/Downloads/stride/build/i686-w64-mingw32/Z3DHfd6K/ is encrypted...
[ Info: Checking to see if /home/leandro/.julia/packages/BinaryBuilderBase/ASUzv/deps/ is encrypted...
[19:26:42] verbose sandbox enabled (running in unprivileged container mode)
[19:26:42] Parsed --rootfs as "/home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5"
[19:26:42] Parsed --cd as "/workspace/srcdir"
[19:26:42] Parsed --workspace as "/home/leandro/Downloads/stride/build/i686-w64-mingw32/Z3DHfd6K" -> "/workspace"
[19:26:42] Parsed --workspace as "/home/leandro/Downloads/stride/build/i686-w64-mingw32/Z3DHfd6K/metadir" -> "/meta"
[19:26:42] Parsed --workspace as "/tmp/jl_rAUEO0" -> "/opt/bin"
[19:26:42] Parsed --workspace as "/tmp/jl_GSkc7q" -> "/opt/toolchains"
[19:26:42] Parsed --workspace as "/tmp/jl_ZIqAeb" -> "/etc/resolv.conf"
[19:26:42] Parsed --map as "/home/leandro/.julia/artifacts/ca17eb48614bda34a50744cfdcbead71d3d79757" -> "/opt/i686-w64-mingw32/PlatformSupport-2023.6.10"
[19:26:42] Parsed --map as "/home/leandro/.julia/artifacts/2b334fd133e4e390da092b0d1d04b4a4b055c02d" -> "/opt/i686-w64-mingw32/GCCBootstrap-4.8.5"
[19:26:42] Parsed --map as "/home/leandro/.julia/artifacts/e426e144bd6b10ceeca467c8f2c8dee929732e78" -> "/opt/x86_64-linux-musl/LLVMBootstrap-13.0.1"
[19:26:42] Parsed --map as "/home/leandro/.julia/artifacts/1e537efc1d024ec8b9d3bc4ff1cb69be2e4493ab" -> "/opt/x86_64-linux-musl/PlatformSupport-2023.6.10"
[19:26:42] Parsed --map as "/home/leandro/.julia/artifacts/e5229ab63cfb1c1deb9c8f461889787e648eaeba" -> "/opt/x86_64-linux-musl/GCCBootstrap-4.8.5"
[19:26:42] Child Process PID is 347007
[19:26:42] --> Mapping 1000:1000 to root:root within container namespace
[19:26:42] --> Creating overlay workdir at /proc
[19:26:42] --> Mounting overlay of /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5 at /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5 (modifications in /proc/upper/rootfs, workspace in /proc/work/rootfs)
[19:26:42] --> mapping /home/leandro/.julia/artifacts/e5229ab63cfb1c1deb9c8f461889787e648eaeba to /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/opt/x86_64-linux-musl/GCCBootstrap-4.8.5
[19:26:42] --> mapping /home/leandro/.julia/artifacts/1e537efc1d024ec8b9d3bc4ff1cb69be2e4493ab to /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/opt/x86_64-linux-musl/PlatformSupport-2023.6.10
[19:26:42] --> mapping /home/leandro/.julia/artifacts/e426e144bd6b10ceeca467c8f2c8dee929732e78 to /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/opt/x86_64-linux-musl/LLVMBootstrap-13.0.1
[19:26:42] --> mapping /home/leandro/.julia/artifacts/2b334fd133e4e390da092b0d1d04b4a4b055c02d to /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/opt/i686-w64-mingw32/GCCBootstrap-4.8.5
[19:26:42] --> mapping /home/leandro/.julia/artifacts/ca17eb48614bda34a50744cfdcbead71d3d79757 to /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/opt/i686-w64-mingw32/PlatformSupport-2023.6.10
[19:26:42] --> Mounting overlay of /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/opt/i686-w64-mingw32/PlatformSupport-2023.6.10:/home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/opt/i686-w64-mingw32/GCCBootstrap-4.8.5 at /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/opt/i686-w64-mingw32 (modifications in /proc/upper/i686-w64-mingw32, workspace in /proc/work/i686-w64-mingw32)
[19:26:42] --> Mounting overlay of /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/opt/x86_64-linux-musl/LLVMBootstrap-13.0.1:/home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/opt/x86_64-linux-musl/PlatformSupport-2023.6.10:/home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/opt/x86_64-linux-musl/GCCBootstrap-4.8.5 at /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/opt/x86_64-linux-musl (modifications in /proc/upper/x86_64-linux-musl, workspace in /proc/work/x86_64-linux-musl)
[19:26:42] --> Mounting procfs at /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/proc
[19:26:42] --> Bind-mounting /dev/null over /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/dev/null
[19:26:42] --> Bind-mounting /dev/tty over /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/dev/tty
[19:26:42] --> Bind-mounting /dev/urandom over /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/dev/urandom
[19:26:42] --> Bind-mounting /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/dev/pts/ptmx over /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/dev/ptmx
[19:26:42] --> workspacing /tmp/jl_ZIqAeb to /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/etc/resolv.conf
[19:26:42] --> workspacing /tmp/jl_GSkc7q to /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/opt/toolchains
[19:26:42] --> workspacing /tmp/jl_rAUEO0 to /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/opt/bin
[19:26:42] --> workspacing /home/leandro/Downloads/stride/build/i686-w64-mingw32/Z3DHfd6K/metadir to /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/meta
[19:26:42] --> workspacing /home/leandro/Downloads/stride/build/i686-w64-mingw32/Z3DHfd6K to /home/leandro/.julia/artifacts/d0c08357d84c092c9d6a8bad715001ad33e3d5d5/workspace
[19:26:42] --> Mounting procfs at /proc
[19:26:42] About to run `/bin/bash` `-l` `-c` `# Stop if we hit any errors.
[19:26:42] set -e
[19:26:42] 
[19:26:42] # If we're running as `bash`, then use the `DEBUG` and `ERR` traps
[19:26:42] if [ $(basename $0) = "bash" ]; then
[19:26:42]     trap "RET=\$?; \
[19:26:42]           trap - DEBUG INT TERM ERR EXIT; \
[19:26:42]           set +e +x; \
[19:26:42]           auto_install_license; \
[19:26:42]           save_env; \
[19:26:42]           exit \$RET" \
[19:26:42]         EXIT
[19:26:42] 
[19:26:42]     trap "RET=\$?; \
[19:26:42]           trap - DEBUG INT TERM ERR EXIT; \
[19:26:42]           set +e +x; \
[19:26:42]           echo Previous command \$! exited with \$RET >&2; \
[19:26:42]           save_env; \
[19:26:42]           exit \$RET" \
[19:26:42]         INT TERM ERR
[19:26:42] 
[19:26:42]     # Start saving everything into our history
[19:26:42]     trap save_history DEBUG
[19:26:42] else
[19:26:42]     # If we're running in `sh` or something like that, we need a
[19:26:42]     # slightly slimmer set of traps. :(
[19:26:42]     trap "RET=\$?; \
[19:26:42]           echo Previous command exited with \$RET >&2; \
[19:26:42]           set +e +x; \
[19:26:42]           save_env; \
[19:26:42]           exit \$RET" \
[19:26:42]         EXIT INT TERM
[19:26:42] fi
[19:26:42] 
[19:26:42] cd $WORKSPACE/srcdir
[19:26:42] cd stride/src
[19:26:42] make
[19:26:42] install -Dvm 755 "stride" "${bindir}/run_stride"
[19:26:42] exit
[19:26:42] 
[19:26:42] ` 
[19:26:42]  ---> cd $WORKSPACE/srcdir
[19:26:42]  ---> cd stride/src
[19:26:42]  ---> make
[19:26:42] gcc -O2   -c stride.c -o stride.o
[19:26:43] gcc -O2   -c splitstr.c -o splitstr.o
[19:26:43] gcc -O2   -c rdpdb.c -o rdpdb.o
[19:26:43] gcc -O2   -c initchn.c -o initchn.o
[19:26:43] gcc -O2   -c geometry.c -o geometry.o
[19:26:43] gcc -O2   -c thr2one.c -o thr2one.o
[19:26:43] gcc -O2   -c one2thr.c -o one2thr.o
[19:26:43] gcc -O2   -c filename.c -o filename.o
[19:26:43] gcc -O2   -c tolostr.c -o tolostr.o
[19:26:43] gcc -O2   -c strutil.c -o strutil.o
[19:26:43] gcc -O2   -c place_h.c -o place_h.o
[19:26:43] gcc -O2   -c hbenergy.c -o hbenergy.o
[19:26:43] gcc -O2   -c memory.c -o memory.o
[19:26:43] gcc -O2   -c helix.c -o helix.o
[19:26:43] gcc -O2   -c sheet.c -o sheet.o
[19:26:44] gcc -O2   -c rdmap.c -o rdmap.o
[19:26:44] gcc -O2   -c phipsi.c -o phipsi.o
[19:26:44] gcc -O2   -c command.c -o command.o
[19:26:44] gcc -O2   -c molscr.c -o molscr.o
[19:26:44] gcc -O2   -c die.c -o die.o
[19:26:44] gcc -O2   -c hydrbond.c -o hydrbond.o
[19:26:44] gcc -O2   -c mergepat.c -o mergepat.o
[19:26:44] gcc -O2   -c fillasn.c -o fillasn.o
[19:26:45] gcc -O2   -c escape.c -o escape.o
[19:26:45] gcc -O2   -c p_jrnl.c -o p_jrnl.o
[19:26:45] gcc -O2   -c p_rem.c -o p_rem.o
[19:26:45] gcc -O2   -c p_atom.c -o p_atom.o
[19:26:45] gcc -O2   -c p_helix.c -o p_helix.o
[19:26:45] gcc -O2   -c p_sheet.c -o p_sheet.o
[19:26:45] gcc -O2   -c p_turn.c -o p_turn.o
[19:26:45] gcc -O2   -c p_ssbond.c -o p_ssbond.o
[19:26:45] gcc -O2   -c p_expdta.c -o p_expdta.o
[19:26:45] gcc -O2   -c p_model.c -o p_model.o
[19:26:45] gcc -O2   -c p_compnd.c -o p_compnd.o
[19:26:45] gcc -O2   -c report.c -o report.o
[19:26:45] gcc -O2   -c nsc.c -o nsc.o
[19:26:46] gcc -O2   -c area.c -o area.o
[19:26:46] gcc -O2   -c ssbond.c -o ssbond.o
[19:26:46] gcc -O2   -c chk_res.c -o chk_res.o
[19:26:46] gcc -O2   -c chk_atom.c -o chk_atom.o
[19:26:46] gcc -O2   -c turn.c -o turn.o
[19:26:46] gcc -O2   -c pdbasn.c -o pdbasn.o
[19:26:46] gcc -O2   -c dssp.c -o dssp.o
[19:26:46] gcc -O2   -c outseq.c -o outseq.o
[19:26:46] gcc -O2   -c chkchain.c -o chkchain.o
[19:26:46] gcc -O2   -c elem.c -o elem.o
[19:26:46] gcc -O2   -c measure.c -o measure.o
[19:26:47] gcc -O2   -c asngener.c -o asngener.o
[19:26:47] gcc -O2   -c p_endmdl.c -o p_endmdl.o
[19:26:47] gcc -O2   -c stred.c -o stred.o
[19:26:47] gcc -O2   -c contact_order.c -o contact_order.o
[19:26:47] gcc -O2   -c contact_map.c -o contact_map.o
[19:26:47] gcc -O2   stride.o splitstr.o rdpdb.o initchn.o geometry.o thr2one.o one2thr.o filename.o tolostr.o strutil.o place_h.o hbenergy.o memory.o helix.o sheet.o rdmap.o phipsi.o command.o molscr.o die.o hydrbond.o mergepat.o fillasn.o escape.o p_jrnl.o p_rem.o p_atom.o p_helix.o p_sheet.o p_turn.o p_ssbond.o p_expdta.o p_model.o p_compnd.o report.o nsc.o area.o ssbond.o chk_res.o chk_atom.o turn.o pdbasn.o dssp.o outseq.o chkchain.o elem.o measure.o asngener.o p_endmdl.o stred.o contact_order.o contact_map.o  -lm  -o  ./stride
[19:26:47]  ---> install -Dvm 755 "stride" "${bindir}/run_stride"
[19:26:47] created directory: '/workspace/destdir/bin'
[19:26:47] 'stride' -> '/workspace/destdir/bin/run_stride'
[19:26:47]  ---> exit
[19:26:47]  ---> source "$_script"
[19:26:47]  ---> source "$_script"
[19:26:47] Installing license file "/workspace/srcdir/stride/LICENSE" to "/workspace/destdir/share/licenses/run_stride/LICENSE"...
[19:26:47] Child Process exited, exit code 0
[ Info: Beginning audit of /home/leandro/Downloads/stride/build/i686-w64-mingw32/Z3DHfd6K/i686-w64-mingw32-libgfortran3-cxx03/destdir
[ Info: Checking bin/run_stride with RPath list String[]
[ Info: Ignored system libraries msvcrt.dll, KERNEL32.dll
[ Info: Checking license file
[ Info: Found license file(s): LICENSE
[ Info: ["run_stride"] does not exist, reporting unsatisfied
┌ Error: Built run_stride but run_stride still unsatisfied:
└ @ BinaryBuilder ~/.julia/packages/BinaryBuilder/0CUml/src/AutoBuild.jl:909
ERROR: LoadError: Cannot continue with unsatisfied build products!
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:35
 [2] autobuild(dir::AbstractString, src_name::AbstractString, src_version::VersionNumber, sources::Vector{<:BinaryBuilderBase.AbstractSource}, script::AbstractString, platforms::Vector, products::Vector{<:Product}, dependencies::Vector{<:BinaryBuilderBase.AbstractDependency}; verbose::Bool, debug::Bool, skip_audit::Bool, ignore_audit_errors::Bool, autofix::Bool, code_dir::Union{Nothing, String}, require_license::Bool, kwargs::Base.Pairs{Symbol, V, Tuple{Vararg{Symbol, N}}, NamedTuple{names, T}} where {V, N, names, T<:Tuple{Vararg{Any, N}}})
   @ BinaryBuilder ~/.julia/packages/BinaryBuilder/0CUml/src/AutoBuild.jl:914
 [3] build_tarballs(ARGS::Any, src_name::Any, src_version::Any, sources::Any, script::Any, platforms::Any, products::Any, dependencies::Any; julia_compat::String, kwargs::Base.Pairs{Symbol, V, Tuple{Vararg{Symbol, N}}, NamedTuple{names, T}} where {V, N, names, T<:Tuple{Vararg{Any, N}}})
   @ BinaryBuilder ~/.julia/packages/BinaryBuilder/0CUml/src/AutoBuild.jl:347
 [4] top-level scope
   @ ~/Downloads/stride/build_tarballs.jl:37
in expression starting at /home/leandro/Downloads/stride/build_tarballs.jl:37

On the linux-musl system?

Because you decided to remove the extension that I suggested to use before.

With the exact line you suggested, meaning, this script:

Summary
# Note that this script can accept some limited command-line arguments, run
# `julia build_tarballs.jl --help` to see a usage message.
using BinaryBuilder, Pkg

name = "run_stride"
version = v"1.0.0"

# Collection of sources required to complete build
sources = [
    GitSource("https://github.com/MDAnalysis/stride.git", "867a5eb0f2479cb16615512a53ee472c54649505"
)
]

# Bash recipe for building across all platforms
script = raw"""
cd $WORKSPACE/srcdir
cd stride/src
make
install -Dvm 755 "stripe${exeext}" "${bindir}/stripe/${exeext}"
exit
"""

# These are the platforms we will build for by default, unless further
# platforms are passed in on the command line
platforms = supported_platforms()

# The products that we will ensure are always built
products = [
    ExecutableProduct("run_stride", :run_stride)
]

# Dependencies that must be installed before this package can be built
dependencies = Dependency[
]

# Build the tarballs, and possibly a `build.jl` as well.
build_tarballs(ARGS, name, version, sources, script, platforms, products, dependencies; julia_compat
="1.6")

I get these errors:

nl.o p_rem.o p_atom.o p_helix.o p_sheet.o p_turn.o p_ssbond.o p_expdta.o p_model.o p_compnd.o report.o nsc.o area.o ssbond.o chk_res.o chk_atom.o turn.o pdbasn.o dssp.o outseq.o chkchain.o elem.o measure.o asngener.o p_endmdl.o stred.o contact_order.o contact_map.o  -lm  -o  ./stride
[19:43:44]  ---> install -Dvm 755 "stripe${exeext}" "${bindir}/stripe/${exeext}"
[19:43:44] created directory: '/workspace/destdir/bin'
[19:43:44] install: can't stat 'stripe': No such file or directory
[19:43:44]  ---> install -Dvm 755 "stripe${exeext}" "${bindir}/stripe/${exeext}"
[19:43:44]  ---> install -Dvm 755 "stripe${exeext}" "${bindir}/stripe/${exeext}"
[19:43:44] Previous command exited with 1
[19:43:44] Child Process exited, exit code 1
┌ Warning: Build failed, launching debug shell:
└ @ BinaryBuilder ~/.julia/packages/BinaryBuilder/0CUml/src/AutoBuild.jl:871
verbose sandbox enabled (running in unprivileged container mode

So I assumed that you meant stride, not stripe, and changed that, in which case I get the same:

h.o hbenergy.o memory.o helix.o sheet.o rdmap.o phipsi.o command.o molscr.o die.o hydrbond.o mergepat.o fillasn.o escape.o p_jrnl.o p_rem.o p_atom.o p_helix.o p_sheet.o p_turn.o p_ssbond.o p_expdta.o p_model.o p_compnd.o report.o nsc.o area.o ssbond.o chk_res.o chk_atom.o turn.o pdbasn.o dssp.o outseq.o chkchain.o elem.o measure.o asngener.o p_endmdl.o stred.o contact_order.o contact_map.o  -lm  -o  ./stride
[19:51:23]  ---> install -Dvm 755 "stride${exeext}" "${bindir}/stride/${exeext}"
[19:51:23] created directory: '/workspace/destdir/bin'
[19:51:23] install: can't create '/workspace/destdir/bin/stride/': Is a directory
[19:51:23]  ---> install -Dvm 755 "stride${exeext}" "${bindir}/stride/${exeext}"
[19:51:23]  ---> install -Dvm 755 "stride${exeext}" "${bindir}/stride/${exeext}"
[19:51:23] Previous command exited with 1
[19:51:23] Child Process exited, exit code 1
┌ Warning: Build failed, launching debug shell:
└ @ BinaryBuilder ~/.julia/packages/BinaryBuilder/0CUml/src/

and then I started trying a variety of derivatives of that and combinations with full paths, but nothing worked.

(edit: in the script above, chaning run_stride to stride in the ExecutableProduct line, which seems correct, doesn’t solve the issue).

Yes, there was a typo in stripe/stride, but you had figured that out already (typing on the phone isn’t fun). And I made another mistake in "${bindir}/stripe/${exeext}", that was supposed to be "${bindir}/stripe${exeext}" (again, the phone isn’t fun). Also, if you aren’t specifying the compiler version you’re probably using gcc 4.8, which means it doesn’t automatically set the extension when targeting Windows.

To summarise, the correct line should be

install -Dvm 755 "stride" "${bindir}/stride${exeext}" 

You wouldn’t have all these troubles with packages with better build systems (the makefile of this specific package has also multiple errors).

2 Likes

Thanks for all the help.

That created the run_stride_jll package in .julia/dev, with the wrappers for all platforms.

But I don’t find the binaries themselves. Are they supposed to be stored somewhere locally here?

They’ll be in

.julia/artifacts/<GIT_TREE_HASH_OF_YOUR_ARTIFACT_THAT_YOU_CAN_FIND_IN_YOUR_ARTIFACTS.TOML_FILE>
1 Like