Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 0 additions & 59 deletions .github/backup/.travis.yml

This file was deleted.

38 changes: 0 additions & 38 deletions .github/backup/appveyor.yml

This file was deleted.

21 changes: 5 additions & 16 deletions .github/workflows/BuildDylib.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,11 @@ name: Build Dylib

on:
push:
branches:
- master
# tags: '*'
release:
types:
- created
pull_request:
types: [opened, synchronize, reopened]
paths:
- 'deps/Makefile'
- 'deps/task.c'
- 'deps/build_tarballs.jl'
- 'deps/build_dylib.sh'

jobs:
build:
Expand All @@ -25,18 +22,10 @@ jobs:
uses: julia-actions/setup-julia@latest
with:
version: ${{ matrix.julia-version }}
- name: Tag commit
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: deps/gh-auto-tag
- name: Install dependencies
run: julia -e 'using Pkg; Pkg.add("BinaryProvider"); Pkg.add("BinaryBuilder");'
- name: Build
env:
BINARYBUILDER_DOWNLOADS_CACHE: downloads
BINARYBUILDER_AUTOMATIC_APPLE: true
run: julia deps/build_tarballs.jl
- name: Upload to release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: deps/gh-update-to-release
103 changes: 48 additions & 55 deletions deps/build.jl
Original file line number Diff line number Diff line change
@@ -1,65 +1,58 @@
function find_prev_tag(tag)
project_root = (@__DIR__) |> dirname |> abspath
run(`git -C $project_root fetch --tags`)
tags = readlines(`git -C $project_root tag`)
sort!(tags)
idx = indexin([tag], tags)[1]
if idx == nothing return "NO-PREV-TAG" end
return get(tags, idx - 1, "NO-PREV-TAG")
end
###
### This file is generated by running
### ` julia generate_buildjl.jl L/Libtask/build_tarballs.jl`
### in the Yggdrasil root directory, with 2 updates:
### 1. add prefix tp products, see https://github.com/JuliaPackaging/Yggdrasil#binaryproviderjl,
### 2. products filter
###

using BinaryProvider # requires BinaryProvider 0.3.0 or later

# Parse some basic command-line arguments
const verbose = "--verbose" in ARGS
const prefix = Prefix(get([a for a in ARGS if a != "--verbose"], 1, joinpath(@__DIR__, "usr")))
products = [
LibraryProduct(prefix, ["libtask_v1_0"], :libtask_v1_0),
LibraryProduct(prefix, ["libtask_v1_1"], :libtask_v1_1),
LibraryProduct(prefix, ["libtask_v1_2"], :libtask_v1_2),
LibraryProduct(prefix, ["libtask_v1_3"], :libtask_v1_3),
]

# modify build-tmp.jl to only check correct version libs
function install_products_filter(build_file)
prod_filter = raw"""products_tmp = filter(products) do prod
products_tmp = filter(products) do prod
endswith(prod.libnames[1], "$(VERSION.major)_$(VERSION.minor)")
end
length(products_tmp) == 0 && (products_tmp = [products[end]])
products = products_tmp
Comment on lines +21 to 25
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, I guess we don't have to care about version jumps? In that case, something like

Suggested change
products_tmp = filter(products) do prod
endswith(prod.libnames[1], "$(VERSION.major)_$(VERSION.minor)")
end
length(products_tmp) == 0 && (products_tmp = [products[end]])
products = products_tmp
lastminor = findlast(products) do p
x = match(r"v(\d)_(\d)$", string(p.variable_name))
x !== nothing && VERSION.major >= parse(Int, x.captures[1]) && VERSION.minor >= parse(Int, x.captures[2])
end
products = products[[lastminor]]

would provide a the last compatible version.

"""
lines = open(build_file) do io
read(io, String) |> x -> split(x, "\n")
end
prod_in, prod_out, filter_written = false, false, false
open(build_file, "w") do io
for line in lines
if occursin("products = [", line)
prod_in = true
end
if prod_in && line == "]"
prod_out = true
end
write(io, line * "\n")
if prod_out && !filter_written
write(io, prod_filter * "\n")
filter_written = true
end
end
end
end

function include_build_script(version_str, try_prev=false)
build_script_url = "https://github.com/TuringLang/Libtask.jl/releases/download/v$(version_str)/build_LibtaskDylib.v$(version_str).jl"
build_script = joinpath(@__DIR__, "tmp-build.jl")
build_script = try download(build_script_url, build_script) catch end
if build_script == nothing && try_prev # no such file
version_str = find_prev_tag("v$version_str") |> strip |> (x) -> lstrip(x, ['v'])
return include_build_script(version_str, false)
end
install_products_filter(build_script)
include(build_script)
# Download binaries from hosted location
bin_prefix = "https://github.com/JuliaBinaryWrappers/Libtask_jll.jl/releases/download/Libtask-v0.3.0+0"

