Skip to content

Symlinks in Windows artifact. #16

@nhz2

Description

@nhz2

The vegalite_app artifact https://github.com/queryverse/VegaLiteBuilder/releases/download/v3.4.1/vegaliteassets-3.4.1-x86_64-w64-mingw32.tar.gz contains the following symlinks:

                  "node_modules/.bin/color-support" => "../color-support/bin.js"
                       "node_modules/.bin/csv2json" => "../d3-dsv/bin/dsv2json.js"
                        "node_modules/.bin/csv2tsv" => "../d3-dsv/bin/dsv2dsv.js"
                        "node_modules/.bin/dsv2dsv" => "../d3-dsv/bin/dsv2dsv.js"
                       "node_modules/.bin/dsv2json" => "../d3-dsv/bin/dsv2json.js"
                        "node_modules/.bin/geo2svg" => "../d3-geo-projection/bin/geo2svg.js"
                   "node_modules/.bin/geograticule" => "../d3-geo-projection/bin/geograticule.js"
                     "node_modules/.bin/geoproject" => "../d3-geo-projection/bin/geoproject.js"
                    "node_modules/.bin/geoquantize" => "../d3-geo-projection/bin/geoquantize.js"
                      "node_modules/.bin/geostitch" => "../d3-geo-projection/bin/geostitch.js"
                       "node_modules/.bin/json2csv" => "../d3-dsv/bin/json2dsv.js"
                       "node_modules/.bin/json2dsv" => "../d3-dsv/bin/json2dsv.js"
                       "node_modules/.bin/json2tsv" => "../d3-dsv/bin/json2dsv.js"
                         "node_modules/.bin/mkdirp" => "../mkdirp/bin/cmd.js"
                   "node_modules/.bin/node-pre-gyp" => "../@mapbox/node-pre-gyp/bin/node-pre-gyp"
                           "node_modules/.bin/nopt" => "../nopt/bin/nopt.js"
                         "node_modules/.bin/rimraf" => "../rimraf/bin.js"
                         "node_modules/.bin/semver" => "../semver/bin/semver.js"
                       "node_modules/.bin/topo2geo" => "../topojson-client/bin/topo2geo"
                      "node_modules/.bin/topomerge" => "../topojson-client/bin/topomerge"
                   "node_modules/.bin/topoquantize" => "../topojson-client/bin/topoquantize"
                        "node_modules/.bin/tsv2csv" => "../d3-dsv/bin/dsv2dsv.js"
                       "node_modules/.bin/tsv2json" => "../d3-dsv/bin/dsv2json.js"
                         "node_modules/.bin/vg2pdf" => "../vega-cli/bin/vg2pdf"
                         "node_modules/.bin/vg2png" => "../vega-cli/bin/vg2png"
                         "node_modules/.bin/vg2svg" => "../vega-cli/bin/vg2svg"
                         "node_modules/.bin/vl2pdf" => "../vega-lite/bin/vl2pdf"
                         "node_modules/.bin/vl2png" => "../vega-lite/bin/vl2png"
                         "node_modules/.bin/vl2svg" => "../vega-lite/bin/vl2svg"
                          "node_modules/.bin/vl2vg" => "../vega-lite/bin/vl2vg"
   "node_modules/make-dir/node_modules/.bin/semver" => "../semver/bin/semver.js"
 "node_modules/vega-embed/node_modules/.bin/semver" => "../semver/bin/semver.js"
Details
julia> using Tar: Tar

julia> using Pkg: Pkg, PlatformEngines

julia> using Downloads: download

julia> function tar_get_symlinks(tarball_path::AbstractString)
           symlinks_output = Pair{String,String}[]
           Tar.list(`$(PlatformEngines.exe7z()) x $tarball_path -so`) do header::Tar.Header
               if (header.type == :symlink)
                   push!(symlinks_output, header.path=>header.link)
               end
               nothing
           end
           symlinks_output
       end
tar_get_symlinks (generic function with 1 method)

julia> url = "https://github.com/queryverse/VegaLiteBuilder/releases/download/v3.4.1/vegaliteassets-3.4.1-x86_64-w64-mingw32.tar.gz";

julia> tar_get_symlinks(download(url))

These are created when npm prune is called in the build script, though I'm not sure why.

This prevents Vega and VegaLite from being installed on Windows in Julia 1.10 due to stricter artifact integrity checking.
Ref: #1 JuliaLang/Pkg.jl#3643

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions