| Age | Commit message (Collapse) | Author |
|
Avoid bogus warning about new upstream version when /usr/bin/propellor is
run on a Debian system, but ~/.propellor was not cloned from the Debian git
bundle.
|
|
|
|
Added Propellor.Property.Installer modules, which can be used to create
bootable installer disk images, which then run propellor to install a
system.
This code was extracted from the demo I gave at my talk at DebConf 2017,
from the secret-project repository. That repository was AGPL licensed.
I hereby relicense the code committed here under the same 2-clause BSD
license as the rest of propellor.
Changes from secret-project: Generalized UserInput to a type class,
and added a lot more documentation and examples.
This commit was sponsored by Brock Spratlen on Patreon.
|
|
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
|
|
This is to support eg, coreboot. The GrubTarget passed to Grub.installed
is introspected to determine --target. If multiple grubs are installed,
it currently doesn't pass any --target. Might make more sense to run
grub-install repeatedly, but I don't know if that case is sane at all.
The Xen -> "x86_64-xen" mapping is kind of arbitrarily
chosen since there's a i386-xen available too. I don't know when that
case would be used in any case though; chainPVGrub uses installed Xen,
but it does not run grub-install. If this does become a problem,
would probably need to split it into Xen64 and Xen32.
Renamed BIOS to GrubTarget in passing to match grub's terminology; BIOS was
kind of a joke term for this in propellor.
This commit was sponsored by Francois Marier on Patreon.
|
|
* DiskImage: Fix rsync crash when a mount point does not exist in the
chroot.
* Fix bug in unmountBelow that caused unmounting of nested mounts to
fail.
This commit was sponsored by Jack Hill on Patreon.
|
|
Cheap flash drives need partitions aligned to 4 MiB in order to not be slow
(and to avoid extra writes). <https://lwn.net/Articles/428584/>
And at least 1 MiB alignment is generally a good idea, and most people
seem to think 4 MiB is for all drives.
I noticed that Parted.partitioned does not do that; the first
partition started at an offset of 1 MB, and subsequent partitions
from where it ends. (The 1 MB offset came from the PartedVal PartSize
instance, and note that it was not 1 MiB.)
* Parted: Add an Alignment parameter. (API change)
A good default to use is safeAlignment, which is 4MiB,
well suited for inexpensive flash drives, and fine for other disks too.
Previously, a very non-optimial 1MB (not 1MiB) alignment had been used.
* DiskImage: Use safeAlignment. It didn't seem worth making the
alignment configurable here.
Alignment is implemented by offsetting the first partition's start
position so it's aligned (making sure to leave room for the partition
table). Each partition is then extended as needed so the next partition
will start properly aligned.
Note that parted rejects partition tables that don't fit in cylinder
bounderies. Before, propellor let parted deal with the fine details
of layout, so that was not a problem. Now it's possible to set some
wacky Alignment not divisible by 512, or use Byte sizes for partitions
and create a partition table that parted rejects. But, using
safeAlignment and MegaBytes should always be safe.
Also, this fixes a rounding bug in Parted.calcPartTable.
It was rounding up to the nearest MegaByte when allocating remaining
disk space, so returned partition table that was actually larger than
the disk size.
This commit was sponsored by an anonymous bitcoiner.
|
|
Use "fat32" for both; these are not distinguished at the partition table
level.
This commit was sponsored by Henrik Riomar on Patreon.
|
|
Avoid needing to --spin host deployed from disk image to let its propellor
access its privdata.
This commit was sponsored by Boyd Stephen Smith Jr. on Patreon.
|
|
|
|
|
|
|
|
sbuild-overhaul
|
|
|
|
Diskimage.imageBuiltFor: New property to build a disk image for a Host,
using partition table information configured via the new properties
hasPartitionTableType, hasPartition and adjustPartition.
This lets Machine properties include eg /boot partitions that are known to
be needed by the bootloader, and the user can adjust those partitions and
add others.
This commit was sponsored by Brock Spratlen on Patreon.
|
|
sbuild-overhaul
|
|
|
|
Reconsidered making services never run inside chroots, that seemed too
potentially limiting.
Using Info rather than checking policy-rc.d because it will also work
outside of debian, but more because policy-rc.d has an extremely
complicated interface and I didn't want to deal with it.
This commit was sponsored by Jochen Bartl on Patreon.
|
|
|
|
Service: Changed to use invoke-rc.d rather than service for starting
services. This notably means that in chroots, services will not be started.
This seems like the right thing to do, because running services inside
a chroot is problimatic. Use a real container system for running services.
Fixes the problem that, when building a disk image, using eg,
Apt.servicesInstalledRunning caused the service to be started in the
chroot, even though a policy-rc.d was in place to prevent it, because the
"service" command does not check policy-rc.d.
This commit was sponsored by John Peloquin on Patreon.
|
|
Installing u-boot to the boot sector is not needed by some boards
(my CubieTruck boots without it), but may be by others.
Tricky part was making u-boot be written to a disk image when building one.
This commit was sponsored by Jake Vosloo on Patreon.
|
|
Machine-specific properties for ARM boards are being collected here
See http://linux-sunxi.org/Mainline_Debian_HowTo and
https://wiki.debian.org/InstallingDebianOn/Allwinner
and https://wiki.debian.org/DebianKernel/ARMMP
Currently has 2 arm boards that I use.
This commit was sponsored by Anthony DeRobertis on Patreon.
|
|
Can be used to create disk images for arm boards using flash-kernel.
This commit was sponsored by Ewen McNeill.
|
|
This commit was sponsored by Ethan Aubin.
|
|
|
|
|
|
|
|
|
|
This fixes a bug involving reverting Systemd.resolvConfed or
Systemd.linkJournal.
addInfo was prepending to the list for efficiency. But, that was in
conflict with mappend of two Info, which appended the second to the first.
In the case where Systemd.resolvConfed was added reverted, to override the
one added by default, that led to a list of info that had first the
reversion and then the default, so the default won. Which was wrong.
So, make addInfo accumulate in the same order mappend combines things, even
though it's a little less efficient. The efficiency probably does not
matter; there is not typically a whole lot of info.
There's some risk this change has unexpected consequences, if something
relied on the old addInfo order without using fromInfo to access to info.
But if so, that something would have been broken before when two Info
properties were combined. With this change, it would just be broken the
other way around.
This commit was sponsored by Jochen Bartl on Patreon.
|
|
|
|
|
|
* Made the PropellorRepo.hasOriginUrl property override the repository
url that --spin passes to a host.
* PropellorRepo.hasOriginUrl type changed to include HasInfo. (API change)
This commit was sponsored by Jake Vosloo on Patreon.
|
|
propellor currently still embeds concurrent-output, so the debian
package does not need to depend on the library.
|
|
* When the ipv4 and ipv6 properties are used with a container, avoid
propagating the address out to the host.
* DnsInfo has been replaced with DnsInfoPropagated and
DnsInfoUnpropagated. (API change)
* Code that used fromDnsInfo . fromInfo changes to use getDnsInfo.
* addDNS takes an additional Bool parameter to control whether
the DNS info should propagate out of containers. (API change)
This commit was sponsored by Trenton Cronholm on Patreon.
|
|
|
|
|
|
|
|
|
|
|
|
* Borg: Converted BorgRepo from a String alias to a data type.
(API change)
* Borg: Allow specifying ssh private key to use when accessing a borg
repo by using the BorgRepoUsing constructor with UseSshKey.
This commit was sponsored by Jeff Goeke-Smith on Patreon.
|
|
getInstallStatus returns [] when passed only such packages,
and all of that list == IsInstalled. So also check that the list contains
every package queried.
|
|
|
|
|
|
Didn't see this one fail, or test this, but it had exactly the same code as
borg.
|
|
|
|
* DiskImage: Made a DiskImage type class, so that different disk image
formats can be implemented. The properties in this module can generate
any type that is a member of DiskImage. (API change)
(To convert existing configs, convert the filename of the disk image
to RawDiskImage filename.)
* Removed DiskImage.vmdkBuiltFor property. (API change)
Instead, use VirtualBoxPointer in the property that creates the disk
image.
This commit was sponsored by Jack Hill on Patreon.
|
|
|
|
ghc. (Previous attempt was incomplete.)
|
|
|
|
|