bfagent not compiling (build-zos command) on z/OS

310000GNJ4 gravatar image

Frage von Marco Arboleda (624) | 11 12 2015 um 08:25

The following documentation is being followed:

Installing and running the agent on System z platforms

A problem is being experienced in part 4b. (the ./build-zos command). This is the error being seen:

A005:/u/tp51274/bfagent/bfagent- # ./build-zos
+ xlc -g -Wc,langlvl(longlong) -Wc,DLL -Wl,DLL -o bfagent agent.o bf_ipv6.o bf_poll.o bfconf.o bfcryptloader.o bfpwdlocloader.o buffer.o builtins.o ccase.o convert.o crypt.o daemon.o env.o exec.o expand.o hash.o io.o jobmon.o main.o md5.o misc.o mkdir.o pam.o ping.o platform.o pty.o read.o regcomp.o regerror.o regexec.o regfree.o request.o rmdir.o send.o string.o sysconf.o time.o unlink.o write.o /usr/lpp/gskssl/lib/GSKSSL.x
FSUM3052 The data definition name SYSLIB cannot be resolved. The data set was not found. Ensure that data set name CEE.SCEELKEX is specified correctly.
bfagent compilation failed

The troubleshooting fix provided doesn’t work:

Troubleshooting the agent installation on z/OS

This is with Build Forge agent 8.0 and on z/OS.

1 Antwort

310000GNJ4 gravatar image

Antwort von Marco Arboleda (624) | 11 12 2015 um 08:48

For XL compiler default installation, the configuration file (called xlc.cfg) should normally reside under the path: /usr/lpp/cbclib/xlc/etc/xlc.cfg
If you have this file, run the following check:
• Search for “sceel” string in xlc.cfg file as follows:

grep -i sceel /usr/lpp/cbclib/xlc/etx/xlc.cfg

For example, the output on our machine was:

syslib = cee.sceelkex:cee.sceelked:cbc.sccnobj:sys1.csslib
exportlist_cpp = cee.sceelib(c128n):cbc.sclbsid(iostream,complex)
exportlist_c_x = cee.sceelib(celhs003,celhs001)
exportlist_cpp_x = cee.sceelib(celhs003,celhs001,celhscpp,c128):cbc.sclbsid(iostream,complex)
exportlist_c_64 = cee.sceelib(celqs003)
exportlist_cpp_64 = cee.sceelib(celqs003,celqscpp,c64):cbc.sclbsid(iosx64)

which means that all those libraries are under default location.

Provided you have this configuration file and its output is similar, please perform the following steps:
1. Copy the xlc.cfg file to your preferred location (where you can write to the file, do not change the original /usr/lpp/cbclib/xlc/etc/xlc.cfg)

2. Modify its content by replacing “cee” HLQ with “sys1.le370”


to (assuming all of them are under sys.1le370 hlq):

N.B. It is also recommended that you check if any other libraries in xlc.cfg that point to the default hlq need to be changed in accordance with your ACTUAL installation hlq name.
• After step (2) is done, run the same command as before, but it should point to this new xlc.cfg file:

xlc -g -Wc,langlvl(longlong) -Wc,DLL -Wl,DLL -o bfagent (set of object files) /usr/lpp/gskssl/lib/GSKSSL.x -F (path_to_new)/xlc.cfg

Advertisements Record and share your terminal sessions, the right way Record and share your terminal sessions, the right way

Forget screen recording apps and blurry video. Enjoy a lightweight, purely text-based approach to terminal recording.

asciinema [as-kee-nuh-muh] is a free and open source solution for recording terminal sessions and sharing them on the web. Read about how it works.
Simple recording
Record right where you work – in a terminal. To start just run asciinema rec, to finish hit Ctrl-D or type exit.

Get started »

Copy & paste
Any time you see a command you’d like to try in your own terminal just pause the player and copy-paste the content you want. It’s just a text after all!

Easily embed an asciicast player in your blog post, project documentation page or in your conference talk slides.

ttyd – Share your terminal over the web

ttyd – Share your terminal over the web

ttyd – Share your terminal over the web Build Status

ttyd is a simple command-line tool for sharing terminal over the web, inspired by GoTTY.



  • Built on top of Libwebsockets with C for speed
  • Fully-featured terminal based on Xterm.js with CJK (Chinese, Japanese, Korean) and IME support
  • SSL support based on OpenSSL
  • Run any custom command with options
  • Basic authentication support and many other custom options
  • Cross platform: macOS, Linux, FreeBSD, OpenWrt/LEDE, Windows