# Listing of files generated by BinaryBuilder:
download_info = Dict(
Linux(:aarch64, libc=:glibc) => ("$bin_prefix/Libtask.v0.3.0.aarch64-linux-gnu.tar.gz", "e541c0df11d48b45e9334018c014ae0d012b75f92ffbc49fc4ab6eed35593731"),
Linux(:i686, libc=:glibc) => ("$bin_prefix/Libtask.v0.3.0.i686-linux-gnu.tar.gz", "7f68bd21609adf35878f9b16f56151ab5f6f609999a40291ed270c1a4d0331a0"),
Windows(:i686) => ("$bin_prefix/Libtask.v0.3.0.i686-w64-mingw32.tar.gz", "62950b53a892fb8c699ddbb4ccc9f19b12681f64fbf85a546345d5b0f23dc8d7"),
MacOS(:x86_64) => ("$bin_prefix/Libtask.v0.3.0.x86_64-apple-darwin14.tar.gz", "fff6523dde93e6dc12b96a8bf1e3c35a78d8dba7cdc95cd0e5dd13225d1972df"),
Linux(:x86_64, libc=:glibc) => ("$bin_prefix/Libtask.v0.3.0.x86_64-linux-gnu.tar.gz", "be4c590e8f13df31855be20f31c1c4ce98f499fc5173cd35c8e8b72b79e0dc5a"),
Windows(:x86_64) => ("$bin_prefix/Libtask.v0.3.0.x86_64-w64-mingw32.tar.gz", "267473eb211e5060b98cede7f30336d2a7453542617521f27941d353dcfe42e8"),
)

# Install unsatisfied or updated dependencies:
unsatisfied = any(!satisfied(p; verbose=verbose) for p in products)
dl_info = choose_download(download_info, platform_key_abi())
if dl_info === nothing && unsatisfied
# If we don't have a compatible .tar.gz to download, complain.
# Alternatively, you could attempt to install from a separate provider,
# build from source or something even more ambitious here.
error("Your platform (\"$(Sys.MACHINE)\", parsed as \"$(triplet(platform_key_abi()))\") is not supported by this package!")
end

function get_version_str()
path = joinpath(@__DIR__, "../Project.toml")
version_reg = r"version\s*=\s*\"(.*)\""
open(path) do file
lines = readlines(file)
for line in lines
m = match(version_reg, line)
if isa(m, RegexMatch) return m.captures[1] end
end
end
# If we have a download, and we are unsatisfied (or the version we're
# trying to install is not itself installed) then load it up!
if unsatisfied || !isinstalled(dl_info...; prefix=prefix)
# Download and install binaries
install(dl_info...; prefix=prefix, force=true, verbose=verbose)
end

version_str = get_version_str() |> strip |> (x) -> lstrip(x, ['v'])
include_build_script(version_str, true)
# Write out a deps.jl file that will contain mappings for our products
write_deps_file(joinpath(@__DIR__, "deps.jl"), products, verbose=verbose)
21 changes: 0 additions & 21 deletions deps/gh-auto-tag

This file was deleted.

49 changes: 0 additions & 49 deletions deps/gh-update-to-release

This file was deleted.

21 changes: 17 additions & 4 deletions src/Libtask.jl
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,25 @@ module Libtask
export CTask, consume, produce, TArray, get, tzeros, tfill, TRef

# Try to load the binary dependency
if isfile(joinpath(@__DIR__, ".." , "deps", "deps.jl"))
include("../deps/deps.jl")
check_deps()
else
const depsjl_path = joinpath(@__DIR__, "..", "deps", "deps.jl")
if !isfile(depsjl_path)
error("Libtask is not properly installed. Please run `import Pkg; Pkg.build(\"Libtask\")`")
end
include(depsjl_path)

function __init__()
check_deps()
end

@static if VERSION < v"1.0.9999" # (-, v1.1)
const libtask = libtask_v1_0
elseif VERSION < v"1.1.9999" # [v1.1, v1.2)
const libtask = libtask_v1_1
elseif VERSION < v"1.2.9999" # [v1.2, v1.3)
const libtask = libtask_v1_2
else # [v1.3, +)
const libtask = libtask_v1_3
end

include("taskcopy.jl")
include("tarray.jl")
Expand Down
10 changes: 0 additions & 10 deletions src/taskcopy.jl
Original file line number Diff line number Diff line change
@@ -1,15 +1,5 @@
# Utility function for self-copying mechanism

@static if VERSION < v"1.0.9999" # (-, v1.1)
const libtask = libtask_v1_0
elseif VERSION < v"1.1.9999" # [v1.1, v1.2)
const libtask = libtask_v1_1
elseif VERSION < v"1.2.9999" # [v1.2, v1.3)
const libtask = libtask_v1_2
else # [v1.3, +)
const libtask = libtask_v1_3
end

n_copies() = n_copies(current_task())
n_copies(t::Task) = begin
isa(t.storage, Nothing) && (t.storage = IdDict())
Expand Down