src/util/distro-import/Makefile
author David.Comay@Sun.COM
Fri, 13 Jun 2008 13:58:32 -0700
changeset 387 397177e3bf8d
parent 378 cff3113e592c
child 403 dfac69ec5fcc
permissions -rw-r--r--
2233 changes required to import snv_91

#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#

#
# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#

#
# Needs to point to filesystem on Solaris install dvd
# replace as needed with a local solaris install image
#
WOS_PKGS=/net/netinstall.sfbay/export/nv/x/$(BUILDID)/Solaris_11/Product
NONWOS_PKGS=/net/paradise.sfbay/export/integrate_dock/nv/nv_osol0811/all \
            /net/paradise.sfbay/export/integrate_dock/nv/nv_osol0811/i386

TEST_PKGS=
REPO=http://localhost:10000
JUST_THESE_PKGS=

ALL_PKGS=$(TEST_PKGS) \
	 $(NONWOS_PKGS) \
	 $(WOS_PKGS)

TMPPKGS=SUNWfixes
EXTRA_OPTIONS=
SOLARIS.PY=./solaris.py -b 0.$(BUILDID) $(EXTRA_OPTIONS)

#
# always remove the following (editable) files from packages we bulk import;
# we're doing this until the necessary actions are available.  For now,
# cache as-installed versions.
#
ELIDED_FILES= \
	boot/solaris/devicedb/master	\
	etc/devlink.tab			\
	etc/hba.conf			\
	etc/ima.conf			\
	etc/inet/services		\
	etc/mpapi.conf			\
	etc/security/auth_attr		\
	etc/security/exec_attr		\
	etc/security/prof_attr		\
	etc/user_attr			\
	kernel/drv/sd.conf

#
# these files get placed into proto area from per-build cached versions
#
CACHED_FILES=								\
	$(ELIDED_FILES)							\
	boot/grub/menu.lst						\
	boot/grub/splash.xpm.gz						\
	etc/inet/hosts							\
	etc/zones/SUNWblank.xml						\
	etc/zones/SUNWdefault.xml					\
	lib/svc/method/fs-usr						\
	lib/svc/method/sshd						\
	lib/svc/method/svc-coreadm					\
	lib/svc/method/svc-dlmgmtd					\
	usr/jdk/instances/jdk1.6.0/jre/lib/fontconfig.properties	\
	usr/lib/vp-services						\
	usr/lib/vp-shares						\
	var/svc/manifest/system/coreadm.xml				\
	var/svc/profile/generic_limited_net.xml				\
	var/svc/profile/generic_open.xml

FIXFILES=					\
	boot/solaris/filelist.ramdisk		\
	etc/X11/gdm/custom.conf			\
	etc/driver_aliases			\
	etc/name_to_major			\
	etc/nsswitch.conf			\
	etc/pam.conf				\
	etc/passwd				\
	etc/power.conf				\
	etc/release				\
	etc/shadow				\
	etc/svc/global_repo.db			\
	etc/svc/nonglobal_repo.db		\
	etc/user_attr.cdonly			\
	lib/libc.so.1				\
	usr/bin/ksh				\
	usr/has/bin/sh				\
	usr/has/bin/vi				\
	usr/jdk/instances/jdk1.6.0/LICENSE	\
	usr/jdk/instances/jdk1.6.0/README.html	\
	usr/jdk/instances/jdk1.6.0/jre/LICENSE	\
	usr/jdk/instances/jdk1.6.0/jre/README	\
	usr/share/man/man.cf			\
	usr/share/man/missing.man		\
	usr/share/applications/services.desktop	\
	usr/share/applications/shares.desktop	\
	$(CACHED_FILES)

JDKFILES = LICENSE README.html
JREFILES = LICENSE README

PROG=	ksh-wrapper

OBJS=	ksh-wrapper.o

SRCS=	$(OBJS:%.o=%.c)

CFLAGS=		-g -v

LINTFLAGS=	-axsm

UNBUNDLED_TARGETS=		\
	ClusterTools.import	\
	GlassFishV2.import	\
	MessageQueue41.import	\
	NetBeans.import		\
	OpenOffice.import	\
	Studio.import		\
	Webstackui.import

UNBUNDLED_CLUSTERS=		\
	Clusters.import

