Bug 285381 - lang/rust: package contains DOCS although not a default OPTION
Summary: lang/rust: package contains DOCS although not a default OPTION
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Many People
Assignee: FreeBSD Rust Team
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-03-13 20:47 UTC by Michael Osipov
Modified: 2025-03-25 09:21 UTC (History)
5 users (show)

See Also:
bugzilla: maintainer-feedback? (rust)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Osipov freebsd_committer freebsd_triage 2025-03-13 20:47:27 UTC
When fetching from pkgmir.geo.freebsd.org/FreeBSD:13:amd64/latest/All/rust-1.85.0_1.pkg the package is huge. The MANIFEST says that DOCS are on, but the Makefile of that port says:
osipovmi@deblndw011x:~/var/Projekte/freebsd/ports/lang/rust (main =)
$ make -V OPTIONS_DEFINE
DOCS GDB LTO PORT_LLVM SOURCES WASM
osipovmi@deblndw011x:~/var/Projekte/freebsd/ports/lang/rust (main =)
$ make -V OPTIONS_DEFAULT
 SOURCES WASM

It does not add up, especially that the expanded DOCS are huge and likely of little use for most. My poudriere setup is instructed to fetch packages from quarterly/latest unless OPTIONS are modified, but I am afraid that I need to build lang/rust myself to get rid of DOCS. The build overhead is quite huge which I'd like to avoid.
Comment 1 Michael Osipov freebsd_committer freebsd_triage 2025-03-13 20:55:51 UTC
On disk with UFS:
794M    /usr/local/share/doc/rust
Comment 2 Michael Osipov freebsd_committer freebsd_triage 2025-03-13 21:13:19 UTC
# make -V PORT_OPTIONS
  DOCS SOURCES WASM

from bsd.options.mk which sets DOCS by default if not explicitly disabled. One still might consider not to bundle them by defautl due to the unjustified overhead.

I'll leave it to the port maintainer whether to handle this or not.
Comment 3 Michael Osipov freebsd_committer freebsd_triage 2025-03-13 21:14:52 UTC
Unintentionally closed.
Comment 4 Mikael Urankar freebsd_committer freebsd_triage 2025-03-14 09:51:08 UTC
Users have asked me to enable the docs option by default.
Comment 5 Michael Osipov freebsd_committer freebsd_triage 2025-03-14 09:52:38 UTC
(In reply to Mikael Urankar from comment #4)

How so? It is not enabled by default in the Makefile, but through the ports system. That's a difference. Maybe you should move DOCS to OPTIONS_DEFAULT to make it clear.
Comment 6 commit-hook freebsd_committer freebsd_triage 2025-03-21 08:40:12 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=d617602f66232ed0e561b47aed56a6ed606b1e31

commit d617602f66232ed0e561b47aed56a6ed606b1e31
Author:     Mikael Urankar <mikael@FreeBSD.org>
AuthorDate: 2025-03-21 08:09:54 +0000
Commit:     Mikael Urankar <mikael@FreeBSD.org>
CommitDate: 2025-03-21 08:39:35 +0000

    lang/rust: Update to 1.85.1

    While here:
     - remove rustdoc from _RUST_TOOLS, it has to be added only when
       DOCS option is enabled
     - add DOCS to OPTIONS_DEFAULT [1]
     - building docs on armv7 is fixed

    PR:             285381 [1]

 lang/rust/Makefile | 12 ++++--------
 lang/rust/distinfo |  6 +++---
 2 files changed, 7 insertions(+), 11 deletions(-)
Comment 7 Michael Osipov freebsd_committer freebsd_triage 2025-03-21 09:31:44 UTC
The solution is obvious now, thanks!
Comment 8 Max Brazhnikov freebsd_committer freebsd_triage 2025-03-21 10:52:40 UTC
(In reply to Michael Osipov from comment #7)
Perhaps the solution is to check SELECTED_OPTIONS instead of OPTIONS_DEFAULT.
Comment 9 Michael Osipov freebsd_committer freebsd_triage 2025-03-21 10:54:39 UTC
(In reply to Max Brazhnikov from comment #8)

If you are running from packages only you don't have that information. My initial point was https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=285381#c1
Comment 10 Po-Chuan Hsieh freebsd_committer freebsd_triage 2025-03-21 12:14:51 UTC
(In reply to Michael Osipov from comment #0)

These options (DOCS, EXAMPLES, IPV6 and NLS) are enabled by default. We do not add them to OPTIONS_DEFAULT.

from Mk/bsd.options.mk:
275 # Some options are always enabled by default.
276 .  for _opt in DOCS NLS EXAMPLES IPV6
277 .    if ${COMPLETE_OPTIONS_LIST:M${_opt}}
278 PORT_OPTIONS+=  ${_opt}
279 .    endif
280 .  endfor


(In reply to commit-hook from comment #6)

@mikael, please revert the OPTIONS_DEFAULT change. Thanks.
Comment 11 Michael Osipov freebsd_committer freebsd_triage 2025-03-21 12:35:01 UTC
(In reply to Po-Chuan Hsieh from comment #10)

Please address:
$ grep -r --include='*/Makefile*' -E "OPTIONS_DEFAULT=.*DOCS" .
./accessibility/feedbackd/Makefile:OPTIONS_DEFAULT=DAEMON DOCS GIR MANPAGES VAPI
./archivers/ark/Makefile:OPTIONS_DEFAULT=       7ZIP ZIP DOCS
./audio/baresip/Makefile:OPTIONS_DEFAULT=       DOCS EXAMPLES
./audio/elisa/Makefile:OPTIONS_DEFAULT= DOCS VLC
./audio/inscore/Makefile:OPTIONS_DEFAULT=       DOCS EXAMPLES
./audio/lame/Makefile:OPTIONS_DEFAULT=DOCS
./audio/milkytracker/Makefile:OPTIONS_DEFAULT=  DOCS RTMIDI
./audio/musicpc/Makefile:OPTIONS_DEFAULT=       DOCS ICONV
./comms/opencbm/Makefile:OPTIONS_DEFAULT=       DOCS INFO
./comms/uhd/Makefile:OPTIONS_DEFAULT=   DOCS
./devel/cc65/Makefile:OPTIONS_DEFAULT=  DOCS EXAMPLES INFO
./devel/cxxtest/Makefile:OPTIONS_DEFAULT=       DOCS EXAMPLES
./devel/emacs-lsp-booster/Makefile:OPTIONS_DEFAULT=     DOCS
./devel/gfold/Makefile:OPTIONS_DEFAULT= DOCS
./devel/libgusb/Makefile:OPTIONS_DEFAULT=       DOCS VAPI
./devel/libvirt-glib/Makefile:OPTIONS_DEFAULT=  DOCS VAPI
./devel/malloy/Makefile:OPTIONS_DEFAULT=        CLIENT DOCS EXAMPLES HTML SERVER TLS
./devel/ncurses/Makefile:OPTIONS_DEFAULT=       DOCS EXAMPLES MANPAGES
./devel/opendht/Makefile:OPTIONS_DEFAULT=               INDEX PROXY_CLIENT PROXY_SERVER PUSH_NOTIFICATIONS DOCS
./devel/qtcreator/Makefile:OPTIONS_DEFAULT=     DOCS EXAMPLES LIBSECRET
./devel/sccache/Makefile:OPTIONS_DEFAULT=       DOCS
./devel/radicle/Makefile:OPTIONS_DEFAULT=       DOCS
./devel/schilybase/Makefile:OPTIONS_DEFAULT=DOCS NLS
./devel/texlab/Makefile:OPTIONS_DEFAULT=        DOCS
./devel/wrangler/Makefile:OPTIONS_DEFAULT=      DOCS
./dns/yadifa/Makefile:OPTIONS_DEFAULT=  DDNS DNSSECTOOLS DOCS ECDSA EXAMPLES KEYGEN LARGEFILE \
./editors/libreoffice/Makefile:OPTIONS_DEFAULT= CUPS DOCS JAVA MMEDIA PDFIUM QT5
./editors/sly/Makefile:OPTIONS_DEFAULT=DOCS DOCS_PDF
./editors/xed/Makefile:OPTIONS_DEFAULT= DOCS GSPELL GVFS_METADATA
./emulators/hatari/Makefile:OPTIONS_DEFAULT=    DOCS DSP TRACE
./emulators/open-vm-tools/Makefile:OPTIONS_DEFAULT=DOCS FUSE LIBNOTIFY OPENSSL X11
./ftp/termscp/Makefile:OPTIONS_DEFAULT= DOCS
./games/alephone/Makefile:OPTIONS_DEFAULT=CURL DOCS PNG SPEEX ZZIP
./games/freeorion/Makefile:OPTIONS_DEFAULT=DOCS TEST CLIENT_GG
./graphics/cairo/Makefile:OPTIONS_DEFAULT=DOCS GLIB X11
./graphics/librsvg2/Makefile:OPTIONS_DEFAULT=   DOCS VAPI
./graphics/opencolorio/Makefile:OPTIONS_DEFAULT=        DOCS
./graphics/openorienteering-mapper/Makefile:OPTIONS_DEFAULT=    DOCS EXAMPLES GDAL NLS TIFF
./irc/soju/Makefile:OPTIONS_DEFAULT=    DOCS
./lang/julia/Makefile:OPTIONS_DEFAULT=  DOCS
./lang/sdcc/Makefile:OPTIONS_DEFAULT=   DOCS
./lang/snobol4/Makefile:OPTIONS_DEFAULT=        FFI SQLITE3 DOCS
./lang/zig/Makefile:OPTIONS_DEFAULT=    DOCS
./lang/zig010/Makefile:OPTIONS_DEFAULT= DOCS
./mail/exilog/Makefile:OPTIONS_DEFAULT=         AGENT DOCS MYSQL
./mail/mu/Makefile:OPTIONS_DEFAULT=     DOCS GUILE
./math/blacs/Makefile:OPTIONS_DEFAULT=  DOCS MPICH
./math/dune-metagrid/Makefile:OPTIONS_DEFAULT=  DOCS
./math/singular/Makefile:OPTIONS_DEFAULT=       DOCS FLINT GFAN NTL
./multimedia/lives/Makefile:OPTIONS_DEFAULT=            CDDA2WAV DOCS DV FFTW GHOSTSCRIPT IMAGEMAGICK JACK LAME \
./net-mgmt/ipgen/Makefile:OPTIONS_DEFAULT=DOCS
./net/hping3/Makefile:OPTIONS_DEFAULT=  DOCS MAN
./net/isboot-kmod/Makefile:OPTIONS_DEFAULT=DOCS VIMAGE
./net/openradius/Makefile:OPTIONS_DEFAULT=      DOCS EXAMPLES
./net/quiche/Makefile:OPTIONS_DEFAULT=  DOCS QLOG
./net/samba416/Makefile:OPTIONS_DEFAULT=                AD_DC ADS DOCS FAM LDAP \
./net/samba419/Makefile:OPTIONS_DEFAULT=                AD_DC ADS DOCS FAM LDAP MANPAGES \
./net/samba420/Makefile:OPTIONS_DEFAULT=                AD_DC ADS DOCS FAM LDAP MANPAGES \
./www/dillo2/Makefile:OPTIONS_DEFAULT=  DOCS IPV6 JPEG PNG WEBP
./www/privoxy/Makefile:OPTIONS_DEFAULT= ACCEPT_FILTER BROTLI DOCS EDITOR FORCE \
./www/squid-langpack/Makefile:OPTIONS_DEFAULT=  DOCS EXAMPLES
./www/vultr-cli/Makefile:OPTIONS_DEFAULT=       DOCS
./print/xreader/Makefile:OPTIONS_DEFAULT=       DBUS DJVU DOCS HELP KEYRING PDF TIFF XPS
./science/tfel-edf/Makefile:OPTIONS_DEFAULT=DOCS
./science/tfel/Makefile:OPTIONS_DEFAULT=        DOCS PYTHON
./security/libgcrypt/Makefile:OPTIONS_DEFAULT=  DOCS INFO STATIC
./security/pam-mysql/Makefile:OPTIONS_DEFAULT=  DOCS SSL
./security/pkcs11-tools/Makefile:OPTIONS_DEFAULT=DOCS
./security/racoon2/Makefile:OPTIONS_DEFAULT=    DOCS
./shells/anongitssh/Makefile:OPTIONS_DEFAULT=DOCS
./sysutils/byobu/Makefile:OPTIONS_DEFAULT=      DOCS NEWT TMUX
./sysutils/cdrtools/Makefile:OPTIONS_DEFAULT=DOCS LAME VORBIS
./sysutils/chezmoi/Makefile:OPTIONS_DEFAULT=    BASH DOCS FISH ZSH
./sysutils/libudisks/Makefile:OPTIONS_DEFAULT=  UDISKSCTL NLS DOCS
./sysutils/nut-devel/Makefile:OPTIONS_DEFAULT=  SERIAL USB SNMP NEON PDU MODBUS CGI BASH AVAHI DOCS OPENSSL
./sysutils/nut/Makefile:OPTIONS_DEFAULT=SERIAL USB SNMP NEON PDU MODBUS CGI BASH AVAHI DOCS MANPAGES OPENSSL
./sysutils/pacman/Makefile:OPTIONS_DEFAULT=CURL DOCS GPGME
./sysutils/radmind/Makefile:OPTIONS_DEFAULT=    SASL PAM ZLIB DOCS
./sysutils/xen-tools/Makefile:OPTIONS_DEFAULT=  DOCS
./textproc/quickwit/Makefile:OPTIONS_DEFAULT=   DOCS
./textproc/wikiman/Makefile:OPTIONS_DEFAULT=    BASH CONFIG DOCS FISH WDGTS ZSH
./x11-fm/nemo/Makefile:OPTIONS_DEFAULT= DOCS EXEMPI EXIF
./x11-wm/nscde/Makefile:OPTIONS_DEFAULT=                DOCS EXAMPLES KSH2020 SUDO
./x11/xvt/Makefile:OPTIONS_DEFAULT=     256_COLOR DOCS GB LINESPACE MENUBAR NEXT SMART \
Comment 12 Po-Chuan Hsieh freebsd_committer freebsd_triage 2025-03-21 12:50:52 UTC
(In reply to Michael Osipov from comment #11)

I don't get it. What should I address? Any committer or the maintainers can take care of them. And we could avoid making this list longer.
Comment 13 Mikael Urankar freebsd_committer freebsd_triage 2025-03-21 13:16:01 UTC
It will stay as is.
Comment 14 Michael Osipov freebsd_committer freebsd_triage 2025-03-21 15:15:24 UTC
(In reply to Po-Chuan Hsieh from comment #12)

If you object the change in lang/rust, I'd expect you file an issue with these ports as well for consistency reasons.
Comment 15 Max Brazhnikov freebsd_committer freebsd_triage 2025-03-21 18:23:42 UTC
(In reply to Michael Osipov from comment #9)
> If you are running from packages only you don't have that information. My initial point was https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=285381#c1

Yes, I did see your first comment, but could you please elaborate? Which info are you missing and what are you trying to achieve? If there is a problem, it should be fixed globally for all ports, not just for this particular port.
Comment 16 Michael Osipov freebsd_committer freebsd_triage 2025-03-21 18:36:22 UTC
(In reply to Max Brazhnikov from comment #15)

My concern was that is not obviously visible why DOCS are included althrough it is not default. One has to dig into Mk/, especially here because DOCS are 700 MB  on disk which most of the people don't need and it increases processing time.

The average user/admin will be clueless.
Comment 17 Max Brazhnikov freebsd_committer freebsd_triage 2025-03-21 19:56:38 UTC
(In reply to Michael Osipov from comment #16)
Ports have been building with DOCS, NLS, EXAMPLES for ages even before the option framework was introduced. Besides, it is documented in the porters handbook:
https://docs.freebsd.org/en/books/porters-handbook/makefiles/#makefile-options-default
Comment 18 Michael Osipov freebsd_committer freebsd_triage 2025-03-22 07:51:08 UTC
(In reply to Max Brazhnikov from comment #17)

True, but porter's handbook, not user's handbook.
Comment 19 janlugt 2025-03-25 08:12:44 UTC
I think it makes sense not to have docs included by default, since that is readily available online, and most people will not need a local version. I do have my doubts about not including rustdoc when docs are disabled. rustdoc is an integral part of cargo, and currently one has to enable building all the docs (we had that disabled), in order to get it installed. Even if the rust documentation offline is not very useful for many, being able to build documentation for your own project is.
Comment 20 Mikael Urankar freebsd_committer freebsd_triage 2025-03-25 09:21:05 UTC
(In reply to janlugt from comment #19)
You're right, I'll put back rustdoc in _RUST_TOOLS with the next update.
Comment 21 Michael Osipov freebsd_committer freebsd_triage 2025-03-25 09:21:38 UTC
(In reply to janlugt from comment #19)

I would highly prefer docs to move to a separate package due to the size just like others do, e.g., PostgreSQL.