Re: [Hackage] #98: cabal assumes -x option for linking
#98: cabal assumes -x option for linking ---+ Reporter: Christian.Maeder@…|Owner: ijones Type: defect| Status: closed Priority: normal|Milestone: Cabal-1.2 Component: Cabal library | Version: 1.2.0 Severity: normal| Resolution: fixed Keywords:| Difficulty: easy (4 hours) Ghcversion: 6.6 | Platform: Other Unix ---+ Comment(by elga): * [http://www.releve-identite-operateur.fr/rio-bouygues.html rio bouygues] -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/98#comment:18 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects ___ cabal-devel mailing list cabal-devel@haskell.org http://www.haskell.org/mailman/listinfo/cabal-devel
Re: [Hackage] #98: cabal assumes -x option for linking
#98: cabal assumes -x option for linking ---+ Reporter: [EMAIL PROTECTED] |Owner: ijones Type: defect| Status: closed Priority: normal|Milestone: Cabal-1.2 Component: Cabal library | Version: 1.2.0 Severity: normal| Resolution: fixed Keywords:| Difficulty: easy (4 hours) Ghcversion: 6.6 | Platform: Other Unix ---+ Comment (by guest): We have Solaris 10, you're program outputs the value 1048320, too. However, my problem was about the xargs -s value. So draw your own conclusions from my output below. Cheers Christian {{{ -bash-3.00$ ./a.out ARG_MAX == 1048320, sysconf(_SC_ARG_MAX) == 1048320 -bash-3.00$ xargs -s 3 xargs: 0 max-cmd-line-size = 2048: 3 xargs: Usage: xargs: [-t] [-p] [-e[eofstr]] [-E eofstr] [-I replstr] [-i[replstr]] [-L #] [-l[#]] [-n # [-x]] [-s size] [cmd [args ...]] -bash-3.00$ uname -a SunOS leo 5.10 Generic_127111-03 sun4u sparc SUNW,Sun-Fire-280R -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/98#comment:16 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects___ cabal-devel mailing list cabal-devel@haskell.org http://www.haskell.org/mailman/listinfo/cabal-devel
Re: [Hackage] #98: cabal assumes -x option for linking
#98: cabal assumes -x option for linking ---+ Reporter: [EMAIL PROTECTED] |Owner: ijones Type: defect| Status: closed Priority: normal|Milestone: Cabal-1.2 Component: Cabal library | Version: 1.2.0 Severity: normal| Resolution: fixed Keywords:| Difficulty: easy (4 hours) Ghcversion: 6.6 | Platform: Other Unix ---+ Comment (by duncan): Replying to [comment:16 guest]: We have Solaris 10, you're program outputs the value 1048320, too. However, my problem was about the xargs -s value. So draw your own conclusions from my output below. Cheers Christian Thanks very much Christian, that's great. I don't think us cabal hackers realised it was just `xargs` the unix program that had the limit and assumed it was the process limit. There's also an `xargs` function in cabal and we mistakenly applied the limit to that too: {{{ Thu Oct 18 15:05:00 BST 2007 Simon Marlow [EMAIL PROTECTED] * FIX GHC bug #1785: use 2048 as the maximum command-line size Apparently Solaris sets a limit of 2048 here hunk ./Distribution/Simple/GHC.hs 411 -maxCommandLineSize = 30 * 1024 +-- used to be 30k, but Solaris needs 2k (see GHC bug #1785) +maxCommandLineSize = 2048 hunk ./Distribution/Simple/GHC/Makefile.in 62 - (echo $(C_OBJS) `$(MKSTUBOBJS)`; find $(patsubst %.$(osuf),%_split,$(HS_OBJS)) -name '*.$(way_)o' -print) | xargs -s 3 $(AR) q $(EXTRA_AR_ARGS) $@ $ + (echo $(C_OBJS) `$(MKSTUBOBJS)`; find $(patsubst %.$(osuf),%_split,$(HS_OBJS)) -name '*.$(way_)o' -print) | xargs -s 2048 $(AR) q $(EXTRA_AR_ARGS) $@ $ }}} (Simon later applied another patch to remove the `-s` arg from the `xargs` program invocation) So I'll change `maxCommandLineSize` back to 30k which seemed to be ok previously. I'm leaving the call to the `xargs` program well alone. -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/98#comment:17 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects___ cabal-devel mailing list cabal-devel@haskell.org http://www.haskell.org/mailman/listinfo/cabal-devel
Re: [Hackage] #98: cabal assumes -x option for linking
#98: cabal assumes -x option for linking ---+ Reporter: [EMAIL PROTECTED] |Owner: ijones Type: defect| Status: closed Priority: normal|Milestone: Cabal-1.2 Component: Cabal library | Version: 1.2.0 Severity: normal| Resolution: fixed Keywords:| Difficulty: easy (4 hours) Ghcversion: 6.6 | Platform: Other Unix ---+ Comment (by duncan): Replying to [comment:2 guest]: Furthermore the generated file libraries/base/GNUMakefile contained `xargs -s 3` which is too big for Solaris (the maximal value is 2048) I'd really like to get this increased. 2048 is ridiculously low for most platforms. We end up doing multiple ar and ld calls even for ordinary sized Haskell projects without even using split-objs. If people use split- objs we'll end up making 100's of ar/ld calls for larger libs. According to POSIX.1-2001 the minimum value for ARG_MAX is _POSIX_ARG_MAX which is 4096. So surely even older versions of Solaris must have supported at least 4096? I used the following C program to test on Solaris 9 and I discovered the value is 1048320. {{{ #include stdio.h #include unistd.h #include limits.h int main () { printf(ARG_MAX == %d, sysconf(_SC_ARG_MAX) == %ld\n, ARG_MAX, sysconf(_SC_ARG_MAX)); return 0; } }}} On posix systems we could test dynamically using `System.Posix.Unistd.getSysVar ArgumentLimit` though it's a pain because we'd have to use cpp and add a conditional dependency on the unix package. Christian, what version of Solaris are you using and what does the above C program report for you? -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/98#comment:15 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects___ cabal-devel mailing list cabal-devel@haskell.org http://www.haskell.org/mailman/listinfo/cabal-devel
Re: [Hackage] #98: cabal assumes -x option for linking
#98: cabal assumes -x option for linking ---+ Reporter: [EMAIL PROTECTED] |Owner: ijones Type: defect| Status: closed Priority: normal|Milestone: Cabal-1.2 Component: Cabal | Version: 1.2.0 Severity: normal| Resolution: fixed Keywords:| Difficulty: easy (4 hours) Ghcversion: 6.6 | Platform: Other Unix ---+ Changes (by guest): * status: new = closed * resolution: = fixed Comment: I could build `ghc-6.8.0.20071025` from the sources, now (after skipping http://hackage.haskell.org/trac/ghc/ticket/1805). Christian -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/98#comment:14 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects___ cabal-devel mailing list cabal-devel@haskell.org http://www.haskell.org/mailman/listinfo/cabal-devel
Re: [Hackage] #98: cabal assumes -x option for linking
#98: cabal assumes -x option for linking ---+ Reporter: [EMAIL PROTECTED] |Owner: ijones Type: defect| Status: new Priority: normal|Milestone: Cabal-1.2 Component: Cabal | Version: 1.2.0 Severity: normal| Resolution: Keywords:| Difficulty: easy (4 hours) Ghcversion: 6.6 | Platform: Other Unix ---+ Comment (by duncan): Latest cabal-1.2.x version has a fix. Can some Solaris user check that it works please? -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/98#comment:12 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects___ cabal-devel mailing list cabal-devel@haskell.org http://www.haskell.org/mailman/listinfo/cabal-devel
Re: [Hackage] #98: cabal assumes -x option for linking
#98: cabal assumes -x option for linking ---+ Reporter: [EMAIL PROTECTED] |Owner: ijones Type: defect| Status: new Priority: normal|Milestone: Cabal-1.2 Component: Cabal | Version: 1.2.0 Severity: normal| Resolution: Keywords:| Difficulty: easy (4 hours) Ghcversion: 6.6 | Platform: Other Unix ---+ Comment (by duncan): You misunderstand. The Makefile is generated by Cabal. So it's nothing to do with GHC's configure script and everything to do with Cabal deciding what the appropriate flags are. As it happens because of the Makefile stuff we'll have to fix it in two places in Cabal, once for the ordinary Cabal build stuff and once for where Cabal generates the Makefile. -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/98#comment:10 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects___ cabal-devel mailing list cabal-devel@haskell.org http://www.haskell.org/mailman/listinfo/cabal-devel
Re: [Hackage] #98: cabal assumes -x option for linking
#98: cabal assumes -x option for linking ---+ Reporter: [EMAIL PROTECTED] |Owner: ijones Type: defect| Status: new Priority: normal|Milestone: Cabal-1.2 Component: Cabal | Version: 1.2.0 Severity: normal| Resolution: Keywords:| Difficulty: easy (4 hours) Ghcversion: 6.6 | Platform: Other Unix ---+ Comment (by guest): this is how the error message looks like: {{{ /usr/ccs/bin/ld: illegal option -- x usage: ld [-6:abc:d:e:f:h:il:mo:p:rstu:z:B:CD:F:GI:L:M:N:P:Q:R:S:VY:?] file(s) [-64] enforce a 64-bit link-edit [-a]create an absolute file [-b]do not do special PIC relocations in a.out [-B direct | nodirect] establish direct bindings, or inhibit direct binding to, the object being created [-B dynamic | static] search for shared libraries|archives [-B eliminate] eliminate unqualified global symbols from the symbol table [-B group] relocate object from within group [-B local] reduce unqualified global symbols to local [-B reduce] process symbol reductions [-B symbolic] bind external references to definitions when creating shared objects [-c name] record configuration file `name' [-C]demangle C++ symbol name diagnostics [-d y | n] operate in dynamic|static mode [-D token,...] print diagnostic messages [-e epsym] use `epsym' as entry point address [-f name] specify library for which this file is an auxiliary filter [-F name] specify library for which this file is a filter [-G]create a shared object [-h name] use `name' as internal shared object identifier [-i]ignore LD_LIBRARY_PATH setting [-I name] use `name' as path of interpreter [-l x] search for libx.so or libx.a [-L path] search for libraries in directory `path' [-m]print memory map [-M mapfile]use processing directives contained in `mapfile' [-N string] create a dynamic dependency for `string' [-o outfile]name the output file `outfile' [-p auditlib] identify audit library to accompany this object [-P auditlib] identify audit library for processing the dependencies of this object [-Q y | n] do|do not place version information in output file [-r]create a relocatable object [-R path] specify a library search path to be used at run time [-s]strip any symbol and debugging information [-S supportlib] specify a link-edit support library [-t]do not warn of multiply-defined symbols that have different sizes or alignments [-u symname]create an undefined symbol `symname' [-V]print version information [-Y P,dirlist] use `dirlist' as a default path when searching for libraries [-z absexec]when building an executable absolute symbols referenced in dynamic objects are promoted to the executable [-z allextract | defaultextract | weakextract] extract all member files, only members that resolve undefined tor tentative symbols, or allow extraction of archive members to resolvetweak references from archive files [-z altexec64] execute the 64-bit link-editor [-z combreloc] combine multiple relocation sections [-z defs] disallow undefined symbol references [-z direct | nodirect] enable|disable direct binding to shared object dependencies [-z endfiltee] marks a filtee such that it will terminate a filters search [-z finiarray=function] name of function to be appended to the .finiarray [-z groupperm | nogroupperm] enable|disable setting of group permissions on dynamic dependencies [-z help ] print this usage message [-z ignore | record]
Re: [Hackage] #98: cabal assumes -x option for linking
#98: cabal assumes -x option for linking ---+ Reporter: [EMAIL PROTECTED] |Owner: ijones Type: defect| Status: new Priority: normal|Milestone: Cabal-1.2 Component: Cabal | Version: 1.2.0 Severity: normal| Resolution: Keywords:| Difficulty: easy (4 hours) Ghcversion: 6.6 | Platform: Other Unix ---+ Comment (by guest): Omitting this line works under Solaris. Maybe this explains why my binaries are about 20% bigger. -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/98#comment:6 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects___ cabal-devel mailing list cabal-devel@haskell.org http://www.haskell.org/mailman/listinfo/cabal-devel
Re: [Hackage] #98: cabal assumes -x option for linking
#98: cabal assumes -x option for linking ---+ Reporter: [EMAIL PROTECTED] |Owner: ijones Type: defect| Status: new Priority: normal|Milestone: Cabal-1.2 Component: Cabal | Version: 1.2.0 Severity: normal| Resolution: Keywords:| Difficulty: easy (4 hours) Ghcversion: 6.6 | Platform: Other Unix ---+ Comment (by duncan): See also http://hackage.haskell.org/trac/ghc/ticket/1786#comment:2 where I describe one route to a fix. -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/98#comment:8 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects___ cabal-devel mailing list cabal-devel@haskell.org http://www.haskell.org/mailman/listinfo/cabal-devel
Re: [Hackage] #98: cabal assumes -x option for linking
#98: cabal assumes -x option for linking +--- Reporter: [EMAIL PROTECTED] |Owner: ijones Type: defect | Status: new Priority: normal |Milestone: Cabal-1.4 Component: Cabal | Version: 1.1.6 Severity: normal | Resolution: Keywords: | Difficulty: easy (4 hours) Ghcversion: 6.6| Platform: Other Unix +--- Changes (by duncan): * difficulty: normal = easy (4 hours) * milestone: = Cabal-1.4 -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/98 Hackage http://example.com/ My example project___ cabal-devel mailing list cabal-devel@haskell.org http://www.haskell.org/mailman/listinfo/cabal-devel