BUILDS=	75a			\
	79b			\
	86			\
	89			\
	90			\
	91

#
# Starting in build 80, filelist.ramdisk began moving between various
# packages.
#
FILELIST_RAMDISK_PKG_$(BUILDID)	= SUNWckr
FILELIST_RAMDISK_PKG_79b	= SUNWcakr.i
FILELIST_RAMDISK_PKG_75a	= SUNWcakr.i
FILELIST_RAMDISK_PKG_74		= SUNWcakr.i
FILELIST_RAMDISK_PKG_72		= SUNWcakr.i
FILELIST_RAMDISK_PKG_71		= SUNWcakr.i

default:	91/slim_import

cluster.import:	$(WOS_PKGS)/.clustertoc Makefile
	./clustertoc2import.py $(WOS_PKGS)/.clustertoc | \
	sed "s/version 2.2.1a/version 2.2.1.1/" > $@

proto/etc/user_attr.cdonly: proto $(BUILDID)/user_attr
	( cat $(BUILDID)/user_attr; \
	  echo "jack::::profiles=Primary Administrator;roles=root") > $@

proto/etc/driver_aliases:	proto $(BUILDID)/all.i386 cluster.import
	./get_file_from_pkg.py $(WOS_PKGS)/SUNWcsd etc/driver_aliases | \
	./driver_names.py $(INCLUDE_PATH_$(BUILDID)) $(BUILDID)/all.i386 > $@

proto/etc/name_to_major:	proto $(BUILDID)/all.i386 cluster.import
	./get_file_from_pkg.py $(WOS_PKGS)/SUNWcsd etc/name_to_major | \
	./driver_names.py $(INCLUDE_PATH_$(BUILDID)) $(BUILDID)/all.i386 > $@

proto/etc/nsswitch.conf:	proto Makefile
	./get_file_from_pkg.py	$(WOS_PKGS)/SUNWcsr etc/nsswitch.files > $@

proto/etc/X11/gdm/custom.conf:	proto Makefile
	./get_file_from_pkg.py $(WOS_PKGS)/SUNWgnome-display-mgr-root	\
	etc/X11/gdm/custom.conf | nawk '/^\[daemon\]/ { print $$0;	\
			    print "AutomaticLoginEnable=true";		\
			    print "AutomaticLogin=jack";		\
			    print "GdmXserverTimeout=30";		\
			    continue }  { print $$0 }' > $@

proto/etc/power.conf:	proto Makefile
	./get_file_from_pkg.py	$(WOS_PKGS)/SUNWpmr etc/power.conf | nawk \
	'/^autoshutdown/{gsub("unconfigured","default");} {print $$0}' > $@

proto/boot/solaris/filelist.ramdisk:	proto
	(./get_file_from_pkg.py $(WOS_PKGS)/$(FILELIST_RAMDISK_PKG_$(BUILDID)) \
	    boot/solaris/filelist.ramdisk; \
	echo etc/zfs/zpool.cache) > $@

proto/etc/pam.conf:	proto
	(./get_file_from_pkg.py $(WOS_PKGS)/SUNWcsr etc/pam.conf;	\
	echo "gdm-autologin auth  required    pam_unix_cred.so.1";	\
	echo "gdm-autologin auth  sufficient  pam_allow.so.1";		\
	echo "gdm-autologin account  sufficient  pam_allow.so.1";	\
	echo "gdm-autologin session  sufficient  pam_allow.so.1";	\
	echo "gdm-autologin password  sufficient  pam_allow.so.1"	\
	) > $@

proto/etc/svc/global_repo.db:	proto
	./get_file_from_pkg.py $(WOS_PKGS)/SUNWcsr lib/svc/seed/global.db > $@

proto/etc/svc/nonglobal_repo.db:	proto
	./get_file_from_pkg.py $(WOS_PKGS)/SUNWcsr lib/svc/seed/nonglobal.db > $@

# fix booting on non-sse capable cpus until 6332924 gets fixed
proto/lib/libc.so.1: proto
	./get_file_from_pkg.py $(WOS_PKGS)/SUNWcslr lib/libc.so.1 > $@
	/usr/bin/elfedit -e 'cap:hw1 -and -cmp sse' $@

proto/usr/share/man/missing.man:	proto	missing.man
	cp missing.man $@

