SlideShare a Scribd company logo
pkgsrc on SmartOS

                        Jonathan Perkin     @jperkin
                        Software Engineer   jperkin@joyent.com
                        Joyent              jperkin@pkgsrc.org




Saturday, 23 March 13
Agenda

              •    Introduction

              •    History and background to SmartOS

              •    pkgsrc usage in SmartOS

              •    pkgsrc features we’ve developed

              •    pkgsrc development at Joyent

              •    Our pkgsrc wishlist




Saturday, 23 March 13
$ whoami!

              •    Started working on pkgsrc in 2001

              •    Used pkgsrc on Solaris internally at BBC

              •    Worked on build systems and release engineering for MySQL/Sun/Oracle

              •    Now work full-time on pkgsrc for Joyent


         $ uname -a
         SunOS www0-rth.thls.bbc.co.uk 5.7 Generic sun4m sparc SUNW,SPARCstation-20

         $ uptime
          12:28pm       up 5000 day(s),    2 users,    load average: 0.91, 0.89, 0.87




Saturday, 23 March 13
What is SmartOS - History

              •    Solaris 10 released by Sun in 2005

                   •    ZFS, DTrace, Zones, SMF

                   •    Open Source

              •    OpenSolaris continued the development towards Solaris 11

                   •    IPS, Crossbow, Laptop/Desktop support, GNU environment

              •    However, Oracle made Solaris closed source and proprietary in 2010

              •    illumos was born to continue development of the last available OpenSolaris
                   code

                   •    Replace closed-source parts needed to operate the system

                   •    Continue feature development, working with other communities




Saturday, 23 March 13
What is SmartOS - illumos Distributions

              •    Diaspora of Solaris engineers from Oracle and community talent has to illumos
                   distributions focused on specific areas of interest

                   •    Delphix continue DTrace and ZFS development for database virtualisation
                        products

                   •    Nexenta and DEY focus on storage appliances and services

                   •    OmniTI produce OmniOS, a general-purpose illumos distribution for servers

                   •    OpenIndiana continues development of a desktop-oriented environment

                   •    Joyent produce SmartOS with a specific focus on cloud computing




Saturday, 23 March 13
What is SmartOS - Joyent!

              •    Joyent operate a high performance public cloud. The key features of illumos
                   we require which differentiate it are:


                   •    ZFS. Fast, scalable, robust storage


                   •    DTrace. Observability and debugging across everything


                   •    Zones. Low latency and highly customisable virtualisation


                   •    KVM. Ability to run customer’s preferred OS (though we always
                        recommend Zones wherever possible)




Saturday, 23 March 13
What is SmartOS - Thin Hypervisor

              •    SmartOS is a USB/network-booted thin hypervisor

                   •    Open source, available on GitHub

                   •    OS resides on USB stick or PXE

                   •    All disks are dedicated to zones

              •    The “Global Zone” is a ramdisk for zone administration, nothing else

                   •    /usr is a read-only lofs mount, changes to /etc, /root, etc. not permanent

                   •    Upgrades are trivial, replace platform directory and reboot

                   •    Latest “First Customer Ship” build available every 2 weeks

              •    Clear separation between OS (platform) and packages (pkgsrc)

                   •    PREFER_PKGSRC=yes (except for solaris-pam, terminfo)

                   •    Zone images are fully independent of OS version


Saturday, 23 March 13
What is SmartOS - Zones

              •    All work is done inside Zones

                   •    Zones are created from images, made up of a file system image (ZFS
                        snapshot) and metadata (JSON)

                   •    imgadm and vmadm tools for management of images and virtual machines

                   •    OS zones are “sparse” and mount /usr from GZ

              •    KVM systems are just images too, and run qemu process inside a thin zone

                   •    Gain hosting features (throttling, resource management, etc.)

                   •    Additional security




Saturday, 23 March 13
Demo Time!




Saturday, 23 March 13
pkgsrc on SmartOS - Basics

              •    We track quarterly branches for each image version

                   •    2012Q2 => base*-1.8.x, 2012Q4 => base*-1.9.x, etc

              •    Separate images for 32-bit (ABI=32, base) and 64-bit (ABI=64, base64)

              •    Self-contained layout

                   •    PREFIX=/opt/local

                   •    PKG_SYSCONFDIR=/opt/local/etc

                   •    PKG_DBDIR=/opt/local/pkg

              •    Various package sets available

                   •    base for minimal install

                   •    standard for base + common utilities

                   •    percona, riak etc for specific purpose


Saturday, 23 March 13
pkgsrc development

              •    Our users demand additional pkgsrc features that we have developed:

                   •    Multi-architecture binaries and libraries

                   •    SMF support

                   •    “SmartOS is Not GNU/Linux” distribution (PREFIX=/usr)




Saturday, 23 March 13
pkgsrc development - multiarch

              •    Separate 32-bit and 64-bit images are a pain:

                   •    Confusing for users and customers who think it refers to the kernel
                        architecture

                   •    Additional build and storage requirements

                   •    Solaris has had multiarch support since Solaris 7 in 1998, old-time users
                        have come to expect it




