Hinweise zum Umzug von Device Access auf das acc7-Cluster

Inhalt

Erweiterte Scripts und Makefiles

Folgende Scripts und Makefiles wurden für acc7 erweitert:

/common/usr/cscofe/scripts/eqpact
/common/usr/cscofe/scripts/asl/eqpaslv01
/common/usr/cscofe/scripts/asl/sysaslv01
/common/usr/cscofe/scripts/vme/prepmake
/common/usr/cscofe/scripts/vme/prepmakeeqms
/common/usr/cscofe/scripts/vme/eqpvmev10
/common/usr/cscofe/scripts/vme/sysvmev10
/common/usr/cscofe/scripts/vme/ecmlinkcreate
/common/usr/cscofe/scripts/vme/releqms
~/workspace/utilities/uti/Makefile
~/workspace/utilities/utiasl/Makefile
~/workspace/utilities/utivme/Makefile

Synchronisierte Produktions-Verzeichnisse

Die Struktur der Produktions-Verzeichnisse ist auf acc6 und acc7 die gleiche. Daher kann man, solange die Entwicklung noch auf acc6 stattfindet, nach Anpassung und Release obiger Scripts und Makefiles (auf acc6), die acc7-Verzeichnisse mit den acc6-Verzeichnissen synchronisieren.

ssh -X asl740.acc.gsi.de

cd /common/usr/cscofe
rsync -avz asl730:/common/usr/cscofe/bin .
rsync -avz asl730:/common/usr/cscofe/scripts .
rsync -avz asl730:/common/usr/cscofe/doc .
rsync -avz asl730:/common/usr/cscofe/opt .
rsync -avz asl730:/common/usr/cscofe/etc .
rsync -avz asl730:/common/usr/cscofe/var .
rsync -avz asl730:/common/usr/cscofe/htdocs .
rsync -avz asl730:/common/usr/cscofe/lib/java ./lib
rsync -avz asl730:/common/usr/cscofe/lib/python2.6/site-packages ./lib/python2.7
rsync -avz asl730:/common/usr/cscofe/opt/devacc/sys/m68k ./opt/devacc/sys

cd /common/usr/cscofe/opt/devacc
rsync -avz asl730:/common/usr/cscofe/opt/devacc/etc .
rsync -avz asl730:/common/usr/cscofe/opt/devacc/var .

Achtung! Das ist nur ein erster Schritt. Wurde Software direkt auf acc7 released, sollte man in der Regel danach kein rsync mehr machen!

Auf acc6 hatten wir Python 2.6, auf acc7 haben wir Python 2.7.

cd /common/usr/cscofe
ln -s lib/python2.7/site-packages python

cd /common/usr/cscofe/opt/devacc/eqp
ln -s /common/usr/cscofe/lib/python2.7/site-packages/eqmods eqmodpy

Java CORBA Interface

Java 11, das zur Zeit (Jan. 2019) auf acc7 eingeführt wird, unterstützt kein CORBA mehr. Die Gruppe SER (Vitaliy) testet gerade Glassfish als Ersatz. Erste Ergebnisse sehen gut aus. Nichtsdestotrotz muss perspektivisch eine generelle Lösung für den Device Access Communication Layer überlegt werden. CORBA stirbt langsam aus.

Python CORBA Stubs

Die müssen für acc7 explizit generiert werden. Importiert man das auf acc6 generierte Python-Modul devacc, dann bekommt man den Fehler

asl740$ python
>>> import devacc
...
ImportError: Stubs not compatible with omniORBpy version 4.2.

Im Nexus kann eine Version des Python-Artefakts also entweder für acc6 oder für acc7 gelten, aber nicht für beide! Also etwa

  • framework-python 10.26.06 -> gilt nur für acc6
  • framework-python 10.27.00 -> gilt nur für acc7

Die Generierung der Stubs geschieht, wenn man das Framework generiert. Das Modul ist .../framework/devacc_python.

assembly.xml

Für Releases der FEC-Software wird jeweils ein assembly.xml benötigt, welches die notwendigen allgemeinen Libraries wie omniORB und boost mit ins Zip packt. Da es auf acc6 und acc7 verschiedene ELDKs gibt, sind auch die Versionen dieser Libs unterschiedlich.

Für die Software-Generierung auf acc7 müssen die Versionen in den assembly.xml angepasst werden. Dazu auf einem acc7-Rechner (asl740) unter fecs/templates das Script show-libs.sh benutzten und libs-acc7.txt lesen.

Offene Fragen

  • Versionierung:
    • Auf acc7 mit Framework-Version 10.27.00 weitermachen?
    • Wie dann eqmodels/eqdrivers entsprechend versionieren?
  • Wie weiter mit 32Bit-SV-Programmen? => FE/SV
  • 64Bit-Artefakte für FeDB-Zugriffe des Nameservers getrennt für acc6 und acc7 generieren und ins Nexus (csco nicht csco-snapshot) hochladen. Siehe dazu die jeweilige Oracle-Dependency in
    • ./framework/nameservice/server/x86_64/pom.xml und
    • ./framework/nameservice/server/fedbupdate/x86_64/pom.xml.
  • M68k-Compilerbug auf acc7, wie weiter? Ist (vorläufig) erledigt!
    • Auf acc7 ist nun, wie auch auf acc6, m68k-elf-g++ (GCC) 4.3.3 installiert.
    • Zusätzlich wurde ein Problem des von ecmlinkcreate generierten Linkerscripts ecmlink.ld behoben.

Schlussfolgerung

Bedingt durch die neuere Umgebung (omniORB, Python, Oracle) und die notwendigen Änderungen in den POM-Dateien ist für die Generierung der Software kein gleitender Übergang zwischen acc6 und acc7 möglich.

Die komplette Software muss auf acc7 generiert werden. Ist diese released (Subversion, Nexus), ist der Rückweg nicht unmöglich, aber schwierig.

Eine Ausnahme könnte die SE-Software (ECM, EQMs) darstellen. Das ist aber noch zu verifizieren.
Topic revision: r6 - 24 Apr 2019, LudwigHechler
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback