Opened 8 years ago

Closed 7 years ago

Last modified 7 years ago

#53790 closed enhancement (fixed)

wget port variant that does not require X11

Reported by: mathomp4 (Matthew Thompson) Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: lrenaud (Luke), danchr (Dan Villiom Podlaski Christiansen)
Port: wget

Description (last modified by ctreleaven (Craig Treleaven))

Macports devels,

This is an enhancement I'd really like. I tend to use wget as my "URL getter" of choice mainly because of muscle memory ('wget' instead of 'curl -O' flies off my fingers better).

So, I'd like to install wget on my Mac. But, I try to keep my Macports installs fairly lean for the times I need to rebuild them all, etc. But, lets say I want wget:

(26) $ port -y install wget
--->  Computing dependencies for wget
The following dependencies will be installed: 
 cairo
 desktop-file-utils
 fontconfig
 freetype
 ghostscript
 glib2
 gnutls
 gobject-introspection
 graphite2
 groff
 harfbuzz
 harfbuzz-icu
 help2man
 icu
 jasper
 jbig2dec
 jbigkit
 jpeg
 lcms2
 libnetpbm
 libpixman
 libpng
 libtasn1
 libunistring
 libzzip
 mpfr
 netpbm
 nettle
 openjpeg
 p11-kit
 p5.24-locale-gettext
 poppler
 poppler-data
 potrace
 psutils
 py27-appdirs
 py27-beaker
 py27-certifi
 py27-mako
 py27-markupsafe
 py27-packaging
 py27-parsing
 py27-setuptools
 py27-six
 texinfo
 texlive-basic
 texlive-bin
 texlive-common
 tiff
 xorg-bigreqsproto
 xorg-fixesproto
 xorg-inputproto
 xorg-kbproto
 xorg-libX11
 xorg-libXau
 xorg-libXaw
 xorg-libXdmcp
 xorg-libXext
 xorg-libXfixes
 xorg-libXi
 xorg-libXmu
 xorg-libXp
 xorg-libXt
 xorg-libice
 xorg-libpthread-stubs
 xorg-libsm
 xorg-libxcb
 xorg-printproto
 xorg-renderproto
 xorg-util-macros
 xorg-xcb-proto
 xorg-xcb-util
 xorg-xcmiscproto
 xorg-xextproto
 xorg-xf86bigfontproto
 xorg-xproto
 xorg-xtrans
 xpm
 xrender
Continue? [Y/n]: n

That seems a bit much for wget, a program even GNU says works on non-X terminals:

GNU Wget is a free software package for retrieving files using HTTP, HTTPS and FTP, the most widely-used Internet protocols. 
It is a non-interactive commandline tool, so it may easily be called from scripts, cron jobs, terminals without X-Windows support, etc.

The fact that it seems to need all of X and TeXLive as well as bits of Python and Perl (parts of which I have installed). My guess is because its docs need TeX might be triggering this?

Could there possibly be a way to create a "lite" variant that might end up just getting wget and maybe some simple GNU tools? Maybe by only building manpages and not docs that need texinfo?

Personally, I think this ticket should be closed as "worksforme".

Change History (13)

comment:1 Changed 8 years ago by mathomp4 (Matthew Thompson)

Aww nuts. An errant "Enter" submitted this before I could move the ticket to be for the "wget" port. Could an admin with power please move this ticket.

Mea culpa.

comment:2 Changed 8 years ago by mathomp4 (Matthew Thompson)

Cc: mathomp4 added

comment:3 Changed 8 years ago by mf2k (Frank Schima)

Cc: mathomp4 removed
Owner: set to ryandesign
Port: wget added
Status: newassigned

In the future, please Cc the port maintainers (port info --maintainers wget), if any. As reporter, you do not need to Cc yourself.

comment:4 Changed 8 years ago by Schamschula (Marius Schamschula)

I just ran

$port rdeps wget
The following ports are dependencies of wget @1.19.1_0+ssl:
  xz
    libiconv
      gperf
    gettext
      expat
      ncurses
  texinfo
    help2man
      perl5.24
        gdbm
      p5.24-locale-gettext
  pkgconfig
  libidn
  nettle
    autoconf
    automake
    libtool
    gmp
  pcre
    bzip2
    libedit
    zlib
  gnutls
    libtasn1
    libunistring
      perl5
      texlive-basic
        texlive-common
        texlive-bin
          fontconfig
            freetype
              libpng
          libzzip
            xmlto
              getopt
              coreutils
              findutils
              libpaper
              libxml2
              libxslt
              docbook-xml
                xmlcatmgr
                docbook-xml-4.1.2
                  unzip
                  docbook-xml-4.2
                docbook-xml-4.3
                docbook-xml-4.4
                docbook-xml-4.5
                docbook-xml-5.0
              docbook-xsl
              fop
          poppler
            curl
              openssl
              curl-ca-bundle
            jpeg
            glib2
              libffi
            cairo
              libpixman
              xrender
                xorg-libX11
                  xorg-xtrans
                  xorg-bigreqsproto
                  xorg-xcmiscproto
                  xorg-xextproto
                  xorg-xf86bigfontproto
                  xorg-inputproto
                  xorg-util-macros
                  xorg-libXdmcp
                    xorg-xproto
                  xorg-libXau
                  xorg-libxcb
                    xorg-xcb-proto
                      python27
                        sqlite3
                        db48
                        python_select
                        python2_select
                    xorg-libpthread-stubs
                  xorg-kbproto
                xorg-renderproto
              xorg-libXext
              xorg-xcb-util
            lcms2
              tiff
            openjpeg
              cmake
                libarchive
                  lzo2
                  lz4
                libuv
              jbigkit
            poppler-data
            gobject-introspection
              py27-mako
                py27-setuptools
                  py27-appdirs
                  py27-certifi
                  py27-packaging
                    py27-parsing
                    py27-six
                py27-beaker
                py27-markupsafe
          graphite2
          icu
          harfbuzz
          harfbuzz-icu
          mpfr
          potrace
          xorg-libXp
            xorg-printproto
          xpm
            xorg-libXt
              xorg-libsm
                xorg-libice
          xorg-libXaw
            groff
              ghostscript
                jbig2dec
              psutils
              netpbm
                subversion
                  apr
                  apr-util
                  db46
                  serf1
                    scons
                  cyrus-sasl2
                    kerberos5
                      libcomerr
                  libmagic
                jasper
                libnetpbm
            xorg-libXmu
          xorg-libXi
            xorg-libXfixes
              xorg-fixesproto
    p11-kit
      desktop-file-utils
        popt

