Commit graph

52 commits

Author SHA1 Message Date
80c6042c3b
Tidy up manifests and inclusion of workspace dependencies
All checks were successful
Build / Check format (push) Successful in 48s
Build / Build pacwrap (push) Successful in 1m40s
- `alpm` and `pacwrap-core` defined as workspace dependencies being
  imported by each crate.
- Set workspace resolver version to `2`
2024-10-31 16:22:08 -04:00
58084985cf
Pre-release 0.8.7
All checks were successful
Build / Check format (push) Successful in 50s
Build / Build pacwrap (push) Successful in 1m41s
Note: This is a test release intended to ensure nothing breaks when the
associated crates are published to crates.io.

- Update to version '0.8.7-pre'.
- Testing new `Cargo.toml` workspace manifest, of which brings manifest
  keys in all three pacwrap crates together. Most package keys now, with
  the exception of crate-specific metadata, are now located in the
  workspace manifest.
- Update common.sh to accomodate this change.
- Update README.md to again use relative paths.
2024-10-30 23:24:48 -04:00
acbe177b60
Release 0.8.6 2024-09-26 16:38:38 -04:00
8191764098
Increased log coverage and refactored error module
- Error logging is now present in pacwrap-agent
- Agent error code handling now correctly traps runtime panics.
- impl of DisplayTrait for TransactionError no longer handles the
  display of transaction failure messages.
- Error handling for TransactionAggregation is split into three
  categories: Fatal, Error, and Non-Fatal Error. While two former are
  immediately trapped and the program is terminated, the latter can
  safely terminate the program without consequence.
2024-09-23 19:59:36 -04:00
07d3963196
Update to alpm.rs 4.0.1 with partial reversion of b621c34
- Updated to alpm.rs 4.0.1
- Changes made with b621c34 were made as a result of a regression,
  introduced with alpm.rs 3.0.x, of which has now been fixed upstream.
  They've now since been reverted.
2024-09-21 00:03:52 -04:00
d1622eb0b4
Revised error handling and some cleanup
- `fatal()` function for handling the termination of the program when a
  fatal human-readable error digestable error occurs. This function
  terminates the program and will never return a value.
- Much like the aforementioned function, the `error()` function now
  prints the error and terminates the program, instead of printing the
  error and returning the error code as an i32 integer.
- ErrorType enum implemented as an encapsulate to delineate error type.
- Display trait implemented for ErrorType enum for use cases whereby
  the program being terminated is inconvenient for the given code path.
- `generic()` function added to GenericError trait for handling errors
  of which do not require a message to be prepended.
- Global configuration is now statically cached with OnceLock instead of
  lazy_static, and is loaded on-demand instead of during the invocation
  of the `init()` function from the init module upon program startup.
- Use of lazy_static was also eliminated in pacwrap-core's sync module.
2024-09-19 23:19:26 -04:00
e25d807bd7
Debug logging for transaction state and all clippy warnings fixed 2024-09-17 18:52:43 -04:00
7234f89202
Release 0.8.5 2024-09-14 21:15:59 -04:00
2819f5d216
--debug to trigger logging verbosity
- Logging verbosity triggered by `--debug` command-line option.
- Implemented callback function for libalpm's logging callback.
- Increased TransactionFlags to 16 bits from 8 bits to accomodate the
  bitlength required for additional transaction flags.
2024-09-11 22:20:55 -04:00
c75c26eb48
Support libalpm 15 via alpm-rs 4.0.0
- exec.rs: Remove libfakeroot.so from LD_PRELOAD environment variable set
  in the transaction_agent function, when creating the ephemeral
  container with bubblewrap utilised for sandboxed transactions.
- Update Cargo.lock
- Cargo.toml: Change alpm-rs 3.0.5 to 4.0.0
2024-09-09 23:04:22 -04:00
e988b90c11
Release 0.8.4 2024-06-14 17:31:52 -04:00
9e979ab0b1
Corrected typo of command-line-utilities category slug 2024-06-07 19:02:29 -04:00
64b9d96ea5
Release 0.8.3 2024-06-07 18:54:26 -04:00
2a2c3cd3dc
Agent error handling and initialize trustdb during composition
- Initialize gnupg database during container composition
- Handle exit code 1 of agent as a general failure and changed resulting
  verbiage to 'general agent fault'. Shifted error codes up by one.
