شما هنوز به سیستم وارد نشده اید.

#1 2017-11-17 00:26:19

LinArcX
عضو
ثبت شده: 2015-09-18
ارسال ها: 747

نصب همزمان چندین ورژن از یک پکیج

"بنا به دلایلی نیاز پیدا کردم که clang نسخه 3.9 رو نصب داشته باشم روی سیستمم. از اونجایی که آرچ رو لبه تکنولوژی حرکت میکنه به صورت پیش فرض آخرین نسخه هر پکیج روی سیستم کاربر نصب میشه(در حال حاضر 5.0.0)و امکان اینکه بشه چندین نسخه رو نصب کرد وجود نداره."
اینا مکالمات من با عیسی عزیز بود در تلگرام. big_smile (البته با 99درصد تحریف!:)) منو راهنمایی کردن که با تغییر PKGBUILD و ست کردن congifure به آدرس دلخواه، میشه بسته رو در مسیر دیگری نصب کرد. دست به دامان ویکی
شدم و PKGBULD مربوط به clang39 رو به نحو زیر تغییر دادم:

# $Id$
# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
# Contributor: Sebastian Nowicki <sebnow@gmail.com>
# Contributor: Devin Cofer <ranguvar{AT]archlinux[DOT}us>
# Contributor: Tobias Kieslich <tobias@justdreams.de>
# Contributor: Geoffroy Carrier <geoffroy.carrier@aur.archlinux.org>
# Contributor: Tomas Lindquist Olsen <tomas@famolsen.dk>
# Contributor: Roberto Alsina <ralsina@kde.org>
# Contributor: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>

# This package is meant to be used for compiling packages that have not been
# ported to LLVM 4.0 yet. Such packages may depend on llvm39-libs but not on
# llvm39 or clang39 which are not co-installable with the LLVM 4.0 packages.

pkgname=('llvm39' 'llvm39-libs' 'clang39')
pkgver=3.9.1
pkgrel=3
arch=('x86_64')
url="http://llvm.org/"
license=('custom:University of Illinois/NCSA Open Source License')
makedepends=('cmake' 'libffi' 'python2' 'libedit')
options=('staticlibs')
source=(https://releases.llvm.org/$pkgver/llvm-$pkgver.src.tar.xz
        https://releases.llvm.org/$pkgver/cfe-$pkgver.src.tar.xz
        0001-GCC-compatibility-Ignore-the-fno-plt-flag.patch
        0002-Enable-SSP-and-PIE-by-default.patch
        disable-llvm-symbolizer-test.patch)
        # {,.sig}
sha256sums=('1fd90354b9cf19232e8f168faf2220e79be555df3aa743242700879e8fd329ee'
            # 'SKIP'
            'e6c4cebb96dee827fa0470af313dff265af391cb6da8d429842ef208c8f25e63'
            # 'SKIP'
            'd26239d03983fab1f34970b94d727379ca0be689f5826e50503c4d2f314f207a'
            '010d2e2f2a7d1a8aa027ebb912722910069d74ae815f697bc7efc0f3b5d8dbea'
            '6fff47ab5ede79d45fe64bb4903b7dfc27212a38e6cd5d01e60ebd24b7557359')
# validpgpkeys=('11E521D646982372EB577A1F8F0871F202119294')

prepare() {
  cd "$srcdir/llvm-$pkgver.src"
  mkdir build

  mv "$srcdir/cfe-$pkgver.src" tools/clang

  # Disable test that fails when compiled as PIE
  # https://bugs.llvm.org/show_bug.cgi?id=31870
  patch -Np1 -i ../disable-llvm-symbolizer-test.patch

  # Enable SSP and PIE by default
  patch -Np1 -d tools/clang <../0001-GCC-compatibility-Ignore-the-fno-plt-flag.patch
  patch -Np1 -d tools/clang <../0002-Enable-SSP-and-PIE-by-default.patch
}

