Issue Backporting SQLite 3.8.1 para Ubuntu Precise from Trusty

3

Sou muito novo em todo o pacote de aplicativos do Ubuntu e o que não é esse pode não ser o lugar correto para fazer essa pergunta ou pode haver um lugar mais apropriado para fazer novamente essa pergunta. Eu ficaria feliz pelo redirecionamento se esse for realmente o caso.

Eu estou olhando para backport 3.8.1-1ubuntu3 para trabalhar com precisão.

Eu segui as instruções para fazer isso no link e eles funcionaram perfeitamente, exceto que parece que há algum problema de dependência que impede a construção adequada.

Você pode ver o log completo da compilação no site a seguir. link (compilação amd64) Foi muito longo para incluir esta questão.

A parte que falha é a seguinte.

...
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

Parece que está tentando usar uma versão do tcl que não está disponível, qual arquivo eu preciso alterar para fazer essa construção, visto que parece que as dependências estão sendo usadas para usar o tcl8.5 corretamente e o construtor está removendo o nativo de tcl8.4 precisa antes de tentar a construção. Mas então não consegue encontrá-lo.

Outro bloco de código relacionado que pode ser de interesse é 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//" sqlite3.pc

        touch $@

Olhando para a versão precisa da biblioteca 3.7.9-2ubuntu1.1 / debian / rules, ela aparece como se fosse a linha.

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

precisa ser alterado de volta para

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

com base no fato de que o arquivo preciso mais antigo contém

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

Tendo usado backportpackage (que automatiza todo o processo) para fazer a compilação original, não tenho certeza se 1) a correção acima realmente resolverá o problema. 2) como aplicar a correção acima para o arquivo único, re-tar-lo e enviá-lo como um backport para aprovação. Qualquer orientação sobre como fazer isso seria apreciada.

Se você precisar de mais informações, não hesite em perguntar e eu irei fornecer. Obrigado!

    
por Peter 16.12.2013 / 07:14

0 respostas