Closed gclawes closed 5 years ago
We should target 1.3.x, feel free to ask if you have any questions regarding the build process.
Thanks! A few things to clarify to start with:
.travis.yml
You're welcome!
I'll try a multistage build, compiling a static binary in fedora:30
and installing to alpine
to keep the image size small.
Sounds good!
ICE isn't available on fedora
anymore, going with ubuntu:disco
No problem.
It looks like for static
builds, src/murmur/murmur_ice/murmur_ice.pro always expects slice2cpp to be at /opt/Ice-3.3/bin/slice2cpp
, throwing an error when it isn't there. Is there a reason for static builds hard-coding this?
Step 7/7 : RUN make release
---> Running in a159492cb0ff
cd src/mumble_proto/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Makefile /root/mumble/src/mumble_proto/mumble_proto.pro CONFIG+=no-client CONFIG+=grpc CONFIG+=static ) && make -f Makefile release
make[1]: Entering directory '/root/mumble/src/mumble_proto'
make -f Makefile.Release
make[2]: Entering directory '/root/mumble/src/mumble_proto'
/usr/bin/protoc --cpp_out=. -I. -I.. -I.. ../Mumble.proto
g++ -c -pipe -fvisibility=hidden -Wall -Wextra -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -O2 -fPIC -std=gnu++1z -w -pthread -DRESTRICT=__restrict__ -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o ../../release/.obj/mumble_proto/Mumble.pb.o Mumble.pb.cc
rm -f ../../release/libmumble_proto.a
ar cqs ../../release/libmumble_proto.a ../../release/.obj/mumble_proto/Mumble.pb.o
make[2]: Leaving directory '/root/mumble/src/mumble_proto'
make[1]: Leaving directory '/root/mumble/src/mumble_proto'
cd src/murmur/murmur_ice/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Makefile /root/mumble/src/murmur/murmur_ice/murmur_ice.pro CONFIG+=no-client CONFIG+=grpc CONFIG+=static ) && make -f Makefile release
make[1]: Entering directory '/root/mumble/src/murmur/murmur_ice'
make -f Makefile.Release
make[2]: Entering directory '/root/mumble/src/murmur/murmur_ice'
/opt/Ice-3.3/bin/slice2cpp --checksum -I/opt/Ice-3.3/slice ../Murmur.ice
make[2]: /opt/Ice-3.3/bin/slice2cpp: Command not found
make[2]: *** [Makefile.Release:188: Murmur.cpp] Error 127
make[2]: Leaving directory '/root/mumble/src/murmur/murmur_ice'
make[1]: Leaving directory '/root/mumble/src/murmur/murmur_ice'
make[1]: *** [Makefile:42: release] Error 2
make: *** [Makefile:451: sub-src-murmur-murmur_ice-release_ordered] Error 2
The command '/bin/sh -c make release' returned a non-zero code: 2
Ubuntu installs it at /usr/bin/slice2cpp
This is configured here as well: https://github.com/mumble-voip/mumble/blob/master/src/murmur/murmur.pro#L139
Feel free to delete those lines, they were added more than a decade ago in commit f4064dfe8d076bab5c16d5b93983e0ec1c3a269a (a dedicated project for Ice was created later, in d8889f8bde96d1d998e5c25af6886aede5986889).
Thanks, will do.
I'm running into an issue building the GRPC support:
---> Running in bc9370b71c51
cd src/mumble_proto/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Makefile /root/mumble/src/mumble_proto/mumble_proto.pro 'CONFIG+=no-client grpc static' ) && make -f Makefile
make[1]: Entering directory '/root/mumble/src/mumble_proto'
make -f Makefile.Release
make[2]: Entering directory '/root/mumble/src/mumble_proto'
/usr/bin/protoc --cpp_out=. -I. -I.. -I.. ../Mumble.proto
g++ -c -pipe -fvisibility=hidden -Wall -Wextra -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -O2 -fPIC -std=gnu++1z -w -pthread -DRESTRICT=__restrict__ -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o ../../release/.obj/mumble_proto/Mumble.pb.o Mumble.pb.cc
rm -f ../../release/libmumble_proto.a
ar cqs ../../release/libmumble_proto.a ../../release/.obj/mumble_proto/Mumble.pb.o
make[2]: Leaving directory '/root/mumble/src/mumble_proto'
make[1]: Leaving directory '/root/mumble/src/mumble_proto'
cd src/murmur/murmur_ice/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Makefile /root/mumble/src/murmur/murmur_ice/murmur_ice.pro 'CONFIG+=no-client grpc static' ) && make -f Makefile
make[1]: Entering directory '/root/mumble/src/murmur/murmur_ice'
make -f Makefile.Release
make[2]: Entering directory '/root/mumble/src/murmur/murmur_ice'
slice2cpp --checksum -I/usr/local/share/Ice -I/usr/share/Ice/slice -I/usr/share/ice/slice -I/usr/share/slice -I/usr/share/Ice-3.7.2/slice/ ../Murmur.ice
g++ -c -pipe -fvisibility=hidden -Wall -Wextra -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -O2 -fPIC -std=gnu++1z -w -DRESTRICT=__restrict__ -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o ../../../release/.obj/murmur_ice/Murmur.o Murmur.cpp
rm -f ../../../release/libmurmur_ice.a
ar cqs ../../../release/libmurmur_ice.a ../../../release/.obj/murmur_ice/Murmur.o
make[2]: Leaving directory '/root/mumble/src/murmur/murmur_ice'
make[1]: Leaving directory '/root/mumble/src/murmur/murmur_ice'
cd src/murmur_grpcwrapper_protoc_plugin/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Makefile /root/mumble/src/murmur_grpcwrapper_protoc_plugin/murmur_grpcwrapper_protoc_plugin.pro 'CONFIG+=no-client grpc static' ) && make -f Makefile
make[1]: Entering directory '/root/mumble/src/murmur_grpcwrapper_protoc_plugin'
make -f Makefile.Release
make[2]: Entering directory '/root/mumble/src/murmur_grpcwrapper_protoc_plugin'
g++ -c -pipe -fvisibility=hidden -Wall -Wextra -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -I../mumble_proto -isystem ../mumble_proto -O2 -std=gnu++1z -pthread -Wall -W -D_REENTRANT -fPIC -DRESTRICT=__restrict__ -DMUMBLE_VERSION_STRING=1.3.0 -I. -I../../src -I. -I../mumble_proto -I../../3rdparty/arc4random-src -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o ../../release/.obj/murmur_grpcwrapper_protoc_plugin/main.o main.cpp
g++ -Wl,-z,relro -Wl,-z,now -Wl,-O1 -o ../../release/protoc-gen-murmur-grpcwrapper ../../release/.obj/murmur_grpcwrapper_protoc_plugin/main.o -L/root/mumble/release -L/usr/lib/x86_64-linux-gnu/c++11 -lprotoc -lssl -lcrypto -ldl -lprotobuf -pthread -lz -lpthread
make[2]: Leaving directory '/root/mumble/src/murmur_grpcwrapper_protoc_plugin'
make[1]: Leaving directory '/root/mumble/src/murmur_grpcwrapper_protoc_plugin'
cd src/murmur/murmur_grpc/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Makefile /root/mumble/src/murmur/murmur_grpc/murmur_grpc.pro 'CONFIG+=no-client grpc static' ) && make -f Makefile
make[1]: Entering directory '/root/mumble/src/murmur/murmur_grpc'
make -f Makefile.Release
make[2]: Entering directory '/root/mumble/src/murmur/murmur_grpc'
/usr/bin/protoc --cpp_out=. -I. -I.. ../MurmurRPC.proto
/usr/bin/protoc --grpc_out=. --plugin=protoc-gen-grpc= -I. -I.. ../MurmurRPC.proto
: program not found or is not executable
--grpc_out: protoc-gen-grpc: Plugin failed with status code 1.
make[2]: *** [Makefile.Release:208: MurmurRPC.grpc.pb.cc] Error 1
make[2]: Leaving directory '/root/mumble/src/murmur/murmur_grpc'
make[1]: Leaving directory '/root/mumble/src/murmur/murmur_grpc'
make[1]: *** [Makefile:42: release] Error 2
make: *** [Makefile:180: sub-src-murmur-murmur_grpc-make_first-ordered] Error 2
The command '/bin/sh -c make' returned a non-zero code: 2
It looks like it can't find the protoc-gen-grpc
plugin.
For reference, here's the Dockerfile I'm currently using:
FROM ubuntu:disco
# needed to install tzdata in disco
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
build-essential \
pkg-config \
qt5-default \
libboost-dev \
libasound2-dev \
libssl-dev \
libspeechd-dev \
libzeroc-ice-dev \
libpulse-dev \
libcap-dev \
libprotobuf-dev \
protobuf-compiler \
libprotoc-dev \
libogg-dev \
libavahi-compat-libdnssd-dev \
libsndfile1-dev \
libgrpc++-dev \
libxi-dev \
qtcreator
COPY . /root/mumble
WORKDIR /root/mumble
RUN qmake -recursive main.pro CONFIG+="no-client grpc static"
RUN make
I had to add libprotoc-dev
to the dependency list (originally from https://wiki.mumble.info/wiki/BuildingLinux#1.3.x).
Fixed by installing protobuf-compiler-grpc
Latest issue is related to building a static binary:
...
usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libIce.a(DynamicLibrary.o): in function `IceInternal::DynamicLibrary::load(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
(.text+0x195): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/bin/ld: cannot find -lcares
/usr/bin/ld: cannot find -lQt5Network
/usr/bin/ld: cannot find -lQt5Sql
/usr/bin/ld: cannot find -lQt5Xml
/usr/bin/ld: cannot find -lQt5DBus
/usr/bin/ld: cannot find -lQt5Core
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile.Release:359: ../../release/murmurd] Error 1
make[2]: Leaving directory '/root/mumble/src/murmur'
make[1]: *** [Makefile:42: release] Error 2
make[1]: Leaving directory '/root/mumble/src/murmur'
make: *** [Makefile:223: sub-src-murmur-make_first-ordered] Error 2
The command '/bin/sh -c make' returned a non-zero code: 2
Unfortunately Ubuntu doesn't provide a statically built version of Qt, however there's a Docker Hub image available which provides it on top of the latest version of Ubuntu: https://hub.docker.com/r/fffaraz/qt
In that case, I think I'll give up on the static build for now and stick with upstream ubuntu, it's still a fairly small image. I looked at alpine, and it looks like it doesn't have packages for ice or libspeechd (and probably others), so building with that would be tough.
Indeed.
Interestingly, alpine builds with a bunch of features disabled: https://git.alpinelinux.org/aports/tree/community/mumble/APKBUILD
CONFIG+="no-speechd no-g15 no-update no-ice bundled-celt no-embed-qt-translations no-bundled-speex"
I'm guessing we want a more full-featured build for the official image.
The Alpine build is missing Ice, G15 and speechd.
The other options are there because it's a distribution package and thus it should use the system components (e.g. Speex), aside from bundled-celt
which is not required because it's the default (opposite of no-bundled-celt
).
Gotcha. I'm using this config to build: CONFIG+="no-client grpc"
. From what I can tell G15 doesn't even come into play for a server-only build.
Getting towards the finish line here. It looks like make install
isn't actually doing anything:
root@43196fac1061:~/mumble# make install
cd src/mumble_proto/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Makefile /root/mumble/src/mumble_proto/mumble_proto.pro 'CONFIG+=no-client grpc' ) && make -f Makefile install
make[1]: Entering directory '/root/mumble/src/mumble_proto'
make -f Makefile.Release install
make[2]: Entering directory '/root/mumble/src/mumble_proto'
make[2]: Nothing to be done for 'install'.
make[2]: Leaving directory '/root/mumble/src/mumble_proto'
make[1]: Leaving directory '/root/mumble/src/mumble_proto'
cd src/murmur/murmur_ice/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Makefile /root/mumble/src/murmur/murmur_ice/murmur_ice.pro 'CONFIG+=no-client grpc' ) && make -f Makefile install
make[1]: Entering directory '/root/mumble/src/murmur/murmur_ice'
make -f Makefile.Release install
make[2]: Entering directory '/root/mumble/src/murmur/murmur_ice'
make[2]: Nothing to be done for 'install'.
make[2]: Leaving directory '/root/mumble/src/murmur/murmur_ice'
make[1]: Leaving directory '/root/mumble/src/murmur/murmur_ice'
cd src/murmur_grpcwrapper_protoc_plugin/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Makefile /root/mumble/src/murmur_grpcwrapper_protoc_plugin/murmur_grpcwrapper_protoc_plugin.pro 'CONFIG+=no-client grpc' ) && make -f Makefile install
make[1]: Entering directory '/root/mumble/src/murmur_grpcwrapper_protoc_plugin'
make -f Makefile.Release install
make[2]: Entering directory '/root/mumble/src/murmur_grpcwrapper_protoc_plugin'
make[2]: Nothing to be done for 'install'.
make[2]: Leaving directory '/root/mumble/src/murmur_grpcwrapper_protoc_plugin'
make[1]: Leaving directory '/root/mumble/src/murmur_grpcwrapper_protoc_plugin'
cd src/murmur/murmur_grpc/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Makefile /root/mumble/src/murmur/murmur_grpc/murmur_grpc.pro 'CONFIG+=no-client grpc' ) && make -f Makefile install
make[1]: Entering directory '/root/mumble/src/murmur/murmur_grpc'
make -f Makefile.Release install
make[2]: Entering directory '/root/mumble/src/murmur/murmur_grpc'
make[2]: Nothing to be done for 'install'.
make[2]: Leaving directory '/root/mumble/src/murmur/murmur_grpc'
make[1]: Leaving directory '/root/mumble/src/murmur/murmur_grpc'
cd src/murmur/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Makefile /root/mumble/src/murmur/murmur.pro 'CONFIG+=no-client grpc' ) && make -f Makefile install
make[1]: Entering directory '/root/mumble/src/murmur'
make -f Makefile.Release install
make[2]: Entering directory '/root/mumble/src/murmur'
make[2]: Nothing to be done for 'install'.
make[2]: Leaving directory '/root/mumble/src/murmur'
make[1]: Leaving directory '/root/mumble/src/murmur'
What from the release/
directory actually needs to be installed? I'll copy that over to a clean build stage.
root@43196fac1061:~/mumble# ls -l release/
total 13139
-rw-r--r-- 1 root root 761012 May 8 01:13 libmumble_proto.a
-rw-r--r-- 1 root root 3813224 May 8 01:13 libmurmur_grpc.a
-rw-r--r-- 1 root root 2184568 May 8 01:13 libmurmur_ice.a
-rwxr-xr-x 1 root root 6386336 May 8 01:15 murmurd
-rwxr-xr-x 1 root root 47120 May 8 01:13 protoc-gen-murmur-grpcwrapper
From what I can tell G15 doesn't even come into play for a server-only build.
Correct, it's only for the client. It provides support for the LCD of certain Logitech devices, such as the G15 keyboard.
What from the
release/
directory actually needs to be installed? I'll copy that over to a clean build stage.
Just murmurd
.
Got it running:
gclawes@enterprise ~/development/gclawes/mumble git:(docker*) $ docker run -it --rm murmur-test
<W>2019-05-08 03:44:52.450 SSL: OpenSSL version is 'OpenSSL 1.1.1b 26 Feb 2019'
<W>2019-05-08 03:44:52.451 Initializing settings from /home/murmur/.murmurd/murmur.ini (basepath /home/murmur/.murmurd)
<W>2019-05-08 03:44:52.482 MetaParams: TLS cipher preference is "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:AES256-SHA:AES128-SHA"
<W>2019-05-08 03:44:52.484 ServerDB: Opened SQLite database /home/murmur/murmur.sqlite
<W>2019-05-08 03:44:52.484 ServerDB: Using SQLite's default rollback journal.
<W>2019-05-08 03:44:53.688 Performed initial PBKDF2 benchmark. Will use 16000 iterations as default
<W>2019-05-08 03:44:53.688 Generating new tables...
<W>2019-05-08 03:44:53.719 OSInfo: Failed to execute lsb_release
<W>2019-05-08 03:44:53.719 Murmur 1.3.0 (Compiled by User) running on X11: Linux 4.20.14-gentoo-r1: Booting servers
<W>2019-05-08 03:44:53.758 1 => Password for 'SuperUser' set to 'tjxbJYKHQyE2'
<W>2019-05-08 03:44:53.788 1 => Server listening on 0.0.0.0:64738
<W>2019-05-08 03:44:53.793 1 => Failed to set IPV6_RECVPKTINFO for 0.0.0.0:64738
<W>2019-05-08 03:44:53.838 1 => Generating new server certificate.
<W>2019-05-08 03:44:53.875 1 => Announcing server via bonjour
<W>2019-05-08 03:44:53.884 1 => Not registering server as public
What's the best way to configure the default directories (for murmur.ini, sqlite db, etc)?
You can specify the path to the configuration file with the -ini
parameter.
I'll set that in the default CMD
for the container.
Opened PR. Once it's merged, can an official DockerHub repository be created?
Of course!
Cool. My recommendation would be to use the :latest
docker tag to mean "latest tagged release". If you want a docker tag for the latest commit to master, :snapshot
or :edge
is usually the pattern I've seen for that. We should probably manually push the first images then let DockerHub Builds handle any subsequent releases.
Once this is merged into master, this can be done with these commands:
$ git checkout 1.3.0-rc1
$ git checkout master -- Dockerfile
$ docker build -t mumble-voip/murmur:1.3.0-rc1 -t mumble-voip/murmur:latest .
$ docker push mumble-voip/murmur:1.3.0-rc1
$ docker push mumble-voip/murmur:latest
If you want to make me a collaborator on the DockerHub project (same username, gclawes), I can take care of this.
Thank you very much!
I created an organization and invited you, unfortunately I had to call it mumblevoip
because mumble
was already taken and only alphanumeric characters are allowed.
Interesting. It looks like the mumble
organization links to http://mumble.info/
.
Does it make sense to rename the image to mumblevoip/murmur
to indicate that it's the server component only?
Definitely, maybe renaming it to mumblevoip/mumble-server
would be even better.
Can you also link the dockerhub repo (mumblevoip/mumble-server
) to the mumblevoip/mumble
GitHub account so I can configure auto-builds? I think that makes more sense than linking to my personal account.
I created a dedicated account and connected it to the Docker Hub organization.
I see MumbleDockerBot
connected to the docker repo, but it doesn't seem to have access to the github repo to pull for builds:
It seems to be a Docker Hub issue, even with my GitHub account it doesn't show any repositories.
I'll push the images for mumblevoip/mumble:1.3.0-rc1
/mumblevoip/mumble:latest
manually for now
I think this may be the procedure to grant DockerHub access to the mumble-voip
GitHub organization: https://docs.docker.com/docker-hub/builds/link-source/#grant-access-to-a-github-organization
I granted access to the organization, but the issue persists.
I'm not seeing the mumble-voip
organization available in the builds menu, just MumbleDockerBot
:
Was any attempt made to claim the mumble organisation? Looking at the Docker Terms of Service under 4. Usernames they might be able to give you the handle:
4.1 We reserve the right to reclaim usernames on behalf of businesses or individuals that hold legal claim or trademark to those usernames. Accounts using business names and/or logos that may be considered misleading to others may be permanently suspended. We also reserve the right to reclaim usernames using Docker trademarks or usernames that violate the Docker Trademark Guidelines (the “Trademark Guidelines”), which are hereby incorporated into these Terms by reference.
4.3 Username Squatting. You may not and may not allow any third party to engage in username squatting. Accounts that are inactive for more than six months may be terminated at our discretion and without further notice. We take into account several factors when determining what conduct is considered to be username squatting including, without limitation: a. The number of accounts created b. Creating accounts for the purpose of preventing others from using those account names c. Creating accounts for the purpose of selling those accounts
Seeing as the account doesn't have any public repos it doesn't look like it's active.
How can I find the official docker repo? Thank you
@krono86 the Dockerfile is here: https://github.com/mumble-voip/mumble/blob/master/Dockerfile
Is that what you meant?
@krono86, we don't have an official Docker repository. As @Krzmbrzl mentioned - you can use Dockerfile from Mumble's git repository, to build Docker image.
@Krzmbrzl, @davidebeatrici, @Kissaki, we should think about adding an official Murmur image to Docker Hub. I could try to do that.
An official Murmur image to Docker Hub would be great!
I'm traying to create the container using docker-compose.
Here my Dockerfile:
FROM ubuntu:latest
# needed to install tzdata in disco
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
build-essential \
pkg-config \
qt5-default \
libboost-dev \
libasound2-dev \
libssl-dev \
libspeechd-dev \
libzeroc-ice-dev \
libpulse-dev \
libcap-dev \
libprotobuf-dev \
protobuf-compiler \
protobuf-compiler-grpc \
libprotoc-dev \
libogg-dev \
libavahi-compat-libdnssd-dev \
libsndfile1-dev \
libgrpc++-dev \
libxi-dev \
libbz2-dev \
qtcreator
COPY . /root/mumble
WORKDIR /root/mumble
RUN qmake -recursive main.pro CONFIG+="no-client grpc"
RUN make release
# Clean distribution stage
FROM ubuntu:latest
RUN adduser murmur
RUN apt-get update && apt-get install -y \
libcap2 \
libzeroc-ice3.7 \
'^libprotobuf[0-9]+$' \
'^libgrpc[0-9]+$' \
libgrpc++1 \
libavahi-compat-libdnssd1 \
libqt5core5a \
libqt5network5 \
libqt5sql5 \
libqt5xml5 \
libqt5dbus5 \
&& rm -rf /var/lib/apt/lists/*
COPY --from=0 /root/mumble/release/murmurd /usr/bin/murmurd
COPY --from=0 /root/mumble/scripts/murmur.ini /etc/murmur/murmur.ini
RUN mkdir /var/lib/murmur && \
chown murmur:murmur /var/lib/murmur && \
sed -i 's/^database=$/database=\/var\/lib\/murmur\/murmur.sqlite/' /etc/murmur/murmur.ini
EXPOSE 64738/tcp 64738/udp 50051
USER murmur
CMD /usr/bin/murmurd -v -fg -ini /etc/murmur/murmur.ini
and my docker-compose.yml:
version: '3'
services:
mumble:
build: .
ports:
- "64738:64738/tcp"
- "64738:64738/udp"
- "50051:50051"
I obtain an error:
Building mumble
Step 1/16 : FROM ubuntu:latest
---> 4e5021d210f6
Step 2/16 : ENV DEBIAN_FRONTEND=noninteractive
---> Using cache
---> 208d15024546
Step 3/16 : RUN apt-get update && apt-get install -y build-essential pkg-config qt5-default libboost-dev libasound2-dev libssl-dev libspeechd-dev libzeroc-ice-dev libpulse-dev libcap-dev libprotobuf-dev protobuf-compiler protobuf-compiler-grpc libprotoc-dev libogg-dev libavahi-compat-libdnssd-dev libsndfile1-dev libgrpc++-dev libxi-dev libbz2-dev qtcreator
---> Using cache
---> ccdab6adcbc0
Step 4/16 : COPY . /root/mumble
---> 9012aafe26c0
Step 5/16 : WORKDIR /root/mumble
---> Running in 1efdf1ceabcb
Removing intermediate container 1efdf1ceabcb
---> 81ff8e0cbb71
Step 6/16 : RUN qmake -recursive main.pro CONFIG+="no-client grpc"
---> Running in a580d5b9625b
Cannot find file: main.pro.
ERROR: Service 'mumble' failed to build: The command '/bin/sh -c qmake -recursive main.pro CONFIG+="no-client grpc"' returned a non-zero code: 2
It seams that main.pro is not found. What's happening?
It seams that main.pro is not found. What's happening?
I assume that a) the source tree isn't present or b) the qmake command is not run from the root of the Mumble-repo
Ok, it there was a problem with the rights. Now I have an other error:
Makefile:453: recipe for target 'sub-src-murmur-release_ordered' failed
{standard input}: Assembler messages:
{standard input}:153802: Warning: end of file not at end of a line; newline inserted
{standard input}:154356: Error: invalid operands (*UND* and .gcc_except_table sections) for `-'
{standard input}:154372: Error: invalid operands (.text and *UND* sections) for `-'
g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.
make[2]: *** [../../release/.obj/murmur/MurmurGRPCImpl.o] Error 4
make[1]: *** [release] Error 2
make: *** [sub-src-murmur-release_ordered] Error 2
ERROR: Service 'mumble' failed to build: The command '/bin/sh -c make release' returned a non-zero code: 2
g++: internal compiler error: Killed (program cc1plus) Please submit a full bug report, with preprocessed source if appropriate.
I guess you should do just that. Seems like you have encountered a bug in gcc
@Krzmbrzl
Edit: Ok the Dockerfile exists...so I guess someone would only need to upload it...
It gets stranger, there is a user that kind of claims to be you: https://hub.docker.com/u/mumblevoip
If thats the case, you could just update the file, I guess.
@davidebeatrici what's the status of the Docker bot that is mentioned further up?
It would be nice to have an official image of murmur for containerized deployments. I can take a crack at this if I get some guidance for what version to target (1.2.x or 1.3.x)