diff --git a/.gitignore b/.gitignore index 34a6285..36e05df 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ -otp_doc_html_R12B-5.tar.gz -otp_doc_man_R12B-5.tar.gz -otp_src_R12B-5.tar.gz +/*.src.rpm +/*~ +/otp-OTP-*.tar.gz +/otp_doc_html_R*.tar.gz +/otp_doc_man_R*.tar.gz +/otp_src_R*.readme +/otp_src_R*.tar.gz diff --git a/epmd.service b/epmd.service new file mode 100644 index 0000000..6881195 --- /dev/null +++ b/epmd.service @@ -0,0 +1,25 @@ +[Unit] +Description=Erlang Port Mapper Daemon +After=network.target +Requires=epmd.socket + +[Service] +ExecStart=/usr/bin/epmd -systemd +#ExecStop=/usr/bin/epmd -kill +Type=notify +StandardOutput=journal +StandardError=journal +DeviceAllow=/dev/null rw +PrivateTmp=true +#CapabilityBoundingSet= +NoNewPrivileges=true +Restart=always +LimitNPROC=1 +LimitFSIZE=0 +User=epmd +Group=epmd + +[Install] +Also=epmd.socket +WantedBy=multi-user.target + diff --git a/epmd.socket b/epmd.socket new file mode 100644 index 0000000..34817e0 --- /dev/null +++ b/epmd.socket @@ -0,0 +1,10 @@ +[Unit] +Description=Erlang Port Mapper Daemon Activation Socket + +[Socket] +ListenStream=4369 +Accept=false + +[Install] +WantedBy=sockets.target + diff --git a/epmd@.service b/epmd@.service new file mode 100644 index 0000000..822268f --- /dev/null +++ b/epmd@.service @@ -0,0 +1,25 @@ +[Unit] +Description=Erlang Port Mapper Daemon +After=network.target +Requires=epmd@.socket + +[Service] +ExecStart=/usr/bin/epmd -systemd +#ExecStop=/usr/bin/epmd -kill +Type=notify +StandardOutput=journal +StandardError=journal +DeviceAllow=/dev/null rw +PrivateTmp=true +#CapabilityBoundingSet= +NoNewPrivileges=true +Restart=always +LimitNPROC=1 +LimitFSIZE=0 +User=epmd +Group=epmd + +[Install] +Also=epmd@.socket +WantedBy=multi-user.target + diff --git a/epmd@.socket b/epmd@.socket new file mode 100644 index 0000000..f3e5338 --- /dev/null +++ b/epmd@.socket @@ -0,0 +1,10 @@ +[Unit] +Description=Erlang Port Mapper Daemon Activation Socket + +[Socket] +ListenStream=%I +Accept=false + +[Install] +WantedBy=sockets.target + diff --git a/erlang.spec b/erlang.spec index fb2ec6a..878fb41 100644 --- a/erlang.spec +++ b/erlang.spec @@ -1,93 +1,193 @@ -%define ver R12B -%define rel 5 +%global need_bootstrap_set 1 -Name: erlang -Version: %{ver} -Release: %{rel}.10%{?dist} -Summary: General-purpose programming language and runtime environment +%{!?need_bootstrap: %global need_bootstrap %{need_bootstrap_set}} -Group: Development/Languages -License: ERPL -URL: http://www.erlang.org -Source: http://www.erlang.org/download/otp_src_%{ver}-%{rel}.tar.gz -Source1: http://www.erlang.org/download/otp_doc_html_%{ver}-%{rel}.tar.gz -Source2: http://www.erlang.org/download/otp_doc_man_%{ver}-%{rel}.tar.gz -Patch1: otp-R12B-5-0001-Do-not-create-links-instead-of-real-files.patch -Patch2: otp-R12B-5-0002-Fix-symlinking-of-epmd.patch -Patch3: otp-R12B-5-0003-Do-not-format-man-pages.patch -Patch4: otp-R12B-5-0004-Remove-rpath.patch -Patch5: otp-R12B-5-0005-Fix-missing-ssl-libraries-in-EPEL.patch -Patch6: otp-R12B-5-0006-Fix-shared-libraries-installation.patch -Patch7: otp-R12B-5-0007-Fix-check-for-compile-workspace-overflow.patch -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) - -BuildRequires: ncurses-devel -BuildRequires: openssl-devel -BuildRequires: unixODBC-devel -BuildRequires: tcl-devel -BuildRequires: tk-devel -BuildRequires: gd-devel -%if 0%{?el4}%{?el5} -BuildRequires: java-1.4.2-gcj-compat-devel +%ifarch %{arm} %{mips} riscv64 %{ix86} +# MIPS and RISC-V does not have all dependencies for fop yet. +# For some reason, fop hangs on arm, so for now don't generate docs by +# default +%bcond_with doc %else -BuildRequires: java-1.5.0-gcj-devel +# RHEL8 doesn't have fop +%if 0%{?rhel} > 7 +%bcond_with doc +%else +%bcond_without doc +%endif %endif -BuildRequires: flex -BuildRequires: m4 -Requires: tk +# Compile with FIPS support by default +%bcond_without fips -# Added virtual Provides for each erlang module -Provides: erlang-appmon = %{version}-%{release} -Provides: erlang-asn1 = %{version}-%{release} -Provides: erlang-common_test = %{version}-%{release} -Provides: erlang-compiler = %{version}-%{release} -Provides: erlang-cosEvent = %{version}-%{release} -Provides: erlang-cosEventDomain = %{version}-%{release} -Provides: erlang-cosFileTransfer = %{version}-%{release} -Provides: erlang-cosNotification = %{version}-%{release} -Provides: erlang-cosProperty = %{version}-%{release} -Provides: erlang-cosTime = %{version}-%{release} -Provides: erlang-cosTransactions = %{version}-%{release} -Provides: erlang-crypto = %{version}-%{release} -Provides: erlang-debugger = %{version}-%{release} -Provides: erlang-dialyzer = %{version}-%{release} -Provides: erlang-docbuilder = %{version}-%{release} -Provides: erlang-edoc = %{version}-%{release} -Provides: erlang-erts = %{version}-%{release} -Provides: erlang-et = %{version}-%{release} -Provides: erlang-eunit = %{version}-%{release} -Provides: erlang-gs = %{version}-%{release} -Provides: erlang-hipe = %{version}-%{release} -Provides: erlang-ic = %{version}-%{release} -Provides: erlang-inets = %{version}-%{release} -Provides: erlang-inviso = %{version}-%{release} -Provides: erlang-kernel = %{version}-%{release} -Provides: erlang-megaco = %{version}-%{release} -Provides: erlang-mnesia = %{version}-%{release} -Provides: erlang-observer = %{version}-%{release} -Provides: erlang-odbc = %{version}-%{release} -Provides: erlang-orber = %{version}-%{release} -Provides: erlang-os_mon = %{version}-%{release} -Provides: erlang-otp_mibs = %{version}-%{release} -Provides: erlang-parsetools = %{version}-%{release} -Provides: erlang-percept = %{version}-%{release} -Provides: erlang-pman = %{version}-%{release} -Provides: erlang-public_key = %{version}-%{release} -Provides: erlang-runtime_tools = %{version}-%{release} -Provides: erlang-sasl = %{version}-%{release} -Provides: erlang-snmp = %{version}-%{release} -Provides: erlang-ssh = %{version}-%{release} -Provides: erlang-ssl = %{version}-%{release} -Provides: erlang-stdlib = %{version}-%{release} -Provides: erlang-syntax_tools = %{version}-%{release} -Provides: erlang-test_server = %{version}-%{release} -Provides: erlang-toolbar = %{version}-%{release} -Provides: erlang-tools = %{version}-%{release} -Provides: erlang-tv = %{version}-%{release} -Provides: erlang-typer = %{version}-%{release} -Provides: erlang-webtool = %{version}-%{release} -Provides: erlang-xmerl = %{version}-%{release} +## +## Optional components +## + +%global __with_emacs 1 +%global __with_examples 1 +%ifarch %{java_arches} +%global __with_java 1 +%else +%global __with_java 0 +%endif +%global __with_sources 1 +# +# wxWidgets plugin blocks the following ones: +# +# * debugger - https://bugzilla.redhat.com/1095715 +# * dialyzer - https://bugzilla.redhat.com/1095717 +# * et - https://bugzilla.redhat.com/1095718 +# * observer - https://bugzilla.redhat.com/1095721 +# * reltool - https://bugzilla.redhat.com/1095727 +# +# debugger blocks: +# +# * common_test +# * megaco +# +# et blocks: +# +# * megaco +# +# observer blocks: +# +# * common_test +# +# So finally we have to disable the following plugins: +# +# common_test +# debugger +# dialyzer +# et +# megaco +# observer +# reltool (*) +# wx +# +%global __with_wxwidgets 1 + + +Name: erlang +Version: 26.2.5.16 +Release: 1%{?dist} +Summary: General-purpose programming language and runtime environment + +License: Apache-2.0 +URL: https://www.erlang.org +VCS: git:https://github.com/erlang/otp.git +Source0: https://github.com/erlang/otp/archive/OTP-%{version}/otp-OTP-%{version}.tar.gz +Source5: epmd.service +Source6: epmd.socket +Source7: epmd@.service +Source8: epmd@.socket +# These files are intended for Fedora package maintainers only. +Source998: otp-make-subpackages.py +Source999: otp-get-patches.sh + +# For the source of the Fedora specific patches, see the respective +# branch at https://github.com/lemenkov/otp +# +# Run something like +# $ git clone git://github.com/erlang/otp.git +# $ cd otp +# $ git remote add fedora https://git.fedorahosted.org/git/erlang.git +# $ git fetch -v --all +# to get yourself a copy of the Erlang/OTP source code with the +# Fedora specific patches from Fedora. Then run something like +# $ ./otp-get-patches.sh /path/to/otp OTP_R14B02 fedora/fedora-R14B02 +# for some semi-automatic patch update assistance. +# +# start of autogenerated patch tag list +Patch1: otp-0001-Do-not-format-man-pages-and-do-not-install-miscellan.patch +Patch2: otp-0002-Remove-rpath.patch +Patch3: otp-0003-Do-not-install-C-sources.patch +Patch4: otp-0004-Do-not-install-Java-sources.patch +Patch5: otp-0005-Do-not-install-nteventlog-and-related-doc-files-on-n.patch +Patch6: otp-0006-Add-extra-search-directory.patch +Patch7: otp-0007-Avoid-forking-sed-to-get-basename.patch +Patch8: otp-0008-Load-man-pages-from-system-wide-directory.patch +Patch9: otp-0009-Add-GDB-tools.patch +# end of autogenerated patch tag list + +BuildRequires: gcc +BuildRequires: gcc-c++ +# For gdb-tools +BuildRequires: gdb +BuildRequires: flex +BuildRequires: make + +%if %{with doc} +%if 0%{?need_bootstrap} < 1 +# Required for building docs (escript) +BuildRequires: erlang +%endif +%endif + +# for +BuildRequires: systemd-devel +BuildRequires: systemd +%{?systemd_requires} +Requires: systemd +BuildRequires: autoconf +BuildRequires: automake +#BuildRequires: erlang-rpm-macros + +Requires: %{name}-asn1%{?_isa} = %{version}-%{release} +%if %{__with_wxwidgets} +Requires: %{name}-common_test%{?_isa} = %{version}-%{release} +%endif # __with_wxwidgets +Requires: %{name}-compiler%{?_isa} = %{version}-%{release} +Requires: %{name}-crypto%{?_isa} = %{version}-%{release} +%if %{__with_wxwidgets} +Requires: %{name}-debugger%{?_isa} = %{version}-%{release} +%endif # __with_wxwidgets +%if %{__with_wxwidgets} +Requires: %{name}-dialyzer%{?_isa} = %{version}-%{release} +%endif # __with_wxwidgets +Requires: %{name}-diameter%{?_isa} = %{version}-%{release} +Requires: %{name}-edoc%{?_isa} = %{version}-%{release} +Requires: %{name}-eldap%{?_isa} = %{version}-%{release} +Requires: %{name}-erl_docgen%{?_isa} = %{version}-%{release} +Requires: %{name}-erl_interface%{?_isa} = %{version}-%{release} +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +%if %{__with_wxwidgets} +Requires: %{name}-et%{?_isa} = %{version}-%{release} +%endif # __with_wxwidgets +Requires: %{name}-eunit%{?_isa} = %{version}-%{release} +Requires: %{name}-ftp%{?_isa} = %{version}-%{release} +Requires: %{name}-inets%{?_isa} = %{version}-%{release} +%if %{__with_java} +Requires: %{name}-jinterface%{?_isa} = %{version}-%{release} +%endif # __with_java +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +%if %{__with_wxwidgets} +Requires: %{name}-megaco%{?_isa} = %{version}-%{release} +%endif # __with_wxwidgets +Requires: %{name}-mnesia%{?_isa} = %{version}-%{release} +%if %{__with_wxwidgets} +Requires: %{name}-observer%{?_isa} = %{version}-%{release} +%endif # __with_wxwidgets +Requires: %{name}-odbc%{?_isa} = %{version}-%{release} +Requires: %{name}-os_mon%{?_isa} = %{version}-%{release} +Requires: %{name}-parsetools%{?_isa} = %{version}-%{release} +Requires: %{name}-public_key%{?_isa} = %{version}-%{release} +%if %{__with_wxwidgets} +Requires: %{name}-reltool%{?_isa} = %{version}-%{release} +%endif # __with_wxwidgets +Requires: %{name}-runtime_tools%{?_isa} = %{version}-%{release} +Requires: %{name}-sasl%{?_isa} = %{version}-%{release} +Requires: %{name}-snmp%{?_isa} = %{version}-%{release} +Requires: %{name}-src%{?_isa} = %{version}-%{release} +Requires: %{name}-ssh%{?_isa} = %{version}-%{release} +Requires: %{name}-ssl%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} +Requires: %{name}-syntax_tools%{?_isa} = %{version}-%{release} +Requires: %{name}-tftp%{?_isa} = %{version}-%{release} +Requires: %{name}-tools%{?_isa} = %{version}-%{release} +%if %{__with_wxwidgets} +Requires: %{name}-wx%{?_isa} = %{version}-%{release} +%endif # __with_wxwidgets +Requires: %{name}-xmerl%{?_isa} = %{version}-%{release} %description Erlang is a general-purpose programming language and runtime @@ -95,110 +195,2824 @@ environment. Erlang has built-in support for concurrency, distribution and fault tolerance. Erlang is used in several large telecommunication systems from Ericsson. +### BEGIN OF AUTOGENERATED LIST ### +%package asn1 +Summary: Provides support for Abstract Syntax Notation One +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description asn1 +Provides support for Abstract Syntax Notation One. + +%if %{__with_wxwidgets} +%package common_test +Summary: A portable framework for automatic testing +Requires: %{name}-compiler%{?_isa} = %{version}-%{release} +Requires: %{name}-crypto%{?_isa} = %{version}-%{release} +Requires: %{name}-debugger%{?_isa} = %{version}-%{release} +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-inets%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-observer%{?_isa} = %{version}-%{release} +Requires: %{name}-runtime_tools%{?_isa} = %{version}-%{release} +Requires: %{name}-sasl%{?_isa} = %{version}-%{release} +Requires: %{name}-snmp%{?_isa} = %{version}-%{release} +Requires: %{name}-ssh%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} +Requires: %{name}-syntax_tools%{?_isa} = %{version}-%{release} +Requires: %{name}-tools%{?_isa} = %{version}-%{release} +Requires: %{name}-xmerl%{?_isa} = %{version}-%{release} +Obsoletes: erlang-test_server + +%description common_test +A portable framework for automatic testing. +%endif # __with_wxwidgets + +%package compiler +Summary: A byte code compiler for Erlang which produces highly compact code +Requires: %{name}-crypto%{?_isa} = %{version}-%{release} +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description compiler +A byte code compiler for Erlang which produces highly compact code. + +%package crypto +Summary: Cryptographical support +BuildRequires: pkgconfig(openssl) +%if 0%{?fedora} > 40 +BuildRequires: openssl-devel-engine +%endif +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description crypto +Cryptographical support. + +%if %{__with_wxwidgets} +%package debugger +Summary: A debugger for debugging and testing of Erlang programs +Requires: %{name}-compiler%{?_isa} = %{version}-%{release} +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} +Requires: %{name}-wx%{?_isa} = %{version}-%{release} + +%description debugger +A debugger for debugging and testing of Erlang programs. +%endif # __with_wxwidgets + +%if %{__with_wxwidgets} +%package dialyzer +Summary: A DIscrepancy AnaLYZer for ERlang programs +Requires: %{name}-compiler%{?_isa} = %{version}-%{release} +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} +Requires: %{name}-syntax_tools%{?_isa} = %{version}-%{release} +Requires: %{name}-wx%{?_isa} = %{version}-%{release} +Requires: graphviz +Obsoletes: erlang-typer + +%description dialyzer +A DIscrepancy AnaLYZer for ERlang programs. +%endif # __with_wxwidgets + +%package diameter +Summary: Diameter (RFC 3588) library +BuildRequires: ed +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-runtime_tools%{?_isa} = %{version}-%{release} +Requires: %{name}-ssl%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} +Requires: %{name}-syntax_tools%{?_isa} = %{version}-%{release} + +%description diameter +Diameter (RFC 3588) library + +%if %{with doc} %package doc -Summary: Erlang documentation -Group: Development/Languages +Summary: Erlang documentation +BuildRequires: fop +BuildRequires: libxslt %description doc Documentation for Erlang. +%endif +%package edoc +Summary: A utility used to generate documentation out of tags in source files +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-inets%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} +Requires: %{name}-syntax_tools%{?_isa} = %{version}-%{release} +Requires: %{name}-xmerl%{?_isa} = %{version}-%{release} + +%description edoc +A utility used to generate documentation out of tags in source files. + +%package eldap +Summary: Erlang LDAP library +Requires: %{name}-asn1%{?_isa} = %{version}-%{release} +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-ssl%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description eldap +Erlang LDAP library. + +%package erl_docgen +Summary: A utility used to generate erlang HTML documentation +Requires: %{name}-edoc%{?_isa} = %{version}-%{release} +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} +Requires: %{name}-xmerl%{?_isa} = %{version}-%{release} + +%description erl_docgen +A utility used to generate erlang HTML documentation. + +%package erl_interface +Summary: Low level interface to C +Requires: %{name}-erts%{?_isa} = %{version}-%{release} + +%description erl_interface +Low level interface to C. + +%package erts +Summary: Functionality necessary to run the Erlang System itself +BuildRequires: lksctp-tools-devel +BuildRequires: m4 +BuildRequires: ncurses-devel +BuildRequires: zlib-devel +# epmd user, epmd group +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} +Requires: lksctp-tools +# See erts/emulator/beam/erl_driver.h or call erlang:system_info(driver_version). +#Provides: erlang(erl_drv_version) = %%(%%{buildroot}/bin/erl -noshell -eval 'io:format(erlang:system_info(driver_version)).' -s erlang halt) +Provides: erlang(erl_drv_version) = 3.3 +# See erts/emulator/beam/erl_nif.h or call erlang:system_info(nif_version). +#Provides: erlang(erl_nif_version) = %%(%%{buildroot}/bin/erl -noshell -eval 'io:format(erlang:system_info(nif_version)).' -s erlang halt) +Provides: erlang(erl_nif_version) = 2.17 +Provides: bundled(pcre) = 8.44 +# git commit 965d19506ff2aed72e039b8c650b6ef5e9446b8c +Provides: bundled(asmjit) +Obsoletes: erlang-appmon +Obsoletes: erlang-docbuilder +Obsoletes: erlang-gs +Obsoletes: erlang-hipe +Obsoletes: erlang-inviso +Obsoletes: erlang-ose +Obsoletes: erlang-otp_mibs +# Moved to https://github.com/erlang/percept +Obsoletes: erlang-percept < 20.2.3 +Obsoletes: erlang-pman +Obsoletes: erlang-toolbar +Obsoletes: erlang-tv +Obsoletes: erlang-webtool + +%description erts +Functionality necessary to run the Erlang System itself. + +%if %{__with_wxwidgets} +%package et +Summary: An event tracer for Erlang programs +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-runtime_tools%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} +Requires: %{name}-wx%{?_isa} = %{version}-%{release} + +%description et +An event tracer for Erlang programs. +%endif # __with_wxwidgets + +%package eunit +Summary: Support for unit testing +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description eunit +Support for unit testing. + +%if %{__with_examples} +%package examples +Summary: Examples for some Erlang modules +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-public_key%{?_isa} = %{version}-%{release} +Requires: %{name}-sasl%{?_isa} = %{version}-%{release} +Requires: %{name}-ssl%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description examples +Examples for some Erlang modules. +%endif # __with_examples + +%package ftp +Summary: FTP client +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description ftp +FTP client. + +%package gdb-tools +Summary: GDB plugin +License: GPL-3.0-or-later +Requires: gdb + +%description gdb-tools +GDB plugin. + +%package inets +Summary: A set of services such as a Web server and a HTTP client etc +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-mnesia%{?_isa} = %{version}-%{release} +Requires: %{name}-runtime_tools%{?_isa} = %{version}-%{release} +Requires: %{name}-ssl%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description inets +A set of services such as a Web server and a HTTP client etc. + +%if %{__with_java} +%package jinterface +Summary: A library for accessing Java from Erlang +BuildRequires: java-devel +Requires: javapackages-tools +Requires: %{name}-erts%{?_isa} = %{version}-%{release} + +%description jinterface +Low level interface to Java. +%endif # __with_java + +%package kernel +Summary: Main erlang library +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description kernel +Main erlang library. + +%if %{__with_wxwidgets} +%package megaco +Summary: Megaco/H.248 support library +Requires: %{name}-asn1%{?_isa} = %{version}-%{release} +Requires: %{name}-debugger%{?_isa} = %{version}-%{release} +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-et%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-runtime_tools%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description megaco +Megaco/H.248 is a protocol for control of elements in a physically +decomposed multimedia gateway, enabling separation of call control +from media conversion. +%endif # __with_wxwidgets + +%package mnesia +Summary: A heavy duty real-time distributed database +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description mnesia +A heavy duty real-time distributed database. + +%if %{__with_wxwidgets} +%package observer +Summary: A set of tools for tracing and investigation of distributed systems +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-et%{?_isa} = %{version}-%{release} +Requires: %{name}-inets%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-runtime_tools%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} +Requires: %{name}-wx%{?_isa} = %{version}-%{release} + +%description observer +A set of tools for tracing and investigation of distributed systems. +%endif # __with_wxwidgets + +%package odbc +Summary: A library for unixODBC support in Erlang +BuildRequires: unixODBC-devel +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description odbc +An interface to relational SQL-databases built on ODBC (Open Database +Connectivity). + +%package os_mon +Summary: A monitor which allows inspection of the underlying operating system +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-mnesia%{?_isa} = %{version}-%{release} +Requires: %{name}-sasl%{?_isa} = %{version}-%{release} +Requires: %{name}-snmp%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description os_mon +A monitor which allows inspection of the underlying operating system. + +%package parsetools +Summary: A set of parsing and lexical analysis tools +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description parsetools +A set of parsing and lexical analysis tools. + +%package public_key +Summary: API to public key infrastructure +Requires: %{name}-asn1%{?_isa} = %{version}-%{release} +Requires: %{name}-crypto%{?_isa} = %{version}-%{release} +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description public_key +API to public key infrastructure. + +%if %{__with_wxwidgets} +%package reltool +Summary: A release management tool +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-sasl%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} +Requires: %{name}-tools%{?_isa} = %{version}-%{release} +Requires: %{name}-wx%{?_isa} = %{version}-%{release} + +%description reltool +Reltool is a release management tool. It analyses a given +Erlang/OTP installation and determines various dependencies +between applications. The graphical frontend depicts the +dependencies and enables interactive customization of a +target system. The backend provides a batch interface +for generation of customized target systems. +%endif # __with_wxwidgets + +%package runtime_tools +Summary: A set of tools to include in a production system +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-mnesia%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description runtime_tools +A set of tools to include in a production system. + +%package sasl +Summary: The System Architecture Support Libraries +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} +Requires: %{name}-tools%{?_isa} = %{version}-%{release} + +%description sasl +The System Architecture Support Libraries is a set of tools for +release upgrades and alarm handling etc. + +%package snmp +Summary: Simple Network Management Protocol (SNMP) support +Requires: %{name}-crypto%{?_isa} = %{version}-%{release} +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-mnesia%{?_isa} = %{version}-%{release} +Requires: %{name}-runtime_tools%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description snmp +Simple Network Management Protocol (SNMP) support including a +MIB compiler and tools for creating SNMP agents. + +%if %{__with_sources} +%package src +Summary: Erlang sources +Requires: %{name}-asn1%{?_isa} = %{version}-%{release} +Requires: %{name}-common_test%{?_isa} = %{version}-%{release} +Requires: %{name}-compiler%{?_isa} = %{version}-%{release} +Requires: %{name}-crypto%{?_isa} = %{version}-%{release} +Requires: %{name}-debugger%{?_isa} = %{version}-%{release} +Requires: %{name}-dialyzer%{?_isa} = %{version}-%{release} +Requires: %{name}-diameter%{?_isa} = %{version}-%{release} +Requires: %{name}-edoc%{?_isa} = %{version}-%{release} +Requires: %{name}-eldap%{?_isa} = %{version}-%{release} +Requires: %{name}-erl_docgen%{?_isa} = %{version}-%{release} +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-et%{?_isa} = %{version}-%{release} +Requires: %{name}-eunit%{?_isa} = %{version}-%{release} +Requires: %{name}-ftp%{?_isa} = %{version}-%{release} +Requires: %{name}-inets%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-megaco%{?_isa} = %{version}-%{release} +Requires: %{name}-mnesia%{?_isa} = %{version}-%{release} +Requires: %{name}-observer%{?_isa} = %{version}-%{release} +Requires: %{name}-odbc%{?_isa} = %{version}-%{release} +Requires: %{name}-os_mon%{?_isa} = %{version}-%{release} +Requires: %{name}-parsetools%{?_isa} = %{version}-%{release} +Requires: %{name}-public_key%{?_isa} = %{version}-%{release} +Requires: %{name}-reltool%{?_isa} = %{version}-%{release} +Requires: %{name}-runtime_tools%{?_isa} = %{version}-%{release} +Requires: %{name}-sasl%{?_isa} = %{version}-%{release} +Requires: %{name}-snmp%{?_isa} = %{version}-%{release} +Requires: %{name}-ssh%{?_isa} = %{version}-%{release} +Requires: %{name}-ssl%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} +Requires: %{name}-syntax_tools%{?_isa} = %{version}-%{release} +Requires: %{name}-tftp%{?_isa} = %{version}-%{release} +Requires: %{name}-tools%{?_isa} = %{version}-%{release} +Requires: %{name}-wx%{?_isa} = %{version}-%{release} +Requires: %{name}-xmerl%{?_isa} = %{version}-%{release} + +%description src +Erlang sources. It may be useful as a reference for code completion tools in +various editors, for documentation or automatical-code generation purposes. +%endif # __with_sources + +%package ssh +Summary: Secure Shell application with sftp and ssh support +Requires: %{name}-crypto%{?_isa} = %{version}-%{release} +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-public_key%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description ssh +Secure Shell application with sftp and ssh support. + +%package ssl +Summary: Secure Socket Layer support +Requires: %{name}-crypto%{?_isa} = %{version}-%{release} +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-inets%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-public_key%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description ssl +Secure Socket Layer support. + +%package stdlib +Summary: The Erlang standard libraries +Requires: %{name}-compiler%{?_isa} = %{version}-%{release} +Requires: %{name}-crypto%{?_isa} = %{version}-%{release} +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} + +%description stdlib +The Erlang standard libraries. + +%package syntax_tools +Summary: A set of tools for dealing with erlang sources +Requires: %{name}-compiler%{?_isa} = %{version}-%{release} +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description syntax_tools +A utility used to handle abstract Erlang syntax trees, +reading source files differently, pretty-printing syntax trees. + +%package tftp +Summary: TFTP client +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description tftp +TFTP client. + +%package tools +Summary: A set of programming tools including a coverage analyzer etc +%if %{__with_emacs} +BuildRequires: emacs +BuildRequires: emacs-el +%endif # __with_emacs +Requires: %{name}-compiler%{?_isa} = %{version}-%{release} +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-inets%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-runtime_tools%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} +%if %{__with_emacs} +Requires: emacs-filesystem +Obsoletes: emacs-erlang +Obsoletes: emacs-erlang-el +%endif # __with_emacs + + +%description tools +A set of programming tools including a coverage analyzer etc. + +%if %{__with_wxwidgets} +%package wx +Summary: A library for wxWidgets support in Erlang +BuildRequires: wxGTK-devel +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} +Requires: mesa-libGL +Requires: mesa-libGLU + +%description wx +A Graphics System used to write platform independent user interfaces. +%endif # __with_wxwidgets + +%package xmerl +Summary: Provides support for XML 1.0 +Requires: %{name}-erts%{?_isa} = %{version}-%{release} +Requires: %{name}-kernel%{?_isa} = %{version}-%{release} +Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + +%description xmerl +Provides support for XML 1.0. + +### END OF AUTOGENERATED LIST ### %prep -%setup -q -n otp_src_%{ver}-%{rel} -%patch1 -p1 -b .links -%patch2 -p1 -b .fix_epmd_symlink -%patch3 -p1 -b .manpages -%patch4 -p1 -b .rpath_removal -%patch5 -p1 -b .missing_ssl_libraries -%patch6 -p1 -b .so_lib_install_fix -%patch7 -p1 -b .pcre_buffer_overflow +%autosetup -p1 -n otp-OTP-%{version} +# FIXME we should come up with a better solution +# remove shipped zlib sources +#rm -f erts/emulator/zlib/*.[ch] -# enable dynamic linking for ssl -sed -i 's|SSL_DYNAMIC_ONLY=no|SSL_DYNAMIC_ONLY=yes|' erts/configure -sed -i 's|^LD.*=.*|LD = gcc -shared|' lib/common_test/c_src/Makefile -# fix for newer glibc version -sed -i 's|__GLIBC_MINOR__ <= 7|__GLIBC_MINOR__ <= 8|' erts/emulator/hipe/hipe_x86_signal.c -# use gcc -shared instead of ld -sed -i 's|@RX_LD@|gcc -shared|' lib/common_test/c_src/Makefile.in -sed -i 's|@RX_LDFLAGS@||' lib/common_test/c_src/Makefile.in +# Create a sysusers.d config file +cat >erlang.sysusers.conf < emacs-erlang-init.el << EOF +(setq load-path (cons "%{_emacs_sitelispdir}/erlang" load-path)) +(setq erlang-root-dir "%{_libdir}/erlang") +(setq exec-path (cons "%{_libdir}/erlang/bin" exec-path)) +(require 'erlang-start) +EOF +mkdir emacs-erlang +cp lib/tools/emacs/*.el emacs-erlang/ +pushd emacs-erlang +%{_emacs_bytecompile} *.el +popd +%endif # __with_emacs + +%make_build + +%if %{with doc} +# should use FOP_OPTS after #832323 is resolved +%ifnarch ppc %{power64} +export BASE_OPTIONS=-Xmx1024m +%else +export BASE_OPTIONS=-Xmx1536m +%endif +make docs %endif -chmod -R u+w . -make %install -rm -rf $RPM_BUILD_ROOT -make INSTALL_PREFIX=$RPM_BUILD_ROOT install +%if %{__with_emacs} +# GNU Emacs/XEmacs related stuff +erlang_tools_vsn="$(sed -n 's/TOOLS_VSN = //p' lib/tools/vsn.mk)" -# clean up -find $RPM_BUILD_ROOT%{_libdir}/erlang -perm 0775 | xargs chmod 755 -find $RPM_BUILD_ROOT%{_libdir}/erlang -name Makefile | xargs chmod 644 -find $RPM_BUILD_ROOT%{_libdir}/erlang -name \*.o | xargs chmod 644 -find $RPM_BUILD_ROOT%{_libdir}/erlang -name \*.bat | xargs rm -f -find $RPM_BUILD_ROOT%{_libdir}/erlang -name index.txt.old | xargs rm -f +# GNU Emacs related stuff +install -m 0755 -d "$RPM_BUILD_ROOT%{_emacs_sitestartdir}" +install -m 0755 -d "$RPM_BUILD_ROOT%{_emacs_sitelispdir}/erlang" +install -m 0644 emacs-erlang-init.el "$RPM_BUILD_ROOT%{_emacs_sitestartdir}/erlang-init.el" +for f in lib/tools/emacs/{README,*.el}; do + b="$(basename "$f")"; + ln -s "%{_libdir}/erlang/lib/tools-${erlang_tools_vsn}/emacs/$b" \ + "$RPM_BUILD_ROOT%{_emacs_sitelispdir}/erlang/" +done +install -m 0644 emacs-erlang/*.elc "$RPM_BUILD_ROOT%{_emacs_sitelispdir}/erlang/" +%endif # __with_emacs -# doc -mkdir -p erlang_doc -tar -C erlang_doc -zxf %{SOURCE1} -tar -C $RPM_BUILD_ROOT/%{_libdir}/erlang -zxf %{SOURCE2} +make DESTDIR=$RPM_BUILD_ROOT install -# make links to binaries -mkdir -p $RPM_BUILD_ROOT/%{_bindir} -cd $RPM_BUILD_ROOT/%{_bindir} -for file in erl erlc escript dialyzer +%if %{with doc} +env ERL_LIBS="$RPM_BUILD_ROOT%{_libdir}/erlang/lib" make DESTDIR=$RPM_BUILD_ROOT install-docs +%endif + +# Do not install info files - they are almost empty and useless +find $RPM_BUILD_ROOT%{_libdir}/erlang -type f -name info -exec rm -f {} \; + +%if %{__with_examples} +# fix 0775 permission on some directories +find $RPM_BUILD_ROOT%{_libdir}/erlang/lib/ssl-*/examples/ -type d -perm 0775 -print -exec chmod 755 {} \; +find $RPM_BUILD_ROOT%{_libdir}/erlang/lib/kernel-*/examples/uds_dist -type d -perm 0775 -print -exec chmod 755 {} \; +%else +# Remove all examples +find $RPM_BUILD_ROOT%{_libdir}/erlang/lib/ -mindepth 1 -maxdepth 2 -type d -name examples -exec rm -rf {} \; +%endif # __with_examples + +chmod 0755 $RPM_BUILD_ROOT%{_libdir}/erlang/bin + +# Relocate doc-files into the proper directory +%if %{with doc} +mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/lib +pushd . +cd $RPM_BUILD_ROOT%{_libdir}/erlang +mv -v doc $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} +for i in erts-* ; do mv -v $i/doc $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/$i ; done +cd $RPM_BUILD_ROOT%{_libdir}/erlang/lib +for i in * ; do + mv -v $i/doc $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/lib/$i || true + # symlink 'chunks' in the code path for EEP-48 compliance (rhbz#2068758) + mkdir $i/doc + ln -s %{_docdir}/%{name}-%{version}/lib/$i/chunks $i/doc/ +done +popd +cp -av AUTHORS LICENSE.txt README.md $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} +mv -v $RPM_BUILD_ROOT%{_libdir}/erlang/PR.template $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} +mv -v $RPM_BUILD_ROOT%{_libdir}/erlang/COPYRIGHT $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} +# We'll package it by marking it explicitly as doc - see below +rm -f $RPM_BUILD_ROOT%{_libdir}/erlang/README.md +%endif + +# Win32-specific man-pages +rm -f $RPM_BUILD_ROOT%{_libdir}/erlang/man/man1/erlsrv.* +rm -f $RPM_BUILD_ROOT%{_libdir}/erlang/man/man1/werl.* +rm -f $RPM_BUILD_ROOT%{_libdir}/erlang/man/man3/win32reg.* + +# remove empty directory +rm -r $RPM_BUILD_ROOT%{_libdir}/erlang/erts-*/man + +%if %{with doc} +# Move man-pages to a system-wide directory - in the same way as Debian did +# Erlang files from man 3 have too generic names +for manpage in $RPM_BUILD_ROOT%{_libdir}/erlang/man/man3/* do - ln -sf ../%{_lib}/erlang/bin/$file . + mv ${manpage} ${manpage}erl +done +mkdir -p $RPM_BUILD_ROOT%{_mandir}/ +mv $RPM_BUILD_ROOT%{_libdir}/erlang/man/* $RPM_BUILD_ROOT%{_mandir}/ +%endif + +# remove outdated script +rm -f $RPM_BUILD_ROOT%{_libdir}/erlang/Install + +# Replace identical executables with symlinks +for exe in $RPM_BUILD_ROOT%{_libdir}/erlang/erts-*/bin/* +do + base="$(basename "$exe")" + next="$RPM_BUILD_ROOT%{_libdir}/erlang/bin/${base}" + rel="$(echo "$exe" | sed "s,^$RPM_BUILD_ROOT%{_libdir}/erlang/,../,")" + if cmp "$exe" "$next"; then + ln -sf "$rel" "$next" + fi +done +for exe in $RPM_BUILD_ROOT%{_libdir}/erlang/bin/* +do + base="$(basename "$exe")" + next="$RPM_BUILD_ROOT%{_bindir}/${base}" + rel="$(echo "$exe" | sed "s,^$RPM_BUILD_ROOT,,")" + if cmp "$exe" "$next"; then + ln -sf "$rel" "$next" + fi done -# remove buildroot from installed files -cd $RPM_BUILD_ROOT/%{_libdir}/erlang -sed -i "s|$RPM_BUILD_ROOT||" erts*/bin/{erl,start} releases/RELEASES bin/{erl,start} +%if %{__with_java} +# symlink *.jar files to appropriate places for subpackages +install -m 0755 -d "$RPM_BUILD_ROOT%{_javadir}/%{name}" + +# erlang-jinterface +jinterface_lib_dir="$(ls -d1 $RPM_BUILD_ROOT%{_libdir}/erlang/lib/jinterface-*/ | sed "s,^$RPM_BUILD_ROOT,,")" +test -d "$RPM_BUILD_ROOT$jinterface_lib_dir" +ln -s "${jinterface_lib_dir}priv/OtpErlang.jar" "$RPM_BUILD_ROOT%{_javadir}/%{name}/" +%endif # __with_java + +# systemd-related stuff +install -D -p -m 0644 %{SOURCE5} %{buildroot}%{_unitdir}/epmd.service +install -D -p -m 0644 %{SOURCE6} %{buildroot}%{_unitdir}/epmd.socket +install -D -p -m 0644 %{SOURCE7} %{buildroot}%{_unitdir}/epmd@.service +install -D -p -m 0644 %{SOURCE8} %{buildroot}%{_unitdir}/epmd@.socket + + +%if %{__with_wxwidgets} +echo "No need to fix additional scripts" +# Fix file conflict w/ python3-typer-cli by renaming our typer to erlang-typer. +# We only rename the symlink in %%{_bindir}, not its direct and indirect +# targets in subdirectories of %%{_libdir}. +# +# File conflicts: /usr/bin/typer between erlang-dialyzer and python3-typer-cli +# https://bugzilla.redhat.com/show_bug.cgi?id=2359567 +mv %{buildroot}%{_bindir}/typer %{buildroot}%{_bindir}/erlang-typer +%if %{with doc} +mv %{buildroot}%{_mandir}/man1/typer.1 \ + %{buildroot}%{_mandir}/man1/erlang-typer.1 +sed -r -i 's/^(\.TH[[:blank:]]+)?(typer)\b/\1erlang-\2/' \ + %{buildroot}%{_mandir}/man1/erlang-typer.1 +%endif +%else +# FIXME workaround for broken Erlang install procedure +echo "Removing scripts which won't work w/o wxWidgets anyway" +for exe in ct_run dialyzer typer +do + rm -f $RPM_BUILD_ROOT/%{_bindir}/${exe} + rm -f $RPM_BUILD_ROOT/%{_libdir}/erlang/bin/${exe} + rm -f $RPM_BUILD_ROOT/%{_libdir}/erlang/erts-*/bin/${exe} +done +%endif # __with_wxwidgets + +# Provide a place for noarch libs to live. +install -d -p -m 0755 %{buildroot}%{_datadir}/erlang/ +install -d -p -m 0755 %{buildroot}%{_datadir}/erlang/lib + +install -m0644 -D erlang.sysusers.conf %{buildroot}%{_sysusersdir}/erlang.conf + +# GDB tools +install -D -p -m 0755 ./bin/*/jit-reader.so %{buildroot}%{_libdir}/gdb/jit-reader.so + +%check +TARGET="$(make target_configured)" +ERL_TOP="$(pwd)" +ERL_TOP=${ERL_TOP} make TARGET=${TARGET} release_tests +# Unfortunately running the tests will take several hours. So we build the +# package w/o tests for now. See this: +# https://github.com/erlang/otp/wiki/Running-tests -%clean -rm -rf $RPM_BUILD_ROOT %files -%defattr(-,root,root) -%doc AUTHORS EPLICENCE README -%{_bindir}/* -%{_libdir}/erlang +%if %{with doc} +%dir %{_docdir}/%{name}-%{version}/ +%doc %{_docdir}/%{name}-%{version}/AUTHORS +%doc %{_docdir}/%{name}-%{version}/COPYRIGHT +%doc %{_docdir}/%{name}-%{version}/LICENSE.txt +%doc %{_docdir}/%{name}-%{version}/PR.template +%doc %{_docdir}/%{name}-%{version}/README.md +%endif +%files asn1 +%dir %{_libdir}/erlang/lib/asn1-*/ +%{_libdir}/erlang/lib/asn1-*/ebin +%{_libdir}/erlang/lib/asn1-*/priv +%{_libdir}/erlang/lib/asn1-*/src +%if %{with doc} +%{_mandir}/man3/asn1ct.* +%endif +%if %{__with_wxwidgets} +%files common_test +%{_bindir}/ct_run +%{_libdir}/erlang/bin/ct_run +%{_libdir}/erlang/erts-*/bin/ct_run +%{_libdir}/erlang/lib/common_test-*/ +%if %{with doc} +%{_mandir}/man1/ct_run.* +%{_mandir}/man3/ct.* +%{_mandir}/man3/ct_cover.* +%{_mandir}/man3/ct_ftp.* +%{_mandir}/man3/ct_hooks.* +%{_mandir}/man3/ct_master.* +%{_mandir}/man3/ct_netconfc.* +%{_mandir}/man3/ct_property_test.* +%{_mandir}/man3/ct_rpc.* +%{_mandir}/man3/ct_slave.* +%{_mandir}/man3/ct_snmp.* +%{_mandir}/man3/ct_ssh.* +%{_mandir}/man3/ct_suite.* +%{_mandir}/man3/ct_telnet.* +%{_mandir}/man3/ct_testspec.* +%{_mandir}/man3/unix_telnet.* +%{_mandir}/man6/common_test.* +%endif +%endif # __with_wxwidgets + +%files compiler +%{_libdir}/erlang/lib/compiler-*/ +%if %{with doc} +%{_mandir}/man3/cerl.* +%{_mandir}/man3/cerl_clauses.* +%{_mandir}/man3/cerl_trees.* +%{_mandir}/man3/compile.* +%endif + +%files crypto +%{_libdir}/erlang/lib/crypto-*/ +%if %{with doc} +%{_mandir}/man3/crypto.* +%{_mandir}/man6/crypto.* +%endif + +%if %{__with_wxwidgets} +%files debugger +%{_libdir}/erlang/lib/debugger-*/ +%if %{with doc} +%{_mandir}/man3/debugger.* +%{_mandir}/man3/i.* +%{_mandir}/man3/int.* +%endif +%endif # __with_wxwidgets + +%if %{__with_wxwidgets} +%files dialyzer +%{_bindir}/dialyzer +# FIXME FIXME FIXME this must be installed properly!!!!!! +%{_bindir}/erlang-typer +%{_libdir}/erlang/bin/dialyzer +%{_libdir}/erlang/bin/typer +%{_libdir}/erlang/erts-*/bin/dialyzer +%{_libdir}/erlang/erts-*/bin/typer +%{_libdir}/erlang/lib/dialyzer-*/ +%if %{with doc} +%{_mandir}/man1/erlang-typer.* +%{_mandir}/man3/dialyzer.* +%endif +%endif # __with_wxwidgets + +%files diameter +%dir %{_libdir}/erlang/lib/diameter-*/ +%{_libdir}/erlang/lib/diameter-*/bin +%{_libdir}/erlang/lib/diameter-*/ebin +%{_libdir}/erlang/lib/diameter-*/include +%{_libdir}/erlang/lib/diameter-*/src +%if %{with doc} +%{_mandir}/man1/diameterc.* +%{_mandir}/man3/diameter.* +%{_mandir}/man3/diameter_app.* +%{_mandir}/man3/diameter_codec.* +%{_mandir}/man3/diameter_make.* +%{_mandir}/man3/diameter_sctp.* +%{_mandir}/man3/diameter_tcp.* +%{_mandir}/man3/diameter_transport.* +%{_mandir}/man4/diameter_dict.* +%endif + +%if %{with doc} %files doc -%defattr(-,root,root) -%doc erlang_doc/* +%{_libdir}/erlang/lib/*/doc +%doc %{_docdir}/%{name}-%{version}/doc +%doc %{_docdir}/%{name}-%{version}/erts-*/ +%doc %{_docdir}/%{name}-%{version}/lib/ +%endif +%files edoc +%{_libdir}/erlang/lib/edoc-*/ +%if %{with doc} +%{_mandir}/man1/edoc.* +%{_mandir}/man3/edoc.* +%{_mandir}/man3/edoc_doclet.* +%{_mandir}/man3/edoc_doclet_chunks.* +%{_mandir}/man3/edoc_extract.* +%{_mandir}/man3/edoc_layout.* +%{_mandir}/man3/edoc_layout_chunks.* +%{_mandir}/man3/edoc_lib.* +%{_mandir}/man3/edoc_run.* +%endif -%post -%{_libdir}/erlang/Install -minimal %{_libdir}/erlang >/dev/null 2>/dev/null +%files eldap +%{_libdir}/erlang/lib/eldap-*/ +%if %{with doc} +%{_mandir}/man3/eldap.* +%endif + +%files erl_docgen +%{_libdir}/erlang/lib/erl_docgen-*/ +%if %{with doc} +%{_mandir}/man6/erl_docgen.* +%endif + +%files erl_interface +%{_libdir}/erlang/bin/erl_call +%{_libdir}/erlang/erts-*/bin/erl_call +%{_libdir}/erlang/lib/erl_interface-*/ +%if %{with doc} +%{_mandir}/man1/erl_call.* +%{_mandir}/man3/ei.* +%{_mandir}/man3/ei_connect.* +%{_mandir}/man3/ei_global.* +#%%{_mandir}/man3/erl_connect.* +#%%{_mandir}/man3/erl_error.* +#%%{_mandir}/man3/erl_eterm.* +#%%{_mandir}/man3/erl_format.* +#%%{_mandir}/man3/erl_global.* +#%%{_mandir}/man3/erl_malloc.* +#%%{_mandir}/man3/erl_marshal.* +%endif + +%files erts +# TODO +# In order to have a parallel-installable Erlang packages these directories +# should be packaged separately +%dir %{_datadir}/erlang/ +%dir %{_datadir}/erlang/lib/ +%dir %{_libdir}/erlang/ +%dir %{_libdir}/erlang/bin/ +%dir %{_libdir}/erlang/lib/ +%dir %{_libdir}/erlang/releases/ + +%{_bindir}/epmd +%{_bindir}/erl +%{_bindir}/erlc +%{_bindir}/escript +%{_bindir}/run_erl +%{_bindir}/to_erl +%{_libdir}/erlang/bin/epmd +%{_libdir}/erlang/bin/erl +%{_libdir}/erlang/bin/erlc +%{_libdir}/erlang/bin/escript +%{_libdir}/erlang/bin/no_dot_erlang.boot +%{_libdir}/erlang/bin/run_erl +%{_libdir}/erlang/bin/start +%{_libdir}/erlang/bin/start.boot +%{_libdir}/erlang/bin/start.script +%{_libdir}/erlang/bin/start_clean.boot +%{_libdir}/erlang/bin/start_erl +%{_libdir}/erlang/bin/start_sasl.boot +%{_libdir}/erlang/bin/to_erl +%dir %{_libdir}/erlang/erts-*/ +%dir %{_libdir}/erlang/erts-*/bin/ +%{_libdir}/erlang/erts-*/bin/beam.smp +%{_libdir}/erlang/erts-*/bin/dyn_erl +%{_libdir}/erlang/erts-*/bin/epmd +%{_libdir}/erlang/erts-*/bin/erl +%{_libdir}/erlang/erts-*/bin/erl.src +%{_libdir}/erlang/erts-*/bin/erl_child_setup +%{_libdir}/erlang/erts-*/bin/erlc +%{_libdir}/erlang/erts-*/bin/erlexec +%{_libdir}/erlang/erts-*/bin/escript +%{_libdir}/erlang/erts-*/bin/heart +%{_libdir}/erlang/erts-*/bin/inet_gethost +%{_libdir}/erlang/erts-*/bin/run_erl +%{_libdir}/erlang/erts-*/bin/start +%{_libdir}/erlang/erts-*/bin/start.src +%{_libdir}/erlang/erts-*/bin/start_erl.src +%{_libdir}/erlang/erts-*/bin/to_erl +%{_libdir}/erlang/erts-*/bin/yielding_c_fun +%{_libdir}/erlang/erts-*/include +%{_libdir}/erlang/erts-*/lib/ +%{_libdir}/erlang/erts-*/src/ +%{_libdir}/erlang/lib/erts-*/ +%if %{with doc} +%{_mandir}/man1/epmd.* +%{_mandir}/man1/erl.* +%{_mandir}/man1/erlc.* +%{_mandir}/man1/escript.* +%{_mandir}/man1/run_erl.* +%{_mandir}/man1/start.* +%{_mandir}/man1/start_erl.* +%{_mandir}/man3/atomics.* +%{_mandir}/man3/counters.* +%{_mandir}/man3/driver_entry.* +%{_mandir}/man3/erl_driver.* +%{_mandir}/man3/erl_nif.* +%{_mandir}/man3/erl_prim_loader.* +%{_mandir}/man3/erl_tracer.* +%{_mandir}/man3/erlang.* +%{_mandir}/man3/erts_alloc.* +%{_mandir}/man3/init.* +%{_mandir}/man3/net.* +%{_mandir}/man3/persistent_term.* +%{_mandir}/man3/scheduler.* +%{_mandir}/man3/socket.* +%{_mandir}/man3/zlib.* +%endif +%{_libdir}/erlang/releases/* +%{_libdir}/erlang/usr/ +%{_unitdir}/epmd.service +%{_unitdir}/epmd.socket +%{_unitdir}/epmd@.service +%{_unitdir}/epmd@.socket +%{_sysusersdir}/erlang.conf + +%if %{__with_wxwidgets} +%files et +%dir %{_libdir}/erlang/lib/et-*/ +%{_libdir}/erlang/lib/et-*/ebin +%{_libdir}/erlang/lib/et-*/include +%{_libdir}/erlang/lib/et-*/src +%if %{with doc} +%{_mandir}/man3/et.* +%{_mandir}/man3/et_collector.* +%{_mandir}/man3/et_selector.* +%{_mandir}/man3/et_viewer.* +%endif +%endif # __with_wxwidgets + +%files eunit +%dir %{_libdir}/erlang/lib/eunit-*/ +%{_libdir}/erlang/lib/eunit-*/ebin +%{_libdir}/erlang/lib/eunit-*/include +%{_libdir}/erlang/lib/eunit-*/src +%if %{with doc} +%{_mandir}/man3/eunit.* +%{_mandir}/man3/eunit_surefire.* +%endif + +%if %{__with_examples} +%files examples +%{_libdir}/erlang/lib/asn1-*/examples/ +%{_libdir}/erlang/lib/diameter-*/examples/ +%if %{__with_wxwidgets} +%{_libdir}/erlang/lib/et-*/examples/ +%endif # __with_wxwidgets +%{_libdir}/erlang/lib/eunit-*/examples/ +%{_libdir}/erlang/lib/inets-*/examples/ +%{_libdir}/erlang/lib/kernel-*/examples/ +%if %{__with_wxwidgets} +%{_libdir}/erlang/lib/megaco-*/examples/ +%endif # __with_wxwidgets +%{_libdir}/erlang/lib/mnesia-*/examples/ +%if %{__with_wxwidgets} +%{_libdir}/erlang/lib/observer-*/examples/ +%endif # __with_wxwidgets +%if %{__with_wxwidgets} +%{_libdir}/erlang/lib/reltool-*/examples/ +%endif # __with_wxwidgets +%{_libdir}/erlang/lib/runtime_tools-*/examples/ +%{_libdir}/erlang/lib/sasl-*/examples/ +%{_libdir}/erlang/lib/snmp-*/examples/ +%{_libdir}/erlang/lib/ssl-*/examples/ +%{_libdir}/erlang/lib/stdlib-*/examples/ +%{_libdir}/erlang/lib/syntax_tools-*/examples/ +%{_libdir}/erlang/lib/tools-*/examples/ +%if %{__with_wxwidgets} +%{_libdir}/erlang/lib/wx-*/examples/ +%endif # __with_wxwidgets +%endif # __with_examples + +%files ftp +%dir %{_libdir}/erlang/lib/ftp-*/ +%{_libdir}/erlang/lib/ftp-*/ebin +%{_libdir}/erlang/lib/ftp-*/src +%if %{with doc} +%{_mandir}/man3/ftp.* +%endif + +%files gdb-tools +%{_libdir}/gdb/jit-reader.so + +%files inets +%dir %{_libdir}/erlang/lib/inets-*/ +%{_libdir}/erlang/lib/inets-*/ebin +%{_libdir}/erlang/lib/inets-*/include +%{_libdir}/erlang/lib/inets-*/priv +%{_libdir}/erlang/lib/inets-*/src +%if %{with doc} +%{_mandir}/man3/ftp.* +%{_mandir}/man3/http_uri.* +%{_mandir}/man3/httpc.* +%{_mandir}/man3/httpd.* +%{_mandir}/man3/httpd_custom_api.* +%{_mandir}/man3/httpd_socket.* +%{_mandir}/man3/httpd_util.* +%{_mandir}/man3/inets.* +%{_mandir}/man3/mod_alias.* +%{_mandir}/man3/mod_auth.* +%{_mandir}/man3/mod_esi.* +%{_mandir}/man3/mod_security.* +%{_mandir}/man3/tftp.* +%endif + +%if %{__with_java} +%files jinterface +%dir %{_javadir}/%{name}/ +%{_javadir}/%{name}/OtpErlang.jar +%{_libdir}/erlang/lib/jinterface-*/ +%if %{with doc} +%{_mandir}/man3/jinterface.* +%endif +%endif # __with_java + +%files kernel +%dir %{_libdir}/erlang/lib/kernel-*/ +%{_libdir}/erlang/lib/kernel-*/ebin +%{_libdir}/erlang/lib/kernel-*/include +%{_libdir}/erlang/lib/kernel-*/src +%if %{with doc} +%{_mandir}/man3/application.* +%{_mandir}/man3/auth.* +%{_mandir}/man3/code.* +%{_mandir}/man3/disk_log.* +%{_mandir}/man3/erl_boot_server.* +%{_mandir}/man3/erl_ddll.* +%{_mandir}/man3/erl_epmd.* +%{_mandir}/man3/erl_prim_loader_stub.* +%{_mandir}/man3/erlang_stub.* +%{_mandir}/man3/erpc.* +%{_mandir}/man3/error_handler.* +%{_mandir}/man3/error_logger.* +%{_mandir}/man3/file.* +%{_mandir}/man3/gen_sctp.* +%{_mandir}/man3/gen_tcp.* +%{_mandir}/man3/gen_udp.* +%{_mandir}/man3/global.* +%{_mandir}/man3/global_group.* +%{_mandir}/man3/heart.* +%{_mandir}/man3/inet.* +%{_mandir}/man3/inet_res.* +%{_mandir}/man3/init_stub.* +%{_mandir}/man3/logger.* +%{_mandir}/man3/logger_disk_log_h.* +%{_mandir}/man3/logger_filters.* +%{_mandir}/man3/logger_formatter.* +%{_mandir}/man3/logger_std_h.* +%{_mandir}/man3/net_adm.* +%{_mandir}/man3/net_kernel.* +%{_mandir}/man3/os.* +%{_mandir}/man3/pg.* +%{_mandir}/man3/rpc.* +%{_mandir}/man3/seq_trace.* +%{_mandir}/man3/wrap_log_reader.* +%{_mandir}/man3/zlib_stub.* +%{_mandir}/man4/app.* +%{_mandir}/man4/config.* +%{_mandir}/man6/kernel.* +%endif + +%if %{__with_wxwidgets} +%files megaco +%dir %{_libdir}/erlang/lib/megaco-*/ +%{_libdir}/erlang/lib/megaco-*/ebin +%{_libdir}/erlang/lib/megaco-*/include +%{_libdir}/erlang/lib/megaco-*/priv +%{_libdir}/erlang/lib/megaco-*/src +%if %{with doc} +%{_mandir}/man3/megaco.* +%{_mandir}/man3/megaco_codec_meas.* +%{_mandir}/man3/megaco_codec_mstone1.* +%{_mandir}/man3/megaco_codec_mstone2.* +%{_mandir}/man3/megaco_codec_transform.* +%{_mandir}/man3/megaco_edist_compress.* +%{_mandir}/man3/megaco_encoder.* +%{_mandir}/man3/megaco_flex_scanner.* +%{_mandir}/man3/megaco_tcp.* +%{_mandir}/man3/megaco_transport.* +%{_mandir}/man3/megaco_udp.* +%{_mandir}/man3/megaco_user.* +%endif +%endif # __with_wxwidgets + +%files mnesia +%dir %{_libdir}/erlang/lib/mnesia-*/ +%{_libdir}/erlang/lib/mnesia-*/ebin +%{_libdir}/erlang/lib/mnesia-*/src +%if %{with doc} +%{_mandir}/man3/mnesia.* +%{_mandir}/man3/mnesia_frag_hash.* +%{_mandir}/man3/mnesia_registry.* +%endif + +%if %{__with_wxwidgets} +%files observer +%dir %{_libdir}/erlang/lib/observer-*/ +%{_libdir}/erlang/lib/observer-*/ebin/ +%{_libdir}/erlang/lib/observer-*/include/ +%{_libdir}/erlang/lib/observer-*/priv/ +%{_libdir}/erlang/lib/observer-*/src/ +%if %{with doc} +%{_mandir}/man1/cdv.* +%{_mandir}/man3/crashdump.* +%{_mandir}/man3/etop.* +%{_mandir}/man3/observer.* +%{_mandir}/man3/ttb.* +%{_mandir}/man6/observer.* +%endif +%endif # __with_wxwidgets + +%files odbc +%{_libdir}/erlang/lib/odbc-*/ +%if %{with doc} +%{_mandir}/man3/odbc.* +%endif + +%files os_mon +%{_libdir}/erlang/lib/os_mon-*/ +%if %{with doc} +%{_mandir}/man3/cpu_sup.* +%{_mandir}/man3/disksup.* +%{_mandir}/man3/memsup.* +%{_mandir}/man3/os_sup.* +%{_mandir}/man6/os_mon.* +%endif + +%files parsetools +%{_libdir}/erlang/lib/parsetools-*/ +%if %{with doc} +%{_mandir}/man3/leex.* +%{_mandir}/man3/yecc.* +%endif + +%files public_key +%{_libdir}/erlang/lib/public_key-*/ +%if %{with doc} +%{_mandir}/man3/public_key.* +%{_mandir}/man6/public_key.* +%endif + +%if %{__with_wxwidgets} +%files reltool +%dir %{_libdir}/erlang/lib/reltool-*/ +%{_libdir}/erlang/lib/reltool-*/ebin +%{_libdir}/erlang/lib/reltool-*/src +%if %{with doc} +%{_mandir}/man3/reltool.* +%endif +%endif # __with_wxwidgets + +%files runtime_tools +%dir %{_libdir}/erlang/lib/runtime_tools-*/ +%{_libdir}/erlang/lib/runtime_tools-*/ebin/ +%{_libdir}/erlang/lib/runtime_tools-*/include/ +%{_libdir}/erlang/lib/runtime_tools-*/priv/ +%if %{with doc} +%{_mandir}/man3/dbg.* +%{_mandir}/man3/dyntrace.* +%{_mandir}/man3/msacc.* +%{_mandir}/man3/system_information.* +%{_mandir}/man6/runtime_tools.* +%endif + +%files sasl +%dir %{_libdir}/erlang/lib/sasl-*/ +%{_libdir}/erlang/lib/sasl-*/ebin +%{_libdir}/erlang/lib/sasl-*/src +%if %{with doc} +%{_mandir}/man3/alarm_handler.* +%{_mandir}/man3/rb.* +%{_mandir}/man3/release_handler.* +%{_mandir}/man3/systools.* +%{_mandir}/man4/appup.* +%{_mandir}/man4/rel.* +%{_mandir}/man4/relup.* +%{_mandir}/man4/script.* +%{_mandir}/man6/sasl.* +%endif + +%files snmp +%dir %{_libdir}/erlang/lib/snmp-*/ +%{_libdir}/erlang/lib/snmp-*/bin +%{_libdir}/erlang/lib/snmp-*/ebin +%{_libdir}/erlang/lib/snmp-*/include +%{_libdir}/erlang/lib/snmp-*/mibs +%{_libdir}/erlang/lib/snmp-*/priv +%{_libdir}/erlang/lib/snmp-*/src +%if %{with doc} +%{_mandir}/man1/snmpc.* +%{_mandir}/man3/snmp.* +%{_mandir}/man3/snmpa.* +%{_mandir}/man3/snmpa_conf.* +%{_mandir}/man3/snmpa_discovery_handler.* +%{_mandir}/man3/snmpa_error.* +%{_mandir}/man3/snmpa_error_io.* +%{_mandir}/man3/snmpa_error_logger.* +%{_mandir}/man3/snmpa_error_report.* +%{_mandir}/man3/snmpa_local_db.* +%{_mandir}/man3/snmpa_mib_data.* +%{_mandir}/man3/snmpa_mib_storage.* +%{_mandir}/man3/snmpa_mpd.* +%{_mandir}/man3/snmpa_network_interface.* +%{_mandir}/man3/snmpa_network_interface_filter.* +%{_mandir}/man3/snmpa_notification_delivery_info_receiver.* +%{_mandir}/man3/snmpa_notification_filter.* +%{_mandir}/man3/snmpa_supervisor.* +%{_mandir}/man3/snmpc.* +%{_mandir}/man3/snmp_community_mib.* +%{_mandir}/man3/snmp_framework_mib.* +%{_mandir}/man3/snmp_generic.* +%{_mandir}/man3/snmp_index.* +%{_mandir}/man3/snmpm.* +%{_mandir}/man3/snmpm_conf.* +%{_mandir}/man3/snmpm_mpd.* +%{_mandir}/man3/snmpm_network_interface.* +%{_mandir}/man3/snmpm_network_interface_filter.* +%{_mandir}/man3/snmpm_user.* +%{_mandir}/man3/snmp_notification_mib.* +%{_mandir}/man3/snmp_pdus.* +%{_mandir}/man3/snmp_standard_mib.* +%{_mandir}/man3/snmp_target_mib.* +%{_mandir}/man3/snmp_user_based_sm_mib.* +%{_mandir}/man3/snmp_view_based_acm_mib.* +%{_mandir}/man6/snmp.* +%{_mandir}/man7/INET-ADDRESS-MIB.* +%{_mandir}/man7/OTP-SNMPEA-MIB.* +%{_mandir}/man7/RFC1213-MIB.* +%{_mandir}/man7/SNMP-COMMUNITY-MIB.* +%{_mandir}/man7/SNMP-FRAMEWORK-MIB.* +%{_mandir}/man7/SNMP-MPD-MIB.* +%{_mandir}/man7/SNMP-NOTIFICATION-MIB.* +%{_mandir}/man7/SNMP-TARGET-MIB.* +%{_mandir}/man7/SNMP-USER-BASED-SM-MIB.* +%{_mandir}/man7/SNMP-USM-AES-MIB.* +%{_mandir}/man7/SNMPv2-MIB.* +%{_mandir}/man7/SNMPv2-TM.* +%{_mandir}/man7/SNMP-VIEW-BASED-ACM-MIB.* +%{_mandir}/man7/STANDARD-MIB.* +%{_mandir}/man7/TRANSPORT-ADDRESS-MIB.* +%endif + +%if %{__with_sources} +%files src +%dir %{_libdir}/erlang/lib/*/src/ +%{_libdir}/erlang/lib/*/src/*.erl +%{_libdir}/erlang/lib/*/src/*.yrl +%endif + +%files ssh +%dir %{_libdir}/erlang/lib/ssh-*/ +%{_libdir}/erlang/lib/ssh-*/ebin +%{_libdir}/erlang/lib/ssh-*/include +%{_libdir}/erlang/lib/ssh-*/src +%if %{with doc} +%{_mandir}/man3/ssh.* +%{_mandir}/man3/ssh_agent.* +%{_mandir}/man3/ssh_client_channel.* +%{_mandir}/man3/ssh_client_key_api.* +%{_mandir}/man3/ssh_connection.* +%{_mandir}/man3/ssh_file.* +%{_mandir}/man3/ssh_server_channel.* +%{_mandir}/man3/ssh_server_key_api.* +%{_mandir}/man3/ssh_sftp.* +%{_mandir}/man3/ssh_sftpd.* +%{_mandir}/man6/SSH.* +%endif + +%files ssl +%dir %{_libdir}/erlang/lib/ssl-*/ +%{_libdir}/erlang/lib/ssl-*/ebin +%{_libdir}/erlang/lib/ssl-*/src +%if %{with doc} +%{_mandir}/man3/ssl.* +%{_mandir}/man3/ssl_crl_cache.* +%{_mandir}/man3/ssl_crl_cache_api.* +%{_mandir}/man3/ssl_session_cache_api.* +%{_mandir}/man6/ssl.* +%endif + +%files stdlib +%dir %{_libdir}/erlang/lib/stdlib-*/ +%{_libdir}/erlang/lib/stdlib-*/ebin +%{_libdir}/erlang/lib/stdlib-*/include +%{_libdir}/erlang/lib/stdlib-*/src +%if %{with doc} +%{_mandir}/man3/argparse.* +%{_mandir}/man3/array.* +%{_mandir}/man3/base64.* +%{_mandir}/man3/beam_lib.* +%{_mandir}/man3/binary.* +%{_mandir}/man3/c.* +%{_mandir}/man3/calendar.* +%{_mandir}/man3/dets.* +%{_mandir}/man3/dict.* +%{_mandir}/man3/digraph.* +%{_mandir}/man3/digraph_utils.* +%{_mandir}/man3/edlin.* +%{_mandir}/man3/edlin_expand.* +%{_mandir}/man3/epp.* +%{_mandir}/man3/erl_anno.* +%{_mandir}/man3/erl_error.* +%{_mandir}/man3/erl_eval.* +%{_mandir}/man3/erl_expand_records.* +%{_mandir}/man3/erl_features.* +%{_mandir}/man3/erl_id_trans.* +%{_mandir}/man3/erl_internal.* +%{_mandir}/man3/erl_lint.* +%{_mandir}/man3/erl_parse.* +%{_mandir}/man3/erl_pp.* +%{_mandir}/man3/erl_scan.* +%{_mandir}/man3/erl_tar.* +%{_mandir}/man3/ets.* +%{_mandir}/man3/file_sorter.* +%{_mandir}/man3/filelib.* +%{_mandir}/man3/filename.* +%{_mandir}/man3/gb_sets.* +%{_mandir}/man3/gb_trees.* +%{_mandir}/man3/gen_event.* +%{_mandir}/man3/gen_fsm.* +%{_mandir}/man3/gen_server.* +%{_mandir}/man3/gen_statem.* +%{_mandir}/man3/io.* +%{_mandir}/man3/io_lib.* +%{_mandir}/man3/lists.* +%{_mandir}/man3/log_mf_h.* +%{_mandir}/man3/maps.* +%{_mandir}/man3/math.* +%{_mandir}/man3/ms_transform.* +%{_mandir}/man3/orddict.* +%{_mandir}/man3/ordsets.* +%{_mandir}/man3/peer.* +%{_mandir}/man3/pool.* +%{_mandir}/man3/proc_lib.* +%{_mandir}/man3/proplists.* +%{_mandir}/man3/qlc.* +%{_mandir}/man3/queue.* +%{_mandir}/man3/rand.* +%{_mandir}/man3/random.* +%{_mandir}/man3/re.* +%{_mandir}/man3/sets.* +%{_mandir}/man3/shell.* +%{_mandir}/man3/shell_default.* +%{_mandir}/man3/shell_docs.* +%{_mandir}/man3/slave.* +%{_mandir}/man3/sofs.* +%{_mandir}/man3/string.* +%{_mandir}/man3/supervisor.* +%{_mandir}/man3/supervisor_bridge.* +%{_mandir}/man3/sys.* +%{_mandir}/man3/timer.* +%{_mandir}/man3/unicode.* +%{_mandir}/man3/uri_string.* +%{_mandir}/man3/zip.* +%{_mandir}/man6/stdlib.* +%endif + +%files syntax_tools +%dir %{_libdir}/erlang/lib/syntax_tools-*/ +%{_libdir}/erlang/lib/syntax_tools-*/ebin +%{_libdir}/erlang/lib/syntax_tools-*/include +%if %{with doc} +%{_mandir}/man3/epp_dodger.* +%{_mandir}/man3/erl_comment_scan.* +%{_mandir}/man3/erl_prettypr.* +%{_mandir}/man3/erl_recomment.* +%{_mandir}/man3/erl_syntax.* +%{_mandir}/man3/erl_syntax_lib.* +%{_mandir}/man3/merl.* +%{_mandir}/man3/merl_transform.* +%{_mandir}/man3/prettypr.* +%endif + +%files tftp +%dir %{_libdir}/erlang/lib/tftp-*/ +%{_libdir}/erlang/lib/tftp-*/ebin +%{_libdir}/erlang/lib/tftp-*/src +%if %{with doc} +%{_mandir}/man3/tftp.* +%endif + +%files tools +%dir %{_libdir}/erlang/lib/tools-*/ +%{_libdir}/erlang/lib/tools-*/ebin +%{_libdir}/erlang/lib/tools-*/emacs +%{_libdir}/erlang/lib/tools-*/src +%{_libdir}/erlang/lib/tools-*/priv +%if %{with doc} +%{_mandir}/man3/cover.* +%{_mandir}/man3/cprof.* +%{_mandir}/man3/eprof.* +%{_mandir}/man3/erlang_mode.* +%{_mandir}/man3/fprof.* +%{_mandir}/man3/instrument.* +%{_mandir}/man3/lcnt.* +%{_mandir}/man3/make.* +%{_mandir}/man3/tags.* +%{_mandir}/man3/xref.* +%endif +%if %{__with_emacs} +%dir %{_emacs_sitelispdir}/erlang +%doc %{_emacs_sitelispdir}/erlang/README +%{_emacs_sitelispdir}/erlang/*.el +%{_emacs_sitelispdir}/erlang/*.elc +%{_emacs_sitestartdir}/erlang-init.el +%endif # __with_emacs + +%if %{__with_wxwidgets} +%files wx +%dir %{_libdir}/erlang/lib/wx-*/ +%{_libdir}/erlang/lib/wx-*/ebin +%{_libdir}/erlang/lib/wx-*/include +%{_libdir}/erlang/lib/wx-*/priv +%{_libdir}/erlang/lib/wx-*/src +%if %{with doc} +%{_mandir}/man3/gl.* +%{_mandir}/man3/glu.* +%{_mandir}/man3/wx.* +%{_mandir}/man3/wxAcceleratorEntry.* +%{_mandir}/man3/wxAcceleratorTable.* +%{_mandir}/man3/wxActivateEvent.* +%{_mandir}/man3/wxArtProvider.* +%{_mandir}/man3/wxAuiDockArt.* +%{_mandir}/man3/wxAuiManager.* +%{_mandir}/man3/wxAuiManagerEvent.* +%{_mandir}/man3/wxAuiNotebook.* +%{_mandir}/man3/wxAuiNotebookEvent.* +%{_mandir}/man3/wxAuiPaneInfo.* +%{_mandir}/man3/wxAuiSimpleTabArt.* +%{_mandir}/man3/wxAuiTabArt.* +%{_mandir}/man3/wxBitmap.* +%{_mandir}/man3/wxBitmapButton.* +%{_mandir}/man3/wxBitmapDataObject.* +%{_mandir}/man3/wxBookCtrlBase.* +%{_mandir}/man3/wxBookCtrlEvent.* +%{_mandir}/man3/wxBoxSizer.* +%{_mandir}/man3/wxBrush.* +%{_mandir}/man3/wxBufferedDC.* +%{_mandir}/man3/wxBufferedPaintDC.* +%{_mandir}/man3/wxButton.* +%{_mandir}/man3/wxCalendarCtrl.* +%{_mandir}/man3/wxCalendarDateAttr.* +%{_mandir}/man3/wxCalendarEvent.* +%{_mandir}/man3/wxCaret.* +%{_mandir}/man3/wxCheckBox.* +%{_mandir}/man3/wxCheckListBox.* +%{_mandir}/man3/wxChildFocusEvent.* +%{_mandir}/man3/wxChoice.* +%{_mandir}/man3/wxChoicebook.* +%{_mandir}/man3/wxClientDC.* +%{_mandir}/man3/wxClipboard.* +%{_mandir}/man3/wxClipboardTextEvent.* +%{_mandir}/man3/wxCloseEvent.* +%{_mandir}/man3/wxColourData.* +%{_mandir}/man3/wxColourDialog.* +%{_mandir}/man3/wxColourPickerCtrl.* +%{_mandir}/man3/wxColourPickerEvent.* +%{_mandir}/man3/wxComboBox.* +%{_mandir}/man3/wxCommandEvent.* +%{_mandir}/man3/wxContextMenuEvent.* +%{_mandir}/man3/wxControl.* +%{_mandir}/man3/wxControlWithItems.* +%{_mandir}/man3/wxCursor.* +%{_mandir}/man3/wxDC.* +%{_mandir}/man3/wxDCOverlay.* +%{_mandir}/man3/wxDataObject.* +%{_mandir}/man3/wxDateEvent.* +%{_mandir}/man3/wxDatePickerCtrl.* +%{_mandir}/man3/wxDialog.* +%{_mandir}/man3/wxDirDialog.* +%{_mandir}/man3/wxDirPickerCtrl.* +%{_mandir}/man3/wxDisplay.* +%{_mandir}/man3/wxDisplayChangedEvent.* +%{_mandir}/man3/wxDropFilesEvent.* +%{_mandir}/man3/wxEraseEvent.* +%{_mandir}/man3/wxEvent.* +%{_mandir}/man3/wxEvtHandler.* +%{_mandir}/man3/wxFileDataObject.* +%{_mandir}/man3/wxFileDialog.* +%{_mandir}/man3/wxFileDirPickerEvent.* +%{_mandir}/man3/wxFilePickerCtrl.* +%{_mandir}/man3/wxFindReplaceData.* +%{_mandir}/man3/wxFindReplaceDialog.* +%{_mandir}/man3/wxFlexGridSizer.* +%{_mandir}/man3/wxFocusEvent.* +%{_mandir}/man3/wxFont.* +%{_mandir}/man3/wxFontData.* +%{_mandir}/man3/wxFontDialog.* +%{_mandir}/man3/wxFontPickerCtrl.* +%{_mandir}/man3/wxFontPickerEvent.* +%{_mandir}/man3/wxFrame.* +%{_mandir}/man3/wxGBSizerItem.* +%{_mandir}/man3/wxGCDC.* +%{_mandir}/man3/wxGLCanvas.* +%{_mandir}/man3/wxGLContext.* +%{_mandir}/man3/wxGauge.* +%{_mandir}/man3/wxGenericDirCtrl.* +%{_mandir}/man3/wxGraphicsBrush.* +%{_mandir}/man3/wxGraphicsContext.* +%{_mandir}/man3/wxGraphicsFont.* +%{_mandir}/man3/wxGraphicsGradientStops.* +%{_mandir}/man3/wxGraphicsMatrix.* +%{_mandir}/man3/wxGraphicsObject.* +%{_mandir}/man3/wxGraphicsPath.* +%{_mandir}/man3/wxGraphicsPen.* +%{_mandir}/man3/wxGraphicsRenderer.* +%{_mandir}/man3/wxGrid.* +%{_mandir}/man3/wxGridBagSizer.* +%{_mandir}/man3/wxGridCellAttr.* +%{_mandir}/man3/wxGridCellBoolEditor.* +%{_mandir}/man3/wxGridCellBoolRenderer.* +%{_mandir}/man3/wxGridCellChoiceEditor.* +%{_mandir}/man3/wxGridCellEditor.* +%{_mandir}/man3/wxGridCellFloatEditor.* +%{_mandir}/man3/wxGridCellFloatRenderer.* +%{_mandir}/man3/wxGridCellNumberEditor.* +%{_mandir}/man3/wxGridCellNumberRenderer.* +%{_mandir}/man3/wxGridCellRenderer.* +%{_mandir}/man3/wxGridCellStringRenderer.* +%{_mandir}/man3/wxGridCellTextEditor.* +%{_mandir}/man3/wxGridEvent.* +%{_mandir}/man3/wxGridSizer.* +%{_mandir}/man3/wxHelpEvent.* +%{_mandir}/man3/wxHtmlEasyPrinting.* +%{_mandir}/man3/wxHtmlLinkEvent.* +%{_mandir}/man3/wxHtmlWindow.* +%{_mandir}/man3/wxIcon.* +%{_mandir}/man3/wxIconBundle.* +%{_mandir}/man3/wxIconizeEvent.* +%{_mandir}/man3/wxIdleEvent.* +%{_mandir}/man3/wxImage.* +%{_mandir}/man3/wxImageList.* +%{_mandir}/man3/wxInitDialogEvent.* +%{_mandir}/man3/wxJoystickEvent.* +%{_mandir}/man3/wxKeyEvent.* +%{_mandir}/man3/wxLayoutAlgorithm.* +%{_mandir}/man3/wxListBox.* +%{_mandir}/man3/wxListCtrl.* +%{_mandir}/man3/wxListEvent.* +%{_mandir}/man3/wxListItem.* +%{_mandir}/man3/wxListItemAttr.* +%{_mandir}/man3/wxListView.* +%{_mandir}/man3/wxListbook.* +%{_mandir}/man3/wxLocale.* +%{_mandir}/man3/wxLogNull.* +%{_mandir}/man3/wxMDIChildFrame.* +%{_mandir}/man3/wxMDIClientWindow.* +%{_mandir}/man3/wxMDIParentFrame.* +%{_mandir}/man3/wxMask.* +%{_mandir}/man3/wxMaximizeEvent.* +%{_mandir}/man3/wxMemoryDC.* +%{_mandir}/man3/wxMenu.* +%{_mandir}/man3/wxMenuBar.* +%{_mandir}/man3/wxMenuEvent.* +%{_mandir}/man3/wxMenuItem.* +%{_mandir}/man3/wxMessageDialog.* +%{_mandir}/man3/wxMiniFrame.* +%{_mandir}/man3/wxMirrorDC.* +%{_mandir}/man3/wxMouseCaptureChangedEvent.* +%{_mandir}/man3/wxMouseCaptureLostEvent.* +%{_mandir}/man3/wxMouseEvent.* +%{_mandir}/man3/wxMoveEvent.* +%{_mandir}/man3/wxMultiChoiceDialog.* +%{_mandir}/man3/wxNavigationKeyEvent.* +%{_mandir}/man3/wxNotebook.* +%{_mandir}/man3/wxNotificationMessage.* +%{_mandir}/man3/wxNotifyEvent.* +%{_mandir}/man3/wxOverlay.* +%{_mandir}/man3/wxPageSetupDialog.* +%{_mandir}/man3/wxPageSetupDialogData.* +%{_mandir}/man3/wxPaintDC.* +%{_mandir}/man3/wxPaintEvent.* +%{_mandir}/man3/wxPalette.* +%{_mandir}/man3/wxPaletteChangedEvent.* +%{_mandir}/man3/wxPanel.* +%{_mandir}/man3/wxPasswordEntryDialog.* +%{_mandir}/man3/wxPen.* +%{_mandir}/man3/wxPickerBase.* +%{_mandir}/man3/wxPopupTransientWindow.* +%{_mandir}/man3/wxPopupWindow.* +%{_mandir}/man3/wxPostScriptDC.* +%{_mandir}/man3/wxPreviewCanvas.* +%{_mandir}/man3/wxPreviewControlBar.* +%{_mandir}/man3/wxPreviewFrame.* +%{_mandir}/man3/wxPrintData.* +%{_mandir}/man3/wxPrintDialog.* +%{_mandir}/man3/wxPrintDialogData.* +%{_mandir}/man3/wxPrintPreview.* +%{_mandir}/man3/wxPrinter.* +%{_mandir}/man3/wxPrintout.* +%{_mandir}/man3/wxProgressDialog.* +%{_mandir}/man3/wxQueryNewPaletteEvent.* +%{_mandir}/man3/wxRadioBox.* +%{_mandir}/man3/wxRadioButton.* +%{_mandir}/man3/wxRegion.* +%{_mandir}/man3/wxSashEvent.* +%{_mandir}/man3/wxSashLayoutWindow.* +%{_mandir}/man3/wxSashWindow.* +%{_mandir}/man3/wxScreenDC.* +%{_mandir}/man3/wxScrollBar.* +%{_mandir}/man3/wxScrollEvent.* +%{_mandir}/man3/wxScrollWinEvent.* +%{_mandir}/man3/wxScrolledWindow.* +%{_mandir}/man3/wxSetCursorEvent.* +%{_mandir}/man3/wxShowEvent.* +%{_mandir}/man3/wxSingleChoiceDialog.* +%{_mandir}/man3/wxSizeEvent.* +%{_mandir}/man3/wxSizer.* +%{_mandir}/man3/wxSizerFlags.* +%{_mandir}/man3/wxSizerItem.* +%{_mandir}/man3/wxSlider.* +%{_mandir}/man3/wxSpinButton.* +%{_mandir}/man3/wxSpinCtrl.* +%{_mandir}/man3/wxSpinEvent.* +%{_mandir}/man3/wxSplashScreen.* +%{_mandir}/man3/wxSplitterEvent.* +%{_mandir}/man3/wxSplitterWindow.* +%{_mandir}/man3/wxStaticBitmap.* +%{_mandir}/man3/wxStaticBox.* +%{_mandir}/man3/wxStaticBoxSizer.* +%{_mandir}/man3/wxStaticLine.* +%{_mandir}/man3/wxStaticText.* +%{_mandir}/man3/wxStatusBar.* +%{_mandir}/man3/wxStdDialogButtonSizer.* +%{_mandir}/man3/wxStyledTextCtrl.* +%{_mandir}/man3/wxStyledTextEvent.* +%{_mandir}/man3/wxSysColourChangedEvent.* +%{_mandir}/man3/wxSystemOptions.* +%{_mandir}/man3/wxSystemSettings.* +%{_mandir}/man3/wxTaskBarIcon.* +%{_mandir}/man3/wxTaskBarIconEvent.* +%{_mandir}/man3/wxTextAttr.* +%{_mandir}/man3/wxTextCtrl.* +%{_mandir}/man3/wxTextDataObject.* +%{_mandir}/man3/wxTextEntryDialog.* +%{_mandir}/man3/wxToggleButton.* +%{_mandir}/man3/wxToolBar.* +%{_mandir}/man3/wxToolTip.* +%{_mandir}/man3/wxToolbook.* +%{_mandir}/man3/wxTopLevelWindow.* +%{_mandir}/man3/wxTreeCtrl.* +%{_mandir}/man3/wxTreeEvent.* +%{_mandir}/man3/wxTreebook.* +%{_mandir}/man3/wxUpdateUIEvent.* +%{_mandir}/man3/wxWebView.* +%{_mandir}/man3/wxWebViewEvent.* +%{_mandir}/man3/wxWindow.* +%{_mandir}/man3/wxWindowCreateEvent.* +%{_mandir}/man3/wxWindowDC.* +%{_mandir}/man3/wxWindowDestroyEvent.* +%{_mandir}/man3/wxXmlResource.* +%{_mandir}/man3/wx_misc.* +%{_mandir}/man3/wx_object.* +%endif +%endif # __with_wxwidgets + +%files xmerl +%{_libdir}/erlang/lib/xmerl-*/ +%if %{with doc} +%{_mandir}/man3/xmerl.* +%{_mandir}/man3/xmerl_eventp.* +%{_mandir}/man3/xmerl_sax_parser.* +%{_mandir}/man3/xmerl_scan.* +%{_mandir}/man3/xmerl_xpath.* +%{_mandir}/man3/xmerl_xs.* +%{_mandir}/man3/xmerl_xsd.* +%endif %changelog -* Mon Jun 7 2010 Peter Lemenkov - R12B-5.10 -- Added missing virtual provides erlang-erts +* Wed Sep 10 2025 Peter Lemenkov - 26.2.5.15-1 +- Ver. 26.2.5.15 -* Tue May 25 2010 Peter Lemenkov - R12B-5.9 -- Use java-1.4.2 only for EL-[45] -- Added virtual provides for each erlang module -- Small typo fix +* Wed Jul 23 2025 Fedora Release Engineering - 26.2.5.14-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild -* Mon Apr 19 2010 Peter Lemenkov - R12B-5.8 +* Thu Jul 17 2025 Peter Lemenkov - 26.2.5.14-1 +- Ver. 26.2.5.14 + +* Fri Jun 20 2025 Peter Lemenkov - 26.2.5.13-3 +- Add GDB tools + +* Wed Jun 18 2025 Benjamin A. Beasley - 26.2.5.13-2 +- Rename typer (in /usr/bin) to erlang-typer; fixes RHBZ#2359567 + +* Mon Jun 16 2025 Peter Lemenkov - 26.2.5.13-1 +- Ver. 26.2.5.13 + +* Thu May 8 2025 Peter Lemenkov - 26.2.5.12-1 +- Ver. 26.2.5.12 + +* Wed Apr 16 2025 Peter Lemenkov - 26.2.5.11-1 +- Ver. 26.2.5.11 + +* Fri Mar 28 2025 Peter Lemenkov - 26.2.5.10-1 +- Ver. 26.2.5.10 + +* Mon Mar 10 2025 Zbigniew Jedrzejewski-Szmek - 26.2.5.9-2 +- Add sysusers.d config file to allow rpm to create users/groups automatically + +* Thu Feb 13 2025 Peter Lemenkov - 26.2.5.8-1 +- Ver. 26.2.5.8 + +* Tue Feb 11 2025 Peter Lemenkov - 26.2.5.7-1 +- Ver. 26.2.5.7 + +* Thu Jan 16 2025 Fedora Release Engineering - 26.2.5.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Sat Dec 7 2024 Peter Lemenkov - 26.2.5.6-1 +- Ver. 26.2.5.6 + +* Fri Nov 1 2024 Peter Lemenkov - 26.2.5.5-1 +- Ver. 26.2.5.5 + +* Wed Oct 9 2024 Peter Lemenkov - 26.2.5.4-1 +- Ver. 26.2.5.4 + +* Thu Sep 5 2024 Peter Lemenkov - 26.2.5.3-1 +- Ver. 26.2.5.3 + +* Wed Jul 17 2024 Fedora Release Engineering - 26.2.5.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Wed Jul 10 2024 Peter Lemenkov - 26.2.5.2-1 +- Ver. 26.2.5.2 + +* Wed Jun 26 2024 Peter Lemenkov - 26.2.5.1-1 +- Ver. 26.2.5.1 + +* Sat May 4 2024 Peter Lemenkov - 26.2.5-1 +- Ver. 26.2.5 + +* Sat Apr 13 2024 Peter Lemenkov - 26.2.4-1 +- Ver. 26.2.4 + +* Mon Feb 12 2024 Peter Lemenkov - 26.2.2-1 +- Ver. 26.2.2 + +* Wed Jan 24 2024 Fedora Release Engineering - 26.2.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 26.2.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Dec 18 2023 Peter Lemenkov - 26.2.1-1 +- Ver. 26.2.1 + +* Wed Dec 13 2023 Peter Lemenkov - 26.2-1 +- Ver. 26.2 + +* Fri Oct 13 2023 Peter Lemenkov - 26.1.2-1 +- Ver. 26.1.2 + +* Fri Sep 29 2023 Peter Lemenkov - 26.1.1-1 +- Ver. 26.1.1 + +* Wed Sep 20 2023 Peter Lemenkov - 26.1-1 +- Ver. 26.1 + +* Tue Aug 8 2023 Peter Lemenkov - 26.0.2-3 +- Reenable OpenSSL 3 + +* Wed Jul 19 2023 Fedora Release Engineering - 26.0.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Sat Jul 1 2023 Peter Lemenkov - 26.0.2-1 +- Ver. 26.0.2 + +* Fri Jun 9 2023 Peter Lemenkov - 26.0.1-1 +- Ver. 26.0.1 + +* Sat May 20 2023 Peter Lemenkov - 26.0-1 +- Ver. 26.0 + +* Sat May 6 2023 Peter Lemenkov - 25.3.2-1 +- Ver. 25.3.2 + +* Thu Apr 27 2023 Peter Lemenkov - 25.3.1-1 +- Ver. 25.3.1 + +* Wed Mar 8 2023 Peter Lemenkov - 25.3-1 +- Ver. 25.3 + +* Fri Feb 17 2023 Peter Lemenkov - 25.2.3-1 +- Ver. 25.2.3 + +* Mon Jan 30 2023 Peter Lemenkov - 25.2.2-1 +- Ver. 25.2.2 + +* Thu Jan 19 2023 Fedora Release Engineering - 25.2.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Wed Jan 18 2023 Peter Lemenkov - 25.2.1-1 +- Ver. 25.2.1 + +* Fri Jan 6 2023 Peter Lemenkov - 25.2-3 +- Fix deps + +* Wed Jan 4 2023 Peter Lemenkov - 25.2-2 +- LSP applications require source code to be available (rhbz #2157170). Let's + restore it in a separate package + +* Wed Dec 14 2022 Peter Lemenkov - 25.2-1 +- Ver. 25.2 + +* Sun Nov 27 2022 Mamoru TASAKA - 25.1.2-3 +- Rebuild due to wxGLCanvas ABI change + +* Thu Nov 24 2022 Florian Weimer - 25.1.2-2 +- Fix C99 compatibility issues in configure checks + +* Tue Oct 25 2022 Peter Lemenkov - 25.1.2-1 +- Ver. 25.1.2 + +* Mon Oct 3 2022 Peter Lemenkov - 25.1.1-1 +- Ver. 25.1.1 + +* Wed Sep 21 2022 Peter Lemenkov - 25.1-1 +- Ver. 25.1 + +* Thu Aug 18 2022 Peter Lemenkov - 25.0.4-1 +- Ver. 25.0.4 + +* Thu Jul 28 2022 Peter Lemenkov - 25.0.3-3 +- Rebuild with new wxWidgets + +* Thu Jul 21 2022 Fedora Release Engineering - 25.0.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sat Jul 16 2022 Peter Lemenkov - 25.0.3-1 +- Ver. 25.0.3 + +* Tue Jul 12 2022 Peter Lemenkov - 25.0.2-1 +- Ver. 25.0.2 + +* Thu Jun 23 2022 Peter Lemenkov - 24.3.4.2-1 +- Ver. 24.3.4.2 + +* Wed Jun 8 2022 Peter Lemenkov - 24.3.4.1-1 +- Ver. 24.3.4.1 + +* Tue May 24 2022 Peter Lemenkov - 24.3.4-2 +- Downgrade to OpenSSL 1.x + +* Wed May 4 2022 Peter Lemenkov - 24.3.4-1 +- Ver. 24.3.4 + +* Fri Apr 8 2022 Peter Lemenkov - 24.3.3-2 +- Temporarily disable FIPS (doesn't work reliably with OpenSSL 3.0 yet) + +* Tue Mar 29 2022 Peter Lemenkov - 24.3.3-1 +- Ver. 24.3.3 +- Doc sub-package no longermarked as noarch (contains links to _libdir) + +* Mon Mar 28 2022 John Eckersberg - 24.2.2-2 +- Keep documentation chunks in the code path (rhbz#2068758) + +* Tue Mar 1 2022 Peter Lemenkov - 24.2.2-1 +- Ver. 24.2.2 + +* Sat Feb 05 2022 Jiri Vanek - 24.2.1-2 +- Rebuilt for java-17-openjdk as system jdk + +* Wed Jan 26 2022 Peter Lemenkov - 24.2.1-1 +- Ver. 24.2.1 + +* Thu Jan 20 2022 Fedora Release Engineering - 24.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Dec 15 2021 Peter Lemenkov - 24.2-1 +- Ver. 24.2 + +* Mon Nov 22 2021 Peter Lemenkov - 24.1.7-1 +- Ver. 24.1.7 + +* Thu Nov 18 2021 Peter Lemenkov - 24.1.6-1 +- Ver. 24.1.6 + +* Sat Nov 13 2021 Peter Lemenkov - 24.1.5-1 +- Ver. 24.1.5 + +* Tue Nov 2 2021 Peter Lemenkov - 24.1.4-1 +- Ver. 24.1.4 + +* Thu Oct 28 2021 Peter Lemenkov - 24.1.3-1 +- Ver. 24.1.3 + +* Tue Oct 12 2021 Peter Lemenkov - 24.1.2-2 +- Fix FTBFS with OpenSSL 3.0 + +* Tue Oct 5 2021 Peter Lemenkov - 24.1.2-1 +- Ver. 24.1.2 + +* Mon Oct 4 2021 Peter Lemenkov - 24.1.1-1 +- Ver. 24.1.1 + +* Thu Sep 23 2021 Peter Lemenkov - 24.1-1 +- Ver. 24.1 + +* Tue Sep 14 2021 Sahana Prasad - 24.0.6-2 +- Rebuilt with OpenSSL 3.0.0 + +* Fri Sep 3 2021 Peter Lemenkov - 24.0.6-1 +- Ver. 24.0.6 + +* Tue Aug 3 2021 Peter Lemenkov - 24.0.5-1 +- Ver. 24.0.5 + +* Thu Jul 22 2021 Peter Lemenkov - 24.0.4-1 +- Ver. 24.0.4 + +* Wed Jul 21 2021 Fedora Release Engineering - 24.0.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Jun 29 2021 Peter Lemenkov - 24.0.3-1 +- Ver. 24.0.3 + +* Tue Jun 01 2021 Peter Lemenkov - 24.0.2-1 +- Ver. 24.0.2 + +* Fri May 21 2021 John Eckersberg - 24.0.1-1 +- Ver. 24.0.1 + +* Wed May 12 2021 Peter Lemenkov - 24.0-1 +- Ver. 24.0 + +* Wed Apr 21 2021 Peter Lemenkov - 24.0-0.2.rc3 +- Ver. 24.0-rc3 + +* Sat Apr 3 2021 Peter Lemenkov - 24.0-0.1.rc2 +- Ver. 24.0-rc2 +- Removed hipe + +* Tue Mar 30 2021 Peter Lemenkov - 23.3.1-1 +- Ver. 23.3.1 + +* Wed Mar 24 2021 Peter Lemenkov - 23.3-1 +- Ver. 23.3 + +* Fri Mar 5 2021 Peter Lemenkov - 23.2.7-1 +- Ver. 23.2.7 + +* Thu Feb 25 2021 Peter Lemenkov - 23.2.6-1 +- Ver. 23.2.6 + +* Tue Feb 16 2021 Peter Lemenkov - 23.2.5-1 +- Ver. 23.2.5 + +* Thu Feb 4 2021 John Eckersberg - 23.2.4-1 +- Ver. 23.2.4 + +* Tue Jan 26 2021 Fedora Release Engineering - 23.2.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Jan 20 2021 Peter Lemenkov - 23.2.3-1 +- Ver. 23.2.3 + +* Fri Jan 15 2021 Peter Lemenkov - 23.2.2-1 +- Ver. 23.2.2 +- Disable XEmacs support (dead upstream, scheduled for removal from Fedora) + +* Tue Dec 22 2020 Peter Lemenkov - 23.2.1-1 +- Ver. 23.2.1 + +* Thu Dec 17 2020 Peter Lemenkov - 23.2-1 +- Ver. 23.2 + +* Fri Dec 11 2020 Peter Lemenkov - 23.1.5-1 +- Ver. 23.1.5 + +* Fri Nov 20 2020 Peter Lemenkov - 23.1.4-1 +- Ver. 23.1.4 + +* Tue Nov 17 2020 Peter Lemenkov - 23.1.3-1 +- Ver. 23.1.3 + +* Sat Oct 3 2020 Peter Lemenkov - 23.1.1-1 +- Ver. 23.1.1 + +* Tue Sep 15 2020 Peter Lemenkov - 23.0.4-1 +- Ver. 23.0.4 + +* Mon Jul 27 2020 Fedora Release Engineering - 23.0.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 20 2020 Peter Lemenkov - 23.0.3-1 +- Ver. 23.0.3 + +* Fri Jul 10 2020 Jiri Vanek - 23.0.2-2 +- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11 + +* Thu May 28 2020 Peter Lemenkov - 23.0.2-1 +- Ver. 23.0.2 + +* Wed May 20 2020 Peter Lemenkov - 23.0.1-1 +- Ver. 23.0.1 + +* Wed May 13 2020 Peter Lemenkov - 23.0-1 +- Ver. 23.0 + +* Thu Apr 23 2020 Peter Lemenkov - 23.0-0.2.rc3 +- Ver. 23.0-rc3 + +* Sun Apr 19 2020 Peter Lemenkov - 23.0-0.1.rc2 +- Ver. 23.0-rc2 + +* Thu Apr 9 2020 Peter Lemenkov - 22.3.2-1 +- Ver. 22.3.2 + +* Fri Feb 28 2020 Peter Lemenkov - 22.2.8-1 +- Ver. 22.2.8 + +* Fri Feb 21 2020 Peter Lemenkov - 22.2.7-2 +- Fix building with GCC 10 (-fno-common) + +* Fri Feb 21 2020 Peter Lemenkov - 22.2.7-1 +- Ver. 22.2.7 + +* Thu Feb 6 2020 Peter Lemenkov - 22.2.6-1 +- Ver. 22.2.6 + +* Tue Jan 28 2020 Fedora Release Engineering - 22.2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Jan 13 2020 Peter Lemenkov - 22.2.2-1 +- Ver. 22.2.2 + +* Sat Dec 28 2019 Peter Lemenkov - 22.2.1-1 +- Ver. 22.2.1 + +* Thu Nov 21 2019 John Eckersberg - 22.1.8-1 +- Ver. 22.1.8 +- Re-enable s390x, but disable kernel polling, see rhbz#1770256 + +* Mon Nov 11 2019 John Eckersberg - 22.1.7-1 +- Ver. 22.1.7 +- Add ExcludeArch for s390x, see rhbz#1770256 + +* Tue Nov 5 2019 John Eckersberg - 22.1.5-1 +- Ver. 22.1.5 + +* Mon Sep 16 2019 Peter Lemenkov - 22.0.7-3 +- Enable arches disabled in a previous build + +* Wed Sep 11 2019 Peter Lemenkov - 22.0.7-2 +- Disable arches with a broken builders +- Expose a correct NIF API version + +* Tue Jul 30 2019 Peter Lemenkov - 22.0.7-1 +- Ver. 22.0.7 +- Removed otp_mibs application + +* Wed Jul 24 2019 Fedora Release Engineering - 21.3.8.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Mon Jul 15 2019 Peter Lemenkov - 21.3.8.6-1 +- Ver. 21.3.8.6 + +* Mon Jul 8 2019 Peter Lemenkov - 21.3.8.5-1 +- Ver. 21.3.8.5 + +* Wed Jun 19 2019 Peter Lemenkov - 21.3.8.4-1 +- Ver. 21.3.8.4 + +* Tue Jun 04 2019 Peter Lemenkov - 21.3.8.3-1 +- Ver. 21.3.8.3 + +* Mon May 20 2019 Peter Lemenkov - 21.3.8.2-1 +- Ver. 21.3.8.2 + +* Fri May 17 2019 Peter Lemenkov - 21.3.8.1-1 +- Ver. 21.3.8.1 + +* Wed May 01 2019 Peter Lemenkov - 21.3.7-1 +- Ver. 21.3.7 + +* Thu Apr 18 2019 Peter Lemenkov - 21.3.6-1 +- Ver. 21.3.6 + +* Mon Apr 15 2019 Peter Lemenkov - 21.3.5-1 +- Ver. 21.3.5 + +* Sat Apr 13 2019 Peter Lemenkov - 21.3.4-1 +- Ver. 21.3.4 + +* Tue Apr 02 2019 Peter Lemenkov - 21.3.3-1 +- Ver. 21.3.3 + +* Fri Mar 22 2019 Peter Lemenkov - 21.3.2-1 +- Ver. 21.3.2 + +* Tue Mar 19 2019 Peter Lemenkov - 21.3.1-1 +- Ver. 21.3.1 + +* Tue Mar 12 2019 Peter Lemenkov - 21.3-1 +- Ver. 21.3 + +* Thu Mar 07 2019 Peter Lemenkov - 21.2.7-1 +- Ver. 21.2.7 + +* Tue Feb 19 2019 Kalev Lember - 21.2.6-2 +- Rebuilt against fixed atk (#1626575) + +* Tue Feb 19 2019 Peter Lemenkov - 21.2.6-1 +- Ver. 21.2.6 + +* Tue Feb 05 2019 Peter Lemenkov - 21.2.5-1 +- Ver. 21.2.5 +- Revert: Fix EC detection + +* Mon Feb 04 2019 Peter Lemenkov - 21.2.4-2 +- Fix EC detection + +* Thu Jan 31 2019 Peter Lemenkov - 21.2.4-1 +- Ver. 21.2.4 +- Removed cosEvent, cosEventDomain, cosFileTransfer, cosNotification, + cosProperty, cosTime, cosTransactions, ic, orber applications +- Added ftp, tftp applications +- Disabled XEmacs support (fails to build) + +* Thu Jan 31 2019 Fedora Release Engineering - 20.3.8.18-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Jan 22 2019 Peter Lemenkov - 20.3.8.18-1 +- Ver. 20.3.8.18 + +* Tue Jan 15 2019 Peter Lemenkov - 20.3.8.17-2 +- Fix issue with nodes info querying +- Enable verbose build logs + +* Thu Jan 10 2019 Peter Lemenkov - 20.3.8.17-1 +- Ver. 20.3.8.17 + +* Tue Jan 08 2019 Peter Lemenkov - 20.3.8.16-1 +- Ver. 20.3.8.16 + +* Mon Dec 10 2018 Peter Lemenkov - 20.3.8.15-1 +- Ver. 20.3.8.15 + +* Fri Nov 16 2018 Peter Lemenkov - 20.3.8.14-1 +- Ver. 20.3.8.14 +- Fix epmd systemd files + +* Thu Sep 20 2018 Peter Lemenkov - 20.3.8.9-2 +- Install man-pages into system-wide directories (as Debian already did). + +* Tue Sep 18 2018 Peter Lemenkov - 20.3.8.9-1 +- Ver. 20.3.8.9 + +* Wed Aug 29 2018 Peter Lemenkov - 20.3.8.8-1 +- Ver. 20.3.8.8 + +* Wed Aug 15 2018 Peter Lemenkov - 20.3.8.6-1 +- Ver. 20.3.8.6 + +* Fri Aug 10 2018 Peter Lemenkov - 20.3.8.5-1 +- Ver. 20.3.8.5 + +* Fri Aug 03 2018 Peter Lemenkov - 20.3.8.4-1 +- Ver. 20.3.8.4 + +* Tue Jul 31 2018 Florian Weimer - 20.3.8.3-2 +- Rebuild with fixed binutils + +* Mon Jul 30 2018 Peter Lemenkov - 20.3.8.3-1 +- Ver. 20.3.8.3 + +* Thu Jul 12 2018 Fedora Release Engineering - 20.3.8.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Jul 10 2018 Peter Lemenkov - 20.3.8.2-2 +- Fix FTBFS on F-29 and higher + +* Tue Jul 10 2018 Peter Lemenkov - 20.3.8.2-1 +- Ver. 20.3.8.2 + +* Wed Jun 27 2018 Peter Lemenkov - 20.3.8.1-1 +- Ver. 20.3.8.1 + +* Thu Jun 14 2018 Peter Lemenkov - 20.3.8-1 +- Ver. 20.3.8 + +* Fri May 18 2018 Troy Dawson - 20.3.6-2 +- Make xemacs an optional component + +* Tue May 15 2018 Peter Lemenkov - 20.3.6-1 +- Ver. 20.3.6 + +* Fri Apr 06 2018 Peter Lemenkov - 20.3.2-2 +- Allow building against OpenSSL 1.1.0+ + +* Fri Mar 23 2018 Peter Lemenkov - 20.3.2-1 +- Ver. 20.3.2 + +* Tue Mar 20 2018 Richard W.M. Jones - 20.3-2 +- Disable fop on riscv64. + +* Wed Mar 14 2018 Peter Lemenkov - 20.3 +- Ver. 20.3 + +* Thu Feb 22 2018 Peter Lemenkov - 20.2.4-1 +- Ver. 20.2.4 + +* Tue Feb 20 2018 Peter Lemenkov - 20.2.3-1 +- Ver. 20.2.3 +- Removed gs (also removed tcl/tk dependency), percept +- Application typer was merged into dialyzer +- NIF version bumped up to 2.13 + +* Wed Feb 07 2018 Fedora Release Engineering - 19.3.6.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Dec 19 2017 Peter Lemenkov - 19.3.6.5 +- Ver. 19.3.6.5 + +* Mon Nov 27 2017 Peter Lemenkov - 19.3.6.4 +- Ver. 19.3.6.4 +- ssl: Countermeasurements for Bleichenbacher attack + +* Tue Aug 1 2017 Randy Barlow - 19.3.6.2-2 +- Search /usr/share/erlang/lib for libraries as well + +* Mon Jul 31 2017 Peter Lemenkov - 19.3.6.2-1 +- Ver. 19.3.6.2 + +* Wed Jul 26 2017 Fedora Release Engineering - 19.3.6.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Jun 30 2017 Peter Lemenkov - 19.3.6.1-1 +- Ver. 19.3.6.1 + +* Fri Jun 16 2017 Peter Lemenkov - 19.3.6-2 +- Fix EPMD port assignment in IPv6 env. (GH#1487) + +* Tue Jun 13 2017 Peter Lemenkov - 19.3.6-1 +- Ver. 19.3.6 + +* Wed Jun 7 2017 Peter Lemenkov - 19.3.5-1 +- Ver. 19.3.5 +- Enabled tests + +* Fri May 12 2017 Peter Lemenkov - 19.3.4-1 +- Ver. 19.3.4 +- Require javapackages-tools (/use/share/java) +- Use /dev/null as a homedir for EPMD (its shell is /sbin/nologin anyway) +- Removed beam appilciation (non-SMP VM). + +* Tue May 2 2017 Peter Lemenkov - 19.3.3-1 +- Ver. 19.3.3 + +* Mon Apr 24 2017 Peter Lemenkov - 19.3.2-1 +- Ver. 19.3.2 + +* Tue Apr 4 2017 Peter Lemenkov - 19.3.1-1 +- Ver. 19.3.1 + +* Tue Mar 21 2017 Peter Lemenkov - 19.3-2 +- Fix for CVE-2016-10253 + +* Wed Mar 15 2017 Peter Lemenkov - 19.3-1 +- Ver. 19.3 + +* Wed Feb 8 2017 Peter Lemenkov - 19.2.3-1 +- Ver. 19.2.3 + +* Wed Feb 1 2017 Peter Lemenkov - 19.2.2-1 +- Ver. 19.2.2 + +* Wed Jan 18 2017 Peter Lemenkov - 19.2.1-1 +- Ver. 19.2.1 + +* Wed Jan 11 2017 Peter Lemenkov - 19.2-1 +- Ver. 19.2 + +* Wed Nov 23 2016 Peter Lemenkov - 19.1.6-2 +- Fix HiPE by disabling -fpie +- Fix dialyzer generation + +* Wed Nov 9 2016 Peter Lemenkov - 19.1.6-1 +- Ver. 19.1.6 + +* Mon Nov 7 2016 Peter Lemenkov - 19.1.5-1 +- Ver. 19.1.5 + +* Fri Oct 14 2016 Peter Lemenkov - 19.1.4-1 +- Ver. 19.1.4 + +* Tue Oct 11 2016 Peter Lemenkov - 19.1.3-1 +- Ver. 19.1.3 + +* Thu Oct 6 2016 Peter Lemenkov - 19.1.2-1 +- Ver. 19.1.2 + +* Tue Oct 4 2016 Peter Lemenkov - 19.1.1-1 +- Ver. 19.1.1 + +* Wed Sep 14 2016 Peter Lemenkov - 19.0.7-1 +- Ver. 19.0.7 + +* Wed Sep 14 2016 Peter Lemenkov - 19.0.6-1 +- Ver. 19.0.6 + +* Tue Aug 23 2016 Peter Lemenkov - 19.0.5-1 +- Ver. 19.0.5 + +* Tue Aug 16 2016 Peter Lemenkov - 19.0.4-1 +- Ver. 19.0.4 + +* Fri Aug 12 2016 Michal Toman - 19.0.2-2 +- Disable doc on MIPS + +* Wed Jul 27 2016 Peter Lemenkov - 19.0.2-1 +- Ver. 19.0.2 +- The following packages were removed - ose, test_server (merged into common_test), webtool +- Merge (x)emacs subpackages into erlang-typer + +* Tue Jul 26 2016 Peter Lemenkov - 18.3.4.2-1 +- Ver. 18.3.4.2 + +* Fri Jul 15 2016 Peter Lemenkov - 18.3.4.1-1 +- Ver. 18.3.4.1 +- Allow node registration via IPv6 (PR erlang/otp#1129) + +* Tue Jun 14 2016 Peter Lemenkov - 18.3.4-1 +- Ver. 18.3.4 + +* Mon Jun 13 2016 Peter Lemenkov - 18.3.3-2 +- Fix regression with GCC 6.x.y + +* Wed May 11 2016 Peter Lemenkov - 18.3.3-1 +- Ver. 18.3.3 + +* Wed Apr 27 2016 Peter Lemenkov - 18.3.2-1 +- Ver. 18.3.2 + +* Sun Apr 10 2016 Peter Lemenkov - 18.3.1-2 +- Enable selective building + +* Thu Apr 7 2016 Peter Lemenkov - 18.3.1-1 +- Ver. 18.3.1 + +* Thu Mar 31 2016 Peter Lemenkov - 18.3-2 +- Added patch to suppress sending systemd notifications from epmd if not + started as a systemd service. + +* Thu Mar 24 2016 Peter Lemenkov - 18.3-1 +- Ver. 18.3 + +* Sun Feb 28 2016 Peter Lemenkov - 18.2.4-2 +- Fixed issue with nodes registration over IPv6 + +* Tue Feb 23 2016 Peter Lemenkov - 18.2.4-1 +- Ver. 18.2.4 +- Build against wxGTK-3.x.y as recommended by upstream. This change won't + affect "headless" installations. + +* Fri Feb 19 2016 Peter Lemenkov - 18.2.3-3 +- Add missing dependency + +* Wed Feb 10 2016 Peter Lemenkov - 18.2.3-2 +- Workaround for broken cmpxchg8b inlining on ix86 (rhbz#1240487) +- Don't use generic optimization on ix86 +- Increase memory up to 1024 mbytes while generating docs on non-ppc arches + +* Tue Feb 9 2016 Peter Lemenkov - 18.2.3-1 +- Ver. 18.2.3 + +* Wed Feb 03 2016 Fedora Release Engineering - 18.2.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Jan 22 2016 Peter Lemenkov - 18.2.2-3 +- Disable optimizations for Intel Atom CPU on ix86 arches + +* Sun Jan 17 2016 John Eckersberg - 18.2.2-2 +- Add patch for epmd ipv6 support (rhbz#1299253) + +* Mon Jan 11 2016 Peter Lemenkov - 18.2.2-1 +- Ver. 18.2.2 + +* Tue Aug 18 2015 John Eckersberg - 17.4-5 +- Disable docs by default on ARM until I figure out why fop hangs + +* Wed Aug 5 2015 John Eckersberg - 17.4-4 +- Add patch for CVE-2015-2774 - TLS-1.0 POODLE vulnerability (rhbz#1206712) + +* Wed Jun 17 2015 Fedora Release Engineering - 17.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sat May 02 2015 Kalev Lember - 17.4-2 +- Rebuilt for GCC 5 C++11 ABI change + +* Fri Dec 12 2014 Peter Lemenkov - 17.4-1 +- Ver. 17.4 + +* Mon Dec 01 2014 Peter Lemenkov - 17.3.4-3 +- Disable SSLv3 (see rhbz #1169375) + +* Mon Dec 01 2014 Peter Lemenkov - 17.3.4-2 +- Backport useful os:getenv/2 from master (see https://github.com/erlang/otp/pull/535 ) + +* Sat Nov 08 2014 Peter Lemenkov - 17.3.4-1 +- Ver. 17.3.4 (API/ABI compatible release) +- Relax an erlang-tools dependency on erlang-webtool down to Suggests + +* Sun Nov 02 2014 Peter Lemenkov - 17.3.3-1 +- Ver. 17.3.3 + +* Sun Sep 7 2014 Peter Lemenkov - 17.2.2-1 +- Ver. 17.2.2 +- Fixed a race which could make create_table fail if a node was going down + during the transaction. See upstream issue OTP-12124 for a further reference. + +* Tue Aug 26 2014 Peter Lemenkov - 17.2.1-1 +- Ver. 17.2.1 +- Removed support for EPEL5 +- The following packages were removed - appmon, pman, toolbar, tv +- The following packages were added - ose +- No longer using a pre-built doc-files +- Erlang no longer requires erlang-examples subpackage (see rhbz #1038314) + +* Sat Aug 16 2014 Fedora Release Engineering - R16B-03.7.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Wed Jun 11 2014 Peter Lemenkov - R16B-03.7 +- Added missing template for epmd@.socket + +* Fri Jun 06 2014 Peter Lemenkov - R16B-03.6 +- Add configurable EPMD socket unit +- Change EPMD service's type from simple to notify + +* Wed Apr 02 2014 Peter Lemenkov - R16B-03.5 +- Improve EPMD service + +* Fri Mar 28 2014 Peter Lemenkov - R16B-03.4 +- Create group and user for EPMD + +* Thu Mar 27 2014 Peter Lemenkov - R16B-03.3 +- Ver. R16B03-1 (Bugfix release) +- Enabled systemd support in EPMD + +* Fri Feb 7 2014 Sam Kottler - R16B-03.2 +- Fix macro usage for EPEL7 build and added need_bootstrap + +* Tue Dec 24 2013 Peter Lemenkov - R16B-03.1 +- Ver. R16B03 + +* Tue Oct 29 2013 Peter Lemenkov - R16B-02.7 +- Really disable HiPE on s390(x) + +* Tue Oct 29 2013 Peter Lemenkov - R16B-02.6 +- Actually re-enable HiPE + +* Mon Oct 28 2013 Peter Lemenkov - R16B-02.5 +- Re-enable HiPE on ppc64, ppc64v7 + +* Mon Oct 28 2013 Peter Lemenkov - R16B-02.4 +- Disable HiPE on s390(x) (rhbz #1023960) +- Fix HiPE on ppc (rhbz #1023960) + +* Thu Oct 24 2013 Peter Lemenkov - R16B-02.3 +- TEMPORARILY disable ECC until dust settles + +* Thu Oct 24 2013 Peter Lemenkov - R16B-02.2 +- Fix building for armv7hl (patch taken from OpenSUSE repository) + +* Thu Sep 26 2013 Peter Lemenkov - R16B-02.1 +- Ver. R16B02 (see rhbz #1009502) +- Increase erlang(erl_drv_version) from 2.1 to 2.2 (drivers needs rebuilding) +- Remove ancient obsoletes (see rhbz #1002103) +- Removed pre-F18 compatibility +- Enable HiPE + +* Sat Aug 03 2013 Fedora Release Engineering - R16B-01.1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Wed Jun 19 2013 Peter Lemenkov - R16B-01.1 +- Ver. R16B01 +- Added graphviz as a requirement for dialyzer (thanks to Matwey V. Kornilov) + +* Mon Mar 11 2013 Peter Lemenkov - R16B-0.4 +- Add Requires for SCTP (dlopened library) + +* Sat Mar 02 2013 Peter Lemenkov - R16B-0.3 +- Add neccessary BuildRequires for SCTP + +* Sat Mar 02 2013 Peter Lemenkov - R16B-0.2 +- Fixed erts provides + +* Thu Feb 28 2013 Peter Lemenkov - R16B-0.1 +- Ver. R16B +- Enabled SCTP (see rhbz #908530) + +* Sun Feb 03 2013 Peter Lemenkov - R16A-0.1 +- Ver. R16A + +* Tue Dec 25 2012 Peter Lemenkov - R15B-03.2 +- Run make clean before build (to remove pre-built files) + +* Fri Dec 21 2012 Peter Lemenkov - R15B-03.1 +- Ver. R15B03 (actually R15B03-1) + +* Mon Sep 10 2012 Peter Lemenkov - R15B-02.1 +- Ver. R15B02 + +* Wed Aug 15 2012 Karsten Hopp R15B-01.4.2 +- set BASE_OPTIONS to -Xmx1536m on ppc* + +* Wed Jul 18 2012 Fedora Release Engineering - R15B-01.4.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Jun 26 2012 Peter Lemenkov - R15B-01.3 +- Return back erl_interface' private API headers (rhbz #818419) + +* Fri Jun 15 2012 Dan Horák - R15B-01.2 +- Fixed examples packaging + +* Mon May 07 2012 Peter Lemenkov - R15B-01.1 +- Ver. R15B01 +- New sub-package - eldap + +* Tue Feb 07 2012 Peter Lemenkov - R15B-00.1 +- Ver. R15B + +* Fri Jan 13 2012 Fedora Release Engineering - R14B-04.1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Sun Aug 07 2011 Peter Lemenkov - R14B-04.1 +- Ver. R14B04 + +* Sun Aug 07 2011 Peter Lemenkov - R14B-03.3 +- Use prebuilt docs on EL-[56] also + +* Thu Jul 21 2011 Peter Lemenkov - R14B-03.2 +- Fixed building on F-15 + +* Wed Jul 20 2011 Peter Lemenkov - R14B-03.1 +- Ver. R14B03 +- New module - diameter +- Several new examples directories + +* Fri Apr 1 2011 Hans Ulrich Niedermann - R14B-02.2 +- Work around fop-1.0-14.fc16 bug (#689930) by using prebuilt docs for f16/rawhide + +* Mon Mar 21 2011 Hans Ulrich Niedermann - R14B-02.1 +- snmp-4.19 (R14B02) ships lib/snmp/bin/snmpc +- inets-5.5.2 puts *.hrl in include/ +- install/symlink *.jar into %%{_javadir} (#679031) +- Update to upstream maintenance release R14B02 + +* Sat Feb 12 2011 Hans Ulrich Niedermann - R14B-01.5 +- erlang-doc does not really require erlang base package (#629723) +- Add %%{?_isa} for all explicit "Requires:" + +* Tue Feb 08 2011 Fedora Release Engineering - R14B-01.4.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Jan 31 2011 Hans Ulrich Niedermann - R14B-01.4 +- Adapt %%files: Add wxSystemSettings.3 man page +- Adapt %%files for change from run_test to ct_run +- Remove rpaths from lib/ssl-*/bin/esock_ssl +- Update erlang.spec and otp-00*.patch without numbers +- otp-get-patches.sh: Remove patch numbering + +* Sun Jan 30 2011 Hans Ulrich Niedermann - R14B-01.3 +- Add "buffer overflow during build" fix (#663260) + +* Wed Dec 15 2010 Hans Ulrich Niedermann - R14B-01.2 +- Update to rebased patches + +* Mon Dec 13 2010 Hans Ulrich Niedermann - R14B-01.1 +- Update to upstream release R14B01 (the patches still need work) + +* Thu Nov 18 2010 Peter Lemenkov - R14B-0.5 +- Fixed building on EL-6 + +* Mon Nov 15 2010 Peter Lemenkov - R14B-0.4 +- No more dependent on erlang-rpm-macros sub-package + +* Thu Nov 11 2010 Peter Lemenkov - R14B-0.3 +- Remove pre-built stuff + +* Fri Nov 5 2010 Peter Lemenkov - R14B-0.2 +- Fixed doc-files and man-pages instalation for EL-5 +- Temporarily (I hope) disabled emacs-related stuff in EL-5 +- Disable erlang-rpm-macros subpackage for EL-5 + +* Wed Sep 29 2010 jkeating - R14B-0.1.1 +- Rebuilt for gcc bug 634757 + +* Thu Sep 16 2010 Peter Lemenkov - R14B-0.1 +- R14B release + +* Mon Aug 2 2010 Hans Ulrich Niedermann - R14A-0.6 +- Implement '--without doc' conditional for faster test builds (#618245). + +* Fri Jul 30 2010 Hans Ulrich Niedermann - R14A-0.5 +- Properly hook up (X)Emacs erlang-mode (#491165) + +* Mon Jul 26 2010 Hans Ulrich Niedermann - R14A-0.4 +- Spec file cleanups: + - Avoid accidental %%rel increments by rpmdev-bumpspec. + - Use %%global for our spec file macros. + - Use macro for redundant directory names. + - Whitespace cleanups (tabs vs. spaces). + - Fix accidental macro usage in %%changelog. + +* Wed Jul 14 2010 Dan Horák - R14A-0.3 +- rebuilt against wxGTK-2.8.11-2 + +* Sat Jun 26 2010 Peter Lemenkov - R14A-0.2 +- Updated list of explicit requirements + +* Fri Jun 18 2010 Peter Lemenkov - R14A-0.1 +- R14A release + +* Sat May 15 2010 Peter Lemenkov - R13B-04.12 +- Moved dialyzer and typer executables from erts to appropriate rpms + +* Fri May 14 2010 Peter Lemenkov - R13B-04.11 +- Do not mention nteventlog in os_mon.app, see rhbz #592251 + +* Thu May 6 2010 Peter Lemenkov - R13B-04.10 +- Disabled automatic requires/provides generation + +* Wed Apr 28 2010 Peter Lemenkov - R13B-04.9 +- Added missing files, necessary for emacs (see rhbz #585349) - Patches rebased -- Added patches 6,7 from trunk -- Use %%configure + +* Tue Apr 27 2010 Peter Lemenkov - R13B-04.8 +- Added missing BuildRequires libxslt (for building docs) +- Removed %%post script completely (resolves rhbz #586428) +- Since now both docs and man-pages are built from sources +- No need to manually create symlinks in %%{_bindir} + +* Mon Apr 26 2010 Peter Lemenkov - R13B-04.7 +- Build with erlang-rpm-macros +- Man-files are packed with packages, they belong to + +* Mon Apr 26 2010 Peter Lemenkov - R13B-04.6 +- Made erlang-rpm-macros as separate package +- Fix error while installing erlang-rpm-macros + +* Sat Apr 17 2010 Peter Lemenkov - R13B-04.5 +- Use erlang rpm macros for adding provides/reqires +- All %%{_libdir}/erlang/lib/* items were splitted off from main package, which + in turn becomes purely virtual now. +- Removing RPM_BUILD_ROOT from several installed files is no longer required + +* Sat Apr 17 2010 Peter Lemenkov - R13B-04.4 +- Added missing Requires mesa-libGL{U} for wx module (rhbz #583287) +- Fix for buffer overflow in pcre module (rhbz #583288) +- Doc sub-package marked as noarch (partially resolves rhbz #491165) + +* Fri Mar 26 2010 Peter Lemenkov - R13B-04.3 +- Added rpm-related stuff for auto-generating erlang dependencies in the future builds +- Since now *.yrl files are removed too. +- Removed unnecessary C and Java sources + +* Fri Mar 26 2010 Peter Lemenkov - R13B-04.2 +- Do not remove all files from %%{_libdir}/erlang/lib/*/src - keep + *.[yh]rl intact +- Fix permissions for megaco *.so objects +- Fix permissions for asn1 *.so objects + +* Sat Feb 13 2010 Peter Lemenkov - R13B-04.1 +- New release R13B-04 +- Since now we're using %%configure instead of ./configure +- Removed no longer needed fix for newer glibc version +- Dropped %%patch3 (applied upstream) +- Rebased patches +- Added BR fop for rebuilding of docs +- Use system-wide zlib instead of shipped one +- Dropped BR gd-devel +- Removed unneeded sources (should be fixed upstream) +- Fixed permission for wx driver (should be fixed upstream) + +* Thu Oct 22 2009 Lubomir Rintel (Good Data) - R13B-02-1 +- Update to R13B-02 (patched for what's released as 02-1 by upstream) + +* Tue Aug 25 2009 Tomas Mraz - R13B-01.2 +- rebuilt with new openssl + +* Mon Aug 10 2009 Gerard Milmeister - R13B-01.1 +- update to R13B01 + +* Fri Jul 24 2009 Fedora Release Engineering - R12B-6.7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild * Tue Apr 21 2009 Debarshi Ray R12B-5.7 - Updated rpath patch. @@ -206,7 +3020,7 @@ rm -rf $RPM_BUILD_ROOT * Sun Mar 1 2009 Gerard Milmeister - R12B-5.6 - new release R12B-5 -- link escript and dialyzer to %{_bindir} +- link escript and dialyzer to %%{_bindir} * Tue Feb 24 2009 Fedora Release Engineering - R12B-5.5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild @@ -242,7 +3056,7 @@ rm -rf $RPM_BUILD_ROOT - new release R12B-0 * Wed Dec 05 2007 Release Engineering - R11B-6 - - Rebuild for deps +- Rebuild for deps * Sun Aug 19 2007 Gerard Milmeister - R11B-5.3 - fix some permissions diff --git a/otp-0001-Do-not-format-man-pages-and-do-not-install-miscellan.patch b/otp-0001-Do-not-format-man-pages-and-do-not-install-miscellan.patch new file mode 100644 index 0000000..270792a --- /dev/null +++ b/otp-0001-Do-not-format-man-pages-and-do-not-install-miscellan.patch @@ -0,0 +1,41 @@ +From: Peter Lemenkov +Date: Thu, 25 Feb 2010 16:45:28 +0300 +Subject: [PATCH] Do not format man-pages and do not install miscellaneous + utilities for dealing with man-pages. + +Signed-off-by: Peter Lemenkov + +diff --git a/erts/etc/common/Makefile.in b/erts/etc/common/Makefile.in +index 42af9c87dc..c017e0a4ed 100644 +--- a/erts/etc/common/Makefile.in ++++ b/erts/etc/common/Makefile.in +@@ -552,10 +552,6 @@ endif + ifneq ($(INSTALL_TOP_BIN),) + $(INSTALL_PROGRAM) $(INSTALL_TOP_BIN) "$(RELEASE_PATH)" + endif +-ifneq ($(INSTALL_MISC),) +- $(INSTALL_DIR) "$(RELEASE_PATH)/misc" +- $(INSTALL_SCRIPT) $(INSTALL_MISC) "$(RELEASE_PATH)/misc" +-endif + ifneq ($(INSTALL_SRC),) + $(INSTALL_DIR) "$(RELEASE_PATH)/erts-$(VSN)/src" + $(INSTALL_DATA) $(INSTALL_SRC) "$(RELEASE_PATH)/erts-$(VSN)/src" +diff --git a/erts/etc/unix/Install.src b/erts/etc/unix/Install.src +index b00dd09f1a..2147774f50 100644 +--- a/erts/etc/unix/Install.src ++++ b/erts/etc/unix/Install.src +@@ -143,14 +143,5 @@ cp -p ../releases/%I_SYSTEM_VSN%/start_*.boot . + cp -p ../releases/%I_SYSTEM_VSN%/no_dot_erlang.boot . + cp -p $Name.boot start.boot + cp -p ../releases/%I_SYSTEM_VSN%/$Name.script start.script +-# +-# Fixing the man pages +-# +- +-if [ -d "$ERL_ROOT/man" ] +-then +- cd "$ERL_ROOT" +- ./misc/format_man_pages "$ERL_ROOT" +-fi + + exit 0 diff --git a/otp-0002-Remove-rpath.patch b/otp-0002-Remove-rpath.patch new file mode 100644 index 0000000..5cadc0c --- /dev/null +++ b/otp-0002-Remove-rpath.patch @@ -0,0 +1,19 @@ +From: Peter Lemenkov +Date: Thu, 25 Feb 2010 16:57:43 +0300 +Subject: [PATCH] Remove rpath + +Signed-off-by: Peter Lemenkov + +diff --git a/lib/crypto/c_src/Makefile.in b/lib/crypto/c_src/Makefile.in +index aedc9e7a13..b27c2aa01b 100644 +--- a/lib/crypto/c_src/Makefile.in ++++ b/lib/crypto/c_src/Makefile.in +@@ -147,7 +147,7 @@ endif + endif + + ifeq ($(DYNAMIC_OR_WIN_CRYPTO_LIB),yes) +-SSL_DED_LD_RUNTIME_LIBRARY_PATH = @SSL_DED_LD_RUNTIME_LIBRARY_PATH@ ++SSL_DED_LD_RUNTIME_LIBRARY_PATH = + CRYPTO_LINK_LIB=$(SSL_DED_LD_RUNTIME_LIBRARY_PATH) -L$(SSL_LIBDIR) -l$(SSL_CRYPTO_LIBNAME) + EXTRA_FLAGS = -DHAVE_DYNAMIC_CRYPTO_LIB + else diff --git a/otp-0003-Do-not-install-C-sources.patch b/otp-0003-Do-not-install-C-sources.patch new file mode 100644 index 0000000..23056c4 --- /dev/null +++ b/otp-0003-Do-not-install-C-sources.patch @@ -0,0 +1,93 @@ +From: Peter Lemenkov +Date: Fri, 18 Jun 2010 23:41:33 +0400 +Subject: [PATCH] Do not install C sources + +Don't install *.c and *.o files. + +Excepts ones from the internal erl_interface. These +API headers are necessary. See rhbz #818419 for the +explanation why they're necessary for the low-level +interaction with the Erlang nodes: + +https://bugzilla.redhat.com/818419 + +Signed-off-by: Peter Lemenkov + +diff --git a/lib/asn1/c_src/Makefile b/lib/asn1/c_src/Makefile +index 82a6b6e87a..5f2fe8ba7d 100644 +--- a/lib/asn1/c_src/Makefile ++++ b/lib/asn1/c_src/Makefile +@@ -137,8 +137,6 @@ include $(ERL_TOP)/make/otp_release_targets.mk + release_spec: opt + $(INSTALL_DIR) "$(RELSYSDIR)/priv/lib" + $(INSTALL_PROGRAM) $(NIF_SHARED_OBJ_FILE) "$(RELSYSDIR)/priv/lib" +- $(INSTALL_DIR) "$(RELSYSDIR)/c_src" +- $(INSTALL_DATA) *.c "$(RELSYSDIR)/c_src" + + release_docs_spec: + +diff --git a/lib/erl_interface/src/Makefile.in b/lib/erl_interface/src/Makefile.in +index fa1ea3cd39..b977b6afe5 100644 +--- a/lib/erl_interface/src/Makefile.in ++++ b/lib/erl_interface/src/Makefile.in +@@ -715,13 +715,11 @@ ifeq (@DYNAMIC_LIB@, yes) + endif + $(INSTALL_PROGRAM) $(EXE_TARGETS) "$(RELSYSDIR)/bin" + $(INSTALL_DATA) $(EXTRA) "$(RELSYSDIR)/src" +- $(INSTALL_DATA) connect/*.[ch] "$(RELSYSDIR)/src/connect" +- $(INSTALL_DATA) decode/*.[ch] "$(RELSYSDIR)/src/decode" +- $(INSTALL_DATA) encode/*.[ch] "$(RELSYSDIR)/src/encode" +- $(INSTALL_DATA) epmd/*.[ch] "$(RELSYSDIR)/src/epmd" +- $(INSTALL_DATA) misc/*.[ch] "$(RELSYSDIR)/src/misc" +- $(INSTALL_DATA) global/*.[ch] "$(RELSYSDIR)/src/global" +- $(INSTALL_DATA) prog/*.[ch] "$(RELSYSDIR)/src/prog" ++ $(INSTALL_DATA) connect/*.h "$(RELSYSDIR)/src/connect" ++ $(INSTALL_DATA) decode/*.h "$(RELSYSDIR)/src/decode" ++ $(INSTALL_DATA) encode/*.h "$(RELSYSDIR)/src/encode" ++ $(INSTALL_DATA) epmd/*.h "$(RELSYSDIR)/src/epmd" ++ $(INSTALL_DATA) misc/*.h "$(RELSYSDIR)/src/misc" + + release_docs: + +diff --git a/lib/megaco/src/flex/Makefile.in b/lib/megaco/src/flex/Makefile.in +index 3649e2c392..d8c5c68b99 100644 +--- a/lib/megaco/src/flex/Makefile.in ++++ b/lib/megaco/src/flex/Makefile.in +@@ -251,7 +251,7 @@ release_spec: opt + $(INSTALL_DATA) $(ERL_FILES) $(INTERNAL_HRL_FILES) "$(RELSYSDIR)/src/flex" + $(INSTALL_DATA) $(TARGET_FILES) "$(RELSYSDIR)/ebin" + ifeq ($(ENABLE_MEGACO_FLEX_SCANNER),true) +- $(INSTALL_DATA) $(FLEX_FILES) $(C_TARGETS) "$(RELSYSDIR)/src/flex" ++ $(INSTALL_DATA) $(FLEX_FILES) "$(RELSYSDIR)/src/flex" + $(INSTALL_PROGRAM) $(SOLIBS) "$(RELSYSDIR)/priv/lib" + endif + +diff --git a/lib/odbc/c_src/Makefile.in b/lib/odbc/c_src/Makefile.in +index d1b26743a6..cf8faae1f5 100644 +--- a/lib/odbc/c_src/Makefile.in ++++ b/lib/odbc/c_src/Makefile.in +@@ -129,11 +129,8 @@ include $(ERL_TOP)/make/otp_release_targets.mk + + release_spec: opt + ifdef EXE_TARGET +- $(INSTALL_DIR) "$(RELSYSDIR)/c_src" +- $(INSTALL_DATA) $(C_FILES) $(H_FILES) "$(RELSYSDIR)/c_src" + $(INSTALL_DIR) "$(RELSYSDIR)/priv" + $(INSTALL_DIR) "$(RELSYSDIR)/priv/bin" +- $(INSTALL_DIR) "$(RELSYSDIR)/priv/obj" + $(INSTALL_PROGRAM) $(EXE_TARGET) "$(RELSYSDIR)/priv/bin" + endif + +diff --git a/lib/os_mon/c_src/Makefile.in b/lib/os_mon/c_src/Makefile.in +index 27b156a2c9..f11ff303b6 100644 +--- a/lib/os_mon/c_src/Makefile.in ++++ b/lib/os_mon/c_src/Makefile.in +@@ -126,8 +126,6 @@ $(OBJDIR)/memsup.o: memsup.h + include $(ERL_TOP)/make/otp_release_targets.mk + + release_spec: opt +- $(INSTALL_DIR) "$(RELSYSDIR)/src" +- $(INSTALL_DATA) $(C_FILES) "$(RELSYSDIR)/src" + $(INSTALL_DIR) "$(RELSYSDIR)/priv/bin" + $(INSTALL_PROGRAM) $(TARGET_FILES) "$(RELSYSDIR)/priv/bin" + diff --git a/otp-0004-Do-not-install-Java-sources.patch b/otp-0004-Do-not-install-Java-sources.patch new file mode 100644 index 0000000..a8037ea --- /dev/null +++ b/otp-0004-Do-not-install-Java-sources.patch @@ -0,0 +1,19 @@ +From: Peter Lemenkov +Date: Sat, 19 Jun 2010 09:25:18 +0400 +Subject: [PATCH] Do not install Java sources + +Signed-off-by: Peter Lemenkov + +diff --git a/lib/jinterface/java_src/com/ericsson/otp/erlang/Makefile b/lib/jinterface/java_src/com/ericsson/otp/erlang/Makefile +index 089cf4ab1a..404654a437 100644 +--- a/lib/jinterface/java_src/com/ericsson/otp/erlang/Makefile ++++ b/lib/jinterface/java_src/com/ericsson/otp/erlang/Makefile +@@ -123,8 +123,6 @@ release release_docs release_tests release_html: + $(V_at)$(MAKE) $(MFLAGS) RELEASE_PATH="$(RELEASE_PATH)" $(TARGET_MAKEFILE) $@_spec + + release_spec: opt +- $(V_at)$(INSTALL_DIR) "$(RELSYSDIR)/java_src/com/ericsson/otp/erlang" +- $(V_at)$(INSTALL_DATA) $(JAVA_SRC) "$(RELSYSDIR)/java_src/com/ericsson/otp/erlang" + $(V_at)$(INSTALL_DIR) "$(RELSYSDIR)/priv" + $(V_at)$(INSTALL_DATA) $(JAVA_DEST_ROOT)$(JARFILE) "$(RELSYSDIR)/priv" + $(V_at)$(INSTALL_DIR) "$(RELSYSDIR)/ebin" diff --git a/otp-0005-Do-not-install-nteventlog-and-related-doc-files-on-n.patch b/otp-0005-Do-not-install-nteventlog-and-related-doc-files-on-n.patch new file mode 100644 index 0000000..1965881 --- /dev/null +++ b/otp-0005-Do-not-install-nteventlog-and-related-doc-files-on-n.patch @@ -0,0 +1,60 @@ +From: Peter Lemenkov +Date: Sat, 19 Jun 2010 09:59:39 +0400 +Subject: [PATCH] Do not install nteventlog and related doc-files on non-win32 + systems + +Signed-off-by: Peter Lemenkov + +diff --git a/lib/os_mon/doc/src/Makefile b/lib/os_mon/doc/src/Makefile +index 8e3882bfdc..ea999cf9c7 100644 +--- a/lib/os_mon/doc/src/Makefile ++++ b/lib/os_mon/doc/src/Makefile +@@ -31,11 +31,16 @@ APPLICATION=os_mon + # Target Specs + # ---------------------------------------------------- + XML_APPLICATION_FILES = ref_man.xml ++ifeq ($(findstring win32,$(TARGET)),win32) ++NTEVENTLOG_DOCFILE=nteventlog.xml ++else ++NTEVENTLOG_DOCFILE= ++endif + XML_REF3_FILES = cpu_sup.xml \ + disksup.xml \ + memsup.xml \ + os_sup.xml \ +- nteventlog.xml ++ $(NTEVENTLOG_DOCFILE) + + XML_REF6_FILES = os_mon_app.xml + +diff --git a/lib/os_mon/src/Makefile b/lib/os_mon/src/Makefile +index e28fb12548..ee32f3946f 100644 +--- a/lib/os_mon/src/Makefile ++++ b/lib/os_mon/src/Makefile +@@ -34,7 +34,13 @@ RELSYSDIR = $(RELEASE_PATH)/lib/os_mon-$(VSN) + # ---------------------------------------------------- + # Target Specs + # ---------------------------------------------------- +-MODULES= disksup memsup cpu_sup os_mon os_mon_mib os_sup os_mon_sysinfo nteventlog ++ifeq ($(findstring win32,$(TARGET)),win32) ++NTEVENTLOG=nteventlog ++else ++NTEVENTLOG= ++endif ++MODULES= disksup memsup cpu_sup os_mon os_mon_mib os_sup os_mon_sysinfo \ ++ $(NTEVENTLOG) + + INCLUDE=../include + CSRC=../c_src +@@ -78,7 +84,11 @@ docs: + # ---------------------------------------------------- + + $(APP_TARGET): $(APP_SRC) ../vsn.mk ++ifeq ($(findstring win32,$(TARGET)),win32) + $(vsn_verbose)sed -e 's;%VSN%;$(VSN);' $< > $@ ++else ++ $(vsn_verbose)sed -e 's;%VSN%;$(VSN);;s;,\s*nteventlog;;' $< > $@ ++endif + + $(APPUP_TARGET): $(APPUP_SRC) ../vsn.mk + $(vsn_verbose)sed -e 's;%VSN%;$(VSN);' $< > $@ diff --git a/otp-0006-Add-extra-search-directory.patch b/otp-0006-Add-extra-search-directory.patch new file mode 100644 index 0000000..2f872ef --- /dev/null +++ b/otp-0006-Add-extra-search-directory.patch @@ -0,0 +1,32 @@ +From: Peter Lemenkov +Date: Wed, 2 Aug 2017 16:12:19 +0300 +Subject: [PATCH] Add extra search directory + +Signed-off-by: Peter Lemenkov + +diff --git a/lib/kernel/src/code_server.erl b/lib/kernel/src/code_server.erl +index 7327636751..2e92e77598 100644 +--- a/lib/kernel/src/code_server.erl ++++ b/lib/kernel/src/code_server.erl +@@ -90,11 +90,17 @@ init(Ref, Parent, [Root,Mode]) -> + IPath = + case Mode of + interactive -> +- LibDir = filename:append(Root, "lib"), +- {ok,Dirs} = erl_prim_loader:list_dir(LibDir), +- Paths = make_path(LibDir, Dirs), ++ F = fun(R) -> ++ LD = filename:append(R, "lib"), ++ case erl_prim_loader:list_dir(LD) of ++ error -> []; ++ {ok, D} -> make_path(LD, D) ++ end ++ end, ++ Paths = F(Root), ++ SharedPaths = F("/usr/share/erlang"), + UserLibPaths = get_user_lib_dirs(), +- ["."] ++ UserLibPaths ++ Paths; ++ ["."] ++ UserLibPaths ++ Paths ++ SharedPaths; + _ -> + [] + end, diff --git a/otp-0007-Avoid-forking-sed-to-get-basename.patch b/otp-0007-Avoid-forking-sed-to-get-basename.patch new file mode 100644 index 0000000..d146ab2 --- /dev/null +++ b/otp-0007-Avoid-forking-sed-to-get-basename.patch @@ -0,0 +1,31 @@ +From: Jan Pazdziora +Date: Thu, 10 May 2018 18:35:02 +0200 +Subject: [PATCH] Avoid forking sed to get basename. + + +diff --git a/erts/etc/unix/erl.src.src b/erts/etc/unix/erl.src.src +index 536fa139d9..4dcffbc4c8 100644 +--- a/erts/etc/unix/erl.src.src ++++ b/erts/etc/unix/erl.src.src +@@ -49,7 +49,7 @@ else + fi + BINDIR="$ROOTDIR/erts-%VSN%/bin" + EMU=%EMULATOR%%EMULATOR_NUMBER% +-PROGNAME=`basename "$0"` ++PROGNAME=${0##*/} + export EMU + export ROOTDIR + export BINDIR +diff --git a/erts/etc/unix/start_erl.src b/erts/etc/unix/start_erl.src +index 34e0369710..62e613bba1 100644 +--- a/erts/etc/unix/start_erl.src ++++ b/erts/etc/unix/start_erl.src +@@ -37,7 +37,7 @@ VSN=`awk '{print $2}' $DataFile` + + BINDIR=$ROOTDIR/erts-$ERTS_VSN/bin + EMU=beam +-PROGNAME=`echo $0 | sed 's/.*\///'` ++PROGNAME=${0##*/} + export EMU + export ROOTDIR + export BINDIR diff --git a/otp-0008-Load-man-pages-from-system-wide-directory.patch b/otp-0008-Load-man-pages-from-system-wide-directory.patch new file mode 100644 index 0000000..e014671 --- /dev/null +++ b/otp-0008-Load-man-pages-from-system-wide-directory.patch @@ -0,0 +1,25 @@ +From: Francois-Denis Gonthier +Date: Thu, 20 Sep 2018 15:01:18 +0300 +Subject: [PATCH] Load man-pages from system-wide directory + +Patch allows one to use standard man path with erl -man command. +(Erlang manual pages are placed to /usr/share/man/ hierarchy +as required by Debian policy.) + +diff --git a/erts/etc/common/erlexec.c b/erts/etc/common/erlexec.c +index 888df87e35..14272f06c6 100644 +--- a/erts/etc/common/erlexec.c ++++ b/erts/etc/common/erlexec.c +@@ -716,8 +716,10 @@ int main(int argc, char **argv) + error("-man not supported on Windows"); + #else + argv[i] = "man"; +- erts_snprintf(tmpStr, sizeof(tmpStr), "%s/man", rootdir); +- set_env("MANPATH", tmpStr); ++ /* ++ * Conform to erlang-manpages content. ++ */ ++ putenv(strsave("MANSECT=3erl:1:5:7")); + execvp("man", argv+i); + error("Could not execute the 'man' command."); + #endif diff --git a/otp-0009-Add-GDB-tools.patch b/otp-0009-Add-GDB-tools.patch new file mode 100644 index 0000000..462324e --- /dev/null +++ b/otp-0009-Add-GDB-tools.patch @@ -0,0 +1,464 @@ +From: Peter Lemenkov +Date: Thu, 19 Jun 2025 13:17:52 +0200 +Subject: [PATCH] Add GDB tools + +* https://github.com/erlang/otp-gdb-tools +* Commit 7b864f58c534699e4124e31ecfda86041b941037. + +Signed-off-by: Peter Lemenkov + +diff --git a/erts/etc/unix/gdb-tools/README.md b/erts/etc/unix/gdb-tools/README.md +new file mode 100644 +index 0000000000..8a6cf92b1d +--- /dev/null ++++ b/erts/etc/unix/gdb-tools/README.md +@@ -0,0 +1,42 @@ ++# Erlang/OTP GDB Tools ++ ++This repository contains GDB tools that cannot ++be part of the main Erlang/OTP repository for licensing ++reasons. The tools are used when building and debugging ++Erlang/OTP with gdb and are installed as needed by the ++Erlang/OTP build system. ++ ++Right now the only tool in this repository is the jit-reader ++which is a plugin to gdb that allows it to read the stack of ++Erlang processes when using the JIT. This allows commands ++such as `backtrace` to show Erlang stackframes. For example: ++ ++``` ++(gdb) bt ++#0 0x00007fffa40005ee in global::call_bif_shared () ++#1 0x00007fffa411eaac in erl_eval:eval_lc1/7 () at erl_eval.erl:929 ++#2 0x00007fffa411e7bc in erl_eval:eval_lc/7 () at erl_eval.erl:917 ++#3 0x00007fffa4296528 in lists:map_1/2 () at lists.erl:2082 ++#4 0x00007fffa4296554 in lists:map_1/2 () at lists.erl:2082 ++#5 0x00007fffa4296554 in lists:map_1/2 () at lists.erl:2082 ++#6 0x00007fffa4296554 in lists:map_1/2 () at lists.erl:2082 ++..... ++#98 0x00007fffa4296554 in lists:map_1/2 () at lists.erl:2082 ++#99 0x00007fffa4296554 in lists:map_1/2 () at lists.erl:2082 ++#100 0x00007fffa4296554 in lists:map_1/2 () at lists.erl:2082 ++#101 0x00007fffa42963d4 in lists:map/2 () at lists.erl:2077 ++#102 0x00007fffa411e45c in erl_eval:do_apply/7 () at erl_eval.erl:904 ++#103 0x00007fffa45f4c58 in shell:exprs/7 () at shell.erl:893 ++#104 0x00007fffa45f42c4 in shell:eval_exprs/7 () at shell.erl:849 ++#105 0x00007fffa45f3dac in shell:eval_loop/4 () at shell.erl:834 ++#106 0x00007fffa40024b8 in erts_beamasm:normal_exit/0-CodeInfoPrologue () ++Backtrace stopped: previous frame inner to this frame (corrupt stack?) ++(gdb) ++``` ++ ++## Updates of jit-reader ++ ++When updating jit-reader you first need to update this repository ++and push the new version here. Then you need to run ++`./otp_build update_gdb_tools` in the Erlang/OTP repo for ++it to use the correct commit. +diff --git a/erts/etc/unix/gdb-tools/jit-reader.c b/erts/etc/unix/gdb-tools/jit-reader.c +new file mode 100644 +index 0000000000..3c39c5540d +--- /dev/null ++++ b/erts/etc/unix/gdb-tools/jit-reader.c +@@ -0,0 +1,386 @@ ++#include ++ ++#include ++#include ++#include ++#include ++ ++/* Useful links ++ * - https://pwparchive.wordpress.com/2011/11/20/new-jit-interface-for-gdb/ ++ * - https://sourceware.org/gdb/current/onlinedocs/gdb/Custom-Debug-Info.html ++ * - https://github.com/tetzank/asmjit-utilities ++ * - https://github.com/bminor/binutils-gdb/blob/master/gdb/testsuite/gdb.base/jitreader.c ++ */ ++ ++GDB_DECLARE_GPL_COMPATIBLE_READER ++ ++#if 0 ++#define HARD_DEBUG ++static FILE *log = NULL; ++#define LOG(...) do { fprintf(log, ##__VA_ARGS__); fflush(log); } while(0) ++#else ++#define LOG(...) ++#endif ++ ++typedef enum { ++ X64_RBP = 6, /* Frame pointer iff native frames are enabled */ ++ X64_RSP = 7, /* Stack pointer when using native stack */ ++ X64_R12 = 12, /* Stack pointer when using non-native stack */ ++ X64_R13 = 13, /* Current process */ ++ X64_RIP = 16 ++} X64Register; ++ ++typedef enum { ++ /* Return address only */ ++ ERTS_FRAME_LAYOUT_RA, ++ /* Frame pointer, return address */ ++ ERTS_FRAME_LAYOUT_FP_RA ++} ErtsFrameLayout; ++ ++struct emulator_info { ++ /* 0 = regular, 1 = frame pointers */ ++ int frame_layout; ++ const void *normal_exit; ++}; ++ ++struct erlang_module_info { ++ uint64_t base_address; ++ uint32_t range_count; ++ uint32_t code_size; ++ /* Module name, including null terminator. */ ++ uint16_t name_length; ++ char name[]; ++ /* array of range_info structures */ ++}; ++ ++struct range_info { ++ uint32_t start_offset; ++ uint32_t end_offset; ++ uint32_t line_count; ++ /* Range name, including null terminator. */ ++ uint16_t name_length; ++ char name[]; ++ /* array of line_info structures */ ++}; ++ ++struct line_info { ++ uint32_t start_offset; ++ uint32_t line_number; ++ /* File name, including null terminator. */ ++ uint16_t file_length; ++ char file[]; ++}; ++ ++enum debug_info_header { ++ DEBUG_INFO_HEADER_EMULATOR = 0, ++ DEBUG_INFO_HEADER_MODULE = 1, ++}; ++ ++struct debug_info { ++ enum debug_info_header header; ++ union { ++ struct emulator_info emu; ++ struct erlang_module_info mod; ++ } payload; ++}; ++ ++typedef struct range { ++ GDB_CORE_ADDR start; ++ GDB_CORE_ADDR end; ++#ifdef HARD_DEBUG ++ char *name; ++#endif ++} range; ++ ++typedef struct priv { ++ range *ranges; ++ int num_ranges; ++ ErtsFrameLayout frame_layout; ++ const void *normal_exit; ++} priv; ++ ++static enum gdb_status read_module_info(struct gdb_reader_funcs *self, ++ struct gdb_symbol_callbacks *cb, ++ struct erlang_module_info *module_info) { ++ struct gdb_object *obj = cb->object_open(cb); ++ GDB_CORE_ADDR mod_start, mod_end; ++ char *symfile = (char*)module_info; ++ priv *priv = self->priv_data; ++ ++ symfile += sizeof(*module_info) + module_info->name_length; ++ ++ mod_start = module_info->base_address; ++ mod_end = mod_start + module_info->code_size; ++ ++ priv->ranges = realloc(priv->ranges, (priv->num_ranges + 1) * sizeof(range)); ++ priv->ranges[priv->num_ranges].start = mod_start; ++ priv->ranges[priv->num_ranges].end = mod_end; ++#ifdef HARD_DEBUG ++ priv->ranges[priv->num_ranges].name = strdup(module_info->name); ++#endif ++ priv->num_ranges += 1; ++ ++ LOG("Add module `%s` (0x%lx, 0x%lx)\r\n", ++ module_info->name, mod_start, mod_end); ++ ++ for (int range = 0; range < module_info->range_count; range++) { ++ struct range_info *range_info; ++ struct gdb_symtab *symtab; ++ GDB_CORE_ADDR begin, end; ++ ++ range_info = (struct range_info *)symfile; ++ symfile += sizeof(*range_info) + range_info->name_length; ++ ++ begin = mod_start + range_info->start_offset; ++ end = mod_start + range_info->end_offset; ++ ++ LOG("Add range `%s` (0x%lx, 0x%lx), %u lines\r\n", ++ range_info->name, ++ begin, end, ++ range_info->line_count); ++ ++ /* A bug in GDB < 9 forces us to open and close the symtab for each ++ * iteration. */ ++ symtab = cb->symtab_open(cb, obj, module_info->name); ++ cb->block_open(cb, symtab, NULL, begin, end, range_info->name); ++ cb->symtab_close(cb, symtab); ++ ++ for (int line = 0; line < range_info->line_count; line++) { ++ struct gdb_line_mapping line_mapping; ++ struct line_info *line_info; ++ ++ line_info = (struct line_info *)symfile; ++ symfile += sizeof(*line_info) + line_info->file_length; ++ ++ line_mapping.pc = mod_start + line_info->start_offset; ++ line_mapping.line = line_info->line_number; ++ ++ LOG("\t%s:%u\r\n", line_info->file, line_info->line_number); ++ ++ /* The symbol table must be opened and closed on every single line ++ * for file names to work properly, as there is no other way to ++ * tell GDB that a certain line belongs to a different file than ++ * the rest of the table. Sigh. */ ++ symtab = cb->symtab_open(cb, obj, line_info->file); ++ ++ cb->block_open(cb, symtab, NULL, line_mapping.pc, end, ++ range_info->name); ++ cb->line_mapping_add(cb, symtab, 1, &line_mapping); ++ cb->symtab_close(cb, symtab); ++ } ++ } ++ ++ cb->object_close(cb, obj); ++ ++ return GDB_SUCCESS; ++} ++ ++static enum gdb_status read_emulator_info(struct gdb_reader_funcs *self, ++ struct gdb_symbol_callbacks *cb, ++ struct emulator_info *emulator_info) { ++ priv *priv = self->priv_data; ++ ++ priv->frame_layout = emulator_info->frame_layout; ++ priv->normal_exit = emulator_info->normal_exit; ++ ++ LOG("initialize: frame layout = %i\r\n", priv->frame_layout); ++ ++ return GDB_SUCCESS; ++} ++ ++static enum gdb_status read_debug_info(struct gdb_reader_funcs *self, ++ struct gdb_symbol_callbacks *cb, ++ void *memory, long memory_sz) { ++ struct debug_info *debug_info = memory; ++ ++ (void)memory_sz; ++ ++ switch (debug_info->header) { ++ case DEBUG_INFO_HEADER_EMULATOR: ++ return read_emulator_info(self, cb, &debug_info->payload.emu); ++ case DEBUG_INFO_HEADER_MODULE: ++ return read_module_info(self, cb, &debug_info->payload.mod); ++ } ++ ++ return GDB_FAIL; ++} ++ ++static void regfree(struct gdb_reg_value *reg) { ++ free(reg); ++} ++ ++static struct range *get_range(priv *priv, GDB_CORE_ADDR rip) { ++ for (int i = 0; i < priv->num_ranges; i++) { ++ if (rip >= priv->ranges[i].start && rip < priv->ranges[i].end) { ++ return &priv->ranges[i]; ++ } ++ } ++ ++ return NULL; ++} ++ ++static enum gdb_status unwind(struct gdb_reader_funcs *self, ++ struct gdb_unwind_callbacks *cb) { ++ GDB_CORE_ADDR rbp, rsp, rip; ++ struct range *range; ++ priv *priv; ++ ++ rbp = *(GDB_CORE_ADDR*)cb->reg_get(cb, X64_RBP)->value; ++ rsp = *(GDB_CORE_ADDR*)cb->reg_get(cb, X64_RSP)->value; ++ rip = *(GDB_CORE_ADDR*)cb->reg_get(cb, X64_RIP)->value; ++ ++ priv = self->priv_data; ++ range = get_range(priv, rip); ++ ++ /* Check that rip points to one of the addresses that we handle */ ++ if (range) { ++ struct gdb_reg_value *prev_rbp, *prev_rsp, *prev_rip; ++ ++ prev_rbp = malloc(sizeof(struct gdb_reg_value) + sizeof(char*)); ++ prev_rsp = malloc(sizeof(struct gdb_reg_value) + sizeof(char*)); ++ prev_rip = malloc(sizeof(struct gdb_reg_value) + sizeof(char*)); ++ ++ LOG("UNWIND match %s: rbp: 0x%lx rsp: 0x%lx rip: 0x%lx \r\n", ++ range->name, rbp, rsp, rip); ++ ++ prev_rbp->free = ®free; ++ prev_rbp->defined = 1; ++ prev_rbp->size = sizeof(char*); ++ prev_rsp->free = ®free; ++ prev_rsp->defined = 1; ++ prev_rsp->size = sizeof(char*); ++ prev_rip->free = ®free; ++ prev_rip->defined = 1; ++ prev_rip->size = sizeof(char*); ++ ++ if (priv->frame_layout == ERTS_FRAME_LAYOUT_FP_RA) { ++ /* Frame pointers are enabled, which means that rbp will point to ++ * where we stored the previous frames rbp. Also the previous ++ * frames address will be at rbp + 8 and the previous frames rsp ++ * will be rbp + 16. ++ * ++ * 0x00: <- prev_rsp ++ * 0x08: prev call addr ++ * 0x10: prev rbp <- curr rbp ++ * 0x18: current frame ++ * 0x20: <- curr rip */ ++ cb->target_read(rbp + 1 * sizeof(char*), &prev_rip->value, ++ sizeof(char*)); ++ cb->target_read(rbp + 0 * sizeof(char*), &prev_rbp->value, ++ sizeof(char*)); ++ *(GDB_CORE_ADDR*)prev_rsp->value = rbp + sizeof(char*[2]); ++ } else { ++ /* Normal frame layout, we need to scan the stack. */ ++ cb->target_read(rsp, &prev_rip->value, sizeof(char*)); ++ ++ for (rsp += sizeof(char*); ; rsp += sizeof(char*)) { ++ cb->target_read(rsp, &prev_rip->value, sizeof(char*)); ++ ++ LOG("rsp: 0x%lx rip: 0x%lx\r\n", ++ rsp, *(GDB_CORE_ADDR*)prev_rip->value); ++ ++ /* Check if it is a cp */ ++ if ((*(GDB_CORE_ADDR*)prev_rip->value & 0x3) == 0) { ++ break; ++ } ++ } ++ ++ *(GDB_CORE_ADDR*)prev_rsp->value = rsp; ++ *(GDB_CORE_ADDR*)prev_rbp->value = rsp - sizeof(char*); ++ } ++ ++ if (*(GDB_CORE_ADDR*)prev_rip->value == (uintptr_t)priv->normal_exit) { ++ LOG("Normal exit\r\n"); ++ *(GDB_CORE_ADDR*)prev_rsp->value = 0; ++ *(GDB_CORE_ADDR*)prev_rbp->value = 0; ++ } else { ++ LOG("UNWIND prev: rbp: 0x%lx rsp: 0x%lx rip: 0x%lx\r\n", ++ *(GDB_CORE_ADDR*)prev_rbp->value, ++ *(GDB_CORE_ADDR*)prev_rsp->value, ++ *(GDB_CORE_ADDR*)prev_rip->value); ++ } ++ ++ cb->reg_set(cb, X64_RIP, prev_rip); ++ cb->reg_set(cb, X64_RSP, prev_rsp); ++ cb->reg_set(cb, X64_RBP, prev_rbp); ++ ++ return GDB_SUCCESS; ++ } ++ ++ LOG("UNWIND no match: rbp: 0x%lx rsp: 0x%lx rip: 0x%lx\r\n", rbp, rsp, rip); ++ return GDB_FAIL; ++} ++ ++static struct gdb_frame_id get_frame_id(struct gdb_reader_funcs *self, ++ struct gdb_unwind_callbacks *cb){ ++ struct gdb_frame_id frame = {0, 0}; ++ GDB_CORE_ADDR rbp, rsp, rip; ++ struct range *range; ++ priv *priv; ++ ++ rbp = *(GDB_CORE_ADDR*)cb->reg_get(cb, X64_RBP)->value; ++ rsp = *(GDB_CORE_ADDR*)cb->reg_get(cb, X64_RSP)->value; ++ rip = *(GDB_CORE_ADDR*)cb->reg_get(cb, X64_RIP)->value; ++ ++ priv = self->priv_data; ++ range = get_range(priv, rip); ++ ++ LOG("FRAME: rip: 0x%lx rsp: 0x%lx rbp: 0x%lx \r\n", rip, rsp, rbp); ++ ++ if (range) { ++ frame.code_address = rip; ++ ++ if (priv->frame_layout == ERTS_FRAME_LAYOUT_FP_RA) { ++ frame.stack_address = rbp + sizeof(char*); ++ } else { ++ GDB_CORE_ADDR prev_rip; ++ ++ for (rsp += sizeof(char*); ; rsp += sizeof(char*)) { ++ cb->target_read(rsp, &prev_rip, sizeof(char*)); ++ ++ LOG("rsp: 0x%lx rip: 0x%lx\r\n", rsp, prev_rip); ++ ++ /* Check if it is a cp */ ++ if ((prev_rip & 0x3) == 0) { ++ break; ++ } ++ } ++ ++ frame.stack_address = rsp; ++ } ++ } ++ ++ LOG("FRAME: code_address: 0x%lx stack_address: 0x%lx\r\n", ++ frame.code_address, frame.stack_address); ++ ++ return frame; ++} ++ ++static void destroy(struct gdb_reader_funcs *self){ ++ free(self); ++} ++ ++struct gdb_reader_funcs *gdb_init_reader(void){ ++ struct gdb_reader_funcs *funcs = malloc(sizeof(struct gdb_reader_funcs)); ++ priv *priv_data = malloc(sizeof(priv)); ++ ++ priv_data->num_ranges = 1; ++ priv_data->ranges = malloc(sizeof(range)); ++ priv_data->ranges[0].start = 0; ++ priv_data->ranges[0].end = 0; ++ ++ funcs->reader_version = GDB_READER_INTERFACE_VERSION; ++ funcs->priv_data = priv_data; ++ ++ funcs->read = read_debug_info; ++ funcs->unwind = unwind; ++ funcs->get_frame_id = get_frame_id; ++ funcs->destroy = destroy; ++ ++#ifdef HARD_DEBUG ++ log = fopen("/tmp/jit-reader.log","w+"); ++ if (!log) fprintf(stderr,"Could not open /tmp/jit-reader.log"); ++#endif ++ ++ return funcs; ++} +diff --git a/erts/etc/unix/gdb-tools/jit-reader.mk b/erts/etc/unix/gdb-tools/jit-reader.mk +new file mode 100644 +index 0000000000..8ef0bccec2 +--- /dev/null ++++ b/erts/etc/unix/gdb-tools/jit-reader.mk +@@ -0,0 +1,9 @@ ++EXTRA_LIBS = $(BINDIR)/jit-reader.so ++ ++jit-reader: $(EXTRA_LIBS) ++ ++$(OBJDIR)/jit-reader.o: $(GDB_TOOLS)/jit-reader.c $(GDB_TOOLS)/jit-reader.h ++ $(V_CC) $(DED_CFLAGS) -I$(ETC) -o $@ -c $< ++ ++$(BINDIR)/jit-reader.so: $(OBJDIR)/jit-reader.o ++ $(V_LD) $(DED_LDFLAGS) -o $@ $^ diff --git a/otp-R12B-5-0001-Do-not-create-links-instead-of-real-files.patch b/otp-R12B-5-0001-Do-not-create-links-instead-of-real-files.patch deleted file mode 100644 index 8ba26f2..0000000 --- a/otp-R12B-5-0001-Do-not-create-links-instead-of-real-files.patch +++ /dev/null @@ -1,27 +0,0 @@ -From c99976fbfdef713f66b8235b8b5346b51efc7b76 Mon Sep 17 00:00:00 2001 -From: Peter Lemenkov -Date: Mon, 19 Apr 2010 13:31:43 +0400 -Subject: [PATCH 1/7] Do not create links instead of real files - ---- - Makefile.in | 4 ---- - 1 files changed, 0 insertions(+), 4 deletions(-) - -diff --git a/Makefile.in b/Makefile.in -index e65bfc5..fb1f90d 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -675,10 +675,6 @@ install.Install: - # Install erlang base public files - # - install.bin: -- for file in $(ERL_BASE_PUB_FILES); do \ -- rm -f $(BINDIR)/$$file; \ -- ${LN_S} $(ERLANG_BINDIR)/$$file $(BINDIR)/$$file; \ -- done - - # - # Directories needed before we can install --- -1.6.6.1 - diff --git a/otp-R12B-5-0002-Fix-symlinking-of-epmd.patch b/otp-R12B-5-0002-Fix-symlinking-of-epmd.patch deleted file mode 100644 index 131fde1..0000000 --- a/otp-R12B-5-0002-Fix-symlinking-of-epmd.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 27c1838e985581f07972c6d069f9b682ec9e07b5 Mon Sep 17 00:00:00 2001 -From: Peter Lemenkov -Date: Mon, 19 Apr 2010 13:33:50 +0400 -Subject: [PATCH 2/7] Fix symlinking of epmd - ---- - erts/etc/unix/Install.src | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/erts/etc/unix/Install.src b/erts/etc/unix/Install.src -index 6568766..a6acfeb 100644 ---- a/erts/etc/unix/Install.src -+++ b/erts/etc/unix/Install.src -@@ -87,7 +87,7 @@ if [ -h epmd ]; then - /bin/rm -f epmd - fi - --ln -s $ERL_ROOT/erts-%I_VSN%/bin/epmd epmd -+ln -s ../erts-%I_VSN%/bin/epmd epmd - - cp -p $ERL_ROOT/erts-%I_VSN%/bin/run_erl . - cp -p $ERL_ROOT/erts-%I_VSN%/bin/to_erl . --- -1.6.6.1 - diff --git a/otp-R12B-5-0003-Do-not-format-man-pages.patch b/otp-R12B-5-0003-Do-not-format-man-pages.patch deleted file mode 100644 index 1d59d46..0000000 --- a/otp-R12B-5-0003-Do-not-format-man-pages.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 5e704c7ad11d10904d136c5687b045f4f9ac8c96 Mon Sep 17 00:00:00 2001 -From: Peter Lemenkov -Date: Mon, 19 Apr 2010 13:35:14 +0400 -Subject: [PATCH 3/7] Do not format man-pages - ---- - erts/etc/unix/Install.src | 14 +------------- - 1 files changed, 1 insertions(+), 13 deletions(-) - -diff --git a/erts/etc/unix/Install.src b/erts/etc/unix/Install.src -index a6acfeb..5f7caac 100644 ---- a/erts/etc/unix/Install.src -+++ b/erts/etc/unix/Install.src -@@ -136,16 +136,4 @@ if [ "X$TARGET" != "Xsunos5" -a -d $ERL_ROOT/usr/lib ]; then - (ranlib $library) > /dev/null 2>&1 - done - fi -- -- --# --# Fixing the man pages --# -- --if [ -d $ERL_ROOT/man ] --then -- cd $ERL_ROOT -- ./misc/format_man_pages $ERL_ROOT --fi -- -- -+exit 0 --- -1.6.6.1 - diff --git a/otp-R12B-5-0004-Remove-rpath.patch b/otp-R12B-5-0004-Remove-rpath.patch deleted file mode 100644 index 0c7043b..0000000 --- a/otp-R12B-5-0004-Remove-rpath.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 03e261ee3152f3c45b23886e143c28bf2953f78d Mon Sep 17 00:00:00 2001 -From: Peter Lemenkov -Date: Mon, 19 Apr 2010 13:36:36 +0400 -Subject: [PATCH 4/7] Remove rpath - ---- - lib/crypto/c_src/Makefile.in | 2 +- - lib/crypto/priv/Makefile | 2 +- - lib/ssl/c_src/Makefile.in | 6 +++--- - 3 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/lib/crypto/c_src/Makefile.in b/lib/crypto/c_src/Makefile.in -index fb9ebae..eddcd0a 100644 ---- a/lib/crypto/c_src/Makefile.in -+++ b/lib/crypto/c_src/Makefile.in -@@ -80,7 +80,7 @@ ifeq ($(HOST_OS),) - HOST_OS := $(shell $(ERL_TOP)/erts/autoconf/config.guess) - endif - DYNAMIC_CRYPTO_LIB=@SSL_DYNAMIC_ONLY@ --LD_R_FLAG=@DED_LD_FLAG_RUNTIME_LIBRARY_PATH@ -+LD_R_FLAG= - ifeq ($(strip $(LD_R_FLAG)),) - LD_R_OPT = - else -diff --git a/lib/crypto/priv/Makefile b/lib/crypto/priv/Makefile -index b8acdac..2c2989a 100644 ---- a/lib/crypto/priv/Makefile -+++ b/lib/crypto/priv/Makefile -@@ -60,7 +60,7 @@ OBJS = $(OBJDIR)/crypto_drv.o - # ---------------------------------------------------- - - $(SO_DRIVER): $(OBJS) -- $(SO_LD) $(SO_LDFLAGS) -L$(SO_SSL_LIBDIR) -Wl,-R$(SO_SSL_LIBDIR) \ -+ $(SO_LD) $(SO_LDFLAGS) -L$(SO_SSL_LIBDIR) \ - -o $@ $^ -lcrypto - - $(DLL_DRIVER): $(OBJS) -diff --git a/lib/ssl/c_src/Makefile.in b/lib/ssl/c_src/Makefile.in -index 57b2929..6fc1140 100644 ---- a/lib/ssl/c_src/Makefile.in -+++ b/lib/ssl/c_src/Makefile.in -@@ -104,7 +104,7 @@ else - SSL_MAKEFILE = - endif - --CC_R_FLAG=@CFLAG_RUNTIME_LIBRARY_PATH@ -+CC_R_FLAG= - ifeq ($(findstring @,$(CC_R_FLAG)),@) - # Old erts configure used which hasn't replaced @CFLAG_RUNTIME_LIBRARY_PATH@; - # we try our best here instead... -@@ -113,9 +113,9 @@ ifeq ($(findstring darwin,$(TARGET)),darwin) # darwin: no flag - CC_R_FLAG = - else - ifeq ($(findstring osf,$(TARGET)),osf) # osf1: -Wl,-rpath, --CC_R_FLAG = -Wl,-rpath, -+CC_R_FLAG = - else # Default: -Wl,-R --CC_R_FLAG = -Wl,-R -+CC_R_FLAG = - endif - endif - endif --- -1.6.6.1 - diff --git a/otp-R12B-5-0005-Fix-missing-ssl-libraries-in-EPEL.patch b/otp-R12B-5-0005-Fix-missing-ssl-libraries-in-EPEL.patch deleted file mode 100644 index 9ae1e61..0000000 --- a/otp-R12B-5-0005-Fix-missing-ssl-libraries-in-EPEL.patch +++ /dev/null @@ -1,25 +0,0 @@ -From eb824c996de021797b6a4dcce233e5ddb54b8059 Mon Sep 17 00:00:00 2001 -From: Peter Lemenkov -Date: Mon, 19 Apr 2010 13:39:17 +0400 -Subject: [PATCH 5/7] Fix missing ssl-libraries in EPEL - ---- - lib/ssl/c_src/Makefile.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/lib/ssl/c_src/Makefile.in b/lib/ssl/c_src/Makefile.in -index 6fc1140..9bdc2ad 100644 ---- a/lib/ssl/c_src/Makefile.in -+++ b/lib/ssl/c_src/Makefile.in -@@ -40,7 +40,7 @@ VSN=$(SSL_VSN) - CC = @CC@ - LD = @LD@ - SHELL = /bin/sh --LIBS = @LIBS@ -+LIBS = @LIBS@ -lkeyutils -lselinux - PLAIN_CFLAGS = @CFLAGS@ - - # ---------------------------------------------------- --- -1.6.6.1 - diff --git a/otp-R12B-5-0006-Fix-shared-libraries-installation.patch b/otp-R12B-5-0006-Fix-shared-libraries-installation.patch deleted file mode 100644 index 4db1dbf..0000000 --- a/otp-R12B-5-0006-Fix-shared-libraries-installation.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 43a522c155f9cdf60f741d10cee9b99402143437 Mon Sep 17 00:00:00 2001 -From: Peter Lemenkov -Date: Mon, 19 Apr 2010 13:44:40 +0400 -Subject: [PATCH 6/7] Fix shared libraries installation - -Several shared libraries (asn1_erl_drv.so, megaco_flex_scanner_drv_mt.so, -megaco_flex_scanner_drv.so) were installed as data files previously. ---- - lib/asn1/c_src/Makefile.in | 2 +- - lib/megaco/src/flex/Makefile.in | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/lib/asn1/c_src/Makefile.in b/lib/asn1/c_src/Makefile.in -index e1aad44..73325bb 100644 ---- a/lib/asn1/c_src/Makefile.in -+++ b/lib/asn1/c_src/Makefile.in -@@ -131,7 +131,7 @@ include $(ERL_TOP)/make/otp_release_targets.mk - - release_spec: opt - $(INSTALL_DIR) $(RELSYSDIR)/priv/lib -- $(INSTALL_DATA) $(SHARED_OBJ_FILES) $(RELSYSDIR)/priv/lib -+ $(INSTALL_PROGRAM) $(SHARED_OBJ_FILES) $(RELSYSDIR)/priv/lib - $(INSTALL_DIR) $(RELSYSDIR)/c_src - $(INSTALL_DATA) $(C_FILES) $(RELSYSDIR)/c_src - -diff --git a/lib/megaco/src/flex/Makefile.in b/lib/megaco/src/flex/Makefile.in -index 127f8b2..88c0876 100644 ---- a/lib/megaco/src/flex/Makefile.in -+++ b/lib/megaco/src/flex/Makefile.in -@@ -219,7 +219,7 @@ release_spec: opt - $(INSTALL_DATA) $(TARGET_FILES) $(RELSYSDIR)/ebin - ifeq ($(ENABLE_MEGACO_FLEX_SCANNER),true) - $(INSTALL_DATA) $(FLEX_FILES) $(RELSYSDIR)/src/flex -- $(INSTALL_DATA) $(SOLIBS) $(RELSYSDIR)/priv/lib -+ $(INSTALL_PROGRAM) $(SOLIBS) $(RELSYSDIR)/priv/lib - endif - - --- -1.6.6.1 - diff --git a/otp-R12B-5-0007-Fix-check-for-compile-workspace-overflow.patch b/otp-R12B-5-0007-Fix-check-for-compile-workspace-overflow.patch deleted file mode 100644 index b6eb746..0000000 --- a/otp-R12B-5-0007-Fix-check-for-compile-workspace-overflow.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 4c90a8bb06e8bed4b62e15b78b461edb0e606df5 Mon Sep 17 00:00:00 2001 -From: Peter Lemenkov -Date: Mon, 19 Apr 2010 13:45:41 +0400 -Subject: [PATCH 7/7] Fix check for compile workspace overflow - -Patch from: -http://vcs.pcre.org/viewvc/code/trunk/pcre_compile.c?r1=504&r2=505&view=patch - -Test case: -N = 819, re:compile([lists:duplicate(N, $(), lists:duplicate(N, $))]). - -Compiling large regular expressions could overflow the workspace -buffer. Modify the test to check for a value smaller than the buffer -size. ---- - erts/emulator/pcre/pcre_compile.c | 9 +++++++-- - 1 files changed, 7 insertions(+), 2 deletions(-) - -diff --git a/erts/emulator/pcre/pcre_compile.c b/erts/emulator/pcre/pcre_compile.c -index 5d2be9a..08ce2b0 100644 ---- a/erts/emulator/pcre/pcre_compile.c -+++ b/erts/emulator/pcre/pcre_compile.c -@@ -91,6 +91,11 @@ is 4 there is plenty of room. */ - - #define COMPILE_WORK_SIZE (4096) - -+/* The overrun tests check for a slightly smaller size so that they detect the -+overrun before it actually does run off the end of the data block. */ -+ -+#define WORK_SIZE_CHECK (COMPILE_WORK_SIZE - 100) -+ - - /* Table for handling escaped characters in the range '0'-'z'. Positive returns - are simple data values; negative values are for special things like \d and so -@@ -2444,7 +2449,7 @@ for (;; ptr++) - #ifdef DEBUG - if (code > cd->hwm) cd->hwm = code; /* High water info */ - #endif -- if (code > cd->start_workspace + COMPILE_WORK_SIZE) /* Check for overrun */ -+ if (code > cd->start_workspace + WORK_SIZE_CHECK) /* Check for overrun */ - { - *errorcodeptr = ERR52; - goto FAILED; -@@ -2493,7 +2498,7 @@ for (;; ptr++) - /* In the real compile phase, just check the workspace used by the forward - reference list. */ - -- else if (cd->hwm > cd->start_workspace + COMPILE_WORK_SIZE) -+ else if (cd->hwm > cd->start_workspace + WORK_SIZE_CHECK) - { - *errorcodeptr = ERR52; - goto FAILED; --- -1.6.6.1 - diff --git a/otp-get-patches.sh b/otp-get-patches.sh new file mode 100755 index 0000000..75d4a54 --- /dev/null +++ b/otp-get-patches.sh @@ -0,0 +1,66 @@ +#!/bin/bash +# Usage: +# ./otp-get-patches.sh /path/to/otp OTP_R14B02 fedora-R14B02 +# +# otp-get-patches.sh - update erlang.spec and otp-00*.patch files +# +# otp-get-patches.sh updates the erlang.spec and otp-00*.patch +# files in the git index. After an otp-get-patches.sh run, you +# will need to review the staged git changes, possibly adapt the +# 'Release:' and '%changelog' parts of erlang.spec, and can then +# "git commit" everything. +# +# Caution: Leave the four special comment lines untouched in the +# spec file, as otp-get-patches.sh requires them and will only +# touch the parts of erlang.spec between the respective start/end +# comment pair: +# +# # start of autogenerated patch tag list +# # end of autogenerated patch tag list + +# Command line parsing +otp_dir="${1:?'Fatal: otp git repo dir required'}" +otp_upstream="${2:?'Fatal: git ref to upstream release required'}" +otp_fedora="${3:?'Fatal: git ref to branch with fedora patches required'}" + +# Setup +set -e +# set -x +tmpdir="$(mktemp -d --tmpdir="$PWD")" + +# Generate patch files +pushd "$otp_dir" +git format-patch -N --no-signature --no-stat -o "$tmpdir" "${otp_upstream}..${otp_fedora}" > "$tmpdir/patch-list.txt" +popd + +test -s "$tmpdir/patch-list.txt" + +# Process patch files +echo "# start of autogenerated patch tag list" > "$tmpdir/patch-list-tags.txt" +n=1 +while read patch +do + otppatch="$(dirname "$patch")/otp-$(basename "$patch")" + ${SED-sed} -e '1d' -e '/^-- $/,$d' "$patch" > "$otppatch" + rm -f "$patch" + echo "Patch$n: $(basename "$otppatch")" >> "$tmpdir/patch-list-tags.txt" + n=$(($n + 1)) +done < "$tmpdir/patch-list.txt" +echo "# end of autogenerated patch tag list" >> "$tmpdir/patch-list-tags.txt" + +# Create updated spec file +specfile="erlang.spec" +newspec1="${tmpdir}/${specfile}.new1" +sed '/^# start of autogenerated patch tag list$/,$d' "$specfile" > "$newspec1" +cat "$tmpdir/patch-list-tags.txt" >> "$newspec1" +sed '1,/^# end of autogenerated patch tag list/d' "$specfile" >> "$newspec1" + +# Actually put all changes into git index +git rm -f otp-00*.patch +mv "$tmpdir/otp-00"*.patch . +git add otp-00*.patch +mv -f "$newspec1" "$specfile" +git add "$specfile" + +rm -rf "$tmpdir" +# End of file. diff --git a/otp-make-subpackages.py b/otp-make-subpackages.py new file mode 100644 index 0000000..fd9df5e --- /dev/null +++ b/otp-make-subpackages.py @@ -0,0 +1,174 @@ +import glob +import os +import re +import rpm +import sys + +ts = rpm.TransactionSet() + +packages = [] +for arg in sys.argv[1:]: + packages += glob.glob(arg) + +erlang_provides = {} +erlang_requires = {} + +package_names = [] +package_headers = {} + +## +## Custom tweaks begins here +## + +# These packages should be marked as noarch +package_noarch = [ + "emacs-erlang", + "emacs-erlang-el", + "erlang-doc"] + +# These are additional Requires which cannot be picked up automatically (yet). +# TODO these should be added automatically +package_additional_requires = { + "emacs-erlang": ["emacs-common-erlang = %{version}-%{release}", "emacs(bin) >= %{_emacs_version}" ], + "emacs-erlang-el": ["emacs-erlang = %{version}-%{release}"], + "erlang-dialyzer": ["graphviz"], + "erlang-erl_interface": ["%{name}-erts%{?_isa} = %{version}-%{release}"], + # This library (lksctp-tools) is dlopened so it can't be picked + # up automatically by the RPM dependency checker + "erlang-erts": ["lksctp-tools"], + "erlang-gs": ["tk"], + # Stores files/links in /usr/share/java so has to depend on jpackage-utils + "erlang-ic": ["jpackage-utils"], + # Stores files/links in /usr/share/java so has to depend on jpackage-utils + "erlang-jinterface": ["%{name}-erts%{?_isa} = %{version}-%{release}", "jpackage-utils"], + "erlang-wx": ["mesa-libGL", "mesa-libGLU"], + } + +package_additional_buildrequires = { + "emacs-erlang": ["emacs", "emacs-el"], + "erlang-crypto": ["openssl-devel"], + "erlang-diameter": ["ed"], + + # BEWARE. No fop for EPEL5, and only for x86/x86_64 in EPEL6, + # so we cannot regenerate docs here. (Un)Fortunately we dropped + # support for EPEL6 and older versions. + # FIXME add bootstrap condition first. + "erlang-doc": ["fop", "libxslt"], + + "erlang-erts": ["lksctp-tools-devel", "m4", "ncurses-devel", "zlib-devel"], + "erlang-gs": ["tcl-devel", "tk-devel"], + + # in EPEL6 on arches different from %{ix86} x86_64 we have to + # use java-devel-gcj, so technically this requirement makes it + # impossible to build Java support there. (Un)Fortunately we + # already dropped full support for EPEL6 and older versions. + "erlang-ic": ["java-devel"], + "erlang-jinterface": ["java-devel"], + + "erlang-odbc": ["unixODBC-devel"], + } + +package_additional_obsoletes = { + "erlang-erts": [ + "erlang-appmon", + "erlang-docbuilder", + "erlang-inviso", + "erlang-pman", + "erlang-toolbar", + "erlang-tv"], + } + +## +## Custom tweaks ends here +## + +# To match 'erlang(asn1ct_eval_ext:transform_to_EXTERNAL1994/1)' +prog = re.compile("^erlang(.*:.*/\d+)") +rpmmask = re.compile(".*\.rpm") + +# iterate over all rpms +for package in sorted([p for p in packages if rpmmask.match(p)]): + + # A tricky part. We are processing packages, rebuilt with + # %{__erlang_provides_requires}. Otherwise we won't get information + # about imports/exports (until we learn how to parse Erlang BEAM file + # headers with Python. + fd = os.open(package, os.O_RDONLY) + h = ts.hdrFromFdno(fd) + os.close(fd) + + rpm_name = h[rpm.RPMTAG_NAME] + + # Let's calculate provides + # We'll create dictionary to speedup future use + # FIXME duplicate provides + local_provides = [p for p in h[rpm.RPMTAG_PROVIDENAME] if prog.match(p)] + erlang_provides.update({k: rpm_name for k in local_provides}) + + # Let's calculate requires + erlang_requires.update({rpm_name: [r for r in h[rpm.RPMTAG_REQUIRENAME] if prog.match(r) and not r in local_provides]}) + + package_headers.update({rpm_name: h}) + + package_names.append(rpm_name) + +namemask = re.compile("^erlang-[a-zA-Z0-9_]*$") + +print "### BEGIN OF AUTOGENERATED LIST ###" +print "" + +for name in package_names: + h = package_headers[name] + + if name == "erlang-doc": + # Additional ifdef just for this sub-package (see below) + print "%if %{with doc}" + + if namemask.match(name): + print "%%package %s" % name.replace("erlang-", "") + else: + print "%%package -n %s" % name + + print "Summary: %s" % h[rpm.RPMTAG_SUMMARY] + print "Group: %s" % h[rpm.RPMTAG_GROUP] + + rawdeps = [erlang_provides.get(r, "Error: missing requires: %s" % r) for r in erlang_requires[name]] + + deps = set() + dependency_add = deps.add + [x for x in rawdeps if not (x in deps or dependency_add(x))] + + # Additional BuildRequires (if any): + for br in package_additional_buildrequires.get(name, []): + print "BuildRequires: %s" % br + + # Add basic autogenerated Requires: + for r in sorted(deps): + #Requires: %{name}-stdlib%{?_isa} = %{version}-%{release} + print "Requires: %s%%{?_isa} = %%{version}-%%{release}" % r.replace("erlang-", "%{name}-") + + # Add custom additional Requires (if any): + for r in package_additional_requires.get(name, []): + print "Requires: %s" % r + + # Add custom additional Obsoletes (if any): + for os in package_additional_obsoletes.get(name, []): + print "Obsoletes: %s" % os + + if name in package_noarch: + print "BuildArch: noarch" + + print "" + if namemask.match(name): + print "%%description %s" % name.replace("erlang-", "") + else: + print "%%description -n %s" % name + print "%s" % h[rpm.RPMTAG_DESCRIPTION] + + if name == "erlang-doc": + # Additional ifdef just for this sub-package (see above) + print "%endif" + + print "" + +print "### END OF AUTOGENERATED LIST ###" diff --git a/sources b/sources index 0b15f23..674a546 100644 --- a/sources +++ b/sources @@ -1,3 +1 @@ -fb0c5454bbd865e881b6712295f6d41f otp_doc_html_R12B-5.tar.gz -6231cb172847040395cc34b20781aa3b otp_doc_man_R12B-5.tar.gz -3751ea3fea669d2b25c67eeb883734bb otp_src_R12B-5.tar.gz +SHA512 (otp-OTP-26.2.5.16.tar.gz) = 4e973be7e8ccad196d59759108a521535b0f046268eb0406f789a50f411fa27c9c11fcfb61a7218605bf1b32921bb52c52fc7c99917e1acfc0d3ed09437129b2