mirror of https://codeberg.org/topola/topola.git
179 lines
5.2 KiB
Markdown
179 lines
5.2 KiB
Markdown
# Installing Topola
|
|
|
|
## Building and installing Topola from source
|
|
|
|
Note that running any of the below commands that start with `cargo
|
|
install` will install a Topola binary on your system. We assume this is
|
|
what most people coming here want. If you want to build and run Topola
|
|
without installing it, skip these particular commands and follow the
|
|
subsections named *Building and running without installing*.
|
|
|
|
By default, the installed version will have a `release` profile, whereas
|
|
without installing the `debug` profile will be used by default.
|
|
|
|
### Prerequisites
|
|
|
|
Building Topola from source requires
|
|
[git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) and
|
|
[cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html)
|
|
to be installed on your system. Follow the instructions in above links
|
|
to obtain these.
|
|
|
|
### Obtaining the source
|
|
|
|
Clone the [repository](https://codeberg.org/topola/topola):
|
|
|
|
git clone https://codeberg.org/topola/topola.git
|
|
|
|
### Preparing to build
|
|
|
|
Change your working directory to your clone of Topola's repository:
|
|
|
|
cd topola
|
|
|
|
### Command-line application
|
|
|
|
Run the following command to build and install Topola's command-line
|
|
application:
|
|
|
|
cargo install --locked --path . --features cli
|
|
|
|
The application will now be invokable from your terminal as `topola`.
|
|
|
|
#### Autorouting example
|
|
|
|
As an example, running the following commands will autoroute a KiCad
|
|
project of a simple THT diode bridge rectifier:
|
|
|
|
```
|
|
cd tests/single_layer/tht_diode_bridge_rectifier/
|
|
topola tht_diode_bridge_rectifier.dsn
|
|
```
|
|
|
|
By default, the output filename is the input filename with extension
|
|
changed to `ses`: `tht_diode_bridge_rectifier.ses`.
|
|
|
|
##### Viewing the results
|
|
|
|
You can view the results of the autorouting in KiCad if you have it
|
|
installed. First, open the layout in the KiCad PCB Editor:
|
|
|
|
```
|
|
pcbnew tht_diode_bridge_rectifier.kicad_pcb
|
|
```
|
|
|
|
Then choose *File > Import > Specctra Session...* from the menu bar.
|
|
In the newly opened file dialog, choose the file named
|
|
*tht_diode_bridge_rectifier.ses*. This will load the autorouted traces.
|
|
|
|
#### Building and running without installing
|
|
|
|
If you chose not to install the command-line application, you can build
|
|
and run it without installing by replacing the `topola` command with
|
|
`cargo run --features cli --`. Running the above autorouting example is
|
|
then as follows:
|
|
|
|
```
|
|
cd tests/single_layer/tht_diode_bridge_rectifier/
|
|
cargo run --features cli -- tht_diode_bridge_rectifier.dsn
|
|
```
|
|
|
|
Viewing the results is obviously the same.
|
|
|
|
### Egui graphical user interface application
|
|
|
|
Topola has a graphical user interface (GUI) application written using
|
|
the [egui](https://github.com/emilk/egui/) library and its paired
|
|
[eframe](https://github.com/emilk/egui/tree/master/crates/eframe)
|
|
framework.
|
|
|
|
The following command will build and install Topola's GUI application:
|
|
|
|
cargo install --locked --path . --features egui --bin egui
|
|
|
|
You can then invoke the application from your terminal by running
|
|
|
|
```
|
|
topola-egui
|
|
```
|
|
|
|
#### Building and running without installing
|
|
|
|
If you chose not to install the GUI application, you can build and run
|
|
it without installing by running
|
|
|
|
```
|
|
cargo run --features egui --bin topola-egui`
|
|
```
|
|
|
|
instead of the above `topola-egui` command.
|
|
|
|
#### Running Topola in a Web browser
|
|
|
|
Topola's GUI application can be built to and run in a Web browser using
|
|
[Trunk](https://trunkrs.dev/), which will be installed with the
|
|
following command:
|
|
|
|
cargo binstall trunk
|
|
|
|
To build and open Topola in your browser, run
|
|
|
|
trunk serve
|
|
|
|
This will work both with and without having the GUI application
|
|
installed.
|
|
|
|
### Automated tests
|
|
|
|
Topola has automated tests to make sure its basic functionalities work.
|
|
To execute these, run
|
|
|
|
cargo test
|
|
|
|
Automated tests are run in `debug` profile.
|
|
|
|
### Contracts
|
|
|
|
The feature described in this section works only in `debug` profile. If
|
|
you are not interested in debugging, you can skip it altogether.
|
|
|
|
When trying to locate the source of a bug, it may be helpful to enable
|
|
[contracts](https://en.wikipedia.org/wiki/Design_by_contract) (yes, this
|
|
Wikipedia article needs improvement), which are nothing else but
|
|
somewhat enchanced assertions.
|
|
|
|
Unfortunately, the
|
|
[contracts](https://docs.rs/contracts/latest/contracts/) library which
|
|
we have been using enforces post-conditions via closures, which have
|
|
deal-breaking limitations. To bypass these we have forked and modified
|
|
it to use `try` blocks instead. The fork is vendored in the
|
|
[vendored/contracts/](vendored/contracts/) directory.
|
|
|
|
However, `try` blocks are not present in stable Rust yet, so to use
|
|
these you need to set up your toolchain to use a nightly version of
|
|
Rust.
|
|
|
|
#### Nightly Rust
|
|
|
|
To use nightly Rust, run the following command:
|
|
|
|
rustup override set nightly
|
|
|
|
You can go back to stable with
|
|
|
|
rustup override unset
|
|
|
|
#### Enabling contracts
|
|
|
|
To enable contracts, simply add a `--no-default-features` switch. This
|
|
switches off a default feature that prevents contracts from executing.
|
|
For example, to build tests with contracts, simply run
|
|
|
|
cargo test --no-default-features
|
|
|
|
Of course, you can enable contracts for any build target. For instance,
|
|
the following command will build the Egui application with debug profile
|
|
and contracts enabled:
|
|
|
|
cargo build --features egui --bin topola-egui --no-default-features
|