Commit Graph
100 Commits
Author SHA1 Message Date
Andrew Lindesay 027d608682 HaikuDepot: LRU Cache for Icons
Only keep a fixed number of icons in memory at once.

Completes To #15370

Change-Id: I23e3a4fa7559894034f45afb3b536910ea037078
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3367
Reviewed-by: Rene Gollent <[email protected]>
2020-11-15 20:16:14 +00:00
Andrew Lindesay 4cd33fec63 HaikuDepot: Fix x86gcc2 Build
Change-Id: I06c94f6c09f9a4fdec3dc22a2da704225a7845c5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3345
Reviewed-by: Jérôme Duval <[email protected]>
2020-10-22 20:39:17 +00:00
Andrew Lindesay a5e4976d39 HaikuDepot: Lists; Categories + Stabilities
Remove use of custom list class where it is not
really required in the area of Categories.  Also
introduces stabilities relayed over from the
Server and used in the HD user interface instead
of being hard-coded.

Relates To #15534

Change-Id: Ib71141e71cd4a0b4882827e2e59b62072de01b4b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3331
Reviewed-by: Jérôme Duval <[email protected]>
2020-10-22 08:51:25 +00:00
Andrew Lindesay 05880d133e HaikuDepot: Custom List Removal (Depots)
Remove use of custom list class where it is not
really required in the area of Depots.  Also
convert the use of Depots to be wrapped in
BReference to match other model objects. At the
same time some data-loading logic has been
simplified.

Relates To #15534

Change-Id: Ie6fcc35f258a0c69c44990e4b09f6c32ec79945d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3225
Reviewed-by: Rene Gollent <[email protected]>
2020-09-21 20:49:37 +00:00
Andrew Lindesay 4af3fbf906 HaikuDepot: Lists & Prominences
Use BStringList instead of bespoke List class for
lists of strings.

Also fix the prominences so that the sort
ordering in the featured packages uses the sorting
algorithm properly.

Relates To #15534

Change-Id: I56e67931aa08e6bfee6d2be21a459152216790e2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3232
Reviewed-by: Adrien Destugues <[email protected]>
2020-09-18 11:59:16 +00:00
Andrew Lindesay 963ebbca4f HaikuDepot: Icon / Tarball Handling - Fix
Resolves #16523

Change-Id: Ied52904da51455fe164cda93daecde6dc3e051d4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3219
Reviewed-by: Adrien Destugues <[email protected]>
2020-09-15 08:22:47 +00:00
Andrew Lindesay f0e491d390 HaikuDepot: Icon / Tarball Handling
Instead of exploding the tar-ball of icons from
HDS, keep it as a tar-ball, index it and read
data directly out from specific indicies on demand.

This will speed up the process of downloading
the icons by removing the unpack.  Also updates
will be faster by avoiding the need to delete the
old icon files.

Because icons are loaded on-demand, the start
time is faster by avoiding all the icon loads.
There are also savings on memory consumption.

Indexing on each load is surprisingly fast so
no external index is maintained.  Likewise for
the tar-balls's meta-data.

This commit does not cover the implementation
of an LRU cache of the icons in memory.

Relates to #15370

Change-Id: Ia1647d8c805be89618f493d2592bf7877fca3f14
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3205
Reviewed-by: Adrien Destugues <[email protected]>
2020-09-12 23:06:24 +00:00
Andrew Lindesay fa5c8097c9 HaikuDepot: Languages List
Abstacts the list of supported languages into
the LanguageModel class preventing use of
List.  Also; fix a few cases where newer
logging techniques may have caused incorrect
logic flow.

Relates To #15534

Change-Id: I144fe4788abdaf0d93e53eeabc97b3f7aa2ec710
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3085
Reviewed-by: Adrien Destugues <[email protected]>
2020-07-30 07:09:55 +00:00
Andrew Lindesay f96d1f4d92 HaikuDepot: Better Logging
Changes the logging in HD to use a macro for the
various log levels to declutter the code and to
make it easier to more systematically log.

Change-Id: I025970707a0a11e7e3aaa4b52fc91288af0183f5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3018
Reviewed-by: Adrien Destugues <[email protected]>
2020-07-15 08:34:22 +00:00
Andrew Lindesay 9295c1f645 HaikuDepot: Url -> Identifier
This change will rename the confusing "url" within
HaikuDepot to be "identifier" in line with
corresponding changes in pkg kit and HDS.  Also at
the same time support is introduced for HDS
repos' meta-data to artificially match against
multiple repos; as requested for the future R1B3
release process.  Some tidy-ups and extensions have
been made to the JSON schema-to-model and the
schema-to-parser scripts.

Change-Id: I402e7d610986039f58d72028bda7de977e9115e2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2986
Reviewed-by: Adrien Destugues <[email protected]>
2020-07-05 09:41:54 +00:00
Andrew Lindesay 66a4cd11c2 HaikuDepot: Custom List Removal
Remove use of custom list class where it is not
really required.

Relates To #15534

Change-Id: I4bdc258a64055b6e36c7be93672c52d0499e512b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2991
Reviewed-by: Adrien Destugues <[email protected]>
2020-07-05 09:13:38 +00:00
Andrew Lindesay dc8d6e73f8 HaikuDepot: Custom List Removal
Remove use of custom list class in the python-
generated model classes for interaction with
HDS; use STL container classes instead.

Relates To #15534

Change-Id: Ib8f4942b55859c1af38da816591e911174ba52ea
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2957
Reviewed-by: Adrien Destugues <[email protected]>
2020-06-28 08:39:20 +00:00
Andrew Lindesay 991d1a2097 PackageKit: HPKR BMessage Format Fix
Some older repositories are having problems because
they are configured with a `url` (identifier) form
that is not actually a well-formed URL.  This caused
problems when it was then interpreted as the
base-url because it did not start with "http".  I
have changed this so that the base-url is not
derived from the url and can be missing.