Saturday, 23 March 13
pkgsrc development - multiarch #2

              •    High-level overview:

                   •    For multiarch-enabled packages, perform each build stage (extract,
                        patch, ...) twice, once with ABI=32, once with ABI=64

                   •    --bindir= and --libdir= set based on ABI

                   •    Install both to the same DESTDIR, default ABI installed last

                   •    PLIST expansion to cover multiple entries

                   •    isaexec wrapper installed to handle binaries

                   •    Create package

              •    Enable with MULTIARCH=yes in mk.conf




Saturday, 23 March 13
pkgsrc development - multiarch #3

              •    Infrastructure (mk/) changes:

                   •    Each primary phase (e.g. ‘do-extract’) has a wrapper (e.g. ‘do-extract-
                        multi’) which calls the primary target for each ABI

                   •    mk/plist/plist-multiarch.awk handles PLIST expansion

                   •    OPSYS-specific {BIN,LIB}ARCHSUFFIX.{32,64} variables

                        •   BINARCHSUFFIX.32= /i86

                        •   BINARCHSUFFIX.64= /amd64

                   •    pkgtools/isaexec package created, supports ABI environment variable

                   •    pkg_install supports new @link directive for isaexec hardlinks




Saturday, 23 March 13
pkgsrc development - multiarch #4

              •    Converting a simple autoconf/cmake package requires:

                   •    USE_MULTIARCH= bin lib

              •    Converting more complicated custom packages involves:

                   •    USE_MULTIARCH= bin lib

                   •    Change hardcoded lib to lib${LIBARCHSUFFIX}

                   •    Change hardcoded bin to bin${BINARCHSUFFIX}

                   •    Use MULTIARCH_DIRS.{bin,lib}

                   •    Use MULTIARCH_SKIP_DIRS.{bin,lib}

                   •    Complicated WRKSRC handling

              •    Developers, please stop writing your own build systems!




Saturday, 23 March 13
pkgsrc development - multiarch #5

              •    Current status

                   •    Large number of packages converted (p5-* automatically handled)

                   •    SmartOS “trunk” image uses multiarch by default, ~8,000 packages

                   •    504 files changed, 3525 insertions(+), 902 deletions(-)

              •    Developed in Joyent pkgsrc repository

                   •    joyent/feature/multiarch/trunk -> joyent/release/trunk

                   •    joyent/feature/multiarch/YYYYQQ -> joyent/release/YYYYQQ_multiarch




Saturday, 23 March 13
pkgsrc development - SMF

              •    Solaris 10 introduced the Service Management Framework as a replacement
                   for the legacy init.d system. We need to support it.

                   •    svccfg to import a new manifest

                   •    svcadm to enable/disable/restart

                   •    svcs to display status

              •    Small number of infrastructure changes

                   •    New mk/smf.mk

                   •    4 files changed, 131 insertions(+)

              •    Manifest and method files current held externally similar to LOCALPATCHES

                   •    ${SMFBASE}/${PKGPATH}

              •    Developed in joyent/feature/smf/trunk branch



Saturday, 23 March 13
pkgsrc development - SNGL

              •    “SmartOS is Not GNU/Linux”, aka “snuggle”

                   •    Some users not keen on /opt/local layout, we can fix that!

                   •    Flexibility of zones allows /usr -> /system/usr, /lib -> /system/lib, etc.

                   •    pkgsrc built with LOCALBASE=/usr PKG_SYSCONFDIR=/etc

                   •    Symlinks in /usr for compatability, overridden by packages

              •    Works surprisingly well, with caveats

                   •    Most builtin checks are not LOCALBASE=/usr clean

                   •    Some packages (hi perl!) make assumptions about /usr

              •    Would be great to see other users of this, e.g. Linux

                   •    Developed in joyent/feature/sngl/trunk branch




Saturday, 23 March 13
pkgsrc development - gccruntime

              •    SmartOS does not provide GCC runtime (libgcc, libstdc++ etc), needs to come
                   from pkgsrc

                   •    Split runtime out to lang/gcc47-libs package

                   •    Packages register full DEPENDS upon it, use GCC -specs override for RPATH

                   •    USE_PKGSRC_GCC_RUNTIME=yes to enable

                   •    Packages which USE_LIBTOOL handled automatically

              •    Packages which build their own shared libraries need special handling

                   •    USE_GCC_RUNTIME=yes

                   •    Not ideal, compiler.mk sourced early so needs to be set first

              •    Would like to integrate remaining USE_GCC_RUNTIME for 2013Q2

                   •    Currently developed in joyent/feature/gccruntime/trunk



Saturday, 23 March 13
pkgsrc development - misc

              •    OpenJDK7

                   •    Patches from SmartOS user “jesse_” to get latest OpenJDK working

                   •    Mostly working openjdk7-current package, would like to discuss *BSD
                        status

              •    _PBULK_MULTI support for mysql* and percona

                   •    Need a good naming scheme, p5-DBD-mysql51 / p5-DBD-percona55?

              •    Various small changes in joyent/feature/miscfix/trunk




