Index: Setup/data/verify.lst ================================================================== --- Setup/data/verify.lst +++ Setup/data/verify.lst @@ -1242,10 +1242,178 @@ {{tmp}\vcredist_x64_2015_VSU3.exe} } ############################################################################### # +# NOTE: This is the list of all files that should be present in all NuGet +# packages. +# +set sds_manifests(nuGetMetadata) { + _rels/.rels + [Content_Types].xml + package/services/metadata/core-properties/${md5}.psmdcp +} + +############################################################################### +# +# NOTE: This is the list of all files that should be present in all core +# NuGet packages that include the primary managed assembly. +# +set sds_manifests(nuGetCoreManaged) { + lib/net20/System.Data.SQLite.dll + lib/net20/System.Data.SQLite.xml + lib/net40/System.Data.SQLite.dll + lib/net40/System.Data.SQLite.xml + lib/net45/System.Data.SQLite.dll + lib/net45/System.Data.SQLite.xml + lib/net451/System.Data.SQLite.dll + lib/net451/System.Data.SQLite.xml + lib/net46/System.Data.SQLite.dll + lib/net46/System.Data.SQLite.xml +} + +############################################################################### +# +# NOTE: This is the list of all files that should be present in all core +# NuGet packages that include the primary interop assemblies. +# +set sds_manifests(nuGetCoreNative) { + build/net20/x64/SQLite.Interop.dll + build/net20/x86/SQLite.Interop.dll + build/net40/x64/SQLite.Interop.dll + build/net40/x86/SQLite.Interop.dll + build/net45/x64/SQLite.Interop.dll + build/net45/x86/SQLite.Interop.dll + build/net451/x64/SQLite.Interop.dll + build/net451/x86/SQLite.Interop.dll + build/net46/x64/SQLite.Interop.dll + build/net46/x86/SQLite.Interop.dll + build/net20/System.Data.SQLite.Core.targets + build/net40/System.Data.SQLite.Core.targets + build/net45/System.Data.SQLite.Core.targets + build/net451/System.Data.SQLite.Core.targets + build/net46/System.Data.SQLite.Core.targets + lib/net20/System.Data.SQLite.dll.config + lib/net40/System.Data.SQLite.dll.config + lib/net45/System.Data.SQLite.dll.config + lib/net451/System.Data.SQLite.dll.config + lib/net46/System.Data.SQLite.dll.config +} + +############################################################################### +# +# NOTE: This is the list of all files that should be present in all NuGet +# packages that include support for the Entity Framework 6.x. +# +set sds_manifests(nuGetEf6) { + System.Data.SQLite.EF6.nuspec + content/net40/app.config.install.xdt + content/net40/web.config.install.xdt + content/net40/app.config.transform + content/net40/web.config.transform + content/net45/app.config.install.xdt + content/net45/web.config.install.xdt + content/net45/app.config.transform + content/net45/web.config.transform + content/net451/app.config.install.xdt + content/net451/web.config.install.xdt + content/net451/app.config.transform + content/net451/web.config.transform + content/net46/app.config.install.xdt + content/net46/web.config.install.xdt + content/net46/app.config.transform + content/net46/web.config.transform + lib/net40/System.Data.SQLite.EF6.dll + lib/net45/System.Data.SQLite.EF6.dll + lib/net451/System.Data.SQLite.EF6.dll + lib/net46/System.Data.SQLite.EF6.dll + tools/net40/install.ps1 + tools/net45/install.ps1 + tools/net451/install.ps1 + tools/net46/install.ps1 +} + +############################################################################### +# +# NOTE: This is the list of all files that should be present in all NuGet +# packages that include support for LINQ. +# +set sds_manifests(nuGetLinq) { + System.Data.SQLite.Linq.nuspec + content/net20/app.config.transform + content/net20/web.config.transform + content/net40/app.config.transform + content/net40/web.config.transform + content/net45/app.config.transform + content/net45/web.config.transform + content/net451/app.config.transform + content/net451/web.config.transform + content/net46/app.config.transform + content/net46/web.config.transform + lib/net20/System.Data.SQLite.Linq.dll + lib/net40/System.Data.SQLite.Linq.dll + lib/net45/System.Data.SQLite.Linq.dll + lib/net451/System.Data.SQLite.Linq.dll + lib/net46/System.Data.SQLite.Linq.dll +} + +############################################################################### +# +# NOTE: This is the list of all files that should be present in the primary +# NuGet package. +# +set sds_manifests(nuGetPrimary) { + System.Data.SQLite.nuspec +} + +############################################################################### +# +# NOTE: This is the list of all files that should be present in the core +# NuGet package. +# +set sds_manifests(nuGetCore) { + System.Data.SQLite.Core.nuspec +} + +############################################################################### +# +# NOTE: This is the list of all files that should be present in the core +# NuGet package that includes only the primary managed assembly. +# +set sds_manifests(nuGetCoreMsil) { + System.Data.SQLite.Core.MSIL.nuspec +} + +############################################################################### +# +# NOTE: This is the list of all files that should be present in the NuGet +# package that includes only the managed assemblies. +# +set sds_manifests(nuGetMsil) { + System.Data.SQLite.MSIL.nuspec +} + +############################################################################### +# +# NOTE: This is the list of all files that should be present in the NuGet +# package that includes the mixed-mode assembly for x64. +# +set sds_manifests(nuGetX64) { + System.Data.SQLite.x64.nuspec +} + +############################################################################### +# +# NOTE: This is the list of all files that should be present in the NuGet +# package that includes the mixed-mode assembly for x86. +# +set sds_manifests(nuGetX86) { + System.Data.SQLite.x86.nuspec +} + +############################################################################### +# # NOTE: These are the master archive manifest groups, based on file name. The # first element in each list is the array variable name prefix used to # locate another array containing the named elements referenced by the # remaining elements in each list. Here is an example: # @@ -1717,8 +1885,36 @@ ############################################################################### set manifests(sqlite-netFx46-setup-bundle-x64-2015-.exe) [list sds \ setupCore setupBundle setupLinqCore setupEf6Core setupLinqBundle \ setupEf6Bundle setupX64Vs2015] + +############################################################################### +############################### NuGet Packages ################################ +############################################################################### + +set manifests(System.Data.SQLite..nupkg) [list sds \ + nuGetMetadata nuGetPrimary] + +set manifests(System.Data.SQLite.Core..nupkg) [list sds \ + nuGetMetadata nuGetCoreManaged nuGetCoreNative nuGetCore] + +set manifests(System.Data.SQLite.Core.MSIL..nupkg) [list sds \ + nuGetMetadata nuGetCoreManaged nuGetCoreMsil] + +set manifests(System.Data.SQLite.EF6..nupkg) [list sds \ + nuGetMetadata nuGetEf6] + +set manifests(System.Data.SQLite.Linq..nupkg) [list sds \ + nuGetMetadata nuGetLinq] + +set manifests(System.Data.SQLite.MSIL..nupkg) [list sds \ + nuGetMetadata nuGetMsil] + +set manifests(System.Data.SQLite.x64..nupkg) [list sds \ + nuGetMetadata nuGetCoreManaged nuGetX64] + +set manifests(System.Data.SQLite.x86..nupkg) [list sds \ + nuGetMetadata nuGetCoreManaged nuGetX86] ############################################################################### # end of file Index: Setup/verify.eagle ================================================================== --- Setup/verify.eagle +++ Setup/verify.eagle @@ -185,11 +185,11 @@ } set hashPrefix [expr {$failHashes ? "ERROR" : "WARNING"}] set archiveFileNames [list] - foreach extension [list exe rar zip] { + foreach extension [list exe nupkg rar zip] { eval lappend archiveFileNames [findFilesRecursive \ [file join $directory [appendArgs *. $extension]]] } foreach archiveFileName $archiveFileNames { @@ -210,10 +210,26 @@ # manifest file name that look like the name of a # build configuration (e.g. "debug" or "release"). # regsub -- {-debug-|-release-} $manifest {-} manifest + # + # HACK: Special hack to allow "CLRvX" to appear in the + # manifest file names, part 1, the vanishing. + # + set manifest [string map \ + [list CLRv2 CLRvTWO CLRv4 CLRvFOUR] $manifest] + + # + # HACK: Special hack to allow "EF6", "x64", and "x86" to + # appear in the manifest file names, part 1, the + # vanishing. + # + set manifest [string map \ + [list EF6 EF-SIX x64 x-SIXTYFOUR x86 x-EIGHTYSIX] \ + $manifest] + # # HACK: Attempt to match and remove sub-strings from the # manifest file name that look like a version number # in the format "..." # and/or a date/time string matching the format @@ -220,10 +236,34 @@ # "YYYY-MM-DD-NN" (where the NN portion is a generic # incrementing sequence number). # regsub -- {\d+\.\d+\.\d+\.\d+} $manifest {} manifest regsub -- {\d{4}-\d{2}-\d{2}-\d{2}} $manifest {} manifest + + # + # HACK: Special hack to allow "CLRvX" to appear in the + # manifest file names, part 2, the return. + # + set manifest [string map \ + [list CLRvTWO CLRv2 CLRvFOUR CLRv4] $manifest] + + # + # HACK: Special hack to allow "EF6", "x64", and "x86" to + # appear in the manifest file names, part 2, the + # return. + # + set manifest [string map \ + [list EF-SIX EF6 x-SIXTYFOUR x64 x-EIGHTYSIX x86] \ + $manifest] + + # + # HACK: Fixup manifest file names that correspond to the + # NuGet packages for SymbolSource. + # + if {[regexp -- {[/\\]SymbolSource[/\\]} $archiveFileName]} then { + set manifest [string map [list .. .Source..] $manifest] + } if {![info exists manifests($manifest)]} then { puts stdout [appendArgs \ "WARNING: Cannot find master manifest \"" \ $manifest "\" for archive \"" $archiveFileName \ @@ -252,11 +292,11 @@ lappend listCommand exec -success Success -nocarriagereturns -- set extractCommand [list] lappend extractCommand exec -success Success -nocarriagereturns -- - if {[file extension $archiveFileName] eq ".zip"} then { + if {[file extension $archiveFileName] in [list .nupkg .zip]} then { if {![file exists $zip]} then { usage [appendArgs "tool \"" $zip "\" is missing"] } lappend listCommand $zip -Z -1 $archiveFileName @@ -287,13 +327,13 @@ if {[catch {eval $listCommand} result] == 0} then { # # HACK: The Inno Setup unpacking tool requires some extra # parsing logic to handle the output. # - if {[string first [file tail $innounp] $listCommand] != -1} then { - set containedFileNames [list] + set containedFileNames [list] + if {[string first [file tail $innounp] $listCommand] != -1} then { foreach {dummy matchFileName} [regexp -line -all -inline -- \ {^[ 0-9]{10} \d{4}\.\d{2}\.\d{2} \d{2}:\d{2} (.*)$} $result] { # # NOTE: Add the file name extracted from the output # line to the list of file names contained in @@ -300,12 +340,24 @@ # this archive. # lappend containedFileNames $matchFileName } } else { - set containedFileNames [split [string map [list \\ /] \ - [string trim $result]] \n] + foreach matchFileName [split [string map [list \\ /] [string \ + trim $result]] \n] { + # + # NOTE: Replace the dynamically calculated MD5 hash + # for the special NuGet package file name, if + # needed. + # + if {[file extension $matchFileName] eq ".psmdcp"} then { + regsub -- {/[0-9a-f]{32}\.} $matchFileName {/${md5}.} \ + matchFileName + } + + lappend containedFileNames $matchFileName + } } foreach manifestFileName $manifestFileNames { # # TODO: Should we use -nocase here because Windows