Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Rob Hicks
    replied
    for Johannes Leimert's problem:
    example.c:8:10: fatal error: stdio.h: No such file or directory #include <stdio.h>
    See https://stackoverflow.com/questions/...e-or-directory to install development libraries to allow this to compile.

    Also, given that the latest Ubuntu LTS release (18.04) is afflicted with this issue, it seems like moving forward everyone in the Linux world is impacted and one can only hope Stata will wake up and fix this.

    Leave a comment:


  • Johannes Leimert
    replied
    I have the same problem with Stata 15 on Linux Mint 19. I tried the script but get an error message.
    I got the script from here: https://bitbucket.org/vilhuberl/stata-png-fix/overview
    When I now run the code I receive the following error:
    Code:
    Building in /tmp/tmp.cjhFnDUJS5
    --2018-07-03 21:07:57--  http://downloads.sourceforge.net/project/libpng/zlib/1.2.3/zlib-1.2.3.tar.gz
    Resolving downloads.sourceforge.net (downloads.sourceforge.net)... 216.105.38.13
    Connecting to downloads.sourceforge.net (downloads.sourceforge.net)|216.105.38.13|:80... connected.
    HTTP request sent, awaiting response... 302 Found
    Location: https://netcologne.dl.sourceforge.net/project/libpng/zlib/1.2.3/zlib-1.2.3.tar.gz [following]
    --2018-07-03 21:07:57--  https://netcologne.dl.sourceforge.net/project/libpng/zlib/1.2.3/zlib-1.2.3.tar.gz
    Resolving netcologne.dl.sourceforge.net (netcologne.dl.sourceforge.net)... 78.35.24.46, 2001:4dd0:1234:6::5f
    Connecting to netcologne.dl.sourceforge.net (netcologne.dl.sourceforge.net)|78.35.24.46|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 496597 (485K) [application/x-gzip]
    Saving to: ‘zlib-1.2.3.tar.gz’
    
    zlib-1.2.3.tar.gz   100%[===================>] 484,96K   861KB/s    in 0,6s    
    
    2018-07-03 21:07:58 (861 KB/s) - ‘zlib-1.2.3.tar.gz’ saved [496597/496597]
    
    --2018-07-03 21:07:58--  http://downloads.sourceforge.net/project/libpng/libpng16/older-releases/1.6.2/libpng-1.6.2.tar.gz
    Resolving downloads.sourceforge.net (downloads.sourceforge.net)... 216.105.38.13
    Connecting to downloads.sourceforge.net (downloads.sourceforge.net)|216.105.38.13|:80... connected.
    HTTP request sent, awaiting response... 302 Found
    Location: https://datapacket.dl.sourceforge.net/project/libpng/libpng16/older-releases/1.6.2/libpng-1.6.2.tar.gz [following]
    --2018-07-03 21:07:59--  https://datapacket.dl.sourceforge.net/project/libpng/libpng16/older-releases/1.6.2/libpng-1.6.2.tar.gz
    Resolving datapacket.dl.sourceforge.net (datapacket.dl.sourceforge.net)... 185.152.64.70
    Connecting to datapacket.dl.sourceforge.net (datapacket.dl.sourceforge.net)|185.152.64.70|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 1256016 (1,2M) [application/x-gzip]
    Saving to: ‘libpng-1.6.2.tar.gz’
    
    libpng-1.6.2.tar.gz 100%[===================>]   1,20M   834KB/s    in 1,5s    
    
    2018-07-03 21:08:01 (834 KB/s) - ‘libpng-1.6.2.tar.gz’ saved [1256016/1256016]
    
    Checking for gcc...
    Building static library libz.a version 1.2.3 with gcc.
    Checking for unistd.h... No.
    Checking whether to use vs[n]printf() or s[n]printf()... using s[n]printf()
    Checking for snprintf() in stdio.h... No.
      WARNING: snprintf() not found, falling back to sprintf(). zlib
      can build but will be open to possible buffer-overflow security
      vulnerabilities.
    Checking for return value of sprintf()... No.
      WARNING: apparently sprintf() does not return a value. zlib
      can build but will be open to possible string-format security
      vulnerabilities.
    Checking for errno.h... No.
    Checking for mmap support... No.
    gcc -fPIC -DNO_snprintf -DHAS_sprintf_void -DNO_ERRNO_H   -c -o example.o example.c
    example.c:8:10: fatal error: stdio.h: No such file or directory
     #include <stdio.h>
              ^~~~~~~~~
    compilation terminated.
    <builtin>: recipe for target 'example.o' failed
    make: *** [example.o] Error 1
    Ready to install in /usr/local/stata-png-fix (ctrl-c to end)

    Leave a comment:


  • larsvilhuber
    replied
    @Stata : wouldn't it be time to fix this once and for all? For instance, by packaging a Stata-specific set of libraries that Stata knows to reference, the same way the JRE is packaged with Stata?

    Leave a comment:


  • Paul Johnson
    replied
    Originally posted by Alessio Tomasino View Post
    Hi there, can you explain the steps to write the wrapper in a layman language please? I am stuck at the step and cannot get Stata to show the icons. Really appreciate it.
    Alessio Tomasino's request for an explanation is well justified! I just went through this in an Ubuntu-18.04 system and I can explain what's going on.

    I may not have "layman's terms" to explain, but I have novice Linux user terms, and that's probably what you need. The program that Stata delivers to you is incomplete. This is intentional. It is true of many programs because programs depend on "shared libraries" that are offered by the OS. Think of, say, a printer routine. We don't (anymore) want every program to provide its own printer driver for every program. We want one OS level package to handle that. In this case, Stata is looking for old versions of 2 libraries, zlib and png. Stata thinks it finds what it needs, but it is wrong. That's why you don't see icons. Your computer has newer versions of the support libraries than Stata expects. It appears to me Stata assumes you have a version of zlib from 2002. Why? I have no idea.

    I don't think the right thing is to use the script suggested in the previous post. That installer runs as the root user. That's insecure. Running somebody elses's script as root is a bad habit in system administration. Dangerous. Literally, you give the permission to change *anything* on your file system to a stranger. Don't..

    The #3 post above offers Peter Fuschich's sequence. That's a pretty clear step by step approach. Basically,
    1. Download old copies of zlib and png library software (source code), and
    2. then build (compile) them, and install them in an "out of the way" place.
    3. Tell Stata to use those libraries from the "out of the way" place.

    I've done this today, it still works in Ubuntu 18.04.

    About zlib and libpng. Most GNU libraries follow same scheme, where you download a compressed archive (*.tar.gz), then open that up, and then run

    $ configure --prefix=/user/local/put-something-here
    $ make
    $ sudo make install

    "/usr/local/put-something-here" should be a directory name. Installing in that folder requires the "sudo" in line 3. I suggest instead you ought to do

    $ configure --prefix=$HOME/statalibs
    $ make
    $ make install

    Because I put the libs in /home/pauljohn/statalibs, I do not need to use a root password. No "sudo" in line 3. ($HOME means /home/pauljohn for me)

    In the libpng build process described in #3, there's a very unusual wrinkle. That's worth the price of admission by itself. The part where you set the CFLAG and LDFLAG is not too unusual. But the part that suggests we need to pause between configure and make and hand edit one of the files is unusual. I've not seen this, ever. I've compiled 1000s of packages and I've never seen this. The intent is clear, though. Make sure libpng uses the zlib you just created, not the one from the OS. I'm pretty sure the more usual approach would be to alter the configure statement, but I've fiddled with it quite a bit and can't make it generate a proper libpng shared library.

    The other wrinkles in #3 concern a security setting in the modern compiler, "-fPIC".

    The zlib and png source packages are still available on sourceforge. The first time I tried, wget failed. I suspect the security system wanted me to visit in a browser:

    https://sourceforge.net/projects/lib...les/zlib/1.2.3
    https://sourceforge.net/projects/lib...releases/1.6.2

    Choose the tar.gz ones and the install steps in #3 will work just right.

    Anyway, to run Stata successfully, you need to tell Stata where to find your newly installed libraries. This is done by setting LD_LIBRARY_PATH. If your stata happens to be installed in /usr/local/stata15, for example:

    $ LD_LIBRARY_PATH=$HOME/statalibs/lib:$LD_LIBRARY_PATH /usr/local/stata15/xstata-se

    The icons are fine after this.

    In previous posts above there are some suggestions for a launcher script. For my eye, they are non-standard and unnecessary. I will think on what to do instead. I'll probably keep it simple, probably just put a one liner in a file, like

    LD_LIBRARY_PATH=/home/pauljohn/statalibs/lib:$LD_LIBRARY_PATH usr/local/stata15/xstata-se $1

    So far, that's working fine to launch Stata. Again, I'm avoiding the "you must be root" problem by not installing into /usr/local/bin. (chmod +x $HOME/bin/xstata will be needed).

    Oh, well, I hope that helps you understand it better. This one offers a pretty good learning experience.

    And, by the way, even though the icons show correctly and most of the error messages that show in the terminal are silenced, I still see quite a few of these:



    ** (xstata-se:13940): WARNING **: 02:17:34.190: Invalid borders specified for theme pixmap:
    /usr/share/themes/Breeze/gtk-2.0/../assets/line-h.png,
    borders don't fit within the image

    ** (xstata-se:13940): WARNING **: 02:17:34.190: invalid source position for vertical gradient

    This is a warning about the fact that there is something wrong in an old theme that is being used. I say "old" because it is based on gtk-2.0, which is, well, being phased out. Most programs have been upgraded to gtk-3.0, but not Stata. Nobody's going to go back and try to fix the old themes, so some noise in the terminal seems to be unavoidable.

    Leave a comment:


  • Yuji Shimohira
    replied
    Originally posted by Alessio Tomasino View Post
    Hi there, can you explain the steps to write the wrapper in a layman language please? I am stuck at the step and cannot get Stata to show the icons. Really appreciate it.
    The easiest way to get the icons is to use larsvilhuber's script. Download the script from https://bitbucket.org/vilhuberl/stata-png-fix

    Now go to the folder where you downloaded the script and extract its contents (you can use either zip or tar).

    Change directory to the newly extracted folder. Make sure that your user has sudo privileges (i.e., make sure your user is in the sudoers list). Once your user has admin privileges run the following from within the folder where you extracted the larsvilhuber's solution:

    Code:
    compile-stata-png-fix.sh
    During the installation process, you will have to press ENTER twice (I seem to recall the script simply lets you know that you can stop the installation process with Ctrl+c, when the script hits that bit you simply press ENTER). You will have to enter your password too (in order to get the libraries we are trying to install).

    The script finalises with four suggestions for four new symlinks. You really need only one, though (assuming that you only use one version of Stata). For example, if you use Stata-SE you could do:

    Code:
    sudo ln -sf /usr/local/stata-png-fix/stata-png-fixed.sh /usr/local/bin/xstata-se
    Now, provided that /usr/local/bin is in your $PATH, you should be able to just type "xstata-se" to get Stata with icons. If you installed Stata in /usr/local/stata then you should not need to change anything. However, if like me you installed Stata in a different location you will have to change the directory to which the symlink points at (simply by replacing /usr/local/stata with whatever you need, like /opt/stata13).

    Now if you run in a terminal "xstata-se" (the name of the symlink in /usr/local/bin) you should get Stata with icons. Hope this helps.

    Leave a comment:


  • Alessio Tomasino
    replied
    Hi there, can you explain the steps to write the wrapper in a layman language please? I am stuck at the step and cannot get Stata to show the icons. Really appreciate it.

    Leave a comment:


  • Mauricio Caceres
    replied
    Originally posted by Ike Wolf View Post
    Hi,

    I'm new with Linux and I'm also experiencing same no-icon stuff. I'm getting an error on line 28 when running "stata x mp" -> "error line 28: xstata mp: not found" with Leo's approach. Am I missing something? I've just copied the script to my own "/usr/local/bin/" and copied both libpng libz to the stata folder. I'm running ubuntu 17.04 with stata mp 14.0. Hope you help to get me through this. Thnx!!!
    Do you have Stata on your PATH? (e.g. If you type "which stata" or "which xstata" what is the output?) I always have this issue on Linux; a slightly modified version of larsvilhuber's approach (here is his original, though the link is also in his post: https://bitbucket.org/vilhuberl/stata-png-fix) is what does it for me.

    Leave a comment:


  • Ike Wolf
    replied
    Hi,

    I'm new with Linux and I'm also experiencing same no-icon stuff. I'm getting an error on line 28 when running "stata x mp" -> "error line 28: xstata mp: not found" with Leo's approach. Am I missing something? I've just copied the script to my own "/usr/local/bin/" and copied both libpng libz to the stata folder. I'm running ubuntu 17.04 with stata mp 14.0. Hope you help to get me through this. Thnx!!!
    Last edited by Ike Wolf; 11 Dec 2017, 12:55.

    Leave a comment:


  • Roman Graf
    replied
    Thanks too for this fix. The problem also occured in Fedora 25 (Stata mp version 12). It works fine now after compiling zlib and libpng and loading this libraries via your stata wrapper above.

    Leave a comment:


  • Ian Schmutte
    replied
    Thanks for this fix. I can confirm that this script fixed the broken icon problem in Ubuntu 16.10. I had to install zlib with development support first:
    Code:
    sudo apt-get install zlib1g-dev
    after that, it worked fine.

    Leave a comment:


  • Leon Meow
    replied
    my a little concise version of larsvilhuber's wrapper script

    Code:
    #!/bin/bash
    
    set -o nounset
    
    progdir=$(dirname "$(readlink -f "$0")")
    
    export LD_LIBRARY_PATH=$progdir
    PATH="$PATH:$progdir"
    
    x11=''
    var=''
    
    declare -a rest=
    
    while [[ $# -ne 0 ]];do
      case "$1" in
        x) x11=x ;;
        se) var=-se ;;
        mp) var=-mp ;;
        sm) var=-sm ;;
        --) shift; rest+=("$@");break;;
        -h) echo "$0 [x] [|se|sm|mp] [--] [arguments to stata] ..." >&2; exit;;
        *)  rest+=("$1");;
      esac
      shift
    done
    
    exec "$x11"stata"$var" "${rest[@]}"
    This script assumes you copied libz and libpng libraries into stata's directory, which makes the program more portable across Linux distributions.

    launching examples:

    Code:
    $ run-stata x se "extra args to stata" # "x" means gui, "se" means standard edition, you can also use "sm", "mp" or nothing.
    $ run-stata mp -- x # x will be passed to stata, not to the wrapper, which will invoke the command line version.
    Last edited by Leon Meow; 21 Mar 2017, 06:52.

    Leave a comment:


  • Diogo Pereira
    replied
    Three years and one major release later, we are still waiting for a proper fix. Will Stata 15 still depend on libpng 1.6.2? The world wonders.

    Leave a comment:


  • Rob Hicks
    replied
    Thanks a lot for this fix.

    Two things:
    1. I can confirm this fixes the broken icon problem on Fedora 24.
    2. Unfortunately, this break any stata functionality that requires more current versions of libpng (e.g. the stata add-on package markdoc's latex compile functionality):
    Code:
    . markdoc stata_latex, export(pdf) replace install markup(latex) texmaster mathjax printer("/usr/bin/pdflatex") noisily
    
    Compiling LaTeX to PDF
    "/usr/bin/pdflatex" -jobname "stata_latex" "/tmp/St10464.000001"
    
    /usr/bin/pdflatex: relocation error: /usr/bin/pdflatex: symbol png_set_option, version PNG16_0 not defined in file libpng16.so.16 with link time reference
    MarkDoc could not produce stata_latex.pdf
    Conclusion: the fix (thanks again) may work in most cases but is not a total solution to stata's ongoing libpng problem.

    Leave a comment:


  • larsvilhuber
    replied
    I corresponded with Peter Fuschich of the Stata Technical Department, and his solution, which I'm posting here, worked. I subsequently scripted and slightly modified his solution somewhat (I made a drop-in replacement script, rather than an additional script), and put it up on Bitbucket for anybody who wishes to also run it. The Bitbucket solution can be found at https://bitbucket.org/vilhuberl/stata-png-fix , below is Peter's original solution:

    This is an issue we have encountered with some of the latest Linux distributions. We have come up with a work around for this issue. The fix does
    include recompiling some libraries, so do not attempt unless you feel confident in doing so.

    First, make sure you have a development environment installed:

    $ sudo yum install gcc

    When that is complete, you will need to download the source code for two
    libraries: zlib and libpng.

    ************************************************** ************************
    $ cd /tmp
    $ umask 0002
    $ mkdir build
    $ cd build
    $ wget http://downloads.sourceforge.net/pro...b-1.2.3.tar.gz
    $ wget http://downloads.sourceforge.net/pro...g-1.6.2.tar.gz
    $ tar zxf zlib-1.2.3.tar.gz
    $ cd zlib-1.2.3
    $ export CFLAGS="-fPIC"
    $ ./configure --prefix=/usr/local/zlib-1.2.3
    $ sudo make install
    $ cd ..
    $ tar zxf libpng-1.6.2.tar.gz
    $ cd libpng-1.6.2
    $ export CFLAGS="-I/usr/local/zlib-1.2.3/include -fPIC"
    $ export LDFLAGS="-L/usr/local/zlib-1.2.3/lib"
    $ ./configure --prefix=/usr/local/libpng-1.6.2
    $ vi ./scripts/pnglibconf.dfa (comment out the line "@# include <zlib.h>")
    --line 235 in my text editor
    $ sudo make install
    ************************************************** ************************

    Now that you have finished building the libraries, you must instruct Stata on
    how to use them properly. Since you don't want these libraries to interfere
    with normal system operations, I would suggest writing either a wrapper or an
    alias for the Stata executables, something like this:

    -----------------begin stata wrapper----------------
    #!/bin/bash

    flavor="$1"
    shift 1

    case "$flavor" in
    "c") LD_LIBRARY_PATH=/usr/local/zlib-1.2.3/lib:/usr/local/libpng-1.6.2/lib
    exec /usr/local/stata13/stata
    ;;
    "x") LD_LIBRARY_PATH=/usr/local/zlib-1.2.3/lib:/usr/local/libpng-1.6.2/lib
    exec /usr/local/stata13/xstata $* > /dev/null 2>&1
    ;;
    "se") LD_LIBRARY_PATH=/usr/local/zlib-1.2.3/lib:/usr/local/libpng-1.6.2/lib
    exec /usr/local/stata13/stata-se
    ;;
    "xse") LD_LIBRARY_PATH=/usr/local/zlib-1.2.3/lib:/usr/local/libpng-1.6.2/lib
    exec /usr/local/stata13/xstata-se $* > /dev/null 2>&1
    ;;
    "mp") LD_LIBRARY_PATH=/usr/local/zlib-1.2.3/lib:/usr/local/libpng-1.6.2/lib
    exec /usr/local/stata13/stata-mp
    ;;
    "xmp") LD_LIBRARY_PATH=/usr/local/zlib-1.2.3/lib:/usr/local/libpng-1.6.2/lib
    exec /usr/local/stata13/xstata-mp $* > /dev/null 2>&1
    ;;
    esac

    echo "stata: usage: stata {c|x|se|xse|mp|xmp} [stata options]" 1>&2
    exit 1
    -------------------end stata wrapper----------------


    You can copy the above script to a file named 'stata', set its permissions to
    be executable, and place it in a directory located in your $PATH environment
    variable:

    $ chmod 755 stata
    $ sudo mv stata /usr/local/bin

    Now, when you want to launch the GUI version of Stata/MP, for example, type:

    $ stata xmp

    To launch the console version of Stata/MP, type:

    $ stata mp

    Just typing 'stata' without arguments should give you a quick syntax diagram.
    ************************************************** ************************

    Or, you can create an alias to launch the version of Stata you are licensed to
    use. For example, if your license is for Stata/IC, then you could use the
    following Alias placed in your $PATH environment variable:

    alias xstatamp='LD_LIBRARY_PATH=/usr/local/zlib-1.2.3/lib:/usr/local/libpng-1.6.2/lib/usr/local/stata13/xstata'


    Leave a comment:


  • Kevin Crow (StataCorp)
    replied
    Please contact Stata TechnicalServices regarding this. They will gather more information from you about your system to track down the cause of this problem. When we find a solution, I will post the resolution here.

    Kevin Crow
    StataCorp

    Leave a comment:

Working...
X