Merge branch 'r1-beta1-fixes'
Conflicts: dom0/qvm-core/qubes.py version_dom0 version_vm
This commit is contained in:
commit
986f4a888c
22
Makefile
22
Makefile
@ -1,11 +1,13 @@
|
||||
RPMS_DIR=rpm/
|
||||
|
||||
VERSION_DOM0 := $(shell cat version_dom0)
|
||||
VERSION_VAIO_FIXES := $(shell cat version_vaio_fixes)
|
||||
VERSION_VM := $(shell cat version_vm)
|
||||
|
||||
help:
|
||||
@echo "make rpms -- generate binary rpm packages"
|
||||
@echo "make update-repo-current -- copy newly generated rpms to qubes yum repo"
|
||||
@echo "make update-repo-current-testing -- same, but to -current-testing repo"
|
||||
@echo "make update-repo-unstable -- same, but to -testing repo"
|
||||
@echo "make update-repo-installer -- copy dom0 rpms to installer repo"
|
||||
@echo "make clean -- cleanup"
|
||||
@ -17,17 +19,31 @@ rpms:
|
||||
rpmbuild --define "_rpmdir $(RPMS_DIR)" -bb rpm_spec/core-proxyvm.spec
|
||||
rpmbuild --define "_rpmdir $(RPMS_DIR)" -bb rpm_spec/core-dom0.spec
|
||||
rpm --addsign \
|
||||
$(RPMS_DIR)/x86_64/qubes-core-dom0-*$(VERSION_DOM0)*.rpm \
|
||||
$(RPMS_DIR)/x86_64/qubes-core-dom0-$(VERSION_DOM0)*.rpm \
|
||||
$(RPMS_DIR)/x86_64/qubes-core-*vm-*$(VERSION_VM)*.rpm
|
||||
|
||||
rpms-vaio-fixes:
|
||||
rpmbuild --define "_rpmdir $(RPMS_DIR)" -bb rpm_spec/core-dom0-vaio-fixes.spec
|
||||
rpm --addsign $(RPMS_DIR)/x86_64/qubes-core-dom0-vaio-fixes-$(VERSION_VAIO_FIXES)*.rpm
|
||||
|
||||
update-repo-current:
|
||||
ln -f $(RPMS_DIR)/x86_64/qubes-core-dom0-*$(VERSION_DOM0)*fc13*.rpm ../yum/current-release/current/dom0/rpm/
|
||||
ln -f $(RPMS_DIR)/x86_64/qubes-core-dom0-$(VERSION_DOM0)*fc13*.rpm ../yum/current-release/current/dom0/rpm/
|
||||
ln -f $(RPMS_DIR)/x86_64/qubes-core-dom0-vaio-fixes-$(VERSION_VAIO_FIXES)*fc13*.rpm ../yum/current-release/current/dom0/rpm/
|
||||
ln -f $(RPMS_DIR)/x86_64/qubes-core-*vm-*$(VERSION_VM)*fc13*.rpm ../yum/current-release/current/vm/f13/rpm/
|
||||
ln -f $(RPMS_DIR)/x86_64/qubes-core-*vm-*$(VERSION_VM)*fc14*.rpm ../yum/current-release/current/vm/f14/rpm/
|
||||
cd ../yum && ./update_repo.sh
|
||||
|
||||
update-repo-current-testing:
|
||||
ln -f $(RPMS_DIR)/x86_64/qubes-core-dom0-$(VERSION_DOM0)*fc13*.rpm ../yum/current-release/current-testing/dom0/rpm/
|
||||
ln -f $(RPMS_DIR)/x86_64/qubes-core-dom0-vaio-fixes-$(VERSION_VAIO_FIXES)*fc13*.rpm ../yum/current-release/current-testing/dom0/rpm/
|
||||
ln -f $(RPMS_DIR)/x86_64/qubes-core-*vm-*$(VERSION_VM)*fc13*.rpm ../yum/current-release/current-testing/vm/f13/rpm/
|
||||
ln -f $(RPMS_DIR)/x86_64/qubes-core-*vm-*$(VERSION_VM)*fc14*.rpm ../yum/current-release/current-testing/vm/f14/rpm/
|
||||
cd ../yum && ./update_repo.sh
|
||||
|
||||
|
||||
update-repo-unstable:
|
||||
ln -f $(RPMS_DIR)/x86_64/qubes-core-dom0-*$(VERSION_DOM0)*fc13*.rpm ../yum/current-release/unstable/dom0/rpm/
|
||||
ln -f $(RPMS_DIR)/x86_64/qubes-core-dom0-$(VERSION_DOM0)*fc13*.rpm ../yum/current-release/unstable/dom0/rpm/
|
||||
ln -f $(RPMS_DIR)/x86_64/qubes-core-dom0-vaio-fixes-$(VERSION_VAIO_FIXES)*fc13*.rpm ../yum/current-release/unstable/dom0/rpm/
|
||||
ln -f $(RPMS_DIR)/x86_64/qubes-core-*vm-*$(VERSION_VM)*fc13*.rpm ../yum/current-release/unstable/vm/f13/rpm/
|
||||
ln -f $(RPMS_DIR)/x86_64/qubes-core-*vm-*$(VERSION_VM)*fc14*.rpm ../yum/current-release/unstable/vm/f14/rpm/
|
||||
cd ../yum && ./update_repo.sh
|
||||
|
@ -1,14 +1,14 @@
|
||||
CC=gcc
|
||||
CFLAGS=-g -Wall -I../common
|
||||
CFLAGS=-g -Wall -I../common -fPIC -pie
|
||||
all: dvm_file_editor qfile-agent-dvm qfile-agent qfile-unpacker
|
||||
dvm_file_editor: dvm_file_editor.o ../common/ioall.o
|
||||
$(CC) -g -o dvm_file_editor dvm_file_editor.o ../common/ioall.o
|
||||
$(CC) -pie -g -o dvm_file_editor dvm_file_editor.o ../common/ioall.o
|
||||
qfile-agent-dvm: qfile-agent-dvm.o ../common/ioall.o ../common/gui-fatal.o
|
||||
$(CC) -g -o qfile-agent-dvm qfile-agent-dvm.o ../common/ioall.o ../common/gui-fatal.o
|
||||
$(CC) -pie -g -o qfile-agent-dvm qfile-agent-dvm.o ../common/ioall.o ../common/gui-fatal.o
|
||||
qfile-agent: qfile-agent.o ../common/ioall.o ../common/gui-fatal.o copy_file.o
|
||||
$(CC) -g -o qfile-agent qfile-agent.o ../common/ioall.o ../common/gui-fatal.o copy_file.o
|
||||
$(CC) -pie -g -o qfile-agent qfile-agent.o ../common/ioall.o ../common/gui-fatal.o copy_file.o
|
||||
qfile-unpacker: qfile-unpacker.o ../common/ioall.o ../common/gui-fatal.o copy_file.o unpack.o
|
||||
$(CC) -g -o qfile-unpacker qfile-unpacker.o ../common/ioall.o ../common/gui-fatal.o copy_file.o unpack.o
|
||||
$(CC) -pie -g -o qfile-unpacker qfile-unpacker.o ../common/ioall.o ../common/gui-fatal.o copy_file.o unpack.o
|
||||
|
||||
clean:
|
||||
rm -f qfile-agent-dvm qfile-agent qfile-unpacker dvm_file_editor *.o *~
|
||||
|
@ -4,6 +4,13 @@ baseurl = http://yum.qubes-os.org/r1-beta1/current/vm/f13
|
||||
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-qubes-1-primary
|
||||
gpgcheck = 1
|
||||
|
||||
[qubes-vm-current-testing]
|
||||
name = Qubes OS Repository for VM (updates-testing)
|
||||
baseurl = http://yum.qubes-os.org/r1-beta1/current-testing/vm/f13
|
||||
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-qubes-1-primary
|
||||
gpgcheck = 1
|
||||
enabled=0
|
||||
|
||||
[qubes-vm-unstable]
|
||||
name = Qubes OS Repository for VM (unstable)
|
||||
baseurl = http://yum.qubes-os.org/r1-beta1/unstable/vm/f13
|
||||
|
@ -4,6 +4,13 @@ baseurl = http://yum.qubes-os.org/r1-beta1/current/vm/f14
|
||||
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-qubes-1-primary
|
||||
gpgcheck = 1
|
||||
|
||||
[qubes-vm-current-testing]
|
||||
name = Qubes OS Repository for VM (updates-testing)
|
||||
baseurl = http://yum.qubes-os.org/r1-beta1/current-testing/vm/f14
|
||||
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-qubes-1-primary
|
||||
gpgcheck = 1
|
||||
enabled=0
|
||||
|
||||
[qubes-vm-unstable]
|
||||
name = Qubes OS Repository for VM (unstable)
|
||||
baseurl = http://yum.qubes-os.org/r1-beta1/unstable/vm/f14
|
||||
|
@ -13,11 +13,14 @@ trap 'exit 0' SIGTERM
|
||||
while true; do
|
||||
NET_DOMID=$(/usr/bin/xenstore-read qubes_netvm_domid)
|
||||
if [[ -n "$NET_DOMID" ]] && [[ $NET_DOMID -gt 0 ]]; then
|
||||
NETCFG=$(/usr/bin/xenstore-read /local/domain/$NET_DOMID/qubes_netvm_external_ip)
|
||||
if [[ "$NETCFG" != "$CURR_NETCFG" ]]; then
|
||||
UNTRUSTED_NETCFG=$(/usr/bin/xenstore-read /local/domain/$NET_DOMID/qubes_netvm_external_ip)
|
||||
# UNTRUSTED_NETCFG is not parsed in any way
|
||||
# thus, no sanitization ready
|
||||
# but be careful when passing it to other shell scripts
|
||||
if [[ "$UNTRUSTED_NETCFG" != "$CURR_NETCFG" ]]; then
|
||||
/sbin/service qubes_firewall stop
|
||||
/sbin/service qubes_firewall start
|
||||
CURR_NETCFG="$NETCFG"
|
||||
CURR_NETCFG="$UNTRUSTED_NETCFG"
|
||||
/usr/bin/xenstore-write qubes_netvm_external_ip "$CURR_NETCFG"
|
||||
fi
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
CC=gcc
|
||||
CFLAGS+=-g -Wall -I../vchan -I../common
|
||||
CFLAGS+=-g -Wall -I../vchan -I../common -pie -fPIC
|
||||
XENLIBS=-lvchan -lu2mfn -lxenstore -lxenctrl
|
||||
COMMONIOALL=../common/ioall.o
|
||||
|
||||
all: qrexec_daemon qrexec_agent qrexec_client
|
||||
qrexec_daemon: qrexec_daemon.o unix_server.o $(COMMONIOALL) txrx-vchan.o buffer.o write_stdin.o
|
||||
$(CC) -L../vchan -L../u2mfn -g -o qrexec_daemon qrexec_daemon.o unix_server.o $(COMMONIOALL) txrx-vchan.o write_stdin.o buffer.o $(XENLIBS)
|
||||
$(CC) -pie -L../vchan -L../u2mfn -g -o qrexec_daemon qrexec_daemon.o unix_server.o $(COMMONIOALL) txrx-vchan.o write_stdin.o buffer.o $(XENLIBS)
|
||||
qrexec_agent: qrexec_agent.o exec.o txrx-vchan.o write_stdin.o buffer.o $(COMMONIOALL)
|
||||
$(CC) -L../vchan -L../u2mfn -g -o qrexec_agent qrexec_agent.o exec.o txrx-vchan.o write_stdin.o buffer.o $(COMMONIOALL) $(XENLIBS)
|
||||
$(CC) -pie -L../vchan -L../u2mfn -g -o qrexec_agent qrexec_agent.o exec.o txrx-vchan.o write_stdin.o buffer.o $(COMMONIOALL) $(XENLIBS)
|
||||
qrexec_client: qrexec_client.o $(COMMONIOALL) exec.o
|
||||
$(CC) -g -o qrexec_client qrexec_client.o $(COMMONIOALL) exec.o
|
||||
$(CC) -pie -g -o qrexec_client qrexec_client.o $(COMMONIOALL) exec.o
|
||||
clean:
|
||||
rm -f *.o *~ qrexec_daemon qrexec_agent qrexec_client
|
||||
|
@ -51,6 +51,8 @@ struct _client_info {
|
||||
int stdout_fd;
|
||||
int stderr_fd;
|
||||
|
||||
int exit_status;
|
||||
int is_exited;
|
||||
int pid;
|
||||
int is_blocked;
|
||||
int is_close_after_flush_needed;
|
||||
@ -169,6 +171,8 @@ void handle_exec(int client_id, int len)
|
||||
client_info[client_id].stdin_fd = stdin_fd;
|
||||
client_info[client_id].stdout_fd = stdout_fd;
|
||||
client_info[client_id].stderr_fd = stderr_fd;
|
||||
client_info[client_id].exit_status = 0;
|
||||
client_info[client_id].is_exited = 0;
|
||||
client_info[client_id].pid = pid;
|
||||
client_info[client_id].is_blocked = 0;
|
||||
client_info[client_id].is_close_after_flush_needed = 0;
|
||||
@ -233,6 +237,18 @@ void remove_process(int client_id, int status)
|
||||
update_max_process_fd();
|
||||
}
|
||||
|
||||
// remove process not immediately after it has exited, but after its stdout and stderr has been drained
|
||||
// previous method implemented in flush_out_err was broken - it cannot work when peer signalled it is blocked
|
||||
void possibly_remove_process(int client_id)
|
||||
{
|
||||
if (client_info[client_id].stdout_fd == -1 &&
|
||||
client_info[client_id].stderr_fd == -1 &&
|
||||
client_info[client_id].is_exited)
|
||||
remove_process(client_id,
|
||||
client_info[client_id].exit_status);
|
||||
}
|
||||
|
||||
|
||||
void handle_input(int client_id, int len)
|
||||
{
|
||||
char buf[len];
|
||||
@ -243,8 +259,8 @@ void handle_input(int client_id, int len)
|
||||
|
||||
if (len == 0) {
|
||||
if (client_info[client_id].is_blocked)
|
||||
client_info[client_id].
|
||||
is_close_after_flush_needed = 1;
|
||||
client_info[client_id].is_close_after_flush_needed
|
||||
= 1;
|
||||
else {
|
||||
close(client_info[client_id].stdin_fd);
|
||||
client_info[client_id].stdin_fd = -1;
|
||||
@ -339,11 +355,18 @@ void handle_process_data(int fd)
|
||||
write_all_vchan_ext(buf, ret);
|
||||
}
|
||||
if (ret == 0) {
|
||||
int client_id = process_fd[fd].client_id;
|
||||
if (process_fd[fd].type == FDTYPE_STDOUT)
|
||||
client_info[client_id].stdout_fd = -1;
|
||||
else
|
||||
client_info[client_id].stderr_fd = -1;
|
||||
|
||||
process_fd[fd].type = FDTYPE_INVALID;
|
||||
process_fd[fd].client_id = -1;
|
||||
process_fd[fd].is_blocked = 0;
|
||||
close(fd);
|
||||
update_max_process_fd();
|
||||
possibly_remove_process(client_id);
|
||||
}
|
||||
if (ret < 0)
|
||||
remove_process(process_fd[fd].client_id, 127);
|
||||
@ -376,39 +399,6 @@ void handle_process_data_all(fd_set * select_fds)
|
||||
handle_process_data(i);
|
||||
}
|
||||
|
||||
|
||||
void flush_out_err(int client_id)
|
||||
{
|
||||
fd_set select_set;
|
||||
int fd_max = -1;
|
||||
int i;
|
||||
int ret;
|
||||
struct timeval tv;
|
||||
for (;;) {
|
||||
FD_ZERO(&select_set);
|
||||
for (i = 0; i <= max_process_fd; i++) {
|
||||
if (process_fd[i].type != FDTYPE_INVALID
|
||||
&& !process_fd[i].is_blocked
|
||||
&& process_fd[i].client_id == client_id) {
|
||||
FD_SET(i, &select_set);
|
||||
fd_max = i;
|
||||
}
|
||||
}
|
||||
if (fd_max == -1)
|
||||
return;
|
||||
tv.tv_sec = 0;
|
||||
tv.tv_usec = 0;
|
||||
ret = select(fd_max + 1, &select_set, NULL, NULL, &tv);
|
||||
if (ret < 0 && errno != EINTR) {
|
||||
perror("select");
|
||||
exit(1);
|
||||
}
|
||||
if (!ret)
|
||||
return;
|
||||
handle_process_data_all(&select_set);
|
||||
}
|
||||
}
|
||||
|
||||
void reap_children()
|
||||
{
|
||||
int status;
|
||||
@ -418,8 +408,9 @@ void reap_children()
|
||||
client_id = find_info(pid);
|
||||
if (client_id < 0)
|
||||
continue;
|
||||
flush_out_err(client_id);
|
||||
remove_process(client_id, status);
|
||||
client_info[client_id].is_exited = 1;
|
||||
client_info[client_id].exit_status = status;
|
||||
possibly_remove_process(client_id);
|
||||
}
|
||||
child_exited = 0;
|
||||
}
|
||||
|
46
rpm_spec/core-dom0-vaio-fixes.spec
Normal file
46
rpm_spec/core-dom0-vaio-fixes.spec
Normal file
@ -0,0 +1,46 @@
|
||||
%{!?version: %define version %(cat version_vaio_fixes)}
|
||||
|
||||
Name: qubes-core-dom0-vaio-fixes
|
||||
Version: %{version}
|
||||
Release: 1%{?dist}
|
||||
Summary: Additional scripts for supporting suspend on Vaio Z laptops
|
||||
Requires: alsa-utils
|
||||
|
||||
Group: Qubes
|
||||
Vendor: Invisible Things Lab
|
||||
License: GPL
|
||||
URL: http://www.qubes-os.org
|
||||
|
||||
%define _builddir %(pwd)/dom0
|
||||
|
||||
%description
|
||||
Additional scripts for supporting suspend on Vaio Z laptops.
|
||||
|
||||
Due to broken Linux GPU drivers we need to do some additional actions during
|
||||
suspend/resume.
|
||||
|
||||
%install
|
||||
mkdir -p $RPM_BUILD_ROOT/usr/lib64/pm-utils/sleep.d
|
||||
cp vaio_fixes/00sony-vaio-audio $RPM_BUILD_ROOT/usr/lib64/pm-utils/sleep.d/
|
||||
cp vaio_fixes/99sony-vaio-audio $RPM_BUILD_ROOT/usr/lib64/pm-utils/sleep.d/
|
||||
cp vaio_fixes/01sony-vaio-display $RPM_BUILD_ROOT/usr/lib64/pm-utils/sleep.d/
|
||||
mkdir -p $RPM_BUILD_ROOT/etc/modprobe.d/
|
||||
cp vaio_fixes/snd-hda-intel-sony-vaio.conf $RPM_BUILD_ROOT/etc/modprobe.d/
|
||||
|
||||
%post
|
||||
grubby --update-kernel=/boot/vmlinuz-2.6.34.1-14.xenlinux.qubes.x86_64 --args="i8042.nopnp=1"
|
||||
|
||||
%triggerin -- kernel
|
||||
grubby --update-kernel=/boot/vmlinuz-2.6.34.1-14.xenlinux.qubes.x86_64 --args="i8042.nopnp=1"
|
||||
|
||||
%postun
|
||||
if [ "$1" = 0 ] ; then
|
||||
# no more packages left
|
||||
grubby --update-kernel=/boot/vmlinuz-2.6.34.1-14.xenlinux.qubes.x86_64 --remove-args="i8042.nopnp=1"
|
||||
fi
|
||||
|
||||
%files
|
||||
/usr/lib64/pm-utils/sleep.d/00sony-vaio-audio
|
||||
/usr/lib64/pm-utils/sleep.d/99sony-vaio-audio
|
||||
/usr/lib64/pm-utils/sleep.d/01sony-vaio-display
|
||||
/etc/modprobe.d/snd-hda-intel-sony-vaio.conf
|
@ -127,13 +127,6 @@ cp pm-utils/01qubes-sync-vms-clock $RPM_BUILD_ROOT/usr/lib64/pm-utils/sleep.d/
|
||||
cp pm-utils/01qubes-suspend-netvm $RPM_BUILD_ROOT/usr/lib64/pm-utils/sleep.d/
|
||||
cp pm-utils/02qubes-pause-vms $RPM_BUILD_ROOT/usr/lib64/pm-utils/sleep.d/
|
||||
|
||||
# Optional scripts for Vaio (they go into separate package)
|
||||
cp vaio_fixes/00sony-vaio-audio $RPM_BUILD_ROOT/usr/lib64/pm-utils/sleep.d/
|
||||
cp vaio_fixes/99sony-vaio-audio $RPM_BUILD_ROOT/usr/lib64/pm-utils/sleep.d/
|
||||
cp vaio_fixes/01sony-vaio-display $RPM_BUILD_ROOT/usr/lib64/pm-utils/sleep.d/
|
||||
mkdir -p $RPM_BUILD_ROOT/etc/modprobe.d/
|
||||
cp vaio_fixes/snd-hda-intel-sony-vaio.conf $RPM_BUILD_ROOT/etc/modprobe.d/
|
||||
|
||||
mkdir -p $RPM_BUILD_ROOT/var/log/qubes
|
||||
mkdir -p $RPM_BUILD_ROOT/var/run/qubes
|
||||
|
||||
@ -298,25 +291,3 @@ fi
|
||||
%{_libdir}/libu2mfn.so
|
||||
/etc/sudoers.d/qubes
|
||||
/etc/xdg/autostart/qubes-guid.desktop
|
||||
|
||||
%package vaio-fixes
|
||||
Summary: Additional scripts for supporting suspend on Vaio Z laptops
|
||||
Requires: alsa-utils
|
||||
|
||||
%post vaio-fixes
|
||||
grubby --update-kernel=/boot/vmlinuz-2.6.34.1-14.xenlinux.qubes.x86_64 --args="i8042.nopnp=1"
|
||||
|
||||
%postun vaio-fixes
|
||||
grubby --update-kernel=/boot/vmlinuz-2.6.34.1-14.xenlinux.qubes.x86_64 --remove-args="i8042.nopnp=1"
|
||||
|
||||
%description vaio-fixes
|
||||
Additional scripts for supporting suspend on Vaio Z laptops.
|
||||
|
||||
Due to broken Linux GPU drivers we need to do some additional actions during
|
||||
suspend/resume.
|
||||
|
||||
%files vaio-fixes
|
||||
/usr/lib64/pm-utils/sleep.d/00sony-vaio-audio
|
||||
/usr/lib64/pm-utils/sleep.d/99sony-vaio-audio
|
||||
/usr/lib64/pm-utils/sleep.d/01sony-vaio-display
|
||||
/etc/modprobe.d/snd-hda-intel-sony-vaio.conf
|
||||
|
1
version_vaio_fixes
Normal file
1
version_vaio_fixes
Normal file
@ -0,0 +1 @@
|
||||
1.5.25
|
Loading…
Reference in New Issue
Block a user