Catalogue is the software store of Phorepoc OS. It reads the index, shows what's there by category, with search and a list of what you've installed, downloads a package, checks its SHA-256 and installs it. It's how drivers, codecs, browser engines and apps get onto a Phorepoc phone or PC without being built into the image.
The app (phestore.exe, "Catalogue" in the launcher) is custom-drawn with the Etesian design language, over a small
download engine (pheget) that you can also use from the command line.
Every release has Catalogue as an installable SIS file for each architecture: catalogue-arm.sis for phones and
catalogue-x32.sis for the PC. The release workflow builds them from this repository
with the pdk's package.yml.
Built into an image. This repository is a layer, like tls or
webengine: it brings an os/ tree and a registry/. Add it to a board's
REPOS in board.conf, or to PHOREPOC_ADAPTATIONS in a local build, and the components below are part of the image.
PHOREPOC_ADAPTATIONS=<device repositories>:<path to catalogue> phe component resources catalogue
PHOREPOC_ADAPTATIONS=<device repositories>:<path to catalogue> phe component build -arch arm catalogueLeave -arch arm out for the PC. The components are:
catalogueis the app,phestore.exe.catalogue_getis the engine as a command line,pheget.exe.catalogue_gettesttests the engine's software sources. It's a test and not part of an image.
Installed as a package. The SIS holds the app, its registration and its icon. Install it on an image that was built without Catalogue, or on an older Nokia Symbian^3 phone (below).
Added to an image build. Every release also has catalogue-arm-addon.tar.gz and catalogue-x32-addon.tar.gz: the built
files laid out by their image path (sys/bin/..., resource/apps/..., private/10003a3f/apps/...) with a manifest that
names the architecture and the pdk and core commits they were built against. Add one to an existing build of an image of
the same architecture, built without Catalogue (-O rom-exclude=<its key> if the base has it):
phe image rom -b <board> -O addon=/build/addon/catalogue-arm-addon.tar.gz
The archive has to be reachable from the toolchain container (the build volume). phe image addon -arch arm catalogue
makes one from a local build.
catalogue-arm.sis is an ARM build for the Symbian^3 platform, so it also installs on the older Nokia Symbian^3 phones
that list that platform. It needs nothing of Phorepoc's own on the phone: the app links only libraries that every
Symbian^3 phone has (euser, apparc, cone, eikcore, eikcoctl, eikctl, eikdlg, avkon, aknskins,
fbscli, bitgdi, gdi, ws32, imageconversion, efsrv, bafl, charconv, esock, http, inetprotutil,
hash, swinstcli), takes its font from the system, and works without z:\resource\phorepoc\device.txt (it then lists
every package built for ARM). There are three things to know.
Signing. The app asks for TrustedUI NetworkServices AllFiles.
NetworkServicesis one every user can grant.TrustedUIneeds a developer certificate.AllFilescan't be had from a developer certificate or from a self-signed package. Symbian Signed only gives it to Certified Signed packages.
AllFiles is there because the installer's silent mode answers error -46 to a program without it when the package is
untrusted and holds binaries, and that is every package Catalogue installs. So a stock phone, which checks signatures
and capabilities when it installs, refuses this SIS. It installs on a phone whose installation check has been lifted,
and the package is unsigned, as every Phorepoc package is. Sign it for a phone that needs a signature.
Secure connections. Catalogue's index and its downloads are https:// addresses, and the TLS in an older Symbian
phone stops at TLS 1.0 with a root certificate list that stopped growing years ago, so the connection fails. Put a modern
TLS on the phone first (see tls), or add an index of your own that has http://
addresses or local paths on the phone, under Sources in the app (c:\data\pheget\indexes.txt).
Installing. Catalogue installs with the system's silent installer (swinstcli), so each package it installs has to
be one the phone accepts under the rules above. The packages in the index are unsigned too.
The packages are built by the pdk's package.yml in the toolchain's ghcr.io/phorepoc/base image, on top of the
published core layer. To build by hand, check out core and the pdk next to this
repository and run phe source export -a once. Then build the components as above and package them:
PHOREPOC_ARCH=arm PHOREPOC_PDK=<pdk> PHOREPOC_BUILD=<build> bash recipes/sis.sh # build/sis/catalogue-arm.sisos/src/catalogue/app/is the app: the views (pheui), the icons (pheicons), the worker thread, the resources and the launcher icon indata/.os/src/catalogue/engine/is the download engine: indexes, downloads, SHA-256, the silent install, and a small JSON reader.pheget.cppwraps it as a command line.os/src/catalogue/tests/tests the engine's software sources.registry/components_catalogue.pyregisters the components with core.recipes/sis.shwrites the SIS files.package.conftellspackage.ymlwhat to build.
Catalogue started in core, and this repository keeps that history.
This is Phorepoc code, licensed under the GNU Affero General Public License, version 3 only (AGPL-3.0-only), with the additional terms its section 7 allows: keep the attribution "Phorepoc, founded by Kyriakos Bompotis" and the legal notices (also where your version shows notices, such as an About screen), and no rights to the Phorepoc names and logos (TRADEMARKS.md). If you run a modified version for users over a network, AGPL section 13 asks you to offer them its source.
Catalogue is our own code; the Symbian platform headers and libraries it builds against are not part of it.
Phorepoc is dual-licensed. Commercial licences or licence exceptions (for example to ship it inside a closed product without the AGPL obligations) are available on request from the founder, Kyriakos Bompotis.
Contributions are welcome; see CONTRIBUTING.md for the licence grant they need.