Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build packages the same way in update and build #55

Closed
wants to merge 44 commits into from

Conversation

TAAPArthur
Copy link

The call to pkg_order that kiss update solely had is now shared with
kiss build. Now the dependency ordering is the same for both.

Closes #30

cemkeylan and others added 30 commits February 19, 2021 20:07
OpenBSD Korn Shell doesn't exit when the prompt receives interrupt. This
fixes the issue by manually exiting when prompt returns error. This
issue is an OpenBSD Korn Shell bug and doesn't match the expected POSIX
behaviour.
* kiss: rename sls to ssu

* remove wildcard character which treated ssu as su

-> /var/db/kiss/repo-community Need root to update
-> Using 'ssu' (to become root)
sh:
                        git pull && git submodule update --remote --init -f
                            : not found

* trim full path

Co-authored-by: illiliti <[email protected]>
Allowing repositories to telegraph updates is interesting, though.
sbase utilities don't accept flags after arguments begin, meaning that
the '--' is accepted as an argument instead of the "end flag", which
causes the utility to fail because it looks for a file named '--'.
…not supported

This change ensures that niche tools that are not packaged in repositories
can be used without the need of it being implemented inside the package
manager itself. We don't support these tools, however most of them follow
a similar syntax as with 'sudo', and they can be run.

See: kiss-community#12 (comment)
It turns out running the interrupt trap on certain locations resulted in
inconsistencies whether the package manager would exit or not, which
would in turn result in the interrupt signals being blocked onward, and
result in breakage.
This variable can be used in, say, a hook to change the window title
based on which package in the build queue is being built.
The prompt used to appear when more than 1 packages were to be installed, but
this also happened when they all were specified on the commandline (even when
no extra dependencies were resolved). This is kind of redundant behaviour.

Now it will only appear when the number of packages explicitly supplied to
it and number of packages after dependency resolution are unequal (because
dependencies were found on resolution). I assume this was meant to be the
original intent for the behaviour but was left behind even after pkg_install()
gained the ability to receive multiple arguments.

Signed-off-by: FriendlyNeighborhoodShane <[email protected]>
Related GitHub issue: kiss-community#20

Using readelf for fixing dependencies outputs only the soname of dynamic
libraries, which causes confusion between folders such as `/lib` and
`/lib32`.

This change ensures that we retrieve the correct path for the library
dependency by also using ldd. readelf provides the left handside of the
ldd dependency output, and we retrieve the right handside from that
information.

However, we don't want to call the dynamic loader lots of times, as that
would slow the operation. Therefore, we save ldd output in a buffer at
the beginning for each file, and we call that buffer instead when we
need to reference it.
Related GitHub issue: kiss-community#5

kiss(1) will sometimes not install certain dependencies. This is caused
by a loop which installs dependencies from the kiss binary cache,
instead of rebuilding. The loop iterates the positional parameters
(packages to be build) and shifts the positional parameters for every
package installed from the binary cache. The mistake is, that the first
positional parameter being shifted away, might not be the same package
as the one of the current loop iteration. For example: If the packages
"dep2", "dep1" and "foopackage" are to be build, while only "dep1" has a
cached binary, the second loop iteration will shift once, falsely
removing "dep2" from the packages which still need to be build.

This patch uses a separate variable, to properly keep track of the
remaining packages to be build.
Most of the time you want the package manager to cleanup and exit
directly after receiving interrupt signal. However, there are some
places (such as the download operation here) where we want to handle
interrupts.
Dilyn Corner and others added 14 commits May 22, 2021 11:49
Replace the use of grep to determine the unique dependencies with
sort/uniq.
this fixes bash compatibility, since the hashbang specifies sh
Wrapping the cd call and hiding its stderr is wrong as we now skip
directories which exist but are inaccessible. The error message
is also misleadingly "not a directory" instead of "permission denied"
(or whatever else it may be). This works fine with broken symlinks.
This downloads all reachable commits and then blobs and trees on demand. It
swaps the clone from shallow to treeless. In other words, it's a less
shallow shallow clone which makes 'git describe' work.
When KISS_ROOT is empty path is //path/to/file.
Removed the check for sources file as every caller checks it
anyway. Also merged the directory code with the other skipped
stuff.
This changes pkg_remove_files to queue all directory symlinks for
removal *after* all other items. Links are only removed if they are
broken and a safeguard has been added for root level directories.

Also fixed are some bugs around how the paths are stored internally.

1. If KISS_ROOT is empty, path ends up being //path/to/file.
2. Directory symlinks are undetectable when they have '/' as a suffix.
Duplicates were not filtered out of the argument list as originally
intended due to the creation of $explicit2 disregarding $explicit.
The total package count is now aware of duplicates also.

The total package count (previously nexplicit) would also incorrectly
count packages which were removed from the explicit list. It would
silently /not prompt/ when a package went from explicit to implicit.

I have also updated the output to reflect whether a package is
explicit or implicit. ie, whether it's a dependency or not.
Ensures that // (and //////) don't occur within the temporary
directory paths.
The call to pkg_order that `kiss update` solely had is now shared with
`kiss build`. Now the dependency ordering is the same for both.

Closes kisslinux#30
@dilyn-corner
Copy link
Member

Looks like this has been abandoned...?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Kiss doesn't reinstall depedencies first when updating
9 participants