Blog in development hell.
Ближайшее изменение – новый пост.

воскресенье, 31 октября 2010 г.

Ubuntu 10.10 Maverick, Ati Old Driver (9.8) Installation.

Внимание! Мануал на данный момент не работает!
А так все красиво начиналось...
Качаем собственно сам драйвер отсюда http://support.amd.com/us/gpudownload/linux/legacy/Pages/radeon_linux.aspx?type=2.4.2&product=&lang=us&rev=9.3&ostype=Linux%20x86. Для меня это 9.3 (10.2 как оказалось не работает, 9.8 впрочем тоже) - это последняя версия драйвера поддерживающая Ati Mobility Radeon x1350.
Делаем пакет для Убунты (для Федоры и т.д., наверное, тоже сработает). Пытаемся его установить и получаем несколько ошибок.
./ati-driver-installer-9-3-x86.x86_64.run --buildpkg Ubuntu/9.04
dpkg -i fglrx-kernel-source_8.593-0ubuntu1_i386.deb
Adding Module to DKMS build system
Doing initial module build

Error!  Build of fglrx.ko failed for: 2.6.35-22-generic (i686)
Consult the make.log in the build directory
/var/lib/dkms/fglrx/8.593/build/ for more information.
Traceback (most recent call last):
  File "/usr/share/apport/package-hooks/dkms.py", line 47, in 
    report['SourcePackage'] = apport.packaging.get_source(package)
  File "/usr/lib/python2.6/dist-packages/apport/packaging_impl.py", line 106, in get_source
    if self._apt_pkg(package).installed:
  File "/usr/lib/python2.6/dist-packages/apport/packaging_impl.py", line 66, in _apt_pkg
    raise ValueError, 'package does not exist'
ValueError: package does not exist
Installing initial module

Error! Could not locate fglrx.ko for module fglrx in the DKMS tree.
You must run a dkms build for kernel 2.6.35-22-generic (i686) first.
Done.
cd /usr/src/fglrx-8.593/
./make.sh
AMD kernel module generator version 2.1
doing Makefile based build for kernel 2.6.x and higher
rm -rf *.c *.h *.o *.ko *.GCC* .??* *.symvers
make -C /lib/modules/2.6.35-22-generic/build SUBDIRS=/usr/src/fglrx-8.593/2.6.x modules
make[1]: Вход в каталог `/usr/src/linux-headers-2.6.35-22-generic'
  CC [M]  /usr/src/fglrx-8.593/2.6.x/firegl_public.o
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:41: error: #error unknown or undefined architecture configured
In file included from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:169:
/usr/src/fglrx-8.593/2.6.x/firegl_public.h:164: warning: "PM_EVENT_SUSPEND" redefined
include/linux/pm.h:325: note: this is the location of the previous definition
In file included from /usr/src/fglrx-8.593/2.6.x/drmP.h:86,
                 from /usr/src/fglrx-8.593/2.6.x/drm_proc.h:41,
                 from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:431:
/usr/src/fglrx-8.593/2.6.x/drm_os_linux.h:45: error: conflicting types for ‘irqreturn_t’
include/linux/irqreturn.h:16: note: previous declaration of ‘irqreturn_t’ was here
In file included from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:431:
/usr/src/fglrx-8.593/2.6.x/drm_proc.h: In function ‘FGLDRM__vma_info’:
/usr/src/fglrx-8.593/2.6.x/drm_proc.h:497: warning: format ‘%08lx’ expects type ‘long unsigned int’, but argument 5 has type ‘phys_addr_t’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘__ke__cmpxchg’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1363: error: variable or field ‘__ret’ declared void
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1363: error: variable or field ‘__old’ declared void
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1363: error: variable or field ‘__new’ declared void
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_GetEffectiveUid’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1405: error: ‘struct task_struct’ has no member named ‘euid’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_PosixSecurityCapSetIPCLock’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1779: error: ‘struct task_struct’ has no member named ‘cap_effective’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1783: error: ‘struct task_struct’ has no member named ‘cap_effective’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_InstallInterruptHandler’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:2661: warning: passing argument 2 of ‘request_irq’ from incompatible pointer type
include/linux/interrupt.h:135: note: expected ‘irq_handler_t’ but argument is of type ‘irqreturn_t (*)(int,  void *)’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_MEM_VM_GetRegionPhysAddrStr’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3223: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3224: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3225: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3227: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KAS_Ih_Execute’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:4202: warning: ‘return’ with no value, in function returning non-void
make[2]: *** [/usr/src/fglrx-8.593/2.6.x/firegl_public.o] Ошибка 1
make[1]: *** [_module_/usr/src/fglrx-8.593/2.6.x] Ошибка 2
make[1]: Выход из каталога `/usr/src/linux-headers-2.6.35-22-generic'
make: *** [kmod_build] Ошибка 2
build failed with return value 2
Первая ошибка - изменные функции ядра. Решение отсюда: http://www.mail-archive.com/debian-bugs-closed@lists.debian.org/msg270029.html
cd /usr/src/fglrx-8.593/
cat > patch.for.new.kernel << EOF
--- fglrx-driver-10-2.orig/common/lib/modules/fglrx/build_mod/firegl_public.c 20:34:34.000000000 +0100
+++ fglrx-driver-10-2/common/lib/modules/fglrx/build_mod/firegl_public.c2 21:23:51.580872456 +0100
@@ -1470,7 +1470,16 @@
 #ifndef __HAVE_ARCH_CMPXCHG
     return __fgl_cmpxchg(ptr,old,new,size);
 #else
-    return __cmpxchg(ptr,old,new,size);
+    switch (size) {
+    case 1: { volatile u8 *_ptr = ptr; return cmpxchg(_ptr, old, new); }
+    case 2: { volatile u16 *_ptr = ptr; return cmpxchg(_ptr, old, new); }
+    case 4: { volatile u32 *_ptr = ptr; return cmpxchg(_ptr, old, new); }
+#ifdef __x86_64__
+    case 8: { volatile u64 *_ptr = ptr; return cmpxchg(_ptr, old, new); }
+#endif
+    default:
+        return old;
+    }
 #endif
 }
EOF
patch < patch.for.new.kernel
patching file firegl_public.c
Hunk #1 succeeded at 1360 (offset -110 lines).
cd /usr/src/fglrx-8.593/
./make.sh
AMD kernel module generator version 2.1
doing Makefile based build for kernel 2.6.x and higher
rm -rf *.c *.h *.o *.ko *.GCC* .??* *.symvers
make -C /lib/modules/2.6.35-22-generic/build SUBDIRS=/usr/src/fglrx-8.593/2.6.x modules
make[1]: Вход в каталог `/usr/src/linux-headers-2.6.35-22-generic'
  CC [M]  /usr/src/fglrx-8.593/2.6.x/firegl_public.o
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:41: error: #error unknown or undefined architecture configured
In file included from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:169:
/usr/src/fglrx-8.593/2.6.x/firegl_public.h:164: warning: "PM_EVENT_SUSPEND" redefined
include/linux/pm.h:325: note: this is the location of the previous definition
In file included from /usr/src/fglrx-8.593/2.6.x/drmP.h:86,
                 from /usr/src/fglrx-8.593/2.6.x/drm_proc.h:41,
                 from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:431:
/usr/src/fglrx-8.593/2.6.x/drm_os_linux.h:45: error: conflicting types for ‘irqreturn_t’
include/linux/irqreturn.h:16: note: previous declaration of ‘irqreturn_t’ was here
In file included from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:431:
/usr/src/fglrx-8.593/2.6.x/drm_proc.h: In function ‘FGLDRM__vma_info’:
/usr/src/fglrx-8.593/2.6.x/drm_proc.h:497: warning: format ‘%08lx’ expects type ‘long unsigned int’, but argument 5 has type ‘phys_addr_t’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_GetEffectiveUid’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1414: error: ‘struct task_struct’ has no member named ‘euid’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_PosixSecurityCapSetIPCLock’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1788: error: ‘struct task_struct’ has no member named ‘cap_effective’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1792: error: ‘struct task_struct’ has no member named ‘cap_effective’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_InstallInterruptHandler’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:2670: warning: passing argument 2 of ‘request_irq’ from incompatible pointer type
include/linux/interrupt.h:135: note: expected ‘irq_handler_t’ but argument is of type ‘irqreturn_t (*)(int,  void *)’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_MEM_VM_GetRegionPhysAddrStr’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3232: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3233: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3234: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3236: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KAS_Ih_Execute’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:4211: warning: ‘return’ with no value, in function returning non-void
make[2]: *** [/usr/src/fglrx-8.593/2.6.x/firegl_public.o] Ошибка 1
make[1]: *** [_module_/usr/src/fglrx-8.593/2.6.x] Ошибка 2
make[1]: Выход из каталога `/usr/src/linux-headers-2.6.35-22-generic'
make: *** [kmod_build] Ошибка 2
build failed with return value 2
Вторая - проблемы с заданием типов. Решение отсюда https://bbs.archlinux.org/viewtopic.php?id=68905:
cd /usr/src/fglrx-8.593/2.6.x/
cat > patch.for.types << EOF
--- a/linux-core/drm_os_linux.h
+++ b/linux-core/drm_os_linux.h
@@ -51,7 +51,7 @@
 #define DRM_IRQ_ARGS  int irq, void *arg, struct pt_regs *regs
 /** backwards compatibility with old irq return values */
 #ifndef IRQ_HANDLED
