summaryrefslogtreecommitdiff
path: root/snapcraft.yaml
blob: 38a7895c6c66c87eb5493e55c7692ff93c861a6c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
name: network-manager
version: 1.2.2-14-dev
summary: Network management framework
description: |
  NetworkManager is a system network service that manages your network
  devices and connections, attempting to keep active network connectivity
  when available. It manages ethernet, WiFi, mobile broadband (WWAN) and
  PPPoE devices, provides VPN integration with a variety of different
  VPN serivces.
  Please find the source code at https://code.launchpad.net/~snappy-hwe-team/snappy-hwe-snaps/+git/network-manager
confinement: strict
grade: stable

slots:
  service: network-manager

plugs:
  nmcli: network-manager
  wpa:
    interface: dbus
    bus: system
    name: fi.w1.wpa_supplicant1

hooks:
  configure:
    plugs:
      - nmcli
      - network-setup-control

apps:
  nmcli:
    command: usr/bin/nmcli
    plugs: [nmcli]
    aliases: [nmcli]
  networkmanager:
    command: bin/networkmanager
    daemon: simple
    slots: [service]
    plugs: [modem-manager, ppp, network-setup-observe, wpa, firewall-control]
    # FIXME: This will create currently a symlink inside /snap/bin
    # which points nowhere as the service isn't exposed as application
    # for the user. Instead snapd needs to gain support to handle
    # aliases for services differently by adding the Alias= option
    # within the systemd unit file instead for example. Until this
    # is implemented we keep the alias disabled.
    #
    # aliases: [NetworkManager]

