Request for classic confinement: cpeditor

cpeditor is cross-platform Qt based IDE specially designed for competitive programmers. It helps automating steps like compiling, running, submitting and debugging (in future) code written in C++, Python and Java. It executes a compiler process to compile the user code, upon successful compilation it runs the produced binary by providing input to stdin (called testcases) and monitor for output (on stdout), which it compares against expected output and then gives verdict whether code is logically correct or not. It repeats this process for number of testcases provided.

There are other stuff like code formatting, language server etc.

In order to function properly, it needs classic confinement. Here are some of the reasons for which it should not be sandboxed.

  • Application needs to execute binaries inside /usr/bin, which isnt possible in sanboxed apps.
  • If we only used few binaries, I could have packaged them all in the snap but we use too many of binaries to function. Here is a list of them c++ (gcc/clang), python2/3, openjdk/jre(other variants that user can use), clang-format/clangd yapf/autopep and the list goes on and things will be added as development proceeds.
  • Uses /tmp directory to create intermediate binaries and unsaved sources, which can be examined by user in a debugger (since we dont support debugger in IDE as of now).

Here is the snapcraft.yaml

name: cpeditor
base: core20
grade: stable
confinement: classic
adopt-info: cpeditor

        - type: apt
          formats: [deb, deb-src]
          components: [main]
          suites: [focal]
          key-id: C65D51784EDC19A871DBDBB710C56D0DE9977759

                common-id: cpeditor.desktop
                command: usr/bin/cpeditor
                        - home
                        - opengl
                        - network
                        - network-bind
                        - pulseaudio

                        - usr/share/metainfo/cpeditor.appdata.xml
                plugin: cmake
                        - build-essential
                        - qt515base
                        - qt515tools
                        - libgl1-mesa-dev
                        - qt515base
                        - -DCMAKE_INSTALL_PREFIX=/usr
                        - -DCMAKE_BUILD_TYPE=Release
                override-prime: |
                        snapcraftctl prime
                        sed -i 's|Icon=.*|Icon=${SNAP}/usr/share/icons/hicolor/512x512/apps/cpeditor.png|g' $SNAPCRAFT_PRIME/usr/share/applications/cpeditor.desktop

We use latest Qt version 5.15.2 with plan to move to Qt 6.0 once a ppa is available. I could not find any other way to get latest Qt, but hope someone can help improve it further.


This request follows under the supported IDE category to request classic confinement so requirements are understood.

@Igor could you please perform publisher vetting?

@coder3101 Hey there, what is the official email/support for cpeditor please? : Official email address : My email address with registered snap name (cpeditor)

Hey @coder3101,

Are you willing to update the installations instructions on once the snap is published? This helps on the vetting process.

Yes, we will update the docs and also add GitHub Actions pipeline so different branches (alpha, beta, stable) are automatically build and published to snap store.

1 Like

Any update on this, I have opened the Pull request for updating Installation instruction and for creating new edge release on push to master.

Doc update PR:
Pipeline for publishing snap on push:

When pushing the snap, it fails saying “REVIEW Required” for classic snap. How long until its approved?

@igor may be able to update on the progress of vetting. Once that is done then I can proceed with granting the override for classic confinement and the snap will pass automated review and can be published.

Unfortunately, based on the information provided and the criteria the security team have defined in place, I am unable to vet the publisher.

@coder3101 a generic gmail address is not sufficient to match the ownership to product/domain. If you can rectify that, I’ll be happy to +1 on this, but at the moment, I cannot. belong to us, If you want me to put some DNS TXT for the domain please let me know.

By the way, GitHub has already verified our domain, doesn’t it help?

@Igor Github has already verified our domain and I am the owner of that organization.

Any other way you want me to verify?

The simplest would be a cpeditor email associated with the domain, I think.

@Igor this is our support email address associated with domain

+1 from me, I verified the publisher.

@alexmurray @Igor has verified it. Please proceed with granting the override for classic confinement.

Thanks @Igor, classic confinement override granted, this is now live.