Browse Source

Update the Changlog to include FBT changes

Signed-off-by: Sameer Rahmani <>
Sameer Rahmani 2 years ago
  1. 9
  2. 89


@ -10,6 +10,15 @@ and this project adheres to [Semantic Versioning](
- New `extensions` implementation (`core/fg42/extensions.el`)
- New approach to launching fg42
- New `compiler` target to Makefile
- New fbt package and moved `fbt` and `fg42-new` scripts to the `/bin` directory.
- Created the `fpkg` module in `fbt` in order to separate the straight initialization from FG42 so we don't have to work with free dynamic var/functions.
- Added `debug` support to `fbt` via `:d`
- Added expr evaluation via `:e`
- Added `system` support to `fbt`. We can build different systems with `fbt`. It's more like a generic build tool right now.
- Added `fpkg` related fields to the system struct.
- fpkg `init` command bootstraps straight.
- Added `clean` command to fbt
### Changed
- Changed the main package path to `/core`
- Changed the extensions path to `/extensions`


@ -23,95 +23,6 @@
;;; Code:
(require 'fg42/system/api)
(defvar bootstrap-version nil
"`straight.el' bootstrap version. Set it in the `system' level, not here.")
(defvar straight-base-dir)
(defvar straight-repository-branch)
(defvar straight-cache-autoloads)
(defvar straight-check-for-modifications)
(defvar straight-enable-package-integration)
(defvar straight-vc-git-default-clone-depth)
(defvar autoload-compute-prefixes)
(defvar straight-fix-org)
(defvar straight-recipe-repositories)
(defvar straight-recipe-overrides)
(defun fg42-fpkg/-set-straight-values (system)
"Set the default values for some of `straight.el' vars for the SYSTEM."
(setq straight-base-dir (fg42-system/fpkg-path system)
straight-repository-branch "develop"
;; Our autoload process is different.
straight-cache-autoloads nil
;; `straight.el' suppose to be a functional pkg manager but it actually
;; allows user to edit libraries in place which we don't like it.
;; We have our own mechanism to allow users extend FG42 so we don't
;; want `straight.el' to handle it. Frankly it reduces the boot time
;; by a lot.
straight-check-for-modifications nil
straight-enable-package-integration nil
;; We don't want `straight.el' to deep clone the dependencies. Some packages
;; might break this way according to `doom-emacs'
straight-vc-git-default-clone-depth 1
;; We have our own autoload system.
autoload-compute-prefixes nil
straight-fix-org nil))
(defun fg42-fpkg/-install-core-dependencies (system)
"Install the core dependencies of the given SYSTEM.
Core dependencies are thoses packages that the system itself is depends on
and not the extensions."
(mapc #'straight-use-recipes (fg42-system/core-dependencies system)))
(defun fg42-fpkg/initialize (system)
"Initilize the package manager for the given SYSTEM.
Basically fpkg will bootstrap and `straight.el' repositoryu for the given
SYSTEM by fetching the required values from it. Including the path to the
target directory."
(unless (fboundp 'straight--reset-caches)
(let ((bootstrap-file (concat (fg42-system/fpkg-path system)
(bootstrap-version (fg42-system/fpkg-backend-version system)))
(make-directory (fg42-system/fpkg-path system) t)
(fg42-fpkg/-set-straight-values system)
(or (require 'straight nil t)
(file-readable-p bootstrap-file)
(format ""
'silent 'inhibit-cookies)
(goto-char (point-max))
(load bootstrap-file nil t)))
(require 'straight))
(funcall #'straight--reset-caches)
(fg42-fpkg/-install-core-dependencies system)
(setq straight-recipe-repositories nil
straight-recipe-overrides nil)
;; Someday we might have to use our own fork of `straight.el'
`(straight :type git :host github
:repo "raxod502/straight.el"
:files ("straight*.el")
:branch ,straight-repository-branch
:no-byte-compile t))
(fg42-system/fpkg-initilized! system))
(defun fg42-fpkg/initialize-once (system)
"Initilize FPKG only once for the given SYSTEM."
(when (not (fg42-system/fpkg-initilized-p system))
(fg42-fpkg/initialize system)
(straight-use-package 'use-package)))
(provide 'fg42/fpkg/core)