Package Details: cling 0.9-5

Git Clone URL: https://aur.archlinux.org/cling.git (read-only, click to copy)
Package Base: cling
Description: Interactive C++ interpreter, built on the top of LLVM and Clang libraries
Upstream URL: https://root.cern.ch/cling
Licenses: custom:Cling Release License
Conflicts: cling
Provides: cling
Submitter: archibald869
Maintainer: archibald869
Last Packager: archibald869
Votes: 16
Popularity: 0.073521
First Submitted: 2019-08-28 11:45 (UTC)
Last Updated: 2023-07-19 09:46 (UTC)

Dependencies (9)

Required by (1)

Sources (3)

Latest Comments

1 2 3 4 Next › Last »

kaelingre commented on 2024-03-24 10:09 (UTC)

I created a PKGBUILD for v1.0. Note that I hard-coded a specific llvm version (cling-llvm13-20240318-01) to build against:

pkgname=cling
pkgver=1.0
pkgrel=1
pkgdesc="Interactive C++ interpreter, built on the top of LLVM and Clang libraries"
arch=("i686" "x86_64")
url="https://root.cern.ch/cling"
license=("custom:Cling Release License")
provides=("cling")
conflicts=("cling")
depends=("libxml2")
makedepends=("git" "cmake" "ninja" "python")
optdepends=(
    "perl: support for scan-build, ccc-analyzer and c++-analyzer"
    "python: support for scan-view and Jupyter"
    "python-pygments: support for opt-viewer"
    "python-yaml: support for opt-viewer"
)
source=(
    "cling-llvm-$pkgver.tar.gz::https://github.com/root-project/llvm-project/archive/refs/tags/cling-llvm13-20240318-01.tar.gz"
    "$pkgname-$pkgver.tar.gz::https://github.com/root-project/cling/archive/refs/tags/v$pkgver.tar.gz"
)
sha256sums=(
    "SKIP"
    "SKIP"
)

build() {
    mkdir -p "$srcdir/build"
    cd "$srcdir/build"
    cmake \
        -G Ninja \
        -DCMAKE_BUILD_TYPE=Release \
        -DCMAKE_INSTALL_PREFIX="/opt/cling" \
        -DLLVM_TARGETS_TO_BUILD="host;NVPTX" \
        -DLLVM_BUILD_LLVM_DYLIB=OFF \
        -DLLVM_ENABLE_RTTI=ON \
        -DLLVM_ENABLE_FFI=ON \
        -DLLVM_BUILD_DOCS=OFF \
        -DLLVM_BUILD_TOOLS=OFF \
        -DLLVM_ENABLE_SPHINX=OFF \
        -DLLVM_ENABLE_DOXYGEN=OFF \
        -DLLVM_EXTERNAL_PROJECTS=cling \
        -DLLVM_EXTERNAL_CLING_SOURCE_DIR="$srcdir/cling-$pkgver/" \
        -DLLVM_ENABLE_PROJECTS="clang" \
        "$srcdir/llvm-project-cling-llvm13-20240318-01/llvm"

    ninja
}

package() {
    cd "$srcdir/build"

    DESTDIR="$pkgdir" ninja install

    install -d "$pkgdir/usr/bin"
    ln -s "/opt/cling/bin/cling" "$pkgdir/usr/bin/cling"

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

    # include CMake target import file so that other packages are able to use
    # `find_package(Cling REQUIRED)`
    install -Dm644 "$srcdir/build/tools/cling/lib/cmake/cling/ClingTargets.cmake" \
        "$pkgdir/opt/cling/lib/cmake/cling"

    # adjust cling target locations
    sed -Ei 's#(IMPORTED_LOCATION_RELEASE) ".*/([^/]*)"#\1 "/opt/cling/lib/\2"#g' \
        "$pkgdir/opt/cling/lib/cmake/cling/ClingTargets.cmake"

    # omit man page for clang's scan-build
    rm -f "$pkgdir/opt/cling/share/man/man1/scan-build.1"

    # remove empty directories
    rmdir -p --ignore-fail-on-non-empty "$pkgdir/opt/cling/share/man/man1"
    rmdir -p --ignore-fail-on-non-empty "$pkgdir/opt/cling/include/cling/cint"
}

carlosal1015 commented on 2023-12-26 01:36 (UTC)

There are no tags v1.0 for llvm and clang. Compilation will give errors if bump version to 1.0.