proto/etc/release:	proto
	./get_file_from_pkg.py $(WOS_PKGS)/SUNWsolnm etc/release | head -1 | \
	sed 's/.*snv_/                  OpenSolaris 2008.05 snv_/' \
	> $@
	cat release.figlet >> $@

proto/usr/share/man/man.cf:	proto
	./get_file_from_pkg.py $(WOS_PKGS)/SUNWman usr/share/man/man.cf | \
	sed \
	'/MANSECTS/s/$$/,1openssl,3openssl,5openssl,7openssl/' \
	> $@

proto/usr/bin/ksh:	proto $(PROG)
	cp $(PROG) $@

proto/usr/share/applications/shares.desktop: proto
	./get_file_from_pkg.py $(WOS_PKGS)/SUNWgnome-system-tools \
	usr/share/applications/shares.desktop | \
	./desktop_exec.sh /usr/lib/vp-shares > $@

proto/usr/share/applications/services.desktop: proto
	./get_file_from_pkg.py $(WOS_PKGS)/SUNWgnome-system-tools \
	usr/share/applications/services.desktop | \
	./desktop_exec.sh /usr/lib/vp-services > $@

#
# change root's default shell, homedir and add jack user
#
proto/etc/passwd:	proto Makefile
	(./get_file_from_pkg.py $(WOS_PKGS)/SUNWcsr etc/passwd | nawk -F:			\
	'/^root/{ print "root:x:0:0:Super-User:/root:/usr/bin/bash";continue} {print $$0}';	\
	echo "jack:x:65432:10:Default User:/jack:/usr/bin/bash") > $@

proto/etc/shadow:	proto Makefile
	(./get_file_from_pkg.py $(WOS_PKGS)/SUNWcsr etc/shadow | nawk -F:		\
	'/^root/{ print "root:wqy8hz4xKqw4o:13817::::::";continue} {print $$0}';	\
	echo "jack:9Nd/cwBcNWFZg:13817::::::") > $@

proto/usr/has/bin/sh:	proto Makefile
	./get_file_from_pkg.py $(WOS_PKGS)/SUNWcsr sbin/sh > $@

proto/usr/has/bin/vi:	proto Makefile
	./get_file_from_pkg.py $(WOS_PKGS)/SUNWcsu usr/bin/edit > $@

$(JDKFILES:%=proto/usr/jdk/instances/jdk1.6.0/%):	proto DLJ/$(@F)
	cp DLJ/$(@F) $@

$(JREFILES:%=proto/usr/jdk/instances/jdk1.6.0/jre/%):	proto DLJ/$(@F)
	cp DLJ/$(@F) $@

$(CACHED_FILES:%=proto/%):	proto $(BUILDID)/$(@F) Makefile
	cat $(BUILDID)/$(@F) > $@

proto:	Makefile
	mkdir -p proto/boot/grub
	mkdir -p proto/boot/solaris/devicedb
	mkdir -p proto/etc/X11/gdm
	mkdir -p proto/etc/inet
	mkdir -p proto/etc/security
	mkdir -p proto/etc/svc
	mkdir -p proto/etc/zones
	mkdir -p proto/kernel/drv
	mkdir -p proto/lib/svc/method
	mkdir -p proto/usr/bin
	mkdir -p proto/usr/has/bin
	mkdir -p proto/usr/jdk/instances/jdk1.6.0/jre
	mkdir -p proto/usr/jdk/instances/jdk1.6.0/jre/lib
	mkdir -p proto/usr/lib
	mkdir -p proto/usr/share/applications
	mkdir -p proto/usr/share/man
	mkdir -p proto/var/svc/manifest/system
	mkdir -p proto/var/svc/profile

%/$(TMPPKGS):
	$(MAKE) BUILDID=$(@D) $(@F)

%:	$(BUILDID)/%.prototype $(BUILDID)/%.pkginfo $(FIXFILES:%=proto/%)
	pkgmk -b ./proto -r . -f $(BUILDID)/[email protected] -d `pwd` -o