-typedef void irqreturn_t;
+#include <linux/irqreturn.h>
 #define IRQ_HANDLED   /* nothing */
 #define IRQ_NONE      /* nothing */
 #endif
EOF
patch < patch.for.types
cat > patch.makefile << EOF
--- Makefile 2010-11-01 03:02:13.142924000 +0300
+++ Makefile.new 2010-11-01 03:02:06.466923999 +0300
@@ -83,6 +83,7 @@
 # default:: kmod_build
 
 kmod_build:: $(fglrx-libs) $(fglrx-cfiles) $(fglrx-hdrs) $(drm-hdrs)
+ patch < patch.for.types
  $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
 
 %.c:
EOF
patch < patch.makefile
patching file drm_os_linux.h
Hunk #1 succeeded at 42 with fuzz 1 (offset -9 lines).
patching file Makefile
cd /usr/src/fglrx-8.593/
./make.sh
AMD kernel module generator version 2.1
doing Makefile based build for kernel 2.6.x and higher
rm -rf *.c *.h *.o *.ko *.GCC* .??* *.symvers
patch < patch.for.types
patching file drm_os_linux.h
Hunk #1 succeeded at 42 with fuzz 1 (offset -9 lines).
make -C /lib/modules/2.6.35-22-generic/build SUBDIRS=/usr/src/fglrx-8.593/2.6.x modules
make[1]: Вход в каталог `/usr/src/linux-headers-2.6.35-22-generic'
  CC [M]  /usr/src/fglrx-8.593/2.6.x/firegl_public.o
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:41: error: #error unknown or undefined architecture configured
In file included from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:169:
/usr/src/fglrx-8.593/2.6.x/firegl_public.h:164: warning: "PM_EVENT_SUSPEND" redefined
include/linux/pm.h:325: note: this is the location of the previous definition
In file included from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:431:
/usr/src/fglrx-8.593/2.6.x/drm_proc.h: In function ‘FGLDRM__vma_info’:
/usr/src/fglrx-8.593/2.6.x/drm_proc.h:497: warning: format ‘%08lx’ expects type ‘long unsigned int’, but argument 5 has type ‘phys_addr_t’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_GetEffectiveUid’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1414: error: ‘struct task_struct’ has no member named ‘euid’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_PosixSecurityCapSetIPCLock’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1788: error: ‘struct task_struct’ has no member named ‘cap_effective’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1792: error: ‘struct task_struct’ has no member named ‘cap_effective’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_PUB_InterruptHandlerWrap’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:2643: warning: ‘return’ with no value, in function returning non-void
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_MEM_VM_GetRegionPhysAddrStr’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3232: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3233: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3234: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3236: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KAS_Ih_Execute’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:4211: warning: ‘return’ with no value, in function returning non-void
make[2]: *** [/usr/src/fglrx-8.593/2.6.x/firegl_public.o] Ошибка 1
make[1]: *** [_module_/usr/src/fglrx-8.593/2.6.x] Ошибка 2
make[1]: Выход из каталога `/usr/src/linux-headers-2.6.35-22-generic'
make: *** [kmod_build] Ошибка 2
build failed with return value 2
Третья - новые декларации архитектуры в <linux/autoconf.h>. Решение из головы:
cd /usr/src/fglrx-8.593/
cat > patch.arch << EOF
--- firegl_public.c 2010-11-01 02:36:50.462924001 +0300
+++ firegl_public.c.new 2010-11-01 03:08:57.486924002 +0300
@@ -38,10 +38,12 @@
 #if !defined(CONFIG_X86_BIGSMP)
 #if !defined(CONFIG_X86_VISWS)
 #if !defined(CONFIG_X86_GENERICARCH)
+#if !defined(CONFIG_X86_GENERIC)
 #error unknown or undefined architecture configured
 #endif
 #endif
 #endif
+#endif
 #endif
 #endif
 #endif
EOF
patch < patch.arch
patching file firegl_public.c
cd /usr/src/fglrx-8.593/
./make.sh
AMD kernel module generator version 2.1
doing Makefile based build for kernel 2.6.x and higher
rm -rf *.c *.h *.o *.ko *.GCC* .??* *.symvers
patch < patch.for.types
patching file drm_os_linux.h
Hunk #1 succeeded at 42 with fuzz 1 (offset -9 lines).
make -C /lib/modules/2.6.35-22-generic/build SUBDIRS=/usr/src/fglrx-8.593/2.6.x modules
make[1]: Вход в каталог `/usr/src/linux-headers-2.6.35-22-generic'
  CC [M]  /usr/src/fglrx-8.593/2.6.x/firegl_public.o
In file included from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:171:
/usr/src/fglrx-8.593/2.6.x/firegl_public.h:164: warning: "PM_EVENT_SUSPEND" redefined
include/linux/pm.h:325: note: this is the location of the previous definition
In file included from /usr/src/fglrx-8.593/2.6.x/firegl_public.c:433:
/usr/src/fglrx-8.593/2.6.x/drm_proc.h: In function ‘FGLDRM__vma_info’:
/usr/src/fglrx-8.593/2.6.x/drm_proc.h:497: warning: format ‘%08lx’ expects type ‘long unsigned int’, but argument 5 has type ‘phys_addr_t’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_GetEffectiveUid’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1416: error: ‘struct task_struct’ has no member named ‘euid’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_PosixSecurityCapSetIPCLock’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1790: error: ‘struct task_struct’ has no member named ‘cap_effective’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:1794: error: ‘struct task_struct’ has no member named ‘cap_effective’
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_PUB_InterruptHandlerWrap’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:2645: warning: ‘return’ with no value, in function returning non-void
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KCL_MEM_VM_GetRegionPhysAddrStr’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3234: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3235: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3236: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:3238: warning: return makes pointer from integer without a cast
/usr/src/fglrx-8.593/2.6.x/firegl_public.c: In function ‘KAS_Ih_Execute’:
/usr/src/fglrx-8.593/2.6.x/firegl_public.c:4213: warning: ‘return’ with no value, in function returning non-void
make[2]: *** [/usr/src/fglrx-8.593/2.6.x/firegl_public.o] Ошибка 1
make[1]: *** [_module_/usr/src/fglrx-8.593/2.6.x] Ошибка 2
make[1]: Выход из каталога `/usr/src/linux-headers-2.6.35-22-generic'
make: *** [kmod_build] Ошибка 2
build failed with return value 2
Также могут встретиться другие ошибки. Отсутствующая символьная ссылка на ядро в папке /usr/src/. Ее вы должны создать сами. Получится что-то наподобии:
cd /usr/src/
ln -s linux linux-2.6...
Отсутствие некоторых файлов в обновленных хидер-пакетах (linux-headers). Решение отсюда: http://ubuntuforums.org/showthread.php?t=1519186
cd /usr/src/linux/include/linux
ln -s ../generated/autoconf.h .
ln -s ../generated/utsrelease.h .
Кажется, на этом все. Пробуем заново забилдить драйвер.
cd /usr/src/fglrx-8.593/
./make.sh
Результатом успешной операции будет fglrx.ko в нашей директории.
root@SF-HP-Compaq-6820s:/usr/src/fglrx-8.593# ls -l | grep fglrx.ko
lrwxrwxrwx 1 root root      14 2010-10-31 00:04 fglrx.ko -> 2.6.x/fglrx.ko
Заканчиваем установку драйвера:
apt-get -f install
За сим, все. P.S. Не забываем про установку всех остальных пакетов. Из папки, с который все начиналось, выполним:
dpkg -i *.pkg

четверг, 15 апреля 2010 г.

Fennec для Android

Скомпилировано для Android 2.1. Скорее всего для 1.5 и 1.6 скомпилировать вообще невозможно, но... посмотрим.

Подробная инструкция по компиляции

В основе этого сообщения лежит инструкция немецкого энтузиаста.
Для компиляции вам понадобится Native Development Kit и SDK. Автором предполагается, что операции вы будете проводить в папке /usr/src. Качаем NDK, распаковываем, устанавливаем. Возвращаемся в /usr/src. Качаем SDK, распаковываем, запускаем.
cd /usr/src
wget http://dl.google.com/android/ndk/android-ndk-r3-linux-x86.zip
unzip android-ndk-r3-linux-x86.zip
cd android-ndk-r3/
build/host-setup.sh
cd ..
wget http://dl.google.com/android/android-sdk_r05-linux_86.tgz
tar -zxf android-sdk_r05-linux_86.tgz
android-sdk-linux_86/tools/android
Кликаем дальше Update All и выбираем необходимые среды. Так как у меня сейчас на телефоне 2.1, я выбрал android-7 без документации и примеров. Все оно скачивается (около 120МБ) и само устанавливается. Закрываем.
Далее для компиляции вам понадобится создать символьную ссылку на один файл (для простоты видимо):
ln -s /usr/src/android-sdk-linux_86/platforms/android-7/tools/aapt /usr/src/android-sdk-linux_86/tools/aapt
(заметьте: тут учитывается, что вы также выбрали android-7 среду)
Далее вам нужно установить все зависимости компиляции. У меня стоит гента, поэтому мне лишь понадобился subversion и mercurial. Что у вас, я не знаю, вот оригинальная цитата:
apt-get build-dep firefox
apt-get install mercurial libasound2-dev libcurl4-openssl-dev libnotify-dev libxt-dev libiw-dev mesa-common-dev autoconf2.13 libidl-dev sun-java6-bin sun-java6-fonts sun-java6-jdk sun-java6-jre hgsvn
Теперь начинаем вытягивать собственно исходники. Создаем директории и подготавливаем все и вся.
hg clone http://hg.mozilla.org/users/vladimir_mozilla.com/mozilla-droid fennec
cd fennec
hg update -C android2
hg clone http://hg.mozilla.org/mobile-browser mobile
В будущем для ускорения процесса можно будет использовать:
cd fennec
hg pull -u http://hg.mozilla.org/users/vladimir_mozilla.com/mozilla-droid
hg update -C android2
cd mobile
hg pull -u http://hg.mozilla.org/mobile-browser

Что ж теперь самая интересная часть. Конфиг компиляции (/usr/src/fennec/browser/config/mozconfig) и тут небольшая ремарка. Я изменял конфиг, поэтому дальнейшие инструкции будут отличать от приведенных в источнике.
# This file specifies the build flags for Firefox.  You can use it by adding:
#  . $topsrcdir/browser/config/mozconfig
# to the top of your mozconfig file.

# Uncomment these two lines to use objdir with client.mk
OBJDIR=objdir-android
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/$OBJDIR

#ac_add_options --enable-application=browser
# For Fennec use this instead:
ac_add_options --enable-application=mobile

# Global options
ac_add_options --disable-debug
ac_add_options --enable-optimize
# libxul is required
ac_add_options --enable-libxul

# android options
ac_add_options --target=arm-android-eabi

