]>
git.ipfire.org Git - pakfire.git/log
Michael Tremer [Sat, 30 Jan 2021 17:36:43 +0000 (17:36 +0000)]
libpakfire: db: Add scriptlets
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 30 Jan 2021 17:33:27 +0000 (17:33 +0000)]
libpakfire: scriptlets live in "scriptlets/"
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 30 Jan 2021 17:33:07 +0000 (17:33 +0000)]
libpakfire: archive: Do not break on successful memory allocation
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 30 Jan 2021 17:32:37 +0000 (17:32 +0000)]
libpakfire: scriptlets: Actually free on free()
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 30 Jan 2021 17:31:10 +0000 (17:31 +0000)]
libpakfire: execute: Call chdir("/") after chroot
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 30 Jan 2021 16:24:46 +0000 (16:24 +0000)]
libpakfire: scriptlets: Move them into an own data structure
We deal with scriptlets in several places and carrying them around as
loose pointers to some data is not very comfortable.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 30 Jan 2021 14:49:49 +0000 (14:49 +0000)]
libpakfire: db: Initialise r
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 30 Jan 2021 14:47:41 +0000 (14:47 +0000)]
libpakfire: db: Drop unused build_date column
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 30 Jan 2021 14:30:29 +0000 (14:30 +0000)]
libpakfire: Drop dependency on libgcrypt
This library was chosen as a lightweight and more easy to use
alternative to OpenSSL.
Unfortunately it does not seem to be up to standard in terms of
reliability, performance and most importantly security.
Therefore we are using OpenSSL which is the de-facto standard library,
well-audited and has a transparent development process.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 30 Jan 2021 14:26:17 +0000 (14:26 +0000)]
archive: Use OpenSSL instead of libcrypt to compute hashes
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 30 Jan 2021 12:22:15 +0000 (12:22 +0000)]
libpakfire: Link against OpenSSL
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 30 Jan 2021 12:18:19 +0000 (12:18 +0000)]
tests: Add a basic test for filelists
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 24 Jan 2021 16:49:32 +0000 (16:49 +0000)]
libpakfire: Drop filelists from packages
Filelists are now being allocated when needed.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 24 Jan 2021 16:43:13 +0000 (16:43 +0000)]
libpakfire: Remove dropped functions from symbols table
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 24 Jan 2021 16:41:23 +0000 (16:41 +0000)]
libpakfire: filelist: Implement sorting filelists
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 24 Jan 2021 16:34:30 +0000 (16:34 +0000)]
libpakfire: Refactor files
This used to be used to implement lists which was a right mess.
Lists are now filelists and files are now files only.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 24 Jan 2021 15:15:10 +0000 (15:15 +0000)]
libpakfire: filelist: Refactor filelist
The code that was written was not even used and has now been rewritten
in order to make it usable and to remove any linked-list stuff from
PakfireFile.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 24 Jan 2021 14:55:16 +0000 (14:55 +0000)]
libpakfire: filelist: Move object declaration into .c file
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 24 Jan 2021 14:54:12 +0000 (14:54 +0000)]
libpakfire: db: Add files to filelist
This is incomplete because we can currently not access some attributes
from the file object.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 23 Jan 2021 16:35:22 +0000 (16:35 +0000)]
libpakfire: steps: Make them independent from libsolv
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 23 Jan 2021 16:34:45 +0000 (16:34 +0000)]
libpakfire: db: Drop build_id column from INSERT statement
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 23 Jan 2021 16:20:49 +0000 (16:20 +0000)]
libpakfire: db: Add check function to check database integrity
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 22 Jan 2021 18:10:59 +0000 (18:10 +0000)]
tests: Add some tests for database
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 22 Jan 2021 18:08:56 +0000 (18:08 +0000)]
libpakfire: db: Fix typo in optimize
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 22 Jan 2021 18:03:55 +0000 (18:03 +0000)]
libpakfire: db: Fix reading settings
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 22 Jan 2021 17:24:01 +0000 (17:24 +0000)]
libpakfire: db: Drop old build_id column
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 22 Jan 2021 17:14:35 +0000 (17:14 +0000)]
libpakfire: db: Add packages to database when installed
This does not add any metadata, yet.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 22 Jan 2021 13:03:53 +0000 (13:03 +0000)]
libpakfire: db: Add foreign keys to tables
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 22 Jan 2021 12:10:52 +0000 (12:10 +0000)]
libpakfire: db: Add scriptlets table
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 22 Jan 2021 12:04:07 +0000 (12:04 +0000)]
libpakfire: db: Add files table
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 22 Jan 2021 10:25:35 +0000 (10:25 +0000)]
libpakfire: db: Add dependencies table
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 21 Jan 2021 19:51:36 +0000 (19:51 +0000)]
libpakfire: db: Create packages table
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 21 Jan 2021 19:39:55 +0000 (19:39 +0000)]
libpakfire: db: Self-populate schema
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 21 Jan 2021 11:34:37 +0000 (11:34 +0000)]
libpakfire: db: Set database to WAL mode
We disable autocheckpointing since we are expected to writer rather
large transactions and we would like to keep the database as compact as
possible, too. That is achieved by truncating the WAL log in the end
where the data is being copied into the main database and the WAL log
being emptied after.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 21 Jan 2021 11:24:07 +0000 (11:24 +0000)]
libpakfire: db: Set some sensible defaults for the connection
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 21 Jan 2021 11:21:43 +0000 (11:21 +0000)]
libpakfire: execute: status might have been used uninitialised
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 21 Jan 2021 11:19:08 +0000 (11:19 +0000)]
python: execute: Raise OS error when starting the process failed
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Jan 2021 22:11:27 +0000 (22:11 +0000)]
libpakfire: db: Setup some basic database logging
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Jan 2021 22:03:51 +0000 (22:03 +0000)]
libpakfire: db: Use SQLite3
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Jan 2021 21:39:32 +0000 (21:39 +0000)]
libpakfire: db: Add flags to decide whether we need write access
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Jan 2021 21:33:17 +0000 (21:33 +0000)]
libpakfire: db: Export functions like everything else
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Jan 2021 21:28:52 +0000 (21:28 +0000)]
libpakfire: Remove LMDB
This does not seem to be the right tool for our task
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Jan 2021 21:23:57 +0000 (21:23 +0000)]
libpakfire: Call database routines when packages are added/removed
These functions are empty right now and serve as placeholders
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Jan 2021 21:17:57 +0000 (21:17 +0000)]
libpakfire: transaction: Pass the open database down to steps
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Jan 2021 21:03:04 +0000 (21:03 +0000)]
libpakfire: transaction: Open the database when needed
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 19 Jan 2021 20:27:49 +0000 (20:27 +0000)]
libpakfire: db: Assume that the private directory already exists
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 19 Jan 2021 20:27:19 +0000 (20:27 +0000)]
libpakfire: Define and always create private dir
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 19 Jan 2021 20:00:24 +0000 (20:00 +0000)]
libpakfire: Skip freeing repositories when pool isn't set
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 19 Jan 2021 19:59:57 +0000 (19:59 +0000)]
libpakfire: Add lmdb database environment
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 19 Jan 2021 18:35:59 +0000 (18:35 +0000)]
libpakfire: Do not allocate more space than we need
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 19 Jan 2021 17:51:52 +0000 (17:51 +0000)]
Depend on lmdb
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 19 Jan 2021 17:12:28 +0000 (17:12 +0000)]
libpakfire: execute: Allow passing the logging callback from Python
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 19 Jan 2021 12:48:43 +0000 (12:48 +0000)]
libpakfire: execute: Reduce logging callback to one function
This function is now being passed the loglevel and can therefore
distinguish between stdout and stderr.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Mon, 18 Jan 2021 20:55:32 +0000 (20:55 +0000)]
libpakfire: archive: Only load support for what we use
This reduces the footprint of libpakfire in memory as well as not
opening us up to any vulnerabilities in filters and formats of
libarchive that we do not use.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jan 2021 18:03:42 +0000 (18:03 +0000)]
libpakfire: execute: Statically allocate the log buffer
This prevents the buffer from growing unboundedly, but limits us to only
process log messages of up to the buffer size.
I have chosen 64k which should be more than enought that we never run
into this situation.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 16 Jan 2021 13:50:58 +0000 (13:50 +0000)]
libpakfire: execute: Make logging functions exchangeable
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 16 Jan 2021 13:31:38 +0000 (13:31 +0000)]
tests: execute: Add test with multiple newlines in one read
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 16 Jan 2021 13:28:52 +0000 (13:28 +0000)]
libpakfire: execute: Read all output from commands and log it
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 16 Jan 2021 11:16:01 +0000 (11:16 +0000)]
libpakfire: execute: Rename LOG_OUTPUT to INTERACTIVE
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 15 Jan 2021 22:33:55 +0000 (22:33 +0000)]
libpakfire: execute: Read content from stdout/stderr and sent it to the logger
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 15 Jan 2021 21:17:03 +0000 (21:17 +0000)]
libpakfire: execute: Create fds to read output in parent process
This will be used to log any output of the executed command in the
parent process.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 14 Jan 2021 13:45:32 +0000 (13:45 +0000)]
libpakfire: execute: Call chroot() and personality() only when necessary
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 14 Jan 2021 13:36:09 +0000 (13:36 +0000)]
tests: python: Check return codes of pakfire_execute()
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 14 Jan 2021 13:35:44 +0000 (13:35 +0000)]
libpakfire: execute: Tidy up return codes
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 14 Jan 2021 13:14:27 +0000 (13:14 +0000)]
libpakfire: execute: Use clone() instead of fork()
This avoids copying the whole process (which could be quite large) and
spawn the new process into a new namespace straight away without needing
to call unshare(2) later.
This should be a little bit faster when executing many commands.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 14 Jan 2021 12:59:06 +0000 (12:59 +0000)]
libpakfire: execute: Bring back execute environment
This allows us to only pass one argument to pakfire_execute_fork
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 23:47:35 +0000 (23:47 +0000)]
builder: Drop private network setting
The build chroot will never have network enabled, but the shell does.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 23:46:23 +0000 (23:46 +0000)]
Drop old unshare code
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 23:43:38 +0000 (23:43 +0000)]
libpakfire: execute: Unshare environment when entering chroot
The shell has networking enabled automatically.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 23:08:50 +0000 (23:08 +0000)]
libpakfire: Add pakfire_execute_command
This is a convenience function when only a simple command without any
arguments is called and it saves us from allocating argv in the calling
function.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 23:04:18 +0000 (23:04 +0000)]
libpakfire: execute: Cast perso to unsigned int for printing
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 23:03:05 +0000 (23:03 +0000)]
libpakfire: Re-indent execute.c
This file was accidentially indented using both spaces and tabs.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 23:00:17 +0000 (23:00 +0000)]
libpakfire: execute: Cast argv to non-const as late as possible
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 22:58:54 +0000 (22:58 +0000)]
builder: Use pakfire_execute to run shell
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 22:58:01 +0000 (22:58 +0000)]
libpakfire: execute: Remove environment and accept arguments as they are passed to execve
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 22:55:39 +0000 (22:55 +0000)]
python: Increase i when copying environment
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 19:39:19 +0000 (19:39 +0000)]
libpakfire: Increase pool debug level when compiled with SOLVER_DEBUG
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 19:37:51 +0000 (19:37 +0000)]
libpakfire: Set pool to RPM format
On Debian and other non-RPM distributions the default format might be
something different which reconfigures evr comparison and the name of
the "all" architecture.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 16:34:33 +0000 (16:34 +0000)]
Make "pakfire provides" work
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 14:19:47 +0000 (14:19 +0000)]
pakfire-builder: shell: Add --install argument
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 14:10:06 +0000 (14:10 +0000)]
libpakfire: Pass Pakfire to pakfire_create as argument
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 13:01:12 +0000 (13:01 +0000)]
Update translations
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 12:59:47 +0000 (12:59 +0000)]
tests: Give better names to assertions
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 12:44:46 +0000 (12:44 +0000)]
tests: Remove all typedefs and use structs instead
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 12:40:01 +0000 (12:40 +0000)]
tests: Make all tests static
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 12:38:06 +0000 (12:38 +0000)]
tests: Allocate testsuite statically
This allows us to have shorter function calls when setting up a test
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 12:19:40 +0000 (12:19 +0000)]
tests: Add macro for shorter listing of tests
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 12:15:17 +0000 (12:15 +0000)]
tests: Add test for pakfire_string_startswith
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 12:14:46 +0000 (12:14 +0000)]
libpakfire: util: Make pakfire_string_startswith return 1 on success
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 12:07:22 +0000 (12:07 +0000)]
pakfire: Check if path is absolute
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 12:01:49 +0000 (12:01 +0000)]
pakfire: Check if path exists
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Jan 2021 11:37:17 +0000 (11:37 +0000)]
Throw a clean exception when Pakfire was initialised with an invalid architecture
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 12 Jan 2021 16:56:10 +0000 (16:56 +0000)]
constants: Remove more unused constants
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 12 Jan 2021 16:47:39 +0000 (16:47 +0000)]
constants: Drop unused CHUNK_SIZE
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 12 Jan 2021 16:47:02 +0000 (16:47 +0000)]
builder: Move shell environment variables into submodule
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 12 Jan 2021 16:31:54 +0000 (16:31 +0000)]
libpakfire: execute: Automatically set personality from arch
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Mon, 11 Jan 2021 19:39:09 +0000 (19:39 +0000)]
libpakfire: execute: Drop unused define for STACK_SIZE
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Mon, 11 Jan 2021 18:08:54 +0000 (18:08 +0000)]
libpakfire: execute: Add option to pass environment
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Mon, 11 Jan 2021 17:55:42 +0000 (17:55 +0000)]
python: Add tests for execute()
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Mon, 11 Jan 2021 17:55:05 +0000 (17:55 +0000)]
python: Export pakfire_execute() into Python
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>