- Check if FD 1 is a terminal for colour detection in pacwrap-key
2024-05-31 17:30:55 -04:00
45d9376ab0
Release 0.8.2 2024-05-21 19:04:37 -04:00
c86d24c5a8
Cleaned up directory-acquisition functions and tidyed up agent
- Added expect call in procfs() in the ever unlikely scenario the Linux
  kernel fails to return a UTF-8 string. If this were to happen, it'd
  mean something had gone horribly wrong; either a bug in the kernel, or
  memory corruption as a result of faulty hardware.
- Reference version data from constants in agent.rs
2024-05-09 20:48:06 -04:00
d8a81436a1
Release 0.8.1 2024-04-24 18:00:28 -04:00
f7f603f37f
Attribution Update 2024-04-24 17:58:24 -04:00
5c3b9bdd5d
Attribution update 2024-04-19 18:41:29 -04:00
4a0e9cd3f9 Release 0.8.0 2024-03-30 22:59:39 -04:00
0aa14b23bc Lock file to ensure no concurrent operations on container store
- lock module provides a lock file facility via the Lock impl to ensure
  conflicts do not occur with concurrent operations on the same pacwrap
  data directory and container store.
- pacwrap-signal thread spawned during aggregate transactions to provide
  graceful, forced signal trapping. Requires three iterations of a normal
  signal to forcibly quit the program.
- metadata getter and flags setter functions moved out of TransactionHandle
  into the TransactionMetadata impl
2024-03-24 20:55:09 -04:00
dd5d011bfa Signal trapping at safe break points during transactions
- Graceful signal handling for transaction aggregation and filesystem
  synchronization.
- Store filesystem state data in .new file and merge after completion
- Altered set_flags function signature to borrow TransFlag
- Qualify error type before attempting to extract error data from alpm
  after failed transaction. Alpm.rs can trigger a segfault if the error
  type is unhandled or the data is otherwise not present.
2024-03-21 23:27:04 -04:00
777906ae71 Release transaction on error 2024-03-19 03:36:34 -04:00
b621c34cd0 Alpm.rs 3.0.5 compatibility 2024-03-15 18:07:54 -04:00
23d87b1581 Deprecated code removed, and pacwrap-key argument validation fix 2024-02-23 02:16:34 -05:00
96b589a55d Release 0.7.2 -- Bug fix release 2024-02-13 16:11:23 -05:00
32f09e5ba0 Release 0.7.1 - Minor fixes and additions with revised documentation 2024-02-12 23:30:15 -05:00
6ad47202ff Release 0.7.0 -- First Public Release Build 2024-02-12 00:27:41 -05:00
482abd7f9e Held packages, some last-minute errata fixed
- Changed DSL storage location from ~/.config/pacwrap/instance/ to
  ~/.config/pacwrap/container/
- In the progress.rs module, discard held reference once progress
  is complete.
- Package holding implemented
- Logical errors fixed in foreign preparation state
- Version URLs updated in manual.rs
2024-02-12 00:27:41 -05:00
cfa96f4858 Release 0.6.4 - Fixes to three regressions
- Filesystem synchronization module now rewinds buffer after initial
  header check
- Logical error in link deletion fixed. Orphaned symbolic links now get
  deleted.
- During the staging state of a transaction, the ordering of
  archlinux-keyring in the queue could fail to trigger a refresh of the
  master keyring.
2024-01-29 02:22:28 -05:00
72ed4d8720 Release 0.6.3 -- fixed progress bar 2024-01-25 01:03:24 -05:00
a7cf9e9be1 Release 0.6.2
- Bugfix applied for aggregated package filtering
2024-01-22 11:31:31 -05:00
0e19e7da8a Release 0.6.1 -- Minor bug fixes
- Download progress parameterisation fixed
- Build scripts now create missing directories
- Cargo.lock updated
2024-01-22 00:17:30 -05:00
c3534cae7f Configuration bug patched, with unnecessary static allocation removed. 2024-01-21 23:40:03 -05:00
ff70ac644b Release 0.6.0
Highlights:

- Container configuration file format changes from SCREAMING_SNAKE to
  snake_case, permissions tag renamed to module, and container types
  are now: Symbolic, Base, Slice, and Aggregate.
- to_root and to_home modules updated to provide a more straightforward
  way to declare mount paths.
- seccomp bpf filters are now compiled and applied to containers by
  default at runtime.
  This also applies to transaction and fakeroot environments.