Resolves #16149

Change-Id: I10acd8db65082ff6c72fcff1550eb63475e86133
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2931
Reviewed-by: waddlesplash <[email protected]>
2020-06-20 18:30:20 +00:00
Andrew Lindesay 82f985c036 PackageKit: HPKR BMessage Format Fix
Some older repositories are having problems because
they are configured with a `url` (identifier) form
that is not actually a well-formed URL.  This caused
problems when it was then interpreted as the
base-url because it did not start with "http".  I
have changed this so that the base-url is not
derived from the url and can be missing.

Resolves #16149

Change-Id: Ic972fde43f99466db9d5ea2325c0e77cf7d4aad5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2886
Reviewed-by: Adrien Destugues <[email protected]>
2020-06-09 08:32:30 +00:00
Andrew Lindesay 16f2f8eb81 HaikuDepot: Contents for Local Pkg (b)
Fixes a bug where contents are not displayed
for local files that are not installed.

Resolves #16161
Change-Id: I27abfd78bf7882b1961f8d9c6ade30d4c15ec2ad
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2865
Reviewed-by: waddlesplash <[email protected]>
2020-06-02 23:02:29 +00:00
Andrew Lindesay 6178aeb315 HaikuDepot: Contents for Local Pkg
Enables the content tab for showing contents of
on-disk, but not yet installed package.

Resolves #16161

Change-Id: I5e4764cf3e9f1e46eafb3d98917a357fece854dc
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2853
Reviewed-by: waddlesplash <[email protected]>
2020-06-01 00:32:16 +00:00
Andrew Lindesay d309d94089 HaikuDepot: Refresh Repo Cache
When HD first loads in a new install, it will experience
a near-empty set of repositories.  This is because only
build-time repo caches are present.  This change will
cause HD to pull data from remotes on first load, in the
case that the cache is somehow missing and on a user-
initiated update.

Resolves #14840

Change-Id: I4f0e6c9fdba4141841cc167d7953967edb526033
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2821
Reviewed-by: waddlesplash <[email protected]>
2020-05-30 02:33:19 +00:00
Andrew Lindesay 8c6ebdec76 HaikuDepot: Changelog & Contents Tabs
Disable the changelog tab in the case that a package
has no changelog.  Also disable the contents tab and
do not attempt to load the package contents in the
case where a package is not installed on the host.

Resolves #15299

Change-Id: Id17daf46aba6709f35438db2ee30f3485fc251ea
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2749
Reviewed-by: humdinger <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2020-05-28 02:46:54 +00:00
Andrew Lindesay 548467a97d HaikuDepot: Alert Naming
Change capitalization in the titles of alerts.  Change
alerts' warnings to avoid the word "Haiku".

Resolves #16117

Change-Id: Id9aacf83d7e8364a1e9b0bfa9a98532108f906e3
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2808
Reviewed-by: waddlesplash <[email protected]>
2020-05-25 16:04:12 +00:00
Andrew Lindesay f95ec23e95 HaikuDepot: Fix Crash on Quit During Load
If the system is currently loading-up and populating
data and the user quits then it was crashing because
of a call to a deleted ProcessCoordinator object.
This change implements the reference as BReference
ensuring that the ProcessCoordinator object is only
deleted after it is not used anywhere.

Resolves #16109

Change-Id: If535c151819da37d502283af3745e4148da69026
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2797
Reviewed-by: waddlesplash <[email protected]>
2020-05-24 15:51:40 +00:00
Andrew Lindesay 87016f8f49 HaikuDepot: Single Package Crash
In single package mode there was a crash owing to the
status bar not being present.  This may as well be
added because it provides some feedback that the
application is actually doing something.  The
behaviour of this is not ideal because the feedback
could be better, but it will resolve the crash
issue this ticket is raising.

Resolves #15964

Change-Id: I603a7b163139859f0c46a35ead0809e5d82e0f8d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2791
Reviewed-by: waddlesplash <[email protected]>
2020-05-23 21:58:09 +00:00
Andrew Lindesay c419919252 HaikuDepot: Performance
This change removes two mistakes I made a long time ago
that caused unnecessarily copying of lists of data. This
fix speeds up the UI alot.

This change also clears data in UI list elements when a
bulk load is requested.  It stops clearing otherwise and
instead uses "add" and "remove" operations in the lists
which is OK now because the UI list elements are much
faster than they have been in the past.  This removes
the strange clean-and-reload that was visible in the UI
previously.

A threaded package loading system was put in place a long
time ago, but with these performance improvements this
mechanism is no longer necessary; it has been removed to
simplify the code.

Fixes #16012

Change-Id: I393cee929695726539602b51630ae285fb8384f1
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2748
Reviewed-by: Adrien Destugues <[email protected]>
2020-05-22 10:08:11 +00:00
Andrew Lindesay 9d8d114499 Packages: Local Repo Config Formats
The local storage of the various repositories' config
needs to cater for different generations of storage
formats and also needs to be able to swap out legacy
repository identifiers.

Change-Id: Ib4b3857254b7b703858eff6815e2d6c54d69da3c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1963
Reviewed-by: Adrien Destugues <[email protected]>
2020-05-22 10:04:51 +00:00
Andrew Lindesay 9883929b9c HaikuDepot: Featured Pkgs View
This change will move the display of the featured packages
from a dynamic layout to one that is static.  This should
improve layout consistency and ui performance as well as
introduce keyboard navigation in the featured packages
list.

Resolves #11675, #15012
Helps #14675

