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]
}
|
| ︙ | ︙ |