apm_generate_tarball version_idWhat it does:
Generates a tarball for a version, placing it in the version's distribution_tarball blob.Defined in: /web/philip/packages/acs-core/apm-procs.tcl
Source code:
set files [apm_version_file_list $version_id]
set tmpfile [ns_tmpnam]
db_1row "select package_key from apm_package_version_info where version_id = $version_id"
# Generate a command like:
#
# tar cf - -C /web/arsdigita/packages acs-core/00-proc-procs.tcl # -C /web/arsdigita/packages 10-database-procs.tcl ... # | gzip -c > $tmpfile
#
# Note that -C changes the working directory before compressing the next
# file; we need this to ensure that the tarballs are relative to the
# package root directory ([acs_root_dir]/packages).
set cmd [list exec tar cf -]
foreach file $files {
lappend cmd -C "[acs_root_dir]/packages"
lappend cmd "$package_key/$file"
}
lappend cmd "|" "[ad_parameter GzipExecutableDirectory "" /usr/local/bin]/gzip" -c ">" $tmpfile
eval $cmd
# At this point, the APM tarball is sitting in $tmpfile. Save it in the database.
db_with_handle db {
ns_ora blob_dml_file $db "
update apm_package_versions
set distribution_tarball = empty_blob(),
distribution_url = null,
distribution_date = sysdate
where version_id = $version_id
returning distribution_tarball into :1
" $tmpfile
}
file delete $tmpfile