diff --git a/.azure/azure-pipelines.yml b/.azure/azure-pipelines.yml index b7049cee9..b3800ea06 100644 --- a/.azure/azure-pipelines.yml +++ b/.azure/azure-pipelines.yml @@ -18,7 +18,7 @@ jobs: # The dependsOn clauses (in this file and in .circleci/config.yml) are: # * Everything not *_ubuntu_jdk25 or typecheck_*_jdk25 depends on canary_jobs. - # * Anything *_jdk8 or *_jdk11 or *_jdk17 or *_jdk21 depends on *_jdk25. + # * Anything *_jdk8 or *_jdk11 or *_jdk17 or *_jdk21 or _jdk26 depends on *_jdk25. # * Anything *_rockylinux_* depends on *_ubuntu_*. # The remainder of jobs are run only if the canary_jobs pass. - job: canary_jobs @@ -97,6 +97,18 @@ jobs: fetchDepth: 25 - bash: ./scripts/test-quick-txt-diff.sh displayName: test-quick-txt-diff.sh + - job: quick_ubuntu_jdk26 + dependsOn: + - canary_jobs + - quick_ubuntu_jdk25 + pool: + vmImage: 'ubuntu-latest' + container: mdernst/daikon-ubuntu-jdk26${{ variables.testingSuffix }}:latest + steps: + - checkout: self + fetchDepth: 25 + - bash: ./scripts/test-quick-txt-diff.sh + displayName: test-quick-txt-diff.sh - job: nonquick_ubuntu_jdk8 dependsOn: @@ -155,6 +167,18 @@ jobs: fetchDepth: 25 - bash: ./scripts/test-nonquick-txt-diff.sh displayName: test-nonquick-txt-diff.sh + - job: nonquick_ubuntu_jdk26 + dependsOn: + - canary_jobs + - nonquick_ubuntu_jdk25 + pool: + vmImage: 'ubuntu-latest' + container: mdernst/daikon-ubuntu-jdk26${{ variables.testingSuffix }}:latest + steps: + - checkout: self + fetchDepth: 25 + - bash: ./scripts/test-nonquick-txt-diff.sh + displayName: test-nonquick-txt-diff.sh - job: nontxt_ubuntu_jdk8 dependsOn: @@ -213,6 +237,18 @@ jobs: fetchDepth: 25 - bash: ./scripts/test-non-txt-diff.sh displayName: test-non-txt-diff.sh + - job: nontxt_ubuntu_jdk26 + dependsOn: + - canary_jobs + - nontxt_ubuntu_jdk25 + pool: + vmImage: 'ubuntu-latest' + container: mdernst/daikon-ubuntu-jdk26${{ variables.testingSuffix }}:latest + steps: + - checkout: self + fetchDepth: 25 + - bash: ./scripts/test-non-txt-diff.sh + displayName: test-non-txt-diff.sh - job: misc_ubuntu_jdk8 dependsOn: @@ -281,6 +317,20 @@ jobs: displayName: make showvars - bash: ./scripts/test-misc.sh displayName: test-misc.sh + - job: misc_ubuntu_jdk26 + dependsOn: + - canary_jobs + - misc_ubuntu_jdk25 + pool: + vmImage: 'ubuntu-latest' + container: mdernst/daikon-ubuntu-jdk26-plus${{ variables.testingSuffix }}:latest + steps: + - checkout: self + fetchDepth: 25 + - bash: make showvars + displayName: make showvars + - bash: ./scripts/test-misc.sh + displayName: test-misc.sh - job: kvasir_ubuntu_jdk8 dependsOn: @@ -303,6 +353,18 @@ jobs: fetchDepth: 25 - bash: ./scripts/test-kvasir.sh displayName: test-kvasir.sh + - job: kvasir_ubuntu_jdk26 + dependsOn: + - canary_jobs + - kvasir_ubuntu_jdk25 + pool: + vmImage: 'ubuntu-latest' + container: mdernst/daikon-ubuntu-jdk26-plus${{ variables.testingSuffix }}:latest + steps: + - checkout: self + fetchDepth: 25 + - bash: ./scripts/test-kvasir.sh + displayName: test-kvasir.sh ## The Checker Framework cannot be run under Java 8 or 11. ## Thus, there is no typecheck_bundled_ubuntu_jdk{8,11} job. @@ -545,6 +607,108 @@ jobs: displayName: show Java version - bash: ./scripts/test-typecheck-with-latest-cf.sh part3 displayName: test-typecheck-with-latest-cf.sh part3 + - job: typecheck_bundled_part1_ubuntu_jdk26 + dependsOn: + - canary_jobs + - typecheck_bundled_part1_ubuntu_jdk25 + pool: + vmImage: 'ubuntu-latest' + container: mdernst/daikon-ubuntu-jdk26-plus${{ variables.testingSuffix }}:latest + timeoutInMinutes: 40 + steps: + - checkout: self + fetchDepth: 25 + - bash: | + java -version + javac -version + displayName: show Java version + - bash: ./scripts/test-typecheck-with-bundled-cf.sh part1 + displayName: test-typecheck-with-bundled-cf.sh part1 + - job: typecheck_bundled_part2_ubuntu_jdk26 + dependsOn: + - canary_jobs + - typecheck_bundled_part2_ubuntu_jdk25 + pool: + vmImage: 'ubuntu-latest' + container: mdernst/daikon-ubuntu-jdk26-plus${{ variables.testingSuffix }}:latest + timeoutInMinutes: 40 + steps: + - checkout: self + fetchDepth: 25 + - bash: | + java -version + javac -version + displayName: show Java version + - bash: ./scripts/test-typecheck-with-bundled-cf.sh part2 + displayName: test-typecheck-with-bundled-cf.sh part2 + - job: typecheck_bundled_part3_ubuntu_jdk26 + dependsOn: + - canary_jobs + - typecheck_bundled_part3_ubuntu_jdk25 + pool: + vmImage: 'ubuntu-latest' + container: mdernst/daikon-ubuntu-jdk26-plus${{ variables.testingSuffix }}:latest + timeoutInMinutes: 40 + steps: + - checkout: self + fetchDepth: 25 + - bash: | + java -version + javac -version + displayName: show Java version + - bash: ./scripts/test-typecheck-with-bundled-cf.sh part3 + displayName: test-typecheck-with-bundled-cf.sh part3 + - job: typecheck_latest_part1_ubuntu_jdk26 + dependsOn: + - canary_jobs + - typecheck_latest_part1_ubuntu_jdk25 + pool: + vmImage: 'ubuntu-latest' + container: mdernst/daikon-ubuntu-jdk26-plus${{ variables.testingSuffix }}:latest + timeoutInMinutes: 40 + steps: + - checkout: self + fetchDepth: 25 + - bash: | + java -version + javac -version + displayName: show Java version + - bash: ./scripts/test-typecheck-with-latest-cf.sh part1 + displayName: test-typecheck-with-latest-cf.sh part1 + - job: typecheck_latest_part2_ubuntu_jdk26 + dependsOn: + - canary_jobs + - typecheck_latest_part2_ubuntu_jdk25 + pool: + vmImage: 'ubuntu-latest' + container: mdernst/daikon-ubuntu-jdk26-plus${{ variables.testingSuffix }}:latest + timeoutInMinutes: 40 + steps: + - checkout: self + fetchDepth: 25 + - bash: | + java -version + javac -version + displayName: show Java version + - bash: ./scripts/test-typecheck-with-latest-cf.sh part2 + displayName: test-typecheck-with-latest-cf.sh part2 + - job: typecheck_latest_part3_ubuntu_jdk26 + dependsOn: + - canary_jobs + - typecheck_latest_part3_ubuntu_jdk25 + pool: + vmImage: 'ubuntu-latest' + container: mdernst/daikon-ubuntu-jdk26-plus${{ variables.testingSuffix }}:latest + timeoutInMinutes: 40 + steps: + - checkout: self + fetchDepth: 25 + - bash: | + java -version + javac -version + displayName: show Java version + - bash: ./scripts/test-typecheck-with-latest-cf.sh part3 + displayName: test-typecheck-with-latest-cf.sh part3 - job: quick_rockylinux_jdk8 dependsOn: @@ -571,6 +735,19 @@ jobs: fetchDepth: 25 - bash: ./scripts/test-quick-txt-diff.sh displayName: test-quick-txt-diff.sh + - job: quick_rockylinux_jdk26 + dependsOn: + - canary_jobs + - quick_rockylinux_jdk25 + - quick_ubuntu_jdk26 + pool: + vmImage: 'ubuntu-latest' + container: mdernst/daikon-rockylinux-jdk26${{ variables.testingSuffix }}:latest + steps: + - checkout: self + fetchDepth: 25 + - bash: ./scripts/test-quick-txt-diff.sh + displayName: test-quick-txt-diff.sh - job: nonquick_rockylinux_jdk8 dependsOn: @@ -597,6 +774,19 @@ jobs: fetchDepth: 25 - bash: ./scripts/test-nonquick-txt-diff.sh displayName: test-nonquick-txt-diff.sh + - job: nonquick_rockylinux_jdk26 + dependsOn: + - canary_jobs + - nonquick_rockylinux_jdk25 + - nonquick_ubuntu_jdk26 + pool: + vmImage: 'ubuntu-latest' + container: mdernst/daikon-rockylinux-jdk26${{ variables.testingSuffix }}:latest + steps: + - checkout: self + fetchDepth: 25 + - bash: ./scripts/test-nonquick-txt-diff.sh + displayName: test-nonquick-txt-diff.sh - job: nontxt_rockylinux_jdk8 dependsOn: @@ -623,6 +813,19 @@ jobs: fetchDepth: 25 - bash: ./scripts/test-non-txt-diff.sh displayName: test-non-txt-diff.sh + - job: nontxt_rockylinux_jdk26 + dependsOn: + - canary_jobs + - nontxt_rockylinux_jdk25 + - nontxt_ubuntu_jdk26 + pool: + vmImage: 'ubuntu-latest' + container: mdernst/daikon-rockylinux-jdk26${{ variables.testingSuffix }}:latest + steps: + - checkout: self + fetchDepth: 25 + - bash: ./scripts/test-non-txt-diff.sh + displayName: test-non-txt-diff.sh - job: misc_rockylinux_jdk8 dependsOn: @@ -653,6 +856,21 @@ jobs: displayName: make showvars - bash: ./scripts/test-misc.sh displayName: test-misc.sh + - job: misc_rockylinux_jdk26 + dependsOn: + - canary_jobs + - misc_rockylinux_jdk25 + - misc_ubuntu_jdk26 + pool: + vmImage: 'ubuntu-latest' + container: mdernst/daikon-rockylinux-jdk26-plus${{ variables.testingSuffix }}:latest + steps: + - checkout: self + fetchDepth: 25 + - bash: make showvars + displayName: make showvars + - bash: ./scripts/test-misc.sh + displayName: test-misc.sh - job: kvasir_rockylinux_jdk8 dependsOn: @@ -679,6 +897,19 @@ jobs: fetchDepth: 25 - bash: ./scripts/test-kvasir.sh displayName: test-kvasir.sh + - job: kvasir_rockylinux_jdk26 + dependsOn: + - canary_jobs + - kvasir_rockylinux_jdk25 + - kvasir_ubuntu_jdk26 + pool: + vmImage: 'ubuntu-latest' + container: mdernst/daikon-rockylinux-jdk26-plus${{ variables.testingSuffix }}:latest + steps: + - checkout: self + fetchDepth: 25 + - bash: ./scripts/test-kvasir.sh + displayName: test-kvasir.sh # ## Enable this job to prioritize typechecking a single file, without waiting for other tests. # - job: typecheck_onefile_jdk21 diff --git a/.azure/azure-pipelines.yml.m4 b/.azure/azure-pipelines.yml.m4 index 0ce667d2b..c61d0a863 100644 --- a/.azure/azure-pipelines.yml.m4 +++ b/.azure/azure-pipelines.yml.m4 @@ -22,7 +22,7 @@ jobs: # The dependsOn clauses (in this file and in .circleci/config.yml) are: # * Everything not *_ubuntu_jdk[]canary_version or typecheck_*_jdk[]canary_version depends on canary_jobs. - # * Anything *_jdk8 or *_jdk11 or *_jdk17 or *_jdk21 depends on *_jdk25. + # * Anything *_jdk8 or *_jdk11 or *_jdk17 or *_jdk21 or _jdk26 depends on *_jdk25. # * Anything *_rockylinux_* depends on *_ubuntu_*. # The remainder of jobs are run only if the canary_jobs pass. - job: canary_jobs diff --git a/.azure/jobs.m4 b/.azure/jobs.m4 index f4ee11036..09abd9d89 100644 --- a/.azure/jobs.m4 +++ b/.azure/jobs.m4 @@ -3,27 +3,32 @@ quick_job(ubuntu, 11) quick_job(ubuntu, 17) quick_job(ubuntu, 21) quick_job(ubuntu, 25) +quick_job(ubuntu, 26) nonquick_job(ubuntu, 8) nonquick_job(ubuntu, 11) nonquick_job(ubuntu, 17) nonquick_job(ubuntu, 21) nonquick_job(ubuntu, 25) +nonquick_job(ubuntu, 26) nontxt_job(ubuntu, 8) nontxt_job(ubuntu, 11) nontxt_job(ubuntu, 17) nontxt_job(ubuntu, 21) nontxt_job(ubuntu, 25) +nontxt_job(ubuntu, 26) misc_job(ubuntu, 8) misc_job(ubuntu, 11) misc_job(ubuntu, 17) misc_job(ubuntu, 21) misc_job(ubuntu, 25) +misc_job(ubuntu, 26) kvasir_job(ubuntu, 8) kvasir_job(ubuntu, 25) +kvasir_job(ubuntu, 26) ## The Checker Framework cannot be run under Java 8 or 11. ## Thus, there is no typecheck_bundled_ubuntu_jdk{8,11} job. @@ -34,18 +39,25 @@ typecheck_job_parts(ubuntu, 21, bundled) typecheck_job_parts(ubuntu, 21, latest) typecheck_job_parts(ubuntu, 25, bundled) typecheck_job_parts(ubuntu, 25, latest) +typecheck_job_parts(ubuntu, 26, bundled) +typecheck_job_parts(ubuntu, 26, latest) quick_job(rockylinux, 8) quick_job(rockylinux, 25) +quick_job(rockylinux, 26) nonquick_job(rockylinux, 8) nonquick_job(rockylinux, 25) +nonquick_job(rockylinux, 26) nontxt_job(rockylinux, 8) nontxt_job(rockylinux, 25) +nontxt_job(rockylinux, 26) misc_job(rockylinux, 8) misc_job(rockylinux, 25) +misc_job(rockylinux, 26) kvasir_job(rockylinux, 8) kvasir_job(rockylinux, 25) +kvasir_job(rockylinux, 26) diff --git a/.circleci/config.yml b/.circleci/config.yml index 309f2ef59..0af45bd49 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -113,6 +113,26 @@ jobs: - ".git" - run: ./scripts/test-quick-txt-diff.sh + quick-txt-diff-ubuntu-jdk26: + docker: + - image: mdernst/daikon-ubuntu-jdk26 + resource_class: large + environment: + CIRCLE_COMPARE_URL: << pipeline.project.git_url >>/compare/<< pipeline.git.base_revision >>..<> + TERM: dumb + steps: + - restore_cache: + keys: + - &source-cache source-v1-{{ .Branch }}-{{ .Revision }} + - source-v1-{{ .Branch }}- + - source-v1- + - checkout + - save_cache: + key: *source-cache + paths: + - ".git" + - run: ./scripts/test-quick-txt-diff.sh + nonquick-txt-diff-ubuntu-jdk8: docker: - image: mdernst/daikon-ubuntu-jdk8 @@ -213,6 +233,26 @@ jobs: - ".git" - run: ./scripts/test-nonquick-txt-diff.sh + nonquick-txt-diff-ubuntu-jdk26: + docker: + - image: mdernst/daikon-ubuntu-jdk26 + resource_class: large + environment: + CIRCLE_COMPARE_URL: << pipeline.project.git_url >>/compare/<< pipeline.git.base_revision >>..<> + TERM: dumb + steps: + - restore_cache: + keys: + - &source-cache source-v1-{{ .Branch }}-{{ .Revision }} + - source-v1-{{ .Branch }}- + - source-v1- + - checkout + - save_cache: + key: *source-cache + paths: + - ".git" + - run: ./scripts/test-nonquick-txt-diff.sh + non-txt-diff-ubuntu-jdk8: docker: - image: mdernst/daikon-ubuntu-jdk8 @@ -308,6 +348,25 @@ jobs: paths: - ".git" - run: ./scripts/test-non-txt-diff.sh + non-txt-diff-ubuntu-jdk26: + docker: + - image: mdernst/daikon-ubuntu-jdk26 + resource_class: large + environment: + CIRCLE_COMPARE_URL: << pipeline.project.git_url >>/compare/<< pipeline.git.base_revision >>..<> + TERM: dumb + steps: + - restore_cache: + keys: + - &source-cache source-v1-{{ .Branch }}-{{ .Revision }} + - source-v1-{{ .Branch }}- + - source-v1- + - checkout + - save_cache: + key: *source-cache + paths: + - ".git" + - run: ./scripts/test-non-txt-diff.sh misc-ubuntu-jdk8: docker: @@ -419,6 +478,28 @@ jobs: - run: command: ./scripts/test-misc.sh no_output_timeout: 20m + misc-ubuntu-jdk26: + docker: + - image: mdernst/daikon-ubuntu-jdk26-plus + resource_class: large + environment: + CIRCLE_COMPARE_URL: << pipeline.project.git_url >>/compare/<< pipeline.git.base_revision >>..<> + TERM: dumb + steps: + - restore_cache: + keys: + - &sourcefull-cache sourcefull-v1full-{{ .Branch }}-{{ .Revision }} + - sourcefull-v1full-{{ .Branch }}- + - sourcefull-v1full- + - checkout: + method: full + - save_cache: + key: *sourcefull-cache + paths: + - ".git" + - run: + command: ./scripts/test-misc.sh + no_output_timeout: 20m kvasir-ubuntu-jdk8: docker: @@ -464,6 +545,28 @@ jobs: name: Test Kvasir command: ./scripts/test-kvasir.sh no_output_timeout: 20m + kvasir-ubuntu-jdk26: + docker: + - image: mdernst/daikon-ubuntu-jdk26-plus + resource_class: large + environment: + CIRCLE_COMPARE_URL: << pipeline.project.git_url >>/compare/<< pipeline.git.base_revision >>..<> + TERM: dumb + steps: + - restore_cache: + keys: + - &source-cache source-v1-{{ .Branch }}-{{ .Revision }} + - source-v1-{{ .Branch }}- + - source-v1- + - checkout + - save_cache: + key: *source-cache + paths: + - ".git" + - run: + name: Test Kvasir + command: ./scripts/test-kvasir.sh + no_output_timeout: 20m ## The Checker Framework cannot be run under Java 8 or 11. ## Thus, there is no typecheck_bundled_ubuntu_jdk{8,11} job. @@ -799,6 +902,138 @@ jobs: - run: command: scripts/test-typecheck-with-latest-cf.sh part3 no_output_timeout: 30m + typecheck-bundled-part1-ubuntu-jdk26: + docker: + - image: mdernst/daikon-ubuntu-jdk26 + resource_class: large + environment: + CIRCLE_COMPARE_URL: << pipeline.project.git_url >>/compare/<< pipeline.git.base_revision >>..<> + TERM: dumb + steps: + - restore_cache: + keys: + - &source-cache source-v1-{{ .Branch }}-{{ .Revision }} + - source-v1-{{ .Branch }}- + - source-v1- + - checkout + - save_cache: + key: *source-cache + paths: + - ".git" + - run: env + - run: + command: scripts/test-typecheck-with-bundled-cf.sh part1 + no_output_timeout: 30m + typecheck-bundled-part2-ubuntu-jdk26: + docker: + - image: mdernst/daikon-ubuntu-jdk26 + resource_class: large + environment: + CIRCLE_COMPARE_URL: << pipeline.project.git_url >>/compare/<< pipeline.git.base_revision >>..<> + TERM: dumb + steps: + - restore_cache: + keys: + - &source-cache source-v1-{{ .Branch }}-{{ .Revision }} + - source-v1-{{ .Branch }}- + - source-v1- + - checkout + - save_cache: + key: *source-cache + paths: + - ".git" + - run: env + - run: + command: scripts/test-typecheck-with-bundled-cf.sh part2 + no_output_timeout: 30m + typecheck-bundled-part3-ubuntu-jdk26: + docker: + - image: mdernst/daikon-ubuntu-jdk26 + resource_class: large + environment: + CIRCLE_COMPARE_URL: << pipeline.project.git_url >>/compare/<< pipeline.git.base_revision >>..<> + TERM: dumb + steps: + - restore_cache: + keys: + - &source-cache source-v1-{{ .Branch }}-{{ .Revision }} + - source-v1-{{ .Branch }}- + - source-v1- + - checkout + - save_cache: + key: *source-cache + paths: + - ".git" + - run: env + - run: + command: scripts/test-typecheck-with-bundled-cf.sh part3 + no_output_timeout: 30m + typecheck-latest-part1-ubuntu-jdk26: + docker: + - image: mdernst/daikon-ubuntu-jdk26 + resource_class: large + environment: + CIRCLE_COMPARE_URL: << pipeline.project.git_url >>/compare/<< pipeline.git.base_revision >>..<> + TERM: dumb + steps: + - restore_cache: + keys: + - &source-cache source-v1-{{ .Branch }}-{{ .Revision }} + - source-v1-{{ .Branch }}- + - source-v1- + - checkout + - save_cache: + key: *source-cache + paths: + - ".git" + - run: env + - run: + command: scripts/test-typecheck-with-latest-cf.sh part1 + no_output_timeout: 30m + typecheck-latest-part2-ubuntu-jdk26: + docker: + - image: mdernst/daikon-ubuntu-jdk26 + resource_class: large + environment: + CIRCLE_COMPARE_URL: << pipeline.project.git_url >>/compare/<< pipeline.git.base_revision >>..<> + TERM: dumb + steps: + - restore_cache: + keys: + - &source-cache source-v1-{{ .Branch }}-{{ .Revision }} + - source-v1-{{ .Branch }}- + - source-v1- + - checkout + - save_cache: + key: *source-cache + paths: + - ".git" + - run: env + - run: + command: scripts/test-typecheck-with-latest-cf.sh part2 + no_output_timeout: 30m + typecheck-latest-part3-ubuntu-jdk26: + docker: + - image: mdernst/daikon-ubuntu-jdk26 + resource_class: large + environment: + CIRCLE_COMPARE_URL: << pipeline.project.git_url >>/compare/<< pipeline.git.base_revision >>..<> + TERM: dumb + steps: + - restore_cache: + keys: + - &source-cache source-v1-{{ .Branch }}-{{ .Revision }} + - source-v1-{{ .Branch }}- + - source-v1- + - checkout + - save_cache: + key: *source-cache + paths: + - ".git" + - run: env + - run: + command: scripts/test-typecheck-with-latest-cf.sh part3 + no_output_timeout: 30m quick-txt-diff-rockylinux-jdk8: docker: @@ -840,6 +1075,26 @@ jobs: - ".git" - run: ./scripts/test-quick-txt-diff.sh + quick-txt-diff-rockylinux-jdk26: + docker: + - image: mdernst/daikon-rockylinux-jdk26 + resource_class: large + environment: + CIRCLE_COMPARE_URL: << pipeline.project.git_url >>/compare/<< pipeline.git.base_revision >>..<> + TERM: dumb + steps: + - restore_cache: + keys: + - &source-cache source-v1-{{ .Branch }}-{{ .Revision }} + - source-v1-{{ .Branch }}- + - source-v1- + - checkout + - save_cache: + key: *source-cache + paths: + - ".git" + - run: ./scripts/test-quick-txt-diff.sh + nonquick-txt-diff-rockylinux-jdk8: docker: - image: mdernst/daikon-rockylinux-jdk8 @@ -880,6 +1135,26 @@ jobs: - ".git" - run: ./scripts/test-nonquick-txt-diff.sh + nonquick-txt-diff-rockylinux-jdk26: + docker: + - image: mdernst/daikon-rockylinux-jdk26 + resource_class: large + environment: + CIRCLE_COMPARE_URL: << pipeline.project.git_url >>/compare/<< pipeline.git.base_revision >>..<> + TERM: dumb + steps: + - restore_cache: + keys: + - &source-cache source-v1-{{ .Branch }}-{{ .Revision }} + - source-v1-{{ .Branch }}- + - source-v1- + - checkout + - save_cache: + key: *source-cache + paths: + - ".git" + - run: ./scripts/test-nonquick-txt-diff.sh + non-txt-diff-rockylinux-jdk8: docker: - image: mdernst/daikon-rockylinux-jdk8 @@ -918,6 +1193,25 @@ jobs: paths: - ".git" - run: ./scripts/test-non-txt-diff.sh + non-txt-diff-rockylinux-jdk26: + docker: + - image: mdernst/daikon-rockylinux-jdk26 + resource_class: large + environment: + CIRCLE_COMPARE_URL: << pipeline.project.git_url >>/compare/<< pipeline.git.base_revision >>..<> + TERM: dumb + steps: + - restore_cache: + keys: + - &source-cache source-v1-{{ .Branch }}-{{ .Revision }} + - source-v1-{{ .Branch }}- + - source-v1- + - checkout + - save_cache: + key: *source-cache + paths: + - ".git" + - run: ./scripts/test-non-txt-diff.sh misc-rockylinux-jdk8: docker: @@ -963,6 +1257,28 @@ jobs: - run: command: ./scripts/test-misc.sh no_output_timeout: 20m + misc-rockylinux-jdk26: + docker: + - image: mdernst/daikon-rockylinux-jdk26-plus + resource_class: large + environment: + CIRCLE_COMPARE_URL: << pipeline.project.git_url >>/compare/<< pipeline.git.base_revision >>..<> + TERM: dumb + steps: + - restore_cache: + keys: + - &sourcefull-cache sourcefull-v1full-{{ .Branch }}-{{ .Revision }} + - sourcefull-v1full-{{ .Branch }}- + - sourcefull-v1full- + - checkout: + method: full + - save_cache: + key: *sourcefull-cache + paths: + - ".git" + - run: + command: ./scripts/test-misc.sh + no_output_timeout: 20m kvasir-rockylinux-jdk8: docker: @@ -1008,6 +1324,28 @@ jobs: name: Test Kvasir command: ./scripts/test-kvasir.sh no_output_timeout: 20m + kvasir-rockylinux-jdk26: + docker: + - image: mdernst/daikon-rockylinux-jdk26-plus + resource_class: large + environment: + CIRCLE_COMPARE_URL: << pipeline.project.git_url >>/compare/<< pipeline.git.base_revision >>..<> + TERM: dumb + steps: + - restore_cache: + keys: + - &source-cache source-v1-{{ .Branch }}-{{ .Revision }} + - source-v1-{{ .Branch }}- + - source-v1- + - checkout + - save_cache: + key: *source-cache + paths: + - ".git" + - run: + name: Test Kvasir + command: ./scripts/test-kvasir.sh + no_output_timeout: 20m # For an explanation of the dependence logic, see ../.azure/azure-pipelines.yml . @@ -1045,6 +1383,11 @@ workflows: - quick-txt-diff-ubuntu-jdk25 - quick-txt-diff-ubuntu-jdk25 + - quick-txt-diff-ubuntu-jdk26: + requires: + - canary-jobs + - quick-txt-diff-ubuntu-jdk25 + - nonquick-txt-diff-ubuntu-jdk8: requires: - canary-jobs @@ -1066,6 +1409,11 @@ workflows: - nonquick-txt-diff-ubuntu-jdk25 - nonquick-txt-diff-ubuntu-jdk25 + - nonquick-txt-diff-ubuntu-jdk26: + requires: + - canary-jobs + - nonquick-txt-diff-ubuntu-jdk25 + - non-txt-diff-ubuntu-jdk8: requires: - canary-jobs @@ -1087,6 +1435,11 @@ workflows: - non-txt-diff-ubuntu-jdk25 - non-txt-diff-ubuntu-jdk25 + - non-txt-diff-ubuntu-jdk26: + requires: + - canary-jobs + - non-txt-diff-ubuntu-jdk25 + - misc-ubuntu-jdk8: requires: - canary-jobs @@ -1108,12 +1461,22 @@ workflows: - misc-ubuntu-jdk25 - misc-ubuntu-jdk25 + - misc-ubuntu-jdk26: + requires: + - canary-jobs + - misc-ubuntu-jdk25 + - kvasir-ubuntu-jdk8: requires: - canary-jobs - kvasir-ubuntu-jdk25 - kvasir-ubuntu-jdk25 + - kvasir-ubuntu-jdk26: + requires: + - canary-jobs + - kvasir-ubuntu-jdk25 + ## The Checker Framework cannot be built under Java 8, 11 or 17. ## Thus, there is no typecheck_latest_ubuntu_jdk{8,11,17} job. ## The Checker Framework cannot be run under Java 8 or 11. @@ -1169,6 +1532,36 @@ workflows: - typecheck-bundled-part1-ubuntu-jdk25 - typecheck-bundled-part2-ubuntu-jdk25 - typecheck-bundled-part3-ubuntu-jdk25 + - typecheck-latest-part1-ubuntu-jdk26: + requires: + - canary-jobs + - typecheck-latest-part1-ubuntu-jdk25 + + - typecheck-latest-part2-ubuntu-jdk26: + requires: + - canary-jobs + - typecheck-latest-part2-ubuntu-jdk25 + + - typecheck-latest-part3-ubuntu-jdk26: + requires: + - canary-jobs + - typecheck-latest-part3-ubuntu-jdk25 + + - typecheck-bundled-part1-ubuntu-jdk26: + requires: + - canary-jobs + - typecheck-bundled-part1-ubuntu-jdk25 + + - typecheck-bundled-part2-ubuntu-jdk26: + requires: + - canary-jobs + - typecheck-bundled-part2-ubuntu-jdk25 + + - typecheck-bundled-part3-ubuntu-jdk26: + requires: + - canary-jobs + - typecheck-bundled-part3-ubuntu-jdk25 + - quick-txt-diff-rockylinux-jdk8: requires: - canary-jobs @@ -1180,6 +1573,12 @@ workflows: - canary-jobs - quick-txt-diff-ubuntu-jdk25 + - quick-txt-diff-rockylinux-jdk26: + requires: + - canary-jobs + - quick-txt-diff-rockylinux-jdk25 + - quick-txt-diff-ubuntu-jdk26 + - nonquick-txt-diff-rockylinux-jdk8: requires: - canary-jobs @@ -1191,6 +1590,12 @@ workflows: - canary-jobs - nonquick-txt-diff-ubuntu-jdk25 + - nonquick-txt-diff-rockylinux-jdk26: + requires: + - canary-jobs + - nonquick-txt-diff-rockylinux-jdk25 + - nonquick-txt-diff-ubuntu-jdk26 + - non-txt-diff-rockylinux-jdk8: requires: - canary-jobs @@ -1202,6 +1607,12 @@ workflows: - canary-jobs - non-txt-diff-ubuntu-jdk25 + - non-txt-diff-rockylinux-jdk26: + requires: + - canary-jobs + - non-txt-diff-rockylinux-jdk25 + - non-txt-diff-ubuntu-jdk26 + - misc-rockylinux-jdk8: requires: - canary-jobs @@ -1213,6 +1624,12 @@ workflows: - canary-jobs - misc-ubuntu-jdk25 + - misc-rockylinux-jdk26: + requires: + - canary-jobs + - misc-rockylinux-jdk25 + - misc-ubuntu-jdk26 + - kvasir-rockylinux-jdk8: requires: - canary-jobs @@ -1223,3 +1640,9 @@ workflows: requires: - canary-jobs - kvasir-ubuntu-jdk25 + + - kvasir-rockylinux-jdk26: + requires: + - canary-jobs + - kvasir-rockylinux-jdk25 + - kvasir-ubuntu-jdk26 diff --git a/.circleci/config.yml.m4 b/.circleci/config.yml.m4 index 0fbf737f3..719a0f15f 100644 --- a/.circleci/config.yml.m4 +++ b/.circleci/config.yml.m4 @@ -39,23 +39,28 @@ job_dependences(ubuntu, 11, quick-txt-diff) job_dependences(ubuntu, 17, quick-txt-diff) job_dependences(ubuntu, 21, quick-txt-diff) job_dependences(ubuntu, 25, quick-txt-diff) +job_dependences(ubuntu, 26, quick-txt-diff) job_dependences(ubuntu, 8, nonquick-txt-diff) job_dependences(ubuntu, 11, nonquick-txt-diff) job_dependences(ubuntu, 17, nonquick-txt-diff) job_dependences(ubuntu, 21, nonquick-txt-diff) job_dependences(ubuntu, 25, nonquick-txt-diff) +job_dependences(ubuntu, 26, nonquick-txt-diff) job_dependences(ubuntu, 8, non-txt-diff) job_dependences(ubuntu, 11, non-txt-diff) job_dependences(ubuntu, 17, non-txt-diff) job_dependences(ubuntu, 21, non-txt-diff) job_dependences(ubuntu, 25, non-txt-diff) +job_dependences(ubuntu, 26, non-txt-diff) job_dependences(ubuntu, 8, misc) job_dependences(ubuntu, 11, misc) job_dependences(ubuntu, 17, misc) job_dependences(ubuntu, 21, misc) job_dependences(ubuntu, 25, misc) +job_dependences(ubuntu, 26, misc) job_dependences(ubuntu, 8, kvasir) job_dependences(ubuntu, 25, kvasir) +job_dependences(ubuntu, 26, kvasir) ## The Checker Framework cannot be built under Java 8, 11 or 17. ## Thus, there is no typecheck_latest_ubuntu_jdk{8,11,17} job. ## The Checker Framework cannot be run under Java 8 or 11. @@ -75,13 +80,24 @@ job_dependences_part(ubuntu, 25, typecheck-latest, part3) job_dependences_part(ubuntu, 25, typecheck-bundled, part1) job_dependences_part(ubuntu, 25, typecheck-bundled, part2) job_dependences_part(ubuntu, 25, typecheck-bundled, part3) +job_dependences_part(ubuntu, 26, typecheck-latest, part1) +job_dependences_part(ubuntu, 26, typecheck-latest, part2) +job_dependences_part(ubuntu, 26, typecheck-latest, part3) +job_dependences_part(ubuntu, 26, typecheck-bundled, part1) +job_dependences_part(ubuntu, 26, typecheck-bundled, part2) +job_dependences_part(ubuntu, 26, typecheck-bundled, part3) job_dependences(rockylinux, 8, quick-txt-diff) job_dependences(rockylinux, 25, quick-txt-diff) +job_dependences(rockylinux, 26, quick-txt-diff) job_dependences(rockylinux, 8, nonquick-txt-diff) job_dependences(rockylinux, 25, nonquick-txt-diff) +job_dependences(rockylinux, 26, nonquick-txt-diff) job_dependences(rockylinux, 8, non-txt-diff) job_dependences(rockylinux, 25, non-txt-diff) +job_dependences(rockylinux, 26, non-txt-diff) job_dependences(rockylinux, 8, misc) job_dependences(rockylinux, 25, misc) +job_dependences(rockylinux, 26, misc) job_dependences(rockylinux, 8, kvasir) job_dependences(rockylinux, 25, kvasir) +job_dependences(rockylinux, 26, kvasir) diff --git a/doc/CHANGELOG.md b/doc/CHANGELOG.md index e6eb26318..23c316dcb 100644 --- a/doc/CHANGELOG.md +++ b/doc/CHANGELOG.md @@ -21,6 +21,10 @@ Further documentation can be found in: `make -C $DAIKONDIR/java javadoc` It is also available at . +## Version ?? + +All Daikon tools now work with Java 8-26. + ## Version 5.8.22 (June 3, 2025) All Daikon tools now work with Java 8-24. diff --git a/java/Makefile b/java/Makefile index d60fa4875..4111fd673 100644 --- a/java/Makefile +++ b/java/Makefile @@ -30,6 +30,7 @@ ifneq (,$(findstring start1.8,start${JAVA_VERSION_STRING})) JAVA21 := 0 JAVA24 := 0 JAVA25 := 0 + JAVA26 := 0 JAVA_RELEASE_NUMBER := 8 else JAVA8 := 0 @@ -37,6 +38,7 @@ else JAVA21 := 0 JAVA24 := 0 JAVA25 := 0 + JAVA26 := 0 JAVA_RELEASE_NUMBER := $(shell echo ${JAVA_VERSION_STRING} | sed 's/\([0-9]*\)\..*/\1/') endif ifeq ($(shell test ${JAVA_RELEASE_NUMBER} -ge 17; echo $$?),0) @@ -45,16 +47,21 @@ endif ifeq ($(shell test ${JAVA_RELEASE_NUMBER} -ge 21; echo $$?),0) JAVA21 := 1 endif -# Temporary, since Java 24 is not a LTS release. +# JDK 24 isn't an LTS version, but we need it to know whether to compile Instrument24.java. ifeq ($(shell test ${JAVA_RELEASE_NUMBER} -ge 24; echo $$?),0) JAVA24 := 1 endif ifeq ($(shell test ${JAVA_RELEASE_NUMBER} -ge 25; echo $$?),0) JAVA25 := 1 +endif +ifeq ($(shell test ${JAVA_RELEASE_NUMBER} -eq 25; echo $$?),0) ifndef JAVA25_HOME JAVA25_HOME := ${JAVA_HOME} endif endif +ifeq ($(shell test ${JAVA_RELEASE_NUMBER} -ge 26; echo $$?),0) + JAVA26 := 1 +endif ifeq ($(shell test ${JAVA_RELEASE_NUMBER} -gt 20; echo $$?),0) LINT_THIS_ESCAPE=-Xlint:-this-escape @@ -67,13 +74,16 @@ OS_REL := $(shell sed -n -e 's/^VERSION_ID="\(.*\)"/\1/p' /etc/os-release) # Users can set JAVAC_TARGET_FLAGS, taking precedence over these settings. # Use "--source 25 --target 25" because Java 25 is an LTS version. ifeq (${JAVA25}, 1) - ifndef JAVA25_HOME + ifdef JAVA25_HOME + JAVAC_TARGET_FLAGS ?= --source 25 --target 25 --system ${JAVA25_HOME} + else + ifdef JAVA26_HOME + JAVAC_TARGET_FLAGS ?= --source 25 --target 25 --system ${JAVA26_HOME} + else # If this happens, $JAVA_HOME must also be empty. - $(error JAVA25_HOME is not set; JAVA_HOME=${JAVA_HOME}) + $(error JAVA25_HOME and JAVA26_HOME are not set; JAVA_HOME=${JAVA_HOME}) + endif endif - JAVAC_TARGET_FLAGS ?= --source 25 --target 25 --system ${JAVA25_HOME} -else ifeq (${JAVA24}, 1) - JAVAC_TARGET_FLAGS ?= -source 24 -target 24 else JAVAC_TARGET_FLAGS ?= -source 8 -target 8 endif diff --git a/java/daikon/chicory/Instrument24.java b/java/daikon/chicory/Instrument24.java index e7ac7c0d6..969bc339b 100644 --- a/java/daikon/chicory/Instrument24.java +++ b/java/daikon/chicory/Instrument24.java @@ -110,7 +110,7 @@ public class Instrument24 implements ClassFileTransformer { /** Debug information about which classes and/or methods are transformed and why. */ protected static final SimpleLog debug_transform = new SimpleLog(false); - // Public so can be enabled from daikon.dcomp.Instrument24. + // Public so it can be enabled from daikon.dcomp.Instrument24. /** Debug information about ppt-omit and ppt-select. */ public static final SimpleLog debug_ppt_omit = new SimpleLog(false); diff --git a/scripts/Dockerfile-README b/scripts/Dockerfile-README index 99e9cfa67..b4690ed10 100644 --- a/scripts/Dockerfile-README +++ b/scripts/Dockerfile-README @@ -66,6 +66,8 @@ create_upload_docker_image daikon ubuntu jdk21 && \ create_upload_docker_image daikon ubuntu jdk21-plus && \ create_upload_docker_image daikon ubuntu jdk25 && \ create_upload_docker_image daikon ubuntu jdk25-plus && \ +create_upload_docker_image daikon ubuntu jdk26 && \ +create_upload_docker_image daikon ubuntu jdk26-plus && \ create_upload_docker_image daikon rockylinux jdk8 && \ create_upload_docker_image daikon rockylinux jdk8-plus && \ create_upload_docker_image daikon rockylinux jdk11 && \ @@ -76,5 +78,7 @@ create_upload_docker_image daikon rockylinux jdk21 && \ create_upload_docker_image daikon rockylinux jdk21-plus && \ create_upload_docker_image daikon rockylinux jdk25 && \ create_upload_docker_image daikon rockylinux jdk25-plus && \ +create_upload_docker_image daikon rockylinux jdk26 && \ +create_upload_docker_image daikon rockylinux jdk26-plus && \ git push && \ echo "success" diff --git a/scripts/Dockerfile-rockylinux-jdk26 b/scripts/Dockerfile-rockylinux-jdk26 new file mode 100644 index 000000000..82aa97316 --- /dev/null +++ b/scripts/Dockerfile-rockylinux-jdk26 @@ -0,0 +1,52 @@ +# Create a Docker image that is ready to run the Daikon tests. + +FROM rockylinux:9 +LABEL org.opencontainers.image.authors="Michael Ernst " + +# According to +# https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/: +# * Put "apt update" and "apt install" in the same RUN command. +# * Do not run "apt upgrade"; instead get upstream to update. + +# The EPEL repository contains certain packages. +RUN dnf -q -y upgrade && dnf -q -y install \ + epel-release + +# curl is installed by default on Rocky Linux. +RUN dnf -q -y upgrade && dnf -q -y install \ + autoconf \ + automake \ + bc \ + binutils-devel \ + diffutils \ + findutils \ + gcc \ + git \ + jq \ + m4 \ + make \ + perl-English \ + perl-filetest \ + rsync \ + tar \ + unzip \ + wget \ + which + +## Install the JDK. +RUN dnf -q -y upgrade && dnf -q -y install \ + java-26-openjdk \ + java-26-openjdk-devel +ENV JAVA26_HOME=/usr/lib/jvm/java-26-openjdk + +## Use this when the java-26-openjdk* packages don't yet exist. +# # RUN curl --silent -o jdk-26_linux-x64_bin.tar.gz https://download.oracle.com/java/26/latest/jdk-26_linux-x64_bin.tar.gz \ +# RUN curl --silent -o jdk-26_linux-x64_bin.tar.gz https://download.java.net/java/GA/jdk26/bd75d5f9689641da8e1daabeccb5528b/36/GPL/openjdk-26_linux-x64_bin.tar.gz \ +# && tar xzf jdk-26_linux-x64_bin.tar.gz +# ENV PATH="/jdk-26/bin:/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" +# ENV JAVA26_HOME=/jdk-26 +# RUN chmod og+rx /root \ +# && chmod og+r /root/* + +# Clean up. +RUN dnf -q clean all diff --git a/scripts/Dockerfile-rockylinux-jdk26-plus b/scripts/Dockerfile-rockylinux-jdk26-plus new file mode 100644 index 000000000..f43acccd7 --- /dev/null +++ b/scripts/Dockerfile-rockylinux-jdk26-plus @@ -0,0 +1,99 @@ +# Create a Docker image that is ready to run the full Daikon tests, +# including building the manual and Javadoc. +# But it's used primarily for running miscellaneous tests such as the manual +# and Javadoc. + +FROM rockylinux:9 +LABEL org.opencontainers.image.authors="Michael Ernst " + +# According to +# https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/: +# * Put "apt update" and "apt install" in the same RUN command. +# * Do not run "apt upgrade"; instead get upstream to update. + +# The EPEL repository contains certain packages. +RUN dnf -q -y upgrade && dnf -q -y install \ + epel-release + +# curl is installed by default on Rocky Linux. +RUN dnf -q -y upgrade && dnf -q -y install \ + autoconf \ + automake \ + bc \ + binutils-devel \ + diffutils \ + findutils \ + gcc \ + git \ + jq \ + m4 \ + make \ + perl-English \ + perl-filetest \ + rsync \ + tar \ + unzip \ + wget \ + which + +## Install the JDK. +RUN dnf -q -y upgrade && dnf -q -y install \ + java-26-openjdk \ + java-26-openjdk-devel +ENV JAVA26_HOME=/usr/lib/jvm/java-26-openjdk + +## Use this when the java-26-openjdk* packages don't yet exist. +# # RUN curl --silent -o jdk-26_linux-x64_bin.tar.gz https://download.oracle.com/java/26/latest/jdk-26_linux-x64_bin.tar.gz \ +# RUN curl --silent -o jdk-26_linux-x64_bin.tar.gz https://download.java.net/java/GA/jdk26/bd75d5f9689641da8e1daabeccb5528b/36/GPL/openjdk-26_linux-x64_bin.tar.gz \ +# && tar xzf jdk-26_linux-x64_bin.tar.gz +# ENV PATH="/jdk-26/bin:/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" +# ENV JAVA26_HOME=/jdk-26 +# RUN chmod og+rx /root \ +# && chmod og+r /root/* + +RUN dnf -q -y upgrade && dnf -q -y install \ + ctags \ + devscripts-checkbashisms \ + gcc-c++ \ + graphviz \ + netpbm \ + netpbm-progs \ + python3 \ + python3-distutils-extra \ + ShellCheck \ + texlive \ + yamllint + +# Alternately, run: dnf --enablerepo=crb install PACKAGENAME +RUN dnf config-manager --set-enabled crb \ +&& dnf -y install \ + dnf-plugins-core \ + texinfo \ + texinfo-tex + +# Install shfmt. +RUN dnf -q -y upgrade && dnf -q -y install \ + golang \ +&& go install mvdan.cc/sh/v3/cmd/shfmt@latest +ENV PATH=/root/go/bin:$PATH + +# Install Python dependencies (obsolete, to be removed). +# `pipx ensurepath` only adds to the path in newly-started shells. +# BUT, setting the path for the current user is not enough. +# Azure creates a new user and runs jobs as it. +# So, install into /usr/local/bin which is already on every user's path. +RUN dnf -q -y install \ + pipx \ +&& PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin pipx install mypy \ +&& PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin pipx install ruff + +# Install uv (manages Python dependencies). +RUN echo "installing uv" \ +&& wget -qO- https://astral.sh/uv/install.sh | sh \ +&& find /root -exec chmod +r {} \; \ +&& find /root -type d -exec chmod +x {} \; \ +&& find /root/.local/bin -type f -exec chmod +x {} \; +ENV PATH=/root/.local/bin:$PATH + +# Clean up. +RUN dnf -q clean all diff --git a/scripts/Dockerfile-ubuntu-jdk26 b/scripts/Dockerfile-ubuntu-jdk26 new file mode 100644 index 000000000..e511530bf --- /dev/null +++ b/scripts/Dockerfile-ubuntu-jdk26 @@ -0,0 +1,57 @@ +# Create a Docker image that is ready to run the Daikon tests. + +# "ubuntu" is the latest LTS release. "ubuntu:rolling" is the latest release. +# Either might lag behind; as of 2024-11-16, ubuntu:rolling was still 24.04 rather than 24.10. +FROM ubuntu:rolling +LABEL org.opencontainers.image.authors="Michael Ernst " + +# According to +# https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/: +# * Put "apt update" and "apt install" in the same RUN command. +# * Do not run "apt upgrade"; instead get upstream to update. + +RUN export DEBIAN_FRONTEND=noninteractive \ +&& apt -qqy update \ +&& apt -qqy install locales \ +&& rm -rf /var/lib/apt/lists/* \ +&& locale-gen "en_US.UTF-8" +ENV LANG=en_US.UTF-8 \ + LANGUAGE=en_US:en \ + LC_ALL=en_US.UTF-8 + +RUN export DEBIAN_FRONTEND=noninteractive \ +&& apt -qqy update \ +&& apt -qqy install \ + apt-utils + +RUN export DEBIAN_FRONTEND=noninteractive \ +&& apt -qqy update \ +&& apt -qqy install \ + autoconf \ + automake \ + bc \ + binutils-dev \ + curl \ + gcc \ + git \ + jq \ + lsb-release \ + m4 \ + make \ + rsync \ + unzip \ + wget + +# Install the JDK. +RUN export DEBIAN_FRONTEND=noninteractive \ +&& apt -qqy update \ +&& apt -qqy install \ + openjdk-26-jdk \ +&& update-java-alternatives --set java-1.26.0-openjdk-amd64 +ENV JAVA26_HOME=/usr/lib/jvm/java-26-openjdk-amd64 + +# Clean up. +RUN export DEBIAN_FRONTEND=noninteractive \ +&& apt -qqy autoremove \ +&& apt clean \ +&& rm -rf /var/lib/apt/lists/* diff --git a/scripts/Dockerfile-ubuntu-jdk26-plus b/scripts/Dockerfile-ubuntu-jdk26-plus new file mode 100644 index 000000000..9acda452a --- /dev/null +++ b/scripts/Dockerfile-ubuntu-jdk26-plus @@ -0,0 +1,106 @@ +# Create a Docker image that is ready to run the full Daikon tests, +# including building the manual and Javadoc. +# But it's used primarily for running miscellaneous tests such as the manual +# and Javadoc. + +# "ubuntu" is the latest LTS release. "ubuntu:rolling" is the latest release. +# Either might lag behind; as of 2024-11-16, ubuntu:rolling was still 24.04 rather than 24.10. +FROM ubuntu:rolling +LABEL org.opencontainers.image.authors="Michael Ernst " + +# According to +# https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/: +# * Put "apt update" and "apt install" in the same RUN command. +# * Do not run "apt upgrade"; instead get upstream to update. + +RUN export DEBIAN_FRONTEND=noninteractive \ +&& apt -qqy update \ +&& apt -qqy install locales \ +&& rm -rf /var/lib/apt/lists/* \ +&& locale-gen "en_US.UTF-8" +ENV LANG=en_US.UTF-8 \ + LANGUAGE=en_US:en \ + LC_ALL=en_US.UTF-8 + +RUN export DEBIAN_FRONTEND=noninteractive \ +&& apt -qqy update \ +&& apt -qqy install \ + apt-utils + +RUN export DEBIAN_FRONTEND=noninteractive \ +&& apt -qqy update \ +&& apt -qqy install \ + autoconf \ + automake \ + bc \ + binutils-dev \ + curl \ + gcc \ + git \ + jq \ + lsb-release \ + m4 \ + make \ + rsync \ + unzip \ + wget + +# Install the JDK. +RUN export DEBIAN_FRONTEND=noninteractive \ +&& apt -qqy update \ +&& apt -qqy install \ + openjdk-26-jdk \ +&& update-java-alternatives --set java-1.26.0-openjdk-amd64 +ENV JAVA26_HOME=/usr/lib/jvm/java-26-openjdk-amd64 + +# These are needed to build the Checker Framework, used by the "typecheck" job in CI. +RUN export DEBIAN_FRONTEND=noninteractive \ +&& apt -qqy update \ +&& apt -qqy install \ + ant \ + maven \ + python3 + +RUN export DEBIAN_FRONTEND=noninteractive \ +&& apt -qqy update \ +&& apt -qqy install \ + devscripts \ + g++ \ + graphviz \ + libc6-dbg \ + netpbm \ + python3-setuptools \ + shellcheck \ + shfmt \ + texinfo \ + texlive \ + texlive-latex-extra \ + universal-ctags \ + yamllint \ + zlib1g-dev + +# Install Python dependencies (obsolete, to be removed). +# `pipx ensurepath` only adds to the path in newly-started shells. +# BUT, setting the path for the current user is not enough. +# Azure creates a new user and runs jobs as it. +# So, install into /usr/local/bin which is already on every user's path. +RUN export DEBIAN_FRONTEND=noninteractive \ +&& apt -qqy update \ +&& apt -y install \ + pipx \ +&& PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin pipx install mypy \ +&& PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin pipx install ruff + +# Install uv (manages Python dependencies). +RUN export DEBIAN_FRONTEND=noninteractive \ +&& wget -qO- https://astral.sh/uv/install.sh | sh \ +&& find /root -exec chmod +r {} \; \ +&& find /root -type d -exec chmod +x {} \; \ +&& find /root/.local/bin -type f -exec chmod +x {} \; +ENV PATH=/root/.local/bin:$PATH + +# Clean up. +RUN export DEBIAN_FRONTEND=noninteractive \ +&& apt -qqy autoremove \ +&& apt clean \ +&& rm -rf /var/lib/apt/lists/* diff --git a/scripts/dfec-to-kvasir.py b/scripts/dfec-to-kvasir.py index 2941fbb9b..84e6ca795 100755 --- a/scripts/dfec-to-kvasir.py +++ b/scripts/dfec-to-kvasir.py @@ -486,8 +486,6 @@ def strip_comments(comp_num: str) -> str: ] -# - output_no_comp_decls_f.write("VarComparability\nnone\n\n")