Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: erlang/otp
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: OTP-26.2.5
Choose a base ref
...
head repository: erlang/otp
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: OTP-27.0
Choose a head ref
Loading
Showing 4,800 changed files with 461,637 additions and 570,287 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
2 changes: 1 addition & 1 deletion .github/dockerfiles/Dockerfile.debian-base
Original file line number Diff line number Diff line change
@@ -28,7 +28,7 @@ RUN apt-get update && apt-get -y upgrade && apt-get install -y build-essential p
sed -i "s@main\n@main\nArch: $BUILD_ARCH,$HOST_ARCH@g" /etc/apt/sources.list.d/debian.sources; \
fi && \
apt-get update && \
apt-get install -y build-essential m4 autoconf fop xsltproc default-jdk libxml2-utils \
apt-get install -y build-essential m4 autoconf default-jdk \
$INSTALL_LIBS && \
if [ "$HOST_TRIP" != "$BUILD_TRIP" ]; then \
apt-get install -y -f \
27 changes: 19 additions & 8 deletions .github/dockerfiles/Dockerfile.ubuntu-base
Original file line number Diff line number Diff line change
@@ -13,8 +13,8 @@ ENV LANG=C.UTF-8 LC_ALL=C.UTF-8

## Install build tools
RUN apt-get update && apt-get -y upgrade && \
apt-get install -y build-essential m4 autoconf fop xsltproc \
default-jdk libxml2-utils flex pkg-config locales tzdata sudo ${INSTALL_LIBS} && \
apt-get install -y build-essential m4 autoconf \
default-jdk flex pkg-config locales tzdata sudo ${INSTALL_LIBS} && \
sed -i 's@# en_US.UTF-8@en_US.UTF-8@g' /etc/locale.gen && locale-gen && \
update-alternatives --set wx-config /usr/lib/x86_64-linux-gnu/wx/config/gtk3-unicode-3.0

@@ -54,6 +54,8 @@ RUN apt-get update && apt-get install -y git curl && \
VSN=$(kerl list releases | grep "^$release" | tail -1 | awk '{print $1}'); \
if [ $release = $LATEST ]; then \
echo "/usr/local/lib/erlang-${VSN}/bin" > /home/${USER}/LATEST; \
echo "${VSN}" > /home/${USER}/LATEST_VSN; \
echo "${release}" > /home/${USER}/LATEST_RELEASE; \
fi && \
echo "Building ${VSN}" && \
kerl build ${VSN} ${VSN} && \
@@ -104,19 +106,28 @@ COPY --chown=${USER}:${GROUP} dockerfiles/init.sh /buildroot/

WORKDIR /buildroot/

## Install test tools rebar3, proper and jsx
## Build and install elixir and hex
ENV ELIXIR_VSN=latest
RUN export PATH="$(cat /home/${USER}/LATEST):${PATH}" && \
set -x && \
mkdir /buildroot/elixir && cd /buildroot/elixir && \
curl -s https://api.github.com/repos/elixir-lang/elixir/releases/${ELIXIR_VSN} | \
jq '.tarball_url' | xargs curl -L > elixir.tar.gz && \
tar xzf elixir.tar.gz --strip-components=1 && \
make && sudo make install && \
mix archive.install github hexpm/hex branch latest --force

## Install test tools rebar3 and proper
RUN export PATH="$(cat /home/${USER}/LATEST):${PATH}" && \
latest () { \
local VSN=$(curl -sL "https://api.github.com/repos/$1/tags" | jq -r ".[] | .name" | grep -E '^v?[0-9]' | sort -V | tail -1); \
curl -sL "https://github.com/$1/archive/$VSN.tar.gz" > $(basename $1).tar.gz; \
} && \
latest erlang/rebar3 && ls -la && \
latest erlang/rebar3 && \
(tar xzf rebar3.tar.gz && cd rebar3-* && ./bootstrap && sudo cp rebar3 /usr/bin) && \
latest proper-testing/proper && \
(tar xzf proper.tar.gz && mv proper-* proper && cd proper && make) && \
latest talentdeficit/jsx && \
(tar xzf jsx.tar.gz && mv jsx-* jsx && cd jsx && rebar3 compile)
(tar xzf proper.tar.gz && mv proper-* proper && cd proper && make)

ENV ERL_LIBS=/buildroot/proper:/buildroot/jsx
ENV ERL_LIBS=/buildroot/proper

ENTRYPOINT ["/buildroot/init.sh"]
5 changes: 3 additions & 2 deletions .github/scripts/pr-comment.js
Original file line number Diff line number Diff line change
@@ -74,13 +74,14 @@ module.exports = async({ github, context, state, pr_number }) => {

console.log(`ct_body: ${ct_body}`);

const repoURL = `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}`
const body = `${ct_body}
<!-- marker -->
To speed up review, make sure that you have read [Contributing to Erlang/OTP](/${context.repo.owner}/${context.repo.repo}/blob/master/CONTRIBUTING.md) and that all [checks](/${context.repo.owner}/${context.repo.repo}/pull/${pr_number}/checks) pass.
To speed up review, make sure that you have read [Contributing to Erlang/OTP](${repoURL}/blob/master/CONTRIBUTING.md) and that all [checks](${repoURL}/pull/${pr_number}/checks) pass.
See the [TESTING](/${context.repo.owner}/${context.repo.repo}/blob/master/HOWTO/TESTING.md) and [DEVELOPMENT](/${context.repo.owner}/${context.repo.repo}/blob/master/HOWTO/DEVELOPMENT.md) HowTo guides for details about how to run test locally.
See the [TESTING](${repoURL}/blob/master/HOWTO/TESTING.md) and [DEVELOPMENT](${repoURL}/blob/master/HOWTO/DEVELOPMENT.md) HowTo guides for details about how to run test locally.
## Artifacts
* ` + (ct_logs ? `[Complete CT logs](https://erlang.github.io/prs/${pr_number}/ct_logs/index.html) ([Download Logs](${nightlyURL(ct_logs)}))` : "No CT logs found") + `
2 changes: 1 addition & 1 deletion .github/scripts/restore-from-prebuilt.sh
Original file line number Diff line number Diff line change
@@ -175,7 +175,7 @@ if [ -n "${ARCHIVE}" ]; then

echo "::group::{Run ${i}: docs}"
### If any of the doc generating tools change, we need to re-compile the docs
if grep "lib/\(xmerl\|erl_docgen\|edoc\)" "${CHANGES}"; then
if grep "lib/\(xmerl\|edoc\)" "${CHANGES}"; then
echo "Deleting all docs as documentation tools have changed" >&2
rm -rf "${CACHE_DIR}"/lib/*/doc/ "${CACHE_DIR}/erts/doc/" "${CACHE_DIR}/system/"
fi
38 changes: 18 additions & 20 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
@@ -74,7 +74,7 @@ jobs:
echo "changes=${CHANGED_APPS}" >> "$GITHUB_OUTPUT"
fi
- name: Check if there are any C-code changes, if not then limit CI run
uses: dorny/paths-filter@v3.0.0
uses: dorny/paths-filter@v3.0.2
id: c-code-changes
with:
filters: .github/scripts/c-code-path-filters.yaml
@@ -409,34 +409,36 @@ jobs:
## Build all the documentation
- name: Build documentation
run: |
docker build -t otp - <<EOF
if [ "${{ github.event_name }}" = "pull_request" ]; then
BASE_URL="${{ github.event.pull_request.head.repo.full_name }}/blob/${{ github.event.pull_request.head.ref }}/"
else
BASE_URL="${{ github.repository }}/blob/${{ github.ref_name }}/"
fi
docker build --build-arg BASE_URL="$BASE_URL" -t otp - <<EOF
FROM otp
ENV BASE_URL=$BASE_URL
RUN ./otp_build download_ex_doc
RUN make release docs release_docs && sudo make install-docs
EOF
- name: Release docs to publish
run: |
docker run -v $PWD/:/github otp \
"make release_docs DOC_TARGETS='man html pdf' RELEASE_ROOT=/github/docs"
"make release_docs DOC_TARGETS='html' RELEASE_ROOT=/github/docs"
sudo chown -R `whoami` docs
cd docs
tar czf ../otp_doc_man.tar.gz man
rm -rf man
tar czf ../otp_doc_html.tar.gz *
cd docs && tar czf ../otp_doc_html.tar.gz *
- name: Upload html documentation archive
uses: actions/upload-artifact@v4.3.3
with:
name: otp_doc_html
path: otp_doc_html.tar.gz
- name: Upload man documentation archive
uses: actions/upload-artifact@v4.3.0
with:
name: otp_doc_man
path: otp_doc_man.tar.gz
## Documentation checks
- name: Run xmllint
run: docker run otp "make xmllint"
- name: Trigger rebuild of erlang.org/docs/
if: github.ref_name == 'master' && github.repository == 'erlang/otp'
env:
GITHUB_TOKEN: ${{ secrets.TRIGGER_ERLANG_ORG_BUILD }}
run: |
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/erlang/erlang-org/actions/workflows/update-gh-cache.yaml/dispatches" -d '{"ref":"master"}'
- name: Run html link check
run: docker run -v $PWD/:/github otp "/github/scripts/otp_html_check /github/docs doc/index.html"
run: docker run -v $PWD/:/github otp "cd /github/docs && /github/scripts/otp_check_html_links.exs"

static:
name: Run static analysis
@@ -601,10 +603,6 @@ jobs:
uses: actions/download-artifact@v4.1.7
with:
name: otp_doc_html
- name: Download man docs
uses: actions/download-artifact@v4.1.1
with:
name: otp_doc_man

## We add the correct version name into the file names
## and create the hash files for all assets
30 changes: 4 additions & 26 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -139,6 +139,7 @@ JAVADOC-GENERATED
/Makefile

/release
/doc

/make/output.mk
/make/emd2exml
@@ -164,20 +165,7 @@ JAVADOC-GENERATED
/lib/*/SKIP
/lib/SKIP-APPLICATIONS

/lib/*/doc/html/*.html
/lib/*/doc/html/*.css
/lib/*/doc/html/js
/lib/*/doc/html/*.gif
/lib/*/doc/html/*.jpg
/lib/*/doc/html/*.png
/lib/*/doc/html/*.eix
/lib/*/doc/man[0-9]/*.[0-9]
/lib/*/doc/pdf/*.fo
/lib/*/doc/pdf/*.pdf
/lib/*/doc/src/*.fo
/lib/*/doc/xml/*.xml
/lib/*/doc/xml/*.ent
/lib/*/doc/chunks/*.chunk
/lib/*/doc/html

/lib/config.log
/lib/config.status
@@ -246,6 +234,7 @@ JAVADOC-GENERATED
/lib/compiler/test/*_no_module_opt_SUITE.erl
/lib/compiler/test/*_no_type_opt_SUITE.erl
/lib/compiler/test/*_dialyzer_SUITE.erl
/lib/compiler/test/*_cover_SUITE.erl

# crypto
/lib/crypto/test/crypto_SUITE_data/*.rsp
@@ -262,18 +251,7 @@ JAVADOC-GENERATED
# erts

/erts/info
/erts/doc/html/*.html
/erts/doc/html/*.gif
/erts/doc/html/*.jpg
/erts/doc/html/*.eix
/erts/doc/pdf/*.fo
/erts/doc/pdf/*.pdf
/erts/doc/src/*.fo
/erts/doc/xml/*.xml
/erts/doc/xml/figures/*.png
/erts/doc/xml/figures/*.svg
/erts/doc/chunks/*.chunk
/erts/doc/man[0-9]/*.[0-9]
/erts/doc/html/
/erts/doc/CONF_INFO

# et
17 changes: 10 additions & 7 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -64,7 +64,7 @@ There are exceptions, for example corrections to bugs that have been introduced
* TIP: Write the test case **before** fixing the bug so that you can know that it catches the bug.

* For applications without a test suite in the git repository, it would be appreciated if you provide a
small code sample in the commit message or email a module that will provoke the failure.
small code sample in the commit message or attach a module to the PR that will provoke the failure.

### Adding a new feature

@@ -100,8 +100,7 @@ a discussion on the mailing list.

* Make sure existing test cases don't fail. It is not necessary to run all tests (that would take many hours),
but you should at least run the tests for the application you have changed.
* Make sure the documentation builds and is according to the dtd. eg. `make xmllint` or `cd lib/stdlib/ && make xmllint`
* Make sure no new dialyzer warnings have been added. eg. `make dialyzer` or `cd lib/stdlib/ && make dialyzer`
* Make sure all static checks pass by calling `./otp_build check`. Call `./otp_build check --help` for details on what `./otp_build check` does.
* Make sure that github actions passes, if you go to https://github.com/$YOUR_GITHUB_USER/otp/actions you can enable github actions builds for you otp fork.

See the [Testing](https://github.com/erlang/otp/blob/master/HOWTO/TESTING.md) and
@@ -154,12 +153,16 @@ If you want to change the setting only for the Erlang mode, you can use a hook l
### After you have submitted your pull request

* Follow the discussion following your pull request, answer questions, discuss and implement
changes requested by reviewers.
changes requested by reviewers. Smaller changes should be squashed into their associated commits.

* If your pull requests introduces new public functions, they need to be tagged with the
OTP release in which they _will_ appear in the `since` tag in the functions' documentation.
As this is generally not yet certain at the time when your PR gets merged, the person assigned
to your pull request should give you an internal ticket number (for example `OTP-12345`) to use
as a placeholder in the respective `since` tags, like `since="OTP @OTP-12345@`. When your new
functions are released with an OTP release, this placeholder will get replaced with the actual
OTP version, leading to something like "OTP 26.0".
as a placeholder in the respective `since` tags, like `-doc #{ since => ~"OTP @OTP-12345@" }.`.
When your new functions are released with an OTP release, this placeholder will get replaced with
the actual OTP version, leading to something like "OTP 26.0".

* If you are asked to write a release note for your pull request, see
[Writing release notes](https://github.com/erlang/otp/blob/master/HOWTO/RELEASE-NOTES.md)
for advice.
Loading