erlang/erlang.spec
Matwey Kornilov 4ec57075ee Accepting request 788113 from home:gsantomaggio_suse:branches:devel:languages:erlang:Factory
- Changes for 22.3:
  * compiler: A 'receive' with an 'after 0' clause would prevent
    the optimization that can avoid scanning the entire receive
    queue when matching on a newly created reference.
  * compiler: HiPE can again handle modules with catch and try
    constructs.
  * compiler: Fixed a bug in bit-syntax optimization that could
    crash the compiler.
  * crypto: Fixed potential memory leaks involving calls to the
    crypto ng_api.
  * common_test: Document incl_apps cover option
  * common_test: The ct_property_test has now a report function for
    results of stateful testing.
  * common_test: Don't hide error reasons from user
  * stdlib: Fix type specification for uri_string:normalize/2 that
    may also return error().
  * stdlib: Improve error handling in uri_string:normalize/2. This
    change fixes a crash when the input URI has faulty percent-
    encoding.
  * stdlib: Fix minor bugs in the Erlang pretty printer (erl_pp).
  * stdlib: Fix the Erlang parser regarding consecutive unary
    operators.
  * stdlib: Let calendar:rfc3339_to_system_time() crash when the
    time offset is missing.
  * stdlib: Implement uri_string:resolve/{2,3} that can be used to
    resolve a URI reference against a base URI.
  * stdlib: In gen_statem it is now possible to change the callback
    module for a running server. See gen_statem's documentation for
    change_callback_module, push_callback_module, and
    pop_callback_module.
  * ssl: Correct handling of TLS record limit in TLS-1.3. The max
    value differs from previous versions. Also the payload data max
    record check was broken, that is record overflow problems could
    occur if user sent large amounts of data.
  * ssl: Correct close handling for DTLS
  * ssl: Fix ssl:getstat/1-2 to also work for DTLS sockets
  * ssl: Correct internal handling och socket active mode to avoid
    reviving TCP data aimed for a downgraded TLS socket.
  * ssl: When using the host name as fallback for SNI (server name
    indication) strip a possible trailing dot that is allowed in a
    host name but not in the SNI. Also if the server receives a SNI
    with a trailing dot send an UNRECOGNIZED_NAME alert.
  * ssl: Immediately remove session entries if handshake is
    abruptly closed at transport level.
  * ssl: Implementation of the key and initialization vector update
    feature, and general hardening of TLS 1.3. There are
    cryptographic limits on the amount of plaintext which can be
    safely encrypted under a given set of keys. This change
    enforces those limits by triggering automatic key updates on
    TLS 1.3 connections.
  * ssl: Add support for TLS 1.3 Session Tickets (stateful and
    stateless). This allows session resumption using keying
    material from a previous successful handshake.
  * ssl: Add support for key exchange with Edward curves and PSS-
    RSA padding in signature verification.
  * megaco: The documented function
    megaco:get_sdp_record_from_PropertGroup/2 was a wrapper for
    megaco_sdp:get_sdp_record_from_PropertGroup/2 but did not
    actually exist. This has now been fixed.
  * megaco: Test suite completely reworked. Add (timestamp) utility
    functions for debugging and testing.
  * erl_interface: Fix link error "multiple definition of
    `ei_default_socket_callbacks'" for gcc version 10 or when built
    with gcc option -fno-common. Error exists since OTP-21.3.
  * asn1: Fix 'DEFAULT' with 'OCTET STRING' and 'SEQUENCE OF
    CHOICE' with extensions.
  * erts: gen_udp:recv(S, N, 0) corrupted the internal state for
    the socket so after receive with {active, once} it always
    returned {error, timeout}, and wasted the received UDP packets.
    This bug has now been fixed. Reported and pinpointed by
    Alexander Petrovsky.
  * erts: The atom esock_atom_user and esock_atom_kernel was never
    actually created. This has now been corrected.
  * erts: Fixed bug in socket module that could potentially lead to
    scheduler deadlocks.
  * erts: Fix bug causing VM crash if down or stop callback of a
    NIF resource is called after the NIF module has been purged.
    The fix will postpone unloading until all such resource objects
    have been garbage collected.
  * erts: Fixed bug in ets:update_counter/4, when called with an
    invalid UpdateOp and a Key that does not exist, causing
    ets:info(T,size) to return incorrect values. Bug exists since
    OTP-19.0.2.
  * erts: Fix potential heap corrupting bugs when a process calls a
    BIF that blocks other normal schedulers and then writes to its
    own heap without the main process lock. A NIF running on a
    dirty scheduler trying to interact with such a process could
    corrupt its heap. The fixed BIFs were related to code loading
    and tracing.
  * erts: Fixed bug in erlang:list_to_ref/1 when called with a
    reference created by a remote note. Function list_to_ref/1 is
    intended for debugging and not to be used in application
    programs. Bug exist since OTP 20.0.
  * erts: The prim_net nif (net/kernel) made use of an undefined
    atom, notsup. This has now been corrected.
  * erts: Corrected the valid range of the erl command line
    argument +SDio <NumberOfDirtyIoSchedulers> from 0..1024 to
    1..1024. +SDio 0 was erroneously allowed which just caused the
    VM to crash on the first dirty I/O job scheduled.
  * erts: Fix a crash when attempting to log faults when loading
    files during early boot.
  * erts: For socket, not all send and receive flags are supported
    on all platforms. In order to (at least) simplify testing, the
    socket:supports/0,1,2,3 functions has been extended with
    send_flags and recv_flags items, which indicates what the
    current platform can manage.
  * erts: Add a "full featured" version of getifaddrs in the net
    module.
  * erts: The options busy_limits_port and busy_limits_msgq have
    been added to the BIF erlang:open_port/2. The busy_limits_port
    option can be used for controlling the busy state of a port
    executing the spawn_driver or the fd_driver. The
    busy_limits_msgq option can be used for controlling the busy
    state of the port message queue.
  * erts: A socket "registry" has been added making it possible to
    list current open sockets.
  * erts: The counters managed by the socket nif has been extended.
    Their "size" has been increased from 32 bit to 64. Two max
    package size (for read and write) has been added. And four
    accept counters has been added.
  * erts: Add gcc option -fno-common to detect accidental name
    clashes of global variables.
  * erts: New dynamic lock checker that verifies locking orders and
    detects potential deadlock bugs in drivers and NIFs. Enabled
    together with the old static lock checker (for ERTS internal
    locks) in emulator started with -emu_type debug or built with
    configuration option --enable-lock-checking.
  * snmp: A simple supervision of the snmp manager net-if process
    has been added. Also, a way to forcibly restart the net-if
    process has been added. This could be useful if the net-if
    process hangs for some reason.
  * snmp: Misc documentation corrections
  * mnesia: Fixed a timing issue in uninstall fallback
    functionality.
  * eunit: Backport of PR-2316: Strip control codes from
    eunit_surefire output to avoid generation of invalid xml
  * ssh: Unicode problems for ssh_sftp:write fixed.
  * ssh: Changes to the internal api of the experimental ssh_dbg
    tool.
  * ssh: The new functions ssh:set_sock_opts/2 and
    ssh:get_sock_opts/2 sets and reads option values for the
    underlying TCP stream.
  * hipe: HiPE can again handle modules with catch and try
    constructs.
  * hipe: When the return value for try/catch was ignored, the
    native code compiler could crash.
  * public_key: Add support for key exchange with Edward curves and
    PSS-RSA padding in signature verification.
  * diameter: Add the 'first' tuple to type diameter:peer_filter/0.
    The filter was added in OTP-17.5.6.8 and OTP-18.3, but neither
    release updated the type specification.
  * tools: An Emacs warning due to lacking type in defcustom
    declaration has been fixed.
  * tools: Improve emacs indentation.
  * tools: The cover tool could generate instrumented code for a
    module that would cause warnings to be issued.
  * tools: Fixed generated fprof analysis format to also handle
    data in maps.
  * sasl: A socket "registry" has been added making it possible to
    list current open sockets.
  * kernel: The DNS resolver `inet_res` has been fixed to return
    the last intermediate error when subsequent requests times out.
  * kernel: The prim_net nif (net/kernel) made use of an undefined
    atom, notsup. This has now been corrected.
  * kernel: Fix a crash when attempting to log faults when loading
    files during early boot.
  * kernel: Fix crash in logger when logging to a remote node
    during boot.
  * kernel: Improved net_kernel debug functionality.
- Changes for 22.2.8:
  * diameter: The possibility of choosing a handler process for an
    incoming Diameter request with a configured MFA was documented
    in OTP 20.0, but counters (with {traffic_counters, true}) were
    not incremented when this process was on a remote node.
    Counters are now incremented on the node that configures the
    transport in question. Introduced in OTP 21.3.
  * diameter: Transport options differing from those passed to
    diameter:add_transport/2 were used in several situations: when
    starting a transport process after connect_timer expiry after
    an initial connection attempt has failed, when starting a
    transport process after a connection has been accepted, when
    sending events, when returning options in
    diameter:service_info/2, and possibly more. In particular, the
    following configuration options to diameter:add_transport/2
    were dropped: avp_dictionaries, incoming_maxlen, spawn_opt,
    strict_mbit. Moreover, any service options mistakenly passed to
    diameter:add_transport/2 were interpreted as such, instead of
    being ignored as the documentation states, with the consequence
    that outgoing and incoming requests saw different values of
    some options, some were always taken from transport options,
    and others from service options. diameter:add_transport/2 must
    be called in new code for the fix to have effect. Introduced in
    OTP 20.1.

OBS-URL: https://build.opensuse.org/request/show/788113
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=104
2020-03-25 16:58:13 +00:00

496 lines
15 KiB
RPMSpec

#
# spec file for package erlang
#
# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%{!?make_build:%{expand: %%global make_build %{make} %%{?_smp_mflags}}}
%define epmd_home %{_var}/lib/epmd
#Compat macro for new _fillupdir macro introduced in Nov 2017
%if ! %{defined _fillupdir}
%define _fillupdir %{_localstatedir}/adm/fillup-templates
%endif
Name: erlang
Version: 22.3
Release: 0
Summary: General-purpose programming language and runtime environment
License: Apache-2.0
URL: https://www.erlang.org
Source0: https://github.com/erlang/otp/archive/OTP-%{version}.tar.gz
Source3: %{name}-rpmlintrc
Source5: erlang.sysconfig
Source6: macros.erlang
Source7: epmd.service
Source8: epmd.socket
Source9: README.SUSE
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch0: otp-R16B-rpath.patch
# PATCH-FIX-OPENSUSE erlang-not-install-misc.patch - matwey.kornilov@gmail.com -- patch from Fedora, this removes unneeded magic
Patch4: erlang-not-install-misc.patch
BuildRequires: Mesa-devel
BuildRequires: autoconf
BuildRequires: dejavu-fonts
BuildRequires: fdupes
BuildRequires: fop
BuildRequires: gcc-c++
BuildRequires: java-devel >= 1.6.0
BuildRequires: openssh
BuildRequires: openssl-devel
BuildRequires: pkgconfig
BuildRequires: update-alternatives
BuildRequires: wxWidgets-devel >= 3
BuildRequires: xsltproc
BuildRequires: pkgconfig(krb5)
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(ncurses)
BuildRequires: pkgconfig(odbc)
BuildRequires: pkgconfig(tcl)
BuildRequires: pkgconfig(tk)
# not set up to be built with position independend executable support
#!BuildIgnore: gcc-PIE
Requires: erlang-epmd
%if 0%{?rhel} >= 7
%undefine _missing_build_ids_terminate_build
%endif
%description
Erlang is a general-purpose programming language and runtime
environment. Erlang has built-in support for concurrency, distribution
and fault tolerance. Erlang is used in several large telecommunication
systems from Ericsson.
%package debugger
Summary: A debugger for debugging and testing of Erlang programs
Requires: %{name} = %{version}
Requires: %{name}-wx = %{version}
%description debugger
A debugger for debugging and testing of Erlang programs.
%package dialyzer
Summary: A DIscrepany AnaLYZer for ERlang programs
Requires: %{name} = %{version}
Requires: %{name}-wx = %{version}
Requires: graphviz
%description dialyzer
A DIscrepany AnaLYZer for ERlang programs.
%package diameter
Summary: Main API of the Diameter application
Requires: %{name} = %{version}
%description diameter
This module provides the interface with which a user can implement a Diameter
node that sends and receives messages using the Diameter protocol as defined in
RFC 6733.
%package doc
Summary: Erlang documentation
Recommends: %{name} = %{version}
%description doc
Documentation for Erlang.
%package epmd
Summary: Erlang Port Mapper daemon
Requires: %{name} = %{version}
Requires(post): %fillup_prereq
%{?systemd_requires}
%description epmd
The Erlang Port Mapper daemon acts as a name server on all hosts involved in distributed Erlang computations.
%package et
Summary: An event tracer for Erlang programs
Requires: %{name} = %{version}
Requires: %{name}-wx = %{version}
%description et
An event tracer for Erlang programs.
%package jinterface
Summary: Erlang Java Interface
Requires: %{name} = %{version}
Requires: java >= 1.6.0
%description jinterface
JInterface module for accessing erlang from Java
%package reltool
Summary: A release management tool
Requires: %{name} = %{version}
Requires: %{name}-wx = %{version}
%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.
%package observer
Summary: A GUI tool for observing an erlang system
Requires: %{name} = %{version}
Requires: %{name}-wx = %{version}
%description observer
The observer is gui frontend containing various tools to inspect a system.
It displays system information, application structures, process information,
ets or mnesia tables and a frontend for tracing with ttb.
%package src
Summary: Erlang/OTP applications sources
Requires: %{name} = %{version}
%description src
Erlang sources for all the applications in the Erlang/OTP system.
They are useful for educational purpose and as a base for creating
embedded systems.
%package debugger-src
Summary: Erlang/OTP debugger application sources
Requires: %{name}-debugger = %{version}
%description debugger-src
Erlang sources for the debugger application in the Erlang/OTP system.
They are useful for educational purpose and as a base for creating
embedded systems.
%package dialyzer-src
Summary: Erlang/OTP dialyzer application sources
Requires: %{name}-dialyzer = %{version}
%description dialyzer-src
Erlang sources for the dialyzer application in the Erlang/OTP system.
They are useful for educational purpose and as a base for creating
embedded systems.
%package diameter-src
Summary: Erlang/OTP Diameter application sources
Requires: %{name}-diameter = %{version}
%description diameter-src
Erlang sources for the Diameter application in the Erlang/OTP system.
They are useful for educational purpose and as a base for creating
embedded systems.
%package et-src
Summary: Erlang/OTP et application sources
Requires: %{name}-et = %{version}
%description et-src
Erlang sources for the et application in the Erlang/OTP system.
They are useful for educational purpose and as a base for creating
embedded systems.
%package jinterface-src
Summary: Erlang/OTP jinterface application sources
Requires: %{name}-jinterface = %{version}
%description jinterface-src
Erlang sources for the jinterface application in the Erlang/OTP system.
They are useful for educational purpose and as a base for creating
embedded systems.
%package reltool-src
Summary: Erlang/OTP reltool application sources
Requires: %{name}-reltool = %{version}
%description reltool-src
Erlang sources for the reltool application in the Erlang/OTP system.
They are useful for educational purpose and as a base for creating
embedded systems.
%package observer-src
Summary: Erlang/OTP observer application sources
Requires: %{name}-observer = %{version}
%description observer-src
Erlang sources for the observer application in the Erlang/OTP system.
They are useful for educational purpose and as a base for creating embedded systems.
%package wx-src
Summary: Erlang/OTP wx application sources
Requires: %{name}-wx = %{version}
%description wx-src
Erlang sources for the wx application in the Erlang/OTP system.
They are useful for educational purpose and as a base for creating
embedded systems.
%package wx
Summary: A library for wxWidgets support in Erlang
Requires: %{name} = %{version}
Requires: wxWidgets >= 2.8
%description wx
A Graphics System used to write platform independent user interfaces.
%prep
%setup -q -n otp-OTP-%{version}
%patch0 -p1 -b .rpath
%patch4 -p1
cp %{SOURCE9} .
./otp_build autoconf
# enable dynamic linking for ssl
sed -i 's|SSL_DYNAMIC_ONLY=no|SSL_DYNAMIC_ONLY=yes|' erts/configure
# Remove shipped zlib sources
#rm -f erts/emulator/zlib/*.[ch]
# fix for arch linux bug #17001 (wx not working)
sed -i 's|WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs`|WX_LIBS="`$WX_CONFIG_WITH_ARGS --libs` -lGLU"|' lib/wx/configure || return 1
%build
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
export JAVAC="javac -source 1.6 -target 1.6"
export CFLAGS="%{optflags} -fno-strict-aliasing"
export CXXFLAGS=$CFLAGS
%configure \
--enable-systemd \
--with-ssl=%{_prefix} \
--enable-threads \
--enable-smp-support \
--enable-kernel-poll \
%ifnarch s390 s390x
--enable-hipe \
%endif
--enable-shared-zlib
# clean stalled files before rebuild them
%make_build clean
%make_build
# to build the docs, just compiled erlang is required
PATH=$PWD/bin:$PATH %make_build docs
%install
%make_install install-docs
export TOOLS_VERSION=`ls %{buildroot}%{_libdir}/erlang/lib/ |grep ^tools- | sed "s|tools-||"`
# clean up
find %{buildroot}%{_libdir}/erlang -perm 0775 | xargs chmod -v 0755
find %{buildroot}%{_libdir}/erlang -name Makefile | xargs chmod -v 0644
find %{buildroot}%{_libdir}/erlang -name \*.bat | xargs rm -fv
find %{buildroot}%{_libdir}/erlang -name index.txt.old | xargs rm -fv
find %{buildroot}%{_libdir}/erlang -type d -path '*/priv/obj' -print | xargs rm -rfv
# doc
mv README.md README
mkdir -p erlang_doc
find %{buildroot}%{_libdir}/erlang -maxdepth 3 -type d -name doc -or -name info | while read S;do D=`echo $S | sed -e 's|%{buildroot}%{_libdir}/erlang|erlang_doc|'`; B=`dirname $D`; mkdir -p $B; mv $S $D; done
# compress man pages ...
find %{buildroot}%{_libdir}/erlang/man -type f -exec gzip {} +
#make link to OtpErlang-*.jar in %%{_javadir}
mkdir -p %{buildroot}%{_javadir}
cd %{buildroot}%{_javadir}
export JINTERFACE_VERSION=`ls %{buildroot}%{_libdir}/erlang/lib/ |grep ^jinterface- | sed "s|jinterface-||"`
ln -sf ../../%{_lib}/erlang/lib/jinterface-$JINTERFACE_VERSION/priv/OtpErlang.jar OtpErlang-$JINTERFACE_VERSION.jar
cd -
# The man-pages for binaries are safe to move to %{_mandir}, others may conflict with other packages
mkdir -p %{buildroot}%{_mandir}/man1
for link in $(ls %{buildroot}%{_libdir}/erlang/man/man1/); do
ln -s %{_libdir}/erlang/man/man1/$link %{buildroot}%{_mandir}/man1/$link
done
# emacs: automatically load support for erlang
# http://lists.mandriva.com//bugs/2007-08/msg00930.php
mkdir -p %{buildroot}%{_datadir}/emacs/site-lisp
cat > %{buildroot}%{_datadir}/emacs/site-lisp/erlang.el << EOF
(setq load-path (cons "%{_libdir}/erlang/lib/tools-$TOOLS_VERSION/emacs" load-path))
(add-to-list 'load-path "%{_datadir}/emacs/site-lisp/ess")
(load-library "erlang-start")
EOF
# hardlink duplicates:
find . -name "start_erl*" | xargs chmod 755
%fdupes %{buildroot}/%{_libdir}/erlang
# %%doc macro copies the files to the package doc dir, hardlinks thus don't work
%fdupes -s erlang_doc
install -d -m 0750 %{buildroot}%{epmd_home}
install -d -m 0755 %{buildroot}%{_sbindir}
install -D -m 0644 %{SOURCE7} %{buildroot}%{_unitdir}/epmd.service
install -D -m 0644 %{SOURCE8} %{buildroot}%{_unitdir}/epmd.socket
ln -s service %{buildroot}%{_sbindir}/rcepmd
install -D -m 0644 %{SOURCE6} %{buildroot}%{_sysconfdir}/rpm/macros.erlang
%pre epmd
getent group epmd || %{_sbindir}/groupadd -r epmd
getent passwd epmd || %{_sbindir}/useradd -g epmd -s /bin/false -r -c "Erlang Port Mapper Daemon" -d %{epmd_home} epmd
%service_add_pre epmd.service epmd.socket
%post epmd
%fillup_only erlang
%service_add_post epmd.service epmd.socket
%preun epmd
%service_del_preun epmd.service epmd.socket
%postun epmd
%service_del_postun epmd.service epmd.socket
%files
%license LICENSE.txt
%doc AUTHORS README
%doc README.SUSE
%doc %{_libdir}/erlang/PR.template
%doc %{_libdir}/erlang/README.md
%doc %{_libdir}/erlang/COPYRIGHT
%{_bindir}/*
%exclude %{_bindir}/dialyzer
%exclude %{_bindir}/epmd
%dir %{_libdir}/erlang
%dir %{_libdir}/erlang/lib/
%exclude %{_libdir}/erlang/lib/*/src
%exclude %{_libdir}/erlang/lib/*/c_src
%exclude %{_libdir}/erlang/lib/*/java_src
%{_libdir}/erlang/bin/
%exclude %{_libdir}/erlang/bin/dialyzer
%exclude %{_libdir}/erlang/bin/epmd
%{_libdir}/erlang/erts-*/
%exclude %{_libdir}/erlang/erts-*/bin/dialyzer
%exclude %{_libdir}/erlang/erts-*/bin/epmd
%{_libdir}/erlang/lib/asn1-*/
%{_libdir}/erlang/lib/common_test-*/
%{_libdir}/erlang/lib/compiler-*/
%{_libdir}/erlang/lib/crypto-*/
%{_libdir}/erlang/lib/edoc-*/
%{_libdir}/erlang/lib/eldap-*/
%{_libdir}/erlang/lib/erl_docgen-*/
%{_libdir}/erlang/lib/erl_interface-*/
%{_libdir}/erlang/lib/erts-*/
%{_libdir}/erlang/lib/eunit-*/
%{_libdir}/erlang/lib/hipe-*/
%{_libdir}/erlang/lib/ftp-*/
%{_libdir}/erlang/lib/inets-*/
%{_libdir}/erlang/lib/kernel-*/
%{_libdir}/erlang/lib/megaco-*/
%{_libdir}/erlang/lib/mnesia-*/
%{_libdir}/erlang/lib/odbc-*/
%{_libdir}/erlang/lib/tftp-*/
%{_libdir}/erlang/lib/os_mon-*/
%{_libdir}/erlang/lib/parsetools-*/
%{_libdir}/erlang/lib/public_key-*/
%{_libdir}/erlang/lib/runtime_tools-*/
%{_libdir}/erlang/lib/sasl-*/
%{_libdir}/erlang/lib/snmp-*/
%{_libdir}/erlang/lib/ssh-*/
%{_libdir}/erlang/lib/ssl-*/
%{_libdir}/erlang/lib/stdlib-*/
%{_libdir}/erlang/lib/syntax_tools-*/
%{_libdir}/erlang/lib/tools-*/
%{_libdir}/erlang/lib/xmerl-*/
%{_libdir}/erlang/man/
%{_mandir}/man1/*.1%{?ext_man}
%{_libdir}/erlang/releases/
%{_libdir}/erlang/usr/
%{_libdir}/erlang/Install
%{_datadir}/emacs/site-lisp/erlang.el
%config %{_sysconfdir}/rpm/macros.erlang
%files debugger
%{_libdir}/erlang/lib/debugger-*/
%exclude %{_libdir}/erlang/lib/debugger-*/src
%files dialyzer
%{_libdir}/erlang/lib/dialyzer-*/
%exclude %{_libdir}/erlang/lib/dialyzer-*/src
%{_bindir}/dialyzer
%{_libdir}/erlang/bin/dialyzer
%{_libdir}/erlang/erts-*/bin/dialyzer
%files diameter
%{_libdir}/erlang/lib/diameter-*/
%exclude %{_libdir}/erlang/lib/diameter-*/src
%files doc
%defattr(0644,root,root,0755)
%doc erlang_doc/*
%files et
%{_libdir}/erlang/lib/et-*/
%exclude %{_libdir}/erlang/lib/et-*/src
%files epmd
%{_bindir}/epmd
%{_libdir}/erlang/bin/epmd
%{_libdir}/erlang/erts-*/bin/epmd
%dir %attr(-,epmd,epmd) %{epmd_home}
%{_unitdir}/epmd.service
%{_unitdir}/epmd.socket
%{_sbindir}/rcepmd
%files jinterface
%{_libdir}/erlang/lib/jinterface-*/
%exclude %{_libdir}/erlang/lib/jinterface-*/java_src
%{_javadir}/*
%files reltool
%{_libdir}/erlang/lib/reltool-*/
%exclude %{_libdir}/erlang/lib/reltool-*/src
%files observer
%{_libdir}/erlang/lib/observer-*/
%exclude %{_libdir}/erlang/lib/observer-*/src
%files wx
%{_libdir}/erlang/lib/wx-*/
%exclude %{_libdir}/erlang/lib/wx-*/src
%files src
%exclude %{_libdir}/erlang/lib/erl_interface-*/src/INSTALL
%{_libdir}/erlang/lib/*/src
%{_libdir}/erlang/lib/*/c_src
%{_libdir}/erlang/lib/*/java_src
%exclude %{_libdir}/erlang/lib/debugger-*/src
%exclude %{_libdir}/erlang/lib/dialyzer-*/src
%exclude %{_libdir}/erlang/lib/diameter-*/src
%exclude %{_libdir}/erlang/lib/et-*/src
%exclude %{_libdir}/erlang/lib/jinterface-*/java_src
%exclude %{_libdir}/erlang/lib/reltool-*/src
%exclude %{_libdir}/erlang/lib/observer-*/src
%exclude %{_libdir}/erlang/lib/wx-*/src
%files debugger-src
%{_libdir}/erlang/lib/debugger-*/src
%files dialyzer-src
%{_libdir}/erlang/lib/dialyzer-*/src
%files diameter-src
%{_libdir}/erlang/lib/diameter-*/src
%files et-src
%{_libdir}/erlang/lib/et-*/src
%files jinterface-src
%{_libdir}/erlang/lib/jinterface-*/java_src
%files reltool-src
%{_libdir}/erlang/lib/reltool-*/src
%files observer-src
%{_libdir}/erlang/lib/observer-*/src
%files wx-src
%{_libdir}/erlang/lib/wx-*/src
%changelog