History log of /haiku/src/apps/installer/WorkerThread.cpp
Revision Date Author Comments
# e3d59047 10-Sep-2022 PulkoMandy <pulkomandy@pulkomandy.tk>

Disk Device Manager: generate a name for nameless volumes

This will give the same result as fs_stat_dev, so the filesystems will
have the same name everywhere.

Change-Id: Ic684142efaeb2c16b393f3f3e5c9c3010a054b30
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5636
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# 2c6b14c0 23-Jul-2021 Jessica Hamilton <jessica.l.hamilton@gmail.com>

Installer: ensure the package administrative path exists

Fixes #16984

Change-Id: Ia662147395130be4498eefbe11f5351533c88ff2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4242
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 3376ed1a 02-Feb-2021 Alexander G. M. Smith <agmsmith@ncf.ca>

Package Kit: Proper Installation for First Boot Packages

Do the final installation operations for all the packages in the
/system/packages directory when the OS is booted for the first time.

This will run their post-install scripts, create users, groups and generate
settings files (marked with a package version attribute). Previously we just
ran all the shell scripts found in the /system/boot/post-install directory
(don't do that as much now).

Fixes bug #14382

This patch has simpler code flow in CommitTransactionHandler::_ApplyChanges
Tested on 32 and 64 bit systems. Once it's official, need to remove the
open_ssh redundant post-install script that creates users etc. from HaikuPorts.
Now we can notice bugs like package version attributes on settings files aren't
fully working. :-)

Didn't remove special case for add_catalog_entry_attributes.sh since it
still does stuff that the build system doesn't do. Might be able to add
that script as part of the Haiku.hpkg. See change 3751 for removing it,
https://review.haiku-os.org/c/haiku/+/3751

Change-Id: I3807b78042fdb70e5a79eca2e2a45816ece0236f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2342
Reviewed-by: Alexander G. M. Smith <agmsmith@ncf.ca>
Reviewed-by: Niels Sascha Reedijk <niels.reedijk@gmail.com>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 9d84226f 23-Nov-2020 Humdinger <humdingerb@gmail.com>

Installer: Improved alert text, consistent use of "Haiku User Guide"

Point specifically to the SoftwareUpdater topic of the Haiku User Guide
to make the hint more useful.

Always use consistent spelling: "Haiku User Guide"

Translated the German User Guide package info.

Change-Id: I8f3b2a5a3f27caf9b5eea41a1a7a86c2e91e668a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3412
Reviewed-by: Niels Sascha Reedijk <niels.reedijk@gmail.com>


# dfb36b35 08-Aug-2020 Niels Sascha Reedijk <niels.reedijk@gmail.com>

Installer: fix 'clean install' over existing installation.

Whenever the target of an installation is a partition that is not empty, the
Installer prompts the user whether they would like to continue with a 'clean
installation', i.e. an installation that clears out the system folder,
excluding the settings, and cleanly installs the assets in the source's
system folder. At all other locations the source data is merged, meaning that
the source version is copied in place.

The logic that clears out the existing /system/ directory stopped working. This
change moves that logic from the copying process, to where it is run before any
file is copied. The added advantage is that the system folder is now properly
cleaned up, also stray files under the system folder will be removed.

This change does not change the logic of what constitutes a 'clean install'.
There are arguments to be made that it should potentially also drop the
settings files, as well as clean out the user's home folder for stray
add-ons, but that really is different functionality, and at this points I
think the requirements for that are not yet fleshed out.

The change was manually tested.

Fixes #16092

Change-Id: Ia6781c8d2330ba336b3921f9a980b5e31c48a2ec
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3140
Reviewed-by: Andrew Lindesay <apl@lindesay.co.nz>


# 3f7f9896 08-Aug-2020 Niels Sascha Reedijk <niels.reedijk@gmail.com>

Installer: Remove `level` parameter from CopyEngine

The level parameter in the CopyEngine::CollectCopyInfo() and
CopyEngine::Copy() methods was introduced in hrev30395 to allow the CopyEngine
to decide which directories should be copied. Since then, this
class has been rewritten and it is no longer necessary for that purpose.

This change refactors the CopyEngine and removes the
level parameter from the class interface. Furthermore, it was broken to begin
with; it was passed as reference to the internal recursive _Copy() and
_CollectCopyInfo() methods, meaning they acted like a global counter. The
global counter was increased at the beginning and decreased at the end of those
methods. Execution could terminate early though, leaving the level counter out
of sync with the recursion level.