parts:
  hooks:
    plugin: dump
    source: hooks
    organize:
      configure: meta/hooks/configure

  networkmanager-common:
    plugin: copy
    files:
      bin/networkmanager: bin/networkmanager
      bin/dhcp-lease-mover: bin/dhcp-lease-mover
      bin/nmcli-internal: bin/nmcli-internal
      conf/NetworkManager.conf: etc/NetworkManager/NetworkManager.conf
      data/copyright: usr/share/doc/network-manager/copyright
      startup-hooks/99-wol-by-default.sh: startup-hooks/99-wol-by-default.sh

  inotify-tools:
    plugin: nil
    stage-packages:
      - libinotifytools0
      - inotify-tools
    filesets:
      wanted:
        - usr/share/doc/inotify-tools/copyright
        - usr/bin/inotifywait
        - usr/share/doc/libinotifytools0/copyright
        - usr/lib/libinotifytools.so.0.4.1
        - usr/lib/libinotifytools.so.0
    snap:
      - $wanted

  networkmanager:
    plugin: autotools

    source: https://git.launchpad.net/~snappy-hwe-team/snappy-hwe-snaps/+git/network-manager
    source-type: git
    source-branch: network-manager/xenial/1.2.2

    build-packages:
      - intltool
      - gtk-doc-tools
      - libdbus-glib-1-dev
      - libdbus-1-dev
      - libiw-dev
      - libglib2.0-dev
      - libnl-3-dev
      - libnl-route-3-dev
      - libnl-genl-3-dev
      - libnss3-dev
      - libgnutls28-dev
      - libgcrypt11-dev
      - uuid-dev
      - systemd
      - libsystemd-dev
      - libudev-dev
      - libgudev-1.0-dev
      - libgirepository1.0-dev
      - gobject-introspection
      - libglib2.0-doc
      - libmm-glib-dev
      - libndp-dev
      - libreadline-dev
      - libnewt-dev
      - dbus-test-runner
      - isc-dhcp-client
      - python-dbus
      - python-gi
      - iptables
      - ppp-dev

    # We stage everything here we need for build and runtime
    stage-packages:
      - iputils-arping
      - iw
      - libc6
      - libdbus-1-3
      - libdbus-glib-1-2
      - libgcrypt20
      - libglib2.0-0
      - libgudev-1.0-0
      - libiw-dev
      - libmbim-glib4
      - libndp0
      - libnl-3-200
      - libnl-3-dev
      - libnl-genl-3-200
      - libnl-route-3-200
      - libpam-systemd
      - libreadline6
      - libsystemd0
      - libuuid1
      - lsb-base
      - uuid-dev
      - wireless-tools

    configflags:
      # Disable all features we don't want enabled as we're not
      # supporting them (yet).
      - --prefix=/usr
      - --libdir=/usr/lib
      - --libexecdir=/usr/lib/NetworkManager
      - --disable-qt
      - --disable-teamdctl
      - --disable-polkit
      - --disable-vala
      - --disable-config-plugin-ibft
      - --with-dhcpcd=no
      - --with-dhclient=no
      - --with-dnsmasq=no
      - --with-systemd-journal=no
      - --with-session-tracking=no
      # We only support suspend/resume tracking together with systemd/logind
      # at the moment.
      - --with-suspend-resume=systemd
      # Removes dependency on libicudata which weights 25M. Also libsoup
      # is only used to verify a domain in the DNS resolve process has a
      # valid format and to check if a valid internet connection is available.
      - --with-libsoup=no
      # We want to support ModemManager
      - --with-modem-manager-1=yes
      - --enable-tests=yes

    install: |
      # Run all tests NetworkManager ships by default
      make check

    # Filter files pulled in by stage-packages so they aren't
    # included in the final snap. We only need them to build
    # NetworkManager. All runtime dependencies are pulled in with
    # the rdepends part below. The only left items specified
    # here are the results of the network manager build.
    filesets:
      binaries:
        - usr/bin/nmcli
        - usr/lib/*/NetworkManager
        - usr/lib/pppd/2.4.5/nm-pppd-plugin.so
        - usr/lib/NetworkManager
        - usr/sbin/NetworkManager
        - usr/lib/*/libnm-*
      configs:
        - etc/NetworkManager/*
      docs:
        - usr/share/doc
      rdepends:
        - lib64/*
        - lib/*/
        - usr/lib/*
      unwanted:
        # We don't want anything in usr/share but the doc folder
        # to carry all copyright information
        - -usr/share/bash-completion
        - -usr/share/bug
        - -usr/share/dbus-1
        - -usr/share/gir-1.0
        - -usr/share/glib-2.0
        - -usr/share/gtk-doc
        - -usr/share/lintian
        - -usr/share/locale
        - -usr/share/man
        - -usr/share/pam-configs
        - -usr/share/polkit-1
        - -usr/share/upstart

        # We don't use dhclient so we don't need this helper
        - -usr/lib/NetworkManager/nm-dhcp-helper
        # Things we don't support yet and don't have to ship
        - -usr/lib/NetworkManager/libnm-device-plugin-adsl.so
        - -usr/lib/NetworkManager/libnm-device-plugin-bluetooth.so
        - -usr/lib/NetworkManager/libnm-settings-plugin-ibft.so

        # Unwanted content coming from the stage debian packages
        - -etc/
        # Contains many libraries which are already present in usr/lib/
        - -lib/
        - -usr/include/
        - -usr/etc
        - -usr/sbin/invoke-rc.d
        - -usr/sbin/service
        - -usr/sbin/update-rc.d
        - -usr/lib/dbus-1.0/
        - -usr/lib/tmpfiles.d/
        - -usr/lib/*/pkgconfig
        - -usr/lib/pkgconfig
        - -usr/lib/gcc/
        - -usr/lib/*/gconv/
        - -usr/lib/girepository-1.0/
        - -usr/lib/systemd/
        - -usr/lib/udev/
        - -usr/lib/*.a
        - -usr/lib/*/*.a
        - -usr/lib/*.la
        - -usr/lib/*/*.la
        - -usr/lib/*/*.o
        - -usr/lib/*/systemd-shim
        - -usr/lib/*/systemd-shim-cgroup-release-agent
    snap:
      - $binaries
      - $configs
      - $docs
      - $rdepends
      - $unwanted