It’s just yulistic!

PARSEC 3.0 installation issues

· by yulistic · Read in about 3 min · (473 Words)
installation parsec simulator

0. Refer to official site


1. Prerequisites: refer to requirements section in download page


2. correct smime.pod error

Error message is like below.

    installing man1/smime.1
    smime.pod around line 272: Expected text after =item, not a number
    smime.pod around line 276: Expected text after =item, not a number
    smime.pod around line 280: Expected text after =item, not a number
    smime.pod around line 285: Expected text after =item, not a number
    smime.pod around line 289: Expected text after =item, not a number
    POD document had syntax errors at /usr/bin/pod2man line 71.
    make: *** [install_docs] Error 255

Modify files: [parsec_root_dir]/pkgs/libs/ssl/src/doc/apps/smime.pod [parsec_root_dir]/pkgs/libs/ssl/src/doc/ssl/SSL_COMP_add_compression_method.pod … and so on.

Change =item 0to =item C<0>

(Also other numbers as below.)

    268 =item C<0>
    270 the operation was completely successfully.
    272 =item C<1>
    274 an error occurred parsing the command options.
    276 =item C<2>
    278 one of the input files could not be read.
    280 =item C<3>
    282 an error occurred creating the PKCS#7 file or when reading the MIME
    283 message.
    285 =item C<4>
    287 an error occurred decrypting or verifying the message.
    289 =item C<5>
    291 the message was verified correctly but an error occurred writing out
    292 the signers certificates.

You can use the following shell script. (in the root directory of the benchmark)

    #! /bin/bash
    for i in 0 1 2 3 4 5 6 7 8 9
        echo "Replacing '=item $i' to '=item C<$i>'"
        grep -rl "=item $i" * | xargs sed -i "s/=item $i/=item C<$i>/g"

3. __mbstate_t conflict

Error message is like below.

    /usr/include/wchar.h:94:3: error: conflicting types for ‘__mbstate_t’
     } __mbstate_t;
    In file included from ../include/machine/bsd_endian.h:37:0,
                     from ../include/sys/bsd_types.h:44,
                     from ../include/sys/bsd_param.h:64,
                     from if_host.c:48:
    ../include/sys/bsd__types.h:105:3: note: previous declaration of ‘__mbstate_t’ was here
     } __mbstate_t;

It is because of conflict between system declaration and parsec library.

Comment out the declaration of __mbstate_t in parsec library:  [parsec_root_dir]/pkgs/libs/uptcpip/src/include/sys/bsd__types.h (not bsd_types.h)

     96 /*
     97  * mbstate_t is an opaque object to keep conversion state during multibyte
     98  * stream conversions.
     99  */
    100 //#ifndef __mbstate_t_defined
    101 //# define __mbstate_t_defined    1
    102 //typedef union {
    103     //char      __mbstate8[128];
    104     //__int64_t _mbstateL;  [> for alignment <]
    105 //} __mbstate_t;
    106 //#endif 

— Added. November 4, 2015 —

According to the comment from Shwartz, following packages are required on Ubuntu 14.04.1.

    sudo apt-get install -y build-essential m4 x11proto-xext-dev libglu1-mesa-dev libxi-dev libxmu-dev libtbb-dev

— Added. Mar 31, 2020 —

  • gcc and g++ version 4.8 was used for compilation in Ubuntu 18.04.

4. HUGE undeclared error while building ferret

HUGE is replaced to DBL_MAX. Replace all HUGEs in ferret source code to DBL_MAX. You might want the following script. Run it in the root directory of the benchmark.

# Fix HUGE related error.
grep -rl "HUGE" pkgs/apps/ferret | xargs sed -i "s/HUGE/DBL_MAX/g"
grep -rl "HUGE" pkgs/netapps/netferret | xargs sed -i "s/HUGE/DBL_MAX/g"