Fix non-internal deps for split release (#19448) (#19720)

run-full-compat: true
This commit is contained in:
Samuel Williams 2024-08-06 11:32:31 +01:00 committed by GitHub
parent 7a8fc1298d
commit c09ba1b95f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 38 additions and 6 deletions

View File

@ -141,6 +141,7 @@ jobs:
var_name: bash-lib
- bash: |
set -euo pipefail
cd sdk
eval "$(./dev-env/bin/dade-assist)"
source $(bash-lib)
COMMIT=$(git rev-parse HEAD^2)

View File

@ -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
@ -161,6 +161,7 @@ dependencies:
- daml-prim
- daml-stdlib
- daml-script
- ./dep.dar
""" > daml.yaml
echo """
@ -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 () {
@ -329,7 +352,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)

View File

@ -206,6 +206,7 @@ da_haskell_library(
"regex-tdfa",
"safe",
"safe-exceptions",
"semver",
"shake",
"some",
"split",

View File

@ -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
@ -31,6 +31,7 @@ import qualified Data.ByteString.Lazy as BSL
import Data.Char
import Data.List.Extra
import qualified Data.Map.Strict as M
import qualified Data.SemVer as V
import qualified Data.Set as Set
import qualified Data.Text as T
import qualified Data.Yaml as Yaml
@ -196,13 +197,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