]>
git.ipfire.org Git - people/stevee/pakfire.git/log
Michael Tremer [Tue, 19 Jul 2022 14:29:32 +0000 (14:29 +0000)]
mount: Don't return error in foreach when there are no mountpoints
The loop returned 1 by default when there were no mountpoints to process
which is not what we need here.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 19 Jul 2022 14:21:28 +0000 (14:21 +0000)]
snapshots: Protect against invalid inputs
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 19 Jul 2022 14:11:53 +0000 (14:11 +0000)]
tests: Add a test that creates and restores a snapshot
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 19 Jul 2022 11:55:22 +0000 (11:55 +0000)]
Revert "mount: Adjust mount flags for unprivileged users"
This reverts commit
c92f710524a370d8e910b74d7ba062373d02d7a6 .
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 19 Jul 2022 09:38:40 +0000 (09:38 +0000)]
mount: Adjust mount flags for unprivileged users
Bind-mounts require us to set MS_REC and remounting any mountpoint
requires us to now downgrade on noexec/nodev/nosuid.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 19 Jul 2022 09:37:30 +0000 (09:37 +0000)]
mount: Use mount(2) to perform any mount operations
libmount did too much voodoo here which prevented us from running
smoothly for unprivileged users.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Mon, 18 Jul 2022 18:28:55 +0000 (18:28 +0000)]
archive: Don't use path in error message
path seems to have been freed after the extraction has been started and
therefore we cannot use it any more.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Mon, 18 Jul 2022 17:31:16 +0000 (17:31 +0000)]
mount: Don't mount /tmp in container
If /tmp is a ramdisk, any temporary files written during the build
process will be lost between stages. That is rather unintuitive and we
might use excess memory.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Mon, 18 Jul 2022 17:30:16 +0000 (17:30 +0000)]
execute: Copy scripts into /
Formerly they were created in /tmp which could be overlayed by a tmpfs.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Mon, 18 Jul 2022 09:40:03 +0000 (09:40 +0000)]
file: Make the static analyzer happy
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Mon, 18 Jul 2022 09:24:54 +0000 (09:24 +0000)]
pakfire: Move cache directory into user's home
This is only happening when running as an unprivileged user.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Mon, 18 Jul 2022 09:24:24 +0000 (09:24 +0000)]
util: Fix permissions of temporary directories
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Mon, 18 Jul 2022 08:52:12 +0000 (08:52 +0000)]
Move all temporary files directly into /var/tmp
When running Pakfire as an unprivileged user, we cannot create temporary
files in a subdirectory which has been created earlier by a different
user.
Hence we now put everything directly into /var/tmp where everyone should
have write permissions all of the time.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Mon, 18 Jul 2022 08:24:32 +0000 (08:24 +0000)]
util: Store errno when running pakfire_rmtree()
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Mon, 18 Jul 2022 08:16:31 +0000 (08:16 +0000)]
pakfire: Store UID of running user
This patch also moves the root permission check into the safety check
function.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 18:56:46 +0000 (18:56 +0000)]
Use sane directory/file permissions throughout
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 18:39:40 +0000 (18:39 +0000)]
execute: Only try umounting after we actually mounted something
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 18:38:35 +0000 (18:38 +0000)]
execute: Use existing function to check if we are running in /
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 18:38:17 +0000 (18:38 +0000)]
mount: Remove unused variable
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 18:34:09 +0000 (18:34 +0000)]
mount: Move pakfire_bind() into mount.c
There are no functional changes, but this function rather belongs here,
and as a bonus, we get to make pakfire_mount() static and declutter
pakfire.c slightly.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 18:25:48 +0000 (18:25 +0000)]
mount: Mount the interpreter every time
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 18:16:04 +0000 (18:16 +0000)]
execute: Mount all file systems only in namespace
If Pakfire is running as an unprivileged user, we cannot call mount() in
the original namespace. However, it is difficult to spawn a new process
in a new namespace first and then perform loads of actions in there.
Embedded Pakfire would become more difficult.
At the cost of losing the option to create an environment in a
dynamically created ramdisk, we can only mount everything when we enter
the container.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 18:09:29 +0000 (18:09 +0000)]
execute: Switch back to chroot()
pivot_root() seems to be very complicated to use and will require us to
have the container run on a different file system. That is however not
possible when Pakfire is running as an un-privileged user.
Since pivot_root() does not seem to offer any advantages over chroot(),
we switch back to chroot() which is easier to use.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 17:33:15 +0000 (17:33 +0000)]
pakfire: Remove mount_tmpfs flag
This is no longer in use
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 17:26:43 +0000 (17:26 +0000)]
pakfire: Pass loglevel on creation
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 17:05:37 +0000 (17:05 +0000)]
pakfire: Correctly set return code on initialization errors
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 12:35:29 +0000 (12:35 +0000)]
digests: Renumber them
There is no need to use them as bitfields.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 12:35:05 +0000 (12:35 +0000)]
db: Use correct value for digest types
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 12:13:54 +0000 (12:13 +0000)]
execute: Disable mount propagation before calling pivot_root()
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 11:52:00 +0000 (11:52 +0000)]
pakfire: Allow passing None as empty list
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 10:00:05 +0000 (10:00 +0000)]
packager: Copy file payload into mtree for hashing
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 09:47:17 +0000 (09:47 +0000)]
file: Drop unused function to copy archive entry
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 09:44:50 +0000 (09:44 +0000)]
files: Strip leading "./" from filenames
mtree adds ./ to every file that is being written to the archive, but
that is not very useful for us.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Jul 2022 09:29:08 +0000 (09:29 +0000)]
packager: Add SHA256 checksums to filelists
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 15 Jul 2022 15:51:21 +0000 (15:51 +0000)]
constants: Export PAKFIRE_DIGEST_* to Python
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 15 Jul 2022 15:45:58 +0000 (15:45 +0000)]
files: Add Python functions to access digest/hexdigest
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 15 Jul 2022 15:36:36 +0000 (15:36 +0000)]
db: Store file digests in a separate table
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 15 Jul 2022 15:35:50 +0000 (15:35 +0000)]
file: Refactor digests
Files can now hold more than one digest type and the interfaces have
been slightly improved.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 15 Jul 2022 14:12:02 +0000 (14:12 +0000)]
archive: Return filelist as list of File objects
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 15 Jul 2022 14:11:41 +0000 (14:11 +0000)]
file: Create Python wrapper for file objects
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 15 Jul 2022 14:10:51 +0000 (14:10 +0000)]
file: Export various functions
These seem to have never been used outside of the library
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 15 Jul 2022 12:33:25 +0000 (12:33 +0000)]
archive: Expose filelist as property
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Mon, 27 Jun 2022 15:59:51 +0000 (15:59 +0000)]
archive: Export path as Python property
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 15 Jul 2022 11:45:06 +0000 (11:45 +0000)]
transactions: Add dry-run mode
This is useful when we want to check whether a package can be
installed/erased/etc.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 15 Jul 2022 11:44:05 +0000 (11:44 +0000)]
hub: Update downloads URL
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 14 Jul 2022 15:22:07 +0000 (15:22 +0000)]
client: Implement creating builds
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 29 May 2022 12:09:36 +0000 (12:09 +0000)]
daemon: Add logging during the build job
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 29 May 2022 12:08:41 +0000 (12:08 +0000)]
hub: Add a new class for jobs
This is a proxy which is being used during the build to communicate with
the hub.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 13:41:00 +0000 (13:41 +0000)]
daemon: Add some basic steps to build a package
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 10:24:34 +0000 (10:24 +0000)]
constants: Drop some old stuff
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 10:22:58 +0000 (10:22 +0000)]
util: Drop rm function
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 10:22:04 +0000 (10:22 +0000)]
daemon: Drop old build function
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 10:19:38 +0000 (10:19 +0000)]
daemon: Drop old worker shutdown handler
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 10:17:19 +0000 (10:17 +0000)]
daemon: Make workers async
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 10:11:04 +0000 (10:11 +0000)]
daemon: Drop unused function
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 10:09:58 +0000 (10:09 +0000)]
daemon: Set job ID in process title
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 10:04:40 +0000 (10:04 +0000)]
daemon: Block main loop more intelligently
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 09:44:02 +0000 (09:44 +0000)]
daemon: Fork new worker process when we receive a build job
The previous system was that the worker processes would have been
pre-forked and waiting for a job which was randomly allocated.
This model is now changing since we no longer poll, but push build jobs
from the hub to the builders.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 09:42:38 +0000 (09:42 +0000)]
daemon: Store configuration parameters
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 09:41:39 +0000 (09:41 +0000)]
hub: Avoid any crashes when we received no message
The on_message callback can be called when the connection is closed
which made the JSON decoder crash.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 09:41:17 +0000 (09:41 +0000)]
configure: Depend on "cpuinfo" Python module
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 09:40:57 +0000 (09:40 +0000)]
logger: Add newline to the end if none already
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 09:40:36 +0000 (09:40 +0000)]
logger: Clear any previously configured handlers
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 08:57:45 +0000 (08:57 +0000)]
daemon: Close queue connection immediately when shutting down
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 08:51:26 +0000 (08:51 +0000)]
daemon: Add flags to be more verbose
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 08:37:44 +0000 (08:37 +0000)]
logger: Use new logger setup in builder, too
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 27 May 2022 08:35:29 +0000 (08:35 +0000)]
logger: Create a simple logger and use it in daemon
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 26 May 2022 15:14:45 +0000 (15:14 +0000)]
daemon: Join the job queue and call a function when a job is assigned
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 26 May 2022 15:14:03 +0000 (15:14 +0000)]
hub: Add websocket capability
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 26 May 2022 12:15:27 +0000 (12:15 +0000)]
Drop distro.py
This has been replaced with a much simpler implemenation.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 26 May 2022 12:14:53 +0000 (12:14 +0000)]
util: Add a simple function to read the distro name
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 26 May 2022 12:06:16 +0000 (12:06 +0000)]
Drop system.py
This has been replaced by cpuinfo and psutil.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 26 May 2022 12:04:44 +0000 (12:04 +0000)]
daemon: Remove max_running/max_waiting configuration parameters
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 26 May 2022 12:03:49 +0000 (12:03 +0000)]
daemon: Use Python socket module to get hostname
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 26 May 2022 11:58:23 +0000 (11:58 +0000)]
daemon: Drop keepalive process
The old companion process which sent keepalive messages to the hub has
been dropped and the main daemon process is now conducting this task.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 26 May 2022 11:57:15 +0000 (11:57 +0000)]
hub: Add support for POST requests
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 26 May 2022 11:56:47 +0000 (11:56 +0000)]
daemon: Make it async
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 26 May 2022 11:56:10 +0000 (11:56 +0000)]
Makefile: Install distro.py
This module has been around all the time but was somehow not installed.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 26 May 2022 10:10:55 +0000 (10:10 +0000)]
daemon: Cosmetic changes when connecting to the hub
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 26 May 2022 09:57:02 +0000 (09:57 +0000)]
hub: Show progress bar on file uploads
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 26 May 2022 09:03:04 +0000 (09:03 +0000)]
Drop legacy HTTP client
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 26 May 2022 08:59:58 +0000 (08:59 +0000)]
client: Make all functions async
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 26 May 2022 08:59:32 +0000 (08:59 +0000)]
client: Refactor hub communication based on tornado HTTP client
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 May 2022 12:06:11 +0000 (12:06 +0000)]
execute: Add a simple wrapper for clone3
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 May 2022 12:04:13 +0000 (12:04 +0000)]
execute: Make CLONE_INTO_CGROUP non-optional
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 25 May 2022 12:00:19 +0000 (12:00 +0000)]
execute: List all mountpoints after mount
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 May 2022 15:55:25 +0000 (15:55 +0000)]
mount: Don't list everything after each mount operation
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 May 2022 15:54:08 +0000 (15:54 +0000)]
mount: Don't mess with the helpers
For some reason, this umounts practically everything on my Debian box.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 May 2022 15:51:58 +0000 (15:51 +0000)]
execute: Fix typo in comment
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 May 2022 14:45:28 +0000 (14:45 +0000)]
mount: Use libmount to iterate over any mountpoints
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 May 2022 14:18:12 +0000 (14:18 +0000)]
libpakfire: Move mount operations into a new file
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 24 May 2022 14:16:39 +0000 (14:16 +0000)]
configure: Link against libmount
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 May 2022 14:15:05 +0000 (14:15 +0000)]
execute: Use pivot_root instead of chroot
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 May 2022 14:14:48 +0000 (14:14 +0000)]
configure: Link against libcap
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 May 2022 12:50:10 +0000 (12:50 +0000)]
execute: Filter syscalls in container
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 21 May 2022 12:32:01 +0000 (12:32 +0000)]
configure: Depend on libseccomp
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 20 May 2022 18:43:33 +0000 (18:43 +0000)]
execute: Drop capabilities
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 20 May 2022 18:06:25 +0000 (18:06 +0000)]
execute: Launch any containers in a new PID namespace
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 20 May 2022 18:01:44 +0000 (18:01 +0000)]
archive: Fix compression selection
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 20 May 2022 17:52:53 +0000 (17:52 +0000)]
shell: Allow passing extra packages to install
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>