diff --git a/README.md b/README.md index 87b0fe2e016..9ecd37bcb1b 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ for details about supported configurations and system setup. ## Contents 1. [Prerequisite Install Guide](#prerequisite-install-guide) -2. [Build and Install Guide](#build-and-install-guide) +2. [Build and Install Guide] 3. [IDE Setup](#ide-setup) 4. [Running the Test Suite](#running-the-test-suite) 5. [Changing the KORE Data Structures](#changing-the-kore-data-structures) @@ -72,69 +72,13 @@ must first be installed. ## The Short Version -On Ubuntu Linux 22.04 (Jammy): +Regardless of system, unless you cloned with `--recusrive` you will first +have to run `git submodule update --init --recursive`. -```shell -git submodule update --init --recursive -sudo apt-get install \ - bison \ - build-essential \ - clang-15 \ - cmake \ - curl \ - flex \ - g++ \ - gcc \ - libboost-test-dev \ - libfmt-dev \ - libgmp-dev \ - libjemalloc-dev \ - libmpfr-dev \ - libsecp256k1-dev \ - libunwind-dev \ - libyaml-dev \ - libz3-dev \ - lld-15 \ - llvm-15-tools \ - m4 \ - maven \ - openjdk-17-jdk \ - pkg-config \ - python3 \ - python3-dev \ - z3 \ - zlib1g-dev -curl -sSL https://get.haskellstack.org/ | sh -``` - -If you install this list of dependencies, continue directly to the [Build and Install Guide](#build-and-install-guide). - -On macOS using [Homebrew](https://brew.sh/): - -```shell -git submodule update --init --recursive -brew install \ - bison \ - boost \ - cmake \ - flex \ - fmt \ - gcc \ - gmp \ - openjdk \ - jemalloc \ - libyaml \ - llvm \ - make \ - maven \ - mpfr \ - pkg-config \ - python \ - secp256k1 \ - stack \ - zlib \ - z3 -``` +You then need the build and runtime dependencies. If you are on a +Debian-based system (including Ubuntu) or MacOS with [Homebrew] installed, +you can run `./install-build-deps` and continue directly to the +[Build and Install Guide]. ## The Long Version @@ -451,3 +395,10 @@ of artifacts, you can run `mvn dependency:purge-local-repository`. If tests fail but you want to run the build anyway to see what happens, you can use `mvn package -DskipTests`. If you still cannot build, please contact a K developer. + + + + +[Build and Install Guide]: #build-and-install-guide + +[Homebrew]: https://brew.sh/ diff --git a/deps/llvm-backend_release b/deps/llvm-backend_release index a2d633db704..fbde3d5aeca 100644 --- a/deps/llvm-backend_release +++ b/deps/llvm-backend_release @@ -1 +1 @@ -0.1.61 +0.1.62 diff --git a/flake.lock b/flake.lock index 9a62f0cd9a0..8d015d507c2 100644 --- a/flake.lock +++ b/flake.lock @@ -112,16 +112,16 @@ "utils": "utils" }, "locked": { - "lastModified": 1721723305, - "narHash": "sha256-o2fmSDY7quhyUPieiMotHVAeIdfbh0IPTD+YSzb1EjM=", + "lastModified": 1721760167, + "narHash": "sha256-WLW4i4vsdAMVjUZBXH2y0tsIlpKV8hH/ejk7HQq5anI=", "owner": "runtimeverification", "repo": "llvm-backend", - "rev": "a77c3ece39529bf3e5364719154ac60b80d17db6", + "rev": "9b505eafb2b47848f3b7ca16dc88f011651f5e2c", "type": "github" }, "original": { "owner": "runtimeverification", - "ref": "v0.1.61", + "ref": "v0.1.62", "repo": "llvm-backend", "type": "github" } diff --git a/flake.nix b/flake.nix index 256ee6a96e2..a57d3adfe74 100644 --- a/flake.nix +++ b/flake.nix @@ -1,7 +1,7 @@ { description = "K Framework"; inputs = { - llvm-backend.url = "github:runtimeverification/llvm-backend/v0.1.61"; + llvm-backend.url = "github:runtimeverification/llvm-backend/v0.1.62"; haskell-backend = { url = "github:runtimeverification/haskell-backend/v0.1.47"; inputs.rv-utils.follows = "llvm-backend/rv-utils"; diff --git a/install-build-deps b/install-build-deps new file mode 100755 index 00000000000..ee741eca574 --- /dev/null +++ b/install-build-deps @@ -0,0 +1,85 @@ +#!/usr/bin/env bash +# +# Install OS packages containing dependencies required to build K. +# +set -Eeuo pipefail + +die() { local ec="$1"; shift; echo "ERROR: $@"; exit $ec; } + +inst_Debian() { + echo '===== Debian packages:' + sudo apt-get install -q \ + bison \ + build-essential \ + clang-15 \ + cmake \ + curl \ + flex \ + g++ \ + gcc \ + libboost-test-dev \ + libfmt-dev \ + libgmp-dev \ + libjemalloc-dev \ + libmpfr-dev \ + libsecp256k1-dev \ + libunwind-dev \ + libyaml-dev \ + libz3-dev \ + lld-15 \ + llvm-15-tools \ + m4 \ + maven \ + openjdk-17-jdk \ + pkg-config \ + python3 \ + python3-dev \ + z3 \ + zlib1g-dev + + if stack --version >/dev/null 2>&1; then + echo 'Using existing Haskell Stack installation.' + else + echo '===== Haskell Stack:' + curl -sSL https://get.haskellstack.org/ | sh + fi +} + +inst_MacOS() { + echo '===== Brew packages' + brew install \ + bison \ + boost \ + cmake \ + flex \ + fmt \ + gcc \ + gmp \ + openjdk \ + jemalloc \ + libyaml \ + llvm \ + make \ + maven \ + mpfr \ + pkg-config \ + python \ + secp256k1 \ + stack \ + zlib \ + z3 +} + +try() { + local command="$1"; shift + local platform="$1"; shift + + echo "===== Checking for $command for platform $platform" + $command --version >/dev/null 2>&1 || return 1 + echo "----- Found platform $platform" + inst_$platform +} + +try apt-get Debian && exit 0 +try brew MacOS && exit 0 +die 1 'Cannot find known platform. Your system appears to be unsupported.' diff --git a/llvm-backend/src/main/native/llvm-backend b/llvm-backend/src/main/native/llvm-backend index a77c3ece395..9b505eafb2b 160000 --- a/llvm-backend/src/main/native/llvm-backend +++ b/llvm-backend/src/main/native/llvm-backend @@ -1 +1 @@ -Subproject commit a77c3ece39529bf3e5364719154ac60b80d17db6 +Subproject commit 9b505eafb2b47848f3b7ca16dc88f011651f5e2c diff --git a/pyk/src/pyk/utils.py b/pyk/src/pyk/utils.py index 04c650482e2..243acda6280 100644 --- a/pyk/src/pyk/utils.py +++ b/pyk/src/pyk/utils.py @@ -681,7 +681,7 @@ def __init__(self, bug_report: Path) -> None: def add_file(self, finput: Path, arcname: Path) -> None: if str(finput) not in self._file_remap: self._file_remap[str(finput)] = str(arcname) - with tarfile.open(self._bug_report, 'a') as tar: + with tarfile.open(self._bug_report, 'a', format=tarfile.GNU_FORMAT) as tar: tar.add(finput, arcname=arcname) _LOGGER.info(f'Added file to bug report {self._bug_report}:{arcname}: {finput}')