diff --git a/erlang.spec b/erlang.spec index 0ed6ce9..3850bf9 100644 --- a/erlang.spec +++ b/erlang.spec @@ -75,11 +75,8 @@ Patch8: otp-0008-Add-patch-to-crash-dump-on-large-distribution.patch # end of autogenerated patch tag list BuildRequires: flex -%if %{with doc} -# BEWARE. No fop for EPEL5, and only for x86/x86_64 in EPEL6, so we cannot regenerate docs here -BuildRequires: fop -BuildRequires: libxslt +%if %{with doc} %if 0%{?need_bootstrap} < 1 # Required for building docs (escript) BuildRequires: erlang @@ -363,6 +360,8 @@ Diameter (RFC 3588) library %package doc Summary: Erlang documentation Group: Development/Languages +BuildRequires: fop +BuildRequires: libxslt BuildArch: noarch %description doc @@ -1054,12 +1053,11 @@ install -m 0755 -d "$RPM_BUILD_ROOT%{_javadir}/%{name}" # erlang-ic ic_lib_dir="$(ls -d1 $RPM_BUILD_ROOT%{_libdir}/erlang/lib/ic-*/ | sed "s,^$RPM_BUILD_ROOT,,")" test -d "$RPM_BUILD_ROOT$ic_lib_dir" -ln -s "${ic_lib_dir}/priv/ic.jar" "$RPM_BUILD_ROOT%{_javadir}/%{name}/" +ln -s "${ic_lib_dir}priv/ic.jar" "$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" -install -m 0755 -d "$RPM_BUILD_ROOT%{_javadir}" ln -s "${jinterface_lib_dir}priv/OtpErlang.jar" "$RPM_BUILD_ROOT%{_javadir}/%{name}/" # systemd-related stuff diff --git a/otp-make-subpackages.py b/otp-make-subpackages.py index 67c21c9..e004bf3 100644 --- a/otp-make-subpackages.py +++ b/otp-make-subpackages.py @@ -21,7 +21,12 @@ package_headers = {} ## # These packages should be marked as noarch -package_noarch = ["emacs-erlang", "emacs-erlang-el", "erlang-doc", "xemacs-erlang", "xemacs-erlang-el"] +package_noarch = [ + "emacs-erlang", + "emacs-erlang-el", + "erlang-doc", + "xemacs-erlang", + "xemacs-erlang-el"] # These are additional Requires which cannot be picked up automatically (yet). # TODO these should be added automatically @@ -30,33 +35,53 @@ package_additional_requires = { "emacs-erlang-el": ["emacs-erlang = %{version}-%{release}"], "erlang-dialyzer": ["graphviz"], "erlang-erl_interface": ["%{name}-erts%{?_isa} = %{version}-%{release}"], - # This library is dlopened so it can't be picked up automatically by the RPM - # dependency checker + # 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"], - # FIXME stores files/links in jpackage-utils' directory "erlang-ic": ["jpackage-utils"], - # FIXME stores files/links in jpackage-utils' directory "erlang-jinterface": ["%{name}-erts%{?_isa} = %{version}-%{release}, "jpackage-utils"], - "erlang-jinterface": ["%{name}-erts%{?_isa} = %{version}-%{release}"], + # 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"], "xemacs-erlang": ["emacs-common-erlang = %{version}-%{release}", "xemacs(bin) >= %{_xemacs_version}"], "xemacs-erlang-el": ["xemacs-erlang = %{version}-%{release}"] } 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 + # already dropped full support for EPEL6 and older versions. "erlang-ic": ["java-devel"], "erlang-jinterface": ["java-devel"], + "erlang-odbc": ["unixODBC-devel"], "erlang-wx": ["wxGTK-devel"], + "xemacs-erlang": ["xemacs", "xemacs-packages-extra-el"], } package_additional_obsoletes = { - "erlang-erts": ["erlang-appmon", "erlang-docbuilder", "erlang-inviso", "erlang-pman", "erlang-toolbar", "erlang-tv"], + "erlang-erts": [ + "erlang-appmon", + "erlang-docbuilder", + "erlang-inviso", + "erlang-pman", + "erlang-toolbar", + "erlang-tv"], } ## @@ -69,6 +94,11 @@ 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)