Change-Id: Iddac7a9562763c7a890ec5dcf633e94f84684f43
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2708
Reviewed-by: Adrien Destugues <[email protected]>
2020-05-18 06:39:21 +00:00
Andrew Lindesay 1f3909ade1 HaikuDepot: Referencable Fixes
Some misuse of BReferencable / BReference are causing the
debugger to fire while debugging another issue.  This
should fix some of it.

Change-Id: I895e209afe9e350e35b111739140c85133107227
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2556
Reviewed-by: Adrien Destugues <[email protected]>
2020-05-03 09:47:43 +00:00
Andrew Lindesay 5ad0160882 HaikuDepot: Disable System Pkg Updates
HaikuDepot reacts to changes in packages installed in the
running system, but is currently reloading everything
which is too slow with the quantity of data involved.
Short term; disable this function in this commit so the
application can be used and then come back to it later
with a better solution.

Relates to #15879

Change-Id: I96a17c01e8b1ae1443fb6242a5b53a22b1e44416
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2483
Reviewed-by: Adrien Destugues <[email protected]>
2020-05-01 10:44:25 +00:00
Andrew Lindesay eaf026de4a HaikuDepot: Fix Label on User Rating
Resolves #11639

Change-Id: I45d3952d1dd0fc998cf589b5180c0a81ab1f63b6
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2501
Reviewed-by: Adrien Destugues <[email protected]>
2020-04-20 07:15:44 +00:00
Andrew Lindesay 30bd2c8c29 HaikuDepot: Fix Icon Backgrounds
Some icons are not correctly observing the color
of the background view they are drawing on.  This
commit will fix that problem.

Resolves #14587

Change-Id: Icdd3eda915c985eba3517f888f29ccb2f8278487
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2500
Reviewed-by: waddlesplash <[email protected]>
2020-04-19 22:24:04 +00:00
Andrew Lindesay a6a45d1b92 HaikuDepot: Fix Oscillating Pkg Selection
The views for prominent and list packages were both
getting mouse click events and they were both sending
the "package changed" to the MainWindow which, with
the two queued messages, ended up in a feedback loop
constantly oscillating between the two packages from
the two views.  This problem is resolved in this
commit by stopping one of the views processing the
events if it is hidden -- because it is not the
selected tab.

Resolves #15884

Change-Id: I38f75baba26b26183fd0cd1a6909e404f9f37b9b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2498
Reviewed-by: waddlesplash <[email protected]>
2020-04-19 03:52:50 +00:00
Andrew Lindesay 296183eb6f HaikuDepot: UI Colouring Fix
Some text displayed was not using the system
standard colors.

Resolves #11689

Change-Id: Ia415a32f47dff6aa86d343d1acc154527300e924
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2493
Reviewed-by: waddlesplash <[email protected]>
2020-04-18 18:17:05 +00:00
Andrew Lindesay ccf707d0bb HaikuDepot: Fixes for Tabs
Cleans up the code around tab-switching and
also improves some logic around inserting
packages into the list of 'prominent'
packages by using a binary search.

If Haiku is installed into an environment with no
networking then it won't be able to talk to HDS
and so won't know which packages are promoted.
In this case switch the user to the "all packages"
tab so they are not shown a blank panel by default.

Relates to #14675, #14927

Change-Id: I14dd3be4af09a98245ddd0a9704bd8d53ed64a53
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2478
Reviewed-by: waddlesplash <[email protected]>
2020-04-16 00:58:30 +00:00
Andrew Lindesay 10cd325cfa HaikuDepot: Check User Auth on Start
The user might have changed their authentication details
on the server and the client won't detect this until
they go to do something.  Instead, if possible, check
this as the client starts.  Also check that the user has
agreed to the current user usage conditions.

As a side-effect this generalizes the logic for process
coordination in the main window and also fixes some bugs
in the main window's progress display as the application
starts.

Relates to #15209

Change-Id: I4c9620648819ecd14fb095e4cb2c66fe7b2a0920
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2467
Reviewed-by: Adrien Destugues <[email protected]>
2020-04-15 07:10:10 +00:00
Andrew Lindesay 32ed76599d HaikuDepot: Check Working Files Writable
At start time, it is possible that the local disk
system is not able to be written to where the
application is trying to store working files.  This
change introduces a check at startup that ensures
working files can be written to and warns the user
if this is not the case.

Change-Id: I907bf41a3b4eceb0083119a082fd5e68e4d534c1
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2397
Reviewed-by: waddlesplash <[email protected]>
2020-03-28 20:06:08 +00:00
Andrew Lindesay b21c94474e HaikuDepot: Instructions on Logs
Some error messages make mention of application logs
and users don't know how to view the logs.  This
change adds some instructions about that to the user
guide and also directs the user to the user guide in
any error messages that mention the logs.

Change-Id: Ib98737abe853586c58a1c1df7befb86aa1c04491
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2285
Reviewed-by: humdinger <[email protected]>
2020-02-29 10:50:04 +00:00
Andrew Lindesay 835e7239d0 HaikuDepot: Refactor of Login
These changes cover a rework of the login and
account creation logic before making additional
changes related to the user usage conditions.

Relates to #15209

Change-Id: I90b7dbcee5b0285476938c6ced0afc89483d6227
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2023
Reviewed-by: Stephan Aßmus <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2020-02-03 08:51:55 +00:00
Andrew Lindesay d17c92f779 HaikuDepot: Error Reporting Improvement
When editing a user rating it can be that the user
is not authenticated properly or there is some
problem.  This change improves the error reporting
in this situation to give the user a better idea
about what is going on.

