Skip to content

New Installer: Instsys Languages

Ladislav Slezák edited this page Oct 16, 2013 · 1 revision

Scripting Languages used in Inst-Sys

Bash

YaST uses it, e.g. for:

  • startup scripts

Why? Bash is suitable and common for the task.

YCP

Deprecated since openSUSE-13.1, Ruby is preferred now. (YaST has been automatically translated from YCP to Ruby.)

YCP support is still present (because it is used internally as the communication protocol), but in the long term it should be removed.

Required resources: yast2-core needs 3MB uncompressed storage.

Perl

YaST uses it, e.g. for:

  • libstorage bindings
  • various modules, e.g. UsersSimple.pm, MailTable.pm, Bootloader_API.pm

Various scripts, e.g.:

  • /usr/sbin/xkbctrl (called by YaST)
  • /usr/sbin/fonts-config
  • /usr/sbin/insserv
  • /usr/bin/chkconfig

(Note: this can be different in SLE12 because of the systemd...)

Required resources: perl and perl-base need 36MB uncompressed storage.

Python

Python is only included in the gdb extension.

One script:

  • lsusb.py (not called by YaST)

Required resources: python, python-base and libpython need about 24MB uncompressed storage.

XSLT

YaST uses it, e.g.:

  • AutoinstClass.ycp and AutoInstallRules.ycp

Why? Because XSLT is designed for processing XML.

Required resources: libxslt1 and libxslt-tools need about 500kB uncompressed storage.

Ruby

Included in inst-sys since openSUSE-13.1 (after YCP to Ruby conversion). Now it is the main YaST implementation language.

Required resources: ruby and ruby19 need about 17MB uncompressed storage.

Storage Consideration

The storage requirements above are the sizes as reported by rpm on 32 bit openSUSE 12.2.

The scripting languages Perl, Python and Ruby require large storage space (main memory during installation). The numbers above are without modules, eggs, or gems. Taking the memory requirements from §2.1.5 into account adding a new languages should only be done if unavoidable.

(Note: on the other hand e.g. the standard Ruby libraries already contain support for network communication, SSL, YAML/XML/JSON parsers, etc... which means less additional libraries are needed when compared e.g. to YCP.)