mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-15 01:12:56 +03:00
Get the Nix build working. (#335)
V3_GIT_ORIGIN_REV_ID: e70e2a42b2445b4bcf4e9ee7db771b475c32d2f9
This commit is contained in:
parent
dea588255b
commit
078b0d3487
@ -1,3 +1,7 @@
|
|||||||
|
use std::fmt::Display;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
use axum::{
|
use axum::{
|
||||||
body::HttpBody,
|
body::HttpBody,
|
||||||
extract::State,
|
extract::State,
|
||||||
@ -8,23 +12,22 @@ use axum::{
|
|||||||
Extension, Json, Router,
|
Extension, Json, Router,
|
||||||
};
|
};
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
|
|
||||||
use ::engine::authentication::{AuthConfig, AuthConfig::V1 as V1AuthConfig, AuthModeConfig};
|
|
||||||
use engine::{schema::GDS, VERSION};
|
|
||||||
use hasura_authn_core::Session;
|
|
||||||
use hasura_authn_jwt::auth as jwt_auth;
|
|
||||||
use hasura_authn_jwt::jwt;
|
|
||||||
use hasura_authn_webhook::webhook;
|
|
||||||
use lang_graphql as gql;
|
|
||||||
use std::path::PathBuf;
|
|
||||||
use std::{fmt::Display, sync::Arc};
|
|
||||||
use tower_http::trace::TraceLayer;
|
use tower_http::trace::TraceLayer;
|
||||||
use tracing_util::{
|
use tracing_util::{
|
||||||
add_event_on_active_span, set_status_on_current_span, AttributeVisibility, ErrorVisibility,
|
add_event_on_active_span, set_status_on_current_span, AttributeVisibility, ErrorVisibility,
|
||||||
SpanVisibility, TraceableError, TraceableHttpResponse,
|
SpanVisibility, TraceableError, TraceableHttpResponse,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
use engine::authentication::{AuthConfig, AuthConfig::V1 as V1AuthConfig, AuthModeConfig};
|
||||||
|
use engine::{schema::GDS, VERSION};
|
||||||
|
use hasura_authn_core::Session;
|
||||||
|
use hasura_authn_jwt::auth as jwt_auth;
|
||||||
|
use hasura_authn_jwt::jwt;
|
||||||
|
use hasura_authn_webhook::webhook;
|
||||||
|
use lang_graphql as gql;
|
||||||
|
|
||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
|
#[command(version = VERSION)]
|
||||||
struct ServerOptions {
|
struct ServerOptions {
|
||||||
#[arg(long, value_name = "METADATA_FILE", env = "METADATA_PATH")]
|
#[arg(long, value_name = "METADATA_FILE", env = "METADATA_PATH")]
|
||||||
metadata_path: PathBuf,
|
metadata_path: PathBuf,
|
||||||
|
@ -1,12 +1,27 @@
|
|||||||
fn main() {
|
fn main() -> Result<(), String> {
|
||||||
// Cargo sets the PROFILE environment variable
|
// Ensure that we rebuild if the version is specified.
|
||||||
let profile = std::env::var("PROFILE").unwrap();
|
println!("cargo:rerun-if-env-changed=RELEASE_VERSION");
|
||||||
if profile == "release" {
|
|
||||||
// For release builds (cargo build --release ...), set the version to the git commit short
|
// On release builds, use the Git commit as a backup if the version is not set.
|
||||||
let commit_short = build_data::get_git_commit_short().unwrap();
|
// On debug builds, use "dev".
|
||||||
println!("cargo:rustc-env=CARGO_V3_ENGINE_VERSION={}", commit_short);
|
// If we fail to get the Git information, fail.
|
||||||
|
let build_profile = std::env::var("PROFILE").map_err(|err| err.to_string())?;
|
||||||
|
let release_version = if build_profile == "release" {
|
||||||
|
match option_env!("RELEASE_VERSION") {
|
||||||
|
Some(version) => version.to_string(),
|
||||||
|
None => {
|
||||||
|
let git_commit_ref = build_data::get_git_commit_short()?;
|
||||||
|
let git_dirty = build_data::get_git_dirty().unwrap_or(false);
|
||||||
|
if git_dirty {
|
||||||
|
format!("{git_commit_ref}-dirty")
|
||||||
} else {
|
} else {
|
||||||
// For non-release builds, set the version to 'dev'
|
git_commit_ref
|
||||||
println!("cargo:rustc-env=CARGO_V3_ENGINE_VERSION=dev");
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
"dev".to_string()
|
||||||
|
};
|
||||||
|
println!("cargo:rustc-env=CARGO_V3_ENGINE_VERSION={release_version}");
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
17
v3/flake.nix
17
v3/flake.nix
@ -33,9 +33,24 @@
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
formatter = pkgs.nixpkgs-fmt;
|
formatter = pkgs.nixpkgs-fmt;
|
||||||
|
|
||||||
packages = {
|
packages = {
|
||||||
# a binary for whichever is the local computer
|
# a binary for whichever is the local computer
|
||||||
default = rust.callPackage ./nix/app.nix { };
|
default = rust.callPackage ./nix/app.nix {
|
||||||
|
version = if self ? "dirtyRev" then self.dirtyShortRev else self.shortRev;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
apps = {
|
||||||
|
default = self.apps.${localSystem}.engine;
|
||||||
|
engine = flake-utils.lib.mkApp {
|
||||||
|
drv = self.packages.${localSystem}.default;
|
||||||
|
name = "engine";
|
||||||
|
};
|
||||||
|
agent = flake-utils.lib.mkApp {
|
||||||
|
drv = self.packages.${localSystem}.default;
|
||||||
|
name = "engine";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
devShells = {
|
devShells = {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# This is a function that returns a derivation for the compiled Rust project.
|
# This is a function that returns a derivation for the compiled Rust project.
|
||||||
{ craneLib
|
{ craneLib
|
||||||
, lib
|
, lib
|
||||||
|
, version
|
||||||
, stdenv
|
, stdenv
|
||||||
, openssl
|
, openssl
|
||||||
, libiconv
|
, libiconv
|
||||||
@ -14,11 +15,13 @@ let
|
|||||||
|
|
||||||
src =
|
src =
|
||||||
let
|
let
|
||||||
isJsonFile = path: _type: builtins.match ".*json" path != null;
|
|
||||||
isGraphqlFile = path: _type: builtins.match ".*graphql" path != null;
|
isGraphqlFile = path: _type: builtins.match ".*graphql" path != null;
|
||||||
|
isHtmlFile = path: _type: builtins.match ".*html" path != null;
|
||||||
|
isJsonFile = path: _type: builtins.match ".*json" path != null;
|
||||||
isSourceFile = path: type:
|
isSourceFile = path: type:
|
||||||
isJsonFile path type
|
isGraphqlFile path type
|
||||||
|| isGraphqlFile path type
|
|| isHtmlFile path type
|
||||||
|
|| isJsonFile path type
|
||||||
|| craneLib.filterCargoSources path type;
|
|| craneLib.filterCargoSources path type;
|
||||||
in
|
in
|
||||||
lib.cleanSourceWith { src = craneLib.path ./..; filter = isSourceFile; };
|
lib.cleanSourceWith { src = craneLib.path ./..; filter = isSourceFile; };
|
||||||
@ -45,4 +48,5 @@ craneLib.buildPackage
|
|||||||
(buildArgs // {
|
(buildArgs // {
|
||||||
inherit cargoArtifacts;
|
inherit cargoArtifacts;
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
RELEASE_VERSION = version;
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user