export C_F_P=/usr/src
ac_add_options --with-android-ndk="$C_F_P/android-ndk-r3"
ac_add_options --with-android-sdk="$C_F_P/android-sdk-linux_86/platforms/android-7"
ac_add_options --with-android-tools="$C_F_P/android-sdk-linux_86/tools"
ac_add_options --with-endian=little
ac_add_options --enable-tree-freetype
ac_add_options --enable-faststripe
ac_add_options --disable-ctypes

# ssltunnel can't build because the ndk doesn't have string, vector, or algorithm headers
ac_add_options --disable-tests
(я изменял конфиг согласно интуиции и инструкциям на оф.сайте мозиллы)
Что ж небольшое задание переменной и мы почти готовы.
export MOZCONFIG='/usr/src/fennec/browser/config/mozconfig'
Вперед!
make -f client.mk
(любые ошибки возникающие на этом шаге - ошибки компиляции. Смотрим вывод и принимаем необходимые действия (например, устанавливаем дополнительные необходимые программы, меняем флаги компиляции или отписываемся в форумы))
Автор заявляет 2-4 часа на компиляцию. Я уложился в 2 часа.

Далее проверьте директорию /usr/src/fennec/embedding/android на наличие файла Makefile.
Если он там есть, то выполните:
cd /usr/src/fennec/embedding/android
make
Скорее всего его там нет, поэтому проверьте директорию /usr/src/fennec/embedding на наличие файла Makefile.
Если он там есть, то выполните:
cd /usr/src/fennec/embedding
make
cd /usr/src/fennec/embedding/android
make
Скорее всего его там нет :D, поэтому выполните следующие команды в корне компиляции:
cd /usr/src/fennec
./configure
cd /usr/src/fennec/embedding
make
cd /usr/src/fennec/embedding/android
make
Вот в этом (cd /usr/src/fennec/embedding; make) месте вы вероятнее всего схватите ошибку, но это нормально, так как свое предназначение он выполнит - создаст Makefile в папке /usr/src/fennec/embedding/android.

Если вы использовали параметры:
OBJDIR=objdir-android
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/$OBJDIR
Вам придется исправить Makefile в той директории, где вы находитесь (/usr/src/fennec/embedding/android).
Ищем:
include $(DEPTH)/config/autoconf.mk
Сразу после него добавляем:
DIST = $(DEPTH)/objdir-android/dist
И наконец-то выполняем последнюю команду, которая теперь должна выполниться без ошибки:
make
Немецкий энтузиаст рекомендовал использовать gecko-unaligned.apk, но я буду выкладывать лишь fennec.apk или же firefox.apk, так как не вижу в них разницы (gecko-unaligned и fennec|firefox).

понедельник, 5 апреля 2010 г.

Windows - мой набор программ

Первым делом настраивается электропитание, потом меню, далее устанавливаются программы.

В один день я решил не использовать UAC и брандмауэр, а использовать нормальный антивирус. И проблемы с PunkBuster'ом на семерке испарились.

Для жизни:

  • Chrome - браузер. Но только dev-channel. Обновления появляются быстрее и...
  • CCleaner - очищает диск (кэш браузеров, временные файлы и т.д.), реестр, позволяет управлять автозапуском и установленными программами.
  • Update Checker - FileHippo Update Checker, название говорит за себя.
  • Defraggler - дефрагментирует разделы.
  • VLC - хороший видеопроигрыватель.
  • Avast - антивирус.
  • 7zip - свободный архиватор.
  • ICQ - официальный клиент (дабы не нарушать лицензию ICQ).
    Больше не пользуюсь. Только Gtalk, ICQ - максимум транспортом.
  • Skype - это Skype (видео-чат, если кратко).
  • uTorrent - торрент-клиент.
  • GIMP - растровый редактор изображений. Переучиться с Photoshop - легко.
Для работы:
  • Opera - браузер.
  • Firefox - браузер.
  • WinSCP - SFTP-клиент.
  • Notepad++ - редактор текстов с множеством функций (подсветка синтаксиса, например).

OEM English Vista vs. Russian User

Если во время установки указать ключ, в самом конце установки BSOD на 0x0000012A. Нет установленного необходимого MUI.
Если во время установки не указывать ключ, а указать его после загрузки - BSOD на 0x0000012A.

