From 486801909ca1b4d8b3c2f69a206ca385e2966a74 Mon Sep 17 00:00:00 2001 From: mistachkin Date: Fri, 27 Jul 2012 02:36:06 +0000 Subject: [PATCH] Add tool to generate a VSIX package usable by Visual Studio 2012 RC. FossilOrigin-Name: 8b90e0c4dbcedaf3e61c5d49452997705be1ef98 --- manifest | 14 +- manifest.uuid | 2 +- tool/mkvsix.tcl | 365 +++++++++++++++++++++++++++++++++++++++++++ tool/win/sqlite.vsix | Bin 0 -> 34247 bytes 4 files changed, 374 insertions(+), 7 deletions(-) create mode 100644 tool/mkvsix.tcl create mode 100644 tool/win/sqlite.vsix diff --git a/manifest b/manifest index 7c1d8a6053..3444e28ebb 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Mark\sparameters\sto\ssorter\sinterfaces\sas\sconst\swhere\sappropriate. -D 2012-07-24T19:46:38.570 +C Add\stool\sto\sgenerate\sa\sVSIX\spackage\susable\sby\sVisual\sStudio\s2012\sRC. +D 2012-07-27T02:36:06.349 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 8f6d858bf3df9978ba43df19985146a1173025e4 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -982,6 +982,7 @@ F tool/mksqlite3c-noext.tcl 8bce31074e4cbe631bb7676526a048335f4c9f02 F tool/mksqlite3c.tcl 589c7f44e990be1b8443cfe4808dce392b0327fa F tool/mksqlite3h.tcl 78013ad79a5e492e5f764f3c7a8ef834255061f8 F tool/mksqlite3internalh.tcl 3dca7bb5374cee003379b8cbac73714f610ef795 +F tool/mkvsix.tcl 75fb1b601d69ead76340fa15bf9813874fed240b F tool/offsets.c fe4262fdfa378e8f5499a42136d17bf3b98f6091 F tool/omittest.tcl 4665982e95a6e5c1bd806cf7bc3dea95be422d77 F tool/opcodeDoc.awk b3a2a3d5d3075b8bd90b7afe24283efdd586659c @@ -1005,7 +1006,8 @@ F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 -P d582cd890d88e873d76a23545bcd49cf093ee9d2 -R dfda5074dc19f89fe8c778d461e17987 -U drh -Z 78ad216a54a8d01eec70f561ea3dc528 +F tool/win/sqlite.vsix 84163b633f01f35cb47495c05dd2b640159677ff +P d8da26f1f43610ac83af2a5d0e170be5abaf7aaa +R e89b8d51f4ab3734c03bdfc7ca67399b +U mistachkin +Z ca7c7ef3778a69af10a33d78de2dc884 diff --git a/manifest.uuid b/manifest.uuid index 4108c28d85..364fa66bed 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -d8da26f1f43610ac83af2a5d0e170be5abaf7aaa \ No newline at end of file +8b90e0c4dbcedaf3e61c5d49452997705be1ef98 \ No newline at end of file diff --git a/tool/mkvsix.tcl b/tool/mkvsix.tcl new file mode 100644 index 0000000000..a5a569d475 --- /dev/null +++ b/tool/mkvsix.tcl @@ -0,0 +1,365 @@ +#!/usr/bin/tclsh +# +# This script is used to generate a VSIX (Visual Studio Extension) file for +# SQLite usable by Visual Studio. + +proc fail { {error ""} {usage false} } { + if {[string length $error] > 0} then { + puts stdout $error + if {!$usage} then {exit 1} + } + + puts stdout "usage:\ +[file tail [info nameofexecutable]]\ +[file tail [info script]] \[sourceDirectory\]" + + exit 1 +} + +proc getEnvironmentVariable { name } { + # + # NOTE: Returns the value of the specified environment variable or an empty + # string for environment variables that do not exist in the current + # process environment. + # + return [expr {[info exists ::env($name)] ? $::env($name) : ""}] +} + +proc getTemporaryPath {} { + # + # NOTE: Returns the normalized path to the first temporary directory found + # in the typical set of environment variables used for that purpose + # or an empty string to signal a failure to locate such a directory. + # + set names [list] + + foreach name [list TEMP TMP] { + lappend names [string toupper $name] [string tolower $name] \ + [string totitle $name] + } + + foreach name $names { + set value [getEnvironmentVariable $name] + + if {[string length $value] > 0} then { + return [file normalize $value] + } + } + + return "" +} + +proc appendArgs { args } { + # + # NOTE: Returns all passed arguments joined together as a single string with + # no intervening spaces between arguments. + # + eval append result $args +} + +proc readFile { fileName } { + # + # NOTE: Reads and returns the entire contents of the specified file, which + # may contain binary data. + # + set file_id [open $fileName RDONLY] + fconfigure $file_id -encoding binary -translation binary + set result [read $file_id] + close $file_id + return $result +} + +proc writeFile { fileName data } { + # + # NOTE: Writes the entire contents of the specified file, which may contain + # binary data. + # + set file_id [open $fileName {WRONLY CREAT TRUNC}] + fconfigure $file_id -encoding binary -translation binary + puts -nonewline $file_id $data + close $file_id + return "" +} + +proc substFile { fileName } { + # + # NOTE: Performs all Tcl command, variable, and backslash substitutions in + # the specified file and then re-writes the contents of that same file + # with the substituted data. + # + return [writeFile $fileName [uplevel 1 [list subst [readFile $fileName]]]] +} + +proc replacePlatform { fileName platformName } { + # + # NOTE: Returns the specified file name containing the platform name instead + # of platform placeholder tokens. + # + return [string map [list $platformName] $fileName] +} + +set script [file normalize [info script]] + +if {[string length $script] == 0} then { + fail "script file currently being evaluated is unknown" true +} + +set path [file dirname $script] +set rootName [file rootname [file tail $script]] + +############################################################################### + +# +# NOTE: Process and verify all the command line arguments. +# +set argc [llength $argv] +if {$argc != 1 && $argc != 2} then {fail} + +set binaryDirectory [lindex $argv 0] + +if {[string length $binaryDirectory] == 0} then { + fail "invalid binary directory" +} + +if {![file exists $binaryDirectory] || \ + ![file isdirectory $binaryDirectory]} then { + fail "binary directory does not exist" +} + +if {$argc == 2} then { + set sourceDirectory [lindex $argv 1] +} else { + # + # NOTE: Assume that the source directory is the parent directory of the one + # that contains this script file. + # + set sourceDirectory [file dirname $path] +} + +if {[string length $sourceDirectory] == 0} then { + fail "invalid source directory" +} + +if {![file exists $sourceDirectory] || \ + ![file isdirectory $sourceDirectory]} then { + fail "source directory does not exist" +} + +############################################################################### + +set templateFile [file join $path win sqlite.vsix] + +if {![file exists $templateFile] || \ + ![file isfile $templateFile]} then { + fail [appendArgs "template file \"" $templateFile "\" does not exist"] +} + +set currentDirectory [pwd] +set outputFile [file join $currentDirectory sqlite-output.vsix] + +if {[file exists $outputFile]} then { + fail [appendArgs "output file \"" $outputFile "\" already exists"] +} + +############################################################################### + +# +# NOTE: Make sure that a valid temporary directory exists. +# +set temporaryDirectory [getTemporaryPath] + +if {[string length $temporaryDirectory] == 0 || \ + ![file exists $temporaryDirectory] || \ + ![file isdirectory $temporaryDirectory]} then { + fail "cannot locate a usable temporary directory" +} + +# +# NOTE: Setup the staging directory to have a unique name inside of the +# configured temporary directory. +# +set stagingDirectory [file normalize [file join $temporaryDirectory \ + [appendArgs $rootName . [pid]]]] + +############################################################################### + +# +# NOTE: Configure the external zipping tool. First, see if it has already +# been pre-configured. If not, try to query it from the environment. +# Finally, fallback on the default of simply "zip", which will then +# be assumed to exist somewhere along the PATH. +# +if {![info exists zip]} then { + if {[info exists env(ZipTool)]} then { + set zip $env(ZipTool) + } + if {![info exists zip] || ![file exists $zip]} then { + set zip zip + } +} + +# +# NOTE: Configure the external unzipping tool. First, see if it has already +# been pre-configured. If not, try to query it from the environment. +# Finally, fallback on the default of simply "unzip", which will then +# be assumed to exist somewhere along the PATH. +# +if {![info exists unzip]} then { + if {[info exists env(UnZipTool)]} then { + set unzip $env(UnZipTool) + } + if {![info exists unzip] || ![file exists $unzip]} then { + set unzip unzip + } +} + +############################################################################### + +# +# NOTE: Attempt to extract the SQLite version from the "sqlite3.h" header file +# in the source directory. This script assumes that the header file has +# already been generated by the build process. +# +set pattern {^#define\s+?SQLITE_VERSION\s+?"(.*?)"$} +set data [readFile [file join $sourceDirectory sqlite3.h]] + +if {![regexp -line -- $pattern $data dummy version]} then { + fail [appendArgs "cannot locate SQLITE_VERSION value in \"" \ + [file join $sourceDirectory sqlite3.h] \"] +} + +############################################################################### + +# +# NOTE: Setup the master file list data, including the necessary flags. +# +set fileNames(source) [list "" "" "" \ + [file join $sourceDirectory sqlite3.h] \ + [file join $binaryDirectory sqlite3.lib] \ + [file join $binaryDirectory sqlite3.dll]] + +set fileNames(destination) [list \ + [file join $stagingDirectory extension.vsixmanifest] \ + [file join $stagingDirectory SDKManifest.xml] \ + [file join $stagingDirectory DesignTime CommonConfiguration \ + SQLite.WinRT.props] \ + [file join $stagingDirectory DesignTime CommonConfiguration \ + sqlite3.h] \ + [file join $stagingDirectory DesignTime CommonConfiguration \ + sqlite3.lib] \ + [file join $stagingDirectory Redist CommonConfiguration \ + sqlite3.dll]] + +set fileNames(neutral) [list 1 1 1 1 0 0] +set fileNames(subst) [list 1 1 1 0 0 0] + +############################################################################### + +# +# NOTE: Setup the list of platforms supported by this script. +# +set platformNames [list ARM x64 x86] + +############################################################################### + +# +# NOTE: Make sure the staging directory exists, creating it if necessary. +# +file mkdir $stagingDirectory + +# +# NOTE: Build the Tcl command used to extract the template package to the +# staging directory. +# +set extractCommand [list exec -- $unzip $templateFile -d $stagingDirectory] + +# +# NOTE: Extract the template package to the staging directory. +# +eval $extractCommand + +############################################################################### + +# +# NOTE: Process each file in the master file list. There are actually four +# parallel lists that contain the source file names, destination file +# names, the platform-neutral flags, and the use-subst flags. When the +# platform-neutral flag is non-zero, the file is not platform-specific. +# When the use-subst flag is non-zero, the file is considered to be a +# text file that may contain Tcl variable and/or command replacements, +# to be dynamically replaced during processing. If the source file name +# is an empty string, then the destination file name will be assumed to +# already exist in the staging directory and will not be copied; however, +# dynamic replacements may still be performed on the destination file +# prior to the package being re-zipped. +# +foreach sourceFileName $fileNames(source) \ + destinationFileName $fileNames(destination) \ + isNeutral $fileNames(neutral) useSubst $fileNames(subst) { + # + # NOTE: If the current file is platform-neutral, then only one platform will + # be processed for it, namely "neutral"; otherwise, each supported + # platform will be processed for it individually. + # + foreach platformName [expr {$isNeutral ? [list neutral] : $platformNames}] { + # + # NOTE: Does the source file need to be copied to the destination file? + # + if {[string length $sourceFileName] > 0} then { + # + # NOTE: Copy the source file to the destination file verbatim. + # + file copy [replacePlatform $sourceFileName $platformName] \ + [replacePlatform $destinationFileName $platformName] + } + + # + # NOTE: Does the destination file contain dynamic replacements that must + # be processed now? + # + if {$useSubst} then { + # + # NOTE: Perform any dynamic replacements contained in the destination + # file and then re-write it in-place. + # + substFile [replacePlatform $destinationFileName $platformName] + } + } +} + +############################################################################### + +# +# NOTE: Change the current directory to the staging directory so that the +# external archive building tool can pickup the necessary files using +# relative paths. +# +cd $stagingDirectory + +# +# NOTE: Build the Tcl command used to archive the final package in the +# output directory. +# +set archiveCommand [list exec -- $zip -r $outputFile *] + +# +# NOTE: Build the final package archive in the output directory. +# +eval $archiveCommand + +# +# NOTE: Change back to the previously saved current directory. +# +cd $currentDirectory + +# +# NOTE: Cleanup the temporary staging directory. +# +file delete -force $stagingDirectory + +############################################################################### + +# +# NOTE: Success, emit the fully qualified path of the generated VSIX file. +# +puts stdout $outputFile diff --git a/tool/win/sqlite.vsix b/tool/win/sqlite.vsix new file mode 100644 index 0000000000000000000000000000000000000000..16f7b57cd03cf43fd1c77761a25b98929305eb39 GIT binary patch literal 34247 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

8-}lZ_xTq{(Oefg2&$ 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