Overview
| Comment: | Updated ignores Renamed "work" directory something more meaningful Created teapot_index script to create client-compliant (but bare) repository | 
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive | 
| Timelines: | family | ancestors | descendants | both | trunk | 
| Files: | files | file ages | folders | 
| SHA1: | b12f77291f8164742353d6af581270de | 
| User & Date: | rkeene on 2010-02-05 03:55:55 | 
| Other Links: | manifest | tags | 
Context
| 2010-02-05 | ||
| 03:57 | Updated build script to avoid releasing package binary data check-in: 3b36c0ccca user: rkeene tags: trunk | |
| 03:55 | Updated ignores Renamed "work" directory something more meaningful Created teapot_index script to create client-compliant (but bare) repository check-in: b12f77291f user: rkeene tags: trunk | |
| 02:22 | Added catchall for platform check-in: 7a3272e8a7 user: rkeene tags: trunk | |
Changes
Modified .fossil-settings/ignore-glob from [5feb604148] to [f012362875].
| 1 2 | client/teapot-client.kit client/teapot-client.kit/* | | | | | | | | | > > | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | client/teapot-client.kit client/teapot-client.kit/* server/buildpkgs/tclpkgs-*.tar.* server/buildpkgs/tclpkgs-*.tar.*/* server/buildpkgs/tls/build server/buildpkgs/tls/build.log server/buildpkgs/tls/build.log/* server/buildpkgs/tls/build/* server/buildpkgs/tls/out server/buildpkgs/tls/out/* server/buildpkgs/tls/src server/buildpkgs/tls/src/* server/pkgs server/pkgs/* | 
Added server/buildpkgs/Makefile version [f2ece7f06f].
| > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | all: tclpkgs-src-current.tar.gz tclpkgs-src-current.tar.gz: tclpkgs-src-current tar -zcf tclpkgs-src-current.tar.gz tclpkgs-src-current rm -rf tclpkgs-src-current tclpkgs-src-current: platform build_all.sh create_teapot */build.sh rm -rf tclpkgs-src-current mkdir tclpkgs-src-current cp -rp platform build_all.sh create_teapot tclpkgs-src-current/ for dir in */; do \ if test ! -f "$$dir/build.sh"; then continue; fi; \ mkdir "tclpkgs-src-current/$$dir"; \ cp "$$dir/build.sh" "tclpkgs-src-current/$$dir"; \ done clean: rm -f tclpkgs-*.tar.* rm -rf tclpkgs-src-current ./build_all.sh clean .PHONY: all clean | 
Added server/buildpkgs/build_all.sh version [4f07bb6e7e].
| > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | 
#! /bin/bash
if [ ! -x "./platform" ]; then
	echo 'ERROR: Platform script not found: ./platform' >&2
	exit 1
fi
CLEANONLY=0
DISTCLEAN=0
if [ "$1" = "clean" ]; then
	CLEANONLY=1
fi
if [ "$1" = "distclean" ]; then
	CLEANONLY=1
	DISTCLEAN=1
fi
export CLEANONLY DISTCLEAN
# Determine path to "tclConfig.sh"
TCLCONFIGDIR=$(
	(
		echo "${LD_LIBRARY_PATH}" | tr ':' "\n"
		cat /etc/ld.so.conf 2>/dev/null
		crle 2>/dev/null | grep '^ *Default Library Path' | sed 's@^ *Default Library Path[^:]*:[^:]*/@/@' | tr ':' "\n"
	) | grep '^/' | while read chklibdir; do
		if [ -f "${chklibdir}/tclConfig.sh" ]; then
			echo "${chklibdir}"
			break
		fi
	done
)
if [ -z "${TCLCONFIGDIR}" ]; then
	TCLCONFIGDIR="/usr/lib"
fi
export TCLCONFIGDIR
# Determine platform
PLATFORM="$(./platform)"
export PLATFORM
# Build all appropriate directories
faileddirs=""
for dir in */; do
	export dir
	if [ ! -f "${dir}/build.sh" ]; then
		continue
	fi
	failed=0
	(
		cd "${dir}" || exit 1
		rm -rf "build" "out"
		if [ "${DISTCLEAN}" = "1" ]; then
			rm -rf "src"
		fi
		if [ "${CLEANONLY}" = "1" ]; then
			exit 0
		fi
		mkdir -p "out/${PLATFORM}" >/dev/null 2>/dev/null
		./build.sh 2>&1 | tee "out/${PLATFORM}/build.log" || exit 1
	) || failed=1
	if [ "${failed}" = "1" ]; then
		rm -rf "${dir}/out"
		faileddirs="${faileddirs} ${dir}"
	fi
done
# Cleanup is done at this point
if [ "${CLEANONLY}" = "1" ]; then
	exit 0
fi
# Let the user know what failed to build
if [ -n "${faileddirs}" ]; then
	echo "The following failed to build:${failddirs}"
fi
# Create tarfile of built packages
PLATFORM="$(./platform)"
DATECODE="$(date +%Y%m%d%H%M)"
OUTFILEBASE="tclpkgs-${PLATFORM}-${DATECODE}"
tar -cf - */out | bzip2 -9c > "${OUTFILEBASE}.tar.bz2"
exit 0
 | 
Added server/buildpkgs/create_teapot version [7fbee19e66].
| > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | 
#! /bin/bash
OUTFILE="$1"
PKG="$2"
PKGVER="$3"
SRCURL="$4"
PLATFORM="$5"
REQS="$6"
DESC="$7"
TMPFILE="${TMPDIR:-/tmp}/reqfile-$$${RANDOM}${RANDOM}${RANDOM}"
export OUTFILE PKG PKGVER SRCURL PLATFORM REQS DESC TMPFILE
VALIDSYNTAX=1
if [ -z "${OUTFILE}" ]; then
	echo 'ERROR: Output not specified' >&2
	VALIDSYNTAX=0
fi
if [ -z "${PKG}" ]; then
	echo 'ERROR: Package not specified' >&2
	VALIDSYNTAX=0
fi
if [ -z "${PKGVER}" ]; then
	echo 'ERROR: Package version not specified' >&2
	VALIDSYNTAX=0
fi
if [ -z "${PLATFORM}" ]; then
	echo 'ERROR: Platform not specified' >&2
	VALIDSYNTAX=0
fi
if [ -z "${DESC}" ]; then
	echo 'ERROR: Description not specified' >&2
	VALIDSYNTAX=0
fi
if [ "${VALIDSYNTAX}" = "0" ]; then
	echo 'Usage: create_teapot <output> <pkg> <pkgver> <srcurl> <platform> <reqs> <desc>' >&2
	exit 1
fi
OUTSHORT=$(echo "${OUTFILE}" | sed 's@^.*/@@')
TEXTFILE=0
if [ "${OUTSHORT}" = "teapot.txt" ]; then
	TEXTFILE=1
fi
if [ ! -e "${OUTFILE}" ]; then
	TEXTFILE=1
fi
rm -f "${TMPFILE}"
cat << __EOF__ > "${TMPFILE}"
Package ${PKG} ${PKGVER}
Meta platform           ${PLATFORM}
Meta rsk::build::date   $(date +%Y-%m-%d)
Meta description        ${DESC}
__EOF__
echo "${REQS}" | tr ',' "\n" | while read req; do
	req="$(echo "${req}" | sed 's@^ *@@;s@ *$@@')"
	if [ -z "${req}" ]; then
		continue
	fi
	if echo "${req}" | grep ' ' >/dev/null; then
		req="{${req}}"
	fi
	echo "Meta require            ${req}" >> "${TMPFILE}"
done
if [ "${TEXTFILE}" = "1" ]; then
	cat "${TMPFILE}" > "${OUTFILE}"
else
	(
		head -1 "${OUTFILE}"
		echo ''
		echo '# @@ Meta Begin'
		sed 's@^@# @' "${TMPFILE}"
		echo '# @@ Meta End'
		echo ''
		tail +2 "${OUTFILE}"
	) > "${OUTFILE}.new"
	cat "${OUTFILE}.new" > "${OUTFILE}"
	rm -f "${OUTFILE}.new"
fi
rm -f "${TMPFILE}"
 | 
Added server/buildpkgs/platform version [828b4fc7e9].
| > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 
#! /bin/bash
case "`uname -s`" in
	Linux)
		GLIBCVERS=$(strings /lib/libc.so.6 | grep '^GLIBC_[0-9][0-9]*\.[0-9]*' | cut -f 2- -d _ | cut -f 1-2 -d . | sed 's@\.@ @g' |  sort -n +0 +1 | tail -1 | sed 's@ @\.@g')
		case "`uname -m`" in
			i?86)
				CPUPLAT="ix86"
				;;
			sun4?)
				CPUPLAT="sparc"
				;;
			*)
				CPUPLAT="`uname -m`"
				;;
		esac
		echo "linux-glibc${GLIBCVERS}-${CPUPLAT}"
		;;
	SunOS)
		SUNMAJVER=$(uname -r | cut -f 1 -d .)
		SUNMINVER=$(uname -r | cut -f 2 -d .)
		SOLVER="$[${SUNMAJVER} - 3].${SUNMINVER}"
		case "`uname -m`" in
			sun4?)
				CPUPLAT="sparc"
				;;
			*)
				CPUPLAT="ix86"
				;;
		esac
		echo "solaris${SOLVER}-${CPUPLAT}"
		;;
	*)
		echo "`uname -s | dd conv=lcase 2>/dev/null`-`uname -m | dd conv=lcase 2>/dev/null`"
		;;
esac
 | 
Added server/buildpkgs/tls/build.sh version [d44be617e2].
| > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | 
#! /bin/bash
if [ ! -x "../platform" ]; then
	echo "No platform script found, aborting." >&2
	exit 1
fi
VERS=1.6
SRC="src/tls${VERS}-src.tar.gz"
SRCURL="http://sourceforge.net/projects/tls/files/tls/${VERS}/tls${VERS}-src.tar.gz/download"
BUILDDIR="tls${VERS}"
WORKDIR="${TMPDIR:-/tmp}/tls-$$${RANDOM}${RANDOM}${RANDOM}"
PLATFORM="$(../platform)"
PLATDIR="out/${PLATFORM}"
export VERS SRC SRCURL BUILDDIR WORKDIR PLATFORM PLATDIR
if [ ! -f "${SRC}" ]; then
	mkdir src >/dev/null 2>/dev/null
	wget -O "${SRC}" "${SRCURL}" || exit 1
fi
(
	rm -rf build
	mkdir build
	cd build/ || exit 1
	gzip -dc "../${SRC}" | tar -xf -
	cd "${BUILDDIR}" || exit 1
	for chkssldir in $(pkg-config openssl --cflags | sed 's@ *-I *@|@g' | tr '|' "\n" | grep '^/'); do
		if [ -f "${chkssldir}/openssl/opensslv.h" -o -f "${chkssldir}/opensslv.h" ]; then
			SSLDIR=$(echo "${chkssldir}" | sed 's@/[^/]*/*$@@')
		fi
	done
	if [ -z "${SSLDIR}" ]; then
		SSLDIR="/usr"
	fi
	./configure --enable-shared --with-tcl="${TCLCONFIGDIR}" --with-ssl-dir="${SSLDIR}"
	gmake || exit 1
) || exit 1
(
	mkdir -p "${PLATDIR}" >/dev/null 2>/dev/null
	cp "build/${BUILDDIR}/libtls1.6.so" "${PLATDIR}/"
	cp "build/${BUILDDIR}/pkgIndex.tcl" "${PLATDIR}/"
	cp "build/${BUILDDIR}/tls.tcl" "${PLATDIR}/"
	../create_teapot "${PLATDIR}/teapot.txt" "tls" "${VERS}" "${SRCURL}" "${PLATFORM}" "Tcl 8.4" "SSL TLS Secure Sockets"
) || exit 1
exit 0
 | 
Added server/teapot_index version [07d237bd6c].
| > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 | 
#! /usr/bin/env tclsh
if {[llength $argv] != "2"} {
	puts stderr "Usage: teapot_index <srcdir> <destdir>"
	exit 1
}
set srcdir [file normalize [lindex $argv 0]]
set dstdir [file normalize [lindex $argv 1]]
# Index all packages
proc teapot_index {srcdir} {
	array set pkginfo [list]
	foreach pkgdir [glob -directory $srcdir -type d */out/*] {
		unset -nocomplain currpkginfo
		set currpkginfo(pkgdir) $pkgdir
		set teapot [file join $pkgdir teapot.txt]
		set multifile 1
		if {![file exists $teapot]} {
			set files [glob -directory $pkgdir *]
			if {[llength $files] == 1} {
				set teapot [lindex $files 0]
				set multifile 0
			} else {
				continue
			}
		}
		set currpkginfo(multifile) $multifile
		if {$multifile} {
			set currpkginfo(extfile) file.zip
		} else {
			set currpkginfo(extfile) file.tm
		}
		set fd [open $teapot r]
		set data [read $fd]
		close $fd
		set processline $multifile
		foreach line [split $data \n] {
			set line [string trim $line]
			if {!$multifile} {
				if {$line == "# @@ Meta Begin"} {
					set processline 1
					continue
				}
				if {$line == "# @@ Meta End"} {
					break
				}
				set line [regsub {^ *# *} $line {}]
			}
			if {!$processline} {
				continue
			}
			set cmd "INVALID"
			catch {
				set cmd [string toupper [lindex $line 0]]
			}
			switch -- $cmd {
				"PACKAGE" {
					set name [lindex $line 1]
					set vers [lindex $line 2]
					set currpkginfo(name) $name
					set currpkginfo(vers) $vers
				}
				"META" {
					set var [string tolower [lindex $line 1]]
					set val [lrange $line 2 end]
					set currpkginfo($var) $val
				}
			}
		}
		set pkginfo([list $currpkginfo(name) $currpkginfo(vers) $currpkginfo(platform)]) [array get currpkginfo]
	}
	return [array get pkginfo]
}
proc generate_tpm {entlist} {
	set ret {<!-- [[TPM[[}
	append ret $entlist
	append ret {]]MPT]] -->}
	return $ret
}
proc generate_table {fields numitems} {
	set ret ""
	foreach field $fields {
		append ret "      <tr>\n"
		foreach part [lrange $field 0 [expr $numitems - 1]] {
			append ret "        <td>$part</td>\n"
		}
		append ret "      </tr>\n"
	}
	return [string range $ret 0 end-1]
}
# Create "index.html"
proc create_output_index {dstdir pkginfo_arrlist} {
	array set pkginfo $pkginfo_arrlist
	set indexfile [file join $dstdir index.html]
	set pkglist [list]
	foreach ent [array names pkginfo] {
		set pkg [lindex $ent 0]
		if {[lsearch -exact $pkglist $pkg] != -1} {
			continue
		}
		lappend pkglist $pkg
	}
	set fd [open $indexfile w]
	puts $fd "<html>"
	puts $fd "  <head>"
	puts $fd "    <title>List of all entities</title>"
	puts $fd "  </head>"
	puts $fd "  <body>"
	puts $fd [generate_tpm $pkglist]
	puts $fd "    <h1>List of all entities</h1>"
	puts $fd "    <table>"
	puts $fd [generate_table $pkglist 1]
	puts $fd "    </table>"
	puts $fd "  </body>"
	puts $fd "</html>"
	close $fd
}
# Create "package/list"
proc create_output_pkglist {dstdir pkginfo_arrlist} {
	array set pkginfo $pkginfo_arrlist
	set pkgdir [file join $dstdir package]
	catch {
		file mkdir $pkgdir
	}
	set indexfile [file join $pkgdir list.html]
	set altindexfile [file join $pkgdir list]
	set pkglist [list]
	foreach ent [array names pkginfo] {
		set pkg [lindex $ent 0]
		set ver [lindex $ent 1]
		set arch [lindex $ent 2]
		lappend pkglist [list package $pkg $ver $arch 0]
	}
	set fd [open $indexfile w]
	puts $fd "<html>"
	puts $fd "  <head>"
	puts $fd "    <title>List of all packages</title>"
	puts $fd "  </head>"
	puts $fd "  <body>"
	puts $fd [generate_tpm $pkglist]
	puts $fd "    <h1>List of all packages</h1>"
	puts $fd "    <table>"
	puts $fd "      <tr>"
	puts $fd "        <th>What</th>"
	puts $fd "        <th>Name</th>"
	puts $fd "        <th>Version</th>"
	puts $fd "        <th>Platform</th>"
	puts $fd "      </tr>"
	puts $fd [generate_table $pkglist 4]
	puts $fd "    </table>"
	puts $fd "  </body>"
	puts $fd "</html>"
	close $fd
	file delete $altindexfile
	file link -hard $altindexfile $indexfile
}
# Create "package/name/<pkg>/ver/<ver>/arch/<arch>/file"
proc create_output_files {dstdir pkginfo_arrlist} {
	array set pkginfo $pkginfo_arrlist
	foreach ent [array names pkginfo] {
		set pkg [lindex $ent 0]
		set ver [lindex $ent 1]
		set arch [lindex $ent 2]
		array set currpkginfo $pkginfo($ent)
		set pkgdir $currpkginfo(pkgdir)
		set multifile $currpkginfo(multifile)
		set extfiletail $currpkginfo(extfile)
		set workdir [file join $dstdir package name $pkg ver $ver arch $arch]
		set regfile [file join $workdir file]
		set extfile [file join $workdir $extfiletail]
		catch {
			file mkdir $workdir
		}
		if {$multifile} {
			catch {
				cd $pkgdir
				exec zip -r $extfile .
			}
		} else {
			set origfile [lindex [glob $pkgdir *] 0]
			file copy -force -- $origfile $extfile
		}
		file delete $regfile
		file link -hard $regfile $extfile
	}
}
set pkginfo [teapot_index $srcdir]
create_output_index $dstdir $pkginfo
create_output_pkglist $dstdir $pkginfo
create_output_files $dstdir $pkginfo
 | 
Deleted server/work/Makefile version [f2ece7f06f].
| 
 | 
 | < < < < < < < < < < < < < < < < < < < < < < | 
Deleted server/work/build_all.sh version [4f07bb6e7e].
| 
 | 
 | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 
Deleted server/work/create_teapot version [7fbee19e66].
| 
 | 
 | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 
Deleted server/work/platform version [828b4fc7e9].
| 
 | 
 | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 
Deleted server/work/tls/build.sh version [d44be617e2].
| 
 | 
 | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |