Skip to content

Update the “Building Pulsar” docs…#41

Merged
savetheclocktower merged 4 commits intomainfrom
update-building-pulsar
Mar 12, 2026
Merged

Update the “Building Pulsar” docs…#41
savetheclocktower merged 4 commits intomainfrom
update-building-pulsar

Conversation

@savetheclocktower
Copy link
Collaborator

…to agree with the status quo.

This addresses pulsar#1394 (to some extent) and adds some commented-out paragraphs that we can uncomment if/when pulsar#1397 lands.

This was all verified on both macOS and Linux (Fedora in a VM), but I'm more than happy for someone to double-check my work for Windows.

@ottok
Copy link

ottok commented Jan 4, 2026

Looking good! You might also want to mention that running yarn without any arguments will list the available targets with a short documentation.

The dependency list for Debian/Ubuntu in this PR (apt install build-essential libsecret-1-dev libx11-dev libxkbfile-dev libxkbcommon-dev libxkbcommon-x11-dev libxkbcommon0 xkb-data libwayland-dev libwayland-client0) is not aligned with what I tested and documented in https://github.com/pulsar-edit/pulsar/pull/1395/files#diff-75c2b1fceb565d09588af47ddab567f69ba409731750c7fe732a83a17960b94cR12-R36 and pulsar-edit/pulsar#1398 but better than old version for sure.

@savetheclocktower
Copy link
Collaborator Author

The dependency list for Debian/Ubuntu in this PR (apt install build-essential libsecret-1-dev libx11-dev libxkbfile-dev libxkbcommon-dev libxkbcommon-x11-dev libxkbcommon0 xkb-data libwayland-dev libwayland-client0) is not aligned with what I tested and documented in https://github.com/pulsar-edit/pulsar/pull/1395/files#diff-75c2b1fceb565d09588af47ddab567f69ba409731750c7fe732a83a17960b94cR12-R36 and pulsar-edit/pulsar#1398 but better than old version for sure.

yarn and node-gyp should not be necessary given that we recommend people use nvm or a similar tool. But I can update the PR to reflect this list:

python3-setuptools
make
g++
pkg-config
libwayland-dev
libxkbcommon-x11-dev
libxkbfile-dev

But to be clear: are you saying libsecret-1-dev was not necessary for you?

@ottok
Copy link

ottok commented Jan 4, 2026

But to be clear: are you saying libsecret-1-dev was not necessary for you?

For building Pulsar or running Electron, no. As you can see from the objdumps, it is not a dependency of Electron for sure. But I don't know if there is some feature somewhere that will require it later at run time. All my testing and my PRs are based on testing in clean containers what are the actual real dependencies currently. I don't know fully why they are depencendies though.

@savetheclocktower
Copy link
Collaborator Author

Fair enough. I might keep libsecret-1-dev in the list just in case until we figure that out.

@savetheclocktower
Copy link
Collaborator Author

Adding @Daeraxa as a potential reviewer just in case this helps them get back into the swing of things :)

Copy link
Member

@Daeraxa Daeraxa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very little to critique really, I've made a couple of comments on a few areas im not sure about, otherwise seems a really good update.

By default, running `yarn dist` will attempt to create `AppImage` (for most Linux distributions), `deb` (for Debian or Ubuntu based distributions) and `rpm` (for Red Hat or Fedora based distributions) binaries but you can select the actual target you want to build by appending the above targets to the command. e.g.:
Running `yarn dist` will attempt to create all four variants: `tar.gz` (suitable for most Linux distributions), `AppImage` (suitable for most Linux distributions and more self-contained than the `tar.gz`), `deb` (for Debian or Ubuntu based distributions), and `rpm` (for Red Hat or Fedora based distributions) binaries.

<!-- TODO: This is not currently true, but it is a good idea! Uncomment when we add this in.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did this change? I'm sure this used to work as I was building a lot of RPMs and Appimages trying to solve an issue and it definitely only produced the specified targets at the time.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't remember if I checked it or not, but there did not seem to be any accounting for such arguments in our electron-builder.js script. I opened a PR to add it back in explicitly.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On macOS, at least, yarn dist dmg and yarn dist zip do not work; the script tries to build both targets no matter what.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fair enough, I just remember using this because it massively cut down on the time to produce binaries to test (it was stuff to do with the appimage apprun and the rpm install issues)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I guess it must've been removed at some point.

Copy link
Member

@DeeDeeG DeeDeeG Mar 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sems the CLI arguments for this are a little different than our docs presumed:

[ . . . snipped . . . ]

Building:
  --mac, -m, -o, --macos   Build for macOS, accepts target list (see
                           https://www.electron.build/mac)               [array]
  --linux, -l              Build for Linux, accepts target list (see
                           https://www.electron.build/linux)             [array]
  --win, -w, --windows     Build for Windows, accepts target list (see
                           https://www.electron.build/win)               [array]
  --x64                    Build for x64                               [boolean]
  --ia32                   Build for ia32                              [boolean]
  --armv7l                 Build for armv7l                            [boolean]
  --arm64                  Build for arm64                             [boolean]
  --universal              Build for universal (mac only)              [boolean]
  --dir                    Build unpacked dir. Useful to test.         [boolean]
  
  [ . . . snipped . . . ]

From: https://www.electron.build/cli

@savetheclocktower
Copy link
Collaborator Author

@Daeraxa, I addressed the two actionable items. If those look good, please leave an approval and we can get this landed. Thanks for the review!

@savetheclocktower
Copy link
Collaborator Author

savetheclocktower commented Mar 12, 2026

(Actually, seems like I don't need an explicit approval to merge. But I'll leave this open for a half-hour or so just in case you want to weigh in!)

@ottok
Copy link

ottok commented Mar 12, 2026

Note that this PR to update the docs started in January after I had in December done pulsar-edit/pulsar#1398 and pulsar-edit/pulsar#1395 where I document in detail all the dependencies and why they are needed and at what versions, along with automation that actually runs and installs those versions and "proves" that the inline documentation there is correct. I hope that when you finalize this PR you don't forget that and hopefully use some of that information to have it recored in the docs. Thanks!

@savetheclocktower
Copy link
Collaborator Author

Note that this PR to update the docs started in January after I had in December done pulsar-edit/pulsar#1398 and pulsar-edit/pulsar#1395 where I document in detail all the dependencies and why they are needed and at what versions, along with automation that actually runs and installs those versions and "proves" that the inline documentation there is correct. I hope that when you finalize this PR you don't forget that and hopefully use some of that information to have it recored in the docs. Thanks!

I realize the package lists don't match up exactly for various reasons, but I thought we'd ironed out the reasons why. Is there some aspect of your research that you think isn't represented in these docs?

Copy link
Member

@confused-Techie confused-Techie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Simple approval, added one change we should be making to the Visual Studio instructions. Other than that totally approve of what we've got going on here!

Install all of the components described on the [Installing dependencies for some community packages](/getting-started/dependencies-for-some-community-packages/#installing-visual-studio-tools) page.

In particular, you must have either Visual Studio or Visual Studio Tools (_not_ Visual Studio Code) and the “Desktop development with C++” component must be enabled.
In particular, you must have either Visual Studio or Visual Studio Tools (Visual Studio Code isn’t the same thing!) and the “Desktop development with C++” component _must_ be enabled.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should mention that we also need the Win10 SDK as well as Desktop development with C++ here.

@savetheclocktower
Copy link
Collaborator Author

OK, gonna take the liberty of landing this now that I've addressed the feedback. Thanks for the reviews!

@savetheclocktower savetheclocktower merged commit 5b67d49 into main Mar 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants