Novell Enterprise Linux Software Development Kit

Sven Dummer

Product Manager

SUSE LINUX Products GmbH – Novell, Inc.

Purpose of this Session

This session is right for you, if

you want to learn about Novell's Linux SDKs, what the principles behind their design are and how to get and install them

you are thinking about developing for or porting apps to Linux and want to know what the recommended way is

you want to learn how SUSE / Novell can offer you a Linux Solution Stack that you can develop applications for

This session might be wrong for you, if

you're very familiar with the SUSE Linux development model

you're looking for technical details of Linux development tools or even want to dive into code (nota bene: this is an overview!)

you want to learn about a certain programming technique
or development tool

Agenda

Common Code Base & AutoBuild
- The Challenge of Open Source Development

The Development Solution Stack
- SLES 9 SDK & NLD 9 SDK
- How to get & install
- Main Component Overview
- Architectural Differences

Best Practice: Using SUSE's “build.rpm”
- How to use cleanroom build environments (just as SUSE R&D does)
- Usage Example

Outlook

Common Code Base & AutoBuild™

Common Code Base &
AutoBuild

The Challenge of OSS Development

Community

Code Stream

The

Open Source Code Stream

is

huge, fast & powerful

The Challenge of OSS Development

Thousands of OSS Community Projects

Tens of Thousands of Developers

Hundreds of Timelines

Version Splintering

Lack of Support

High Quality Software at no or low cost

Solutions for nearly all Purposes

High Innovation & Evolution Levels

...on one hand...

Community

Code Stream

The Challenge of OSS Development

Products

Customers expect
ready-to-use Products
from one Vendor,
with defined Timelines,
Versioning, Maintenance
and Support

Customer

Expectations

...on the other hand...

The Challenge of OSS Development

Thousands of OSS Community Projects

Tens of Thousands of Developers

Hundreds of Timelines

Version Splintering

Lack of Support

High Quality Software at no or low cost

Solutions for nearly all Purposes

High Innovation & Evolution Levels

...on one hand...

Community

Code Stream

Products

Customers expect
ready-to-use Products
from one Vendor,
with defined Timelines,
Versioning, Maintenance
and Support

Customer

Expectations

...on the other hand...

Products

Customers expect
ready-to-use Products
from one Vendor,
with defined Timelines,
Versioning, Maintenance
and Support

Customer

Expectations

Thousands of OSS Community Projects

Tens of Thousands of Developers

Hundreds of Timelines

Version Splintering

Lack of Support

High Quality Software at no or low cost

Solutions for nearly all Purposes

High Innovation & Evolution Levels

Community

Code Stream

The Challenge of OSS Development

Products

Customers expect
ready-to-use Products
from one Vendor,
with defined Timelines,
Versioning, Maintenance
and Support

Customer

Expectations

Thousands of OSS Community Projects

Tens of Thousands of Developers

Hundreds of Timelines

Version Splintering

Lack of Support

High Quality Software at no or low cost

Solutions for nearly all Purposes

High Innovation & Evolution Levels

Community

Code Stream

The Challenge of OSS Development

x86

Itanium

AMD64 / EM64T

POWER

S/390

zSeries

Products

Customer

Expectations

Community

Code Stream

The Challenge of OSS Development

x86

Itanium

AMD64 / EM64T

POWER

S/390

zSeries

Common Code Base

AutoBuild™

Automated system identifies incompatibilities

Automated + Manual Regression

Quality Assurance Processes

Feature Testing

Novell SuperLab

SUSE Labs

SUSE LINUX

Enterprise Server

Novell Linux Desktop

Novell Open

Enterprise Server

Fixes & Enhancements

Your Products

Customer

Expectations

Community

Code Stream

The Challenge of OSS Development

x86

Itanium

AMD64 / EM64T

POWER

S/390

zSeries

SUSE LINUX

Enterprise Server

Novell Linux Desktop

Novell Open

Enterprise Server

Novell gives you an

Enterprise-Class

Common Code Based

Linux Solution Stack

to build your own
Applications and Services on.

Linux Solution Stack

The Development Solution Stack:
SLES 9 SDK & NLD 9 SDK

SLES 9 SDK – the Whys & Wherefores

SLES doesn't come with development tools - it's a Server!

SLES contains only a very basic set of dev tools needed because of package dependencies

e.g. Oracle requires an installed compiler

There are no IDEs, versioning tools etc.

Need to facilitate development on SLES

prevent developers from having to get and configure all the different tools by themselves

provide a standardized, easy to set up development environment that can be rolled out & deployed via YaST

SLES 9 SDK – the Whys & Wherefores

The SDK is more than

a “classical” SDK:

it's a complete collection of

all-purpose development tools!

SLES 9 SDK – Main Design Principles

SLES 9 SDK...

is built using AutoBuild™ Technology

contains all tools used to build SLES 9

is available on all SLES supported architectures

x86, Itanium, AMD64, POWER, s/390, zSeries

is an Add-On for the SLES 9 based family of products

contains Eclipse as a strategic compoment

is available free of charge

SLES 9 SDK – Functional Overview

SDK

umbrello, xfig, dia, TaskJuggler, ...

Eclipse, Anjuta, Kdevelop. QtDesigner, ...

Emacs, vi, Quanta, Source Navigator, ...

GCC Suite, JDKs (IBM, SUN, BEA), Mono

make, automake, build, ...

GCC Suite, gdb, ddd, ...

ElectricFence, strace, ...

CVS, Subversion, ...

(Application specific)

RPM

LaTeX, DocBook,

Doxygen, GIMP, ImageMagic

Design, Modeling, Proj Mgmt

Coding Tools & IDEs

Build & Compile Tools

Documentation

Versioning, Packaging

Diagnostics, Debuggers

Performance Profiling

SLES 9 SDK – Functional Overview

SDK

umbrello, xfig, dia, TaskJuggler, ...

Eclipse, Anjuta, Kdevelop. QtDesigner, ...

Emacs, vi, Quanta, Source Navigator, ...

GCC Suite, JDKs (IBM, SUN, BEA), Mono

make, automake, build, ...

GCC Suite, gdb, ddd, ...

ElectricFence, strace, ...

CVS, Subversion, ...

(Application specific)

RPM

LaTeX, DocBook,

Doxygen, GIMP, ImageMagic

Design, Modeling, Proj Mgmt

Coding Tools & IDEs

Build & Compile Tools

Documentation

Versioning, Packaging

Diagnostics, Debuggers

Performance Profiling

ca. 450 packages

taken out of existing

AutoBuild branches

SLES 9 SDK – Functional Overview

SDK

umbrello, xfig, dia, TaskJuggler, ...

Eclipse, Anjuta, Kdevelop. QtDesigner, ...

Emacs, vi, Quanta, Source Navigator, ...

GCC Suite, JDKs (IBM, SUN, BEA), Mono

make, automake, build, ...

GCC Suite, gdb, ddd, ...

ElectricFence, strace, ...

CVS, Subversion, ...

(Application specific)

RPM

LaTeX, DocBook,

Doxygen, GIMP, ImageMagic

Design, Modeling, Proj Mgmt

Coding Tools & IDEs

Build & Compile Tools

Documentation

Versioning, Packaging

Diagnostics, Debuggers

Performance Profiling

ca. 470 packages

taken out of existing

AutoBuild branches

Main Components

Gnome / GTK

KDE / Qt

Java / J2EE

Scripting

Kernel / Basics / Devices

.NET / Mono

1

2

3

4

5

6

7

Web / LAMP

Anjuta DevStudio

Kdevelop / Qt Designer

Eclipse / JDKs (BEA, Sun, IBM)

Apache / MySQL / PHP / Quanta+

GNU Compiler Collection / Libraries / Tools

Perl, Python, Shell

Mono.develop / GTK# / ...

“Helpers”

8

LaTeX, DocBook, emacs, vim

How to get & install

SLES 9 SDK – how to get & install

Please go to

http://developer.novell.com/ndk/susedk.htm

Prerequisites:

SLES 9 installed

Learn how to get an Evaluation Copy under
http://www.novell.com/products/linuxenterpriseserver/

You can download ISO CD images for:

x86 (i386®)

AMD64™/Intel® EM64T (x86-64)

Intel® Itanium(R) Processor Family (ia64)

IBM® POWER™ (ppc)

IBM® S390® (s390) & IBM® zSeries® (s390x)

SLES 9 SDK – how to get & install

Prerequisites:

Installed SUSE LINUX Enterprise Server 9
(Default installation is recommended)

Get SDK 9 CDs or provide it over network
(NFS, FTP, HTTP)

Start YaST

and add the SDK CDs as installation source media

keep also the SLES installation source media because some SDK packages require components that are on the SLES media (and will then be fetched from there)

SLES 9 SDK – how to get & install

Testing

For the x86 (i386) platform, you can directly install the SDK from the Web without having to download the ISO image:

As root, bring up YAST | Software | Change source of installation. Add a new HTTP source.

For the server name enter: 'download.novell.com'

For the directory on server enter: 'cached/SDK/SLES9-i386'

Click Finish and from the same Software window click

'Install and Remove Software'

SLES 9 SDK – User Experience
YaST package selections

SDK

|

|-- Documentation and publishing

|-- Other tools and libraries

|-- Perl

|-- Web Based Enterprise Management

|-- Web and graphics tools

|-- YaST

