Skip to content

Commit

Permalink
Fix non-internal deps for split release (#19448) (#19450)
Browse files Browse the repository at this point in the history
  • Loading branch information
samuel-williams-da authored Jun 25, 2024
1 parent c0544d5 commit 2aea6ca
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 6 deletions.
30 changes: 28 additions & 2 deletions sdk/compatibility/test-all-installs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ module Main where
""" > Main.daml
}

init_daml_package_with_script () {
init_daml_package_with_deps () {
echo """
sdk-version: $1
name: test-daml-yaml-install
Expand All @@ -161,6 +161,7 @@ dependencies:
- daml-prim
- daml-stdlib
- daml-script
- ./dep.dar
""" > daml.yaml

echo """
Expand All @@ -171,6 +172,28 @@ import Daml.Script
main : Script ()
main = pure ()
""" > Main.daml

mkdir ./dep

echo """
sdk-version: $1
name: test-daml-yaml-install-dep
version: 1.0.0
source: Dep.daml
scenario: Dep:main
parties:
- Alice
- Bob
dependencies:
- daml-prim
- daml-stdlib
build-options:
- --output=../dep.dar
""" > ./dep/daml.yaml

echo """
module Dep where
""" > ./dep/Dep.daml
}

do_post_failed_tarball_install_behaviour () {
Expand Down Expand Up @@ -328,7 +351,10 @@ case "$command_to_run" in
install_with_custom_version_and_build)
custom_version=2.99.0
"$(rlocation "head_sdk/$head_sdk_exe")" install --install-assistant yes --install-with-custom-version $custom_version "$(rlocation head_sdk/sdk-release-tarball-ce.tar.gz)"
init_daml_package_with_script $custom_version
init_daml_package_with_deps $custom_version
cd ./dep
$daml_exe build
cd ..
$daml_exe build
;;
install_and_build_from_tarball)
Expand Down
1 change: 1 addition & 0 deletions sdk/compiler/damlc/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,7 @@ da_haskell_library(
"regex-tdfa",
"safe",
"safe-exceptions",
"semver",
"shake",
"some",
"split",
Expand Down
12 changes: 8 additions & 4 deletions sdk/compiler/damlc/lib/DA/Cli/Damlc/DependencyDb.hs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import Control.Lens (toListOf)
import Control.Monad.Extra
import DA.Daml.Compiler.Dar
import DA.Daml.Compiler.ExtractDar (ExtractedDar(..), extractDar)
import DA.Daml.Project.Types (ReleaseVersion, sdkVersionToText, sdkVersionFromReleaseVersion)
import DA.Daml.Project.Types (ReleaseVersion, sdkVersionToText, sdkVersionFromReleaseVersion, releaseVersionFromReleaseVersion)
import DA.Daml.Helper.Ledger
import qualified DA.Daml.LF.Ast as LF
import qualified DA.Daml.LF.Ast.Optics as LF
Expand All @@ -32,6 +32,7 @@ import Data.Char
import Data.List.Extra
import qualified Data.Map.Strict as M
import Data.Maybe
import qualified Data.SemVer as V
import qualified Data.Set as Set
import qualified Data.Text as T
import qualified Data.Yaml as Yaml
Expand Down Expand Up @@ -197,13 +198,16 @@ installDependencies projRoot opts releaseVersion pDeps pDataDeps = do
packageRefs pkg = Set.fromList [pid | LF.PRImport pid <- toListOf LF.packageRefs pkg]
depsDir = dependenciesDir opts projRoot

-- | Check that only one sdk version is present in dependencies and it equals this sdk version.
-- | Check that all dependencies match the main packages release (or sdk) version
-- We check for both, as packages usually use the release version, but internal packages (like daml-script) use the sdk-version, as the
-- release version cannot be known at compilation time
checkSdkVersions :: ReleaseVersion -> [ExtractedDar] -> IO ()
checkSdkVersions releaseVersion depsExtracted = do
let thisReleaseVer = T.unpack (V.toText (releaseVersionFromReleaseVersion releaseVersion))
let thisSdkVer = T.unpack (sdkVersionToText (sdkVersionFromReleaseVersion releaseVersion))
let uniqSdkVersions = nubSort $ thisSdkVer : map edSdkVersions depsExtracted
let uniqSdkVersions = nubSort $ thisReleaseVer : map edSdkVersions depsExtracted
let depsSdkVersions = map edSdkVersions depsExtracted
unless (all (== thisSdkVer) depsSdkVersions) $
unless (all (\ver -> ver == thisSdkVer || ver == thisReleaseVer) depsSdkVersions) $
fail $
"Package dependencies from different SDK versions: " ++ intercalate ", " uniqSdkVersions

Expand Down

0 comments on commit 2aea6ca

Please sign in to comment.