mirror of
https://github.com/serokell/xrefcheck.git
synced 2024-09-11 13:37:36 +03:00
Add a windows build
This commit is contained in:
parent
df59d2c461
commit
76b7ae101b
@ -9,6 +9,10 @@ steps:
|
|||||||
label: Executable
|
label: Executable
|
||||||
artifact_paths:
|
artifact_paths:
|
||||||
- "result/bin/xrefcheck"
|
- "result/bin/xrefcheck"
|
||||||
|
- command: nix-build --argstr platform windows
|
||||||
|
label: Windows executable
|
||||||
|
artifact_paths:
|
||||||
|
- "result/bin/*"
|
||||||
- command: nix run -f. -c xrefcheck
|
- command: nix run -f. -c xrefcheck
|
||||||
label: Xrefcheck itself
|
label: Xrefcheck itself
|
||||||
- command: nix run -f $(nix eval --raw '((import ./nix/sources.nix).nixpkgs)') reuse -c reuse lint
|
- command: nix run -f $(nix eval --raw '((import ./nix/sources.nix).nixpkgs)') reuse -c reuse lint
|
||||||
|
@ -2,4 +2,6 @@
|
|||||||
#
|
#
|
||||||
# SPDX-License-Identifier: MPL-2.0
|
# SPDX-License-Identifier: MPL-2.0
|
||||||
|
|
||||||
(import ./xrefcheck.nix { static = true; }).components.exes.xrefcheck
|
{ platform ? "linux-static" }:
|
||||||
|
|
||||||
|
(import ./xrefcheck.nix { ${platform} = true; }).components.exes.xrefcheck
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
{ pkgs ? import (import ../nix/sources.nix).nixpkgs { } }:
|
{ pkgs ? import (import ../nix/sources.nix).nixpkgs { } }:
|
||||||
let
|
let
|
||||||
executable =
|
executable =
|
||||||
(import ../xrefcheck.nix { static = true; }).components.exes.xrefcheck;
|
(import ../xrefcheck.nix { linux-static = true; }).components.exes.xrefcheck;
|
||||||
binOnly = pkgs.runCommand "xrefcheck-bin" { } ''
|
binOnly = pkgs.runCommand "xrefcheck-bin" { } ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
cp ${executable}/bin/xrefcheck $out/bin
|
cp ${executable}/bin/xrefcheck $out/bin
|
||||||
|
@ -68,6 +68,7 @@ dependencies:
|
|||||||
- directory-tree
|
- directory-tree
|
||||||
- directory
|
- directory
|
||||||
- filepath
|
- filepath
|
||||||
|
- file-embed
|
||||||
- fmt
|
- fmt
|
||||||
- Glob
|
- Glob
|
||||||
- http-client
|
- http-client
|
||||||
|
@ -4,8 +4,26 @@
|
|||||||
|
|
||||||
{ pkgs ? import (import ../nix/sources.nix).nixpkgs { }, timestamp }:
|
{ pkgs ? import (import ../nix/sources.nix).nixpkgs { }, timestamp }:
|
||||||
let
|
let
|
||||||
executable =
|
xrefcheck-x86_64-linux =
|
||||||
(import ../xrefcheck.nix { static = true; }).components.exes.xrefcheck;
|
(import ../xrefcheck.nix { linux-static = true; }).components.exes.xrefcheck;
|
||||||
|
|
||||||
|
xrefcheck-x86_64-windows =
|
||||||
|
(import ../xrefcheck.nix { windows = true; }).components.exes.xrefcheck;
|
||||||
|
|
||||||
|
mkZip = { name, paths, compression ? 5 }:
|
||||||
|
pkgs.stdenvNoCC.mkDerivation {
|
||||||
|
inherit name;
|
||||||
|
buildInputs = [ pkgs.zip ];
|
||||||
|
buildCommand = ''
|
||||||
|
mkdir -p "$out"
|
||||||
|
zip "$out/$name.zip" -jr ${toString paths} -${toString compression}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
xrefcheck-x86_64-windows-zip = mkZip {
|
||||||
|
name = "xrefcheck-x86_64-windows";
|
||||||
|
paths = [ "${xrefcheck-x86_64-windows}/bin" ];
|
||||||
|
};
|
||||||
|
|
||||||
releaseNotes = pkgs.writeText "release-notes.md" ''
|
releaseNotes = pkgs.writeText "release-notes.md" ''
|
||||||
Automatic release on ${timestamp}
|
Automatic release on ${timestamp}
|
||||||
@ -17,6 +35,10 @@ in pkgs.linkFarm "xrefcheck-release" [
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "xrefcheck-x86_64-linux";
|
name = "xrefcheck-x86_64-linux";
|
||||||
path = "${executable}/bin/xrefcheck";
|
path = "${xrefcheck-x86_64-linux}/bin/xrefcheck";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "xrefcheck-x86_64-windows.zip";
|
||||||
|
path = "${xrefcheck-x86_64-windows-zip}/xrefcheck-x86_64-windows.zip";
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -11,9 +11,11 @@ import Data.Aeson.Options (defaultOptions)
|
|||||||
import Data.Aeson.TH (deriveFromJSON)
|
import Data.Aeson.TH (deriveFromJSON)
|
||||||
import Data.Yaml (FromJSON (..), decodeEither', prettyPrintParseException, withText)
|
import Data.Yaml (FromJSON (..), decodeEither', prettyPrintParseException, withText)
|
||||||
import Instances.TH.Lift ()
|
import Instances.TH.Lift ()
|
||||||
import qualified Language.Haskell.TH.Syntax as TH
|
|
||||||
import System.FilePath ((</>))
|
-- FIXME: Use </> from System.FilePath
|
||||||
import TH.RelativePaths (qReadFileBS)
|
-- </> from Posix is used only because we cross-compile to Windows and \ doesn't work on Linux
|
||||||
|
import System.FilePath.Posix ((</>))
|
||||||
|
import Data.FileEmbed (embedFile)
|
||||||
import Time (KnownRatName, Second, Time, unitsP)
|
import Time (KnownRatName, Second, Time, unitsP)
|
||||||
|
|
||||||
import Xrefcheck.System (RelGlobPattern)
|
import Xrefcheck.System (RelGlobPattern)
|
||||||
@ -50,7 +52,7 @@ data VerifyConfig = VerifyConfig
|
|||||||
-- would be lost.
|
-- would be lost.
|
||||||
defConfigText :: ByteString
|
defConfigText :: ByteString
|
||||||
defConfigText =
|
defConfigText =
|
||||||
$(TH.lift =<< qReadFileBS ("src-files" </> "def-config.yaml"))
|
$(embedFile ("src-files" </> "def-config.yaml"))
|
||||||
|
|
||||||
defConfig :: HasCallStack => Config
|
defConfig :: HasCallStack => Config
|
||||||
defConfig =
|
defConfig =
|
||||||
|
@ -2,18 +2,18 @@
|
|||||||
#
|
#
|
||||||
# SPDX-License-Identifier: MPL-2.0
|
# SPDX-License-Identifier: MPL-2.0
|
||||||
|
|
||||||
{ static ? false }:
|
{ linux ? false, linux-static ? false, windows ? false }:
|
||||||
let
|
let
|
||||||
sources = import ./nix/sources.nix;
|
sources = import ./nix/sources.nix;
|
||||||
nixpkgs = import sources.nixpkgs (import sources."haskell.nix" {}).nixpkgsArgs;
|
nixpkgs = import sources.nixpkgs (import sources."haskell.nix" {}).nixpkgsArgs;
|
||||||
pkgs = if static then nixpkgs.pkgsCross.musl64 else nixpkgs;
|
pkgs = if linux-static then nixpkgs.pkgsCross.musl64 else if windows then nixpkgs.pkgsCross.mingwW64 else nixpkgs;
|
||||||
project = pkgs.haskell-nix.stackProject {
|
project = pkgs.haskell-nix.stackProject {
|
||||||
src = pkgs.haskell-nix.haskellLib.cleanGit { src = ./.; };
|
src = pkgs.haskell-nix.haskellLib.cleanGit { src = ./.; };
|
||||||
modules = [{
|
modules = [{
|
||||||
packages.xrefcheck = {
|
packages.xrefcheck = {
|
||||||
package.ghcOptions = "-Werror";
|
package.ghcOptions = "-Werror";
|
||||||
configureFlags = with pkgs;
|
configureFlags = with pkgs;
|
||||||
lib.optionals static [
|
lib.optionals linux-static [
|
||||||
"--ghc-option=-optl=-L${zlib.static}/lib"
|
"--ghc-option=-optl=-L${zlib.static}/lib"
|
||||||
"--ghc-option=-optl=-L${nixpkgs.pkgsStatic.numactl}/lib"
|
"--ghc-option=-optl=-L${nixpkgs.pkgsStatic.numactl}/lib"
|
||||||
];
|
];
|
||||||
|
Loading…
Reference in New Issue
Block a user