• Stars
    star
    1,185
  • Rank 38,497 (Top 0.8 %)
  • Language
    HTML
  • License
    GNU General Publi...
  • Created about 10 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Easy setup of common tools for developers on Ubuntu.

Ubuntu Make

Ubuntu Make is a project designed to enable quick and easy setup of common needs for developers on Ubuntu.

Get it from the Snap Store

Current project health

Build Status (pep8 and small tests)

Translation status

Installing

SNAP

We recommend to use the Ubuntu Make snap to ensure you always have the latest and greatest version, even on older supported releases.

$ snap install ubuntu-make --classic

If installed via the snap it can be run as ubuntu-make.umake, or via the alias umake

Ubuntu Make interacts heavily with the system, in particular with the apt database. Confined or devmode snaps aren’t able to do that.

Transitioning to a classic snap gives us the same power than a debian package on this regard, while still enabling for a smoother transition.

More information on this confined snap is available at https://didrocks.fr/2017/07/05/ubuntu-make-as-a-classic-snap-intro/

PPA

There is also a daily built ppa:

sudo add-apt-repository ppa:lyzardking/ubuntu-make
sudo apt-get update
sudo apt-get install ubuntu-make

Listing

Umake has three listing options:

  • --list to show all the frameworks
  • --list-available to show the available frameworks
  • --list-installed to show the installed frameworks

Running the command line tool

To run the tool:

$ ./umake

You can use --help to get more information and change the verbosity of the output with -v, -vv.

Requirements

Note that this project uses python3 and requires at least python 3.3. All commands use the python 3 version. There are directions later on explaining how to install the corresponding virtualenv.

Shell completion

To enable shell completion on bash or zsh, just run:

$ . enable_completion

Different level of logging

Multiple logging profiles are available in confs/ to be able to have different traces of your execution (particularly useful for debugging). For instance, you will find:

  • debug.logcfg: Similar to using -vv, but also puts logs in a debug.log.
  • debug_network.logcfg: The root logging level is INFO (-v), the network activities are in DEBUG mode and will be logged in debug_network.log.
  • testing.logcfg: Mostly for coverage tests, do not set any logging config on stdout, but:
  • DEBUG logs and above are available in debug.log.
  • INFO logs and above are available in info.log.
  • WARNING and ERROR logs are available in error.log.

Under normal circumstances, we expect error.log to remain empty../

To load one of those logging profiles:

$ LOG_CFG=confs/debug.logcfg bin/umake

Development

Providing user's framework

It's possible for anyone to have local frameworks for either development purposes or for special local or team use-cases.

  • Any files in a directory set with the "UMAKE_FRAMEWORKS" environment variable will be loaded first.
  • Any files inside ~/.umake/frameworks will be loaded next.

Any file should eventually contain a category or frameworks like the ones in umake/frameworks/*.

If category names are duplicated only one will be loaded. Ubuntu Make will first load the one controlled by the environment variable, then the one located in the home based directory, and finally, the system one. Note that duplicate filenames are supported but not encouraged.

Style guide and checking

We are running pep8, but the max line length has been relaxed to 120. env/ is excluded from the pep8 check as well.

Running this test, in particular:

$ ./runtests pep8

This will run those pep8 checks on the code.

You can also run the pycodestyle or pep8 tool directly from the project directory:

$ pycodestyle/pep8 .

Tests

Types of tests

There are four types of tests that can be combined in runtests:

  • pep8: Run the pep8 tests on all the umake and test code.
  • small: Tests modules and components with mock content around them. Note that this uses a local webserver (http and https) to serve mock content.
  • medium: Tests the whole workflow. It directly calls end user tools from the command line, but without affecting the local system. Requirements like installing packages are mocked, as well as the usage of a local webserver serving (smaller) content similar to what will be fetched in a real use case. The assets have the same formats and layout.
  • large: Runs the same tests as the medium test, but with real server downloads and installation of dpkg packages. Most of these tests need root privileges. Be aware that these tests only run on a graphical environment. It will interfere with it and it is likely to install or remove packages on your system.

To run all the tests, with coverage report:

$ ./runtests

Running some tests with all debug info

By default, runtests will not display any debug output if the tests are successful, similar to pytest. However, if only tests are selected, runtests will a display full debug log,

$  ./runtests tests/small/test_tools.py::TestConfigHandler

More information on runtests

runtests is a small pytest wrapper used to simplify the testing process. By default, if no arguments are supplied, runtests will run all available tests on the project using the production nose configuration. It is possible to run only some types of tests:

$ ./runtests small medium

This will only run small and medium tests, with all pytest defaults (no profile is selected).

Finally, you can run a selection of one or more tests:

$ ./runtests tests/small/test_tools.py::TestConfigHandler

You can activate/disable/change any of those default selected configurations with --config/--coverage/--debug/ (see runtests --help for more information)

Check for Python warnings:

runtests is compatible with showing the Python warnings:

$ PYTHONWARNINGS=d ./runtests

Create your own environment and run from it

For an easier development workflow, we encourage the use of virtualenv to test and iterate on the project rather than installing all the requirements on your machine. In the project root directory run (env/ is already in .gitignore and excluded from pep8 checking):

$ virtualenv --python=python3 --system-site-packages env
$ sudo apt-get install -qq python3-apt # use the system version of python apt
$ sudo apt-get install -qq python3-gi # not installable with pypi
$ sudo apt-get install -qq bzr python3-dev # requires for pip install -r
$ env/bin/pip install -r requirements.txt
$ source env/bin/activate
$ bin/umake

Developing using system package

Instead of using a virtual environment, you can install system packages to be able to run the Ubuntu Make tests. The build dependencies are listed in debian/control and should be available in recent Ubuntu versions.

Release management

Refresh .pot files:

$ ./setup.py update_pot

More Repositories

1

yaru

All Ubuntu Yaru GNOME themes
SCSS
1,300
star
2

gnome-shell-extension-appindicator

Adds KStatusNotifierItem support to the Shell
JavaScript
1,107
star
3

app-center

App Store for Ubuntu made with Flutter 🧑 πŸ’™
Dart
586
star
4

archive_yaru.dart

Ubuntu Yaru Flutter Theme
Dart
336
star
5

zsys

ZSys daemon and client for zfs systems
Go
300
star
6

adsys

Active Directory bridging tool suite
Go
179
star
7

snappy-playpen

ARCHIVED. Preserved for posterity, but these examples are no longer maintained here. Please take discussion to the snapcraft forum.
Shell
179
star
8

yaru.dart

Ubuntu Yaru Flutter widgets and themes for building desktop and web applications
Dart
176
star
9

gnome-shell-communitheme

GNOME Shell Ubuntu community theme "communitheme"
CSS
149
star
10

aad-auth

Azure AD authentication module for Ubuntu
Go
143
star
11

WSL

Ubuntu WSL image build and launcher code.
Go
123
star
12

snapcraft-desktop-helpers

Various launchers for snapcraft wiki parts
C
73
star
13

ubuntu-report

Report hardware and other collected metrics like installer or upgrade information
Go
68
star
14

libreoffice-style-yaru-fullcolor

A fullcolor icon pack for Libreoffice of the awesome Yaru theme
Shell
62
star
15

face-detection-demo

Code for face detection demo snap
Go
36
star
16

authd

Authentication daemon for external Brokers
Go
36
star
17

snap-tutorials-code

Code and examples used in snap related tutorials
QML
34
star
18

archive_yaru_icons.dart

Ubuntu Yaru Flutter Icon Theme
Dart
28
star
19

handy_window.dart

Provides modern-looking Handy windows with rounded bottom corners for Flutter applications on Linux
C
25
star
20

codelabs

Ubuntu codelabs offline website
HTML
24
star
21

yaru_colors.dart

Yaru Colors for Flutter
Dart
23
star
22

user_manager

A tutorial for creating an Ubuntu Linux Flutter app, using the yaru theme
Dart
21
star
23

yaru_window.dart

Provides API for interacting with top-level Flutter windows.
Dart
20
star
24

font-ubuntu

Polymer imports for ubuntu fonts.
HTML
18
star
25

libreoffice

This repository hosts the snap info to package up the Libreoffice snap.
Python
18
star
26

zsys-install

Zfs experiment on ubuntu system
Shell
18
star
27

gnome-sdk

GNOME SDK/Platform snap
Python
16
star
28

codelabs-source

HTML
16
star
29

wsl-setup

WSL setup starts the setup and reconfigure GUI or TUI
15
star
30

ubuntu-wsl-splash

A graphical application to enhance user experience with Ubuntu on WSL during the distro installation process.
Dart
14
star
31

desktop-snaps

Snap automation tools
Python
12
star
32

docker-snapcraft

Docker image autobuild for latests snapcraft on latest ubuntu LTS version
12
star
33

zfs

Temporary fork of ZOL (manually pushed to have it in github dashboard)
C
11
star
34

tutorial-deployment

Tutorial deployment tools
Go
11
star
35

gnome-boxes

GNOME Boxes
Shell
9
star
36

thunderbird

Python
9
star
37

GoWSL

GoWSL is a package that wraps around the wslApi.dll for safe and idiomatic use within Go projects.
Go
9
star
38

ubuntu-proxy-manager

D-Bus service to manage system proxy settings on Ubuntu Desktop
Go
8
star
39

gnome-calculator

GNOME Calculator Snap Package
8
star
40

microk8s-website

HTML
8
star
41

communitheme-sounds

The Ubuntu community sound theme "Communitheme"
Meson
8
star
42

communitheme-snap-helpers

Various build and run helper for communitheme snap
Shell
7
star
43

grubzfs-testsuite

Test for zfs (zsys/non zsys) grub menu generation
Go
7
star
44

snow-on-me-snap

A simple nodejs webserver serving christmas snow on demand and showing up configure snap options
JavaScript
7
star
45

homebrew-microk8s

Homebrew MicroK8s repo for the MacOS installer
Ruby
6
star
46

cheese

Take photos and videos with your webcam, with fun graphical effects
6
star
47

gtk-common-themes

Shell
6
star
48

ubuntu-release-metrics

Code to fetch data to display on https://ubuntu-release.kpi.ubuntu.com/
Python
6
star
49

uupgrade-web

Ubuntu Upgrade checker web frontend
Python
6
star
50

face-detection-web

Single page website for face detection (using face-detection-demo backend) using Polymer
JavaScript
6
star
51

gnome-system-monitor

System Monitor
5
star
52

yaru_test.dart

Extensions for testing Yaru Flutter applications
Dart
5
star
53

simple-webserver-part

Snapcraft simple webserver part
Go
5
star
54

gedit

Edit text files
5
star
55

dev-scripts-ubuntu

Random scripts for doing Ubuntu work
Python
5
star
56

communitheme-set-default

Tools to help end user resetting communitheme settings
Shell
5
star
57

desktop-devel-feedback

Shell
5
star
58

snap-tools

Tools useful for snap maintenance by the ~ubuntu-desktop team
Shell
5
star
59

christmas-music-carousel-snap

Snap for a christmas music carousel
Go
5
star
60

desktop-cve-import

Build reports of the Ubuntu Desktop Snaps which could benefit from a rebuild to fix CVE issues in their staged packages
Python
5
star
61

wsl-actions-example

A small demonstration on how to use our Github actions to run your CI on WSL
Python
5
star
62

uupgrade-docker

Docker containers for upgrade jobs
Shell
4
star
63

kstore

Key store
C
4
star
64

booth-demo-websites

Demo websites configuration for Ubuntu Demo manager
4
star
65

community-fosdem-2022-content

4
star
66

gnome-text-editor

GNOME Text Editor
4
star
67

app-center-ratings

Rust
4
star
68

booth-demo-manager

Display snap for events
Go
4
star
69

gnome-chess

This repository is the snap data that grabs the upstream gnome-chess and packages it as a snap.
4
star
70

ubuntu-core-slides

Web version of ubuntu-core-slides exported.
4
star
71

community-fosdem-2022-static

4
star
72

gnome-mines

Clear hidden mines from a minefield
4
star
73

gnome-shell-ubuntu-extensions

The ubuntu gnome-shell-extensions
4
star
74

snaps-demo-manager

Manage snaps used in our demo by autoinstalling, autoremoving and such
Go
3
star
75

simple-scan

Document Scanning Application
3
star
76

go-i18n

i18n wrapper joining gettext support for Linux and Windows
Go
3
star
77

uupgrade-worker

3
star
78

tali

Roll dice and score points
3
star
79

gnome-sudoku

3
star
80

gnome-font-viewer

3
star
81

evince

Document viewer for popular document formats
3
star
82

decorate

Go package containing various helpers to decorate errors with fewer lines of code in functions.
Go
3
star
83

quadrapassel

Quadrapassel Snap Package
3
star
84

gtk-theme-pop

Shell
3
star
85

snap-theme-examples

Experimenting some snap themes possible syntax
3
star
86

gnome-mahjongg

Match tiles and clear the board
3
star
87

gnome-2048

GNOME 2048 Snap Package
3
star
88

test-contributions-review

This is just a project to test contribution review solutions
C++
3
star
89

gnome-contacts

snap packaging for gnome-contacts
2
star
90

gnome-taquin

2
star
91

gnome-info-collect

A simple utility to collect system information.
2
star
92

community-events-assets

2
star
93

gnome-dictionary

2
star
94

gnome-recipes

Snap packaging for gnome-recipes
2
star
95

gnome-characters

A character map application
2
star
96

gnome-weather

2
star
97

gnome-logs

Log viewer for the systemd journal
2
star
98

drawing

2
star
99

epiphany

snap packaging for epiphany (GNOME Web)
2
star
100

community-events-celery

2
star