These scripts and tools are used to build new versions of OmniOS.
Please see the build instructions for details on how to use these tools.
Build system for OmniOS - Note, this is a quasi-private archive for OmniTI, you probably want https://omniosce.org
License: Other
These scripts and tools are used to build new versions of OmniOS.
Please see the build instructions for details on how to use these tools.
% cpp -include openssl/opensslconf.h -xc <<EOF
#ifndef OPENSSL_NO_MD2
#include <openssl/md2.h>
#endif
EOF
#1 "<stdin>"
#1 "<command-line>"
#1 "/opt/gcc-4.8.1/lib/gcc/i386-pc-solaris2.11/4.8.1/include-fixed/openssl/opensslconf.h" 1 3 4
#1 "<command-line>" 2
#1 "<stdin>"
<stdin>:2:25: fatal error: openssl/md2.h: No such file or directory
compilation terminated.
OPENSSL_NO_MD2 is defined in openssl/opensslconf.h, but gcc "fixes" that
header at build time by copying it to its 'include-fixed' directory (shown in
cpp output above).
% diff /opt/gcc-4.8.1/lib/gcc/i386-pc-solaris2.11/4.8.1/include-fixed/openssl/opensslconf.h /usr/include/openssl/opensslconf.h
1,9d0
< /* DO NOT EDIT THIS FILE.
<
< It has been auto-edited by fixincludes from:
<
< "/usr/include/openssl/opensslconf.h"
<
< This had to be done to correct non-standard usages in the
< original, manufacturer supplied header file. */
<
34a26,28
> #ifndef OPENSSL_NO_MD2
> # define OPENSSL_NO_MD2
> #endif
52a47,49
> #ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
> # define OPENSSL_NO_WEAK_SSL_CIPHERS
> #endif
82a80,82
> # if defined(OPENSSL_NO_MD2) && !defined(NO_MD2)
> # define NO_MD2
> # endif
100a101,103
> # if defined(OPENSSL_NO_WEAK_SSL_CIPHERS) && !defined(NO_WEAK_SSL_CIPHERS)
> # define NO_WEAK_SSL_CIPHERS
> # endif
208c211
< YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
---
> #error YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
227c230
< #if defined( __sun__ ) /* Newer Sparc's */
---
> #if defined( __sun ) || defined ( sun ) /* Newer Sparc's */
So effectively this means that gcc needs to be rebuilt if openssl configuration
changes. Although you could probably patch opensslconf.h instead to make gcc's
fixincludes not fix it.
In any case, this means that a fully updated 151014 box cannot build eg. perl
Net::SSLeay. A republished gcc package is required to fix that (either to
update the include-fixed header or to make it not end up there in the first
place).
Also interesting to note that there are 18 header files in that include-fixed
path on my 151014 box, whereas gcc-4.4.4's path only contains two...
Hey All,
I've been adding some dependencies to a package using DEPENDS_IPS.
However the package fails to build due to missing dependencies!
This should not happen! We have a BUILD_DEPENDS_IPS for this.
For now I have fixed this by inserting a empty verify_depends() in my build script so the step in init() does nothing.
But I still think that requiring to have DEPENDS_IPS to be installed during build is wrong. I can build the package fine without. It will not run however, but that is not an issue as long as the proper dependencies are added to the manifest. (which still happens in the make_package step with verify_depends set to an empty function)
Regards
Install crashes, dropping to shell, format shows the disk.
zpool create <disk_found_by_format>
works fine.
Had no success with kayak under qemu -_-
So YAY vioblk is actually working, booo the install is crap.
'nightly' on my newish bloody box failed:
mailwrapper: cannot exec /usr/lib/smtp/sendmail/sendmail: No such file or directory
This is because sendmail isn't installed at all. I get that mailwrapper and the mediated links allow for different MTA implementations (actually in two different ways), but it would be sensible to install an actual MTA by default, not just mailwrapper. Though to be fair, I only noticed this one because this particular box is not under configuration management.
extract:
pre_python_32() {
logmsg "prepping 32bit python build"
}
pre_python_64() {
logmsg "prepping 32bit python build"
}
I guess the small error is obvious :)
I was attempting to copy the entire scrollback buffer from tmux somewhere else,
and using tmux 'copy mode' for this, but the whole tmux server crashed taking
all my sessions with it.
Repro:
# this is probably not be necessary, but I have no idea how to move around in copy mode without it :)
echo 'set-window-option -g mode-keys vi' > ~/.tmux.conf
# start tmux
tmux
fill scrollback buffer. one character per line wasn't enough to crash it, but 20 is
yes $(python -c 'print "a"*20)
hit ^C after a while. once the scrollback buffer is full of lines, enter copy
mode, move to the beginning of history, drop a marker there, move to the end of
history and copy the selection by the following key combination:
^B [ g space G return
observe 'server lost' message and that all your tmux sessions died.
stack from the core:
core 'core' of 26626: tmux
fed43218 memcpy (8047248, 8047218, 80471f0, 0, 7fffffff, feefe386) + 168
fed9ce34 sprintf (feefe386, 8047248, 81c4770, fee4d3c0) + 47
feeda209 tparm (810f6b0, 80ca40e, 81c4770, 0, 0, 0) + 1a8
08099d06 tty_term_ptr2 (8110838, 86, 80ca40e, 81c4770, 8047424, 810eb6c) + 76
0809a64b tty_putcode_ptr2 (810eb6c, 86, 80ca40e, 81c4770, a051, a050) + 3b
0809b0bc tty_cmd_setselection (810eb6c, 8047424, 8047448, 0, 80e4758, 804740c) + 8c
0809b022 tty_write (809b030, 8047424, 0, a04d, fee497e4, 8113bd8) + d2
0808ce1d screen_write_setselection (8047498, 81ba718, a04d, 0, 1, 0) + 3d
080a0f30 window_copy_copy_buffer (8113bd8, ffffffff, 81ba718, a04d, fee497e4, 0) + a0
080a14f7 window_copy_copy_selection (8113bd8, ffffffff, 804751c, 80fca48, 8113bd8, d) + 37
080a2ecd window_copy_key (8113bd8, 8111318, d, ffffffff, d, 0) + 46d
0808e2af server_client_handle_key (80fead0, d, 81ae340, d, 8111060, 80475e0) + 1cf
08098ec9 tty_keys_next (810eb6c, 1000, 8047608, 80b2891, 80cbde1, 80e12c8) + 259
08099de8 tty_read_callback (8110f48, 810eb6c, 75636f66, 80e12c8) + 18
080b71cf _bufferevent_run_readcb (8110f48, 1, 4000, 1, 80cc16a, 80f5ca0) + 4f
080b87da bufferevent_readcb (9, 2, 8110f48, 809ab94, 8113bd8, 0) + 13a
080ad249 event_base_loop (80f9cd0, 1, 0, 8047748, 80ae039) + 6b9
080ae059 event_loop (1, 0, 0, 0, 8047748, 1) + 29
08091074 server_loop (8091d20, 8047748, 0, 8091eb0, 0, 4) + 14
0809178f server_start (4, 80f6840, 80f4ac0, 4, 80f9cd0, 80f9ce8) + 3af
0806a7b3 client_connect (80f4ac0, 1, 80e275c, 80e2840, 4e455645, 4f4e5f54) + 1b3
0806ac11 client_main (0, 8047e2c, 10000, 0, 1, 0) + 31
080c1ba2 main (1, 8047e28, 8047e30, feffb0a8, 8047e1c, 8068c52) + 472
08068cb3 _start (1, 8047ee4, 0, 8047ee9, 8047eed, 8047f01) + 83
This is on pkg://omnios/terminal/[email protected]:20150402T192031Z, but
happens on bloodytoo (1.9.0-0.151015:20150914T052043Z). I didn't check earlier
releases.
I was not able to install packages with filebench:
root@testzone:/root# pkg list filebench
pkg list: No packages matching 'filebench' installed
root@testzone:/root# pkg publisher
PUBLISHER TYPE STATUS P LOCATION
omnios origin online F http://pkg.omniti.com/omnios/r151014/
ms.omniti.com origin online F http://pkg.omniti.com/omniti-ms/
perl.omniti.com origin online F http://pkg.omniti.com/omniti-perl/
root@testzone:/root# pkg install SUNWfilebench
Creating Plan (Solver setup): \
pkg install: No matching version of SUNWfilebench can be installed:
Reject: pkg://omnios/[email protected],5.11-0.133:20150402T175121Z
pkg://omnios/[email protected],5.11-0.133:20150417T182316Z
pkg://omnios/[email protected],5.11-0.133:20150727T054626Z
Reason: All acceptable versions of 'require' dependency on pkg:/benchmark/filebench are obsolete
root@testzone:/root# pkg install pkg:/benchmark/filebench
No updates necessary for this image.
As a workaround I've built our own filebench in https://github.com/seriv/omnios-build/commits/cs.umd.edu
It seem that python's curses library is broken.
A simple hello world type app makes the ssh session crash (or if in screen, screen crash).
I used the following simple example:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import curses
screen = curses.initscr()
curses.noecho()
curses.curs_set(0)
screen.keypad(1)
screen.addstr("This is a Sample Curses Script\n\n")
while True:
event = screen.getch()
if event == ord("q"): break
curses.endwin() setupterm()
Although just ''curses.initscr()'' is sufficient.
I have not been able to find out why it crashes unfortunatly.
Regards
build.sh still creates symlinks to 1.2.8 version (must be 1.2.11)
NTP in OmniOS is missing proc_priocntl in its method_credential tag in ntp.xml. Thus, at start NTP is complaining that it can't raise its scheduling priority (which is normal), and thus can only run in regular user scheduling. Adding "proc_priocntl" to the "privileges" attribute of "method_credential" in /lib/svc/manifest/network/ntp.xml fixes this (and NTP now correctly jumps to real-time scheduling to give maximum clock sync accuracy).
Hey,
I think it would be a sane idea to set the -L AND -R flag by default so that libraries in $PREFIX/lib and $PREFIX/lib/$ISAPART64 are picked up by there respective linking stages. (and removing the need for LD_LIBRARY_RUN to be set)
I think this is what most people would expect to happen, build a library in the prefix, make prog or other library that depends (build and/or runtime wise) on the same library that it would sort of... you know just work instead of needing LD_LIBRARY_RUN or manual injection of the -L and -R flags.
Not all of us can put arbitrary build trees in /tmp
successfully due to memory constraints. The build should honour $TMPDIR
so that we can use /var/tmp
or wherever else.
Unfortunately the obvious diff
diff --git a/lib/config.sh b/lib/config.sh
index e1715d8..4caf138 100644
--- a/lib/config.sh
+++ b/lib/config.sh
@@ -43,7 +43,7 @@ PREFIX=/usr
# to avoid collision on shared build systems,
# TMPDIR includes a username
# DTMPDIR is used for constructing the DESTDIR path
-TMPDIR=/tmp/build_$USER
+TMPDIR=${TMPDIR:-/tmp}/build_$USER
DTMPDIR=$TMPDIR
# Log file for all output
Doesn't work flawlessly, because config.sh is evaluated twice, so we end up with /foo/build_richlowe/build_richlowe
.
https://github.com/omniti-labs/omnios-build/blob/master/build/libxml2/build.sh#L87
there are still 2.9.3 links
The nss packages don't include certutil, which is needed eg. for configuring ldapclient certificates.
Ran into this while looking into #50.
pkgmogrify: File /tmp/build_lotheac/network_openssh.deps.mog, line 6: transform (<transform depend fmri=(.+/)?system/library/g++-4-runtime -> set fmri system/library/[email protected]>) has regexp error (multiple repeat) in matching clause
This is caused by my pkgdepend changes; the build script in question
explicitly specifies the system/library/g++-4-runtime dependency, and since it
is thrown into the transform clause as-is, the + signs are misinterpreted.
Not sure what to do with this yet.
The latest 1.9.3 release, p448, brings in backported fixes for performance, as well as other improvements in the 1.9.3 series. It would be nice for this to be the default version in OmniOS.
apeiron
requested an issue for this :-)
Hey All,
Variable naming is not very consistant.
ISAPART and ISAPART64 vs LDFLAGS32 and LDFLAGS64. vs CONFIGURE_OPTS_32 and CONFIGURE_OPTS_64.
I guess If you agree this is an issue I could look into doing a PR atleast for 1. But not 100% sure how that works.
The wait_for_sync option is implemented using the ntp-wait command which by default retires 1000 times and sleeps for 6 seconds in between. This seems a bit high, it would be good if there was a way to set lower values for these.
Hey make_isa_stub does not detect hardlinks, maybe it should to save on package size.
Example Manifest that is generated:
http://omnios.blackdot.be/manifest/0/obd%2Farchiver%2Fpar2cmdline%400.4%2C5.11-0.151006%3A20130716T133242Z
As you can see the make install
creates some hardlinks for par2. make_isa_stub creates small stubs for them too, everything works as expected however a hardlink to the stub of par2 would work just as well.
I think this would be a nice feature to have, depending on the amount of work it would be to implement. If it is a whole lot of work, it's probably not worth the effort.
Timsu on #omnios pointed out that there's no pod2man in /usr/bin where rsnapshot expects it. Why don't we ship pod2man with our runtime/perl-5142 (or, presumably, later versions) package?
It would be nice to have shared-mime-info which is required by glib for some of the mime type functions to work.
Checking for patches in patches/ (in order to apply them)
Applying patches
Running: gpatch -p1 -t -N -p0
patching file hotspot/make/solaris/makefiles/sparcWorks.make
--- Applied patch hotspot-ccsbins.patch
Running: gpatch -p1 -t -N -p0
patching file jdk/make/common/shared/Defs-solaris.gmk
patching file jdk/make/sun/awt/Makefile
Hunk #1 succeeded at 655 (offset 106 lines).
patching file jdk/make/sun/awt/mawt.gmk
patching file jdk/make/sun/font/Makefile
Hunk #1 succeeded at 205 with fuzz 1 (offset 16 lines).
patching file jdk/make/sun/jawt/Makefile
Hunk #1 succeeded at 123 (offset 5 lines).
patching file jdk/src/share/native/sun/java2d/cmm/lcms/cmsopt.c
Hunk #1 FAILED at 1535.
1 out of 1 hunk FAILED -- saving rejects to file jdk/src/share/native/sun/java2d/cmm/lcms/cmsopt.c.rej
patching file jdk/src/share/native/sun/java2d/cmm/lcms/cmstypes.c
Hunk #1 FAILED at 961.
Hunk #2 FAILED at 2946.
Hunk #3 FAILED at 3665.
Hunk #4 FAILED at 3752.
Hunk #5 FAILED at 4027.
Hunk #6 FAILED at 4519.
6 out of 6 hunks FAILED -- saving rejects to file jdk/src/share/native/sun/java2d/cmm/lcms/cmstypes.c.rej
patching file jdk/src/solaris/native/sun/awt/jawt.c
patching file jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c
Hunk #1 FAILED at 204.
Hunk #2 FAILED at 272.
Hunk #3 FAILED at 296.
Hunk #4 FAILED at 521.
Hunk #5 FAILED at 558.
5 out of 5 hunks FAILED -- saving rejects to file jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c.rej
--- Patch jdk-fixes.patch failed
===== Build aborted =====
You build libpython2.6_db like this (from Python26-20-py_db.patch
)
SHLIB_FLAGS = -shared -fpic -M $(srcdir)/py_db/mapfile-vers
libpython2.6_db.so.1.0: $(srcdir)/py_db/libpython26_db.c
$(CC) -o $@ $(CFLAGS) $(CPPFLAGS) $(SHLIB_FLAGS) $<
This pass -M
to $(CC)
expecting to specify a mapfile, as you would with Studio. Unfortunately, -M means something else to GCC. The output of dependencies for make (in a manner similar to our state keeping).
This means that the python debugger support shipped by OmniOS is trash and pstack and mdb can't show python frames.
file /usr/lib/libpython2.6_db.so.1.0
will show what I mean, as will:
curl omnios.omniti.com/omnios/release/file/0/15fb42db15bee294189caad3cdf9c45ef31a803d | gzip -dc
Which fetches that path from the latest release. It should be an ELF shared object. Clearly it isn't.
You can fix it by
$(LIBRARY_OBJS) $(MODOBJS) Modules/python.o: $(PYTHON_HEADERS)
-+SHLIB_FLAGS = -shared -fpic -M $(srcdir)/py_db/mapfile-vers
++SHLIB_FLAGS = -shared -fpic -Wl,-M,$(srcdir)/py_db/mapfile-vers
+
+libpython2.6_db.so.1.0: $(srcdir)/py_db/libpython26_db.c
+ $(CC) -o $@ $(CFLAGS) $(CPPFLAGS) $(SHLIB_FLAGS) $<
bash# zsh -l
/etc/zprofile:trap:27: undefined signal: 3
/etc/zprofile:trap:67: undefined signal: 3
zsh# trap 'echo FOO' INT
trap: undefined signal: INT
This is due to the fact that gcc -E output has changed (more linemarkers in
5.1). 4.8.1:
% echo 'sigint=SIGINT' | /opt/gcc-4.8.1/bin/gcc -include signal.h -E -| tail -5
#165 "/usr/include/signal.h" 3 4
extern int sigwait(sigset_t *);
#1 "<command-line>" 2
#1 "<stdin>"
sigint=2
vs. gcc 5.1.0:
% echo 'sigint=SIGINT' | /opt/gcc-5.1.0/bin/gcc -include signal.h -E -| tail -5
#1 "<stdin>"
sigint=
#1 "<stdin>" 3 4
2
and zsh does some awk magic with cpp output. This has been fixed in zsh-5.0.8
(34287 in zsh ChangeLog), so you should probably update all gcc51-built
releases to at least that version or newer, or apply zsh.git commits
c7aa6443907ddd97b6b1e8729ce9c897de0d244c and
9f9a16f43c5c66d3a764ef2abaacca6a3d91f89c.
OmniOS build gate should include this fix for an OpenSSL 1.0.2 regression that breaks pyOpenSSL and, in turn, Pkg(5) when using https publishers:
http://rt.openssl.org/Ticket/Display.html?id=3706&user=guest&pass=guest
This has recently gone into upstream.
iso-codes requires Python3, which is not in omnios-build.
openjdk7 requires ant and freetype2, which are not in omnios-build.
OmniTI has used ms.omniti.com to work around these problems. Ideally one shouldn't have to work around them.
Both vmtoolsd and ntpd adjust the system time. It's probably best not to have both running at the same time. I would suggest having both service manifest files updated with exclude_all dependencies on each other.
I've onu'd a build of illumos-gate that was built on OmniOS bloody, but apparently due to some perl packaging quirks that onu'd build fails to build another illumos-gate. illumos-omnios works fine.
The error is:
/ws/illumos-gate/usr/src/cmd/auditrecord
/usr/bin/rm -f mkmsg;
/usr/bin/sed -e "s@TEXT_DOMAIN@\"SUNW_OST_OSCMD\"@" mkmsg.pl > mkmsg;
/usr/bin/chmod +x mkmsg
export PERL5LIB; PERL5LIB=../perl/contrib; \
./mkmsg SUNW_OST_OSCMD auditrecord.po; \
/usr/bin/xgettext -d auditrecord -j auditrecord
Can't locate Sun/Solaris/Utils.pm in @INC (@INC contains: ../perl/contrib /usr/perl5/site_perl/5.16.1/i86pc-solaris-thread-multi-64 /usr/perl5/site_perl/5.16.1 /usr/perl5/vendor_perl/5.16.1/i86pc-solaris-thread-multi-64 /usr/perl5/vendor_perl/5.16.1 /usr/perl5/5.16.1/lib/i86pc-solaris-thread-multi-64 /usr/perl5/5.16.1/lib .) at ./mkmsg line 42.
BEGIN failed--compilation aborted at ./mkmsg line 42.
*** Error code 2
install -s -d -m 755 /ws/illumos-gate/proto/root_i386/catalog/SUNW_OST_OSCMD
dmake: Warning: Target `_msg' not remade because of errors
Current working directory /ws/illumos-gate/usr/src/cmd/auditrecord
*** Error code 1
dmake: Warning: Command failed for target `auditrecord'
I briefly looked at OpenSSH as it is packaged for OmniOS while working on a
related problem, intending to evaluate whether we could replace SunSSH with it
in our environment. I ran into a few issues (some of which you may be aware of,
but I'll document them here nonetheless). These apply to r151014 (and possibly
earlier releases).
I might be able to work on a fix for some of these in the near future, just
thought I'd document them for now.
[0]: as is documented at http://omnios.omniti.com/ticket.php/63, but the fact
that openssh was updated for 151014 suggests that it might be intended for use.
Maybe I'm missing something.
Hi! giving omnios a spin... have a problem building pkgsrc/lang/gcc47 tracked down to what seems to be a bash problem as indicated here (http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00019.html) and fixed upstream here (http://ftp.gnu.org/gnu/bash/bash-4.2-patches/)
Perhaps it would be nice to update to the latest 4.2 ...
cheers
#95 reminded me that we should set up a vendor prefix with ntp.org and ship a more appropriate default config file for ntp using that vendor prefix.
Reference: http://www.pool.ntp.org/en/vendors.html
The current version seems to be 3.82 which is prehistoric. Version 4.1 has some nice fixes that make life easier when building on multiple cores.
OI has oi-userland/components/developer/binutils/patches/bfd_config.patch which adds more targets for gobjcopy. Without it it's impossible to build illumos loader project components.
Capturing an issue based on #omnios IRC discussion.
TL;DR: the ruby config hardcodes location to gcc, meaning gems with native extensions will attempt to use /opt/gcc-4.6.3/bin/gcc to compile.
23:09 <apeiron> so we upgraded our compiler for r151006 to 4.7
23:09 <apeiron> it seems that perhaps the ruby that you're installing wasn't rebuilt for that
23:09 <jtimberman> omniti/runtime/ruby-19 (ms.omniti.com) 1.9.3.194-0.151002 i--
23:10 <jtimberman> indeed.
23:10 <apeiron> looks like the latest is 1.9.3.194,5.11-0.151002:20120501T202116Z
23:11 <apeiron> So it could use a respin for the new compiler
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.