tech-pkg archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: FireFox 10.0.1 pkg for testing
Hi,
> ftp.netbsd.org:/pub/NetBSD/misc/martin/firefox-10.0.2.tar.gz
>
> with these changes (and one small fix hopefully helping DragonFly
> compilation).
Thank you.
It help the build on DragonFly 3.0.1.
The build of DragonFly 3.0.1 needs some more patches.
With attahed patch-* files, compile is OK. (but sadly
I am newbie on DragonFly. they may include bugs.)
But in link stage, the following error generated.
I cannot understand why it fails.
I have added some OS_LIBS += $(call EXPAND_LIBNAME,kvm) to makefiles,
no effects. Attached patch-* does not include this attempt.
Thank you.
/usr/pkg/bin/python2.7 ../../config/pythonpath.py -I../../config
../../config/expandlibs_exec.py --uselist -- c++ -I/usr/include
-I/usr/pkg/include -I/usr/pkg/include/freetype2 -fno-rtti -Wall -Wpointer-arith
-Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor
-Wcast-align -Wno-invalid-offsetof -Wno-variadic-macros -Werror=return-type -O2
-I/usr/include -I/usr/pkg/include -I/usr/pkg/include/freetype2 -fno-exceptions
-fno-strict-aliasing -fshort-wchar -pthread -pipe -DNDEBUG -DTRIMMED -O2
-fomit-frame-pointer -fPIC -shared -Wl,-z,defs -Wl,-h,libxul.so -o libxul.so
nsStaticXULComponents.o nsUnicharUtils.o nsBidiUtils.o nsRDFResource.o
-lpthread -L/usr/lib -Wl,-R/usr/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib
-Wl,-rpath-link,/usr/tmp/devel/xulrunner/work/mozilla-release/dist/bin
-Wl,-rpath-link,/usr/pkg/lib ../../toolkit/xre/libxulapp_s.a
../../staticlib/components/libnecko.a ../../staticlib/components/libuconv.a
../../staticlib/components/libi18n.a ../../staticlib/components/libchardet.a
../../staticlib/components/libjar50.a
../../staticlib/components/libstartupcache.a
../../staticlib/components/libpref.a ../../staticlib/components/libhtmlpars.a
../../staticlib/components/libimglib2.a ../../staticlib/components/libgkgfx.a
../../staticlib/components/libgklayout.a
../../staticlib/components/libdocshell.a
../../staticlib/components/libembedcomponents.a
../../staticlib/components/libwebbrwsr.a
../../staticlib/components/libnsappshell.a
../../staticlib/components/libtxmgr.a
../../staticlib/components/libcommandlines.a
../../staticlib/components/libtoolkitcomps.a
../../staticlib/components/libpipboot.a ../../staticlib/components/libpipnss.a
../../staticlib/components/libappcomps.a
../../staticlib/components/libjsreflect.a
../../staticlib/components/libcomposer.a
../../staticlib/components/libjetpack_s.a
../../staticlib/components/libtelemetry.a
../../staticlib/components/libjsdebugger.a
../../staticlib/components/libstoragecomps.a
../../staticlib/components/librdf.a ../../staticlib/components/libwindowds.a
../../staticlib/components/libjsctypes.a ../../staticlib/components/libjsperf.a
../../staticlib/components/libgkplugin.a
../../staticlib/components/libunixproxy.a ../../staticlib/components/libjsd.a
../../staticlib/components/libautoconfig.a ../../staticlib/components/libauth.a
../../staticlib/components/libcookie.a
../../staticlib/components/libpermissions.a
../../staticlib/components/libuniversalchardet.a
../../staticlib/components/libfileview.a ../../staticlib/components/libplaces.a
../../staticlib/components/libtkautocomplete.a
../../staticlib/components/libsatchel.a ../../staticlib/components/libpippki.a
../../staticlib/components/libwidget_gtk2.a
../../staticlib/components/libsystem-pref.a
../../staticlib/components/libimgicon.a
../../staticlib/components/libaccessibility.a
../../staticlib/components/libremoteservice.a
../../staticlib/components/libspellchecker.a
../../staticlib/components/libzipwriter.a
../../staticlib/components/libservices-crypto.a ../../staticlib/libjsipc_s.a
../../staticlib/libdomipc_s.a ../../staticlib/libdomplugins_s.a
../../staticlib/libmozipc_s.a ../../staticlib/libmozipdlgen_s.a
../../staticlib/libipcshell_s.a ../../staticlib/libgfx2d.a
../../staticlib/libgfxipc_s.a ../../staticlib/libhal_s.a
../../staticlib/libxpcom_core.a ../../staticlib/libucvutil_s.a
../../staticlib/libchromium_s.a ../../staticlib/libmozreg_s.a
../../staticlib/libgtkxtbin.a ../../staticlib/libthebes.a
../../staticlib/libycbcr.a ../../staticlib/libangle.a -L../../dist/bin
-L../../dist/lib -ljpeg ../../media/libpng/libmozpng.a
../../gfx/qcms/libmozqcms.a
/usr/tmp/devel/xulrunner/work/mozilla-release/dist/lib/libjs_static.a
-L../../dist/bin -L../../dist/lib -lcrmf -lsmime3 -lssl3 -lnss3 -lnssutil3
../../gfx/cairo/cairo/src/libmozcairo.a
../../gfx/cairo/libpixman/src/libmozlibpixman.a -lXrender -lfreetype
-lfontconfig ../../gfx/harfbuzz/src/libmozharfbuzz.a
../../gfx/ots/src/libmozots.a -Wl,-R/usr/pkg/lib -L/usr/pkg/lib -lsqlite3
-lz -L/usr/pkg/lib -levent -lrt -L../../dist/bin -L../../dist/lib
-Wl,-R/usr/pkg/lib/xulrunner
-L/usr/tmp/devel/xulrunner/work/mozilla-release/dist/lib -lplds4 -lplc4 -lnspr4
-L/usr/lib -L/usr/pkg/lib -pthread -ldl ../../dist/lib/libmozalloc.a -lX11
-lXext -Wl,-R/usr/pkg/lib -pthread -L/usr/pkg/lib -lpangoft2-1.0 -lfreetype
-lfontconfig -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0
-lgthread-2.0 -lpthread -lrt -lglib-2.0 -lintl -Wl,-R/usr/pkg/lib -pthread
-L/usr/pkg/lib -lgtk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lfreetype
-lfontconfig -lgdk-x11-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0
-lcairo -lgmodule-2.0 -lgobject-2.0 -lgthread-2.0 -lpthread -lrt -lglib-2.0
-lintl -lXt -lgthread-2.0 -L/usr/pkg/lib -lfreetype -lz -lbz2 -lc -lkvm
../../ipc/chromium/process_util_bsd.o: In function
`base::NamedProcessIterator::NamedProcessIterator(std::basic_string<wchar_t,
std::char_traits<wchar_t>, std::allocator<wchar_t> > const&,
base::ProcessFilter const*)':
process_util_bsd.cc:(.text+0x609): undefined reference to `kvm_open'
process_util_bsd.cc:(.text+0x635): undefined reference to `kvm_getprocs'
process_util_bsd.cc:(.text+0x762): undefined reference to `kvm_close'
../../ipc/chromium/process_util_bsd.o: In function
`base::NamedProcessIterator::NamedProcessIterator(std::basic_string<wchar_t,
std::char_traits<wchar_t>, std::allocator<wchar_t> > const&,
base::ProcessFilter const*)':
process_util_bsd.cc:(.text+0x859): undefined reference to `kvm_open'
process_util_bsd.cc:(.text+0x885): undefined reference to `kvm_getprocs'
process_util_bsd.cc:(.text+0x9b2): undefined reference to `kvm_close'
/usr/libexec/binutils221/elf/ld: libxul.so: hidden symbol `kvm_getprocs' isn't
defined
/usr/libexec/binutils221/elf/ld: final link failed: Bad value
gmake[3]: *** [libxul.so] Error 1
gmake[3]: Leaving directory
`/usr/tmp/devel/xulrunner/work/mozilla-release/toolkit/library'
gmake[2]: *** [libs_tier_platform] Error 2
gmake[2]: Leaving directory `/usr/tmp/devel/xulrunner/work/mozilla-release'
gmake[1]: *** [tier_platform] Error 2
gmake[1]: Leaving directory `/usr/tmp/devel/xulrunner/work/mozilla-release'
gmake: *** [all] Error 2
*** Error code 2
Stop.
bmake: stopped in /usr/pkgsrc/devel/xulrunner
*** Error code 1
Stop.
bmake: stopped in /usr/pkgsrc/devel/xulrunner
$
--
Ryo ONODERA // ryo_on%yk.rim.or.jp@localhost
PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB FD1B F404 27FA C7D1 15F3
$NetBSD$
--- ipc/chromium/Makefile.in.orig 2012-02-16 06:40:33.000000000 +0000
+++ ipc/chromium/Makefile.in
@@ -278,6 +278,34 @@ endif
endif # } OS_LINUX
+ifdef OS_BSD # {
+
+CPPSRCS += \
+ atomicops_internals_x86_gcc.cc \
+ file_util_bsd.cc \
+ process_util_bsd.cc \
+ time_posix.cc \
+ $(NULL)
+
+ifdef MOZ_ENABLE_GTK2
+CPPSRCS += \
+ message_pump_glib.cc \
+ $(NULL)
+endif
+
+ifdef MOZ_ENABLE_QT
+MOCSRCS = \
+ moc_message_pump_qt.cc \
+ $(NULL)
+
+CPPSRCS += \
+ $(MOCSRCS) \
+ message_pump_qt.cc \
+ $(NULL)
+endif
+
+endif # } OS_BSD
+
# libevent
ifndef MOZ_NATIVE_LIBEVENT # {
$NetBSD$
--- ipc/chromium/src/base/debug_util_posix.cc.orig 2012-02-16
06:40:33.000000000 +0000
+++ ipc/chromium/src/base/debug_util_posix.cc
@@ -5,7 +5,7 @@
#include "build/build_config.h"
#include "base/debug_util.h"
-#define MOZ_HAVE_EXECINFO_H (!defined(ANDROID) && !defined(__OpenBSD__))
+#define MOZ_HAVE_EXECINFO_H (defined(__linux__) && !defined(ANDROID))
#include <errno.h>
#include <fcntl.h>
@@ -17,8 +17,11 @@
#include <unistd.h>
#if MOZ_HAVE_EXECINFO_H
#include <execinfo.h>
-#include <sys/sysctl.h>
#endif
+#if defined(OS_DRAGONFLY)
+#include <sys/user.h>
+#endif
+#include <sys/sysctl.h>
#include "base/basictypes.h"
#include "base/eintr_wrapper.h"
@@ -32,7 +35,7 @@ bool DebugUtil::SpawnDebuggerOnProcess(u
return false;
}
-#if defined(OS_MACOSX)
+#if defined(OS_MACOSX) || defined(OS_BSD)
// Based on Apple's recommended method as described in
// http://developer.apple.com/qa/qa2004/qa1361.html
@@ -71,7 +74,11 @@ bool DebugUtil::BeingDebugged() {
// This process is being debugged if the P_TRACED flag is set.
is_set = true;
+#if defined(__DragonFly__)
+ being_debugged = (info.kp_flags & P_TRACED) != 0;
+#else
being_debugged = (info.kp_proc.p_flag & P_TRACED) != 0;
+#endif
return being_debugged;
}
$NetBSD$
--- ipc/chromium/src/base/platform_thread_posix.cc.orig 2012-02-16
06:40:33.000000000 +0000
+++ ipc/chromium/src/base/platform_thread_posix.cc
@@ -9,9 +9,13 @@
#if defined(OS_MACOSX)
#include <mach/mach.h>
+#elif defined(OS_NETBSD)
+#include <lwp.h>
#elif defined(OS_LINUX)
#include <sys/syscall.h>
#include <unistd.h>
+#elif defined(OS_DRAGONFLY)
+#include <unistd.h>
#endif
#if defined(OS_MACOSX)
@@ -33,6 +37,14 @@ PlatformThreadId PlatformThread::Current
// into the kernel.
#if defined(OS_MACOSX)
return mach_thread_self();
+#elif defined(OS_NETBSD)
+ return _lwp_self();
+#elif defined(OS_DRAGONFLY)
+ return lwp_gettid();
+#elif defined(OS_FREEBSD)
+ lwpid_t lwpid;
+ thr_self( &lwpid );
+ return lwpid;
#elif defined (__OpenBSD__)
// TODO(BSD): find a better thread ID
return (intptr_t)(pthread_self());
$NetBSD$
--- ipc/chromium/src/base/process_util_bsd.cc.orig 2012-02-24
09:52:40.581943000 +0000
+++ ipc/chromium/src/base/process_util_bsd.cc
@@ -0,0 +1,298 @@
+// Copyright (c) 2008 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// derived from process_util_linux.cc and process_util_mac.cc
+
+// TODO: - add code for FreeBSD/DragonFly/MirBSD (?) to use kvm_getprocx
+
+#include "base/process_util.h"
+
+#include <ctype.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <string>
+#include <kvm.h>
+#include <sys/sysctl.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#if defined(OS_DRAGONFLY)
+#include <sys/user.h>
+#endif
+
+#include "base/debug_util.h"
+#include "base/eintr_wrapper.h"
+#include "base/file_util.h"
+#include "base/logging.h"
+#include "base/string_tokenizer.h"
+#include "base/string_util.h"
+
+#ifdef __NetBSD__
+#include <sys/param.h>
+#if __NetBSD_Version__ >= 600000000
+#define HAVE_POSIX_SPAWN 1
+#endif
+#endif
+
+#ifdef HAVE_POSIX_SPAWN
+#include <spawn.h>
+extern "C" char **environ __dso_public;
+#endif
+
+namespace {
+
+enum ParsingState {
+ KEY_NAME,
+ KEY_VALUE
+};
+
+static mozilla::EnvironmentLog gProcessLog("MOZ_PROCESS_LOG");
+
+} // namespace
+
+namespace base {
+
+#ifdef HAVE_POSIX_SPAWN
+
+void FreeEnvVarsArray(char* array[], int length)
+{
+ for (int i = 0; i < length; i++) {
+ free(array[i]);
+ }
+ delete[] array;
+}
+
+bool LaunchApp(const std::vector<std::string>& argv,
+ const file_handle_mapping_vector& fds_to_remap,
+ bool wait, ProcessHandle* process_handle) {
+ return LaunchApp(argv, fds_to_remap, environment_map(),
+ wait, process_handle);
+}
+
+bool LaunchApp(const std::vector<std::string>& argv,
+ const file_handle_mapping_vector& fds_to_remap,
+ const environment_map& env_vars_to_set,
+ bool wait, ProcessHandle* process_handle,
+ ProcessArchitecture arch) {
+ bool retval = true;
+
+ char* argv_copy[argv.size() + 1];
+ for (size_t i = 0; i < argv.size(); i++) {
+ argv_copy[i] = const_cast<char*>(argv[i].c_str());
+ }
+ argv_copy[argv.size()] = NULL;
+
+ // Make sure we don't leak any FDs to the child process by marking all FDs
+ // as close-on-exec.
+ SetAllFDsToCloseOnExec();
+
+ // Copy environment to a new char array and add the variables
+ // in env_vars_to_set.
+ // Existing variables are overwritten by env_vars_to_set.
+ int pos = 0;
+ environment_map combined_env_vars = env_vars_to_set;
+ while(environ[pos] != NULL) {
+ std::string varString = environ[pos];
+ std::string varName = varString.substr(0, varString.find_first_of('='));
+ std::string varValue = varString.substr(varString.find_first_of('=') + 1);
+ if (combined_env_vars.find(varName) == combined_env_vars.end()) {
+ combined_env_vars[varName] = varValue;
+ }
+ pos++;
+ }
+ int varsLen = combined_env_vars.size() + 1;
+
+ char** vars = new char*[varsLen];
+ int i = 0;
+ for (environment_map::const_iterator it = combined_env_vars.begin();
+ it != combined_env_vars.end(); ++it) {
+ std::string entry(it->first);
+ entry += "=";
+ entry += it->second;
+ vars[i] = strdup(entry.c_str());
+ i++;
+ }
+ vars[i] = NULL;
+
+ posix_spawn_file_actions_t file_actions;
+ if (posix_spawn_file_actions_init(&file_actions) != 0) {
+ FreeEnvVarsArray(vars, varsLen);
+ return false;
+ }
+
+ // Turn fds_to_remap array into a set of dup2 calls.
+ for (file_handle_mapping_vector::const_iterator it = fds_to_remap.begin();
+ it != fds_to_remap.end();
+ ++it) {
+ int src_fd = it->first;
+ int dest_fd = it->second;
+
+ if (src_fd == dest_fd) {
+ int flags = fcntl(src_fd, F_GETFD);
+ if (flags != -1) {
+ fcntl(src_fd, F_SETFD, flags & ~FD_CLOEXEC);
+ }
+ } else {
+ if (posix_spawn_file_actions_adddup2(&file_actions, src_fd, dest_fd) !=
0) {
+ posix_spawn_file_actions_destroy(&file_actions);
+ FreeEnvVarsArray(vars, varsLen);
+ return false;
+ }
+ }
+ }
+
+ pid_t pid = 0;
+ int spawn_succeeded = (posix_spawnp(&pid,
+ argv_copy[0],
+ &file_actions,
+ NULL,
+ argv_copy,
+ vars) == 0);
+
+ FreeEnvVarsArray(vars, varsLen);
+
+ posix_spawn_file_actions_destroy(&file_actions);
+
+ bool process_handle_valid = pid > 0;
+ if (!spawn_succeeded || !process_handle_valid) {
+ retval = false;
+ } else {
+ if (wait)
+ HANDLE_EINTR(waitpid(pid, 0, 0));
+
+ if (process_handle)
+ *process_handle = pid;
+ }
+
+ return retval;
+}
+
+bool LaunchApp(const CommandLine& cl,
+ bool wait, bool start_hidden, ProcessHandle* process_handle) {
+ // TODO(playmobil): Do we need to respect the start_hidden flag?
+ file_handle_mapping_vector no_files;
+ return LaunchApp(cl.argv(), no_files, wait, process_handle);
+}
+
+#else // no posix_spawn, use fork/exec
+
+bool LaunchApp(const std::vector<std::string>& argv,
+ const file_handle_mapping_vector& fds_to_remap,
+ bool wait, ProcessHandle* process_handle) {
+ return LaunchApp(argv, fds_to_remap, environment_map(),
+ wait, process_handle);
+}
+
+bool LaunchApp(const std::vector<std::string>& argv,
+ const file_handle_mapping_vector& fds_to_remap,
+ const environment_map& env_vars_to_set,
+ bool wait, ProcessHandle* process_handle,
+ ProcessArchitecture arch) {
+ scoped_array<char*> argv_cstr(new char*[argv.size() + 1]);
+ // Illegal to allocate memory after fork and before execvp
+ InjectiveMultimap fd_shuffle1, fd_shuffle2;
+ fd_shuffle1.reserve(fds_to_remap.size());
+ fd_shuffle2.reserve(fds_to_remap.size());
+
+ pid_t pid = fork();
+ if (pid < 0)
+ return false;
+
+ if (pid == 0) {
+ for (file_handle_mapping_vector::const_iterator
+ it = fds_to_remap.begin(); it != fds_to_remap.end(); ++it) {
+ fd_shuffle1.push_back(InjectionArc(it->first, it->second, false));
+ fd_shuffle2.push_back(InjectionArc(it->first, it->second, false));
+ }
+
+ if (!ShuffleFileDescriptors(&fd_shuffle1))
+ _exit(127);
+
+ CloseSuperfluousFds(fd_shuffle2);
+
+ for (environment_map::const_iterator it = env_vars_to_set.begin();
+ it != env_vars_to_set.end(); ++it) {
+ if (setenv(it->first.c_str(), it->second.c_str(), 1/*overwrite*/))
+ _exit(127);
+ }
+
+ for (size_t i = 0; i < argv.size(); i++)
+ argv_cstr[i] = const_cast<char*>(argv[i].c_str());
+ argv_cstr[argv.size()] = NULL;
+ execvp(argv_cstr[0], argv_cstr.get());
+ // if we get here, we're in serious trouble and should complain loudly
+ DLOG(ERROR) << "FAILED TO exec() CHILD PROCESS, path: " << argv_cstr[0];
+ exit(127);
+ } else {
+ gProcessLog.print("==> process %d launched child process %d\n",
+ GetCurrentProcId(), pid);
+ if (wait)
+ HANDLE_EINTR(waitpid(pid, 0, 0));
+
+ if (process_handle)
+ *process_handle = pid;
+ }
+
+ return true;
+}
+
+bool LaunchApp(const CommandLine& cl,
+ bool wait, bool start_hidden,
+ ProcessHandle* process_handle) {
+ file_handle_mapping_vector no_files;
+ return LaunchApp(cl.argv(), no_files, wait, process_handle);
+}
+
+#endif
+
+NamedProcessIterator::NamedProcessIterator(const std::wstring& executable_name,
+ const ProcessFilter* filter)
+{
+ int numEntries;
+ kvm_t *kvm;
+ std::string exe(WideToASCII(executable_name));
+
+#if defined(OS_DRAGONFLY)
+ kvm = kvm_open(NULL, NULL, NULL, O_RDONLY, NULL);
+ struct kinfo_proc* procs = kvm_getprocs(kvm, KERN_PROC_UID, getuid(),
&numEntries);
+ if (procs != NULL && numEntries > 0) {
+ for (int i = 0; i < numEntries; i++) {
+ if (exe != procs[i].kp_comm) continue;
+ if (filter && !filter->Includes(procs[i].kp_pid, procs[i].kp_ppid))
continue;
+ ProcessEntry e;
+ e.pid = procs[i].kp_pid;
+ e.ppid = procs[i].kp_ppid;
+ strlcpy(e.szExeFile, procs[i].kp_comm, sizeof e.szExeFile);
+ content.push_back(e);
+#else
+ kvm = kvm_open(NULL, NULL, NULL, KVM_NO_FILES, NULL);
+ struct kinfo_proc2* procs = kvm_getproc2(kvm, KERN_PROC_UID, getuid(),
sizeof(struct kinfo_proc2), &numEntries);
+ if (procs != NULL && numEntries > 0) {
+ for (int i = 0; i < numEntries; i++) {
+ if (exe != procs[i].p_comm) continue;
+ if (filter && !filter->Includes(procs[i].p_pid, procs[i].p_ppid))
continue;
+ ProcessEntry e;
+ e.pid = procs[i].p_pid;
+ e.ppid = procs[i].p_ppid;
+ strlcpy(e.szExeFile, procs[i].p_comm, sizeof e.szExeFile);
+ content.push_back(e);
+#endif
+ }
+ }
+ nextEntry = 0;
+ kvm_close(kvm);
+}
+
+NamedProcessIterator::~NamedProcessIterator() {
+}
+
+const ProcessEntry* NamedProcessIterator::NextProcessEntry() {
+ if (nextEntry >= content.size()) return NULL;
+ return &content[nextEntry++];
+}
+
+bool ProcessMetrics::GetIOCounters(IoCounters* io_counters) const {
+ return false;
+}
+
+} // namespace base
Home |
Main Index |
Thread Index |
Old Index