Change-Id: Ib8890c2ea8a7316849486e472aabec05788243ef
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2112
Reviewed-by: Adrien Destugues <[email protected]>
2020-01-14 05:14:40 +00:00
Andrew Lindesay 041bbff9b0 HaikuDepot: Better Logging of Cache File Creation
A user has reported having some problems around
initial use of HaikuDepot and this seems to be
related to setup of the directories etc... at
start time.  This change should improve the
logging so that it is easier to identify the
cause.  Also some additional locking has been
introduced as there might be a problem where two
threads are creating the same directory at the
same time.

Relates to #15493

Change-Id: I4cbfda7c2ce87b8509ceb78788b7995ee3185050
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1980
Reviewed-by: Adrien Destugues <[email protected]>
2019-12-08 09:43:20 +00:00
Andrew Lindesay 976cadf181 HaikuDepot: Resolve Hpkg File Opening Issue
Fixes #15389

Change-Id: Ie1a509ca3c696d5155bb8ceb3f2974254e57b5b2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1916
Reviewed-by: Rene Gollent <[email protected]>
2019-10-09 13:17:18 +00:00
Andrew Lindesay 1187e80647 HaikuDepot: Fix Selection in Featured Package List
Fixes #15386

Change-Id: Id9e198b85d02dccf7d71aeb1c85b29639ef15059
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1893
Reviewed-by: Stephan Aßmus <[email protected]>
2019-10-02 10:59:33 +00:00
Andrew Lindesay d2d4866dd4 HaikuDepot: Display User's Usage Conditions
A HaikuDepotServer may have previously agreed to
user usage conditions.  If this is the case then
they are now able to view those conditions.  There
were some problems with date formatting in this
change and so the date formatting logic has moved
into the HaikuDepot source code temporarily until
issues with the BDateTime class can be resolved;
most likely as a separate piece of work.

Relates to 15209

Change-Id: Ic3e5413d9139f410d7f7e8b566d4c56352dd2778
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1870
Reviewed-by: Stephan Aßmus <[email protected]>
2019-09-24 10:33:43 +00:00
Andrew Lindesay 0c82f64bf6 HaikuDepot: Conditions on Create User
When the user chooses to create a new user they
are able to view the current usage conditions for
users.  They are also required to agree to the
conditions and they are required to confirm that
they meet the minimum age requirement.

Relates to 15209

Change-Id: I83cdaabe1b3da31a4cd21139b72341f4b93cab85
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1842
Reviewed-by: Jérôme Duval <[email protected]>
2019-09-10 06:10:17 +00:00
Andrew Lindesay 051ee9d8fc HaikuDepot: Improvements to User Ratings
Change to match the web user interface behaviour;
the user ratings for all architectures are shown
and the list of user ratings is restricted to the
actual repository in use.  This is important
where two repositories have the same package with
different versions.  Also the architecture
is displayed with the version in the package info
page.

Change-Id: I8c024d9ddec6b97f52233b7462c47d2a1c83af09
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1817
Reviewed-by: Andrew Lindesay <[email protected]>
2019-09-09 08:15:35 +00:00
Andrew Lindesay 01339a54db HaikuDepot: Display User Usage Conditions
This change will allow the user to view the user
usage conditions from the HDS system in a
HaikuDepot window.  The display of the text is not
currently well formatted in that the Markdown is
not yet properly parsed, but the display of the
data is working.

Relates to 15209

Change-Id: Ia6ad4ef995f5fe3c29c40221964e44d4554a033d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1750
Reviewed-by: waddlesplash <[email protected]>
2019-09-01 03:08:11 +00:00
Andrew Lindesay 02e836dc3c HaikuDepot: Barber Pole Idle Appearance
This change renders a striped background in the
'barber pole' in HaikuDepot application when it is
idle.  This makes the 'barber pole' easier to use
in situations where the space that the UI control
takes up should not be blank.  The logic for the
striped background is from the 'drivesetup'
application.

Change-Id: I87791c70b4d1a21d91e661433d6c940ca69ece87
Reviewed-on: https://review.haiku-os.org/c/1674
Reviewed-by: Adrien Destugues <[email protected]>
2019-08-05 07:39:39 +00:00
Andrew Lindesay 325b11bf67 HaikuDepot: Fix Bug with Collation
This resolves a bug where a collation pointer is
not being initialized.

Change-Id: Ice59f82eb6cedd3e15acbafa738445984d7114d3
Reviewed-on: https://review.haiku-os.org/c/1485
Reviewed-by: waddlesplash <[email protected]>
2019-05-25 21:23:18 +00:00
Andrew Lindesay 89b16bb4d2 HaikuDepot: Categories from Server
The list of categories for packages is currently
hard-coded into the HaikuDepot desktop
application.  This change will change that so that
the list is obtained from the HaikuDepot Server
system and is always up to date with the server's
list of categories.

Change-Id: I757732f4d771e1599d6ad9c85cd65905640de928
Reviewed-on: https://review.haiku-os.org/c/1478
Reviewed-by: Adrien Destugues <[email protected]>
2019-05-25 11:10:50 +00:00
Andrew Lindesay cd00276153 HaikuDepot: Filtering Crash Resolution
I am unable to reproduce the problem locally, but
suspect that the lack of locking around one line
may be the cause.  Hopefully fixes #14025.

Change-Id: I14ba6d2cb4f264af732fad9c783c55f690cece4f
Reviewed-on: https://review.haiku-os.org/c/1472
Reviewed-by: waddlesplash <[email protected]>
2019-05-22 19:12:02 +00:00
Andrew Lindesay 4f8d9e120f HaikuDepot: Load Languages from HDS - Fixes
Follow-on changes from recent commit of the same title
with some improvements and fixes.

