Skip to content

ceylon.ast 1.3.2

Compare
Choose a tag to compare
@lucaswerkmeister lucaswerkmeister released this 24 Mar 22:17
· 32 commits to master since this release
1.3.2

ceylon.ast 1.3.2

Changes from the previous version (1.3.1):

  • Module descriptors have received an update. A new node type, ModuleSpecifier, has been added, representing the specification grammar rule of the same name. A ModuleDescriptor and a ModuleImport can each have one (replacing a ModuleImport’s repositoryType member). The RepositoryType has been renamed to just Repository to match the specification (which did not exist when RepositoryType was added), and aliases Artifact, ModuleName and Module have been added. See #128, #129 and #133.
  • Assertion now has a StringLiteral|StringTemplate? message instead of Annotations annotations, defaulting to null. See #131.
  • An incorrect example in the MemberMeta documentation has been removed. See #130.

The .car files for this release have been made reproducible using a fork of Debian’s strip-nondeterminism program. The following script, on a fresh Debian Jessie GNU/Linux system, should produce the exact same binary:

#!/bin/bash

languageVersion=1.3.2
languageRelease=0
projectVersion=1.3.2
repoUser=ceylon
repoName=ceylon.ast
modules=(ceylon.ast.{core,create,redhat,samples})
repo=https://modules.ceylon-lang.org/repo/1
timestamp=1490370000

# install dependencies
apt install --yes --allow-unauthenticated \
    git \
    default-jre \
    wget \
    curl \
    ant \
    zip \
    unzip \
    libarchive-zip-perl \
    python3 \
    nodejs

# install Ceylon
cd /opt
wget https://downloads.ceylon-lang.org/cli/ceylon-${languageVersion}_${languageVersion}-${languageRelease}_all.deb
dpkg -i ceylon-${languageVersion}_${languageVersion}-${languageRelease}_all.deb

# build project
git clone https://github.com/$repoUser/$repoName
cd $repoName
git checkout $projectVersion
sed -i "/dist.root.dir=/ s =.*$ =/usr/share/ceylon/$languageVersion " build.properties
ant compile
cd ..

# strip nondeterminism
git clone https://github.com/lucaswerkmeister/strip-nondeterminism
cd strip-nondeterminism
for module in "${modules[@]}"; do
    car="../$repoName/modules/${module//\.//}/$projectVersion/$module-$projectVersion.car"
    perl -I lib -- bin/strip-nondeterminism -t car -T $timestamp "$car"
    echo -n $(sha1sum "$car" | cut -f1 -d' ') > "$car".sha1
done
cd ..

# compare checksums
for module in "${modules[@]}"; do
    echo
    echo "$module"
    cat "$repoName/modules/${module//\.//}/$projectVersion/$module-$projectVersion.car.sha1"; echo
    curl "$repo/${module//\.//}/$projectVersion/$module-$projectVersion.car.sha1"; echo
done
exit 0