Saturday, 23 March 13
pkgsrc development - git

              •    We develop everything with git / github

                   •    https://github.com/joyent/pkgsrc (thanks joerg!)

                   •    https://github.com/joyent/pkgsrc-wip

                   •    https://github.com/joyent/pkgsrc-joyent

              •    Cheap and fast branching makes it all possible

                   •    upstream/trunk->trunk, upstream/pkgsrc_*->pkgsrc_* (pull --rebase)

                   •    trunk -> joyent/feature/*/trunk -> joyent/release/trunk

                   •    pkgsrc_YYYYQQ -> joyent/feature/*/YYYYQQ -> joyent/release/YYYYQQ

                   •    joyent/feature/*/YYYYQQ -> joyent/release/YYYYQQ_feature

              •    Currently 5 active features (gccruntime, miscfix, multiarch, smf, sngl)

              •    Short-lived branches (joyent/bulktest/*, pkggnudir, openssl1, etc)



Saturday, 23 March 13
pkgsrc development - pbulk

              •    We build lots of binary packages

                   •    /opt/pbulk bootstrap + development tools

                   •    pbulk cluster of 6 client VMs (8 CPU, 8GB each), 1 master, + NFS

                   •    Can perform a full clean bulk build in under 2 days with MAKE_JOBS=8

                   •    Builds done inside chroot for concurrency

              •    Some changes required (in joyent/feature/miscfix/trunk)

                   •    Support creation/deletion of chroots + config file support

                   •    SO_REUSEADDR for limited_list

                   •    Enable rsync of RESTRICTED dependencies

                   •    Add SPECIFIC_PKGS support for full pkgsrc + selected pkgsrc-wip




Saturday, 23 March 13
pkgsrc development - Jenkins

              •    We use Jenkins for triggering bulk builds

                   •    Was in use by other parts of Joyent anyway

              •    GitHub plugin monitors for pushes in joyent/release/* branches

                   •    Build triggered for every push

                   •    Limited to one concurrent build per branch,

              •    Upstream builds triggered via Jenkins “cron”

                   •    Tracked directly from jsonn/pkgsrc.git

                   •    4 builds per week (2 x 32-bit, 2 x 64-bit)

                   •    Results sent directly to pkgsrc-bulk@netbsd.org

              •    Provides quite a nice interface, plus Jabber notification etc.




Saturday, 23 March 13
pkgsrc wishlist

              •    Things we really want at some point:

                   •    Support for multiple repositories in pkgin

                   •    Decent upgrade support / config file management

                   •    Multi-packages (users require different PKG_OPTIONS)

                   •    Additional pbulk-multi support (mysql, postgres, etc.)

              •    Things which would be nice to have:

                   •    apt/dpkg backend support

                   •    Better pkg_alternatives support

                   •    pkgin package aliases (#1 confusion for users is scmgit, #2 is gcc47)

                   •    Working (and updated) xorg server




Saturday, 23 March 13
Thank You!

              •    “All this is possible thanks to the unique way the BBC is funded”

              •    Thank you for all your development work and pkgsrc commits

                   •    We couldn’t handle the pace of upgrades ourselves

                   •    Your work is used further than perhaps you realise

              •    Let’s keep going!

                   •    Regular binary builds for other platforms (OSX, Cygwin)

                   •    Become the de-facto package manager on more platforms

                   •    Users => Fixes => Developers => Users => ...




Saturday, 23 March 13
Thanks!

              •    www.joyent.com - high-performance VMs and private cloud infrastructure

                   •    SmartDataCentre (SDC) powered, SmartOS + additional tooling

                   •    REST APIs for managing VMs

                   •    Cloud Analytics (DTrace) plus other goodies

                   •    Use “FREEJOY” promo code for $125 free credit (2 months running a 1GB
                        SmartMachine)

              •    www.smartos.org - open source OS for running VMs

                   •    Contribute your own images to http://datasets.at/ or publish yourself

              •    Questions?




Saturday, 23 March 13

More Related Content

What's hot

Kvm and libvirt
Kvm and libvirtKvm and libvirt
Kvm and libvirt
plarsen67
 
LCE13: Virtualization Forum
LCE13: Virtualization ForumLCE13: Virtualization Forum
LCE13: Virtualization Forum
Linaro
 
TechDay - Toronto 2016 - Hyperconvergence and OpenNebula
TechDay - Toronto 2016 - Hyperconvergence and OpenNebulaTechDay - Toronto 2016 - Hyperconvergence and OpenNebula
TechDay - Toronto 2016 - Hyperconvergence and OpenNebula
OpenNebula Project
 
OpenWrt From Top to Bottom
OpenWrt From Top to BottomOpenWrt From Top to Bottom
OpenWrt From Top to Bottom
Kernel TLV
 
OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...
OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...
OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...
NETWAYS
 
Integrating gluster fs,_qemu_and_ovirt-vijay_bellur-linuxcon_eu_2013
Integrating gluster fs,_qemu_and_ovirt-vijay_bellur-linuxcon_eu_2013Integrating gluster fs,_qemu_and_ovirt-vijay_bellur-linuxcon_eu_2013
Integrating gluster fs,_qemu_and_ovirt-vijay_bellur-linuxcon_eu_2013
Gluster.org
 
GlusterFS Native driver for Openstack Manila at GlusterNight Paris @ Openstac...
GlusterFS Native driver for Openstack Manila at GlusterNight Paris @ Openstac...GlusterFS Native driver for Openstack Manila at GlusterNight Paris @ Openstac...
GlusterFS Native driver for Openstack Manila at GlusterNight Paris @ Openstac...
Deepak Shetty
 
BSD for Linux Users
BSD for Linux UsersBSD for Linux Users
BSD for Linux Users
Dru Lavigne
 
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copyLinux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Boden Russell
 
OpenNebulaConf 2016 - The DRBD SDS for OpenNebula by Philipp Reisner, LINBIT
OpenNebulaConf 2016 - The DRBD SDS for OpenNebula by Philipp Reisner, LINBITOpenNebulaConf 2016 - The DRBD SDS for OpenNebula by Philipp Reisner, LINBIT
OpenNebulaConf 2016 - The DRBD SDS for OpenNebula by Philipp Reisner, LINBIT
OpenNebula Project
 
Linux Container Brief for IEEE WG P2302
Linux Container Brief for IEEE WG P2302Linux Container Brief for IEEE WG P2302
Linux Container Brief for IEEE WG P2302
Boden Russell
 
Lxc – next gen virtualization for cloud intro (cloudexpo)
Lxc – next gen virtualization for cloud   intro (cloudexpo)Lxc – next gen virtualization for cloud   intro (cloudexpo)
Lxc – next gen virtualization for cloud intro (cloudexpo)
Boden Russell
 
Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)Dobrica Pavlinušić
 
GlusterFS Cinder integration presented at GlusterNight Paris event @ Openstac...
GlusterFS Cinder integration presented at GlusterNight Paris event @ Openstac...GlusterFS Cinder integration presented at GlusterNight Paris event @ Openstac...
GlusterFS Cinder integration presented at GlusterNight Paris event @ Openstac...
Deepak Shetty
 
final proposal-Xen based Hypervisor in a Box
final proposal-Xen based Hypervisor in a Boxfinal proposal-Xen based Hypervisor in a Box
final proposal-Xen based Hypervisor in a BoxParamkusham Shruthi
 
OpenNebula - OpenNebula and tips for CentOS 7
OpenNebula - OpenNebula and tips for CentOS 7OpenNebula - OpenNebula and tips for CentOS 7
OpenNebula - OpenNebula and tips for CentOS 7
OpenNebula Project
 
The State of Rootless Containers
The State of Rootless ContainersThe State of Rootless Containers
The State of Rootless Containers
Akihiro Suda
 
Ovirt and gluster_hyperconvergence_devconf-2016
Ovirt and gluster_hyperconvergence_devconf-2016Ovirt and gluster_hyperconvergence_devconf-2016
Ovirt and gluster_hyperconvergence_devconf-2016
Ramesh Nachimuthu
 

What's hot (20)

Kvm and libvirt
Kvm and libvirtKvm and libvirt
Kvm and libvirt
 
NIH package manager for pkgsrc
NIH package manager for pkgsrcNIH package manager for pkgsrc
NIH package manager for pkgsrc
 
LCE13: Virtualization Forum
LCE13: Virtualization ForumLCE13: Virtualization Forum
LCE13: Virtualization Forum
 
TechDay - Toronto 2016 - Hyperconvergence and OpenNebula
TechDay - Toronto 2016 - Hyperconvergence and OpenNebulaTechDay - Toronto 2016 - Hyperconvergence and OpenNebula
TechDay - Toronto 2016 - Hyperconvergence and OpenNebula
 
OpenWrt From Top to Bottom
OpenWrt From Top to BottomOpenWrt From Top to Bottom
OpenWrt From Top to Bottom
 
OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...
OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...
OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...
 
Integrating gluster fs,_qemu_and_ovirt-vijay_bellur-linuxcon_eu_2013
Integrating gluster fs,_qemu_and_ovirt-vijay_bellur-linuxcon_eu_2013Integrating gluster fs,_qemu_and_ovirt-vijay_bellur-linuxcon_eu_2013
Integrating gluster fs,_qemu_and_ovirt-vijay_bellur-linuxcon_eu_2013
 
GlusterFS Native driver for Openstack Manila at GlusterNight Paris @ Openstac...
GlusterFS Native driver for Openstack Manila at GlusterNight Paris @ Openstac...GlusterFS Native driver for Openstack Manila at GlusterNight Paris @ Openstac...
GlusterFS Native driver for Openstack Manila at GlusterNight Paris @ Openstac...
 
Docker_AGH_v0.1.3
Docker_AGH_v0.1.3Docker_AGH_v0.1.3
Docker_AGH_v0.1.3
 
BSD for Linux Users
BSD for Linux UsersBSD for Linux Users
BSD for Linux Users
 
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copyLinux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
 
OpenNebulaConf 2016 - The DRBD SDS for OpenNebula by Philipp Reisner, LINBIT
OpenNebulaConf 2016 - The DRBD SDS for OpenNebula by Philipp Reisner, LINBITOpenNebulaConf 2016 - The DRBD SDS for OpenNebula by Philipp Reisner, LINBIT
OpenNebulaConf 2016 - The DRBD SDS for OpenNebula by Philipp Reisner, LINBIT
 
Linux Container Brief for IEEE WG P2302
Linux Container Brief for IEEE WG P2302Linux Container Brief for IEEE WG P2302
Linux Container Brief for IEEE WG P2302
 
Lxc – next gen virtualization for cloud intro (cloudexpo)
Lxc – next gen virtualization for cloud   intro (cloudexpo)Lxc – next gen virtualization for cloud   intro (cloudexpo)
Lxc – next gen virtualization for cloud intro (cloudexpo)
 
Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)
 
GlusterFS Cinder integration presented at GlusterNight Paris event @ Openstac...
GlusterFS Cinder integration presented at GlusterNight Paris event @ Openstac...GlusterFS Cinder integration presented at GlusterNight Paris event @ Openstac...
GlusterFS Cinder integration presented at GlusterNight Paris event @ Openstac...
 
final proposal-Xen based Hypervisor in a Box
final proposal-Xen based Hypervisor in a Boxfinal proposal-Xen based Hypervisor in a Box
final proposal-Xen based Hypervisor in a Box
 
OpenNebula - OpenNebula and tips for CentOS 7
OpenNebula - OpenNebula and tips for CentOS 7OpenNebula - OpenNebula and tips for CentOS 7
OpenNebula - OpenNebula and tips for CentOS 7
 
The State of Rootless Containers
The State of Rootless ContainersThe State of Rootless Containers
The State of Rootless Containers
 
Ovirt and gluster_hyperconvergence_devconf-2016
Ovirt and gluster_hyperconvergence_devconf-2016Ovirt and gluster_hyperconvergence_devconf-2016
Ovirt and gluster_hyperconvergence_devconf-2016
 

Similar to pkgsrc on SmartOS

Gentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile EverythingGentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile Everything
Donnie Berkholz
 
Rootless Containers
Rootless ContainersRootless Containers
Rootless Containers
Akihiro Suda
 
FreeBSD hosting
FreeBSD hostingFreeBSD hosting
FreeBSD hosting
punkt.de GmbH
 
Lec 10-linux-review
Lec 10-linux-reviewLec 10-linux-review
Lec 10-linux-review
abinaya m
 
Lessons Learned From Running Spark On Docker
Lessons Learned From Running Spark On DockerLessons Learned From Running Spark On Docker
Lessons Learned From Running Spark On Docker
Spark Summit
 
Introduction to OpenBricks: an Embedded Linux Framework
Introduction to OpenBricks: an Embedded Linux FrameworkIntroduction to OpenBricks: an Embedded Linux Framework
Introduction to OpenBricks: an Embedded Linux FrameworkBenjamin Zores
 
Docking postgres
Docking postgresDocking postgres
Docking postgres
rycamor
 
Navigating container technology for enhanced security by Niklas Saari
Navigating container technology for enhanced security by Niklas SaariNavigating container technology for enhanced security by Niklas Saari
Navigating container technology for enhanced security by Niklas Saari
Metosin Oy
 
Rootless Kubernetes
Rootless KubernetesRootless Kubernetes
Rootless Kubernetes
Akihiro Suda
 
2014 11-05 hpcac-kniep_christian_dockermpi
2014 11-05 hpcac-kniep_christian_dockermpi2014 11-05 hpcac-kniep_christian_dockermpi
2014 11-05 hpcac-kniep_christian_dockermpi
QNIB Solutions
 
FreeBSD is not Linux
FreeBSD is not LinuxFreeBSD is not Linux
FreeBSD is not Linux
Muhammad Moinur Rahman
 
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storageWebinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
MayaData Inc
 
Introducing Container Technology to TSUBAME3.0 Supercomputer
Introducing Container Technology to TSUBAME3.0 SupercomputerIntroducing Container Technology to TSUBAME3.0 Supercomputer
Introducing Container Technology to TSUBAME3.0 Supercomputer
Akihiro Nomura
 
Central Iowa Linux Users Group-December 2019: Windows Managers
Central Iowa Linux Users Group-December 2019: Windows ManagersCentral Iowa Linux Users Group-December 2019: Windows Managers
Central Iowa Linux Users Group-December 2019: Windows Managers
Andrew Denner
 
Intro To Gentoo Embedded Cclug
Intro To Gentoo Embedded CclugIntro To Gentoo Embedded Cclug
Intro To Gentoo Embedded Cclug
Steve Arnold
 
Linux container & docker
Linux container & dockerLinux container & docker
Linux container & docker
ejlp12
 
Introduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra SolutionsIntroduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra Solutions
QUONTRASOLUTIONS
 
Containers - Portable, repeatable user-oriented application delivery. Build, ...
Containers - Portable, repeatable user-oriented application delivery. Build, ...Containers - Portable, repeatable user-oriented application delivery. Build, ...
Containers - Portable, repeatable user-oriented application delivery. Build, ...
Walid Shaari
 
Engage 2020 - Kubernetes for HCL Connections Component Pack - Build or Buy?
Engage 2020 - Kubernetes for HCL Connections Component Pack - Build or Buy?Engage 2020 - Kubernetes for HCL Connections Component Pack - Build or Buy?
Engage 2020 - Kubernetes for HCL Connections Component Pack - Build or Buy?
panagenda
 
Postgre sql linuxcontainers by Jignesh Shah
Postgre sql linuxcontainers by Jignesh ShahPostgre sql linuxcontainers by Jignesh Shah
Postgre sql linuxcontainers by Jignesh Shah
PivotalOpenSourceHub
 

Similar to pkgsrc on SmartOS (20)

Gentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile EverythingGentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile Everything
 
Rootless Containers
Rootless ContainersRootless Containers
Rootless Containers
 
FreeBSD hosting
FreeBSD hostingFreeBSD hosting
FreeBSD hosting
 
Lec 10-linux-review
Lec 10-linux-reviewLec 10-linux-review
Lec 10-linux-review
 
Lessons Learned From Running Spark On Docker
Lessons Learned From Running Spark On DockerLessons Learned From Running Spark On Docker
Lessons Learned From Running Spark On Docker
 
Introduction to OpenBricks: an Embedded Linux Framework
Introduction to OpenBricks: an Embedded Linux FrameworkIntroduction to OpenBricks: an Embedded Linux Framework
Introduction to OpenBricks: an Embedded Linux Framework
 
Docking postgres
Docking postgresDocking postgres
Docking postgres
 
Navigating container technology for enhanced security by Niklas Saari
Navigating container technology for enhanced security by Niklas SaariNavigating container technology for enhanced security by Niklas Saari
Navigating container technology for enhanced security by Niklas Saari
 
Rootless Kubernetes
Rootless KubernetesRootless Kubernetes
Rootless Kubernetes
 
2014 11-05 hpcac-kniep_christian_dockermpi
2014 11-05 hpcac-kniep_christian_dockermpi2014 11-05 hpcac-kniep_christian_dockermpi
2014 11-05 hpcac-kniep_christian_dockermpi
 
FreeBSD is not Linux
FreeBSD is not LinuxFreeBSD is not Linux
FreeBSD is not Linux
 
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storageWebinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
 
Introducing Container Technology to TSUBAME3.0 Supercomputer
Introducing Container Technology to TSUBAME3.0 SupercomputerIntroducing Container Technology to TSUBAME3.0 Supercomputer
Introducing Container Technology to TSUBAME3.0 Supercomputer
 
Central Iowa Linux Users Group-December 2019: Windows Managers
Central Iowa Linux Users Group-December 2019: Windows ManagersCentral Iowa Linux Users Group-December 2019: Windows Managers
Central Iowa Linux Users Group-December 2019: Windows Managers
 
Intro To Gentoo Embedded Cclug
Intro To Gentoo Embedded CclugIntro To Gentoo Embedded Cclug
Intro To Gentoo Embedded Cclug
 
Linux container & docker
Linux container & dockerLinux container & docker
Linux container & docker
 
Introduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra SolutionsIntroduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra Solutions
 
Containers - Portable, repeatable user-oriented application delivery. Build, ...
Containers - Portable, repeatable user-oriented application delivery. Build, ...Containers - Portable, repeatable user-oriented application delivery. Build, ...
Containers - Portable, repeatable user-oriented application delivery. Build, ...
 
Engage 2020 - Kubernetes for HCL Connections Component Pack - Build or Buy?
Engage 2020 - Kubernetes for HCL Connections Component Pack - Build or Buy?Engage 2020 - Kubernetes for HCL Connections Component Pack - Build or Buy?
Engage 2020 - Kubernetes for HCL Connections Component Pack - Build or Buy?
 
Postgre sql linuxcontainers by Jignesh Shah
Postgre sql linuxcontainers by Jignesh ShahPostgre sql linuxcontainers by Jignesh Shah
Postgre sql linuxcontainers by Jignesh Shah
 

Recently uploaded

Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.
ViralQR
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 

Recently uploaded (20)

Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 

pkgsrc on SmartOS

  • 1. pkgsrc on SmartOS Jonathan Perkin @jperkin Software Engineer jperkin@joyent.com Joyent jperkin@pkgsrc.org Saturday, 23 March 13
  • 2. Agenda • Introduction • History and background to SmartOS • pkgsrc usage in SmartOS • pkgsrc features we’ve developed • pkgsrc development at Joyent • Our pkgsrc wishlist Saturday, 23 March 13
  • 3. $ whoami! • Started working on pkgsrc in 2001 • Used pkgsrc on Solaris internally at BBC • Worked on build systems and release engineering for MySQL/Sun/Oracle • Now work full-time on pkgsrc for Joyent $ uname -a SunOS www0-rth.thls.bbc.co.uk 5.7 Generic sun4m sparc SUNW,SPARCstation-20 $ uptime 12:28pm up 5000 day(s), 2 users, load average: 0.91, 0.89, 0.87 Saturday, 23 March 13
  • 4. What is SmartOS - History • Solaris 10 released by Sun in 2005 • ZFS, DTrace, Zones, SMF • Open Source • OpenSolaris continued the development towards Solaris 11 • IPS, Crossbow, Laptop/Desktop support, GNU environment • However, Oracle made Solaris closed source and proprietary in 2010 • illumos was born to continue development of the last available OpenSolaris code • Replace closed-source parts needed to operate the system • Continue feature development, working with other communities Saturday, 23 March 13
  • 5. What is SmartOS - illumos Distributions • Diaspora of Solaris engineers from Oracle and community talent has to illumos distributions focused on specific areas of interest • Delphix continue DTrace and ZFS development for database virtualisation products • Nexenta and DEY focus on storage appliances and services • OmniTI produce OmniOS, a general-purpose illumos distribution for servers • OpenIndiana continues development of a desktop-oriented environment • Joyent produce SmartOS with a specific focus on cloud computing Saturday, 23 March 13
  • 6. What is SmartOS - Joyent! • Joyent operate a high performance public cloud. The key features of illumos we require which differentiate it are: • ZFS. Fast, scalable, robust storage • DTrace. Observability and debugging across everything • Zones. Low latency and highly customisable virtualisation • KVM. Ability to run customer’s preferred OS (though we always recommend Zones wherever possible) Saturday, 23 March 13
  • 7. What is SmartOS - Thin Hypervisor • SmartOS is a USB/network-booted thin hypervisor • Open source, available on GitHub • OS resides on USB stick or PXE • All disks are dedicated to zones • The “Global Zone” is a ramdisk for zone administration, nothing else • /usr is a read-only lofs mount, changes to /etc, /root, etc. not permanent • Upgrades are trivial, replace platform directory and reboot • Latest “First Customer Ship” build available every 2 weeks • Clear separation between OS (platform) and packages (pkgsrc) • PREFER_PKGSRC=yes (except for solaris-pam, terminfo) • Zone images are fully independent of OS version Saturday, 23 March 13
  • 8. What is SmartOS - Zones • All work is done inside Zones • Zones are created from images, made up of a file system image (ZFS snapshot) and metadata (JSON) • imgadm and vmadm tools for management of images and virtual machines • OS zones are “sparse” and mount /usr from GZ • KVM systems are just images too, and run qemu process inside a thin zone • Gain hosting features (throttling, resource management, etc.) • Additional security Saturday, 23 March 13
  • 10. pkgsrc on SmartOS - Basics • We track quarterly branches for each image version • 2012Q2 => base*-1.8.x, 2012Q4 => base*-1.9.x, etc • Separate images for 32-bit (ABI=32, base) and 64-bit (ABI=64, base64) • Self-contained layout • PREFIX=/opt/local • PKG_SYSCONFDIR=/opt/local/etc • PKG_DBDIR=/opt/local/pkg • Various package sets available • base for minimal install • standard for base + common utilities • percona, riak etc for specific purpose Saturday, 23 March 13
  • 11. pkgsrc development • Our users demand additional pkgsrc features that we have developed: • Multi-architecture binaries and libraries • SMF support • “SmartOS is Not GNU/Linux” distribution (PREFIX=/usr) Saturday, 23 March 13
  • 12. pkgsrc development - multiarch • Separate 32-bit and 64-bit images are a pain: • Confusing for users and customers who think it refers to the kernel architecture • Additional build and storage requirements • Solaris has had multiarch support since Solaris 7 in 1998, old-time users have come to expect it Saturday, 23 March 13
  • 13. pkgsrc development - multiarch #2 • High-level overview: • For multiarch-enabled packages, perform each build stage (extract, patch, ...) twice, once with ABI=32, once with ABI=64 • --bindir= and --libdir= set based on ABI • Install both to the same DESTDIR, default ABI installed last • PLIST expansion to cover multiple entries • isaexec wrapper installed to handle binaries • Create package • Enable with MULTIARCH=yes in mk.conf Saturday, 23 March 13
  • 14. pkgsrc development - multiarch #3 • Infrastructure (mk/) changes: • Each primary phase (e.g. ‘do-extract’) has a wrapper (e.g. ‘do-extract- multi’) which calls the primary target for each ABI • mk/plist/plist-multiarch.awk handles PLIST expansion • OPSYS-specific {BIN,LIB}ARCHSUFFIX.{32,64} variables • BINARCHSUFFIX.32= /i86 • BINARCHSUFFIX.64= /amd64 • pkgtools/isaexec package created, supports ABI environment variable • pkg_install supports new @link directive for isaexec hardlinks Saturday, 23 March 13
  • 15. pkgsrc development - multiarch #4 • Converting a simple autoconf/cmake package requires: • USE_MULTIARCH= bin lib • Converting more complicated custom packages involves: • USE_MULTIARCH= bin lib • Change hardcoded lib to lib${LIBARCHSUFFIX} • Change hardcoded bin to bin${BINARCHSUFFIX} • Use MULTIARCH_DIRS.{bin,lib} • Use MULTIARCH_SKIP_DIRS.{bin,lib} • Complicated WRKSRC handling • Developers, please stop writing your own build systems! Saturday, 23 March 13
  • 16. pkgsrc development - multiarch #5 • Current status • Large number of packages converted (p5-* automatically handled) • SmartOS “trunk” image uses multiarch by default, ~8,000 packages • 504 files changed, 3525 insertions(+), 902 deletions(-) • Developed in Joyent pkgsrc repository • joyent/feature/multiarch/trunk -> joyent/release/trunk • joyent/feature/multiarch/YYYYQQ -> joyent/release/YYYYQQ_multiarch Saturday, 23 March 13
  • 17. pkgsrc development - SMF • Solaris 10 introduced the Service Management Framework as a replacement for the legacy init.d system. We need to support it. • svccfg to import a new manifest • svcadm to enable/disable/restart • svcs to display status • Small number of infrastructure changes • New mk/smf.mk • 4 files changed, 131 insertions(+) • Manifest and method files current held externally similar to LOCALPATCHES • ${SMFBASE}/${PKGPATH} • Developed in joyent/feature/smf/trunk branch Saturday, 23 March 13
  • 18. pkgsrc development - SNGL • “SmartOS is Not GNU/Linux”, aka “snuggle” • Some users not keen on /opt/local layout, we can fix that! • Flexibility of zones allows /usr -> /system/usr, /lib -> /system/lib, etc. • pkgsrc built with LOCALBASE=/usr PKG_SYSCONFDIR=/etc • Symlinks in /usr for compatability, overridden by packages • Works surprisingly well, with caveats • Most builtin checks are not LOCALBASE=/usr clean • Some packages (hi perl!) make assumptions about /usr • Would be great to see other users of this, e.g. Linux • Developed in joyent/feature/sngl/trunk branch Saturday, 23 March 13
  • 19. pkgsrc development - gccruntime • SmartOS does not provide GCC runtime (libgcc, libstdc++ etc), needs to come from pkgsrc • Split runtime out to lang/gcc47-libs package • Packages register full DEPENDS upon it, use GCC -specs override for RPATH • USE_PKGSRC_GCC_RUNTIME=yes to enable • Packages which USE_LIBTOOL handled automatically • Packages which build their own shared libraries need special handling • USE_GCC_RUNTIME=yes • Not ideal, compiler.mk sourced early so needs to be set first • Would like to integrate remaining USE_GCC_RUNTIME for 2013Q2 • Currently developed in joyent/feature/gccruntime/trunk Saturday, 23 March 13
  • 20. pkgsrc development - misc • OpenJDK7 • Patches from SmartOS user “jesse_” to get latest OpenJDK working • Mostly working openjdk7-current package, would like to discuss *BSD status • _PBULK_MULTI support for mysql* and percona • Need a good naming scheme, p5-DBD-mysql51 / p5-DBD-percona55? • Various small changes in joyent/feature/miscfix/trunk Saturday, 23 March 13
  • 21. pkgsrc development - git • We develop everything with git / github • https://github.com/joyent/pkgsrc (thanks joerg!) • https://github.com/joyent/pkgsrc-wip • https://github.com/joyent/pkgsrc-joyent • Cheap and fast branching makes it all possible • upstream/trunk->trunk, upstream/pkgsrc_*->pkgsrc_* (pull --rebase) • trunk -> joyent/feature/*/trunk -> joyent/release/trunk • pkgsrc_YYYYQQ -> joyent/feature/*/YYYYQQ -> joyent/release/YYYYQQ • joyent/feature/*/YYYYQQ -> joyent/release/YYYYQQ_feature • Currently 5 active features (gccruntime, miscfix, multiarch, smf, sngl) • Short-lived branches (joyent/bulktest/*, pkggnudir, openssl1, etc) Saturday, 23 March 13
  • 22. pkgsrc development - pbulk • We build lots of binary packages • /opt/pbulk bootstrap + development tools • pbulk cluster of 6 client VMs (8 CPU, 8GB each), 1 master, + NFS • Can perform a full clean bulk build in under 2 days with MAKE_JOBS=8 • Builds done inside chroot for concurrency • Some changes required (in joyent/feature/miscfix/trunk) • Support creation/deletion of chroots + config file support • SO_REUSEADDR for limited_list • Enable rsync of RESTRICTED dependencies • Add SPECIFIC_PKGS support for full pkgsrc + selected pkgsrc-wip Saturday, 23 March 13
  • 23. pkgsrc development - Jenkins • We use Jenkins for triggering bulk builds • Was in use by other parts of Joyent anyway • GitHub plugin monitors for pushes in joyent/release/* branches • Build triggered for every push • Limited to one concurrent build per branch, • Upstream builds triggered via Jenkins “cron” • Tracked directly from jsonn/pkgsrc.git • 4 builds per week (2 x 32-bit, 2 x 64-bit) • Results sent directly to pkgsrc-bulk@netbsd.org • Provides quite a nice interface, plus Jabber notification etc. Saturday, 23 March 13
  • 24. pkgsrc wishlist • Things we really want at some point: • Support for multiple repositories in pkgin • Decent upgrade support / config file management • Multi-packages (users require different PKG_OPTIONS) • Additional pbulk-multi support (mysql, postgres, etc.) • Things which would be nice to have: • apt/dpkg backend support • Better pkg_alternatives support • pkgin package aliases (#1 confusion for users is scmgit, #2 is gcc47) • Working (and updated) xorg server Saturday, 23 March 13
  • 25. Thank You! • “All this is possible thanks to the unique way the BBC is funded” • Thank you for all your development work and pkgsrc commits • We couldn’t handle the pace of upgrades ourselves • Your work is used further than perhaps you realise • Let’s keep going! • Regular binary builds for other platforms (OSX, Cygwin) • Become the de-facto package manager on more platforms • Users => Fixes => Developers => Users => ... Saturday, 23 March 13
  • 26. Thanks! • www.joyent.com - high-performance VMs and private cloud infrastructure • SmartDataCentre (SDC) powered, SmartOS + additional tooling • REST APIs for managing VMs • Cloud Analytics (DTrace) plus other goodies • Use “FREEJOY” promo code for $125 free credit (2 months running a 1GB SmartMachine) • www.smartos.org - open source OS for running VMs • Contribute your own images to http://datasets.at/ or publish yourself • Questions? Saturday, 23 March 13