INCLUDE_PATH_75a = 75a:73:72:71:00
INCLUDE_PATH_79b = 79b:78:77:76:$(INCLUDE_PATH_75a)
INCLUDE_PATH_84 = 84:83:82:81:80:$(INCLUDE_PATH_79b)
INCLUDE_PATH_85 = 85:$(INCLUDE_PATH_84)
INCLUDE_PATH_86 = 86:$(INCLUDE_PATH_85)
INCLUDE_PATH_89 = 89:88:87:$(INCLUDE_PATH_86)
INCLUDE_PATH_90 = 90:$(INCLUDE_PATH_89)
INCLUDE_PATH_91 = 91:$(INCLUDE_PATH_90)

import:	cluster.import $(TMPPKGS)
	$(SOLARIS.PY) -s $(REPO) -w $(WOS_PKGS) $(ELIDED_FILES:%=-D %) \
		$(INCLUDE_PATH_$(BUILDID):%=-I %) $(BUILDID)/all.i386

%/import:
	$(MAKE) BUILDID=$(@:%/import=%) import

slim_import:	$(BUILDID)/slim_cluster $(TMPPKGS)
	$(SOLARIS.PY) -s $(REPO) $(ALL_PKGS:%=-w %) $(ELIDED_FILES:%=-D %) \
		$(JUST_THESE_PKGS:%=-j %) $(INCLUDE_PATH_$(BUILDID):%=-I %) \
		$(BUILDID)/slim_cluster 

%/slim_import:
	$(MAKE) BUILDID=$(@:%/slim_import=%) slim_import

redist_import:	$(BUILDID)/redist_cluster $(TMPPKGS)
	$(SOLARIS.PY) -s $(REPO) $(ALL_PKGS:%=-w %) $(ELIDED_FILES:%=-D %) \
		$(JUST_THESE_PKGS:%=-j %) $(INCLUDE_PATH_$(BUILDID):%=-I %) \
		$(BUILDID)/redist_cluster 
	$(MAKE) $(BUILDID)/entire

%/redist_import:
	$(MAKE) BUILDID=$(@:%/redist_import=%) redist_import

%/entire:
	$(MAKE) BUILDID=$(@:%/entire=%) entire

$(BUILDID)/entire.incorporation: FRC
	./build_entire_incorporation $(BUILDID) > $@

entire: $(BUILDID)/entire.incorporation
	PKG_REPO=$(REPO) ./import_manifest_file [email protected],5.11-0.$(BUILDID) $(BUILDID)/entire.incorporation

$(UNBUNDLED_TARGETS:%=$(BUILDS)/%) $(UNBUNDLED_CLUSTERS:%=$(BUILDS)/%):
	$(MAKE) BUILDID=$(@D) $(@F)

$(UNBUNDLED_TARGETS): unbundleds/$$(@:%.import=%)
	rm -f redist_cluster; ln -s $(BUILDID)/redist_cluster redist_cluster
	$(SOLARIS.PY) -s $(REPO) $(ALL_PKGS:%=-w %) $(ELIDED_FILES:%=-D %) `./package_names.py unbundleds/$(@:%.import=%)`  unbundleds/$(@:%.import=%) redist_cluster

$(UNBUNDLED_CLUSTERS): unbundleds/$$(@:%.import=%)
	rm -f redist_cluster; ln -s $(BUILDID)/redist_cluster redist_cluster
	$(SOLARIS.PY) -s $(REPO) $(ALL_PKGS:%=-w %) $(ELIDED_FILES:%=-D %) `./package_names.py unbundleds/$(@:%.import=%)`  unbundleds/$(@:%.import=%) $(UNBUNDLED_TARGETS:%.import=unbundleds/%) redist_cluster

%/all_unbundleds:
	$(MAKE) BUILDID=$(@D) $(@F)

all_unbundleds:	$(UNBUNDLED_TARGETS:%=$(BUILDID)/%)
	$(MAKE) $(BUILDID)/$(UNBUNDLED_CLUSTERS)


%/SUNWipkg:
	$(MAKE) BUILDID=$(@D) $(@F)

SUNWipkg:
	PKG_REPO=$(REPO) ./publish_ips pkg:/[email protected],5.11-0.`echo $(BUILDID) | tr '[a-z]' ' '` ../../../packages/i386/SUNWipkg

clean:
	rm -f $(OBJS)
	rm -rf proto

clobber: clean
	rm -f $(PROG)

lint:
	$(LINT) $(LINTFLAGS) $(SRCS)

.KEEP_STATE:

FRC: