latest pushes
This commit is contained in:
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
publish.sh
|
||||||
|
tests
|
||||||
|
setup.py
|
||||||
|
dist
|
||||||
|
src/bellande_format.egg-info
|
26
README.md
26
README.md
@ -1,3 +1,29 @@
|
|||||||
# Bellande Rust Executable
|
# Bellande Rust Executable
|
||||||
|
|
||||||
## Bellande Rust Executable is a library that makes rust code into an executable (BRE) library
|
## Bellande Rust Executable is a library that makes rust code into an executable (BRE) library
|
||||||
|
|
||||||
|
|
||||||
|
## Website PYPI
|
||||||
|
- https://pypi.org/project/bellande_rust_executable
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
- `$ pip install bellande_rust_executable`
|
||||||
|
|
||||||
|
### Upgrade (if not upgraded)
|
||||||
|
- `$ pip install --upgrade bellande_rust_executable`
|
||||||
|
|
||||||
|
```
|
||||||
|
Name: bellande_rust_executable
|
||||||
|
Version: 0.1.0
|
||||||
|
Summary: File type Formats
|
||||||
|
Home-page: github.com/RonaldsonBellande/bellande_rust_executable
|
||||||
|
Author: Ronaldson Bellande
|
||||||
|
Author-email: ronaldsonbellande@gmail.com
|
||||||
|
License: GNU General Public License v3.0
|
||||||
|
Requires: numpy
|
||||||
|
Required-by:
|
||||||
|
```
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Bellande Rust Executable Packages is distributed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html), see [LICENSE](https://github.com/Algorithm-Model-Research/bellande_rust_executable/blob/main/LICENSE) and [NOTICE](https://github.com/Algorithm-Model-Research/bellande_rust_executable/blob/main/LICENSE) for more information.
|
||||||
|
3
git_scripts/.gitignore
vendored
Normal file
3
git_scripts/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
fix_errors.sh
|
||||||
|
push.sh
|
||||||
|
repository_recal.sh
|
92
src/bellande_rust_executable.py
Normal file
92
src/bellande_rust_executable.py
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
# Copyright (C) 2024 Bellande Architecture Mechanism Research Innovation Center, Ronaldson Bellande
|
||||||
|
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import argparse
|
||||||
|
import toml
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
def parse_dependencies(dep_file):
|
||||||
|
if not os.path.exists(dep_file):
|
||||||
|
print(f"No {dep_file} file found.")
|
||||||
|
return {}
|
||||||
|
dependencies = {}
|
||||||
|
with open(dep_file, 'r') as file:
|
||||||
|
for line in file:
|
||||||
|
parts = line.strip().split('=')
|
||||||
|
if len(parts) == 2:
|
||||||
|
dependencies[parts[0].strip()] = parts[1].strip().strip('"')
|
||||||
|
return dependencies
|
||||||
|
|
||||||
|
def create_cargo_project(rust_file, dependencies, output_file, suppress_warnings):
|
||||||
|
with tempfile.TemporaryDirectory() as temp_dir:
|
||||||
|
project_name = "temp_rust_project"
|
||||||
|
subprocess.run(['cargo', 'new', '--bin', project_name], cwd=temp_dir, check=True)
|
||||||
|
project_dir = os.path.join(temp_dir, project_name)
|
||||||
|
|
||||||
|
shutil.copy(rust_file, os.path.join(project_dir, 'src', 'main.rs'))
|
||||||
|
|
||||||
|
cargo_toml_path = os.path.join(project_dir, 'Cargo.toml')
|
||||||
|
with open(cargo_toml_path, 'r') as f:
|
||||||
|
cargo_toml = toml.load(f)
|
||||||
|
|
||||||
|
cargo_toml['dependencies'] = dependencies
|
||||||
|
|
||||||
|
with open(cargo_toml_path, 'w') as f:
|
||||||
|
toml.dump(cargo_toml, f)
|
||||||
|
|
||||||
|
print("Building Rust project...")
|
||||||
|
cargo_command = ['cargo', 'build', '--release']
|
||||||
|
if suppress_warnings:
|
||||||
|
cargo_command.append('--quiet')
|
||||||
|
result = subprocess.run(cargo_command, cwd=project_dir, capture_output=True, text=True)
|
||||||
|
print(f"Cargo build output:\n{result.stdout}\n{result.stderr}")
|
||||||
|
|
||||||
|
if result.returncode == 0:
|
||||||
|
os.makedirs(os.path.dirname(output_file), exist_ok=True)
|
||||||
|
|
||||||
|
binary_path = os.path.join(project_dir, 'target', 'release', project_name)
|
||||||
|
shutil.copy(binary_path, output_file)
|
||||||
|
print(f"Rust code compiled successfully. Output file: {output_file}")
|
||||||
|
else:
|
||||||
|
print(f"Cargo build failed with return code {result.returncode}")
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description="Compile Rust code with dependencies using Cargo")
|
||||||
|
parser.add_argument("-d", "--dep-file", default="dependencies.txt", help="Path to the dependencies file (default: dependencies.txt)")
|
||||||
|
parser.add_argument("-s", "--source", default="src/main.rs", help="Path to the Rust source file (default: src/main.rs)")
|
||||||
|
parser.add_argument("-o", "--output", default="my_rust_executable", help="Name for the output executable (default: my_rust_executable)")
|
||||||
|
parser.add_argument("--suppress-warnings", action="store_true", help="Suppress compilation warnings")
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
print("Rust Build Script")
|
||||||
|
print("----------------")
|
||||||
|
print(f"Dependencies file: {args.dep_file}")
|
||||||
|
print(f"Rust source file: {args.source}")
|
||||||
|
print(f"Output executable: {args.output}")
|
||||||
|
|
||||||
|
dependencies = parse_dependencies(args.dep_file)
|
||||||
|
if not dependencies:
|
||||||
|
print("No valid dependencies found. Exiting.")
|
||||||
|
return
|
||||||
|
|
||||||
|
create_cargo_project(args.source, dependencies, args.output, args.suppress_warnings)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Reference in New Issue
Block a user