kisslinux / kiss

KISS Linux - Package Manager
https://kisslinux.github.io
MIT License
465 stars 62 forks source link

kiss doesn't detect file conflicts between packages #71

Closed konimex closed 4 years ago

konimex commented 5 years ago

Issue

Self-explanatory. In my case, the package involved is clang and my own llvm-unified trial package.

How to reproduce

While my llvm-unified is installed, install clang. It doesn't warn of conflicts, but it does warn of llvm not being installed, which means the first check fails to do its job.

My llvm-unified build script is available upon request.

Build log

KISS clang manifest
My llvm-unified manifest

scsijon commented 5 years ago

On 19/11/19 11:25, M. Herdiansyah wrote:

Issue

Self-explanatory. In my case, the package involved is clang and my own llvm-unified trial package.

How to reproduce

While my llvm-unified is installed, install clang. It doesn't warn of conflicts, but it does warn of llvm not being installed, which means the first check fails to do its job.

My llvm-unified build script is available upon request.

Build log

KISS clang manifest My llvm-unified manifest

Go here > http://llvm.org/docs/GettingStarted.html It should help you, especially the "Clang getting started" link.

Personally, I downloaded a prebuilt llvm/clang from their site and built both as separate packages using it via chroot as had been sugested elsewhere, and that worked, but not in KISS. I'm still 'reading' through the KISS system to gather enough knowledge before I start, as I come from a different linux background.

konimex commented 5 years ago

I honestly don't understand what you meant. I've successfully built the package, it's just when I install it, it somehow is successful when it shouldn't be.

dylanaraps commented 5 years ago

It's finding a conflict with but it isn't aborting there. Need to investigate further.

+ grep -svFxf /var/db/kiss/installed/clang/manifest -
+ '[' -f //var/db/kiss/installed/clang/version ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/sources ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/patches/cfe-004-add-musl-triples.patch ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/patches/cfe-003-fix-unwind-chain-inclusion.patch ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/patches/ ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/manifest ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/depends ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/checksums ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/build ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/ ]
+ read -r file
+ '[' -f //var/db/kiss/installed/ ]
+ read -r file
+ '[' -f //var/db/kiss/ ]
+ read -r file
+ '[' -f //var/db/ ]
+ read -r file
+ '[' -f //var/ ]
+ read -r file
+ '[' -f //usr/share/scan-view/startfile.py ]
+ printf '%s\n' /usr/share/scan-view/startfile.py
+ '[' -s /home/koni/.cache/kiss/8249-m ]
scsijon commented 5 years ago

cmake version 3.4.3 or later?

cmake set to build with> cmake -C

Variables customize how the build will be generated. Options are boolean variables, with possible values ON/OFF. Options and variables are defined on the CMake command line like this:

$ cmake -DVARIABLE=value path/to/llvm/source

You can set a variable after the initial CMake invocation to change its value. You can also undefine a variable:

$ cmake -UVARIABLE path/to/llvm/source

Variables are stored in the CMake cache. This is a file named CMakeCache.txt stored at the root of your build directory that is generated by cmake. Editing it yourself is not recommended.

Variables are listed in the CMake cache and later in this document with the variable name and type separated by a colon. You can also specify the variable and type on the CMake command line:

$ cmake -DVARIABLE:TYPE=value path/to/llvm/source

?shared or static libs in your system, llvm by default looks for static, BUILD_SHARED_LIBS=on for shared

and that's just for llvm part.

http://clang.llvm.org/get_started.html should give you a good basics for clang

Looking at your file online, it's clear to me that it can't find the paths to the llvm libs and source code (post build), you do still have them of course and still in the same place llvm had them in when built, they wern't deleted after llvm was built were they, it needs them to build clang properly.

I'll print it out and look into it further in a day or two after doing some checking in my own build notes if needed still. I built all the packages together and they were ok afterwards, maybe some things gone awry building in start-stop-start stages.


On 19/11/19 17:15, dylan wrote:

It's finding a conflict with clang but it isn't aborting there. Need to investigate further.


/cut
scsijon commented 5 years ago

and if you still have your llvm log i'd like to see that also.

On 19/11/19 17:15, dylan wrote:

It's finding a conflict with clang but it isn't aborting there. Need to investigate further.

+ grep -svFxf /var/db/kiss/installed/clang/manifest -
+ '[' -f //var/db/kiss/installed/clang/version ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/sources ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/patches/cfe-004-add-musl-triples.patch ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/patches/cfe-003-fix-unwind-chain-inclusion.patch ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/patches/ ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/manifest ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/depends ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/checksums ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/build ]
+ read -r file
+ '[' -f //var/db/kiss/installed/clang/ ]
+ read -r file
+ '[' -f //var/db/kiss/installed/ ]
+ read -r file
+ '[' -f //var/db/kiss/ ]
+ read -r file
+ '[' -f //var/db/ ]
+ read -r file
+ '[' -f //var/ ]
+ read -r file
+ '[' -f //usr/share/scan-view/startfile.py ]
+ printf '%s\n' /usr/share/scan-view/startfile.py
+ '[' -s /home/koni/.cache/kiss/8249-m ]
dylanaraps commented 5 years ago

I can't seem to reproduce this:

-> kiss i zlib
Password:
-> zlib Checking for package conflicts
/var/db/kiss/installed/busybox/manifest:/usr/bin/ls
!> Package 'zlib' conflicts with another package

(Made zlib install a file as /usr/bin/ls to test.)

dylanaraps commented 5 years ago

Here's what a working log looks like: https://gist.github.com/dylanaraps/be607129692e10cbd377c27824883f7b

dylanaraps commented 5 years ago

It looks like this check (+ '[' -s /home/koni/.cache/kiss/8249-m ]) is returning 1 (False) for some reason.

Try changing the code to this:

    # Filter the existing file list through the manifest of the
    # presently installed version of the package (if it exists).
    grep -svFxf "$sys_db/$2/manifest" - 2>/dev/null > "$cac_dir/$pid-m"
    vim "$cac_dir/$pid-m"

It'll open vim with the the filtered manifest from the tarball. This is what the code uses to check for conflicts against the system.

konimex commented 5 years ago

The filtered list is an empty file on my end.

konimex commented 4 years ago

Test kiss i for package Dummies A and B. See if you can reproduce it.

Log for dummy A, installed first
Log for dummy B, installed second

Manifest for dummy A
Manifest for dummy B: Look at manifest for dummy A. Difference only in the package name.

dylanaraps commented 4 years ago

Try the latest master.

konimex commented 4 years ago

Doesn't seem to work.

Log for dummy A, installed first
Log for dummy B, installed second

dylanaraps commented 4 years ago

Try master again. :+1:

konimex commented 4 years ago

Nope. Doesn't work either.

Dummy B, installed first
Dummy A, installed second

dylanaraps commented 4 years ago

Should be fixed in: https://github.com/kisslinux/kiss/commit/c8a29c451eb774350c1e143be5cbb019b84a2bd7