Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Makefile balloons to huge size with seemingly infinite repetition on some Linux systems #9843

Closed
ilmari-lauhakangas opened this issue Nov 2, 2022 · 20 comments
Labels

Comments

@ilmari-lauhakangas
Copy link

We use curl in LibreOffice development. Recently, a new contributor building LibreOffice on Debian 11 noticed that curl's Makefile in LibreOffice's workdir took 1.5 terabytes of space. This was observed with curl 7.85.0 and persists with 7.86.0.

While I don't see this infinite ballooning myself, my Makefile does get unusually large, 13.2 MiB. I am pasting below the result of printing duplicate lines with counts. This is on Arch Linux.

$ sort workdir/UnpackedTarball/curl/lib/Makefile | uniq -cd
415 
3         }
16 #
2 #                                  _   _ ____  _
2 #                             / __| | | | |_) | |
2 #                             \___|\___/|_| \_\_____|
2 #                            | (__| |_| |  _ <| |___
2 ###########################################################################
2 #***************************************************************************
2         $(am__define_uniq_tagged_files); \
2         $(am__mv) $$depbase.Tpo $$depbase.Po
2 #       $(AM_V_CC)source='$<' object='$@' libtool=no \
2             $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
2           $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
2 # are also available at https://curl.se/docs/copyright.html.
2     case $$flg in \
3         cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
2         cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
2 # copies of the Software, and permit persons to whom the Software is
2 # Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
317 #       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
3         done
2         done; \
2           echo rm -f $${locs}; \
3           else \
2   else \
2         esac; \
3     esac; \
2     false; \
2             fi; \
3           fi; \
3142         fi
2   fi; \
2               find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
2 # furnished to do so, under the terms of the COPYING file.
628         if test $$xm_dep_cnt -eq 0 && test -d ./$(DEPDIR); then \
628         if test $$xm_dep_cnt -eq 0 && test -d vauth/$(DEPDIR); then \
628         if test $$xm_dep_cnt -eq 0 && test -d vquic/$(DEPDIR); then \
628         if test $$xm_dep_cnt -eq 0 && test -d vssh/$(DEPDIR); then \
628         if test $$xm_dep_cnt -eq 0 && test -d vtls/$(DEPDIR); then \
2             install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
2 # KIND, either express or implied.
2         @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
2         locs=`for p in $$list; do echo $$p; done | \
2 #  Project                     ___| | | |  _ \| |
2           rm -f $${locs}; \
628         -rm -f ./$(DEPDIR)/libcurl_la-altsvc.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-amigaos.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-asyn-ares.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-asyn-thread.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-base64.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-bufref.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-c-hyper.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-conncache.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-connect.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-content_encoding.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-cookie.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-curl_des.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-curl_endian.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-curl_gethostname.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-curl_get_line.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-curl_gssapi.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-curl_memrchr.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-curl_multibyte.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-curl_ntlm_core.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-curl_ntlm_wb.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-curl_path.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-curl_range.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-curl_rtmp.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-curl_sasl.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-curl_sspi.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-curl_threads.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-dict.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-doh.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-dynbuf.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-easygetopt.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-easyoptions.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-easy.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-escape.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-fileinfo.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-file.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-fopen.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-formdata.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-ftplistparser.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-ftp.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-getenv.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-getinfo.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-gopher.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-h2h3.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-hash.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-headers.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-hmac.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-hostasyn.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-hostip4.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-hostip6.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-hostip.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-hostsyn.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-hsts.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-http2.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-http_aws_sigv4.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-http_chunks.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-http_digest.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-http_negotiate.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-http_ntlm.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-http.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-http_proxy.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-idn_win32.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-if2ip.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-imap.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-inet_ntop.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-inet_pton.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-krb5.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-ldap.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-llist.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-md4.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-md5.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-memdebug.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-mime.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-mprintf.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-mqtt.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-multi.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-netrc.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-nonblock.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-noproxy.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-openldap.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-parsedate.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-pingpong.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-pop3.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-progress.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-psl.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-rand.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-rename.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-rtsp.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-select.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-sendf.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-setopt.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-sha256.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-share.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-slist.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-smb.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-smtp.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-socketpair.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-socks_gssapi.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-socks.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-socks_sspi.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-speedcheck.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-splay.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-strcase.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-strdup.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-strerror.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-strtok.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-strtoofft.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-system_win32.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-telnet.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-tftp.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-timediff.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-timeval.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-transfer.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-urlapi.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-url.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-version.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-version_win32.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-warnless.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-wildcard.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurl_la-ws.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-altsvc.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-amigaos.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-asyn-ares.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-asyn-thread.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-base64.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-bufref.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-c-hyper.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-conncache.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-connect.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-content_encoding.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-cookie.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-curl_des.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-curl_endian.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-curl_gethostname.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-curl_get_line.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-curl_gssapi.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-curl_memrchr.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-curl_multibyte.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-curl_ntlm_core.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-curl_ntlm_wb.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-curl_path.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-curl_range.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-curl_rtmp.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-curl_sasl.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-curl_sspi.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-curl_threads.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-dict.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-doh.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-dynbuf.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-easygetopt.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-easyoptions.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-easy.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-escape.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-fileinfo.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-file.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-fopen.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-formdata.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-ftplistparser.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-ftp.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-getenv.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-getinfo.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-gopher.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-h2h3.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-hash.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-headers.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-hmac.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-hostasyn.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-hostip4.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-hostip6.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-hostip.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-hostsyn.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-hsts.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-http2.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-http_aws_sigv4.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-http_chunks.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-http_digest.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-http_negotiate.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-http_ntlm.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-http.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-http_proxy.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-idn_win32.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-if2ip.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-imap.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-inet_ntop.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-inet_pton.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-krb5.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-ldap.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-llist.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-md4.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-md5.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-memdebug.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-mime.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-mprintf.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-mqtt.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-multi.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-netrc.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-nonblock.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-noproxy.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-openldap.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-parsedate.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-pingpong.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-pop3.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-progress.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-psl.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-rand.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-rename.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-rtsp.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-select.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-sendf.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-setopt.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-sha256.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-share.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-slist.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-smb.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-smtp.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-socketpair.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-socks_gssapi.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-socks.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-socks_sspi.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-speedcheck.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-splay.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-strcase.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-strdup.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-strerror.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-strtok.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-strtoofft.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-system_win32.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-telnet.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-tftp.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-timediff.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-timeval.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-transfer.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-urlapi.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-url.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-version.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-version_win32.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-warnless.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-wildcard.Plo # am--include-marker
628         -rm -f ./$(DEPDIR)/libcurlu_la-ws.Plo # am--include-marker
2         -rm -f Makefile
628         -rm -f vauth/$(DEPDIR)/libcurl_la-cleartext.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurl_la-cram.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurl_la-digest.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurl_la-digest_sspi.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurl_la-gsasl.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurl_la-krb5_gssapi.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurl_la-krb5_sspi.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurl_la-ntlm.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurl_la-ntlm_sspi.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurl_la-oauth2.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurl_la-spnego_gssapi.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurl_la-spnego_sspi.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurl_la-vauth.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurlu_la-cleartext.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurlu_la-cram.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurlu_la-digest.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurlu_la-digest_sspi.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurlu_la-gsasl.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurlu_la-krb5_gssapi.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurlu_la-krb5_sspi.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurlu_la-ntlm.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurlu_la-ntlm_sspi.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurlu_la-oauth2.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo # am--include-marker
628         -rm -f vauth/$(DEPDIR)/libcurlu_la-vauth.Plo # am--include-marker
628         -rm -f vquic/$(DEPDIR)/libcurl_la-msh3.Plo # am--include-marker
628         -rm -f vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo # am--include-marker
628         -rm -f vquic/$(DEPDIR)/libcurl_la-quiche.Plo # am--include-marker
628         -rm -f vquic/$(DEPDIR)/libcurl_la-vquic.Plo # am--include-marker
628         -rm -f vquic/$(DEPDIR)/libcurlu_la-msh3.Plo # am--include-marker
628         -rm -f vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo # am--include-marker
628         -rm -f vquic/$(DEPDIR)/libcurlu_la-quiche.Plo # am--include-marker
628         -rm -f vquic/$(DEPDIR)/libcurlu_la-vquic.Plo # am--include-marker
628         -rm -f vssh/$(DEPDIR)/libcurl_la-libssh2.Plo # am--include-marker
628         -rm -f vssh/$(DEPDIR)/libcurl_la-libssh.Plo # am--include-marker
628         -rm -f vssh/$(DEPDIR)/libcurl_la-wolfssh.Plo # am--include-marker
628         -rm -f vssh/$(DEPDIR)/libcurlu_la-libssh2.Plo # am--include-marker
628         -rm -f vssh/$(DEPDIR)/libcurlu_la-libssh.Plo # am--include-marker
628         -rm -f vssh/$(DEPDIR)/libcurlu_la-wolfssh.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurl_la-bearssl.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurl_la-gskit.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurl_la-gtls.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurl_la-hostcheck.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurl_la-keylog.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls_threadlock.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurl_la-nss.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurl_la-openssl.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurl_la-rustls.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurl_la-schannel.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurl_la-schannel_verify.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurl_la-sectransp.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurl_la-vtls.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurl_la-x509asn1.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurlu_la-gskit.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurlu_la-gtls.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurlu_la-hostcheck.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurlu_la-keylog.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls_threadlock.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurlu_la-nss.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurlu_la-openssl.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurlu_la-rustls.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurlu_la-schannel.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurlu_la-schannel_verify.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurlu_la-sectransp.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurlu_la-vtls.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo # am--include-marker
628         -rm -f vtls/$(DEPDIR)/libcurlu_la-x509asn1.Plo # am--include-marker
628           rm -rf ./$(DEPDIR); \
628           rm -rf vauth/$(DEPDIR); \
628           rm -rf vquic/$(DEPDIR); \
628           rm -rf vssh/$(DEPDIR); \
628           rm -rf vtls/$(DEPDIR); \
2               sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
2               sort -u`; \
2 # SPDX-License-Identifier: curl
2         test -z "$$locs" || { \
2 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
2 # This software is licensed as described in the file COPYING, which
2     true; \
26         vauth/$(DEPDIR)/$(am__dirstamp)
8         vquic/$(DEPDIR)/$(am__dirstamp)
6         vssh/$(DEPDIR)/$(am__dirstamp)
32         vtls/$(DEPDIR)/$(am__dirstamp)
628         @xm_dep_cnt=`ls ./$(DEPDIR) | wc -l 2>/dev/null`; \
628         @xm_dep_cnt=`ls vauth/$(DEPDIR) | wc -l 2>/dev/null`; \
628         @xm_dep_cnt=`ls vquic/$(DEPDIR) | wc -l 2>/dev/null`; \
628         @xm_dep_cnt=`ls vssh/$(DEPDIR) | wc -l 2>/dev/null`; \
628         @xm_dep_cnt=`ls vtls/$(DEPDIR) | wc -l 2>/dev/null`; \
2 # You may opt to use, copy, modify, merge, publish, distribute and/or sell
2 # you should have received as part of this distribution. The terms
@bagder bagder added the build label Nov 2, 2022
@bagder
Copy link
Member

bagder commented Nov 2, 2022

I've seen this happen as well but I've not figured out why or what causes it...

@dfandrich
Copy link
Contributor

dfandrich commented Nov 2, 2022 via email

@jay
Copy link
Member

jay commented Nov 3, 2022

Though this may not be a curl bug it would still be nice to know what causes it if you are able to bisect it.

@ilmari-lauhakangas
Copy link
Author

I cloned curl repository and I can't repro the size problem after running configure with the options that LibreOffice uses. Makefile size is 68 KiB.

git checkout cd95ee9f771361acf241629d2fe5507e308082a2 # 7.86.0 release
autoreconf -fi
./configure \
  --without-gnutls --without-mbedtls \
  --enable-ftp --enable-http --enable-ipv6 \
  --without-libidn2 --without-libpsl --without-librtmp \
  --without-libssh2 --without-nghttp2 \
  --without-libssh --without-brotli \
  --without-ngtcp2 --without-quiche \
  --without-zstd --without-hyper --without-libgsasl --without-gssapi \
  --disable-mqtt --disable-ares \
  --disable-dict --disable-file --disable-gopher --disable-imap \
  --disable-ldap --disable-ldaps --disable-manual --disable-pop3 \
  --disable-rtsp --disable-smb --disable-smtp --disable-telnet  \
  --disable-tftp  \
  --with-nss --with-nss-deprecated \
  --with-openssl \
  --without-ca-bundle --without-ca-path

@bagder
Copy link
Member

bagder commented Nov 3, 2022

@ilmari-lauhakangas using which automake version?

@ilmari-lauhakangas
Copy link
Author

@ilmari-lauhakangas using which automake version?

automake is 1.16.5

@bagder
Copy link
Member

bagder commented Nov 3, 2022

The 7.86.0 tarballs were made with 1.16.5 too, more specifically the 1.16.5-1.3 package in debian (unstable).

@ilmari-lauhakangas
Copy link
Author

I cloned curl repository and I can't repro the size problem after running configure with the options that LibreOffice uses. Makefile size is 68 KiB.

Sorry, this is not true: I was looking at the wrong Makefile! lib/Makefile does grow to 13.2 MiB.

@bagder
Copy link
Member

bagder commented Nov 3, 2022

The 628 number is curious. It seems to be the number of lib source files times two!

$ cd [curl-src]/lib
$ find . -name "*.[ch]" | wc -l
314

@ilmari-lauhakangas
Copy link
Author

I tried running autoreconf and configure for a bunch of older tags, down to 7.32.0 or 70812c2. The size of the Makefile kept getting smaller, but is still 6.6 MiB at 7.32.0, with the repetition number being 448.

@bagder
Copy link
Member

bagder commented Nov 3, 2022

Right, because this is probably because of automake. If you would downgrade that, you could potentially figure out which version that introduced this behavior.

@ilmari-lauhakangas
Copy link
Author

I have a local automake build set up now per https://git.savannah.gnu.org/cgit/automake.git/tree/HACKING

Curl doesn't seem to have any env var for aclocal, though, so if I do

am=/home/user/automake
env PERL5LIB=$am/lib AUTOMAKE="$am/bin/automake" ACLOCAL="$am/bin/aclocal" autoreconf -fi

I get

aclocal: error: couldn't open directory '/tmp/amdev/share/aclocal-1.16': No such file or directory

Any ideas?

@bagder
Copy link
Member

bagder commented Nov 14, 2022

A broken aclocal install?

@ilmari-lauhakangas
Copy link
Author

A broken aclocal install?

No, I mean I want to point to the built aclocal in automake/bin. Should I hardcode the path in curl source or what do you propose?

@bagder
Copy link
Member

bagder commented Nov 14, 2022

Where/how would such a "hardcode" be done? I don't see the curl source use aclocal anywhere..

@ilmari-lauhakangas
Copy link
Author

Yeah, I was getting ahead of myself setting that ACLOCAL var. Anyway, here's what I get without it:

$ env PERL5LIB=$am/lib AUTOMAKE="$am/bin/automake" autoreconf -fi
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
libtoolize: Remember to add 'LT_INIT' to configure.ac.
configure.ac:129: error: version mismatch.  This is Automake 1.16i,
configure.ac:129: but the definition used by this AM_INIT_AUTOMAKE
configure.ac:129: comes from Automake 1.16.5.  You should recreate
configure.ac:129: aclocal.m4 with aclocal and run automake again.
configure.ac:123: error: required file './compile' not found
configure.ac:123: error: required file './install-sh' not found
configure.ac:129: error: required file './missing' not found
automake: error: cannot open < /tmp/amdev/share/automake-1.16/am/header-vars.am: No such file or directory
autoreconf: error: /home/user/automake/bin/automake failed with exit status: 63

Any ideas?

@ilmari-lauhakangas
Copy link
Author

Update: I got help from a colleague and realised that I had not done make install. So for latest automake the steps are

$ ./bootstrap ./configure --prefix=/tmp/amdev && make && make install

and in curl

$ am=/tmp/amdev
$ env PERL5LIB=$am/lib AUTOMAKE="$am/bin/automake" ACLOCAL="$am/bin/aclocal" autoreconf -fi
$ ./configure \
  --without-gnutls --without-mbedtls \
  --enable-ftp --enable-http --enable-ipv6 \
  --without-libidn2 --without-libpsl --without-librtmp \
  --without-libssh2 --without-nghttp2 \
  --without-libssh --without-brotli \
  --without-ngtcp2 --without-quiche \
  --without-zstd --without-hyper --without-libgsasl --without-gssapi \
  --disable-mqtt --disable-ares \
  --disable-dict --disable-file --disable-gopher --disable-imap \
  --disable-ldap --disable-ldaps --disable-manual --disable-pop3 \
  --disable-rtsp --disable-smb --disable-smtp --disable-telnet  \
  --disable-tftp  \
  --with-nss --with-nss-deprecated \
  --with-openssl \
  --without-ca-bundle --without-ca-path

I have now built automake 1.15 with

$ ./bootstrap.sh && ./configure --prefix=/tmp/amdev && make && make install

and I don't see the size issue! Will look into bisecting next (I have plenty of experience in that).

@ilmari-lauhakangas
Copy link
Author

git bisect points to this as the bad commit: https://git.savannah.gnu.org/cgit/automake.git/commit/?id=08849db866b44510f6b8fd49e313c91a43a3dfd3

deps: fix corner-case "make distclean" bug

I checked with the preceding commit and it is without the problem.

Should I report it to automake or do you want to look into it/comment first?

@bagder
Copy link
Member

bagder commented Nov 15, 2022

Awesome work. Go on and report it, I don't know what more to do with this!

@bagder
Copy link
Member

bagder commented Nov 19, 2022

@ilmari-lauhakangas submitted it to the automake project:

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59288

@bagder bagder closed this as completed in 73e9e6d Mar 3, 2023
bch pushed a commit to bch/curl that referenced this issue Jul 19, 2023
Because automake used to delete depdirs at once (.deps) and there was an issue
with portability, curl's XC_AMEND_DISTCLEAN greps the Makefiles in an attempt
to build a list of all depfiles and delete them individually instead.

Since commit 08849db866b44510f6b8fd49e313c91a43a3dfd3, automake switched from
deleting directories to individual files. curl's custom logic now finds a lot
more results with the grep (the filtering of these results isn't great), which
causes a massive bloating of the Makefile in the order of O(n^2).

Also remove now-unused XC_AMEND_DISTCLEAN macro group

References: curl#9843
References: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59288

Reported-by: Ilmari Lauhakangas
Fixes curl#9843
Closes curl#10661
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

No branches or pull requests

4 participants