Change-Id: Ic4439966340578b920345332669591f6cdfcc203
Reviewed-on: https://review.haiku-os.org/c/1471
Reviewed-by: waddlesplash <[email protected]>
2019-05-21 20:23:18 +00:00
Andrew Lindesay f85e030047 HaikuDepot: Load Languages from HDS
The HaikuDepot application has, thus far had its
own hard-coded list of languages that the user is
able to choose when (a) creating a new account or
(b) creating a user-rating.  This change will mean
that those languages are loaded from the HDS
server dynamically and in this way the user can
choose from the full list.  There have also been
improvements to the way in which the languages are
displayed in the menu as well.

Change-Id: If7cb7b87f348ca59d503d276a22444e72d0e6168
Reviewed-on: https://review.haiku-os.org/c/1425
Reviewed-by: Adrien Destugues <[email protected]>
2019-05-15 19:03:48 +00:00
Andrew Lindesay 52a61976d4 pkgman: fix for syntax (help)
The tool "pkgman" was not showing it's help text
and this seems to be somehow related to the
initialization of constants such as
"kCommandCategoryPackages"; these values seems to
be coming through as empty-string for some reason.
I am changing those to be "#define" of regular
C-Strings and this seems to resolve the problem.
These values only seem to be used to group the
possible commands for production of the syntax or
help text - there do not seem to be any deeper
impacts beyond that functionality.

Change-Id: If9cd61462cd7f1f1b5ab2ece521bb3f00a1ba246
Reviewed-on: https://review.haiku-os.org/c/1139
Reviewed-by: waddlesplash <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2019-03-03 20:24:54 +00:00
Andrew Lindesay 17dc34acd6 HaikuDepot: Build Configure for Python
Some operating systems only ship with Python 3 and the
binary for this is 'python3' instead of 'python' which
causes the Jam build process to fail because it expects
to find 'python'.  This change will mean that the
configure process will detect this case and configure
the build to use the correct binary name.

Fixes #14938

Change-Id: I30cd0df828792715a54d760b86dd79aee04e2b2f
Reviewed-on: https://review.haiku-os.org/c/1134
Reviewed-by: Adrien Destugues <[email protected]>
2019-03-03 07:49:25 +00:00
Andrew Lindesay c91b716e09 HaikuDepot : Generate Sources -Fix Build
In recent changes to HD's build files to generate
some sources at build-time there was a problem
with builds that were configured to run with some
element of concurrency.  In this change, the steps
that should be in sequence are done with shell
commands to avoid race conditions.

Change-Id: I5b6fb4907d8ea5f3ca90de956ecce322cd89c685
Reviewed-on: https://review.haiku-os.org/c/1130
Reviewed-by: Adrien Destugues <[email protected]>
2019-03-02 16:43:33 +00:00
Andrew Lindesay 784aba8e2d HaikuDepot: Fix Code-Generation Jam Logic
The Jam build logic for HaikuDepot was potentially creating
a dummy file that was newer than the generated .cpp/.h files.
This then, in turn, caused the dependent .o files to be
considered needing to be re-built.  This change will ensure
that the dummy file is touched first so it is not newer than
the generated sources and also if the dummy does end up
being newer then the generated sources will be touched.

trac #14853

Change-Id: Ieefb0b2aa14bf43b7cbbdfee4228c215cad5b6fa
Reviewed-on: https://review.haiku-os.org/c/1070
Reviewed-by: Adrien Destugues <[email protected]>
2019-02-19 21:34:23 +00:00
Andrew Lindesay 81dab2139e HaikuDepot : Generate Server Model + Parser
The server uses JSON schema to generate some data-transfer-object (DTO)
models for communication with other systems.  This same schema can be
used to generate the C++ .cpp and .h files for use in HaikuDepot.  So
far these have been generated by hand and then manually added to the
Haiku repo.  Now the schema files can be copied over and from those, the
sources are generated.

Change-Id: Ia288cb7a50843e5e2bc403a6ce55508a04218c04
Reviewed-on: https://review.haiku-os.org/c/858
Reviewed-by: Adrien Destugues <[email protected]>
2019-01-24 17:18:05 +00:00
Andrew Lindesay 3369e03d5c HaikuDepot: Process and Data-loading Improvements
This change is a reshuffle of the backend processing involved in the
aquisition of data from servers including the pull-down and load of
HPKR data as well as the pull-down and load of data from the
HaikuDepotServer (HDS) system.  The driver for this change is to
implement an initial implementation of a progress bar for the
loading of data as the application starts.

The following are notable changes;

* Removed some previously attempted 'functional style' logic in the
  model which didn't fit well with C++
* Use of the base-url in the logical mapping from HDS and HD data is no
  longer required and has been removed
* Some logging has been improved making it clearer which part of HD
  is producing the logging which in turn helps with debugging issues
* List class has been modified to more cleanly support sorted lists
  and binary searches; tests have also be updated accordingly
* Reorganise and tidy-up of the data-loading processes' structures
* The local repository update (HPKR) and data-load occur in background
  processes now in the same system as the HDS data-load - this has been
  crudely shifted from the MainWindow to new Processes and incorporated
  into the background processing system
* The 'state-machine' background process runner is now replaced with a
  'coordinator' style approach that can more easily handle the new
  processes related to HPKR loading.
* Progress for loading processes is shown in the main window in the
  WorkStatusView - this is flickering a bit, but basically works
* Added some documentation regarding how Processes work in the system
* The "Refresh Repositories" menu item now also updates data from HDS
* The "Refresh Repositories" menu item is disabled when the background
  processes are running that update the repository data

Some further refinement would be good, but this change is large enough
for one round of improvements.  There is an issue that the status bar
is used for screenshot display as well as this data-loading, but that
was the case before so it is something that can be dealt with later if
it is a problem.

