diff options
| author | ruki <[email protected]> | 2020-09-30 22:57:09 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-09-30 22:57:09 +0800 |
| commit | 91ecb5c9596db8f176932244a49d940d594380cf (patch) | |
| tree | 97451f6498b00bb8616deea7015de864ca5caec9 /xmake/actions/require/impl/action/patch_sources.lua | |
| parent | 5313aebdb80760af9932e7bdcd606b7be56d5a82 (diff) | |
rename package/action to actions
Diffstat (limited to 'xmake/actions/require/impl/action/patch_sources.lua')
| -rw-r--r-- | xmake/actions/require/impl/action/patch_sources.lua | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/xmake/actions/require/impl/action/patch_sources.lua b/xmake/actions/require/impl/action/patch_sources.lua deleted file mode 100644 index e7e5aa467..000000000 --- a/xmake/actions/require/impl/action/patch_sources.lua +++ /dev/null @@ -1,112 +0,0 @@ ---!A cross-platform build utility based on Lua --- --- Licensed under the Apache License, Version 2.0 (the "License"); --- you may not use this file except in compliance with the License. --- You may obtain a copy of the License at --- --- http://www.apache.org/licenses/LICENSE-2.0 --- --- Unless required by applicable law or agreed to in writing, software --- distributed under the License is distributed on an "AS IS" BASIS, --- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. --- See the License for the specific language governing permissions and --- limitations under the License. --- --- Copyright (C) 2015-2020, TBOOX Open Source Group. --- --- @author ruki --- @file patch_sources.lua --- - --- imports -import("core.base.option") -import("net.http") -import("devel.git") - --- check sha256 -function _check_sha256(patch_hash, patch_file) - local ok = (patch_hash == hash.sha256(patch_file)) - if not ok and is_host("windows") then - -- `git pull` maybe will replace lf to crlf in the patch text automatically on windows. - -- so we need attempt to fix this sha256 - -- - -- @see - -- https://github.com/xmake-io/xmake-repo/pull/67 - -- https://stackoverflow.com/questions/1967370/git-replacing-lf-with-crlf - -- - local tmpfile = os.tmpfile(patch_file) - os.cp(patch_file, tmpfile) - local content = io.readfile(tmpfile, {encoding = "binary"}) - content = content:gsub('\r\n', '\n') - io.writefile(tmpfile, content, {encoding = "binary"}) - ok = (patch_hash == hash.sha256(tmpfile)) - os.rm(tmpfile) - end - return ok -end - --- do patch -function _patch(package, patch_url, patch_hash) - - -- trace - vprint("patching %s to %s-%s ..", patch_url, package:name(), package:version_str()) - - -- get the patch file - local patch_file = path.join(os.tmpdir(), "patches", package:name(), package:version_str(), (path.filename(patch_url):gsub("%?.+$", ""))) - - -- ensure lower hash - if patch_hash then - patch_hash = patch_hash:lower() - end - - -- the package file have been downloaded? - local cached = true - if option.get("force") or not os.isfile(patch_file) or not _check_sha256(patch_hash, patch_file) then - - -- no cached - cached = false - - -- attempt to remove the previous file first - os.tryrm(patch_file) - - -- download the patch file - if patch_url:find(string.ipattern("https-://")) or patch_url:find(string.ipattern("ftps-://")) then - http.download(patch_url, patch_file) - else - -- copy the patch file - if os.isfile(patch_url) then - os.cp(patch_url, patch_file) - else - local scriptdir = package:scriptdir() - if scriptdir and os.isfile(path.join(scriptdir, patch_url)) then - os.cp(path.join(scriptdir, patch_url), patch_file) - else - raise("patch(%s): not found!", patch_url) - end - end - end - - -- check hash - if patch_hash and not _check_sha256(patch_hash, patch_file) then - raise("patch(%s): unmatched checksum!", patch_url) - end - end - - -- apply the patch file - git.apply(patch_file) -end - --- patch the given package -function main(package) - - -- no patches? - local patches = package:patches() - if not patches then - return - end - - -- do all patches - for _, patchinfo in ipairs(patches) do - _patch(package, patchinfo.url, patchinfo.sha256) - end -end |
