TIP
The information about this package can be found in many place. The now official one is from github page. pdates about releases can be found on github but also from the official mailing-list.
This page contains all notes and actions made to update/upgrade Erlang ports on OpenBSD system. An OpenBSD ports tree (opens new window) is available on Github to see the change and test them.
# Releases Announces
Announces can be found on:
Official Erlang Mailinglist: https://erlang.org/mailman/listinfo/erlang-announce
Official Erlang Downloads Page: https://www.erlang.org/downloads
# Manual build steps (configure + make)
site=https://github.com/erlang/otp/releases/download
version=x.y.z.tar.gz
ftp ${site}/OTP-${version}
tar zxvf OTP-${version}
cd OTP-${version}
./configure
gmake
# Manual build steps (otp_build)
site=https://github.com/erlang/otp/releases/download
version=x.y.z.tar.gz
ftp ${site}/OTP-${version}
tar zxvf OTP-${version}
cd OTP-${version}
./otp_build all -a
# lang/erlang/19
WARNING
This version is not supported anymore by Erlang/OTP team
| date | version | build | test | package | install | url |
|---|---|---|---|---|---|---|
| - | 19.3.6.13 | ok | - | - | - | https://github.com/erlang/otp/archive/OTP-19.3.6.13.tar.gz |
| 2021-04-03 | 19.3.8.22 | ok | ok | ok | wip | https://github.com/erlang/otp/archive/OTP-19.3.8.22.tar.gz |
# lang/erlang/21
| date | version | build | test | package | install | url |
|---|---|---|---|---|---|---|
| - | 21.3.8.21 | ok | - | - | - | https://github.com/erlang/otp/archive/OTP-21.3.8.21.tar.gz |
| 2021-04-03 | 21.3.8.22 | ok | ok | ok | wip | https://github.com/erlang/otp/archive/OTP-21.3.8.22.tar.gz |
- https://erldocs.com/21.0/
# lang/erlang/22
| date | version | build | test | package | install | tarball |
|---|---|---|---|---|---|---|
| 2021-04-03 | 22.3.4.16 | ok | ok | ok | wip | https://github.com/erlang/otp/archive/OTP-22.3.4.16.tar.gz |
| 2021-04-06 | 22.3.4.17 | ok | ok | ok | wip | https://github.com/erlang/otp/archive/OTP-22.3.4.17.tar.gz |
# lang/erlang/23
| date | version | build | test | package | install | url |
|---|---|---|---|---|---|---|
| - | 23.2.5 | ok | ok | ok | ok | https://github.com/erlang/otp/archive/OTP-23.2.5.tar.gz |
| - | 23.2.6 | ok | wip | wip | wip | https://github.com/erlang/otp/archive/OTP-23.2.6.tar.gz |
| - | 23.2.7 | ok | wip | wip | wip | https://github.com/erlang/otp/archive/OTP-23.2.7.tar.gz |
| - | 23.2.7.1 | ok | wip | wip | wip | https://github.com/erlang/otp/archive/OTP-23.2.7.1.tar.gz |
| - | 23.3 | ok | wip | wip | wip | https://github.com/erlang/otp/archive/OTP-23.3.tar.gz |
| 2021-04-03 | 23.3.1 | ok | ok | ok | wip | https://github.com/erlang/otp/archive/OTP-23.3.1.tar.gz |
# lang/erlang/24
| date | version | build | test | package | install | url |
|---|---|---|---|---|---|---|
| - | 24.0-rc1 | - | - | - | - | https://github.com/erlang/otp/archive/OTP-24.0-rc1.tar.gz |
| 2021-04-03 | 24.0-rc2 | ok | ok | ok | - | https://github.com/erlang/otp/archive/OTP-24.0-rc1.tar.gz |
# Current Update Process
The first part is to clean the version name of the Erlang package. Indeed, the version released on Github are containing 3 or 4 numbers in the version, that could break the build. The idea is to only use the major version. This is a fix for all erlang release.
cd /usr/ports/lang/erlang/23
version=23.y.z # new version
sed -i -Ee "/^V=/{ s/[0-9]+\.[0-9]+\.[0-9]+/${version}/; }" \
-e "/^V=/{ s/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/${version}/; }" \
Makefile
Now, you can edit the version of the release present in the
Makefile. For example, if you want to update to the last Erlang-R21
version. you will need to update ports/lang/erlang/21/Makefile file.
V=21.3.8.22
By doing that, you will now have the possibility to fetch and create a
checksum of the last release. It will update
ports/lang/erlang/21/distinfo file.
make makesum
Erlang release is based on different modules and application. Every
new release will impact these versions. It is why you will need to
generate the list of the version by using gen-versions
target. Assuming you are in the ports/lang/erlang/21, this
make gen-versions
WARNING
The content of the gen-versions target is coming from Erlang
Makefiles. Unfortunately, these Makefiles are also containing sometime
variables. You will need to change them. ERL_INTERFACE_VSN is
practically always impacted.
ERL_INTERFACE_VSN $(EI_VSN) \
This line should be converted with the real values of EI_VSN
variable found above in the target gen-versions output.
ERL_INTERFACE_VSN 4.0.2 \
Now, it's the time to build the fake root. It will build and install the current Erlang release in an isolated space.
make fake
PLIST-* files need also to be updated.
WARNING
By default, it will update the content of the file, you should always look into it and validated if the script is doing its job. Unfortunately, it does not do it correctly everytime.
make update-plist
Some information need to be present in PLIST files. In PLIST-main
you should probably add these lines if they are not present:
@option no-default-conflict
@conflict erlang-<16b.03p4v0
@pkgpath lang/erlang/22
It should now be okay to create the package.
make package
You can install it by using make or pkg_add.
make install
Packages are present in /usr/ports/packages/all/erlang* by default.
# Erlang ports deps
Here the packages to test after each Erlang ports update.
benchmarks/tsungdatabases/riakdevel/rebardevel/rebar3lang/elixirnet/rabbitmq
# Requirement
# Build Pipeline with Buildbot
TODO
# FAQ
# How to change the source of Erlang packages?
TODO
# Why are we using gen-versions target and how it works?
TODO
# How to deal with erl$[version} name?
TODO
# How to deal with the patches?
TODO
# How to rebuild all packages linked to Erlang?
TODO
# How to deal with wx?
TODO
# How to make the update process easier?
TODO