Change-Id: I7668307645e3aabaf7e4a6e37e2cca80cc0f489e
Reviewed-on: https://review.haiku-os.org/770
Reviewed-by: waddlesplash <[email protected]>
2018-12-17 19:31:25 +00:00
Andrew Lindesay 4b30bf30b8 HaikuDepot : Handling for NULL Identity URLs on Repository Sources
Change-Id: I0f0094cf2ed38750dca4783b41f061977d833cea
Reviewed-on: https://review.haiku-os.org/677
Reviewed-by: waddlesplash <[email protected]>
2018-11-06 00:06:10 +00:00
Andrew Lindesay 15fed7905d Json : Fix String Writer
Tidy-up and correct logic around writing JSON
encoded strings.

related #13832

Change-Id: I1eca33e11dff4457f85a896c02331c1cd9ae1110
Reviewed-on: https://review.haiku-os.org/617
Reviewed-by: waddlesplash <[email protected]>
2018-10-06 19:58:35 +00:00
Andrew Lindesay f1962303a3 HaikuDepot : Add Italian To Languages
Unfortunately reference data is not downloaded
from HDS to HD (it is being worked on) and in
the meantime somebody wants to work with Italian
translations so this will add Italian into the
list of hard-coded supported languages.

Change-Id: Ie0b923ce60acd473cbbea5bbac2254402d7a8fdd
Reviewed-on: https://review.haiku-os.org/618
Reviewed-by: Humdinger <[email protected]>
2018-10-06 19:58:11 +00:00
Andrew Lindesay 6ab878c0e5 HaikuDepot : Fix Rating of Installed Pkg
This commit resolves a problem where a user would be
unable to rate an installed packge.

fixes #14554

Change-Id: I3141eaebbdf531f17eb05302a536c6e0d722a164
Reviewed-on: https://review.haiku-os.org/611
Reviewed-by: Jérôme Duval <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2018-10-04 19:47:19 +00:00
Andrew Lindesay 6d18e980e1 HaikuDepot : Performance for Package List Updates
Performance improvements for the application updating
lists of packages when the user is operating with the
locale set to Russian.

fixes #14513

Change-Id: I1e2514a2afbd43503ac0edfe280a856411738026
Reviewed-on: https://review.haiku-os.org/612
Reviewed-by: waddlesplash <[email protected]>
2018-10-04 19:45:52 +00:00
Andrew Lindesay 018d5927d5 HaikuDepot : User-Rating / Star Selection Fix
This commit resolves a problem where the user-rating
is able to specify a rating (how many stars) or not.
The behaviour was not properly honouring the checkbox
to specify if the rating was to be used or not.

Change-Id: I01067bf899e1d5beab1474a197c5698166b9f582
Reviewed-on: https://review.haiku-os.org/600
Reviewed-by: waddlesplash <[email protected]>
2018-10-02 19:24:40 +00:00
Andrew Lindesay 66f8dcb1f1 HaikuDepot : Improvement for Buffer Management
Changes the logic flow around reverting the position of
the request / response buffers when the buffer is logged
during trace logging.

Change-Id: I025ca9988b32447e225e3ad1b1d4da1174d2d122
Reviewed-on: https://review.haiku-os.org/599
Reviewed-by: Rene Gollent <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
2018-09-28 19:18:40 +00:00
Andrew Lindesay 88575af1d2 HaikuDepot : Fixes for User-Ratings Related API Calls
Corrections to some areas where the 'position' of a
data stream was not being set correctly before reading.

Change-Id: I0030a113008028d5480dc36d034cf06915d928de
Reviewed-on: https://review.haiku-os.org/588
Reviewed-by: Stephan Aßmus <[email protected]>
2018-09-27 18:08:21 +00:00
Andrew Lindesay a609673ce8 Support : Fixes for Relative URL Handling
When URLs combine a base URL with a relative part, the relative part's
path component was being pre-processed.  This removed any ".." from the
path and in some cases in the unit test cases, the ".." should have been
retained and then only later applied to the base URL.  This changes
fixes this so that the relative part is not pre-processed and is applied
with it's path in a raw state.

Completes Fixes for #14377
Change-Id: I9cebb8599889494e11f40a3b54c87ebca3ed1a21
Reviewed-on: https://review.haiku-os.org/529
Reviewed-by: Jérôme Duval <[email protected]>
2018-09-11 18:39:53 +00:00
Andrew Lindesay 3cc5e76f2d Support : Fixes for Verbatim Regeneration of URL String Form
A URL in string form should be able to be parsed and then verbatim
regenerated according to 'UrlTest'.  This change fixes this ability
for the case where there is a '?' initiating a query or a '//'
initiating a host/authority section.

Partly Fixes #14377

Change-Id: I6547253c3cdc22d79514edf75284e9725d1a2d17
Reviewed-on: https://review.haiku-os.org/512
Reviewed-by: Jérôme Duval <[email protected]>
2018-09-05 09:05:10 +00:00
Andrew Lindesay 8f30879b98 Support : Validation for Host Portion of URL
Partly Fixes #14377

Change-Id: Ia611d3653d2c16c6dcdc48ce57bd61bb6e6db366
Reviewed-on: https://review.haiku-os.org/476
Reviewed-by: Adrien Destugues <[email protected]>
2018-08-25 18:50:36 +00:00
Andrew Lindesay b3a7d91b2e HaikuDepot : Fix for List Algorithm
Fix a mistake in the binary search and insert
algorithms that was causing stability issues.

Fixes #14284
2018-07-18 23:05:58 +02:00
Andrew Lindesay 3b17d8dd7f HaikuDepot / PackageKit: Repositories 'Identifier' URL
Repositories are identified with a 'url' in the
remote 'repo.info' file.  There is also a
'base url' which is the URL locally with which
the system is able to access the repository
data on.  There is some confusion between these
two terms in the source.  This change aims to
separate the two out and consistently name them.
The settings for the repository locally also was
not storing these values and that has been fixed.
Debug info about the repositories also did not
display the two urls consistently and will now
also do so.  Finally, HaikuDepot now correlates
locally configured repositories with the data in
HaikuDepotServer using the identifier URL; this
makes the use of mirrors with HaikuDepot possible.

