|
@@ -1,89 +0,0 @@
|
|
-#!/usr/bin/env bash
|
|
|
|
-#
|
|
|
|
-# Solaris 12 base image build script.
|
|
|
|
-#
|
|
|
|
-set -e
|
|
|
|
-
|
|
|
|
-# TODO add optional package publisher origin
|
|
|
|
-
|
|
|
|
-rootfsDir="$1"
|
|
|
|
-shift
|
|
|
|
-
|
|
|
|
-# base install
|
|
|
|
-(
|
|
|
|
- set -x
|
|
|
|
-
|
|
|
|
- pkg image-create --full --zone \
|
|
|
|
- --facet facet.locale.*=false \
|
|
|
|
- --facet facet.locale.POSIX=true \
|
|
|
|
- --facet facet.doc=false \
|
|
|
|
- --facet facet.doc.*=false \
|
|
|
|
- "$rootfsDir"
|
|
|
|
-
|
|
|
|
- pkg -R "$rootfsDir" set-property use-system-repo true
|
|
|
|
-
|
|
|
|
- pkg -R "$rootfsDir" set-property flush-content-cache-on-success true
|
|
|
|
-
|
|
|
|
- pkg -R "$rootfsDir" install core-os
|
|
|
|
-)
|
|
|
|
-
|
|
|
|
-# Lay in stock configuration, set up milestone
|
|
|
|
-# XXX This all may become optional in a base image
|
|
|
|
-(
|
|
|
|
- # faster to build repository database on tmpfs
|
|
|
|
- REPO_DB=/system/volatile/repository.$$
|
|
|
|
- export SVCCFG_REPOSITORY=${REPO_DB}
|
|
|
|
- export SVCCFG_DOOR_PATH=$rootfsDir/system/volatile/tmp_repo_door
|
|
|
|
-
|
|
|
|
- # Import base manifests. NOTE These are a combination of basic requirement
|
|
|
|
- # and gleaned from container milestone manifest. They may change.
|
|
|
|
- for m in $rootfsDir/lib/svc/manifest/system/environment.xml \
|
|
|
|
- $rootfsDir/lib/svc/manifest/system/svc/global.xml \
|
|
|
|
- $rootfsDir/lib/svc/manifest/system/svc/restarter.xml \
|
|
|
|
- $rootfsDir/lib/svc/manifest/network/dns/client.xml \
|
|
|
|
- $rootfsDir/lib/svc/manifest/system/name-service/switch.xml \
|
|
|
|
- $rootfsDir/lib/svc/manifest/system/name-service/cache.xml \
|
|
|
|
- $rootfsDir/lib/svc/manifest/milestone/container.xml ; do
|
|
|
|
- svccfg import $m
|
|
|
|
- done
|
|
|
|
-
|
|
|
|
- # Apply system layer profile, deleting unnecessary dependencies
|
|
|
|
- svccfg apply $rootfsDir/etc/svc/profile/generic_container.xml
|
|
|
|
-
|
|
|
|
- # XXX Even if we keep a repo in the base image, this is definitely optional
|
|
|
|
- svccfg apply $rootfsDir/etc/svc/profile/sysconfig/container_sc.xml
|
|
|
|
-
|
|
|
|
- for s in svc:/system/svc/restarter \
|
|
|
|
- svc:/system/environment \
|
|
|
|
- svc:/network/dns/client \
|
|
|
|
- svc:/system/name-service/switch \
|
|
|
|
- svc:/system/name-service/cache \
|
|
|
|
- svc:/system/svc/global \
|
|
|
|
- svc:/milestone/container ;do
|
|
|
|
- svccfg -s $s refresh
|
|
|
|
- done
|
|
|
|
-
|
|
|
|
- # now copy the built up repository into the base rootfs
|
|
|
|
- mv $REPO_DB $rootfsDir/etc/svc/repository.db
|
|
|
|
-)
|
|
|
|
-
|
|
|
|
-# pkg(1) needs the zoneproxy-client running in the container.
|
|
|
|
-# use a simple wrapper to run it as needed.
|
|
|
|
-# XXX maybe we go back to running this in SMF?
|
|
|
|
-mv "$rootfsDir/usr/bin/pkg" "$rootfsDir/usr/bin/wrapped_pkg"
|
|
|
|
-cat > "$rootfsDir/usr/bin/pkg" <<-'EOF'
|
|
|
|
-#!/bin/sh
|
|
|
|
-#
|
|
|
|
-# THIS FILE CREATED DURING DOCKER BASE IMAGE CREATION
|
|
|
|
-#
|
|
|
|
-# The Solaris base image uses the sysrepo proxy mechanism. The
|
|
|
|
-# IPS client pkg(1) requires the zoneproxy-client to reach the
|
|
|
|
-# remote publisher origins through the host. This wrapper script
|
|
|
|
-# enables and disables the proxy client as needed. This is a
|
|
|
|
-# temporary solution.
|
|
|
|
-
|
|
|
|
-/usr/lib/zones/zoneproxy-client -s localhost:1008
|
|
|
|
-PKG_SYSREPO_URL=http://localhost:1008 /usr/bin/wrapped_pkg "$@"
|
|
|
|
-pkill -9 zoneproxy-client
|
|
|
|
-EOF
|
|
|
|
-chmod +x "$rootfsDir/usr/bin/pkg"
|
|
|