You can see that the texlive dependencies come in under libunistring which is a build requirement for gnutls.

comment:5 Changed 8 years ago by mathomp4 (Matthew Thompson)

Actually looking at that list, curl is a dependency of wget! That is...ironic? Weird? I'm not sure.

I guess didn't see it in mine because something must have required it already in my Macports setup.

comment:6 Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: lrenaud added

Has duplicate #53958. Suggestions welcome.

comment:7 Changed 7 years ago by ctreleaven (Craig Treleaven)

Description: modified (diff)

I don't think this problem is all that serious. As noted, most of the packages are only required for the build. Binary packages of wget are available:

http://packages.macports.org/wget/

In such cases, its direct build dependencies _won't_ need to be installed (although I haven't tested this on a clean system):

$ port info --depends_build wget
depends_build: texinfo, perl5.24, pkgconfig

The overall number of build dependencies that will get installed depends on whether there are binary packages for each of the non-build dependencies that wget need--unless the user has chosen to build everything from source. I haven't gone to the effort of checking each one. The following lists the non-build deps:

$ port rdeps --no-build wget
The following ports are dependencies of wget @1.19.1_0+ssl:
  libidn
    libiconv
    gettext
      expat
      ncurses
  nettle
    gmp
  pcre
    bzip2
    libedit
    zlib
  gnutls
    libtasn1
    libunistring
    p11-kit
      desktop-file-utils
        glib2
          libffi
        popt
      libxslt
        libxml2
          xz
      curl-ca-bundle

I trust this list is acceptable. ;)

In any event, after wget is installed, the 'port leaves' command should indicate any such packages that got installed but can be pruned.

comment:8 Changed 7 years ago by lrenaud (Luke)

That list is acceptable. But I suppose the key question is why does libunistring depend upon texlive? Looking at the dependencies file in the libunistring source package from the project, there aren't actually any inherent dependencies.

Further digging shows the change comes from #47424. The ticket requested addition of the library for documentation generation, so the question simply becomes is it standard practice to build all documentation with a package? If we introduce a variant of libunistring sans documentation, and depend upon that by default this whole problem would go away.

comment:9 Changed 7 years ago by ctreleaven (Craig Treleaven)

A binary package is available for libunistring so most people _won't_ get all the build deps. The build deps are only used when the package is built (eg on our buildbots). The binary package should include the documentation and therefore the build deps need not be installed. If any of the build deps are being installed, it is either due to other packages or it's a bug we should fix. The list I posted above are the only deps that should be installed if you are using the default binary distribution.

And, as I tried to say, even if you build from source and _do_ get all the build deps, you don't have to keep them. 'port leaves' will help you find all the stuff that can be uninstalled after the a successful install.

The binary packages for libunistring are at:

http://packages.macports.org/libunistring/

The current ones seem to be about 2.6MB so the docs really can't be adding that much bulk.

comment:10 in reply to:  9 Changed 7 years ago by lrenaud (Luke)

I wasn't aware that MacPorts had any form of binary distribution, and while that clearly is the simplest solution, I don't think it's particularly clear to users that it exists.

I would favor a simple non-doc version of libunistring. It looks like the configure script simply auto-detects texlive to determine if it should generate documentation, so the variant would simply be a removal of the dependency.

comment:11 Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)

I think it becomes pretty clear that we have binaries as soon as the user installs a port.

It is customary to either include the documentation, if it isn't that large or inconvenient to do so, or to offer a "docs" variant or better yet a documentation sub-port if they are large or inconvenient.

comment:12 Changed 7 years ago by danchr (Dan Villiom Podlaski Christiansen)

Resolution: fixed
Status: assignedclosed

In fd73b60f78a68bf4d7ef66270a3585b0b3eade8a/macports-ports:

libunistring: remove dependency on texlive-basic

The only difference between a build with that dependency and one
without is that 'dvips' is found. The default targets do not actually
use it.

Fixes: #53790

comment:13 Changed 7 years ago by danchr (Dan Villiom Podlaski Christiansen)

Cc: danchr added
Note: See TracTickets for help on using tickets.