Fixes #13888
Change-Id: I66dfe589b05c24e1ab123a6945352e0f24b60bf1
2018-07-05 20:06:54 +00:00
Andrew Lindesay cd417b96c9 HaikuDepot: Trace Logging of RPC Payloads
Changes the trace logging so that JSON-RPC payloads
are included in the log stream.  Also fixes a
memory-leak in the JSON-RPC client.

Change-Id: Ic19c64869acc525232a60ac2fd814a71bfdafdc8
2018-07-04 13:27:42 +00:00
Andrew Lindesay a9edb9bffa HaikuDepot: Multiple improvements for user-ratings
* Display of the user-ratings listing improved
* When a user-rating is created / edited, the pkg is updated
* Creation date of the user-rating is unpacked shown
* Ability to create a user-rating with a comment, but no numerical rating
* Stars display show grey if no numerical rating present
* Improvements to error reporting when problem arise
* Parsing of the 'revision' field of the version working
* Removed debug logging for the text engine
* Other minor tweaks

Change-Id: I99f881ab1426641ef4177eec2d3bcacc7cb74e95
2018-06-09 17:07:03 +00:00
Andrew Lindesay b45e8b1ef9 HaikuDepot : additional debugging for json-rpc invocations 2018-03-25 05:44:19 +00:00
Andrew Lindesay d13c3d8967 HaikuDepot : Handling for Depot Name Anomalies
There is a problem primarily manifesting itself in
the x86_64 build where the packages' names from the
solver are not correlating with the names of the
as-configured depots.  There was also a problem
with a local variable being the same name as a function
parameter.  This does not fix the underlying problem,
but avoids further anomalies in the HaikuDepot UI.

Possibly related trac #11317, #11674, #13940.
Change-Id: Ic140f114bbe38e59c78760213843bf492ff7a270
2018-03-22 10:14:34 +00:00
Andrew Lindesay d5b1013185 HaikuDepot : Coalesce Loading Change Notifications
When the application is starting, it will load in bulk data.  As it
does so, it may issue some change notifications to listeners.  For
each small change in packages' data, there is a notification.  The
system was built to accommodate coalesced changes.  This commit will
coalesce those changes during the bulk load for cases where there
are listeners present.

