... authored by Rolf Niepraschk's avatar Rolf Niepraschk
# Clojure-Installation und Kompilieren der Messprogramme
## Vorbereitung
Die folgenden Schritte sind als Vorbereitung des Kompilierens und zur Ausführung der Messprogramme notwendig.
### Notwendige System-Pakete
```
sudo apt install default-jre curl rlwrap ant jq
```
### Umgebungsvariablen
In der Datei `/etc/environment` müssen, ggf. abhängig von der Kalibriereinrichtung, folgende Umgebungsvariablen definiert werden:
**CE3-spezifisch:**
```
DEVHUB_FACILITY=CE3
METIS_FACILITY=CE3
METIS_BUILD_ON_START='mpd-ce3-sputter,mpd-ce3-calib,mpd-ce3-bake_out,mpd-ce3-srg_vg'
```
**SE3-spezifisch:**
```
DEVHUB_FACILITY=SE3
METIS_FACILITY=SE3
METIS_BUILD_ON_START='mpd-se3-servo,mpd-se3-valves,mpd-se3-state,mpd-se3-expansion,mpd-se3-direct,mpd-se3-expansion_fm_fs,mpd-frs5-cmp_calib,mpd-srg,mpd-dkm_ppc4_calib'
```
**Allgemein notwendig:**
```
METIS_DEVHUB_URL='http://localhost:9009'
METIS_DEVPROXY_URL='http://localhost:8009'
METIS_LTMEM_HOST='localhost'
CAL_USR='cal'
CAL_PWD='<password>'
ADMIN_USR='admin'
ADMIN_PWD='<password>'
JAVA_TOOL_OPTIONS='-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2'
PYTHONWARNINGS='ignore:Unverified HTTPS request'
ELAB_TOKEN='???????????????????????????????????????????'
ELAB_HOST='elabftw.ptb.de'
```
Anmerkung: Die in `/etc/environment` definierten Umgebungsvariablen gelten systemweit, können aber z.B. durch Einträge in der nutzereigenen Datei `~/.bashrc` überschrieben werden. Eine Kontrolle, um Widersprüche auszuschließen, ist empfehlenswert.
## Clojure-Installation
```
curl -L -O https://github.com/clojure/brew-install/releases/latest/download/linux-install.sh
chmod +x linux-install.sh
sudo ./linux-install.sh
rm linux-install.sh
```
Anmerkung: Dieser Ablauf führt zur Installation der Clojure-Skripte
und -Bibliotheken (siehe [»Install Clojure«](https://clojure.org/guides/install_clojure)):
```
/usr/local/bin/clj
/usr/local/bin/clojure
/usr/local/lib/clojure
```
## Kompilieren der jar-Dateien für die Messprogramme »devhub«, »devproxy« und »metis«
### Angaben zum Proxy-Server
Der spätere Build-Prozess benutzt nicht oder nicht immer die übliche Umgebungsvariable `https_proxy` beim Herunterladen externer Dateien unter Verwendung des Proxy-Servers. Um trotzdem erfolgreich zu sein, muss zusätzlich die folgende Konfigurationsdatei angelegt werden und die Angaben zum Proxy-Server enthalten:
```
mkdir -p ~/.m2
cat <<EOF >> ~/.m2/settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<proxies>
<proxy>
<id>ptb-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>webproxy.berlin.ptb.de</host>
<port>8080</port>
<nonProxyHosts>localhost|127.0.0.1|*.ptb.de|*.berlin.ptb.de</nonProxyHosts>
</proxy>
</proxies>
</settings>
EOF
```
Anmerkung: Die während des Build-Prozess heruntergeladenen Dateien werden typischerweise unterhalb von `~/.m2/` gepeichert.
### Klonen des Programmcodes
Wegen der Übersichtlichkeit sollten die folgenden Git-Repositorien unterhalb eines Verzeichnisses (z.B. `~/myapps`) angelegt werden.
```
git clone https://$(printf %s 'USERNAME'|jq -Rr @uri):$(printf %s 'PASSWORD'|jq -Rr @uri)@gitlab1.ptb.de/vaclab/devproxy.git
git clone https://$(printf %s 'USERNAME'|jq -Rr @uri):$(printf %s 'PASSWORD'|jq -Rr @uri)@gitlab1.ptb.de/vaclab/devhub.git
git clone https://$(printf %s 'USERNAME'|jq -Rr @uri):$(printf %s 'PASSWORD'|jq -Rr @uri)@gitlab1.ptb.de/vaclab/metis.git
```
Anmerkung: Mithilfe der Konstrukte `$(printf %s '????????'|jq -Rr @uri)` werden Nutzername und Password URL-encoded zu Bestandteilen der jeweiligen URL (siehe resultierender Eintrag in `.git/config`). Damit erübrigt sich jetzt und später deren manuelle Eingabe.
Installation einer für »devhub« benötigten Java-Bibliothek:
```
git clone https://github.com/mikef5410/jvxi11.git
cd jvxi11
ant
# Der Fehler beim Erzeugen der Dokumentation wegen fehlendem Programm
# »javadoc« kann ignoriert werden.
cd ..
cp -pvr --parents jvxi11/external jvxi11/dist devhub/resources/
```
Anmerkung: Es ist nicht ausgeschlossen, dass sich die Erzeugung dieser Bibliothek auch automatisieren ließe, wenn man die Angaben in `devhub/deps.edn` geeignet anpassen könnte/würde.
### Erzeugen der jar-Dateien für die Messprogramme
```
cd devhub
git pull
./make_jar
cd ..
cd devproxy
git pull
./make_jar
cd ..
cd metis
git pull
./make_jar
```
Die gewünschten jar-Dateien befinden sich nach erfolgreichem Kompilieren jeweils im Verzeichnis `target/`.
# Clojure-Installation und Kompilieren der Messprogramme
## Vorbereitung
Die folgenden Schritte sind als Vorbereitung des Kompilierens und zur Ausführung der Messprogramme notwendig.
### Notwendige System-Pakete
```
sudo apt install default-jre curl rlwrap ant jq
```
### Umgebungsvariablen
In der Datei `/etc/environment` müssen, ggf. abhängig von der Kalibriereinrichtung, folgende Umgebungsvariablen definiert werden:
**CE3-spezifisch:**
```
DEVHUB_FACILITY=CE3
METIS_FACILITY=CE3
METIS_BUILD_ON_START='mpd-ce3-sputter,mpd-ce3-calib,mpd-ce3-bake_out,mpd-ce3-srg_vg'
```
**SE3-spezifisch:**
```
DEVHUB_FACILITY=SE3
METIS_FACILITY=SE3
METIS_BUILD_ON_START='mpd-se3-servo,mpd-se3-valves,mpd-se3-state,mpd-se3-expansion,mpd-se3-direct,mpd-se3-expansion_fm_fs,mpd-frs5-cmp_calib,mpd-srg,mpd-dkm_ppc4_calib'
```
**Allgemein notwendig:**
```
METIS_DEVHUB_URL='http://localhost:9009'
METIS_DEVPROXY_URL='http://localhost:8009'
METIS_LTMEM_HOST='localhost'
CAL_USR='cal'
CAL_PWD='<password>'
ADMIN_USR='admin'
ADMIN_PWD='<password>'
JAVA_TOOL_OPTIONS='-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2'
PYTHONWARNINGS='ignore:Unverified HTTPS request'
ELAB_TOKEN='???????????????????????????????????????????'
ELAB_HOST='elabftw.ptb.de'
```
Anmerkung: Die in `/etc/environment` definierten Umgebungsvariablen gelten systemweit, können aber z.B. durch Einträge in der nutzereigenen Datei `~/.bashrc` überschrieben werden. Eine Kontrolle, um Widersprüche auszuschließen, ist empfehlenswert.
## Clojure-Installation
```
curl -L -O https://github.com/clojure/brew-install/releases/latest/download/linux-install.sh
chmod +x linux-install.sh
sudo ./linux-install.sh
rm linux-install.sh
```
Anmerkung: Dieser Ablauf führt zur Installation der Clojure-Skripte
und -Bibliotheken (siehe [»Install Clojure«](https://clojure.org/guides/install_clojure)):
```
/usr/local/bin/clj
/usr/local/bin/clojure
/usr/local/lib/clojure
```
## Kompilieren der jar-Dateien für die Messprogramme »devhub«, »devproxy« und »metis«
### Angaben zum Proxy-Server
Der spätere Build-Prozess benutzt nicht oder nicht immer die übliche Umgebungsvariable `https_proxy` beim Herunterladen externer Dateien unter Verwendung des Proxy-Servers. Um trotzdem erfolgreich zu sein, muss zusätzlich die folgende Konfigurationsdatei angelegt werden und die Angaben zum Proxy-Server enthalten:
```
mkdir -p ~/.m2
cat <<EOF >> ~/.m2/settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<proxies>
<proxy>
<id>ptb-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>webproxy.berlin.ptb.de</host>
<port>8080</port>
<nonProxyHosts>localhost|127.0.0.1|*.ptb.de|*.berlin.ptb.de</nonProxyHosts>
</proxy>
</proxies>
</settings>
EOF
```
Anmerkung: Die während des Build-Prozess heruntergeladenen Dateien werden typischerweise unterhalb von `~/.m2/` gepeichert.
### Klonen des Programmcodes
Wegen der Übersichtlichkeit sollten die folgenden Git-Repositorien unterhalb eines Verzeichnisses (z.B. `~/myapps`) angelegt werden.
```
git clone https://$(printf %s 'USERNAME'|jq -Rr @uri):$(printf %s 'PASSWORD'|jq -Rr @uri)@gitlab1.ptb.de/vaclab/devproxy.git
git clone https://$(printf %s 'USERNAME'|jq -Rr @uri):$(printf %s 'PASSWORD'|jq -Rr @uri)@gitlab1.ptb.de/vaclab/devhub.git
git clone https://$(printf %s 'USERNAME'|jq -Rr @uri):$(printf %s 'PASSWORD'|jq -Rr @uri)@gitlab1.ptb.de/vaclab/metis.git
```
Anmerkung: Mithilfe der Konstrukte `$(printf %s '????????'|jq -Rr @uri)` werden Nutzername und Password URL-encoded zu Bestandteilen der jeweiligen URL (siehe resultierender Eintrag in `.git/config`). Damit erübrigt sich jetzt und später deren manuelle Eingabe.
Installation einer für »devhub« benötigten Java-Bibliothek:
```
git clone https://github.com/mikef5410/jvxi11.git
cd jvxi11
ant
# Der Fehler beim Erzeugen der Dokumentation wegen fehlendem Programm
# »javadoc« kann ignoriert werden.
cd ..
cp -pvr --parents jvxi11/external jvxi11/dist devhub/resources/
```
Anmerkung: Es ist nicht ausgeschlossen, dass sich die Erzeugung dieser Bibliothek auch automatisieren ließe, wenn man die Angaben in `devhub/deps.edn` geeignet anpassen könnte/würde.
### Erzeugen der jar-Dateien für die Messprogramme
```
cd devhub
git pull
./make_jar
cd ../devproxy
git pull
./make_jar
cd ../metis
git pull
./make_jar
```
Die gewünschten jar-Dateien befinden sich nach erfolgreichem Kompilieren jeweils im Verzeichnis `target/`.