Sat Aug 6 09:55:18 2005

Ticket #1375 (Closed: fixed)

icu config check is slightly broken


Priority: low Reporter: fgerlits
Severity: minor Assigned to: maroy
Component: bug Status: closed
Version: 1.0 Resolution: fixed
Milestone: 1.0 Keywords:  

Description by fgerlits:

I had ICU installed in /usr/local, which was found by AC_CHECK_ICU, but the include flags were not set correctly, and compilation failed.

Attachments

Changelog

Sat Aug 6 09:55:32 2005: Modified by fgerlits

  • status changed from new to assigned
  • owner changed from anonymous to maroy

Mon Aug 8 16:14:34 2005: Modified by fgerlits

    I temporarily disabled boost (and ICU) library check in the main configure.ac and all the C++ module and product Makefile.ins. They need to be put back in after they are fixed.

    Fri Aug 26 13:41:21 2005: Modified by maroy

      this is quite strange indeed. if you look at livesupport/etc/acinclude.m4, in function AC_CHECK_ICU, it actually checks for the specific version, here: ICU_VERSION=`$ICU_CONFIG --version` VERSION_CHECK=`expr $ICU_VERSION \\>\\= $1` if test "$VERSION_CHECK" = "1" ; then ... on my system, the system-installed ICU is 2.8, and is properly recognized as an insufficient version (as we're looking for 3.0) what does the following shell command return on your system: expr `icu-config --version` \>\= 3.0 ?

      Fri Sep 23 16:41:36 2005: Modified by maroy

      • description changed.

      I just posted the autoconf check here:

      http://autoconf-archive.cryp.to/ac_check_icu.html

      please let me know if it still doesn't work for you. it's working properly for me...

      Sat Sep 24 12:04:59 2005: Modified by fgerlits

        On an ubuntu 5.04, I installed the ICU 3.4 tarball in /usr/local and tried to install livesupport from SVN (after undisabling the ICU config check in /etc/configure.ac).

        Everything ran fine, until it tried to generate the .res files at the end of make compile in /products/gLiveSupport, when I got this:

        /usr/local/bin/genrb --destdir ./tmp --encoding utf-8 --package-name gLiveSupport --strict var/root.txt
        /usr/local/bin/genrb: error while loading shared libraries: libicui18n.so.34: cannot open shared object file: No such file or directory
        make[1]: *** [tmp/gLiveSupport_root.res] Error 127
        

        The same error occurs when I try to run make check, or try to start the scheduler. There is a libicui18n.so.34 file in /usr/local/lib.

        Sat Sep 24 12:16:20 2005: Modified by maroy

          but what does this have to do with the autoconf ICU check?

          you just can't simply run genrb, because LD_LIBRARY_PATH probably doesn't include /usr/local/lib ...

          Sat Sep 24 12:50:14 2005: Modified by fgerlits

            Well, I don't know what it has to do with, all I'm saying is it doesn't work.

            You are right, my LD_LIBRARY_PATH was empty, so I did {{ export LD_LIBRARY_PATH=/usr/local/lib /usr/local/bin/genrb ... (works) ... make compile }} but still get the same error message.

            Sat Sep 24 13:08:57 2005: Modified by maroy

              well, ICU checking does work - as ICU >= 3.0 was recognized by the autoconf script properly.

              as for executing genrb:

              it's quite strange, as in products/gLiveSupport/etc/Makefile.in, a new value is only appended to LD_LIBRARY_PATH, see line 200:

              export LD_LIBRARY_PATH:=${LD_LIBRARY_PATH}:${USR_LIB_DIR}

              if you change the pattern rule that calls genrb to print LD_LIBRARY_PATH, like this:

              ${TMP_DIR}/${PACKAGE_NAME}_%.res : ${VAR_DIR}/%.txt

              echo ${LD_LIBRARY_PATH} ${GENRB} ${GENRBOPTS} $^

              what do you get?

              Sat Sep 24 13:10:06 2005: Modified by maroy

                sorry, code formatting was broken in the previous post...

                the change should read:

                ${TMP_DIR}/${PACKAGE_NAME}_%.res : ${VAR_DIR}/%.txt
                    echo ${LD_LIBRARY_PATH}
                    ${GENRB} ${GENRBOPTS} $^
                

                Sat Sep 24 13:13:05 2005: Modified by maroy

                  oh, I see you're executing from the main makefile, where unfortunately the original LD_LIBRARY_PATH is totally overwridden, in line 80 of etc/Makefile.in:

                  export LD_LIBRARY_PATH=${prefix}/lib

                  try changing this to:

                  export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${prefix}/lib

                  Sat Sep 24 13:33:51 2005: Modified by fgerlits

                    Yes, that fixes it; just needs another colon, like this:

                    export LD_LIBRARY_PATH:=${LD_LIBRARY_PATH}:${prefix}/lib

                    Sat Sep 24 13:46:48 2005: Modified by maroy

                    • resolution set to fixed
                    • status changed from assigned to closed

                    yes, I saw the type after I commited it (and one can't seem to be able to edit an entry here). but I thought you'll see it as well :)

                    committed the required changes, see [1620]

                    Sat Sep 24 16:45:42 2005: Modified by fgerlits

                      Is the next line (export PKG_CONFIG_PATH=...) correct? That one overwrites the system settings, too, instead of appending to it.

                      Sat Sep 24 16:47:20 2005: Modified by fgerlits

                        "overwridden" is an excellent new word, by the way :)

                        Sat Sep 24 16:54:42 2005: Modified by maroy

                          frankly, I don't know. we haven't bumped into pkg-config issues so far...

                          Akos, the overwridder :)


                          Add/Change #1375 (icu config check is slightly broken)




                          Change Properties






                          Action