Install on macOS

Install with homebrew:

brew install ttyd

Install on Linux

  • Install from ppa (ubuntu 16.04 and later):

    sudo apt-get install -y software-properties-common
    sudo add-apt-repository ppa:tsl0922/ttyd-dev
    sudo apt-get update
    sudo apt-get install ttyd
  • Build from source (debian/ubuntu):

    sudo apt-get install cmake g++ pkg-config git vim-common libwebsockets-dev libjson-c-dev libssl-dev
    git clone
    cd ttyd && mkdir build && cd build
    cmake ..
    make && make install

    You may need to compile/install libwebsockets from source if the libwebsockets-dev package is outdated.

Install on Windows

ttyd can be built with MSYS2 on windows, The build instructions is here.

NOTE: Native windows console programs may not work correctly due to pty incompatibility issues.
As a workaround, you can use winpty as a wrapper to invoke the windows program, eg: ttyd winpty cmd.

Install on OpenWrt/LEDE

LEDE 17.01.0 and later:

opkg install ttyd

If the install command fails, you can compile it yourself.


Command-line Options

ttyd is a tool for sharing terminal over the web

    ttyd [options] <command> [<arguments...>]


    --port, -p              Port to listen (default: 7681, use `0` for random port)
    --interface, -i         Network interface to bind (eg: eth0), or UNIX domain socket path (eg: /var/run/ttyd.sock)
    --credential, -c        Credential for Basic Authentication (format: username:password)
    --uid, -u               User id to run with
    --gid, -g               Group id to run with
    --signal, -s            Signal to send to the command when exit it (default: SIGHUP)
    --signal-list           Print a list of supported signals
    --reconnect, -r         Time to reconnect for the client in seconds (default: 10)
    --readonly, -R          Do not allow clients to write to the TTY
    --client-option, -t     Send option to client (format: key=value), repeat to add more options
    --check-origin, -O      Do not allow websocket connection from different origin
    --max-clients, -m       Maximum clients to support (default: 0, no limit)
    --once, -o              Accept only one client and exit on disconnection
    --browser, -B           Open terminal with the default system browser
    --index, -I             Custom index.html path
    --ssl, -S               Enable SSL
    --ssl-cert, -C          SSL certificate file path
    --ssl-key, -K           SSL key file path
    --ssl-ca, -A            SSL CA file path for client certificate verification
    --debug, -d             Set log level (default: 7)
    --version, -v           Print the version and exit
    --help, -h              Print this text and exit

Visit to get more information and report bugs.

Example Usage

ttyd starts web server at port 7681 by default, you can use the -p option to change it, the command will be started with arguments as options. For example, run:

ttyd -p 8080 bash -x

Then open http://localhost:8080with a broswer, you will get a bash shell with debug mode enabled.

More Examples:

  • If you want to login with your system accounts on the web broswer, run ttyd login.
  • You can even run a none shell command like vim, try: ttyd vim, the web broswer will show you a vim editor.
  • Sharing single process with multiple clients: ttyd tmux new -A -s ttyd vim, run tmux new -A -s ttyd to connect to the tmux session from terminal.

SSL how-to

Generate SSL CA and self signed server/client certificates:

# CA certificate (FQDN must be different from server/client)
openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
# server certificate
openssl req -newkey rsa:2048 -nodes -keyout server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
# client certificate (the p12/pem format may be useful for some clients)
openssl req -newkey rsa:2048 -nodes -keyout client.key -out client.csr
openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 02 -out client.crt
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
openssl pkcs12 -in client.p12 -out client.pem -clcerts

Then start ttyd:

ttyd --ssl --ssl-cert server.crt --ssl-key server.key --ssl-ca ca.crt bash

You may want to test the client certificate verification with curl:

curl --insecure --cert client.p12[:password] -v https://localhost:7681

If you don’t want to enable client certificate verification, remove the --ssl-ca option.

Docker and ttyd

Docker containers are jailed environments which are more secure, this is useful for protecting the host system, you may use ttyd with docker like this:

  • Sharing single docker container with multiple clients: docker run -it --rm -p 7681:7681 tsl0922/ttyd.
  • Creating new docker container for each client: ttyd docker run -it --rm ubuntu.


  • GoTTY: ttyd is a port of GoTTY to C language with many improvements.
  • Libwebsockets: is used to build the websocket server.
  • Xterm.js: is used to run the terminal emulator on the web, hterm is used previously.