SLES 9 SDK – User Experience
YaST package selection dialog

Testing

NLD 9 SDK – how to get & install

Please go to

http://developer.novell.com/ndk/nldsdk.htm

Prerequisites:

NLD 9 installed

have your system activated against the ZENworks® Linux Management servers at update.novell.com

Learn how to get an Evaluation Copy & Activation Key under
http://www.novell.com/products/desktop/

Very similar to SLES 9 SDK,

but installed via a

Red Carpet Channel

instead of YaST

SLES 9 SDK:
Architecural Differences

Due to differences between architectures, few packages are only available for x86:

Eclipse (will be changed with SP 1)

valgrind

kdesdk3-profile (requires valgrind)

kernel-um and um-host-kernel
(User Mode Linux only for x86)

dosemu

etherboot, mknbi

uClibc

memtest86

SLES 9 SDK – Architectural Differences

Tools and kernel modules for x86 specific hardware

tpctl and km_tpctl (ThinkPad Control)

avmfritzcapi and km_fritzcapi (ISDN Card)

ndiswrapper and km_ndiswrapper

fglrx and km_fglrx

Bi-arch systems like AMD64 and PPC contain
some tools compiled in 32- and 64-Bit mode:

DirectFB

libmpeg3

speex

taglib

xine-lib

SLES 9 SDK – Architectural Differences

Due to different Java licensing models there are
different Java-SDK vendors and versions on SLES 9:

x86 and IPF

BEAJava2 (BEA) version 1.4.2

IBMJava2 (IBM) version 1.4.2

java2 (Sun) version 1.4.2

x86_64

java2 (Sun) version 1.4.2

IBM POWER

IBMJava2 (IBM) version 1.4.2

java2 (Sun) version 1.3.1

IBM S/390 and S/390x

IBMJava2 (IBM) version 1.4.2

SLES 9 SDK – Architectural Differences

Best Practice:
Using SUSE build.rpm

The Virtual Side of Life…

Why SUSE LINUX Developers love Sandboxes

Provides a “system in a system”

Lets you run different systems & versions on one machine

Better crashing your sandboxed system than the one you're working on :-)

Saves time, reduces efforts & costs: getting a fresh “cleanroom like” environment without having to install & setup a new machine, reboot etc.

The Times They Are A-Changin'

Change Root – the chroot command

chroot is a simple, yet powerful command

chroot changes the root directory

gives you an “empty” environment

...in which nothing will work as no more hardware, system libraries, commands or paths are known

it's up to you to fill this new empty space – or let SUSE's build.rpm do that work for you!

Jail House Rock

The Change Root Jail

On UNIX systems, everything is a file – even hardware is represented through files
(e.g. /dev/hda1)

So you can copy system files into the chrooted directory and setup a “system in a system”

You can even install & run an entire Linux system into that directory!

Processes running in that system can't break out of it

However, both systems still share the same kernel

Build me up

SUSE LINUX build.rpm

With build.rpm, you're just two little steps away from setting up a chroot jail, installing a build system into it, chroot into that system, compile your code and build both a binary and a source rpm package

STEP 1:

Insert (for example) a SLES CD into your drive

STEP 2:

Type “build”

build.rpm – Example (I)
Prepare your source code for RPM build

build.rpm – Example (II)
Open a root shell in your source directory

build.rpm – Example (III)
Call “build” with inserted Installation CD

build.rpm – Example (IV)
“build” automagically installs SLES into a chroot jail

build.rpm – Example (V)
“build” executes build, calls compiler ...

build.rpm – Example (VI)
...and creates the RPM packages. That's all, folks!

The Future:
Novell Linux SDK & Virtualization

Why Developers love Virtual Machine Sandboxes

Provides a “system in a system”

Lets you run different systems and versions on one machine

for example, run SLES 8, 9, 10 and NLD 9, 10 in a virtual machine on your workstation

Better crashing your sandboxed system than the one you're working on :-)

Saves time, reduces efforts & costs

getting a fresh “cleanroom like” environment without having to install & setup a new machine, reboot etc.

Common Code Usage

Lets you use the same source code directory to target different Novell Linux platforms – without leaving your workstation machine

How does Novell serve the Developer Market?

Products

Online Portal & Info

Community

Support

Training

Events

ISV programs

Technical Subscriptions, NDKs, LINUX SDKs

http://developer.novell.com/

http://forge.novell.com/

Developer Services, OnSite Labs

“Cool Solutions”, DeveloperNetWebinar

BrainShare, Seminar Tour, Fairs, CeBIT, LWE

YES Certification Program

Thank You

Backup Slides

BrainShare Session IO 201

Novell Enterprise Linux SDK - BrainShare 2005 - IO201

Novell Enterprise Linux SDK

2004-01-28T12:03:58