Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Problem installing GD.pm under Solaris

by neversaint (Deacon)
on Apr 18, 2007 at 03:32 UTC ( #610697=perlquestion: print w/ replies, xml ) Need Help??
neversaint has asked for the wisdom of the Perl Monks concerning the following question:

Dear Masters,
Is there a way I can get GD.pm that is buildable under Solaris? I was trying this install, it gives me such error message: Is there a way to get it successfully installed?
cpan> install GD CPAN: Storable loaded ok Going to read /home/sadm/.cpan/Metadata Database was generated on Tue, 17 Apr 2007 05:09:38 GMT Running install for module GD Running make for L/LD/LDS/GD-2.35.tar.gz CPAN: Digest::MD5 loaded ok CPAN: Compress::Zlib loaded ok Checksum for /home/sadm/.cpan/sources/authors/id/L/LD/LDS/GD-2.35.tar. +gz ok Scanning cache /home/sadm/.cpan/build for sizes x GD-2.35, 0 bytes, 0 tape blocks x GD-2.35/t, 0 bytes, 0 tape blocks x GD-2.35/t/test.out.3.jpeg, 8647 bytes, 17 tape blocks x GD-2.35/t/GD.t, 9647 bytes, 19 tape blocks x GD-2.35/t/tile.jpeg, 441 bytes, 1 tape blocks x GD-2.35/t/test.out.4.jpeg, 2120 bytes, 5 tape blocks x GD-2.35/t/test.out.5.jpeg, 3899 bytes, 8 tape blocks x GD-2.35/t/test.out.6.jpeg, 9611 bytes, 19 tape blocks x GD-2.35/t/test.out.7.jpeg, 12797 bytes, 25 tape blocks x GD-2.35/t/test.out.8.jpeg, 2291 bytes, 5 tape blocks x GD-2.35/t/test.out.9.jpeg, 1882 bytes, 4 tape blocks x GD-2.35/t/test.out.3.png-1, 3229 bytes, 7 tape blocks x GD-2.35/t/Polyline.t, 492 bytes, 1 tape blocks x GD-2.35/t/test.out.4.png-1, 269 bytes, 1 tape blocks x GD-2.35/t/test.out.4.png-2, 269 bytes, 1 tape blocks x GD-2.35/t/test.out.10.png-1, 2797 bytes, 6 tape blocks x GD-2.35/t/test.out.10.png-2, 2521 bytes, 5 tape blocks x GD-2.35/t/test.out.10.png-3, 2521 bytes, 5 tape blocks x GD-2.35/t/test.out.1.png, 1270 bytes, 3 tape blocks x GD-2.35/t/test.out.2.gif, 2907 bytes, 6 tape blocks x GD-2.35/t/test.out.2.png, 1270 bytes, 3 tape blocks x GD-2.35/t/test.out.3.gif, 2958 bytes, 6 tape blocks x GD-2.35/t/test.out.3.png, 3229 bytes, 7 tape blocks x GD-2.35/t/test.out.4.gif, 295 bytes, 1 tape blocks x GD-2.35/t/test.out.4.png, 269 bytes, 1 tape blocks x GD-2.35/t/test.out.5.gif, 906 bytes, 2 tape blocks x GD-2.35/t/test.out.5.png, 637 bytes, 2 tape blocks x GD-2.35/t/test.out.6.gif, 3180 bytes, 7 tape blocks x GD-2.35/t/test.out.6.png, 3218 bytes, 7 tape blocks x GD-2.35/t/test.out.7.gif, 2525 bytes, 5 tape blocks x GD-2.35/t/test.out.7.png, 1979 bytes, 4 tape blocks x GD-2.35/t/test.out.8.gif, 3458 bytes, 7 tape blocks x GD-2.35/t/test.out.8.png, 3449 bytes, 7 tape blocks x GD-2.35/t/test.out.9.gif, 2979 bytes, 6 tape blocks x GD-2.35/t/test.out.9.png, 2804 bytes, 6 tape blocks x GD-2.35/t/test.out.5.png-1, 637 bytes, 2 tape blocks x GD-2.35/t/Generic.ttf, 22660 bytes, 45 tape blocks x GD-2.35/t/test.out.6.png-1, 3218 bytes, 7 tape blocks x GD-2.35/t/test.out.7.png-1, 1979 bytes, 4 tape blocks x GD-2.35/t/frog.jpg, 1555 bytes, 4 tape blocks x GD-2.35/t/frog.xpm, 10540 bytes, 21 tape blocks x GD-2.35/t/test.out.10.jpeg, 1892 bytes, 4 tape blocks x GD-2.35/t/test.out.8.png-1, 3607 bytes, 8 tape blocks x GD-2.35/t/test.out.8.png-2, 3603 bytes, 8 tape blocks x GD-2.35/t/test.out.8.png-3, 3605 bytes, 8 tape blocks x GD-2.35/t/test.out.8.png-4, 3424 bytes, 7 tape blocks x GD-2.35/t/test.out.8.png-5, 3340 bytes, 7 tape blocks x GD-2.35/t/test.out.8.png-6, 3449 bytes, 7 tape blocks x GD-2.35/t/tile.gif, 108 bytes, 1 tape blocks x GD-2.35/t/tile.png, 280 bytes, 1 tape blocks x GD-2.35/t/test.out.2.png-1, 1270 bytes, 3 tape blocks x GD-2.35/t/test.out.9.png-1, 2804 bytes, 6 tape blocks x GD-2.35/t/test.out.9.png-2, 2804 bytes, 6 tape blocks x GD-2.35/t/palettemap.png, 2166 bytes, 5 tape blocks x GD-2.35/t/test.out.10.gif, 2659 bytes, 6 tape blocks x GD-2.35/t/test.out.10.png, 2521 bytes, 5 tape blocks x GD-2.35/t/test.out.2.jpeg, 13068 bytes, 26 tape blocks x GD-2.35/GD, 0 bytes, 0 tape blocks x GD-2.35/GD/Polygon.pm, 4017 bytes, 8 tape blocks x GD-2.35/GD/Simple.pm, 34701 bytes, 68 tape blocks x GD-2.35/GD/Image.pm.PLS, 5501 bytes, 11 tape blocks x GD-2.35/GD/Polyline.pm, 22483 bytes, 44 tape blocks x GD-2.35/GD.pm, 59779 bytes, 117 tape blocks x GD-2.35/GD.xs, 48484 bytes, 95 tape blocks x GD-2.35/demos, 0 bytes, 0 tape blocks x GD-2.35/demos/brushes.pl, 929 bytes, 2 tape blocks x GD-2.35/demos/font_list.png, 22078 bytes, 44 tape blocks x GD-2.35/demos/fonttest, 936 bytes, 2 tape blocks x GD-2.35/demos/polys.pl, 791 bytes, 2 tape blocks x GD-2.35/demos/fills.pl, 596 bytes, 2 tape blocks x GD-2.35/demos/truetype_test, 870 bytes, 2 tape blocks x GD-2.35/demos/shapes.pl, 1299 bytes, 3 tape blocks x GD-2.35/demos/copies.pl, 1097 bytes, 3 tape blocks x GD-2.35/demos/ttf.pl, 742 bytes, 2 tape blocks x GD-2.35/demos/gd_example.cgi, 689 bytes, 2 tape blocks x GD-2.35/demos/tile.png, 280 bytes, 1 tape blocks x GD-2.35/demos/polyline.pl, 8848 bytes, 18 tape blocks x GD-2.35/demos/transform.pl, 704 bytes, 2 tape blocks x GD-2.35/qd.pl, 32810 bytes, 65 tape blocks x GD-2.35/README, 17018 bytes, 34 tape blocks x GD-2.35/Makefile.PL, 11262 bytes, 22 tape blocks x GD-2.35/README.QUICKDRAW, 467 bytes, 1 tape blocks x GD-2.35/META.yml, 321 bytes, 1 tape blocks x GD-2.35/typemap, 66 bytes, 1 tape blocks x GD-2.35/bdf_scripts, 0 bytes, 0 tape blocks x GD-2.35/bdf_scripts/README, 363 bytes, 1 tape blocks x GD-2.35/bdf_scripts/bdf2gdfont.PLS, 5327 bytes, 11 tape blocks x GD-2.35/bdf_scripts/bdftogd, 4082 bytes, 8 tape blocks x GD-2.35/bdf_scripts/bdf2gdfont.pl, 4689 bytes, 10 tape blocks x GD-2.35/README.unix, 2221 bytes, 5 tape blocks x GD-2.35/ChangeLog, 6180 bytes, 13 tape blocks x GD-2.35/MANIFEST, 1452 bytes, 3 tape blocks Removing previously used /home/sadm/.cpan/build/GD-2.35 CPAN.pm: Going to build L/LD/LDS/GD-2.35.tar.gz Configuring for libgd version 2.0.34. Checking for stray libgd header files...cc: Warning: illegal option -n +t-search-dirs usage: cc [ options] files. Use 'cc -flags' for details none found. Included Features: GD_XPM GD_JPEG GD_FONTCONFIG GD_FREETYPE G +D_PNG GD_GIF GD_GIFANIM GD_OPENPOLYGON GD_UNCLOSEDPOLY GD_ANIMGIF GD_ +FTCIRCLE VERSION_33 GD library used from: /usr/local Checking if your kit is complete... Looks good Note (probably harmless): No library found for -liconv Writing Makefile for GD /usr/bin/perl "-Iblib/arch" "-Iblib/lib" GD/Image.pm.PLS GD/Image.pm Extracting Image.pm (with variable substitutions) cp GD/Polyline.pm blib/lib/GD/Polyline.pm cp qd.pl blib/lib/qd.pl cp GD/Image.pm blib/lib/GD/Image.pm cp GD.pm blib/lib/GD.pm AutoSplitting blib/lib/GD.pm (blib/lib/auto/GD) cp GD/Simple.pm blib/lib/GD/Simple.pm cp GD/Polygon.pm blib/lib/GD/Polygon.pm /usr/bin/perl /usr/perl5/5.8.4/lib/ExtUtils/xsubpp -typemap /usr/perl +5/5.8.4/lib/ExtUtils/typemap -typemap typemap GD.xs > GD.xsc && mv G +D.xsc GD.c cc -c -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=6 +4 -xarch=v8 -D_TS_ERRNO -xO3 -xspace -xildoff -DVERSION=\"2.35\" +-DXS_VERSION=\"2.35\" -KPIC "-I/usr/perl5/5.8.4/lib/sun4-solaris-64in +t/CORE" -DHAVE_JPEG -DHAVE_FT -DHAVE_XPM -DHAVE_GIF -DHAVE_PNG -DHAV +E_ANIMGIF -DVERSION_33 -DHAVE_UNCLOSEDPOLY -DHAVE_FONTCONFIG -DHAVE_F +TCIRCLE GD.c "GD.xs", line 7: cannot find include file: <gd.h> "GD.xs", line 8: cannot find include file: <gdfontg.h> "GD.xs", line 9: cannot find include file: <gdfontl.h> "GD.xs", line 10: cannot find include file: <gdfontmb.h> "GD.xs", line 11: cannot find include file: <gdfonts.h> "GD.xs", line 12: cannot find include file: <gdfontt.h> "GD.xs", line 340: warning: no explicit type given "GD.xs", line 340: syntax error before or at: GD__Image "GD.xs", line 340: warning: old-style declaration or incorrect type fo +r: GD__Image "GD.xs", line 341: warning: no explicit type given "GD.xs", line 341: syntax error before or at: GD__Font "GD.xs", line 341: warning: old-style declaration or incorrect type fo +r: GD__Font "GD.xs", line 383: syntax error before or at: gdIOCtx "GD.xs", line 399: undefined symbol: ctx "GD.xs", line 403: undefined symbol: len "GD.xs", line 409: undefined symbol: buf "GD.xs", line 409: warning: improper pointer/integer combination: arg +#1 "GD.xs", line 414: syntax error before or at: ctx "GD.xs", line 414: warning: undefined or missing type for: ctx "GD.xs", line 414: warning: undefined or missing type for: const "GD.xs", line 415: undefined symbol: ctx "GD.xs", line 416: undefined symbol: pos "GD.xs", line 422: syntax error before or at: ctx "GD.xs", line 422: warning: undefined or missing type for: ctx "GD.xs", line 423: undefined symbol: ctx "GD.xs", line 427: syntax error before or at: ctx "GD.xs", line 427: warning: undefined or missing type for: ctx "GD.xs", line 428: undefined symbol: ctx "GD.xs", line 431: warning: no explicit type given "GD.xs", line 431: syntax error before or at: * "GD.xs", line 431: warning: old-style declaration or incorrect type fo +r: newDynamicCtx "GD.xs", line 440: undefined struct/union member: ctx "GD.xs", line 440: undefined struct/union member: getC "GD.xs", line 440: warning: left operand of "." must be struct/union o +bject "GD.xs", line 440: warning: improper pointer/integer combination: op " +=" "GD.xs", line 441: improper member use: ctx "GD.xs", line 441: undefined struct/union member: getBuf "GD.xs", line 441: warning: left operand of "." must be struct/union o +bject "GD.xs", line 441: warning: improper pointer/integer combination: op " +=" "GD.xs", line 442: improper member use: ctx "GD.xs", line 442: undefined struct/union member: seek "GD.xs", line 442: warning: left operand of "." must be struct/union o +bject "GD.xs", line 442: warning: improper pointer/integer combination: op " +=" "GD.xs", line 443: improper member use: ctx "GD.xs", line 443: undefined struct/union member: tell "GD.xs", line 443: warning: left operand of "." must be struct/union o +bject "GD.xs", line 443: warning: improper pointer/integer combination: op " +=" "GD.xs", line 444: improper member use: ctx "GD.xs", line 444: undefined struct/union member: gd_free "GD.xs", line 444: warning: left operand of "." must be struct/union o +bject "GD.xs", line 444: warning: improper pointer/integer combination: op " +=" "GD.xs", line 445: improper member use: ctx "GD.xs", line 445: undefined struct/union member: putC "GD.xs", line 445: warning: left operand of "." must be struct/union o +bject "GD.xs", line 446: improper member use: ctx "GD.xs", line 446: undefined struct/union member: putBuf "GD.xs", line 446: warning: left operand of "." must be struct/union o +bject "GD.xs", line 447: syntax error before or at: ) "GD.xs", line 451: warning: no explicit type given "GD.xs", line 452: syntax error before or at: gd_cloneDim "GD.xs", line 452: syntax error before or at: src "GD.xs", line 452: warning: undefined or missing type for: src "GD.xs", line 452: warning: undefined or missing type for: int "GD.xs", line 452: warning: undefined or missing type for: int "GD.xs", line 452: warning: old-style declaration or incorrect type fo +r: gd_cloneDim "GD.xs", line 453: syntax error before or at: dst "GD.xs", line 454: warning: implicit function declaration: gdImageTrue +Color "GD.xs", line 454: undefined symbol: src "GD.xs", line 455: undefined symbol: dst "GD.xs", line 455: syntax error before or at: gdImageCreateTrueColor "GD.xs", line 458: undefined symbol: dst "GD.xs", line 458: syntax error before or at: gdImageCreatePalette "GD.xs", line 460: undefined symbol: gdMaxColors "GD.xs", line 461: undefined struct/union member: red "GD.xs", line 461: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 461: cannot dereference non-pointer type "GD.xs", line 461: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 461: cannot dereference non-pointer type "GD.xs", line 462: undefined struct/union member: green "GD.xs", line 462: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 462: cannot dereference non-pointer type "GD.xs", line 462: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 462: cannot dereference non-pointer type "GD.xs", line 463: undefined struct/union member: blue "GD.xs", line 463: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 463: cannot dereference non-pointer type "GD.xs", line 463: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 463: cannot dereference non-pointer type "GD.xs", line 464: undefined struct/union member: alpha "GD.xs", line 464: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 464: cannot dereference non-pointer type "GD.xs", line 464: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 464: cannot dereference non-pointer type "GD.xs", line 465: undefined struct/union member: open "GD.xs", line 465: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 465: cannot dereference non-pointer type "GD.xs", line 465: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 465: cannot dereference non-pointer type "GD.xs", line 467: undefined struct/union member: colorsTotal "GD.xs", line 467: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 467: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 468: undefined struct/union member: transparent "GD.xs", line 468: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 468: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 469: undefined struct/union member: interlace "GD.xs", line 469: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 469: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 470: undefined struct/union member: thick "GD.xs", line 470: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 470: left operand of "->" must be pointer to struct/unio +n "GD.xs", line 472: undefined symbol: dst "GD.xs", line 473: cannot recover from previous errors cc: acomp failed for GD.c *** Error code 2 make: Fatal error: Command failed for target `GD.o' /usr/ccs/bin/make -- NOT OK Running make test Can't test without successful make Running make install make had returned bad status, install seems impossible
Although I have never had problem installing it in my Linux box.
I think I have all the related library installed also.
myname@hosts:/usr/local/lib$ ls charset.alias libgd.la libgd.so.2 libpng.a libpng.so libpn +g.so.3.16.0 libpng12.la libpng12.so.0 libruby-static.a lynx. +cfg lynx_help ruby libgd.a libgd.so libgd.so.2.0.0 libpng.la libpng.so.3 libpn +g12.a libpng12.so libpng12.so.0.16.0 libz.a lynx_ +doc pkgconfig
Solaris version I am using is:
SunOS myhost.com 5.10 Generic_118833-24 sun4v sparc SUNW,Sun-Fire-T200 + Solaris
And include library is located here:
root@myhost:/# ls /usrlocal/include entities.h gdcache.h gdfontmb.h gdfx.h pngconf.h gd.h gdfontg.h gdfonts.h libpng12 zconf.h gd_io.h gdfontl.h gdfontt.h png.h zlib.h # I have deleted the above. and also: root@myhost:/usr/local/include# ls entities.h gdcache.h gdfontmb.h gdfx.h pngconf.h gd.h gdfontg.h gdfonts.h libpng12 zconf.h gd_io.h gdfontl.h gdfontt.h png.h zlib.h # Yes they are stored in two places, and I also have deleted the one a +t /usrlocal/include root@myhost:/# gdlib-config --cflags -I/usr/local/include root@myhost:/# find . -name "gd.h" find: cannot read dir ./proc/19466/fd: No such file or directory find: cannot read dir ./proc/19466/object: No such file or directory find: cannot read dir ./proc/19466/path: No such file or directory find: cannot read dir ./proc/19466/contracts: No such file or director +y find: cannot read dir ./proc/19100/fd: No such file or directory find: cannot read dir ./proc/19100/object: No such file or directory find: cannot read dir ./proc/19100/path: No such file or directory find: cannot read dir ./proc/19100/contracts: No such file or director +y find: cannot read dir ./proc/14496/fd: No such file or directory find: cannot read dir ./proc/14496/object: No such file or directory find: cannot read dir ./proc/14496/path: No such file or directory find: cannot read dir ./proc/14496/contracts: No such file or director +y ./home/sadm/Tool/gd-2.0.34/gd.h


---
neversaint and everlastingly indebted.......

Comment on Problem installing GD.pm under Solaris
Select or Download Code
Re: Problem installing GD.pm under Solaris
by almut (Canon) on Apr 18, 2007 at 12:30 UTC

    Are you saying that, on the one hand, you have gd.h in /usr/local/include (as shown by ls /usr/local/include), but on the other hand find / -name gd.h can't find it?? If so, I'd first try to figure out why this is :)

    If you hadn't run both commands as root, I would've asked whether maybe /usr/local/include (or one of its parent dirs) is an NFS share, which is configured to not allow root access (as is typically done for security reasons)...   Anyhow, you could try to run the build steps as non-root, and only do the final make install as root.

    BTW, the issue with illegal option -nt-search-dirs can probably be ignored: Makefile.PL contains some auto configuration stuff, among which it tries to look for stray include files. For this, it uses the compiler option -print-search-dirs. Unfortuantely, this option is gcc specific - the Solaris system cc doesn't support it, nor anything similar, AFAICT. (It does know the single letter options -p -r -i, though, that's why -pri is being cut off...). OTOH, the default -I/usr/local/include does end up on the command line, so things should work fine, if you have gd.h etc. in that directory, and have permission to read it...

      Thanks for the reply,
      I tried to build and make as SU. Yet still give the same problem
      root@myhost:/home/sadm/.cpan/build/GD-2.35# perl Makefile.PL NOTICE: This module requires libgd 2.0.28 or higher. If you are using Math::Trig 1.01 or lower, it has a bug that causes a "prerequisite not found" warning to be issued. You m +ay safely ignore this warning. Type perl Makefile.PL -h for command-line option summary Configuring for libgd version 2.0.34. Checking for stray libgd header files...none found. Included Features: GD_XPM GD_JPEG GD_FONTCONFIG GD_FREETYPE G +D_PNG GD_GIF GD_GIFANIM GD_OPENPOLYGON GD_UNCLOSEDPOLY GD_ANIMGIF GD_ +FTCIRCLE VERSION_33 GD library used from: /usr/local Note (probably harmless): No library found for -liconv Writing Makefile for GD root@myhost:/home/sadm/.cpan/build/GD-2.35# make cc -c -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=6 +4 -xarch=v8 -D_TS_ERRNO -xO3 -xspace -xildoff -DVERSION=\"2.35\" +-DXS_VERSION=\"2.35\" -KPIC "-I/usr/perl5/5.8.4/lib/sun4-solaris-64in +t/CORE" -DHAVE_JPEG -DHAVE_FT -DHAVE_XPM -DHAVE_GIF -DHAVE_PNG -DHAV +E_ANIMGIF -DVERSION_33 -DHAVE_UNCLOSEDPOLY -DHAVE_FONTCONFIG -DHAVE_F +TCIRCLE GD.c /usr/ucb/cc: language optional software package not installed *** Error code 1 make: Fatal error: Command failed for target `GD.o'


      ---
      neversaint and everlastingly indebted.......
        I tried to build and make as SU.

        Actually, I meant to not run it as root (except for the install step), because from your initial info it looked like you might not have root access to gd.h and friends...

        Anyhow, now that you're getting

        /usr/ucb/cc:  language optional software package not installed

        it looks as though you might not have a compiler installed, or rather, your setup is somewhat messy, so the right one isn't being found ;)   (/usr/ucb/cc typically is just a wrapper script...).

        Just in case you do have a real compiler under /opt/SUNWspro/bin/cc, you might try adding /opt/SUNWspro/bin/ to your search path (at the beginning, i.e. export PATH=/opt/SUNWspro/bin:$PATH) before you start the build.

        BTW, what is the output of perl -V? Do you have several versions of Perl installed?

Re: Problem installing GD.pm under Solaris
by Moron (Curate) on Apr 18, 2007 at 13:00 UTC
    ^I Based on the following test I just did:
    solaris prompt> cc ksh: cc: not found solaris prompt> gcc gcc: No input files # that is of course okay!
    ^C ...you might perhaps get one step further by doing
    alias cc=`whence gcc`
    ^I But anyway the official installation instructions look rather different from what you are doing!
    __________________________________________________________________________________

    ^M Free your mind!

    Key to hats: ^I=white ^B=black ^P=yellow ^E=red ^C=green ^M=blue - see Moron's scratchpad for fuller explanation.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://610697]
Approved by monkfan
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (8)
As of 2014-12-23 02:04 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (133 votes), past polls