chore: Make build script use a specific .dotenv
This commit is contained in:
parent
27d63f467c
commit
c462442221
3
.env.build.linux.example
Normal file
3
.env.build.linux.example
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
SESAM_FSV_VERSION=1.40.13
|
||||||
|
SESAM_FSV_LIB_PATH=/opt/santesocial/fsv/${SESAM_FSV_VERSION}/lib
|
||||||
|
SESAM_FSV_SSVLIB=ssvlux64
|
3
.env.build.win.example
Normal file
3
.env.build.win.example
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
SESAM_FSV_VERSION=1.40.13
|
||||||
|
SESAM_FSV_LIB_PATH=C:/Program Files/santesocial/fsv/${SESAM_FSV_VERSION}/lib
|
||||||
|
SESAM_FSV_SSVLIB=ssvw64
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,5 +1,6 @@
|
|||||||
# Ignore Rust target directory
|
# Ignore Rust target directory
|
||||||
/target
|
/target
|
||||||
|
|
||||||
# Ignore .env file
|
# Ignore .env files
|
||||||
.env
|
.env
|
||||||
|
.env.build
|
@ -7,3 +7,6 @@ build = "build.rs"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
dotenv = "0.15"
|
dotenv = "0.15"
|
||||||
libc = "0.2"
|
libc = "0.2"
|
||||||
|
|
||||||
|
[build-dependencies]
|
||||||
|
dotenv = "0.15"
|
||||||
|
25
README.md
25
README.md
@ -1,7 +1,7 @@
|
|||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- Installer le [package FSV](https://industriels.sesam-vitale.fr/group/fournitures-sesam-vitale)
|
- Installer le [package FSV](https://industriels.sesam-vitale.fr/group/fournitures-sesam-vitale)
|
||||||
- Les librairies dynamiques (.lib, .dll, ...) fournies ne sont pas installés dans les emplacements standard du système, il faudra donc, à la compilation et à l'exécution, fournir le chemin d'installation de ces librairies
|
- Les librairies dynamiques (.lib, .dll, ...) fournies ne sont pas installés dans les emplacements standard du système, il faudra donc configurer leur chemin d'installation dans le fichier de configuration `.env.build` (voir ci-dessous)
|
||||||
- Le détail des chemins d'installation est donné dans la documentation du package FSV `fsv-mi-004_pack-FSV1.40.14_V2.3.pdf`
|
- Le détail des chemins d'installation est donné dans la documentation du package FSV `fsv-mi-004_pack-FSV1.40.14_V2.3.pdf`
|
||||||
- Linux - par défaut : `/opt/santesocial/fsv/1.40.13/lib`
|
- Linux - par défaut : `/opt/santesocial/fsv/1.40.13/lib`
|
||||||
- Windows - par défaut : `C:\Program Files\santesocial\santesocial\fsv\1.40.14\lib` (ou dans Program Files (x86) si c'est le package 32bits qui a été installé)
|
- Windows - par défaut : `C:\Program Files\santesocial\santesocial\fsv\1.40.14\lib` (ou dans Program Files (x86) si c'est le package 32bits qui a été installé)
|
||||||
@ -13,11 +13,10 @@
|
|||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
|
||||||
- Créer et éditer un fichier `.env` en s'inspirant d'un des fichiers d'exemple (`.env.linux.example`, `.env.win.example`...)
|
- Créer et éditer le fichier de configuration de build `.env.build` en s'inspirant d'un des fichiers d'exemple (`.env.build.linux.example`, `.env.build.win.example`...)
|
||||||
|
- Ce fichier est nécessaire pour le build du package Rust
|
||||||
### Windows
|
- Créer et éditer le fichier de configuration de l'exécution `.env` en s'inspirant d'un des fichiers d'exemple (`.env.linux.example`, `.env.win.example`...)
|
||||||
|
- Ce fichier est nécessaire pour l'exécution du package Rust compilé, et doit donc être présent aux côtés de l'exécutable généré, le cas échéant
|
||||||
- Ajouter le chemin d'installation des librairies dynamiques fournies par le package FSV dans le `PATH`
|
|
||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
@ -42,20 +41,6 @@ Pour nettoyer le dossier `./lib` :
|
|||||||
|
|
||||||
`cargo build`
|
`cargo build`
|
||||||
|
|
||||||
Comme précisé précédemment, il peut être nécessaire de fournir le chemin d'installation des librairies dynamiques fournies par le package FSV à la compilation, en utilisant la variable d'environnement `RUSTFLAGS`.
|
|
||||||
|
|
||||||
- Par exemple
|
|
||||||
- Linux :`RUSTFLAGS="-L /opt/santesocial/fsv/1.40.13/lib" cargo build`
|
|
||||||
- Windows : `cargo build` (pas besoin de `RUSTFLAGS` à condition que le chemin d'installation des librairies dynamiques soit dans le `PATH`)
|
|
||||||
|
|
||||||
## Run
|
## Run
|
||||||
|
|
||||||
`cargo run`
|
`cargo run`
|
||||||
|
|
||||||
Comme précisé précédemment, il peut être nécessaire de fournir le chemin d'installation des librairies dynamiques fournies par le package FSV à l'exécution.
|
|
||||||
|
|
||||||
La commande `cargo run` provoquant également un build, il faudra également fournir la variable d'environnement `RUSTFLAGS` le cas échéant.
|
|
||||||
|
|
||||||
- Par exemple
|
|
||||||
- Linux : `RUSTFLAGS="-L /opt/santesocial/fsv/1.40.13/lib" LD_LIBRARY_PATH="/opt/santesocial/fsv/1.40.13/lib" cargo run`
|
|
||||||
- Windows : `cargo run` (pas besoin de `RUSTFLAGS` ni de `PATH` à condition que le chemin d'installation des librairies dynamiques soit dans le `PATH`)
|
|
||||||
|
31
build.rs
31
build.rs
@ -1,20 +1,27 @@
|
|||||||
|
extern crate dotenv;
|
||||||
|
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
dotenv::from_filename(".env.build").ok();
|
||||||
|
|
||||||
|
let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
|
||||||
|
|
||||||
|
let static_lib_path = PathBuf::from(manifest_dir).join("lib");
|
||||||
|
println!("cargo::rustc-link-search=native={}", static_lib_path.display());
|
||||||
|
println!("cargo::rustc-link-lib=static=p4pillondebuglib");
|
||||||
|
|
||||||
|
let fsv_lib_path = PathBuf::from(env::var("SESAM_FSV_LIB_PATH").unwrap());
|
||||||
|
println!("cargo::rustc-link-search=native={}", fsv_lib_path.display());
|
||||||
|
println!("cargo::rustc-link-lib=dylib={}", env::var("SESAM_FSV_SSVLIB").unwrap());
|
||||||
|
|
||||||
if cfg!(target_os = "windows") {
|
if cfg!(target_os = "windows") {
|
||||||
let static_lib_path = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()).join("lib");
|
// Get PATH value
|
||||||
println!("cargo::rustc-link-search=native={}", static_lib_path.display());
|
let path = env::var("PATH").unwrap_or(String::new());
|
||||||
|
println!("PATH={}", path);
|
||||||
println!("cargo::rustc-link-lib=static=p4pillondebuglib");
|
println!("cargo:rustc-env=PATH={}", fsv_lib_path.display());
|
||||||
println!("cargo::rustc-link-lib=dylib=ssvw64");
|
|
||||||
} else if cfg!(target_os = "linux") {
|
} else if cfg!(target_os = "linux") {
|
||||||
let static_lib_path = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()).join("lib");
|
println!("cargo:rustc-env=LD_LIBRARY_PATH={}", fsv_lib_path.display());
|
||||||
println!("cargo::rustc-link-search=native={}", static_lib_path.display());
|
|
||||||
println!("cargo::rustc-link-lib=static=p4pillondebuglib");
|
|
||||||
|
|
||||||
// let dynamic_lib_path = PathBuf::from("/opt/santesocial/fsv/1.40.13/lib");
|
|
||||||
// println!("cargo::rustc-link-search=native={}", dynamic_lib_path.display());
|
|
||||||
println!("cargo::rustc-link-lib=dylib=ssvlux64");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user