3

I'm pretty new to all of the packaging of Ubuntu applications and what not so this may not be the correct place to ask this question or there may be a more appropriate place to re-ask this question. I'de be happy for redirection if that is indeed the case.

I'm looking to backport 3.8.1-1ubuntu3 to work on precise.

I followed the instructions to do so from http://architects.dzone.com/articles/how-backport-packages-ubuntu and they worked perfectly except it seems there's some dependency issue that prevents it building properly.

You can see the full build log at the following site. https://launchpad.net/~peter64/+archive/ppa/+build/5342072 (amd64 build) It was too long to include with this question.

The part that fails is the following.

...
tcl8.4: already deinstalled
tcl8.4-dev: already deinstalled
Checking for source dependency conflicts...
  /usr/bin/sudo /usr/bin/apt-get --purge $CHROOT_OPTIONS -q -y install debhelper autoconf libtool automake autotools-dev chrpath libreadline-dev tcl8.5-dev dh-autoreconf
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  bsdmainutils dh-apparmor file gettext gettext-base groff-base html2text
  intltool-debian libcroco3 libgettextpo0 libmagic1 libpipeline1
  libreadline6-dev libtinfo-dev libunistring0 libxml2 m4 man-db po-debconf
  tcl8.5
Suggested packages:
  autoconf2.13 autoconf-archive gnu-standards autoconf-doc wamerican wordlist
  whois vacation dh-make gettext-doc groff libtool-doc automaken gfortran
  fortran95-compiler gcj less www-browser libmail-box-perl tclreadline
  tcl8.5-doc
Recommended packages:
  autopoint curl wget lynx-cur libltdl-dev xml-core libmail-sendmail-perl
The following NEW packages will be installed:
  autoconf automake autotools-dev bsdmainutils chrpath debhelper dh-apparmor
  dh-autoreconf file gettext gettext-base groff-base html2text intltool-debian
  libcroco3 libgettextpo0 libmagic1 libpipeline1 libreadline-dev
  libreadline6-dev libtinfo-dev libtool libunistring0 libxml2 m4 man-db
  po-debconf tcl8.5 tcl8.5-dev
0 upgraded, 29 newly installed, 0 to remove and 0 not upgraded.
...
./configure --prefix=/usr --mandir="/usr/share/man" \
      --build x86_64-linux-gnu --with-tcl=/usr/lib/x86_64-linux-gnu/tcl8.5 --enable-threadsafe \
      --enable-load-extension \
      --libdir=\${prefix}/lib/x86_64-linux-gnu \
      --libexecdir=\${libdir}/sqlite3 \
      TCLLIBDIR=/usr/lib/tcltk/sqlite3 \
      `if (echo  | grep -q debug) then echo "--enable-debug"; else echo ""; fi`
...
checking for Tcl configuration... configure: error: /usr/lib/x86_64-linux-gnu/tcl8.5 directory doesn't contain tclConfig.sh
make: *** [configure-stamp] Error 1

It seems like it's trying to use a version of tcl that isn't available which file do I need to change to make this build seeing as it appears the dependencies are isntructing it to use tcl8.5 properly and the builder is removing the tcl8.4 native to precise before attempting the build. But then it fails to find it.

Another block of related code that might be of interest is sqlite3_3.8.1-1ubuntu3/debian/rules.

ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
  confflags += --build $(DEB_HOST_GNU_TYPE) --with-tcl=/usr/lib/$(DEB_HOST_MULTIARCH)/tcl8.5
  export CROSS_BUILDING=no
else
  confflags += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) --with-tcl=/usr/lib/$(DEB_HOST_MULTIARCH)/tcl8.5 LDFLAGS=-L/usr/lib/$(DEB_HOST_MULTIARCH)
  export CROSS_BUILDING=yes
endif


#export DEB_CFLAGS_MAINT_APPEND = -O2 -fno-strict-aliasing
export CFLAGS += -O2 -fno-strict-aliasing \
        -DSQLITE_SECURE_DELETE -DSQLITE_ENABLE_COLUMN_METADATA \
        -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_SOUNDEX=1 \
        -DSQLITE_ENABLE_UNLOCK_NOTIFY \
        -DSQLITE_OMIT_LOOKASIDE=1 \
        -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1 \
        -DSQLITE_MAX_SCHEMA_RETRY=25 \
        -DSQLITE_MAX_VARIABLE_NUMBER=250000

configure: configure-stamp
configure-stamp:
        dh_testdir
        dh_autoreconf
        dh_autotools-dev_updateconfig
        ./configure --prefix=/usr --mandir="/usr/share/man" \
          $(confflags) --enable-threadsafe \
          --enable-load-extension \
          --libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) \
          --libexecdir=\$${libdir}/sqlite3 \
          TCLLIBDIR=/usr/lib/tcltk/sqlite3 \
          $(DDEBUG)

        # remove double -ldl from sqlite3.pc
        sed -i "s/\([-ldl .+]\) -ldl/\1/" sqlite3.pc

        touch $@

Looking at the precise version of the library 3.7.9-2ubuntu1.1/debian/rules it appears as if the line.

confflags += --build $(DEB_HOST_GNU_TYPE) --with-tcl=/usr/lib/$(DEB_HOST_MULTIARCH)/tcl8.5

needs to be changed back to

confflags += --build $(DEB_HOST_GNU_TYPE) --with-tcl=/usr/lib/tcl8.5

based on the fact the older precise file contains

ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
  confflags += --build $(DEB_HOST_GNU_TYPE) --with-tcl=/usr/lib/tcl8.5
  export CROSS_BUILDING=no
else
  confflags += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) --with-tcl=/usr/$(DEB_HOST_GNU_TYPE)/lib/tcl8.5 LDFLAGS=-L/usr/$(DEB_HOST_GNU_TYPE)/lib 
  export CROSS_BUILDING=yes
endif

Having used backportpackage (which automates the whole process) to do the original build I'm not sure if 1) the above fix will really resolve the issue. 2) how to apply the above fix to the single file, re-tar it and submit it all as a backport for approval. Any guidance about how to get this done would be appreciated.

If you need any further information please don't hestitate to ask and I will provide it. Thanks!

0

You must log in to answer this question.

Browse other questions tagged .