There is one use of the level parameter, namely in the
WorkerThread::EntryFilter::ShouldClobberFolder() method, but the use of the
parameter was wrong (it would have been at level 3 at the point of the check,
not level 2) and the logic is functional without the level check.
Change-Id: Id92ef89b015e9b1185bde061273f61e492664bce
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3139
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>


# 2c09e0dc 04-Aug-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

Installer: separate writing bootsector from other install finishing code

Remove the InstallerInitScript (it does nothing) and the
InstallerFinishScript (it does too many things). Instead implement the
finishing directly in Installer. Separate writing the bootsector, so
that the "write bootsector" menu writes only the bootsector.

Fixes #16303


# bbd39960 14-Jun-2020 Humdinger <humdingerb@gmail.com>

Installer: make alert text clearer

* Put 'settings' folder in quotes, just like 'system'.

* Break down the very long sentence.

* The "its" in "...will retain its settings folder" refers to the
source folder, when it's actually the target that is kept.

* 'whereas' isn't the right word IMO, as the following text is more
an explanation what 'merging' entails.

Change-Id: Iae2f1768fdf897b4c6ffb02be6800fdd85e2cde8
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2919
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# f1e5a6c9 21-Mar-2020 Leorize <leorize+oss@disroot.org>

Installer: supports installing .hpkg-based optional packages

