142 lines
4.6 KiB
Markdown
142 lines
4.6 KiB
Markdown
# PiDP 10 Services
|
|
|
|
## Overview
|
|
|
|
This repository combines a set of useful scripts and services, to run on the
|
|
PiDP-10 in order to make it easier to work with it and develop for it. These
|
|
services can be installed on the PiDP-10 and automate tasks such as copying
|
|
files onto the ITS operating system. These tools help automate processes, that
|
|
would require interaction with the Linux part of the PiDP-10 when developing on
|
|
another system.
|
|
|
|
## git-monitor
|
|
|
|
The git-monitor is a system service that monitors a target directory on the
|
|
PiDP-10. It contains a file with a list of git repositories to monitor, one at a
|
|
time. The service will check if any of the repositories changed, and pull them.
|
|
After a successful pull a script will be called, if it exists, that allows the
|
|
newly updated repository to interact with a running PDP-10 simulation.
|
|
|
|
The monitor consists of a script, that needs to be installed to `/usr/local/bin`
|
|
and a systemd unit-file to run it as a service.
|
|
|
|
### Installation
|
|
|
|
To install the git-monitor, clone this repository to the target computer, and
|
|
run the install script:
|
|
|
|
```bash
|
|
git clone https://gitea.orca-central.de/jali/PiDP10Services.git
|
|
sudo ./install.sh
|
|
```
|
|
|
|
This will install the service on your system and start it. If you want the
|
|
service to be enabled on system boot, enable the service:
|
|
|
|
```bash
|
|
sudo systemctl enable git-monitor.service
|
|
```
|
|
|
|
### Configuration
|
|
|
|
The service is usable immediately after installation. The service is configured
|
|
through a series of environment variables, that can be set to change the default
|
|
behaviour. There are five different environment variables to configure the
|
|
service with:
|
|
|
|
<table>
|
|
<tr>
|
|
<th>Environment Variable</th>
|
|
<th>Description</th>
|
|
<th>Default Value</th>
|
|
</tr>
|
|
<tr>
|
|
<td>GITMONITOR_URLS</td>
|
|
<td>A file that contains the list of observed repositories in a directory by name and URL.</td>
|
|
<td>/opt/src/repository.list</td>
|
|
</tr>
|
|
<tr>
|
|
<td>GITMONITOR_LOCAL_PATH</td>
|
|
<td>The path in which the clone repositories will be stored.</td>
|
|
<td>/opt/src</td>
|
|
</tr>
|
|
<tr>
|
|
<td>GITMONITOR_BRANCH_NAME</td>
|
|
<td>The name of the branch to observe.</td>
|
|
<td>develop</td>
|
|
</tr>
|
|
<tr>
|
|
<td>GITMONITOR_POLL_INTERVALL</td>
|
|
<td>The number of seconds to wait until the next poll.</td>
|
|
<td>30</td>
|
|
</tr>
|
|
<tr>
|
|
<td>GITMONITOR_LOCK_FILE</td>
|
|
<td>The lock file that is used to monitor the service. </td>
|
|
<td>/run/lock/git-monitor.lock</td>
|
|
</tr>
|
|
</table>
|
|
|
|
You can override these settings by creating an override file for the service
|
|
unit. Create a new file
|
|
`/etc/serviced/service/git-monitor.service.d/override.conf` by typing
|
|
`sudo systemctl edit git-monitor.service`. You can then uncomment the
|
|
`Environment` statements, and change the value of the variables accordingly.
|
|
|
|
After any changes to the configuration run:
|
|
|
|
```bash
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl restart git-montitor.service
|
|
```
|
|
|
|
### Using
|
|
|
|
In order to observe your repository, you need to configure the repository list,
|
|
and add your repository to the watchlist. To do so, edit the
|
|
`$GITMONITOR_REPO_URLS`-file (default: `/opt/src/repository.list`). Every entry
|
|
in the repository is a line in this file. And every line contains the local name
|
|
of a repository and the URL to clone from in the form:
|
|
`<myrepository>|<external URL>`. For example, a line could be:
|
|
|
|
```
|
|
PDP10Sudoku|htts://foo.bar/jali/PDP10Sudoku.git
|
|
```
|
|
|
|
Save the file. On the next poll the service performs, the repository will be
|
|
watched. If the local repository doesn't exist yet, it is automatically cloned.
|
|
Keep in mind that currently, the service only supports public repositories. This
|
|
may change in the future if it is required.
|
|
|
|
Now you will always have the current code on the Raspberry Pi. But it is still
|
|
on the PI side, and not inside the simulator. To allow this, the service will
|
|
run a shell script every time a change is detected in the system. The file must
|
|
reside in the root directory of your repository, and be named
|
|
`.git-monitor_after.sh`. In order to copy source code from the Raspbery Pi side
|
|
of a PiDP 10 you can use the `mlftp` tool, and copy exactly the files you'd
|
|
like.
|
|
|
|
```bash
|
|
#!/bin/sh
|
|
# Copies the source files to the ITS system
|
|
|
|
MLFTP="/opt/pidp10/bin/mlftp"
|
|
|
|
SOURCEFILE="./src/myprogram.s"
|
|
TARGETFILE="MYPROG 1 JALI;"
|
|
|
|
|
|
# Functions
|
|
log_message() {
|
|
local level=$1
|
|
local message=$2
|
|
timestamp=$(date +'%Y-%m-%d %H:%M:%S')
|
|
#echo "$timestamp [$level] $message" >> "$LOG_FILE"
|
|
echo "$timestamp [$level] $message" # Also print to console (optional)
|
|
}
|
|
|
|
# Main execution
|
|
log_message "INFO" "Uploading $SOURCEFILE to $TARGETFILE on ITS"
|
|
$MLFTP -w its "$TARGETFILE" $SOURCEFILE
|
|
```
|