Решение было установить Russian MUI. Однако, как я помнил, они есть только на Ultimate версию. С моим же ноутбуком шла Home Basic.

Немного гугла и я понял что мне нужно. Vistalizator - да, он меня спас.
Скачал оттуда саму программу и MUI. Установил в Internal режиме. Перезагрузился.
Увидел русский интерфейс. Ввел ключ, активировался, перезагрузился и... BSODа не было. Теперь счастливо сижу на активированной висте.

P.S. Quake Live ужасно тормозил на x64 семерке и висте. На x86 - летает, я счастлив.

вторник, 16 марта 2010 г.

Слайдшоу на рабочем столе в Ubuntu (Wallpaper Slideshow)

Захотелось организовать красивое слайдшоу бэкграундов.
Нагуглил http://ubuntuforums.org/showthread.php?t=1329147#3 - там описан .xml файл задающий слайдшоу.
Час помучавшись с консолью, погуглив и почитав мануалы (я искал $PWD, учился создавать массивы и т.д.), я написал скрипт, создающий необходимый xml-файл.
Ссылка для скачки скрипта
#!/bin/bash
case $1 in
  pwd) dir=$PWD; 3=$2;;
  nml) dir=$2;;
  *) echo "Usage: $0 [type [dir]] [output xml-filename].

Types:
pwd - Create xml file using jpg-files in current directory
nml - Create xml file using jpg-files in specified directory

Examples:
$0 pwd myslideshow
$0 nml /home/user/pictures/ mypictures"; exit;;
esac

rm $3.xml

cat > $3.xml << EOF
<background>
  <starttime>
    <year>2009</year>
    <month>08</month>
    <day>04</day>
    <hour>00</hour>
    <minute>00</minute>
    <second>00</second>
  </starttime>
<!-- This animation will start at midnight. -->
EOF