studyinglover commented on 2023-10-12 10:09 (UTC)

meet a mistake

克隆到纯仓库 '/home/zjh/.cache/yay/cling/cling-llvm'...
remote: Enumerating objects: 2182000, done.
remote: Counting objects: 100% (2182000/2182000), done.
remote: Compressing objects: 100% (437621/437621), done.
错误:RPC 失败。curl 18 transfer closed with outstanding read data remaining
fetch-pack: unexpected disconnect while reading sideband packet
致命错误:过早的文件结束符(EOF)
致命错误:fetch-pack:无效的 index-pack 输出
==> 错误: 下载 cling-llvm git 仓库失败
    正在放弃...
 -> 下载源文件时出错: /home/zjh/.cache/yay/cling 
     context: exit status 1 


:: (1/1) 正在解析 SRCINFO: cling
==> 正在创建软件包:cling 0.9-5 (2023年10月12日 星期四 17时44分26秒)
==> 正在检查运行时依赖关系...
==> 正在检查编译时依赖关系
==> 获取源代码...
  -> 正在克隆 cling-llvm git 仓库...
克隆到纯仓库 '/home/zjh/.cache/yay/cling/cling-llvm'...
remote: Enumerating objects: 2182000, done.
remote: Counting objects: 100% (2182000/2182000), done.
remote: Compressing objects: 100% (437621/437621), done.
remote: Total 2182000 (delta 1777937), reused 2137347 (delta 1735682)
接收对象中: 100% (2182000/2182000), 814.02 MiB | 772.00 KiB/s, 完成.
处理 delta 中: 100% (1777937/1777937), 完成.
  -> 正在克隆 cling-clang git 仓库...
克隆到纯仓库 '/home/zjh/.cache/yay/cling/cling-clang'...
致命错误:无法访问 'http://root.cern/git/clang.git/':Empty reply from server
==> 错误: 下载 cling-clang git 仓库失败
    正在放弃...
 -> 生成时出错: cling-exit status 1
 -> 无法安装以下软件包, 需要手动介入处理:
cling - exit status 1

carlosal1015 commented on 2023-08-08 17:37 (UTC) (edited on 2023-08-21 15:33 (UTC) by carlosal1015)

Hi @archibald869, could you please add this patch enable-redefinition-allowed.patch, this feature comes from cling-0.7.0, to disable this behaviour. Many thanks, I will really appreciate it, especially for the xeus-cling package.

This patch works from my side.

archibald869 commented on 2023-07-19 09:48 (UTC)

Thanks for your hints! I updated the PKGBUILD accordingly.

lahwaacz commented on 2023-07-01 21:25 (UTC)

Also the LLVM and Clang sources should be prefixed with cling- and not just llvm/clang as these are not unique for all packages.

You can also call just ninja once in the build() function to build everything at once, otherwise even ninja install builds something...

lahwaacz commented on 2023-07-01 21:20 (UTC)

Please disable LTO for this package. Not only it eats all of my 128 GB RAM, it is also disabled in extra/llvm itself.

archibald869 commented on 2023-04-18 10:05 (UTC) (edited on 2023-04-18 10:05 (UTC) by archibald869)

I just tested it in a clean environment and it worked flawlessly. Do you still face this issue?

gnaggnoyil commented on 2023-03-03 13:13 (UTC)

When building in a clean chroot, the build process emitted the following errors for me:

[445/461] Linking CXX executable bin/cling-demo
FAILED: bin/cling-demo 
: && /usr/bin/c++ -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/build/cling/src=/usr/src/debug/cling -flto=auto -fPIC -fvisibility-inlines-hidden -Werror=date-time -std=c++11 -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-class-memaccess -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -fdiagnostics-color -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -fno-strict-aliasing -Wno-nested-anon-types -Wno-covered-switch-default -Wno-unused-local-typedef -fno-rtti -O3 -DNDEBUG -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -flto=auto -Wl,-allow-shlib-undefined   -Wl,--export-dynamic tools/cling/tools/demo/CMakeFiles/cling-demo.dir/cling-demo.cpp.o -o bin/cling-demo  lib/libclingInterpreter.a  lib/libclingUtils.a  lib/libclangCodeGen.a  lib/libclangRewriteFrontend.a  lib/libclangFrontend.a  lib/libclangDriver.a  lib/libclangParse.a  lib/libclangRewrite.a  lib/libclangSerialization.a  lib/libclangSema.a  lib/libclangAnalysis.a  lib/libclangASTMatchers.a  lib/libclangEdit.a  lib/libclangAST.a  lib/libclangLex.a  lib/libclangBasic.a  lib/libLLVMCoroutines.a  lib/libLLVMCoverage.a  lib/libLLVMLTO.a  lib/libLLVMObjCARCOpts.a  lib/libLLVMOption.a  lib/libLLVMOrcJIT.a  lib/libLLVMExecutionEngine.a  lib/libLLVMPasses.a  lib/libLLVMJITLink.a  lib/libLLVMRuntimeDyld.a  lib/libLLVMNVPTXCodeGen.a  lib/libLLVMipo.a  lib/libLLVMIRReader.a  lib/libLLVMAsmParser.a  lib/libLLVMInstrumentation.a  lib/libLLVMLinker.a  lib/libLLVMVectorize.a  lib/libLLVMNVPTXDesc.a  lib/libLLVMNVPTXInfo.a  lib/libLLVMX86CodeGen.a  lib/libLLVMAsmPrinter.a  lib/libLLVMDebugInfoDWARF.a  lib/libLLVMGlobalISel.a  lib/libLLVMSelectionDAG.a  lib/libLLVMCodeGen.a  lib/libLLVMScalarOpts.a  lib/libLLVMAggressiveInstCombine.a  lib/libLLVMInstCombine.a  lib/libLLVMTarget.a  lib/libLLVMTransformUtils.a  lib/libLLVMBitWriter.a  lib/libLLVMAnalysis.a  lib/libLLVMProfileData.a  lib/libLLVMX86AsmParser.a  lib/libLLVMX86Desc.a  lib/libLLVMObject.a  lib/libLLVMBitReader.a  lib/libLLVMCore.a  lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a  lib/libLLVMMCParser.a  lib/libLLVMX86Disassembler.a  lib/libLLVMMCDisassembler.a  lib/libLLVMMC.a  lib/libLLVMBinaryFormat.a  lib/libLLVMDebugInfoCodeView.a  lib/libLLVMDebugInfoMSF.a  lib/libLLVMX86Info.a  lib/libLLVMX86Utils.a  lib/libLLVMSupport.a  -lz  -lrt  -ldl  -ltinfo  -lm  lib/libLLVMDemangle.a && :
/usr/src/debug/cling/llvm/include/llvm/Support/CrashRecoveryContext.h:182:7: warning: virtual table of type ‘struct CrashRecoveryContextDeleteCleanup’ violates one definition rule [-Wodr]
/usr/src/debug/cling/llvm/include/llvm/Support/CrashRecoveryContext.h:182:7: note: the conflicting type defined in another translation unit has virtual table with more entries
/usr/src/debug/cling/llvm/include/llvm/Support/CrashRecoveryContext.h:145:7: warning: virtual table of type ‘struct CrashRecoveryContextCleanupBase’ violates one definition rule [-Wodr]
/usr/src/debug/cling/llvm/include/llvm/Support/CrashRecoveryContext.h:145:7: note: the conflicting type defined in another translation unit has virtual table with more entries
/usr/src/debug/cling/llvm/include/llvm/Option/ArgList.h:116:7: warning: virtual table of type ‘struct ArgList’ violates one definition rule [-Wodr]
/usr/src/debug/cling/llvm/include/llvm/Option/ArgList.h:116:7: note: the conflicting type defined in another translation unit has virtual table with more entries
lto1: note: unrecognized command-line option ‘-Wno-unused-local-typedef’ may have been intended to silence earlier diagnostics
lto1: note: unrecognized command-line option ‘-Wno-covered-switch-default’ may have been intended to silence earlier diagnostics
lto1: note: unrecognized command-line option ‘-Wno-nested-anon-types’ may have been intended to silence earlier diagnostics
lto-wrapper: fatal error: write: No space left on device
compilation terminated.
/usr/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status

Is there anyone facing similar errors? I'm sure I have enough disk and RAM space but I'm not sure if there's any settings I need to set up for the chroot build.

archibald869 commented on 2023-02-28 15:26 (UTC) (edited on 2023-02-28 15:26 (UTC) by archibald869)

Thanks for the hint! I've updated the PKGBUILD as suggested. In the course of this, I've also switched to Ninja as build system instead of Make, as proposed by krnlpk. Thank you too!