build() {
  cd "$srcdir/llvm-$pkgver.src/build"

  cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DLLVM_BUILD_LLVM_DYLIB=ON \
    -DLLVM_LINK_LLVM_DYLIB=ON \
    -DLLVM_INSTALL_UTILS=ON \
    -DLLVM_ENABLE_RTTI=ON \
    -DLLVM_ENABLE_FFI=ON \
    -DLLVM_BUILD_TESTS=ON \
    -DCLANG_INSTALL_SCANBUILD=OFF \
    -DCLANG_INSTALL_SCANVIEW=OFF \
    -DFFI_INCLUDE_DIR=$(pkg-config --variable=includedir libffi) \
    -DLLVM_BINUTILS_INCDIR=/usr/include \
    ..

  ./configure --prefix=/opt
  make

  # Disable automatic installation of components that go into subpackages
  sed -i '/clang\/cmake_install.cmake/d' tools/cmake_install.cmake
}

check() {
  cd "$srcdir/llvm-$pkgver.src/build"
  make check-{llvm,clang}
}

package_llvm39() {
  pkgdesc="Low Level Virtual Machine"
  depends=('llvm39-libs' 'perl')
  conflicts=('llvm' 'llvm35')

  cd "$srcdir/llvm-$pkgver.src"

  make -C build DESTDIR="$pkgdir" install

  # The runtime library goes into llvm39-libs
  mv -f "$pkgdir"/usr/lib/libLLVM-*.so "$srcdir"

  # Remove files which conflict with llvm-libs
  rm "$pkgdir"/usr/lib/{LLVMgold,lib{LLVM,LTO}}.so

  install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}

package_llvm39-libs() {
  pkgdesc="Low Level Virtual Machine (runtime libraries)"
  depends=('gcc-libs' 'zlib' 'libffi' 'libedit' 'ncurses')

  install -d "$pkgdir/usr/lib"
  cp -P "$srcdir"/libLLVM-*.so "$pkgdir/usr/lib/"

  install -Dm644 "$srcdir/llvm-$pkgver.src/LICENSE.TXT" \
    "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}

package_clang39() {
  pkgdesc="C language family frontend for LLVM"
  url="http://clang.llvm.org/"
  depends=('llvm39-libs' 'gcc' 'libxml2')
  optdepends=('openmp: OpenMP support in clang with -fopenmp')
  conflicts=('clang' 'clang35')

  cd "$srcdir/llvm-$pkgver.src"

  make -C build/tools/clang DESTDIR="$pkgdir" install

  install -Dm644 tools/clang/LICENSE.TXT \
    "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}

# vim:set ts=2 sw=2 et:

در واقع در تابع build مقدار ./configure --prefix=/opt رو قبل از make گذاشتم. اومدم makepkg کردم. همه چی تا قبل از تابع build به خوبی پیش رفت که ارور زیر برخوردم:

.
.
-- Configuring done
-- Generating done
-- Build files have been written to: /mnt/D/Software/Program_Sources/Linux/tar.xz/clang39/src/llvm-3.9.1.src/build
/mnt/D/Software/Program_Sources/Linux/tar.xz/clang39/PKGBUILD: line 72: ./configure: No such file or directory
==> ERROR: A failure occurred in build().
    Aborting...
>>> elapsed time 1m2s

از اونجایی که این مشکل ممکنه واسه بقیه هم پیش بیاد تصمیم گرفتم تو انجمن مطرحش کنم و با همفکری بقیه حلش کنیم:)
پ.ن:اینم سوال مشابهی هست که در انجمن انگلیسی مطرح شده.

آخرین ویرایش توسط LinArcX (2017-11-17 19:54:22)


"Enough!!!Don't Use "DEFAULTS" Any More..."make it simple stupid

آفلاین

#2 2017-11-18 13:11:49

Arcush
Moderator
ثبت شده: 2015-09-15
ارسال ها: 1,328

پاسخ: نصب همزمان چندین ورژن از یک پکیج

درود بر سعید عزیز. خب متاسفانه خبری از اسکریپت configure نیست. پس باید مطابق آنچه در ارسال 2# در پیوند پیوست گفته شده، کار کنیم:
https://bbs.archlinux.org/viewtopic.php?id=203868

آفلاین

پانوشت انجمن

پشتیبانی توسط تیم آرچ لینوکس ایران و نیرو گرفته با FluxBB