for image in $dir/*.jpg; do
  IMAGES+=( $image )
done

IMAGEScount=${#IMAGES}

for ((i=0;i<$IMAGEScount;i++)); do
   echo ${IMAGES[${i}]}
done

for ((i=0;i<$IMAGEScount;i++)); do
  n=$i+1
  cat >> $3.xml << EOF
  <static>
    <duration>595.0</duration>
    <file>${IMAGES[${i}]}</file>
  </static>
  <transition>
    <duration>5.0</duration>
    <from>${IMAGES[${i}]}</from>
    <to>${IMAGES[${n}]}</to>
  </transition>
EOF
done

cat >> $3.xml << EOF
</background>
EOF

среда, 3 марта 2010 г.

Speed-Up Gentoo

У меня на ноутбуке гента (gentoo) загружается медленней арча (ArchLinux). Не хорошо это. Буду пытаться ускорить, одновременно отписываясь о изменениях.

Начало эксперимента:
Grub = 1 сек
Kernel = 6.29 сек
Userspace = 15.9 сек
All = 23.19 сек

Для начала я попробую максимально разгрузить ядро, переведя все вкомпиленные части в модули, с учетом того, что некоторые драйвера должны остаться вкомпиленными.

General setup ->
  <M> Kernel .config support
Processor type and features ->
  <M> /dev/cpu/*/msr - Model-specific register support
  <M> /dev/cpu/*/cpuid - CPU information support
Power managment and ACPI options ->
  [*] ACPI support ->
    <M> AC Adapter
    <M> Battery
    <M> Processor
    <M> PCI slot detection driver
    {M} Container and module devices
  CPU Frequency scaling ->
    Default CPUFreq governor (performance)
    -*- 'performance' governor
    <M> 'powersave' governor
    <M> 'on-demand' governor
    <M> Intel Pentium 4 clock modulation
Executable file formats / Emulations ->
  <M> Kernel support for MISC binaries
[*] Networking support ->
  <M> RF switch subsystem support
Device drivers ->
  [*] Block devices ->
    <M> Loopback device support
    < > RAM block device support
    < > Packet writing on CD/DVD media
  <*> Serial ATA (prod) and Parallel ATA (experimental) drivers ->
    [ ] ATA SFF support
  [*] Multiple devices driver support ->
    <M> Device mapper support
  [*] Network device support ->
    <M> PHY device support and infrastructure
    [*] Ethernet (10 or 100Mbit)
    [ ] Ethernet (1000 Mbit)
    [ ] Ethernet (10000 Mbit)
  [*] Hardware Monitoring support
    <M> Intel Core (2) Duo/Solo temperature sensor
  {M} Generic Thermal sysfs driver
  Sonics Silicon Backplane ->
    {M} Sonics Silicon Backplane support
  <M> Multimedia support
  Graphics support ->
    -*- /dev/agpgart (AGP support) ->
      <M> Intel chipset support
    <M> Direct Rendering Manager
    < > Low level video output switch control
    {M} Support for framebuffer devices
    [*] Backlight & LCD device support ->
      <M> Lowlevel backlight controls
  <M> Sound card support
  [*] HID devices ->
    {M} Generic HID support
    <M> USB HID (full hid) support
  [*] USB support ->
    {M} Support for Host-side USB
  -*- LED support ->
    <M> LED Class support
  <M> Real Time Clock
  [*] DMA engine support ->
    <M> Intel I/OAT DMA support
File systems ->
  <M> Kernel automounter version 4 support
  {M} Native language support
{M} Cryptographic API

Замер после первой рекомпиляции:
Grub = 1 сек
Kernel = 1.45 сек (-4.84 сек)
Userspace = 14.44 сек (-1.45 сек)
All = 16.9 сек (-6.29 сек)

Изменения:
Сбросилось задание разрешения в консоли. Буду разбираться с uvesafb. Пропал проводной сетевой интерфейс.

Device drivers ->
  [*] Network device support ->
    [*] Ethernet (10 or 100Mbit)
      <*> Intel(R) PRO/100+ support
  Graphics support ->
    {*} Support for framebuffer devices
      <*> Userspace VESA VGA graphics support

Изменения:
Uvesafb заработал. Драйвер сети оказался - e1000e. Перекомпилил ядро. Заменил его на 2.6.33-gentoo. Также выключил пару ненужных демонов (raid, еще что-то, не помню). Думаю дальше надо уже ковырять userspace, так как на ядре уже произошло значительное улучшение.

воскресенье, 21 февраля 2010 г.

Справляюсь с WordPress Default 1.6

#calendar-3 .widgettitle, #calendar-3 tfoot {
  display: none;
}

Пояснения:
У виджета "Календарь" заполнить заголовок мне показалось странным. Кто не поймет, что это календарь? Однако же место, отведенное под заговок, осталось. Плюс обнаружился странный футер в таблице календаря. Убираю.

вторник, 16 февраля 2010 г.

Тачпад

Сегодня в gentoo почему-то перестала работать функция "тапа", т.е. "легкого нажатия на тачпад расцениваемого, как клик". Вспомнил, что за тачпад отвечает программа synclient. Собственно быстрый просмотр списка переменных  все мне объяснил.
synclient TapButton1=1
И "тап" снова заработал.

P.S> На всякий случай. Вертикальная прокрутка:
synclient -l | grep VertEdgeScroll
А вот это прокрутка двумя пальцами (по умолчанию почему-то включена)
synclient -l | grep VertTwoFingerScroll

понедельник, 15 февраля 2010 г.

Справляюсь с Minima

Первый день:
#header-wrapper {
  width: 800px;
}
#header h1 { 
  letter-spacing: 0.1em;
}
#outer-wrapper {
  width: 800px;

#main-wrapper {
  width: 550px;
}
h2 {
  margin: 0.8em 0px;
  letter-spacing: normal;  
}
.sidebar .widget, .main .widget {
  margin: 0 0 0.5em;
  padding: 0 0 0.5em;

}
#footer {
  width: 800px;
}


Пояснения:
Переделал ширину с 660 на 800 пикселей, ибо не видел уже не видел людей с разрешением экрана меньше 800 на 600.
Привел в более кошерный вид межбуквенный интервал в заголовках и отступы.

Второй день:
div.subscribe div.top {
  width: 150px;
}

Пояснения:
В виджете подписки не хватало ширины для букв, поэтому происходил перенос на другую строку.