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: | 34f1255a3811b563738cf78ade6bf500dcf6ddba |
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 177 178 179 180 181 182 183 184 ... 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 ... 335 336 337 338 339 340 341 342 343 344 345 346 347 348 |
# 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, 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] ................................................................................ appfsd::get_path_info_cache_flush return COMPLETE } proc getpkgmanifest {hostname package_sha1} { set haveManifests [db eval {SELECT haveManifest FROM packages WHERE sha1 = $package_sha1 LIMIT 1;}] set haveManifest [lindex $haveManifests 0] if {$haveManifest} { return COMPLETE } if {![_isHash $package_sha1]} { return FAIL ................................................................................ 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] } |
| | < > > > > |
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 ... 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 ... 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 |
# 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] ................................................................................ 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 ................................................................................ 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] } |