Commit graph

328 commits

Author SHA1 Message Date
b2ebfe7269 Inclusion of pacwrap-key, some container schema fixes
- Inclusion of pacwrap-key, a fork of pacman-key, adapted for use with
   pacwrap and associated containers. CLI is now reminiscent of pacwrap's
   own native CLI for clean integration.
 - Removed problematic /etc/bash.bashrc fakeroot mount supplanted by
   schema update to /etc/bash.bashrc
 - Inclusion of pacwrap-key with container schema
 - Build and integration scripting cleaned up with improved error handling
2024-02-16 18:17:35 -05:00
62816ddef8 Net column now displays negative values, spacing adjusted for IEC units 2024-02-16 16:33:37 -05:00
96b589a55d Release 0.7.2 -- Bug fix release 2024-02-13 16:11:23 -05:00
fd45a75584 Args parsing consistency as well as scope fix
- Target acquisition logic is now consistent between sync and remove
  module
- Positional scope corrected for package argument acquisition
2024-02-13 16:00:20 -05:00
82a3159b7b Fixed incorrect directory initialization path 2024-02-13 15:47:50 -05:00
32f09e5ba0 Release 0.7.1 - Minor fixes and additions with revised documentation 2024-02-12 23:30:15 -05:00
8e5d9538f4 Updated docs/README.md 2024-02-12 23:28:01 -05:00
deb0000fb0 Some errata fixed, typos, and path updated in bin/pacwrap-common
- Handle rewind I/O error properly by returning blank state in
  filesystem.rs module
- Upon initialization of container, setup default timezone.
- Corrected path to new configuration location in pacwrap-common script
- Updated definition for --force-foreign in manual.rs module
- Patched erroneously unbracketed conditional in proc.rs module
2024-02-12 23:26:58 -05:00
7d9fcfaf70 Workaround for cargo publish 2024-02-12 03:18:31 -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
9a10de46d7 Documentation, tidy up, and some errata fixed
- proc module now has --all option for process lists
- Switched to IEC units for transaction summaries
- Display bug fixed with basic transaction summary
- Removed symbolic container creation from pacwrap-utils script
- Seperation of concerns with warnings in exec module
- Getting started documentation for new users
- Refactored ExecutionArgs struct in args module
- Addition of a new manual: docs/config.md
- Updated docs/manual.md to reflect present help manual
- Help documents can be accessed with command nouns.
- Comment out multilib repo in default repositories.conf file
- Remove pacwrap-base-dist from default pacwrap.yml hold_pkgs array
- Default configuration files included can be changed at build time with
  PACWRAP_DIST_CONF and PACWRAP_DIST_REPO_CONF environment variables.
2024-02-12 00:27:36 -05:00
a63871a382 Logging verbosity, manual updates, and some refactoring 2024-02-12 00:07:20 -05:00
02bcde6bbe Container filesystem schema replacing local repository 2024-02-12 00:07:20 -05:00
e0f5386b88 Executable front-end refactor, a few bug fixes, and UX improvements
- Improvements to the runtime environment allowing for shell access in
  filesystem slices.
- Command-line verbs to improve UX accessibility
- Bloat moved out of error module
2024-02-12 00:06:52 -05:00
cb276ccb32 Summary event module for transaction preview and commit
- Table module updated with insert_newline, and new_line builder function
- ColumnAttribute enum introduced for alignment and truncation options.
- SummaryKind tied into global configuration
- Process table now aligns PID to the right.
2024-01-29 02:23:08 -05:00
46807df79f Process utility with CLI table generator 2024-01-29 02:23:08 -05:00
7b69deccf0 Typo in manual 2024-01-29 02:23:08 -05:00
210f3b9b26 Re-ordered InstanceRuntime struct 2024-01-29 02:23:08 -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
1913200df6 Fixed two regressions in the filesystem module and one in the stage
module
2024-01-29 02:07:13 -05:00
72ed4d8720 Release 0.6.3 -- fixed progress bar 2024-01-25 01:03:24 -05:00
bcfa7e5709 Progress event supporting concurrency 2024-01-25 01:03:09 -05:00
a7cf9e9be1 Release 0.6.2
- Bugfix applied for aggregated package filtering
2024-01-22 11:31:31 -05:00
f5bbb0827f Bugfix as a partial revision to b84f90d17d 2024-01-22 09:48:29 -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
8998fd4839 Applied 9b495390d2 2024-01-14 21:40:15 -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
fa9de91330 Implemented foreign package removal with --force-foreign and some fixes.
- Front-end remove module now checks if target instance exists
- BASE type containers will no longer sync foreign packages, even if
  dependency metadata is present.
2024-01-07 21:44:22 -05:00
8f99fd468e Implemented UID&GID check to prevent privileged execution. 2024-01-07 02:44:55 -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
6dc266edbd Removal of debugging code 2024-01-04 20:57:20 -05:00
c9cb0511e7 Typo in function name 2024-01-03 19:39:17 -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
7cadcaba6d Seccomp BPF filtering module with libseccomp bindings and fixes
- Fixed bug with LANG constant purposefully introduced to test error
  handling
- Integrated termcontrol with new error handling model
- Moved bwrap_json function to pacwrap-core library
2024-01-03 18:04:24 -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
9f85d3dcee Desugaring of calls to dependencies() and explicit_packages() 2023-12-28 17:40:40 -05:00
8988986e91 Pre-emptive update to copyright year and clarification of license verbiage 2023-12-27 02:50:24 -05:00
55a1c8ad0d Release 0.5.3 2023-12-27 02:08:11 -05:00
da113e8824 Some bug fixes, and some tidying up.
- Since pacwrap-dist is now being executed within a containerised
  environment, when called upon by the associated libalpm hook, it is no
  longer at liberty to obtain a valid GID and UID with libfakechroot
  preloaded in memory. Thus the introduction of a set of proxy variables
  is required to pass a valid UID and GID to distribution scripting.
- Environment variables have been moved to the constant module out of
  the display permissions module and exec utils module.
- Utilty functions in the utils module tidied up.
2023-12-27 02:07:47 -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
f3b2b3861d Redundant 2023-12-23 20:00:47 -05:00