Compare commits
10 commits
33713184b4
...
bdc7b77eae
Author | SHA1 | Date | |
---|---|---|---|
![]() |
bdc7b77eae | ||
![]() |
abac34fa2f | ||
![]() |
368f29324a | ||
![]() |
a262510dc7 | ||
![]() |
3b63d4fe6b | ||
![]() |
a97604e18e | ||
![]() |
75a1bd2f3d | ||
![]() |
88cfe7d8ba | ||
![]() |
c2e9464a06 | ||
![]() |
4da836c535 |
9 changed files with 185 additions and 7 deletions
3
.containerignore
Normal file
3
.containerignore
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
vendor
|
||||||
|
target
|
||||||
|
rpmbuild
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
||||||
/target
|
/target
|
||||||
vendor
|
vendor
|
||||||
|
rpmbuild
|
||||||
*.tar.*
|
*.tar.*
|
||||||
|
|
|
@ -4,7 +4,6 @@ version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
description = "A simple demonstration of the Iced GUI library."
|
description = "A simple demonstration of the Iced GUI library."
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
#license-file = "LICENSE.txt"
|
|
||||||
repository = "no"
|
repository = "no"
|
||||||
|
|
||||||
# This application was created and tested with Rust version 1.81.0-nightly
|
# This application was created and tested with Rust version 1.81.0-nightly
|
||||||
|
|
15
Containerfile
Normal file
15
Containerfile
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# This image is used for building the RPMs for SolutionTM
|
||||||
|
|
||||||
|
FROM fedora:40 as build
|
||||||
|
|
||||||
|
# Some general tools used for RPM building
|
||||||
|
RUN dnf install rpm-build rpmdevtools dnf-plugins-core git -y
|
||||||
|
RUN rpmdev-setuptree
|
||||||
|
|
||||||
|
# Get the build deps
|
||||||
|
ADD ./SolutionTM.spec ./
|
||||||
|
RUN dnf builddep ./SolutionTM.spec -y
|
||||||
|
|
||||||
|
# Where the source will be mounted
|
||||||
|
RUN mkdir /source
|
||||||
|
WORKDIR /source
|
56
SolutionTM.spec
Normal file
56
SolutionTM.spec
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
# Generated by rust2rpm 26
|
||||||
|
%bcond_without check
|
||||||
|
|
||||||
|
# prevent library files from being installed
|
||||||
|
%global cargo_install_lib 0
|
||||||
|
|
||||||
|
%global crate SolutionTM
|
||||||
|
|
||||||
|
Name: SolutionTM
|
||||||
|
Version: 0.1.0
|
||||||
|
Release: %autorelease
|
||||||
|
Summary: Simple demonstration of the Iced GUI library
|
||||||
|
|
||||||
|
SourceLicense: MIT
|
||||||
|
# FIXME: paste output of %%cargo_license_summary here
|
||||||
|
License: MIT
|
||||||
|
# LICENSE.dependencies contains a full license breakdown
|
||||||
|
|
||||||
|
URL: no
|
||||||
|
Source: %{crate}-%{version}.tar.gz
|
||||||
|
Source: %{crate}-%{version}-vendor.tar.gz
|
||||||
|
|
||||||
|
BuildRequires: cargo-rpm-macros >= 26
|
||||||
|
BuildRequires: cargo >= 1.78
|
||||||
|
|
||||||
|
%global _description %{expand:
|
||||||
|
A simple demonstration of the Iced GUI library.}
|
||||||
|
|
||||||
|
%description %{_description}
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -n %{crate}-%{version} -p1 -a1
|
||||||
|
%cargo_prep -v vendor
|
||||||
|
|
||||||
|
%build
|
||||||
|
%cargo_build
|
||||||
|
%{cargo_license_summary}
|
||||||
|
%{cargo_license} > LICENSE.dependencies
|
||||||
|
%{cargo_vendor_manifest}
|
||||||
|
|
||||||
|
%install
|
||||||
|
%cargo_install
|
||||||
|
|
||||||
|
%if %{with check}
|
||||||
|
%check
|
||||||
|
%cargo_test
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%files
|
||||||
|
%license LICENCE.txt
|
||||||
|
%license LICENSE.dependencies
|
||||||
|
%license cargo-vendor.txt
|
||||||
|
%{_bindir}/SolutionTM
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
%autochangelog
|
8
build_podman.sh
Executable file
8
build_podman.sh
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# First we build the 'Containerfile' for podman
|
||||||
|
podman build -t solutiontm:latest -f Containerfile || exit 1
|
||||||
|
|
||||||
|
# Run it, mount repo as /source and execute "bash build_rpm.sh"
|
||||||
|
podman run -d -v $(pwd):/source:Z -n rpmbuild solutiontm:latest bash build_rpm.sh || exit 1
|
||||||
|
echo "Continuing build in background..."
|
61
build_rpm.sh
Executable file
61
build_rpm.sh
Executable file
|
@ -0,0 +1,61 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# This is a simple script to build an RPM package from a spec file.
|
||||||
|
|
||||||
|
# We need to install the required dependencies to build RPM packages.
|
||||||
|
# We also need to set up the RPM build tree:
|
||||||
|
#
|
||||||
|
# $ sudo dnf install rpm-build rpmdevtools dnf-plugins-core
|
||||||
|
# $ rpmdev-setuptree
|
||||||
|
#
|
||||||
|
# To install the builddeps:
|
||||||
|
#
|
||||||
|
# $ sudo dnf builddep SolutionTM.spec
|
||||||
|
|
||||||
|
version=0.1.0
|
||||||
|
name=SolutionTM
|
||||||
|
|
||||||
|
rpmbuild=$PWD/rpmbuild
|
||||||
|
mkdir -p $rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
|
||||||
|
|
||||||
|
echo "Building RPM package for $name version $version."
|
||||||
|
|
||||||
|
# Check so that all versions are coherent
|
||||||
|
|
||||||
|
grep -q "Version:.*$version" $name.spec
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Version number in spec file is $version."
|
||||||
|
else
|
||||||
|
echo "Version number in spec file is not $version. Exiting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
grep -q "version = \"$version\"" Cargo.toml
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Version number in Cargo.toml is $version."
|
||||||
|
else
|
||||||
|
echo "Version number in Cargo.toml is not $version. Exiting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source_tar=$name-$version.tar.gz
|
||||||
|
vendor_tar=$name-$version-vendor.tar.gz
|
||||||
|
|
||||||
|
echo "Building source tarball $source_tar."
|
||||||
|
echo "Building vendor tarball $vendor_tar."
|
||||||
|
|
||||||
|
# First, we need a tarball of the source code in this very repo.
|
||||||
|
git archive --format=tar.gz --prefix=$name-$version/ -o $source_tar HEAD
|
||||||
|
|
||||||
|
# If we want an unclean build, comment out the above line and use the following instead.
|
||||||
|
# git ls-files | tar --transform="s,^,$name-$version/," -T - -czf $source_tar
|
||||||
|
|
||||||
|
# Then we need a vendor tarball of the dependencies.
|
||||||
|
cargo vendor --versioned-dirs vendor
|
||||||
|
tar -cvzf $vendor_tar vendor
|
||||||
|
|
||||||
|
# Then we move the tarball to the SOURCES directory.
|
||||||
|
mv $source_tar $rpmbuild/SOURCES/
|
||||||
|
mv $vendor_tar $rpmbuild/SOURCES/
|
||||||
|
|
||||||
|
rpmbuild --define "_topdir $rpmbuild" -ba $name.spec
|
26
set_versions.sh
Executable file
26
set_versions.sh
Executable file
|
@ -0,0 +1,26 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Currently not used
|
||||||
|
|
||||||
|
$name=SolutionTM
|
||||||
|
$version=0.1.0
|
||||||
|
|
||||||
|
# If git is unclean, exit
|
||||||
|
if ! git diff-index --quiet HEAD --; then
|
||||||
|
echo "Git is unclean. Please commit your changes before building the RPM package."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# These should all set the first occurrence of the
|
||||||
|
# version number in the respective files.
|
||||||
|
|
||||||
|
# Set the version number in the spec file.
|
||||||
|
sed -i "0,/Version: .*/s/Version: .*/Version: $version/" $name.spec
|
||||||
|
|
||||||
|
# Set the version number in the Cargo.toml file.
|
||||||
|
sed -i "0,/version = \".*\"/s/version = \".*\"/version = \"$version\"/" Cargo.toml
|
||||||
|
|
||||||
|
# Set the version number in the Cargo.lock file.
|
||||||
|
sed -i "0,/version = \".*\"/s/version = \".*\"/version = \"$version\"/" Cargo.lock
|
||||||
|
|
||||||
|
git diff
|
21
src/main.rs
21
src/main.rs
|
@ -3,6 +3,7 @@ use race::Race;
|
||||||
|
|
||||||
use iced::widget::{button, column, combo_box, row, text, Column, ComboBox, Text};
|
use iced::widget::{button, column, combo_box, row, text, Column, ComboBox, Text};
|
||||||
use iced::{Alignment, Padding};
|
use iced::{Alignment, Padding};
|
||||||
|
use iced::{Element, Sandbox};
|
||||||
|
|
||||||
/// Represents the state of our application and handles
|
/// Represents the state of our application and handles
|
||||||
/// message matching and updating the state accordingly.
|
/// message matching and updating the state accordingly.
|
||||||
|
@ -36,7 +37,9 @@ enum Command {
|
||||||
Closed,
|
Closed,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl State {
|
impl Sandbox for State {
|
||||||
|
type Message = Command;
|
||||||
|
|
||||||
// Constructor for the state, nothing special here.
|
// Constructor for the state, nothing special here.
|
||||||
fn new() -> Self {
|
fn new() -> Self {
|
||||||
Self {
|
Self {
|
||||||
|
@ -47,6 +50,10 @@ impl State {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn title(&self) -> String {
|
||||||
|
String::from("Test Example")
|
||||||
|
}
|
||||||
|
|
||||||
// On each update, we recieve a command and update the state accordingly.
|
// On each update, we recieve a command and update the state accordingly.
|
||||||
fn update(&mut self, command: Command) {
|
fn update(&mut self, command: Command) {
|
||||||
match command {
|
match command {
|
||||||
|
@ -60,7 +67,7 @@ impl State {
|
||||||
|
|
||||||
// Called every frame to render the user interface.
|
// Called every frame to render the user interface.
|
||||||
// Changes to the state are reflected here.
|
// Changes to the state are reflected here.
|
||||||
fn view(&self) -> Column<Command> {
|
fn view(&self) -> Element<Command> {
|
||||||
// Our combo box
|
// Our combo box
|
||||||
let combo_box: ComboBox<Race, Command> = combo_box::ComboBox::new(
|
let combo_box: ComboBox<Race, Command> = combo_box::ComboBox::new(
|
||||||
&self.races,
|
&self.races,
|
||||||
|
@ -93,14 +100,16 @@ impl State {
|
||||||
.align_items(Alignment::Start)
|
.align_items(Alignment::Start)
|
||||||
.spacing(10)
|
.spacing(10)
|
||||||
.width(iced::Length::Fill)
|
.width(iced::Length::Fill)
|
||||||
|
.into()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
// Iced::run is an entry point for the application.
|
// Iced::run is an entry point for the application.
|
||||||
// It may fail so we match on the result.
|
// It may fail so we match on the result.
|
||||||
match iced::run("Test Example", State::update, State::view) {
|
// match iced::run("Test Example", State::update, State::view) {
|
||||||
Ok(_) => {}
|
// Ok(_) => {}
|
||||||
Err(error) => eprintln!("Error: {}", error),
|
// Err(error) => eprintln!("Error: {}", error),
|
||||||
}
|
// }
|
||||||
|
State::run(iced::Settings::default());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue