Overview
| Comment: | Updated allow future versions to deal with manifests that are not linked from the index file | 
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive | 
| Timelines: | family | ancestors | descendants | both | trunk | 
| Files: | files | file ages | folders | 
| SHA1: | 34f1255a3811b563738cf78ade6bf500 | 
| User & Date: | rkeene on 2014-11-11 05:11:52 | 
| Other Links: | manifest | tags | 
Context
| 2014-11-11 | ||
| 05:16 | Updated to be more tolerant of future expansions to the manifest format check-in: 859f8f6c54 user: rkeene tags: trunk | |
| 05:11 | Updated allow future versions to deal with manifests that are not linked from the index file check-in: 34f1255a38 user: rkeene tags: trunk | |
| 2014-11-10 | ||
| 20:09 | Updated to include attribute caching since we now disable all FUSE attribute caching check-in: 89eabdaec1 user: rkeene tags: trunk | |
Changes
Modified appfs-mkfs from [994caae026] to [09f445e94a].
| ︙ | ︙ | |||
| 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | 
					fi
					manifestfile="${appfsdir}/sha1/${RANDOM}${RANDOM}${RANDOM}${RANDOM}${RANDOM}.tmp"
					(
						cd "${version}" || exit 1
						emit_manifest
					) > "${manifestfile}"
					manifestfile_hash="$(sha1 "${manifestfile}")"
					mv "${manifestfile}" "${appfsdir}/sha1/${manifestfile_hash}"
					# XXX:TODO: Determine if this is the latest version
 | > | 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | 
					fi
					manifestfile="${appfsdir}/sha1/${RANDOM}${RANDOM}${RANDOM}${RANDOM}${RANDOM}.tmp"
					(
						cd "${version}" || exit 1
						echo "#manifestmetadata,${package},${os},${cpuArch},${version}"
						emit_manifest
					) > "${manifestfile}"
					manifestfile_hash="$(sha1 "${manifestfile}")"
					mv "${manifestfile}" "${appfsdir}/sha1/${manifestfile_hash}"
					# XXX:TODO: Determine if this is the latest version
 | 
| ︙ | ︙ | 
Modified appfsd.tcl from [99393ab276] to [1afaa96f65].
| ︙ | ︙ | |||
| 170 171 172 173 174 175 176 | 
		# Create tables
		db eval {CREATE TABLE IF NOT EXISTS sites(hostname PRIMARY KEY, lastUpdate, ttl);}
		db eval {CREATE TABLE IF NOT EXISTS packages(hostname, sha1, package, version, os, cpuArch, isLatest, haveManifest);}
		db eval {CREATE TABLE IF NOT EXISTS files(package_sha1, type, time, source, size, perms, file_sha1, file_name, file_directory);}
		# Create indexes
		db eval {CREATE INDEX IF NOT EXISTS sites_index ON sites (hostname);}
 | | | 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 | 
		# Create tables
		db eval {CREATE TABLE IF NOT EXISTS sites(hostname PRIMARY KEY, lastUpdate, ttl);}
		db eval {CREATE TABLE IF NOT EXISTS packages(hostname, sha1, package, version, os, cpuArch, isLatest, haveManifest);}
		db eval {CREATE TABLE IF NOT EXISTS files(package_sha1, type, time, source, size, perms, file_sha1, file_name, file_directory);}
		# Create indexes
		db eval {CREATE INDEX IF NOT EXISTS sites_index ON sites (hostname);}
		db eval {CREATE INDEX IF NOT EXISTS packages_index ON packages (hostname, sha1, package, version, os, cpuArch);}
		db eval {CREATE INDEX IF NOT EXISTS files_index ON files (package_sha1, file_name, file_directory);}
	}
	proc download {hostname hash {method sha1}} {
		set url [::appfs::user::construct_url $hostname $hash $method]
		set file [_cachefile $url $hash]
 | 
| ︙ | ︙ | |||
| 303 304 305 306 307 308 309 | 
		appfsd::get_path_info_cache_flush
		return COMPLETE
	}
	proc getpkgmanifest {hostname package_sha1} {
 | | < | 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 | 
		appfsd::get_path_info_cache_flush
		return COMPLETE
	}
	proc getpkgmanifest {hostname package_sha1} {
		set haveManifest [db onecolumn {SELECT haveManifest FROM packages WHERE sha1 = $package_sha1 LIMIT 1;}]
		if {$haveManifest} {
			return COMPLETE
		}
		if {![_isHash $package_sha1]} {
			return FAIL
 | 
| ︙ | ︙ | |||
| 335 336 337 338 339 340 341 342 343 344 345 346 347 348 | 
				unset -nocomplain fileInfo
				set fileInfo(type) [lindex $work 0]
				set fileInfo(time) [lindex $work 1]
				set work [lrange $work 2 end]
				switch -- $fileInfo(type) {
					"file" {
						set fileInfo(size) [lindex $work 0]
						set fileInfo(perms) [lindex $work 1]
						set fileInfo(sha1) [lindex $work 2]
						set work [lrange $work 3 end]
					}
 | > > > > | 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 | 
				unset -nocomplain fileInfo
				set fileInfo(type) [lindex $work 0]
				set fileInfo(time) [lindex $work 1]
				set work [lrange $work 2 end]
				switch -- $fileInfo(type) {
					"#manifestmetadata" {
						unset -nocomplain fileInfo
						continue
					}
					"file" {
						set fileInfo(size) [lindex $work 0]
						set fileInfo(perms) [lindex $work 1]
						set fileInfo(sha1) [lindex $work 2]
						set work [lrange $work 3 end]
					}
 | 
| ︙ | ︙ |