- Integration of global configuration format
- Now able to initialize in a fresh home directory without intervention
- Source code is now formatted by rustfmt
2024-01-14 21:04:46 -05:00
9b495390d2 Structural simplification, rustfmt configuration applied, and snake_case
for declared modules within tag vars

- For the sake of coherency, there are now four types of containers:
  Symbolic, Base, Slice, and Aggregate. These names better reflect the
  associated container types.
- Global configuration template is now written to disk prior to
  instantiation
- Inclusion of .rustfmt.toml with formatting applied to source files
- Breaking format change: SCREAMING_CASE has been replaced with
  snake_case for tag variables
- Simplified data structure in cache module
- InstanceCache type within the cache module replaces 'registered_base',
  'registered_dep', and 'registered_root', with 'filter'.
- Cleaned up argument parsing match statements in the front-end modules.
- Specifying dependencies with a comma deliniation is now supported
- Manual updated to reflect argument changes.
- query module updated to utilise internal APIs
- Some minor improvements to error handling.
- Removed redundant calls to --clear-env with bubblewrap.
- Scripting no longer outputs ANSI charcodes to unsupported terminals
2024-01-14 20:51:57 -05:00
3b5951cea6 GPG keystore initialization, reimplemented progress event modules,
additions to global configuration module, and bug fixes.

- Progress verbosity option for progress indicators
- Logging verbsoity option for future implementation of logging
  infrastructure
- Small addendum to cache API, with get_instance providing a Result enum
- Validate the program is running under a non-privileged user upon
  front-end invocation
2024-01-10 17:31:43 -05:00
04a267c6d0 Panic if build is attempted on unsupported operating environment 2024-01-07 02:37:59 -05:00
29ca143ca4 Implemented global configuration, preliminary package ignore list, with
further integration of error-handling framework.

- Cleaned up imports and other miscellaenous tidying up.
2024-01-07 02:32:03 -05:00
7ed366f809 Inclusion of GPL headers to declare copyright and licensing
- LICENSE has been included since the incarnation of this project,
  therefore nothing changes except providing prominent notice.
- Cleaned up distribution scripting, with inclusion of updated headers
2024-01-03 18:21:04 -05:00
be8a7bfcb2 Error handling framework integrated into core library and other
miscellaneous changes

- Enum encapsulation for Error types within the scope of this crate no
  longer occurs.
- err!, error!, and error_impl!, macros to conceal boilerplate.
- Custom PATH variables are now validated and passed through to
  containers
- Environmental constants refactored and moved to the constants module
- Error type implemented for agent
- ConfigNotFound type implemented in ConfigError
2023-12-31 02:13:07 -05:00
55a1c8ad0d Release 0.5.3 2023-12-27 02:08:11 -05:00
dc7363d02e Release 0.5.2 - Distribution packaging changes
- To help establish reproducible builds, the expectation is that every
  packaged artefact is to be determinist. Therefore repose is now
  invoked with pacwrap-dist.install via the post_install hook
- SOURCE_DATE_EPOCH is now set when building distribution packages
- Fixed libalpm hook blacklist in pacwrap-base-dist
2023-12-26 18:55:22 -05:00
7cea3be485 Release 0.5.1
- Fixed bug with the instantiation of container configuration predicated
  by an order mismatch with variables passed into Instance::new().
2023-12-24 21:14:41 -05:00
6740ed3b93 Release 0.5.0 2023-12-24 00:33:39 -05:00
9a4c3da814 Decluttered and splintered build scripts, some organization and readmes 2023-12-23 23:10:55 -05:00
b84f90d17d Ciborium replaced with bincode, and pacwrap-agent attained UX parity
- Refactored libalpm events into their own module
 - Agent parameters are acquired via a temporary file attached to the
   container (Still TODO: Provide a shared communication channel)
 - filesystem state files now contain magic values with file header
   verification
 - Miscellaneous tidy up work
2023-12-23 23:00:31 -05:00
d5977e43b9 Type coherence and API simplification 2023-12-21 01:25:20 -05:00
fe5aa4741b Refactored function name from parse to populate in arguments module 2023-12-01 20:28:34 -05:00
728185d960 Improved error handling and further type optimisation
- Moved config registration to core library
- Improved trait structure for filesystem configuration
- constants module cleaned up
2023-11-28 13:20:51 -05:00