Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Jun 2007 22:00:05 GMT
From:      Ivan Voras <ivoras@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 122502 for review
Message-ID:  <200706282200.l5SM057R085231@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=122502

Change 122502 by ivoras@ivoras_finstall on 2007/06/28 21:59:39

	Remove config file generation from script code and move it to
	external files.

Affected files ...

.. //depot/projects/soc2007/ivoras_finstall/makeimage/bundles/bundle-spec#1 add
.. //depot/projects/soc2007/ivoras_finstall/makeimage/bundles/dot.xinitrc#1 add
.. //depot/projects/soc2007/ivoras_finstall/makeimage/bundles/fstab#1 add
.. //depot/projects/soc2007/ivoras_finstall/makeimage/bundles/hosts#1 add
.. //depot/projects/soc2007/ivoras_finstall/makeimage/bundles/livecd#1 add
.. //depot/projects/soc2007/ivoras_finstall/makeimage/bundles/loader.conf#1 add
.. //depot/projects/soc2007/ivoras_finstall/makeimage/bundles/rc.conf#1 add
.. //depot/projects/soc2007/ivoras_finstall/makeimage/bundles/xorg.conf#1 add
.. //depot/projects/soc2007/ivoras_finstall/makeimage/makeimage.py#6 edit
.. //depot/projects/soc2007/ivoras_finstall/makeimage/util.py#4 edit

Differences ...

==== //depot/projects/soc2007/ivoras_finstall/makeimage/makeimage.py#6 (text+ko) ====

@@ -22,7 +22,7 @@
 
 # finstall LiveCD image creator
 
-import os, os.path, sys
+import os, os.path, sys, stat
 from time import strftime
 from getopt import getopt, GetoptError
 from util import nukedir, execute, printmsg, cmdout, readline, initutils, getpkgdeps, getpkgfullname
@@ -37,11 +37,11 @@
 	raise MakeImageException("This utility requires mkisofs(8) (install ports/sysutils/cdrtools)")
 
 def usage(exit=True):
-	print "usage: %s -d WORKDIR [-i ISOFILE] [-k KERNEL] [-p PKGLISTFILE] [-s SRCDIR] [-b] [-c] " % sys.argv[0]
+	print "usage: %s -d WORKDIR [-i ISOFILE] [-k KERNEL] [-p PKGLISTFILE] [-s SRCDIR] [-x BUNDLEDIR] [-b] [-c] " % sys.argv[0]
 	print
 	print "Description:"
 	print "	-d WORKDIR	Base work directory to hold intermediate and final files"
-	print "			(requires ~800MB free). This is the only required"
+	print "			(requires ~1.5 GB free). This is the only required"
 	print "			argument."
 	print "	-k KERNEL	FreeBSD kernel to package (default: GENERIC)"
 	print "	-i ISOFILE	ISO image to generate (default: WORKDIR/image.iso)"
@@ -49,6 +49,8 @@
 	print "			LiveCD system. All packages from the list must be"
 	print "			installed on the system doing the build."
 	print "	-s SRCDIR	Directory with FreeBSD source tree (default: /usr/src)"
+	print "	-x BUNDLEDIR	Directory containing bundle-spec file and appropriate"
+	print "			files to bundle (default: bundles)"
 	print "	-b		Do buildworld / buildkernel before proceeding"
 	print "	-c		Assume installworld / installkernel phase has been"
 	print "			done in WORKDIR/livecd and proceed with configuration"
@@ -65,6 +67,8 @@
 DoBuild = False
 DoMakeRoot = True	# Create / install livecd tree
 LABEL = "FreeBSD7"	# ISO9660 Volume label
+BUNDLEDIR = "bundles"
+BUNDLEFILE = "bundle-spec"
 PKGLISTFILE = None
 ISO = None
 
@@ -90,6 +94,8 @@
 		DoMakeRoot = False
 	elif o == "-i":
 		ISO = a
+	elif o == "-x":
+		BUNDLEDIR = a
 	elif o == "-h":
 		usage()
 
@@ -100,6 +106,8 @@
 	raise MakeImageException("Source directory not found: '%s'")
 if not os.path.exists(WORKDIR):
 	os.makedirs(WORKDIR)
+if not os.path.exists(BUNDLEDIR) or not os.path.exists("%s/%s" % (BUNDLEDIR, BUNDLEFILE)):
+	BUNDLEDIR = None
 
 DESTDIR = "%s/livecd" % WORKDIR
 
@@ -128,39 +136,52 @@
 	execute("make installworld DESTDIR=%s" % DESTDIR)
 	execute("make distribution DESTDIR=%s" % DESTDIR)
 	execute("make installkernel KERNCONF=%s DESTDIR=%s" % (KERNEL, DESTDIR))
+	execute("rm %s/boot/kernel/*.symbols" % DESTDIR)
 else:
 	if not os.path.exists(DESTDIR) or not os.path.exists("%s/COPYRIGHT" % DESTDIR):
 		print "%s doesn't look like existing livecd root" % DESTDIR
 		sys.exit(1)
 
-str_time = strftime("%Y-%m-%d %H:%M")
-printmsg("Creating config files")
+str_time = strftime("%H:%M")
+str_date = strftime("%Y-%m-%d")
 
-# Edit loader.conf
-lc = file("%s/boot/loader.conf" % DESTDIR, "w+")
-lc.write("# /boot/loader.conf generated by finstall makeimage.py on %s\n" % str_time)
-lc.write('rootdev="iso9660/%s"\n' % LABEL)
-lc.write('boot_cdrom="1"\n')
-lc.close()
+if os.path.exists("%s/%s" % (BUNDLEDIR, BUNDLEFILE)):
+	printmsg("Bundling config files")
+	f = file("%s/%s" % (BUNDLEDIR, BUNDLEFILE), "r")
+	for line in f.readlines():
+		line = line.strip()
+		if len(line) == 0:
+			continue
+		if line[0] == "#":
+			continue
+		if line.find("=") == -1:
+			raise MakeImageException("Invalid %s line: %s", (BUNDLEFILE, line))
+		if line.find(";") != -1:
+			files, flags = line.split(";", 1)
+			flags = flags.split(";")
+			dest_file, src_file = files.split("=", 1)
+		else:
+			flags = []
+			dest_file, src_file = line.split("=", 1)
+		file_contents = file("%s/%s" % (BUNDLEDIR, src_file), "r").read()
+		if "kw" in flags:
+			file_contents = file_contents.replace("$label$", LABEL)
+			file_contents = file_contents.replace("$time$", str_time)
+			file_contents = file_contents.replace("$date$", str_date)
+			file_contents = file_contents.replace("$dest_file$", dest_file)
+			file_contents = file_contents.replace("$src_file$", src_file)
+		if "a" in flags:
+			df = file("%s%s" % (DESTDIR, dest_file), "a")
+		else:
+			df = file("%s%s" % (DESTDIR, dest_file), "w")
+		df.write(file_contents)
+		df.close()
+		if "x" in flags:
+			os.chmod("%s%s" % (DESTDIR, dest_file), stat.S_IRUSR | stat.S_IXUSR | stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IXOTH)
+	f.close()
 
-# Edit fstab
-f = file("%s/etc/fstab" % DESTDIR, "w+")
-f.write("# /etc/fstab generated by finstall makeimage.py on %s\n" % str_time)
-f.write("/dev/iso9660/%s	/ 	cd9660	ro 	0 0\n" % LABEL)
-#f.write("md			/tmp 	mfs 	rw,-S,-s32m 0 0\n")
-#f.write("/tmp			/etc	unionfs	rw,copymode=transparent	0 0\n")
-f.close()
-
-# Edit rc.conf
-f = file("%s/etc/rc.conf" % DESTDIR, "w+")
-f.write("# /etc/rc.conf generated by finstall makeimage.py on %s\n" % str_time)
-f.write('rc_debug="NO"\n')
-f.write('hostname="finstall"\n')
-f.write('background_fsck="NO"\n')
-f.write('syslogd_flags="-C"\n')
-f.close()
-
 if PKGLISTFILE != None:
+	printmsg("Bundling packages")
 	# Install packages into the liveCD tree, using chroot
 	master_pkglist = []
 	f = file(PKGLISTFILE, "r")
@@ -178,8 +199,8 @@
 			dest_pkgs[p2] = True
 	os.chdir("%s/tmp" % DESTDIR)
 	for pkg in dest_pkgs:
-		pkg_file = "%s.tbz" % pkg
-		execute("pkg_create -v -j -b %s %s" % (pkg, pkg_file))
+		pkg_file = "%s.tgz" % pkg
+		execute("pkg_create -v -b %s %s" % (pkg, pkg_file))
 		dest_pkgs[pkg] = pkg_file
 	f = file("pkginst.sh", "w")
 	f.write("#!/bin/sh\ncd /tmp\npkg_delete -av\n")
@@ -192,19 +213,6 @@
 		os.unlink(dest_pkgs[pkg])
 	os.unlink("pkginst.sh")
 
-f = file("%s/etc/rc.d/livecd" % DESTDIR, "w")
-f.write("# /etc/rc.d/livecd generated by finstall makeimage.py on %s\n" % str_time)
-f.write("# BEFORE: hostid\n")
-f.write("# REQUIRE: root\n")
-f.write("# KEYWORD: nojail\n\n")
-f.write("/sbin/mount_mfs -s 32m -S md /tmp\n")
-f.write("/bin/mkdir /tmp/etc /tmp/log /tmp/run /tmp/tmp\n")
-f.write("/sbin/mount_unionfs -o copymode=transparent /tmp/etc /etc\n")
-f.write("/sbin/mount_unionfs -o copymode=transparent /tmp/log /var/log\n")
-f.write("/sbin/mount_unionfs -o copymode=transparent /tmp/run /var/run\n")
-f.write("/sbin/mount_unionfs -o copymode=transparent /tmp/tmp /var/tmp\n")
-f.close()
-execute("chmod a+x %s/etc/rc.d/livecd" % DESTDIR)
 
 os.chdir(WORKDIR)
 if ISO == None:

==== //depot/projects/soc2007/ivoras_finstall/makeimage/util.py#4 (text+ko) ====




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200706282200.l5SM057R085231>