diff --git a/sdk/compatibility/versions/UpdateVersions.hs b/sdk/compatibility/versions/UpdateVersions.hs index 01e78643cdbd..14ac82af69c9 100644 --- a/sdk/compatibility/versions/UpdateVersions.hs +++ b/sdk/compatibility/versions/UpdateVersions.hs @@ -51,13 +51,13 @@ renderVersionsFile versions = , "# Update versions/UpdateVersions.hs instead." ] , [ "sdk_versions = [" ] - , map renderVersion (Map.keys versions <> [headVersion]) + , map renderTodoVersion (Map.keys versions <> [headVersion]) , [ "]"] , [ "platform_versions = [" ] - , map renderVersion (Map.keys versions <> [headVersion]) + , map renderTodoVersion (Map.keys versions <> [headVersion]) , [ "]" ] , [ "stable_versions = [" ] - , map renderVersion (Map.keys stableVersions <> [headVersion]) + , map renderTodoVersion (Map.keys stableVersions <> [headVersion]) , [ "]" ] , [ "latest_stable_version = \"" <> SemVer.toText latestVersion <> "\"" ] , [ "version_sha256s = {"] @@ -79,7 +79,7 @@ renderVersionsFile versions = , [ " }," ] ] renderDigest digest = T.pack $ show (convertToBase Base16 digest :: ByteString) - renderVersion ver = " \"" <> SemVer.toText ver <> "\"," + renderTodoVersion ver = " \"" <> SemVer.toText ver <> "\"," stableVersions = Map.filterWithKey (const . null . view SemVer.release) versions firstVersion = SemVer.version 3 3 0 [fromJust $ SemVer.textual "snapshot", SemVer.numeric 20250930, SemVer.numeric 0] [] latestVersion = if Map.null versions then firstVersion else fst $ Map.findMax versions diff --git a/sdk/compiler/daml-lf-ast/src/DA/Daml/LF/Ast/Version/VersionType.hs b/sdk/compiler/daml-lf-ast/src/DA/Daml/LF/Ast/Version/VersionType.hs index 895de8432223..6782965db39e 100644 --- a/sdk/compiler/daml-lf-ast/src/DA/Daml/LF/Ast/Version/VersionType.hs +++ b/sdk/compiler/daml-lf-ast/src/DA/Daml/LF/Ast/Version/VersionType.hs @@ -21,10 +21,13 @@ import GHC.Generics import qualified DA.Daml.LF.Ast.Range as R import DA.Pretty +type Patch = Int + -- | Daml-LF version of an archive payload. -data Version = Version +data Version = VersionP { versionMajor :: MajorVersion , versionMinor :: MinorVersion + , patch :: Patch } deriving (Eq, Data, Generic, NFData, Show, Ord, Aeson.FromJSON, Aeson.ToJSON) @@ -81,16 +84,28 @@ renderMinorVersion = \case PointStaging minor -> show minor PointDev -> "dev" -renderVersion :: Version -> String -renderVersion (Version major minor) = +renderPatch :: Patch -> String +renderPatch = show + +renderVersionWithPatch :: Version -> String +renderVersionWithPatch (VersionP major minor patch) = + renderMajorVersion major <> "." <> renderMinorVersion minor <> "." <> renderPatch patch + +--TODO: convert usages of toBeDecidedRenderVersion to renderVersion +--wherever we can, or (back to) renderTodoVersion everywhere else +renderVersionWithoutPatch :: Version -> String +renderVersionWithoutPatch (VersionP major minor _) = renderMajorVersion major <> "." <> renderMinorVersion minor +renderTodoVersion :: Version -> String +renderTodoVersion = renderVersionWithoutPatch + -- | A datatype describing a set of language versions. Used in the definition of -- 'Feature' below. type VersionReq = R.Range Version instance Pretty Version where - pPrint = string . renderVersion + pPrint = string . renderTodoVersion data Feature = Feature { featureName :: !T.Text diff --git a/sdk/compiler/daml-lf-ast/src/DA/Daml/LF/Ast/Version/VersionUtil.hs b/sdk/compiler/daml-lf-ast/src/DA/Daml/LF/Ast/Version/VersionUtil.hs index 0d7a3383fbe6..7ec55852f750 100644 --- a/sdk/compiler/daml-lf-ast/src/DA/Daml/LF/Ast/Version/VersionUtil.hs +++ b/sdk/compiler/daml-lf-ast/src/DA/Daml/LF/Ast/Version/VersionUtil.hs @@ -11,20 +11,27 @@ import Data.Char (isDigit) import qualified DA.Daml.LF.Ast.Range as R import qualified Data.Text as T import Safe (headMay) -import Text.ParserCombinators.ReadP (ReadP, pfail, readP_to_S, (+++), munch1) +import Text.ParserCombinators.ReadP (ReadP, pfail, readP_to_S, (+++), (<++), eof, munch1) import qualified Text.ParserCombinators.ReadP as ReadP import qualified Data.Map.Strict as MS +import qualified Data.Map as M import Control.Lens (Getting, view) import Control.Monad.Reader.Class import DA.Daml.LF.Ast.Version.VersionType +import DA.Daml.LF.Ast.Version.GeneratedVersions import DA.Daml.LF.Ast.Version.GeneratedFeatures +validatePatch :: Version -> Bool +validatePatch (VersionP _ PointDev _) = True +validatePatch (VersionP _ minor patch) = + maybe False (\patches -> patch `elem` patches) (M.lookup minor allowedPatchMap) + -- | x `canDependOn` y if dars compiled to version x can depend on dars compiled -- to version y. canDependOn :: Version -> Version -> Bool -canDependOn (Version major1 minor1) (Version major2 minor2) = +canDependOn (VersionP major1 minor1 _) (VersionP major2 minor2 _) = major1 == major2 && minor1 >= minor2 isDevVersion :: Version -> Bool @@ -107,6 +114,9 @@ readMinorVersion = readStable +++ readDev readStable = PointStable <$> readSimpleInt readDev = PointDev <$ ReadP.string "dev" +readPatch :: ReadP Patch +readPatch = readSimpleInt + -- >>> parseMinorVersion "14" -- Just (PointStable 14) -- >>> parseMinorVersion "dev" @@ -117,20 +127,32 @@ parseMinorVersion :: String -> Maybe MinorVersion parseMinorVersion = headMay . map fst . readP_to_S readMinorVersion readVersion :: ReadP Version -readVersion = do - major <- readMajorVersion - _ <- ReadP.char '.' - minor <- readMinorVersion - pure (Version major minor) +readVersion = readPatchfull <++ readPatchless + where + readPatchfull = do + major <- readMajorVersion + _ <- ReadP.char '.' + minor <- readMinorVersion + _ <- ReadP.char '.' + patch <- readPatch + pure (VersionP major minor patch) + + readPatchless = do + major <- readMajorVersion + _ <- ReadP.char '.' + minor <- readMinorVersion + pure (Version major minor) -- >>> parseVersion "2.dev" --- Just (Version {versionMajor = V2, versionMinor = PointDev}) +-- Just (VersionP {versionMajor = V2, versionMinor = PointDev, patch = 0}) -- >>> parseVersion "2.15" --- Just (Version {versionMajor = V2, versionMinor = PointStable 15}) +-- Just (VersionP {versionMajor = V2, versionMinor = PointStable 15, patch = 0}) +-- >>> parseVersion "2.2.0" +-- Just (VersionP {versionMajor = V2, versionMinor = PointStable 2, patch = 0}) -- >>> parseVersion "2.garbage" -- Nothing parseVersion :: String -> Maybe Version -parseVersion = headMay . map fst . readP_to_S readVersion +parseVersion = headMay . map fst . readP_to_S (readVersion <* eof) -- The extended implementation ifVersionWith :: MonadReader r m diff --git a/sdk/compiler/daml-lf-ast/test/DA/Daml/LF/Ast/Tests.hs b/sdk/compiler/daml-lf-ast/test/DA/Daml/LF/Ast/Tests.hs index b4fdc89ce749..9f81708c8e3b 100644 --- a/sdk/compiler/daml-lf-ast/test/DA/Daml/LF/Ast/Tests.hs +++ b/sdk/compiler/daml-lf-ast/test/DA/Daml/LF/Ast/Tests.hs @@ -296,7 +296,7 @@ substitutionTests = testGroup "substitution" typeSynTests :: TestTree typeSynTests = testGroup "type synonyms" $ - [ testGroup (renderVersion version) + [ testGroup (renderTodoVersion version) [ testGroup "happy" (map (mkHappyTestcase version) happyExamples) , testGroup "sad" (map (mkSadTestcase version) sadExamples) , testGroup "bad" (map (mkBadTestcase version) badDefSets) diff --git a/sdk/compiler/daml-lf-proto-decode/src/DA/Daml/LF/Proto3/Decode.hs b/sdk/compiler/daml-lf-proto-decode/src/DA/Daml/LF/Proto3/Decode.hs index 9c3036ad694f..741e8b474538 100644 --- a/sdk/compiler/daml-lf-proto-decode/src/DA/Daml/LF/Proto3/Decode.hs +++ b/sdk/compiler/daml-lf-proto-decode/src/DA/Daml/LF/Proto3/Decode.hs @@ -20,6 +20,7 @@ import qualified DA.Daml.LF.Proto3.DecodeV2 as DecodeV2 import qualified DA.Daml.LF.Ast as LF import DA.Daml.StablePackages (allStablePackageIds) +import Control.Monad (when) import Control.Monad.Except (throwError) import Control.Lens (over, _Left) import Data.Int (Int32) @@ -35,8 +36,8 @@ decodeLfVersion major pkgId minorText patchInt = do minor <- if | Just minor <- LF.parseMinorVersion (T.unpack minorText) -> pure minor | otherwise -> unsupportedMinor - _ <- if patchInt == 0 then pure () else unsupportedPatch minor patchInt - let version = LF.Version major minor + let version = LF.VersionP major minor (fromIntegral patchInt) + when (not $ LF.validatePatch version) $ unsupportedPatch minor patchInt if pkgId `elem` allStablePackageIds || version `elem` LF.compilerInputLfVersions then pure version else unsupportedMinor diff --git a/sdk/compiler/daml-lf-proto-encode/src/DA/Daml/LF/Proto3/Encode.hs b/sdk/compiler/daml-lf-proto-encode/src/DA/Daml/LF/Proto3/Encode.hs index d15b698feb1a..47557c95dfd4 100644 --- a/sdk/compiler/daml-lf-proto-encode/src/DA/Daml/LF/Proto3/Encode.hs +++ b/sdk/compiler/daml-lf-proto-encode/src/DA/Daml/LF/Proto3/Encode.hs @@ -16,6 +16,6 @@ import qualified Data.ByteString.Lazy as BSL encodePayload :: Package -> ArchivePayload encodePayload package = case packageLfVersion package of - (Version V2 minor) -> + (VersionP V2 minor patch) -> let payload = ArchivePayloadSumDamlLf2 $ BSL.toStrict $ Proto.toLazyByteString (EncodeV2.encodePackage package) - in ArchivePayload (TL.pack $ renderMinorVersion minor) 0 (Just payload) + in ArchivePayload (TL.pack $ renderMinorVersion minor) (fromIntegral patch) (Just payload) diff --git a/sdk/compiler/daml-lf-tools/tests/DA/Daml/LF/Simplifier/Tests.hs b/sdk/compiler/daml-lf-tools/tests/DA/Daml/LF/Simplifier/Tests.hs index 1927dccd3a80..4ec0d3d57124 100644 --- a/sdk/compiler/daml-lf-tools/tests/DA/Daml/LF/Simplifier/Tests.hs +++ b/sdk/compiler/daml-lf-tools/tests/DA/Daml/LF/Simplifier/Tests.hs @@ -12,7 +12,7 @@ import qualified Data.Text as T import DA.Daml.LF.Ast.Base import DA.Daml.LF.Ast.Util -import DA.Daml.LF.Ast.Version (devLfVersion, Version, renderVersion) +import DA.Daml.LF.Ast.Version (devLfVersion, Version, renderVersionWithPatch) import DA.Daml.LF.Ast.World (initWorld) import DA.Daml.LF.Simplifier (simplifyModule) @@ -25,7 +25,7 @@ main = defaultMain $ testGroup "DA.Daml.LF.Simplifier" -- flags. The simplifier may thus behave differently based on the version of LF -- and thus we may need to test different LF versions as they diverge over time. constantLiftingTests :: Version -> TestTree -constantLiftingTests version = testGroup ("Constant Lifting " <> renderVersion version) +constantLiftingTests version = testGroup ("Constant Lifting " <> renderVersionWithPatch version) [ mkTestCase "empty module" [] [] , mkTestCase "closed value" [ dval "foo" TInt64 (EBuiltinFun (BEInt64 10)) ] diff --git a/sdk/compiler/damlc/daml-ide-core/src/Development/IDE/Core/Rules/Daml.hs b/sdk/compiler/damlc/daml-ide-core/src/Development/IDE/Core/Rules/Daml.hs index 46b599ed6e4e..f2eba50e69e1 100644 --- a/sdk/compiler/damlc/daml-ide-core/src/Development/IDE/Core/Rules/Daml.hs +++ b/sdk/compiler/damlc/daml-ide-core/src/Development/IDE/Core/Rules/Daml.hs @@ -546,18 +546,18 @@ getUpgradedPackageErrs opts file mainPkg Just $ ideErrorPretty file $ mconcat [ mainPackage <> " LF Version (" - , T.pack $ LF.renderVersion $ LF.packageLfVersion mainPkg + , T.pack $ LF.renderTodoVersion $ LF.packageLfVersion mainPkg , ") must have the same major LF version as " <> upgradedPackage <> " LF Version (" - , T.pack $ LF.renderVersion $ optDamlLfVersion opts + , T.pack $ LF.renderTodoVersion $ optDamlLfVersion opts , ")" ] else justIf (optDamlLfVersion opts `lfVersionMinorLt` LF.packageLfVersion mainPkg) $ ideErrorPretty file $ mconcat [ mainPackage <> " LF Version (" - , T.pack $ LF.renderVersion $ optDamlLfVersion opts + , T.pack $ LF.renderTodoVersion $ optDamlLfVersion opts , ") cannot be lower than the " <> upgradedPackage <> " LF Version (" - , T.pack $ LF.renderVersion $ LF.packageLfVersion mainPkg + , T.pack $ LF.renderTodoVersion $ LF.packageLfVersion mainPkg , ")" ] , justIf (optMbPackageName opts /= Just (LF.packageName $ LF.packageMetadata mainPkg)) $ diff --git a/sdk/compiler/damlc/daml-opts/daml-opts/DA/Daml/Options.hs b/sdk/compiler/damlc/daml-opts/daml-opts/DA/Daml/Options.hs index a45562d0d638..8aa153a9f624 100644 --- a/sdk/compiler/damlc/daml-opts/daml-opts/DA/Daml/Options.hs +++ b/sdk/compiler/damlc/daml-opts/daml-opts/DA/Daml/Options.hs @@ -560,7 +560,7 @@ expandSdkPackages logger lfVersion dars = do mapM (expand mbSdkPath) (nubOrd dars) where isSdkPackage fp = takeExtension fp `notElem` [".dar", ".dalf"] - sdkSuffix = "-" <> LF.renderVersion lfVersion + sdkSuffix = "-" <> LF.renderTodoVersion lfVersion expand mbSdkPath fp | fp `elem` basePackages = pure fp | isSdkPackage fp = case mbSdkPath of diff --git a/sdk/compiler/damlc/daml-resolution-config/src/DA/Daml/Resolution/Config.hs b/sdk/compiler/damlc/daml-resolution-config/src/DA/Daml/Resolution/Config.hs index 2e222f45bdfe..976e296fea53 100644 --- a/sdk/compiler/damlc/daml-resolution-config/src/DA/Daml/Resolution/Config.hs +++ b/sdk/compiler/damlc/daml-resolution-config/src/DA/Daml/Resolution/Config.hs @@ -56,7 +56,7 @@ instance ToJSON DalfInfoCacheEntry where toJSON DalfInfoCacheEntry{..} = object [ "package_name" .= diPackageName , "package_version" .= diPackageVersion - , "lf_version" .= LF.renderVersion diLfVersion + , "lf_version" .= LF.renderTodoVersion diLfVersion , "timestamp" .= diTimestamp ] instance FromJSON DalfInfoCacheEntry where @@ -174,8 +174,11 @@ findDarInDarInfos darInfos rawName lfVersion = do case availableVersions of [] -> do let allPackageNames = T.intercalate "," . nubOrd $ LF.unPackageName . diPackageName <$> Map.elems darInfos + let allPackageVersions = T.intercalate "," $ T.pack . show . diLfVersion <$> Map.elems darInfos Left $ "Package " <> rawName <> " could not be found, available packages are:\n" <> allPackageNames <> "\nIf your package is shown, it may not be compatible with your LF version." + <> "\nThis Lf version: " <> (T.pack . show) lfVersion + <> "\nAllPackageVersion: " <> (T.pack . show) allPackageVersions [_] -> -- Major LF versions aren't cross compatible, so all will be same major here due to canDependOn check above -- as such, we take maximum by minor version diff --git a/sdk/compiler/damlc/lib/DA/Cli/Damlc/Command/MultiIde/DarDependencies.hs b/sdk/compiler/damlc/lib/DA/Cli/Damlc/Command/MultiIde/DarDependencies.hs index 79f0e3d4c22a..c7e5d4f4f22b 100644 --- a/sdk/compiler/damlc/lib/DA/Cli/Damlc/Command/MultiIde/DarDependencies.hs +++ b/sdk/compiler/damlc/lib/DA/Cli/Damlc/Command/MultiIde/DarDependencies.hs @@ -95,7 +95,7 @@ unpackDar miState darFile = do , "version: " <> T.unpack (LF.unPackageVersion $ LF.packageVersion $ LF.packageMetadata mainPkg) , "source: daml" , "build-options:" - , " - --target=" <> LF.renderVersion (LF.packageLfVersion mainPkg) + , " - --target=" <> LF.renderTodoVersion (LF.packageLfVersion mainPkg) , "dependencies:" ] <> fmap (" - " <>) deps diff --git a/sdk/compiler/damlc/lib/DA/Cli/Options.hs b/sdk/compiler/damlc/lib/DA/Cli/Options.hs index 362822a7d088..4de7c596d323 100644 --- a/sdk/compiler/damlc/lib/DA/Cli/Options.hs +++ b/sdk/compiler/damlc/lib/DA/Cli/Options.hs @@ -100,10 +100,10 @@ lfVersionOpt = optionOnce (str >>= select) $ <> value LF.defaultLfVersion <> internal where - renderVersion v = + renderTodoVersion v = let def = if v == LF.defaultLfVersion then " (default)" else "" in Pretty.renderPretty v ++ def - versionsStr = intercalate ", " (map renderVersion versions) + versionsStr = intercalate ", " (map renderTodoVersion versions) select = \case versionStr | Just version <- LF.parseVersion versionStr diff --git a/sdk/compiler/damlc/stable-packages/stable-packages.yaml b/sdk/compiler/damlc/stable-packages/stable-packages.yaml index f2597e9775ce..24dd3bd2f1d6 100644 --- a/sdk/compiler/damlc/stable-packages/stable-packages.yaml +++ b/sdk/compiler/damlc/stable-packages/stable-packages.yaml @@ -25,137 +25,164 @@ # the new file. Run the writer to ensure the new writer satisfies the new # format. -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - e7e0adfa881e7dbbb07da065ae54444da7c4bccebcb8872ab0cb5dcf9f3761ce -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - fcee8dfc1b81c449b421410edd5041c16ab59c45bbea85bcb094d1b17c3e9df7 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - 19f0df5fdaf5a96e137b6ea885fdb378f37bd3166bd9a47ee11518e33fa09a20 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - 5aee9b21b8e9a4c4975b5f4c4198e6e6e8469df49e2010820e792f393db870f4 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - 9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - 6f8e6085f5769861ae7a40dccd618d6f747297d59b37cab89b93e2fa80b0c024 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - b70db8369e1c461d5c70f1c86f526a29e9776c655e6ffc2560f95b05ccb8b946 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - bde4bd30749e99603e5afa354706608601029e225d4983324d617825b634253a -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - fa79192fe1cce03d7d8db36471dde4cf6c96e6d0f07e1c391dd49e355af9b38c -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - d095a2ccf6dd36b2415adc4fa676f9191ba63cd39828dc5207b36892ec350cbc -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - 52854220dc199884704958df38befd5492d78384a032fd7558c38f00e3d778a2 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - cae345b5500ef6f84645c816f88b9f7a85a9f3c71697984abdf6849f81e80324 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - 3cde94fe9be5c700fc1d9a8ad2277e2c1214609f8c52a5b4db77e466875b8cb7 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - 86d888f34152dae8729900966b44abcb466b9c111699678de58032de601d2b04 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - 0e4a572ab1fb94744abb02243a6bbed6c78fc6e3c8d3f60c655f057692a62816 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - e5411f3d75f072b944bd88e652112a14a3d409c491fd9a51f5f6eede6d3a3348 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - ab068e2f920d0e06347975c2a342b71f8b8e3b4be0f02ead9442caac51aa8877 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - c3bb0c5d04799b3f11bad7c3c102963e115cf53da3e4afcbcfd9f06ebd82b4ff -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - f181cd661f7af3a60bdaae4b0285a2a67beb55d6910fc8431dbae21a5825ec0f -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - ee33fb70918e7aaa3d3fc44d64a399fb2bf5bcefc54201b1690ecd448551ba88 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - 6da1f43a10a179524e840e7288b47bda213339b0552d92e87ae811e52f59fc0e -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - 91e167fa7a256f21f990c526a0a0df840e99aeef0e67dc1f5415b0309486de74 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - c280cc3ef501d237efa7b1120ca3ad2d196e089ad596b666bed59a85f3c9a074 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - a1fa18133ae48cbb616c4c148e78e661666778c3087d099067c7fe1868cbb3a1 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - bfda48f9aa2c89c895cde538ec4b4946c7085959e031ad61bde616b9849155d7 -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable - 60c61c542207080e97e378ab447cc355ecc47534b3a3ebbff307c4fb8339bc4d -- - versionMajor: V2 +- - patch: 0 + versionMajor: V2 versionMinor: contents: 1 tag: PointStable diff --git a/sdk/compiler/damlc/tests/src/DA/Test/DamlcIntegration.hs b/sdk/compiler/damlc/tests/src/DA/Test/DamlcIntegration.hs index 712a2ad08dd0..6f7654a90160 100644 --- a/sdk/compiler/damlc/tests/src/DA/Test/DamlcIntegration.hs +++ b/sdk/compiler/damlc/tests/src/DA/Test/DamlcIntegration.hs @@ -122,7 +122,7 @@ withDamlScriptDep mLfVer = withDamlScriptDep' mLfVer [] withDamlScriptDep' :: SdkVersioned => Maybe Version -> [(String, String, String)] -> (ScriptPackageData -> IO a) -> IO a withDamlScriptDep' mLfVer extraPackages = let - lfVerStr = maybe "" (\lfVer -> "-" <> renderVersion lfVer) mLfVer + lfVerStr = maybe "" (\lfVer -> "-" <> renderVersionWithPatch lfVer) mLfVer darPath = "daml-script" "daml" "daml-script" <> lfVerStr <> ".dar" in withVersionedDamlScriptDep ("daml-script-" <> sdkPackageVersion) darPath mLfVer extraPackages @@ -130,8 +130,8 @@ withDamlScriptDep' mLfVer extraPackages = -- dar name, package name and package version externalPackages :: Version -> [(String, String, String)] externalPackages version = - [ ("package-vetting-package-a-" <> LF.renderVersion version, "package-vetting-package-a", "1.0.0") - , ("package-vetting-package-b-" <> LF.renderVersion version, "package-vetting-package-b", "1.0.0") + [ ("package-vetting-package-a-" <> LF.renderVersionWithPatch version, "package-vetting-package-a", "1.0.0") + , ("package-vetting-package-b-" <> LF.renderVersionWithPatch version, "package-vetting-package-b", "1.0.0") ] -- | Takes the bazel namespace, dar suffix (used for lf versions in v1) and lf version, installs relevant daml script and gives @@ -439,13 +439,13 @@ damlFileTestTree version getService outdir registerTODO input diff ref new = [POSIX_DIFF, "-w", "--strip-trailing-cr", ref, new] containsVersion :: MS.Map LF.MajorVersion LF.MinorVersion -> LF.Version -> Bool -containsVersion bounds (Version major minor) = - case major `MS.lookup` bounds of +containsVersion bounds version = + case versionMajor version `MS.lookup` bounds of Nothing -> False - Just minorMinBound -> minor >= minorMinBound + Just minorMinBound -> versionMinor version >= minorMinBound extendsVersion :: MS.Map LF.MajorVersion LF.MinorVersion -> LF.Version -> Bool -extendsVersion bounds (Version major minor) = +extendsVersion bounds (VersionP major minor _) = case major `MS.lookup` bounds of Nothing -> False Just minorMinBound -> minor <= minorMinBound @@ -594,7 +594,7 @@ parseMaybeVersions str = MS.fromList (pairUp sortedMajorVersions parsedMaybeVers "expected a version with major version " <> LF.renderMajorVersion major <> ", got " - <> LF.renderVersion version + <> LF.renderVersionWithPatch version | otherwise = (major, versionMinor version) : pairUp majors versions pairUp majors@(_ : _) [] = error $ diff --git a/sdk/compiler/damlc/tests/src/DA/Test/DamlcUpgrades.hs b/sdk/compiler/damlc/tests/src/DA/Test/DamlcUpgrades.hs index e6e6f90e9e60..e6348f3f0c24 100644 --- a/sdk/compiler/damlc/tests/src/DA/Test/DamlcUpgrades.hs +++ b/sdk/compiler/damlc/tests/src/DA/Test/DamlcUpgrades.hs @@ -657,7 +657,7 @@ tests damlc = , " - daml-prim" , " - daml-stdlib" , "build-options:" - , " - --target=" <> LF.renderVersion lfVersion + , " - --target=" <> LF.renderVersionWithPatch lfVersion ] ++ [" - --typecheck-upgrades=no" | not doTypecheck] ++ [" - -Wupgrade-interfaces" | warnBadInterfaceInstances ] diff --git a/sdk/compiler/damlc/tests/src/DA/Test/DataDependencies.hs b/sdk/compiler/damlc/tests/src/DA/Test/DataDependencies.hs index c333aaa9ab91..ae81a58a51c9 100644 --- a/sdk/compiler/damlc/tests/src/DA/Test/DataDependencies.hs +++ b/sdk/compiler/damlc/tests/src/DA/Test/DataDependencies.hs @@ -85,8 +85,8 @@ lfVersionTestPairsV2 = tests :: SdkVersioned => TestArgs -> TestTree tests TestArgs{..} = - testGroup (LF.renderVersion targetDevVersion) $ - [ testCaseSteps ("Cross Daml-LF version: " <> LF.renderVersion depLfVer <> " -> " <> LF.renderVersion targetLfVer) $ \step -> withTempDir $ \tmpDir -> do + testGroup (LF.renderVersionWithPatch targetDevVersion) $ + [ testCaseSteps ("Cross Daml-LF version: " <> LF.renderVersionWithPatch depLfVer <> " -> " <> LF.renderVersionWithPatch targetLfVer) $ \step -> withTempDir $ \tmpDir -> do let proja = tmpDir "proja" let projb = tmpDir "projb" @@ -124,7 +124,7 @@ tests TestArgs{..} = callProcessSilent (damlcForTarget depLfVer) ["build" , "--package-root", proja - , "--target", LF.renderVersion depLfVer + , "--target", LF.renderVersionWithPatch depLfVer , "-o", proja "proja.dar" ] projaPkgIds <- darPackageIds (proja "proja.dar") @@ -163,7 +163,7 @@ tests TestArgs{..} = callProcessSilent damlc [ "build" , "--package-root", projb - , "--target", LF.renderVersion targetLfVer + , "--target", LF.renderVersionWithPatch targetLfVer , "-o", projb "projb.dar" ] step "Validating DAR" validate $ projb "projb.dar" @@ -178,7 +178,7 @@ tests TestArgs{..} = (if targetLfVer /= depLfVer then 2 else 0) -- different daml-stdlib/daml-prim | (depLfVer, targetLfVer) <- lfVersionTestPairs ] <> - [ testCaseSteps ("Cross Daml-LF version with stdlib orphan instances: " <> LF.renderVersion depLfVer <> " -> " <> LF.renderVersion targetLfVer) $ \step -> withTempDir $ \tmpDir -> do + [ testCaseSteps ("Cross Daml-LF version with stdlib orphan instances: " <> LF.renderVersionWithPatch depLfVer <> " -> " <> LF.renderVersionWithPatch targetLfVer) $ \step -> withTempDir $ \tmpDir -> do let proja = tmpDir "proja" let projb = tmpDir "projb" @@ -199,7 +199,7 @@ tests TestArgs{..} = callProcessSilent (damlcForTarget depLfVer) ["build" , "--package-root", proja - , "--target", LF.renderVersion depLfVer + , "--target", LF.renderVersionWithPatch depLfVer , "-o", proja "proja.dar" ] projaPkgIds <- darPackageIds (proja "proja.dar") @@ -225,13 +225,13 @@ tests TestArgs{..} = callProcessSilent damlc [ "build" , "--package-root", projb - , "--target", LF.renderVersion targetLfVer + , "--target", LF.renderVersionWithPatch targetLfVer , "-o", projb "projb.dar" ] step "Validating DAR" validate $ projb "projb.dar" | (depLfVer, targetLfVer) <- lfVersionTestPairs ] <> - [ testCaseSteps ("Cross Daml-LF version with custom orphan instance: " <> LF.renderVersion depLfVer <> " -> " <> LF.renderVersion targetLfVer) $ \step -> withTempDir $ \tmpDir -> do + [ testCaseSteps ("Cross Daml-LF version with custom orphan instance: " <> LF.renderVersionWithPatch depLfVer <> " -> " <> LF.renderVersionWithPatch targetLfVer) $ \step -> withTempDir $ \tmpDir -> do let proja = tmpDir "proja" let projb = tmpDir "projb" let projc = tmpDir "projc" @@ -264,7 +264,7 @@ tests TestArgs{..} = callProcessSilent (damlcForTarget depLfVer) ["build" , "--package-root", proja - , "--target", LF.renderVersion depLfVer + , "--target", LF.renderVersionWithPatch depLfVer , "-o", proja "proja.dar" ] @@ -285,7 +285,7 @@ tests TestArgs{..} = callProcessSilent (damlcForTarget depLfVer) ["build" , "--package-root", projb - , "--target", LF.renderVersion depLfVer + , "--target", LF.renderVersionWithPatch depLfVer , "-o", projb "projb.dar" ] @@ -306,13 +306,13 @@ tests TestArgs{..} = callProcessSilent damlc [ "build" , "--package-root", projc - , "--target", LF.renderVersion targetLfVer + , "--target", LF.renderVersionWithPatch targetLfVer , "-o", projc "projc.dar" ] step "Validating DAR" validate $ projc "projc.dar" | (depLfVer, targetLfVer) <- lfVersionTestPairs ] <> - [ testCaseSteps ("Cross Daml-LF version with double data-dependency from old SDK: " <> LF.renderVersion depLfVer <> " -> " <> LF.renderVersion targetLfVer) $ + [ testCaseSteps ("Cross Daml-LF version with double data-dependency from old SDK: " <> LF.renderVersionWithPatch depLfVer <> " -> " <> LF.renderVersionWithPatch targetLfVer) $ -- Given a dar "Old" built with an older SDK, this tests that a package -- which depends on "Old" through different paths on its dependency graph -- will not end up with multiple copies of daml-prim and daml-stdlib @@ -344,7 +344,7 @@ tests TestArgs{..} = callProcessSilent (damlcForTarget depLfVer) ["build" , "--package-root", proja - , "--target", LF.renderVersion depLfVer + , "--target", LF.renderVersionWithPatch depLfVer , "-o", proja "proja.dar" ] @@ -368,7 +368,7 @@ tests TestArgs{..} = callProcessSilent damlc ["build" , "--package-root", projb - , "--target", LF.renderVersion targetLfVer + , "--target", LF.renderVersionWithPatch targetLfVer , "-o", projb "projb.dar" ] @@ -714,26 +714,26 @@ tests TestArgs{..} = ] callProcessSilent genSimpleDalf $ ["--with-archive-choice" | withArchiveChoice ] <> - ["--lf-version", LF.renderVersion simpleDalfLfVersion + ["--lf-version", LF.renderVersionWithPatch simpleDalfLfVersion , projDir "simple-dalf-1.0.0.dalf"] callProcessSilent damlc [ "build" , "--package-root", projDir , "--target" - , LF.renderVersion targetDevVersion + , LF.renderVersionWithPatch targetDevVersion , "--generated-src" ] let dar = projDir ".daml/dist/proj-0.1.0.dar" assertFileExists dar callProcessSilent damlc [ "test" , "--target" - , LF.renderVersion targetDevVersion + , LF.renderVersionWithPatch targetDevVersion , "--package-root" , projDir , "--generated-src" ] | withArchiveChoice <- [False, True] ] <> - [ testCaseSteps ("Typeclasses and instances from Daml-LF " <> LF.renderVersion depLfVer <> " to " <> LF.renderVersion targetLfVer) $ \step -> withTempDir $ \tmpDir -> do + [ testCaseSteps ("Typeclasses and instances from Daml-LF " <> LF.renderVersionWithPatch depLfVer <> " to " <> LF.renderVersionWithPatch targetLfVer) $ \step -> withTempDir $ \tmpDir -> do let proja = tmpDir "proja" let projb = tmpDir "projb" @@ -830,7 +830,7 @@ tests TestArgs{..} = callProcessSilent (damlcForTarget depLfVer) [ "build" , "--package-root", proja - , "--target", LF.renderVersion depLfVer + , "--target", LF.renderVersionWithPatch depLfVer , "-o", proja "proja.dar" ] @@ -926,7 +926,7 @@ tests TestArgs{..} = callProcessSilent damlc [ "build" , "--package-root", projb - , "--target=" <> LF.renderVersion targetLfVer + , "--target=" <> LF.renderVersionWithPatch targetLfVer , "-o", projb "projb.dar" ] validate $ projb "projb.dar" @@ -942,7 +942,7 @@ tests TestArgs{..} = , "data-dependencies:" , " - " <> show oldProjDar , "build-options:" - , " - --target=" <> LF.renderVersion targetDevVersion + , " - --target=" <> LF.renderVersionWithPatch targetDevVersion , " - --package=daml-prim" , " - --package=" <> unitIdString damlStdlib , " - --package=old-proj-0.0.1" @@ -982,7 +982,7 @@ tests TestArgs{..} = , "source: ." , "version: 0.1.0" , "dependencies: [daml-prim, daml-stdlib]" - , "build-options: [--target=" <> LF.renderVersion targetDevVersion <> "]" + , "build-options: [--target=" <> LF.renderVersionWithPatch targetDevVersion <> "]" ] writeFileUTF8 (tmpDir "type" "Proxy.daml") $ unlines [ "module Proxy where" @@ -1002,7 +1002,7 @@ tests TestArgs{..} = , "version: 0.1.0" , "dependencies: [daml-prim, daml-stdlib]" , "data-dependencies: [" <> show (tmpDir "type" "type.dar") <> "]" - , "build-options: [--target=" <> LF.renderVersion targetDevVersion <> "]" + , "build-options: [--target=" <> LF.renderVersionWithPatch targetDevVersion <> "]" ] writeFileUTF8 (tmpDir "dependency" "Dependency.daml") $ unlines [ "module Dependency where" @@ -1024,7 +1024,7 @@ tests TestArgs{..} = , "version: 0.1.0" , "dependencies: [daml-prim, daml-stdlib]" , "data-dependencies: [" <> show (tmpDir "type" "type.dar") <> "]" - , "build-options: [--target=" <> LF.renderVersion targetDevVersion <> "]" + , "build-options: [--target=" <> LF.renderVersionWithPatch targetDevVersion <> "]" ] writeFileUTF8 (tmpDir "data-dependency" "DataDependency.daml") $ unlines [ "module DataDependency where" @@ -1049,7 +1049,7 @@ tests TestArgs{..} = , "version: 0.1.0" , "dependencies: [daml-prim, daml-stdlib, " <> show (tmpDir "dependency" "dependency.dar") <> ", " <> show (tmpDir "type/type.dar") <> "]" , "data-dependencies: [" <> show (tmpDir "data-dependency" "data-dependency.dar") <> "]" - , "build-options: [--target=" <> LF.renderVersion targetDevVersion <> "]" + , "build-options: [--target=" <> LF.renderVersionWithPatch targetDevVersion <> "]" ] writeFileUTF8 (tmpDir "top" "Top.daml") $ unlines [ "module Top where" @@ -2224,7 +2224,7 @@ tests TestArgs{..} = damlYamlBody name deps dataDeps = unlines [ "sdk-version: " <> sdkVersion , "name: " <> name - , "build-options: [--target=" <> LF.renderVersion targetDevVersion <> "]" + , "build-options: [--target=" <> LF.renderVersionWithPatch targetDevVersion <> "]" , "source: ." , "version: 0.1.0" , "dependencies: [" <> intercalate ", " (["daml-prim", "daml-stdlib"] <> fmap dar deps) <> "]" @@ -2298,7 +2298,7 @@ tests TestArgs{..} = damlYamlBody name extraDeps dataDeps = unlines [ "sdk-version: " <> sdkVersion , "name: " <> name - , "build-options: [--target="<> LF.renderVersion targetDevVersion <>"]" + , "build-options: [--target="<> LF.renderVersionWithPatch targetDevVersion <>"]" , "source: ." , "version: 0.1.0" , "dependencies: [" <> intercalate ", " (["daml-prim", "daml-stdlib"] <> fmap show extraDeps) <> "]" @@ -2523,7 +2523,7 @@ tests TestArgs{..} = [ "build" , "--package-root", tmpDir "lib" , "-o", tmpDir "lib" "lib.dar" - , "--target", LF.renderVersion exceptionsVersion ] + , "--target", LF.renderVersionWithPatch exceptionsVersion ] step "building package that imports it via data-dependencies" createDirectoryIfMissing True (tmpDir "main") @@ -2556,7 +2556,7 @@ tests TestArgs{..} = callProcessSilent damlc [ "build" , "--package-root", tmpDir "main" - , "--target", LF.renderVersion targetDevVersion ] + , "--target", LF.renderVersionWithPatch targetDevVersion ] , testCaseSteps "Package ids are stable across rebuilds" $ \step -> withTempDir $ \tmpDir -> do step "building lib (package to be imported via data-dependencies)" @@ -2578,7 +2578,7 @@ tests TestArgs{..} = [ "build" , "--package-root", tmpDir "lib" , "-o", tmpDir "lib" "lib.dar" - , "--target", LF.renderVersion targetDevVersion + , "--target", LF.renderVersionWithPatch targetDevVersion ] step "building main (package that imports lib via data-dependencies)" @@ -2603,7 +2603,7 @@ tests TestArgs{..} = [ "build" , "--package-root", tmpDir "main" , "-o", tmpDir "main" "main.dar" - , "--target", LF.renderVersion targetDevVersion + , "--target", LF.renderVersionWithPatch targetDevVersion ] step "building main again as main2.dar" @@ -2611,7 +2611,7 @@ tests TestArgs{..} = [ "build" , "--package-root", tmpDir "main" , "-o", tmpDir "main" "main2.dar" - , "--target", LF.renderVersion targetDevVersion + , "--target", LF.renderVersionWithPatch targetDevVersion ] step "compare package ids in main.dar and main2.dar" @@ -2666,7 +2666,7 @@ tests TestArgs{..} = [ "build" , "--package-root", tmpDir "lib" , "-o", tmpDir "lib" "lib.dar" - , "--target", LF.renderVersion exceptionsVersion ] + , "--target", LF.renderVersionWithPatch exceptionsVersion ] step "building package that imports it via data-dependencies" createDirectoryIfMissing True (tmpDir "main") @@ -2740,18 +2740,18 @@ tests TestArgs{..} = callProcessSilent damlc [ "build" , "--package-root", tmpDir "main" - , "--target", LF.renderVersion targetDevVersion ] + , "--target", LF.renderVersionWithPatch targetDevVersion ] step "running damlc test" callProcessSilent damlc [ "test" , "--package-root", tmpDir "main" - , "--target", LF.renderVersion targetDevVersion ] + , "--target", LF.renderVersionWithPatch targetDevVersion ] ] where defTestOptions :: DataDependenciesTestOptions defTestOptions = DataDependenciesTestOptions { buildOptions = - [ "--target=" <> LF.renderVersion targetDevVersion + [ "--target=" <> LF.renderVersionWithPatch targetDevVersion , "-Wupgrade-interfaces" ] , extraDeps = [] diff --git a/sdk/compiler/damlc/tests/src/DA/Test/IncrementalBuilds.hs b/sdk/compiler/damlc/tests/src/DA/Test/IncrementalBuilds.hs index 387d3d86adfa..ac5dbb6b51bc 100644 --- a/sdk/compiler/damlc/tests/src/DA/Test/IncrementalBuilds.hs +++ b/sdk/compiler/damlc/tests/src/DA/Test/IncrementalBuilds.hs @@ -43,7 +43,7 @@ data TestArgs = TestArgs } tests :: SdkVersioned => TestArgs -> TestTree -tests TestArgs{..} = testGroup ("LF " <> LF.renderVersion lfVersion) +tests TestArgs{..} = testGroup ("LF " <> LF.renderVersionWithPatch lfVersion) [ test "No changes" [ ("daml/A.daml", unlines [ "module A where" @@ -182,13 +182,13 @@ tests TestArgs{..} = testGroup ("LF " <> LF.renderVersion lfVersion) , dir , "-o" , dar - , "--target=" <> LF.renderVersion lfVersion + , "--target=" <> LF.renderVersionWithPatch lfVersion , "--incremental=yes" ] callProcessSilent damlc [ "test" , "--package-root" , dir - , "--target=" <> LF.renderVersion lfVersion + , "--target=" <> LF.renderVersionWithPatch lfVersion ] dalfFiles <- getDalfFiles $ dir ".daml/build" dalfModTimes <- for dalfFiles $ \f -> do @@ -203,7 +203,7 @@ tests TestArgs{..} = testGroup ("LF " <> LF.renderVersion lfVersion) , dir , "-o" , dar - , "--target=" <> LF.renderVersion lfVersion + , "--target=" <> LF.renderVersionWithPatch lfVersion , "--incremental=yes" ] rebuilds <- forMaybeM dalfModTimes $ \(f, oldModTime) -> do newModTime <- getModificationTime f diff --git a/sdk/compiler/damlc/tests/src/DA/Test/Packaging.hs b/sdk/compiler/damlc/tests/src/DA/Test/Packaging.hs index 762e64c5978e..f6250974daf7 100644 --- a/sdk/compiler/damlc/tests/src/DA/Test/Packaging.hs +++ b/sdk/compiler/damlc/tests/src/DA/Test/Packaging.hs @@ -1200,7 +1200,7 @@ tests Tools{damlc} = testGroup "Packaging" $ -- | Test that a package build with --target=targetVersion never has a dependency on a package with version > targetVersion lfVersionTests :: SdkVersioned => FilePath -> TestTree lfVersionTests damlc = testGroup "LF version dependencies" - [ testCase ("Package in " <> LF.renderVersion version) $ withTempDir $ \projDir -> do + [ testCase ("Package in " <> LF.renderTodoVersion version) $ withTempDir $ \projDir -> do writeFileUTF8 (projDir "daml.yaml") $ unlines [ "sdk-version: " <> sdkVersion , "name: proj" @@ -1210,7 +1210,7 @@ lfVersionTests damlc = testGroup "LF version dependencies" ] writeFileUTF8 (projDir "A.daml") $ unlines [ "module A where"] - withCurrentDirectory projDir $ callProcessSilent damlc ["build", "-o", projDir "proj.dar", "--target", LF.renderVersion version] + withCurrentDirectory projDir $ callProcessSilent damlc ["build", "-o", projDir "proj.dar", "--target", LF.renderTodoVersion version] archive <- Zip.toArchive <$> BSL.readFile (projDir "proj.dar") DalfManifest {mainDalfPath, dalfPaths} <- either fail pure $ readDalfManifest archive Dalfs main other <- either fail pure $ readDalfs archive diff --git a/sdk/compiler/damlc/tests/src/DA/Test/ScriptService.hs b/sdk/compiler/damlc/tests/src/DA/Test/ScriptService.hs index e353876217cb..bb699f080f4a 100644 --- a/sdk/compiler/damlc/tests/src/DA/Test/ScriptService.hs +++ b/sdk/compiler/damlc/tests/src/DA/Test/ScriptService.hs @@ -100,7 +100,7 @@ withPackageDBAndIdeState lfVersion getScriptService action = do testScriptService :: SdkVersioned => LF.Version -> IO SS.Handle -> TestTree testScriptService lfVersion getScriptService = - testGroup ("LF " <> LF.renderVersion lfVersion) + testGroup ("LF " <> LF.renderTodoVersion lfVersion) [ withResourceCps (withPackageDBAndIdeState lfVersion getScriptService) $ \getIdeState -> testGroup "single module" [ testCase "createCmd + exerciseCmd + createAndExerciseCmd" $ do @@ -803,7 +803,7 @@ testScriptServiceWithKeys :: SdkVersioned => LF.Version -> IO SS.Handle -> TestT testScriptServiceWithKeys lfVersion getScriptService = withResourceCps (withPackageDBAndIdeState lfVersion getScriptService) $ \getIdeState -> testGroup - ("LF " <> LF.renderVersion lfVersion) + ("LF " <> LF.renderTodoVersion lfVersion) [ testCase "exerciseByKeyCmd" $ do rs <- runScriptsInModule @@ -1290,11 +1290,12 @@ runScriptsInAllPackages getScriptService lfVersion mainPackage packages = do locateDamlScriptDar :: LF.Version -> IO FilePath -locateDamlScriptDar lfVersion = locateRunfiles $ case lfVersion of - (LF.Version LF.V2 LF.PointDev) -> prefix "daml-script-2.dev.dar" - (LF.Version LF.V2 _) -> prefix "daml-script.dar" - where - prefix = mainWorkspace "daml-script" "daml" +locateDamlScriptDar lfVersion = locateRunfiles $ + if LF.isDevVersion lfVersion + then prefix "daml-script-2.dev.dar" + else prefix "daml-script.dar" + where + prefix = mainWorkspace "daml-script" "daml" writeAndBuildPackage :: LF.Version -> FilePath -> (FilePath, [(FilePath, [T.Text])]) -> IO () writeAndBuildPackage lfVersion damlc (packagePath, packageFiles) = do @@ -1305,7 +1306,7 @@ writeAndBuildPackage lfVersion damlc (packagePath, packageFiles) = do [ "build" , "--package-root" , packagePath - , "--target=" <> LF.renderVersion lfVersion + , "--target=" <> LF.renderTodoVersion lfVersion ] withIdeState :: SdkVersioned => IO SS.Handle -> Options -> (IdeState -> IO a) -> IO a diff --git a/sdk/compiler/damlc/tests/src/DA/Test/ShakeIdeClient.hs b/sdk/compiler/damlc/tests/src/DA/Test/ShakeIdeClient.hs index 7fc52d71ac51..848c8e844c41 100644 --- a/sdk/compiler/damlc/tests/src/DA/Test/ShakeIdeClient.hs +++ b/sdk/compiler/damlc/tests/src/DA/Test/ShakeIdeClient.hs @@ -63,7 +63,7 @@ test lfVersion scriptLogger = do ideTests :: SdkVersioned => LF.Version -> Maybe (IO SS.Handle) -> IO ScriptPackageData -> Tasty.TestTree ideTests lfVersion mbGetScriptService getScriptPackageData = - Tasty.testGroup ("LF " <> LF.renderVersion lfVersion) + Tasty.testGroup ("LF " <> LF.renderVersionWithPatch lfVersion) [ -- Add categories of tests here basicTests lfVersion mbGetScriptService getScriptPackageData , minimalRebuildTests lfVersion mbGetScriptService diff --git a/sdk/compiler/damlc/tests/src/DamlcPkgManager.hs b/sdk/compiler/damlc/tests/src/DamlcPkgManager.hs index 1b1ed93947eb..f215f365299f 100644 --- a/sdk/compiler/damlc/tests/src/DamlcPkgManager.hs +++ b/sdk/compiler/damlc/tests/src/DamlcPkgManager.hs @@ -61,7 +61,7 @@ testsForRemoteDataDependencies damlc dar = [ "sdk-version: " <> sdkVersion , "name: a" , "version: 0.0.1" - , "build-options: ['--target=" <> LF.renderVersion lfVersion <> "']" + , "build-options: ['--target=" <> LF.renderVersionWithPatch lfVersion <> "']" , "source: ." , "dependencies: [daml-prim, daml-stdlib]" , "data-dependencies: [" ++ mainPkgId ++ "]" @@ -90,7 +90,7 @@ testsForRemoteDataDependencies damlc dar = [ "sdk-version: " <> sdkVersion , "name: a" , "version: 0.0.1" - , "build-options: ['--target=" <> LF.renderVersion lfVersion <> "']" + , "build-options: ['--target=" <> LF.renderVersionWithPatch lfVersion <> "']" , "source: ." , "dependencies: [daml-prim, daml-stdlib]" , "data-dependencies: [pkg-manager-test:1.0.0]" @@ -139,7 +139,7 @@ testsForRemoteDataDependencies damlc dar = [ "sdk-version: " <> sdkVersion , "name: a" , "version: 0.0.1" - , "build-options: ['--target=" <> LF.renderVersion lfVersion <> "']" + , "build-options: ['--target=" <> LF.renderVersionWithPatch lfVersion <> "']" , "source: ." , "dependencies: [daml-prim, daml-stdlib]" , "data-dependencies: [pkg-manager-test:1.0.0]" @@ -184,7 +184,7 @@ testsForRemoteDataDependencies damlc dar = [ "sdk-version: " <> sdkVersion , "name: a" , "version: 0.0.1" - , "build-options: ['--target=" <> LF.renderVersion lfVersion <> "']" + , "build-options: ['--target=" <> LF.renderVersionWithPatch lfVersion <> "']" , "source: ." , "dependencies: [daml-prim, daml-stdlib]" , "data-dependencies: [" ++ mainPkgId ++ "]" diff --git a/sdk/daml-lf/language/generate_haskell_versions.py b/sdk/daml-lf/language/generate_haskell_versions.py index e6ab5da9cc1f..1dbe8fd09243 100644 --- a/sdk/daml-lf/language/generate_haskell_versions.py +++ b/sdk/daml-lf/language/generate_haskell_versions.py @@ -59,9 +59,31 @@ def main(input_json_path, output_hs_path): -- //compiler/daml-lf-ast:generated_haskell_features_src based on -- //compiler/daml-lf/language/daml-lf.bzl. DO NOT EDIT. +{-# LANGUAGE PatternSynonyms #-} + module DA.Daml.LF.Ast.Version.GeneratedVersions where import DA.Daml.LF.Ast.Version.VersionType + +import qualified Data.Map as M + +-- If we ever add a new MajorVersion, make these maps of map +defaultPatchMap :: M.Map MinorVersion Int +defaultPatchMap = M.fromList [(PointStable 2, 1)] + +allowedPatchMap :: M.Map MinorVersion [Int] +allowedPatchMap = M.fromList [(PointStable 1, [0]), (PointStable 2, [0, 1])] + +defaultPatchForMinor :: MinorVersion -> Int +defaultPatchForMinor minor = M.findWithDefault 0 minor defaultPatchMap + +-- | Pattern for the "old" Version. +-- Matches: Ignores the patch field. +-- Constructs: Defaults patch to default patch. +pattern Version :: MajorVersion -> MinorVersion -> Version +pattern Version major minor <- VersionP major minor _ + where + Version major minor = VersionP major minor (defaultPatchForMinor minor) """ ]