... authored by Rolf Niepraschk's avatar Rolf Niepraschk
# Clojure-Installation und Kompilieren der Messprogramme # Clojure-Installation und Kompilieren der Messprogramme
## Vorbereitung ## Vorbereitung
Die folgenden Schritte sind als Vorbereitung des Kompilierens und zur Ausführung der Messprogramme notwendig. Die folgenden Schritte sind als Vorbereitung des Kompilierens und zur Ausführung der Messprogramme notwendig.
### Notwendige System-Pakete ### Notwendige System-Pakete
``` ```
sudo apt install default-jre curl rlwrap ant jq sudo apt install default-jre curl rlwrap ant jq
``` ```
### Umgebungsvariablen ### Umgebungsvariablen
In der Datei `/etc/environment` müssen, ggf. abhängig von der Kalibriereinrichtung, folgende Umgebungsvariablen definiert werden: In der Datei `/etc/environment` müssen, ggf. abhängig von der Kalibriereinrichtung, folgende Umgebungsvariablen definiert werden:
**CE3-spezifisch:** **CE3-spezifisch:**
``` ```
DEVHUB_FACILITY=CE3 DEVHUB_FACILITY=CE3
METIS_FACILITY=CE3 METIS_FACILITY=CE3
METIS_BUILD_ON_START='mpd-ce3-sputter,mpd-ce3-calib,mpd-ce3-bake_out,mpd-ce3-srg_vg' METIS_BUILD_ON_START='mpd-ce3-sputter,mpd-ce3-calib,mpd-ce3-bake_out,mpd-ce3-srg_vg'
``` ```
**SE3-spezifisch:** **SE3-spezifisch:**
``` ```
DEVHUB_FACILITY=SE3 DEVHUB_FACILITY=SE3
METIS_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' 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:** **Allgemein notwendig:**
``` ```
METIS_DEVHUB_URL='http://localhost:9009' METIS_DEVHUB_URL='http://localhost:9009'
METIS_DEVPROXY_URL='http://localhost:8009' METIS_DEVPROXY_URL='http://localhost:8009'
METIS_LTMEM_HOST='localhost' METIS_LTMEM_HOST='localhost'
CAL_USR='cal' CAL_USR='cal'
CAL_PWD='<password>' CAL_PWD='<password>'
ADMIN_USR='admin' ADMIN_USR='admin'
ADMIN_PWD='<password>' ADMIN_PWD='<password>'
JAVA_TOOL_OPTIONS='-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2' JAVA_TOOL_OPTIONS='-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2'
PYTHONWARNINGS='ignore:Unverified HTTPS request' PYTHONWARNINGS='ignore:Unverified HTTPS request'
ELAB_TOKEN='???????????????????????????????????????????' ELAB_TOKEN='???????????????????????????????????????????'
ELAB_HOST='elabftw.ptb.de' 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. 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 ## Clojure-Installation
``` ```
curl -L -O https://github.com/clojure/brew-install/releases/latest/download/linux-install.sh curl -L -O https://github.com/clojure/brew-install/releases/latest/download/linux-install.sh
chmod +x linux-install.sh chmod +x linux-install.sh
sudo ./linux-install.sh sudo ./linux-install.sh
rm linux-install.sh rm linux-install.sh
``` ```
Anmerkung: Dieser Ablauf führt zur Installation der Clojure-Skripte Anmerkung: Dieser Ablauf führt zur Installation der Clojure-Skripte
und -Bibliotheken (siehe [»Install Clojure«](https://clojure.org/guides/install_clojure)): und -Bibliotheken (siehe [»Install Clojure«](https://clojure.org/guides/install_clojure)):
``` ```
/usr/local/bin/clj /usr/local/bin/clj
/usr/local/bin/clojure /usr/local/bin/clojure
/usr/local/lib/clojure /usr/local/lib/clojure
``` ```
## Kompilieren der jar-Dateien für die Messprogramme »devhub«, »devproxy« und »metis« ## Kompilieren der jar-Dateien für die Messprogramme »devhub«, »devproxy« und »metis«
### Angaben zum Proxy-Server ### 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: 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 mkdir -p ~/.m2
cat <<EOF >> ~/.m2/settings.xml cat <<EOF >> ~/.m2/settings.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<settings> <settings>
<proxies> <proxies>
<proxy> <proxy>
<id>ptb-proxy</id> <id>ptb-proxy</id>
<active>true</active> <active>true</active>
<protocol>http</protocol> <protocol>http</protocol>
<host>webproxy.berlin.ptb.de</host> <host>webproxy.berlin.ptb.de</host>
<port>8080</port> <port>8080</port>
<nonProxyHosts>localhost|127.0.0.1|*.ptb.de|*.berlin.ptb.de</nonProxyHosts> <nonProxyHosts>localhost|127.0.0.1|*.ptb.de|*.berlin.ptb.de</nonProxyHosts>
</proxy> </proxy>
</proxies> </proxies>
</settings> </settings>
EOF EOF
``` ```
Anmerkung: Die während des Build-Prozess heruntergeladenen Dateien werden typischerweise unterhalb von `~/.m2/` gepeichert. Anmerkung: Die während des Build-Prozess heruntergeladenen Dateien werden typischerweise unterhalb von `~/.m2/` gepeichert.
### Klonen des Programmcodes ### Klonen des Programmcodes
Wegen der Übersichtlichkeit sollten die folgenden Git-Repositorien unterhalb eines Verzeichnisses (z.B. `~/myapps`) angelegt werden. 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/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/devhub.git
git clone https://$(printf %s 'USERNAME'|jq -Rr @uri):$(printf %s 'PASSWORD'|jq -Rr @uri)@gitlab1.ptb.de/vaclab/metis.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. 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: Installation einer für »devhub« benötigten Java-Bibliothek:
``` ```
git clone https://github.com/mikef5410/jvxi11.git git clone https://github.com/mikef5410/jvxi11.git
cd jvxi11 cd jvxi11
ant ant
# Der Fehler beim Erzeugen der Dokumentation wegen fehlendem Programm # Der Fehler beim Erzeugen der Dokumentation wegen fehlendem Programm
# »javadoc« kann ignoriert werden. # »javadoc« kann ignoriert werden.
cd .. cd ..
cp -pvr --parents jvxi11/external jvxi11/dist devhub/resources/ 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. 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 ### Erzeugen der jar-Dateien für die Messprogramme
``` ```
cd devhub cd devhub
git pull git pull
./make_jar ./make_jar
cd .. cd ../devproxy
git pull
cd devproxy ./make_jar
git pull
./make_jar cd ../metis
git pull
cd .. ./make_jar
```
cd metis
git pull Die gewünschten jar-Dateien befinden sich nach erfolgreichem Kompilieren jeweils im Verzeichnis `target/`.
./make_jar
```
Die gewünschten jar-Dateien befinden sich nach erfolgreichem Kompilieren jeweils im Verzeichnis `target/`.