-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
53 changed files
with
24,552 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,165 @@ | ||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying | ||
# file Copyright.txt or https://cmake.org/licensing for details. | ||
|
||
cmake_minimum_required(VERSION 3.5) | ||
|
||
function(check_file_hash has_hash hash_is_good) | ||
if("${has_hash}" STREQUAL "") | ||
message(FATAL_ERROR "has_hash Can't be empty") | ||
endif() | ||
|
||
if("${hash_is_good}" STREQUAL "") | ||
message(FATAL_ERROR "hash_is_good Can't be empty") | ||
endif() | ||
|
||
if("SHA256" STREQUAL "") | ||
# No check | ||
set("${has_hash}" FALSE PARENT_SCOPE) | ||
set("${hash_is_good}" FALSE PARENT_SCOPE) | ||
return() | ||
endif() | ||
|
||
set("${has_hash}" TRUE PARENT_SCOPE) | ||
|
||
message(STATUS "verifying file... | ||
file='/home/runner/work/deps/deps/neovim/deps/build/downloads/utf8proc/v2.9.0.tar.gz'") | ||
|
||
file("SHA256" "/home/runner/work/deps/deps/neovim/deps/build/downloads/utf8proc/v2.9.0.tar.gz" actual_value) | ||
|
||
if(NOT "${actual_value}" STREQUAL "18c1626e9fc5a2e192311e36b3010bfc698078f692888940f1fa150547abb0c1") | ||
set("${hash_is_good}" FALSE PARENT_SCOPE) | ||
message(STATUS "SHA256 hash of | ||
/home/runner/work/deps/deps/neovim/deps/build/downloads/utf8proc/v2.9.0.tar.gz | ||
does not match expected value | ||
expected: '18c1626e9fc5a2e192311e36b3010bfc698078f692888940f1fa150547abb0c1' | ||
actual: '${actual_value}'") | ||
else() | ||
set("${hash_is_good}" TRUE PARENT_SCOPE) | ||
endif() | ||
endfunction() | ||
|
||
function(sleep_before_download attempt) | ||
if(attempt EQUAL 0) | ||
return() | ||
endif() | ||
|
||
if(attempt EQUAL 1) | ||
message(STATUS "Retrying...") | ||
return() | ||
endif() | ||
|
||
set(sleep_seconds 0) | ||
|
||
if(attempt EQUAL 2) | ||
set(sleep_seconds 5) | ||
elseif(attempt EQUAL 3) | ||
set(sleep_seconds 5) | ||
elseif(attempt EQUAL 4) | ||
set(sleep_seconds 15) | ||
elseif(attempt EQUAL 5) | ||
set(sleep_seconds 60) | ||
elseif(attempt EQUAL 6) | ||
set(sleep_seconds 90) | ||
elseif(attempt EQUAL 7) | ||
set(sleep_seconds 300) | ||
else() | ||
set(sleep_seconds 1200) | ||
endif() | ||
|
||
message(STATUS "Retry after ${sleep_seconds} seconds (attempt #${attempt}) ...") | ||
|
||
execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep "${sleep_seconds}") | ||
endfunction() | ||
|
||
if(EXISTS "/home/runner/work/deps/deps/neovim/deps/build/downloads/utf8proc/v2.9.0.tar.gz") | ||
check_file_hash(has_hash hash_is_good) | ||
if(has_hash) | ||
if(hash_is_good) | ||
message(STATUS "File already exists and hash match (skip download): | ||
file='/home/runner/work/deps/deps/neovim/deps/build/downloads/utf8proc/v2.9.0.tar.gz' | ||
SHA256='18c1626e9fc5a2e192311e36b3010bfc698078f692888940f1fa150547abb0c1'" | ||
) | ||
return() | ||
else() | ||
message(STATUS "File already exists but hash mismatch. Removing...") | ||
file(REMOVE "/home/runner/work/deps/deps/neovim/deps/build/downloads/utf8proc/v2.9.0.tar.gz") | ||
endif() | ||
else() | ||
message(STATUS "File already exists but no hash specified (use URL_HASH): | ||
file='/home/runner/work/deps/deps/neovim/deps/build/downloads/utf8proc/v2.9.0.tar.gz' | ||
Old file will be removed and new file downloaded from URL." | ||
) | ||
file(REMOVE "/home/runner/work/deps/deps/neovim/deps/build/downloads/utf8proc/v2.9.0.tar.gz") | ||
endif() | ||
endif() | ||
|
||
set(retry_number 5) | ||
|
||
message(STATUS "Downloading... | ||
dst='/home/runner/work/deps/deps/neovim/deps/build/downloads/utf8proc/v2.9.0.tar.gz' | ||
timeout='none' | ||
inactivity timeout='none'" | ||
) | ||
set(download_retry_codes 7 6 8 15 28) | ||
set(skip_url_list) | ||
set(status_code) | ||
foreach(i RANGE ${retry_number}) | ||
if(status_code IN_LIST download_retry_codes) | ||
sleep_before_download(${i}) | ||
endif() | ||
foreach(url IN ITEMS [====[https://github.com/JuliaStrings/utf8proc/archive/v2.9.0.tar.gz]====]) | ||
if(NOT url IN_LIST skip_url_list) | ||
message(STATUS "Using src='${url}'") | ||
|
||
|
||
|
||
|
||
|
||
|
||
file( | ||
DOWNLOAD | ||
"${url}" "/home/runner/work/deps/deps/neovim/deps/build/downloads/utf8proc/v2.9.0.tar.gz" | ||
|
||
# no TIMEOUT | ||
# no INACTIVITY_TIMEOUT | ||
STATUS status | ||
LOG log | ||
|
||
|
||
) | ||
|
||
list(GET status 0 status_code) | ||
list(GET status 1 status_string) | ||
|
||
if(status_code EQUAL 0) | ||
check_file_hash(has_hash hash_is_good) | ||
if(has_hash AND NOT hash_is_good) | ||
message(STATUS "Hash mismatch, removing...") | ||
file(REMOVE "/home/runner/work/deps/deps/neovim/deps/build/downloads/utf8proc/v2.9.0.tar.gz") | ||
else() | ||
message(STATUS "Downloading... done") | ||
return() | ||
endif() | ||
else() | ||
string(APPEND logFailedURLs "error: downloading '${url}' failed | ||
status_code: ${status_code} | ||
status_string: ${status_string} | ||
log: | ||
--- LOG BEGIN --- | ||
${log} | ||
--- LOG END --- | ||
" | ||
) | ||
if(NOT status_code IN_LIST download_retry_codes) | ||
list(APPEND skip_url_list "${url}") | ||
break() | ||
endif() | ||
endif() | ||
endif() | ||
endforeach() | ||
endforeach() | ||
|
||
message(FATAL_ERROR "Each download failed! | ||
${logFailedURLs} | ||
" | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying | ||
# file Copyright.txt or https://cmake.org/licensing for details. | ||
|
||
cmake_minimum_required(VERSION 3.5) | ||
|
||
# Make file names absolute: | ||
# | ||
get_filename_component(filename "/home/runner/work/deps/deps/neovim/deps/build/downloads/utf8proc/v2.9.0.tar.gz" ABSOLUTE) | ||
get_filename_component(directory "/home/runner/work/deps/deps/neovim/deps/build/src/utf8proc" ABSOLUTE) | ||
|
||
message(STATUS "extracting... | ||
src='${filename}' | ||
dst='${directory}'" | ||
) | ||
|
||
if(NOT EXISTS "${filename}") | ||
message(FATAL_ERROR "File to extract does not exist: '${filename}'") | ||
endif() | ||
|
||
# Prepare a space for extracting: | ||
# | ||
set(i 1234) | ||
while(EXISTS "${directory}/../ex-utf8proc${i}") | ||
math(EXPR i "${i} + 1") | ||
endwhile() | ||
set(ut_dir "${directory}/../ex-utf8proc${i}") | ||
file(MAKE_DIRECTORY "${ut_dir}") | ||
|
||
# Extract it: | ||
# | ||
message(STATUS "extracting... [tar xfz]") | ||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xfz ${filename} --touch | ||
WORKING_DIRECTORY ${ut_dir} | ||
RESULT_VARIABLE rv | ||
) | ||
|
||
if(NOT rv EQUAL 0) | ||
message(STATUS "extracting... [error clean up]") | ||
file(REMOVE_RECURSE "${ut_dir}") | ||
message(FATAL_ERROR "Extract of '${filename}' failed") | ||
endif() | ||
|
||
# Analyze what came out of the tar file: | ||
# | ||
message(STATUS "extracting... [analysis]") | ||
file(GLOB contents "${ut_dir}/*") | ||
list(REMOVE_ITEM contents "${ut_dir}/.DS_Store") | ||
list(LENGTH contents n) | ||
if(NOT n EQUAL 1 OR NOT IS_DIRECTORY "${contents}") | ||
set(contents "${ut_dir}") | ||
endif() | ||
|
||
# Move "the one" directory to the final directory: | ||
# | ||
message(STATUS "extracting... [rename]") | ||
file(REMOVE_RECURSE ${directory}) | ||
get_filename_component(contents ${contents} ABSOLUTE) | ||
file(RENAME ${contents} ${directory}) | ||
|
||
# Clean up: | ||
# | ||
message(STATUS "extracting... [clean up]") | ||
file(REMOVE_RECURSE "${ut_dir}") | ||
|
||
message(STATUS "extracting... done") |
Empty file.
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# This is a generated file and its contents are an internal implementation detail. | ||
# The update step will be re-executed if anything in this file changes. | ||
# No other meaning or use of this file is supported. | ||
|
||
command= | ||
work_dir= |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# This is a generated file and its contents are an internal implementation detail. | ||
# The patch step will be re-executed if anything in this file changes. | ||
# No other meaning or use of this file is supported. | ||
|
||
command (connected)= | ||
command (disconnected)= | ||
work_dir= |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# This is a generated file and its contents are an internal implementation detail. | ||
# The download step will be re-executed if anything in this file changes. | ||
# No other meaning or use of this file is supported. | ||
|
||
method=url | ||
command=/usr/local/bin/cmake;-P;/home/runner/work/deps/deps/neovim/deps/build/src/utf8proc-stamp/download-utf8proc.cmake;COMMAND;/usr/local/bin/cmake;-P;/home/runner/work/deps/deps/neovim/deps/build/src/utf8proc-stamp/verify-utf8proc.cmake;COMMAND;/usr/local/bin/cmake;-P;/home/runner/work/deps/deps/neovim/deps/build/src/utf8proc-stamp/extract-utf8proc.cmake | ||
source_dir=/home/runner/work/deps/deps/neovim/deps/build/src/utf8proc | ||
work_dir=/home/runner/work/deps/deps/neovim/deps/build/src | ||
url(s)=https://github.com/JuliaStrings/utf8proc/archive/v2.9.0.tar.gz | ||
hash=SHA256=18c1626e9fc5a2e192311e36b3010bfc698078f692888940f1fa150547abb0c1 | ||
no_extract= | ||
|
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
name: CIFuzz | ||
on: [pull_request] | ||
jobs: | ||
Fuzzing: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Build Fuzzers | ||
uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master | ||
with: | ||
oss-fuzz-project-name: 'utf8proc' | ||
dry-run: false | ||
- name: Run Fuzzers | ||
uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master | ||
with: | ||
oss-fuzz-project-name: 'utf8proc' | ||
fuzz-seconds: 600 | ||
dry-run: false | ||
- name: Upload Crash | ||
uses: actions/upload-artifact@v1 | ||
if: failure() | ||
with: | ||
name: artifacts | ||
path: ./out/artifacts |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
name: CMake | ||
|
||
on: | ||
push: | ||
branches: | ||
- master | ||
- 'release-*' | ||
pull_request: | ||
# run on all pr | ||
|
||
jobs: | ||
build: | ||
strategy: | ||
matrix: | ||
os: [ubuntu-latest, windows-latest, macOS-latest] | ||
shared: ["ON", "OFF"] | ||
runs-on: ${{ matrix.os }} | ||
name: ${{ matrix.os }} - shared=${{ matrix.shared }} | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- name: Build | ||
run: | | ||
mkdir build | ||
cmake -S . -B build -DBUILD_SHARED_LIBS=${{ matrix.shared }} -DUTF8PROC_ENABLE_TESTING=ON | ||
cmake --build build | ||
- name: Run Test | ||
run: ctest --test-dir build -V | ||
- name: Upload shared lib | ||
if: matrix.shared == 'ON' | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: ${{ matrix.os }} | ||
path: | | ||
build/libutf8proc.* | ||
build/Debug/utf8proc.* | ||
mingw: | ||
strategy: | ||
matrix: | ||
os: [windows-latest] | ||
shared: ["ON", "OFF"] | ||
runs-on: ${{ matrix.os }} | ||
name: mingw64 - shared=${{ matrix.shared }} | ||
defaults: | ||
run: | ||
shell: msys2 {0} | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- uses: msys2/setup-msys2@v2 | ||
with: | ||
install: gcc make mingw-w64-x86_64-cmake | ||
- name: Build | ||
run: | | ||
mkdir build | ||
cmake -S . -B build -DBUILD_SHARED_LIBS=${{ matrix.shared }} -DUTF8PROC_ENABLE_TESTING=ON -G'MSYS Makefiles' | ||
cmake --build build | ||
- name: Run Test | ||
run: ctest --test-dir build -V | ||
- name: Upload shared lib | ||
if: matrix.shared == 'ON' | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: windows-mingw64 | ||
path: build/libutf8proc.* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
name: Make | ||
|
||
on: | ||
push: | ||
branches: | ||
- master | ||
- 'release-*' | ||
pull_request: | ||
# run on all pr | ||
|
||
jobs: | ||
build: | ||
strategy: | ||
matrix: | ||
os: [ubuntu-latest, macOS-latest] | ||
runs-on: ${{ matrix.os }} | ||
name: ${{ matrix.os }} | ||
steps: | ||
- uses: actions/checkout@v2 | ||
# TODO: update makefile to check MANIFEST | ||
# - name: Install dependencies (MacOS) | ||
# if: matrix.config.os == 'macos-latest' | ||
# run: brew install ruby findutils | ||
|
||
- name: Check MANIFEST | ||
if: matrix.config.os == 'ubuntu-latest' | ||
run: make manifest && diff MANIFEST.new MANIFEST | ||
- name: Run Test | ||
run: make check | ||
- name: Check utf8proc_data.c | ||
run: make data && diff data/utf8proc_data.c.new utf8proc_data.c | ||
- name: Clean | ||
run: make clean && git status --ignored --porcelain && test -z "$(git status --ignored --porcelain)" | ||
|
||
- name: Make lib | ||
run: make | ||
- name: Upload shared lib | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: make-${{ matrix.os }} | ||
path: libutf8proc.* |
Oops, something went wrong.