Most of Installer was designed for old-style optional packages (files in
a folder that's copied to the target volume). This commit modifies
Installer so that it can process and install .hpkg packages.

Change-Id: Ib7d69a04ccb7879b956b5c3f0df1241c56e4987d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2400
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# bf551d38 21-Mar-2020 Leorize <leorize+oss@disroot.org>

installer/CopyEngine: now only exposes a Copy() method

Previously this class exposes two methods:
- CopyFile(): only copy the file data, nothing else.
- CopyFolder(): copy files & directories between two folders, while
preserving the attributes as well as symlinks.

With this commit, everything is unified into one method: Copy(). This
method can handle files, directories, symlinks and optionally also copy
attributes. Since most of the logic was just moved around, we can be
rather certain that this won't disrupt CopyEngine behaviors by much.

In the future we should look into using BCopyEngine to replace the
copying part of CopyEngine, as they seems to be compatible.

This change allows the Installer to make use of CopyEngine as a
general-purpose copier, in preparation for optional .hpkg installation
support.

Change-Id: Iad5ba2ebc9f34b7822e550b415308fd2b43eed47
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2399
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# fdc13d7d 02-Feb-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

Installer: do not allow installing to read-only partitions.

This would probably not work, right?

Fixes #14614.


# 0156f4ff 11-Nov-2019 Adrien Destugues <pulkomandy@pulkomandy.tk>

Revert "Installer: Ignore cache directories."

This reverts commit e06f64086224dda0e36704045448844f7376dafd.

As mentionned in #15145, the cache directory itself must exist,
otherwise, various applications are broken. A slow install process is
better than a broken install, so, revert for now. A better solution
needs to be found.


# 7ba58efd 13-Sep-2019 Augustin Cavalier <waddlesplash@gmail.com>

Installer: Skip block, character, FIFO, and socket devices/files.

Fixes #15019.


# e06f6408 13-Jul-2019 Augustin Cavalier <waddlesplash@gmail.com>

Installer: Ignore cache directories.

Fixes #15145.


# a99aa113 15-Dec-2018 Augustin Cavalier <waddlesplash@gmail.com>

Installer: Check return value of system() calls.

Solves a TODO.


# 72fa4a2e 15-Dec-2018 Augustin Cavalier <waddlesplash@gmail.com>

Installer: Check return value of GetMountPoint.

Probably fixes #14586 (NULL dereference in the strcmp on the next line)
but I couldn't quite manage to reproduce it.


# cb3445aa 27-Mar-2018 Kim Brown <kimb18h@gmail.com>

Installer: WorkerThread: Add syslog to ignored paths

A new install should start with an empty syslog. Adding
the syslog path to the set of ignored paths will prevent
an existing syslog file from being copied into the new
install.

Fixes #8373
Change-Id: I79ecf95773a34360185d38ee4ef0c8337b062e7a


# 5061f35c 14-Sep-2014 Axel Dörfler <axeld@pinc-software.de>

Installer: don't replace system/settings.

* Instead of removing "system" in the target completely, only
replace all of its subfolders.
* The downside of the current solution is that extra files, and
directories in "system" will not be removed. Improvements
welcome.


# 3aeed660 07-Aug-2014 Jérôme Duval <jerome.duval@gmail.com>

include strings.h where appriopriate...

instead or additionally to string.h, in preparation for functions move.
* moves str[n]casecmp() functions and others to strings.h.
* strings.h doesn't include string.h anymore.
* this solves #10949


# f73f5d4c 29-Sep-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Initial changes to remove /boot/common

* find_directory() and hard-coded paths use /boot/system instead of
/boot/common.
* The build system creates the writable directories in /boot/system
instead of /boot/common.
* The build system no longer installs any packages in /boot/common.


# 6c36ad16 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: Restrict entry filter to files from the BFS volume

We generally want to skip the contents of the packagefs volumes (save
for the shine-through directories). That makes Installer usable again.
In what direction we want to develop it (e.g. integrate some PM support,
so that a subset of packages can be selected) needs further discussion.


# f4953ba5 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: WorkerThread::EntryFilter: Use path map

... instead of implicit comparisons.


# ba6f7c8c 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: CopyEngine: Pass relative path to EntryFilter

... instead of the file name.


# 348d9eac 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: WorkerThread: Remove InstallerWindow dependency

* Move message constants to InstallerDefs.h.
* Determine the source and target partition ID already in
InstallerWindow and pass those to WorkerThread instead of fiddling
with menu items in _PerformInstall(). And instead of the window object
pass a messenger to the constructor.


# e8eb6ae2 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: WorkerThread::_PerformInstall(): get rid of goto


# c2be967e 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: CopyEngine: Externalize decision making

* Add interface EntryFilter, an instance of which can be passed to the
CopyEngine. The object is asked whether to copy entries/clobber
directories.
* Move the _ShouldCopyEntry()/_ShouldClobberFolder() code to new
WorkerThread::EntryFilter.


# fb5f0bb1 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: Move path string constants to new InstallerDefs.h/cpp


# aed35104 05-Aug-2012 Humdinger <humdingerb@gmail.com>

Close alerts with ESCAPE key.

Added SetFlags(B_CLOSE_ON_ESCAPE) or SetShortcut(index, B_ESCAPE) to BAlerts
depending if the result gets used later in the code, or if it's a one-button
BAlert.


# 546208a5 16-Apr-2012 Oliver Tappe <zooey@hirschkaefer.de>

More catalog-related cleanup.

* rename B_TRANSLATE_CONTEXT to B_TRANSLATION_CONTEXT and
B_TRANSLATE_WITH_CONTEXT to B_TRANSLATE_CONTEXT, squashing a TODO
* adjust all uses of both macros in Haiku's source tree
* use correct header guard for collecting/Catalog.h

The renamed macros require adjustments to all external applications
using catalogs.


# 0891b95e 02-Jan-2012 Philippe Saint-Pierre <stpere@gmail.com>

Installer: Resource leak fix (CID 10693).


# 670fbd13 06-Mar-2011 Stephan Aßmus <superstippi@gmx.de>

Typo fixed and debug left-over removed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40837 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 45739d5d 06-Mar-2011 Stephan Aßmus <superstippi@gmx.de>

* Added creation of default indices, as are currently present on regular Haiku
volumes. I've decided not to put this into InstallerInitScript, as I reckon
the script is to customize the installation process more than to be a critical
part of the process.
* Make mirroring the existing indices onto the target volume ignore more errors.
This should be the final fix for ticket #7320.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40836 a95241bf-73f2-0310-859d-f6bbb57e9c96


# df4e063a 05-Mar-2011 Stephan Aßmus <superstippi@gmx.de>

Of course I did not get this right on first try... the targetDevice
was taken from sourceDirectory, and fs_read_index_dir does not set
errno when returning NULL (i.e. no more index entry), which resulted
in the logic to think an error happened, but it only carried over from
fs_create_index() when the index already existed. I think lsindex
needs to be fixed as well, since it checks errno after
fs_read_index_dir(). In case fs_read_index_dir() is supposed to set
errno, it should reset it internally before it's possible to encounter
any error.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40820 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a2dc49b5 05-Mar-2011 Stephan Aßmus <superstippi@gmx.de>

* Mirror all the indices from the source volume to the target volume.
Note that it would have been an option to invoke mkindex, which has
a similar mirroring option, in the InstallerInitScript, but I favor
making Installer depend on as few external tools as possible.
* Very small cleanup in _PerformInstall(). It should be broken up more
into individual methods.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40816 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 07267c20 07-Feb-2011 Philippe Houdoin <philippe.houdoin@gmail.com>

Remove left-over debug code.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40372 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7c2c003f 07-Feb-2011 Philippe Houdoin <philippe.houdoin@gmail.com>

Boot partition is not a valid target either, at least not until
installing on it don't leads to warranted crash...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40371 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 814fddc8 13-Sep-2010 Rene Gollent <anevilyak@gmail.com>

Patch by diver: increase the size of the buffer used to format the partition size, since it's insufficient for some languages. Resolves #6603. Thanks!



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38647 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5421c7d6 20-Jul-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Fix all localized applications, as an include was missing in some of them
* dstcheck : the generated catalog is now 'dstcheck.catkeys' instead of 'en.catkeys', so that it does not conflict with
other localized apps in the bin/ folder.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37617 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4eb0cbb0 07-May-2010 Matt Madia <mattmadia@gmail.com>

Updated TR_CONTEXT to be B_TRANSLATE_CONTEXT, relating to #5408.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36733 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e904ecc9 06-May-2010 Matt Madia <mattmadia@gmail.com>

Updated to use B_TRANSLATE* macros. relates to #5408.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36667 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7f78035b 25-Apr-2010 Jérôme Duval <korli@users.berlios.de>

Should fix #5806. CollectTargets() is also called for packages, the fVarDirectory init is moved to ResetTargets().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36475 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 523f15a9 04-Apr-2010 Jonas Sundström <jonas@kirilla.com>

Misspelling, reported by eml.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36031 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 48d79657 23-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

* Moved the duplicate "string_for_size()" implementations into libshared.a.
* Adapted libtracker.so, DriveSetup and Installer to use the shared version.
* The new version uses the correct units (KiB instead of KB and so on).
* Use the correct units in a few other prominent places, where
string_for_size() could not be used.

Should resolve a major part of #5378.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35935 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4a2da425 20-Jan-2010 Stephan Aßmus <superstippi@gmx.de>

* Applied localization to the Installer.
* Some coding style fixes along the way.
* Added German translation.

NOTE: The Installer will have to offer a way to change the current locale! So
any translations which are done at this point will have to receive one more
update after I added this feature.

NOTE2: There is something wrong with generating catalogs and the update-all
jam target. If you don't do a clean build, the build won't run through, but it
is enough to build for example an image and then run update-all on your actual
partition profile.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35209 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2a94c3b3 16-Jan-2010 Rene Gollent <anevilyak@gmail.com>

Update Installer's empty volume check to work with the new trash
directory locations.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35109 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7974d3dc 13-Jan-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Humdinger:
Updated Haiku apps to use sentence-case. What a huge undertaking...
The files where I had to apply the patch manually (for mysterious
reasons) have also gotten a whitespace cleanup. I've proof-read
everything so hopefully there should be no problems.

This should be the final part of #5169.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35049 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 72586154 06-Sep-2009 Stephan Aßmus <superstippi@gmx.de>

* Finished ProgressReporter
* Integrated ProgressReporter into CopyEngine and UnzipEngine.
* Integrated unzipping to main installer engine. Since there are currently no
.zip files in the _packages_ folder (and not even a _packages_ folder
itself), this is completely invisible, but it works.

TODO: Adjust the build system to optionally copy packages into _packages_
instead of extracting them. Like for the CD build profile mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32967 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 41974e43 06-Sep-2009 Stephan Aßmus <superstippi@gmx.de>

* Changed the UnzipEngine to be a BCommandPipe::LineReader itself, this
simplified the code somewhat (maintaining of state).
* UnzipEngine does a more complete parsing of the .zip contents and maintains
a hashmap of item names to byte size entries. During unzipping later on, this
allows to know how many bytes were unzipped for the given item.
* Test whether folders from the .zip already exists, and exclude them from the
item count, since unzip will not report creating folders that already
existed.
* Added the unzipping of packages in the _package_ folder to WorkerThread, but
it is currently commented out to keep Installer in a working state. It would
work, but the problem is that the progress bar would reset itself at the
moment (for every package).
* Started a ProgressReporter class that will later be used by all CopyEngine and
UnzipEngine instances. This is work in progress and not yet part of the build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32959 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 80281119 31-Aug-2009 Stephan Aßmus <superstippi@gmx.de>

Size ContentSize() seems to be unreliable for read-only media, and also since
we may allow initializing partitions from within the Installer, it's better to
use Size() for now. Should fix the CD install source to display as 800 +some
Bytes.

+alphabranch


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32848 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d7737cc8 29-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

Changed the somewhat bold BLocker usage to a more straight forward semaphore
based mechanism to pause and eventually cancel the WorkerThread. This also works
now when the CopyEngine is still collecting file informartion (ticket #4153).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31912 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5c7514c3 28-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

Patch by idefix: Make the source items behave exactly like the target items
with regards to the label & style cleanup. Thanks a lot!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31854 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c5b8c482 27-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

Use the descriptive labels also for source menu items. Helps a lot in case
you have three partitions all named "Haiku"... :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31803 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9c0db344 16-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

Patch by Jeroen Oortwijn:
Escape the mount point, so volumes with spaces in their name can be made
bootable after installing. Thanks a lot! Fixes #4063.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31607 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f76e944e 14-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

* Fixed problems when installing onto non-empty target volumes. The
'system' folder will be a clean copy of the source volume. Other
folders will be merged (as before), but in case a folder is in the
way of a link or file from the source volume, it will now be purged.
* Clarified the alert for non-empty target volumes, so it is very clear
what happens. (Maybe there ought to the be option to only copy the system
folder, though.)
* Fixed a problem with copying attributes in certain cases.
* Fixed the main GUI not resetting state properly after encountering an
error during the copy process.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31042 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 01b9223a 19-May-2009 Stephan Aßmus <superstippi@gmx.de>

Woha, "anyways" is not proper English! Thanks bbjimmy for noticing!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30805 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fab3e4a5 03-May-2009 Stephan Aßmus <superstippi@gmx.de>

* Remember in PartitionMenuItem if a partition is a suitable install target.
* Show non-BFS partitions again, but show them disabled and show the content
type in the menu label. BFS partitions don't get the content type shown, so
that it looks more like the reason why they are disabled if the content
type is shown.
* Small cleanups.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30611 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 92cd10f4 03-May-2009 Stephan Aßmus <superstippi@gmx.de>

* Refactored the way targets are collected before copy process begins, this
way, the optional packages (if there would be any) can be collected as well
before the actual process starts and the progress bar will reflect them
correctly. Before this change, the progress bar would have reset itself for
every optional package.
* In one of my previous commits, I added the error, if there was any, to the
reset message. Now the Installer window looks for the error and tells the
user about it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30602 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f827b016 03-May-2009 Stephan Aßmus <superstippi@gmx.de>

Cleanup round 2:
Renamed CopyEngine2 back to CopyEngine.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30601 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b4afa663 03-May-2009 Stephan Aßmus <superstippi@gmx.de>

First round of cleanup:
* Renamed CopyEngine to WorkerThread, since it's used for other things than
just copying.
* Removed the code borrowed from Tracker.
* Removed the InstallerCopyLoopControl, since the CopyEngine handles
notifications and cancelling by itself now.
* Renamed a few message constants.
* Since we only support BFS partitions as install targets, I removed the
FS type from the target menu item label. However, I am going to solve this
differently. I guess all partitions should be seen in the target list, just
disabled if they are not a valid target, and with a reason given too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30600 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5061f35c3f88149f20dca59fbec262a25658ffea 14-Sep-2014 Axel Dörfler <axeld@pinc-software.de>

Installer: don't replace system/settings.

* Instead of removing "system" in the target completely, only
replace all of its subfolders.
* The downside of the current solution is that extra files, and
directories in "system" will not be removed. Improvements
welcome.


# 3aeed6607cd07762c0e709633c012b3a632dbad9 07-Aug-2014 Jérôme Duval <jerome.duval@gmail.com>

include strings.h where appriopriate...

instead or additionally to string.h, in preparation for functions move.
* moves str[n]casecmp() functions and others to strings.h.
* strings.h doesn't include string.h anymore.
* this solves #10949


# f73f5d4c42a01ece688cbb57b5d332cc0f68b2c6 29-Sep-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Initial changes to remove /boot/common

* find_directory() and hard-coded paths use /boot/system instead of
/boot/common.
* The build system creates the writable directories in /boot/system
instead of /boot/common.
* The build system no longer installs any packages in /boot/common.


# 6c36ad168e98c010774f57970c7deb03e9b98403 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: Restrict entry filter to files from the BFS volume

We generally want to skip the contents of the packagefs volumes (save
for the shine-through directories). That makes Installer usable again.
In what direction we want to develop it (e.g. integrate some PM support,
so that a subset of packages can be selected) needs further discussion.


# f4953ba541417f59c4310ea6b6ccf68cb86a3258 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: WorkerThread::EntryFilter: Use path map

... instead of implicit comparisons.


# ba6f7c8c42038755c9017ae014859d016b072580 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: CopyEngine: Pass relative path to EntryFilter

... instead of the file name.


# 348d9eac3b8a59123dcfa04848a42e304a15929d 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: WorkerThread: Remove InstallerWindow dependency

* Move message constants to InstallerDefs.h.
* Determine the source and target partition ID already in
InstallerWindow and pass those to WorkerThread instead of fiddling
with menu items in _PerformInstall(). And instead of the window object
pass a messenger to the constructor.


# e8eb6ae212738836c9a16c463c8aed3cdf23f72e 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: WorkerThread::_PerformInstall(): get rid of goto


# c2be967eb9044dd6a57f8ce0f0fde28c3e2e8ab9 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: CopyEngine: Externalize decision making

* Add interface EntryFilter, an instance of which can be passed to the
CopyEngine. The object is asked whether to copy entries/clobber
directories.
* Move the _ShouldCopyEntry()/_ShouldClobberFolder() code to new
WorkerThread::EntryFilter.


# fb5f0bb1c75c2a7a41f8936d028ebaa7eb7e84d0 02-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Installer: Move path string constants to new InstallerDefs.h/cpp


# aed35104852941f0f6f3d1dcc5338b5f337d0a3c 05-Aug-2012 Humdinger <humdingerb@gmail.com>

Close alerts with ESCAPE key.

Added SetFlags(B_CLOSE_ON_ESCAPE) or SetShortcut(index, B_ESCAPE) to BAlerts
depending if the result gets used later in the code, or if it's a one-button
BAlert.


# 546208a53940a26c6379c48a7854ade1a8250fc5 16-Apr-2012 Oliver Tappe <zooey@hirschkaefer.de>

More catalog-related cleanup.

* rename B_TRANSLATE_CONTEXT to B_TRANSLATION_CONTEXT and
B_TRANSLATE_WITH_CONTEXT to B_TRANSLATE_CONTEXT, squashing a TODO
* adjust all uses of both macros in Haiku's source tree
* use correct header guard for collecting/Catalog.h

The renamed macros require adjustments to all external applications
using catalogs.


# 0891b95e63aad9380672bf22307b072261723322 02-Jan-2012 Philippe Saint-Pierre <stpere@gmail.com>

Installer: Resource leak fix (CID 10693).


# 670fbd136a6edeb0a5536e1c52a8d9e0198e1150 06-Mar-2011 Stephan Aßmus <superstippi@gmx.de>

Typo fixed and debug left-over removed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40837 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 45739d5d4b29e50af2809c94206ecd9390d62b38 06-Mar-2011 Stephan Aßmus <superstippi@gmx.de>

* Added creation of default indices, as are currently present on regular Haiku
volumes. I've decided not to put this into InstallerInitScript, as I reckon
the script is to customize the installation process more than to be a critical
part of the process.
* Make mirroring the existing indices onto the target volume ignore more errors.
This should be the final fix for ticket #7320.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40836 a95241bf-73f2-0310-859d-f6bbb57e9c96


# df4e063a13213f8c8a4f60723498944181f8e25a 05-Mar-2011 Stephan Aßmus <superstippi@gmx.de>

Of course I did not get this right on first try... the targetDevice
was taken from sourceDirectory, and fs_read_index_dir does not set
errno when returning NULL (i.e. no more index entry), which resulted
in the logic to think an error happened, but it only carried over from
fs_create_index() when the index already existed. I think lsindex
needs to be fixed as well, since it checks errno after
fs_read_index_dir(). In case fs_read_index_dir() is supposed to set
errno, it should reset it internally before it's possible to encounter
any error.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40820 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a2dc49b516ca41adb01499d2ca76552524fe1a81 05-Mar-2011 Stephan Aßmus <superstippi@gmx.de>

* Mirror all the indices from the source volume to the target volume.
Note that it would have been an option to invoke mkindex, which has
a similar mirroring option, in the InstallerInitScript, but I favor
making Installer depend on as few external tools as possible.
* Very small cleanup in _PerformInstall(). It should be broken up more
into individual methods.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40816 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 07267c202c7e05afd0b8175d34046b563cae1448 07-Feb-2011 Philippe Houdoin <philippe.houdoin@gmail.com>

Remove left-over debug code.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40372 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7c2c003f9118e411e04f6f62287d1771fdad9f8b 07-Feb-2011 Philippe Houdoin <philippe.houdoin@gmail.com>

Boot partition is not a valid target either, at least not until
installing on it don't leads to warranted crash...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40371 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 814fddc8bf2dfaf62616950a2ebfa0bfcc3436cc 13-Sep-2010 Rene Gollent <anevilyak@gmail.com>

Patch by diver: increase the size of the buffer used to format the partition size, since it's insufficient for some languages. Resolves #6603. Thanks!



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38647 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5421c7d682a251f1cbcdfa1bf870ca1170584135 20-Jul-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Fix all localized applications, as an include was missing in some of them
* dstcheck : the generated catalog is now 'dstcheck.catkeys' instead of 'en.catkeys', so that it does not conflict with
other localized apps in the bin/ folder.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37617 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4eb0cbb044cf538f18c0d252934a5bcaa33bfd34 07-May-2010 Matt Madia <mattmadia@gmail.com>

Updated TR_CONTEXT to be B_TRANSLATE_CONTEXT, relating to #5408.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36733 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e904ecc93e45bd85db48cf9c78339ac478cf6e01 06-May-2010 Matt Madia <mattmadia@gmail.com>

Updated to use B_TRANSLATE* macros. relates to #5408.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36667 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7f78035b8b9c9c43bfa0aa34b48c5ff4bd23bc3b 25-Apr-2010 Jérôme Duval <korli@users.berlios.de>

Should fix #5806. CollectTargets() is also called for packages, the fVarDirectory init is moved to ResetTargets().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36475 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 523f15a9011b9edba7db9fc01ec343eb23e8d19a 04-Apr-2010 Jonas Sundström <jonas@kirilla.com>

Misspelling, reported by eml.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36031 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 48d796576e9b4b9610f78f4b96131eb28a362f23 23-Mar-2010 Stephan Aßmus <superstippi@gmx.de>

* Moved the duplicate "string_for_size()" implementations into libshared.a.
* Adapted libtracker.so, DriveSetup and Installer to use the shared version.
* The new version uses the correct units (KiB instead of KB and so on).
* Use the correct units in a few other prominent places, where
string_for_size() could not be used.

Should resolve a major part of #5378.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35935 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4a2da42550e3178afd0d3d8d2860494819e0472d 20-Jan-2010 Stephan Aßmus <superstippi@gmx.de>

* Applied localization to the Installer.
* Some coding style fixes along the way.
* Added German translation.

NOTE: The Installer will have to offer a way to change the current locale! So
any translations which are done at this point will have to receive one more
update after I added this feature.

NOTE2: There is something wrong with generating catalogs and the update-all
jam target. If you don't do a clean build, the build won't run through, but it
is enough to build for example an image and then run update-all on your actual
partition profile.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35209 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2a94c3b35bb29d36638e97f8c6aea26333ba65af 16-Jan-2010 Rene Gollent <anevilyak@gmail.com>

Update Installer's empty volume check to work with the new trash
directory locations.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35109 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7974d3dcf39ce78e5885b481eee12e561ad6e096 13-Jan-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Humdinger:
Updated Haiku apps to use sentence-case. What a huge undertaking...
The files where I had to apply the patch manually (for mysterious
reasons) have also gotten a whitespace cleanup. I've proof-read
everything so hopefully there should be no problems.

This should be the final part of #5169.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35049 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 72586154d7f505bd5f15377db729b515d40dee40 06-Sep-2009 Stephan Aßmus <superstippi@gmx.de>

* Finished ProgressReporter
* Integrated ProgressReporter into CopyEngine and UnzipEngine.
* Integrated unzipping to main installer engine. Since there are currently no
.zip files in the _packages_ folder (and not even a _packages_ folder
itself), this is completely invisible, but it works.

TODO: Adjust the build system to optionally copy packages into _packages_
instead of extracting them. Like for the CD build profile mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32967 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 41974e4319eb77026df1bceb9e24d07ddd2ea6c8 06-Sep-2009 Stephan Aßmus <superstippi@gmx.de>

* Changed the UnzipEngine to be a BCommandPipe::LineReader itself, this
simplified the code somewhat (maintaining of state).
* UnzipEngine does a more complete parsing of the .zip contents and maintains
a hashmap of item names to byte size entries. During unzipping later on, this
allows to know how many bytes were unzipped for the given item.
* Test whether folders from the .zip already exists, and exclude them from the
item count, since unzip will not report creating folders that already
existed.
* Added the unzipping of packages in the _package_ folder to WorkerThread, but
it is currently commented out to keep Installer in a working state. It would
work, but the problem is that the progress bar would reset itself at the
moment (for every package).
* Started a ProgressReporter class that will later be used by all CopyEngine and
UnzipEngine instances. This is work in progress and not yet part of the build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32959 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8028111912c89c004ecb096acef42ff260fc6546 31-Aug-2009 Stephan Aßmus <superstippi@gmx.de>

Size ContentSize() seems to be unreliable for read-only media, and also since
we may allow initializing partitions from within the Installer, it's better to
use Size() for now. Should fix the CD install source to display as 800 +some
Bytes.

+alphabranch


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32848 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d7737cc84f8e442fac5d246b1d4ec063312ea259 29-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

Changed the somewhat bold BLocker usage to a more straight forward semaphore
based mechanism to pause and eventually cancel the WorkerThread. This also works
now when the CopyEngine is still collecting file informartion (ticket #4153).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31912 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5c7514c31748e5017b8fc8b97c34b6b0ade4eefc 28-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

Patch by idefix: Make the source items behave exactly like the target items
with regards to the label & style cleanup. Thanks a lot!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31854 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c5b8c482cc928bb36106ae43bfdb4baacf756472 27-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

Use the descriptive labels also for source menu items. Helps a lot in case
you have three partitions all named "Haiku"... :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31803 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9c0db3445c588b4e142dee2033442a818970ad72 16-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

Patch by Jeroen Oortwijn:
Escape the mount point, so volumes with spaces in their name can be made
bootable after installing. Thanks a lot! Fixes #4063.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31607 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f76e944e24b1686fc3c45c30a47de543c025f11c 14-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

* Fixed problems when installing onto non-empty target volumes. The
'system' folder will be a clean copy of the source volume. Other
folders will be merged (as before), but in case a folder is in the
way of a link or file from the source volume, it will now be purged.
* Clarified the alert for non-empty target volumes, so it is very clear
what happens. (Maybe there ought to the be option to only copy the system
folder, though.)
* Fixed a problem with copying attributes in certain cases.
* Fixed the main GUI not resetting state properly after encountering an
error during the copy process.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31042 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 01b9223aa5856ca9c9b6726b3f3a1924574c3243 19-May-2009 Stephan Aßmus <superstippi@gmx.de>

Woha, "anyways" is not proper English! Thanks bbjimmy for noticing!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30805 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fab3e4a5b211822053a8280120b7cd96e62dcd96 03-May-2009 Stephan Aßmus <superstippi@gmx.de>

* Remember in PartitionMenuItem if a partition is a suitable install target.
* Show non-BFS partitions again, but show them disabled and show the content
type in the menu label. BFS partitions don't get the content type shown, so
that it looks more like the reason why they are disabled if the content
type is shown.
* Small cleanups.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30611 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 92cd10f4db338d2aa15f215025a61f8808d4f7ba 03-May-2009 Stephan Aßmus <superstippi@gmx.de>

* Refactored the way targets are collected before copy process begins, this
way, the optional packages (if there would be any) can be collected as well
before the actual process starts and the progress bar will reflect them
correctly. Before this change, the progress bar would have reset itself for
every optional package.
* In one of my previous commits, I added the error, if there was any, to the
reset message. Now the Installer window looks for the error and tells the
user about it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30602 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f827b0168a3712e37c0d31d783a26baa92c05411 03-May-2009 Stephan Aßmus <superstippi@gmx.de>

Cleanup round 2:
Renamed CopyEngine2 back to CopyEngine.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30601 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b4afa66367d65eb54c52b4aeec4724af691ef11b 03-May-2009 Stephan Aßmus <superstippi@gmx.de>

First round of cleanup:
* Renamed CopyEngine to WorkerThread, since it's used for other things than
just copying.
* Removed the code borrowed from Tracker.
* Removed the InstallerCopyLoopControl, since the CopyEngine handles
notifications and cancelling by itself now.
* Renamed a few message constants.
* Since we only support BFS partitions as install targets, I removed the
FS type from the target menu item label. However, I am going to solve this
differently. I guess all partitions should be seen in the target list, just
disabled if they are not a valid target, and with a reason given too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30600 a95241bf-73f2-0310-859d-f6bbb57e9c96