Change-Id: I1cc6668f61917c0068d5559b2bf338ea75d453da
2018-03-03 20:01:16 +00:00
Andrew Lindesay 54312619ab HaikuDepot : 'Old Client' Handling
The server side has the ability to reject client
requests where the client is no longer supported
because it is presumably too old.  This change
will inform the user when this happens and will
prevent the client from attempting further server
communications within this execution of the
application.
2018-02-26 21:51:45 +00:00
Andrew Lindesay 80a272eed8 HaikuDepot : Changelog, Remove old API and Version Bump
This change re-instates the change-log function (TRAC#13827) that was
dropped in earlier changes.  Also now-disused API handling logic is
removed.  A small code-style fix is made and the version of the
application has been incremented so that this version's logic can later
be detected by the HDS application server.
2018-01-28 12:43:26 +01:00
Andrew Lindesay d483b4d0b5 HaikuDepot : More Backend Communications Improvements
Fixes for x86_64 build (tests)
2017-12-20 00:14:37 +01:00
Andrew Lindesay 1065ea343d HaikuDepot : More Backend Communications Improvements
Fixes for x86_64 build (additional)
2017-12-19 23:26:21 +01:00
Andrew Lindesay 29f98e1f33 HaikuDepot : More Backend Communications Improvements
Fixes for x86_64 build.
2017-12-19 22:47:04 +01:00
Andrew Lindesay 0df6decf1b HaikuDepot : More Backend Communications Improvements
Added missing files from prior commit.
2017-12-19 21:50:31 +01:00
Andrew Lindesay 3094fef308 HaikuDepot : More Backend Communications Improvements
* Further improves the logging and provides some
  basic performance numbers.
* Moves the bulk-load logic out of the data-model
  class.
* Introduces a state-machine for the bulk-load
  process so that it will be more easily able to be
  shifted to non-blocking IO when the HTTP libraries
  can do that.
* Implements concurrent loading of the bulk-data to
  hopefully improve lead time for icons and meta-data.
* Loads data to a temporary file and then moves to the
  final location in order to avoid partially written
  data in the cache.
* Handles situations where no network is available;
  prevents attempt to access the network.
* Allows bulk-load processes to be cancelled when the
  application quits.
* Introduces command-line arguments to help simulate
  scenarios to help with testing performance and
  network absence.
* Implements ordered insert and binary search in the
  'List' class + basic unit test.
2017-12-19 20:56:53 +01:00
Andrew Lindesay f69a80b4bb HaikuDepot: Handling Corrupted Download Data
Damage in latter portions of the downloaded package data can cause the
meta-data for the caching to load OK, but the actual data is unable to
be parsed.  In this case, the application can fail to refresh the
broken data.  This change will mean that the data is "moved aside" into
another file so that on the next run, the application will load fresh
data in place.
2017-11-15 22:32:06 +01:00
Andrew Lindesay c23b641cf1 HaikuDepot: New Mechanic for Package Data Download
The application was previously making a number of different
requests to the application server in order to pull-down
meta-data (ratings, localization etc...) for packages.  This
will now happen in one request per repo.  The data is
also cached locally and freshness of the data is checked
back with the server before new data is pulled down.
2017-11-11 23:49:26 +01:00
Andrew Lindesay f0665db479 HaikuDepot: Improved logging control
The application had previously no means to control the verbosity of
logging.  This excessive logging meant that it was bit hard to
understand what is going on.  Now it is possible to define the level
of logging that is output; especially as the application pulls-down
data from the remote server system.
2017-11-05 15:26:35 +01:00
Andrew Lindesay 3d528c4a60 HaikuDepot: Change communication mechanism with server for repos
(last commit with same title only included new files - added those now)

Previously the desktop application would make a number of JSON-RPC calls
over HTTP to get the repositories.  Now it will make a single call to get
the repositories and cache the result.  This uses standard HTTP cache
signalling techniques and allows the server-side the ability to cache
the generated data as well.  Note that the model classes and parse-
related classes are generated and may not be code-style compliant.  They
are generated from JSON schema files in the server-side project.
Information about this as well as the python files used to generate the
C++ classes and headers are included in the server-side project.
2017-11-03 20:10:01 +01:00
Andrew Lindesay e457080a4a HaikuDepot: Change communication mechanism with server for repos
Previously the desktop application would make a number of JSON-RPC calls
over HTTP to get the repositories.  Now it will make a single call to get
the repositories and cache the result.  This uses standard HTTP cache
signalling techniques and allows the server-side the ability to cache
the generated data as well.  Note that the model classes and parse-
related classes are generated and may not be code-style compliant.  They
are generated from JSON schema files in the server-side project.
Information about this as well as the python files used to generate the
C++ classes and headers are included in the server-side project.
2017-10-20 22:33:10 +02:00
Andrew Lindesay a1c3daa638 HaikuDepot : Streaming Icon Meta-Data Parser
More background work for later performance improvements.
This change generalizes the parsing of meta-data from
JSON streams as similarly structured meta-data is
anticipated to be carried in other payloads.  Unit tests
have also been implemented to provide coverage on this
new functionality.
2017-08-01 23:19:27 +02:00
Andrew Lindesay f943fa465c JSON Parser : Documentation migration
This commit migrates the JSON overview documentation that
was recently added from Markdown to Doxygen.
2017-05-26 21:05:14 +12:00
Andrew Lindesay 55f5f25940 JSON Parser : code style corrections 2017-05-16 00:21:15 +12:00
Andrew Lindesay 0c28e8e5a0 Implementation of JSON Streaming Parser
Fix warnings related to x86_64 tests' compilation.
2017-05-14 10:44:03 +12:00
Andrew Lindesay e6fa1be5fd Implementation of JSON Streaming Parser
Addition of missing files from previous commit
2017-05-13 19:35:51 +12:00
Andrew Lindesay 1f6b57a5d2 Implementation of JSON Streaming Parser
This change will introduce a streaming parser capability to Haiku.  The
existing functionality of writing the JSON data to a BMessage in-memory
model is retained.  The new parser implements a SAX-style listener based
interface where the listener accepts parse events.  Unit tests have been
supplied for the JSON parser as well.
2017-05-13 18:50:39 +12:00
Andrew Lindesay 7407e36a10 HaikuDepot; date formatting and location header handling
The existing HTTP header date format handling code is employed
rather than using specific logic for HD.  Also the "Location"
header handling is changed to work better for non-absolute
URLs arriving in this header value on a redirect.  Both
suggestions from Adrien.
2017-01-31 23:06:20 +13:00
Andrew Lindesay 1290dd9132 HaikuDepot: changes from code review from Jessica 2017-01-31 21:18:39 +13:00
Andrew Lindesay 0c1bbfe508 HaikuDepot: suggested code improvements from Adrien 2017-01-31 20:45:36 +13:00
Andrew Lindesay 19c15fec85 HaikuDepot: Improve icon download handling performance
Previously each icon would launch an independent HTTP request to
pull down the HVIF icon data.  This change means that the data
will be pulled down in bulk across all packages as a .tgz and
will then be kept in a cache locally.  The client-server logic
will use standard "If-Modified-Since" headers to check for
updates each time the HaikuDepot desktop application starts up.
This arrangement will bring down the HVIF as well as bitmap
icons and use the best representation it can.

Additionally, it is possible from a command-line option to log
HTTP traffic verbosely and it is also possible to use an "-h"
flag to display help on command-line arguments.

The code-structure around this change also anticipates some
future extensions to handle other client-server improvements.

Fixes #11804
2017-01-27 21:14:13 +13:00
Andrew Lindesay b6c8f81bf8 build: add support for build paths for 'homebrew' package system on macOS 2017-01-22 20:50:02 +13:00
Andrew Lindesay cf65729463 Url: implement same URL parsing logic in C/C++ code
- Remove uses of group matching regular expression, not available on all
  build hosts,
- Parsing is faster than our old regexp engine.

Signed-off-by: Adrien Destugues <[email protected]>

- Fixes #13002
- Fixed some indentation (tabs vs space), please configure your editor
  properly.
2016-10-31 09:14:44 +01:00
Andrew Lindesay 000b15f2c3 HaikuDepot: Adjust URLs for use with HDS
HDS paths are now prefixed with "__".  This change
makes the corresponding change to the HaikuDepot
desktop application

Fixes #13030.
2016-10-26 23:39:34 +13:00
Andrew Lindesay be29847471 HaikuDepot: code clean-up from #12793 2016-10-21 21:52:13 +13:00
Andrew Lindesay ebb1a01c48 HaikuDepot: Handling for communications with application server over multiple repositories
This change allows for the HaikuDepot desktop application to query the server application
over HTTP for data regarding packages across the various repositories that the have been
configured on the desktop environment.  Previously it was 'hard-coded' to only
communicate about the HaikuPorts repository.
2016-10-20 23:03:10 +13:00